﻿// 职位层
function JobLayer() {

	var opts = new Array();
	
	var finish = false;
	
	this.form = "";
						
	this.getJobListCode = function(code) {	
	
		var ajax = new ajaxRequest();
		
		ajax.url = url + "/Tools/Ajax.aspx?t=jobtree&code=" + code;
								
		ajax.callback = function(xmlobj) {
		
			opts = new Array();
			
			var node = null;
			
			var xpath = "//data/job";
			
			var DOMDocument = xmlobj.responseXML;
			
			if( isIE() ) {	//IE
				node = DOMDocument.selectNodes(xpath);
			}
			else {	// Mozilla FireFox
			
				var NodeArray = new Array();
				
				var xPathResult = DOMDocument.evaluate(xpath, DOMDocument, DOMDocument.createNSResolver(DOMDocument.documentElement), XPathResult.ORDER_NODE_ITERATOR_TYPE, null);
				
				if(xPathResult) {
				
					var oNode = xPathResult.iterateNext();
					
					while(oNode) {
					
						NodeArray[NodeArray.length] = oNode;
						
						oNode = xPathResult.iterateNext();
					
					}
				
				}
				
				node = NodeArray;			
			}
						
			var patn = new RegExp("\\d{3}", "ig");
						
			for(var i=0; i<node.length; i++) {
				
				var opt = document.createElement("option");		
				
				opt.value = node[i].getAttribute("code");
				
				opt.text = node[i].getAttribute("name");

				opts[i] = opt;				
			}
			
			finish = true;
						
		}
		
		ajax.send();
	}
	

	// 初始化区域层
	this.initialize = function() {
	
		this.getJobListCode("");
		
		var html = "";
		
		html += '<div class=\"popupLayer\">';
		html += '<div class="popupTitle"><h2>请选择工作职位 (您最多可以选择5个不同的工作职位)</h2><a onclick="javascript:filterLayer.cancel();filterLayer.hideLayer(\'popupJob\');">[确定]</a></div>';
		html += '<div class="popupContent">';
		html += '<div class="popupCategory">';
		html += '请选择工作职位';
		html += '<select id="sltJobList" onchange="JobLayer.SelectedChangedJob(this.value, 2)">';
		html += '</select>';
		html += '</div>';
		html += '<div class="popupList">'
		html += '<dl id="popupJobContent">';
		html += '</dl>';
		html += '</div>';
		html += '</div>';
		html += '<dl id="popupJobSelected" class="popupSelected">';
		html += '<dt>您已经选择的职位是：<a href="javascript:;" onclick="javascript:JobLayer.Clear();">清空所有选项</a></dt>';
		html += '</dl>';
		html += '<a class="layerok" href="javascript:JobLayer.enter();filterLayer.cancel();filterLayer.hideLayer(\'popupJob\');">确定</a>';
		html += '</div>';
		
		setTimeout("popupJob.GetJob()", 1000);
		
		return html;
	};
	
	this.GetJob = function() {
		if( !finish )
		{
			setTimeout("popupJob.GetJob()", 1000);
			return;
		}
		
		for(var i=0; i<opts.length; i++) {
			$("sltJobList").options.add(opts[i]);
		}
		
		JobLayer.SelectedChangedJob($("sltJobList").value, 2);
	}
	
	// 选择框变换
	JobLayer.SelectedChangedJob = function() {

		var ajax = new ajaxRequest();
		
		ajax.url = url + "/Tools/Ajax.aspx?t=jobtree&code=" + arguments[0];
		
		if( arguments.length>=2 ) ajax.url += "&len=" + arguments[1].toString();
												
		ajax.callback = function(xmlobj) {
					
			var node = null;
			
			var xpath = "//data/job";
			
			var DOMDocument = xmlobj.responseXML;
			
			if( isIE() ) {	//IE
				node = DOMDocument.selectNodes(xpath);
			}
			else {	// Mozilla FireFox
			
				var NodeArray = new Array();
				
				var xPathResult = DOMDocument.evaluate(xpath, DOMDocument, DOMDocument.createNSResolver(DOMDocument.documentElement), XPathResult.ORDER_NODE_ITERATOR_TYPE, null);
				
				if(xPathResult) {
				
					var oNode = xPathResult.iterateNext();
					
					while(oNode) {
					
						NodeArray[NodeArray.length] = oNode;
						
						oNode = xPathResult.iterateNext();
					
					}
				
				}
				
				node = NodeArray;			
			}
			
			var lstJob = $("popupJobContent");
			var innerHTML = ""
			innerHTML += '<dt><input type="checkbox" id="cb_job_all" name="cb_job_all" value="' + $("sltJobList").value + '" onclick="javascript:JobLayer.ItemsClick(this);" /><label id="lbl_job_all" for="cb_job_all">' + $("sltJobList").options[$("sltJobList").selectedIndex].text + '</label>(选择此大类，将包括以下所有小类)</dt>';
			
			var patn = new RegExp("\\d{3}", "ig");
						
			for(var i=0; i<node.length; i++) {
				
				innerHTML += '<dd><input type="checkbox" id="cb_job_' + node[i].getAttribute("code") + '" name="cb_job_' + node[i].getAttribute("code") + '" value="' + node[i].getAttribute("code") + '" onclick="javascript:JobLayer.ItemClick(this);" /><label id="lbl_job_' + node[i].getAttribute("code") + '" for="cb_job_' + node[i].getAttribute("code") + '">' + node[i].getAttribute("name") + '</label></dd>';
				
			}
			lstJob.innerHTML = innerHTML;
			
			for(var i=0; i<popupJob.Value.length; i++) {
				if( $("cb_job_all").value==popupJob.Value[i] ) {
					var objs = lstJob.getElementsByTagName("input");
					for(var j=0; j<objs.length; j++) {
						objs[j].disabled = true;
					}
					$("cb_job_all").checked = true;
					$("cb_job_all").disabled = false;
					break;
				}
				else {				
					if( $("cb_job_" + popupJob.Value[i])!=null ) {
						$("cb_job_" + popupJob.Value[i]).checked = true;
					}
				}
			}
			
		}
		
		ajax.send();
	}
	
	// 全部选择
	JobLayer.ItemsClick = function(obj) {
		var objs = $("popupJobContent").getElementsByTagName("input");
		var patn = /^cb_job_\d+$/;
		for(var i=0; i<objs.length; i++) {
			if( objs[i].type != "undefined" && objs[i].type=='checkbox' && patn.test(objs[i].id) ) {
				objs[i].disabled = obj.checked;
				if( obj.checked ) {
					objs[i].checked = false;
					for(var j=0; j<popupJob.Value.length; j++) {						
						if( popupJob.Value[j]==objs[i].value ) {
							popupJob.Value.splice(j, 1);
							popupJob.Text.splice(j, 1);
						}
					}
				}
			}				
		}
		
		if( obj.checked ) {
			if( popupJob.Value.length>=5 ) {
				obj.checked = false;
				for(var i=0; i<objs.length; i++) {
					if( objs[i].type != "undefined" && objs[i].type=='checkbox' && patn.test(objs[i].id) ) {
						objs[i].disabled = false;
					}
				}				
				alert("您最多可以选择5个不同的工作地点");				
				return;				
			}		
			popupJob.Value[popupJob.Value.length] = obj.value;
			popupJob.Text[popupJob.Text.length] = $("lbl_job_all").innerHTML;
		}
		else {
			for(var i=0; i<popupJob.Value.length; i++) {
				if( popupJob.Value[i]==obj.value ) {
					popupJob.Value.splice(i, 1);
					popupJob.Text.splice(i, 1);
				}
			}
		}
		
		var innerHTML = "";
		innerHTML += '<dt>您已经选择的职位是：<a href="javascript:;" onclick="javascript:JobLayer.Clear();">清空所有选项</a></dt>';
		
		for(var i=0; i<popupJob.Value.length; i++) {
			innerHTML += '<dd><input type="checkbox" id="cb_job_slt_' + popupJob.Value[i] + '" name="cb_job_slt_' + popupJob.Value[i] + '" value="' + popupJob.Value[i] + '" checked="checked" onclick="javascript:JobLayer.ItemClick(this);" /><label id="lbl_job_slt_' + popupJob.Value[i] + '" for="cb_job_slt_' + popupJob.Value[i] + '">' + popupJob.Text[i] + '</label></dd>';
		}
		$("popupJobSelected").innerHTML = innerHTML;
	}
	
	// 单项选择
	JobLayer.ItemClick = function(obj) {
		var nItem = 0;
		
		if( obj.checked ) {
			if( popupJob.Value.length>=5 ) {
				obj.checked = false;
				alert("您最多可以选择5个不同的工作职位");
				return;				
			}
		}
		
		var nIndex = -1;
		for(var i=0; i<popupJob.Value.length; i++) {
			if( popupJob.Value[i]==obj.value ) {
				nIndex = i;
				break;
			}
		}
		
		if( obj.checked ) {
			// 不存在该选择，则添加
			if( nIndex==-1 ) {
				popupJob.Value.push(obj.value);
				popupJob.Text.push($("lbl_job_" + obj.value).innerHTML);
			}
		}
		else {
			// 存在则删除
			if( nIndex!=-1 ) {
				popupJob.Value.splice(nIndex, 1);
				popupJob.Text.splice(nIndex, 1);
				if( $("cb_job_" + obj.value)!=null ) {
					$("cb_job_" + obj.value).checked = false;
				}
			}
		}
				
		var innerHTML = "";
		innerHTML += '<dt>您已经选择的职位是：<a href="javascript:;" onclick="javascript:JobLayer.Clear();">清空所有选项</a></dt>';
		
		for(var i=0; i<popupJob.Value.length; i++) {
			innerHTML += '<dd><input type="checkbox" id="cb_job_slt_' + popupJob.Value[i] + '" name="cb_job_slt_' + popupJob.Value[i] + '" value="' + popupJob.Value[i] + '" checked="checked" onclick="javascript:JobLayer.ItemClick(this);" /><label id="lbl_job_slt_' + popupJob.Value[i] + '" for="cb_job_slt_' + popupJob.Value[i] + '">' + popupJob.Text[i] + '</label></dd>';
		}
		$("popupJobSelected").innerHTML = innerHTML;
	}
	
	// 清空所有选择
	JobLayer.Clear = function() {
		popupJob.Value.length = popupJob.Text.length = 0;
		
		var objs = $("popupJobContent").getElementsByTagName("input");
		for(var i=0; i<objs.length; i++) {
			objs[i].disabled = false;
			objs[i].checked = false;
		}
		
		var innerHTML = "";
		innerHTML += '<dt>您已经选择的职位是：<a href="javascript:;" onclick="javascript:JobLayer.Clear();">清空所有选项</a></dt>';
		
		for(var i=0; i<popupJob.Value.length; i++) {
			innerHTML += '<dd><input type="checkbox" id="cb_job_slt_' + popupJob.Value[i] + '" name="cb_job_slt_' + popupJob.Value[i] + '" value="' + popupJob.Value[i] + '" checked="checked" onclick="javascript:JobLayer.ItemClick(this);" /><label id="lbl_job_slt_' + popupJob.Value[i] + '" for="cb_job_slt_' + popupJob.Value[i] + '">' + popupJob.Text[i] + '</label></dd>';
		}
		$("popupJobSelected").innerHTML = innerHTML;
	}
	
	JobLayer.ok = function(obj, form) {	
		if( $(form)==null ) return false;
		if( form=="" ) return false;
		
		var jobInput;
		if( $("job")==null ) {
			jobInput = document.createElement("input");
			jobInput.setAttribute("type", "hidden");
			jobInput.id = "job";
			jobInput.name = "job";
			$(form).appendChild(jobInput);
		}
		else {
			jobInput = $("job");
		}
		
		jobInput.value = "";
		$(obj).value = "";
		for(var i=0; i<popupJob.Value.length; i++) {
			jobInput.value += popupJob.Value[i] + "-";
			$(obj).value += popupJob.Text[i] + ",";
		}
		jobInput.value = jobInput.value.substring(0, jobInput.value.length-1);
		$(obj).value = $(obj).value.substring(0, $(obj).value.length-1);
		if( $(obj).value.length==0 ) {
			$(obj).value = "请选择";
		}
	}
	
	// 来自哪个表格
	JobLayer.form = function(str) {
		popupJob.from = str;		
	}
	
	// 当点击确定的时候
	JobLayer.enter = function() {	
		if( popupJob.from == "form_search" )
		{
			JobLayer.ok("btnSelectCode", "form_search");
		}
		else
		{			
			JobLayer.ok("btnPosCode", "form_search1");
		}
	}	
	
	this.Text = new Array();
	this.Value = new Array();
}

var popupJob = new JobLayer();