﻿//DetailCellControl
function DetailCellControlBindTextBoxToSelect(select)
{
    if (select != null)
    {
        $(select).change(
            function(event)
            {
                var select = event.target;
                var txt = select.parentNode.getElementsByTagName("input")[0];
                if (select.tagName.toUpperCase() == "SELECT")
                {
                    txt.value = select.value;
                }
                else
                {
                    txt.value = select.getValue();
                }
            });
    }
}
function DetailCellControlBindTextBoxToRadio(radioTable)
{
    if (radioTable != null)
    {
        var radioButtons = radioTable.getElementsByTagName("input");
        
        //Prvi radioButton je "..." i sakriven je, zato je pocetna vrednost brojaca jednaka 1
        for (var i = 1; i < radioButtons.length; i++)
        {
            var radioButton = radioButtons[i];
            $(radioButton).click( 
                function(event)
                {
                    var radioButton = event.target;
                    var radioTable = radioButton.parentNode.parentNode.parentNode.parentNode;
                    var txt = radioTable.parentNode.getElementsByTagName("input")[0];
                    txt.value = radioButton.value;
                });
        }
    }
}

//Isdacon.IFrameJoin
function ExpansionsIFrameJoin(type, control1, control2, control3, control4)
{
    if (type == "ListBoxes")
    {
        var lboxYes = control1;
        var lboxNo = control2;
        var btnAdd = control3;
        var btnRemove = control4;
        
        btnAdd.setAttribute("ExpansionsIFrameJoinType", "ListBoxes");
        btnAdd.setAttribute("ExpansionsIFrameListBoxNoId", lboxNo.id);
        $(btnAdd).click(ExpansionsIFrameJoinInsert);
        
        btnRemove.setAttribute("ExpansionsIFrameJoinType", "ListBoxes");
        btnRemove.setAttribute("ExpansionsIFrameListBoxYesId", lboxYes.id);
        $(btnRemove).click(ExpansionsIFrameJoinDelete);
        
        ExpansionsIFrameJoinSetSelectParentTextBox(type, lboxYes);
    }
    else if (type == "DataList")
    {
        var dataList = control1;
        
        var inputs = dataList.getElementsByTagName("input");
        
        var hiddenFields = new Array();
        var checkBoxes = new Array();
        for (var i = 0; i < inputs.length; i++)
        {
            if (inputs[i].type == "hidden")
            {
                hiddenFields[hiddenFields.length] = inputs[i];
            }
            else if (inputs[i].type == "checkbox")
            {
                var checkBox = inputs[i];
                checkBox.setAttribute("ExpansionsIFrameJoinType", "DataList");
                checkBox.setAttribute("ExpansionsIFrameJoinDataListId", dataList.id);
                $(checkBox).click(ExpansionsIFrameJoinInsertOrDelete);
                checkBoxes[checkBoxes.length] = checkBox;
            }
        }
        
        ExpansionsIFrameJoinSetSelectParentTextBox(type, dataList);
        
        var txts = ExpansionsIFrameParentGetParentControls(window);
        var txtInsert = txts[txts.length - 2];
        var txtDelete = txts[txts.length - 1];
        txtInsert.value = "";
        txtDelete.value = "";
    }
}
function ExpansionsIFrameJoinSetSelectParentTextBox(type, control)
{
    var valuesAndSelection = ExpansionsIFrameJoinGetValuesAndSelection(type, control);
    var values = valuesAndSelection[0];
    var selection = valuesAndSelection[1];
    
    var txts = ExpansionsIFrameParentGetParentControls(window);
    var txtSelect = txts[txts.length - 3];
    txtSelect.value = "";
    for (var i = 0; i < values.length; i++)
    {
        if (txtSelect.value.length > 0)
        {
            txtSelect.value += AJAXValueSeparator;
        }
        txtSelect.value += values[i];
    }
}
function ExpansionsIFrameJoinSetInsertAndDeleteParentTextBox(values, selection, txtFrom, txtTo)
{
    var fromIds = txtFrom.value.split(AJAXValueSeparator);
    
    for (var i = 0; i < values.length; i++)
    {
        var value = values[i];
        var selected = selection[i];
        
        if (selected)
        {
            var isFrom = false;
            for (var j = 0; j < fromIds.length; j++)
            {
                if (value == fromIds[j])
                {
                    isFrom = true;
                    fromIds[j] = "";
                    break;
                }
            }
            
            if (!isFrom)
            {
                if (txtTo.value.length > 0)
                {
                    txtTo.value += AJAXValueSeparator;
                }
                txtTo.value += value;
            }
        }
    }
    
    txtFrom.value = "";
    for (var j = 0; j < fromIds.length; j++)
    {
        if (fromIds[j] != "")
        {
            if (txtFrom.value.length > 0)
            {
                txtFrom.value += AJAXValueSeparator;
            }
            txtFrom.value += fromIds[j];
        }
    }
}
function ExpansionsIFrameJoinGetValuesAndSelection(type, control1, control2)
{
    var valuesAndSelection = new Array();
    var values = new Array();
    var selection = new Array();
    valuesAndSelection[0] = values;
    valuesAndSelection[1] = selection;
    
    if (type == "ListBoxes")
    {
        var lbox = control1;
        var btn = control2;
        
        if (typeof btn == "undefined" || btn == null)//Loaded metod je pozvao ovu funkciju
        {
            for (var i = 0; i < lbox.options.length; i++)
            {
                values[i] = lbox.options[i].value;
                selection[i] = lbox.options[i].selected;
            }
        }
        else//Dogadjaj click-a na neki btn je pozvao ovu funkciju
        {
            for (var i = 0; i < lbox.options.length; i++)
            {
                if (lbox.options[i].selected)
                {
                    values[values.length] = lbox.options[i].value;
                    selection[selection.length] = true;
                }
            }
        }
    }
    else if (type == "DataList")
    {
        var dataList = control1;
        var checkBox = control2;
        
        var inputs = dataList.getElementsByTagName("input");
        
        var hiddenFields = new Array();
        var checkBoxes = new Array();
        for (var i = 0; i < inputs.length; i++)
        {
            if (inputs[i].type == "hidden")
            {
                hiddenFields[hiddenFields.length] = inputs[i];
            }
            else if (inputs[i].type == "checkbox")
            {
                checkBoxes[checkBoxes.length] = inputs[i];
            }
        }
        
        if (typeof checkBox == "undefined" || checkBox == null)//Loaded metod je pozvao ovu funkciju
        {
            for (var i = 0; i < checkBoxes.length; i++)
            {
                if (checkBoxes[i].checked)
                {
                    values[values.length] = hiddenFields[i].value;
                    selection[selection.length] = true;
                }
            }
        }
        else//Dogadjaj click-a na neki checkBox je pozvao ovu funkciju
        {
            for (var i = 0; i < checkBoxes.length; i++)
            {
                if (checkBoxes[i] == checkBox)
                {
                    values[0] = hiddenFields[i].value;
                    selection[0] = true;
                }
            }
        }
    }
    
    return valuesAndSelection;
}
function ExpansionsIFrameJoinInsertOrDelete(event)
{
    var control = event.target;
    var type = control.getAttribute("ExpansionsIFrameJoinType");
    
    if (type == "DataList")
    {
        var checkBox = control;
        var dataListId = checkBox.getAttribute("ExpansionsIFrameJoinDataListId");
        var dataList = document.getElementById(dataListId);
        
        ExpansionsIFrameJoinSetSelectParentTextBox(type, dataList);
        
        if (checkBox.checked)
        {
            //Sada je checked, znaci da je bilo unchecked
            ExpansionsIFrameJoinInsert(event);
        }
        else
        {
            //Sada je unchecked, znaci da je bilo checked
            ExpansionsIFrameJoinDelete(event);
        }
    }
}
function ExpansionsIFrameJoinInsert(event)
{
    var type;
    var control1;
    var control2;
    
    var control = event.target;
    var type = control.getAttribute("ExpansionsIFrameJoinType");
    
    if (type == "ListBoxes")
    {
        var btnAdd = control;
        
        var lboxNoId = btnAdd.getAttribute("ExpansionsIFrameListBoxNoId");
        var lboxNo = document.getElementById(lboxNoId);
        
        control1 = lboxNo;
        control2 = btnAdd;
    }
    else if (type == "DataList")
    {
        var checkBox = control;
        var dataListId = checkBox.getAttribute("ExpansionsIFrameJoinDataListId");
        var dataList = document.getElementById(dataListId);
        
        control1 = dataList;
        control2 = checkBox;
    }
    
    var valuesAndSelection = ExpansionsIFrameJoinGetValuesAndSelection(type, control1, control2);
    var values = valuesAndSelection[0];
    var selection = valuesAndSelection[1];
    
    var txts = ExpansionsIFrameParentGetParentControls(window);
    var txtDelete = txts[txts.length - 1];
    var txtInsert = txts[txts.length - 2];
    
    ExpansionsIFrameJoinSetInsertAndDeleteParentTextBox(values, selection, txtDelete, txtInsert);
}
function ExpansionsIFrameJoinDelete(event)
{
    var type;
    var control1;
    var control2;
    
    var control = event.target;
    var type = control.getAttribute("ExpansionsIFrameJoinType");
    
    if (type == "ListBoxes")
    {
        var btnRemove = control;
        
        var lboxYesId = btnRemove.getAttribute("ExpansionsIFrameListBoxYesId");
        var lboxYes = document.getElementById(lboxYesId);
        
        control1 = lboxYes;
        control2 = btnRemove;
    }
    else if (type == "DataList")
    {
        var checkBox = control;
        var dataListId = checkBox.getAttribute("ExpansionsIFrameJoinDataListId");
        var dataList = document.getElementById(dataListId);
        
        control1 = dataList;
        control2 = checkBox;
    }
    
    var valuesAndSelection = ExpansionsIFrameJoinGetValuesAndSelection(type, control1, control2);
    var values = valuesAndSelection[0];
    var selection = valuesAndSelection[1];
    
    var txts = ExpansionsIFrameParentGetParentControls(window);
    var txtInsert = txts[txts.length - 2];
    var txtDelete = txts[txts.length - 1];
    
    ExpansionsIFrameJoinSetInsertAndDeleteParentTextBox(values, selection, txtInsert, txtDelete);
}










//Isdacon.IFrameParent
function ExpansionsIFrameParentGetParentControls(iframeWindow)
{
    var iframe = iframeWindow.frameElement;
    var tBody = iframe.parentNode.parentNode.parentNode;//iframe se nalazi u poslednjoj celiji tabele
    var txts = tBody.getElementsByTagName("input");
    return txts;
}










//Isdacon.Search
function ExpansionsSearchTextBoxKeyPress(event, btnSearchId)
{
    //Ako se pritisne enter key u text box-u znaci da se zeli search, user friendly
    if (event.keyCode == 13)
    {
        var btnSearch = document.getElementById(btnSearchId);
        btnSearch.focus();
        btnSearch.click();
    }
}










//Isdacon.View
function ExpansionsViewGridViewBindMouseEvents(rowId)
{
    var row = document.getElementById(rowId);
    $(row).mouseover(ExpansionsViewGridViewRowMouseOver);
    $(row).mouseout(ExpansionsViewGridViewRowMouseOut);
}
function ExpansionsViewGridViewRowMouseOver(event)
{
    var row = event.target;
    while (row.tagName != "TR")
    {
        row = row.parentNode;
    }
    
    var selectedColor;
    var selectedColorMozilla;
    var hoverColor;
    var evenRowColor;
    var oddRowColor;
    if (ApplicationName == "Evropa")
    {
        selectedColor = '#e4e4e3';
        selectedColorMozilla = 'rgb(228, 228, 227)';
        hoverColor = '#e4e4e4';
        evenRowColor = '#f5f5f5';
        oddRowColor = '#ffffff';
    }
    else if (ApplicationName == "CBC")
    {
        selectedColor = '#eff3f1';
        selectedColorMozilla = 'rgb(239, 243, 241)';
        hoverColor = '#eff3f2';
        evenRowColor = '#e2e5e6';
        oddRowColor = '#e2e5e6';
    }
    
    //Selektovani red se ne menja
    var backgroundColor = row.style.backgroundColor.toLowerCase();
    if (backgroundColor == selectedColor || backgroundColor == selectedColorMozilla)
    {
        return;
    }
    
    row.style.backgroundColor = hoverColor;
    
    var childRows = row.getElementsByTagName("tr");
    for (var i = 0; i < childRows.length; i++)
    {
        var childRow = childRows[i];
        childRow.style.backgroundColor = (childRow.rowIndex % 2 == 0) ? evenRowColor : oddRowColor;
    }
}
function ExpansionsViewGridViewRowMouseOut(event)
{
    var row = event.target;
    while (row.tagName != "TR")
    {
        row = row.parentNode;
    }
    
    var selectedColor;
    var selectedColorMozilla;
    var hoverColor;
    var evenRowColor;
    var oddRowColor;
    if (ApplicationName == "Evropa")
    {
        selectedColor = '#e4e4e3';
        selectedColorMozilla = 'rgb(228, 228, 227)';
        hoverColor = '#e4e4e4';
        evenRowColor = '#f5f5f5';
        oddRowColor = '#ffffff';
    }
    else if (ApplicationName == "CBC")
    {
        selectedColor = '#eff3f1';
        selectedColorMozilla = 'rgb(239, 243, 241)';
        hoverColor = '#eff3f2';
        evenRowColor = '#e2e5e6';
        oddRowColor = '#e2e5e6';
    }
    
    //Selektovani red se ne menja
    var backgroundColor = row.style.backgroundColor.toLowerCase();
    if (backgroundColor == selectedColor || backgroundColor == selectedColorMozilla)
    {
        return;
    }
    
    row.style.backgroundColor = (row.rowIndex % 2 == 0) ? evenRowColor : oddRowColor;
}










//Isdacon.CheckBoxJoin
function ExpansionsCheckBoxJoinRequiredValidator(source, args)
{
    var cboxesContainer = ElementGetPreviousElementSibling(source);
    var inputs = cboxesContainer.getElementsByTagName("input");
    for (var i = 0; i < inputs.length; i++)
    {
        var input = inputs[i];
        if (input.type == "checkbox")
        {
            var cbox = input;
            if (cbox.checked)
            {
                args.IsValid = true;
                return;
            }
        }
    }
    args.IsValid = false;
    
}

