var CityUI = function(){
return ['',
		'<fieldset class="data_win">',
		'<legend><select id="slt_parent_c"></select><input id="chk_parent_c" type="checkbox" disabled="disabled" value="0" /><label for="chk_parent_c">选择该城市</label></legend>',
		'<ul id="shw_child_c"></ul></fieldset> ',
		'<fieldset class="data_win">',
		'<legend>您选择了以下城市</legend>',
		'<ul id="ipt_child_c"></ul></fieldset> ',
		''].join('');
};
var FacultyUI = function(){
return ['',
		'<fieldset class="data_win">',
		'<legend><select id="slt_parent_f"></select><input id="chk_parent_f" type="checkbox" disabled="disabled" value="0" /><label for="chk_parent_f">选择该职能</label></legend>',
		'<ul id="shw_child_f"></ul></fieldset> ',
		'<fieldset class="data_win">',
		'<legend>您选择了以下职能</legend>',
		'<ul id="ipt_child_f"></ul></fieldset> ',
		''].join('');
};

var SpecialtyUI = function(){
return ['',
		'<fieldset class="data_win">',
		'<legend><select id="slt_parent_s"></select><input id="chk_parent_s" type="checkbox" disabled="disabled" value="0" /><label for="chk_parent_s">选择该专业</label></legend>',
		'<ul id="shw_child_s"></ul></fieldset> ',
		'<fieldset class="data_win">',
		'<legend>您选择了以下专业</legend>',
		'<ul id="ipt_child_s"></ul></fieldset> ',
		''].join('');
};

var WidgetUI = {City:null,Faculty:null,Specialty:null};

Ext.onReady(function(){
	if(!WidgetUI.City){
		WidgetUI.City = new Ext.Window({
			title:'选择城市', 
			layout:'fit',
			width:500,
			closeAction:'hide',
			plain: true,
			modal:true, 
			shadow:false, 
			bodyStyle:'padding:5px;', 
			html:CityUI(),
			resizable:false ,
			autoHeight:true,
			buttons: [{ 
				text:'确定',
				handler: function(){Get();WidgetUI.City.hide();}
			},{
				text:'关闭',
				handler: function(){if(WidgetUI.City) WidgetUI.City.hide();}
			}]
		});	
	}
	
	if(!WidgetUI.Faculty){
		WidgetUI.Faculty = new Ext.Window({
			title:'选择职能', 
			layout:'fit',
			width:600,
			closeAction:'hide',
			plain: true,
			modal:true, 
			shadow:false, 
			bodyStyle:'padding:5px;', 
			html:FacultyUI(),
			resizable:false ,
			autoHeight:true,
			buttons: [{ 
				text:'确定',
				handler: function(){Get();WidgetUI.Faculty.hide();}
			},{
				text:'关闭',
				handler: function(){if(WidgetUI.Faculty) WidgetUI.Faculty.hide();}
			}]
		});	
	}
	
	if(!WidgetUI.Specialty){
		WidgetUI.Specialty = new Ext.Window({
			title:'选择专业', 
			layout:'fit',
			width:600,
			closeAction:'hide',
			plain: true,
			modal:true, 
			shadow:false, 
			bodyStyle:'padding:5px;', 
			html:SpecialtyUI(),
			resizable:false ,
			autoHeight:true,
			buttons: [{ 
				text:'确定',
				handler: function(){Get();WidgetUI.Specialty.hide();}
			},{
				text:'关闭',
				handler: function(){if(WidgetUI.Specialty) WidgetUI.Specialty.hide();}
			}]
		});	
	}	
	
});

var DataWin = function(opts){this.initialize(opts);};
DataWin.data = null;
DataWin.max = 5;
DataWin.flag =  '';
DataWin.sltStr =  '';
DataWin.oSlt = '';
DataWin.oChk = '';
DataWin.oShw = '';
DataWin.oIpt = '';
DataWin.iptId = '';
DataWin.iptName = '';
DataWin.prototype = {
	initialize: function(opts){
		var options = opts || {};
		DataWin.data = this.data = options.data || null; //数据
		DataWin.flag = this.flag = options.flag || '_c';
		this.slt = options.slt || '';
		this.chk = options.chk || '';
		this.shw = options.shw || '';
		this.ipt = options.ipt || '';
		DataWin.oSlt = this.oSlt = document.getElementById(options.slt) || '';
		DataWin.oChk = this.oChk = document.getElementById(options.chk) || '';
		DataWin.oShw = this.oShw = document.getElementById(options.shw) || '';
		DataWin.oIpt = this.oIpt = document.getElementById(options.ipt) || '';
		DataWin.max = this.max = options.max || 5; //最多选择项
		DataWin.iptId = this.iptId = document.getElementById(options.iptId) || null; //输出编号ID
		DataWin.iptName = this.iptName = document.getElementById(options.iptName) || null; //输出名字ID
		DataWin.sltStr = this.sltStr = DataWin.iptId.value;
		if(this.data==null) throw new Error("没有提供数据!");
	},
	initParent: function(){
		var oDt = DataWin.filter(0);
		this.oSlt.options.length = 0;
		var str = ',' + this.sltStr;
		for(var i=0;i<oDt.length;i++){
			var opt = document.createElement("OPTION");
			opt.value = oDt[i][3]; 
			opt.text = oDt[i][4]; 
			if(str!=','&&str.indexOf(','+oDt[i][3]+',')!=-1){
				opt.selected = true;
				this.oChk.checked = true;
			}
			this.oSlt.options.add(opt);
		}
		if(this.sltStr==''){
			for(var i=0;i<this.oSlt.options.length;i++){
				if(this.oSlt.options[i].value=='23'){this.oSlt.options[i].selected = true;}
			}
		};
	},
	initChild: function(){
		var v = this.oSlt.options[this.oSlt.selectedIndex].value;
		var str = ','+DataWin.sltStr;
		var oDt = DataWin.filter(v);
		this.oShw.innerHTML = ''; 
		var dsb = false;
		var chk = false;
		if(str.indexOf(','+v+',')!=-1){ chk = dsb = this.oChk.checked = true;
		}else{chk = dsb = this.oChk.checked = false;};
		for(var i=0;i<oDt.length;i++){
			if(str!=','&&str.indexOf(','+oDt[i][3]+',')!=-1&&!dsb) chk = true;
			else chk = false;
			DataWin.createLI(this.oShw,'shw',oDt[i][3],oDt[i][4],chk,dsb,'onclick="DataWin.choose(this,1);"');
		};
	},
	init: function(){
		this.initParent();
		this.initChild();
		var arr = DataWin.sltStr.split(',');
		DataWin.oIpt.innerHTML = '';
		for(var i=0; i<arr.length; i++){
			if(!isNaN(parseInt(arr[i]))){
				DataWin.createLI(DataWin.oIpt,'ipt'+DataWin.flag,arr[i],DataWin.get(arr[i],4),false,false,'onclick="DataWin.remove(this);"');
			}
		};
	}
};

DataWin.createLI= function(el,n,v,t,chk,dsb,ev){
	var chkS = chk?'checked="checked"':'';
	var dsbS = dsb?'disabled="disabled"':'';		
	var str = '<input type="checkbox" '+ev+' name="'+n+'" id="'+n+'_'+v+'" value="'+v+'" '+chkS+' '+dsbS+'/><label for="'+n+'_'+v+'" title="'+t+'">'+t+'</label>';
	var li = document.createElement('li');
	li.innerHTML = str;
	el.appendChild(li);
};
DataWin.get= function(id,rt){
	for(var i=0;i<DataWin.data.length;i++){if(DataWin.data[i][3]==id){return DataWin.data[i][rt];}}
};
DataWin.filter= function(id){
	var ii=0;
	var oData = new Array();	
	for(var i=0;i<DataWin.data.length;i++){
		if(DataWin.data[i][0]==id){
			oData[ii] = DataWin.data[i];
			ii++;
		}
	}
	return oData;
};
DataWin.remove= function(obj){
	if(typeof obj=='undefined' ) return;
	var value = DataWin.oSlt.options[DataWin.oSlt.selectedIndex].value;
	var pv = DataWin.get(obj.value,0);
	var els = Ext.DomQuery.select('input[name=shw]');
	var oNode = Ext.getDom('ipt'+DataWin.flag+'_'+obj.value);
	
	if(oNode&&oNode.nodeType===1){
		DataWin.oIpt.removeChild(oNode.parentNode);
		if(pv==0){
			for(var m=0; m< els.length; m++){
				els[m].checked = false;
				els[m].disabled = false;
			}
			DataWin.oChk.checked = false;
		}else{
			for(var n=0; n< els.length; n++){
				if(els[n].value==obj.value) els[n].checked = false;
			}
		}
		DataWin.iptData();
	}
};
DataWin.removeSlt= function(obj,m){
	if(typeof obj=='undefined' ) return;
	var value = (m==0)?DataWin.oSlt.options[DataWin.oSlt.selectedIndex].value:obj.value;
	var eli = Ext.DomQuery.select('input[name=ipt'+DataWin.flag+']');
	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'+DataWin.flag+'_'+value);
		if(oNode&&oNode.nodeType===1){
			DataWin.oIpt .removeChild(oNode.parentNode);
			DataWin.iptData();
		}
	};
};
DataWin.choose= function(obj,flag){
	if(typeof obj=='undefined' ) return;
	if(flag==0){//选中全部
		var els = Ext.DomQuery.select('input[name=shw]');
		for(var i=0; i< els.length; i++){
			els[i].checked = obj.checked;
			els[i].disabled = obj.checked;
		}
	};
	if(obj.checked){DataWin.add(obj,flag);
	}else{DataWin.removeSlt(obj,flag);}
};
DataWin.add= function(obj,flag){
	if(typeof obj=='undefined' ) return;
	var slt_parent = DataWin.oSlt.options[DataWin.oSlt.selectedIndex].value;
	var value = (flag==0)?slt_parent:obj.value;
	var eli = Ext.DomQuery.select('input[name=ipt'+DataWin.flag+']');
	if(flag==0){
		var oDt = DataWin.filter(slt_parent);	
		var oNode = null;
		for(var m=0; m< eli.length; m++){
			for(var n=0; n< oDt.length; n++){
				if(eli[m].value==oDt[n][3]){
					oNode = Ext.getDom('ipt_'+eli[m].value);
					if(oNode&&oNode.nodeType===1){
						DataWin.oIpt.removeChild(oNode.parentNode);
					}
				}
			}
		}
		DataWin.iptData();
	};
	if(obj.checked){
		el_ipt = DataWin.sltStr.split(',');
		if(el_ipt.length-1>=DataWin.max){
			alert('最多只能选择'+DataWin.max+'项');
			if(flag==0){
				var els = Ext.DomQuery.select('input[name=shw]');
				for(var i=0; i< els.length; i++){
					els[i].checked = false;
					els[i].disabled = false;
				}
			}
			obj.checked = false; return ;
		}
	}
	var exist = false;
	for(var i=0; i< eli.length; i++){
		if(eli[i].value==value) exist = true;
	};
	if(!exist){
		DataWin.createLI(DataWin.oIpt,'ipt'+DataWin.flag,value,DataWin.get(value,4),false,false,'onclick="DataWin.remove(this);"');
		DataWin.iptData();
	};
};
DataWin.iptData= function(){
	var eli = Ext.DomQuery.select('input[name=ipt'+DataWin.flag+']');
	var ids  = '';
	var names  = '';
	for(var i=0; i< eli.length; i++){
		if(!isNaN(parseInt(eli[i].value))) {
			ids += eli[i].value +',';
			names += DataWin.get(eli[i].value,4) +',';
		}
	}
	DataWin.sltStr = ids;
	return {"id":ids,"name":names} ;
};

function showCity(id,name){
	WidgetUI.City.show();
	var dw = new DataWin({flag:'_c',max:1,data:myArea,slt:'slt_parent_c',chk:'chk_parent_c',shw:'shw_child_c',ipt:'ipt_child_c',iptId:id,iptName:name});
	dw.init();
	Ext.addBehaviors({	 
		'select[id=slt_parent_c]@change':function(){dw.initChild();},
		'input[id=chk_parent_c]@click':function(){DataWin.choose(this,0);}
	});
};
function showFaculty(id,name){
	WidgetUI.Faculty.show();
	var dwf = new DataWin({flag:'_f',max:1,data:myFaculty,slt:'slt_parent_f',chk:'chk_parent_f',shw:'shw_child_f',ipt:'ipt_child_f',iptId:id,iptName:name});
	dwf.init();
	Ext.addBehaviors({	 
		'select[id=slt_parent_f]@change':function(){dwf.initChild();},
		'input[id=chk_parent_f]@click':function(){DataWin.choose(this,0);}
	});
}
function showSpecialty(id,name){
	WidgetUI.Specialty.show();
	var dws = new DataWin({flag:'_s',max:1,data:mySpecialty,slt:'slt_parent_s',chk:'chk_parent_s',shw:'shw_child_s',ipt:'ipt_child_s',iptId:id,iptName:name});
	dws.init();
	Ext.addBehaviors({	 
		'select[id=slt_parent_s]@change':function(){dws.initChild();},
		'input[id=chk_parent_s]@click':function(){DataWin.choose(this,0);}
	});
}
function Get(){
	var d =  DataWin.iptData();
	if(d.id!=''){
		Ext.getDom(DataWin.iptId).value = d.id;
		Ext.getDom(DataWin.iptName).value = d.name;
	}else{
		var v = (DataWin.flag=='_c')?'城市':'职能';
		Ext.getDom(DataWin.iptId).value = '';
		Ext.getDom(DataWin.iptName).value = '不限'+v;
	}
}