﻿// JScript 文件
RefTextBox_Class = function(obj) {
    this.Obj = obj;
    this.Value = "";
    this.ID = "";
    this.refValue = null;
    this.DTOFullName = obj.getAttribute("DTOFullName");
    this.IndexField = obj.getAttribute("IndexField");
    this.WhereOql = " 1=1 ";
    if (obj.getAttribute("WhereOql") != null) {
        this.WhereOql = obj.getAttribute("WhereOql");
    }
    this.DIVDtoList = window.document.createElement("div");
    window.document.body.appendChild(this.DIVDtoList);
    obj.setAttribute("RefTextBoxHelper", this);
    if (obj.getAttribute("RefTextBoxClass") != null) {
        this.DIVDtoList.className = obj.getAttribute("RefTextBoxClass");
    }
    else {
        this.DIVDtoList.className = 'RefTextBoxBoxClass';
        
    }
    this.DIVDtoList.style.display = 'none';
    this.IsFocus = false;
    this.OldValue = "";
    if (window.addEventListener) {
        //obj.addEventListener('focus', , false);
        obj.addEventListener('keyup', this.RefTextBoxKeypress, false);
        obj.addEventListener('focus', this.RefTextBoxKeypress, false);
        obj.addEventListener('blur', this.TextBoxBlur, false);
    }
    else if (window.attachEvent) {
        //obj.attachEvent('onfocus',);
        obj.attachEvent('onkeyup', this.RefTextBoxKeypress);
        obj.attachEvent('onfocus', this.RefTextBoxKeypress);
        obj.attachEvent('onblur', this.TextBoxBlur, false);
    }
    else {
        //obj[i].onfocus = function() {}
        obj.onkeyup = this.RefTextBoxKeypress;
        obj.onblur = this.TextBoxBlur;
        obj.onfocus = this.TextBoxBlur;
    }
};
RefTextBox_Class.prototype.TextBoxBlur = function(){
    var div = event.srcElement.RefTextBoxHelper.DIVDtoList;
    div.style.display='none';
}
RefTextBox_Class.prototype.GetRefValue = function() {
    if (this.refValue == null) {
        if(this.Obj.value!="")
        {
            var rev = new Object();
            rev[this.IndexField] = this.Obj.value;
            rev["ID"] = this.Obj.getAttribute("DTOID");
            return rev;
        }
        else
        {
            return null;
        }
    }
    else {
        var rev = new Object();
        rev["ID"] = this.bSelect[this.bIndex][0];
        rev[this.IndexField] = this.bSelect[this.bIndex][2];
        return rev;
    }
}
RefTextBox_Class.prototype.SetValue = function(ID,Value)
{
    this.Obj.value=Value;
    this.Obj.setAttribute("DTOID",ID);
    
}
RefTextBox_Class.prototype.GetValue =function(){
    return this.GetRefValue();
}
RefTextBox_Class.prototype.RefTextBoxKeypress = function() {
    //40,向下
    //38,向上
    //13,回车
    var keyCode = event.keyCode;
    var refTextBoxHelper = event.srcElement.RefTextBoxHelper;
    var div = event.srcElement.RefTextBoxHelper.DIVDtoList;
    var obj = event.srcElement;
    var l = false;
    if (div.style.display != "" || div.Obj != obj) {
        div.style.position = "absolute";
        //div.style.background-color="#fff";
        div.style.zIndex = "65535";
        div.style.backgroundColor="#fff";
        //div.style.width=obj.parentNode.parentNode.offsetWidth+"px";
        div.style.height = "255px";
        div.style.width = "290px";
        div.style.border = "1px solid #7f9db9";

        //div.style.fontSize="12px";
        div.style.color = "#0055aa";
        div.style.top = (GetPageY(obj) + obj.offsetHeight) + "px";
        div.style.left = GetPageX(obj) + "px";
        div.style.display = '';
      // div.style.background-color="#fff";

        //div.style.overflowY='auto';
        div.style.overflowY = 'hidden';
        div.style.overflowX = 'hidden';
        div.Obj = obj;
        l = true;
    }
    if (l || (keyCode != 40 && keyCode != 38 && keyCode != 13)) {
        if (keyCode != 9 && keyCode != 0) {
            //obj.nextSibling.value = "";
        }
        refTextBoxHelper.Page = null;
        if (refTextBoxHelper.Page == null) {
            refTextBoxHelper.Page = 1;
            var o=new Object();
            o.Div=div;
            o.TextBoxHelper=refTextBoxHelper;
            o.Obj=obj;
            //var v = Page.GetDtos(refTextBoxHelper.IndexField, obj.value, refTextBoxHelper.DTOFullName, refTextBoxHelper.WhereOql, refTextBoxHelper.Page,refTextBoxHelper.inLoaded,o).value
            Page.GetDtos(refTextBoxHelper.IndexField, obj.value, refTextBoxHelper.DTOFullName, refTextBoxHelper.WhereOql, refTextBoxHelper.Page,refTextBoxHelper.inLoaded,o);
            refTextBoxHelper.Page++;
//            if (v == null) {
//                refTextBoxHelper.Page = null;
//                div.innerHTML = "";
//                obj.bSelect = null;
//                obj.bIndex = 0;
//            }
//            else {
//                div.innerHTML = "<div class='boxclass-top' style='height:20px;border-bottom:1px #aaa dashed;color:#666; line-height:20px; padding-left:3px; margin-bottom:5px;'>输入中文/文字拼音首字母或↑↓选择</div><div></div>";
//                refTextBoxHelper.bSelect = v;
//                refTextBoxHelper.bIndex = 0;
//                div.scrollTop = 0;
//                var divc = div.childNodes[1];
//                divc.style.overflowY = 'hidden';
//                divc.style.overflowX = 'hidden';
//                divc.style.height = "230px";
//                for (var i = 0; i < v.length; i++) {
//                    if (i == 0) {
//                        divc.innerHTML += "<table bindx='" + i + "' width='100%' border='0' cellspacing='0' cellpadding='0 'onclick='javascript:refTextListItemOnClick(this)' DTOID='" + v[i][0] + "' tbID='" + obj.id + "'  style='background-Color:#c8e3fc;color:#0055aa;cursor:pointer;'><tr><td height='22px' style='padding-left:10px;'>" + v[i][2] + "</td><td align='right' style='padding-right:10px;'>" + (v[i][1] == v[i][2] ? "" : v[i][1]) + "</td></tr></table>";
//                    }
//                    else {
//                        divc.innerHTML += "<table bindx='" + i + "' width='100%' border='0' cellspacing='0' cellpadding='0 'onclick='javascript:refTextListItemOnClick(this)' DTOID='" + v[i][0] + "' tbID='" + obj.id + "'  style='cursor:pointer;padding:5px 0px'><tr><td height='22px' style='padding-left:10px;'>" + v[i][2] + "</td><td align='right' style='padding-right:10px;'>" + (v[i][1] == v[i][2] ? "" : v[i][1]) + "</td></tr></table>";
//                    }
//                }
//            }
        }
    }
    if (keyCode == 40 || keyCode == 38 || keyCode == 13) {

        if (refTextBoxHelper.bSelect == null) {
            return;
        }
        var spans = div.getElementsByTagName("table");
        switch (keyCode) {
            case 40:
                if (refTextBoxHelper.bIndex < refTextBoxHelper.bSelect.length - 1) {
                    refTextBoxHelper.bIndex++;
                    spans[refTextBoxHelper.bIndex].style.backgroundColor = '#c8e3fc';
                    spans[refTextBoxHelper.bIndex].style.color = '#0055aa';
                    spans[refTextBoxHelper.bIndex - 1].style.backgroundColor = '';
                    spans[refTextBoxHelper.bIndex - 1].style.color = '';
                    spans[refTextBoxHelper.bIndex].parentNode.scrollTop = spans[refTextBoxHelper.bIndex].offsetTop - spans[refTextBoxHelper.bIndex].parentNode.offsetHeight / 2;
                    if (refTextBoxHelper.bIndex >= refTextBoxHelper.bSelect.length - 3) {
                        //var v = Page.GetDtos(refTextBoxHelper.IndexField, obj.value, refTextBoxHelper.DTOFullName, refTextBoxHelper.WhereOql, refTextBoxHelper.Page,refTextBoxHelper.Loaded).value
                        var o=new Object();
                        o.Div=div.childNodes[1];
                        o.TextBoxHelper=refTextBoxHelper;
                        o.ObjID=obj.id;
                        Page.GetDtos(refTextBoxHelper.IndexField, obj.value, refTextBoxHelper.DTOFullName, refTextBoxHelper.WhereOql, refTextBoxHelper.Page,refTextBoxHelper.Loaded,o)
                        refTextBoxHelper.Page++;
//                        if (v == null) {
//                            refTextBoxHelper.Page = 0;
//                            refTextBoxHelper.bSelect = null;
//                        }
//                        else {
//                            var s = refTextBoxHelper.bSelect.length - 1;
//                            var divc = div.childNodes[1];
//                            for (var i = 0; i < v.length; i++) {
//                                divc.innerHTML += "<table bindx='" + (i + s) + "' width='100%' border='0' cellspacing='0' cellpadding='0 'style='cursor:pointer;padding:5px 0px' onclick='javascript:refTextListItemOnClick(this)' DTOID='" + v[i][0] + "' tbID='" + obj.id + "'><tr><td height='22px' style='padding-left:10px;'>" + v[i][2] + "</td><td align='right' style='padding-right:10px;'>" + (v[i][1] == v[i][2] ? "" : v[i][1]) + "</td></tr></table>";
//                                refTextBoxHelper.bSelect[refTextBoxHelper.bSelect.length] = v[i];
//                            }
//                        }
                    }
                }
                break;
            case 38:
                if (refTextBoxHelper.bIndex > 0) {
                    refTextBoxHelper.bIndex--;
                    spans[refTextBoxHelper.bIndex].style.backgroundColor = '#c8e3fc';
                    spans[refTextBoxHelper.bIndex].style.color = '#0055aa';
                    spans[refTextBoxHelper.bIndex + 1].style.backgroundColor = '';
                    spans[refTextBoxHelper.bIndex + 1].style.color = '';

                    if (spans[refTextBoxHelper.bIndex].parentNode.scrollTop > spans[refTextBoxHelper.bIndex].offsetTop) {
                        spans[refTextBoxHelper.bIndex].parentNode.scrollTop = spans[refTextBoxHelper.bIndex].offsetTop - spans[refTextBoxHelper.bIndex].parentNode.offsetHeight / 2;
                    }
                }
                break;
            case 13:
                if (refTextBoxHelper.bSelect != null) {
                    refTextBoxHelper.Value = refTextBoxHelper.bSelect[refTextBoxHelper.bIndex][1];
                    refTextBoxHelper.Obj.value = refTextBoxHelper.Value;
                    refTextBoxHelper.OldValue = refTextBoxHelper.Value
                    //refTextBoxHelper.nextSibling.value = refTextBoxHelper.bSelect[obj.bIndex][0];
                    refTextBoxHelper.refValue = refTextBoxHelper.bSelect[refTextBoxHelper.bIndex];
                }
                else {
                    refTextBoxHelper.refValue = null;
                }
                div.style.display = 'none';
        }
    }

}

RefTextBox_Class.prototype.inLoaded = function(value) {
            var refTextBoxHelper=value.context.TextBoxHelper;
            var div=value.context.Div;
            var obj=value.context.Obj;
            var v=value.value;
            if (v == null) {
                refTextBoxHelper.Page = null;
                div.innerHTML = "";
                obj.bSelect = null;
                obj.bIndex = 0;
            }
            else {
                div.innerHTML = "<div class='boxclass-top' style='height:20px;border-bottom:1px #aaa dashed;color:#666; line-height:20px; padding-left:3px; margin-bottom:5px;'>输入中文/文字拼音首字母或↑↓选择 <font color='#ff0000'>按回车键选择</font></div><div></div>";
                refTextBoxHelper.bSelect = v;
                refTextBoxHelper.bIndex = 0;
                div.scrollTop = 0;
                var divc = div.childNodes[1];
                divc.style.overflowY = 'hidden';
                divc.style.overflowX = 'hidden';
                divc.style.height = "230px";
                for (var i = 0; i < v.length; i++) {
                    if (i == 0) {
                        divc.innerHTML += "<table bindx='" + i + "' width='100%' border='0' cellspacing='0' cellpadding='0 'onclick='javascript:alert(\"a\")' PID='"+refTextBoxHelper.Obj.id+"' DTOID='" + v[i][0] + "' tbID='" + obj.id + "'  style='background-Color:#c8e3fc;color:#0055aa;cursor:pointer;'><tr><td height='22px' style='padding-left:10px;'>" + v[i][2] + "</td><td align='right' style='padding-right:10px;'>" + (v[i][1] == v[i][2] ? "" : v[i][1]) + "</td></tr></table>";
                    }
                    else {
                        divc.innerHTML += "<table bindx='" + i + "' width='100%' border='0' cellspacing='0' cellpadding='0 'onclick='javascript:alert(\"a\")' PID='"+refTextBoxHelper.Obj.id+"' DTOID='" + v[i][0] + "' tbID='" + obj.id + "'  style='cursor:pointer;padding:5px 0px'><tr><td height='22px' style='padding-left:10px;'>" + v[i][2] + "</td><td align='right' style='padding-right:10px;'>" + (v[i][1] == v[i][2] ? "" : v[i][1]) + "</td></tr></table>";
                    }
                }
            }
}

RefTextBox_Class.prototype.Loaded = function(value) {
    if (value.value == null) {
        //value.context.TextBoxHelper.Page = 0;
        //value.context.TextBoxHelper.bSelect = null;
    }
    else {
        var s = value.context.TextBoxHelper.bSelect.length - 1;
        var divc = value.context.Div;
        var v=value.value;
        var refTextBoxHelper=value.context.TextBoxHelper;
        for (var i = 0; i < v.length; i++) {
            divc.innerHTML += "<table bindx='" + (i + s) + "' width='100%' border='0' cellspacing='0' cellpadding='0 'style='cursor:pointer;padding:5px 0px'  PID='"+refTextBoxHelper.Obj.id+"' DTOID='" + v[i][0] + "' onclick='javascript:alert(\"a\")' tbID='" + value.context.ObjID + "'><tr><td height='22px' style='padding-left:10px;' onclick='javascript:alert(\"a\")'>" + v[i][2] + "</td><td align='right' style='padding-right:10px;'  onclick='javascript:refTextListItemOnClick(this)'>" + (v[i][1] == v[i][2] ? "" : v[i][1]) + "</td></tr></table>";
            value.context.TextBoxHelper.bSelect[refTextBoxHelper.bSelect.length] = v[i];
        }
    }
}
refTextListItemOnClick = function() {
debugger;
    //window.document.getElementById(obj.tbID).value = window.document.getElementById(obj.tbID).bSelect[obj.bindx][2];
    //window.document.getElementById(obj.tfID).value = window.document.getElementById(obj.tbID).bSelect[obj.bindx][0];
    //obj.parentNode.Obj = null;
    //obj.parentNode.style.display = 'none';
    //try {//alert(window.document.getElementById(obj.tbID).name);
    //    eval(window.document.getElementById(obj.tbID).name + "_Change('" + window.document.getElementById(obj.tbID).bSelect[obj.bindx][0] + "')");
    //}
    //catch (e) {
    //}
}
function GetPageX(b) {
    try {
        if (b.nodeName == "BODY" || b.style.Position == 'absolute') {
            return b.offsetLeft;
        }
    }
    catch (e) {
        return 0;
    }
    var v = 0;
    try {
        v = GetPageX(b.offsetParent);
    }
    catch (e) { }
    return b.offsetLeft + v;
}
function GetPageY(b) {
    try {
        if (b.nodeName == "BODY" || b.style.Position == 'absolute') {
            return b.offsetTop;
        }
    }
    catch (e) {
        return 0;
    }
    var v = 0;
    try {
        v = GetPageY(b.offsetParent);
    }
    catch (e) { }
    return b.offsetTop + v;
}