//>>built
define("dojox/mvc/_DataBindingMixin",["dojo/_base/kernel","dojo/_base/lang","dojo/_base/array","dojo/_base/declare","dojo/Stateful","dijit/registry"],function(_1,_2,_3,_4,_5,_6){_1.deprecated("dojox.mvc._DataBindingMixin","Use dojox/mvc/at for data binding.");return _4("dojox.mvc._DataBindingMixin",null,{ref:null,isValid:function(){var _7=this.get("valid");return typeof _7!="undefined"?_7:this.get("binding")?this.get("binding").get("valid"):true;},_dbstartup:function(){if(this._databound){return;}this._unwatchArray(this._viewWatchHandles);this._viewWatchHandles=[this.watch("ref",function(_8,_9,_a){if(this._databound&&_9!==_a){this._setupBinding();}}),this.watch("value",function(_b,_c,_d){if(this._databound){var _e=this.get("binding");if(_e){if(!((_d&&_c)&&(_c.valueOf()===_d.valueOf()))){_e.set("value",_d);}}}})];this._beingBound=true;this._setupBinding();delete this._beingBound;this._databound=true;},_setupBinding:function(_f){if(!this.ref){return;}var ref=this.ref,pw,pb,_10;if(ref&&_2.isFunction(ref.toPlainObject)){_10=ref;}else{if(/^\s*expr\s*:\s*/.test(ref)){ref=ref.replace(/^\s*expr\s*:\s*/,"");_10=_2.getObject(ref);}else{if(/^\s*rel\s*:\s*/.test(ref)){ref=ref.replace(/^\s*rel\s*:\s*/,"");_f=_f||this._getParentBindingFromDOM();if(_f){_10=_2.getObject(""+ref,false,_f);}}else{if(/^\s*widget\s*:\s*/.test(ref)){ref=ref.replace(/^\s*widget\s*:\s*/,"");var _11=ref.split(".");if(_11.length==1){_10=_6.byId(ref).get("binding");}else{pb=_6.byId(_11.shift()).get("binding");_10=_2.getObject(_11.join("."),false,pb);}}else{_f=_f||this._getParentBindingFromDOM();if(_f){_10=_2.getObject(""+ref,false,_f);}else{try{var b=_2.getObject(""+ref)||{};if(_2.isFunction(b.set)&&_2.isFunction(b.watch)){_10=b;}}catch(err){if(ref.indexOf("${")==-1){console.warn("dojox/mvc/_DataBindingMixin: '"+this.domNode+"' widget with illegal ref not evaluating to a dojo/Stateful node: '"+ref+"'");}}}}}}}if(_10){if(_2.isFunction(_10.toPlainObject)){this.binding=_10;if(this[this._relTargetProp||"target"]!==_10){this.set(this._relTargetProp||"target",_10);}this._updateBinding("binding",null,_10);}else{console.warn("dojox/mvc/_DataBindingMixin: '"+this.domNode+"' widget with illegal ref not evaluating to a dojo/Stateful node: '"+ref+"'");}}},_isEqual:function(one,_12){return one===_12||isNaN(one)&&typeof one==="number"&&isNaN(_12)&&typeof _12==="number";},_updateBinding:function(_13,old,_14){this._unwatchArray(this._modelWatchHandles);var _15=this.get("binding");if(_15&&_2.isFunction(_15.watch)){var _16=this;this._modelWatchHandles=[_15.watch("value",function(_17,old,_18){if(_16._isEqual(old,_18)){return;}if(_16._isEqual(_16.get("value"),_18)){return;}_16.set("value",_18);}),_15.watch("valid",function(_19,old,_1a){_16._updateProperty(_19,old,_1a,true);if(_1a!==_16.get(_19)){if(_16.validate&&_2.isFunction(_16.validate)){_16.validate();}}}),_15.watch("required",function(_1b,old,_1c){_16._updateProperty(_1b,old,_1c,false,_1b,_1c);}),_15.watch("readOnly",function(_1d,old,_1e){_16._updateProperty(_1d,old,_1e,false,_1d,_1e);}),_15.watch("relevant",function(_1f,old,_20){_16._updateProperty(_1f,old,_20,false,"disabled",!_20);})];var val=_15.get("value");if(val!=null){this.set("value",val);}}this._updateChildBindings();},_updateProperty:function(_21,old,_22,_23,_24,_25){if(old===_22){return;}if(_22===null&&_23!==undefined){_22=_23;}if(_22!==this.get("binding").get(_21)){this.get("binding").set(_21,_22);}if(_24){this.set(_24,_25);}},_updateChildBindings:function(_26){var _27=this.get("binding")||_26;if(_27&&!this._beingBound){_3.forEach(_6.findWidgets(this.domNode),function(_28){if(_28.ref&&_28._setupBinding){_28._setupBinding(_27);}else{_28._updateChildBindings(_27);}});}},_getParentBindingFromDOM:function(){var pn=this.domNode.parentNode,pw,pb;while(pn){pw=_6.getEnclosingWidget(pn);if(pw){pb=pw.get("binding");if(pb&&_2.isFunction(pb.toPlainObject)){break;}}pn=pw?pw.domNode.parentNode:null;}return pb;},_unwatchArray:function(_29){_3.forEach(_29,function(h){h.unwatch();});}});});