/* Function: $defined Returns true if the passed in value/object is defined, that means is not null or undefined. Arguments: obj - object to inspect */ $defined = function(obj) { return (obj != undefined); }; $assert = function(assert, message) { if (!$defined(assert) || !assert) { var stack; try { null.eval(); } catch(e) { stack = e; } console.log(message + "," + stack); window.errorStack = stackTrace(); throw message; } }; Math.sign = function(value) { return (value >= 0) ? 1 : -1; }; function stackTrace() { var result = ""; var isCallstackPopulated = false; try { null.eval(); } catch(e) { if (e.stack) { //Firefox and Chrome... result = e.stack; isCallstackPopulated = true; } else if (window.opera && e.message) { //Opera result = e.message; isCallstackPopulated = true; } } return result; } /* * DOMParser HTML extension * 2012-02-02 * * By Eli Grey, http://eligrey.com * Public domain. * NO WARRANTY EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK. */ /*! @source https://gist.github.com/1129031 */ /*global document, DOMParser*/ (function(DOMParser) { "use strict"; var DOMParser_proto = DOMParser.prototype , real_parseFromString = DOMParser_proto.parseFromString; // Firefox/Opera/IE throw errors on unsupported types try { // WebKit returns null on unsupported types if ((new DOMParser).parseFromString("", "text/html")) { // text/html parsing is natively supported return; } } catch (ex) { } DOMParser_proto.parseFromString = function(markup, type) { if (/^\s*text\/html\s*(?:;|$)/i.test(type)) { var doc = document.implementation.createHTMLDocument("") , doc_elt = doc.documentElement , first_elt ; doc_elt.innerHTML = markup; first_elt = doc_elt.firstElementChild; if (// are we dealing with an entire document or a fragment? doc_elt.childElementCount === 1 && first_elt.localName.toLowerCase() === "html" ) { doc.replaceChild(first_elt, doc_elt); } return doc; } else { return real_parseFromString.apply(this, arguments); } }; }(DOMParser));