﻿var _gdh;
var oldvalue;

//鼠标选中后……
function accr(o) {
    if (_gdh.targetObj != null) {
        oldvalue = _gdh.targetObj.value = o.innerHTML;
    }
    _gdh.selectedoption = 0;
    return false;
}

function dhCombobox(){
    var dh = this;

    _gdh = this;

    this.callbackName = null;
    this.datasource = [];
    this.targetObj = null;
    this.w = 170;
    this.h = 80;

    var tempArr = [];
    var totalL = 0;
    var startL = 0;
    var endL = 0;

    //匹配用户输入字符结果
    Array.prototype.contains = function(o){
        var tc = [];
        var findFlag = 0;
        var oNew1, oNew2, oNew3;

        oNew1 = "sz" + o;
  	    oNew2 = "sh" + o;
  	    oNew3 = "-" + o;

        for(var i = 0, l = this.length; i < l; i++){
            if ((-1 != this[i].toString().indexOf(oNew1))||(-1 != this[i].toString().indexOf(oNew2))||(-1 != this[i].toString().indexOf(oNew3)) ){
                findFlag=1;
                tc.push(this[i]);
            }
        }
        if (findFlag == 0){
  	        for (var i = 0, l = this.length; i < l; i++) {
  		        if ((-1 != this[i].toString().indexOf(o))){
  		            tc.push(this[i]);
  		        }
  	        }
	    }
        return tc
    }

    function ats(o,s,e){
        return "<a style=\"text-decoration:none;color:grey\" href=\"javascript:void(0);\" onmouseover=\"this.style.fontSize=14;this.style.color='red'\" onmouseout=\"this.style.fontSize=12;this.style.color='#888888'\" onclick=\"accr(this)\">"+o.slice(s,e).join("</a><br /><a style=\"text-decoration:none;color:gray\" href=\"javascript:void(0);\" onmouseover=\"this.style.fontSize=14;this.style.color='red'\" onmouseout=\"this.style.fontSize=12;this.style.color='#888888'\" onclick=\"accr(this)\">")+"</a>";
    }

    function getElementpos(e){
        var t = e.offsetTop;
        var l = e.offsetLeft;
        var w = e.offsetWidth;
        var h = e.offsetHeight;
        while (e = e.offsetParent) {
            t += e.offsetTop;
            l += e.offsetLeft;
        }
        t += h;
        return {top: t,left: l,width: w,height: h}
    }

    var dhPopMenu;

    function showPop(str){
        if (dh.targetObj != null) {
            var posi = getElementpos(dh.targetObj);
            //应用dhLayer类作为结果集容器
            dhPopMenu = new dhlayer();
            dhPopMenu.border = "1px solid #808080";
            dhPopMenu.background = "white";
            dhPopMenu.scrollbarBaseColor = "white";
            dhPopMenu.padding = "0px";
            dhPopMenu.content = str;
            dhPopMenu.show(posi.left, posi.top, dh.w + 20, dh.h + 5, document.body);
            dhPopMenu.body.onscroll  = function(){showmore();dh.targetObj.focus();}
            dhPopMenu.body.onmouseup = function(){dh.targetObj.focus();}
        }
    }

    var selectedoption = 0;

    var oldvalue = null;

    //匹配
    function searchKey(e){
        if (e!=13 && e!=38 && e!=40 && e!=37 && e!=39){
            var str = dh.targetObj.value;
            if (str != oldvalue) {
                if (str.replace(/\s/g,"") != ""){
                    tempArr = dh.datasource.contains(str);
                    totalL = tempArr.length;
                    startL = 0;
                    if (100 < totalL) {
                        endL = 100;
                    } else {
                        endL = totalL;
                    }
                    showPop(ats(tempArr,startL,endL));
                    selectedoption = 0;
                }
                oldvalue = str;
            }
            if (typeof dhPopMenu=="object" && dhPopMenu.childNodes[selectedoption]){
                dhPopMenu.childNodes[selectedoption].style.border = "1px dotted #630";
                dhPopMenu.childNodes[selectedoption].style.color = "black";
                dhPopMenu.childNodes[selectedoption].style.fontSize = 14;
            }
        }
    }

    //追加数据
    function showmore(){
        if(endL<totalL){
            if(typeof dhPopMenu=="object"){
                var ch = dhPopMenu.body.scrollHeight;
                var sh = dhPopMenu.body.scrollTop;
                if(ch-sh<=dh.h){
                    startL = endL;
                    if (100<totalL-endL){
                        endL += 100;
                    } else {
                        endL += totalL-endL;
                    }
                    if(document.all){
                        dhPopMenu.body.insertAdjacentHTML("beforeEnd",ats(tempArr,startL,endL))
                    } else {
                        dhPopMenu.body.innerHTML += ats(tempArr,startL,endL);
                    }
                }
            }
        }
    }

    function pressKey(e){
        switch(e){
        case 13:
            if(typeof dhPopMenu=="object" && dhPopMenu.childNodes[selectedoption]){
                if(dh.targetObj!=null){
                    oldvalue = dh.targetObj.value = dhPopMenu.childNodes[selectedoption].innerHTML;
                }
                dhPopMenu.hide();
                selectedoption = 0;
                return false;
            }
            break;
        case 38:
            if(typeof dhPopMenu=="object"){
                if(0<selectedoption){
                    dhPopMenu.childNodes[selectedoption].style.border = "none";
                    dhPopMenu.childNodes[selectedoption].style.color = "#888888";
                    dhPopMenu.childNodes[selectedoption].style.fontSize = 12;
                    selectedoption--;
                    if (dhPopMenu.childNodes[selectedoption].innerHTML == "") selectedoption--;
                    dhPopMenu.childNodes[selectedoption].style.border = "1px dotted #630";
                    dhPopMenu.childNodes[selectedoption].style.color = "black";
                    dhPopMenu.childNodes[selectedoption].style.fontSize = 14;
                    dhPopMenu.childNodes[selectedoption].scrollIntoView();
                }
            }
            break;
        case 40:
            if(typeof dhPopMenu=="object"){
                if (dhPopMenu.childNodes.length>1 && selectedoption<dhPopMenu.childNodes.length-1){
                    dhPopMenu.childNodes[selectedoption].style.border = "none";
                    dhPopMenu.childNodes[selectedoption].style.color = "#888888";
                    dhPopMenu.childNodes[selectedoption].style.fontSize = 12;
                }
                if (selectedoption < dhPopMenu.childNodes.length - 1){
                    selectedoption++;
                    if (dhPopMenu.childNodes[selectedoption].innerHTML == "") selectedoption++;
                    dhPopMenu.childNodes[selectedoption].style.border = "1px dotted #630";
                    dhPopMenu.childNodes[selectedoption].style.color = "black";
                    dhPopMenu.childNodes[selectedoption].style.fontSize = 14;
                    if (selectedoption / 2 % 5 == 0)
                        dhPopMenu.childNodes[selectedoption].scrollIntoView();
                }
            }
            break;
        default:break;
        }
    }

    this.setup = function(){
        var targetObj = this.targetObj;
        if(targetObj!=null){
            targetObj.onkeydown = function(e){e=e || window.event; e=e.which || e.keyCode;pressKey(e);}
            targetObj.onkeyup = function(e){e=e || window.event; e=e.which || e.keyCode;searchKey(e);}
        }
    }
}







/*---------------------------------------dhlayers.js-----------------------------------------------*/

//定义popupMenu类
function dhlayer(){
    this.content = null;
    this.bgColor = "white";
    this.background = "buttonface";
    this.border = "none";
    this.fontSize = "12px";
    this.padding = "2px;"
    this.cursor = "default";
    this.scrollbarBaseColor = "black";
    //popupMenu childNodes
    this.childNodes = new Array();
    //popupMenu body
    this.body = null;

    //定义popupMenu方式
    var layer = document.createElement("DIV");

    //popupMenu的显示方法，参数w-width(popupMenu宽),h-height(popupMenu高),o-parent Object(popupMenu的父对象)
    this.show = function(l,t,w,h,o){
        l = l+"px";
        t = t+"px";
        w = w+"px";
        h = h+"px";

        //应用IFRAME以遮蔽顶层对象
        var ifr = document.createElement("IFRAME");
        ifr.style.width = "100%";
        ifr.style.height = "100%";
        ifr.style.border = "none";
        ifr.style.zIndex = "-1";
        ifr.style.position = "absolute";
        ifr.style.top = "0px";
        ifr.style.left = "0px";


        //应用DIV以遮蔽IFRAME的右键
        var il = document.createElement("DIV");
        il.id = "dhlayercontent";
        il.style.width = w;
        il.style.height = h;
        il.style.overflowX = "hidden";
        il.style.overflowY = "auto";
        il.style.border = this.border;
        il.style.bgColor = this.bgColor;
        il.style.background = this.background;
        il.style.zIndex = "100";
        il.style.position = "absolute";
        il.style.top = "0px";
        il.style.left = "0px";
        il.style.padding = this.padding;
        il.style.fontSize = this.fontSize;
        il.innerHTML = this.content;
        il.style.cursor = this.cursor;

        layer.id = "dhlayer";
        layer.style.padding = "0px";
        layer.style.bgColor = this.bgColor;
        layer.style.background = this.background;
        layer.style.border = "none";
        layer.style.zIndex = "51";
        layer.style.width = w;
        layer.style.height = h;
        layer.style.position = "absolute";
        layer.style.left = l;
        layer.style.top = t;
        layer.appendChild(ifr);
        layer.appendChild(il);
        layer.style.scrollbarBaseColor = this.scrollbarBaseColor;
        if (document.getElementById("dhlayer")!=null){
            o.replaceChild(layer,document.getElementById("dhlayer"));
        } else {
            o.appendChild(layer);
        }
        this.childNodes = il.childNodes;
        this.body = il;
    }

    //popupMenu hide
    this.hide = function(){
        layer.style.display = "none";
    }
    if (document.all) {
        document.attachEvent("onclick",this.hide);
    } else {
        document.addEventListener("click",this.hide,true);
    }

}

    var infolink_pid = 266867;
    var infolink_wsid = 0;
    src="http://resources.infolinks.com/js/infolinks_main.js"
