﻿
var sortColumn = new Array();
var page = new Array();
var pagesize = new Array();

var myCallBackFunction;

function CallGLDWebService(name, callback)
{
    //debugger;
    var resultsDiv;
    var baseID;
    var uniqueID;
    var filterValues;
    var filterNames;
    var staticNames;

    try {
        if (document.getElementById(name + "GeneralConfig")) {
            var configGC = new ConfigReader(name + "GeneralConfig");
            resultsDiv = configGC.getValue("GLDResultsDiv");
            baseID = configGC.getValue("GLDBaseClientID");
            uniqueID = configGC.getValue("GLDBaseUniqueID");
        }
        if (document.getElementById(name + "GLDFilterValues")) {
            var configFT = new ConfigReader(name + "GLDFilterValues");
            filterValues = configFT.getValue("GLDFilterValues");
            filterNames = configFT.getValue("GLDFilterNames");
            staticNames = configFT.getValue("GLDStaticNames");
        }
    }
    catch (e)
    { }

    var paramArray = new Array();

    // Iterate through all the dynamic filters and parse the values
    if (filterNames && filterNames != '') {
        var filters = filterNames.split(',');
        for (var i = 0; i < filters.length; i++) {
            var temp = document.getElementById(baseID + "_" + filters[i]);

            if (temp) {
                if (temp.tagName == "SELECT") {
                    //debugger;

                    if (temp.selectedIndex > 0 && temp.value != '') {
                        filterValues = filterValues.replace('{{' + filters[i] + '}}', temp.value);
                        paramArray[filters[i]] = temp.value;
                    }
                }
                else if (temp.tagName == "INPUT") {
                    if (temp.type == "text") {
                        if (temp.value != '') {
                            filterValues = filterValues.replace('{{' + filters[i] + '}}', temp.value);
                            paramArray[filters[i]] = temp.value;
                        }
                    }
                    else if (temp.type == "checkbox") {
                        var boolNumber = 0;
                        if (temp.checked) {
                            boolNumber = 1;
                        }
                        filterValues = filterValues.replace('{{' + filters[i] + '}}', boolNumber);
                        paramArray[filters[i]] = temp.value;
                    }
                }
            }
            else // see if it is a radio button set
            {
                var radios = document.getElementsByName(uniqueID + "$" + filters[i]);
                var col;
                if (radios) {
                    for (var j = 0; j < radios.length; j++) {
                        if (radios[j].checked) {
                            col = radios[j].value;
                            break;
                        }
                    }

                    if (col) {
                        if (col != 'All') {
                            filterValues = filterValues.replace('{{' + filters[i] + '}}', col);
                            paramArray[filters[i]] = col;
                        }
                    }
                }
            }
        }
    }

    // Google Analytics
    // Add dynamic query values
    var googleAnalytics = document.location + "?";
    for (var p in paramArray) {
        googleAnalytics += p + "=" + paramArray[p] + "&";
    }

    // Add static query values
    if (staticNames && staticNames != '') {
        var sNames = staticNames.split(',');
        for (var k = 0; k < sNames.length; k++) {
            googleAnalytics += sNames[k] + "&";
        }
    }

    //Remove last &
    //googleAnalytics = googleAnalytics.slice(0,-1);

    //Call GoogleAnalytics
    //pageTracker._trackPageview(googleAnalytics);*/

    // Get GLD Settings
    var config = new ConfigReader(name + "GLDWebServiceConfig");
    var settings = new MPYA.CM.GenericListDisplayLib.GLDSettings();

    settings.Title = config.getValue("GLDWebServiceTitle");
    settings.Web = config.getValue("GLDWebServiceWeb");
    settings.List = config.getValue("GLDWebServiceList");
    settings.DisplayColumns = config.getValue("GLDWebServiceDisplayColumns");
    settings.HeadingTranslations = config.getValue("GLDWebServiceHeadingTranslations");
    settings.TranslatableColumns = config.getValue("GLDWebServiceTranslatableColumns");
    settings.DisplayColumnHeadings = config.getValue("GLDWebServiceDisplayColumnHeadings");
    settings.DisplayColumnHeadingsAsLinks = config.getValue("GLDWebServiceDisplayColumnHeadingsAsLinks");
    settings.DisplayType = config.getValue("GLDWebServiceDisplayType");
    settings.ItemsNotFoundPhraseID = config.getValue("GLDItemsNotFoundPhraseID");

    settings.Filter = filterValues;

    settings.Name = config.getValue("GLDWebServiceName");
    settings.FilterDataName = config.getValue("GLDWebServiceFilterDataName");
    settings.CssClass = config.getValue("GLDWebServiceCssClass");
    settings.DisplayLinkField = config.getValue("GLDWebServiceDisplayLinkField");
    settings.UrlColumn = config.getValue("GLDWebServiceUrlColumn");
    settings.DisplayFormat = config.getValue("GLDWebServiceDisplayFormat");
    settings.DisplayColsInLineStyle = config.getValue("GLDWebServiceDisplayColsInLineStyle");
    settings.HtmlSnippetWeb = config.getValue("GLDWebServiceHtmlSnippetWeb");
    settings.HtmlSnippetList = config.getValue("GLDWebServiceHtmlSnippetList");
    settings.DisplayOuterTemplate = config.getValue("GLDWebServiceDisplayOuterTemplate");
    settings.DisplayInnerTemplate = config.getValue("GLDWebServiceDisplayInnerTemplate");
    settings.DisplayGroupTemplate = config.getValue("GLDWebServiceDisplayGroupTemplate");
    settings.HiddenColumns = config.getValue("GLDWebServiceHiddenColumns");
    settings.HiddenColumnsFormat = config.getValue("GLDWebServiceHiddenColumnsFormat");
    settings.HiddenDisplayTemplate = config.getValue("GLDWebServiceHiddenDisplayTemplate");
    settings.EventText = config.getValue("GLDWebServiceEventText");
    settings.EventType = config.getValue("GLDWebServiceEventType");
    settings.EventField = config.getValue("GLDWebServiceEventField");
    settings.GroupColumn = config.getValue("GLDWebServiceGroupColumn");
    settings.GroupColumnType = config.getValue("GLDWebServiceGroupColumnType");
    settings.GroupDirection = config.getValue("GLDWebServiceGroupDirection");
    settings.GroupHeadingsAsLinks = config.getValue("GLDWebServiceGroupHeadingsAsLinks");
    settings.GroupStartOpen = config.getValue("GLDWebServiceGroupStartOpen");
    settings.ImageLocation = config.getValue("GLDWebServiceImageLocation");
    settings.ImageType = config.getValue("GLDWebServiceImageType");
    if (sortColumn[name]) {
        settings.SortColumn = sortColumn[name];
    }
    else {
        settings.SortColumn = config.getValue("GLDWebServiceSortColumn");
    }
    settings.OpenLinkInNewWindow = config.getValue("GLDWebServiceOpenLinkInNewWindow");
    settings.UseFullURL = config.getValue("GLDWebServiceUseFullURL");
    settings.UseGoogleAnalyticsFileDownloads = config.getValue("GLDWebServiceUseGoogleAnalyticsFileDownloads");
    if (page[name]) {
        settings.Page = page[name];
    }
    else {
        settings.Page = config.getValue("GLDWebServicePage");
    }
    if(pagesize[name])
    {
	  settings.PageSize = pagesize[name];
    }
    else
    {      
      settings.PageSize = config.getValue("GLDWebServicePageSize");
    }

    settings.ShowAdditionalPaging = config.getValue("GLDShowAdditionalPaging");
    settings.ShowTotalNumberOfItems = config.getValue("GLDShowTotalNumberOfItems");
    settings.DataSourceType = config.getValue("GLDDataSourceType");
    settings.HtmlSnippetsTranslationKeys = config.getValue("GLDHtmlSnippetsTranslationKeys");

    // Call the web service
    var service = new MPYA.CM.SupportServices.SupportService();
   service.GetListItems(settings, resultsDiv, OnSuccess, OnError, callback);
}

function OnSuccess(result,callback)
{  //debugger;
   var dest = result[0];
   var html = result[1];
   document.getElementById(dest).innerHTML = html;
   
   if(callback && typeof callback == "function")
		callback(); 
}

function OnError(result) {
    alert(result.get_message());
}

function FilterLookupDropDown(element, parentScope, childScope, dest, name, web) {
 
  var language = 'en';
    var service = new MPYA.CM.SupportServices.SupportService();

    if (element.selectedIndex > 0) {
        var parentValue = element.options[element.selectedIndex].value;
        
        service.FilterDropDownList(parentValue, parentScope, childScope, dest, language, web, GotDDItems, OnError, name);
    }
    else {
        service.PopulateDropDownList(childScope, dest, language, GotDDItems, name);
    }
}

function GotDDItems(result, name) {
//debugger;
    var dest = result[0];
    var lookupData = result[1];
    PopulateDropDown(dest, lookupData, name);
}

function PopulateDropDown(ddlName, result, name) {
    
    var config = new ConfigReader(name + "GeneralConfig");
    var baseID = config.getValue("GLDBaseClientID");

    var strings = result.split('|');
    if (strings.length != 0) {
        var ddl = document.getElementById(baseID + "_" + ddlName);
        ddl.options.length = 0;

        for (var i = 0; i < strings.length; i++) {
            var opt = document.createElement("option");
            // Add an Option object to Drop Down/List Box
            ddl.options.add(opt);
            opt.text = strings[i];
            opt.value = strings[i];
        }

        if (ddl.options == 2) {
            ddl.selectedIndex = 1;
        }
    }
}

function SortBy(column, name) {
    sortColumn[name] = column;
    CallGLDWebService(name);
}

function pageUp(name) {
    if (!page[name]) {
        var config = new ConfigReader(name + "GLDWebServiceConfig");
        page[name] = config.getValue("GLDWebServicePage");
    }
    page[name]++;
    CallGLDWebService(name, myCallBackFunction);
}

function pageDown(name) {
    if (page[name] > 1) {
        page[name]--;
    }
    CallGLDWebService(name, myCallBackFunction);
}

function groupHeadingClick(elem) {
    var trElemIndex;

    if (!elem.parentElement) {
        trElemIndex = (elem.parentNode.parentNode.rowIndex * 2) + 1;
    }
    else {
        trElemIndex = elem.parentNode.parentNode.rowIndex + 1;
    }
    var tableBody = elem.parentNode.parentNode.parentNode;

    try {
        while (!tableBody.childNodes[trElemIndex].className || (trElemIndex < tableBody.childNodes.length && tableBody.childNodes[trElemIndex].className != "groupHeading")) {
            if (tableBody.childNodes[trElemIndex].style) {
                if (tableBody.childNodes[trElemIndex].style.display == "none")
                    tableBody.childNodes[trElemIndex].style.display = "block";
                else
                    tableBody.childNodes[trElemIndex].style.display = "none";
            }
            trElemIndex++;

            if (trElemIndex == tableBody.childNodes.length) {
                break;
            }
        }
    }
    catch (ex) {
        alert(ex.Message);
    }

}

function changeClass(o) {
    try {
        var obj = getObject(o);

        if (obj != null)
            obj.className = (o.className == "closed") ? "open" : "closed";
    }
    catch (e) {
        //window.alert(e.description);
    }
    finally {
        return false;
    }
}

function ResetAllControls(name) {
    var filterNames;
    var baseID;
    try {
        if (document.getElementById(name + "GeneralConfig")) {
            var configGC = new ConfigReader(name + "GeneralConfig");
            baseID = configGC.getValue("GLDBaseClientID");
        }
        if (document.getElementById(name + "GLDFilterValues")) {
            var configFT = new ConfigReader(name + "GLDFilterValues");
            filterNames = configFT.getValue("GLDFilterNames");
        }
    }
    catch (e)
    { }

    if (filterNames && filterNames != '') {
        var filters = filterNames.split(',');
        for (var i = 0; i < filters.length; i++) {
            var temp = document.getElementById(baseID + "_" + filters[i]);

            if (temp) {
                if (temp.tagName == "SELECT") {
                    temp.selectedIndex = 0;
                }
                else if (temp.tagName == "INPUT" && temp.type == "text") {
                    temp.value = '';
                }
            }
        }
    }
    CallGLDWebService(name);
}

function ResetPage(name) {
    page[name] = 1;
}

function ShowAll(name, callback)
{
   page[name] = 1;
   pagesize[name] = 999;
   CallGLDWebService(name, callback);
}




