// Older non-jQuery code

// Used for swapping month/quarter tabs

function SwapDivs(activate, hide)
{
	var activateEle = document.getElementById(activate);
	var hideEle = document.getElementById(hide);
	
	activateEle.style.display = 'block';
	hideEle.style.display = 'none';
}

function SwapDivsByNameAndClass(activate, hide) {
    var activateEles = document.getElementsByName(activate);
    var hideEles = document.getElementsByName(hide);

    for (var i = 0; i < activateEles.length; i++) {
        var actEle = activateEles[i];
        var hideEle = hideEles[i];

        ClassChange(actEle,'block','add');
        ClassChange(actEle,'hide','remove');
        ClassChange(hideEle,'hide','add');
        ClassChange(hideEle,'block','remove');
    }
}

function SwapDivsByName(activate, hide) {
    var activateEles = document.getElementsByName(activate);
    var hideEles = document.getElementsByName(hide);

    for (var i = 0; i < activateEles.length; i++) {
        var actEle = activateEles[i];
        var hideEle = hideEles[i];

        actEle.style.display = 'block';
        hideEle.style.display = 'none';
    }
}

function ClassChange(el, targetclass, action) {
    var needle = new RegExp("(^|\\s+)" + targetclass + "($|\\s+)", "ig")
    if (action == "check")
        return needle.test(el.className)
    else if (action == "remove")
        el.className = el.className.replace(needle, "")
    else if (action == "add" && !needle.test(el.className)) {
        if (el.className.length > 0)
            el.className += " " + targetclass;
        else
            el.className = targetclass;
            
    }
}

function swapDistributionTabs(thisEle,otherTabClass,showId,hideId) {
    if ($(thisEle).hasClass("active")) {
    }
    else {
        $(thisEle).addClass("active");
        $("li." + otherTabClass + " > a").removeClass("active");
        $("#" + showId).removeClass("hide");
        $("#" + hideId).addClass("hide");
        if ($("div.distributionsDollars").hasClass("distributionsDollars")) {
            $("div.distributionsDollars").addClass("distributionsPercent").removeClass("distributionsDollars");
            $("#" + selectedTab).val("Percent");
        }
        else {
            $("div.distributionsPercent").addClass("distributionsDollars").removeClass("distributionsPercent");
            $("#" + selectedTab).val("Dollars");
        }
    }
}

function EndDistributionDateChangeRequestHandler(sender, args) 
{
    var dates = $(".dateDropDown option:selected").val();
    var datesArr = dates.split('|');
    $("#recordDate").html(datesArr[1]);
    $("#paymentDate").html(datesArr[2]);
}

// jQuery document loading and init code

$(document).ready(function() {

    // To retain font size across pages, do this on page load
    var size = readCookie('fontsize');
    changeFontSize(size);

    // Glossary Popup
    if ($(".glossaryPopup") != null) {
        $(".glossaryPopup").attr("title", "click for definition");

        $(".glossaryPopup").click(function(e) {

            var term_fund = $(this).attr('id').split("?");

            $.getJSON("/Investor-Education/Glossary.aspx",
            { mode: 'ajax', term: term_fund[0], fund: term_fund[1] },
            function(json) {
                $(".popup .title").html(json.term);
                $(".popup .body").html(json.definition);
            });

            var offset = $(this).offset();
            $(".popup").css("top", offset.top + 15);
            $(".popup").css("left", e.pageX);
            $(".popup").removeClass("hide");
            $(".popup").show();

            $(".popup .title").html(term_fund[0]);
            $(".popup .body").html("<img src='/Images/ajax-loader.gif' />");
            e.preventDefault();
        });

        $("#closeButton").click(function(e) {
            $("div.popup").hide();
            e.preventDefault();
        });
    }

    // Font Size Changing
    $("a.fontSize").click(function(e) {
        changeFontSize(this.id);
        e.preventDefault();
    });

    // Search Functionality
    $("#headerSearch").click(function(e) {
        goSearch();
        e.preventDefault();
    });

    // Search Functionality
    $("#headerSearchString").keypress(function(e) {
        if (e.which == 13) {
            goSearch();
            e.preventDefault();
        }
    });

    // Front Page Rotating Images
    if ($(".frontPageRotatingImages").length > 0) {

        $(".imageNumber").click(function(e) {
            var id = $(this).attr("id");
            var numsplit = id.split('_');
            var imgnum = numsplit[1];

            $(".rotatingImage").hide();
            $(".imageNumber").removeClass("selected");

            //$("#img" + imgnum).show();
            $("#img" + imgnum).fadeIn("normal");
            $(this).addClass("selected");

            imagePos = imgnum;
            timedCountStop();

            e.preventDefault();
        });

        if ($(".rotatingImage").length > 1) {
            timedCount();
        }

    }

    // Recently Viewed Funds Cookie
    if ($(".OverviewTitle > span").length > 0) {
        var fund = $(".OverviewTitle > span:contains('(')").text().replace("\(", "").replace("\)", "");
        //alert($(".OverviewTitle > span").text().replace("\(", "").replace("\)", ""));

        updateLastFundsViewed(fund);
    }

    // Recently Viewed Funds Cookie
    if (readCookie('viewedFunds') == undefined) {
        createCookie("viewedFunds", "", 14);
    }

    // Home Page - Recently Viewed Funds
    if ($("#recentlyViewedFundsTable").length > 0) {

        $("#recentlyViewedFundsTable").html("<img src='/Images/ajax-loader.gif' />");

        $.getJSON("/Our-Funds.aspx",
            { mode: 'ajax', funds: readCookie('viewedFunds') },
            function(htmlData) {
                $("#recentlyViewedFundsTable").html(htmlData);
            });

    }

    // Investor Ed Menu
    if ($(".menuhoverexpand").length > 0) {

        $(".menuhoverexpand").hover(function(e) {
            //$(this).siblings().show();
            $(this).siblings().removeClass("hide");
            $(this).siblings().slideDown("fast");
        }, function(e) {
            //$(this).siblings().slideUp("fast");
        });
    }

    // Distributions Page
    if ($(".dateDropDown").length > 0) {
        Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndDistributionDateChangeRequestHandler);

        var dates = $(".dateDropDown option:selected").val();
        var datesArr = dates.split('|');
        $("#recordDate").html(datesArr[1]);
        $("#paymentDate").html(datesArr[2]);
    }

    // Explore Our Funds Events
    if ($(".compareFundsButton").length > 0) {

        $(".compareFundsButton").click(function(e) {
            goCompareFunds(e);
            e.preventDefault();
        });

        $(".compareCB").click(function(e) {
            if ($(".compareCB:checked").length > 4) {
                alert("Please select only 4 funds to compare.");
                e.preventDefault();
            }
        });
    }

    // Portfolio-Intl Chart Events
    if ($(".legendHeader").length > 0) {

        $(".legendHeader").click(function(e) {
            $("#" + $(this).attr("name")).toggle();
            e.preventDefault();
        });

        $("#expandAll").click(function(e) {
            $(".subtable").show();
            e.preventDefault();
        });

        $("#collapseAll").click(function(e) {
            $(".subtable").hide();
            e.preventDefault();
        });
    }

    // Wasatch Funds Map
    if ($(".leftMap").length > 0) {

        // small map styles click
        $(".leftMap a").click(function(e) {
            var fundtypesstr = $(this).attr('name');
            var fundtypes = fundtypesstr.split('|');
            $("#mapBig h2").html(fundtypes[0] + " " + fundtypes[1] + " FUNDS");
            $("#fundStyleHeader").html(fundtypes[0] + " " + fundtypes[1]);
            $("#mapBig").removeClass("hide");
            $("#fundDetails").addClass("hide");

            $("table.leftMap tr td a").removeClass("selected");
            $(this).addClass("selected");

            $(".mapBig").html("<img src='/Images/ajax-loader-big.gif' class='loader' />");

            $.get("Style-Box.aspx", { size: fundtypes[0], style: fundtypes[1], mode: "ajax" },
                function(data) {
                    $(".mapBig").html(data);
                    InitFundDetailsLinks(".fundRightMapItem");
                });

            e.preventDefault();
        });

        // back button
        $("#mapBigBack").click(function(e) {
            $("table.leftMap tr td a").removeClass("selected");
            $("#mapBig").addClass("hide");
            e.preventDefault();
        });

        // back button
        $("#fundDetailsBack").click(function(e) {
            $("#mapBig").removeClass("hide");
            $("#fundDetails").addClass("hide");
            e.preventDefault();
        });
        // back button
        $(".close").click(function(e) {
            $("#mapBig").removeClass("hide");
            $("#fundDetails").addClass("hide");
            e.preventDefault();
        });
    }
});

// Helper for Wasatch Product Map
function InitFundDetailsLinks(selector) {
    $(selector).click(function(e) {

        $("#fundName").html($(this).attr("name"));
        $("#learnmorelink").attr("href", "Overview.aspx?fund=" + $(this).attr("id"));
        $(".symbol > span").html($(this).attr("id"));

        $("#mapBig").addClass("hide");
        $("#fundDetails").removeClass("hide");

        $("#body").html("<p><img src='/Images/ajax-loader-big.gif' class='loader' /></p>");

        GetFundDetails($(this).attr("id"));

        e.preventDefault();
    });
}

function InitSimilarFundLinks(selector) {
//    $(selector).each(function() {
//        $(this).attr("name", $(this).text().replace(" Fund", ""));
//    });

//    InitFundDetailsLinks(selector);

    $(selector).click(function(e) {
        
        var symbol = $(this).attr("href").replace("#","");
        $("#learnmorelink").attr("href", "Overview.aspx?fund=" + symbol);
        $(".symbol > span").html(symbol);

        $("#body").html("<p><img src='/Images/ajax-loader-big.gif' class='loader' /></p>");

        GetFundDetails(symbol);

        e.preventDefault();
    });
}

function GetFundDetails(fundSymbol) {
    $.getJSON("Style-Box.aspx", { fund: fundSymbol, mode: "ajax" },
        function(jsondata) {

            $("#body").html(jsondata.body);
            $(".subtitle").html(jsondata.subtitle);
            $("#similarFunds").html(jsondata.similarfunds);
            var title = jsondata.size + " " + jsondata.style;
            $("#fundStyleHeader").html(title.toUpperCase());
            $("#fundName").html(jsondata.name);

            InitSimilarFundLinks("#similarFunds p a");
        });
}


// helper methods

function goCompareFunds(e) {

    if ($(".compareCB:checked").length > 0) {

        var href = $(".compareFundsButton").attr("href");
        var checked = $(".compareCB:checked");
        var fundsToCompare = "";
        for (var i = 0; i < checked.length; i++) {
            if (i >= 1) {
                fundsToCompare = fundsToCompare + ",";
            }
            fundsToCompare = fundsToCompare + $(checked[i]).attr("id");
        }

        window.location.replace(href + "?funds=" + fundsToCompare);
    }
  
}

// For rotating images on front pages
var imagePos = 0;
var t;
function timedCount() {

    var lastImg = imagePos;
    imagePos = imagePos + 1;

    if (imagePos > $(".frontPageRotatingImages div.rotatingImage").length) {
        imagePos = 1;
    }
    
    if (lastImg != 0) {
        $("#img" + lastImg).hide();
        $("#imgnum_" + lastImg).removeClass("selected");
        
        $("#img" + imagePos).fadeIn("normal");
        $("#imgnum_" + imagePos).addClass("selected");
    }

    t = setTimeout("timedCount()", 5000);
}

function timedCountStop() {

    t = clearTimeout(t);
}


function goSearch() {
    var href = $("#headerSearch").attr("href");
    var search = $("#headerSearchString").val();

    window.location.replace(href + "?searchStr=" + search);
}

function updateLastFundsViewed(fund) 
{
    var lastFund = readCookie('lastFund');

    if (lastFund != fund) {
        var viewedFunds = "";
        if (readCookie('viewedFunds') != undefined) {
            viewedFunds = readCookie('viewedFunds');

            var fundArr = viewedFunds.split(",");

            var r = new RegExp(fund);
            if (r.test(viewedFunds)) {

                for (var i = 0; i < fundArr.length; i++) {
                    if (fundArr[i] == fund) {
                        fundArr.splice(i, 1);
                        break;
                    }
                }

                fundArr.unshift(fund);

                viewedFunds = fundArr.join(",");
            }
            else if (fundArr.length == 4) {

                fundArr.unshift(fund);
                fundArr.pop();

                viewedFunds = fundArr.join(",");
            }
            else {
                fundArr.unshift(fund);

                viewedFunds = fundArr.join(",");
            }
        }
        else {
            viewedFunds = fund;
        }

        var viewedFundsStr = viewedFunds;
        createCookie("viewedFunds", viewedFundsStr, 14);
    }


    createCookie("lastFund", fund, 14);
}

function changeFontSize(size) {
    if (size == "normal") {
        $("body").css("font-size", "70%");
    } else if (size == "big") {
        $("body").css("font-size", "75%");
    } else if (size == "biggest") {
        $("body").css("font-size", "80%");
    } else {
        $("body").css("font-size", "70%");
    }

    createCookie('fontsize', size, 7);
}


function createCookie(name, value, days) {
    var expires = "";
    if (days) {
        var date = new Date();
        date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
        expires = "; expires=" + date.toGMTString();
    }
    
    document.cookie = name + "=" + value + expires + "; path=/";
}

function readCookie(name) {
    var nameEQ = name + "=";
    var ca = document.cookie.split(';');
    for (var i = 0; i < ca.length; i++) {
        var c = ca[i];
        while (c.charAt(0) == ' ') c = c.substring(1, c.length);
        if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length);
    }
    return null;
}

function eraseCookie(name) {
    createCookie(name, "", -1);
}