/*global document, navigator, window */
var incScripts=[];
var isIE=(typeof document.all!='undefined'&&typeof window.opera=='undefined'&&navigator.vendor!='KDE');
var docMode = document.documentMode || 0;
function $(id){return document.getElementById(id);}
function $text(txt){return document.createTextNode(txt);}
function $element(elm,ats){var o=document.createElement(elm);var a;var at;if(ats){for(var x in ats){if(x){at=x.toLowerCase();if(at=='innerhtml'){o.appendChild($text(ats[x]));}else{switch(at){case'classname':a=isIE && docMode != 8?'className':'class';break;case'for':a='htmlFor';break;default:a=x;break;}o.setAttribute(a,ats[x]);}}}}return o;}
function $target(e,tp,d){if(typeof e == 'undefined'){return null;}var t;var depth=d||1;var i=0;if(e.nodeType==1||e==document){t=e;}else if(typeof e=='string'){t=document.getElementById(e);}else{var event=(typeof e=='undefined')?window.event:e;t=(typeof event.target!='undefined')?event.target:event.srcElement;while(t.nodeType==3&&t.parentNode!==null){t=t.parentNode;}}if(t==null) return null;var tN=(tp||t.nodeName).toUpperCase();var cont=(t==document)?false:true;while(cont){if(t.nodeName!=tN){t=t.parentNode;}if(t.nodeName==tN){i++;}if(i==depth){break;}else{t=t.parentNode;}if(t.nodeName=='#document'){t=null;break;}}return t;}
function $onLoad(fn){if(typeof window.addEventListener!='undefined'){window.addEventListener('load',fn,false);}else if(typeof document.addEventListener!='undefined'){document.addEventListener('load',fn,false);}else if(typeof window.attachEvent!='undefined'){window.attachEvent('onload',fn);}else{var oldfn=window.onload;if(typeof window.onload!='function'){window.onload=fn;}else{window.onload=function(){oldfn();fn();};}}}
function $collection(par,elm,attr,val){var array=[];var pObj=$target(par);if(pObj==null){return array;};var elms=(elm=='*'&&document.all)?pObj.all:pObj.getElementsByTagName(elm);var i;if(elms.length&&elms[0].nodeName==='#comment'){var tmp=[];for(i=1;i<elms.length;i++){tmp[tmp.length]=elms[i];}elms=tmp;}if(attr&&val){for(i=0;i<elms.length;i++){if(attr=='class'){var pattern=new RegExp('(^| )'+val+'( |$)');if(pattern.test(elms[i].className)){array[array.length]=elms[i];}}else if(attr=='for'){if(elms[i].getAttribute('htmlFor')||elms[i].getAttribute('for')){if(elms[i].htmlFor==val){array[array.length]=elms[i];}}}else if(attr=='innerHTML'){if(elms[i].innerHTML==val){array[array.length]=elms[i];}}else if(elms[i].getAttribute(attr)==val){array[array.length]=elms[i];}}}else{array=elms;}return array;}
function $listen(elm,ev,fn,cap){var t=$target(elm);if(typeof t.addEventListener!='undefined'){t.addEventListener(ev,fn,cap||false);}else if(typeof t.attachEvent!='undefined'){t.attachEvent('on'+ev,fn);}else{ev='on'+ev;if(typeof t[ev]=='function'){var oL=t[ev];t[ev]=function(){oL();return fn();};}else{t[ev]=fn;}}return true;}
function $ignore(elm,ev,fn,cap){var t=$target(elm);if(typeof t.removeEventListener!='undefined'){t.removeEventListener(ev,fn,cap||false);}else if(typeof t.detachEvent!='undefined'){t.detachEvent('on'+ev,fn);}else{t['on'+ev]=null;}return true;}
function $stopDefault(e){var event=(typeof e=='undefined')?window.event:e;event.returnValue=false;if(typeof event.preventDefault!='undefined'){event.preventDefault();}return true;}
function $import(src){var tgs=!$collection(document,'SCRIPT','src',src).length;var fns=!isNaN(incScripts.join(',').toLowerCase().match(src.toLowerCase()));var cont=(tgs&&fns);if(cont){var script=$element('SCRIPT',{'src':src});var head=$collection(document,'head')[0];head.appendChild(script);incScripts[incScripts.length]=src;}}
function $submit(f,cb){$listen(f,'submit',function(e){$stopDefault(e);cb(f);});}
function $href(e,fn){var a=$target(e);$listen(a,'click',function(e){fn(a);$stopDefault(e);});}
function $isDefined(obj){ return (obj !== undefined); }
function $clearTarget(id){var elm=$target(id);var newElm=elm.cloneNode(false);elm.parentNode.replaceChild(newElm,elm);return newElm;}
function $stopBubble(e){var event=(typeof e=='undefined')?window.event:e;if(event.stopPropagation){event.stopPropagation();}else{event.cancelBubble=true;}}


/*=== OLD SCHOOL ===*/
var isMoz = (navigator.userAgent.toLowerCase().indexOf("gecko") != -1);
function $attribute(elm, attr, val, par){ var pObj = par || document; return $collection(pObj,elm,attr,val);}
function $parent(e,tp){
	var p = e.parentNode;
	var node = (tp) ? tp.toUpperCase() : p.nodeName.toUpperCase();
	while(p.nodeName != node){ 
		p = p.parentNode;
		if(p.nodeName == '#document'){ 
			p = null;
			break;
		}
	}
return p;	
}
function $event(e){
	var ev = (typeof e == "undefined") ? window.event : e ;
	if (typeof ev.pageX == "undefined"){
		var scrll = getScrollingPosition();  
	   	ev.pageX = ev.clientX + scrll.X;
   		ev.pageY = ev.clientY + scrll.Y;
	}
	return ev;
}
function getScrollingPosition(){
	var position = [0, 0];
	
	if(typeof window.pageYOffset != 'undefined'){
		position = [ window.pageXOffset, window.pageYOffset ];
	}	
	if(typeof document.documentElement.scrollTop != 'undefined'){
		position = [ document.documentElement.scrollLeft, document.documentElement.scrollTop ];
	}else if(typeof document.body.scrollTop != 'undefined'){
		position = [ document.body.scrollLeft, document.body.scrollTop ];
	}
	return {X:position[0],Y:position[1]}
}