// menu functions provided by mint
/*
function submenuliover(whichlist){
	whichlist.className='subnavliover';
}
function submenuliout(whichlist){
	whichlist.className='';
}
*/
			

// add string trim function if it doesn't exist
if (typeof String.prototype.trim !== 'function') {
    String.prototype.trim = function() {
        return this.replace(/^\s+|\s+$/, '');
    }
}

// common functions
function getMediaUrl(subUrl) {
    if (subUrl == "") return "";
    subUrl = subUrl.replace('sitecore/media library/', '');
    subUrl = subUrl.replace('.aspx', '');
    return '/' + siteInfo.lang + url_mediaBase + subUrl + '.ashx';
}

function url_dateHelper(period, compareTo) {
    return "/" + siteInfo.lang + "/DateHelperAjax.aspx?period=" + period + "&compareTo=" + compareTo;
}



// global js var - fund pages

var url_mediaBase = "/~/media";
var fileName_fundSearch = 'search.aspx';

var url_fundSearch = '/Invest/Premier-Choice-Series/Search.aspx';
var url_fundSearchAjax = '/Invest/Premier-Choice-Series/Search/Ajax.aspx';
var url_fundSearchForm = '/Invest/Premier-Choice-Series/Search/Form.aspx';

var div_fundSearchResult = "fundSearchResult";
var url_fundSearchResult = '/Invest/Premier-Choice-Series/Search/Form/Result.aspx';

var pattern_fundSearchBoxInvalidChar = /[%`*\[\]]/gi;
var str_fundSearchBoxInvalidChar = "% ` * [ ]";

var div_fundSearchSuggestion = "divFundSearchSuggestion";
var div_fundSearchSuggestionResult = "divFundSearchSuggestionResult";
var div_fundSearchSuggestionClose = "divFundSearchSuggestionClose";
var url_fundSearchSuggestion = '/Invest/Premier-Choice-Series/Search/Suggestion.aspx';

var url_fundFactSheetPrintPreview = '/Invest/Premier-Choice-Series/Fund-Fact-Sheet-Print-Preview.aspx';

var url_fundInfoBase = "/Invest/Premier-Choice-Series/Information/";

var url_compareDetail = "/Invest/Premier-Choice-Series/Performance/Compare-Detail.aspx";
var div_compareDetail = "fund_performance_compare_detail";

var url_compareSelected = "/Invest/Premier-Choice-Series/Performance/Compare-Selected.aspx";
var div_compareSelected = "fund_performance_compare_selected";

var url_fundChart = '/Invest/Premier-Choice-Series/Chart.aspx';
var div_fundChart = 'fundChartMain';
var div_fundPriceChart = 'fundPriceChartMain';

//var url_fundPriceDetail = '/FundHistoricalPrice/FundHistoricalPrice_price_detail.aspx';
//var div_fundPriceDetail = 'fund_price_detail';

var fundHistoricalPriceFileName = "Daily-Price.aspx";
var fundHistoricalPriceFileName_reg = new RegExp(/^Daily-Price\.aspx$/i);

var url_fundHistoricalPrice = "/Invest/Premier-Choice-Series/Daily-Price.aspx";

var url_fundHistoricalPriceDetail = "/Invest/Premier-Choice-Series/Daily-Price/Price-Detail.aspx";
var div_fundHistoricalPriceDetail = 'fund_price_detail';

var url_fundHistoricalLatestPrice = "/Invest/Premier-Choice-Series/Daily-Price/Latest-Price.aspx";
var div_fundHistoricalLatestPrice = 'fundHistoricalLatestPrice';

var div_fundPerformanceSelectFundsPopup = 'selectFundsTable';
var div_fundPerformanceSelectIndexesPopup = 'selectIndexesTable';

var fundPerformanceFileName = "Performance.aspx";
var fundPerformanceFileName_reg = new RegExp(/^Performance\.aspx$/i);

var url_investFlexiUnitPriceDetail = "/Invest/FLEXI-Series/Investment-Unit-Prices/Price-Detail-Table.aspx";

var url_indexList = "/Invest/Index-List.aspx";

try 
{
    function loading(div) {                
        $j(div).html("<img src='/files/images/ajax-loader.gif' />");
    }

    $j(document).ready(function() {
        genBlueWhiteTable();
        genGrayWhiteTable();
    });

    // appendix (help)
    $j(".appendix").die("mouseover");
    $j(".appendix").live("mouseover", function() {
        $j("<div id='divAppendix'></div>").insertAfter($j(this));
        $j("#divAppendix").html($j(this).attr("appendix"));

        // reset appendix DIV position
        var windowLeft = $j(document).scrollLeft();
        var windowTop = $j(document).scrollTop();

        var div_w = $j("#divAppendix").width();
        var offset = $j(this).offset();
        var icon_h = 24;
        var left = 0;
        var top = 0;
        left = Math.round(offset.left) + 3;
        top = Math.round(offset.top) + icon_h - windowTop;
        
        $j("#divAppendix").css("left", left);
        $j("#divAppendix").css("top", top);
    });
    $j(".appendix").die("mouseout");
    $j(".appendix").live("mouseout", function() {
            $j("#divAppendix").remove();
    });        
        
    // menu & sub-menu
    $j(".liSubMenu").die("hover");
    $j(".liSubMenu").live("hover",function() {
        $j(this).toggleClass("subnavliover");
    });
    

    function genBlueWhiteTable() {        
        // auto gen style for blueWhiteTable
        $j("table.blueWhiteTable").each(function() {
            if (!$j(this).hasClass("blueWhiteTable_done")) {
                var thisTable;

                if ($j(this).children("tr").length == 0)    // eg <tbody> under <table>
                    thisTable = $j(this).children();
                else
                    thisTable = $j(this);

                var noOfTd = thisTable.children("tr:first").children("td").length

                // add alternative bg color
                thisTable.children("tr:odd").addClass("white");
                thisTable.children("tr:even").addClass("whitebluelargetablealter");

                // add top style
                thisTable.children("tr:first").addClass("blue_large_table_top").removeClass("whitebluelargetablealter");

                // add bottom <tr>
                $j("<tr class='whitebluelargetablebot'></tr>").insertAfter(thisTable.children("tr:last"));
                for ($i = 1; $i <= noOfTd; $i++) {
                    thisTable.children("tr:last").append("<td></td>")
                }

                // add <td> seperater : verticle line
                $j("<td class='investindexedvlineblue' width=1></td>").insertAfter(thisTable.children("tr").children("td"));
                thisTable.children("tr").each(function() { $j(this).children("td:last").remove(); });

                // add left and right <td>
                thisTable.children("tr:odd").prepend("<td class='whitebluelargetablewhiteborderleft2'></td>")
                thisTable.children("tr:odd").append("<td class='whitebluelargetablewhiteborderright2'></td>")
                thisTable.children("tr:even").prepend("<td class='whitebluelargetableblueborderleft2'></td>")
                thisTable.children("tr:even").append("<td class='whitebluelargetableblueborderright2'></td>")

                // add corners
                thisTable.children("tr:first").children("td:first").removeClass("whitebluelargetablewhiteborderleft2").addClass("blueWhiteTableLeftTop");
                thisTable.children("tr:first").children("td:last").removeClass("whitebluelargetablewhiteborderright2").addClass("blueWhiteTableRightTop");
                thisTable.children("tr:last").children("td:first").removeClass("whitebluelargetablewhiteborderleft2").addClass("blueWhiteTableLeftBottom");
                thisTable.children("tr:last").children("td:last").removeClass("whitebluelargetablewhiteborderright2").addClass("blueWhiteTableRightBottom");

                $j(this).addClass("blueWhiteTable_done");
            }
        });
    }

    function resetBlueWhiteTableBgColor(obj) {
        
        var thisTable;

        if (obj.children("tr").length == 0) {
            thisTable = obj.children();
            if (thisTable.children("tr").length == 0) {
                thisTable = thisTable.children();
            }
        } else {
            thisTable = obj;
        }

        // add alternative bg color
        thisTable.children("tr.data:odd").addClass("white");
        thisTable.children("tr.data:even").addClass("whitebluelargetablealter");

        // change alternative left and right <td>
        thisTable.children("tr.data:odd").each(function() {
            $j(this).children().first().addClass("whitebluelargetableblueborderleft2").removeClass("whitebluelargetablewhiteborderleft2");
            $j(this).children().last().addClass("whitebluelargetableblueborderright2").removeClass("whitebluelargetablewhiteborderright2");
        });
        thisTable.children("tr.data:even").each(function() {
            $j(this).children().first().addClass("whitebluelargetablewhiteborderleft2").removeClass("whitebluelargetableblueborderleft2");
            $j(this).children().last().addClass("whitebluelargetablewhiteborderright2").removeClass("whitebluelargetableblueborderright2");
        });
    }

    function genGrayWhiteTable() {
        // auto gen style for blueWhiteTable
        $j("table.grayWhiteTable").each(function() {
            if (!$j(this).hasClass("grayWhiteTable_done")) {
                var thisTable;

                if ($j(this).children("tr").length == 0)    // eg <tbody> under <table>
                    thisTable = $j(this).children();
                else
                    thisTable = $j(this);

                var noOfTd = thisTable.children("tr:first").children("td").length

                // add alternative bg color
                thisTable.children("tr:odd").addClass("white");
                thisTable.children("tr:even").addClass("investindexedreturntablealter");

                // add top style
                thisTable.children("tr:first").addClass("blue_large_table_top").removeClass("investindexedreturntablealter");

                // add bottom <tr>
                $j("<tr class='blue_large_table_bot'></tr>").insertAfter(thisTable.children("tr:last"));
                for ($i = 1; $i <= noOfTd; $i++) {
                    thisTable.children("tr:last").append("<td></td>")
                }

                // add <td> seperater : verticle line
                $j("<td class='investindexedvlineblue' width=1></td>").insertAfter(thisTable.children("tr").children("td"));
                thisTable.children("tr").each(function() { $j(this).children("td:last").remove(); });

                // add left and right <td>
                thisTable.children("tr:odd").prepend("<td class='roundtablewhiteborderleft'></td>")
                thisTable.children("tr:odd").append("<td class='roundtablewhiteborderright'></td>")
                thisTable.children("tr:even").prepend("<td class='roundtablegreyborderleft'></td>")
                thisTable.children("tr:even").append("<td class='roundtablegreyborderright'></td>")

                // add corners
                thisTable.children("tr:first").children("td:first").removeClass("roundtablewhiteborderleft").addClass("grayWhiteTableLeftTop");
                thisTable.children("tr:first").children("td:last").removeClass("roundtablewhiteborderright").addClass("grayWhiteTableRightTop");
                thisTable.children("tr:last").children("td:first").removeClass("roundtablewhiteborderleft").addClass("grayWhiteTableLeftBottom");
                thisTable.children("tr:last").children("td:last").removeClass("roundtablewhiteborderright").addClass("grayWhiteTableRightBottom");

                $j(this).addClass("grayWhiteTable_done");
            }
        });
    }

    function resetGrayWhiteTableBgColor(obj) {

        var thisTable;

        if (obj.children("tr").length == 0) {
            thisTable = obj.children();
            if (thisTable.children("tr").length == 0) {
                thisTable = thisTable.children();
            }
        } else {
            thisTable = obj;            
        }
        
        //thisTable.children("tr").css("background-color", "yellow");
        // change alternative bg color
        thisTable.children("tr.data:odd").addClass("investindexedreturntablealter").removeClass("white");
        thisTable.children("tr.data:even").addClass("white").removeClass("investindexedreturntablealter");

        // change alternative left and right <td>
        thisTable.children("tr.data:odd").each(function() {
            $j(this).children().first().addClass("roundtablegreyborderleft").removeClass("roundtablewhiteborderleft");
            $j(this).children().last().addClass("roundtablegreyborderright").removeClass("roundtablewhiteborderright");
        });
        thisTable.children("tr.data:even").each(function() {
            $j(this).children().first().addClass("roundtablewhiteborderleft").removeClass("roundtablewhiteborderright");
            $j(this).children().last().addClass("roundtablewhiteborderright").removeClass("roundtablewhiteborderleft");
        });
        
    }
    
} catch (er) {
    alert("Err #generaljs");
} 





