/*
	Copyright (c) 2004-2009, 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._base"]){
dojo._hasResource["dojox.wire._base"]=true;
dojo.provide("dojox.wire._base");
dojox.wire._defaultWireClass="dojox.wire.Wire";
dojox.wire._wireClasses={"attribute":"dojox.wire.DataWire","path":"dojox.wire.XmlWire","children":"dojox.wire.CompositeWire","columns":"dojox.wire.TableAdapter","nodes":"dojox.wire.TreeAdapter","segments":"dojox.wire.TextAdapter"};
dojox.wire.register=function(_1,_2){
if(!_1||!_2){
return;
}
if(dojox.wire._wireClasses[_2]){
return;
}
dojox.wire._wireClasses[_2]=_1;
};
dojox.wire._getClass=function(_3){
dojo["require"](_3);
return dojo.getObject(_3);
};
dojox.wire.create=function(_4){
if(!_4){
_4={};
}
var _5=_4.wireClass;
if(_5){
if(dojo.isString(_5)){
_5=dojox.wire._getClass(_5);
}
}else{
for(var _6 in _4){
if(!_4[_6]){
continue;
}
_5=dojox.wire._wireClasses[_6];
if(_5){
if(dojo.isString(_5)){
_5=dojox.wire._getClass(_5);
dojox.wire._wireClasses[_6]=_5;
}
break;
}
}
}
if(!_5){
if(dojo.isString(dojox.wire._defaultWireClass)){
dojox.wire._defaultWireClass=dojox.wire._getClass(dojox.wire._defaultWireClass);
}
_5=dojox.wire._defaultWireClass;
}
return new _5(_4);
};
dojox.wire.isWire=function(_7){
return (_7&&_7._wireClass);
};
dojox.wire.transfer=function(_8,_9,_a,_b){
if(!_8||!_9){
return;
}
if(!dojox.wire.isWire(_8)){
_8=dojox.wire.create(_8);
}
if(!dojox.wire.isWire(_9)){
_9=dojox.wire.create(_9);
}
var _c=_8.getValue(_a);
_9.setValue(_c,(_b||_a));
};
dojox.wire.connect=function(_d,_e,_f){
if(!_d||!_e||!_f){
return;
}
var _10={topic:_d.topic};
if(_d.topic){
_10.handle=dojo.subscribe(_d.topic,function(){
dojox.wire.transfer(_e,_f,arguments);
});
}else{
if(_d.event){
_10.handle=dojo.connect(_d.scope,_d.event,function(){
dojox.wire.transfer(_e,_f,arguments);
});
}
}
return _10;
};
dojox.wire.disconnect=function(_11){
if(!_11||!_11.handle){
return;
}
if(_11.topic){
dojo.unsubscribe(_11.handle);
}else{
dojo.disconnect(_11.handle);
}
};
}
