﻿function expandMenu(div, divDropDownId)
{
    // hide all dropdowns
    var tags = document.getElementsByTagName("div");
    for (var i=0; i<tags.length; i++)
    {
        if (tags[i].getAttribute("id") != null)
        {
            if (tags[i].getAttribute("id").indexOf("divDropDownListCtrl") > -1 && tags[i].getAttribute("id") != divDropDownId)
                tags[i].style.display = "none";
        }
    }
    
    // clear all backgrounds for div menus
    tags = document.getElementsByTagName("div");
    for (var i=0; i<tags.length; i++)
    {
        if (tags[i].getAttribute("id") != null)
        {
            if (tags[i].getAttribute("id").indexOf("divMenu_") > -1)
            {
                tags[i].style.background = "";
            }
        }
    }
    
    var divDropDown = document.getElementById(divDropDownId);
    if (divDropDown.style.display != "")
    {
        divDropDown.style.display = "";
        divDropDown.style.background = "#e9e9e9";
        div.style.background = "#e9e9e9";
    }
    else
    {
        divDropDown.style.display = "none";
        divDropDown.style.background = "";
        div.style.background = "";
    }
}

function hideAll()
{
    // hide all dropdowns
    var tags = document.getElementsByTagName("div");
    for (var i=0; i<tags.length; i++)
    {
        if (tags[i].getAttribute("id") != null)
        {
            if (tags[i].getAttribute("id").indexOf("divDropDownListCtrl") > -1)
                tags[i].style.display = "none";
        }
    }
    
    // clear all backgrounds for div menus
    tags = document.getElementsByTagName("div");
    for (var i=0; i<tags.length; i++)
    {
        if (tags[i].getAttribute("id") != null)
        {
            if (tags[i].getAttribute("id").indexOf("divMenu_") > -1)
            {
                tags[i].style.background = "";
            }
        }
    }
}

function checkboxSelection(chkOption, hdnSelectedValues)
{
    var memory = document.getElementById(hdnSelectedValues);
    
    var lbl = document.getElementById(chkOption.getAttribute("id").replace("chk", "lbl"));
    
    var selectedValues = memory.value.split('|');
    var isAlreadySelect = false;
    for (var i=0; i<selectedValues.length; i++)
    {
        if (selectedValues[i] == chkOption.value)
        {
            isAlreadySelect = true;
            break;
        }
    }
    
    if (chkOption.checked)
    {
        if (!isAlreadySelect)
            memory.value += "|" + chkOption.value;
        lbl.style.fontWeight = "bold";
    }
    else
    {
        memory.value = memory.value.replace("|" + chkOption.value, "");
        lbl.style.fontWeight = "";
    }
}

function checkboxSelectionWithSubMenu(chkOption, hdnSelectedValues, index, divClientId, divMenu, suboptionsId)
{
    var memory = document.getElementById(hdnSelectedValues);
    var guid = chkOption.getAttribute("id").replace("chk", ""); 
    var lbl = document.getElementById(chkOption.getAttribute("id").replace("chk", "lbl"));
    
    //*********************************************
    //   CREATING A SUBMENU
    //*********************************************
    
    // a new copy of submenu which will be shown under the checkbox
    var subMenu = document.getElementById(divMenu).cloneNode(true);
    
    // locate the initializing row    
    var tbl = document.getElementById("tbl" + divClientId);
    var rows = tbl.getElementsByTagName("tr");
    var index = 0;
    for (var i=0; i<rows.length; i++)
    {
        if (rows[i].getAttribute("id") != null)
        {
            if (rows[i].getAttribute("id").indexOf("filter_") > -1)
            {
                index++;
                i += subMenu.getElementsByTagName("tr").length;
            }
            else if (rows[i].getAttribute("id") == "tr" + guid)
            {
                break;
            }
            else
                index++;
        }
    }
    
    // a hidden field to store values in
    var suboptions = document.getElementById(suboptionsId);
    
    var tags = subMenu.getElementsByTagName("input");
    
    if (chkOption.checked)
    {        
        for (var i=0; i<tags.length; i++)
        {
            if (tags[i].getAttribute("type") == "text")
            {
            
                tags[i].onchange = function()
                {
                    /*if (this.value != "")
                    {
                        // save the value
                        suboptions.value += "|" + this.name + '_' + chkOption.value + ":" + this.value;
                    }
                    else
                    {
                        // delete the value
                        if (suboptions.value != "")
                        {
                            if (suboptions.value[0] == "|")
                                suboptions.value = suboptions.value.substring(1);
                        }
                        
                        var values = suboptions.value.split("|");
                        suboptions.value = "";
                        
                        for (var i=0; i<values.length; i++)
                        {
                            if (values[i].indexOf(this.name + '_' + chkOption.value) == -1)
                            {
                                suboptions.value += "|" + values[i];
                            }
                        }
                    }*/
                    
                    // delete the value
                    if (suboptions.value != "")
                    {
                        if (suboptions.value[0] == "|")
                            suboptions.value = suboptions.value.substring(1);
                    }
                    
                    var values = suboptions.value.split("|");
                    suboptions.value = "";
                    
                    for (var i=0; i<values.length; i++)
                    {
                        if (values[i].indexOf(this.name + '_' + chkOption.value) == -1)
                        {
                            suboptions.value += "|" + values[i];
                        }
                    }
                    
                    if (this.value != "")
                        suboptions.value += "|" + this.name + '_' + chkOption.value + ":" + this.value;
                }
                
                tags[i].setAttribute("id", "txt" + tags[i].getAttribute("name") + guid);
            }
        }
        
        var selectedValues = memory.value.split('|');
        var isAlreadySelect = false;
        for (var i=0; i<selectedValues.length; i++)
        {
            if (selectedValues[i] == chkOption.value)
            {
                isAlreadySelect = true;
                break;
            }
        }
        
        
        if (!isAlreadySelect)
            memory.value += "|" + chkOption.value;
        lbl.style.fontWeight = "bold";
        
        // create a submenu        
        var tr = tbl.insertRow(index + 1);
        tr.setAttribute("id", "filter_" + guid);
            
        var td2 = document.createElement("td");
        td2.setAttribute("colspan", "2");
        
        var childElements = subMenu.getElementsByTagName("input");
        for (var i=0; i<childElements.length; i++)
        {
            // each INPUT child element will have its id as [ID + GUID]
            //childElements[i].setAttribute("id", childElements[i].getAttribute("id") + guid);
            
            switch(childElements[i].getAttribute("type"))
            {
                case "text":
                    childElements[i].value = "";
                    break;
                case "checkbox":
                    childElements[i].checked = false;
                    break;
            }
        }
        
        subMenu.style.display = "";
        
        td2.appendChild(subMenu);
        tr.appendChild(td2);
    }
    else
    {
        for (var i=0; i<tags.length; i++)
        {
            if (tags[i].getAttribute("type") == "text")
            {
                var txt = document.getElementById(tags[i].getAttribute("id"));
                
                //suboptions.value = suboptions.value.replace("|" + txt.name + '_' + chkOption.value + ":" + txt.value, "");
                
                tags[i].setAttribute("id", "txt" + tags[i].getAttribute("name") + guid);
                
                suboptions.value = "";
            }
        }
        
        tbl.deleteRow(index + 1);
        memory.value = memory.value.replace("|" + chkOption.value, "");
        lbl.style.fontWeight = "";
    }
}

// set the checked state on postback
function setCheckedState(controlId, selectedValues)
{
    for (var i=0; i<selectedValues.length; i++)
    {
        document.getElementById(controlId + "_" + selectedValues[i]).click();
    }
}

function setFieldsState(hiddenValuesId, controlId)
{
    var hiddenValues = document.getElementById(hiddenValuesId);
    if (hiddenValues.value != "")
    {
        if (hiddenValues.value[0] == "|")
        {
            hiddenValues.value = hiddenValues.value.substring(1);
        }
            
        var args = hiddenValues.value.split('|');
        
        var elementId;
        for (var i=0; i<args.length; i++)
        {
            var item = args[i].toString().split(':');
            elementId = 'txt' + item[0].split('_')[0] + '_' + controlId + '_' + item[0].split('_')[1];
            
            var el = document.getElementById(elementId);
            el.value = item[1];
        }
    }
}