
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});