function data(value,name){
	this.value = value;
	this.name=name;
	this.childs;
}
data.prototype.setChilds=function(childs){
	this.childs = childs;
}


function isChilds(d){
	var ret = false;
	if( typeof(d) != 'undefined' && typeof(d.childs) != 'undefined'){
		ret = true;
	}
	return ret;
}


function initialData(xml,r){
	if( typeof(xml) != 'undefined' ){
		var ds = xml.childNodes;
		if( typeof(ds) != 'undefined' ){
			for( i=0;i<ds.length;i++ ){//
				var dt = new data(ds[i].getAttribute("value"),ds[i].getAttribute("name"));
				recureData(ds[i],dt);
				r[i]=dt;
			}
		}
	}
}

function recureData(dd,dt){
	if( typeof(dd) != 'undefined' && typeof(dt) != 'undefined' ){
		var cs = dd.childNodes;
		if( typeof(cs) != 'undefined' && cs.length >  0){
			var childs = new Array();
			for( var j=0;j<cs.length;j++){
				var d = new data(cs[j].getAttribute("value"),cs[j].getAttribute("name"));
				recureData(cs[j],d);
				childs[j]	= d;
			}
			dt.setChilds(childs);
		}
	}
}



function getRowsByItemAndCols(items,cols){
	var ret = 0;
	if( typeof(items) != 'undefined' && typeof(cols) != 'undefined' && cols != 0 ){
		if( items%cols > 0 ){
			ret = items/cols + 1;
		}else{
			ret = items/cols;
		}
		ret = parseInt(ret);
	}
	return ret;
}


function changeCheckBoxState(o1){//only for checkbox
	if( typeof(o1) != 'undefined'  && o1 != null){
		o1.checked = !o1.checked;
	}
}

function findData(ary,val){ 
	var ret;
	if( typeof(ary) != 'undefined' && typeof(val) != 'undefined' ){
		for( var i = 0;i<ary.length;i++ ){
			if( typeof(ret) == 'undefined' ){
				var child = ary[i];
				if( child.value != val ){
					ret = findData(child.childs,val);
				} else{
					ret = child;
					break;
				} 
			} else{
				break;
			}
		}
	} 
	return ret;
} 

//h: 0-删除  1-增加
function processSelectedata(datas,selectedata,val,h){
	var ret = selectedata;
	if( typeof(datas) != 'undefined' && typeof(selectedata) != 'undefined' && typeof(val) != 'undefined' && typeof(h) != 'undefined'){
		if( h == 0 ){ 
			
			var k = -1;
			for( var i=0,n = 0;i<selectedata.length;i++ ){
				if( selectedata[i].value != val ){
					ret[n++]=selectedata[i];
				}else{
					k=i;
				}
			}
			if( k > -1 ){
				ret.length -= 1;
			} 
		} else if ( h == 1 ){
			var d = findData(datas,val);
			if(typeof(d) != 'undefined'){
				ret[ret.length]=d;
			}
		}else{
			//do nothing
		}
	}
	return ret;
}


function isFirstLevelContains(ary,dt){
	var ret = false;
	if( typeof(ary) != 'undefined' && typeof(dt) != 'undefined' ){
		for( var i = 0;i<ary.length;i++ ){
			if( ary[i].value == dt.value ){
				ret = true;
				break;
			}
		}
	}
	return ret;
}



function initialParentSelected(ary,elementId){
	if( typeof(ary) != 'undefined' && typeof(elementId) != 'undefined' ){
		o = document.getElementById(elementId);
		if( typeof(o) != 'undefined' ){
			 while (o.childNodes.length > 0) {
		      o.removeChild(o.firstChild);
		    }
			for( var i = 0;i<ary.length;i++ ){
				o.options.add(new Option(ary[i].name,ary[i].value));
			}
		}
	}
}







function generateChildData(v,childId,selectedId,ary,colsNum,selectedData,idPrefix,namePrefix,mainPageName,ty){
	if( typeof(v) != 'undefined' && typeof(childId) != 'undefined' && typeof(selectedId) != 'undefined' && typeof(ary) != 'undefined'){ 
		
		o1 = document.getElementById(childId).firstChild;
		var delrows = o1.rows.length;
		while( delrows--  ){
			o1.deleteRow(delrows);
		}
		
		var parentData = findData(ary,v); 
		
		if( typeof(parentData) != 'undefined'){
			
		
			var index = 0;
			var rows = 0;
			var colswidth = parseInt(100/colsNum)+'%';
			
			var tr = o1.insertRow(o1.rows.length);
			var td = tr.insertCell(0);
			var text = document.createElement("span");
			td.height="20";
			td.appendChild(text); 
			
			var parentIsChecked = isFirstLevelContains(selectedData,parentData) ? "checked" : "";
			
			
			var isDisabled = "";
			if( parentIsChecked == 'checked' ){
				isDisabled  = "disabled";
				selectedData=removeDataChilds(selectedData,parentData,getDataName(ty));
			} 
			
			
			
			var pCreateSelectedEvent = 'generateSelectedData(document.getElementById(\'' + idPrefix + parentData.value  + '\'),\'' + parentData.value +'\',\''+ selectedId + '\',' + getDataName(ty) + ',' + colsNum +',' + getSelectedDataName(ty) +',\'' +idPrefix+'\',\'' + namePrefix +'\',\'' + mainPageName + '\',\'' + ty + '\');';
			
			var parentAddEvent = 'generateChildData(\'' + v + '\',\''+ childId + '\',\'' + selectedId + '\',' +getDataName(ty)+',' + colsNum +',' + getSelectedDataName(ty)+',\''+ idPrefix +'\',\'' + namePrefix+'\',\'' + mainPageName + '\',\'' + ty + '\');';
			
			var strChk = '<input type="checkbox" ' + parentIsChecked +' name="'+ namePrefix + 'unsel' + '" id="' + idPrefix + parentData.value+  '" onClick="' + pCreateSelectedEvent + parentAddEvent + '"/>';
			var strText = '&nbsp;<span style="cursor:pointer;" onclick="changeCheckBoxState(document.getElementById(\'' + idPrefix + parentData.value  +'\'));' + pCreateSelectedEvent + parentAddEvent +'"><b>' + parentData.name +'</b></span></a>';
			text.innerHTML='&nbsp;&nbsp;&nbsp;&nbsp;' + strChk + strText;
			
			
			if( typeof(parentData.childs) != 'undefined' ){
				td.colSpan=colsNum;
				text.innerHTML += '&nbsp;&nbsp;<font color="red">(选择此大类，将包括以下所有小类)</font><br>';
				 rows = getRowsByItemAndCols(parentData.childs.length,colsNum);
					for( var i =0; i<rows;i++ ){
							var tr1 = o1.insertRow(o1.rows.length);
							for( var j = 0; j< colsNum;j++){					
								var td1 = tr1.insertCell(j);
								td1.align="left";
								td1.height="20";
								td1.width=colswidth;
								var text = document.createElement("span");
								text.innerHTML="&nbsp;&nbsp;&nbsp;&nbsp;";
								td1.appendChild(text);
									if( index < parentData.childs.length ){
										var isChildChecked = isFirstLevelContains(selectedData,parentData.childs[index]) ? "checked" : "";
										var commonEventStart = 'generateSelectedData(';
										var commonEventEnd = ',\'' + parentData.childs[index].value + '\',\''+ selectedId + '\',' +getDataName(ty)+',' + colsNum +',' + getSelectedDataName(ty)+',\''+ idPrefix +'\',\'' + namePrefix+'\',\'' + mainPageName + '\',\''+ ty + '\');';
										var c = '<input type="checkbox" ' + isDisabled+ '  ' + isChildChecked +' name="a" id="'+ idPrefix + parentData.childs[index].value + '" onClick="' + commonEventStart + 'this' + commonEventEnd + '"/>';
										var t = '&nbsp;&nbsp;' + (parentIsChecked != 'checked' ? '<span style="cursor:pointer;" onClick="changeCheckBoxState(document.getElementById(\'' + idPrefix + parentData.childs[index].value +  '\'));' + commonEventStart + 'document.getElementById(\'' +  idPrefix + parentData.childs[index].value + '\')' + commonEventEnd + '">' + parentData.childs[index].name + "</span>" : parentData.childs[index].name);

										text.innerHTML  +=  c + t;
									}else{
										text.innerHTML +="&nbsp;";
									}
								index++;
							}
						}
				 
			}
			
			} 
		
		
	}
	
}


//selectedDataMaxNum  need to modify

var selectedDataMaxNum = 5;

function generateSelectedData(o,val ,selectedId,ary,selColsNum,selectedData,idPrefix,namePrefix,mainPageName,ty,iso){ 
	
	if( typeof(o) != 'undefined' && typeof(val) != 'undefined' && typeof(selectedId) != 'undefined'){
		
		if( typeof(iso) == 'undefined' ){	
			
			
			selectedData=removeDataChilds(selectedData,findData(ary,val),getDataName(ty));
			
			
			if( o.checked &&  selectedDataMaxNum <= selectedData.length ){
				o.checked = false; 
				alert("最多可以选择" + selectedDataMaxNum + "项!");
				return false;
			}
			selectedData=processSelectedata(ary,selectedData,val,o.checked ? 1 : 0);
		}
		
		var o2 = document.getElementById(selectedId);
		if(typeof(o2) != 'undefined'){
			o2 = o2.firstChild;
			var rowsNum = o2.rows.length;
			var selectedNum = selectedData.length;
			while(rowsNum--){
				o2.deleteRow(rowsNum);
			}
			rowsNum=getRowsByItemAndCols(selectedNum,selColsNum);
			document.getElementById(mainPageName).style.display=rowsNum == 0 ?"none" : "";
			if( rowsNum > 0){
					var index = 0;
					var colWidth = (100/selColsNum) + "%";
					for(var i = 0;i<rowsNum;i++){
						var tr = o2.insertRow(o2.rows.length);
						for(var j = 0;j<selColsNum;j++){
							var td = tr.insertCell(j); 
							td.align="left";
							td.height="20";
							td.width=colWidth;
							var text = document.createElement("span");
							text.innerHTML="&nbsp;&nbsp;&nbsp;&nbsp;"
							td.appendChild(text);
							if(index < selectedNum){
								var commonEventStart = 'changeCheckBoxState(document.getElementById(\''+ idPrefix + selectedData[index].value + '\'));generateSelectedData(';
								var commonEventEnd= ',\''+ selectedData[index].value + '\',\'' + selectedId + '\',' + getDataName(ty) + ',' + selColsNum +',' + getSelectedDataName(ty) + ',\'' + idPrefix +'\',\'' + namePrefix + '\',\'' + mainPageName +'\',\'' + ty + '\');';
								var strChk = '<input type="checkbox" checked name="' + namePrefix + 'sel" id="' + idPrefix + selectedData[index].value +'sel" onclick="' + commonEventStart+ 'this' + commonEventEnd + '"/>';
								var strText = '&nbsp;&nbsp;<span onclick="changeCheckBoxState(document.getElementById(\''+ idPrefix + selectedData[index].value + 'sel\'));' + commonEventStart + 'document.getElementById(\'' + idPrefix + selectedData[index].value +  'sel\' )' + commonEventEnd + '" style="cursor:pointer">' + selectedData[index].name + '</span>';
								text.innerHTML += strChk  + strText ;
						} 
							index++;
						}
						
					}
					
			}
		}
		
	}
}






function removeDataChilds(ary,dt,alry){
	if( typeof(ary) != 'undefined' && typeof(dt) != 'undefined' ){
		if( typeof(dt.childs) != 'undefined' ){
			for(var i = 0;i<dt.childs.length;i++){
				ary =  processSelectedata(alry,ary,dt.childs[i].value,0);
			}
		}
	}
	return ary;
}






// if modifing data's name, you should modify here
//1:地区 3:职位
function getDataName(v){
	var ret = '';
	if( typeof(v) != 'undefined' ){
		if( v == 1 ){
			ret = "Area";
		} else if ( v == 3 ){
			ret = "position";
		} else if ( v==2 ) {
			ret = "industry";
		}
	}
	return ret;
}

function getSelectedDataName(v){
	var ret = '';
	if( typeof(v) != 'undefined' ){
		if( v == 1 ){
			ret = "selectedArea";
		} else if ( v == 3 ){
			ret = "selectedPosition";
		} else if ( v==2 ){
			ret = "selectedIndustry";
		}
	}
	return ret;
}


function getPreSelectedDataName(v){
	var ret = '';
	if( typeof(v) != 'undefined' ){
		if( v == 1 ){
			ret = "preSelectedArea";
		} else if ( v == 3 ){
			ret = "preSelectedPosition";
		} else if ( v ==2  ){
			ret = "preSelectedIndustry";
		}
	}
	return ret;
}









//----------------------------------


if(navigator.appName.indexOf("Explorer") > -1){//ie
	var exp=1;
} 
else{//for ff
	var exp=2;
}



var bodyScrollWidth=0;
var bodyScrollHeight=0;
function reCalBodySize(){
	if(document.getElementById("login") != null && document.getElementById("content") != null) {
		bodyScrollWidth=document.getElementById("login").scrollWidth;
		bodyScrollHeight=document.getElementById("login").scrollHeight + document.getElementById("content").scrollHeight;
		// window.alert(bodyScrollWidth +" :: "+bodyScrollHeight);
	} else {
		bodyScrollWidth=document.body.scrollWidth;
		bodyScrollHeight=document.body.scrollHeight;
		// window.alert(document.body.scrollWidth +" || "+document.body.scrollHeight);
	}
}

function buildGlobalDiv(){
		reCalBodySize();
		var globalDiv=document.createElement('div');
		globalDiv.id='globalDiv';
		globalDiv.style.display='none';
		globalDiv.style.zIndex='98';
		globalDiv = set_div_style(globalDiv,'globalDiv','0px','0px',bodyScrollWidth+'px',bodyScrollHeight+'px',"absolute"," #333333 0px solid","default","darkgray");
		globalDiv.onselectstart=function(){return false};
		if ( 1 == exp ) {
			globalDiv.style.filter="alpha(opacity=30)";
		}
		else {
			globalDiv.style.opacity=30/100;
		}
		document.body.appendChild(globalDiv);
}

function set_div_style(obj,id,top,left,width,height,position,border,cursor,background) {
        var obj = obj;
        obj.id = id?id:null;
        obj.style.top = top?top:'0px';
        obj.style.left = left?left:'0px';
        obj.style.width = width?width:'0px';
        obj.style.height = height?height:'0px';
        obj.style.position = position?position:"static";
        obj.style.border = border?border:"1px #000 solid";
        obj.style.cursor = cursor?cursor:"default";
        obj.style.background = background?background:"";
        return obj
}

var objX = 0;
var objY = 0;

function drag_mouse_down(event,obj){
	var obj_left = obj.style.left;
	var obj_top = obj.style.top;
	var obj_left = obj_left.replace(/p|x/g,"");
	var obj_top = obj_top.replace(/p|x/g,"");
	if ( event == null ) {//IE必须
		event=window.event;
	}
	var clientX = String(event.clientX).replace(/p|x/g,"");
	var clientY = String(event.clientY).replace(/p|x/g,"");
	objX = clientX - obj_left;
	objY = clientY - obj_top;
}


function drag(event,obj){
	if( objX != 0 && objY != 0 ) {
		if ( event == null ) {//IE必须
			event=window.event;
		}
		if ( event.button == 1 ||  event.button == 0 ){
			var objWidth=obj.firstChild.clientWidth;
			var objHeight=obj.firstChild.clientHeight;
			reCalBodySize();

			var leftPo= event.clientX-objX;
			if ( leftPo < 0 ) {
				leftPo=0;
			}
			if ( leftPo > bodyScrollWidth-objWidth ) {
				leftPo=bodyScrollWidth-objWidth;
			}

			var topPo=event.clientY-objY;
			if ( topPo < 0 ) {
				topPo=0;
			}
			if ( topPo > bodyScrollHeight-objHeight ) {
				topPo=bodyScrollHeight-objHeight;
			}
			obj.style.left=leftPo+'px';
			obj.style.top=topPo+'px';
		}
	}
	
}


function initDragDiv(){
	var argArr = initDragDiv.arguments;
	var layer = new Array();
	var dragObj  = new Array();
	for(var i=0;i<argArr.length;i++){
		layer[i] = document.getElementById(argArr[i]);
		layer[i].style.zIndex='999';
		var styleWidth=layer[i].style.width;
		layer[i] = set_div_style(layer[i],argArr[i],'0px','0px',styleWidth,'0px',"absolute","0px solid #c0d4db","default","#fff");
		
		dragObj[i]=layer[i].firstChild.firstChild.firstChild;
		dragObj[i].style.cursor='move';
		dragObj[i].onmousedown = function(event){drag_mouse_down(event,this.parentNode.parentNode.parentNode)};
		
		layer[i].onselectstart=function(){return false};

		if ( 1 == exp ) {
			layer[i].firstChild.onresize=function(){checkAndResetStyleTop(this.parentNode)};
		}
		else {
			layer[i].firstChild.onclick=function(){checkAndResetStyleTop(this.parentNode)};
		}
	}
}


//*********************
//隐藏元素
function HideElement(strElementTagName){
	try{
		for(i=0;i<window.document.all.tags(strElementTagName).length; i++){
			var objTemp = window.document.all.tags(strElementTagName)[i];
			objTemp.style.visibility = "hidden";
			objTemp.style.display = "none";
		}
	}catch(e){
		alert(e.message);
	}
}

//显示元素
function ShowElement(strElementTagName){
	try{
		for(i=0;i<window.document.all.tags(strElementTagName).length; i++){
			var objTemp = window.document.all.tags(strElementTagName)[i];
			objTemp.style.visibility = "visible";
			objTemp.style.display = "";
		}
	}catch(e){
		alert(e.message);
	}
}

function hideElementAll(){
	HideElement("SELECT");
	//HideElement("OBJECT");
	HideElement("IFRAME");
}

function showElementAll(){
	ShowElement("SELECT");
	//ShowElement("OBJECT");
	ShowElement("IFRAME");
}
//滤镜效果
function hide() {
	synSizeByBody("globalDiv");
	document.getElementById("globalDiv").style.display = "block";
	if ( 1 == exp ) {
		//hideElementAll();
	}
	
	if(typeof(openGlobalLayer) != 'undefined'){
		openGlobalLayer();
	}
	
}
function synSizeByBody() {
	reCalBodySize();
	var argArr=synSizeByBody.arguments;
	for ( var i=0;i<argArr.length;i++ ) {
		if ( document.getElementById(argArr[i]) != null ) {
			document.getElementById(argArr[i]).style.width = (bodyScrollWidth)+'px';
			document.getElementById(argArr[i]).style.height = (bodyScrollHeight)+'px';
		}
	}
}

function cancel(selData,preData) {
	document.getElementById("globalDiv").style.display = "none";
	if ( 1 == exp ) {
		//showElementAll();
	} 
	//recoverBodyEvent();
	if(typeof(closeGlobalLayer) != 'undefined'){
		closeGlobalLayer();
	}

	
	for( var i = 0;i<preData.length;i++ ){
		selData[i]=preData[i];
	} 
	if( selData.length > preData.length ){
		selData.length -= (selData.length - preData.length);
	}
	
}

function ok(selData,preData,midsname,mdisplayid,idPrefix,ty){ 
	
	document.getElementById("globalDiv").style.display = "none";
	if ( 1 == exp ) {
		//showElementAll();
	} 
	//recoverBodyEvent();
	if(typeof(closeGlobalLayer) != 'undefined'){
		closeGlobalLayer();
	}
	
	for( var i = 0;i<selData.length;i++ ){
		preData[i]=selData[i];
	} 
	
	
	if( preData.length > selData.length ){
		preData.length -= (preData.length -selData.length );
	}
	
	
	if(typeof(midsname) != 'undefined' && typeof(mdisplayid) != 'undefined'){
		var mainIds = document.getElementById(midsname);
		var mainNames = document.getElementById(mdisplayid); 
		if( typeof(mainIds) != 'undefined' && typeof(mainNames) != 'undefined' ){
			var idscontent = '';
			var namescontent='';
			for(var j = 0;j<selData.length;j++){
				idscontent  += selData[j].value + ',';
				var commontEvent = 'mainPageDataEvent(' + getSelectedDataName(ty) + ',' + getPreSelectedDataName(ty) + ',document.getElementById(\'main' + idPrefix + selData[j].value + '\'),\'' + selData[j].value + '\',\'' + midsname + '\');';
				namescontent  += '<li><label><input id="main' + idPrefix + selData[j].value + '" name="main' + idPrefix + 'SelectedName" onclick="' + commontEvent +'" type="checkbox" value="' + selData[j].value +'" checked="checked" />' + '<span style="cursor:pointer;" onclick="changeCheckBoxState(document.getElementById(\'main' + idPrefix + selData[j].value  + '\'));' +commontEvent  + '">' + selData[j].name  + '</span></label></li>';
			}
			
			mainIds.value=(idscontent.length > 1 ? idscontent.substring(0,idscontent.length-1) : '');
			
			mainNames.innerHTML=namescontent ;
		}
	}
	
	
}



function mainPageDataEvent(selData,preData,o,val,midsname){
	if(typeof(o) != 'undefined' && typeof(val) != 'undefined'){
		if(! o.checked ){ 
			o.parentNode.parentNode.parentNode.removeChild(o.parentNode.parentNode);
			var idsvalue='';
			for( var i = 0,n =0;i< selData.length;i++){
				if(selData[i].value != val ){
					idsvalue  += selData[i].value + ',';
					selData[n++]=selData[i];
					preData[n]
 = preData[i];
				}
			} 
			selData.length -= 1;
			preData.length -= 1;
			
			document.getElementById(midsname).value=idsvalue.length > 1 ? idsvalue.substring(0,idsvalue.length-1) : '' ;
			
		}
	}
}







//将悬浮层的位置定位在body可见区域中央
function GetCenterXY_ForLayer(objdiv){
	objdiv.style.display='block';
	objdiv.style.visibility="hidden";
	var styleWidth=objdiv.style.width.substring(0,objdiv.style.width.length-2);
	var clientHeight=objdiv.firstChild.clientHeight;
	var objLeft = parseInt(document.documentElement.scrollLeft+(document.documentElement.clientWidth - styleWidth)/2)+'px';
	var relTop=(document.documentElement.clientHeight-clientHeight)/2 > 0 ? (document.documentElement.clientHeight-clientHeight)/2:0;
	var objTop = parseInt(document.documentElement.scrollTop+relTop)+'px';
	objdiv.style.top = objTop;
	objdiv.style.left = objLeft; 
	//checkAndResetStyleTop(objdiv);
}

function checkAndResetStyleTop (obj) {
	var clientHeight=obj.firstChild.clientHeight;
	var styleTop=parseInt(obj.style.top.substring(0,obj.style.top.length-2));
	if ( clientHeight+styleTop>bodyScrollHeight ) {
		obj.style.top=(bodyScrollHeight- clientHeight)+'px';
	}
}

function CloseDiv(divName){
	var dv = document.getElementById(divName);
	dv.style.display = "none";
	
	//process 
	
}


function displayLayer(dvId){
	var dv=document.getElementById(dvId);
	document.body.onmousemove = function (event){drag(event,dv)};
	document.body.onmouseup = function(){objX = 0;objY=0};
	dv.style.visibility="visible";
	dv.style.display = "";
}
