/*
 * Copyright 2006-2008 Savarese Software Research Corporation.
 * All rights reserved.
 */
Wispers.Event={target:function(event){return(event.target||event.srcElement);},addEventListener:function(element,event,action,capture){if(element.addEventListener)
element.addEventListener(event,action,capture);else if(element.attachEvent)
element.attachEvent('on'+event,action);},removeEventListener:function(element,event,action,capture){if(element.removeEventListener)
element.removeEventListener(event,action,capture);else if(element.detachEvent)
element.detachEvent('on'+event,action);},relativeX:function(event){return(event.offsetX||event.layerX||0);},relativeY:function(event){return(event.offsetY||event.layerY||0);},pageX:function(event){return(Wispers.Config.MSIE?(event.clientX+event.srcElement.document.documentElement.scrollLeft-2):event.pageX);},pageY:function(event){return(Wispers.Config.MSIE?(event.clientY+event.srcElement.document.documentElement.scrollTop-2):event.pageY);},within:function(event,element){var x=Wispers.Event.pageX(event);var y=Wispers.Event.pageY(event);var coords=Wispers.Element.absoluteCoords(element);var top=coords.top;var left=coords.left;return(x>=left&&y>=top&&x<(left+element.offsetWidth)&&y<(top+element.offsetHeight));},withinFudge:function(event,element){var x=Wispers.Event.pageX(event);var y=Wispers.Event.pageY(event);var coords=Wispers.Element.absoluteCoords(element);var top=coords.top;var left=coords.left;return(x>=left&&y>=top&&x<=(left+element.offsetWidth)&&y<=(top+element.offsetHeight));},withinClient:function(event,element){var x=Wispers.Event.pageX(event);var y=Wispers.Event.pageY(event);var left=Wispers.Element.clientLeft(element);var top=Wispers.Element.clientTop(element);return(x>=left&&y>=top&&x<(left+element.clientWidth)&&y<(top+element.clientHeight));},preventDefault:function(event){if(event.preventDefault){event.preventDefault();}
if(Wispers.Config.MSIE){event.returnValue=false;}
return false;},CSSApplicator:function(window_){this.rules=[];this.window=window_;},getCSSApplicator:function(window_){var applicator;if(window_&&!(window_==window&&Wispers.Event._cssApplicator)){applicator=new Wispers.Event.CSSApplicator(window_);var handler=function(){applicator.applyAll();Wispers.Event.removeEventListener(window_,'load',handler);};Wispers.Event.addEventListener(window_,'load',handler);}else{if(!Wispers.Event._cssApplicator)
Wispers.Event._cssApplicator=Wispers.Event.getCSSApplicator(window);applicator=Wispers.Event._cssApplicator;}
return applicator;}}
Wispers.Event.CSSApplicator.prototype={addRules:function(rules){this.rules.push(rules);},applyAll:function(){for(var i=0;i<this.rules.length;++i){var rule_set=this.rules[i];for(var selector in rule_set){var elements=Wispers.Element.getBySelector(selector,this.window.document);var fun=rule_set[selector];for(var j=0;j<elements.length;++j)
fun(elements[j]);}}}}