diff options
Diffstat (limited to 'lib/dojo/behavior.js')
-rw-r--r-- | lib/dojo/behavior.js | 94 |
1 files changed, 94 insertions, 0 deletions
diff --git a/lib/dojo/behavior.js b/lib/dojo/behavior.js new file mode 100644 index 000000000..3420fec20 --- /dev/null +++ b/lib/dojo/behavior.js @@ -0,0 +1,94 @@ +/* + Copyright (c) 2004-2010, The Dojo Foundation All Rights Reserved. + Available via Academic Free License >= 2.1 OR the modified BSD license. + see: http://dojotoolkit.org/license for details +*/ + + +if(!dojo._hasResource["dojo.behavior"]){ +dojo._hasResource["dojo.behavior"]=true; +dojo.provide("dojo.behavior"); +dojo.behavior=new function(){ +function _1(_2,_3){ +if(!_2[_3]){ +_2[_3]=[]; +} +return _2[_3]; +}; +var _4=0; +function _5(_6,_7,_8){ +var _9={}; +for(var x in _6){ +if(typeof _9[x]=="undefined"){ +if(!_8){ +_7(_6[x],x); +}else{ +_8.call(_7,_6[x],x); +} +} +} +}; +this._behaviors={}; +this.add=function(_a){ +var _b={}; +_5(_a,this,function(_c,_d){ +var _e=_1(this._behaviors,_d); +if(typeof _e["id"]!="number"){ +_e.id=_4++; +} +var _f=[]; +_e.push(_f); +if((dojo.isString(_c))||(dojo.isFunction(_c))){ +_c={found:_c}; +} +_5(_c,function(_10,_11){ +_1(_f,_11).push(_10); +}); +}); +}; +var _12=function(_13,_14,_15){ +if(dojo.isString(_14)){ +if(_15=="found"){ +dojo.publish(_14,[_13]); +}else{ +dojo.connect(_13,_15,function(){ +dojo.publish(_14,arguments); +}); +} +}else{ +if(dojo.isFunction(_14)){ +if(_15=="found"){ +_14(_13); +}else{ +dojo.connect(_13,_15,_14); +} +} +} +}; +this.apply=function(){ +_5(this._behaviors,function(_16,id){ +dojo.query(id).forEach(function(_17){ +var _18=0; +var bid="_dj_behavior_"+_16.id; +if(typeof _17[bid]=="number"){ +_18=_17[bid]; +if(_18==(_16.length)){ +return; +} +} +for(var x=_18,_19;_19=_16[x];x++){ +_5(_19,function(_1a,_1b){ +if(dojo.isArray(_1a)){ +dojo.forEach(_1a,function(_1c){ +_12(_17,_1c,_1b); +}); +} +}); +} +_17[bid]=_16.length; +}); +}); +}; +}; +dojo.addOnLoad(dojo.behavior,"apply"); +} |