/**
 * doijs package
 * 
 * @author donna iwan setiawan
 * @version 0.1 
 * copyright - (c) 2007 - 2008 donna iwan setiawan
 * license - GPL version 3 or any later version <http://www.gnu.org/licenses/gpl-3.0.txt>
 */
doi.event=new function(){var _event=window.event;this.keyCode;this.keyPressed;this.target;this.relatedTarget;this.mouseX;this.mouseY;this.MOUSE_LEFT_CLICK=1;this.MOUSE_MIDDLE_CLICK=4;this.MOUSE_RIGHT_CLICK=2;this.MOUSE_NO_CLICK=0;this.mouseButton=this.MOUSE_NO_CLICK;var _queue=[];this._getKeyCode=function(){var key;if(_event.keyCode){key=_event.keyCode;}else if(_event.which){key=_event.which;}return key;};this._getTarget=function(){var target;if(_event.target){target=_event.target;}else if(_event.srcElement){target=_event.srcElement;}if(target !=undefined){if(target.nodeType==3){target=target.parentNode;}}return target;};this._getMousePosition=function(){if(_event.pageX || _event.pageY){this.mouseX=_event.pageX;this.mouseY=_event.pageY;}else if(_event.clientX || _event.clientY){this.mouseX=_event.clientX+document.body.scrollLeft+document.documentElement.scrollLeft;this.mouseY=_event.clientY+document.body.scrollTop+document.documentElement.scrollTop;}else{this.mouseX=0;this.mouseY=0;}};this.isAddEventListener=function(element,event_type,func,capture){if(!doi.dom.isObject(element)){element=doi.dom.getElement(element);}if(typeof  func=='string'){eval('var func=function(event){'+func+';};');}if(element){if(element.addEventListener){element.addEventListener(event_type,func,!!capture);}else if(element.attachEvent){element.attachEvent('on'+event_type,func);}eval('if(element){if(!element._doi_on'+event_type+'){element._doi_on'+event_type+'=[];}}');eval('if(!element.doi_on'+event_type+'){element.doi_on'+event_type+'=function(){for(var i=0;i < element._doi_on'+event_type+'.length;i++){if(element._doi_on'+event_type+'[i]){element._doi_on'+event_type+'[i]();}}}}');eval('element._doi_on'+event_type+'.push(func);');return true;}return false;};this.add=function(element,event_type,func,capture){this.addEventListener(element,event_type,func,capture);};this.addEventListener=function(element,event_type,func,capture){if(!this.isAddEventListener(element,event_type,func,capture)){_queue[_queue.length]={element:element,event_type:event_type,func:func,capture:capture};}};this.addEventListenerOnLoad=function(event){if(_queue){var len=_queue.length;for(var i=0;i < len;i++){doi.event.isAddEventListener(_queue[i].element,_queue[i].event_type,_queue[i].func,_queue[i].capture);}delete _queue;}};this.addEventListener(doi,'load',this.addEventListenerOnLoad);this.getElementById=function(id){if(document.all){var element=document.all(id);}else if(document.getElementById){var element=document.getElementById(id);}return element;};this.fire=function(element,event){if(event && event.toLowerCase){event=event.toLowerCase();}if(!doi.dom.isObject(element)){element=doi.dom.getElement(element);}if(!element){return false;}var $return=false;eval('if(element && element.doi_on'+event+'){element.doi_on'+event+'();$return=true;}');return $return;};this.isRightMouseButtonClicked=function(){var rclck=false;if(_event.which){rclck=(_event.which==3);}else if(_event.button){rclck=(_event.button==2);}return rclck;};this.remove=function(element,event_type,func,capture){this.removeEventListener(element,event_type,func,capture);};this.removeEventListener=function(element,event_type,func,capture){if(typeof element=='string'){var element=this.getElementById(element);}if(typeof  func=='string'){eval('var func=function(event){'+func+';};');}if(element){if(element.removeEventListener){element.removeEventListener(event_type,func,!!capture);}else if(element.detachEvent){element.detachEvent('on'+event_type,func);}eval('if(element._doi_on'+event_type+'){for(var i=0;i < element._doi_on'+event_type+'.length;i++){if(element._doi_on'+event_type+'[i]==func){delete element._doi_on'+event_type+'[i];break;}}}');}};this.set=function(e){this.setEvent(e);};this.setEvent=function(e){_event=window.event;if(e){_event=e;}if(_event){this.keyCode=this._getKeyCode();this.keyPressed=String.fromCharCode(this.keyCode);this.target=this._getTarget();this.fromTarget=_event.srcElement || _event.relatedTarget;this.toTarget=_event.relatedTarget || _event.toElement;this._getMousePosition();}};this.stop=function(e){this.stopPropagation(e);};this.stopEvent=function(e){this.stopPropagation(e);};this.stopPropagation=function(e){if(e){var event=e;}else{var event=_event;}event.cancelBubble=true;if(event.stopPropagation){event.stopPropagation();}if(event.preventDefault){event.preventDefault();}};this.onDomReadyTimer=null;this.onDomReady=function(){if(doi.browser.getName()=='Safari'){this.onDomReadyTimer=window.setInterval(function(){if(/loaded|complete/.test(document.readyState)){doi.event.fire(doi,'load');}},10);}else if(document.addEventListener){doi.event.add(document,'DOMContentLoaded',function(){doi.event.fire(doi,'load');});}else{}};};doi.event.onDomReady();doi.event.addEventListener(window,'load',function(){doi.event.fire(doi,'load');});doi.event.addEventListener(window,'load',function(){doi.body.offsetLeft=document.documentElement.scrollWidth-document.body.offsetWidth;doi.body.offsetTop=document.documentElement.scrollHeight-document.body.offsetHeight;});
