/* Prototype Extension Functions
    Copyright (c) 2008-2010 Edulence Corp.
    Developed by Ran Baron, rbaron@edulence.com
!*/
(function(){var eventMatchers={"HTMLEvents":/^(?:load|unload|abort|error|select|change|submit|reset|focus|blur|resize|scroll)$/,"MouseEvents":/^(?:click|mouse(?:down|up|over|move|out))$/};var defaultOptions={pointerX:0,pointerY:0,button:0,ctrlKey:false,altKey:false,shiftKey:false,metaKey:false,bubbles:true,cancelable:true};Event.simulate=function(element,eventName){var options=Object.extend(Object.clone(defaultOptions),arguments[2]||{});var oEvent,eventType=null;element=$(element);for(var name in eventMatchers){if(eventMatchers[name].test(eventName)){eventType=name;break;}}if(!eventType){throw new SyntaxError("Only HTMLEvents and MouseEvents interfaces are supported");}if(document.createEvent){oEvent=document.createEvent(eventType);if(eventType=="HTMLEvents"){oEvent.initEvent(eventName,options.bubbles,options.cancelable);}else{oEvent.initMouseEvent(eventName,options.bubbles,options.cancelable,document.defaultView,options.button,options.pointerX,options.pointerY,options.pointerX,options.pointerY,options.ctrlKey,options.altKey,options.shiftKey,options.metaKey,options.button,element);}element.dispatchEvent(oEvent);}else{options.clientX=options.pointerX;options.clientY=options.pointerY;oEvent=Object.extend(document.createEventObject(),options);element.fireEvent("on"+eventName,oEvent);}return element;};Element.addMethods({simulate:Event.simulate});Object.extend(String.prototype,{ensureEndsWith:function(str){return this.endsWith(str)?this:this+str;},px:function(){return this.ensureEndsWith("px");}});Object.extend(Number.prototype,{px:function(){return this.toString().px();}});})();var Window={size:function(){var width=window.innerWidth||(window.document.documentElement.clientWidth||window.document.body.clientWidth);var height=window.innerHeight||(window.document.documentElement.clientHeight||window.document.body.clientHeight);var x=window.pageXOffset||(window.document.documentElement.scrollLeft||window.document.body.scrollLeft);var y=window.pageYOffset||(window.document.documentElement.scrollTop||window.document.body.scrollTop);return{"width":width,"height":height,"x":x,"y":y};}};

