1 var YInputLinker = function(){
  2 	this.___listener = new YListener();
  3 	var _funk_ = function(evt,desc,dat){dat.own._change_element(desc,dat);};
  4 	this._change_element = function(desc,dataz){
  5 		var changed=true;
  6 		switch(dataz.type){
  7 			case 'bool' :
  8 				dataz.obj[dataz.index]=dataz.dom.checked||dataz.dom.value=="true";
  9 				break;
 10 			case 'list' :
 11 			case 'text' :
 12 				dataz.obj[dataz.index]=dataz.dom.value;
 13 				break;
 14 			case 'int' :
 15 				var num=parseInt(dataz.dom.value);
 16 				if(typeof(dataz.min)=="number")num=Math.max(dataz.min,num);
 17 				if(typeof(dataz.max)=="number")num=Math.min(dataz.max,num);
 18 				num=Math.round(num);
 19 				if(num+""!=dataz.dom.value)dataz.dom.value=num;
 20 				dataz.obj[dataz.index]=num;
 21 				break;
 22 			case 'float' :
 23 				var num=parseFloat(dataz.dom.value);
 24 				if(typeof(dataz.min)=="number")num=Math.max(dataz.min,num);
 25 				if(typeof(dataz.max)=="number")num=Math.min(dataz.max,num);
 26 				if(num+""!=dataz.dom.value)dataz.dom.value=num;
 27 				dataz.obj[dataz.index]=num;
 28 				break;
 29 			default:changed=false;
 30 			
 31 		} 
 32 		// Function(obj,index,dom,value,datas);
 33 		if(changed)this.___listener.fire('change',[dataz.obj,dataz.index,dataz.dom,dataz.obj[dataz.index]]);
 34 	};
 35 	// Function(obj,index,dom,value,datas);
 36 	this.addListener = function(Function,datas){
 37 		this.___listener.addListener('change',Function,datas);
 38 	};
 39 	this.removeListener = function(Function,datas){
 40 		this.___listener.removeListener('change',Function,datas);
 41 	};
 42 	this._link_dataz = function(obj,index,dom,type,more){
 43 		var dataz = {own:this,obj:obj,index:index,dom:YDom.get(dom),type:type};
 44 		if(more)for(var i in more)dataz[i]=more[i];
 45 		if(type=="bool")dataz.dom.checked=obj[index];
 46 		else dataz.dom.value=obj[index]+"";
 47 		//alert(index+" '"+obj[index]+"' = '"+dataz.dom.value+"'");
 48 		return dataz;
 49 	};
 50 	this.linkList = function(obj,index,dom,list){
 51 		var dataz = this._link_dataz(obj,index,dom,'list',{list:[]});
 52 		YEvt.addCollection(dataz.dom,['change'],_funk_,dataz);
 53 		return dataz.dom;
 54 	};
 55 	this.linkText = function(obj,index,dom,highLevel){
 56 		var dataz = this._link_dataz(obj,index,dom,'text');
 57 		YEvt.addCollection(dataz.dom,highLevel?['keyup','mouseup']:['change','focusout'],_funk_,dataz);
 58 		return dataz.dom;
 59 	};
 60 	this.linkInt = function(obj,index,dom,min,max,highLevel){
 61 		var dataz = this._link_dataz(obj,index,dom,'int',{min:min,max:max});
 62 		YEvt.addCollection(dataz.dom,highLevel?['keyup','mouseup']:['change','focusout'],_funk_,dataz);
 63 		return dataz.dom;
 64 	};
 65 	this.linkFloat = function(obj,index,dom,min,max,highLevel){
 66 		var dataz = this._link_dataz(obj,index,dom,'float',{min:min,max:max});
 67 		YEvt.addCollection(dataz.dom,highLevel?['keyup','mouseup']:['change','focusout'],_funk_,dataz);
 68 		return dataz.dom;
 69 	};
 70 	this.linkBool = function(obj,index,dom){
 71 		var dataz = this._link_dataz(obj,index,dom,'bool');
 72 		YEvt.addCollection(dataz.dom,['change'],_funk_,dataz);
 73 		return dataz.dom;
 74 	};
 75 	// 
 76 };
 77