/*
	Copyright (c) 2004-2008, 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["dojox.wire.Wire"]){dojo._hasResource["dojox.wire.Wire"]=true;dojo.provide("dojox.wire.Wire");dojo.require("dojox.wire._base");dojo.declare("dojox.wire.Wire",null,{_wireClass:"dojox.wire.Wire",constructor:function(_1){dojo.mixin(this,_1);if(this.converter){if(dojo.isString(this.converter)){var _2=dojo.getObject(this.converter);if(dojo.isFunction(_2)){try{var _3=new _2();if(_3&&!dojo.isFunction(_3["convert"])){this.converter={convert:_2};}else{this.converter=_3;}}catch(e){}}else{if(dojo.isObject(_2)){if(dojo.isFunction(_2["convert"])){this.converter=_2;}}}if(dojo.isString(this.converter)){var _4=dojox.wire._getClass(this.converter);if(_4){this.converter=new _4();}else{this.converter=undefined;}}}else{if(dojo.isFunction(this.converter)){this.converter={convert:this.converter};}}}},getValue:function(_5){var _6=undefined;if(dojox.wire.isWire(this.object)){_6=this.object.getValue(_5);}else{_6=(this.object||_5);}if(this.property){var _7=this.property.split(".");for(var i in _7){if(!_6){return _6;}_6=this._getPropertyValue(_6,_7[i]);}}var _9=undefined;if(this._getValue){_9=this._getValue(_6);}else{_9=_6;}if(_9){if(this.type){if(this.type=="string"){_9=_9.toString();}else{if(this.type=="number"){_9=parseInt(_9);}else{if(this.type=="boolean"){_9=(_9!="false");}else{if(this.type=="array"){if(!dojo.isArray(_9)){_9=[_9];}}}}}}if(this.converter&&this.converter.convert){_9=this.converter.convert(_9,this);}}return _9;},setValue:function(_a,_b){var _c=undefined;if(dojox.wire.isWire(this.object)){_c=this.object.getValue(_b);}else{_c=(this.object||_b);}var _d=undefined;if(this.property){if(!_c){if(dojox.wire.isWire(this.object)){_c={};this.object.setValue(_c,_b);}else{throw new Error(this._wireClass+".setValue(): invalid object");}}var _e=this.property.split(".");var _f=_e.length-1;for(var i=0;i<_f;i++){var p=_e[i];var o=this._getPropertyValue(_c,p);if(!o){o={};this._setPropertyValue(_c,p,o);}_c=o;}_d=_e[_f];}if(this._setValue){if(_d){var o=this._getPropertyValue(_c,_d);if(!o){o={};this._setPropertyValue(_c,_d,o);}_c=o;}var _13=this._setValue(_c,_a);if(!_c&&_13){if(dojox.wire.isWire(this.object)){this.object.setValue(_13,_b);}else{throw new Error(this._wireClass+".setValue(): invalid object");}}}else{if(_d){this._setPropertyValue(_c,_d,_a);}else{if(dojox.wire.isWire(this.object)){this.object.setValue(_a,_b);}else{throw new Error(this._wireClass+".setValue(): invalid property");}}}},_getPropertyValue:function(_14,_15){var _16=undefined;var i1=_15.indexOf("[");if(i1>=0){var i2=_15.indexOf("]");var _19=_15.substring(i1+1,i2);var _1a=null;if(i1===0){_1a=_14;}else{_15=_15.substring(0,i1);_1a=this._getPropertyValue(_14,_15);if(_1a&&!dojo.isArray(_1a)){_1a=[_1a];}}if(_1a){_16=_1a[_19];}}else{if(_14.getPropertyValue){_16=_14.getPropertyValue(_15);}else{var _1b="get"+_15.charAt(0).toUpperCase()+_15.substring(1);if(_14[_1b]){_16=_14[_1b]();}else{_16=_14[_15];}}}return _16;},_setPropertyValue:function(_1c,_1d,_1e){var i1=_1d.indexOf("[");if(i1>=0){var i2=_1d.indexOf("]");var _21=_1d.substring(i1+1,i2);var _22=null;if(i1===0){_22=_1c;}else{_1d=_1d.substring(0,i1);_22=this._getPropertyValue(_1c,_1d);if(!_22){_22=[];this._setPropertyValue(_1c,_1d,_22);}}_22[_21]=_1e;}else{if(_1c.setPropertyValue){_1c.setPropertyValue(_1d,_1e);}else{var _23="set"+_1d.charAt(0).toUpperCase()+_1d.substring(1);if(_1c[_23]){_1c[_23](_1e);}else{_1c[_1d]=_1e;}}}}});}