
isArray=function(object){return object instanceof Array;};Number.prototype.setInRange=function(from,to){if(this<from)
return from;if(this>to)
return to;return this;};Object.extend(String.prototype,{sub:function(pattern,replacement,count){replacement=this.gsub.prepareReplacement(replacement);count=(typeof count=='undefined')?1:count;return this.gsub(pattern,function(match){if(--count<0)return match[0];return replacement(match);});},uncamelize:function(){var a=$A(this);for(var i=0;i<a.length;i++)
if(a[i].match(/[A-Z]/)){a[i]='-'+a[i].toLowerCase();}
return a.join('');}});Object.extend(Element,{visible:function(element){return Element.getStyle(element,'display')!='none';},hide:function(){for(var i=0;i<arguments.length;i++){var element=$(arguments[i]);element._display=element.style.display;element.style.display='none';}},show:function(){for(var i=0;i<arguments.length;i++){var element=$(arguments[i]);element.style.display=typeof element._display=='undefined'?'':element._display;if(Element.getStyle(element,'display')=='none'&&element.style.display=='')
element.style.display=Element.getDisplayType(element);}},getDisplayType:function(element){var tag=element.nodeName;return['BLOCKQUOTE','DIV','FORM','P','TABLE'].indexOf(tag)>-1?'block':'inline';},createUniqueId:function(prefix){if(prefix==undefined)
prefix='id';for(var i=0;$(prefix+i);i++);return prefix+i;},getDimensions:function(element,forStyle){element=$(element);var els=element.style;var visible=Element.visible(element);if(!visible){var originalVisibility=els.visibility;var originalPosition=els.position;els.visibility='hidden';els.position='absolute';els.display='inline';}
var dim={width:element.offsetWidth,height:element.offsetHeight};if(forStyle==undefined)
forStyle=false;if(forStyle){originalWidth=els.width;originalHeight=els.height;els.width=dim.width+'px';els.height=dim.height+'px';dim.width-=element.offsetWidth-dim.width;dim.height-=element.offsetHeight-dim.height;els.width=originalWidth;els.height=originalHeight;}
if(!visible){els.display='none';els.position=originalPosition;els.visibility=originalVisibility;}
return dim;},setOpacity:function(element,opacity){var el=$(element);try{el.style.opacity=opacity;}catch(e){}
try{el.style.MozOpacity=opacity;}catch(e){}
try{el.style.filter='alpha(opacity='+Math.round(opacity*100)+')';}catch(e){}
try{el.style.KhtmlOpacity=opacity;}catch(e){}}});Object.extend(Position,{get:function(element,top,scrolling,toNextAbsolutePositioned){var el=$(element);top=(top==undefined)?document.body:$(top);scrolling=(scrolling==undefined)?false:scrolling;var tnap=(toNextAbsolutePositioned==undefined)?false:toNextAbsolutePositioned;var el_=el;for(var lx=0,ly=0;el_!=top;el_=el_.offsetParent){if(Element.getStyle(el_,'position')=='absolute'&&el!=el_)
break;var par=el_.offsetParent;var offsetLeft=el_.offsetLeft;var offsetTop=el_.offsetTop;if(scrolling){offsetLeft-=par.scrollLeft;offsetTop-=par.scrollTop;}
lx+=offsetLeft;ly+=offsetTop;}
return{left:lx,top:ly};}});document.getElementsByClassName=function(className,parentElement){var parent=$(parentElement)||document.body;var children=parent.getElementsByTagName('*');return $A(children).inject([],function(elements,child){if(child.className.match(new RegExp("(^|\\s)"+className+"(\\s|$)")))
elements.push(Element.extend(child));return elements;});};removeEventListener=function(elements,types,handler,phase){if(!isArray(elements))
elements=[elements];if(!isArray(types))
types=[types];for(var i=0;i<elements.length;i++){var el=$(elements[i]);for(var j=0;j<types.length;j++){var type=types[j];try{el.removeEventListener(type,handler,phase);}catch(e){try{for(var k=0;typeof el[type+k]!='undefined';k++){if(el[type+k]==handler)
delete el[type+k];}}catch(e){}}}}};
