﻿"use strict";
/*global document, INTEL, jQuery, rlTranslations,
addEventListener: false, blur: false, clearInterval: false, clearTimeout: false, 
close: false, closed: false, defaultStatus: false, document: false, event: false, 
focus: false, frames: false, getComputedStyle: false, history: false, Image: false,
length: false, location: false, moveBy: false, moveTo: false, name: false, navigator: false, 
onblur: true, onerror: true, onfocus: true, onload: true, onresize: true, onunload: true, 
open: false, opener: false, Option: false, parent: false, print: false, resizeBy: false, 
resizeTo: false, screen: false, scroll: false, scrollBy: false, scrollTo: false, 
setInterval: false, setTimeout: false, status: false, top: false, XMLHttpRequest: false,
window, waCustomLink, ItcCookies, registerItem, Asset, waTrackAsPage, escape, unregisterItem
*/

var lang, itcenter_urls, rlFASTData, ResourceBrowser, rlFASTDataFieldMap; 
lang = document.documentElement.lang === "" ? "en_us" : document.documentElement.lang.toLowerCase();

itcenter_urls = {
    urls: {
        tst1: "http://tst1itcenter.sym.cps.intel.com/itcenter",
        day1: "http://day1itcenter.sym.cps.intel.com/itcenter",
        prod: "http://lz1.intel.com/itcenter",
        dev: "http://oesitcenter.intel.com"
    },
    getUrl: function () {
        var urlMap = {
            "proto-cps.cps.intel.com": "prod",
            "preview-cps.cps.intel.com": "day1",
            "www.intel.com": "prod"
        };

        return ((urlMap[window.location.hostname.toLowerCase()]) ?
                this.urls[urlMap[window.location.hostname]] :
                this.urls.prod);
    }
};

rlFASTDataFieldMap = {
    assetId              : 0,
    objectName           : 1,
    title                : 2,
    description          : 3,
    assetUrl             : 4,
    thumbnailUrl         : 5,
    presentationAssetUrl : 6,
    previewassetUrl      : 7,
    changeDate           : 8,
    resourceType         : 9,
    language             : 10,
    relatedProduct       : 11,
    relatedTopic         : 12,
    formFactor           : 13,
    processStage         : 14,
    fileSize             : 15,
    businessSize         : 16,
    industry             : 16,
    template             : 18,
    folderPaths          : 19,
    nasDownloadLink      : 20,
    htttpDownloadLink    : 21
};

// JSONDataProvider setup.
(function() {
    var widgetDelegate = function() {
        var widgetName, url, qs, widgetMethods, sortVar, firstLoad;

        widgetName = "jsonWidget";
        url = itcenter_urls.getUrl() + '/JSONDataFrame.htm';
        jQuery[widgetName] = {
            readyInitialize: function(widget) {
                if (!this.callBacks) {
                    this.callBacks = [];
                }

                this.getJSON = function(request, callBack) {
                    if (this.callBacks[request.key]) {
                        delete this.callBacks[request.key];
                    }
                    this.callBacks[request.key] = callBack; // Store the callback.
                    INTEL.widget.message(widget, request); // Issue the request
                };

                rlFASTData.getRevisedFilterData = function() {

                    qs = rlFASTData.getQueryString("getrevisedfilterdata");
                    widgetMethods = jQuery[widgetName];

                    ResourceBrowser.facets.changeActiveFacet();

                    if (jQuery.browser.msie && jQuery.browser.version === "6.0") {
                        jQuery("#filters-loading").css("height", ((jQuery(".mod-resource-lib-tabs").height() - 10) + "px"));
                    }
                    else {
                        jQuery("#filters-loading").css("height", ((jQuery(".mod-resource-lib-tabs").height() - 25) + "px"));
                    }

                    ResourceBrowser.Builder.showFiltersLoading();

                    if (qs) {
                        widgetMethods.getJSON({ key: "loadrequest", request: { dataType: "json", type: "GET", methodname: "getrevisedfilteroptions", selectedfilters: qs, lang: ResourceBrowser.filterLanguage} }, function(data) {
                            rlFASTData.filterData = data;
                            rlFASTData.populateFilters("filterData");
                        });
                    }
                    else {
                        widgetMethods.getJSON({ key: "loadrequest", request: { dataType: "json", type: "GET", methodname: "getrevisedfilteroptions", lang: ResourceBrowser.filterLanguage} }, function(data) {
                            rlFASTData.filterData = data;
                            rlFASTData.populateFilters("filterData");
                        });
                    }
                };

                rlFASTData.getAssets = function() {

                    ResourceBrowser.Builder.hideFiltersLoading();

                    qs = rlFASTData.getQueryString("getassets");
                    widgetMethods = jQuery[widgetName];
                    firstLoad = false;

                    ResourceBrowser.Builder.showResultsLoading();
                    ResourceBrowser.pagination.currentPage = 1;
                    ResourceBrowser.pagination.currentPageSet = 1;

                    if (!rlFASTData.resultsData) {
                        firstLoad = true;
                    }

                    if (qs) {
                        sortVar = rlFASTData.dateSortDirection;
                        widgetMethods.getJSON({ key: "loadrequest", request: { dataType: "json", type: "GET", methodname: "getassets", selectedfilters: qs, lang: ResourceBrowser.filterLanguage, sortby: rlFASTData.sortBy, sortdir: sortVar} }, function(data) {
                            rlFASTData.resultsData = data;

                            ResourceBrowser.facets.changeActiveFacet();

                            if (!rlFASTData.resultsData.Results || !rlFASTData.resultsData.Results.Resultset) {
                                rlFASTData.resultsData.Results = {};
                                rlFASTData.resultsData.Results.Resultset = [];
                            }

                            rlFASTData.resultCount = rlFASTData.resultsData.Results.Resultset.length;
                            rlFASTData.populateResults();

                            if (firstLoad) {
                                rlFASTData.populateFilters("resultsData");
                            }

                            if (rlFASTData.resultsData.Results) {
                                rlFASTData.resultCount = rlFASTData.resultsData.Results.Resultset.length;
                            }
                            else {
                                rlFASTData.resultCount = 0;
                                return;
                            }
                            jQuery("#rlPaginationLabelY").text(rlFASTData.resultCount);
                        });
                    }
                    else {
                        sortVar = rlFASTData.dateSortDirection;
                        widgetMethods.getJSON({ key: "loadrequest", request: { dataType: "json", type: "GET", methodname: "getassets", lang: ResourceBrowser.filterLanguage, sortby: rlFASTData.sortBy, sortdir: sortVar} }, function(data) {
                            rlFASTData.resultsData = data;
                            rlFASTData.populateFilters("resultsData");
                            rlFASTData.populateResults();
                        });
                    }
                };

                rlFASTData.getAssetsWithPanel = function() {
                    qs = rlFASTData.getQueryString("getassets");
                    widgetMethods = jQuery[widgetName];

                    ResourceBrowser.Builder.showResultsLoading();
                    ResourceBrowser.pagination.currentPage = 1;
                    ResourceBrowser.pagination.currentPageSet = 1;

                    if (qs) {
                        sortVar = rlFASTData.dateSortDirection;
                        widgetMethods.getJSON({ key: "loadrequest", request: { dataType: "json", type: "GET", methodname: "getassets", selectedfilters: qs, lang: ResourceBrowser.filterLanguage, sortby: rlFASTData.sortBy, sortdir: sortVar} }, function(data) {
                            rlFASTData.resultsData = data;

                            ResourceBrowser.facets.changeActiveFacet();

                            if (!rlFASTData.resultsData.Results || !rlFASTData.resultsData.Results.Resultset) {
                                rlFASTData.resultsData.Results = {};
                                rlFASTData.resultsData.Results.Resultset = [];
                            }

                            rlFASTData.resultCount = rlFASTData.resultsData.Results.Resultset.length;
                            rlFASTData.populateResults();

                            if (rlFASTData.resultsData.Results) {
                                rlFASTData.resultCount = rlFASTData.resultsData.Results.Resultset.length;
                            }
                            else {
                                rlFASTData.resultCount = 0;
                                return;
                            }
                            jQuery("#rlPaginationLabelY").text(rlFASTData.resultCount);
                        });
                    }
                    else {
                        sortVar = rlFASTData.dateSortDirection;
                        widgetMethods.getJSON({ key: "loadrequest", request: { dataType: "json", type: "GET", methodname: "getassets", lang: ResourceBrowser.filterLanguage, sortby: rlFASTData.sortBy, sortdir: sortVar} }, function(data) {
                            rlFASTData.resultsData = data;
                            rlFASTData.populateFilters("resultsData");
                            rlFASTData.populateResults();
                        });
                    }
                    ResourceBrowser.caseStudies.showCaseStudiesPanel();
                };

                ResourceBrowser.init();
            },
            onmessage: function(data, widget) {
                if (widget && this.callBacks && this.callBacks[data.key]) {// When the data is received this handles dispatching the response to the appropriate callback.
                    this.callBacks[data.key](data.response);  // execute the callback.
                    // clear the callback for this request.
                    delete this.callBacks[data.key];
                }
                return data;
            }
        };
        INTEL.widget({ container: "#" + widgetName,
            src: url,
            proxy: "/itcenter/proxy.htm",
            name: widgetName
        });
    }

    INTEL("widget", widgetDelegate);
})();

//********************************************************************/
// ResourceBrowser - base class and utility for working with FastData
// and accessing and working with cookies.
// In itecenter, cookies serve as the main data repository.
//********************************************************************/
var ResourceBrowser = {
    config:
    {
        animationSpeed: 750,
        panelHeight: 630,
        facetsCount: 5,
        dataFrameUrl: ""
    },
    caseStudies:
    {
        hideCaseStudiesPanel: function() {
            if (jQuery.browser.msie && jQuery.browser.version === "6.0") {
                jQuery("#filterCaseStudies").css("left", "-7000px");
            }
            else {
                jQuery("#filterCaseStudies").hide();
            }
        },
        showCaseStudiesPanel: function() {
            if (jQuery.browser.msie && jQuery.browser.version === "6.0") {
                jQuery("#filterCaseStudies").css("left", "6px");
                jQuery("#rlIndustrySelect").css("left", "0px");
                jQuery("#rlBusinessSizeSelect").css("left", "0px");
                jQuery("#rlIndustrySelect").css("top", "20px");
                jQuery("#rlBusinessSizeSelect").css("top", "20px");
            }

            jQuery("#filterCaseStudies").css('height', jQuery("#fragment-a-4").height() + "px");
            jQuery("#filterCaseStudies").show();
        }
    },
    deeplink:
    {
        autoExpand: function() {
            var url, deeplink;
            url = location.href;
            deeplink = url.split('#');

            if (deeplink.length > 1 && (deeplink[1] === 'library')) {
                return true;
            }
            else {
                return false;
            }
        }
    },
    pagination:
    {
        pageSize: 15,
        currentPage: 1,
        pageCount: 1,
        pageSets: 1,
        currentPageSet: 1,
        goToPage: function(pageNumber) {
            var selector;
            if (pageNumber === this.pageCount) {
                jQuery("#rl-pagination-next").unbind("click");
                jQuery("#rl-pagination-next").css("color", "#555555");

                if (this.pageCount > 1) {
                    jQuery("#rl-pagination-previous").unbind("click");
                    jQuery("#rl-pagination-previous").css("color", "#0860A8");
                    jQuery("#rl-pagination-previous").click(
                        function() {
                            ResourceBrowser.pagination.goToPreviousPage();
                        });
                }
            }
            else if (pageNumber === 1) {
                if (this.pageCount > 1) {
                    jQuery("#rl-pagination-next").unbind("click");
                    jQuery("#rl-pagination-next").css("color", "#0860A8");
                    jQuery("#rl-pagination-next").click(
                        function() {
                            ResourceBrowser.pagination.goToNextPage();
                        });
                }
                jQuery("#rl-pagination-previous").unbind("click");
                jQuery("#rl-pagination-previous").css("color", "#555555");
            }
            else {
                if (this.pageCount > 1) {
                    jQuery("#rl-pagination-next").unbind("click");
                    jQuery("#rl-pagination-next").css("color", "#0860A8");
                    jQuery("#rl-pagination-next").click(
                        function() {
                            ResourceBrowser.pagination.goToNextPage();
                        });
                }
                jQuery("#rl-pagination-previous").unbind("click");
                jQuery("#rl-pagination-previous").css("color", "#0860A8");
                jQuery("#rl-pagination-previous").click(
                    function() {
                        ResourceBrowser.pagination.goToPreviousPage();
                    });
            }

            selector = "#rl-pagination-page-" + pageNumber;
            jQuery("#rl-pagination-pages").children().each(
                function() {
                    jQuery(this).removeClass("rlActivePage");
                });

            jQuery(selector).addClass("rlActivePage");

            ResourceBrowser.pagination.currentPage = pageNumber;

            jQuery(".rl-downloads-cont").scrollTop(0);
            rlFASTData.populateResults();

        },
        changePageSet: function(action) {
            if (action === "increase") {
                ResourceBrowser.pagination.currentPageSet = ResourceBrowser.pagination.currentPageSet + 1;
            }
            else {
                ResourceBrowser.pagination.currentPageSet = ResourceBrowser.pagination.currentPageSet - 1;
            }

            ResourceBrowser.pagination.currentPage = (ResourceBrowser.pagination.currentPageSet - 1) + 5;
        },
        changePageSetSize: function() {
            var dividend;
            if ((ResourceBrowser.pagination.pageCount % 5) > 0) {
                dividend = (ResourceBrowser.pagination.pageCount / 5) + 1;
                dividend = dividend.toString();
                dividend = dividend.substring(0, dividend.indexOf('.'));
                dividend = parseInt(dividend, 10);

                ResourceBrowser.pagination.pageSets = dividend;
            }
            else {
                ResourceBrowser.pagination.pageSets = (ResourceBrowser.pagination.pageCount / 5);
            }
        },
        buildPagination: function() {
            var dividend, remainder, output, terminal, index;
            dividend = rlFASTData.resultCount / this.pageSize;
            remainder = rlFASTData.resultCount % this.pageSize;
            output = "";
            terminal = 0;

            if (remainder === 0) {
                this.pageCount = rlFASTData.resultCount / this.pageSize;
                this.pageCount = this.pageCount === 0 ? 1 : this.pageCount;
            }
            else {
                dividend = rlFASTData.resultCount / this.pageSize;
                dividend = dividend.toString();
                dividend = dividend.substring(0, dividend.indexOf('.'));
                dividend = parseInt(dividend, 10);
                dividend = dividend + 1;
                this.pageCount = dividend;
            }

            ResourceBrowser.pagination.changePageSetSize();

            if (this.pageCount === 1) {
                jQuery("#rl-pagination-previous").hide();
                jQuery("#rl-pagination-next").hide();
            }
            else {
                jQuery("#rl-pagination-previous").show();
                jQuery("#rl-pagination-next").show();
            }

            if (this.currentPageSet > 1) {
                output += '<li id="rlPreviousPageSet">...</li>';
            }

            if (this.pageCount > 4) {
                if (this.currentPageSet === this.pageSets) {
                    terminal = this.pageCount;
                }
                else {
                    terminal = (this.currentPageSet * 5);
                }
            }
            else {
                terminal = this.pageCount;
            }

            for (index = ((this.currentPageSet * 5) - 4); index <= terminal; index = index + 1) {
                if (index === this.currentPage) {
                    output += '<li class="rlPageNumber rlActivePage" id="rl-pagination-page-' + index + '">' + index + '</li>';
                }
                else {
                    output += '<li class="rlPageNumber" id="rl-pagination-page-' + index + '">' + index + '</li>';
                }
            }

            if (this.currentPageSet < this.pageSets) {
                output += '<li id="rlNextPageSet">...</li>';
            }
            if (this.currentPage === this.pageCount) {
                jQuery("#rl-pagination-next").css("color", "#555555");
                jQuery("#rl-pagination-next").unbind("click");
                jQuery("#rl-pagination-next").removeClass('rl-active');
            }
            else {
                if (this.currentPage === 1) {
                    jQuery("#rl-pagination-previous").css("color", "#555555");
                    jQuery("#rl-pagination-previous").unbind("click");
                    jQuery("#rl-pagination-previous").removeClass('rl-active');
                }
                else {
                    jQuery("#rl-pagination-previous").addClass('rl-active');
                }
                jQuery("#rl-pagination-next").css("color", "#0860A8");
                jQuery("#rl-pagination-next").click(function() {
                    ResourceBrowser.pagination.goToNextPage();
                });
                jQuery("#rl-pagination-next").addClass('rl-active');
            }

            jQuery("#rl-pagination-pages").html(output);

            jQuery("#rlNextPageSet").unbind('click');
            jQuery("#rlNextPageSet").click(
            function() {
                ResourceBrowser.pagination.changePageSet('increase');
                ResourceBrowser.pagination.goToPage((ResourceBrowser.pagination.currentPageSet * 5) - 4);
            });

            jQuery("#rlPreviousPageSet").unbind('click');
            jQuery("#rlPreviousPageSet").click(function() {
                ResourceBrowser.pagination.changePageSet('decrease');
                ResourceBrowser.pagination.goToPage((ResourceBrowser.pagination.currentPageSet * 5) - 4);
            });
            jQuery(".rlPageNumber").each(function() {
                var color, addUnderline;
                jQuery(this).unbind("mouseover");
                jQuery(this).unbind("mouseout");

                color = jQuery(this).css('color');
                addUnderline = (color !== "#555555" && color !== "rgb(85, 85, 85)");
                if (addUnderline) {
                    jQuery(this).mouseover(function() {
                        jQuery(this).css("text-decoration", "underline");
                    });
                    jQuery(this).mouseout(function() {
                        jQuery(this).css("text-decoration", "none");
                    });
                }

                jQuery(this).click(function() {
                    var id, index;
                    id = jQuery(this).attr("id");
                    index = id.lastIndexOf('-') + 1;
                    id = parseInt(id.substring(index), 10);
                    ResourceBrowser.pagination.goToPage(id);
                });
            });

        },

        goToNextPage: function() {
            var temp;
            if (this.pageSets > 1 && this.currentPageSet !== this.pageSets) {
                temp = this.currentPage;
                if (this.currentPage === (this.currentPageSet * 5)) {
                    this.changePageSet('increase');
                    this.currentPage = temp;
                }
                else {
                    this.goToPage(this.currentPage + 1);
                }
            }
            else {
                this.goToPage(this.currentPage + 1);
            }
        },

        goToPreviousPage: function() {
            var temp = this.currentPage;

            if (this.pageSets > 1 && this.currentPageSet !== 1) {
                if (this.currentPage === ((this.currentPageSet * 5) - 4)) {
                    this.changePageSet('decrease');
                    this.currentPage = temp;
                    this.goToPage(this.currentPage - 1);
                }
                else {
                    this.goToPage(this.currentPage - 1);
                }
            }
            else {
                this.goToPage(this.currentPage - 1);
            }
        },

        changePageSize: function(newSize, updateResults) {
            var element, pageSize, oldSize, counter;
            element = "#rl-pagination-" + newSize;
            oldSize = ResourceBrowser.pagination.pageSize;

            jQuery(".rl-view").children().each(function() {
                if (jQuery(this).hasClass("rl-view-btn-on")) {
                    jQuery(this).removeClass("rl-view-btn-on");
                    jQuery(this).addClass("rl-view-btn-off");
                }
            });
            jQuery(element).removeClass("rl-view-btn-off");
            jQuery(element).addClass("rl-view-btn-on");

            ResourceBrowser.pagination.pageSize = newSize;
            ResourceBrowser.pagination.currentPage = 1;
            ResourceBrowser.pagination.currentPageSet = 1;

            if (updateResults) {
                if (ResourceBrowser.pagination.pageSize < oldSize) {
                    pageSize = ResourceBrowser.pagination.pageSize;
                    counter = 0;
                    jQuery(".rl-downloads-item").each(function() {
                        if (counter === pageSize) {
                            jQuery(this).remove();
                        }
                        else {
                            counter = counter + 1;
                        }
                    });
                    rlFASTData.populateResults();
                }
                else {
                    rlFASTData.populateResults();
                }
            }

            rlFASTData.updateResultCount();
        }
    },

    translate:
    {
        staticLabels: function() {
            var key;
            for (key in rlTranslations[ResourceBrowser.documentLanguage].staticLabels) {
                if (rlTranslations[ResourceBrowser.documentLanguage].staticLabels.hasOwnProperty(key)) {
                    jQuery("#" + key).html(rlTranslations[ResourceBrowser.documentLanguage].staticLabels[key]);
                }
            }
        },
        dynamicLabels: function(IN_classToTranslate) {
            var selector = "." + IN_classToTranslate;
            jQuery(selector).html(rlTranslations[ResourceBrowser.documentLanguage].dynamicLabels[IN_classToTranslate]);
        },
        item: function(IN_termToTranslate) {
            return rlTranslations[ResourceBrowser.documentLanguage].dynamicLabels[IN_termToTranslate];
        }
    },

    previewModal:
    {
        close: function() {
            jQuery('#rl-preview1-modal').fadeOut('fast');
            jQuery('.preview-add-wrap').children(':first').css('display', 'none');
        },
        show: function() {
            jQuery('#rl-preview1-modal').fadeIn('medium');
            jQuery('.preview-add-wrap').children(':first').css('display', 'block');
        }
    },

    init: function() {
        var rlHeaderBackgroundAttr;
        /* Detect ie6 */
        if (jQuery.browser.msie && jQuery.browser.version === "6.0") {
            this.isIE6 = true;
        }

        jQuery.ajaxSetup({ error: function() {
            ResourceBrowser.status.errorRetrievingResults = true;
        }
        });

        //detect the lang element of the html tag, if not present set to en_us
        this.documentLanguage = (document.documentElement.lang === "" ? "en_us" : document.documentElement.lang.toLowerCase());

        // Set the filterLanguage - if there is an override in the translations file, use that otherwise use the documentLanguage
        this.filterLanguage = (rlTranslations[ResourceBrowser.documentLanguage].filterLanguage) ?
                              rlTranslations[ResourceBrowser.documentLanguage].filterLanguage.toLowerCase() :
                              this.documentLanguage;

        /* Load the correct Resource Library tab image */
        rlHeaderBackgroundAttr = "transparent url(" + rlTranslations[ResourceBrowser.documentLanguage].staticLabels.rlTitleTabUrl + ") no-repeat scroll 0 0";
        jQuery(".rl-header").css("background", rlHeaderBackgroundAttr);

        /* Expand RL automatically if url ends with '#library' deeplink */
        if (ResourceBrowser.deeplink.autoExpand() === true) {
            ResourceBrowser.panels.showPanel('itc-rl-panel');
        }

        /* Localise all static labels */
        this.translate.staticLabels();

        /* Load the default filters */
        ResourceBrowser.filters.addDefaultFilters();

        rlFASTData.getAssets();

        jQuery("#clearFiltersButton").click(function() {
            ResourceBrowser.filters.removeAllFilters();
        });

        jQuery(".rlLegalNotice").text(ResourceBrowser.translate.item('rlLegalNotice'));
        jQuery(".rlLegalText").html(rlTranslations[lang].staticLabels['itc-tos-rl']);
        jQuery(".rlTou").attr("href", ResourceBrowser.translate.item('itcTouHref')).text(ResourceBrowser.translate.item('rlTou'));
        jQuery(".rlTrademark").attr("href", ResourceBrowser.translate.item('itcTrademarkHref')).text(ResourceBrowser.translate.item('rlTrademark'));
        jQuery(".rlPrivacy").attr("href", ResourceBrowser.translate.item('itcPrivacyHref')).text(ResourceBrowser.translate.item('rlPrivacy'));

        // add toggle behavior to 'cmd-box1-outer'
        jQuery('#cmd-box1-outer, #rl-header').click(function() {
            ResourceBrowser.panels.showPanel('itc-rl-panel');
            ResourceBrowser.previewModal.close();
            jQuery('#error-display-container').css('display', 'none');

            return false;
        });

        /* a clickable element with an id of 'show-rl-panel'
        on the page containing the IT Center Resource Library(RL)
        expands the RL panel (same as above)  */
        jQuery('#show-rl-panel').click(function() {
            ResourceBrowser.panels.showPanel('itc-rl-panel');
            return false;
        });

        jQuery("#itcIntroClose").click(function() {
            jQuery("#itcIntro").hide();
        });

        /* close error display sub-panel */
        jQuery('.error-btn-close').click(function(e) {
            jQuery('#rl-error-display-container').hide('slow');
            e.stopPropagation();
        });

        jQuery('a.goto-lib').click(function() {
            ResourceBrowser.panels.showPanel('itc-rl-panel');
            return false;
        });

        // when we click anywhere outside any of the boxes, cause all the boxes to retract
        jQuery("#itc-panel-bg, #itc-container").click(function() {
            ResourceBrowser.panels.closeAllOpenElements();
        });

        // if we are clicking inside any of the boxes, let's stop the propagation of 'click' to the body
        jQuery("#itc-rl-panel").click(function(event) {
            event.stopPropagation();
        });

        // overwrite height specified in mod-spotlight-tabs.js
        if (jQuery.browser.msie && jQuery.browser.version === "6.0") {
            jQuery('.mod-spotlight-tabs .tab-wrapper .tab-contents').css('height', '95px');
        }
        else {
            jQuery('.mod-spotlight-tabs .tab-wrapper .tab-contents').css('min-height', '90px');
        }

        jQuery('#rl-preview1').click(function() {
            var modal = jQuery('#rl-preview1-modal');
            modal.fadeIn('medium');
            return false;
        });

        /* Bind the pagination count buttons */
        jQuery("#rl-pagination-6, #rl-pagination-15, #rl-pagination-30").click(function() {
            var temp = jQuery(this).attr("id");
            ResourceBrowser.pagination.changePageSize(parseInt(temp.substring(temp.lastIndexOf("-") + 1), 10), true);
        });

        /* Bind legal text expand/collapse */
        jQuery(".itc-tos-collapse").each(function() {
            jQuery(this).click(function() {
                var id, toolTipContainer, head;

                id = jQuery(this).attr("name");
                toolTipContainer = jQuery('#ToolTipLegalContainer');
                head = jQuery('#H1');

                if (toolTipContainer.css("display") === "none") {
                    head.text("-");
                    toolTipContainer.fadeIn();
                    toolTipContainer.click(function() {
                        head.text("+");
                        toolTipContainer.fadeOut();
                    });
                }
                else {
                    head.text("+");
                    toolTipContainer.fadeOut();
                }
            });
        });

        /* Bind date column sort */
        jQuery(".rl-downloads-header-date").click(function() {
            rlFASTData.sortBy = "itcenterchangedate";
            ResourceBrowser.caseStudies.hideCaseStudiesPanel();
            ResourceBrowser.pagination.currentPage = 1;

            if (rlFASTData.dateSortDirection === "descending") {
                jQuery("#rl-date-sort").attr("src", "/itcenter/sitewide/pix/resource-lib/icn-wht-arrow-up.gif");
                rlFASTData.dateSortDirection = "ascending";
            }
            else {
                jQuery("#rl-date-sort").attr("src", "/itcenter/sitewide/pix/resource-lib/icn-wht-arrow-down.gif");
                rlFASTData.dateSortDirection = "descending";
            }

            jQuery("#rl-date-sort").show();
            jQuery("#rl-available-sort").hide();

            rlFASTData.getAssets();
        });

        jQuery("#tab-anchor-a-1, #tab-anchor-a-2, #tab-anchor-a-3, #tab-anchor-a-4, #tab-anchor-a-5").click(function() {
            rlFASTData.getRevisedFilterData();
            if (this.id !== 'tab-anchor-a-4') {
                ResourceBrowser.caseStudies.hideCaseStudiesPanel();
            }
        });

        /* Bind case study filter button */
        jQuery("#rlCaseStudyFilter").click(function() {
            var localQuery, val, key;

            ResourceBrowser.filters.addFilter('itcenterresourcetype^Case Studies', 'Case Studies');
            localQuery = {};
            val = jQuery("#rlIndustrySelect").val();

            if (val !== "") {
                key = 'itcenterindustry^' + rlFASTData.caseStudies.itcenterindustry[val];
                ResourceBrowser.filters.addFilter(key, val);
            }

            val = jQuery("#rlBusinessSizeSelect").val();
            if (val !== "") {
                key = 'itcenterbusinesssize^' + rlFASTData.caseStudies.itcenterbusinesssize[val];
                ResourceBrowser.filters.addFilter(key, val);
            }

            ResourceBrowser.caseStudies.hideCaseStudiesPanel();
            rlFASTData.getAssets();
        });

        jQuery("#itcCaseStudyFiltersClose").click(function() {
            ResourceBrowser.Builder.setCaseStudiesFilterAndCloseSubFilters();
        });
        /* Bind close button of preview modal */
        jQuery("#preview-modal-btn-close").click(function() {
            ResourceBrowser.previewModal.close();
        });

        /* Hide the 'add' and 'download' buttons in the preview modal outside of the US */
        jQuery("#rl-preview-modal-add").hide();
        jQuery("#rl-preview-modal-download").hide();

        /* Translate the download button in the preview modal */
        jQuery("#rlDownload").text(rlTranslations[lang].staticLabels.rlView);

        ResourceBrowser.Builder.openExandedIntrolPanel();
    },

    panels:
    {
        ID: { 0: "itc-rl-panel", 1: "itc-msi-panel" },
        numericID: { "itc-rl-panel": 0, "itc-msi-panel": 1 },
        isOpen: { 0: false, 1: false },
        MSIisVisible: false,
        animatePanelOpen: function(IN_element) {
            jQuery(IN_element).animate({ 'height': ResourceBrowser.config.panelHeight }, ResourceBrowser.config.animationSpeed);
        },
        closeOpenPanel: function(numericPanelIdToClose) {
            var panelSelector = "#" + this.ID[numericPanelIdToClose];
            this.isOpen[numericPanelIdToClose] = false;
            this.showExpandButton(numericPanelIdToClose);

            jQuery(panelSelector).animate({ 'height': 59 }, ResourceBrowser.config.animationSpeed, function() {
                if (!ResourceBrowser.panels.isOpen[0] && !ResourceBrowser.panels.isOpen[1]) {
                    jQuery("#itc-panel-bg").css('display', 'none');
                }
            });
        },
        closeAllOpenElements: function() {
            var visibleModal = jQuery("#rl-preview1-modal").css("display") !== "none";

            if (jQuery.modal) {
                jQuery.modal.close(); // always close the modal
            }

            if (!visibleModal) {
                this.closeOpenPanel(0);

                if (this.MSIisVisible) {
                    this.closeOpenPanel(1);
                }
            }
            else {

                ResourceBrowser.previewModal.close();
            }
        },
        showPanel: function(panelId, disableTracking) {
            var panelSelector, panelInteriorSelector, localPanelId, rlHeaderBackgroundAttr;

            panelSelector = "#" + panelId;
            panelInteriorSelector = panelSelector + " .itc-panel-interior";
            localPanelId = this.numericID[panelId];

            if (ResourceBrowser.panels.isOpen[localPanelId] === false) {
                if (!disableTracking) {
                    if (localPanelId === 0) {
                        ResourceBrowser.Tracking.trackOpen('library');
                    }
                }

                if (ResourceBrowser.panels.isOpen[Math.abs(localPanelId - 1)]) {
                    this.closeOpenPanel(Math.abs(localPanelId - 1));   // the abs() function call guarantees we're always checking to see if the other panel is open
                    this.isOpen[Math.abs(localPanelId - 1)] = false;
                    this.showHideButton(localPanelId);
                    this.animatePanelOpen(panelSelector);
                }
                else {
                    this.showHideButton(localPanelId);
                    this.animatePanelOpen(panelSelector);
                }

                this.isOpen[localPanelId] = true;

                if (ResourceBrowser.isIE6) {
                    document.getElementById('itc-panel-bg').className = 'itc-panel-bg-ie6';
                }

                jQuery("#itc-panel-bg").css('display', 'block'); // add the overlay to background

                /* if rl panel is being opened, remove expanded tab overlays from the header tab */
                if (panelId === 'itc-rl-panel') {
                    this.removeExpandedRLHeader();
                }

                // change the expanded RL header tab image as per localization
                rlHeaderBackgroundAttr = "transparent url(" + rlTranslations[ResourceBrowser.documentLanguage].staticLabels.rlTitleTabUrl + ") no-repeat scroll 0 0";
                jQuery('.rl-header').css('background', 'none');
                jQuery('.rl-header').css('background', rlHeaderBackgroundAttr);

                jQuery('#rlFilterDesc').html(rlTranslations[ResourceBrowser.documentLanguage].staticLabels.rlFilterDescLong);
            }
            else {
                this.closeOpenPanel(localPanelId);
                jQuery('#rlFilterDesc').html(rlTranslations[ResourceBrowser.documentLanguage].staticLabels.rlFilterDesc);
            }
        },
        removeExpandedRLHeader: function() {
            jQuery('#cmd-box1-outer').css('background-image', 'none');
            jQuery('#cmd-box1-inner').css('background-image', 'none');
        },

        showHideButton: function(numericId) {
            var selector, expandClassName, closeClassName, spanSelect;

            selector = "#cmd_box" + (numericId + 1);
            expandClassName = "cmd_expanded_box" + (numericId + 1);
            closeClassName = "cmd_close_box" + (numericId + 1);
            spanSelect = "." + closeClassName + " > span";

            jQuery(selector).removeClass(expandClassName);
            jQuery(selector).addClass(closeClassName);
            jQuery(spanSelect).hide();
        },
        showExpandButton: function(numericId) {
            var selector, expandClassName, closeClassName, spanSelect;

            selector = "#cmd_box" + (numericId + 1);
            expandClassName = "cmd_expanded_box" + (numericId + 1);
            closeClassName = "cmd_close_box" + (numericId + 1);
            spanSelect = "." + expandClassName + " > span";

            jQuery(selector).removeClass(closeClassName);
            jQuery(selector).addClass(expandClassName);
            jQuery(spanSelect).show();
        }
    },

    facets:
    {
        itcenterformfactor: "rlSystemType",
        itcenterrelatedtopic: "rlTopic",
        itcenterrelatedproduct: "rlProduct",
        itcenterresourcetype: "rlResourceType",
        itcenterlanguage: "rlLanguage",
        activeFacet: "",
        facetSelections: {},
        changeActiveFacet: function() {
            var facetName, classString;
            classString = jQuery(".itc .ui-state-active > a").attr("class");
            facetName = classString.substring(0, classString.indexOf('-'));
            facetName = facetName.indexOf(' ') === -1 ? facetName : facetName.substring((facetName.indexOf(' ') + 1));
            ResourceBrowser.facets.activeFacet = facetName;
        }
    },
    filters:
    {
        currentFilters: [],
        rlFilterCount: 0,
        addFilter: function(filter, displayText) {
            var filterHtml, element;
            if (ResourceBrowser.filters.currentFilters.length < 10) {
                jQuery("#rlNoFilters").hide();
                if (jQuery.inArray(filter, this.currentFilters) === -1) {
                    this.currentFilters.push(filter);

                    ResourceBrowser.facets.facetSelections["'" + filter + "'"] = true;
                    filterHtml = "<div class=\"btn-gray-slider-wrap\" id=\"rlFilter" + this.rlFilterCount + "\" name=\"" + filter + "\">" + displayText + "<span class=\"btn-gray-slider-end\">[x]</span></div>";
                    jQuery("#rl-your-filter-wrap").append(filterHtml);

                    element = "#rlFilter" + this.rlFilterCount;
                    jQuery(element).unbind('click');
                    jQuery(element).click(function() {
                        ResourceBrowser.filters.removeFilter(filter, element);
                        rlFASTData.getAssets();
                    });
                    this.rlFilterCount = this.rlFilterCount + 1;
                    ResourceBrowser.facets.changeActiveFacet();
                }
            }
            else {
                if (filter.indexOf('itcenterindustry^') > -1 || filter.indexOf('itcenterbusinesssize^') > -1) {
                    ResourceBrowser.filters.removeCaseStudyFilterOnly();
                    if (ResourceBrowser.filters.currentFilters.length === 9) {
                        this.addFilter(filter, displayText);
                    }
                }
                ResourceBrowser.Builder.errorPopup(rlTranslations[lang].dynamicLabels.rlMaxFilterLimitError);
            }
        },

        addDefaultFilters: function() {
            var filterLanguage, stub, defaultFilters, headerText, loc, host, indexSlash, indexQuestion, key;
            filterLanguage = ResourceBrowser.filterLanguage;
            stub = filterLanguage.substring(filterLanguage.indexOf('_') + 1).toUpperCase();
            filterLanguage = filterLanguage.substring(0, filterLanguage.indexOf('_') + 1) + stub;

            // add language filter
            this.addFilter(("itcenterlanguage^" + filterLanguage), rlTranslations[ResourceBrowser.documentLanguage].staticLabels[ResourceBrowser.documentLanguage], false);

            function addDefaultPage(url) {
                var val = url.substring(url.length - 1);

                if (val === '/') {
                    return url + 'index.htm';
                }
                return url;
            }

            defaultFilters = {
                '/zh_CN/itcenter/itatintel/index.htm': function() {
                    ResourceBrowser.filters.addFilter('itcenterresourcetype^IT@Intel', 'IT@英特尔');
                    headerText = 'IT@英特尔(<span class="filterHeaderLink" href="javascript:void(0);" onclick="ResourceBrowser.filters.removeAllFilters();">' + rlTranslations[ResourceBrowser.documentLanguage].staticLabels.rlShowAllResources + '</span>)';
                    jQuery('#rlFilterSelect').html(headerText);
                }
            };

            loc = document.location.href;
            host = document.location.hostname;
            indexSlash = loc.indexOf(host) + host.length;
            indexQuestion = loc.indexOf('?');
            key = '';

            if (indexQuestion === -1) {
                key = loc.substring(indexSlash);
            }
            else {
                key = loc.substring(indexSlash, indexQuestion);
            }
            key = addDefaultPage(key);

            if (defaultFilters[key]) {
                defaultFilters[key]();
            }
        },
        removeCaseStudyFilterOnly: function() {
            var facet, facetId, selectedFacet, filter, element, elementQuery;

            elementQuery = jQuery('.btn-gray-slider-wrap[name*="itcenterresourcetype^Case Studies"]');

            if (elementQuery.length === 0) {
                return;
            }

            element = elementQuery[0];
            filter = 'itcenterresourcetype^Case Studies';
            facet = jQuery(element).attr("name").substring(0, jQuery(element).attr("name").indexOf('^'));
            facetId = filter.replace(/ /g, '');

            if (facet === 'itcenterindustry' || facet === 'itcenterbusinesssize') {
                facet = 'itcenterresourcetype';
            }

            this.currentFilters.splice(jQuery.inArray(filter, this.currentFilters), 1);
            jQuery(element).remove();
            ResourceBrowser.facets.facetSelections["'" + filter + "'"] = false;

            selectedFacet = document.getElementById(facetId);

            jQuery(selectedFacet).removeClass('rlFacetApplied').addClass('rlFacetAvailable');

            jQuery(selectedFacet).mouseover(function() {
                jQuery(selectedFacet).css("text-decoration", "underline");
            });
            jQuery(selectedFacet).mouseout(function() {
                jQuery(selectedFacet).css("text-decoration", "none");
            });

            if (this.currentFilters.length === 0) {
                jQuery("#rlNoFilters").show();
            }
        },
        removeFilter: function(filter, element) {
            var facet, facetId, selectedFacet;
            facet = jQuery(element).attr("name").substring(0, jQuery(element).attr("name").indexOf('^'));
            facetId = filter.replace(/ /g, '');

            if (facet === 'itcenterindustry' || facet === 'itcenterbusinesssize') {
                facet = 'itcenterresourcetype';
            }

            this.currentFilters.splice(jQuery.inArray(filter, this.currentFilters), 1);
            jQuery(element).remove();
            ResourceBrowser.facets.facetSelections["'" + filter + "'"] = false;

            selectedFacet = document.getElementById(facetId);

            jQuery(selectedFacet).removeClass('rlFacetApplied').addClass('rlFacetAvailable');

            jQuery(selectedFacet).mouseover(function() {
                jQuery(selectedFacet).css("text-decoration", "underline");
            });
            jQuery(selectedFacet).mouseout(function() {
                jQuery(selectedFacet).css("text-decoration", "none");
            });

            if (filter === 'itcenterresourcetype^Case Studies') {
                this.removeCaseStudySubFilters();
                ResourceBrowser.caseStudies.hideCaseStudiesPanel();
            }

            if (this.currentFilters.length === 0) {
                jQuery("#rlNoFilters").show();
            }

            rlFASTData.populateFilters();
        },
        removeCaseStudySubFilters: function() {
            jQuery("#rl-your-filter-wrap").children().each(function() {
                var name = jQuery(this).attr("name");

                if (name && (name.indexOf("itcenterindustry") > -1 || name.indexOf("itcenterbusinesssize") > -1)) {
                    ResourceBrowser.filters.currentFilters.splice(jQuery.inArray(name, ResourceBrowser.filters.currentFilters), 1);
                    jQuery("#" + this.id).remove();
                }
            });
        },
        removeAllFilters: function() {
            var key;
            for (key in ResourceBrowser.facets.facetSelections) {
                if (ResourceBrowser.facets.facetSelections.hasOwnProperty(key)) {
                    ResourceBrowser.facets.facetSelections[key] = false;
                }
            }

            this.currentFilters = [];

            jQuery('#rl-your-filter-wrap').children().each(function() {
                if ((jQuery(this).attr("id") !== 'rlNoFilters') && !(jQuery(this).hasClass('rl-filter-label'))) {
                    jQuery(this).remove();
                }
            });

            jQuery("#rlNoFilters").show();
            ResourceBrowser.Builder.showFiltersLoading();
            rlFASTData.getAssets();
        }
    },
    status:
    {
        errorRetrievingResults: false
    },
    introHasBeenShown: false,
    documentLanguage: "",
    filterLanguage: "",
    isIE6: false
};

rlFASTData =
{
    assetTitleLength: 68,
    assetDescriptionLength: 95,
    provider: "",
    resultsData: null,
    filterData: null,
    resultCount: 0,
    facetCounter: 0,
    sortBy: "itcenterchangedate",
    dateSortDirection: "descending",
    // added for media player integration ***********************************************
    mediaPlayerExtensions: { "JPG": true, "PNG": true, "GIF": true, "SWF": true, "FLV": true, "MP4": true, "MOV": true, "MP3": true, "FLA": true },
    mediaPlayerAudioExtensions: { "MP3": true, "FLA": true },
    mediaPlayerVideoExtensions: { "FLV": true, "MP4": true, "MOV": true },
    mediaPlayerImageExtensions: { "JPG": true, "PNG": true, "GIF": true, "SWF": true },
    mediaPlayerYouTubeVideoUrl: "http://www.youtube.com",
    // added for media player integration ***********************************************
    caseStudies:
    {
        itcenterbusinesssize: null,
        itcenterindustry: null
    },
    updateResultCount: function () {
        var firstItem, lastItem;
        if (this.resultCount === 0) {
            jQuery("#rlPaginationLabelX").text("0");
            jQuery("#rlPaginationLabelY").text("0");
        }
        else if (this.resultCount > ResourceBrowser.pagination.pageSize) {
            firstItem = 1;
            lastItem = ResourceBrowser.pagination.pageSize;
            jQuery("#rlPaginationLabelX").text(firstItem + "-" + lastItem);
            jQuery("#rlPaginationLabelY").text(this.resultCount);
        }
        else {
            firstItem = 1;
            lastItem = this.resultCount;
            jQuery("#rlPaginationLabelX").text(firstItem + "-" + lastItem);
            jQuery("#rlPaginationLabelY").text(this.resultCount);
        }
    },
    buildFacetListItem: function (facetName, selectionId, selectionName, count, status) {
        var availableClass, facetAndSelection, id, re;

        if (selectionId === "Case Studies") {
            availableClass += " rlCaseStudies ";
        }

        if (count > 0) {
            facetAndSelection = facetName + "^" + selectionId;
            if (ResourceBrowser.facets.facetSelections["'" + facetAndSelection + "'"]) {
                availableClass = " rlFacetApplied";
            }
            else {
                availableClass = " rlFacetAvailable";
            }
        }

        id = facetName + "^" + selectionId;
        re = /( )/g;
        id = id.replace(re, '');

        return "<li name=\"" + facetName + "^" + selectionId + "\" id=\"" + id + "\" class=\"rlFacet" + availableClass + "\">" + selectionName + "</li>";
    },
    getQueryString: function (method) {
        var queryString, length, facets, index, facet, selection, filter, addPipe,
        key, carrotIndex, filterSeparator, filterValueSeparator, facetSeparator;

        filterSeparator = '^';
        filterValueSeparator = ',';
        facetSeparator = '|';
        queryString = '';
        length = ResourceBrowser.filters.currentFilters.length;
        facets = { itcenterformfactor: { isPresent: false, filterString: "" }, itcenterrelatedtopic: { isPresent: false, filterString: "" }, itcenterrelatedproduct: { isPresent: false, filterString: "" }, itcenterresourcetype: { isPresent: false, filterString: "" }, itcenterlanguage: { isPresent: false, filterString: "" }, itcenterbusinesssize: { isPresent: false, filterString: "" }, itcenterindustry: { isPresent: false, filterString: ""} };

        for (index = 0; index < length; index = index + 1) {
            filter = ResourceBrowser.filters.currentFilters[index];
            carrotIndex = filter.indexOf(filterSeparator);
            facet = filter.substring(0, carrotIndex);
            selection = filter.substring((carrotIndex + 1));

            if (facet && !facets[facet].isPresent) {
                facets[facet].filterString = facet + filterSeparator + selection;
                facets[facet].isPresent = true;
            }
            else if (facet) {
                facets[facet].filterString += filterValueSeparator + selection;
            }
        }

        addPipe = false;
        key = '';
        for (key in facets) {
            if (facets[key].isPresent) {
                if (addPipe) {
                    queryString += facetSeparator + facets[key].filterString;
                }
                else {
                    queryString += facets[key].filterString;
                    addPipe = true;
                }
            }
        }

        return queryString;
    },
    populateFilters: function (sourceObject, showCaseStudyFilters) {
        var casestudy, csIsActive, csIsApplied, dataObject, dataItem, dataItemModifier,
        facetCount, outputHtml, dataIndex, modifierIndex, tabSelector, label, facet, caseStudyItem;

        casestudy = {};
        csIsActive = false;
        csIsApplied = false;
        dataObject = null;

        // clear out the case studies select lists first; putting these functions inline with the population is flaky because of the slowness in accessing the dom 
        jQuery("#rlBusinessSizeSelect").empty();
        jQuery("#rlIndustrySelect").empty();

        if (sourceObject === "resultsData") {
            dataObject = rlFASTData.resultsData.Facets;
            if (rlFASTData.resultsData.Results) {
                rlFASTData.resultCount = rlFASTData.resultsData.Results.Resultset.length;
            }
            else {
                rlFASTData.resultCount = 0;
                return;
            }
        }
        else {
            dataObject = rlFASTData.filterData;
        }

        if (!dataObject) {
            dataObject = [];
        }

        for (dataIndex = 0; dataIndex < dataObject.length; dataIndex = dataIndex + 1) {
            facetCount = 0;
            dataItem = dataObject[dataIndex];

            if (ResourceBrowser.facets[dataItem.Name] !== undefined) {
                outputHtml = "<ul>";
                for (modifierIndex = 0; modifierIndex < dataItem.Modifiers.length; modifierIndex = modifierIndex + 1) {
                    this.facetCounter = this.facetCounter + 1;
                    dataItemModifier = dataItem.Modifiers[modifierIndex];

                    if (modifierIndex !== 0 && modifierIndex % 5 === 0) {
                        outputHtml += "</ul><ul>" + this.buildFacetListItem(dataItem.Name, dataItemModifier.Id, dataItemModifier.Name, dataItemModifier.Count, dataItemModifier.Status);
                    }
                    else {
                        outputHtml += this.buildFacetListItem(dataItem.Name, dataItemModifier.Id, dataItemModifier.Name, dataItemModifier.Count, dataItemModifier.Status);
                    }
                }
                outputHtml += '</ul><span class="cleaner"></span>';

                tabSelector = "." + dataItem.Name + "-label";
                label = ResourceBrowser.facets[dataItem.Name];

                jQuery(tabSelector).html(rlTranslations[ResourceBrowser.documentLanguage].staticLabels[label]);
                jQuery("." + dataItem.Name).html(outputHtml);
            }
            else if (dataItem.Name === 'itcenterbusinesssize' || dataItem.Name === 'itcenterindustry') {
                facet = dataItem.Name;
                caseStudyItem = {};

                if (dataItem.Name === 'itcenterbusinesssize') {
                    jQuery('#rlBusinessSizeSelect').append('<option selected value="">' + rlTranslations[ResourceBrowser.documentLanguage].staticLabels.rlAll + '</option>');
                }
                else {
                    jQuery('#rlIndustrySelect').append('<option selected value="">' + rlTranslations[ResourceBrowser.documentLanguage].staticLabels.rlAll + '</option>');
                }

                for (modifierIndex = 0; modifierIndex < dataItem.Modifiers.length; modifierIndex = modifierIndex + 1) {
                    dataItemModifier = dataItem.Modifiers[modifierIndex];

                    if (dataItemModifier.Count > 0) {
                        if (dataItem.Name === 'itcenterbusinesssize') {
                            if (dataItemModifier.Status !== "applied") {
                                jQuery('#rlBusinessSizeSelect').append('<option name="itcenterbusinesssize^' + dataItemModifier.Id + '">' + dataItemModifier.Name + '</option>');
                            }
                            else {
                                jQuery('#rlBusinessSizeSelect').append('<option name="itcenterbusinesssize^' + dataItemModifier.Id + '" selected="selected">' + dataItemModifier.Name + '</option>');
                                csIsApplied = true;
                            }
                        }
                        else {
                            if (dataItemModifier.Status !== "applied") {
                                jQuery('#rlIndustrySelect').append('<option name="itcenterindustry^' + dataItemModifier.Id + '">' + dataItemModifier.Name + '</option>');
                            }
                            else {
                                jQuery('#rlIndustrySelect').append('<option name="itcenterindustry^' + dataItemModifier.Id + '" selected="selected">' + dataItemModifier.Name + '</option>');
                                csIsApplied = true;
                            }
                        }

                        if (!csIsActive) {
                            csIsActive = true;
                        }

                        caseStudyItem[dataItemModifier.Name] = dataItemModifier.Id;
                    }
                }
            }
            this.caseStudies[dataItem.Name] = caseStudyItem;
        }

        jQuery("#rlPaginationLabelY").text(this.resultCount);

        ResourceBrowser.caseStudies.hideCaseStudiesPanel();

        jQuery(".rlFacetAvailable").each(function () {

            jQuery(this).mouseover(function () {
                jQuery(this).css("text-decoration", "underline");
            });
            jQuery(this).mouseout(function () {
                jQuery(this).css("text-decoration", "none");
            });
            jQuery(this).click(function () {
                var name;
                if (ResourceBrowser.filters.currentFilters.length < 10) {
                    name = jQuery(this).attr("name");
                    jQuery(this).removeClass('rlFacetAvailable').addClass('rlFacetApplied').unbind('mouseover').unbind('mouseout').css('text-decoration', 'none');
                    ResourceBrowser.filters.addFilter(name, jQuery(this).text());
                    if (name === 'itcenterresourcetype^Case Studies') {
                        // Add this method to build options panel on callback
                        rlFASTData.getAssetsWithPanel();
                        return;
                    }
                    rlFASTData.getAssets();
                }
                else {
                    ResourceBrowser.Builder.errorPopup(rlTranslations[lang].dynamicLabels.rlMaxFilterLimitError);
                }
            });
        });

        ResourceBrowser.Builder.hideFiltersLoading();

        if (showCaseStudyFilters === true) {
            ResourceBrowser.caseStudies.showCaseStudiesPanel();
        }
    },
    bindPreviewModals: function () {
        var name, id, result;
        jQuery('.rl-preview').each(function () {
            jQuery(this).unbind('click');
            jQuery(this).click(function () {
                name = jQuery(this).attr("name");
                id = parseInt(name.substring(name.indexOf("-") + 1), 10);
                result = rlFASTData.resultsData.Results.Resultset[id].result;
                ResourceBrowser.Builder.buildPreviewModal(result);
            });
        });
    },
    convertDate: function (IN_date) {
        var localDate = IN_date.substr(0, IN_date.indexOf("T"));
        localDate = localDate.split("-");

        if (ResourceBrowser.documentLanguage !== "en_us") {
            return (localDate[2] + "/" + localDate[1] + "/" + localDate[0]);
        }
        else {
            return (localDate[1] + "/" + localDate[2] + "/" + localDate[0]);
        }
    },
    shortenAssetTitle: function (longText) {
        return this.shortenString(longText, this.assetTitleLength);
    },
    shortenAssetDescription: function (longText) {
        return this.shortenString(longText, this.assetDescriptionLength);
    },
    shortenString: function (longText, textLength) {
        var outString;
        if (longText === null || longText === undefined) {
            return 'null';
        }
        if (longText.length > textLength) {
            outString = longText.substring(0, textLength);
            outString = outString.substring(0, outString.lastIndexOf(' ')) + "...";
            return outString;
        }
        else {
            return longText;
        }
    },
    getResultSetValue: function (resultSet, fieldIndex, shortenValue) {
        var resultVal, value;
        resultVal = resultSet[fieldIndex];
        value = null;

        if (resultVal && resultVal.Value) {
            value = resultVal.Value.replace("'", escape("'"));
            if (shortenValue === true) {
                return this.shortenString(value);
            }
            return value;
        }
        else {
            return null;
        }
    },

    getResultSet: function (resultSetIndex) {
        return rlFASTData.resultsData.Results.Resultset[resultSetIndex].result;
    },

    isDownloadableAsset: function (extension) {
        if (extension) {
            if (extension.indexOf("COM") > -1) {
                return false;
            }
            else if (extension.indexOf("HTM") > -1) {
                return false;
            }
            else if (extension.indexOf("HTML") > -1) {
                return false;
            }
            else if (extension.indexOf("FLA") > -1) {
                return false;
            }
            else {
                return true;
            }
        }
        else {
            return false;
        }
    },
    isDownloadableUrl: function (downloadUrl) {
        return !this.isWebPage(downloadUrl);
    },
    isUMPAsset: function (assetUrl) {
        return assetUrl.indexOf("rtmp://") > -1 || assetUrl.indexOf(this.mediaPlayerYouTubeVideoUrl, 0) > -1;
    },
    isWebPage: function (extension) {
        if (extension) {
            if (extension.indexOf("COM") > -1) {
                return true;
            }
            else if (extension.indexOf("HTM") > -1) {
                return true;
            }
            else if (extension.indexOf("HTML") > -1) {
                return true;
            }
            else if (extension.indexOf("FLA") > -1) {
                return true;
            }
            else {
                return false;
            }
        }
        else {
            return false;
        }
    },
    populateResults: function () {
        var pageSize, resultSetCount, startItem, endItem, changeDate, linkText, pageUrl, trackingEvent,
        extension, trimmedExtension, assetUrl, downloadUrl, isDownloadable, isMediaPlayerExtension, rowIndex,
        isMediaPlayerVideosAsset, isMediaPlayerAudioAsset, isMediaPlayerImageAsset, previewImageUrl, resultRow,
        itemPrviewImageUrl, mediaAssetType, assetTitle, assetDesc, htmlOutput, umpRegistrationScripts, resultSet,
        errorMessage, copy, count, script, scriptIndex, thumbNailUrl, learnMoreUrl, learnMoreText, relatedMedia,
        dataRowFunction;

        if (!rlFASTData.resultsData.Results || !rlFASTData.resultsData.Results.Resultset) {
            rlFASTData.resultsData.Results = {};
            rlFASTData.resultsData.Results.Resultset = [];
        }

        dataRowFunction = function (fieldIndex) {
            var fieldItem, fieldValue;

            fieldItem = resultRow.result[fieldIndex];
            if (fieldItem) {
                fieldValue = fieldItem.Value;
                if (fieldValue) {
                    return fieldValue.replace(/\'/g, escape("'"));
                }
                return null;
            }
            return null;
        };

        pageUrl = 'http://www.intel.com/';
        resultSet = rlFASTData.resultsData.Results.Resultset;
        resultSetCount = resultSet.length;
        pageSize = ResourceBrowser.pagination.pageSize;

        startItem = 1;
        endItem = 1;

        if (resultSetCount < 15) {
            jQuery("#rl-pagination-30").hide();
            jQuery("#rl-pagination-15").hide();
            if (ResourceBrowser.pagination.pageSize >= 15) {
                ResourceBrowser.pagination.changePageSize(6, false);
            }
        }
        else if (resultSetCount < 30) {
            jQuery("#rl-pagination-15").show();
            jQuery("#rl-pagination-30").hide();
            if (ResourceBrowser.pagination.pageSize === 30) {
                ResourceBrowser.pagination.changePageSize(15, false);
            }
        }
        else {
            jQuery("#rl-pagination-15").show();
            jQuery("#rl-pagination-30").show();
        }

        if (ResourceBrowser.pagination.currentPage !== 1) {
            if (resultSetCount > ResourceBrowser.pagination.pageSize) {
                startItem = (ResourceBrowser.pagination.pageSize * (ResourceBrowser.pagination.currentPage - 1) + 1);
                if (startItem === resultSetCount + 1) {
                    jQuery("#rlPaginationLabelX").text(startItem);
                }
                else if (startItem > resultSetCount - ResourceBrowser.pagination.pageSize) {
                    endItem = resultSetCount;
                    jQuery("#rlPaginationLabelX").text(startItem + "-" + endItem);
                }
                else {
                    endItem = (ResourceBrowser.pagination.pageSize * ResourceBrowser.pagination.currentPage);
                    jQuery("#rlPaginationLabelX").text(startItem + "-" + endItem);
                }
            }
            else {
                startItem = (ResourceBrowser.pagination.pageSize * (ResourceBrowser.pagination.currentPage - 1) + 1);
                endItem = rlFASTData.resultCount;

                jQuery("#rlPaginationLabelX").text(startItem + "-" + endItem);
            }
        }
        else if (resultSetCount > ResourceBrowser.pagination.pageSize) {
            startItem = 1;
            endItem = ResourceBrowser.pagination.pageSize;
            jQuery("#rlPaginationLabelX").text(startItem + "-" + endItem);
        }
        else {
            startItem = 1;
            endItem = resultSetCount;
            jQuery("#rlPaginationLabelX").text(rlFASTData.resultCount);
        }

        htmlOutput = '<table id="resultsTable">';
        // added for media player integration ***********************************************
        umpRegistrationScripts = [];
        // added for media player integration ***********************************************

        // Set error messages - 1 of 2, no results
        if (resultSetCount === 0) {
            errorMessage = ResourceBrowser.status.errorRetrievingResults === true ?
                           rlTranslations[ResourceBrowser.documentLanguage].staticLabels.rlAppError :
                           rlTranslations[ResourceBrowser.documentLanguage].staticLabels.rlFilterNoResults;
            htmlOutput += '<tr id="downloads-item-1" class="rl-downloads-item"><td colspan="2" style="width: 710px;" class="rl-downloads-subject-col rl-error">' + errorMessage + '</td><td class="vertical-gry-dotted"/></tr>';
        }

        /*
        Iterate the result set rows from the startPage index to the endPage index
        based on the pagination values selected by the user
        */
        for (rowIndex = startItem - 1; rowIndex < endItem; rowIndex += 1) {
            extension = null;
            trimmedExtension = null;
            downloadUrl = '';
            isDownloadable = false;
            isMediaPlayerExtension = false;
            assetTitle = '';
            assetDesc = '';
            learnMoreUrl = '';
            learnMoreText = '';
            relatedMedia = '';

            // added for media player integration ***********************************************
            isMediaPlayerVideosAsset = false;
            isMediaPlayerAudioAsset = false;
            isMediaPlayerImageAsset = false;
            itemPrviewImageUrl = '/itcenter/sitewide/pix/resource-lib/preview-modal-pic.jpg';
            mediaAssetType = '';
            // added for media player integration ***********************************************

            resultRow = resultSet[rowIndex];

            /*
            getFieldValue is a convenience function to return a value
            based on the resultRow object's fieldIndex
            */
            resultRow.getFieldValue = dataRowFunction;

            trackingEvent = 'ResourceBrowser.Tracking.trackClick(\'{0}\', \'' + resultRow.getFieldValue(rlFASTDataFieldMap.title) + '\');';

            if (resultRow.getFieldValue(rlFASTDataFieldMap.assetUrl)) {
                copy = resultRow.getFieldValue(rlFASTDataFieldMap.assetUrl);
                count = copy.lastIndexOf('.');
                copy = copy.substr(count);
                extension = copy.toUpperCase();
                trimmedExtension = extension.replace('.', '');
            }

            // cache the resultRow field values to local variables for reuse within this code block
            assetUrl = resultRow.getFieldValue(rlFASTDataFieldMap.assetUrl);
            isDownloadable = this.isDownloadableAsset(extension) && this.isDownloadableUrl(assetUrl);
            downloadUrl = resultRow.getFieldValue(rlFASTDataFieldMap.htttpDownloadLink);
            assetTitle = resultRow.getFieldValue(rlFASTDataFieldMap.title);
            assetDesc = resultRow.getFieldValue(rlFASTDataFieldMap.description);
            thumbNailUrl = resultRow.getFieldValue(rlFASTDataFieldMap.thumbnailUrl);
            previewImageUrl = resultRow.getFieldValue(rlFASTDataFieldMap.previewassetUrl);

            // some rows have missing asseturl values but have downloadurls.  we should guard against that error.
            assetUrl = assetUrl ? assetUrl : downloadUrl;

            // added for media player integration ***********************************************
            if (this.mediaPlayerExtensions[trimmedExtension]) {
                isMediaPlayerExtension = true;
                if (this.mediaPlayerAudioExtensions[trimmedExtension]) {
                    isMediaPlayerAudioAsset = true;
                }
                if (this.mediaPlayerVideoExtensions[trimmedExtension]) {
                    isMediaPlayerVideosAsset = true;
                }
                if (this.mediaPlayerImageExtensions[trimmedExtension]) {
                    isMediaPlayerImageAsset = true;
                }
            }
            else if (assetUrl && assetUrl.indexOf(this.mediaPlayerYouTubeVideoUrl, 0) > -1) {
                isMediaPlayerExtension = true;
                isMediaPlayerVideosAsset = true;
            }
            // added for media player integration ***********************************************

            htmlOutput += '<tr class="rl-downloads-item" id=\"downloads-item-' + rowIndex + '\">';
            htmlOutput += '<td class="rl-downloads-subject-col"><div>';

            /* 
            Thumbnail construction:
            */
            if (thumbNailUrl !== null) {
                if (assetUrl) {
                    // added for media player integration ***********************************************
                    if (isMediaPlayerExtension) {
                        if (isMediaPlayerVideosAsset) {
                            mediaAssetType = 'video';
                        }
                        else if (isMediaPlayerImageAsset) {
                            mediaAssetType = 'image';
                        }
                        else if (isMediaPlayerAudioAsset) {
                            mediaAssetType = 'audio';
                        }

                        linkText = '<div class="thumbnail-container"><img src="/itcenter/sitewide/pix/resource-lib/play_16.gif" class="play-indicator"/>';
                        linkText += '<img src="' + thumbNailUrl + '" width="64" height="46" title="' + assetTitle + '" alt="' + assetTitle + '" /></div>';

                        trackingEvent = String.format(trackingEvent, 'library_watch_image_click');
                        htmlOutput += ResourceBrowser.Builder.createUmpLink('resourceItemThumb' + rowIndex, mediaAssetType,
                                      assetUrl, pageUrl, assetTitle, assetDesc, downloadUrl, relatedMedia, thumbNailUrl, previewImageUrl,
                                      learnMoreText, learnMoreUrl, linkText, trackingEvent) + '</div>';

                        umpRegistrationScripts.push("registerItem('resourceItemThumb" + rowIndex + "');");
                    }
                    else {

                        trackingEvent = String.format(trackingEvent, 'library_download_image_click');
                        htmlOutput += '<a href="' + downloadUrl + '" target="_blank"><img src="' + thumbNailUrl + '" width="64" height="46" title="';
                        htmlOutput += assetTitle + '" alt="' + assetTitle + '" onclick="' + trackingEvent + '"/></a></div>';
                    }
                    // added for media player integration ***********************************************
                }
                else {
                    htmlOutput += '<img src="' + resultRow.getFieldValue(rlFASTDataFieldMap.presentationAssetUrl) + '" width="64" height="46" title="' + assetTitle + '" alt="' + assetTitle + '" /></div>';
                }
            }
            else {
                htmlOutput += '<img src="/itcenter/sitewide/pix/resource-lib/fpo-folder.jpg" width="64" height="46" title="' + assetTitle + '" alt="' + assetTitle + '" /></div>';
            }

            //title
            if (assetUrl) {
                if (isMediaPlayerExtension) {
                    linkText = decodeURI(this.shortenAssetTitle(assetTitle));
                    trackingEvent = String.format(trackingEvent, 'library_watch_title_click');

                    htmlOutput += '<div><div class="rl-downloads-title">' +
                                      ResourceBrowser.Builder.createUmpLink('resourceItemTitle' + rowIndex, mediaAssetType,
                                      assetUrl, pageUrl, assetTitle, assetDesc, downloadUrl, relatedMedia, thumbNailUrl, previewImageUrl,
                                      learnMoreText, learnMoreUrl, linkText, trackingEvent) + '</div>';

                    umpRegistrationScripts.push("registerItem('resourceItemTitle" + rowIndex + "');");
                }
                else {
                    trackingEvent = String.format(trackingEvent, 'library_download_title_click');
                    htmlOutput += '<div><div class="rl-downloads-title"><a href="' + assetUrl + '" target="_blank" onclick="' + trackingEvent + '">' + decodeURI(this.shortenAssetTitle(assetTitle)) + '</a></div>';
                }
            }
            else {
                htmlOutput += '<div><div class="rl-downloads-title">' + this.shortenAssetTitle(resultRow.getFieldValue(rlFASTDataFieldMap.title)) + '</div>';
            }

            //description
            if (resultRow.getFieldValue(rlFASTDataFieldMap.description) !== null) {
                htmlOutput += decodeURI(this.shortenAssetDescription(resultRow.getFieldValue(rlFASTDataFieldMap.description))) + '<br />';
            }
            /* 
            Preview link construction
            The itcenterpresentationasseturl value from the asset's meta data is used for a preview link.
            */
            itemPrviewImageUrl = resultRow.getFieldValue(rlFASTDataFieldMap.previewassetUrl);
            if (itemPrviewImageUrl !== null) {
                htmlOutput += '<div class="rl-downloads-cta"><a href="javascript:void(0)" name="preview-' + rowIndex + '" class="rl-preview">' + ResourceBrowser.translate.item('itcPreview') + '</a>';
            }

            /*
            View link construction
            */
            if (assetUrl) {
                if (itemPrviewImageUrl) {
                    htmlOutput += ' | ';
                }
                linkText = rlTranslations[lang].staticLabels.rlView + ' &gt;';

                if (isMediaPlayerExtension) {
                    trackingEvent = String.format(trackingEvent, 'library_watch');
                    htmlOutput += ResourceBrowser.Builder.createUmpLink('resourceItemLink' + rowIndex, mediaAssetType,
                                      assetUrl, pageUrl, decodeURI(assetTitle), decodeURI(assetDesc), downloadUrl, relatedMedia, thumbNailUrl, previewImageUrl,
                                      learnMoreText, learnMoreUrl, linkText, trackingEvent);

                    umpRegistrationScripts.push("registerItem('resourceItemLink" + rowIndex + "');");
                }
                else {
                    trackingEvent = String.format(trackingEvent, 'library_download');
                    htmlOutput += '<a href="' + assetUrl + '" target="_blank" onclick="' + trackingEvent + '";">' + linkText + '</a></div></div></td>';
                }
            }
            //date
            changeDate = resultRow.getFieldValue(rlFASTDataFieldMap.changeDate);
            if (changeDate !== null) {
                htmlOutput += '<td class="vertical-gry-dotted"></td><td class="rl-downloads-date-col"><p>' + this.convertDate(changeDate) +
                '</p></td>';
            }

            htmlOutput += "</tr>";
        }

        htmlOutput += "</table>";

        jQuery(".rl-downloads-cont").html(htmlOutput);
        if (errorMessage) {
            jQuery(".rl-downloads-cont").css("height", "auto");
        }
        ResourceBrowser.pagination.buildPagination();
        ResourceBrowser.Builder.hideResultsLoading();

        rlFASTData.bindPreviewModals();

        for (scriptIndex = 0; scriptIndex < umpRegistrationScripts.length; scriptIndex = scriptIndex + 1) {
            script = document.createElement('script');
            script.type = 'text/javascript';
            script.text = umpRegistrationScripts[scriptIndex];
            document.getElementsByTagName('body')[0].appendChild(script);
        }
    }
};

ResourceBrowser.Builder = (function () {
    return {};
}());

ResourceBrowser.Builder.openExandedIntrolPanel = function () {
    if (!ItcCookies.hasShownNagScreen()) {
        jQuery('#itcIntro').show();
        ItcCookies.setOnetimeCookie();
    }
    else {
        ResourceBrowser.Builder.hideIntroPanel();
    }
};

ResourceBrowser.Builder.hideIntroPanel = function () {
    // Do not show welcome message
    setTimeout(function () {
        jQuery('#itcIntro').fadeOut('slow'); 
    }, 3000);
};

ResourceBrowser.Builder.showResultsLoading = function () {
    jQuery("#results-loading").show();
};

ResourceBrowser.Builder.hideResultsLoading = function () {
    jQuery("#results-loading").hide();
};

ResourceBrowser.Builder.showFiltersLoading = function () {
    jQuery("#filters-loading").show();
};

ResourceBrowser.Builder.hideFiltersLoading = function () {
    jQuery("#filters-loading").hide();
};

ResourceBrowser.Builder.getFirstAncestorOfType = function (element, tagName) {
    if (element.tagName === tagName) {
        return element;
    }
    else {
        return ResourceBrowser.Builder.getFirstAncestorOfType(element.parentNode, tagName);
    }
};

ResourceBrowser.Builder.setCaseStudiesFilterAndCloseSubFilters = function () {
    ResourceBrowser.caseStudies.hideCaseStudiesPanel();
    ResourceBrowser.filters.addFilter('itcenterresourcetype^Case Studies', 'Case Studies');
};

ResourceBrowser.Builder.buildPreviewModal = function (dataRow) {
    var assetId, assetName, assetDesription, assetTitle, assetUrl, assetPreviewImageUrl,
    periodIndex, viewBtn, assetType, downloadUrl, relatedMedia, thumbNail;

    dataRow.getFieldValue = function (fieldIndex) {
        return dataRow[fieldIndex].Value;
    };

    assetId = dataRow.getFieldValue(rlFASTDataFieldMap.assetId);
    assetName = dataRow.getFieldValue(rlFASTDataFieldMap.objectName);
    assetTitle = decodeURI(dataRow.getFieldValue(rlFASTDataFieldMap.title));
    assetDesription = decodeURI(dataRow.getFieldValue(rlFASTDataFieldMap.description));
    assetPreviewImageUrl = dataRow.getFieldValue(rlFASTDataFieldMap.previewassetUrl);
    assetUrl = dataRow.getFieldValue(rlFASTDataFieldMap.assetUrl);
    downloadUrl = dataRow.getFieldValue(rlFASTDataFieldMap.htttpDownloadLink);
    thumbNail = dataRow.getFieldValue(rlFASTDataFieldMap.thumbnailUrl);

    jQuery("#rl-preview-modal-title").text(assetTitle);
    jQuery("#rl-preview-modal-text-container").text(assetDesription);
    jQuery("#rl-preview-modal-image").attr("src", assetPreviewImageUrl);

    assetPreviewImageUrl = '/itcenter/sitewide/pix/resource-lib/preview-modal-pic.jpg';

    /* hack to handle data errors */
    assetUrl = assetUrl ? assetUrl : downloadUrl;

    viewBtn = jQuery('#rl-preview-modal-download span.button-blue-text');
    viewBtn.attr('id', assetId);
    viewBtn.removeAttr('ump-asset-url');
    viewBtn.removeAttr('ump-asset-description');
    viewBtn.removeAttr('ump-asset-title');
    viewBtn.removeAttr('ump-page-url');
    viewBtn.removeAttr('ump-asset-url');
    viewBtn.removeAttr('ump-asset-type');
    viewBtn.removeAttr('ump-share-url');
    viewBtn.removeAttr('ump-link-url');
    viewBtn.removeAttr('ump-link-description');
    viewBtn.removeAttr('ump-related-media');
    viewBtn.removeAttr('ump-asset-thumbnail');
    viewBtn.removeAttr('ump-asset-preview');
    
    unregisterItem();

    if (assetUrl) {
        periodIndex = assetUrl.lastIndexOf('.');
    }

    assetType = '';

    if (rlFASTData.isUMPAsset(assetUrl)) {
        assetType = 'umpAsset';
    }
    else if (periodIndex && rlFASTData.isDownloadableAsset(assetUrl.substring(periodIndex).toUpperCase())) {
        assetType = 'download';
    }
    else if (periodIndex && rlFASTData.isWebPage(assetUrl.substring(periodIndex).toUpperCase())) {
        assetType = 'webPage';
    }

    if (assetType === 'umpAsset') {
        viewBtn.attr('ump-asset-description', assetDesription);
        viewBtn.attr('ump-asset-title', assetTitle);
        viewBtn.attr('ump-page-url', 'http://www.intel.com/');
        viewBtn.attr('ump-asset-url', assetUrl);
        viewBtn.attr('ump-asset-type', 'video');
        viewBtn.attr('ump-share-url', downloadUrl);
        viewBtn.attr('ump-link-url', '');
        viewBtn.attr('ump-link-description', '');
        viewBtn.attr('ump-related-media', '');
        viewBtn.attr('ump-asset-thumbnail', thumbNail);
        viewBtn.attr('ump-asset-preview', assetPreviewImageUrl);        

        viewBtn.removeAttr('target');

        jQuery('#rl-preview-modal-download').attr('title', assetTitle);
        jQuery('#rl-preview-modal-download').removeAttr('href');
        registerItem(assetId);
    }
    else if (assetType === 'download' || assetType === 'webPage') {
        jQuery('#rl-preview-modal-download').attr('title', assetTitle).
                                             attr('target', '_blank').
                                             attr('href', assetUrl).show();
    }
    else {
        jQuery("#rl-preview-modal-download").hide();
    }

    jQuery(viewBtn).unbind('click');
    jQuery(viewBtn).click(function () {
        jQuery("#rl-preview1-modal").hide();
        if (assetType === 'umpAsset') {
            ResourceBrowser.Tracking.trackClick('library_video_preview_view', assetTitle);
        }
        else {
            ResourceBrowser.Tracking.trackClick('preview_download', assetTitle);
        }
    });

    ResourceBrowser.previewModal.show();
    ResourceBrowser.Tracking.trackClick('library_preview', assetTitle);
    return false;
};

ResourceBrowser.Builder.errorPopup = function (itcError) {
    var errorDisplay = jQuery('#rl-error-display-container');
    jQuery('#error-display p').html(itcError);
    errorDisplay.show('slow');
};

String.format = function (text) {
    var token, tokenCount;

    if (arguments.length < 2) {
        return text;
    }

    tokenCount = arguments.length - 1;
    for (token = 0; token < tokenCount; token += 1) {
        text = text.replace(
            new RegExp('\\{' + token + '\\}', 'gi'), arguments[token + 1]);
    }

    return text;
};


ResourceBrowser.Builder.createUmpLink = function (linkId, assetType, assetUrl,
                                                  pageUrl, assetTitle, assetDesc, shareUrl, relatedMedia, assetThumb,
                                                  previewImg, learnMoreText, learnMoreLink, linkText, trackingEvent) {
    
    var format = '<a href="javascript:void(0);" id="{0}" ';
    format += 'ump-asset-type="{1}" ump-asset-url="{2}" ump-page-url="{3}" ump-asset-title="{4}" ';
    format += 'ump-asset-description="{5}" ump-share-url="{6}" ump-related-media="{7}" ';
    format += 'ump-asset-thumbnail="{8}" ump-asset-preview="{9}" ump-link-description="{10}" ';
    format += 'ump-link-url="{11}" onclick="{13}">{12}</a>';

    return String.format(format, linkId, assetType, assetUrl, pageUrl, decodeURI(assetTitle), decodeURI(assetDesc), 
                         shareUrl, relatedMedia, assetThumb, previewImg, learnMoreText, learnMoreLink, linkText, trackingEvent);
};

ResourceBrowser.Builder.getMenuButtonType = function (cssSelector) {
    return cssSelector.substring(0, 3) === '.rl' ? 'rl' : 'preview';
};

ResourceBrowser.Builder.getRelForResultsRow = function (relText) {
    var strArray = relText.split('-');
    return 'rl-' + strArray[1];
};

ResourceBrowser.Builder.createAsset = function (element) {
    var asset, foundElement;
    foundElement = jQuery(element);

    asset = new Asset();
    asset.id = foundElement.attr('item-id');
    asset.title = foundElement.attr('item-title');
    asset.image = foundElement.attr('item-preview-img');
    return asset;
};

ResourceBrowser.Tracking = (function () {
    var trackMap = { "entries": [
        { "locale_code": "en_us", "geo_code": "asmo-na", "wa_org1": "cim" }, 
        { "locale_code": "en_uk", "geo_code": "emea", "wa_org1": "emea" }, 
        { "locale_code": "de_de", "geo_code": "emea", "wa_org1": "emea" }, 
        { "locale_code": "fr_fr", "geo_code": "emea", "wa_org1": "emea" }, 
        { "locale_code": "ru_ru", "geo_code": "emea", "wa_org1": "emea" }, 
        { "locale_code": "tr_tr", "geo_code": "emea", "wa_org1": "emea" }, 
        { "locale_code": "es_es", "geo_code": "emea", "wa_org1": "emea" }, 
        { "locale_code": "it_it", "geo_code": "emea", "wa_org1": "emea" }, 
        { "locale_code": "pl_pl", "geo_code": "emea", "wa_org1": "emea" }, 
        { "locale_code": "zh_cn", "geo_code": "prc", "wa_org1": "prc" }, 
        { "locale_code": "ja_jp", "geo_code": "ijkk", "wa_org1": "ijkk" }, 
        { "locale_code": "pt_br", "geo_code": "lar", "wa_org1": "lar" }, 
        { "locale_code": "es_la", "geo_code": "lar", "wa_org1": "lar"}
    ]};

    function getGeoCode() {
        var i;
        for (i = 0; i < trackMap.entries.length; i = i + 1) {
            if (trackMap.entries[i].locale_code === ResourceBrowser.documentLanguage.toLowerCase()) {
                return trackMap.entries[i].geo_code;
            }
        }
    }

    function getWaOrg1Value() {
        var i;
        for (i = 0; i < trackMap.entries.length; i = i + 1) {
            if (trackMap.entries[i].locale_code === ResourceBrowser.documentLanguage.toLowerCase()) {
                return trackMap.entries[i].wa_org1;
            }
        }
    }

    return {
        trackClick: function (eventType, assetTitle) {
            var geoCode, gclctype, gclctitle, paramStringMiddle, paramStringEnd, paramString;
            geoCode = getGeoCode();
            assetTitle = assetTitle.replace(escape("'"), "'");
            gclctype = geoCode + ":" + ResourceBrowser.documentLanguage.toLowerCase() + ":" + eventType;
            gclctitle = geoCode + ":" + ResourceBrowser.documentLanguage.toLowerCase() + ":" + assetTitle;
            paramString = "wa_custom42=itcenterlib:" + gclctype + "&wa_eCustom25=itcenterlib:" + gclctype;

            switch (eventType) {
            case "library_preview":
                paramStringMiddle = "&wa_custom45=itcenterlib:" + gclctitle;
                paramStringEnd = "&wa_events=se_cust01";
                break;

            case "library_download":
            case "preview_download":
            case "library_download_image_click":
            case "library_download_title_click":
                paramStringMiddle = "&wa_custom43=itcenterlib:" + gclctitle;
                paramStringEnd = "&wa_eCustom10=dnld:resource_library&wa_events=se_cust02,se_points";
                break;

            case "library_watch":
            case "library_video_preview_view":
            case "library_watch_image_click":
            case "library_watch_title_click":
                paramStringMiddle = "&wa_custom46=itcenterlib:" + gclctitle;
                paramStringEnd = "&wa_events=se_cust04";
                break;
            default:
                break;
            }
            paramString += paramStringMiddle + "&wa_eCustom26=itcenterlib:" + gclctitle + paramStringEnd;
            waCustomLink(this, "itcenter_links", "o", paramString);
        },

        trackOpen: function (eventType) {
            var waOrg1, localeCode, pageName, paramString;
            waOrg1 = getWaOrg1Value();
            localeCode = ResourceBrowser.documentLanguage.toLowerCase();
            pageName = "itcenter:" + localeCode + ":" + eventType;

            paramString = "wa_org1=" + waOrg1 + "&wa_org2=" + waOrg1 + ":" + localeCode + "&wa_org3=" + waOrg1 + ":" + localeCode + ":itcenter";
            paramString += "&wa_org4=" + waOrg1 + ":" + localeCode + ":itcenter:resource_" + eventType + "&wa_custom42=itcenterlib:";
            paramString += localeCode + ":" + eventType + "_open&wa_eCustom06=" + waOrg1 + ":" + localeCode;
            paramString += "&wa_eCustom07=" + waOrg1 + ":" + localeCode + ":itcenter&wa_eCustom08=" + waOrg1 + ":" + localeCode + ":itcenter:resource_" + eventType;
            paramString += "&wa_eCustom25=itcenterlib:" + localeCode + ":" + eventType + "_open";
            waTrackAsPage(pageName, paramString, "N");
        }
    };
}());
