+next_frame = (cb) ->
+ if (window.requestAnimationFrame?)
+ window.requestAnimationFrame cb
+ else
+ timeout 16, cb
+
+this_url_sans_path = ->
+ ret = "#{window.location.href}"
+ clip = ret.lastIndexOf '#'
+ if clip > -1
+ ret = ret.substr 0, clip
+ clip = ret.lastIndexOf '?'
+ if clip > -1
+ ret = ret.substr 0, clip
+ clip = ret.lastIndexOf '/'
+ if clip > -1
+ ret = ret.substr 0, clip + 1
+ return ret
+
+# xml 1.0 spec, chromium and firefox accept these, plus lots of unicode chars
+valid_attr_regex = new RegExp '^[a-zA-Z_:][-a-zA-Z0-9_:.]*$'
+# html5 spec is much more lax, but chromium won't let me make at attribute with the name "4"
+js_attr_regex = new RegExp '^[oO][nN].'