/*
 *  Aquilegia ECMAScript Library 0.4.0
 *  
 *  Copyright(C) 2007-2009 Futoshi Takeo.
 *  http://www.aquilegia.info/ael/wiki/license
 */


var Ael;Ael=(function(){var A={instanceOf:function(value,clazz){return value!==void 0&&value!==null&&value.constructor===clazz;},isString:function(value){return A.instanceOf(value,String);},isFunction:function(value){return typeof value==="function";},isArray:function(value){return A.instanceOf(value,Array)||A.isArguments(value);},isArguments:function(value){return(A.instanceOf(value,Object)||A.instanceOf(value,Array))&&A.isFunction(value.callee)&&A.instanceOf(value.length,Number);},isNoU:function(value){return value===void 0||value===null;}};(function(public_,core){public_.apply(core,public_);core.Class=core.Class(core);var clazz=core.class_();core.root=function(value,option){if(this.constructor===core.Class)
return core.call(clazz,arguments,this);if(!arguments.length)
return public_;return A.instanceOf(value,core.root)?value:core.make(value,option);};A=core.apply(core.node(core.root),A,clazz);if(RegExp.prototype.constructor!==RegExp)
RegExp.prototype.constructor=RegExp;A.package_("lang").class_("Class").prototype.initialize=core.Class;core.Class=A.lang.Class;A.constructor=core.Class.constructor=core.Class;A.lang.class_("Property").prototype.initialize=core.Property;A.lang.Property.class_("Method").prototype.initialize=core.Method;A.lang.class_("Package").prototype.initialize=core.Package;A.lang.constructor=core.Package=A.lang.Package;})({version:"0.4.0",global:this,fns:{},print:function(string){if(A().WSH){WScript.StdOut.Write(string);}else if(A().Rhino){print(string);}else{alert(string);}},inspect:function(value){if(value!==void 0&&value!==null){for(var name in value)
this.print(name+"\n");}},apply:function(value){if(!A.isNoU(value)){for(var i=1,a=arguments;i<a.length;i++){var o=a[i];if(!A.isNoU(o)){for(var p in o)
value[p]=o[p];}}}
return value;},call:function(fn,args,scope){if(A.isNoU(scope))
scope=this.global;var result;if(A.isFunction(fn.apply)){result=A.isArray(args)?fn.apply(scope,args):fn.apply(scope);}else{switch(typeof scope){case"string":case"number":case"boolean":scope=new scope.constructor(scope);}
var methodName=null;for(var i=0;void 0!==scope[(methodName="$ael"+i)];i++);scope[methodName]=fn;var code=[];if(A.isArray(args)){for(var i=0;i<args.length;i++)
code[code.length]="args["+i+"]";}
result=eval("scope[methodName]("+code.join(",")+");");if(scope===this.global||A.isNoU(scope.constructor)){scope[methodName]=void 0;}else{delete scope[methodName];}}
return result;},type:function(value){return value===void 0?void 0:value===null?null:value.constructor;},privileged:function(value){return function(v){return arguments.length?value=v:value;};}},{get:function(){var list=[];return function(id){if(!arguments.length)
return list;for(var i=0;i<list.length;i++){var c=list[i];if(c.id===id)
return c.superclass;}};}(),set:function(id,superclass){if(A.isFunction(superclass)){var c=this.get(id);if(!c){var l=this.get();c=l[l.length]={"id":id};}
c.superclass=superclass;}},chain:function(clazz,superclass){if(A.isFunction(clazz)&&A.isFunction(superclass)){if(clazz.prototype.__proto__){clazz.prototype.__proto__=superclass.prototype;}else{var f=function(){};f.prototype=superclass.prototype;clazz.prototype=new f;}
clazz.prototype.constructor=clazz;}
return clazz;},make:function(v,option){option=option||{};var core=this,c=function(){},a=core.root.metadata().ael,t=core.get(option.type===void 0?core.type(v):option.type)||a,r=new(core.chain(c,t))();r.val=function(value){if(!arguments.length)
return v;v=value;var type=core.type(v);if(type===core.root){this.val(v.val());}else if(t!==type){t=core.get(type)||a;if(c.prototype.__proto__){core.chain(c,t);}else{var proto=c.prototype;for(var p in proto)
delete proto[p];core.apply(c.prototype,t.prototype);}}
return this;};r.constructor=core.root;return r;},node:function(target,parent){var core=this;target.class_=function(option){option=A.isString(option)?{name:option}:option||{};var clazz=core.node(core.class_(option,target[option.name],target),target);for(var i=1,a=arguments,m=a.length,c=A(clazz);i<m;i++)
c.properties(a[i]);return target[option.name]=clazz;};target.package_=function(option){option=A.isString(option)?{name:option}:option||{};var r=target[option.name];if(typeof r!=="object"){r=core.node(target[option.name]=option.value||new core.Package(),target);r.constructor=core.Package;}
return r;};target.parent=function(){return parent;};return target;},class_:function(option,clazz,node){option=option||{};if(!A.instanceOf(clazz,this.Class))
clazz=new this.Class();var metadata=clazz.metadata();metadata.type=clazz;for(var p in option){if(p==="type"){metadata.type=option.type;break;}}
var superclass=this.root,ael=superclass&&superclass.metadata().ael;do{if(A.instanceOf(node,this.Class)){superclass=node;ael=this.get(node.metadata().type);break;}}while(node&&node.parent&&(node=node.parent()));var aelClass=this.chain(metadata.ael,ael),aliases=option.aliases;this.set(metadata.type,aelClass);if(A.isArray(aliases)){for(var i=0,m=aliases.length;i<m;i++)
this.set(aliases[i],aelClass);}
return this.chain(clazz,metadata.superclass=superclass);},Class:function(core){var makeProps=function(target,metadata,args){var supermeta=metadata&&metadata.superclass&&metadata.superclass.metadata();if(supermeta)
makeProps(target,supermeta,args);var props=metadata.seq,core=A();for(var i=0,m=props.length;i<m;i++){var f=props[i].val(),v=f.value;target[f.name]=A.isFunction(v)?f.keywords.init?core.call(v,args,target):v:A(v).clone(true);}};var makeClass=function(metadata){return function(){var self=this,init;if(A.isFunction(self.constructor.metadata)&&metadata===self.constructor.metadata()){makeProps(self,metadata,arguments);init=self.initialize;}else if(self.prototype){init=self.prototype.initialize;}
return init?A().call(init,arguments,self):self;};};return function(){var metadata={properties:{},seq:[],ael:function(){}},clazz=makeClass(metadata);clazz.metadata=core.privileged(metadata);clazz.constructor=core.Class;return clazz;};},Property:function(clazz,expr,value){this.clazz=clazz;this.expr=expr;this.value=value;var tokens=expr.replace(/\([^)]*\)/g,"").match(/([\w_]+)/g),len=tokens.length;this.name=tokens[len-1];tokens.length=len-1;var k=this.keywords={};for(var i=0;i<len;i++)
k[tokens[i]]=true;var prop=A(this);for(var p in k){if(A.isFunction(prop[p]))
prop[p]();}},Method:function(){return A().call(A.lang.Property.prototype.initialize,arguments,this);},Package:function(){}});(function(){var core=A(),ua=typeof navigator==="object"&&typeof navigator.userAgent==="string"?navigator.userAgent:"";core.apply(core,{IE4:ua.indexOf("MSIE 4.")!==-1,KJS:ua.indexOf("KHTML")!==-1||ua.indexOf("Safari")!==-1,AIR:ua.indexOf("AdobeAIR")!==-1,Rhino:typeof Packages==="function"&&(""+Packages).indexOf("JavaPackage")!==-1,WSH:typeof WScript==="object"});})();A.lang.Class.metadata().ael.prototype.properties=function(){var clazz=this.val(),a=arguments;if(a.length){var metadata=clazz.metadata();for(var i=0,m=a.length;i<m;i++){var props=a[i]||{};for(var expr in props){var value=props[expr];var fc=A.lang.Property;if(A.isFunction(value))
fc=fc.Method;var f=A(new fc(clazz,expr,value));if(f.val().keywords["instance"])
metadata.seq[metadata.seq.length]=f;metadata.properties[expr]=f;}}}
return clazz.metadata().properties;};A.lang.Property.metadata().ael.prototype.ael=function(){var v=this.val(),fn=v.value,n=v.name,k=v.keywords,p=v.clazz.metadata().ael.prototype,core=A();k.ael=true;if(A.isFunction(fn)){p[n]=fn;if(!k["void"]){p["_"+v.name]=function(){return this.val(core.call(fn,arguments,this));}}
if(!k["return"]){p["$"+v.name]=function(){core.call(fn,arguments,this);return this;}}}else{p[n]=fn;}};A(A.lang.Property.Method).properties({"ael void void":function(){var v=this.val(),k=v.keywords,p=v.clazz.metadata().ael.prototype,n="_"+v.name;k["void"]=true;if(k.ael&&p[n])
delete p[n];},"ael void return":function(){var v=this.val(),k=v.keywords,p=v.clazz.metadata().ael.prototype,n="$"+v.name;k["return"]=true;if(k.ael&&p[n])
delete p[n];}},{"ael void init":function(){this.val().keywords.init=true;},"ael return isInit":function(){return!!this.val().keywords.init;},"ael return isVoid":function(){return!!this.val().keywords["void"];},"ael return isReturn":function(){return!!this.val().keywords["return"];}});A(A.lang.Class).properties({"ael properties":A.lang.Class.metadata().ael.prototype.properties,"ael void inherit":function(superclass){A(this).chain(this.metadata().superclass=A(superclass));},"ael superclass":function(){return this.val().metadata().superclass;},"ael ael":function(expr){var pl=this.properties();for(var n in pl){var p=pl[n];if(p.isAel()&&p.name()===expr)
return p;}},"ael instance":function(expr){var pl=this.properties();for(var n in pl){var p=pl[n];if(p.isInstance()&&p.name()===expr)
return p;}},"ael prototype":function(expr){var pl=this.properties();for(var n in pl){var p=pl[n];if(p.isPrototype()&&p.name()===expr)
return p;}},"ael static_":function(expr){var pl=this.properties();for(var n in pl){var p=pl[n];if(p.isStatic()&&p.name()===expr)
return p;}}});A(A.lang.Property).properties({"ael void ael":A.lang.Property.metadata().ael.prototype.ael,"ael void instance":function(){this.val().keywords.instance=true;},"ael void prototype":function(){var v=this.val();v.keywords.prototype=true;v.clazz.prototype[v.name]=v.value;},"ael void static":function(){var v=this.val();v.keywords["static"]=true;v.clazz[v.name]=v.value;},"ael void get":function(){var v=this.val(),k=v.keywords,n=v.name,gn="get"+n.charAt(0).toUpperCase()+n.substring(1),c=v.clazz;k.get=true;if(k.ael){c.metadata().ael.prototype[gn]=function(v){return this.val()[n];}}
if(k.instance||k.prototype){c.prototype[gn]=function(v){return this.val()[n];}}
if(k["static"]){c[gn]=function(v){return this[n];}}},"ael void set":function(){var v=this.val(),k=v.keywords,n=v.name,sn="set"+n.charAt(0).toUpperCase()+n.substring(1),c=v.clazz;k.set=true;if(k.ael){c.metadata().ael.prototype[sn]=function(v){this.val()[n]=v;return this;}}
if(k.instance||k.prototype){c.prototype[sn]=function(v){this.val()[n]=v;return this;}}
if(k["static"]){c[sn]=function(v){this[n]=v;return this;}}},"ael name":function(){return this.val().name;},"ael return hasKeyword":function(name){return!!this.val().keywords[name];},"ael return isAel":function(){return!!this.val().keywords.ael;},"ael return isInstance":function(){return!!this.val().keywords.instance;},"ael return isPrototype":function(){return!!this.val().keywords.prototype;},"ael return isStatic":function(){return!!this.val().keywords["static"];}});A(A).properties({"static instanceOf":A.instanceOf,"static isObject":function(value){var t=typeof value;return value!==null&&(t==="object"||t==="function");},"static isBoolean":function(value){return A.instanceOf(value,Boolean);},"static isNumber":function(value){return A.instanceOf(value,Number);},"static isRegExp":function(value){return A.instanceOf(value,RegExp);},"static isString":A.isString,"static isFunction":A.isFunction,"static isNative":function(value){return A.isFunction(value)&&(value.toString().indexOf("[native code")!==-1||value.toString()==="[function]");},"static isArray":A.isArray,"static isArguments":A.isArguments,"static isNaN":function(value){return A.isNumber(value)&&isNaN(value);},"static isNull":function(value){return value===null;},"static isUndefined":function(value){return value===void 0;},"static isNoU":A.isNoU,"static namespace":arguments.callee,"prototype val":function(){return this;},"ael void apply":function(){var to=this.val();if(!A.isNoU(to)){for(var i=0,a=arguments;i<a.length;i++){var o=a[i];if(!A.isNoU(o)){for(var p in o)
to[p]=o[p];}}}
return to;},"ael void clear":function(){var v=this.val();if(A.isObject(v)){for(var p in v)
delete v[p];}},"ael clone":function(){var cloneFunction=function(fn){var src=fn.toString(),args=src.substring(src.indexOf("(")+1,src.indexOf(")")),body=src.substring(src.indexOf("{")+1,src.lastIndexOf("}"));args=args.length?args.split(","):[];body=A(body).trim("\n\r ");if(A(fn).name()==="anonymous"){args[args.length]=body;return A().call(Function,args);}
return new Function("return function("+args.join(",")+"){"+body+"};")();};return function(deep){var value=this.val(),type=typeof value;if((type!=="object"&&type!=="function")||(A().AIR&&type==="function"))
return value;var c=value.constructor,cp=c.prototype,v=value.valueOf,t=value.toString;if(value.valueOf!==cp.valueOf)
delete value.valueOf;if(value.toString!==cp.toString)
delete value.toString;var clone=null;switch(c){case Object:clone={};break;case Array:clone=[];break;case Function:if(A.isNative(value))
return value;clone=cloneFunction(value);break;case Boolean:case Number:case String:clone=new c(value.valueOf());break;default:if(type==="object"){clone={};}else{if(A.isNative(value))
return value;clone=cloneFunction(value);A(clone).chain(value);}
clone.constructor=A(c).clone();}
if(deep!=true){A().apply(clone,value);}else if(A.isFunction(value)){for(var p in value)
clone[p]=A(value[p]).clone(p!=="prototype");}else{for(var p in value)
clone[p]=A(value[p]).clone(true);}
if(t!==value.toString){value.toString=t;clone.toString=A(t).clone(true);}
if(v!==value.valueOf){value.valueOf=v;clone.valueOf=A(v).clone(true);}
return clone;};}(),"ael compare":function(value2){var value1=this.val(),type1=typeof value1,type2=typeof value2;if(type1<type2){return-1;}else if(type1>type2){return 1;}
switch(type1){case"undefined":return 0;case"object":var isNull1=A.isNull(value1),isNull2=A.isNull(value2);if(isNull1||isNull2)
return isNull1===isNull2?0:isNull1?-1:1;var result=A(value1.constructor).compare(value2.constructor);if(result!==0)return result;break;case"function":value1=value1.toString();value2=value2.toString();break;case"number":var isNaN1=isNaN(value1),isNaN2=isNaN(value2);if(isNaN1||isNaN2)
return isNaN1===isNaN2?0:isNaN1?1:-1;break;}
return value1<value2?-1:value1>value2?1:0;},"ael copy":function(){return A(this.val());},"ael void each":function(fn){var i=0,v=this.val(),core=A();if(!A.isNoU(v)&&A.isFunction(fn)){for(var p in v){if(fn(v[p],i,p))
break;i++;}}},"ael equals":function(value2){var value1=this.val();return value1===value2||(A.isNaN(value1)&&A.isNaN(value2));},"ael keys":function(){var r=[],v=this.val();if(!A.isNoU(v)){for(var p in v)
r[r.length]=p;}
return r;},"ael hasOwn":function(name){var object=this.val(),KJS=A().KJS;if(A.isNoU(object)||!A.isString(name))return false;if(A.isFunction(object.hasOwnProperty)&&(!KJS||(KJS&&!A.isArray(object))))
return object.hasOwnProperty(name);var c=object.constructor;if(A.isNoU(c))
return!A.isNoU(object[name]);if(object[name]!==c.prototype[name])
return true;var p=c.prototype;c.prototype=void 0;for(var p in object){if(p===name){c.prototype=p;return true;}}
c.prototype=p;return KJS&&A.isArray(object)&&this.within(parseInt(name));},"ael return toArray":function(include){var v=this.val(),a=[],i=0;if(A.instanceOf(v,Array)){for(m=v.length;i<m;i++)
a[i]=v[i];}else if(include){a[i]=v;}else if(A.isObject(v)){for(var p in v)
a[i++]=v[p];}
return a;},"ael return toBoolean":function(){return!!this.val();},"ael return toJSONString":function(partial){var r=[],v=this.val();for(var p in v){if(A(v).hasOwn(p)){var fragment=A(v[p]).toJSONString(partial);if(typeof fragment==="string"&&fragment.length!==0)
r[r.length]='"'+p+'":'+fragment;}}
return"{"+A(r).join(",")+"}";},"ael return toNumber":function(){return Number(this.val());},"ael return toString":function(){return String(this.val());}});A.lang.class_({name:"Array",type:Array},{"ael arraycopy":function(fstart,to,tstart,length){var from=this.val();if(A.isArray(to)&&A.isNumber(fstart)&&0<=fstart&&A.isNumber(tstart)&&0<=tstart&&A.isNumber(length)&&0<=length){fstart+=length;tstart+=length;for(var i=0;i<length;i++)
to[--tstart]=from[--fstart];}
return to;},"ael void clear":function(){this.val().length=0;},"ael concat":A().global.opera?function(){for(var i=0,a=arguments;i<a.length;i++){var v=a[i];if(v===null||v===void 0)
a[i]=[v];}
return A().call(Array.prototype.concat,arguments,this.val());}:function(){return A().call(Array.prototype.concat,arguments,this.val());},"ael contains":function(value){return this.indexOf(value)!==-1;},"ael every":function(fn,scope){if(!A.isFunction(fn))
return this.length>0;fn=A(fn);var array=this.val();for(var i=0,m=array.length;i<m;i++){if(!fn.call([array[i],i,array],scope))
return false;}
return true;},"ael filter":function(fn,scope){var r=[];if(A.isFunction(fn)){fn=A(fn);var array=this.val();for(var i=0,m=array.length;i<m;i++){var v=array[i];if(fn.call([v,i,array],scope))
r[r.length]=v;}}
return r;},"ael void each":function(fn){var v=this.val();for(var i=0,m=v.length;i<m&&!fn(v[i],i);i++);},"ael boolean equals":function(array){var v=this.val();if(A.isArray(array)&&v.length===array.length){for(var i=0,m=v.length;i<m;i++){if(v[i]!==array[i])
return false;}
return true;}
return false;},"ael indexOf":function(value,from){var v=this.val(),len=v.length;from=Number(from);if(from){from=(from<0)?Math.ceil(from):Math.floor(from);if(from<0)
from+=len;if(from<0)
from=0;}else{from=0;}
for(;from<len;from++){if(v[from]===value)
return from;}
return-1;},"ael join":Array.prototype.join?function(separator){if(separator===void 0)
separator=",";return this.val().join(separator);}:function(separator){separator=separator===void 0?",":separator===null?"null":separator.toString();var r="",v=this.val();for(var i=0;i<v.length;i++){if(0<i)r+=separator;r+=v[i];}
return r;},"ael lastIndexOf":function(value,from){var v=this.val(),len=v.length;if(arguments.length<2){from=len-1;}else if(A.isNumber(from)&&!isNaN(from)){from=(0<from)?Math.ceil(from):Math.floor(from);if(from<0){from+=len;}else if(from>=len){from=len-1;}}else{from=0;}
for(;-1<from;from--){if(v[from]===value)
return from;}
return-1;},"ael map":function(fn,scope){var r=[];if(A.isFunction(fn)){fn=A(fn);var v=this.val();for(var i=0,m=v.length;i<m;i++)
r[r.length]=fn.call([v[i],i,v],scope);}
return r;},"ael pop":function(){var v=this.val()
if(!v.length)return;var last=v[v.length-1];v.length--;return last;},"ael push":function(){var v=this.val();for(var i=0,a=arguments;i<a.length;i++)
v[v.length]=a[i];return v.length;},"ael remove":function(index){var v=this.val();if(!this.within(index))return;var result=v[index];for(var i=index+1;i<v.length;i++)
v[i-1]=v[i];v.length--;return result;},"ael reverse":function(){var v=this.val();for(var i=0,b=v.length-1;i<b;i++,b--){var f=v[i];v[i]=v[b];v[b]=f;}
return v;},"ael size":function(){return this.val().length;},"ael shift":function(){var result,v=this.val();if(v.length){result=v[0];for(var i=1;i<v.length;i++)
v[i-1]=v[i];v.length--;}
return result;},"ael slice":function(start,end){var result=[],v=this.val();if(v.length){if(!A.isNumber(start)){start=0;}else if(start<0){start=v.length+start;}
if(!A.isNumber(end)){end=v.length;}else if(end<0){end=v.length+end;}
for(var i=start;i<end;i++)
result[result.length]=v[i];}
return result;},"ael some":function(fn,scope){if(A.isFunction(fn)){fn=A(fn);var array=this.val();for(var i=0,m=array.length;i<m;i++){if(fn.call([array[i],i,array],scope))
return true;}}
return false;},"ael sort":Array.prototype.sort?function(comparator){var v=this.val();if(v.length){if(A.isFunction(comparator)){v.sort(comparator);}else{v.sort();}}
return v;}:function(comparator){if(!A.isFunction(comparator))
comparator=new Function("v1","v2","return v1 - v2;");var array=this.val();for(var i=1;i<array.length;i++){for(var k=i;0<k&&0<comparator(array[k-1],array[k]);k--){var v=array[k];array[k]=array[k-1];array[k-1]=v;}}
return array;},"ael splice":function(start,deleteCount){var result=[],v=this.val(),c=0,a=arguments;if(!A.isNumber(start)||start<0)
start=v.length;if(!A.isNumber(deleteCount))
deleteCount=v.length;for(var i=start;i<v.length&&c<deleteCount;i++,c++)
result[result.length]=v[i];for(var i=start+c;i<v.length;i++)
v[i-c]=v[i];v.length-=c;for(var i=3;i<a.length;i++)
v[v.length]=a[i];return result;},"ael return toJSONString":function(partial){var r=[],v=this.val();for(var i=0;i<v.length;i++){var fragment=A(v[i]).toJSONString(partial);if(typeof fragment==="string"&&fragment.length!==0)
r[r.length]=fragment;}
return"["+A(r).join(",")+"]";},"ael unshift":function(){var a=arguments,v=this.val(),l=v.length+a.length;for(var i=v.length-1,m=a.length;0<=i;i--)
v[i+m]=v[i];for(var i=0;i<a.length;i++)
v[i]=a[i];return v.length=l;},"ael within":function(index){return A.isNumber(index)&&0<=index&&index<this.val().length;}});A.lang.class_({name:"Boolean",type:Boolean},{"ael return toJSONString":function(){return this.val()==true?"true":"false";}});A.lang.class_({name:"Date",type:Date},{"ael void clear":function(){this.val().setTime(0);},"ael return toJSONString":function(){return'"'+this.val().toUTCString()+'"';}});A.lang.class_("Error",{"prototype initialize":function(e){e=e||{};this.name=e.name||"Error";this.message=e.message||e.description||"";this.line=e.line||e.lineNumber||-1;this.url=e.fileName||e.sourceURL||"";this.stack=e.stack||"";},"ael void clear":function(){}});A.lang.class_({name:"Function",type:Function,aliases:[(function(){}).constructor]},{"ael call":function(args,scope){return A().call(this.val(),args,scope);},"ael chain":function(fn){var v=this.val();if(!A.instanceOf(v,fn)){var proto=A.isFunction(fn)?fn.prototype:fn;if(A.isObject(v.prototype.__proto__)){v.prototype.__proto__=proto;}else{var f=A().AIR?function(){}:new Function();f.prototype=proto;v.prototype=new f();}
v.prototype.constructor=v;}
return v;},"ael void clear":function(){var v=this.val();for(var p in v){if(p!=="prototype")
delete v[p];}},"ael comment":function(){var src=this.val().toString(),r="",i=0;while(true){var s=i=src.indexOf("/*",i);if(s==-1)
break;var e=i=src.indexOf("*/",i);if(e==-1)
break;r+=src.substring(s+2,e);}
return r;},"ael curry":function(args,scope){var fn=A(this);if(!A.isObject(scope))
scope={};args=A.isArray(args)?args:[];return function(){var a=[];for(var i=0;i<arguments.length;i++)
a[a.length]=arguments[i];return fn.call(args.concat(a),scope);}},"ael defer":function(){var g=A().global,si=g.setInterval,ci=g.clearInterval;return A().IE4?function(options){options=options||{};var self=this,fns=A().fns,i=0,clear=options.original?ci:g.clearInterval;for(;fns[i]!==void 0;i++);fns[i]=function(){if(!A.isFunction(options.condition)||!!options.condition()){if(!options.interval){delete A().fns[i];clear(id);}
self.call(options.arguments,options.scope);}};var id=(options.original?si:g.setInterval)('Ael().fns['+i+']();',A.isNumber(options.ms)?options.ms:50);return id;}:function(options){options=options||{};var self=this,clear=options.original?ci:g.clearInterval,id=(options.original?si:g.setInterval)(function(){if(!A.isFunction(options.condition)||!!options.condition()){if(!options.interval)
clear(id);self.call(options.arguments,options.scope);}},A.isNumber(options.ms)?options.ms:50);return id;}}(),"ael interceptor":function(advices){var core=A(),clazz=A(function(){}).chain({fn:this.val(),proceed:function(args){return core.call(this.fn,args,this.scope);}}),ic=function(){var so=new clazz();so.scope=this;if(A.isFunction(ic.before))
core.call(ic.before,arguments,so);var r=A.isFunction(ic.around)?core.call(ic.around,arguments,so):core.call(so.fn,arguments,this);if(A.isFunction(ic.after))
core.call(ic.after,arguments,so);return r;};return A(ic).apply(advices);},"ael name":function(){var tokens=this.val().toString().match(/^[\r\n ]*function *([^(]*)\(/);return A.isNull(tokens)?"":tokens[1];},"ael try_":function(){var core=A(),fn=(!core.KJS&&A(core.global).hasOwn("onerror"))||core.IE4?function(fn,catch_,finally_,error){var g=core.global,eh=g.onerror||function(){return true;};g.onerror=function(msg,url,line){g.onerror=function(){g.onerror=eh;finally_();return true;};catch_(new error({name:"Error",message:msg,fileName:url||"",line:A.isNumber(line)?line:-1,stack:""}));g.onerror=eh;finally_();return true;};var r=fn();g.onerror=eh;finally_();return r;}:core.AIR?Ael?Ael().try_:core.try_=new Function("fn","catch_","finally_","error","try{return fn();}catch(e){catch_(new error(e));}finally{finally_();}"):function(fn,catch_,finally_,error){var r;eval("try{r=fn();}catch(e){catch_(new error(e));}finally{finally_();}");return r;};return function(o){if(!o)
return;o.arguments=[this.val(),A.isFunction(o.catch_)?o.catch_:function(){},A.isFunction(o.finally_)?o.finally_:function(){},A.lang.Error];return A(fn).defer(o);}}()});A.lang.class_("Task",{"prototype fn":function(){},"prototype start":0,"prototype initialize":function(options){A().apply(this,options);},"ael void resume":function(){this.val().pause=false;},"ael void suspend":function(){this.val().pause=true;}});(function(){var iid,count=0,entries={};A(A.lang.Task).properties({"ael void abort":function(){var id=this.val().id;delete entries[id];for(var p in entries)
return
if(A.isNumber(iid))
A().global.clearInterval(iid);}});A(A.lang.Function).properties({"ael timer":function(options){var exist=false;for(var p in entries){exist=true;break;}
if(!exist){iid=A(function(){var es=entries,c=new Date().getTime();for(var p in es){var e=es[p],o=e.options;if(!e.pause&&e.start<=c&&(!A.isFunction(o.start)||o.start())){if(!o.interval||(A.isFunction(o.end)&&o.end())){delete es[p];}else{e.start=(o.absolute?e.start:c)+o.ms;}
e.fn.call(o.arguments,o.scope);}}
for(var p in es)
return
A().global.clearInterval(iid);iid=void 0;}).defer({ms:10,interval:true,original:true});}
options=options||{};options.ms=options.ms||50;var id=count++;return A(entries[id]=new A.lang.Task({id:id,fn:this,start:new Date().getTime()+options.ms,options:options}));}});})();A.lang.class_({name:"Null",type:null},{"ael clone":function(){return null;},"ael return toJSONString":function(){return"null";}});A.lang.class_({name:"Number",type:Number},{"ael isInteger":function(){var v=this.val();return(v-Math.floor(v))===0;},"ael isDecimal":function(){var v=this.val();return isFinite(v)&&(v-Math.floor(v))!==0;},"ael return toJSONString":function(){var v=this.val();return!isFinite(v)?"":v.toString();}});A.lang.class_({name:"RegExp",type:RegExp},{"ael clone":function(){var v=this.val(),s=v.toString();return new RegExp(v.source,s.substring(s.lastIndexOf("/")+1));},"ael global":/_/g.global?function(){return this.val().global;}:function(){var s=this.val().toString();return s.indexOf("g",s.lastIndexOf("/")+1)!==-1;},"ael ignoreCase":/_/i.ignoreCase?function(){return this.val().ignoreCase;}:function(){var s=this.val().toString();return s.indexOf("i",s.lastIndexOf("/")+1)!==-1;},"ael test":function(string){return A.isString(string)?this.clone().test(string):false;}});A.lang.class_({name:"String",type:String},{"ael void each":function(fn){var i=0,v=this.val();if(A.isFunction(fn)){for(var i=0,m=v.length;i<m;i++){if(fn(v.charAt(i),i))
break;}}},"ael escapeHTML":function(){return this.replace(new RegExp("[<>&\"']","g"),function(s){switch(s){case"<":return"&lt;";case">":return"&gt;";case"&":return"&amp;";case"\"":return"&#34;";case"'":return"&#39;";}});},"ael endsWith":function(suffix){return A.isString(suffix)&&(!suffix.length||this.lastIndexOf(suffix)===(this.size()-suffix.length));},"ael format":function(){var a=arguments,v=this.val();return this.replace(/\{([0-9]+)\}/g,function(s,i){var v=a[i];return v===void 0?"undefined":v;});},"ael indexOf":function(string,from){if(string==""&&(!A.isNumber(from)||0<from))
return 0;var v=this.val();if(arguments.length<=1)
return v.indexOf(string);var f=Number(from);return v.length<=f&&f!==Number.POSITIVE_INFINITY?-1:v.indexOf(string,isFinite(f)?f:0);},"ael isEmpty":function(value){return this.val().length===0;},"ael lastIndexOf":function(string,from){if(string===""&&(!A.isNumber(from)||0<from))
return 0;return arguments.length===1?this.val().lastIndexOf(string):this.val().lastIndexOf(string,isFinite(from)?Number(from):0);},"ael print":function(){A().print(this.val());},"ael replace":"{0}".replace(/\{(0)\}/g,function(){return"";})===""?function(regexp,replacement){return this.val().replace(regexp,replacement);}:function(regexp,replacement){var value=this.val(),r="",start=0,t=value.match(regexp)||[],flag=A.isFunction(replacement);for(var i=0,index,v;i<t.length&&0<=(index=value.indexOf(v=t[i],start));i++){r+=value.substring(start,index);r+=flag?replacement(t[i],v.substring(1,v.length-1)):replacement;start=index+v.length;}
return r+value.substring(start);},"ael size":function(){return this.val().length;},"ael startsWith":function(prefix){return A.isString(prefix)&&(!prefix.length||this.indexOf(prefix)===0);},"ael return toJSONString":function(){var ccl={};for(var i=0;i<32;i++)
ccl[String.fromCharCode(i)]="\\u00"+(i<16?"0":"1")+(i%16).toString(16);for(var i=127;i<160;i++)
ccl[String.fromCharCode(i)]="\\u00"+Math.floor(i/16).toString(16)+(i%16).toString(16);A().apply(ccl,{"\"":"\\\"","\\":"\\\\","\/":"\\\/","\b":"\\b","\f":"\\f","\n":"\\n","\r":"\\r","\t":"\\t"});return function(partial){var v=this.val();var r="";for(var i=0,m=v.length;i<m;i++){var c=v.charAt(i);var cc=ccl[c];if(!A.isUndefined(cc)){r+=cc;}else if(partial){r+=c;}else{c="000"+c.charCodeAt(0).toString(16);r+="\\u"+c.substring(c.length-4);}}
return'"'+r+'"';}}(),"ael trim":function(chars){var v=this.val();if(v){if(!A.isString(chars))
chars=" ";var first=0;for(;first<v.length&&chars.indexOf(v.charAt(first))!=-1;first++);var last=v.length-1;for(;first<=last&&chars.indexOf(v.charAt(last))!=-1;last--);v=v.substring(first,last+1);}
return v;},"ael unescapeHTML":function(){return this.replace(new RegExp("&(lt|gt|amp|#34|#39);","g"),function(s){switch(s){case"&lt;":return"<";case"&gt;":return">";case"&amp;":return"&";case"&#34;":return"\"";case"&#39;":return"'";}});}});A.lang.class_({name:"Undefined",type:void 0},{"ael clone":function(){return void 0;},"ael return toJSONString":function(){return"";}});A.package_({name:"extend",value:function(eo){return eo.extend=function(){var a=arguments;if(a.length){var r=eo.registry,inc=eo.includes;for(var i=0,m=a.length;i<m;i++){var id=a[i],e=r.get(id);if(e&&!inc.some(function(v){return e.isHigh(v);})){inc.push(e);var d=e.dependencies;for(var i=0,m=d.length;i<m;i++)
eo.extend(d[i]);A(e.fn).call([A]);}}}
return eo;};}({includes:A([]),install:function(ext){ext=A(new A.extend.Extension()).apply(ext);var r=this.registry,e=r.get(ext.id);if(!e||!this.includes.some(function(v){return e.isHigh(v);}))
r.register(ext);return this;}})});A.extend.class_("Extension",{"prototype version":0,"instance dependencies":[],"prototype fn":function(){},"prototype isHigh":function(ext){return this.id===ext.id&&parseFloat(this.version)<parseFloat(ext.version);}});Ael||A.extend.class_("Registry",{"static extensions":{},"static register":function(ext){if(ext&&ext.id)
this.extensions[ext.id]=ext;},"static unregister":function(id){delete this.extensions[id];},"static get":function(id){return this.extensions[id];}});A.extend().registry=(Ael?Ael:A).extend.Registry;return A;})();
