﻿
String.prototype.IsElement = function()
{
    var EleID = this;
    var ReElement;
    if (document.getElementById(EleID))
        ReElement = document.getElementById(EleID);
    else if (eval("document." + EleID.toString()))
        eval("ReElement=document." + EleID.toString());
    else
        return false;
    return ReElement;
}

//——————无限下拉菜单控件 开始——————
function InfinityDropdownlistSet(DropdownlistGroup, OptionGroup, sleIDGroup)
{
    // 修正自定义的数据
    if (sleIDGroup != null)
    {
        if (sleIDGroup.length > 0)
        {
            for (var i = 0; i < sleIDGroup.length; i++)
                DropdownlistGroup[i][0] = sleIDGroup[i];
        }
    }
    
    var ArrLen = DropdownlistGroup.length;
    InitialDropdownlist(DropdownlistGroup[0][0], OptionGroup, DropdownlistGroup);
    for (i = 0; i < ArrLen; i++)
    {
        var SelObjID, SelObj;
        SelObjID = DropdownlistGroup[i][0];
       
        SelObj = SelObjID.IsElement();
        if (SelObj)
        {
            SelObj.onchange = function()
            {
                SelectChange(event.srcElement.id, OptionGroup, DropdownlistGroup);
            }
        }
    }
}

function InitialDropdownlist(ConID, OptionGroup, DropdownlistGroup)
{
    var Con, DefaultValue;
    Con = ConID.IsElement();
    var ArrLen;
    if (Con)
    {
        if (Con.length < 2)
        {
            ArrLen = OptionGroup.length;
            for (i = 0; i < ArrLen; i++)
            {
                if (OptionGroup[i][1] == 1)
                {
                    Con.options[Con.length] = new Option(OptionGroup[i][4], OptionGroup[i][2]);
                }
            }
        }
        Con.options[0].selected = true;
    }
    ArrLen = DropdownlistGroup.length;
    for (i = 0; i < ArrLen; i++)
    {
        ConID = DropdownlistGroup[i][0];
        Con = ConID.IsElement();
        if (Con)
        {
            if (DropdownlistGroup[i][2]>1)
            {
                DefaultValue = DropdownlistGroup[i][2];
                Con.value = DefaultValue;
                SelectChange(ConID, OptionGroup, DropdownlistGroup);
            }
        }
    }
}

function SelectChange(SelObjID, OptionArr, SelArr)
{
    var SelObj, DefValue;
    SelObj = SelObjID.IsElement();
    if (SelObj)
    {
        DefValue = SelObj.options[SelObj.selectedIndex].value;
        var Partten = /^[\D]+/g;
        var FirstId, LastId;
        FirstId = SelObjID.match(Partten);
        Partten = /[\d]+$/g;
        LastId = parseInt(SelObjID.match(Partten));
        if (!LastId)
        {
            LastId = "";
        }
        SelectChangeOption(OptionArr, SelArr, DefValue, FirstId, LastId);
    }
    //alert(LastId);
}

function SelectChangeOption(OptionArr, SelArr, SelectValue, SelectName, DepId)
{
    var SelArrLen = SelArr.length;
    var OptArrLen = OptionArr.length;
    var CurrentObj;
    var SonObjId;
    var ParentOptionValue;
    var SonNum = 0;
    var i, j;
    for (i = 0; i < OptArrLen; i++)
    {
        if (parseInt(OptionArr[i][0]) < parseInt(SelArrLen))
        {
            if ((SelArr[OptionArr[i][0]][0] == SelectName) && (OptionArr[i][2] == SelectValue))
            {
                if (parseInt(OptionArr[i][1]) < parseInt(SelArrLen))
                {
                    SonObjId = SelArr[OptionArr[i][1]][0];
                    ParentOptionValue = OptionArr[i][2];
                }
                break;
            }
        }
    }
    if (SonObjId != "")
    {
        for (j = 0; j < OptArrLen; j++)
        {
            if ((SelArr[OptionArr[j][0]][0] == SonObjId) && (OptionArr[j][3] == ParentOptionValue))
            {
                SonNum = SonNum + 1;
                if (SonNum == 1)
                {
                    CurrentObj = document.getElementById(SonObjId + DepId);
                    SelectName = SonObjId;
                    //SelectValue=OptionArr[j][2];
                    CurrentObj.length = 1;
                }
                CurrentObj.options[CurrentObj.length] = new Option(OptionArr[j][4], OptionArr[j][2]);
            }
        }
    }
    if (CurrentObj)
    {
        CurrentObj.options[0].selected = true;
        SelectValue = CurrentObj.options[CurrentObj.selectedIndex].value;
        SelectChangeOption(OptionArr, SelArr, SelectValue, SelectName, DepId);
    }
    else
    {
        for (i = 0; i < SelArrLen; i++)
        {
            if (SelArr[i][0] == SelectName)
                j = i;
            else if (i > j)
            {
                CurrentObj = document.getElementById(SelArr[i][0] + DepId);
                if (CurrentObj)
                {
                    CurrentObj.length = 1;
                    CurrentObj.options[0].selected = true;
                }
            }
        }
    }
}
//——————无限下拉菜单控件 结束——————