function isDefined(a){return a!=undefined;}function typeOf(a){if(a==undefined){return false;}if(a.callee){return"arguments";}if(a.item){return"collection";}if(typeof a=="number"&&!isFinite(a)){return false;}if(a.$type){return a.$type.toLowerCase();}if(a.nodeName){switch(a.nodeType){case 1:return"element";case 3:return(/\S/).test(a.nodeValue)?"textnode":"whitespace";}}return(typeof a);}function unlink(e){var b;switch(typeOf(e)){case"object":unlinked={};for(var d in object){b[d]=unlink(e[d]);}break;case"hash":b=new Hash(e);break;case"array":b=[];for(var c=0,a=e.length;c<a;c++){b[c]=unlink(e[c]);}break;default:return e;}return b;}function $Array(d){var b=[];var a=d.length;var c=0;if(typeOf(d)=="arguments"){for(c;c<a;c++){b.push(d[c]);}}else{if(typeOf(d)=="collection"){for(c;c<a;c++){b.push(d.item(c));}}}return b;}function random(b,a){return Math.floor(Math.random()*(a-b+1)+b);}function clearTimer(a){clearInterval(a);clearTimeout(a);}function Native(b){var a=b.initialize;a.prototype.$type=b.name;a.implement=function(d){for(var c in d){if(this.prototype.hasOwnProperty(c)===false||(this.prototype.hasOwnProperty(c)&&this.prototype[c]._protected!==true)){this.prototype[c]=d[c];}}};a.alias=function(d,c){this.prototype[c]=this.prototype[d];};return a;}(function(){var c={Array:Array,Date:Date,Function:Function,Hash:Hash,Number:Number,RegExp:RegExp,String:String};for(var f in c){new Native({name:f,initialize:c[f]});}var e={Array:["concat","indexOf","join","lastIndexOf","pop","push","reverse","shift","slice","sort","splice","toString","unshift","valueOf"],String:["charAt","charCodeAt","concat","indexOf","lastIndexOf","match","replace","search","slice","split","substr","substring","toLowerCase","toUpperCase","valueOf"]};for(var a in e){for(var d=0,b=f.length;d<b;d++){if(c[a].prototype[e[a][d]]){c[a].prototype[e[a][d]]._protected=true;}}}})();Array.implement({associate:function(d){var b={};for(var c=0,a=d.length;c<a;c++){b[d[c]]=this[c];}return b;},clean:function(){var b=[];for(var c=0,a=this.length;c<a;c++){if(this[c]!==null){b[c]=this[c];}}return b;},clone:function(){return unlink(this);},combine:function(a){var c=this.clone();for(var d=0,b=a.length;d<b;d++){if(c.contains(a[d])===false){c.push(a[d]);}}return c;},contains:function(c,d){d=(d)?d:0;for(var b=d,a=this.length;b<a;b++){if(this[b]===c){return true;}}return false;},empty:function(){for(var a=this.length;a>=0;a--){delete this[a];}this.length=0;return this;},every:function(d,c){c=(c)?c:this;for(var b=0,a=this.length;b<a;b++){if(!d.call(c,this[b],b,this)){return false;}}return true;},extend:function(a){for(var c=0,b=a.length;c<b;c++){this.push(a[c]);}return this;},filter:function(e,d){d=(d)?d:this;var b=[];for(var c=0,a=this.length;c<a;c++){if(e.call(d,this[c],c,this)){b.push(this[c]);}}return b;},flatten:function(){var d=[];for(var e=0,b=this.length;e<b;e++){if(this[e] instanceof Array){var f=this[e].flatten();for(var c=0,a=f.length;c<a;c++){d.push(f[c]);}}else{d.push(this[e]);}}return d;},forEach:function(d,c){c=(c)?c:this;for(var b=0,a=this.length;b<a;b++){d.call(c,this[b],b);}},getLast:function(){return this[this.length-1]||null;},getRandom:function(){return this[CoreMath.random(0,this.length-1)]||null;},include:function(a){if(this.contains(a)===false){this.push(a);}return this;},indexOf:function(c,d){d=(d)?d:0;for(var b=d,a=this.length;b<a;b++){if(this[b]===c){return b;}}return -1;},indexesOf:function(d,e){var b=[];e=(e)?e:0;for(var c=e,a=this.length;c<a;c++){if(this[c]===d){b.push(c);}}if(b.length>0){return b;}return null;},lastIndexOf:function(b,c){c=(c)?c:this.length;for(var a=c;a>=0;a--){if(this[a]===b){return a;}}return -1;},lastIndexesOf:function(c,d){var a=[];d=(d)?d:this.length;for(var b=d;b>=0;b--){if(this[b]===c){a.push(b);}}if(a.length>0){return a;}return null;},map:function(e,d){d=(d)?d:this;var b=[];for(var c=0,a=this.length;c<a;c++){b.push(e.call(d,this[c],c,this));}return b;},remove:function(c){for(var b=0,a=this.length;b<a;b++){if(this[b]===c){this.splice(b,1);}}return this;},some:function(d,c){c=(c)?c:this;for(var b=0,a=this.length;b<a;b++){if(d.call(c,this[b],b,this)){return true;}}return false;},unique:function(){var b=[];for(var c=0,a=this.length;c<a;c++){if(b.indexOf(this[c])==-1){b.push(this[c]);}}return b;}});Array.alias("forEach","each");function Hash(b){if(typeOf(b)=="hash"){object=unlink(b.getClean());}for(var a in b){this[a]=b[a];}return this;}Hash.implement({add:function(a,b){if(this.hasOwnProperty(a)===false){this[a]=b;}return this;},clone:function(){var a={};for(var b in this){if(this.hasOwnProperty(b)){a[b]=this[b];}}return new Hash(a);},combine:function(b){for(var a in b){if(this.hasOwnProperty(a)===false){this[a]=b[a];}}return this;},empty:function(){for(var a in this){if(this.hasOwnProperty(a)){delete this[a];}}return this;},every:function(b,a){a=(a)?a:this;for(var c in this){if(this.hasOwnProperty(c)){if(!b.call(a,this[c],c,this)){return false;}}}return true;},extend:function(b){for(var a in b){this[a]=b[a];}return this;},forEach:function(b,a){a=(a)?a:this;for(var c in this){if(this.hasOwnProperty(c)){b.call(a,this[c],c,this);}}},filter:function(c,b){b=(b)?b:this;var a=new Hash();for(var d in this){if(this.hasOwnProperty(d)){if(c.call(b,this[d],d,this)){a.set(d,this[d]);}}}return a;},get:function(d){if(d.indexOf(".")==-1){if(this.hasOwnProperty(d)){return this[d];}else{return null;}}var e=d.split(".");if(this.hasOwnProperty(e[0])){var b=this[e[0]];}else{return null;}for(var c=1,a=e.length;c<a;c++){if(b.hasOwnProperty(e[c])){b=b[e[c]];}else{return null;}}return b;},getClean:function(){var a={};for(var b in this){if(this.hasOwnProperty(b)){if(typeOf(this[b])=="hash"){a[b]=this[b].getClean();}else{a[b]=this[b];}}}return a;},getKeys:function(){var a=[];for(var b in this){if(this.hasOwnProperty(b)){a.push(b);}}return a;},getValues:function(){var a=[];for(var b in this){if(this.hasOwnProperty(b)){a.push(this[b]);}}return a;},hasKey:function(a){if(this.hasOwnProperty(a)){return true;}return false;},hasValue:function(a){for(var b in this){if(this.hasOwnProperty(b)){if(this[b]==a){return true;}}}return false;},keyOf:function(a){for(var b in this){if(this.hasOwnProperty(b)){if(this[b]==a){return b;}}}return false;},keysOf:function(b){var a=[];for(var c in this){if(this.hasOwnProperty(c)){if(this[c]==b){a.push(c);}}}if(a.length>0){return a;}return false;},length:function(){var a=0;for(var b in this){if(this.hasOwnProperty(b)){a++;}}return a;},map:function(c,b){b=(b)?b:this;var a=new Hash();for(var d in this){if(this.hasOwnProperty(d)){a.set(d,c.call(b,this[d],d,this));}}return a;},remove:function(a){if(this.hasOwnProperty(a)){delete this[a];}return this;},removeObject:function(b){for(var a in this){if(this.hasOwnProperty(a)){if(this[a]==b){delete this[a];}}}return this;},set:function(a,b){this[a]=b;},some:function(b,a){a=(a)?a:this;for(var c in this){if(this.hasOwnProperty(c)){if(b.call(a,this[c],c,this)){return true;}}}return false;}});Hash.alias("forEach","each");Number.implement({limit:function(b,a){if(this<b){return b;}else{if(this>a){return a;}else{return this;}}}});String.implement({camelCase:function(){var d=this.split("-");if(d.length==1){return d[0];}var e=d[0];for(var b=1,a=d.length;b<a;b++){var c=d[b];e+=c.charAt(0).toUpperCase()+c.substring(1);}return e;},capitalize:function(){var e=this.split(" ");var a="";for(var c=0,b=e.length;c<b;c++){var d=e[c];a+=d.charAt(0).toUpperCase()+d.substring(1)+" ";}return a.substring(0,this.length);},hyphenate:function(){var c=this.charAt(0);for(var d=1,a=this.length;d<a;d++){var b=this.charAt(d);if(/[A-Z]/.test(b)){c+="-"+b.toLowerCase();}else{c+=b;}}return c;},stripTags:function(){return this.replace(/<\/?[^>]+>/gi,"");},toFloat:function(){return parseFloat(this);},toInt:function(){return parseInt(this,10);},supplant:function(a){return this.replace(/{([^{}]*)}/g,function(d,c){var e=a[c];return typeof e==="string"||typeof e==="number"?e:d;});},trim:function(){return this.replace(/^\s*(\S*(\s+\S+)*)\s*$/,"1$");}});Function.implement({bind:function(b,a){var c=this;a=(typeOf(a)=="array")?a:[a];return function(){c.apply(b,a);};},delay:function(d,g,c){var h=this;var e=typeOf(g);var f,b;if(e=="array"){f=this;b=g;}else{f=(g)?g:this;b=(c)?c:[];}return(setTimeout(function(){h.apply(f,b);},d));},periodical:function(d,g,c){var h=this;var e=typeOf(g);var f,b;if(e=="array"){f=this;b=g;}else{f=(g)?g:this;b=(c)?c:[];}return(setInterval(function(){h.apply(f,b);},d));},extend:function(a){source=(typeof a=="function")?a.prototype:a;for(var b in source){this.prototype[b]=source.prototype[b];}return this;},implement:function(a){source=(typeof a=="function")?a.prototype:a;for(var b in source){if(this.prototype.hasOwnProperty(b)===false){this.prototype[b]=source[b];}}return this;}});