﻿// JScript 文件
// 目录对象
var EQDDIR_Dir = 0;//有节点
var EQDDIR_Selector = 1;//选项
var EQDDIR_Group = 2;//分组
//目录
function EQDDir(dir, name, value, dirType)
{
    this.Dir = dir;
    this.Name = name;
    this.Value = value;
    this.DirType = dirType;    
    this.Items = new Array(); 
    this.Selector = new Array();
    this.Group = new Array();
}
//目录添加节点
EQDDir.prototype.AddDir=function(aEQDDir)
{
    if (this.DirType == EQDDIR_Dir)
        this.Items.push(aEQDDir);
}
//目录添加选项
EQDDir.prototype.AddSelector=function(aEQDSelectItem)
{
    if (this.DirType == EQDDIR_Selector)
        this.Selector.push(aEQDSelectItem);
}
//目录添加分组
EQDDir.prototype.AddGroup=function(aEQDGroupItem)
{
    if (this.DirType == EQDDIR_Group)
        this.Group.push(aEQDGroupItem);
}
//分组
function EQDGroupItem(dir, name, value)
{    
    this.Dir = dir;
    this.Name = name;
    this.Value = value;
    this.Selector = new Array();    
}
//分组添加选项
EQDGroupItem.prototype.AddSelector=function(aEQDSelectItem)
{
    this.Selector.push(aEQDSelectItem);
}
//选项 isSingleOrMore = 1 多选 isSingleOrMore = 2 单选
var EQDSelect_More = 1;//多选
var EQDSelect_Single = 2;//单选
function EQDSelectItem(dir, isSingleOrMore, name, value, selected)
{
    this.Dir = dir;
    this.IsSingleOrMore = isSingleOrMore;
    this.Name = name;
    this.Value = value;
    this.Selected = selected;
}
//创建select
function CreateSelect(aEQDDir, atd, ahden, aArray)//创建select下拉框
{
    if(aEQDDir.DirType == EQDDIR_Dir)
    {
        var select1 = document.createElement("select");
        select1.options[0] = new Option('请选择', '-1');
        for(var i = 0; i < aEQDDir.Items.length; i++)
        {
            select1.options[i + 1] = new Option(aEQDDir.Items[i].Name, aEQDDir.Items[i].Value);
        }
        select1.onchange = function(){selectedItem(select1, atd, ahden, aArray)};//添加事件
        atd.appendChild(select1);
        return select1;
    }
}
function Createcheckbox(aSelector, atd, ahden)//创建多选框
{
    if(aSelector.IsSingleOrMore == EQDSelect_More)
    {
        var input1 = document.createElement("input");
        input1.type = 'checkbox';
        input1.id = aSelector.Value;
        input1.value = aSelector.Value;
        input1.onclick = function(){selectedMore(input1, ahden)}
        var lable1 = document.createElement("label")
        lable1.htmlFor = aSelector.Value;
        lable1.innerHTML = aSelector.Name;
        atd.appendChild(input1);
        atd.appendChild(lable1);
        var divFlag = document.createElement("br");
        atd.appendChild(divFlag);
        return input1;
    }
}
function Createradio(aSelector, aName, atd, ahden)//创建单选框
{
    if(aSelector.IsSingleOrMore == EQDSelect_Single)
    {
        var input1 = document.createElement("<input name='"+aName+"' />");
        input1.type = 'radio';
        input1.id = aSelector.Value;
        input1.value = aSelector.Value;
        input1.onclick = function(){selectedSingle(input1, ahden)}
        var lable1 = document.createElement("label");
        lable1.htmlFor = aSelector.Value;
        lable1.innerHTML = aSelector.Name;
        atd.appendChild(input1);
        atd.appendChild(lable1);
        return input1;
    }
}
function SearchSelect(avalue, aEQDDir, atd, ahden, aArray)//遍历查找
{
    if(aEQDDir.DirType == EQDDIR_Dir)
    {
        for(var i = 0; i< aEQDDir.Items.length; i++)
        {
            if(aEQDDir.Items[i].Value == avalue && aEQDDir.Items[i].DirType == EQDDIR_Dir)//创建目录
            {
                CreateSelect(aEQDDir.Items[i], atd, ahden, aArray);
                return;
            }
            else if(aEQDDir.Items[i].Value == avalue && aEQDDir.Items[i].DirType == EQDDIR_Selector)// 创建选项
            {
                for(var y = 0; y < aEQDDir.Items[i].Selector.length; y++)
                {
                    if(aEQDDir.Items[i].Selector[y].IsSingleOrMore == EQDSelect_Single)//单选
                    {
                        Createradio(aEQDDir.Items[i].Selector[y], aEQDDir.Items[i].Value, atd, ahden);
                    }
                    else if(aEQDDir.Items[i].Selector[y].IsSingleOrMore == EQDSelect_More)//多选
                    {
                        Createcheckbox(aEQDDir.Items[i].Selector[y], atd, ahden);
                    }
                }
                return;
            }
            else if(aEQDDir.Items[i].Value == avalue && aEQDDir.Items[i].DirType == EQDDIR_Group)//创建分组
            {
                for(var y = 0; y < aEQDDir.Items[i].Group.length; y++)
                {
                    var lable1 = document.createElement("label");
                    lable1.innerHTML = aEQDDir.Items[i].Group[y].Name;
                    atd.appendChild(lable1);
                    var br1 = document.createElement("br");
                    atd.appendChild(br1);
                    for(var t = 0; t < aEQDDir.Items[i].Group[y].Selector.length; t++)
                    {
                        if(aEQDDir.Items[i].Group[y].Selector[t].IsSingleOrMore == EQDSelect_Single)//单选
                        {
                            Createradio(aEQDDir.Items[i].Group[y].Selector[t], aEQDDir.Items[i].Group[y].Value, atd, ahden);
                        }
                        else if(aEQDDir.Items[i].Group[y].Selector[t].IsSingleOrMore == EQDSelect_More)//多选
                        {
                            Createcheckbox(aEQDDir.Items[i].Group[y].Selector[t], atd, ahden);
                        }
                    }
                    var br2 = document.createElement("br");
                    atd.appendChild(br2);
                }
                return;
            }
            else if(aEQDDir.Items[i].DirType == EQDDIR_Dir)//查找下一级目录
            {
                SearchSelect(avalue, aEQDDir.Items[i], atd, ahden, aArray);
            }
        }
     }
     return null;
}
function selectedItem(aSelect, atd, ahden, aArray)//选择目录事件
{
    if(document.getElementById(ahden))
    {
        document.getElementById(ahden).value = "";
    }
    var currvalue = aSelect.value;
    if(atd && atd.cellIndex < atd.parentElement.cells.length)
    {
        for(var i = atd.parentElement.cells.length - 1; i > atd.cellIndex; i--)
        {
            atd.parentElement.deleteCell(i);
        }
        var newcells = atd.parentElement.insertCell(atd.parentElement.cells.length);
        newcells.style.textAlign = 'left';
        SearchSelect(currvalue, aArray, newcells, ahden, aArray);
    }
}
function selectedMore(acheckbox, ahden)//多选事件
{
    if(acheckbox && document.getElementById(ahden))
    {
        var acboxvalue = acheckbox.value;
        var ahdenvalue = document.getElementById(ahden).value;
        if(acheckbox.checked)
        {
            if(ahdenvalue == "" || ahdenvalue == null)
            {
                ahdenvalue = acboxvalue;
            }
            else
            {
                ahdenvalue = ahdenvalue + "\x1c" + acboxvalue;            
            }
            document.getElementById(ahden).value = ahdenvalue;
        }
        else
        {            
            var s = ahdenvalue.split("\x1c");
            var ss = "";
            for(var i = 0; i < s.length; i++)
            {
                if(s[i] != acboxvalue)
                {
                    if( i > 0){
                        ss += "\x1c";
                    }
                    ss += s[i];
                }
            }
            document.getElementById(ahden).value = ss;
        }
    }
}
function selectedSingle(aradio, ahden)//单选事件
{
    if(document.getElementById(ahden))
    {
        if(aradio && aradio.checked)
        {
            document.getElementById(ahden).value = aradio.value;
        }
        else
        {
            document.getElementById(ahden).value = "";
        }
    }
}
/////////////////////////////////////////////////////////////加载显示
function InitSearchSelect(avalue, aEQDDir)//遍历查找
{
    if(aEQDDir.DirType == EQDDIR_Dir)
    {
        for(var i = 0; i< aEQDDir.Items.length; i++)
        {
            if(aEQDDir.Items[i].DirType == EQDDIR_Selector)// 选项
            {
                for(var y = 0; y < aEQDDir.Items[i].Selector.length; y++)
                {
                    if(aEQDDir.Items[i].Selector[y].Value == avalue)//
                    {
                        return aEQDDir.Items[i];
                    }
                }                
            }
            else if(aEQDDir.Items[i].DirType == EQDDIR_Group)//分组
            {
                for(var y = 0; y < aEQDDir.Items[i].Group.length; y++)
                {
                    for(var t = 0; t < aEQDDir.Items[i].Group[y].Selector.length; t++)
                    {
                        if(aEQDDir.Items[i].Group[y].Selector[t].Value == avalue)//
                        {
                            return aEQDDir.Items[i].Group[y].Dir;
                            
                        }
                    }
                }
            }
            else
            {
                var currEQDDir = InitSearchSelect(avalue, aEQDDir.Items[i]);
                if(currEQDDir != null)
                {
                    return currEQDDir;
                }
            }
        }
     }
     return null;
}
function InitselectedItem(atd, ahden, aArray)//
{
    var currvalue = document.getElementById(ahden).value;
    var svalue = currvalue.split("\x1c");
    if(svalue && svalue.length > 0 && atd)
    {
        var newcells = atd.parentElement.insertCell(0);
        newcells.style.textAlign = 'left';
        
        var currEQDDir = InitSearchSelect(svalue[0], aArray, newcells, ahden);
        if(!currEQDDir)
        {
            return;
        }
        if(currEQDDir.DirType == EQDDIR_Selector)//加载无分组选项
        {
            for(var y = 0; y < currEQDDir.Selector.length; y++)
            {
                if(currEQDDir.Selector[y].IsSingleOrMore == EQDSelect_Single)//单选
                {
                    var radio1 = Createradio(currEQDDir.Selector[y], currEQDDir.Value, newcells, ahden);
                    for(var w = 0; w < svalue.length; w++)
                    {
                        if(svalue[w] == currEQDDir.Selector[y].Value)//选择项
                        {
                            radio1.checked = true;
                            break;
                        }
                    }
                }
                else if(currEQDDir.Selector[y].IsSingleOrMore == EQDSelect_More)//多选
                {
                    var checkbox1 = Createcheckbox(currEQDDir.Selector[y], newcells, ahden);
                    for(var w = 0; w < svalue.length; w++)
                    {
                        if(svalue[w] == currEQDDir.Selector[y].Value)//选择项
                        {
                            checkbox1.checked = true;
                            break;
                        }
                    }
                }
            }
        }
        else if(currEQDDir.DirType == EQDDIR_Group)//加载分组
        {
            for(var y = 0; y < currEQDDir.Group.length; y++)
            {
                var lable1 = document.createElement("label");
                lable1.innerHTML = currEQDDir.Group[y].Name;
                newcells.appendChild(lable1);
                var br1 = document.createElement("br");
                newcells.appendChild(br1);
                for(var t = 0; t < currEQDDir.Group[y].Selector.length; t++)
                {
                    if(currEQDDir.Group[y].Selector[t].IsSingleOrMore == EQDSelect_Single)//单选
                    {
                        var radio1 = Createradio(currEQDDir.Group[y].Selector[t], currEQDDir.Group[y].Value, newcells, ahden);
                        for(var w = 0; w < svalue.length; w++)
                        {
                            if(svalue[w] == currEQDDir.Group[y].Selector[t].Value)//选中项
                            {
                                radio1.checked = true;
                                break;
                            }
                        }
                    }
                    else if(currEQDDir.Group[y].Selector[t].IsSingleOrMore == EQDSelect_More)//多选
                    {
                        var checkbox1 = Createcheckbox(currEQDDir.Group[y].Selector[t], newcells, ahden);
                        for(var w = 0; w < svalue.length; w++)
                        {
                            if(svalue[w] == currEQDDir.Group[y].Selector[t].Value)//选择项
                            {
                                checkbox1.checked = true;
                                break;
                            }
                        }
                    }
                }
                var br2 = document.createElement("br");
                newcells.appendChild(br2);
            }
        }
        if(currEQDDir && currEQDDir.Dir)
        {
            InitSearchDir(currEQDDir.Dir, currEQDDir.Value, newcells, ahden, aArray);//加载目录
        }
    }
}
function InitSearchDir(aEQDDir, avalue, atd, ahden, aArray)//遍历加载目录
{
    if(aEQDDir)
    {
        var newcells = atd.parentElement.insertCell(0);
        newcells.style.textAlign = 'left';
        
        var select1 = CreateSelect(aEQDDir, newcells, ahden, aArray);
        for(var i = 0; i < select1.options.length; i++)
        {
            if(select1.options[i].value == avalue)//设置选中目录
            {
                select1.selectedIndex = i;
                break;
            }
        }
        if(aEQDDir.Dir)//判断 有上级目录继续递归加载
        {
            InitSearchDir(aEQDDir.Dir, aEQDDir.Value, newcells, ahden, aArray)
        }
    }
}