DOM=function(){var lessThan=/</g;var greaterThan=/>/g;var ampersand=/&/g;var lessThanEntity=/&lt;/g;var greaterThanEntity=/&gt;/g;var ampersandEntity=/&amp;/g;function walk(node,func){func(node);node=node.firstChild;while(node){walk(node,func);node=node.nextSibling;}}
return{hasClass:function(element,className){var classes;if(!element.className){return false;}
classes=element.className.split(" ");for(var i=0;i<classes.length;i+=1){if(classes[i]===className){return true;}}
return false;},addClass:function(element,className){if(DOM.hasClass(element,className)){return;}
element.className=[element.className,className].join(" ");},removeClass:function(element,className){var classes;if(!DOM.hasClass(element,className)){return;}
classes=element.className.split(" ");for(var i=0;i<classes.length;i+=1){if(classes[i]===className){classes=classes.slice(0,i).concat(classes.slice(i+1));break;}}
element.className=classes.join(" ");},getElementsByClass:function(className,parent,filter){var node=parent||document;var matches=[];walk(node,function(node){if(filter){if(node.nodeName!==filter){return;}}
if(DOM.hasClass(node,className)){matches.push(node);}});return matches;},entityify:function(text){return text.replace(ampersand,"&amp;").replace(lessThan,"&lt;").replace(greaterThan,"&gt;");},deentityify:function(text){return text.replace(ampersandEntity,"&").replace(lessThanEntity,"<").replace(greaterThanEntity,">");}};}();