﻿
$(document).ready(function() {

    // Submit -> Button substitution

    $("input.substitute.button:submit").each(function() {
        var a = $("<a/>").addClass($(this).attr("class")).attr("href", "javascript:;");
        var span = $("<span/>").text($(this).val());

        a.click(function() {
            $(this).parents("form").submit();
        });
        a.append(span);
        $(this).replaceWith(a);
    });


    $('#global-login .email input').val($.cookie('Email'));

    $('#global-login input').keypress(function(e) {
        if (e.which == 13) { $('#global-login').submit(); }
    });

    $("a#login-toggle").attr("href", "javascript:;").click(function() {
        $(this).parent().hide();
        $('#global-login .loginform').toggle();

        var emailField = $("#global-login .loginform .email input");
        var passwordField = $("#global-login .loginform .password input");

        if (emailField.val().length == 0)
            emailField.focus();
        else
            passwordField.focus();

        
    });
});




/* Game Menu */


$(document).ready(function() {
    $(".navGlobal").find(".subnavGlobal").hover(
			function() {
			    $(this).prev().addClass("hover");
			},
			function() {
			    $(this).prev().removeClass("hover");
			}
		);

    /*show/hide teams-list under each game in global menu*/
    $("li.games").find("a.teams-toggle").toggle(
			function() {
			    $(this).addClass("open");
			    var g = $(this).parent().attr("class");
			    var t = $(this).parent().find("ul.teams");
			    setShowteams(g, "open");
			    t.slideDown("fast");
			},
			function() {
			    $(this).removeClass("open");
			    var g = $(this).parent().attr("class");
			    var t = $(this).parent().find("ul.teams");
			    setShowteams(g, "closed");
			    t.slideUp("fast");
			}
		);
    // gmenu_[GAMENAME]_showteams
    function setShowteams(game, state) {
        var c = "gmenu_" + game + "_showteams";
        var d = new Date();
        d.setFullYear(d.getFullYear() + 1);
        $.cookie(c, state, { path: '/', expires: d });
        return;
    }

    // hide all team lists initially
    $("li.games").find("ul.teams").hide();
    // show teams according to cookies: gmenu_[GAME CLASS]_showteams" val: open/closed
    var games = $("li.games ul.subnavGlobal > li");
    jQuery.each(games, function() {
        var c = $.cookie("gmenu_" + $(this).attr("class") + "_showteams");
        if (c == "open") {
            $(this).find("a.teams-toggle").click();
        }
    });
});




/* String Buffer */

function StringBuffer() {
    this.buffer = [];
}

StringBuffer.prototype.append = function append(string) {
    this.buffer.push(string);
    return this;
};

StringBuffer.prototype.toString = function toString() {
    return this.buffer.join("");
};






function hookElementStatistics(element) {
    element.find("tbody td.lookup").each(function() {
        var text = $(this).text();
        if (text.length > 0) {
            var a = $("<a/>").attr("href", "javascript:;").addClass("toggle").text("+");
            $(this).prepend(a);
        }
    });


    element.find("tbody.hook-events").hide();

    if (document.location.hash.length > 0) {
        var hash = document.location.hash.substring(1);
        var items = element.find("tbody.match td.lookup:contains(" + hash + ")");

        $.each(items, function(i, item) {
            $(item).parents("tbody").find("a.toggle").addClass("open");
            $(item).parents("tbody").next("tbody.hook-events").addClass("open").show();
        });
    }

    element.find("a.toggle").click(function() {
        $(this).toggleClass("open");
        $(this).parents("tbody").next("tbody.hook-events").toggleClass("open").toggle();
    });
}


function hookAchievements() {
    var achievements = $("img.achievement");
    $.each(achievements, function(item, i) {
        alert("ach");
    });
}


/* Arrays */

Array.prototype.indexOf = function(o) {
    var i = this.length;
    while (i--) {
        if (this[i] === o) {
            return i;
        }
    }
    return -1;
}


/* Number formatting */

function formatCurrency(s, currency, digitGroupingCharacter, decimalCharacter) {
    var n = parseInt(s);
    var abs = Math.abs(n);
    var t = abs.toString();

    s += '';
    x = t.split(decimalCharacter);
    x1 = x[0];
    
    x2 = x.length > 1 ? decimalCharacter + x[1] : '';
    var rgx = /(\d+)(\d{3})/;
    while (rgx.test(x1)) {
        x1 = x1.replace(rgx, '$1' + digitGroupingCharacter + '$2');
    }

    if (n < 0) {
        var t = "-" + currency + x1 + x2;
        return "<span class=\"negative\">" + t + "</span>";
    }
    else {
        var t = currency + x1 + x2;
        return t;
    }

}


/* Achievements */

$(document).ready(function() {
    var achievements = $("img.achievement");
    $.each(achievements, function(i, achievement) {
        var a = $("<a/>").attr("href", "javascript:;").addClass("achievement");
        $(achievement).wrap(a);
    });

    $("a.achievement").click(showAchievement);
});

var achievement;

function ensureAchievementContainer() {
    if (achievement == null) {
        achievement = $("<div/>").attr("id", "dim").hide();
        $("body").prepend(achievement);
    }
}



function showAchievement(e) {
    ensureAchievementContainer();
    achievement.show();

    var img = $("img", $(this));

    var id = img.attr("id");
    var parts = id.split("-");
    var language = parts[1];
    var achievementId = parts[2];

    var url = "/" + language + "/a/" + achievementId;

    $.get(url, function(data, textStatus) {
        achievement.html(data);
        hookAchievementDismiss(achievement);
    });
}

function hookAchievementDismiss() {
    $("a.dismiss", achievement).click(hideAchievement);
}

function hideAchievement() {
    if (achievement != null) {
        achievement.hide();
        achievement.html("");
    }
}