/*
---
MooTools: the javascript framework

web build:
 - http://mootools.net/core/92836a792533ee12758a1d6a39316135

packager build:
 - packager build Core/Array Core/String

copyrights:
  - [MooTools](http://mootools.net)

licenses:
  - [MIT License](http://mootools.net/license.txt)
...
*/
(function(){this.MooTools={version:"1.3",build:"a3eed692dd85050d80168ec2c708efe901bb7db3"};var n=this.typeOf=function(i){if(i==null){return"null";}if(i.$family){return i.$family();
}if(i.nodeName){if(i.nodeType==1){return"element";}if(i.nodeType==3){return(/\S/).test(i.nodeValue)?"textnode":"whitespace";}}else{if(typeof i.length=="number"){if(i.callee){return"arguments";
}if("item" in i){return"collection";}}}return typeof i;};var h=this.instanceOf=function(s,i){if(s==null){return false;}var r=s.$constructor||s.constructor;
while(r){if(r===i){return true;}r=r.parent;}return s instanceof i;};var f=this.Function;var o=true;for(var j in {toString:1}){o=null;}if(o){o=["hasOwnProperty","valueOf","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","constructor"];
}f.prototype.overloadSetter=function(r){var i=this;return function(t,s){if(t==null){return this;}if(r||typeof t!="string"){for(var u in t){i.call(this,u,t[u]);
}if(o){for(var v=o.length;v--;){u=o[v];if(t.hasOwnProperty(u)){i.call(this,u,t[u]);}}}}else{i.call(this,t,s);}return this;};};f.prototype.overloadGetter=function(r){var i=this;
return function(t){var u,s;if(r||typeof t!="string"){u=t;}else{if(arguments.length>1){u=arguments;}}if(u){s={};for(var v=0;v<u.length;v++){s[u[v]]=i.call(this,u[v]);
}}else{s=i.call(this,t);}return s;};};f.prototype.extend=function(i,r){this[i]=r;}.overloadSetter();f.prototype.implement=function(i,r){this.prototype[i]=r;
}.overloadSetter();var m=Array.prototype.slice;f.from=function(i){return(n(i)=="function")?i:function(){return i;};};Array.from=function(i){if(i==null){return[];
}return(a.isEnumerable(i)&&typeof i!="string")?(n(i)=="array")?i:m.call(i):[i];};Number.from=function(r){var i=parseFloat(r);return isFinite(i)?i:null;
};String.from=function(i){return i+"";};f.implement({hide:function(){this.$hidden=true;return this;},protect:function(){this.$protected=true;return this;
}});var a=this.Type=function(t,s){if(t){var r=t.toLowerCase();var i=function(u){return(n(u)==r);};a["is"+t]=i;if(s!=null){s.prototype.$family=(function(){return r;
}).hide();}}if(s==null){return null;}s.extend(this);s.$constructor=a;s.prototype.$constructor=s;return s;};var e=Object.prototype.toString;a.isEnumerable=function(i){return(i!=null&&typeof i.length=="number"&&e.call(i)!="[object Function]");
};var p={};var q=function(i){var r=n(i.prototype);return p[r]||(p[r]=[]);};var b=function(s,w){if(w&&w.$hidden){return this;}var r=q(this);for(var t=0;
t<r.length;t++){var v=r[t];if(n(v)=="type"){b.call(v,s,w);}else{v.call(this,s,w);}}var u=this.prototype[s];if(u==null||!u.$protected){this.prototype[s]=w;
}if(this[s]==null&&n(w)=="function"){l.call(this,s,function(i){return w.apply(i,m.call(arguments,1));});}return this;};var l=function(i,s){if(s&&s.$hidden){return this;
}var r=this[i];if(r==null||!r.$protected){this[i]=s;}return this;};a.implement({implement:b.overloadSetter(),extend:l.overloadSetter(),alias:function(i,r){b.call(this,i,this.prototype[r]);
}.overloadSetter(),mirror:function(i){q(this).push(i);return this;}});new a("Type",a);var d=function(r,v,t){var s=(v!=Object),z=v.prototype;if(s){v=new a(r,v);
}for(var w=0,u=t.length;w<u;w++){var A=t[w],y=v[A],x=z[A];if(y){y.protect();}if(s&&x){delete z[A];z[A]=x.protect();}}if(s){v.implement(z);}return d;};d("String",String,["charAt","charCodeAt","concat","indexOf","lastIndexOf","match","quote","replace","search","slice","split","substr","substring","toLowerCase","toUpperCase"])("Array",Array,["pop","push","reverse","shift","sort","splice","unshift","concat","join","slice","indexOf","lastIndexOf","filter","forEach","every","map","some","reduce","reduceRight"])("Number",Number,["toExponential","toFixed","toLocaleString","toPrecision"])("Function",f,["apply","call","bind"])("RegExp",RegExp,["exec","test"])("Object",Object,["create","defineProperty","defineProperties","keys","getPrototypeOf","getOwnPropertyDescriptor","getOwnPropertyNames","preventExtensions","isExtensible","seal","isSealed","freeze","isFrozen"])("Date",Date,["now"]);
Object.extend=l.overloadSetter();Date.extend("now",function(){return +(new Date);});new a("Boolean",Boolean);Number.prototype.$family=function(){return isFinite(this)?"number":"null";
}.hide();Number.extend("random",function(r,i){return Math.floor(Math.random()*(i-r+1)+r);});Object.extend("forEach",function(i,s,t){for(var r in i){if(i.hasOwnProperty(r)){s.call(t,i[r],r,i);
}}});Object.each=Object.forEach;Array.implement({forEach:function(t,u){for(var s=0,r=this.length;s<r;s++){if(s in this){t.call(u,this[s],s,this);}}},each:function(i,r){Array.forEach(this,i,r);
return this;}});var k=function(i){switch(n(i)){case"array":return i.clone();case"object":return Object.clone(i);default:return i;}};Array.implement("clone",function(){var r=this.length,s=new Array(r);
while(r--){s[r]=k(this[r]);}return s;});var g=function(r,i,s){switch(n(s)){case"object":if(n(r[i])=="object"){Object.merge(r[i],s);}else{r[i]=Object.clone(s);
}break;case"array":r[i]=s.clone();break;default:r[i]=s;}return r;};Object.extend({merge:function(y,t,s){if(n(t)=="string"){return g(y,t,s);}for(var x=1,r=arguments.length;
x<r;x++){var u=arguments[x];for(var w in u){g(y,w,u[w]);}}return y;},clone:function(i){var s={};for(var r in i){s[r]=k(i[r]);}return s;},append:function(v){for(var u=1,s=arguments.length;
u<s;u++){var r=arguments[u]||{};for(var t in r){v[t]=r[t];}}return v;}});["Object","WhiteSpace","TextNode","Collection","Arguments"].each(function(i){new a(i);
});var c=Date.now();String.extend("uniqueID",function(){return(c++).toString(36);});})();Array.implement({invoke:function(a){var b=Array.slice(arguments,1);
return this.map(function(c){return c[a].apply(c,b);});},every:function(c,d){for(var b=0,a=this.length;b<a;b++){if((b in this)&&!c.call(d,this[b],b,this)){return false;
}}return true;},filter:function(d,e){var c=[];for(var b=0,a=this.length;b<a;b++){if((b in this)&&d.call(e,this[b],b,this)){c.push(this[b]);}}return c;},clean:function(){return this.filter(function(a){return a!=null;
});},indexOf:function(c,d){var a=this.length;for(var b=(d<0)?Math.max(0,a+d):d||0;b<a;b++){if(this[b]===c){return b;}}return -1;},map:function(d,e){var c=[];
for(var b=0,a=this.length;b<a;b++){if(b in this){c[b]=d.call(e,this[b],b,this);}}return c;},some:function(c,d){for(var b=0,a=this.length;b<a;b++){if((b in this)&&c.call(d,this[b],b,this)){return true;
}}return false;},associate:function(c){var d={},b=Math.min(this.length,c.length);for(var a=0;a<b;a++){d[c[a]]=this[a];}return d;},link:function(c){var a={};
for(var e=0,b=this.length;e<b;e++){for(var d in c){if(c[d](this[e])){a[d]=this[e];delete c[d];break;}}}return a;},contains:function(a,b){return this.indexOf(a,b)!=-1;
},append:function(a){this.push.apply(this,a);return this;},getLast:function(){return(this.length)?this[this.length-1]:null;},getRandom:function(){return(this.length)?this[Number.random(0,this.length-1)]:null;
},include:function(a){if(!this.contains(a)){this.push(a);}return this;},combine:function(c){for(var b=0,a=c.length;b<a;b++){this.include(c[b]);}return this;
},erase:function(b){for(var a=this.length;a--;){if(this[a]===b){this.splice(a,1);}}return this;},empty:function(){this.length=0;return this;},flatten:function(){var d=[];
for(var b=0,a=this.length;b<a;b++){var c=typeOf(this[b]);if(c=="null"){continue;}d=d.concat((c=="array"||c=="collection"||c=="arguments"||instanceOf(this[b],Array))?Array.flatten(this[b]):this[b]);
}return d;},pick:function(){for(var b=0,a=this.length;b<a;b++){if(this[b]!=null){return this[b];}}return null;},hexToRgb:function(b){if(this.length!=3){return null;
}var a=this.map(function(c){if(c.length==1){c+=c;}return c.toInt(16);});return(b)?a:"rgb("+a+")";},rgbToHex:function(d){if(this.length<3){return null;}if(this.length==4&&this[3]==0&&!d){return"transparent";
}var b=[];for(var a=0;a<3;a++){var c=(this[a]-0).toString(16);b.push((c.length==1)?"0"+c:c);}return(d)?b:"#"+b.join("");}});String.implement({test:function(a,b){return((typeOf(a)=="regexp")?a:new RegExp(""+a,b)).test(this);
},contains:function(a,b){return(b)?(b+this+b).indexOf(b+a+b)>-1:this.indexOf(a)>-1;},trim:function(){return this.replace(/^\s+|\s+$/g,"");},clean:function(){return this.replace(/\s+/g," ").trim();
},camelCase:function(){return this.replace(/-\D/g,function(a){return a.charAt(1).toUpperCase();});},hyphenate:function(){return this.replace(/[A-Z]/g,function(a){return("-"+a.charAt(0).toLowerCase());
});},capitalize:function(){return this.replace(/\b[a-z]/g,function(a){return a.toUpperCase();});},escapeRegExp:function(){return this.replace(/([-.*+?^${}()|[\]\/\\])/g,"\\$1");
},toInt:function(a){return parseInt(this,a||10);},toFloat:function(){return parseFloat(this);},hexToRgb:function(b){var a=this.match(/^#?(\w{1,2})(\w{1,2})(\w{1,2})$/);
return(a)?a.slice(1).hexToRgb(b):null;},rgbToHex:function(b){var a=this.match(/\d{1,3}/g);return(a)?a.rgbToHex(b):null;},substitute:function(a,b){return this.replace(b||(/\\?\{([^{}]+)\}/g),function(d,c){if(d.charAt(0)=="\\"){return d.slice(1);
}return(a[c]!=null)?a[c]:"";});}});

// MooTools: the javascript framework.
// Load this file's selection again by visiting: http://mootools.net/more/f0a7dbca6fb717ef78f4d62f62b6439f 
// Or build this file again with packager using: packager build More/Array.Extras
/*
---
copyrights:
  - [MooTools](http://mootools.net)

licenses:
  - [MIT License](http://mootools.net/license.txt)
...
*/
Array.implement({min:function(){return Math.min.apply(null,this);},max:function(){return Math.max.apply(null,this);},average:function(){return this.length?this.sum()/this.length:0;
},sum:function(){var a=0,b=this.length;if(b){while(b--){a+=this[b];}}return a;},unique:function(){return[].combine(this);},shuffle:function(){for(var b=this.length;
b&&--b;){var a=this[b],c=Math.floor(Math.random()*(b+1));this[b]=this[c];this[c]=a;}return this;},reduce:function(c,d){var e;for(var b=0,a=this.length;
b<a;b++){if(b in this){d=d===e?this[b]:c.call(null,d,this[b],b,this);}}return d;},reduceRight:function(b,c){var a=this.length,d;while(a--){if(a in this){c=c===d?this[a]:b.call(null,c,this[a],a,this);
}}return c;}});
