ผู้ใช้:Pitt/iScript/base2.js

จากวิกิพีเดีย สารานุกรมเสรี

หมายเหตุ: หลังเผยแพร่ คุณอาจต้องล้างแคชเว็บเบราว์เซอร์ของคุณเพื่อดูการเปลี่ยนแปลง

  • ไฟร์ฟอกซ์ / ซาฟารี: กด Shift ค้างขณะคลิก Reload หรือกด Ctrl-F5 หรือ Ctrl-R (⌘-R บนแมค)
  • กูเกิล โครม: กด Ctrl-Shift-R (⌘-Shift-R บนแมค)
  • อินเทอร์เน็ตเอกซ์พลอเรอร์ และ Edge: กด Ctrl ค้างขณะคลิก Refresh หรือกด Ctrl-F5
  • โอเปร่า: กด Ctrl-F5
// ==============================================================
// สคริปต์จัดให้: base2 module
//
// 2006-2008, Jutiphan Mongkolsuthree
// Certain functions are copyrighted by their
// respective copyright holders
//
// Created: 21/3/2008
// Replaced: none
// ==============================================================
// timestamp: Sun, 06 Jan 2008 18:17:45
/*
  base2 - copyright 2007-2008, Dean Edwards
  http://code.google.com/p/base2/
  http://www.opensource.org/licenses/mit-license.php
  
  Contributors:
    Doeke Zanstra
*/
/* <pre><nowiki> */
var base2={name:"base2",version:"1.0 (beta 2)",exports:"Base,Package,Abstract,Module,Enumerable,Map,Collection,RegGrp,"+"assert,assertArity,assertType,assignID,copy,detect,extend,"+"forEach,format,global,instanceOf,match,rescape,slice,trim,typeOf,"+"I,K,Undefined,Null,True,False,bind,delegate,flip,not,unbind",global:this,detect:new function(_){var global=_;var jscript=NaN/*@cc_on||@_jscript_version@*/;var java=_.java?true:false;if(_.navigator){var MSIE=/MSIE[\d.]+/g;var element=document.createElement("span");var userAgent=navigator.userAgent.replace(/([a-z])[\s\/](\d)/gi,"$1$2");if(!jscript)userAgent=userAgent.replace(MSIE,"");if(MSIE.test(userAgent))userAgent=userAgent.match(MSIE)[0]+" "+userAgent.replace(MSIE,"");userAgent=navigator.platform+" "+userAgent;java&=navigator.javaEnabled()}return function(expression){var r=false;var not=expression.charAt(0)=="!";if(not)expression=expression.slice(1);if(expression.charAt(0)=="("){try{eval("r=!!"+expression)}catch(e){}}else{r=new RegExp("("+expression+")","i").test(userAgent)}return!!(not^r)}}(this)};new function(_){var _namespace="function base(o,a){return o.base.apply(o,a)};";eval(_namespace);var detect=base2.detect;var Undefined=K(),Null=K(null),True=K(true),False=K(false);var _FORMAT=/%([1-9])/g;var _LTRIM=/^\s\s*/;var _RTRIM=/\s\s*$/;var _RESCAPE=/([\/()[\]{}|*+-.,^$?\\])/g;var _BASE=/eval/.test(detect)?/\bbase\s*\(/:/.*/;var _HIDDEN=["constructor","toString","valueOf"];var _MSIE_NATIVE_FUNCTION=detect("(jscript)")?new RegExp("^"+rescape(isNaN).replace(/isNaN/,"\\w+")+"$"):{test:False};var _counter=1;var _slice=Array.prototype.slice;var slice=Array.slice||function(array){return _slice.apply(array,_slice.call(arguments,1))};_Function_forEach();var _subclass=function(_instance,_static){base2.__prototyping=this.prototype;var _prototype=new this;extend(_prototype,_instance);delete base2.__prototyping;var _constructor=_prototype.constructor;function _class(){if(!base2.__prototyping){if(this.constructor==arguments.callee||this.__constructing){this.__constructing=true;_constructor.apply(this,arguments);delete this.__constructing}else{return extend(arguments[0],_prototype)}}return this};_prototype.constructor=_class;for(var i in Base)_class[i]=this[i];_class.ancestor=this;_class.base=Undefined;_class.init=Undefined;extend(_class,_static);_class.prototype=_prototype;_class.init();return _class};var Base=_subclass.call(Object,{constructor:function(){if(arguments.length>0){this.extend(arguments[0])}},base:function(){},extend:delegate(extend)},Base={ancestorOf:delegate(_ancestorOf),extend:_subclass,forEach:delegate(_Function_forEach),implement:function(source){if(typeof source=="function"){if(_ancestorOf(Base,source)){source(this.prototype)}}else{extend(this.prototype,source)}return this}});var Package=Base.extend({constructor:function(_private,_public){this.extend(_public);if(this.init)this.init();if(this.name!="base2"){if(!this.parent)this.parent=base2;this.parent.addName(this.name,this);this.namespace=format("var %1=%2;",this.name,String(this).slice(1,-1))}var LIST=/[^\s,]+/g;if(_private){_private.imports=Array2.reduce(this.imports.match(LIST),function(namespace,name){eval("var ns=base2."+name);assert(ns,format("Package not found: '%1'.",name),ReferenceError);return namespace+=ns.namespace},_namespace+base2.namespace+JavaScript.namespace);_private.exports=Array2.reduce(this.exports.match(LIST),function(namespace,name){var fullName=this.name+"."+name;this.namespace+="var "+name+"="+fullName+";";return namespace+="if(!"+fullName+")"+fullName+"="+name+";"},"",this)}},exports:"",imports:"",name:"",namespace:"",parent:null,addName:function(name,value){if(!this[name]){this[name]=value;this.exports+=","+name;this.namespace+=format("var %1=%2.%1;",name,this.name)}},addPackage:function(name){this.addName(name,new Package(null,{name:name,parent:this}))},toString:function(){return format("[%1]",this.parent?String(this.parent).slice(1,-1)+"."+this.name:this.name)}});var Abstract=Base.extend({constructor:function(){throw new TypeError("Class cannot be instantiated.");}});var Module=Abstract.extend(null,{extend:function(_interface,_static){var module=this.base();module.implement(this);module.implement(_interface);extend(module,_static);module.init();return module},implement:function(_interface){var module=this;if(typeof _interface=="function"){if(!_ancestorOf(_interface,module)){this.base(_interface)}if(_ancestorOf(Module,_interface)){forEach(_interface,function(property,name){if(!module[name]){if(typeof property=="function"&&property.call&&_interface.prototype[name]){property=function(){return _interface[name].apply(_interface,arguments)}}module[name]=property}})}}else{extend(module,_interface);_Function_forEach(Object,_interface,function(source,name){if(name.charAt(0)=="@"){if(detect(name.slice(1))){forEach(source,arguments.callee)}}else if(typeof source=="function"&&source.call){module.prototype[name]=function(){var args=_slice.call(arguments);args.unshift(this);return module[name].apply(module,args)}}})}return module}});var Enumerable=Module.extend({every:function(object,test,context){var result=true;try{this.forEach(object,function(value,key){result=test.call(context,value,key,object);if(!result)throw StopIteration;})}catch(error){if(error!=StopIteration)throw error;}return!!result},filter:function(object,test,context){var i=0;return this.reduce(object,function(result,value,key){if(test.call(context,value,key,object)){result[i++]=value}return result},[])},invoke:function(object,method){var args=_slice.call(arguments,2);return this.map(object,(typeof method=="function")?function(item){return(item==null)?undefined:method.apply(item,args)}:function(item){return(item==null)?undefined:item[method].apply(item,args)})},map:function(object,block,context){var result=[],i=0;this.forEach(object,function(value,key){result[i++]=block.call(context,value,key,object)});return result},pluck:function(object,key){return this.map(object,function(item){return(item==null)?undefined:item[key]})},reduce:function(object,block,result,context){var initialised=arguments.length>2;this.forEach(object,function(value,key){if(initialised){result=block.call(context,result,value,key,object)}else{result=value;initialised=true}});return result},some:function(object,test,context){return!this.every(object,not(test),context)}},{forEach:forEach});var _HASH="#";var Map=Base.extend({constructor:function(values){this.merge(values)},copy:delegate(copy),forEach:function(block,context){for(var key in this)if(key.charAt(0)==_HASH){block.call(context,this[key],key.slice(1),this)}},get:function(key){return this[_HASH+key]},getKeys:function(){return this.map(flip(I))},getValues:function(){return this.map(I)},has:function(key){/*@cc_on@*//*@if(@_jscript_version<5.5)return $Legacy.has(this,_HASH+key);@else@*/return _HASH+key in this;/*@end@*/},merge:function(values){var put=flip(this.put);forEach(arguments,function(values){forEach(values,put,this)},this);return this},remove:function(key){delete this[_HASH+key]},put:function(key,value){if(arguments.length==1)value=key;this[_HASH+key]=value},size:function(){var size=0;for(var key in this)if(key.charAt(0)==_HASH)size++;return size},union:function(values){return this.merge.apply(this.copy(),arguments)}});Map.implement(Enumerable);var _KEYS="~";var Collection=Map.extend({constructor:function(values){this[_KEYS]=new Array2;this.base(values)},add:function(key,item){assert(!this.has(key),"Duplicate key '"+key+"'.");this.put.apply(this,arguments)},copy:function(){var copy=this.base();copy[_KEYS]=this[_KEYS].copy();return copy},forEach:function(block,context){var keys=this[_KEYS];var length=keys.length;for(var i=0;i<length;i++){block.call(context,this[_HASH+keys[i]],keys[i],this)}},getAt:function(index){if(index<0)index+=this[_KEYS].length;var key=this[_KEYS][index];return(key===undefined)?undefined:this[_HASH+key]},getKeys:function(){return this[_KEYS].concat()},indexOf:function(key){return this[_KEYS].indexOf(String(key))},insertAt:function(index,key,item){assert(Math.abs(index)<this[_KEYS].length,"Index out of bounds.");assert(!this.has(key),"Duplicate key '"+key+"'.");this[_KEYS].insertAt(index,String(key));this[_HASH+key]==null;this.put.apply(this,_slice.call(arguments,1))},item:function(keyOrIndex){return this[typeof keyOrIndex=="number"?"getAt":"get"](keyOrIndex)},put:function(key,item){if(arguments.length==1)item=key;if(!this.has(key)){this[_KEYS].push(String(key))}var klass=this.constructor;if(klass.Item&&!instanceOf(item,klass.Item)){item=klass.create.apply(klass,arguments)}this[_HASH+key]=item},putAt:function(index,item){assert(Math.abs(index)<this[_KEYS].length,"Index out of bounds.");arguments[0]=this[_KEYS].item(index);this.put.apply(this,arguments)},remove:function(key){if(this.has(key)){this[_KEYS].remove(String(key));delete this[_HASH+key]}},removeAt:function(index){var key=this[_KEYS].removeAt(index);delete this[_HASH+key]},reverse:function(){this[_KEYS].reverse();return this},size:function(){return this[_KEYS].length},sort:function(compare){if(compare){var self=this;this[_KEYS].sort(function(key1,key2){return compare(self[_HASH+key1],self[_HASH+key2],key1,key2)})}else this[_KEYS].sort();return this},toString:function(){return String(this[_KEYS])}},{Item:null,create:function(key,item){return this.Item?new this.Item(key,item):item},extend:function(_instance,_static){var klass=this.base(_instance);klass.create=this.create;extend(klass,_static);if(!klass.Item){klass.Item=this.Item}else if(typeof klass.Item!="function"){klass.Item=(this.Item||Base).extend(klass.Item)}klass.init();return klass}});var _RG_BACK_REF=/\\(\d+)/g,_RG_ESCAPE_CHARS=/\\./g,_RG_ESCAPE_BRACKETS=/\(\?[:=!]|\[[^\]]+\]/g,_RG_BRACKETS=/\(/g,_RG_LOOKUP=/\$(\d+)/,_RG_LOOKUP_SIMPLE=/^\$\d+$/;var RegGrp=Collection.extend({constructor:function(values,flags){this.base(values);if(typeof flags=="string"){this.global=/g/.test(flags);this.ignoreCase=/i/.test(flags)}},global:true,ignoreCase:false,exec:function(string,replacement){var flags=(this.global?"g":"")+(this.ignoreCase?"i":"");string=String(string)+"";if(arguments.length==1){var self=this;var keys=this[_KEYS];replacement=function(match){if(match){var item,offset=1,i=0;while((item=self[_HASH+keys[i++]])){var next=offset+item.length+1;if(arguments[offset]){var replacement=item.replacement;switch(typeof replacement){case"function":return replacement.apply(self,_slice.call(arguments,offset,next));case"number":return arguments[offset+replacement];default:return replacement}}offset=next}}return""}}return string.replace(new RegExp(this,flags),replacement)},insertAt:function(index,expression,replacement){if(instanceOf(expression,RegExp)){arguments[1]=expression.source}return base(this,arguments)},test:function(string){return this.exec(string)!=string},toString:function(){var length=0;return"("+this.map(function(item){var ref=String(item).replace(_RG_BACK_REF,function(match,index){return"\\"+(1+Number(index)+length)});length+=item.length+1;return ref}).join(")|(")+")"}},{IGNORE:"$0",init:function(){forEach("add,get,has,put,remove".split(","),function(name){_override(this,name,function(expression){if(instanceOf(expression,RegExp)){arguments[0]=expression.source}return base(this,arguments)})},this.prototype)},Item:{constructor:function(expression,replacement){if(typeof replacement=="number")replacement=String(replacement);else if(replacement==null)replacement="";if(typeof replacement=="string"&&_RG_LOOKUP.test(replacement)){if(_RG_LOOKUP_SIMPLE.test(replacement)){replacement=parseInt(replacement.slice(1))}else{var Q=/'/.test(replacement.replace(/\\./g,""))?'"':"'";replacement=replacement.replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/\$(\d+)/g,Q+"+(arguments[$1]||"+Q+Q+")+"+Q);replacement=new Function("return "+Q+replacement.replace(/(['"])\1\+(.*)\+\1\1$/,"$1")+Q)}}this.length=RegGrp.count(expression);this.replacement=replacement;this.toString=K(String(expression))},length:0,replacement:""},count:function(expression){expression=String(expression).replace(_RG_ESCAPE_CHARS,"").replace(_RG_ESCAPE_BRACKETS,"");return match(expression,_RG_BRACKETS).length}});var JavaScript={name:"JavaScript",version:base2.version,exports:"Array2,Date2,String2",namespace:"",bind:function(host){forEach(this.exports.match(/\w+/g),function(name2){var name=name2.slice(0,-1);extend(host[name],this[name2]);this[name2](host[name].prototype)},this);return this}};if((new Date).getYear()>1900){Date.prototype.getYear=function(){return this.getFullYear()-1900};Date.prototype.setYear=function(year){return this.setFullYear(year+1900)}}Function.prototype.prototype={};if("".replace(/^/,K("$$"))=="$"){extend(String.prototype,"replace",function(expression,replacement){if(typeof replacement=="function"){var fn=replacement;replacement=function(){return String(fn.apply(null,arguments)).split("$").join("$$")}}return this.base(expression,replacement)})}var Array2=_createObject2(Array,Array,"concat,join,pop,push,reverse,shift,slice,sort,splice,unshift",[Enumerable,{combine:function(keys,values){if(!values)values=keys;return this.reduce(keys,function(hash,key,index){hash[key]=values[index];return hash},{})},contains:function(array,item){return this.indexOf(array,item)!=-1},copy:function(array){var copy=_slice.call(array);if(!copy.swap)this(copy);return copy},flatten:function(array){var length=0;return this.reduce(array,function(result,item){if(this.like(item)){this.reduce(item,arguments.callee,result,this)}else{result[length++]=item}return result},[],this)},forEach:_Array_forEach,indexOf:function(array,item,fromIndex){var length=array.length;if(fromIndex==null){fromIndex=0}else if(fromIndex<0){fromIndex=Math.max(0,length+fromIndex)}for(var i=fromIndex;i<length;i++){if(array[i]===item)return i}return-1},insertAt:function(array,index,item){this.splice(array,index,0,item);return item},item:function(array,index){if(index<0)index+=array.length;return array[index]},lastIndexOf:function(array,item,fromIndex){var length=array.length;if(fromIndex==null){fromIndex=length-1}else if(fromIndex<0){fromIndex=Math.max(0,length+fromIndex)}for(var i=fromIndex;i>=0;i--){if(array[i]===item)return i}return-1},map:function(array,block,context){var result=[];this.forEach(array,function(item,index){result[index]=block.call(context,item,index,array)});return result},remove:function(array,item){var index=this.indexOf(array,item);if(index!=-1)this.removeAt(array,index);return item},removeAt:function(array,index){return this.splice(array,index,1)},swap:function(array,index1,index2){if(index1<0)index1+=array.length;if(index2<0)index2+=array.length;var temp=array[index1];array[index1]=array[index2];array[index2]=temp;return array}}]);Array2.reduce=Enumerable.reduce;Array2.like=function(object){return!!(object&&typeof object=="object"&&typeof object.length=="number")};var _DATE_PATTERN=/^((-\d+|\d{4,})(-(\d{2})(-(\d{2}))?)?)?T((\d{2})(:(\d{2})(:(\d{2})(\.(\d{1,3})(\d)?\d*)?)?)?)?(([+-])(\d{2})(:(\d{2}))?|Z)?$/;var _DATE_PARTS={FullYear:2,Month:4,Date:6,Hours:8,Minutes:10,Seconds:12,Milliseconds:14};var _TIMEZONE_PARTS={Hectomicroseconds:15,UTC:16,Sign:17,Hours:18,Minutes:20};var _TRIM_ZEROES=/(((00)?:0+)?:0+)?\.0+$/;var _TRIM_TIMEZONE=/(T[0-9:.]+)$/;var Date2=_createObject2(Date,function(yy,mm,dd,h,m,s,ms){switch(arguments.length){case 0:return new Date;case 1:return new Date(yy);default:return new Date(yy,mm,arguments.length==2?1:dd,h||0,m||0,s||0,ms||0)}},"",[{toISOString:function(date){var string="####-##-##T##:##:##.###";for(var part in _DATE_PARTS){string=string.replace(/#+/,function(digits){var value=date["getUTC"+part]();if(part=="Month")value++;return("000"+value).slice(-digits.length)})}return string.replace(_TRIM_ZEROES,"").replace(_TRIM_TIMEZONE,"$1Z")}}]);Date2.now=function(){return(new Date).valueOf()};Date2.parse=function(string,defaultDate){if(arguments.length>1){assertType(defaultDate,"number","defaultDate should be of type 'number'.")}var match=String(string).match(_DATE_PATTERN);if(match){if(match[_DATE_PARTS.Month])match[_DATE_PARTS.Month]--;if(match[_TIMEZONE_PARTS.Hectomicroseconds]>=5)match[_DATE_PARTS.Milliseconds]++;var date=new Date(defaultDate||0);var prefix=match[_TIMEZONE_PARTS.UTC]||match[_TIMEZONE_PARTS.Hours]?"UTC":"";for(var part in _DATE_PARTS){var value=match[_DATE_PARTS[part]];if(!value)continue;date["set"+prefix+part](value);if(date["get"+prefix+part]()!=match[_DATE_PARTS[part]]){return NaN}}if(match[_TIMEZONE_PARTS.Hours]){var Hours=Number(match[_TIMEZONE_PARTS.Sign]+match[_TIMEZONE_PARTS.Hours]);var Minutes=Number(match[_TIMEZONE_PARTS.Sign]+(match[_TIMEZONE_PARTS.Minutes]||0));date.setUTCMinutes(date.getUTCMinutes()+(Hours*60)+Minutes)}return date.valueOf()}else{return Date.parse(string)}};var String2=_createObject2(String,function(string){return new String(arguments.length==0?"":string)},"charAt,charCodeAt,concat,indexOf,lastIndexOf,match,replace,search,slice,split,substr,substring,toLowerCase,toUpperCase",[{trim:trim}]);function _createObject2(Native,constructor,generics,extensions){var INative=Module.extend();forEach(generics.match(/\w+/g),function(name){INative[name]=unbind(Native.prototype[name])});forEach(extensions,INative.implement,INative);var Native2=function(){return INative(this.constructor==INative?constructor.apply(null,arguments):arguments[0])};Native2.prototype=INative.prototype;forEach(INative,function(method,name){if(Native[name]){INative[name]=Native[name];delete INative.prototype[name]}Native2[name]=INative[name]});Native2.ancestor=Object;delete Native2.extend;if(Native!=Array)delete Native2.forEach;return Native2};function extend(object,source){if(object&&source){if(arguments.length>2){var key=source;source={};source[key]=arguments[2]}var proto=(typeof source=="function"?Function:Object).prototype;var i=_HIDDEN.length,key;if(base2.__prototyping){while(key=_HIDDEN[--i]){var value=source[key];if(value!=proto[key]){if(_BASE.test(value)){_override(object,key,value)}else{object[key]=value}}}}for(key in source){if(proto[key]===undefined){var value=source[key];if(key.charAt(0)=="@"){if(detect(key.slice(1)))arguments.callee(object,value);continue}var ancestor=object[key];if(ancestor&&typeof value=="function"){if(value!=ancestor&&(!ancestor.method||!_ancestorOf(value,ancestor))){if(_BASE.test(value)){_override(object,key,value)}else{value.ancestor=ancestor;object[key]=value}}}else{object[key]=value}}}}return object};function _ancestorOf(ancestor,fn){while(fn){if(!fn.ancestor)return false;fn=fn.ancestor;if(fn==ancestor)return true}return false};function _override(object,name,method){var ancestor=object[name];var superObject=base2.__prototyping;if(superObject&&ancestor!=superObject[name])superObject=null;function _base(){var previous=this.base;this.base=superObject?superObject[name]:ancestor;var returnValue=method.apply(this,arguments);this.base=previous;return returnValue};_base.ancestor=ancestor;object[name]=_base};if(typeof StopIteration=="undefined"){StopIteration=new Error("StopIteration")}function forEach(object,block,context,fn){if(object==null)return;if(!fn){if(typeof object=="function"&&object.call){fn=Function}else if(typeof object.forEach=="function"&&object.forEach!=arguments.callee){object.forEach(block,context);return}else if(typeof object.length=="number"){_Array_forEach(object,block,context);return}}_Function_forEach(fn||Object,object,block,context)};function _Array_forEach(array,block,context){if(array==null)return;var length=array.length,i;if(typeof array=="string"){for(i=0;i<length;i++){block.call(context,array.charAt(i),i,array)}}else{for(i=0;i<length;i++){/*@cc_on@*//*@if(@_jscript_version<5.2)if($Legacy.has(array,i))@else@*/if(i in array)/*@end@*/block.call(context,array[i],i,array)}}};function _Function_forEach(fn,object,block,context){var Temp=function(){this.i=1};Temp.prototype={i:1};var count=0;for(var i in new Temp)count++;_Function_forEach=(count>1)?function(fn,object,block,context){var processed={};for(var key in object){if(!processed[key]&&fn.prototype[key]===undefined){processed[key]=true;block.call(context,object[key],key,object)}}}:function(fn,object,block,context){for(var key in object){if(fn.prototype[key]===undefined){block.call(context,object[key],key,object)}}};_Function_forEach(fn,object,block,context)};function typeOf(object){var type=typeof object;switch(type){case"object":return object===null?"null":typeof object.call=="function"||_MSIE_NATIVE_FUNCTION.test(object)?"function":type;case"function":return typeof object.call=="function"?type:"object";default:return type}};function instanceOf(object,klass){if(typeof klass!="function"){throw new TypeError("Invalid 'instanceOf' operand.");}if(object==null)return false;/*@cc_on if(typeof object.constructor!="function"){return typeOf(object)==typeof klass.prototype.valueOf()}@*//*@if(@_jscript_version<5.1)if($Legacy.instanceOf(object,klass))return true;@else@*/if(object instanceof klass)return true;/*@end@*/if(Base.ancestorOf==klass.ancestorOf)return false;if(Base.ancestorOf==object.constructor.ancestorOf)return klass==Object;switch(klass){case Array:return!!(typeof object=="object"&&object.join&&object.splice);case Function:return typeOf(object)=="function";case RegExp:return typeof object.constructor.$1=="string";case Date:return!!object.getTimezoneOffset;case String:case Number:case Boolean:return typeof object==typeof klass.prototype.valueOf();case Object:return true}return false};function assert(condition,message,ErrorClass){if(!condition){throw new(ErrorClass||Error)(message||"Assertion failed.");}};function assertArity(args,arity,message){if(arity==null)arity=args.callee.length;if(args.length<arity){throw new SyntaxError(message||"Not enough arguments.");}};function assertType(object,type,message){if(type&&(typeof type=="function"?!instanceOf(object,type):typeOf(object)!=type)){throw new TypeError(message||"Invalid type.");}};function assignID(object){if(!object.base2ID)object.base2ID="b2_"+_counter++;return object.base2ID};function copy(object){var fn=function(){};fn.prototype=object;return new fn};function format(string){var args=arguments;var pattern=new RegExp("%([1-"+arguments.length+"])","g");return String(string).replace(pattern,function(match,index){return args[index]})};function match(string,expression){return String(string).match(expression)||[]};function rescape(string){return String(string).replace(_RESCAPE,"\\$1")};function trim(string){return String(string).replace(_LTRIM,"").replace(_RTRIM,"")};function I(i){return i};function K(k){return function(){return k}};function bind(fn,context){var args=_slice.call(arguments,2);return args.length==0?function(){return fn.apply(context,arguments)}:function(){return fn.apply(context,args.concat.apply(args,arguments))}};function delegate(fn,context){return function(){var args=_slice.call(arguments);args.unshift(this);return fn.apply(context,args)}};function flip(fn){return function(){return fn.apply(this,Array2.swap(arguments,0,1))}};function not(fn){return function(){return!fn.apply(this,arguments)}};function unbind(fn){return function(context){return fn.apply(context,_slice.call(arguments,1))}};base2=new Package(this,base2);eval(this.exports);base2.extend=extend;forEach(Enumerable,function(method,name){if(!Module[name])base2.addName(name,bind(method,Enumerable))});JavaScript=new Package(this,JavaScript);eval(this.exports)};
/* </nowiki></pre> */