
bbcjs.trace('<b style="color:Green;">jst_dom.js was included.</b>',2);new function(){var NODE={ELEMENT_NODE:1,ATTRIBUTE_NODE:2,TEXT_NODE:3,CDATA_SECTION_NODE:4,ENTITY_REFERENCE_NODE:5,ENTITY_NODE:6,PROCESSING_INSTRUCTIONS_NODE:7,COMMENT_NODE:8,DOCUMENT_NODE:9,DOCUMENT_TYPE_NODE:10,DOCUMENT_FRAGMENT_NODE:11,NOTATION_NODE:12};var forEach=bbcjs.forEach;var filter=bbcjs.filter;function isLegacyEvent(el,type){return(!el.addEventListener&&!el.attachEvent)||(type=='click'&&!!navigator.userAgent.match(/safari/gi));}
function fixEvent(e,el){if(typeof e.target!='undefined')return e;e.target=e.srcElement;e.currentTarget=el;e.preventDefault=function(){this.returnValue=false;};e.stopPropagation=function(){this.cancelBubble=true;};e.eventPhase=(e.srcElement==el)?2:3;if(e.type=='mouseover')e.relatedTarget=e.fromElement;else if(e.type=='mouseout')e.relatedTarget=e.toElement;return e;}
function iterator(el,next,filter,nth){var elems=[];filter=getFilter(filter);nth=(nth!==undefined&&nth!==null)?parseFloat(nth):false;while(el){if(applyFilter(el,filter)){if(elems.length===nth)return[el];elems[elems.length]=el;}
el=next(el);}
return(nth!==false)?[null]:elems;}
function getFilter(filter){return(filter==='*'||filter===undefined||filter===null)?NODE.ELEMENT_NODE:filter.toUpperCase();}
function applyFilter(el,filter){return(filter===null||el.nodeType===filter||el.nodeName===filter);}
function swapStyle(el,o,f){var i;for(i in o){el.style["old"+i]=el.style[i];el.style[i]=o[i];}
f.apply(el,[]);for(i in o)
el.style[i]=el.style["old"+i];}
var dom=bbcjs.dom={eventListeners:[null],addEventListener:function(el,type,callback,scope){var id=dom.eventListeners.length;var captures=false;scope=scope||el;var handler=function(e){e=fixEvent(e||window.event,el);return callback.call(scope,e);};if(isLegacyEvent(el,type)){el['on'+type]=handler;dom.eventListeners[id]=[el,type,handler,captures];return id;}
else if(el.attachEvent){el.attachEvent('on'+type,handler);dom.eventListeners[id]=[el,type,handler,captures];return id;}
else if(el.addEventListener){el.addEventListener(type,handler,captures);dom.eventListeners[id]=[el,type,handler,captures];return id;}
return-1;},removeEventListener:function(id){var listener=dom.eventListeners[id];if(listener===null)return;var el=listener[0];var type=listener[1];var handler=listener[2];var captures=listener[3];if(isLegacyEvent(el,type))
el['on'+type]=function(){return;};else if(el.detachEvent)
el.detachEvent('on'+type,handler);else if(el.removeEventListener)
el.removeEventListener(type,handler,captures);dom.eventListeners[id]=null;},stopEvent:function(e){e.preventDefault();e.stopPropagation();return false;},text:function(el){var t='';forEach(dom.nodelist(el.childNodes||el),function(obj){t+=obj.nodeType!=NODE.ELEMENT_NODE?obj.nodeValue:dom.text(obj.childNodes);});return t;},first:function(el,filter){return dom.children(el,filter,0)[0];},last:function(el,filter){return iterator(el.lastChild,function(node){return node.previousSibling;},filter)[0];},previous:function(el,filter){return dom.preceding(el,filter,0)[0];},next:function(el,filter){return dom.following(el,filter,0)[0];},parent:function(el,filter){return dom.ancestors(el,filter,0)[0];},children:function(el,filter,nth){return iterator(el.firstChild,function(node){return node.nextSibling;},filter,nth);},preceding:function(el,filter,nth){return iterator(el.previousSibling,function(node){return node.previousSibling;},filter,nth);},following:function(el,filter,nth){return iterator(el.nextSibling,function(node){return node.nextSibling;},filter,nth);},ancestors:function(el,filter,nth){return iterator(el.parentNode,function(node){return node.parentNode;},filter,nth);},descendents:function(el,tag){if(!tag&&el.all)return dom.nodelist(el.all);return dom.nodelist(el.getElementsByTagName(tag||'*'));},nodelist:function(mix){var nodes=[];if(mix.constructor!=Array)mix=[mix];forEach(mix,function(item){if(typeof(item)==='string'){var div=document.createElement('div');div.innerHTML=item;forEach(div.childNodes,function(obj){nodes.push(obj);});}
else if(item.length){forEach(item,function(obj){nodes.push(obj);});}
else nodes.push(item);});return nodes;},getElementsByClassName:function(className,tag,root){return filter(dom.descendents(root||document,tag),function(el){return dom.hasClassName(el,className);});},isAncestor:function(el,child){if(!el||!child)return false;while((child=child.parentNode)&&child!=el)continue;return el==child;},elem:function(tag,attrs,content){tag=(bbcjs.browser.ie&&attrs&&attrs.name)?'<'+tag+' name="'+attrs.name+'">':tag;var el=document.createElement(tag);if(attrs)dom.attr(el,attrs);if(content){forEach(dom.nodelist(content),function(node){el.appendChild(node);});}
return el;},attr:function(el,name,value){var old={'for':'htmlFor','class':'className'};if(typeof(name)=='string'){name=old[name]||name;el[name]=value;el.setAttribute(name,value);return el;}
for(prop in name){prop=old[prop]||prop;el[prop]=name[prop];el.setAttribute(prop,name[prop]);}
return el;},append:function(el,content){return forEach(dom.nodelist(content),function(node){el.appendChild(node);});},before:function(el,content){var parent=el.parentNode;return forEach(dom.nodelist(content),function(node){parent.insertBefore(node,el);});},remove:function(el){return el.parentNode.removeChild(el);},empty:function(el){while(el.firstChild)
dom.remove(el.firstChild);return el;},setStyle:function(el,style){var old={};for(name in style){old[name]=el.style[name];el.style[name]=style[name];}
return old;},getStyle:function(el,name){if(name=='width'||name=='height'){var old={},parent=el.parentNode,height,width,clone,parPos;forEach(["Top","Bottom","Right","Left"],function(){old["padding"+this]=0;old["border"+this+"Width"]=0;});swapStyle(el,old,function(){if(dom.getStyle(el,'display')!='none'){height=el.offsetHeight;width=el.offsetWidth;}
else{el=el.cloneNode(true);dom.setStyle(el,{visibility:"hidden",position:"absolute",display:"block",right:"0",left:"0"});dom.append(parent,el);parPos=dom.getStyle(parent,'position');if(parPos===''||parPos=='static')
parent.style.position='relative';height=el.clientHeight;width=el.clientWidth;if(parPos===''||parPos=='static')
parent.style.position='static';dom.remove(el);}});return name=='height'?height:width;}
else if(el.style[name])
return el.style[name];else if(el.currentStyle)
return el.currentStyle[name];else if(document.defaultView&&document.defaultView.getComputedStyle){var css=document.defaultView.getComputedStyle(el,'');return css&&css[name];}
return null;},getClassNames:function(el){return $(el).className.replace(/^\s+|\s+$/g,'').split(/\s+/);},hasClassName:function(el,className){var classFound=false;forEach(dom.getClassNames(el),function(name){if(name==className)classFound=true;});return classFound;},addClassName:function(el,className){if(dom.hasClassName(el,className))return el;return dom.attr(el,'className',dom.getClassNames(el).concat(className).join(' '));},removeClassName:function(el,className){if(!dom.hasClassName(el,className))return el;var classNames=dom.getClassNames(el,className);var newNames=filter(classNames,function(item){return(item!=className);});return dom.attr(el,'className',newNames.join(' '));},hide:function(el){return dom.setStyle(el,{display:'none'});},show:function(el){return dom.setStyle(el,{display:''});},toggle:function(el){return dom[dom.getStyle(el,'display')!='none'?'hide':'show'](el);},setOpacity:function(el,level){if(el.filters)
el.style.filter='alpha(opacity='+level+')';else
el.style.opacity=Number(level)/100;return el;},pageX:function(el){return el.offsetParent?el.offsetLeft+dom.pageX(el.offsetParent):el.offsetLeft;},pageY:function(el){return el.offsetParent?el.offsetTop+dom.pageY(el.offsetParent):el.offsetTop;},parentX:function(el){return el.parentNode==el.offsetParent?el.offsetLeft:dom.pageX(el)-dom.pageX(el.parentNode);},parentY:function(el){return el.parentNode==el.offsetParent?el.offsetTop:dom.pageY(el)-dom.pageY(el.parentNode);},posX:function(el){return parseInt(dom.getStyle(el,'left'));},posY:function(el){return parseInt(dom.getStyle(el,'top'));},setX:function(el,val){el.style.left=val+'px';return el;},setY:function(el,val){el.style.top=val+'px';return el;},setXY:function(el,x,y){el.style.left=x+'px';el.style.top=y+'px';return el;},addX:function(el,val){return dom.setX(el,dom.posX(el)+val);},addY:function(el,pos){return dom.setY(el,dom.posY(el)+pos);},getHeight:function(el){return parseInt(dom.getStyle(el,'height'));},getWidth:function(el){return parseInt(dom.getStyle(el,'width'));},pageHeight:function(){var mode=document.compatMode;var scrollHeight=(mode&&mode!='CSS1Compat')?document.body.scrollHeight:document.documentElement.scrollHeight;return Math.max(scrollHeight,dom.windowHeight());},pageWidth:function(){var mode=document.compatMode;var scrollWidth=(mode&&mode!='CSS1Compat')?document.body.scrollWidth:document.documentElement.scrollWidth;return Math.max(scrollWidth,dom.windowWidth());},windowHeight:function(){var height=self.innerHeight;var mode=document.compatMode;if((mode||bbcjs.browser.ie)&&!bbcjs.browser.opera){height=(mode=='CSS1Compat')?document.documentElement.clientHeight:document.body.clientHeight;}
return height;},windowWidth:function(){var width=self.innerWidth;var mode=document.compatMode;if(mode||bbcjs.browser.ie){width=(mode=='CSS1Compat')?document.documentElement.clientWidth:document.body.clientWidth;}
return width;},scrollX:function(){var de=document.documentElement;return self.pageXOffset||(de&&de.scrollLeft)||document.body.scrollLeft;},scrollY:function(){var de=document.documentElement;return self.pageYOffset||(de&&de.scrollTop)||document.body.scrollTop;}};dom.addEventListener(window,'unload',function(){forEach(dom.eventListeners,function(item,index){if(item&&item[1]!='unload'){dom.removeEventListener(index);}});});bbcjs.extend(dom,{addObjectEventListener:function(e,t,l){return dom.addEventListener(e,t,l['handle'+t.slice(0,1).toUpperCase()+t.slice(1)],l);},createElement:dom.elem,addAttribute:function(e,n,v){dom.attr($(e),n,v);},appendElement:function(p,n,a,t){return $(p).appendChild(dom.elem(n,a,t));},setStyles:function(e,s){dom.setStyle($(e),s);},hideElement:function(){forEach(arguments,function(e){dom.hide($(e));});},showElement:function(){forEach(arguments,function(e){dom.show($(e));});}});}();