﻿var count = -1;
var countSearch = -1;
var stop = false;
var upkey = false;
var downkey = false;
var valueSelected = false;
var DivList = new Array();
var TrombiWidgetID = "";
var globalParameter = "";
var globalCheck = 0;
var checkboxStatusChanged = false;
var checkboxStateChange = "";
var Child = /Child/;
var Parent = /Parent/;
var Ancestor = /Ancestor/;
var browserName = navigator.appName;
var numberOfElements = 0;
var SearchToolWidgetID;
var SearchvalueSelected = false;
var searchToolNumberOfElements;
var TrombiUserID;
var globalText = "";
var TrombiQuickWidgetID;
var requiredCheckboxes;
var globalLanguage;
var checkboxesStateChanged = new Array();
var checkboxElements = new Array();
var ButtonClicked = false;
var resultArray = new Array();
var radiocolumnName = "";
var blockName = "";
var divPermanent = new Array();
var filterArray = new Array();
var globalFilterRowCount = 0;
var checkboxObjects = new Array();
var globalTable;
var negFilterIDTable = new Array();
var userisOwner = false;
var globalRowPosition;
var userid;
var pageid;
var globalLanguage;
var FilterValuesArray = new Array();
var globalListId;
var TempHtml;
var TempId;
var TempFilterHtml;
var TempFilterRowsHtml;
var widgetNewRowCount = 0;
var uploadDocFromUI = false;
var tempGlobalWidgetId;
var docUpdated = false;
var columnNamesArray = new Array();
var vEditableOptionIndex_A = 0;
var groupedArray = new Array();
var checkBoxAdded = false;
var dictionary = new Array();
var filterExpandList = new Array();
/*************LIST TROMBI METHODS****************/
Array.prototype.contains = function(element) {
    for (var i = 0; i < this.length; i++) {
        if (this[i] == element) {
            return true;
        }
    }
    return false;
}
Array.prototype.ContainsKey = function (element) {
    for (var i = 0; i < this.length; i++) {
        if (this[i].key == element) {
            return i;
        }
    }
    return -1;
}
function HidethisModal() {
    $find("FilterModalPopup").hide();
}
function GetallcheckboxState(widgetid, changeStateArray, noSet) {
    var shortWidgetId = widgetid.split(",")[0];
    if (changeStateArray == undefined) {
        var thisArea = document.getElementById("FiltersThisArea");
        var thisWidgettempDiv =  document.createElement('DIV');
        thisWidgettempDiv.style.display = "none";
        thisWidgettempDiv.id = "ChkState" + widgetid;
        thisArea.appendChild(thisWidgettempDiv);
        var inputElements = document.getElementsByTagName('input');
        var tempDivEle = document.getElementById("ChkState" + widgetid);
        for (var i = 0; i < inputElements.length; i++) {
            if (inputElements[i].type == "checkbox") {
                if (inputElements[i].name.indexOf("Child") > -1 && inputElements[i].name.indexOf(shortWidgetId)>-1) {
                    checkboxElements.push(inputElements[i].name + "@#@" + inputElements[i].className + "@#@" + inputElements[i].checked + "@#@" + inputElements[i].id);
                    checkboxObjects.push(inputElements[i]);
                    tempDivEle.innerHTML += inputElements[i].name + "@#@" + inputElements[i].className + "@#@" + inputElements[i].checked + "@#@" + inputElements[i].id + "#INDSEP#";
                }
            }
        }
    }
    else {
        var inputElements = document.getElementsByTagName('input');
        for (var i = 0; i < inputElements.length; i++) {
            if (inputElements[i].type == "checkbox" && inputElements[i].name.indexOf("Child") > -1 && inputElements[i].name.indexOf(shortWidgetId) > -1) {
                changeStateArray.push(inputElements[i].name + "@#@" + inputElements[i].className + "@#@" + inputElements[i].checked + "@#@" + inputElements[i].id);
            }
        }
    }
    if ((noSet == null || noSet == undefined) && noSet != false) {
        if (checkboxObjects.length > 0)
            var kj = checkboxObjects[0].name;
        for (var k = 0; k < checkboxObjects.length; k++) {
            var setParent = new Array();
            var currName = document.getElementsByName(checkboxObjects[k].name);
            var allchecked = true;
            var parent = "";
            for (var z = 0; z < currName.length; z++) {
                setParent.push(currName[z].checked);
                parent = document.getElementsByName(currName[z].name.replace("Child", "Parent"));
            }
            if (setParent.contains(true) && setParent.contains(false)) {
                if (parent.length > 0) {
                    parent[0].checked = false;
                    parent[0].className = "EmptyClass";
                }
                var ancestor = document.getElementsByName((parent[0].name.split("$$")[0].replace(/\d+/g, "") + "$$" + parent[0].name.split("$$")[1]).replace("Parent", "Ancestor"));
                if (ancestor.length > 0) {
                    ancestor[0].checked = false;
                    ancestor[0].className = "EmptyClass";
                }
            }
            else if (setParent.contains(true) && !setParent.contains(false)) {
                if (parent.length > 0) {
                    var setAncestor = new Array();
                    parent[0].checked = true;
                    parent[0].className = "WhiteCheckbox";
                    for (var i = 0; i < 10; i++) {
                        var siblingParentName = parent[0].name.split("$$")[0].replace(/\d+/g, "") + i + "$$" + parent[0].name.split("$$")[1];
                        var parentSiblings = document.getElementsByName(siblingParentName);
                        if (parentSiblings.length > 0)
                            setAncestor.push(parentSiblings[0].checked);
                    }
                    if (setAncestor.contains(true) && setAncestor.contains(false)) {
                        var ancestor = document.getElementsByName(parent[0].name.replace("Parent", "Ancestor"));
                        if (ancestor.length > 0) {
                            ancestor[0].checked = false;
                            ancestor[0].className = "EmptyClass";
                        }
                    }
                    if (setAncestor.contains(true) && !setAncestor.contains(false)) {
                        var ancestor = document.getElementsByName(parent[0].name.replace("Parent", "Ancestor"));
                        if (ancestor.length > 0) {
                            ancestor[0].checked = true;
                            ancestor[0].className = "WhiteCheckbox";
                        }
                    }
                }
            }
            else if (!setParent.contains(true) && setParent.contains(false)) {
                if (parent.length > 0) {
                    parent[0].checked = false;
                    parent[0].className = "WhiteCheckbox";
                }
            }
        }
    }
}
function FindAllCheckboxState(clickedCheckbox, siblingCount) {
    var ansSet = false;
    if (clickedCheckbox.name.indexOf("##") > -1 && clickedCheckbox.name.indexOf("Ancestor") > -1) {
        siblingCount = parseInt(clickedCheckbox.name.split("##")[1]);
        for (var i = 1; i <= siblingCount; i++) {
            var parentName = clickedCheckbox.name.split("Ancestor")[0] + "Ancestor" + i + clickedCheckbox.name.split("Ancestor")[1];
            var childElements = document.getElementsByName(parentName.replace("Ancestor", "Parent"));
            var childDiv = document.getElementById(parentName.replace("Ancestor", "ChildDiv"));
            childDiv.style.display = "block";
            for (var j = 0; j < childElements.length; j++) {
                childElements[j].checked = clickedCheckbox.checked;
                clickedCheckbox.className = "WhiteCheckbox";
            }
            var parentElements = document.getElementsByName(parentName.replace("Ancestor", "Child"));
            if (parentElements != null) {
                for (var j = 0; j < parentElements.length; j++) {
                    parentElements[j].checked = clickedCheckbox.checked;
                    parentElements[j].className = "WhiteCheckbox";
                    clickedCheckbox.className = "WhiteCheckbox";
                }
            }
        }
        var divElement = document.getElementById(clickedCheckbox.name.replace("Ancestor", "AncestorChildDiv"));
        if (divElement != null && clickedCheckbox.checked) {
            if (divElement.style.display == "none")
                divElement.style.display = "block";
            else
                divElement.style.display = "none";
            var divId = document.getElementById(clickedCheckbox.name);
            if (divId != null) {
                if (divElement.style.display == "none")
                    divId.outerHTML = divId.outerHTML.replace('Collapse', 'Expand');
            }

        }
    }
    else { // Clicked on  Parent Checkbox
        checkboxesStateChanged.push(clickedCheckbox);
        if (clickedCheckbox.name.indexOf("Parent") > -1) {
            var childElements = document.getElementsByName(clickedCheckbox.name.replace("Parent", "Child"));
            for (var i = 0; i < childElements.length; i++) {
                childElements[i].checked = clickedCheckbox.checked;
                clickedCheckbox.className = "WhiteCheckbox";
            }
            var setAncestor = new Array();
            var classNameArray = new Array();
            var siblings = document.getElementsByName(clickedCheckbox.name);
            parentSiblingLength = (clickedCheckbox.name.indexOf("##") == -1) ? siblings.length : parseInt(clickedCheckbox.name.split("##")[1]);
            for (var j = 1; j <= parentSiblingLength; j++) {
                var xName = clickedCheckbox.name.split("$$")[0].replace(/\d+/g, "") + j + "$$" + clickedCheckbox.name.split("$$")[1];
                var parentSib = document.getElementsByName(xName.replace("Child", "Parent"));
                if (parentSib.length > 0) {
                    setAncestor.push(parentSib[0].checked);
                    classNameArray.push(parentSib[0].className);
                }
            }
            if (setAncestor.contains(true) && setAncestor.contains(false)) {
                var ansName = clickedCheckbox.name.split("$$")[0].replace(/\d+/g, "") + "$$" + clickedCheckbox.name.split("$$")[1];
                var ansElement = document.getElementsByName(ansName.replace("Parent", "Ancestor"));
                if (ansElement.length > 0) {
                    ansElement[0].checked = false;
                    ansElement[0].className = "EmptyClass";
                }
            }
            else if (setAncestor.contains(true) && !setAncestor.contains(false)) {
                var ansName = clickedCheckbox.name.split("$$")[0].replace(/\d+/g, "") + "$$" + clickedCheckbox.name.split("$$")[1];
                var ansElement = document.getElementsByName(ansName.replace("Parent", "Ancestor"));
                if (ansElement.length > 0) {
                    ansElement[0].checked = true;
                    ansElement[0].className = "WhiteCheckbox";
                }
            }
            else if (!setAncestor.contains(true) && setAncestor.contains(false)) {
                var ansName = clickedCheckbox.name.split("$$")[0].replace(/\d+/g, "") + "$$" + clickedCheckbox.name.split("$$")[1];
                var ansElement = document.getElementsByName(ansName.replace("Parent", "Ancestor"));
                if (ansElement.length > 0) {
                    ansElement[0].checked = false;
                    if (classNameArray.contains("WhiteCheckbox") && !classNameArray.contains("EmptyClass"))
                        ansElement[0].className = "WhiteCheckbox";
                    else
                        ansElement[0].className = "EmptyClass";
                }
            }
            var divElement = document.getElementById(clickedCheckbox.name.replace("Parent", "ChildDiv"));
            if (divElement != null && clickedCheckbox.checked) {
                if (divElement.style.display == "none")
                    divElement.style.display = "block";

                var divId = document.getElementById(clickedCheckbox.name);
                if (divId != null) {
                    if (divElement.style.display == "none")
                        divId.outerHTML = divId.outerHTML.replace('Collapse', 'Expand');

                }

            }
        }
        else {
            var check = /\d+/;
            var numberPresent = false;
            if (check.test(clickedCheckbox.name))
                numberPresent = true;
            var siblings = document.getElementsByName(clickedCheckbox.name);
            var parent = document.getElementsByName(clickedCheckbox.name.replace("Child", "Parent"));
            var allchecked = true;
            var allunchecked = true;
            var count = 0;
            var parentSiblingLength = (clickedCheckbox.name.indexOf("##") == -1) ? siblings.length : parseInt(clickedCheckbox.name.split("##")[1]);
            for (var i = 0; i < siblings.length; i++) {
                if (!siblings[i].checked && siblings[i].type != undefined) {
                    allchecked = false;
                    count++;
                }
            }
            if (!allchecked) {
                if (parent.length > 0) {
                    parent[0].checked = false;
                    parent[0].className = "EmptyClass";
                    if (numberPresent) {
                        var ancestor = document.getElementsByName(clickedCheckbox.name.replace("Child", "Parent").replace(/\d+/g, ""));
                        if (ancestor.length > 0) {
                            ancestor[0].checked = false;
                            ancestor[0].className = "EmptyClass";
                        }
                    }
                }
                var ansName = clickedCheckbox.name.split("$$")[0].replace(/\d+/g, "") + "$$" + clickedCheckbox.name.split("$$")[1];
                var ansElement = document.getElementsByName(ansName.replace("Child", "Ancestor"));
                if (ansElement.length > 0) {
                    ansElement[0].checked = false;
                    ansElement[0].className = "EmptyClass";
                    ansSet = true;
                }
            }
            else {
                if (parent.length > 0) {
                    var setAncestor = true;
                    parent[0].checked = true;
                    parent[0].className = "WhiteCheckbox";
                    for (var j = 1; j <= parentSiblingLength; j++) {
                        var xName = clickedCheckbox.name.split("$$")[0].replace(/\d+/g, "") + j + "$$" + clickedCheckbox.name.split("$$")[1];
                        var parentSib = document.getElementsByName(xName.replace("Child", "Parent"));
                        if (parentSib.length > 0) {
                            if (!parentSib[0].checked) {
                                // Don't do ancestor Checked
                                setAncestor = false;
                            }
                        }
                    }
                    if (setAncestor) {
                        var ansName = clickedCheckbox.name.split("$$")[0].replace(/\d+/g, "") + "$$" + clickedCheckbox.name.split("$$")[1];
                        var ansElement = document.getElementsByName(ansName.replace("Child", "Ancestor"));
                        if (ansElement.length > 0) {
                            ansElement[0].checked = true;
                            ansElement[0].className = "WhiteCheckbox";
                        }
                    }
                }
            }
            for (var i = 0; i < siblings.length; i++) {
                if (siblings[i].checked && siblings[i].type != undefined) {
                    allunchecked = false;
                    count++;
                }
            }
            var changeAncestor = true;
            if (allunchecked) {
                if (parent.length > 0) {
                    parent[0].checked = false;
                    parent[0].className = "WhiteCheckbox";
                    for (var j = 1; j <= parentSiblingLength; j++) {
                        var xName = clickedCheckbox.name.split("$$")[0].replace(/\d+/g, "") + j + "$$" + clickedCheckbox.name.split("$$")[1];
                        var parentSib = document.getElementsByName(xName.replace("Child", "Parent"));
                        if (parentSib.length > 0) {
                            if (parentSib[0].className == "EmptyClass") {
                                // Don't do ancestor white
                                changeAncestor = false;
                            }
                        }
                    }
                }
                if (changeAncestor) {
                    var ansName = clickedCheckbox.name.split("$$")[0].replace(/\d+/g, "") + "$$" + clickedCheckbox.name.split("$$")[1];
                    var ansElement = document.getElementsByName(ansName.replace("Child", "Ancestor"));
                    if (ansElement.length > 0) {
                        ansElement[0].checked = false;
                        ansElement[0].className = "WhiteCheckbox";
                    }
                }
            }
        }
    }
}
function SearchforResults(widgetid, userid, pageid, language, listItemId) {
    var showSearchingDIv = document.getElementById("ListAutoTableDetail" + widgetid);
    if (showSearchingDIv != null) {
        showSearchingDIv.innerHTML = "<div style='z-index=1;font-size:12px;color:Gray;align=center;'>Chargement....<MARQUEE style='WIDTH: 20px; HEIGHT: 12px' scrollDelay=200 width=20 direction=down>&dagger;<br>&dagger;</MARQUEE></div>";
    }
    var filterValueArray = new Array();
    //Set the delta for the widget //
    var checkedBoxesArray = new Array();
    var checkboxes = document.getElementsByTagName('input');
    for (var i = 0; i < checkboxes.length; i++) {
        if (checkboxes[i].type == "checkbox" && checkboxes[i].checked && (checkboxes[i].name.indexOf("Parent") == -1 && checkboxes[i].name.indexOf("Ancestor") == -1)) {
            checkedBoxesArray.push(checkboxes[i]);
        }
    }
    var filDiv = document.getElementById("filter" + widgetid);
    if (filDiv != null) {
        var filArr = filDiv.innerHTML.split("#splitString");
    }
    for (var i = 0; i < globalFilterRowCount; i++) {
        var filtertextBox = document.getElementById('valueFields' + widgetid + '_' + i);
        var selectBox = document.getElementById('selectOperators' + widgetid + '_' + i);
        var selectedName = "";
        if (filtertextBox != null && filtertextBox.value != "" && filtertextBox.value != "undefined" && filtertextBox.value != "NULL") {
            selectedName = selectBox.options[selectBox.selectedIndex].value;
            filterValueArray.push(filArr[i].split(',')[0].replace(/&&&/g, " ") + "@#@" + filArr[i].split(',')[1].replace(/&amp;&amp;&amp;/g, " ") + "@#@" + filArr[i].split(',')[2] + "@#@" + selectedName + "@#@" + filtertextBox.value);
        }
    }
    var arr = new Array();
    GetallcheckboxState(widgetid, arr, false);
    var checkboxPropertiesArray = new Array();
    var checkboxCountArray = new Array();
    var tempDivEle = document.getElementById("ChkState" + widgetid);
    if (tempDivEle != null) {
        var tempDivStringElements = tempDivEle.innerHTML.split("#INDSEP#");
        for (var i = 0; i < tempDivStringElements.length; i++) {
            if (arr[i] != null || arr[i] != undefined) {
                if ((arr[i].split("@#@")[2] != tempDivStringElements[i].split("@#@")[2]))
                    checkboxCountArray.push(checkboxObjects[i]);
            }
        }
    }
    for (var i = 0; i < checkboxCountArray.length; i++) {
        if (checkboxCountArray[i].name.indexOf("Parent") == -1 && checkboxCountArray[i].name.indexOf("Ancestor") == -1)
            checkboxPropertiesArray.push(checkboxCountArray[i].name + "#%#" + checkboxCountArray[i].value + '#%#' + checkboxCountArray[i].checked + '#%#' + checkboxCountArray[i].id);
    }
    if (arr != null || arr != undefined && (tempDivEle != null)) {
        tempDivEle.innerHTML = "";
        for (var i = 0; i < arr.length; i++) {
            tempDivEle.innerHTML += arr[i] + "#INDSEP#";
        }
        checkboxElements = arr;
    }
    listTrombiSearchCallback = widgetid;
    var varData = { listItemContainerId: listItemId.replace(/^^/g, " ").replace(/&&&/g, "\"").replace(/%%%/g, ":"), checkboxStateArray: checkboxPropertiesArray, widgetId: widgetid, pageId: pageid, userName: userid, language: language, filterArray: filterValueArray };
    CallService("GET", "FindMultiCriteriaTrombiResults", varData, successListTrombiSearch, failListTrombiSearch);
    // AjaxService.AjaxService.FindMultiCriteriaTrombiResults(listItemId.replace(/^^/g, " ").replace(/&&&/g, "\"").replace(/%%%/g, ":"), checkboxPropertiesArray, widgetid, pageid, userid, language, filterValueArray, successListTrombiSearch, failListTrombiSearch, widgetid);
}
    var listTrombiSearchCallback;
    function successListTrombiSearch(data, textStatus, jqXHR) {
    if (document.getElementById('ListAutoTableDetail' + listTrombiSearchCallback) != null) {
        document.getElementById('ListAutoTableDetail' + listTrombiSearchCallback).innerHTML = data;
    }
}
function failListTrombiSearch(result, widgetid) {
    var showSearchingDIv = document.getElementById("ListAutoTableDetail" + widgetid);
    if (showSearchingDIv != null) {
        showSearchingDIv.innerHTML = "";
    }
}
function ExpandToggle(divId, siblingCount) {
    divId = divId.id;
    if (divId.indexOf("##") == -1 || divId.indexOf("Ancestor") == -1) {
        var currentDiv = document.getElementById(divId.replace("Parent", "Child"));
        if (currentDiv != null && currentDiv.nodeName == "DIV") {
            if (currentDiv.style.display == "none")
                currentDiv.style.display = "block";
            else
                currentDiv.style.display = "none";
            if (currentDiv.style.display == "none")
                document.getElementById(divId).outerHTML = document.getElementById(divId).outerHTML.replace('Collapse', 'Expand');
        }
    }
    else {
        var siblingCount = divId.split("##")[1];
        var currentDiv = document.getElementById(divId.replace("Ancestor", "AncestorChild"));
        if (currentDiv != null && currentDiv.nodeName == "DIV") {
            if (currentDiv.style.display == "none")
                currentDiv.style.display = "block";
            else
                currentDiv.style.display = "none";
            if (currentDiv.style.display == "none")
                document.getElementById(divId).outerHTML = document.getElementById(divId).outerHTML.replace('Collapse', 'Expand');
            for (var k = 1; k <= siblingCount; k++) {
                var nm = divId.replace("Ancestor", "Child").split("$$")[0];
                var remName = divId.replace("Ancestor", "Child").split("$$")[1];
                var childDiv = document.getElementById(nm + k + "$$" + remName);
                if (childDiv != null && currentDiv.nodeName == "DIV") {
                    if (childDiv.style.display == "none")
                        childDiv.style.display = "block";
                    else
                        childDiv.style.display = "none";
                }
            }
        }

    }
}
/**************LIST TROMBI METHODS END**************/
function FindPeopleList(search, Widgetid, userid, pageid, lang, listItemContainerId, columnName) {
    var showSearchingDIv = document.getElementById("AutoTable" + Widgetid);
    if (showSearchingDIv != null) {
        showSearchingDIv.innerHTML = "<div style='z-index=1;font-size:12px;color:Gray;align=center;'>Chargement....<MARQUEE style='WIDTH: 20px; HEIGHT: 12px' scrollDelay=200 width=20 direction=down>&dagger;<br>&dagger;</MARQUEE></div>";
    }
    search = search.replace(/##/g, " ");
    search = search.replace("^^", "'");
    findPeopleCallback = Widgetid + '@' + pageid + '@' + userid;
    var varData = { param: search, language: lang, listItemContainerId: listItemContainerId, widgetId: Widgetid, userName: userid, pageId: pageid, searchedColumnName: columnName };
    CallService("GET", "GetResultsofTrombiQuickLink", varData, successFindPeople, failFindPeople);
    //AjaxService.AjaxService.GetResultsofTrombiQuickLink(search, lang, listItemContainerId, Widgetid, userid, pageid, columnName, successFindPeople, failFindPeople, Widgetid + '@' + pageid + '@' + userid);
}
var findPeopleCallback;
function failFindPeople(result, fail1) {
    var id = fail1.split('@')[0];
    var showSearchingDIv = document.getElementById("AutoTable" + id);
    if (showSearchingDIv != null) {showSearchingDIv.innerHTML = "";}
}
function successFindPeople(data, textStatus, jqXHR) {
    var id = findPeopleCallback;
    var result = data;
    id = id.replace(/ /g, "");
    var pageID = id.split('@')[1];
    var userid = id.split('@')[2];
    id = id.split('@')[0];
    var testPage = /!@#$%^&/;
    var derivedPage;
    if (testPage.test(result)) {
        derivedPage = result.split("!@#$%^&*")[1];
        window.location.href = derivedPage.replace('#', '');
    }
    //For Result Persistance //
    var ff = document.getElementById('AutoTable' + id);
    if (ff != null) {
        ff.style.display = "block";
        var check1 = /Nombre de résultats/;
        var check2 = /Number of Results/;
        if (check1.test(result)) {
            var addReset = result.split('Nombre de résultats')[1].replace("</td>", "</td><td align='right'><span align='right' style='color:#cccccc;height:21px;cursor:Pointer' onclick=ResettoParent('" + id + "','" + userid + "','" + pageID + "')></span>");
            ff.innerHTML = result.split('Nombre de résultats')[0] + "Nombre de résultats" + addReset;
        }
        else if (check2.test(result)) {
            var addReset = result.split('Number of Results')[1].replace("</td>", "</td><td align='right'><span align='right' style='color:#cccccc;height:21px;cursor:Pointer' onclick=ResettoParent('" + id + "','" + userid + "','" + pageID + "')></span>");
            ff.innerHTML = result.split('Number of Results')[0] + "Number of Results" + addReset;
        }
        else
            ff.innerHTML = result;
    }

    var resultHolder = document.getElementById('ResultTableHolder' + id);
    if (resultHolder != null) {
        document.getElementById('TrombiQuick').style.width = "100%";
        resultHolder.style.display = "block";
    }
}
function successMulticriteria(result, id) {
    var derivedPage;
    var language = "";
    if (result.replace(/\d+/g, "") == "") {
        derivedPage = window.location.href.replace('#', '');
        var languageArray = window.location.href.split('&');
        if (languageArray != undefined) {
            for (var i = 0; i < languageArray.length; i++) {
                if (languageArray[i].indexOf("Language") != -1) {
                    language = languageArray[i];
                }
            }
        }
        derivedPage = derivedPage.split('?')[0];
        var redirectPage = derivedPage + "?PageID=" + result + "&personalize=true&xfolderurl=true";
        if (language != "")
            redirectPage = redirectPage + "&" + language;
        window.location.href = redirectPage;
    }
    var resultHolder = document.getElementById('AutoTableHolder' + TrombiWidgetID);
    if (resultHolder != null) {
        document.getElementById('Trombi').style.width = "100%";
        resultHolder.style.display = "block";
    }
    var ospanID = document.getElementById('AutoTableDetail' + TrombiWidgetID);
    if (ospanID != null)
        ospanID.innerHTML = "";
    id = id.replace(/ /g, "");
    var ff = document.getElementById('AutoTableDetail' + id);
    ff.style.display = "block";
    ff.innerHTML = result;
}
function fail(result) {
    alert(result._message);
    var ospanID = document.getElementById('AutoTable' + TrombiWidgetID);
    if (ospanID != null)
        ospanID.innerHTML = "";
    var showSearchingDIv = document.getElementById("ListAutoTableDetail" + TrombiWidgetID);
    if (showSearchingDIv != null) {
        showSearchingDIv.innerHTML = "";
    }
}
function RedirectDetailPage(Initials, Language) {
    Initials = Initials.replace(/##/g, " ").replace(/--/g, "'");
    var baseUrl = window.location.href.replace('#', '');
    baseUrl = baseUrl.split('?')[0];
    window.open(baseUrl = "?" + "PageLabel=Detailed_CV&name=" + Initials + "&Language=" + Language);
}
function RedirectRegimbeauCVPage(Initials, Language) {
    Initials = Initials.replace(/##/g, " ").replace(/--/g, "'");
    var baseUrl = window.location.href.replace('#', '');
    baseUrl = baseUrl.split('?')[0];
    window.open(baseUrl+ "pagelabel=Detailed_CV&name=" + Initials + "&Language=" + Language);
}
function SetFocus(id) {
    if (document.getElementById(id) != null || document.getElementById(undefined))
        document.getElementById(id).focus();
}
function ShowFilterBlock(image, div2Show,widgetId,listId) {
    var isExpanded = false;
    if (document.getElementById(div2Show) != null) {
        if (document.getElementById(div2Show).style.display == "none") {
            document.getElementById(div2Show).style.display = "inline";
            isExpanded = true;
            image.innerHTML = "Filtrer";
            image.detachEvent("onmouseout");
            divPermanent.push(widgetId);
            var filterLinkBlock=document.getElementById("FilterLinkBlock" + widgetId);
            if (filterLinkBlock != null) {
                if (filterLinkBlock.style.display == "none") {
                    filterLinkBlock.style.display = "inline";
                }
            }
        }
        else {
            document.getElementById(div2Show).style.display = "none";
            image.outerHTML = image.outerHTML.replace('Collapse', 'Expand');
            image.innerHTML = "&nbsp;&nbsp;&nbsp;"
            divPermanent.pop(widgetId);
            image.attachEvent("onmouseout", function () { HideOverlayFilterBlock(image) });
            var filterLinkBlock = document.getElementById("FilterLinkBlock" + widgetId);
            if (filterLinkBlock != null) {
                filterLinkBlock.style.display = "none";
            }
        }
        var searchForFilterRows = false;
        if (!filterArray.contains(widgetId)) {
            filterArray.push(widgetId);
            searchForFilterRows = true;
        }
        AjaxService.AjaxService.SetIsExpandedAttribute(widgetId, isExpanded, searchForFilterRows, globalLanguage, isExpandedSuccess, failSetExpanded, widgetId + "#&#" + "false" + "#&#" + listId + "#&#" + true + "#&#" + true);
    }
   
}
function isExpandedSuccess(result,details) {
    if (result != null) {
        successGetFilter(result, details);            
    }
}
function failSetExpanded() {alert("Filter Expand state failed");}
function ShowOverlayFilterBlock(div2Show) {div2Show.innerHTML = "Filtrer";}
function HideOverlayFilterBlock(div2Show) {
    var widgetId = div2Show.id.replace("FilterButtonBlockParent", "");
    var found=false;
    for (var i = 0; i < divPermanent.length; i++) {
        if (divPermanent[i] == widgetId)
            found = true;
    }
    if (!found)
        div2Show.innerHTML = "&nbsp;&nbsp;&nbsp;";
}
function MakeBold(divID, text) {
    if (divID.onmouseout != null && divID.innerHTML != text) {
        var str = text + "<br>" + divID.innerHTML;
        divID.innerHTML = str;
    }
}
function FadeOut(divId) {
    var str = divId.innerHTML.split('<BR>')[1];
    if (str != undefined)
        divId.innerHTML = str;
    else {
        str = divId.innerHTML.split('<br>')[1];
        if (str != undefined)
            divId.innerHTML = str;
    }
}
function StayBold(obj, text, colName) {
    var str = "<div style='color:gray;font-size:9px;'>" + text + "</div>" + "<br>" + "<div style='color:black;font-size:11px;'>" + colName + "</div>";
    if (obj.onmouseout != null) {
        obj.onmouseout = null;
        obj.innerHTML = str;
    }
    else {
        obj.attachEvent("onmouseout", function() { FadeOut(obj) });
        str = "<div style='color:black;font-size:12px;'>" + colName + "</div>";
        obj.innerHTML = str;
    }
}
function ShowClose(divID) {
    var imgObj = document.getElementById(divID);
    imgObj.style.display = "inline";
}
function HideClose(divID) {
    var imgObj = document.getElementById(divID);
    imgObj.style.display = "none";
}
function ShowBlockName(divObj, text) {
    divObj.innerHTML = text;
}
function HideBlockName(divObj, text) {
    if (text != undefined)
        divObj.innerHTML = text;
    else
        divObj.innerHTML = "&nbsp;";
}
function MakeBold2(divID, text) {
    var divElement = document.getElementById(divID);
    if (divElement == null) {divID.style.display = "inline";}
    else
        divElement.style.display = "inline";

}
function FadeOut2(divId) {
    var divElement = document.getElementById(divId);
    var found = false;
    for (var i = 0; i < negFilterIDTable.length; i++) {
        if (negFilterIDTable[i] == divElement.id) {
            found = true;
            break;
        }
    }
    if (!found)
        divElement.style.display = "none";
}
function StayBold2(obj, text, colName, blockNumber) {
    if (obj.onmouseout != null) {
        obj.detachEvent("onmouseout");
        obj.style.display = "inline";
        obj.onmouseout = null;
        negFilterIDTable.push(obj.id);
    }
    else {
        obj.attachEvent("onmouseout", function() { FadeOut2(obj) });
        obj.onmouseout = "x";
        obj.style.display = "none";
        for (var i = 0; i < negFilterIDTable.length; i++) {
            if (negFilterIDTable[i] == obj.id) {
                negFilterIDTable.pop(negFilterIDTable[i]);
            }
        }
    }
    if (obj.style.display != "none") {
        if (resultArray[blockNumber] != null) {
            filterArray = new Array();
            for (var i = 0; i < resultArray.length; i++) {
                if (i != blockNumber) {
                    for (var j = 0; j < resultArray[i].length; j++) {
                        filterArray.push(resultArray[i][j]);
                    }
                }
                else {
                    for (var j = 0; j < resultArray[i].length; j++) {
                        resultArray[i][j] = resultArray[i][j].replace(/,/g, "#^#,");
                        filterArray.push(resultArray[i][j]);
                    }
                }
            }
        }
    }
    else {
        filterArray = new Array();
        for (var i = 0; i < resultArray.length; i++) {
            for (var j = 0; j < resultArray[i].length; j++) {
                filterArray.push(resultArray[i][j]);
            }
        }
    }
}

/***TrombiQuickMethods*/
function ShowNameList(partid, events, userid, pageid, language, listItemContainerId, widgetId) {
    Language = language;
    $find("MenuAddModal").hide();
    var eventNum;
    try {
        if (Sys.Browser.agent == Sys.Browser.InternetExplorer)
            eventNum = events.keyCode;
        else
            eventNum = (events.which == 0 ? events.keyCode : events.which);
        var partNumber = partid;
        partNumber = partNumber.replace(/AutoTextBox/g, "");
        partNumber = partNumber.replace(/ /g, "");
        var text = document.getElementById("AutoTextBox" + partNumber).value;
        var counters = 2;
        TrombiQuickPartID = partNumber;
        if (eventNum == 13 || eventNum == 38 || eventNum == 40) {
            eventraiser(events, partNumber, userid, pageid, language, listItemContainerId);
            if (eventNum == 13)
                valueSelected = false;
            return false;
        }
        if (text.length == 0)
            count = -1;
        if (text.length > 1) {
            AjaxService.AjaxService.GetTrombiQuickAutoComplete(text, counters, listItemContainerId.replace(/^^/g, " ").replace(/&&&/g, "\"").replace(/%%%/g, ":"), widgetId,globalLanguage, ShowDropDown, ShowDropDownFail, partid + "@" + eventNum + '@' + userid + '@' + pageid);
        }
        else {
            document.getElementById("AutoComplete" + partNumber).style.display = "none";
        }

    } catch (e) {
    }
}
function ShowDropDownFail(result) {}
//used for autocomplete
function ShowDropDown(result, id) {
    try {
        var events = id.split('@')[1];
        var userid = id.split('@')[2];
        var pageid = id.split('@')[3];
        id = id.split('@')[0];
        var partNumber = id.replace(/AutoTextBox/g, "");
        partNumber = partNumber.replace(/ /g, "");
        var auto = document.getElementById("AutoComplete" + partNumber);
        auto.innerHTML = "";
        auto.style.display = "block";
        var dd = document.getElementById(id);
        if (result.length >= 5)
            auto.style.height = result.length * 20 + "px";
        else
            auto.style.height = result.length * 25 + "px";
        auto.style.width = dd.clientWidth + "px";
        var comp = "";
        var rep = "'";
        var toolTip = "";
        var duplicate = "";
        if (dd.value != "") {
            if (result.length == 0) {
                auto.style.display = "none";
                auto.style.backgroundColor = "white";
            }
            numberOfElements = result.length;
            for (var x = 0; x < result.length; x++) {
                if (duplicate != result[x]) {
                    duplicate = result[x];
                    if (result[x].indexOf("$$NAME$$") > -1) {
                        //Generate ToolTip
                        toolTip = result[x].split("$$NAME$$")[1];
                        result[x] = result[x].split("$$NAME$$")[0];
                    }
                    result[x] = result[x].replace(/ /g, "--");
                    result[x] = result[x].replace(rep, "##");
                    var originalName = result[x].replace(/--/g, " ");
                    originalName = originalName.replace(/##/g, "'");
                    comp = "comp" + x;
                    var newchild = document.createElement('div');
                    newchild.id = comp;
                    newchild.style.width = dd.clientWidth + "px";
                    newchild.innerHTML = "<a style='cursor:hand;font-family:Arial;font-size:12px;font-weight:400;width:100%;' title='" + toolTip + "' onmouseover=highlight('" + auto.id + "',this.parentNode.id,'TrombiQuick') onmouseout=dehighlight('" + auto.id + "',this.parentNode.id) onclick=selectitems('" + result[x] + "','" + partNumber + "','" + userid + "','" + pageid + "','" + Language + "')>" + originalName + "</a>";
                    auto.appendChild(newchild);
                }
            }
        }
        else
            document.getElementById("AutoComplete" + partNumber).style.display = "none";
    } catch (e) {
    }
}
//for autocomplete
function selectitems(selected, id, userid, pageid, language) {
    selected = selected.replace(/--/g, " ");
    selected = selected.replace(/##/g, "'");
    document.getElementById("AutoTextBox" + id).value = selected;
    var auto = document.getElementById("AutoComplete" + id);
    document.getElementById("AutoTextBox" + id).innerText = selected;
    auto.style.display = "none";
    getname(TrombiQuickPartID, userid, "Manual", pageid, true, language);
}

function eventraiser(events, partNumber, userName, pageID, language, listItemContainerId) {
    var eventss;
    $find("MenuAddModal").hide();
    if (Sys.Browser.agent == Sys.Browser.InternetExplorer)
        eventss = events.keyCode;
    else
        eventss = (events.which == 0 ? events.keyCode : events.which);
    var selectedName = "";
    if (document.getElementById("AutoTextBox" + partNumber) != null) {
        selectedName = document.getElementById("AutoTextBox" + partNumber).value;
    }
    try {
        if (eventss == 40) {
            count == numberOfElements - 1 ? count = 0 : count++;
            if (count > 0)
                document.getElementById('comp' + (count - 1)).style.backgroundColor = "white";
            document.getElementById('comp' + (numberOfElements - 1)).style.backgroundColor = "white";
            downkey = true; upkey = false;
            var ee = document.getElementById('comp' + count);
            ee.style.backgroundColor = "gray";
            document.getElementById("AutoTextBox" + partNumber).innerText = ee.innerText;
            if (Sys.Browser.agent != Sys.Browser.InternetExplorer)
                document.getElementById("AutoTextBox" + partNumber).value = ee.innerText;
        }
        else if (eventss == 38) {
            count == 0 || count == -1 ? count = numberOfElements - 1 : count--;
            if (count != -1 && count != numberOfElements - 1)
                document.getElementById('comp' + (count + 1)).style.backgroundColor = "white";
            if (document.getElementById('comp' + (count)) != null || document.getElementById('comp' + (count)) != undefined)
                document.getElementById('comp' + (count - count)).style.backgroundColor = "white";
            upkey = true; downkey = false;
            var ee = document.getElementById('comp' + count);
            ee.style.backgroundColor = "gray";
            document.getElementById("AutoTextBox" + partNumber).innerText = ee.innerText;
            if (Sys.Browser.agent != Sys.Browser.InternetExplorer)
                document.getElementById("AutoTextBox" + partNumber).value = ee.innerText;
        }
        else if (eventss == 13) {
            if (document.getElementById('AutoComplete' + partNumber).style.display == "block" || document.getElementById('AutoComplete' + partNumber).style.display == "")
                document.getElementById('AutoComplete' + partNumber).style.display = "none";
            var rr = document.getElementById('AutoComplete' + partNumber).childNodes;
            if (rr != null) {
                for (var i = 0; i < rr.length; i++) {
                    if (rr[i].style.backgroundColor == "gray" || rr[i].style.backgroundColor.toLowerCase() == "gray") {
                        document.getElementById('AutoTextBox' + partNumber).value = rr[i].innerText;
                        document.getElementById('AutoComplete' + partNumber).style.display = "none";
                        valueSelected = true;
                        selectedName = rr[i].innerText;
                    }
                }
            }
            if (!valueSelected) {
                if (document.getElementById('AutoComplete' + partNumber).style.display != "none") {
                    if (document.getElementById('AutoComplete' + partNumber).childNodes[0] != null)
                        document.getElementById('AutoTextBox' + partNumber).value = document.getElementById('AutoComplete' + partNumber).childNodes[0].innerText;
                    selectedName = document.getElementById('AutoComplete' + partNumber).childNodes[0].innerText;
                    document.getElementById('AutoComplete' + partNumber).style.display = "none";
                }
            }
            count = -1;
            getname(TrombiQuickPartID, userName, "Manual", pageID, undefined, language);
        }
        else if (eventss == 8) {
            if (document.getElementById('AutoTextBox' + partNumber) != null) {
                if (document.getElementById('AutoTextBox' + partNumber).value.length == 0) {
                    document.getElementById("AutoComplete" + partNumber).style.display = "none";
                    count = -1;
                }
                else
                { ShowNameList('AutoTextBox' + partNumber, events, userName, pageID, language, listItemContainerId, partNumber); return; }
            }
        }
    }
    catch (e) {
        stop = true;
        if (upkey) {
            var ee = document.getElementById('comp' + (count + 1));
            if (ee != null)
                ee.style.backgroundColor = "gray";
        }
        if (downkey) {
            var ee = document.getElementById('comp' + (count - 1));
            if (ee != null)
                ee.style.backgroundColor = "gray";
        }
        if (downkey)
            count = (count - 1);
        if (upkey)
            count = (count + 1);
    }
}
function KeyUp(obj, event, userid, pageid, partid, language, listItemContainerId) {
    var eventCode = event.keyCode == undefined ? event.which : event.keyCode;
    if (eventCode == 13) {
        $find("MenuAddModal").hide();
        eventraiser(event, partid, userid, pageid, language, listItemContainerId);
    }
}
function highlight(highlightItem, checkThis, typeofPart) {
    var obj = document.getElementById(highlightItem);
    if (obj != null) {
        for (var i = 0; i < obj.childNodes.length; i++) {
            var child = obj.childNodes[i];
            child.style.backgroundColor = "white";
            if (child.id == checkThis) {
                if (typeofPart == "SearchTool")
                    countSearch = i;
                else
                    count = i;
            }
        }
        if (document.getElementById(checkThis) != null)
            document.getElementById(checkThis).style.backgroundColor = "gray";
    }
}
function dehighlight(highlightItem, checkThis) {
    if (document.getElementById(checkThis) != null)
        document.getElementById(checkThis).style.backgroundColor = "white";
}
function getname(Widgetid, userid, invokeMode, pageid, deleteCache, language) {
    var showSearchingDIv = document.getElementById("AutoTable" + Widgetid);
    if (showSearchingDIv != null) {
        showSearchingDIv.innerHTML = "<div style='z-index=1;font-size:12px;color:Gray;align=center;'>Chargement....<MARQUEE style='WIDTH: 20px; HEIGHT: 12px' scrollDelay=200 width=20 direction=down>&dagger;<br>&dagger;</MARQUEE></div>";
    }
    document.getElementById('AutoComplete' + Widgetid).style.display = "none";
    Language = language;
    TrombiQuickWidgetID = Widgetid;
    userLoggedIn = (userLoggedIn == undefined) ? "undefined" : userLoggedIn;
    var obj = document.getElementById('AutoTextBox' + Widgetid).value;
    if (obj == '') {
        showSearchingDIv.innerHTML = "";
        return;
    }
    deleteCache = (deleteCache == undefined ? "false" : deleteCache.toString());
    language = (language == undefined ? "French" : language);
    if (obj == "") {
        if (invokeMode == "Automatic")
            AjaxService.AjaxService.ShowBasicTrombiSearchResults(Widgetid.replace(/^^/g, " ").replace(/&&&/g, "\"").replace(/%%%/g, ":"), obj, userid, invokeMode, userLoggedIn, pageid, deleteCache, language, "false", success, failBasic, (Widgetid + '@' + userid + '@' + pageid));
    }
    else
    {
        AjaxService.AjaxService.ShowBasicTrombiSearchResults(Widgetid.replace(/^^/g, " ").replace(/&&&/g, "\"").replace(/%%%/g, ":"), obj, userid, invokeMode, userLoggedIn, pageid, deleteCache, language, "false", success, failBasic, (Widgetid + '@' + userid + '@' + pageid));
    }
}
function failBasic(result, fail1) {
    var id = fail1.split('@')[0];
    var showSearchingDIv = document.getElementById("AutoTable" + id);
    if (showSearchingDIv != null) {
        showSearchingDIv.innerHTML = "";
    }
}
function success(result, id) {
    var userid = id.split('@')[1];
    var pageID = id.split('@')[2];
    id = id.split('@')[0].replace(/ /g, "");
    var ff = document.getElementById('AutoTable' + id);
    ff.style.display = "block";
    var check1 = /Nombre de résultats/;
    var check2 = /Number of Results/;
    if (check1.test(result)) {
        var addReset = result.split('Nombre de résultats')[1].replace("</td></tr></table>", "</td><td align='right'><span align='right' style='color:#cccccc;height:21px;cursor:Pointer' onclick=ResettoParent('" + id + "','" + userid + "','" + pageID + "')></span></td></tr></table>");
        ff.innerHTML = result.split('Nombre de résultats')[0] + "Nombre de résultats" + addReset;
    }
    else if (check2.test(result)) {
        var addReset = result.split('Number of Results')[1].replace("</td>", "</td><td align='right'><span align='right' style='color:#cccccc;height:21px;cursor:Pointer' onclick=ResettoParent('" + id + "','" + userid + "','" + pageID + "')></span>");
        ff.innerHTML = result.split('Number of Results')[0] + "Number of Results" + addReset;
    }
    else
        ff.innerHTML = result;
    var resultHolder = document.getElementById('ResultTableHolder' + id);
    if (resultHolder != null && result != "") {
        resultHolder.style.display = "block";
    }
}

function ShowHiddenDiv(changeAltDiv, id) {
    if (changeAltDiv.outerHTML != undefined) {
        if (document.getElementById(id).style.display == "none")
            changeAltDiv.outerHTML = changeAltDiv.outerHTML.replace(/Expand/g, "Collapse");
        else if (document.getElementById(id).style.display == "block" || document.getElementById(id).style.display == "")
            changeAltDiv.outerHTML = changeAltDiv.outerHTML.replace(/Collapse/g, "Expand");
    }
    else {
        if (document.getElementById(id).style.display == "none")
            changeAltDiv.title = "Collapse";
        else if (document.getElementById(id).style.display == "block" || document.getElementById(id).style.display == "")
            changeAltDiv.title = "Expand";

    }
    var obj = document.getElementById(id);
    if (obj != null || obj != undefined) {
        if (obj.style.display != "none")
            obj.style.display = "none";
        else if (obj.style.display == "none")
            obj.style.display = "block";
    }
}
/***** Section for AND/OR Blocks UI of Multicriteria Widget ***/
function SelectInitialFilterValues(pageID, userName, widgetId, language, isOwner, isMultiCriteria, listId, showfilterButton,showButtonforVisitors) {
    if(userRoleForPage!=undefined)
        isOwner = isOwner.replace("xXxuserRole", userRoleForPage);
    isOwner = (isOwner.toString().toLowerCase() == "owner" || isOwner.toString().toLowerCase() == "true") ? "true" : "false";
    if (userRoleForPage != undefined && userRoleForPage.toString().toLowerCase() != "owner") {
        isOwner = false;
    }
    if (isMultiCriteria.toString().toLowerCase() == "true")
        showfilterButton = "false";
    userid = userName;
    pageid = pageID;
    globalLanguage = language;
    var doc = document.getElementById('FilterRows' + widgetId);
    var filtersExpanded = false;
    if (doc != null) {
        doc.style.display == "none" ? false : true;
    }
    var filterrDiv = document.getElementById('FilterButtonBlockParent' + widgetId);
    if (isOwner.toString().toLowerCase() == "false") {
//        if (filtersExpanded) {
//            if (filterrDiv != null) {
//                if (window.addEventListener) {
//                    filterrDiv.addEventListener("mouseover", function () { ShowOverlayFilterBlock(filterrDiv) }, false);
//                    filterrDiv.addEventListener("mouseout", function () { HideOverlayFilterBlock(filterrDiv) }, false);
//                }
//                else {
//                    filterrDiv.attachEvent("onmouseover", function () { ShowOverlayFilterBlock(filterrDiv) });
//                    filterrDiv.attachEvent("onmouseout", function () { HideOverlayFilterBlock(filterrDiv) });
//                }
//                filterrDiv.title = "Collapse";
//                filterrDiv.style.cursor = "hand";
//                filterrDiv.style.display = "";
//            }
//            var roleArray = new Array();
//            successGetFilter(roleArray, widgetId + "#&#" + isMultiCriteria + "#&#" + listId + "#&#" + showfilterButton + "#&#" + true);
//            if (document.getElementById('FilterButtonBlockParent' + widgetId) != null) {
//                if (document.getElementById('FilterButtonBlockParent' + widgetId).innerHTML.replace(" ", "") == "Filtrer")
//                    divPermanent.push(widgetId);
//            }
//        }
//        else {
//            filterrDiv.title = "";
//            filterrDiv.style.display = "none";
        //        }
        if (filterrDiv != null) {
            filterrDiv.title = "";
            filterrDiv.style.display = "none";
            document.getElementById('FilterRows' + widgetId).style.display = "none";
        }
        var headerArea = document.getElementById("HeaderArea" + widgetId);
        var headerAreaImage = document.getElementById("HeaderImageArea" + widgetId);
        if (headerAreaImage != null) {
            headerAreaImage.style.display = "none";
        }
        if (headerArea != null) {
            headerArea.detachEvent("onclick");
        }
    }
    else {
        // User is the owner of the Page, allow filter options.
        if (filtersExpanded) {
            if (filterrDiv != null) {
                filterrDiv.title = "Collapse";
                filterrDiv.style.cursor = "hand";
                filterrDiv.style.display = "";
            }
            var roleArray = new Array();
            if (document.getElementById('FilterButtonBlockParent' + widgetId) != null) {
                if (document.getElementById('FilterButtonBlockParent' + widgetId).innerHTML.replace(" ", "") == "Filtrer")
                    divPermanent.push(widgetId);
            }
        }
        else {
            if (filterrDiv != null) {
                if (window.addEventListener) {
                    filterrDiv.addEventListener("mouseover", function () { ShowOverlayFilterBlock(filterrDiv) }, false);
                    filterrDiv.addEventListener("mouseout", function () { HideOverlayFilterBlock(filterrDiv) }, false);
                }
                else {
                    filterrDiv.attachEvent("onmouseover", function () { ShowOverlayFilterBlock(filterrDiv) });
                    filterrDiv.attachEvent("onmouseout", function () { HideOverlayFilterBlock(filterrDiv) });
                }
                if (filterrDiv != null) {
                    filterrDiv.title = "Expand";
                    filterrDiv.style.cursor = "hand";
                    filterrDiv.style.display = "";
                }
            }
        }

//        if (window.addEventListener) {
//            var headerArea = document.getElementById("HeaderArea" + widgetId);
//            var headerAreaImage = document.getElementById("HeaderImageArea" + widgetId);
//            headerArea.addEventListener("onclick", function () { SelectWidgetRows(widgetId.replace(/,/g, "$$$"), listId.replace(/,/g, "$$$"), pageID.replace(/,/g, "$$$")) }, false);
//            headerAreaImage.addEventListener("onclick", function () { SelectWidgetRows(widgetId.replace(/,/g, "$$$"), listId.replace(/,/g, "$$$"), pageID.replace(/,/g, "$$$")) }, false);
//        }
//        else {
//            var headerArea = document.getElementById("HeaderArea" + widgetId);
//            var headerAreaImage = document.getElementById("HeaderImageArea" + widgetId);
//            headerArea.attachEvent("onclick", function () { SelectWidgetRows(widgetId, listId, pageID) });
//            headerAreaImage.attachEvent("onclick", function () { SelectWidgetRows(widgetId, listId, pageID) });
//        }
    }
}

function CheckforZeroFilterRows(result, widgetId) {
    if (result == null || result == undefined) {
        if (result.length > 0) {
            var filterrDiv = document.getElementById('FilterDiv' + widgetId);
            if (filterrDiv != null) {
                filterrDiv.style.display = "";
            }
        }
    }
        var hasCheckbox = false;
        if (result.length > 0) {
            if (result.length == 1) {
                if (result[0] == "#Checkbox#") {
                    hasCheckbox = true;
                    result.length = 1;
                }
            }
            else {
                if (result[1] == "#Checkbox#") {
                    hasCheckbox = true;
                    result.length = 1;
                }
            }
        }

        if (hasCheckbox) {
            var filterrDiv = document.getElementById('FilterDiv' + widgetId);
            if (filterrDiv != null) {
                filterrDiv.style.display = "";
            }
        }   
}
function Filterfail(result,details) {
    var widgetId = details.split("#&#")[0];
    if (document.getElementById('FilterDiv' + widgetId) != null)
        document.getElementById('FilterDiv' + widgetId).innerHTML = "Could not Find Filters due to an error";
}
// This method creates the filter rows on the end user page after some new row is added or removed. its functionality is same as the Widget methods Create Filter Html
function successGetFilter(result, widgetid) {
    if ($find("LoadingAniModal") != null) {
        $find("LoadingAniModal").hide();
    }
    if (document.getElementById('FilterDiv' + widgetid.split("#&#")[0]) != null) {
        document.getElementById('FilterDiv' + widgetid.split("#&#")[0]).innerHTML = "";
    }
    if (result == null||result==undefined)
        return;
    var hasCheckbox = false;
    if(result.length>0) {
        if (result.length == 1) {
            if (result[0] == "#Checkbox#") {
                hasCheckbox = true;
                result.length = 1;
            }
        }
        else {
            if (result[1] == "#Checkbox#") {
                hasCheckbox = true;
                result.length = 1;
            }
        }
    }
    var userRoleForPage="nonowner";
    var filterRowsLength = result.length;
    if (filterRowsLength > 0 && result[filterRowsLength - 1] == "###Owner###") {
        userRoleForPage = "owner";
        result.pop(filterRowsLength - 1);
    }
        groupedArray = new Array();
        var resultArr = widgetid.split('#&#');
        widgetid = resultArr[0];
        var isMultiCriteria = resultArr[1];
        var ListId = resultArr[2];
        var filterPanel = document.getElementById('FilterDiv' + widgetid);
        var filterRowsPanel = document.getElementById('FilterRows' + widgetid);
        if (filterRowsPanel != null) {
            filterRowsPanel.style.display = "";
            filterPanel.style.display = "";
        }
        var tempArray = new Array();
        var showFilterButton = resultArr.length>3?resultArr[3]:"false";
        
            var filterrRows = GroupSimilarRows(result);
            if (document.getElementById("filter" + widgetid) == null) {
                var dynamicFilterDiv = document.createElement('DIV');
                dynamicFilterDiv.id = "filter" + widgetid;
                dynamicFilterDiv.innerHTML = "";
                dynamicFilterDiv.style.display = "none";
                document.body.appendChild(dynamicFilterDiv);
            }
            else {
                document.getElementById("filter" + widgetid).innerHTML = "";
            }
            var DYNAMIC = document.getElementById("filter" + widgetid);
            resultArray = new Array();
            var firstResult = "";
            if (filterrRows.length > 0) {
                firstResult = filterrRows[0].split(',')[0] + filterrRows[0].split(',')[1];
            }
            for (var i = 0; i < filterrRows.length; i++) {
                if (filterrRows[i].split(',')[0] + filterrRows[i].split(',')[1] == firstResult) {
                    firstResult = filterrRows[i].split(',')[0] + filterrRows[i].split(',')[1];
                    tempArray.push(filterrRows[i]);
                    FilterValuesArray.push(filterrRows[i].split(',')[0]);
                    if (i == (filterrRows.length - 1))
                        resultArray.push(tempArray);
                }
                else {
                    resultArray.push(tempArray);
                    tempArray = new Array();
                    firstResult = filterrRows[i].split(',')[0] + filterrRows[i].split(',')[1];
                    FilterValuesArray.push(filterrRows[i].split(',')[0]);
                    i--;
                }
            }
            var singleColName = "";
            var blockDetails = "";
            var indexer = 0;
            var str = "<table border=\"0px\" width=\"100%\"  id='AndRowTable" + widgetid + "'>";
            for (var i = 0; i < resultArray.length; i++) {
                var negfilter = false;
                str += "<tr><td valign=\"top\" width=\"20%\" >";
                if (resultArray[i].length > 0) {
                    if (resultArray[i][0].split(",")[2].toLowerCase() == "negetivefilter") {
                        str += "<div id='Not" + widgetid + "_" + i + "' style='font-family:Trebuchet MS;font-size:9px;color:gray;float:top;cursor:hand;' onmouseover=MakeBold2(Not" + widgetid + "_" + i + ",'NOT') onclick=StayBold2(this,'NOT','xXxColNameSP','" + i + "')>NOT</div>";
                        negfilter = true;
                        negFilterIDTable.push('Not' + widgetid + "_" + i);
                    }
                    else
                        str += "<div id='Not" + widgetid + "_" + i + "' style='font-family:Trebuchet MS;display:none;font-size:9px;color:gray;float:top;cursor:hand;' onmouseover=MakeBold2('Not" + widgetid + "_" + i + "','NOT') onmouseout=FadeOut2('Not" + widgetid + "_" + i + "') onclick=StayBold2(this,'NOT','xXxColNameSP','" + i + "')>NOT</div>";
                }
                str += "<div id='BlockName" + widgetid + "_" + i + "' style='font-family:Trebuchet MS;font-size:11px;color:Black;float:top;cursor:hand;' onmouseover=MakeBold2('Not" + widgetid + "_" + i + "','NOT') onmouseout=FadeOut2('Not" + widgetid + "_" + i + "') >xXxColName</div>";
                str += "</td>";
                str += "<td width=\"100%\"><table width=\"100%\" align=\"left\" id='OrRowBlock" + widgetid + i + "'>";
                var rowPosition = "";
                for (var j = 0; j < resultArray[i].length; j++) {
                    resultArray[i][j] = resultArray[i][j].replace(/#@#/g, ",").replace(/#%#/g, ",").replace(/ /g, "&&&");
                    var textValue = ((resultArray[i][j].split(',')[4] == undefined || resultArray[i][j].split(',')[4] == "NULL" || resultArray[i][j].split(',')[4] == "") ? "" : resultArray[i][j].split(',')[4]);
                    rowPosition = j;
                    var colName = resultArray[i][j].split(',')[0];
                    var block = resultArray[i][j].split(',')[1];
                    var filterType = resultArray[i][j].split(',')[2];
                    var thisColName = resultArray[i][j].split(",")[0];
                    var operatorType = resultArray[i][j].split(",")[3];
                    var columnType = resultArray[i][j].split("#colNameSplit#")[1];
                    var width = operatorType.toLowerCase() == "between" ? "30%" : "45%";
                    str += "<tr><td valign=\"top\">";
                    var operatorString = CreateFilterOperatorDropDown(columnType, widgetid, indexer, resultArray[i][j].split(",")[0]);
                    var tempValue = "";
                    var dictIndex = dictionary.ContainsKey("selectOperators" + widgetid + "_" + indexer + thisColName.replace(/&&&/g, " "));
                    if (dictIndex > -1) {
                        tempValue = dictionary[dictIndex].value;
                        if (tempValue != operatorType) {
                            operatorType = tempValue;
                        }
                    }

                    if (operatorType != '')
                        operatorString = AdjustSelectedDropDownItem(operatorString, operatorType);
                    str += "<table width=\"100%\" border='0px' id='FilterRow_" + j + "_" + i + "'><tr><td width=" + width + " valign=\"top\">" + operatorString + "</td>";

                    if (textValue == "") {
                        var dictIndex = dictionary.ContainsKey("valueFields" + widgetid + "_" + indexer + thisColName.replace(/&&&/g, " "));
                        if (dictIndex > -1) {
                            textValue = dictionary[dictIndex].value;
                        }
                    }
                    if (operatorType.toLowerCase() == "between" && columnType.toLowerCase() != "enumerated") {
                        var value2 = resultArray[i][j].split(',')[7].split("#colNameSplit#")[0].replace("&&&", " ");
                        str += "<td width=\"60%\" valign=\"top\" id='TData" + widgetid + "_" + indexer + "'><table><tr><td><input type='hidden' id='hiddenValueFields" + widgetid + "_" + indexer + "' value='" + colName + "#!#" + block + "#!#" + filterType + "' /><input type='text' style='border:1px solid gray;height:15px;width:100%;' id='valueFields" + widgetid + "_" + indexer + "' value='" + textValue.replace(/&&&/g, " ") + "' ondblclick=AutocompleteValues('" + widgetid + "',this,'" + resultArray[i][j].split(",")[0] + "','" + indexer + "',event,'" + columnType + "')  onkeyup=AutocompleteValues('" + widgetid + "',this,'" + resultArray[i][j].split(",")[0] + "','" + indexer + "',event,'" + columnType + "') ><br><div style='border:1px solid black;display:none;position:absolute;z-index:1000;background-color:White;' id='autocomplete_" + indexer + '_' + widgetid + "'></div></td>";
                        str += "<td>And</td><td><input type='hidden' id='hiddenValueFields2" + widgetid + "_" + indexer + "' value='" + colName + "#!#" + block + "#!#" + filterType + "' /><input type='text' style='border:1px solid gray;height:15px;width:100%;' id='valueFields" + widgetid + "_" + indexer + "_2' value='" + value2 + "' ondblclick=AutocompleteValues('" + widgetid + "',this,'" + resultArray[i][j].split(",")[0] + "','" + indexer + "',event,'" + columnType + "','true') onkeyup=AutocompleteValues('" + widgetid + "',this,'" + resultArray[i][j].split(",")[0] + "','" + indexer + "',event,'" + columnType + "','true') ><br><div style='border:1px solid black;display:none;position:absolute;z-index:1000;background-color:White;' id='autocomplete_" + indexer + '_' + widgetid + "_2'></div></td>";
                        str += "</tr></table></td>";
                    }
                    else if (columnType.toLowerCase() != "enumerated")
                        str += "<td width=\"45%\" valign=\"middle\" id='TData" + widgetid + "_" + indexer + "'><input type='hidden' id='hiddenValueFields" + widgetid + "_" + indexer + "' value='" + colName + "#!#" + block + "#!#" + filterType + "' /><input type='text' style='border:1px solid gray;height:15px;width:100%;' id='valueFields" + widgetid + "_" + indexer + "' value='" + textValue.replace(/&&&/g, " ") + "' ondblclick=AutocompleteValues('" + widgetid + "',this,'" + resultArray[i][j].split(",")[0] + "','" + indexer + "',event,'" + columnType + "') onkeyup=AutocompleteValues('" + widgetid + "',this,'" + resultArray[i][j].split(",")[0] + "','" + indexer + "',event,'" + columnType + "') ><br><div style='border:1px solid black;display:none;position:absolute;z-index:1000;background-color:White;' id='autocomplete_" + indexer + '_' + widgetid + "'></div></td>";
                    else
                        str += "<td width=\"45%\" valign=\"top\" id='TData" + widgetid + "_" + indexer + "'>PUT A SELECT HERE</td>";
                    str += "<td width=\"10%\" valign=\"middle\"><a style='width:100%'>&nbsp;&nbsp;<img id='Close" + widgetid + "_" + indexer + "' onclick=RemoveFilter('" + resultArray[i][j] + "','" + widgetid + "','OrRowBlock" + widgetid + i + "','" + j + "','Not" + widgetid + "_" + i + "','BlockName" + widgetid + "_" + i + "','" + ListId + "','" + showFilterButton + "',this,'" + i + "') style='cursor:hand;' title='Remove this Filter' src='/images/closeWidget.gif'></a></td>";  //onmouseover=ShowClose('Close" + widgetid + "_" + indexer + "') onmouseout=HideClose('Close" + widgetid + "_" + indexer + "')
                    str += "</tr></table>";
                    str += "</td>";
                    str += "</tr>";
                    singleColName = resultArray[i][j].split(',')[0].replace(/ /g, "&&&");
                    blockDetails = resultArray[i][j].split(',')[1];
                    DYNAMIC.innerHTML += resultArray[i][j] + "#splitString";
                    if (!negfilter)
                        filterArray.push(resultArray[i][j]);
                    else
                        filterArray.push(resultArray[i][j].replace(/,/g, "#^#,"));
                    indexer++;
                }
                str += "</table>";
                if (i != resultArray.length - 1)
                    str += "<tr><td><div id='AndRow" + widgetid + "_" + indexer + "' style='vertical-align:bottom;cursor:hand;font-family:Trebuchet MS;font-size:9px;color:gray;float:bottom;' onmouseover=ShowBlockName(this,'New(AND)') onclick=AddAndRow('" + widgetid + "','" + i + "','xXxColName2','" + rowPosition + "','" + ListId + "','" + showFilterButton + "') onmouseout=HideBlockName(this,'AND')  >AND</div></td>";
                else
                    str += "<tr><td><div id='AndRow" + widgetid + "_" + indexer + "' style='vertical-align:bottom;cursor:hand;font-family:Trebuchet MS;font-size:9px;color:gray;float:bottom;' onclick=AddSelectedAndRow('AndRowTable" + widgetid + "','" + widgetid + "','" + i + "','xXxColName2','" + rowPosition + "','" + ListId + "','" + showFilterButton + "') onmouseover=ShowBlockName(this,'New(AND)') onmouseout=HideBlockName(this)>&nbsp;&nbsp;</div></td>";
                str += "<td><div id='OrRow" + widgetid + "_" + indexer + "' style='cursor:hand;font-family:Trebuchet MS;font-size:9px;color:gray;' onclick=AddOrRow('" + widgetid + "','" + singleColName + "','" + blockDetails + "','" + negfilter + "','" + rowPosition + "','" + ListId + "','" + showFilterButton + "') onmouseover=ShowBlockName(this,'New(OR)') onmouseout=HideBlockName(this)>&nbsp;&nbsp;</div></td></tr>";
                str = str.replace(/xXxColName2/g, singleColName);
                str = str.replace(/xXxColNameSP/g, singleColName.replace(/ /g, "__"));
                str = str.replace(/xXxColName/g, singleColName.replace(/&&&/g, " "));
            }
            if (filterrRows.length == 0)
                str += "<tr><td><div id='AndRow" + widgetid + "_" + indexer + "' style='vertical-align:bottom;cursor:hand;font-family:Trebuchet MS;font-size:9px;color:gray;float:bottom;' onclick=AddSelectedAndRow('AndRowTable" + widgetid + "','" + widgetid + "','0','xXxColName','0','" + ListId + "','" + showFilterButton + "') onmouseover=ShowBlockName(this,'New(AND)') onmouseout=HideBlockName(this) >&nbsp;&nbsp;</div></td>";

            if ((showFilterButton.toString() != "undefined") && (showFilterButton.toString() == "true")) {
                str += "<tr><td><input type='button' value='Filter' class='BtstyleBlackHTMLStretchable' onclick=SearchforGenericResults('" + widgetid + "','" + ListId + "','" + indexer + "') /></td></tr>";
            }
            str += "</table>";
            if (filterPanel != null) {
                filterPanel.innerHTML = str;
            }
            globalFilterRowCount = filterArray.length;
        if (isMultiCriteria!=undefined&&isMultiCriteria.toString().toLowerCase() == "true" && resultArr[4] != undefined)
          SearchforResults(widgetid, userid, pageid, globalLanguage, ListId);
}
function AddAndRow(widgetid, rowPosition, thisBlockName, rowPos, listId, showFilter) {
      AjaxService.AjaxService.EnterNewFilterValue(widgetid, thisBlockName.replace(/&&&/g, " "),  "",  "",  rowPos,  false,  listId,  "Filter" , successEnterNewFilterValue, fail, widgetid + "#&#" + listId + '#&#' + showFilter);
}
function successEnterNewFilterValue(result, widgetID) {
    var listId = widgetID.split('#&#')[1];
    var showfilter = widgetID.split('#&#')[2];
    widgetID = widgetID.split('#&#')[0];
    $find("FilterModalPopup").hide();
    document.getElementById('FilterPropertyModal').style.display = "none";
      AjaxService.AjaxService.GetFilterRowsforWidget(widgetID, globalLanguage, listId ,globalPageId, successGetFilter, fail, widgetID + "#&#" + "true" + "#&#" + listId + "#&#" + showfilter);
}
function AddSelectedAndRow(tableId, widgetid, rowPosition, thisBlockName, rowPos, listId, showFilter) {
    $find("LoadingAniModal").show();
     AjaxService.AjaxService.GetFilterColumnforWidget(widgetid, globalLanguage, listId, successGetCols, fail, (tableId + '#&#' + widgetid + '#&#' + rowPosition + '#&#' + thisBlockName + '#&#' + rowPos + '#&#' + listId + '#&#' + showFilter));
}
function successGetCols(result, multipleValue) {
    var widgetid = multipleValue.split('#&#')[1];
    var rowPosition = multipleValue.split('#&#')[2];
    var thisBlockName = multipleValue.split('#&#')[3];
    var table = document.getElementById(multipleValue.split('#&#')[0]);
    var rowCount = table.rows.length;
    globalRowPosition = multipleValue.split('#&#')[4];
    var listId = multipleValue.split('#&#')[5];
    var showfilter = multipleValue.split('#&#')[6];
    if (globalRowPosition == undefined)
        globalRowPosition = 0;
    $find("FilterModalPopup").show();
    document.getElementById('FilterPropertyModal').style.display = "inline";
    var modalDIv = document.getElementById('FilterModalHtmlArea');
    var buttonDiv = document.getElementById('FilterModalButtonArea');
    modalDIv.innerHTML = "";
    var str = "<table width=\"100%\">";
    for (var i = 0; i < result.length; i++) {
        str += "<tr><td align=\"left\"><input type='checkbox' name='radiobtn" + widgetid + "' value='" + result[i] + "'></td><td align=\"left\">" + result[i] + "</td>";
       // removed temprorarily
    }
    var str2 = "";
    str2 += "<table><tr><td><input type='button' class='BtstyleBlack' style='color:white;' value='Add' onclick=AddSelectRow('" + widgetid + "','" + listId + "','" + showfilter + "')></td>";
    str2 += "<td><input type='button' class='BtstyleBlack' style='color:white;' value='Close' onclick=CloseSelectRow('FilterModalPopup')></td></tr></table>";
    str += "</table>";
    modalDIv.innerHTML = str;
    buttonDiv.innerHTML = str2;
    $find("LoadingAniModal").hide();
}
function CloseSelectRow(table, widgetId) {
    $find("FilterModalPopup").hide();
    document.getElementById('FilterPropertyModal').style.display = "none";
}
function AddSelectRow(widgetid, listId, showfilter) {
    var colDropDown = document.getElementsByName('radiobtn' + widgetid);
    var checkBoxSelect = document.getElementsByName('chk' + widgetid);
    var columnName = new Array();
    var filterType = new Array();
    for (var i = 0; i < colDropDown.length; i++) {
        if (colDropDown[i].checked) {
            columnName.push(colDropDown[i].value);
                filterType.push("Filter");
        }
    }
    if (columnName != undefined && filterType == "Checkbox") {
        AjaxService.AjaxService.EnterNewFilterArrayValue(widgetid, columnName, "", "", globalRowPosition, true, listId, filterType, successSaveWidgetFilterValues, fail, widgetid);
    }
    else if (columnName != undefined) {
        AjaxService.AjaxService.EnterNewFilterArrayValue(widgetid, columnName, "", "", globalRowPosition, true, listId, filterType, successEnterNewFilterValue, fail, widgetid + "#&#" + listId + '#&#' + showfilter);
    }
}
function AddOrRow(widgetid, colName, blockName, filterVal, rowPos, listId, showFilter) {
    colName = colName.replace(/&&&/g, " ");
     AjaxService.AjaxService.EnterOrFilterValue(widgetid, colName, "", "", blockName, filterVal, rowPos, listId, successEnterNewFilterValue, fail, widgetid + "#&#" + listId + '#&#' + showFilter);
}
function RemoveFilter(columnDetails, widgetId, tableId, rowIndex, notBlockId, BlockNameId, listId, showFilter, image,block) {
    $find("LoadingAniModal").show();
    var table = document.getElementById(tableId);
    var thisCOlName = columnDetails.split(",")[0];
    rowIndex = parseInt(rowIndex);
    var rowObj = document.getElementById(image.id.replace('Close', 'AndRow').split('_')[0] + '_' + (rowIndex + 1));
    var orRowObj = document.getElementById(image.id.replace('Close', 'OrRow').split('_')[0] + '_' + (rowIndex + 1));
    var dictIndex = dictionary.ContainsKey("valueFields" + widgetId + "_" + (rowIndex + 1) + thisCOlName.replace(/&&&/g, " "));
    if (dictIndex > -1) {
        dictionary.splice(dictIndex, 1);
        while (true) {
            var thisIndex = dictionary.ContainsKey("valueFields" + widgetId + "_" + (rowIndex + 2) + thisCOlName.replace(/&&&/g, " "));
            if (thisIndex == -1)
                break;
             var oldId=dictionary[thisIndex].key;
             var oldValue=dictionary[thisIndex].value;
            dictionary.splice(thisIndex, 1);
            var newItem = new Object();
            newItem.key = oldId.replace('_' + (rowIndex + 2), '_' + (rowIndex + 1));
            newItem.value = oldValue;
            dictionary.push(newItem);
        }
    }
    dictIndex = dictionary.ContainsKey("selectOperators" + widgetId + "_" + (rowIndex + 1) + thisCOlName.replace(/&&&/g, " "));
    if (dictIndex > -1) {
        dictionary.splice(dictIndex, 1);
        while (true) {
            var thisIndex = dictionary.ContainsKey("selectOperators" + widgetId + "_" + (rowIndex + 2) + thisCOlName.replace(/&&&/g, " "));
            if (thisIndex == -1)
                break;
            var oldId = dictionary[thisIndex].key;
            var oldValue = dictionary[thisIndex].value;
            dictionary.splice(thisIndex, 1);
            var newItem = new Object();
            newItem.key = oldId.replace('_' + (rowIndex + 2), '_' + (rowIndex + 1));
            newItem.value = oldValue;
            dictionary.push(newItem);
        }
    }
    if (table != null) {
        var rowCount = table.rows.length;
        if (rowCount == 1) {
            var notBlock = document.getElementById(notBlockId);
            var blockName = document.getElementById(BlockNameId);
            notBlock.style.display = "none";
            blockName.style.display = "none";
            if (rowObj != null && orRowObj != null) {
                rowObj.style.display = "none";
                orRowObj.style.display = "none";
            }
        }
        var filterValueId = image.id.replace("Close", "valueFields");
        var filterValue = document.getElementById(filterValueId).value;
        var newColDetailes = columnDetails.split(',');
        var strFilter = "";
        for (var i = 0; i < newColDetailes.length; i++) {
            if (i == 4) {
                strFilter += filterValue;
            }
            else {
                strFilter += newColDetailes[i];
            }
            if (i != newColDetailes.length - 1) {
                strFilter += ",";
            }
        }
        AjaxService.AjaxService.RemoveFilter(strFilter.replace(/&&&/g, " "),  widgetId,  listId , successRemoveFilter, fail, widgetId + '#&#' + rowIndex + '#&#' + listId + '#&#' + showFilter+'#&#'+block);
    }
}
function successRemoveFilter(result, variables) {
    if (result) {
        var widgetID = variables.split('#&#')[0];
        var rowIndex = variables.split('#&#')[1];
        var listId = variables.split('#&#')[2];
        var showfilter = variables.split('#&#')[3];
        var block = variables.split('#&#')[4];
        AjaxService.AjaxService.GetFilterRowsforWidget(widgetID, globalLanguage, listId , successGetFilter, fail, widgetID + "#&#" + "true" + "#&#" + listId + '#&#' + showfilter);
    }
    else {
        alert("Delete Row Failed");
    }
}
function FilterOnColumns(widgetId, rowCount, listId) {
    var filterValueArray = new Array();
    var filDiv = document.getElementById("filter" + widgetId);
    var filArr = filDiv.innerHTML.split("#splitString");
    var negetivefilter;
    for (var i = 0; i < rowCount; i++) {
        var filtertextBox = document.getElementById('valueFields' + widgetId + '_' + i);
        var selectBox = document.getElementById('selectOperators' + widgetId + '_' + i);
        var negetiveFilterObj = document.getElementById('Not' + widgetId + '_' + i);
        if (negetiveFilterObj != null) {
            if (negetiveFilterObj.style.display != "none")
                negetivefilter = "Negetivefilter";
        }
        if (negetivefilter != undefined) {
            filArr[i] = filArr[i].replace(",Filter,", ",Negetivefilter,");
            filArr[i] = filArr[i].replace(",filter,", ",Negetivefilter,");
        }
        var autocomplete = document.getElementById('autocomplete_' + i +'_'+ widgetId);
        if (autocomplete != null) {
            if (document.getElementById('autocomplete_' + i + '_' + widgetId + "_2") != null)
                document.getElementById('autocomplete_' + i + '_' + widgetId + "_2").style.display = "none";
            autocomplete.style.display = "none";
        }
        var selectedName = "";
        var filterValue2TextBox = document.getElementById('valueFields' + widgetId + '_' + i + "_2");
        if (filterValue2TextBox != null)
            var filterValue2 = filterValue2TextBox.value;
        if (filtertextBox != null && filtertextBox.value != "undefined" && filtertextBox.value != "NULL") {
            selectedName = selectBox.options[selectBox.selectedIndex].value;
            filterValueArray.push(filArr[i].split(',')[0].replace(/&&&/g, " ") + "@#@" + filArr[i].split(',')[1].replace(/&amp;&amp;&amp;/g, " ") + "@#@" + filArr[i].split(',')[2] + "@#@" + selectedName + "@#@" + filtertextBox.value + "@#@" + filterValue2);
        }
    }
    var totalChkElements = document.getElementsByTagName('input');
    var widgetCheckboxElements = new Array();
    var removedWidgetCheckboxElements = new Array();
    var smallWidId = widgetId.split(",")[0];
    for (var i = 0; i < totalChkElements.length; i++) {
        if (totalChkElements[i].type == "checkbox" && totalChkElements[i].name.indexOf(smallWidId) > -1 && totalChkElements[i].name.indexOf("Child") > -1 && totalChkElements[i].checked) {
            widgetCheckboxElements.push(totalChkElements[i]);
        }
        if (totalChkElements[i].type == "checkbox" && totalChkElements[i].name.indexOf(smallWidId) > -1 && totalChkElements[i].name.indexOf("Child") > -1 && (!totalChkElements[i].checked)) {
            removedWidgetCheckboxElements.push(totalChkElements[i]);
        }
    }
    for (var j = 0; j < widgetCheckboxElements.length; j++) {
          filterValueArray.push(widgetCheckboxElements[j].name.split("Child")[0] + "@#@" + "1" + "@#@" + "Checkbox" + "@#@" + "@#@" + widgetCheckboxElements[j].value + "@#@" + "");
      }

    if (filterValueArray.length > 0) {
        var obj = document.getElementById("WidgetDataSection" + widgetId);
        var obj2 = document.getElementById("FilterDiv" + widgetId);
        var filRows = document.getElementById("FilterRows" + widgetId);
        if (filRows != null) {
            TempFilterRowsHtml = filRows.innerHTML;
        }
        TempFilterHtml = obj2.innerHTML;
        TempHtml = obj.innerHTML;
        TempId = widgetId;
        obj.innerHTML = "<div align='center'><img src='/images/Loading2.gif'></div>";
        AjaxService.AjaxService.SaveWidgetFilterValues(widgetId, globalLanguage,  filterValueArray, listId , successSaveWidgetFilterValues, failSaveWidgetFilterValues, widgetId);
    }
}
function successGetWidgetHtml(result, widgetId) {
    widgetId = thisGlobalWidget;
   var obj = document.createElement('DIV');
    obj.innerHTML = result;
    obj.style.display = "none";
    document.body.appendChild(obj);
    if (result == "") {
        var widgetDataSection = document.getElementById("WidgetDataSection" + widgetId);
        if (widgetDataSection != null) {
            widgetDataSection.innerHTML = "";
        }
    }
    var divObjects = obj.getElementsByTagName("DIV");
    for (var i = 0; i < divObjects.length; i++) {
        if (divObjects[i].id == "WidgetDataSection" + widgetId) {
            var dataHTML = divObjects[i].innerHTML;
            var dataObject = document.getElementById("WidgetDataSection" + widgetId);
            var lfnWidget = document.getElementById("LfnWidget" + widgetId);
            if (dataObject != null)
                dataObject.innerHTML = dataHTML;
            break;
        }
    }
    if (TempFilterRowsHtml == undefined) {
        var obj2 = document.getElementById("FilterDiv" + widgetId);
        if(TempFilterHtml!=undefined)
            obj2.innerHTML = TempFilterHtml;
        obj2.style.display = "inline";
    }
    else {
        var obj2 = document.getElementById("FilterRows" + widgetId);
        obj2.innerHTML = TempFilterRowsHtml;
        obj2.style.display = "inline";
    }
}
function successSaveWidgetFilterValues(result, widgetId) {
    widgetId = thisGlobalWidget;
    var varData = { widgetId: widgetId, pageLanguage: globalLanguage,userName:globalUserName,pageId:globalPageId};
    CallService("GET", "GetWidgetHtmlWithFilter", varData, successGetWidgetHtml, failGetWidgetHtml);
    //AjaxService.AjaxService.GetWidgetHtmlWithFilter(widgetId, globalLanguage, successGetWidgetHtml, failGetWidgetHtml, widgetId);
}
function failSaveWidgetFilterValues(result) {
    var obj = document.getElementById("WidgetDataSection" + TempId);
    obj.innerHTML = TempHtml;
    alert("Failed to apply Filters");
}
function failGetWidgetHtml(result) {
    var obj = document.getElementById("WidgetDataSection" + TempId);
    obj.innerHTML = TempHtml;
    alert("Failed to Get Widget Html");
}
function AutocompleteValues(widgetID, textBox, columnName, indexItem, Event,columnType,filterValue2) {
    if (columnType.toLowerCase() == "datetime") {
        var calender = new dhtmlxCalendarObject(textBox.id, false);
        calender.setDateFormat("%d/%m/%Y");
        calender.setSkin("yahoolike");
        calender.draw();
        textBox.appendChild(todayDiv);
        var textValue = textBox.value;
        var dictIndex = dictionary.ContainsKey(textBox.id + columnName.replace(/&&&/g, " "));
        if (dictIndex > -1) {
            dictionary.splice(dictIndex, 1); // Remove the Item from dictionary
        }
        var newItem = new Object();
        newItem.key = textBox.id + columnName.replace(/&&&/g, " ");
        newItem.value = textValue;
        dictionary.push(newItem);
        return;
    }
    if (filterValue2 == undefined)
        var obj = document.getElementById('autocomplete_' + indexItem + '_' + widgetID);
    else {
        var obj = document.getElementById('autocomplete_' + indexItem + '_' + widgetID + "_2");
        var setkey = true;
    }
    if (Event.keyCode == 27 || Event.keyCode == 13) {
        obj.style.display = "none";
        obj.value = textBox.value;
        return;
    }
    var textValue = textBox.value;
    var dictIndex = dictionary.ContainsKey(textBox.id + columnName.replace(/&&&/g, " "));
    if (dictIndex>-1) {
        dictionary.splice(dictIndex, 1); // Remove the Item from dictionary
    }
        var newItem = new Object();
        newItem.key = textBox.id + columnName.replace(/&&&/g, " ");
        newItem.value = textValue;
        dictionary.push(newItem);
       if (textValue.length == 0) {
        textBox.style.backgroundImage = 'url(/images/loading2.gif)';
        textBox.style.backgroundRepeat = 'no-repeat';
        textBox.style.backgroundPosition = 'left';
        textValue = "#all#";
    }

    if (textValue.length > 1) {
        autoCompleteCallBack = widgetID + '@#' + indexItem + "@#" + setkey + "@#" + textBox.id;
        var varData = { widgetId: widgetID, value: textValue, columnName: columnName.replace(/&&&/g, " "), language: globalLanguage };
        CallService("GET", "GetFilterAutocompleteValues", varData, successAutocompleteValues, fail);
       // AjaxService.AjaxService.GetFilterAutocompleteValues(widgetID, textValue, columnName.replace(/&&&/g, " "),globalLanguage,successAutocompleteValues, fail, widgetID + '@#' + indexItem + "@#" + setkey+"@#"+textBox.id);
    }
    else {
        if (obj != null)
            obj.style.display = "none";
    }
}
var autoCompleteCallBack;
function successAutocompleteValues(data, textStatus, jqXHR) {
    var multipleValues = autoCompleteCallBack;
    var widgetId = multipleValues.split('@#')[0];
    var indexItem = multipleValues.split('@#')[1];
    var setKey = multipleValues.split('@#')[2];
    var textBoxId = multipleValues.split('@#')[3];
    var textBox = document.getElementById(textBoxId);
    textBox.style.backgroundImage = 'none';
    if (setKey.toString().toLowerCase() == "true")
        var obj = document.getElementById('autocomplete_' + indexItem + '_' + widgetId + "_2");
    else
        var obj = document.getElementById('autocomplete_' + indexItem + '_' + widgetId);
    var parentTextbox = document.getElementById('valueFields' + widgetId + '_' + indexItem);
    obj.style.display = "block";
    obj.style.width = parentTextbox.clientWidth + "px";
    obj.innerHTML = "";
    if (result.length == 0)
        obj.style.display = "none";
    for (var x = 0; x < result.length; x++) {
        result[x] = result[x].replace(/ /g, "--");
        var originalName = result[x].replace(/--/g, " ");
        comp = "SearchToolcomp" + x;
        var newelement = document.createElement('div');
        newelement.id = comp;
        newelement.innerHTML = "<a style='cursor:Pointer;font-family:Arial;font-size:12px;font-weight:400'  onclick=ListTrombiSelectItems('" + result[x] + "','" + widgetId + "','" + indexItem + "')>" + originalName + "</a>";
        obj.appendChild(newelement);
    }
}
function ListTrombiSelectItems(value, widgetId, index) {
    if (document.getElementById('valueFields' + widgetId + "_" + index) != null)
        document.getElementById('valueFields' + widgetId + "_" + index).value = value.replace(/--/g," ");
    document.getElementById('autocomplete_' + index + "_" + widgetId).style.display = "none";
}
function CreateFilterOperatorDropDown(columnType, widgetid, indexer, result) {
    var selectString = "";
    columnType = columnType.replace("System.", "");
    columnType = columnType=="Int32"? "integer" : columnType;
    switch (columnType.toString().toLowerCase()) {
        case "string":
            selectString += "<select id='selectOperators" + widgetid + "_" + indexer + "' onchange=OnOperatorChange(this,'" + result + "','" + columnType + "') style='width:100%;' class='Normal' ><option title='Contains'>Contains</option><option title='Equals'>Equals</option></select>";
            break;
        case "datetime":
            selectString += "<select id='selectOperators" + widgetid + "_" + indexer + "' onchange=OnOperatorChange(this,'" + result + "','" + columnType + "') style='width:100%;' class='Normal' ><option title='Equals'>Equals</option><option title='Between'>Between</option><option title='Less than'>Less than</option><option title='Less than or equal'>Less than or equal</option><option title='Greater than'>Greater than</option><option title='Greater than or equal'>Greater than or equal</option></select>";
            break;
        case "integer":
            selectString += "<select id='selectOperators" + widgetid + "_" + indexer + "' onchange=OnOperatorChange(this,'" + result + "','" + columnType + "') style='width:100%;' class='Normal' ><option title='Equals'>Equals</option><option title='Between'>Between</option><option title='Less than'>Less than</option><option title='Less than or equal'>Less than or equal</option><option title='Greater than'>Greater than</option><option title='Greater than or equal'>Greater than or equal</option></select>";
            break;
        case "enumerated":
            selectString += "<select id='selectOperators" + widgetid + "_" + indexer + "' onchange=OnOperatorChange(this,'" + result + "','" + columnType + "') style='width:100%;' class='Normal'><option title='Equals'>Equals</option></select>";
            break;
        default:
            selectString += "<select id='selectOperators" + widgetid + "_" + indexer + "' onchange=OnOperatorChange(this,'" + result + "','" + columnType + "') style='width:100%;' class='Normal' ><option title='Contains'>Contains</option><option title='Equals'>Equals</option></select>";
            break;
    }
    return selectString;
}
function AdjustSelectedDropDownItem(selectString, firstValue) {
    firstValue = firstValue.replace(/&&&/g, " ");
    if (selectString.indexOf(firstValue) > -1) {
        var tempStr = selectString.replace("<option title='" + firstValue + "'>" + firstValue + "</option>", "<option selected='selected' title='" + firstValue + "'>" + firstValue + "</option>");
        return tempStr;
    }
    return selectString;
}
function OnOperatorChange(dropDown, colName,columnType) {
    if (dropDown.options[dropDown.selectedIndex].value.toLowerCase() == "between") {
        var newTextBoxId = dropDown.id.replace("selectOperators", "valueFields");
        var indexer = newTextBoxId.split("_")[1];
        var widgtId = newTextBoxId.split("_")[0].replace("valueFields", "");
        var prevValue = document.getElementById(newTextBoxId).value;
        var html = "<table width='100%'><tr><td width='50%'>";
        html += "<input type='text' style='border:1px solid gray;height:15px;width:100%;' id='" + newTextBoxId + "' value='" + prevValue + "' ondblclick=AutocompleteValues('" + widgtId + "',this,'" + colName + "','" + indexer + "',event,'" + columnType + "') onkeyup=AutocompleteValues('" + widgtId + "',this,'" + colName + "','" + indexer + "',event,'" + columnType + "') >";
        html += "<div style='border:1px solid black;display:none;position:absolute;z-index:1000;background-color:White;' id='autocomplete_" + indexer + '_' + widgtId + "'></div></td>";
        html += "<td>&nbsp;and</td><td width='50%'>";
        html += "<input type='text' style='border:1px solid gray;height:15px;width:100%;' id='" + newTextBoxId + "_2' ondblclick=AutocompleteValues('" + widgtId + "',this,'" + colName + "','" + indexer + "',event,'" + columnType + "','true') onkeyup=AutocompleteValues('" + widgtId + "',this,'" + colName + "','" + indexer + "',event,'" + columnType + "','true') >";
        html += "<div style='border:1px solid black;display:none;position:absolute;z-index:1000;background-color:White;' id='autocomplete_" + indexer + '_' + widgtId + "_2'></div></td>";
        html += "</tr></table>";
        var tdBlock = document.getElementById(newTextBoxId.replace("valueFields", "TData"));
        tdBlock.innerHTML = html;
        var dictIndex = dictionary.ContainsKey(dropDown.id+colName.replace(/&&&/g," "));
        if (dictIndex > -1) {
            dictionary.splice(dictIndex, 1); // Remove the Item from dictionary
        }
        var newItem = new Object();
        newItem.key = dropDown.id+colName.replace(/&&&/g, " ");
        newItem.value = dropDown.options[dropDown.selectedIndex].value;
        dictionary.push(newItem);
    }
    else {
        var newTextBoxId = dropDown.id.replace("selectOperators", "valueFields");
        var indexer = newTextBoxId.split("_")[1];
        var widgtId = newTextBoxId.split("_")[0].replace("valueFields", "");
        var prevValue = document.getElementById(newTextBoxId).value;
        var html = "<input type='text' style='border:1px solid gray;height:15px;width:100%;' id='" + newTextBoxId + "' value='" + prevValue + "' ondblclick=AutocompleteValues('" + widgtId + "',this,'" + colName + "','" + indexer + "',event,'" + columnType + "') onkeyup=AutocompleteValues('" + widgtId + "',this,'" + colName + "','" + indexer + "',event,'" + columnType + "') >";
        html += "<br><div style='border:1px solid black;display:none;position:absolute;z-index:1000;background-color:White;' id='autocomplete_" + indexer + '_' + widgtId + "'></div>";
        var tdBlock = document.getElementById(newTextBoxId.replace("valueFields", "TData"));
        tdBlock.innerHTML = html;
        var dictIndex = dictionary.ContainsKey(dropDown.id + colName.replace(/&&&/g, " "));
        if (dictIndex > -1) {
            dictionary.splice(dictIndex, 1); // Remove the Item from dictionary
        }
        var newItem = new Object();
        newItem.key = dropDown.id + colName.replace(/&&&/g, " ");
        newItem.value = dropDown.options[dropDown.selectedIndex].value;
        dictionary.push(newItem);
    }
}

/**And/Or Block Management END*****/
function AddNewRowInWidget(widgetId, newRowInnerHtml) {
  var newHTML = "";
  newHTML += "<table width='100%'>";
  newHTML += "<tr><td align=\"right\" width=\"20px%\"><a style='cursor:hand;' onclick=CloseAddNewRowInWidget('"+widgetId+"')><img src='/images/closeWidget.gif' title=\"Close\" alt=\"Close\" /></a></td></tr>";
  newHTML +="<tr><td width='100%'><table width='100%'><tr><td width='20%'>Enter Document Url:</td>";
  newHTML += "<td width='60%'><input type='text' id='externalDocUrl" + widgetId + "' onkeyup=FocusExternalUploadButton('" + widgetId + "',this) /></td><td><input type='button' class='BtstyleBlackHTMLStretchable' onclick=CheckUploadSource(this,'"+widgetId+"') value='Browse' id='ExternalButton" + widgetId + "' /></td></tr></table></td></tr>";
  newHTML +="</table>";
    var addrowDiv = document.getElementById("AddRowDiv" + widgetId);
    if (addrowDiv != null) {
        addrowDiv.style.display = "inline";
        addrowDiv.innerHTML += newHTML;
        widgetNewRowCount++;
    }
}
function CloseAddNewRowInWidget(widgetId) {
    var addrowDiv = document.getElementById("AddRowDiv" + widgetId);
    if (addrowDiv != null) {
        addrowDiv.innerHTML = "";
        addrowDiv.style.display = "none";
    }
    var hideButton = document.getElementById("plusButton" + widgetId);
    if (hideButton != null) {
        hideButton.style.display = "inline";
    }
}
function CheckUploadSource(uploadButton,widgetId) {
    var uploadButtonText = uploadButton.value;
    if (uploadButtonText.toLowerCase() == "browse") {
        OpenVault(widgetId);
    }
}
function FocusExternalUploadButton(widgetId, textBox) {
    if (textBox.value!= "") {
        document.getElementById("ExternalButton" + widgetId).value = "Upload";
    }
    else {
        document.getElementById("ExternalButton" + widgetId).value = "Browse";
    } 
}
function GroupSimilarRows(rowArray) {
    if (rowArray.length == 0)
        return groupedArray;
    var firstValue = rowArray[0].split(",")[0] + rowArray[0].split(",")[1];
    var firstCol = rowArray[0].split(",")[0];
    var secondCol = rowArray[0].split(",")[1];
    groupedArray.push(rowArray[0]);
    rowArray.splice(0, 1); 
    var rowLength=rowArray.length;
    for (var i = 0; i < rowLength; i++) {
        if (rowArray[i] != undefined) {
            if (rowArray[i].split(",")[0] + rowArray[i].split(",")[1] == firstValue) {
                groupedArray.push(rowArray[i]); 
                rowArray.splice(i, 1);
                i--;
            }
        }
    }
    for (var i = 0; i < rowArray.length; i++) {
        if (rowArray[i] != undefined) {
            if (rowArray[i].split(",")[0] == firstCol && rowArray[i].split(",")[1] != secondCol) {
                groupedArray.push(rowArray[i]);
                rowArray.splice(i, 1);
                i--;
            }
        }
    }
    while (rowArray.length > 0) {
        GroupSimilarRows(rowArray);
    }
    return groupedArray;
}
function BoldAssistantName(assistantDiv) {assistantDiv.className = "FocusAssitant";}
function NormalAssistantName(assistantDiv) {assistantDiv.className = "Assitant";}
function blankEvent() {}
function HideSearchTool(widgetId) {
    var widgetDiv = document.getElementById(widgetId);
    if (widgetDiv != null) {
        widgetDiv.style.display = "none";
    }
}
function FilterOnColumnsInWidget(filterValue, Widgetid, userid, pageid, lang, listItemContainerId, columnName,linkObject) {
    if (filterValue == "Empty")
        filterValue = "";
    filterValue = filterValue.replace(/##/g, " ");
    filterValue = filterValue.replace("^^", "'");

    var selectedLink = document.getElementById(Widgetid + "SelectedLink");
    if (selectedLink != null) {
        selectedLink.style.color = "Gray";
        selectedLink.id = "";
        var selectedImage = document.getElementById(Widgetid + "SelectedLinkImage");
        if (selectedImage != null) {
            selectedImage.src = "/images/Arrow_publications_Gray.gif";
        }
        if (linkObject != undefined && linkObject != null) {
            linkObject.id = Widgetid + "SelectedLink";
            linkObject.style.color = "#9e2c27";
        }
        var linkObjectImage = document.getElementById(Widgetid + "SelectedLinkImage" + linkObject.innerText);
        if (linkObjectImage != null && linkObjectImage != selectedImage) {
            linkObjectImage.id = Widgetid + "SelectedLinkImage";
            linkObjectImage.src = "/images/Arrow_publications_Red.gif";
            if (selectedImage != null) {
                selectedImage.id = Widgetid + "SelectedLinkImage" + linkObject.innerText;
            }
        }
    }
    else {
        if (linkObject != undefined && linkObject != null) {
            linkObject.id = Widgetid + "SelectedLink";
            linkObject.style.color = "#9e2c27";
        }
        var linkObjectImage = document.getElementById(Widgetid + "SelectedLinkImage" + linkObject.innerText);
        if (linkObjectImage != null) {
            linkObjectImage.id = Widgetid + "SelectedLinkImage";
            linkObjectImage.src = "/images/Arrow_publications_Red.gif";
            if (selectedImage != null) {
                selectedImage.id = Widgetid + "SelectedLinkImage" + linkObject.innerText;
            }
        }
    }
    var filterValues = "";
    filterValues += columnName + "@#@" + "1" + "@#@" + "Link" + "@#@" + "@#@" + filterValue + "@#@" + ""; // change this later
    filterValues += "#splitString";
    var obj = document.getElementById("WidgetDataSection" + Widgetid);
    if (obj != null) {
        obj.innerHTML = "<div align='center'><img src='/images/Loading2.gif'></div>";
    }
    var obj = document.getElementById("WidgetDataSection" + Widgetid);
    var obj2 = document.getElementById("FilterDiv" + Widgetid);
    var filRows = document.getElementById("FilterRows" + Widgetid);
        if (filRows != null) {
            TempFilterRowsHtml = filRows.innerHTML;
        }
        TempFilterHtml = obj2.innerHTML;
        thisGlobalWidget = Widgetid;
        var varData = { widgetId: Widgetid, pageLanguage: globalLanguage, filterArrayString: filterValues, listId: listItemContainerId, pageId: globalPageId, userName: globalUserName, userPwd: globalUserPwd };
        //CallService("GET", "SaveWidgetFilterCodes", varData, successSaveWidgetFilterValues, failSaveWidgetFilterValues);
        CallService("GET", "SaveWidgetFilterCodesAndShowHtml", varData, successSaveWidgetFilterCodesAndShowHtml, failSaveWidgetFilterValues);
        

        //AjaxService.AjaxService.SaveWidgetFilterCodes(Widgetid, globalLanguage, filterValues, listItemContainerId, successSaveWidgetFilterValues, failSaveWidgetFilterValues, Widgetid);
    }

    function successSaveWidgetFilterCodesAndShowHtml(result) {
        var widgetId = thisGlobalWidget;
        var obj = document.createElement('DIV');
        obj.innerHTML = result;
        obj.style.display = "none";
        document.body.appendChild(obj);
        if (result == "") {
            var widgetDataSection = document.getElementById("WidgetDataSection" + widgetId);
            if (widgetDataSection != null) {
                widgetDataSection.innerHTML = "";
            }
        }
        var divObjects = obj.getElementsByTagName("DIV");
        for (var i = 0; i < divObjects.length; i++) {
            if (divObjects[i].id == "WidgetDataSection" + widgetId) {
                var dataHTML = divObjects[i].innerHTML;
                var dataObject = document.getElementById("WidgetDataSection" + widgetId);
                var lfnWidget = document.getElementById("LfnWidget" + widgetId);
                if (dataObject != null)
                    dataObject.innerHTML = dataHTML;
                break;
            }
        }
        if (TempFilterRowsHtml == undefined) {
            var obj2 = document.getElementById("FilterDiv" + widgetId);
            if (TempFilterHtml != undefined)
                obj2.innerHTML = TempFilterHtml;
            obj2.style.display = "inline";
        }
        else {
            var obj2 = document.getElementById("FilterRows" + widgetId);
            obj2.innerHTML = TempFilterRowsHtml;
            obj2.style.display = "inline";
        }
    }


    var thisGlobalWidget;
// This method is called after the filter button is clicked from the end user page, it saves the filters and gets the filter results back after the xsl transformation
function SearchforGenericResults(widgetid, listItemId, rowCount) {
    var obj = document.getElementById("WidgetDataSection" + widgetid);
    if (obj != null) {
        obj.innerHTML = "<div align='center'>Applying filters...<img src='/images/Loading2.gif'></div>";
    }
    var filterValueArray = new Array();
    var checkedBoxesArray = new Array();
    var checkboxes = document.getElementsByTagName('input');
    for (var i = 0; i < checkboxes.length; i++) {
        if (checkboxes[i].type == "checkbox" && checkboxes[i].checked && (checkboxes[i].name.indexOf("Parent") == -1 && checkboxes[i].name.indexOf("Ancestor") == -1)) {
            checkedBoxesArray.push(checkboxes[i]);
        }
    }
    var filDiv = document.getElementById("filter" + widgetid);
    if (filDiv != null) {
        var filArr = filDiv.innerHTML.split("#splitString");
    }
    // Get all the filter rows on the end user page
    for (var i = 0; i < 250; i++) {
        var filtertextBox = document.getElementById('valueFields' + widgetid + '_' + i);
        var selectBox = document.getElementById('selectOperators' + widgetid + '_' + i);
        var selectedName = "";
        if (filtertextBox != null && filtertextBox.value != "undefined" && filtertextBox.value != "NULL") {
            selectedName = selectBox.options[selectBox.selectedIndex].value;
            var colName = document.getElementById('hiddenValueFields' + widgetid + '_' + i).value.split("#!#")[0];
            var block = document.getElementById('hiddenValueFields' + widgetid + '_' + i).value.split("#!#")[1];
            var filterType = document.getElementById('hiddenValueFields' + widgetid + '_' + i).value.split("#!#")[2];
            filterValueArray.push(colName.replace(/&&&/g, " ") + "@#@" + block.replace(/&amp;&amp;&amp;/g, " ") + "@#@" + filterType+ "@#@" + selectedName + "@#@" + filtertextBox.value);
        }
    }
    var arr = new Array();
    // get Checkboxes if any on the page
    GetallcheckboxState(widgetid, arr, false);
    var checkboxPropertiesArray = new Array();
    var checkboxCountArray = new Array();
    var tempDivEle = document.getElementById("ChkState" + widgetid);
    if (tempDivEle != null) {
        var tempDivStringElements = tempDivEle.innerHTML.split("#INDSEP#");
        for (var i = 0; i < tempDivStringElements.length; i++) {
            if (arr[i] != null || arr[i] != undefined) {
                if ((arr[i].split("@#@")[2] != tempDivStringElements[i].split("@#@")[2]))
                    checkboxCountArray.push(checkboxObjects[i]);
            }
        }
    }
    for (var i = 0; i < checkboxCountArray.length; i++) {
        if (checkboxCountArray[i] == undefined)
            continue;
        if (checkboxCountArray[i].name.indexOf("Parent") == -1 && checkboxCountArray[i].name.indexOf("Ancestor") == -1)
            checkboxPropertiesArray.push(checkboxCountArray[i].name + "#%#" + checkboxCountArray[i].value + '#%#' + checkboxCountArray[i].checked + '#%#' + checkboxCountArray[i].id);
    }
    if ((arr != null || arr != undefined) && (tempDivEle != null)) {
        tempDivEle.innerHTML = "";
        for (var i = 0; i < arr.length; i++) {
            tempDivEle.innerHTML += arr[i] + "#INDSEP#";
        }
        checkboxElements = arr;
    }
    genericFilterCallback = widgetid + "###" + listItemId + "###" + rowCount;
    var varData = { listItemContainerId: listItemId.replace(/^^/g, " ").replace(/&&&/g, "\"").replace(/%%%/g, ":"), checkboxStateArray: checkboxPropertiesArray, widgetId: widgetid, filterArray: filterValueArray, pageId: globalPageId, language: globalLanguage, userName: globalUserName };
    CallService("GET", "FindGenricFilterResult", varData, FindGenricFilterResultSuccess, FindGenricFilterResultFail);
    //AjaxService.AjaxService.FindGenricFilterResult(listItemId.replace(/^^/g, " ").replace(/&&&/g, "\"").replace(/%%%/g, ":"), checkboxPropertiesArray, widgetid, filterValueArray,globalPageId,globalLanguage,globalUserName, FindGenricFilterResultSuccess, FindGenricFilterResultFail, widgetid + "###" + listItemId+"###"+rowCount);
}
var genericFilterCallback;
function FindGenricFilterResultSuccess(result) {
    var widgetDetails = genericFilterCallback;
    var widgetId = widgetDetails.split("###")[0];
    var listItemId = widgetDetails.split("###")[2];
    var rowCount = widgetDetails.split("###")[1];
    var obj = document.getElementById("WidgetDataSection" + widgetId);
    if (obj != null) {
        obj.innerHTML = "<div align='center'>Applying filters...<img src='/images/Loading2.gif'></div>";
    }
    AjaxService.AjaxService.GetWidgetHtmlWithFilter(widgetId, globalLanguage, successGetWidgetHtml, failGetWidgetHtml, widgetId);
}
function FindGenricFilterResultFail(result, widgetId) {
    var obj = document.getElementById("WidgetDataSection" + widgetId);
    if (obj != null) {
        obj.innerHTML = "";
    } 
}
