dom={};
dom.nopx=function(pxStr){if(pxStr.indexOf('px')==-1){return pxStr;}return Number(pxStr.split('px')[0]);};
dom.browser=function(){if(navigator.userAgent.indexOf('MSIE')!=-1){return'ie';}if(navigator.userAgent.indexOf('Opera')!=-1){return'op';}if(navigator.userAgent.indexOf('Netscape')!=-1){return'ns';}if(navigator.userAgent.indexOf('Safari')!=-1){return'sa';}if(navigator.userAgent.indexOf('Firefox')!=-1){return'ff';}return undefined;};
dom.setStyle=function(id,styleObj){var el=dom.element(id);for(var prop in styleObj){if(styleObj.hasOwnProperty(prop)){el.style[prop]=styleObj[prop];}}};
dom.element=function(id){if(typeof(id)=='string'){if(!document.getElementById(id)){/*alert('ERROR\ndom.element\ncould not find element with id "'+id+'"')*/return undefined};return document.getElementById(id);}else{return id;}};
$=dom.el=dom.element;
dom.removeElement=function(el){el=dom.element(el);el.parentNode.removeChild(el);};
dom.createElement=function(elTagName,parentElement,propsObj){parentElement=dom.element(parentElement)?dom.element(parentElement):document.body;var el=document.createElement(elTagName);parentElement.appendChild(el);if(!propsObj){return el;}for(var i in propsObj){if(propsObj.hasOwnProperty(i)){el[i]=propsObj[i];}}return el;};
dom.toggle=function(){for(var i=0;i<arguments.length;i++){var mode='block';var id;var el;if(typeof arguments[i]=='string'){if(arguments[i].indexOf(':')!=-1){id=arguments[i].split(':')[0];mode=arguments[i].split(':')[1];}else{id=arguments[i];}el=dom.element(id);}else{el=id;}if(el.style.display!='none'){mode='none';}el.style.display=mode;}};
dom.href=function(url){document.location.href=url;};
dom.addEvent=function(el,type,fn){if(el.attachEvent){el['e'+type+fn]=fn;el[type+fn]=function(){el['e'+type+fn](window.event);};el.attachEvent('on'+type,el[type+fn]);}else{el.addEventListener(type,fn,false);}};
dom.removeEvent=function(el,type,fn){if(el.detachEvent){el.detachEvent('on'+type,el[type+fn]);el[type+fn]=null;}else{el.removeEventListener(type,fn,false);}};
dom.getChildNodes=function(el,obj){el=dom.element(el);var arr=[];if(!el.childNodes||el.childNodes.length===0){return null;}for(var i=0;i<el.childNodes.length;i++){if(el.childNodes[i].nodeType==1){if(!obj){arr.push(el.childNodes[i]);}else{var pass=true;for(var j in obj){if(obj.hasOwnProperty(i)){if(obj.containsClass){if(el.childNodes[i].className.indexOf(' ')==-1){var classes=el.childNodes[i].className.split(' ');var contained=false;for(var c=0;c<classes.length;c++){if(classes[i]==obj.containsClass){contained=true;}}if(!contained){pass=false;}}}else if(el.childNodes[i][j]!=obj[j]){pass=false;}if(pass){arr.push(el.childNodes[i]);}}}}var children=dom.getChildNodes(el.childNodes[i],obj);if(children){if(children.length>0){arr=arr.concat(children);}}}}return arr;};
dom.addClass=function(el,className){if(el&&className){el=dom.element(el);if(!dom.containsClass(el,className)){if(el.className==undefined){el.className='';}el.className+=(el.className?" ":"")+className;}}};
dom.removeClass=function(el,className){el=dom.el(el);if(el&&className){if(dom.containsClass(el,className)){var elClasses=el.className.split(" ");var newClassName="";for(var i=0;i<elClasses.length;i++){if(elClasses[i]!=className){newClassName+=elClasses[i]+" ";}}if(newClassName.charAt(newClassName.length-1)==" "){newClassName=newClassName.substr(0,newClassName.length-1);}el.className=newClassName;}}};
dom.containsClass=function(el,className){if(el&&className){if(el.className){return el.className.indexOf(className)!=-1;}}return false;};
dom.getBaseClass=function(el){if(el){if(el.className){if(el.className.indexOf(' ')==-1){return el.className;}else{return el.className.split(' ')[0];}}}};
dom.disableSelection=function(target,leaveCursor){if(typeof target.onselectstart!="undefined"){target.unselectable="on";target.onselectstart=function(){return false;};}else if(typeof target.style.MozUserSelect!="undefined"){target.style.MozUserSelect="none";}else{target.onmousedown=function(){return false;};}if(!leaveCursor){target.style.cursor="default";}};
dom.getClickedElement=function(e){var targ;if(!e){e=window.event;}if(e.target){targ=e.target;}else if(e.srcElement){targ=e.srcElement;}if(targ.nodeType==3){targ=targ.parentNode;}return targ;};
dom.getElementPosition=function(obj){if(!obj){return false;}var curleft=0;var curtop=0;if(obj.offsetParent){do{curleft+=obj.offsetLeft;curtop+=obj.offsetTop;}while(obj=obj.offsetParent);}return{x:curleft,y:curtop};};
dom.pos=dom.getElementPosition;
dom.getMousePosition=function(e){var posx=0;var posy=0;if(!e){e=window.event;}if(e.pageX||e.pageY){posx=e.pageX;posy=e.pageY;}else if(e.clientX||e.clientY){posx=e.clientX+document.body.scrollLeft+document.documentElement.scrollLeft;posy=e.clientY+document.body.scrollTop+document.documentElement.scrollTop;}return{x:posx,y:posy};};
dom.getViewportDimensions=function(){var intH=0,intW=0;if(self.innerHeight){intH=window.innerHeight;intW=window.innerWidth;}else{if(document.documentElement&&document.documentElement.clientHeight){intH=document.documentElement.clientHeight;intW=document.documentElement.clientWidth;}else{if(document.body){intH=document.body.clientHeight;intW=document.body.clientWidth;}}}return{height:parseInt(intH,10),width:parseInt(intW,10)};};
dom.height=function(){return dom.getViewportDimensions().height;};
dom.scriptLoaded=function(file){var scripts=document.getElementsByTagName('script');for(var i=0;i<scripts.length;i++){if(scripts[i].src.indexOf(file)!=-1){return true;}}return false;};
dom.loadScript=function(file){if(dom.scriptLoaded(file)){return;}var s=document.createElement('script');s.setAttribute('src',file);s.setAttribute('type','text/javascript');s.setAttribute('language','javascript');document.getElementsByTagName('head')[0].appendChild(s);return s;};
dom.loadStyle=function(file){if(dom.scriptLoaded(file)){return;}var s=document.createElement('link');s.setAttribute('href',file);s.setAttribute('type','text/css');s.setAttribute('rel','stylesheet');document.getElementsByTagName('head')[0].appendChild(s);return s;};
dom.hitTest=function(el,point){var el_pos=dom.getElementPosition(el);return(point.x>=el_pos.x&&point.x<=(el_pos.x+el.offsetWidth)&&point.y>=el_pos.y&&point.y<=(el_pos.y+el.offsetHeight));};
dom.reload=function(){window.location.reload(false);};
dom.getParent=function(element,parent){if(typeof element=="string"){element=document.getElementById(element);}if(!element){return null;}var elements=[];if(typeof parent!="string"){while(element.parentNode){element=element.parentNode;elements.unshift(element);if(element==parent){return elements;}}}else{parent=parent.toUpperCase();while(element.parentNode){element=element.parentNode;elements.unshift(element);if(element.nodeName&&element.nodeName.toUpperCase()==parent){return elements;}}}return elements;};
dom.initEvents=function(el){el.listeners=[];el.addEventListener=function(evnt,elmnt,fn){var l=this.listeners;for(var i=0;i<l.length;i++){if(l[i][0]==evnt&&l[i][1]==elmnt&&l[i][2]==fn){return false;}}l.push([evnt,elmnt,fn])};el.dispatchEvent=function(evnt){var l=this.listeners;for(var i=0;i<l.length;i++){if(l[i][0]==evnt){var el=l[i][1];var fn=l[i][2];fn.apply(el,[evnt]);}}};};
dom.appendScript = function(file){var l=function(){dom.loadScript(file);};dom.addEvent(window,'load',l);};
dom.appendStyle = function(file){var l=function(){dom.loadStyle(file);};dom.addEvent(window,'load',l);};
dom.relocate = function(url){location.href=url;};
dom.forall = function(def,fn) {var tag=def.tagName?def.tagName:'*';var all=document.getElementsByTagName(tag);for(var i=0;i<all.length;i++){for(var j in def){if(all[i][j]==def[j]){fn.apply(all[i]);}}}};
dom.addHoverToClass = function(clsName) {
var addHandler=function(){var over=function(){dom.addClass(this,'hover');};var out=function(){dom.removeClass(this,'hover');};dom.addEvent(this,'mouseover',over);dom.addEvent(this,'mouseout',out);};dom.forall({className:clsName},addHandler);};
