var DataWin2 = function(opts){
  	this.initialize(opts);
};
DataWin2.get= function(id){
	for(var i=0;i<DataWin2.data.length;i++){if(DataWin2.data[i][0]==id){return DataWin2.data[i][1];}}
};
DataWin2.createLI= function(el,n,v,t,chk,ev){
	var chkS = chk?'checked="checked"':'';
	var str = '<input type="checkbox" '+ev+' name="'+n+'" id="'+n+'_'+v+'" value="'+v+'" '+chkS+' /><label for="'+n+'_'+v+'" title="'+t+'">'+t+'</label>';
	var li = document.createElement('li');
	li.innerHTML = str;
	el.appendChild(li);
};
DataWin2.initChild= function(){
	var sltIds = ','+ DataWin2.sltstr;
	var oDt = DataWin2.data;
	DataWin2.shw_calling.innerHTML = ''; 
	var chk = false;
	for(var i=0;i<oDt.length;i++){
		if(sltIds!=','&&sltIds.indexOf(','+oDt[i][0]+',')!=-1){ chk = true}else{chk = false};
		DataWin2.createLI(DataWin2.shw_calling,'shw',oDt[i][0],oDt[i][1],chk,'onclick="DataWin2.choose(this);"');
	};
};	
DataWin2.remove= function(obj){
	if(typeof obj=='undefined' ) return;
	var els = Ext.DomQuery.select('input[name=shw]');
	var oNode = Ext.getDom('ipt_'+obj.value);
	if(oNode&&oNode.nodeType===1){
		DataWin2.ipt_calling.removeChild(oNode.parentNode);
		for(var n=0; n< els.length; n++){
			if(els[n].value==obj.value) els[n].checked = false;
		}
		DataWin2.iptIds();
	}
};
DataWin2.removeSlt= function(obj){
	if(typeof obj=='undefined' ) return;
	var value = obj.value;
	var eli = Ext.DomQuery.select('input[name=ipt]');
	var exist = false;
	for(var i=0; i< eli.length; i++){
		if(eli[i].value==value) exist = true;
	};
	if(exist){
		var oNode = Ext.getDom('ipt_'+value);
		if(oNode&&oNode.nodeType===1){
			DataWin2.ipt_calling .removeChild(oNode.parentNode);
			DataWin2.iptIds();
		}
	};
	obj.checked = false;
};
DataWin2.choose= function(obj){
	if(typeof obj=='undefined' ) return;
	if(obj.checked){DataWin2.add(obj);
	}else{DataWin2.removeSlt(obj);}
};
DataWin2.add= function(obj){
	if(typeof obj=='undefined' ) return;
	var value = obj.value;
	var eli = Ext.DomQuery.select('input[name=ipt]');
	if(obj.checked){
		el_ipt = DataWin2.sltstr.split(',');
		if(el_ipt.length-1>=DataWin2.max){
			alert('最多只能选择'+DataWin2.max+'项');
			obj.checked = false; return ;
		}
	}
	var exist = false;
	for(var i=0; i< eli.length; i++){
		if(eli[i].value==value) exist = true;
	};
	if(!exist){
		DataWin2.createLI(DataWin2.ipt_calling,'ipt',value,DataWin2.get(value),false,'onclick="DataWin2.remove(this);"');
		DataWin2.iptIds();
	};
};
DataWin2.iptIds= function(){
	var eli = Ext.DomQuery.select('input[name=ipt]');
	var ids  = '';
	for(var i=0; i< eli.length; i++){
		if(!isNaN(parseInt(eli[i].value))) ids += eli[i].value +',';
	}
	DataWin2.sltstr = ids;
	return ids ;
},
DataWin2.iptNames= function(){
	var eli = DataWin2.sltstr.split(','), names = '';
	
	for(var i=0; i< eli.length; i++){
		if(!isNaN(parseInt(eli[i]))) names += DataWin2.get(eli[i]) +',';
	}
	return names;
},
DataWin2.init= function(){
	var arr = DataWin2.sltstr.split(',');
	DataWin2.ipt_calling.innerHTML = '';
	for(var i=0; i<arr.length; i++){
		if(!isNaN(parseInt(arr[i]))){
			DataWin2.createLI(DataWin2.ipt_calling,'ipt',arr[i],DataWin2.get(arr[i]),false,'onclick="DataWin2.remove(this);"');
		}
	};
};
DataWin2.uiStr= function(){
return ['',
		'<div class="dataDiv">',
		'<fieldset class="data_win">',
		'<legend>请选择'+DataWin2.name+'</legend>',
		'<ul id="shw_calling"></ul></fieldset> ',
		'<fieldset class="data_win">',
		'<legend>您选择了以下'+DataWin2.name+' [如想取消请单击对应选项]</legend>',
		'<ul id="ipt_calling"></ul></fieldset> ',
		'</div>',
		''].join('');
};
DataWin2.win = null;
DataWin2.data = null;
DataWin2.max = 5;
DataWin2.name = '';
DataWin2.title =  '';
DataWin2.def = '';
DataWin2.sltstr =  '';
DataWin2.shw_calling = '';
DataWin2.ipt_calling = '';
DataWin2.ipt_id = '';
DataWin2.ipt_name = '';

DataWin2.prototype = {
	initialize: function(opts){
		var options = opts || {};
		DataWin2.data = this.data = options.data || null; //数据
		DataWin2.sltstr = this.sltstr = options.sltstr || ''; //初始编号
		DataWin2.max = this.max = options.max || 5; //最多选择项
		DataWin2.name = this.name = options.name || '地区'; //项目名
		DataWin2.title = this.title = options.title || '选择工作地区'; //标题
		DataWin2.def = this.def = options.def || ''; //为空时默认值
		DataWin2.ipt_id = this.iptId = options.iptId || null; //输出编号ID
		DataWin2.ipt_name = this.iptName = options.iptName || null; //输出名字ID
		if(this.data==null) throw new Error("没有提供数据!");
		if(!DataWin2.win){
			DataWin2.win = new Ext.Window({
				title:this.title, 
				layout:'fit',
				width:680,
				closeAction:'hide',
				plain: true,
				modal:true, 
				shadow:false, 
				bodyStyle:'padding:5px;', 
				html:DataWin2.uiStr(),
				resizable:true ,
				autoHeight:true, 
				buttons: [{  
					text:'确定',
					handler: function(){
						if(DataWin2.ipt_id) document.getElementById(DataWin2.ipt_id).value = DataWin2.sltstr;
						if(DataWin2.ipt_name) document.getElementById(DataWin2.ipt_name).value = DataWin2.iptNames();
						if(DataWin2.sltstr=='') document.getElementById(DataWin2.ipt_name).value = DataWin2.def;
						DataWin2.win.hide();
						DataWin2.win.close();
					},
					listeners : new Ext.KeyMap(document,{
						key: 13, // or Ext.EventObject.ENTER
						fn: function(){if(DataWin2.win.isVisible()){
						if(DataWin2.ipt_id) document.getElementById(DataWin2.ipt_id).value = DataWin2.sltstr;
						if(DataWin2.ipt_name) document.getElementById(DataWin2.ipt_name).value = DataWin2.iptNames();
						if(DataWin2.sltstr=='') document.getElementById(DataWin2.ipt_name).value = DataWin2.def;
							DataWin2.win.hide();
							DataWin2.win.close();
						}}
					})
				},{
					text:'关闭',
					handler: function(){if(DataWin2.win) DataWin2.win.hide();DataWin2.win.close();}
				}]
			});	
		};
	},
	show: function(){
		DataWin2.win.show();
		var w = (Ext.get(document.body).getViewSize().width - DataWin2.win.getSize().width )/2;
		var h = (Ext.get(document.body).getViewSize().height - 490)/2;
		DataWin2.win.setPosition(w,h);
		DataWin2.sltstr = document.getElementById(this.iptId).value;
		DataWin2.shw_calling = this.shw_calling = document.getElementById('shw_calling');
		DataWin2.ipt_calling = this.ipt_calling = document.getElementById('ipt_calling');
		DataWin2.init();
		DataWin2.initChild();
	}
}

