
var FORK=FORK||{};FORK.Dom={getElementsBy:function(method,tag,root){tag=tag||'*';if(typeof root=="string"){root=document.getElementById(root);}
root=root||document;var nodes=[];var elements=root.getElementsByTagName(tag);if(!elements.length&&tag=='*'&&root.all){elements=root.all;}
for(var i=0,len=elements.length;i<len;++i){if(method(elements[i])){nodes[nodes.length]=elements[i];}}
return nodes;},hasClass:function(el,className){if(typeof el=='string'){el=document.getElementById(el);}
var re=new RegExp('(?:^|\\s+)'+className+'(?:\\s+|$)');return re.test(el.className);},getElementsByClass:function(className,options){options=options||{};var thisC=this;var method=function(el){return thisC.hasClass(el,className);};return this.getElementsBy(method,options.tag,options.root);},addClass:function(el,className){if(typeof el=='string'){el=document.getElementById(el);}
if(this.hasClass(el,className)){return;}
el.className=[el.className,className].join(' ');},removeClass:function(el,className){if(typeof el=='string'){el=document.getElementById(el);}
if(!this.hasClass(el,className)){return;}
var re=new RegExp('(?:^|\\s+)'+className+'(?:\\s+|$)','g');var c=el.className;el.className=c.replace(re,' ');if(this.hasClass(el,className)){this.removeClass(el,className);}},isSupported:(function(){var re=/(?:^|\s+)a(?:\s+|$)/g,en=false;if(document.getElementById&&typeof RegExp==="function"&&typeof"".replace==="function"&&"a".match(re)){en=true;}
return function(){return en;};})()};
var FORK=FORK||{};FORK.Scroll={getX:function(){FORK.Scroll.setup();return FORK.Scroll.getX();},getY:function(){FORK.Scroll.setup();return FORK.Scroll.getY();},setup:(function(){var global=this;return function(){var readScroll,readScrollY='scrollTop',readScrollX='scrollLeft';if(typeof global.pageXOffset=='number'){readScroll=global;readScrollY='pageYOffset';readScrollX='pageXOffset';}else if((typeof document.compatMode==='string')&&(document.compatMode.indexOf('CSS')>=0)&&(document.documentElement)&&(typeof document.documentElement.scrollLeft=='number')){readScroll=document.documentElement;}else if((document.body)&&(typeof document.body.scrollLeft==='number')){readScroll=document.body;}else{FORK.Scroll.getX=FORK.Scroll.getY=function(){return NaN;};return;}
FORK.Scroll.getX=function(){return readScroll[readScrollX];};FORK.Scroll.getY=function(){return readScroll[readScrollY];};};})(),isSupported:function(){var en=true;if(isNaN(FORK.Scroll.getX())){en=false;}
FORK.Scroll.isSupported=function(){return en;};return en;}};
var FORK=FORK||{};FORK.Event={listeners:[],unloadListeners:[],_useLegacyListener:function(type){return(type==='click'||type=='dblclick');},addListener:function(el,type,fn,options){if(!this._isSupported()){return false;}
if(typeof el=="string"){el=document.getElementById(el);}
options=options||{};var obj={el:el,type:type,fn:fn,options:options};var scope=(options.scope)?options.scope:el;var argument=options.argument;obj.wrappedFn=function(e){return fn.call(scope,e,argument);};if("unload"==type&&this.unloadListenerAttached){if(this._getCacheIndex(this.unloadListeners,el,type,fn)<0){this.unloadListeners.push(obj);}
return;}
var attached=false;if(this._useLegacyListener(type)){if(!el['on'+type]||!el['on'+type].legacyListeners){el['on'+type]=function(e){e=e||window.event;var lls=arguments.callee.legacyListeners;for(var i=0,len=lls.length;i<len;i++){var l=lls[i];if(l){try{l.wrappedFn(e);}catch(err){}}}};el['on'+type].legacyListeners=[];}else if(this._getCacheIndex(el['on'+type].legacyListeners,el,type,fn)>=0){return;}
el['on'+type].legacyListeners.push(obj);attached=true;}else if(el.addEventListener){el.addEventListener(type,obj.wrappedFn,false);attached=true;}else if(el.attachEvent){el.attachEvent("on"+type,obj.wrappedFn);attached=true;}
if(attached){this.listeners.push(obj);if("unload"==type&&options.scope==this){this.unloadListenerAttached=true;}}},removeListener:function(el,type,fn){if(typeof el=="string"){el=document.getElementById(el);}
var cache=(type=='unload'?this.unloadListeners:this.listeners);var i=this._getCacheIndex(cache,el,type,fn);if(i<0){return;}
var obj=cache[i];cache.splice(i,1);if(type!='unload'){if(this._useLegacyListener(type)){i=this._getCacheIndex(el['on'+type].legacyListeners,el,type,fn);el['on'+type].legacyListeners.splice(i,1);if(el['on'+type].legacyListeners.length<1){el['on'+type]=null;}}else if(el.removeEventListener){el.removeEventListener(type,obj.wrappedFn,false);}else if(el.detachEvent){el.detachEvent("on"+type,obj.wrappedFn);}}
obj.fn=null;obj.wrappedFn=null;},_getCacheIndex:function(arr,el,type,fn){for(var i=arr.length;i--;){var li=arr[i];if(li&&li.el==el&&li.type==type&&li.fn==fn){return i;}}
return-1;},_unload:function(e){e=e||window.event;var i,l,len;for(i=0,len=this.unloadListeners.length;i<len;++i){l=this.unloadListeners[i];if(l){try{l.wrappedFn(e);}catch(err){}
l.fn=null;l.wrappedFn=null;}}
for(i=this.listeners.length;i--;){var li=this.listeners[i];if(li){this.removeListener(li.el,li.type,li.fn);}}},purgeElement:function(el,options){if(typeof el=='string'){el=document.getElementById(el);}
options=options||{};var i,elListeners=this._getListeners(el,options.type);for(i=elListeners.length;i--;){var l=elListeners[i];this.removeListener(el,l.type,l.fn);}
if(options.deep&&el.childNodes){for(i=el.childNodes.length;i--;){this.purgeElement(el.childNodes[i],options);}}},_getListeners:function(el,type){var elListeners=[];for(var i=this.listeners.length;i--;){var l=this.listeners[i];if(l&&l.el===el&&(!type||type===l.type)){elListeners.push(l);}}
return elListeners;},stopPropagation:function(e){if(e.stopPropagation){e.stopPropagation();return true;}
if(e.cancelBubble!==undefined){e.cancelBubble=true;return true;}
return false;},preventDefault:function(e){if(e.preventDefault){e.preventDefault();return true;}
if(e.cancelBubble!==undefined){e.returnValue=false;return true;}
return false;},getTarget:function(e){var t=e.target||e.srcElement;return this.resolveTextNode(t);},resolveTextNode:function(node){if(node&&node.nodeName&&"#TEXT"==node.nodeName.toUpperCase()){return node.parentNode;}
return node;},getRelatedTarget:function(e){var t=e.relatedTarget;if(!t){if(e.type=="mouseout"){t=e.toElement;}else if(e.type=="mouseover"){t=e.fromElement;}}
return this.resolveTextNode(t);},getPageX:(function(){function page(e){return e.pageX;}
var getX=FORK.Scroll.getX;function client(e){return getX()+e.clientX;}
function not(){return NaN;}
return function(e){if(typeof e.pageX=='number'){FORK.Event.getPageX=page;}else if(FORK.Scroll&&!isNaN(FORK.Scroll.getX())&&typeof e.clientX=='number'){FORK.Event.getPageX=client;}else{FORK.Event.getPageX=not;}
return FORK.Event.getPageX(e);};})(),getPageY:(function(){function page(e){return e.pageY;}
var getY=FORK.Scroll.getY;function client(e){return getY()+e.clientY;}
function not(){return NaN;}
return function(e){if(typeof e.pageY=='number'){FORK.Event.getPageY=page;}else if(FORK.Scroll&&!isNaN(FORK.Scroll.getY())&&typeof e.clientY=='number'){FORK.Event.getPageY=client;}else{FORK.Event.getPageY=not;}
return FORK.Event.getPageY(e);};})(),_isSupported:(function(){var en=false;if(typeof(function(){}).call==="function"&&document.getElementById&&typeof([].splice)==="function"&&typeof([].push)==="function"&&(window.addEventListener||window.attachEvent)){en=true;}
return function(){return en;};})(),isSupported:function(){var en=false;if(FORK.Event._isSupported()&&FORK.Scroll&&FORK.Scroll.isSupported()){en=true;}
FORK.Event.isSupported=function(){return en;};return en;}};FORK.Event.addListener(window,"unload",FORK.Event._unload,{scope:FORK.Event});