//var dl=new DynamicLoad();				//初始化DynamicLoad对象
//dl.Load("/js/city/address.js");	
//取得某对象，若提供ID下的对象不存在则自动创建
function c$(fctId,fctClassName){
        var varTempDivObj=$(fctId);
        if(!varTempDivObj){
                GetPyzyIframe("ifm"+fctId);
                varTempDivObj=document.createElement("div");
                varTempDivObj.id=fctId;
                if(fctClassName && fctClassName!="")varTempDivObj.className=fctClassName;
                document.body.appendChild(varTempDivObj);
        }
        return varTempDivObj;
}

//取得某ID的iframe对象，若不存在该ID的对象则自动创建
function GetPyzyIframe(fctIfmId,fctVisibility,fctTop,fctLeft,fctWidth,fctHeight){
        var varTempIfmObj=$(fctIfmId);
        if(!varTempIfmObj){
                varTempIfmObj=document.createElement("iframe");
                varTempIfmObj.id=fctIfmId;
                varTempIfmObj.style.position="absolute";
                varTempIfmObj.style.zIndex="100";
                varTempIfmObj.style.visibility="hidden";
                varTempIfmObj.style.width="0px";
                 varTempIfmObj.style.height="0px";
                document.body.appendChild(varTempIfmObj);
        }
        if(fctTop)varTempIfmObj.style.top=fctTop+"px";
        if(fctLeft)varTempIfmObj.style.left=fctLeft+"px";
        if(fctWidth)varTempIfmObj.style.width=fctWidth+"px";
        if(fctHeight)varTempIfmObj.style.height=fctHeight+"px";
        if(fctVisibility)varTempIfmObj.style.visibility=(document.all?fctVisibility:"hidden        ");
        return varTempIfmObj;
}

//取得编码存储框对象
function GetValueToInputObj(fctThisObj){
        if(!fctThisObj)return null;
        var varThisObjAutoInput=(fctThisObj.getAttributeNode("value_to_input")?fctThisObj.getAttributeNode("value_to_input").value:"");
        if(varThisObjAutoInput=="")return null;
        return $(varThisObjAutoInput);
}

//自动触发下一个对象的Act事件
function AutoNextInputAct(fctThisObj,fctAct){
        var varNextInput=fctThisObj.getAttributeNode("nextinput");
        if(varNextInput && varNextInput!=""){
                if(document.all){
                        eval("$('"+varNextInput.value+"')."+fctAct+"()");
                }else{
                        var evt = document.createEvent("MouseEvents");
                        evt.initEvent(fctAct,true,true);
                        $(varNextInput.value).dispatchEvent(evt);
                }
                $(varNextInput.value).focus();
        }
}

//输出城市列表菜单CSS样式 huzj 2008-4-12
document.write('<style type="text/css">#divAddressMenu {position:absolute;visibility:hidden;z-index:100;overflow:hidden;width:250px;background-color:#FFFFFF;border:solid #EBcccC 1px;font-size:12px;} #divAddressMenu h4{border-bottom:dotted #CCCCCC 1px;color:#999999;font-size:12px; font-weight:100; padding:2px 2px 0 2px; margin:0;}  #divAddressMenu div{border:solid #FC7A7D 1px;padding:1px;} #divAddressMenu a {display:block;width:162px !important;width:100%;padding:1px 2px 2px 2px;cursor:default;text-decoration:none;color:#990000;border:solid #ffffff 1px;background-color:none;} #divAddressMenu a span{float:right;}  #divAddressMenu a:hover {border:solid #F2C2BD 1px;background-color:#FBEDEC;}  .address_selected{border:solid #F2C2BD 1px;background-color:#FFEDE0;} </style>');

var varPageId=0;
var varAddress;
//生成并显示出城市下拉菜单
var selectrow=1;
//var selectType; //控件类型 city-城市 dept-部门 comp-公司 user-用户
var stext="";  //提示文本

function navkey(){
	//向下键
	var nextselect=1;
	var ekeycode=event.keyCode;
	selecta =  document.getElementById("menuA"+selectrow)
	if(ekeycode==9){//屏蔽tab键
		return false;
	}
	//回车选择
	if(ekeycode==13){
	  if(selecta){
	  	WriteCity(selectrow);
	  }
	  return false;
	}
	if(ekeycode==40 || ekeycode==38){
		if(ekeycode==40){
			nextselect = selectrow+1;
			selectrow++;
		}else{
		    nextselect = selectrow-1;
		    selectrow--;
		}
		if(selectrow<1){
			selectrow = 1;
			return ;
		}
		nexta = document.getElementById("menuA"+nextselect);
		if(nexta){
		    selecta.className="";
		    nexta.className="address_selected";
		    return;
	    }else{
	    	selectrow = selectrow-1;
			return ;
	    }
    }
}

var compCs;
var compvarAddress;
function getP_valueForAjaxComp(cs){
	compCs = cs;
	var showResponse = function(transport){
		compvarAddress = transport.responseText;
	}
	new Ajax.Request("/selectInput.shtml?p=getComp",{
		method: 'post',
		requestHeaders:{Accept:'application/json'},
		parameters: compCs,
		asynchronous:false,
		onComplete: showResponse
	});
}

/* 取部门数据 */
var deptCs;
var deptvarAddress;
function getP_valueForAjaxDept(cs){
	deptCs = cs;
	var showResponse = function(transport){
		deptvarAddress = transport.responseText;
	}
	new Ajax.Request("/selectInput.shtml",{
		method: 'post',
		requestHeaders:{Accept:'application/json'},
		parameters: deptCs,
		asynchronous:false,
		onComplete: showResponse
	});
}

var userCs;
var uservarAddress;
function getP_valueForAjaxUser(cs){
	userCs = cs;
	var showResponse = function(transport){
		uservarAddress = transport.responseText;
	}
	new Ajax.Request("/selectInput.shtml?p=getUser",{
		method: 'post',
		requestHeaders:{Accept:'application/json'},
		parameters: userCs,
		asynchronous:false,
		onComplete: showResponse
	});
}

/*
 *  公司
 *  cs
 *	qx：1-总公司内 2-按权限级别，经理取本公司及下级公司，主任或个人取本公司 
 *      4-总公司取下一级分公司，分公司取下一级和上一级分公司  默认为1
 *  lx: 公司类型 0-总公司 1-子公司 2-分销公司 3-合作单位公司 多个用逗号分隔
 */
function getCompList(fctThisObj,cs){
	if(!cs.qx || cs.qx == null){
		cs.qx = "1";
	}
	if(!cs.lx || cs.lx == null){
		cs.lx = "";
	}
	if(compvarAddress == null || !equalObject(compCs,cs)){
		getP_valueForAjaxComp(cs);
	}
	getObjectList(fctThisObj,compvarAddress,'comp');
}

/*
 *  部门
 *  cs
 *	compid：传入代表取该公司所属部门 一般用于级联
 *	qx：1-总公司内 2-公司内 3-按权限级别，经理取本公司及下级公司，主任或个取本部门  
 *      4-总公司取直属部门和下一级公司部门，分公司取直属部门、下一级公司部门和上一级公司部门  默认为1
 * 	bmzn：部门职能，见b_class id=10088
 *	lx：部门类型 105501-自有部门 105502-分销商 105503-外入单位 105504-外派单位 105505-外出票单位
 *	lb：部门类别（2-自取票部门 3-机场取票部门）
 *  sfptgx:是否供应平台 1是 0 不是 空或其他所有
 */
function getDeptList(fctThisObj,cs){
	if(!cs.compid || cs.compid == null){
		cs.compid = "";
	}
	if(!cs.qx || cs.qx == null){
		cs.qx = "1";
	}
	if(!cs.bmzn || cs.bmzn == null){
		cs.bmzn = "";
	}
	if(!cs.lx || cs.lx == null){
		cs.lx = "";
	}
	if(!cs.lb || cs.lb == null){
		cs.lb = "";
	}
	if(!cs.sfptgx || cs.sfptgx == null){
		cs.sfptgx = "";
	}
	if(deptvarAddress == null || !equalObject(deptCs,cs)){
		getP_valueForAjaxDept(cs);
	}
	getObjectList(fctThisObj,deptvarAddress,'dept');
}
/*
 *  用户
 *  cs
 *	compid：传入代表取该公司所属员工
 *  deptid：传入代表取部门内所有员工 一般用于级联 compid与deptid同时传时按公司取
 *	qx：1-总公司内 2-按用户级别取用户 默认为1
 * 	bmzn：部门职能，见b_class id=10088
 *  fxyh：1-非分销用户 2-分销用户
 *  yhlx：用户类型 1-出票员 2-送票员 3-财务人员 4-业务员 5-K位人员 6-客户经理 可以多传用","分隔
 *  ygzt：员工状态
 */
function getUserList(fctThisObj,cs){
	if(cs.compid == undefined){
		cs.compid = "";
	}
	if(cs.deptid == undefined){
		cs.deptid = "";
	}
	if(cs.qx == undefined){
		cs.qx = "";
	}
	if(cs.bmzn == undefined){
		cs.bmzn = "";
	}
	if(cs.fxyh == undefined){
		cs.fxyh = "";
	}
	if(cs.yhlx == undefined){
		cs.yhlx = "";
	}
	if(cs.ygzt == undefined){
		cs.ygzt = "";
	}
	if(cs.sfsj == undefined){
		cs.sfsj = "";
	}
	if(uservarAddress == null || !equalObject(userCs,cs)){
		getP_valueForAjaxUser(cs);
	}
	if(!cs.pt){
		cs.pt = "asms";
	}
	getObjectList(fctThisObj,uservarAddress,'user');
}


/* 城市 */
function GetCityList(fctThisObj,p_value){
    if(event.type =='click'){
        	fctThisObj.value="";
    }	
	getObjectList(fctThisObj,p_value,'city');
}

function getObjectList(fctThisObj,p_value,type){
        varAddress = p_value;   //全局 用于当前控件显示和翻页
        if(type){
			if(type == "dept"){
				stext = "可输入部门全拼/拼音首字母/汉字/编号。";
			}else if(type == "user"){
				stext = "可输入用户全拼/拼音首字母/汉字/工号。";
			}else if(type == "comp"){
				stext = "可输入公司全拼/拼音首字母/汉字/编号。";
			}else{
				stext = "可输城市拼音/汉字/三字码。";
			}
		}
		fctThisObj.setAttribute("autocomplete","off");
		//selectType = type;
		var ekeycode=event.keyCode;
		if(ekeycode==40 || ekeycode==38|| ekeycode==39|| ekeycode==37){
			return ;
		}
		selectrow = 1;
		//tab键 鼠标选择
		if((ekeycode==0||ekeycode==9)&&!fctThisObj.getAttribute("hasonkeydown")=="1"){
			AddFunToObj(fctThisObj,"onkeydown","navkey()");
			fctThisObj.setAttribute("hasonkeydown","1");
		}
        var varMenuObj=c$("divAddressMenu");
        var varThisObj=fctThisObj;
        if(varThisObj.id=="menuPageS"||varThisObj.id=="menuPageE"){
                varThisObj=varMenuObj.obj;
        }else{
                varPageId=0;
        }
        //清除已选城市Value
        var varThisObjAutoInput=GetValueToInputObj(varThisObj); //取得城市编码值存储对象
        if(varThisObj.value=="")varThisObjAutoInput.value="";
        //取得城市数据并拆解为数组
        var varObjValue=varThisObj.value;
        var varThisObjAdd=(varThisObj.getAttributeNode("mod_address_suggest")?varThisObj.getAttributeNode("mod_address_suggest").value:"");
        var varData=(varObjValue==""?(varThisObjAdd==""?varAddress:varThisObjAdd):varAddress);
        var varHtmlStr="",varCityDataSplit=varData.split("@"),varCityDataSplitI,varCityDataSplitIu,varNextPageStr="";
        //存储当前操作对象
        varMenuObj.obj=varThisObj;
        var varPageRCount=(varThisObj.getAttributeNode("pagecount")?parseInt(varThisObj.getAttributeNode("pagecount").value,10):18);
        var varThisPageI=0
         var varCityDataSplit_;
        for(var i=1;i<varCityDataSplit.length-1;i++){
                varCityDataSplitI=varCityDataSplit[i];
                varCityDataSplit_ = varCityDataSplitI.split("|");
                var iszmsz = (varObjValue.replace(/^([a-zA-Z]|\d|_)*$/g,"").length ==0);
                var hasit=false;
                //如果是字母数字从第一个开始匹配，如果是汉字模糊匹配
                for(var i_=0;i_<varCityDataSplit_.length;i_++){
                   if(iszmsz){
	                	if(varCityDataSplit_[i_].toUpperCase().indexOf(varObjValue.toUpperCase())==0){
	                		hasit = true;
	                		break;
	                	}
                	}else{
                		if(varCityDataSplit_[i_].toUpperCase().indexOf(varObjValue.toUpperCase())>=0){
	                		hasit = true;
	                		break;
	                	}
                	}
                }
                if(hasit|| varObjValue=="" || i==varObjValue){ // || varCityDataSplitI.toLowerCase().indexOf(varObjValue.toLowerCase())>=0
                        varThisPageI+=1;
                        if(varThisPageI>varPageId*varPageRCount && varThisPageI<=(varPageId+1)*varPageRCount){
                                varCityDataSplitISplit=varCityDataSplitI.split("|");
                                if(varThisPageI==1){ address_selected="address_selected"}else{address_selected=""}
                                if(type != "city"){
                                	var data0 = varCityDataSplitISplit[0];
	                                var data1 = varCityDataSplitISplit[1];
	                                var _data0 = varCityDataSplitISplit[0];
	                                var _data1 = varCityDataSplitISplit[1];
	                                if(data0.length > 6){
	                                	_data0 = _data0.substring(0,4) + "...";
	                                }
	                                if(data1.length > 10){
	                                	_data1 = _data1.substring(0,8) + "...";
	                                }
	                                var ssSplit2="("+varCityDataSplitISplit[2]+")";
	                                if(varCityDataSplitISplit[2]==""){
	                                	ssSplit2=varCityDataSplitISplit[2];
	                                }
	                                varHtmlStr+="<a class='"+address_selected+"' onmouseover='this.className=\"address_selected\"' onmouseout='this.className=\"\"' style='cursor: pointer;' onclick='WriteCity("+varThisPageI+")' id='menuA"+varThisPageI+"' titlecity='"+varCityDataSplitI+"' title='"+data0+"'><span title="+data1+">"+_data1+ssSplit2+"</span>"+_data0+"</a>";
                                }else{
                                	var ssSplit2="("+varCityDataSplitISplit[2]+")";
	                                if(varCityDataSplitISplit[2]==""){
	                                	ssSplit2=varCityDataSplitISplit[2];
	                                }
                                	varHtmlStr+="<a class='"+address_selected+"' onmouseover='this.className=\"address_selected\"' onmouseout='this.className=\"\"' style='cursor: pointer;' onclick='WriteCity("+varThisPageI+")' id='menuA"+varThisPageI+"' titlecity='"+varCityDataSplitI+"'><span>"+varCityDataSplitISplit[1]+ssSplit2+"</span>"+varCityDataSplitISplit[0]+"</a>";
                                }
                        }
                }
        }
        if(varThisPageI>varPageRCount){
                varNextPageStr="&nbsp;<b id=menuPageS style="+(varPageId>0?"cursor:pointer;":"color:#666666;")+">&lt;&lt;&lt;&nbsp;上一页</b>　"
                varNextPageStr+="<b id=menuPageE style="+(varThisPageI>(varPageId+1)*varPageRCount?"cursor:pointer;":"color:#666666;")+">下一页&nbsp;&gt;&gt;&gt;</b>";
        }
        var varThisObjPosition=getPosition(varThisObj); //取得事件发生处控件坐标
        with(varMenuObj){
                style.top=varThisObjPosition.top+varThisObjPosition.height+"px";
                var bodyWidth = document.body.offsetWidth;
                var menuWidth = varMenuObj.offsetWidth;
                var menuLeft = varThisObjPosition.left;
		        if(menuLeft > (bodyWidth-menuWidth)){
		        	menuLeft = menuLeft + (bodyWidth-menuWidth-menuLeft);
		        }
                style.left=menuLeft+"px";
                style.visibility="visible";
                innerHTML="<div><h4>"+stext+"</h4>"+(varHtmlStr==""?"<nobr>没有找到您查的信息‘"+varObjValue+"’。</nobr>":varHtmlStr+varNextPageStr)+"</div>";
        }
        GetPyzyIframe("ifm"+varMenuObj.id,"visible",(varThisObjPosition.top+varThisObjPosition.height),menuLeft,menuWidth,varMenuObj.offsetHeight); //取Iframe
        return false;
}

//选择某城市
function WriteCity(fctI){
        
        var varMenuObj=c$("divAddressMenu");
        var varThisObj=varMenuObj.obj;
        var varMenuValue=$("menuA"+fctI).titlecity;
        varMenuValue=varMenuValue.split("|");
        varThisObj.value=varMenuValue[1];
        varThisObj.focus();
        varThisObj.blur();
        
//        $("hykh1").value=$("hykh1").value+"-"+varMenuValue[1]
        
        var varThisObjAutoInput=GetValueToInputObj(varThisObj); //取得城市编码值存储对象
        if(!varThisObjAutoInput)varThisObjAutoInput=varThisObj;
        varThisObjAutoInput.value=varMenuValue[2];
        if(typeof(fctI)=="number"){
        	AutoNextInputAct(varThisObj,"click");
        }
}
//隐藏城市列表
function _Hidden(e){
        e=e?e:event;
        var varMenuObj=c$("divAddressMenu");
        var varThisObj=varMenuObj.obj;
        if(varMenuObj.style.visibility!="hidden"){
                if(e){
                        var EventOBJ=(e.srcElement?e.srcElement:e.target);
                        if(EventOBJ.id=="menuPageS" && EventOBJ.style.color==""){ //如果点的是“上一页”则向上翻页
                                varPageId=varPageId-1;
                                getObjectList(EventOBJ,varAddress);
                        }
                        if(EventOBJ.id=="menuPageE" && EventOBJ.style.color==""){ //如果点的是“下一页”则向下翻页
                                varPageId=varPageId+1;
                                getObjectList(EventOBJ,varAddress);
                        }
                        if(varThisObj==EventOBJ || EventOBJ.id.indexOf("menuPage")==0 || EventOBJ.id.indexOf("divAddressMenu")==0) return false;
                }
                
                var varThisObjAutoInput=GetValueToInputObj(varThisObj); //取得城市编码值存储对象
                if($("menuA1")){ //如果下拉菜单中存在第一个城市
                		//alert($("menuA").innerHTML)
                        if(!varThisObjAutoInput)varThisObjAutoInput=varThisObj;
                        if(varThisObjAutoInput.value=="" || varThisObjAutoInput==varThisObj){ //编码框中无值
                                if(varThisObj.value!=""){
                                	WriteCity("1");
                                }
                        }
                }else if(EventOBJ.id.indexOf("menuA")<0){ //如果下拉菜单中不存在满足条件的城市
                        if(varThisObj){
                        	var onlyselect = varThisObj.getAttribute("onlyselect");//如果可以手工输入
                        	if(onlyselect=="false"){
                        		 
                        	}else{
                        	    varThisObj.value="";
                        	}
                        	varThisObjAutoInput.value="";
                        	
                        }
                }
                varMenuObj.style.visibility="hidden";
                GetPyzyIframe("ifm"+varMenuObj.id,"hidden");
                if(varThisObj){
	                var callback_=varThisObj.getAttribute("callback");
					if(callback_ && callback_ != ""){
	               		 window.setTimeout("eval("+callback_+")()",100)
	                }
                }
        }
}
AddFunToObj(window,"onload","AddFunToObj(document,'onmouseup','_Hidden("+(document.all?"":"e")+");');");
