﻿// Variable to hold current filter viewstate value
var _currentFilterValue = ' ';
var jsAscx = '';
var jsPanelPath = '';
var jsTargetPanelId = '';
var jsFilterViewStateId = '';
var jsSortViewStateId = '';
var jsPagingViewStateId = '';
var jsPcId = 1;
var defaultYearText = '';
var sPanel = ''; // global variable for ProgressPanel
// Client side array initilization set from server side
var jsArrEnexionClientValiation = new Array();
//########################################################################

/*
Created by :Mangesh
Created On : 2010-09-21
Purpose    : To set global resource variables*/
function jEnxSetGlobalResourceKeyValue() {
    defaultYearText = jsArrEnexionClientValiation[0];
} // jEnxSetGlobalResourceKeyValue

//To set image on mouse over of submenu
function jWDOverImage(imageId, imageUrl) {
    var img = document.getElementById(imageId);
    img.src = imageUrl;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// To set image on mouse out of submenu
function jWDOutImage(imageId, imageUrl) {
    var img = document.getElementById(imageId);
    img.src = imageUrl;
}

/// Created By : Amol Udavant
/// Created On : 2010/01/19
// JScript File for TextArea
// Keep user from entering more than maxLength characters
function doKeypress(control, maxLength) {
    //maxLength = control.attributes["maxLength"].value;
    value = control.value;
    if (maxLength && value.length > maxLength - 1) {
        event.returnValue = false;
        maxLength = parseInt(maxLength);
    }
}
// Cancel default behavior
function doBeforePaste(control, maxLength) {
    //maxLength = control.attributes["maxLength"].value;
    if (maxLength) {
        event.returnValue = false;
    }
}
// Cancel default behavior and create a new paste routine
function doPaste(control, maxLength) {
    //maxLength = control.attributes["maxLength"].value;
    value = control.value;
    if (maxLength) {
        event.returnValue = false;
        maxLength = parseInt(maxLength);
        var oTR = control.document.selection.createRange();
        var iInsertLength = maxLength - value.length + oTR.text.length;
        var sData = window.clipboardData.getData("Text").substr(0, iInsertLength);
        oTR.text = sData;
    }
}

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Panel function


var progPanelVisible = false;
var retval = '';

var globArr = new Array();

function CreateGlobalArray(treeString, rootNode) {
    arr = treeString.split('¬');
    for (var i = 0; i < arr.length; i++) {

        var subArr = arr[i].split(';');
        var key = subArr[1];

        globArr[key] = new Array();

        // level 
        globArr[key][0] = subArr[0];

        // msgId
        globArr[key][1] = subArr[2];

        // description
        globArr[key][2] = subArr[3];

        // children
        globArr[key][3] = new Array();

        for (var j = 4; j < subArr.length - 1; j++) {
            if (subArr[j].length > 0) {
                globArr[key][3][j - 4] = subArr[j];
            }
        }
    }
    TraverseHtmlPanels(rootNode);
    SetPanels();
}

function GetChildMessage(valArr, parentPath) {
    var children = globArr[parentPath][3];
    var pos = valArr.length;


    for (var i = 0; i < children.length; i++) {
        if ('' != globArr[children[i]][1] && '0' != globArr[children[i]][1]) {
            valArr[pos] = new Array();
            valArr[pos][0] = globArr[children[i]][0];
            valArr[pos][1] = globArr[children[i]][1];
            valArr[pos][2] = globArr[children[i]][2];
        }
        GetChildMessage(valArr, children[i]);
    }
}

function SetPanels() {
    for (var elem in globArr) {
        var id = globArr[elem][4];
        var level = globArr[elem][0];
        if (undefined != id) {
            var panel = document.getElementById(id);
            if (undefined != panel) {
                switch (level) {
                    case '1':
                        panel.style.backgroundImage = "url('/img/bg_ok.gif')";
                        break;
                    case '2':
                        panel.style.backgroundImage = "url('/img/bg_warn.gif')";
                        break;
                    case '4':
                        panel.style.backgroundImage = "url('/img/bg_alert.gif')";
                        var valArr = new Array();
                        GetChildMessage(valArr, elem);
                        var msg = '';

                        for (var i = 0; i < valArr.length; i++) {
                            msg += valArr[i][2] + "; ";
                        }
                        panel.title = msg;
                        break;
                    default:
                        panel.style.backgroundImage = "url('/img/bg_none.gif')";
                        break;
                }
            }
        }
    }
}

function TraverseHtmlPanels(node) {

    if (node.length == 0) {
        return;
    }
    // extract the path from the node
    var nodePath = '';
    var pathArr = node.split('¬');
    if (pathArr.length >= 2) {
        nodePath = pathArr[1];
    }

    // get the node element (hidden input)	
    if (node.length > 0) {
        var elem = document.getElementById(node);
        if (undefined != elem) {
            var nodeValue = elem.value;
            var childArr = nodeValue.split(';');
            for (var i = 1; i < childArr.length; i++) {
                TraverseHtmlPanels(childArr[i]);
            }

            // var headerPanel=childArr[0];
            // register the panel id
            if (undefined != globArr[nodePath]) {
                globArr[nodePath][4] = childArr[0];
            }
        }
    }
}
/*
Created By : Mangesh    
Created On : 2010_09_20
Purpose    : To set the default year text */
function setDefaultYearText(msg) {
    defaultYearText = msg;
} // setDefaultYearText

function GetFiltervalues(filterViewStateId) {

    // we extract all elements by id and retreive the set data    
    // we then create an parameter string and send it to the service handler 
    // structure of the viewstate parameter is:
    // elementName;value;elementName;value; ....
    var filterViewStateStr = '';
    if (filterViewStateId != '') {
        var vselem = document.getElementById(filterViewStateId);
        var par = vselem.value.split(';');
        for (var i = 0; i < par.length; i += 2) {
            var elem = document.getElementById(par[i]);
            if (null != elem) {
                var elemType = elem.type;

                if ('text' == elemType) {
                    // TextField -> input type=text
                    if ('' != elem.value) {
                        if ('' != filterViewStateStr) {
                            filterViewStateStr += ';';
                        }
                        filterViewStateStr += par[i + 1] + ';' + elem.value.replace(/;/g, '');
                    }
                }
                else if ('select-multiple' == elemType) {
                    var valStr = '';
                    var sepStr = '';
                    for (var k = 0; k < elem.options.length; k++) {
                        if (elem.options[k].selected) {
                            valStr += sepStr + elem.options[k].value;
                            sepStr = '~';
                        }
                    }
                    if ('' != valStr) {
                        if ('' != filterViewStateStr) {
                            filterViewStateStr += ';';
                        }
                        filterViewStateStr += par[i + 1] + ';' + valStr;
                    }

                }
                else if ('select-one' == elemType) {
                    if (-1 != elem.selectedIndex) {
                        if ('' != filterViewStateStr) {
                            filterViewStateStr += ';';
                        }
                        filterViewStateStr += par[i + 1] + ';' + elem.options[elem.selectedIndex].value;
                    }
                }
                else if ('radio' == elemType) {
                    if (elem.checked) {
                        if ('' != filterViewStateStr) {
                            filterViewStateStr += ';';
                        }
                        filterViewStateStr += par[i + 1] + ';' + elem.checked;
                    }
                }
                else if ('checkbox' == elemType) {
                    if (elem.checked) {
                        if ('' != filterViewStateStr) {
                            filterViewStateStr += ';';
                        }
                        filterViewStateStr += par[i + 1] + ';' + elem.checked;
                    }
                }
                else if (undefined == elemType) {
                    if (elem.hasChildNodes() == true) {
                        var chCnt = elem.children.length;
                        var separator = '', dateFormate = '';
                        if (chCnt > 2) {
                            separator = elem.children[1].value;
                            dateFormate = "dd" + separator + "MM" + separator + "yyyy";
                            if (elem.children[2].value == dateFormate)
                                elemType = "DateSelector";
                        }
                    }
                    if ("DateSelector" == elemType) {
                        var dateEntered = document.getElementById(elem.id + "_txtStartDate").value;
                        var lenCount = dateEntered.length;

                        if (lenCount > 0) {
                            // Variables for date selector, to get entered data in control
                            var dsDateArray = new Array();
                            var date = '';                 // Set default value,empty
                            var dsDateLength;
                            var dateSeperator = '';        // Set default value,empty

                            // Get value setting for reference date and date pattern
                            dsDateArray.push(dateEntered); // Get date text box value
                            dsDateArray.push(elem.childNodes[2].value);

                            dsDateLength = dsDateArray.length;   // Get array length
                            for (var count = 0; count < dsDateLength; count++) {
                                date += dateSeperator + dsDateArray[count];
                                dateSeperator = '¬';
                            }
                            if (date != null && date != '') {
                                if ('' != filterViewStateStr) {
                                    filterViewStateStr += ';';
                                }
                                filterViewStateStr += par[i + 1] + ';' + date;
                            }
                        } // End of date length if
                        else {
                            document.getElementById(elem.id + "_rfvStartDate").style.display = "none";
                            document.getElementById(elem.id + "_rfvStartDate").style.visibility = "hidden";
                        }
                    }
                }
            }
        }
    }
    else {
        filterViewStateStr = '';
    }
    return filterViewStateStr;
}
/*
Created By : Prashant
Created On : 2010_05_24
Purpose    : Get default values of filter elements
TODO:- To get default values of controls other than textbox/dropdownList/dateselector ( like check box,listbox)
*/
function GetFilterDefaultValues(filterViewStateId) {

    // Get default values of the filter elements present in filterViewStateId
    // elementName;value;elementName;value; ....
    var filterViewStateStr = '';
    if (filterViewStateId != '') {
        var vselem = document.getElementById(filterViewStateId);
        var par = vselem.value.split(';');
        for (var i = 0; i < par.length; i += 2) {
            var elem = document.getElementById(par[i]);
            if (null != elem) {
                var elemType = elem.type;

                if ('text' == elemType) {
                    // TextField -> input type=text
                    if ('' != elem.value) {
                        if ('' != filterViewStateStr) {
                            filterViewStateStr += ';';
                        }
                        filterViewStateStr += par[i + 1] + ';' + elem.defaultValue.replace(/;/g, '');
                    }
                }
                else if ('select-multiple' == elemType) {
                    var valStr = '';
                    var sepStr = '';
                    filterViewStateStr += par[i + 1] + ';' + elem.options[0].value; ;

                }
                else if ('select-one' == elemType) {
                    if (-1 != elem.selectedIndex) {
                        if ('' != filterViewStateStr) {
                            filterViewStateStr += ';';
                        }
                        filterViewStateStr += par[i + 1] + ';' + elem.options[0].value;
                    }
                }
                else if ('radio' == elemType) {
                    if (elem.checked) {
                        if ('' != filterViewStateStr) {
                            filterViewStateStr += ';';
                        }
                        filterViewStateStr += par[i + 1] + ';' + elem.checked;
                    }
                }
                else if ('checkbox' == elemType) {
                    if (elem.checked) {
                        if ('' != filterViewStateStr) {
                            filterViewStateStr += ';';
                        }
                        filterViewStateStr += par[i + 1] + ';' + elem.checked;
                    }
                }
                else if (undefined == elemType) {
                    if (elem.hasChildNodes() == true) {
                        var chCnt = elem.children.length;
                        var separator = '', dateFormate = '';
                        if (chCnt > 2) {
                            separator = elem.children[1].value;
                            dateFormate = "dd" + separator + "MM" + separator + "yyyy";
                            if (elem.children[2].value == dateFormate)
                                elemType = "DateSelector";
                        }
                    }
                    if ("DateSelector" == elemType) {
                        var dateEntered = document.getElementById(elem.id + "_txtStartDate").defaultValue;
                        var lenCount = dateEntered.length;

                        if (lenCount > 0) {
                            // Variables for date selector, to get entered data in control
                            var dsDateArray = new Array();
                            var date = '';                 // Set default value,empty
                            var dsDateLength;
                            var dateSeperator = '';        // Set default value,empty

                            // Get value setting for reference date and date pattern
                            dsDateArray.push(dateEntered); // Get date text box value
                            dsDateArray.push(elem.childNodes[2].value);

                            dsDateLength = dsDateArray.length;   // Get array length
                            for (var count = 0; count < dsDateLength; count++) {
                                date += dateSeperator + dsDateArray[count];
                                dateSeperator = '¬';
                            }
                            if (date != null && date != '') {
                                if ('' != filterViewStateStr) {
                                    filterViewStateStr += ';';
                                }
                                filterViewStateStr += par[i + 1] + ';' + date;
                            }
                        } // End of date length if
                        else {
                            document.getElementById(elem.id + "_rfvStartDate").style.display = "none";
                            document.getElementById(elem.id + "_rfvStartDate").style.visibility = "hidden";
                        }
                    }
                }
            }
        }
    }
    else {
        filterViewStateStr = '';
    }
    return filterViewStateStr;
}

function SetSortViewState(sortViewStateId, colNumber, sortDirection) {

    var selem = document.getElementById(sortViewStateId);
    selem.value = colNumber + ';' + sortDirection;
}

function SetPagingViewState(pagingViewStateId, requestedPage, elementsPerPage, sectorSize, totalElements) {

    var pelem = document.getElementById(pagingViewStateId);
    pelem.value = requestedPage + ";" + elementsPerPage + ";" + sectorSize + ";" + totalElements;
}

function ResetPagingViewState(pagingViewStateId) {

    var pelem = document.getElementById(pagingViewStateId);
    if (undefined != pelem) {
        var elems = pelem.value.split(';');
        if (3 < pelem.value.length) {
            pelem.value = 0 + ";" + elems[1] + ";" + elems[2] + ";" + elems[3];
        }
        else {
            pelem.value = '0;0;0;0';
        }
    }
}

function SortButtonClick(ascx, path, targetPanelId, filterViewStateId, sortViewStateId, pagingViewStateId, colNumber, sortDirection, pcId) {

    if (progPanelVisible)
        return false;

    ShowProgressPanel(targetPanelId);

    var filterViewStateStr = GetFiltervalues(filterViewStateId);

    ResetPagingViewState(pagingViewStateId);
    var pagingViewState = document.getElementById(pagingViewStateId).value;

    SetSortViewState(sortViewStateId, colNumber, sortDirection)
    var sortViewState = document.getElementById(sortViewStateId).value;

    ret = PartialContentHandler.SortPostBack(ascx, path, targetPanelId, filterViewStateId, sortViewStateId, pagingViewStateId, filterViewStateStr, sortViewState, pagingViewState, pcId, OnCompleteSortRequest, OnTimeOut, OnError);
    return false;
}

/*
Modified By : Prashant
Modified On : 2010/05/19
Purpose     : Before paging check current fiterViewstate value is same by whic pager was created
If no then again call filter event to create pager according to new filterViewState value
Modified By : Mangesh
Modified On : 2010/07/09
Purpose     : Before paging checked path if path is not same go for paging
*/
function PagingButtonClick(ascx, path, targetPanelId, filterViewStateId, sortViewStateId, pagingViewStateId, requestedPage, elementsPerPage, sectorSize, totalElements, pcId) {

    if (progPanelVisible)
        return false;

    ShowProgressPanel(targetPanelId);

    var filterViewStateStr = GetFiltervalues(filterViewStateId);

    var sortViewState = document.getElementById(sortViewStateId).value;

    SetPagingViewState(pagingViewStateId, requestedPage, elementsPerPage, sectorSize, totalElements);
    var pagingViewState = document.getElementById(pagingViewStateId).value;
    // On first load set filter viewstate to default value
    if (_currentFilterValue == ' ')
        _currentFilterValue = GetFilterDefaultValues(filterViewStateId);
    // If there is no change in filter viewstate continue with paging or if path is not same
    if (filterViewStateStr == '' || filterViewStateStr == _currentFilterValue || jsPanelPath != path) {
        ret = PartialContentHandler.PagingPostBack(ascx, path, targetPanelId, filterViewStateId, sortViewStateId, pagingViewStateId, filterViewStateStr, sortViewState, pagingViewState, pcId, OnCompletePagingRequest, OnTimeOut, OnError);
    }
    // If filterviewstate value has been changed , call filteration event
    else {
        ret = PartialContentHandler.FilterPostBack(ascx, path, targetPanelId, filterViewStateId, sortViewStateId, pagingViewStateId, filterViewStateStr, sortViewState, pagingViewState, pcId, OnCompleteFilterRequest, OnTimeOut, OnError);
        _currentFilterValue = filterViewStateStr;
    }
    return false;
} // PagingButtonClick

/*
Modified By : Prashant
Modified On : 2010/05/19
Purpose     : Assign current filterViewState value to global variable
Modified By : Mangesh
Modified On : 2010/09/21
Purpose     : Called method JEnxSetTimeZone to set timezone if user enters '10' as year value & press enter key
*/
function FilterButtonClick(ascx, path, targetPanelId, filterViewStateId, sortViewStateId, pagingViewStateId, pcId) {

    if (progPanelVisible)
        return false;

    ShowProgressPanel(targetPanelId);
    jsAscx = ascx;
    jsPanelPath = path;
    jsTargetPanelId = targetPanelId;
    jsFilterViewStateId = filterViewStateId;
    jsSortViewStateId = sortViewStateId;
    jsPagingViewStateId = pagingViewStateId;
    jsPcId = pcId;

    var filterViewStateStr = '';
    var sortViewState = '';
    var pagingViewState = '';
    var filterViewStateStr = '';

    // Call method jEnxSetTimezone() to round up year & set timezone if user enters 10 for year & press enter button
    JEnxSetTimeZone(filterViewStateId);

    filterViewStateStr = GetFiltervalues(filterViewStateId);
    // Assign current filterViewState value to global variable
    _currentFilterValue = filterViewStateStr;
    if (sortViewStateId != '')
        sortViewState = document.getElementById(sortViewStateId).value;

    if (pagingViewStateId != '') {
        ResetPagingViewState(pagingViewStateId);
        pagingViewState = document.getElementById(pagingViewStateId).value;
    }
    ret = PartialContentHandler.FilterPostBack(ascx, path, targetPanelId, filterViewStateId, sortViewStateId, pagingViewStateId, filterViewStateStr, sortViewState, pagingViewState, pcId, OnCompleteFilterRequest, OnTimeOut, OnError);
    return false;
} // FilterButtonClick

function DynamicContentRequest(ascx, path, targetPanelId, nodeStateHookId, outerButtonId, innerButtonId, txtButtonId, panelId, colmenuId, expmenuId, expandedtxt, collapsedtxt, level, viewstateId) {
    if (progPanelVisible)
        return false;
    ShowProgressPanel(targetPanelId);
    var filterViewStateStr = '';
    if (jsFilterViewStateId != '') {
        filterViewStateStr = GetFiltervalues(jsFilterViewStateId);
        // Assign current filterViewState value to global variable
        _currentFilterValue = filterViewStateStr;
    }
    ret = PartialContentHandler.DynamicContentRequest(ascx, path, targetPanelId, nodeStateHookId, outerButtonId, innerButtonId, txtButtonId, panelId, colmenuId, expmenuId, expandedtxt, collapsedtxt, level, viewstateId, jsFilterViewStateId, jsSortViewStateId, jsPagingViewStateId, filterViewStateStr, '', '', jsPcId, OnCompleteDynamicRequest, OnTimeOut, OnError);

    return false;
} // DynamicContentRequest

function StatusRequest(ascx, path, targetPanelId, rootNodeId) {
    if (progPanelVisible)
        return false;

    ShowProgressPanel(targetPanelId);
    ret = PartialContentHandler.StatusRequest(ascx, path, targetPanelId, rootNodeId, OnCompleteStatusRequest, OnTimeOut, OnError);
    return false;
}

function OnCompleteStatusRequest(arg) {
    if ('0' == arg[0]) {
        alert("Argument error encountered when calling the server.");
        HideProgressPanel();
        return;
    }
    CreateGlobalArray(arg[1], arg[2]);
    HideProgressPanel();
}

function OnCompleteDynamicRequest(arg) {
    if ('0' == arg[0]) {
        alert("Argument error encountered when calling the server.");
        HideProgressPanel();
    }
    //var elem = document.getElementById(arg[13]);
    var elem = document.getElementById(arg[14]);
    elem.innerHTML = arg[1];
    HideProgressPanel();
    //adjust thr nodestate hook of the callin panel
    document.getElementById(arg[14]).value = arg[15];

    togglePanel(arg[2], arg[3], arg[4], arg[5], arg[6], arg[7], arg[8], arg[9], arg[10], arg[11], arg[12], arg[13], arg[14], arg[15]);
    //togglePanel(outerButtonId, innerButtonId, txtButtonId, panelId, colmenuId, expmenuId, expandedtxt, collapsedtxt, level, viewstateId, ascx, path, targetPanelId, nodeStateHookId, quickAccess)
} // OnCompleteDynamicRequest

function OnCompleteFilterRequest(arg) {
    if ('0' == arg[0]) {
        alert("Argument error encountered when calling the server.");
        HideProgressPanel();
    }
    var elem = document.getElementById(arg[2]);
    elem.innerHTML = arg[1];
    HideProgressPanel();
}

function OnCompletePagingRequest(arg) {
    if ('0' == arg[0]) {
        alert("Argument error encountered when calling the server.");
        HideProgressPanel();
    }
    var elem = document.getElementById(arg[2]);
    elem.innerHTML = arg[1];
    HideProgressPanel();
}

function OnCompleteSortRequest(arg) {
    if ('0' == arg[0]) {
        alert("Argument error encountered when calling the server.");
        HideProgressPanel();
    }
    var elem = document.getElementById(arg[2]);
    elem.innerHTML = arg[1];
    HideProgressPanel();
}


function OnComplete(arg) {
    if ('0' == arg[0]) {
        alert("Argument error encountered when calling the server.");
        HideProgressPanel();
    }
    var idx = arg[1].indexOf('</span>')
    var elem = document.getElementById(arg[1].slice(0, idx));
    elem.innerHTML = arg[1].slice(idx + 7);
    HideProgressPanel();
}

function OnTimeOut(arg) {
    alert("Session TimeOut encountered when calling the server.");
    HideProgressPanel();

}

function OnError(arg) {
    alert("Error encountered when calling the server.");
    HideProgressPanel();

}

/*
Modified By   : Khushboo
Modified On   : 2010/10/25
Purpose       : To Show Progress panel on model popup
Version       : 2.1
Modified By   : Khushboo
Modified On   : 2010/12/28
Purpose       : To make progressPanel available when cancel button is clicked on modal PopUp 
Version       : 2.2.2
Modified By   : Swapnilb
Modified On   : 2012/1/5
Purpose       : Added px text to height variable if target panel is modalPanel
Version       : 2.2.7
*/
function ShowProgressPanel(targetPanel) {
    var pPanel;
    progPanelVisible = true;
    var tPanel = document.getElementById(targetPanel);
    pPanel = document.getElementById(progressPanel);
    if (sPanel != '')
        pPanel = sPanel;
    pPanel.style.opacity = "0";
    if (targetPanel == "modalPanel") {
        var height = document.getElementById(targetPanel).scrollHeight;
        pPanel.style.zIndex = "22";
        // Added px text to height variable. In mozila browser if we does not 
        // use px text then it consider pPanel height is zero
        pPanel.style.height = height + "px";
        document.getElementById("modalPanel").appendChild(pPanel);
        sPanel = pPanel;
    }
    pPanel.style.visibility = "visible";
    Effect.Appear(pPanel, 0.6, { duration: 0.5 });
} // ShowProgressPanel

/*
Modified By   : Khushboo
Modified On   : 2010/12/28
Purpose       : To make progressPanel available when cancel button is clicked on modal PopUp 
Version       : 2.2.2
*/
function HideProgressPanel() {
    var pPanel = document.getElementById(progressPanel);
    if (pPanel == null)
        pPanel = sPanel;
    Effect.Fade(pPanel, 0.1, { duration: 0.5 });
    setTimeout('HideProgressImg()', 500);
}

/*
Modified By   : Khushboo
Modified On   : 2010/12/28
Purpose       : To make progressPanel available when cancel button is clicked on modal PopUp 
Version       : 2.2.2
*/
function HideProgressImg() {
    var pPanel = document.getElementById(progressPanel)
    if (document.getElementById(progressPanel) == null)
        pPanel = sPanel;
    pPanel.style.visibility = "hidden";
    progPanelVisible = false;
}


/************************General methods for html elements operations**********************************/
/**
Created By: Rashmi
Created On: 2010/04/05
Purpose: Toggling of checkbox's checked and disabled properties based on choice
**/
function jEnxToggleCheckBox(elementId, isToggleEnable, isToggleCheck) {
    var object = document.getElementById(elementId);
    if (object != null) {
        // Toggle Enable/Disable property
        if (isToggleEnable) {
            object.parentNode.disabled = !object.disabled;
            object.disabled = !object.disabled;
        }
        // Toggle checked property      
        if (isToggleCheck)
            object.checked = !object.checked;
    }

}

/**
Created By: Rashmi
Created On: 2010/04/05
Purpose: Toggling of radiobutton's checked and disabled properties based on choice
**/
function jEnxToggleRadioButtonList(elementId, isToggleEnable, isToggleCheck) {
    var object = document.getElementById(elementId);
    if (object != null) {
        var collection = document.getElementById(elementId).getElementsByTagName("input");
        for (var x = 0; x < collection.length; x++) {
            // Toggle Enable/Disable property
            if (isToggleEnable) {
                object.disabled = !collection[x].disabled;
                collection[x].parentNode.disabled = !collection[x].disabled;
                collection[x].disabled = !collection[x].disabled;
            }
            // Toggle checked property 
            if (isToggleCheck) {
                collection[x].checked = !collection[x].checked;
            }

        }
    }
}

/**
Created By  : Ganesh
Created On  : 2010/04/14
Purpose     : Set enable property of control with specified value
**/
function jEnxEnableControl(controlId, isEnabled) {
    // Get control by client id
    var object = document.getElementById(controlId);
    // If control found
    if (object != null) {
        // Set disable property for parent node,
        // if isEnabled is true then enable the control,
        // if isEnabled is false then disable the control
        object.parentNode.disabled = !isEnabled;
        // Set disable property of control
        // if isEnabled is true then enable the control,
        // if isEnabled is false then disable the control    
        object.disabled = !isEnabled;
    }
} // jEnxEnableControl

/**
Created By  : Ganesh
Created On  : 2010/04/15
Purpose     : Set enable & checked property of control with specified value
**/
function jEnxEnableControlList(controlId, isEnabled, isChecked) {
    // Get control by client id
    var object = document.getElementById(controlId);
    // If control found
    if (object != null) {
        // Get object control list
        var objectList = object.getElementsByTagName("input");
        // If objectList found
        if (objectList != null) {
            // Loop upto objectList length
            for (var i = 0; i < objectList.length; i++) {
                // Set checked/unchecked to the individual element
                // If isChecked is true then set checked,
                // If isChecked is false then set unchecked
                objectList[i].checked = isChecked;
                // Set disable property for individual element,
                // if isEnabled is true then enable the control,
                // if isEnabled is false then disable the control 
                objectList[i].disabled = !isEnabled;
                // Set disable property for individual parent node,
                // if isEnabled is true then enable the control,
                // if isEnabled is false then disable the control 
                objectList[i].parentNode.disabled = !isEnabled;
            }
        }
        // Set disable property for control,
        // if isEnabled is true then enable the control,
        // if isEnabled is false then disable the control 
        object.disabled = !isEnabled;
    }
} // jEnxEnableControlList

/*
Created By  : Mangesh
Created On  : 2010/09/09
Purpose     : Round up year e.g. if year entered in format "y", "yy" & "yyy" change to format "yyyy".
*/
function RoundupYear(yearVal, centuryYear, defaultText) {
    if (yearVal == '')
        yearVal = defaultText;
    else if (yearVal != defaultText) {
        var centuryVal = toInt32_builtin(centuryYear);
        // RegEx for checking only numeric/digit
        var digitRegExpPattern = /^\d+$/;
        // Match regEx with the given expression
        if (yearVal.match(digitRegExpPattern)) {
            var length = yearVal.length;
            // Input is less than 4 digit append current century's 1st year
            if (length < 4) {
                centuryVal += toInt32_builtin(yearVal);
                yearVal = centuryVal;
            } // All four digit is entered
            else {
                yearVal = toInt32_builtin(yearVal);
                // Check for 0 year if so reset to default text
                if (yearVal <= 0)
                    yearVal = defaultText;
            }
        }
        else {
            yearVal = defaultText;
        }
    }
    return yearVal;
} // RoundupYear

/*
Created By  : Anushree
Created On  : 2010/04/26
Purpose     : Used for filter, to set timezone if any year selected
Modified By : Mangesh
Modified On : 2010/09/09
Purpose     : As year dropdown is replace by textBox
*/
function jEnxGetTimezone(txtYearCtrlId, ddlTimeZoneCtrlId, refDateCtrlId, century, txtYearDefaultVal) {
    var objYear = document.getElementById(txtYearCtrlId);
    var objTimezone = document.getElementById(ddlTimeZoneCtrlId);
    var objRefDate = document.getElementById(refDateCtrlId);
    var isSetDefault = false;
    // Get year value  
    var yearVal = objYear.value;
    // Call method to round up the year
    yearVal = RoundupYear(yearVal, century, txtYearDefaultVal);
    objYear.value = yearVal;
    // From PFC
    if (objRefDate != null) {
        var refDateVal = document.getElementById(objRefDate.id + "_txtStartDate").value;
        // if reference date is blank or having default date & year is not selected
        if ((refDateVal.length == 0 || refDateVal == "01.01.1600" || refDateVal == "01/01/1600") && yearVal == txtYearDefaultVal) {
            isSetDefault = true;
        }
    } // From Lp, Ts and Chartviewer (No reference date)
    else {
        if (yearVal == txtYearDefaultVal)
            isSetDefault = true;
    }
    if (objTimezone != null)
        FillddlTimeZone(isSetDefault, objTimezone);

} // jEnxGetTimezone

/*
Created By  : Mangesh
Created On  : 2010/09/09
Purpose     : Populate ddlTimezone based on filter value
*/
function FillddlTimeZone(resetddlTimeZone, objTimezone) {
    if (resetddlTimeZone) {
        // Reset back to default value
        objTimezone.selectedIndex = 0;
    }
    else {
        var tzCount = objTimezone.options.length;
        // If more than one item count (excluding default item) set 1st item as default
        if (tzCount > 1) {
            objTimezone.selectedIndex = objTimezone.options[1].index;
        }
    }
} // FillddlTimeZone

/*----------------------------------------------------------------------------------------------------------------------
Created By    : Mangesh
Created On    : 2010/05/17
Purpose       : To get value of radio button List
------------------------------------------------------------------------------------------------------------------------*/
function jEnxGetSelectedValueofRadioButtonList(rbtnlstCtrlClientId) {
    var rbtnlstCtrlObject = document.getElementById(rbtnlstCtrlClientId);

    if (rbtnlstCtrlObject != null) {
        var selectedValue = '';
        var rbtnlstInput = rbtnlstCtrlObject.getElementsByTagName("input");

        var count = rbtnlstInput.length;
        for (i = 0; i < count; i++) {
            if (document.getElementById(rbtnlstCtrlClientId + "_" + i.toString()).checked == true) {
                selectedValue = document.getElementById(rbtnlstCtrlClientId + "_" + i.toString()).value;
                break;
            }
        }
    }
    return selectedValue;
} // jEnxGetValueofRadioButtonList

/*----------------------------------------------------------------------------------------------------------------------
Created By    : Mangesh
Created On    : 2010/08/09
Purpose       : To get integer from string
------------------------------------------------------------------------------------------------------------------------*/
function toInt32_builtin(x) {
    return x | 0;
} // toInt32_builtin

/*----------------------------------------------------------------------------------------------------------------------
Created By    : Mangesh
Created On    : 2010/09/21
Purpose       : To set timeZone if user enters '10'as a year & press enter button 
------------------------------------------------------------------------------------------------------------------------*/
function JEnxSetTimeZone(filterViewStateId) {
    var yearCtrlId;
    var tziCtrlId;
    var refDateId;
    var decisionCount = 0;

    // Get today date
    var date = new Date();
    // Get century start year
    var centuryStartYear = toInt32_builtin((date.getFullYear() / 100)) * 100;

    // Get control Ids of year textbox, reference date & ddl timezone
    if (filterViewStateId != '') {
        var vselem = document.getElementById(filterViewStateId);
        var par = vselem.value.split(';');
        count = par.length;
        for (i = 0; i < count; i += 2) {
            id = par[i];
            var elem = document.getElementById(id);
            if (null != elem) {
                if (id.toLowerCase().search('year') != "-1") {
                    yearCtrlId = id;
                    decisionCount++;
                }
                else if (id.toLowerCase().search('timezone') != "-1") {
                    tziCtrlId = id;
                    decisionCount++;
                }
                else if (id.toLowerCase().search('referencedate') != "-1") {
                    refDateId = id;
                    decisionCount++;
                }
            }
            if (decisionCount == 3)
                break;
        }
        // Call method JEnxGetTimeZone to get timezone & round up year   
        if (decisionCount >= 2)
            jEnxGetTimezone(yearCtrlId, tziCtrlId, refDateId, centuryStartYear, defaultYearText);
    }
} // JEnxSetTimeZone
