﻿// JScript 文件
function ShowDiog(val, controlNamePrefix)
{
    var ul = window.document.getElementById(val)
    if (ul != null)
    {
        URL = RootRequest + "/Control/Dialog/RefDialog.aspx?DTOFullName=" + ul.attributes["DTOFullName"].value + "&WhereOql=" + ul.attributes["WhereOql"].value + "&AddUrl=" + ul.attributes["AddUrl"].value + "&rnd=" + Math.random();
        var ret = window.showModalDialog(URL, "getbox", "toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=no,copyhistory=yes,width=boxwidth,height=boxheight,left=80,top=20");
        if (ret != null)
        {
            if (window.document.getElementById(controlNamePrefix + "$" + val + "_TB") != null)
            {
                window.document.getElementById(controlNamePrefix + "$" + val + "_TB").value = ret.Name;
                window.document.getElementById(controlNamePrefix + "$" + val + "_hf").value = ret.ID;
            }
            else
            {
                val = val.replace("$", "_").replace("$", "_").replace("$", "_").replace("$", "_").replace("$", "_");
                if (controlNamePrefix.trim().length <= 0)
                {
                    window.document.getElementById(val + "_TB").value = ret.Name;
                    window.document.getElementById(val + "_hf").value = ret.ID;
                }
                else
                {
                    if (window.document.getElementById(controlNamePrefix + "_" + val + "_TB") != null)
                    {
                        window.document.getElementById(controlNamePrefix + "_" + val + "_TB").value = ret.Name;
                        window.document.getElementById(controlNamePrefix + "_" + val + "_hf").value = ret.ID;
                    }
                    else
                    {
                        if (window.document.getElementById(controlNamePrefix + val + "_TB") != null)
                        {
                            window.document.getElementById(controlNamePrefix + val + "_TB").value = ret.Name;
                            window.document.getElementById(controlNamePrefix + val + "_hf").value = ret.ID;
                        }
                        else if (window.document.getElementById(val + "_TB") != null)
                        {
                            window.document.getElementById(val + "_TB").value = ret.Name;
                            window.document.getElementById(val + "_hf").value = ret.ID;
                        }
                        else
                        {
                            var temp = controlNamePrefix.replace("$", "_").replace("$", "_").replace("$", "_").replace("$", "_");
                            if (window.document.getElementById(temp + val + "_TB") != null)
                            {
                                window.document.getElementById(temp + val + "_TB").value = ret.Name;
                                window.document.getElementById(temp + val + "_hf").value = ret.ID;
                            }
                            else if (window.document.getElementById(temp.replace("SeachRoadLineModel1_", "") + val + "_TB") != null)
                            {
                                window.document.getElementById(temp.replace("SeachRoadLineModel1_", "") + val + "_TB").value = ret.Name;
                                window.document.getElementById(temp.replace("SeachRoadLineModel1_", "") + val + "_hf").value = ret.ID;
                            }
                        }
                    }

                }
            }
            try
            {
                ManageDepartmentSelects(controlNamePrefix +"_"+ val, ret.ID);
                eval(val + "_TB_Change('" + ret.ID + "')");

            }
            catch (e)
            {
            }
        }
    }
}
function RefTextBoxChange(obj)
{
    if (obj.parentNode.parentNode.IndexField == null || obj.parentNode.parentNode.IndexField == "")
    {
        return;
    }
    var div = window.document.getElementById(obj.name + 'div_RefTextBox');
    div.Obj = null;
    setTimeout(" var div = window.document.getElementById('" + obj.name + "div_RefTextBox');if(div.Obj==null){div.style.display='none';}", 500);
    if (obj.nextSibling.value == "")
    {
        obj.value = "";
    }
    return;
    //debugger;
    //obj.parentNode.parentNode.WhereOql
    var v = RefTextBox.GetDto(obj.parentNode.parentNode.IndexField, obj.value, obj.parentNode.parentNode.DTOFullName, obj.parentNode.parentNode.WhereOql).value
    if (v == null)
    {
        obj.nextSibling.value = "";
        obj.value = "";
    }
    else
    {
        obj.nextSibling.value = v[0];
        obj.value = v[1];
    }
}

function RefTextBoxGetDtosedLoad(value)
{
    var v = value.value;
    var div = value.context.Div;
    var obj = value.context.obj;
    if (v == null)
    {
        obj.parentNode.parentNode.Page = null;
        div.innerHTML = "";
        obj.bSelect = null;
        obj.bIndex = 0;
    }
    else
    {
        if(value.context.value!=obj.value)
        {
            return;
        }
        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>";
        obj.bSelect = v;
        obj.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 + "' selected='1' onmouseover=\"javascript:RefTextBoxTableMouseOver(this);this.selected='1';this.style.backgroundColor='#c8e3fc';this.style.color='#0055aa';\"   onmouseout=\"javascript:this.style.backgroundColor=(this.selected=='1'?'#c8e3fc':'#fff');this.style.color='#0055aa';\" width='100%' border='0' cellspacing='0' cellpadding='0 'onclick='javascript:refTextListItemOnClick(this)' DTOID='" + v[i][0] + "' tbID='" + obj.id + "' tfID='" + obj.nextSibling.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 + "' selected='0' onmouseover=\"javascript:RefTextBoxTableMouseOver(this);this.selected='1';this.style.backgroundColor='#c8e3fc';this.style.color='#0055aa';\"   onmouseout=\"javascript:this.style.backgroundColor=(this.selected=='1'?'#c8e3fc':'#fff');this.style.color='#0055aa';\" width='100%' border='0' cellspacing='0' cellpadding='0 'onclick='javascript:refTextListItemOnClick(this)' DTOID='" + v[i][0] + "' tbID='" + obj.id + "' tfID='" + obj.nextSibling.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>";
            }
        }
    }
}


function RefTextBoxTableMouseOver(obj)
{
    var objP = obj.parentNode;
    var index = -1;
    var selectOobj = null;
    for (var i = 0; i < objP.childNodes.length; i++)
    {
        if (objP.childNodes[i].selected != null && objP.childNodes[i].selected == '1')
        {
            index = objP.childNodes[i].bindx;
            selectOobj = objP.childNodes[i];
            break;
        }
    }

    if (index != -1)
    {
        selectOobj.style.backgroundColor = '';
        selectOobj.style.color = '';
        selectOobj.selected = '0';
        window.document.getElementById(obj.tbID).bIndex = obj.bindx;
    }
}

function RefTextBoxKeypress(obj)
{
    //40,向下
    //38,向上
    //13,回车
    if (obj.parentNode.parentNode.IndexField == null || obj.parentNode.parentNode.IndexField == "")
    {
        return;
    }
    var keyCode = event.keyCode;
    var div = window.document.getElementById(obj.name + "div_RefTextBox");
    var l = false;
    if (div.style.display != "" || div.Obj != obj)
    {
        div.style.position = "absolute"
        div.style.zIndex = "65535";
        div.style.backgroundColor = "#fff";
        //div.style.width=obj.parentNode.parentNode.offsetWidth+"px";
        div.style.height = "255px";
        div.style.width = "250px";
        div.style.border = "1px solid #7f9db9";
        //div.style.backgroundColor="#f3fbfe";
        //div.style.width=obj.parentNode.parentNode.offsetWidth+"px";
        // div.style.height="255px";
        //div.style.fontSize="12px";
        div.style.color = "#0055aa";
        div.style.top = (GetPageY(obj) + obj.offsetHeight + 3) + "px";
        div.style.left = GetPageX(obj) + "px";
        div.style.display = '';
        //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 = "";
        }
        obj.parentNode.parentNode.Page = null;
        if (obj.parentNode.parentNode.Page == null)
        {
            obj.parentNode.parentNode.Page = 1;

            var o = new Object();
            o.Div = div;
            o.obj = obj;
            o.ObjID = obj.id;
            o.value=obj.value
            //var v=RefTextBox.GetDtos(obj.parentNode.parentNode.IndexField,obj.value,obj.parentNode.parentNode.DTOFullName,obj.parentNode.parentNode.WhereOql,obj.parentNode.parentNode.Page).value
            RefTextBox.GetDtos(obj.parentNode.parentNode.IndexField, obj.value, obj.parentNode.parentNode.DTOFullName, obj.parentNode.parentNode.WhereOql, obj.parentNode.parentNode.Page, RefTextBoxGetDtosedLoad, o)
            obj.parentNode.parentNode.Page++;
        }
    }
    if (keyCode == 40 || keyCode == 38 || keyCode == 13)
    {
        if (obj.bSelect == null)
        {
            return;
        }
        var spans = div.getElementsByTagName("table");
        switch (keyCode)
        {
            case 40:
                if (obj.bIndex < obj.bSelect.length - 1)
                {
                    obj.bIndex++;
                    spans[obj.bIndex].style.backgroundColor = '#c8e3fc';
                    spans[obj.bIndex].style.color = '#0055aa';
                    spans[obj.bIndex - 1].style.backgroundColor = '';
                    spans[obj.bIndex - 1].style.color = '';
                    spans[obj.bIndex].selected = '1';
                    spans[obj.bIndex - 1].selected = '0';
                    spans[obj.bIndex].parentNode.scrollTop = spans[obj.bIndex].offsetTop - spans[obj.bIndex].parentNode.offsetHeight / 2;
                    if (obj.bIndex >= obj.bSelect.length - 3)
                    {
                        var v = RefTextBox.GetDtos(obj.parentNode.parentNode.IndexField, obj.value, obj.parentNode.parentNode.DTOFullName, obj.parentNode.parentNode.WhereOql, obj.parentNode.parentNode.Page).value
                        obj.parentNode.parentNode.Page++;
                        if (v == null)
                        {
                            obj.parentNode.parentNode.Page;
                        }
                        else
                        {
                            var s = obj.bSelect.length;
                            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 + "' tfID='" + obj.nextSibling.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>";
                                obj.bSelect[obj.bSelect.length] = v[i];
                            }
                        }
                    }
                }
                break;
            case 38:
                if (obj.bIndex > 0)
                {
                    obj.bIndex--;
                    spans[obj.bIndex].style.backgroundColor = '#c8e3fc';
                    spans[obj.bIndex].style.color = '#0055aa';
                    spans[obj.bIndex + 1].style.backgroundColor = '';
                    spans[obj.bIndex + 1].style.color = '';
                    spans[obj.bIndex + 1].selected = '0';
                    spans[obj.bIndex].selected = '1';
                    if (spans[obj.bIndex].parentNode.scrollTop > spans[obj.bIndex].offsetTop)
                    {
                        spans[obj.bIndex].parentNode.scrollTop = spans[obj.bIndex].offsetTop - spans[obj.bIndex].parentNode.offsetHeight / 2;
                    }
                }
                break;
            case 13:
                obj.value = obj.bSelect[obj.bIndex][2];
                obj.nextSibling.value = obj.bSelect[obj.bIndex][0];
                div.style.display = 'none';
                try
                {
                    setTimeout(" var div = window.document.getElementById('" + obj.name + "div_RefTextBox');if(div.Obj==null){div.style.display='none';}", 200);
                    ManageDepartmentSelects(obj.name, obj.bSelect[obj.bIndex][0]);
                    eval(obj.name + "_Change('" + obj.bSelect[obj.bIndex][0] + "')");
                }
                catch (e)
                {
                }
        }
    }

}
function refTextListItemOnClick(obj)
{
    window.document.getElementById(window.document.getElementById(obj.tbID).name + 'div_RefTextBox').Obj = obj;
    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);
        window.document.getElementById(window.document.getElementById(obj.tbID).name + 'div_RefTextBox').Obj = null;
        setTimeout(" var div = window.document.getElementById('" + window.document.getElementById(obj.tbID).name + "div_RefTextBox');if(div.Obj==null){div.style.display='none';}", 10);
        ManageDepartmentSelects(window.document.getElementById(obj.tbID).name, window.document.getElementById(obj.tbID).bSelect[obj.bindx][0]);
        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;
}

function ManageDepartmentSelects(obj, id)
{
    try
    {
        eval("ManageDepartmentOnchange('" + obj + "','" + id + "')");
    }
    catch (e)
    {
    }
}

    

