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

var Ael={NN4:typeof document==="object"&&typeof document.layers==="object"&&typeof navigator==="object"&&typeof navigator.userAgent==="string"&&navigator.userAgent.indexOf("Mozilla/4")!==-1,instanceOf:function(value,clazz){return value!==void 0&&value!==null&&value.constructor===clazz;},isObject:function(value){var t=typeof value;return value!==null&&(t==="object"||t==="function");},isBoolean:function(value){return Ael.instanceOf(value,Boolean);},isNumber:function(value){return Ael.instanceOf(value,Number);},isRegExp:function(value){return Ael.instanceOf(value,RegExp);},isString:function(value){return Ael.instanceOf(value,String);},isFunction:function(value){return typeof value==="function";},isNative:function(value){return Ael.isFunction(value)&&(value.toString().indexOf("[native code")!==-1||value.toString()==="[function]");},isArray:function(value){return Ael.instanceOf(value,Array)||Ael.isArguments(value);},isArguments:function(value){return(Ael.instanceOf(value,Object)||Ael.instanceOf(value,Array))&&Ael.isFunction(value.callee)&&Ael.isNumber(value.length);},isNaN:function(value){return Ael.isNumber(value)&&isNaN(value);},isNull:function(value){return value===null;},isUndefined:function(value){return value===void 0;},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 Ael.instanceOf(value,core.root)?value:core.make(value,option);};Ael=core.apply(core.node(core.root),Ael,clazz);if(core.Rhino)
RegExp.prototype.constructor=RegExp;Ael.package_("lang").class_("Class").prototype.initialize=core.Class;core.Class=Ael.lang.Class;Ael.constructor=core.Class.constructor=core.Class;Ael.lang.class_("Property").prototype.initialize=core.Property;Ael.lang.Property.class_("Method").prototype.initialize=core.Method;})({version:function(){return"0.3.0"},global:(function(g){return function(){return g};})(this),fns:{},IE4:typeof navigator==="object"&&typeof navigator.userAgent==="string"&&navigator.userAgent.indexOf("MSIE 4.")!==-1,KJS:typeof navigator==="object"&&typeof navigator.userAgent==="string"&&(navigator.userAgent.indexOf("KHTML")!==-1||navigator.userAgent.indexOf("Safari")!==-1),AIR:typeof navigator==="object"&&typeof navigator.userAgent==="string"&&navigator.userAgent.indexOf("AdobeAIR")!==-1,Rhino:typeof Packages==="function"&&String(Packages).indexOf("JavaPackage")!==-1,WSH:typeof WScript==="object",inspect:function(value){var list="";if(value!==void 0&&value!==null){for(var name in value)
list+=name+"\n";}
if(Ael().WSH){WScript.StdOut.Write(list);}else if(Ael().Rhino){print(list);}else{alert(list);}},apply:function(value){if(!Ael.isNoU(value)){for(var i=1,a=arguments;i<a.length;i++){var o=a[i];if(!Ael.isNoU(o)){for(var p in o)
value[p]=o[p];}}}
return value;},call:function(fn,args,scope){if(Ael.isNoU(scope))
scope=this.global();var result;if(Ael.isFunction(fn.apply)&&!Ael.NN4){result=Ael.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;!Ael.isUndefined(scope[(methodName="$ael"+i)]);i++);scope[methodName]=fn;var code=[];if(Ael.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()||Ael.isNoU(scope.constructor)){scope[methodName]=void 0;}else{delete scope[methodName];}}
return result;},adapter:Ael.NN4?function(){var c=["r;","this.val(r);","this;"];return function(mode,fn){var f=new Function("var r=Ael().call(arguments.callee.fn, arguments, this);return "+c[mode]);f.fn=fn;return f;};}():function(mode,fn){switch(mode){case 0:return function(){return Ael().call(fn,arguments,this);};case 1:return function(){return this.val(Ael().call(fn,arguments,this));};case 2:return function(){Ael().call(fn,arguments,this);return this;};}}},{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(typeof superclass==="function"){var c=this.get(id);if(!c){var l=this.get();c=l[l.length]={"id":id};}
c.superclass=superclass;}},privileged:function(value){return function(v){return arguments.length?value=v:value;};},chain:function(clazz,superclass){if(typeof clazz==="function"&&typeof superclass==="function"){if(clazz.prototype.__proto__){clazz.prototype.__proto__=superclass.prototype;}else{var f=this.AIR?function(){}:new 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=core.AIR?function(){}:new Function(),a=core.root.metadata().ael;var t=this.get(v===void 0?void 0:v==null?null:option.type===void 0?v.constructor:option.type)||a;var r=new(this.chain(c,t))();r.val=function(value){if(!arguments.length)
return v;v=value;var type=v===void 0?void 0:v===null?null:v.constructor;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=Ael.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=Ael(clazz);i<m;i++)
c.properties(a[i]);return target[option.name]=clazz;};target.package_=function(option){option=Ael.isString(option)?{name:option}:option||{};var r=target[option.name];return typeof r!=="object"?core.node(target[option.name]=option.value||{},target):r;};target.parent=function(){return parent;};return target;},class_:function(option,clazz,node){option=option||{};if(!Ael.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(Ael.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(Ael.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=Ael();for(var i=0,m=props.length;i<m;i++){var f=props[i].val();var v=f.value;target[f.name]=Ael.isFunction(v)?f.keywords.init?core.call(v,args,target):v:Ael(v).clone(true);}};var makeClass=function(metadata){return function(){var self=this,init;if(Ael.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?Ael().call(init,arguments,self):self;};};return function(){var metadata={properties:{},seq:[],ael:core.AIR?function(){}:new Function()};var clazz=makeClass(metadata);if(Ael.NN4){var c=clazz;clazz=new Function("return arguments.callee.metadata().nn4Constructor.apply(this,arguments);");metadata.nn4Constructor=c;}
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);this.name=tokens[tokens.length-1];tokens.length--;var k=this.keywords={};for(var i=0;i<tokens.length;i++)
k[tokens[i]]=true;var prop=Ael(this);if(k["void"])
prop["void"]();for(var p in k){if(Ael.isFunction(prop[p])){prop[p]();}}},Method:function(){return Ael().call(Ael.lang.Property.prototype.initialize,arguments,this);}});Ael.lang.Class.metadata().ael.prototype.properties=Ael().adapter(0,function(){var clazz=this.val();if(arguments.length){var metadata=clazz.metadata();for(var i=0,a=arguments;i<a.length;i++){var props=a[i]||{};for(var expr in props){var value=props[expr];var fc=Ael.lang.Property;if(Ael.isFunction(value))
fc=fc.Method;var f=Ael(new fc(clazz,expr,value));if(f.val().keywords["instance"])
metadata.seq[metadata.seq.length]=f;metadata.properties[expr]=f;}}}
return clazz.metadata().properties;});(function(props){var core=Ael();for(var p in props)
props[p]=core.adapter(0,props[p]);core.apply(Ael.lang.Property.metadata().ael.prototype,props);})({ael:function(){var v=this.val();v.keywords.ael=true;var p=v.clazz.metadata().ael.prototype;if(Ael.isFunction(v.value)){var core=Ael();p[v.name]=core.adapter(0,v.value);if(!v.keywords["void"])
p["_"+v.name]=core.adapter(1,v.value);p["$"+v.name]=core.adapter(2,v.value);}else{p[v.name]=v.value;}},instance:function(){this.val().keywords.instance=true;},prototype:function(){var v=this.val();v.keywords.prototype=true;v.clazz.prototype[v.name]=v.value;},"static":function(){var v=this.val();v.keywords["static"]=true;v.clazz[v.name]=v.value;}});(function(props){var core=Ael();for(var p in props)
props[p]=core.adapter(0,props[p]);core.apply(Ael.lang.Property.Method.metadata().ael.prototype,props);})({"init":function(){this.val().keywords.init=true;},"void":function(){this.val().keywords["void"]=true;}});Ael(Ael.lang.Class).properties({"ael properties":Ael.lang.Class.metadata().ael.prototype.properties,"ael void inherit":function(superclass){Ael(this).chain(this.metadata().superclass=Ael(superclass));},"ael superclass":function(){return this.val().metadata().superclass;}});(function(props){var p=Ael.lang.Property.metadata().ael.prototype;props["ael void ael"]=p.ael;props["ael void instance"]=p.instance;props["ael void prototype"]=p.prototype;props["ael void static"]=p["static"];Ael(Ael.lang.Property).properties(props);})({"ael hasKeyword":function(name){return this.val().keywords[name]===true;},"ael isAel":function(){return this.val().keywords.ael===true;},"ael isInstance":function(){return this.val().keywords.instance===true;},"ael isPrototype":function(){return this.val().keywords.prototype===true;},"ael isStatic":function(){return this.val().keywords["static"]===true;}});(function(props){var p=Ael.lang.Property.Method.metadata().ael.prototype;props["ael void init"]=p.init;props["ael void void"]=p["void"];Ael(Ael.lang.Property.Method).properties(props);})({"ael isInit":function(){return this.val().keywords.init===true;},"ael isVoid":function(){return this.val().keywords["void"]===true;}});Ael(Ael).properties({"prototype val":function(){return this;},"ael void apply":function(){var to=this.val();if(!Ael.isNoU(to)){for(var i=0,a=arguments;i<a.length;i++){var o=a[i];if(!Ael.isNoU(o)){for(var p in o)
to[p]=o[p];}}}
return to;},"ael void clear":function(){var v=this.val();if(Ael.isObject(v)){for(var p in v)
delete v[p];}},"ael clone":function(){var cloneFunc=function(fn){var isClosure=Ael.NN4&&Ael.instanceOf(fn,Closure);if(isClosure)
fn.toString=Function.prototype.toString;var src=fn.toString();var args=src.substring(src.indexOf("(")+1,src.indexOf(")"));args=args.length?args.split(","):[];var body=src.substring(src.indexOf("{")+1,src.lastIndexOf("}"));body=Ael(body).trim("\n\r ");if(Ael(fn).name()==="anonymous"){args[args.length]=body;return Ael().call(Function,args);}
if(isClosure)
delete fn.toString;return new Function("return function("+args.join(",")+"){"+body+"};")();};return function(deep){var value=this.val();if((typeof value!=="object"&&!Ael.isFunction(value))||(Ael().AIR&&Ael.isFunction(value)))
return value;if(Ael.isNull(value))
return null;var c=value.constructor;var cp=c.prototype;var v=value.valueOf;var 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(Ael.isNative(value))
return value;clone=cloneFunc(value);break;case Boolean:case Number:case String:clone=new c(value.valueOf());break;default:if(typeof value==="object"){clone={};}else{if(Ael.isNative(value))
return value;clone=cloneFunc(value);Ael(clone).chain(value);}
clone.constructor=Ael(c).clone();}
if(deep!=true){Ael().apply(clone,value);}else if(Ael.isFunction(value)){for(var p in value)
clone[p]=Ael(value[p]).clone(p!=="prototype");}else{for(var p in value)
clone[p]=Ael(value[p]).clone(true);}
if(t!==value.toString){value.toString=t;clone.toString=Ael(t).clone(true);}
if(v!==value.valueOf){value.valueOf=v;clone.valueOf=Ael(v).clone(true);}
return clone;};}(),"ael compare":function(value2){var value1=this.val();var 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=Ael.isNull(value1),isNull2=Ael.isNull(value2);if(isNull1||isNull2)
return isNull1===isNull2?0:isNull1?-1:1;var result=Ael(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 Ael(this.val());},"ael equals":function(value2){var value1=this.val();return value1===value2||(Ael.isNaN(value1)&&Ael.isNaN(value2));},"ael keys":function(){var r=[],v=this.val();if(!Ael.isNoU(v)){for(var p in v)
r[r.length]=p;}
return r;},"ael void each":function(fn){var i=0,v=this.val(),core=Ael();if(!Ael.isNoU(v)&&Ael.isFunction(fn)){for(var p in v){if(fn(v[p],i,p))
break;i++;}}},"ael hasOwn":function(name){var object=this.val(),KJS=Ael().KJS;if(Ael.isNoU(object)||!Ael.isString(name))return false;if(Ael.isFunction(object.hasOwnProperty)&&(!KJS||(KJS&&!Ael.isArray(object))))
return object.hasOwnProperty(name);var c=object.constructor;if(Ael.isNoU(c))
return!Ael.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&&Ael.isArray(object)&&this.within(parseInt(name));},"ael toArray":function(include){var v=this.val();if(Ael.instanceOf(v,Array)){var a=new Array(v.length);for(var i=0,m=v.length;i<m;i++)
a[i]=v[i];return a;}else{return include?[v]:[];}},"ael toBoolean":function(){return Boolean(this.val());},"ael toJSONString":function(partial){var r=[],v=this.val();for(var p in v){if(Ael(v).hasOwn(p)){var fragment=Ael(v[p]).toJSONString(partial);if(typeof fragment==="string"&&fragment.length!==0)
r[r.length]='"'+p+'":'+fragment;}}
return"{"+Ael(r).join(",")+"}";},"ael toNumber":function(){return Number(this.val());},"ael toString":function(){return String(this.val());}});Ael.lang.class_({name:"Array",type:Array},{"ael arraycopy":function(fstart,to,tstart,length){var from=this.val();if(Ael.isArray(to)&&Ael.isNumber(fstart)&&0<=fstart&&Ael.isNumber(tstart)&&0<=tstart&&Ael.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":Ael().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 Ael().call(Array.prototype.concat,arguments,this.val());}:function(){return Ael().call(Array.prototype.concat,arguments,this.val());},"ael every":function(fn,scope){if(!Ael.isFunction(fn))
return this.length>0;fn=Ael(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(Ael.isFunction(fn)){fn=Ael(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(Ael.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":function(){return 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(Ael.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(Ael.isFunction(fn)){fn=Ael(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 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(!Ael.isNumber(start)){start=0;}else if(start<0){start=v.length+start;}
if(!Ael.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(Ael.isFunction(fn)){fn=Ael(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":function(){return Array.prototype.sort?function(comparator){var v=this.val();if(v.length){if(Ael.isFunction(comparator)){v.sort(comparator);}else{v.sort();}}
return v;}:function(comparator){if(!Ael.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(!Ael.isNumber(start)||start<0)
start=v.length;if(!Ael.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 toJSONString":function(partial){var r=[],v=this.val();for(var i=0;i<v.length;i++){var fragment=Ael(v[i]).toJSONString(partial);if(typeof fragment==="string"&&fragment.length!==0)
r[r.length]=fragment;}
return"["+Ael(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 Ael.isNumber(index)&&0<=index&&index<this.val().length;}});Ael.lang.class_({name:"Boolean",type:Boolean},{"ael toJSONString":function(){return this.val()==true?"true":"false";}});Ael.lang.class_({name:"Date",type:Date},{"ael void clear":function(){this.val().setTime(0);},"ael toJSONString":function(){return'"'+this.val().toUTCString()+'"';}});Ael.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(){}});Ael.lang.class_({name:"Function",type:Function,aliases:[(function(){}).constructor]},{"ael call":function(args,scope){return Ael().call(this.val(),args,scope);},"ael chain":function(fn){var v=this.val();if(!Ael.instanceOf(v,fn)){var proto=Ael.isFunction(fn)?fn.prototype:fn;if(Ael.isObject(v.prototype.__proto__)){v.prototype.__proto__=proto;}else{var f=Ael().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 curry":function(args,scope){var fn=Ael(this);if(!Ael.isObject(scope))
scope={};args=Ael.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=Ael().global(),si=g.setInterval,ci=g.clearInterval;return Ael().IE4?function(option){option=option||{};var self=this,fns=Ael().fns,i=0,ms=Ael.isNumber(option.ms)?option.ms:50,clear=option.original?ci:g.clearInterval;for(;fns[i]!==void 0;i++);fns[i]=function(){if(!Ael.isFunction(option.condition)||option.condition()===true){if(!option.interval){delete Ael().fns[i];clear(id);}
self.call(option.arguments,option.scope);}};var id=(option.original?si:g.setInterval)('Ael().fns['+i+']();',ms);return id;}:function(option){option=option||{};var self=this,ms=Ael.isNumber(option.ms)?option.ms:50,clear=option.original?ci:g.clearInterval,id=(option.original?si:g.setInterval)(function(){if(!Ael.isFunction(option.condition)||option.condition()===true){if(!option.interval)
clear(id);self.call(option.arguments,option.scope);}},ms);return id;}}(),"ael interceptor":function(advices){var core=Ael(),clazz=Ael(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(Ael.isFunction(ic.before))
core.call(ic.before,arguments,so);var r=Ael.isFunction(ic.around)?core.call(ic.around,arguments,so):core.call(so.fn,arguments,this);if(Ael.isFunction(ic.after))
core.call(ic.after,arguments,so);return r;};return Ael(ic).apply(advices);},"ael name":function(){var tokens=this.val().toString().match(/^[\r\n ]*function *(.*)\(/);return Ael.isNull(tokens)?"":tokens[1];},"ael tryCatch":function(fn,option){var self=this,g=Ael().global(),ic=self._interceptor({around:(!Ael().KJS&&Ael(g).hasOwn("onerror"))||Ael().IE4?function(){var eh=g.onerror||function(){return true;};g.onerror=function(msg,url,line){g.onerror=eh;fn(new Ael.lang.Error({name:"Error",message:msg,fileName:url||"",line:Ael.isNumber(line)?line:-1,stack:""}));return true;};var r=this.proceed(arguments);g.onerror=eh;return r;}:function(){var r;eval("try{r=this.proceed(arguments);}catch(e){fn(new Ael.lang.Error(e));}");return r;}});return ic.defer(option);}});Ael.lang.class_({name:"Null",type:null},{"ael toJSONString":function(){return"null";}});Ael.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 toJSONString":function(){var v=this.val();return!isFinite(v)?"":v.toString();}});Ael.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 Ael.isString(string)?this.clone().test(string):false;}});Ael.lang.class_({name:"String",type:String},{"ael void each":function(fn){var i=0,v=this.val();if(Ael.isFunction(fn)){for(var i=0,m=v.length;i<m;i++){if(fn(v.charAt(i),i))
break;}}},"ael format":"{0}".replace(/\{(0)\}/g,function(){return"";})===""?function(){var a=arguments,v=this.val();return v.replace(/\{([0-9]+)\}/g,function(s,i){var v=a[i];return v===void 0?"undefined":v;});}:function(){var value=this.val();var r=[],start=0,t=value.match(/\{([0-9]+)\}/g)||[];for(var i=0,index,v;i<t.length&&0<=(index=value.indexOf(v=t[i],start));i++){r[r.length]=value.substring(start,index);var p=arguments[v.substring(1,v.length-1)];r[r.length]=p===null?"null":p===void 0?"undefined":p;start=index+v.length;}
r[r.length]=value.substring(start);return r.join("");},"ael indexOf":function(string,from){if(string==""&&(!Ael.isNumber(from)||0<from))
return 0;return this.val().indexOf(string,from);},"ael isEmpty":function(value){return this.val().length===0;},"ael 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);Ael().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(!Ael.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(!Ael.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.lang.class_({name:"Undefined",type:void 0},{"ael toJSONString":function(){return"";}});
