JS={extend:function(B,A){A=A||{};for(var C in A){if(B[C]===A[C]){continue}B[C]=A[C]}return B},makeFunction:function(){return function(){return this.initialize?(this.initialize.apply(this,arguments)||this):this}},makeBridge:function(A){var B=function(){};B.prototype=A.prototype;return new B},delegate:function(A,B){return function(){return this[A][B].apply(this[A],arguments)}},bind:function(){var B=JS.array(arguments),C=B.shift(),A=B.shift()||null;return function(){return C.apply(A,B.concat(JS.array(arguments)))}},callsSuper:function(A){return A.SUPER===undefined?A.SUPER=/\bcallSuper\b/.test(A.toString()):A.SUPER},mask:function(B){var A=B.toString().replace(/callSuper/g,"super");B.toString=function(){return A};return B},array:function(C){if(!C){return[]}if(C.toArray){return C.toArray()}var B=C.length,A=[];while(B--){A[B]=C[B]}return A},indexOf:function(B,C){for(var A=0,D=B.length;A