if(window.opera){Array.prototype.concat=function(){var e=[];for(var b=0,c=this.length;b<c;b++){e.push(this[b])}for(var b=0,c=arguments.length;b<c;b++){if(arguments[b].constructor==Array){for(var a=0,d=arguments[b].length;a<d;a++){e.push(arguments[b][a])}}else{e.push(arguments[b])}}return e}}if(typeof(Object.extend)!="function"){Object.extend=function(a,c){for(var b in c){a[b]=c[b]}return a}}if(typeof(Function.prototype.bind)!="function"){Function.prototype.bind=function(a){var b=this;return function(){return b.apply(a,arguments)}}}Function.prototype.bindAsEventListener=function(b){var a=this;return function(c){a.call(b,c||window.event)}};var Class={create:function(){return function(){this.initialize.apply(this,arguments)}}};function getElementsByClassName(g,h){var b=[];var f=new RegExp("\\b"+h+"\\b");var e=g.getElementsByTagName("*");for(var d=0,c=e.length;d<c;d++){if(f.test(e[d].className)){b.push(e[d])}}return b}function removeAllChildren(c){var d=c.childNodes;if(c.childNodes.length==0){return}for(var b=0;b<d.length;b++){var a=d[b];if(typeof(a)=="object"){c.removeChild(a)}}}function getElementCoordinates(a){var b=new Object();b.x=0;b.y=0;b.w=(a.clientWidth>0)?a.clientWidth:a.offsetWidth;b.h=(a.clientHeight>0)?a.clientHeight:a.offsetHeight;while(a){b.x+=a.offsetLeft;b.y+=a.offsetTop;a=a.offsetParent}b.x1=b.x;b.y1=b.y;b.x2=b.x1+b.w;b.y2=b.y1+b.h;b.xc=(b.x1+b.x2)/2;b.yc=(b.y1+b.y2)/2;b.toString=function(){var d="coord\n";for(var c in this){if(typeof(this[c])!="function"){d+="\t"+c+": "+this[c]+"\n"}}return d};b.shrink=function(c){this.x1+=c;this.y1+=c;this.x2-=c;this.y2-=c;return computeWidthAndCenters(this)};b.expand=function(c){this.x1-=c;this.y1-=c;this.x2+=c;this.y2+=c;return computeWidthAndCenters(this)};return computeWidthAndCenters(b)}function computeWidthAndCenters(a){a.x=a.x1;a.y=a.y1;a.w=a.x2-a.x1;a.h=a.y2-a.y1;a.xc=(a.x1+a.x2)/2;a.yc=(a.y1+a.y2)/2;return a}function debugWrite(b){var a=document.getElementById("debugwrite");a.className="";if(a){if(b==null){b="null"}if(b==undefined){b="undefined"}if(b.toString){b=b.toString()}b=b.replace(/\n/g,"<br />");b=b.replace(/\t/g,"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;");a.innerHTML=b+"<br />"+a.innerHTML}}function inspect(c){var b="";for(var a in c){if(typeof(c[a])!="function"&&c[a]!=null){b+=a+": "+c[a]+"; "}}return b}Number.prototype.toPixels=function(){return this+"px"};
