﻿// support for browser history
var curHash = "";

$(document).ready(function() {
    $("#search-tabs a").click(function() {
        changeTab($(this).attr("id"));
    });

    $("#search-tabs .tab").each(function(i) {
        $(this).append("<div class='left'></div>");
        $(this).append("<div class='right'></div>");
    });
    $("#search-tabs .tab").mouseenter(function() {
        $(this).addClass("hovered");
    });
    $("#search-tabs .tab").mouseleave(function() {
        $(this).removeClass("hovered");
    });

    $(".search-help .help-button").mouseenter(function() {
        $(".help-popup").show();
    });
    $(".search-help").mouseleave(function() {
        $(".help-popup").hide();
    });

    $("#filter-submit").click(applyFilter);
    $("#filter-cancel").click(tb_remove());

    $("#filter-dropdown div:not(.separator)").click(function() {showFilter(this); });
    $("#filter-dropdown div:not(.separator)").mouseenter(function() {
        $(this).addClass("hovered");
    });
    $("#filter-dropdown div:not(.separator)").mouseleave(function() {
        $(this).removeClass("hovered");
    });

    $("a.export-link").each(function(i) {
        $(this).css("cursor", "pointer");
        $(this).click(function() { Export(tab, $(this).attr("rel")) });
    });

    // set a timer to check for hash change
    setInterval(checkHash, 100);
});

function initTab(tabName) {
    var newTab = "#" + tabName;
    var oldTab = "#" + tab;

    $(oldTab).find(".tab").removeClass("selected");
    $(newTab).find(".tab").addClass("selected");

    $(".table .header-row td").each(function(i) {
        var wrapper = $(this).find(".text");
        var width = getHeaderParameter($(this), "width");
        var column = getHeaderParameter($(this), "column");
        var hasFilter = getHeaderParameter($(this), "hasFilter");
        var hasTooltip = getHeaderParameter($(this), "hasTooltip");
        var sort = $("#query-strings #sort").attr("value");
        var filter = $("#query-strings #filter").attr("value");
        
        if (hasTooltip == "true" || hasFilter == "true") {
            wrapper.append("<div class='icons'></div>");
        }

        if (hasFilter == "true") {
            wrapper.find(".icons").append("<div class='filter'></div>");
        }

        if (hasTooltip == "true") {
            wrapper.find(".icons").append("<div class='question'></div>");
        }

        if (width != "") {
            $(this).css("width", width + (width.indexOf("%") > -1 ? "" : "px"));
        }

        if (column != "" && filter.match(column)) {
            wrapper.append("<img src='" + theme + "/images/filter.png' />");
            $(this).addClass("selected");
        }
        else if (column != "" && sort.match(column + " ASC")) {
            wrapper.append("<img src='" + theme + "/images/sort_asc.png' />");
            $(this).addClass("selected");
        }
        else if (column != "" && sort.match(column + " DESC")) {
            wrapper.append("<img src='" + theme + "/images/sort_desc.png' />");
            $(this).addClass("selected");
        }

        if ($(this).is(":last-child")) {
            $(this).addClass("last");
        }
    });

    $(".table .header-row td").mouseenter(function() {
        $(this).addClass("hovered");
        $(this).find(".filter").show();
        $(this).find(".question").show();
    });

    $(".table .header-row td").mouseleave(function() {
        $(this).removeClass("hovered");
        $(this).find(".filter").hide();
        $(this).find(".question").hide();
        $(this).find(".tooltip").hide();
        $("#filter-dropdown").hide();
        $("#filter-dropdown-affiliate").hide();
    });

    $(".table .normal-row").mouseenter(function() {
        $(this).addClass("normal-row-hovered");
        if ($.browser.msie && parseInt(jQuery.browser.version) == 7)
            $(this).find('.roi-adjust').css('z-index', '1');
    });

    $(".table .normal-row").mouseleave(function() {
        $(this).removeClass("normal-row-hovered");
        if ($.browser.msie && parseInt(jQuery.browser.version) == 7)
            $(this).find('.roi-adjust').css('z-index', '-1');
    });

    $(".table .filter").click(function() {
        var column = $(this).closest("td");
        var useAffiliateFilter = getHeaderParameter(column, "useAffiliateFilter");
        var networkTitle = getHeaderParameter(column, "title");
        column.find(".tooltip").hide();

        $("#filter-dropdown div").each(function(c) {
            $(this).show();            
        });
        if (useAffiliateFilter == "true") {
            $(this).closest(".text").append($("#filter-dropdown-affiliate"));
            $("#filter-dropdown-affiliate").slideToggle("fast");
        }
        else {            
            if (networkTitle == "true") {
                $("#filter-dropdown div").each(function(c) {
                    if (c > 1) {
                        $(this).hide();
                    }
                });
            }
            $(this).closest(".text").append($("#filter-dropdown"));
            $("#filter-dropdown").slideToggle("fast");
        }
    });

    $("#filter-dropdown-affiliate div:not(.separator)").removeClass("hovered");
    $("#filter-dropdown-affiliate").hide();
    $("#filter-dropdown div:not(.separator)").removeClass("hovered");
    $("#filter-dropdown").hide();
    
    $(".table .filter").mouseenter(function() {
        $(this).addClass("filter-hovered");
    });

    $(".table .filter").mouseleave(function() {
        $(this).removeClass("filter-hovered");
    });

    $(".table .question").click(function() {
        $(this).closest("td").find(".tooltip").slideToggle("fast");
        $("#filter-dropdown").hide();
        $("#filter-dropdown-affiliate").hide();
    });

    $(".table .question").mouseenter(function() {
        $(this).addClass("question-hovered");
    });

    $(".table .question").mouseleave(function() {
        $(this).removeClass("question-hovered");
    });

    if (tabName.indexOf('-overview') == -1) {
        $("a.export-link").css("visibility", "visible");
    }
    else {
        $("a.export-link").css("visibility", "hidden");
    }
    
    $("#ddlRecPerPage").change(function() {
        getTab(tab);
    });

    $("#filter-dropdown-affiliate div:not(.separator)").click(function() {applyAffiliateFilter(this);});
    $("#filter-dropdown-affiliate div:not(.separator)").mouseenter(function() {
        $(this).addClass("hovered");
    });
    $("#filter-dropdown-affiliate div:not(.separator)").mouseleave(function() {
        $(this).removeClass("hovered");
    });
    
    // show no results panel if no results found
    var resultCount = $(".table tr.normal-row").size();
    if (resultCount == 0) showNoResults();

    // init thickbox
    tb_init('a.thickbox, area.thickbox, input.thickbox');
    imgLoader = new Image();
    imgLoader.src = tb_pathToImage;
}

//refreshes the query counter on top of the page for members
function UpdateCurrentQuery() {
    var curValue = $('.quota-header li:first').text();
    $('.quota-header li:first').text("Updating...");
    $.ajax({
        url: "/research/tab.aspx?name=control-tasks&task=current-query",
        cache: false,
        success: function(html) {
        $('.quota-header li:first').text(html);
        },
        error: function(x, t, e) {
        $('.quota-header li:first').text(curValue);
        }
    });
}

// usually we don't need to pass in
// the queryString parameter
function getTab(tabName, queryString) {
    if (tabName == "") {
        return false;
    }
    $('#filter-dropdown-affiliate').remove();
    if (queryString == null) {
        queryString = "q=" + query;
        if (tabName == tab) {
            $("#query-strings input").each(function(i) {
                queryString += "&" + $(this).attr("id") + "=" + $(this).attr("value");
            });
            queryString += "&pagesize=" + $("#ddlRecPerPage").val();
        }
        else {
            queryString += "&market=" + $("#query-strings #market").attr("value");
        }
    }

    $("#loading").show();
    $.ajax({
        url: "/research/tab.aspx?name=" + tabName + "&" + queryString,
        cache: false,
        success: function(html) { 
            if (html.indexOf("<title>KeywordSpy - Server Error</title>") > -1) {
                $("#loading").hide();
                alert("An error has occured\r\nPlease try again later");
                return false;
                //document.location = "/error/error.aspx?ref=/research/search.aspx?q=" + query + "%26tab=" + tabName;
            }

            if (html.indexOf("<title>KeywordSpy - Limit Exceeded</title>") > -1)
                document.location = "/error/exportlimit.aspx?ref=/research/search.aspx?q=" + query + "%26tab=" + tabName;

            if (html.indexOf("<title>KeywordSpy - 404 Forbidden</title>") > -1)
                document.location = "/sorry.aspx?ref=/research/search.aspx?q=" + query + "%26tab=" + tabName;

            $("body").append($("#filter-dropdown"));
            $("body").append($("#filter-dropdown-affiliate"));
            $("#search-result").html(html);

            initTab(tabName);
            tab = tabName;

            $("input[role='currentTab']").attr("value", tabName);
            $("#loading").hide();
        },
        error: function(x, t, e) {
            $("#loading").hide();
            alert("An error has occured\r\nPlease try again later");
        }
    });
}

function changeTab(tabName, queryString) {
    if (tabName != tab) {
        curHash = "#/tab=" + tabName;
        location.hash = curHash;
        getTab(tabName, queryString);
    }
}

function changePage(pageNumber) {
    $("#query-strings #page").attr("value", pageNumber);
    getTab(tab);
}

function getHeaderParameter(column, field) {
    var parameterString = column.find(".parameters").html();
    if (parameterString != null && parameterString != "") {
        var parameters = parameterString.split("|");

        for (var i = 0; i < parameters.length; i++) {
            var name = parameters[i].split("=")[0];
            if (name == field)
                return parameters[i].split("=")[1];
        }
    }

    return "";
}

function getQueryParameter(parameterString, field) {
    if (parameterString != null && parameterString != "") {
        var parameters = parameterString.split("&");

        for (var i = 0; i < parameters.length; i++) {
            var name = parameters[i].split("=")[0];
            if (name == field)
                return parameters[i].split("=")[1];
        }
    }
    return "";
}

function showFilter(obj) {
    if (USER_ROLE == null || USER_ROLE == "guest") {
        showPopup("", 0, 470, 472, "You are currently a guest user.", "/research/tab.aspx?name=control-freetrial");
    }
    else if (USER_ROLE == "free") {
        $.getJSON("/research/tab.aspx?name=control-tasks&task=sort-usage", function(data) {
            if (data) {
                if (data.status == "not-allow") {
                    showPopup("", 0, 470, 400, "Maximum Filter/Sort Limit Exceeded.", "/research/tab.aspx?name=control-freetrial");
                }
                else
                    SetFilter(obj);
            }
        });
    }
    else {
        if (USER_ROLE.length > 15) {
            var arr = USER_ROLE.split('|');
            if (arr[0] == null || arr[0] == "guest") {
                showPopup("", 0, 470, 472, "You are currently a guest user.", "/research/tab.aspx?name=control-freetrial");
            }
            else if (arr[0] == "free") {
                $.getJSON("/research/tab.aspx?name=control-tasks&task=sort-usage", function(data) {
                    if (data) {
                        if (data.status == "not-allow") {
                            showPopup("", 0, 470, 400, "Maximum Filter/Sort Limit Exceeded.", "/research/tab.aspx?name=control-freetrial");
                        }
                        else
                            SetFilter(obj);
                    }
                });
            }
            else if (arr[1] == "Research" || arr[1] == "Tracking") {
                showPopup("", 0, 470, 400, "Maximum Filter/Sort Limit Exceeded.", "/research/tab.aspx?name=control-freetrial");
            }
            else {
                SetFilter(obj);
            } 
        }
        else {
            SetFilter(obj);
        }        
    }  
}

function SetFilter(obj) {
    var column = $(obj).closest("td");
    var operator = $(obj).find("span").html();
    var columnName = column.find(".name").html();
    var columnValue = getHeaderParameter(column, "column");
    var seenVal = "";

    if (operator == "asc" || operator == "desc") {
        $("#query-strings #sort").attr("value", columnValue + " " + operator.toUpperCase());
        $("#query-strings #filter").attr("value", "");

        // reload page for sorting
        getTab(tab);
    }
    else {
        //last/first seen routine
        var curDate = new Date();
        var year = curDate.getFullYear();
        var month = curDate.getMonth() + 1;
        var day = curDate.getDate();

        if (month < 10) { month = "0" + month; }
        if (day < 10) { day = "0" + day; }
        if (columnName == "Last/First Seen" || columnName == "Last Scan" || columnName == "DateLastSeen") {
            seenVal = year + "/" + month + "/" + day;
        }

        // reset values
        $("#filter-value-1").attr("value", seenVal);
        $("#filter-value-2").attr("value", seenVal);
        $("#filter-option-2 option[value='']").attr("selected", "selected");
        $("#filter-and-or[value='and']").attr("checked", "checked");

        $("#filter-option-1 option[value='" + operator + "']").attr("selected", "selected");
        $("#filter-column").attr("value", columnValue);
        $("#filter-dropdown").hide();
        $("#filter-dropdown-affiliate").hide();

        $("#show-filter").attr("title", "Filter Column: " + columnName);
        $("#show-filter").click();
        $("#filter-value-1").focus();
    }
}

function applyFilter() {
    var column = $("#filter-column").attr("value")
    var option1 = $("#filter-option-1 option:selected").attr("value");
    var option2 = $("#filter-option-2 option:selected").attr("value");
    var value1 = $("#filter-value-1").attr("value");
    var value2 = $("#filter-value-2").attr("value");

    var filterString = column + " " + option1 + " " + value1;

    if (option2 != "") {
        var andor = " AND ";

        if ($("#filter-and-or:checked").attr("value") == "or")
            andor = " OR ";

        filterString += andor + column + " " + option2 + " " + value2;
    }
    
    $("#query-strings #page").attr("value", "1");
    $("#query-strings #sort").attr("value", "");
    $("#query-strings #filter").attr("value", filterString);
    tb_remove();
    getTab(tab);
}

function applyAffiliateFilter(obj) {
    if (USER_ROLE == null || USER_ROLE == "guest") {
        showPopup("", 0, 470, 472, "You are currently a guest user.", "/research/tab.aspx?name=control-freetrial");
    }
    else if (USER_ROLE == "free") {
        $.getJSON("/research/tab.aspx?name=control-tasks&task=sort-usage", function(data) {
            if (data) {
                if (data.status == "not-allow") {
                    showPopup("", 0, 470, 400, "Maximum Filter/Sort Limit Exceeded.", "/research/tab.aspx?name=control-freetrial");
                }
                else
                    SetAffiliateFilter(obj);
            }
        });
    }
    else {
        SetAffiliateFilter(obj);
    }
}

function SetAffiliateFilter(obj) {
    var operator = "eq";
    var value = $(obj).find("span").html();
    var column = getHeaderParameter($(obj).closest("td"), "column");

    if (value == "ALL") {
        operator = "!eq";
        value = "'N/A'";
    }

    $("#query-strings #page").attr("value", "1");
    $("#query-strings #sort").attr("value", "");
    $("#query-strings #filter").attr("value", column + " " + operator + " " + value);
    $("#filter-dropdown-affiliate").hide();
    getTab(tab);
}

function clearFilters() {
    $("#query-strings #page").attr("value", "1");
    $("#query-strings #filter").attr("value", "");
    getTab(tab);
}

function showPopup(tabName, hash, width, height, title, url) {
    $("#loading").show();
    $.ajax({
        url: url,
        cache: false,
        success: function(html) {
            $("#show-popup").attr("href", $("#show-popup").attr("href").replace(/width=\d+/, "width=" + width));
            $("#show-popup").attr("href", $("#show-popup").attr("href").replace(/height=\d+/, "height=" + height));
            $("#show-popup").attr("title", title);

            $("#popup-content").empty();
            $("#popup-content").html(html);
            $("#show-popup").click();
            $("#popup-content a.export-link").each(function(i) {
                $(this).css("cursor", "pointer");
                $(this).bind("click", function() { Export(tabName, $(this).attr("rel"), hash) });
            });
            $("#loading").hide();
        },
        error: function(x, t, e) {
            alert("Error:" + t + "\r\n" + e);
            $("#loading").hide();
        }
    });
}

function showNoResults() {
    var colCount = $(".table tr.header-row td").size();
    $(".table tr.header-row").after(
        "<tr class=\"no-results\"><td colspan=" + colCount + ">No results found<br>Please try another keyword</td></tr>");
}

function ShowGraph(imgNum, domID) {
    var $selectedImg = $("img[rel=ShowGraph" + imgNum + "]");
    var $flashContainer = $("#cellFlash");

    if ($selectedImg.attr("src") != null && $selectedImg.attr("src").indexOf("inactive") == -1) {
        return;
    }
    $flashContainer.empty();
    $("<div class=\"loadMask\"><div class=\"loadMessage\"><img src=\"/images/loading.gif\"/>Loading ...</div></div>").appendTo("#cellFlash");

    $(".graph").each(function() {
        $(this).attr("src", "/images/graph_inactive.gif").css("cursor", "pointer");
    });

    $selectedImg.attr("src", "/images/graph_active.gif");
    $selectedImg.css("cursor", "default");

    var embedString = '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0" width="630" height="220"><param id="flashParamURL" value="/research/Charts/flashdomain.aspx?d=' + domID + '&t=' + imgNum + '" name="movie"/><param name="quality" value="high"/><param name="wmode" value="opaque"/><embed id="flashEmbedURL" src="/research/Charts/flashdomain.aspx?d=' + domID + '&t=' + imgNum + '" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="630" height="220" wmode="opaque"></embed></object>';
    window.setTimeout(function() { $flashContainer.html(embedString) }, 1000);

    window.setTimeout(function() { $flashContainer.children(".loadMask").remove() }, 1000);
}

function ShowScatterGraph(obj) {
    
    var $flashContainer = $("#cellFlash");

    if (obj == null || obj.attr("src").indexOf("inactive") == -1) {
        return;
    }
    
    $flashContainer.empty();
    $("<div style=\"position:relative; height:100%; width:100%\"><div class=\"loadMask\"><div class=\"loadMessage\"><img src=\"/images/loading.gif\"/>Loading ...</div></div></div>").appendTo("#cellFlash");

    $(".graph").each(function() {
        $(this).attr("src", "/images/graph_inactive.gif").css("cursor", "pointer");
    });

    obj.attr("src", "/images/graph_active.gif");
    obj.css("cursor", "default");
    try
    {
        var embedString = '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0" width="630" height="220"><param id="flashParamURL" value="/research/Charts/flashkeyword.aspx?d=' + obj.attr("keyid") + '&t=' + obj.attr("rel") + '" name="movie"/><param name="quality" value="high"/><param name="wmode" value="opaque"/><embed id="flashEmbedURL" src="/research/Charts/flashkeyword.aspx?d=' + obj.attr("keyid") + '&t=' + obj.attr("rel") + '" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="630" height="220" wmode="opaque"></embed></object>';
        window.setTimeout(function() { $flashContainer.html(embedString) });
    }
    catch(err) {
    alert("Error:\r\n" + err);
    }
}

function checkHash() {
    if (curHash != location.hash) {
        curHash = location.hash;
        var newTab = curHash.replace(/#\/tab=/, '');
        
        if (newTab == "" || newTab == "#") {
            getTab(firstTab);
        }
        else if (newTab != tab) {
            getTab(newTab);
        }
    }
}