
Object.extend=function(dest,source,replace){for(var prop in source){if(replace==false&&dest[prop]!=null){continue;}
dest[prop]=source[prop];}
return dest;};Object.extend(Function.prototype,{apply:function(o,a){var r,x="__fapply";if(typeof o!="object"){o={};}
o[x]=this;var s="r = o."+x+"(";for(var i=0;i<a.length;i++){if(i>0){s+=",";}
s+="a["+i+"]";}
s+=");";eval(s);delete o[x];return r;},bind:function(o){if(!Function.__objs){Function.__objs=[];Function.__funcs=[];}
var objId=o.__oid;if(!objId){Function.__objs[objId=o.__oid=Function.__objs.length]=o;}
var me=this;var funcId=me.__fid;if(!funcId){Function.__funcs[funcId=me.__fid=Function.__funcs.length]=me;}
if(!o.__closures){o.__closures=[];}
var closure=o.__closures[funcId];if(closure){return closure;}
o=null;me=null;return Function.__objs[objId].__closures[funcId]=function(){return Function.__funcs[funcId].apply(Function.__objs[objId],arguments);};}},false);Object.extend(Array.prototype,{push:function(o){this[this.length]=o;},addRange:function(items){if(items.length>0){for(var i=0;i<items.length;i++){this.push(items[i]);}}},clear:function(){this.length=0;return this;},shift:function(){if(this.length==0){return null;}
var o=this[0];for(var i=0;i<this.length-1;i++){this[i]=this[i+1];}
this.length--;return o;}},false);Object.extend(String.prototype,{trimLeft:function(){return this.replace(/^\s*/,"");},trimRight:function(){return this.replace(/\s*$/,"");},trim:function(){return this.trimRight().trimLeft();},endsWith:function(s){if(this.length==0||this.length<s.length){return false;}
return(this.substr(this.length-s.length)==s);},startsWith:function(s){if(this.length==0||this.length<s.length){return false;}
return(this.substr(0,s.length)==s);},split:function(c){var a=[];if(this.length==0)return a;var p=0;for(var i=0;i<this.length;i++){if(this.charAt(i)==c){a.push(this.substring(p,i));p=++i;}}
a.push(s.substr(p));return a;}},false);Object.extend(String,{format:function(s){for(var i=1;i<arguments.length;i++){s=s.replace("{"+(i-1)+"}",arguments[i]);}
return s;},isNullOrEmpty:function(s){if(s==null||s.length==0){return true;}
return false;}},false);if(typeof addEvent=="undefined")
addEvent=function(o,evType,f,capture){if(o==null){return false;}
if(o.addEventListener){o.addEventListener(evType,f,capture);return true;}else if(o.attachEvent){var r=o.attachEvent("on"+evType,f);return r;}else{try{o["on"+evType]=f;}catch(e){}}};if(typeof removeEvent=="undefined")
removeEvent=function(o,evType,f,capture){if(o==null){return false;}
if(o.removeEventListener){o.removeEventListener(evType,f,capture);return true;}else if(o.detachEvent){o.detachEvent("on"+evType,f);}else{try{o["on"+evType]=function(){};}catch(e){}}};
