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 document.getElementById(id);}else{return id;}};
$=el=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){if(el!=document.body){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){if(el!=document.body){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!=document.body){el=dom.el(el);}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.selectionMode=function(target,value){
  if(typeof target.onselectstart!="undefined"){
      target.unselectable=value==0?"on":1;target.onselectstart=function(){
      return value==0?false:true;
  };
  }else if(typeof target.style.MozUserSelect!="undefined"){
      target.style.MozUserSelect=value==0?"none":"text";
  }else{
      target.onmousedown=function(){
          return value==0?false:true;;
      };
  }
};
dom.ie6 = function() {
  return (document.all) && (navigator.appVersion.indexOf("MSIE 6.") != -1);
}
dom.disableSelection=function (target, leaveCursor) {
    target = dom.element(target);
    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.getPosition=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');document.getElementsByTagName('head')[0].appendChild(s);return s;};
dom.loadStyle=function(file){
  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.unloadStyle=function(file){
  var links = document.getElementsByTagName('link');
  for (var i=0;i<links.length;i++) {
    if(links[i].href.indexOf(file)!=-1) {
      links[i].parentNode.removeChild(links[i]);
    }
  }
};

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);};

dom.getCookie = function (name)
{
  var cookie = ' ' + document.cookie;
  var search = ' ' + name + '=';
  var setStr = null;
  var offset = 0;
  var end = 0;
  if (cookie.length > 0){
    offset = cookie.indexOf(search);
    if (offset != -1){
      offset += search.length;
      end = cookie.indexOf(';', offset)  ;
      if (end == -1){
        end = cookie.length;
      }
      setStr = unescape(cookie.substring(offset, end));
    }
  }
 return(setStr);
}
getCookie = dom.getCookie;
dom.setCookie = function (name, value, expires, path, domain, secure) {
  exp = expires ? expires : '01-Jan-2038 12:00:00 GMT';
  document.cookie = name + '=' + escape(value) +
  ((expires) ? '; expires=' + expires : '') +
  ((path) ? '; path=' + path : '') +
  ((domain) ? '; domain=' + domain : '') +
  ((secure) ? '; secure' : '');
}
setCookie = dom.setCookie;
dom.deleteCookie = function ( name, path, domain ) {
  if ( getCookie( name ) ) document.cookie = name + "=" +
  ( ( path ) ? ";path=" + path : "") +
  ( ( domain ) ? ";domain=" + domain : "" ) +
  ";expires=Thu, 01-Jan-1970 00:00:01 GMT";
}
deleteCookie = dom.deleteCookie;
dom.swapNodes = function(node_a, node_b) {
  var nextSibling = node_a.nextSibling;
  var parentNode = node_a.parentNode;
  node_b.parentNode.replaceChild(node_a, node_b);
  parentNode.insertBefore(node_b, nextSibling);
}
dom.getParam = function( name )
{
  name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
  var regexS = "[\\?&]"+name+"=([^&#]*)";
  var regex = new RegExp( regexS );
  var results = regex.exec( window.location.href );
  if( results == null )
    return "";
  else
    return results[1];
}

