﻿
$(document).ready(function() {
    $("input.substitute.button:submit").each(function() {
        var a = $("<a/>").addClass($(this).attr("class"));
        var span = $("<span/>").text($(this).val());

        a.click(function() {
            $(this).parents("form").submit();
        });
        a.append(span);
        $(this).replaceWith(a);
    });

    hookAchievements();


    $(".navGlobal .subnavGlobal").hover(
			function() {
			    $(this).prev().addClass("hover");
			},
			function() {
			    $(this).prev().removeClass("hover");
			});

    $(".navAccount .subnavGlobal").hover(
			function() {
			    $(this).prev().addClass("hover");
			},
			function() {
			    $(this).prev().removeClass("hover");
			});

});


$(document).ready(function() {
    $('.email input').val($.cookie('Email'));


    $('.loginform input').keypress(function(e) {
    if (e.which == 13) {
        var href = $('div.submit a').attr('href');
        var parts = href.split(":");
        eval(parts[1]);
        //location.href = $('div.submit a').attr('href'); 
        }
    });

    $('.login a').click(function() {
        $(this).parent().hide();
        $('.loginform').toggle();

        if (!$.cookie('Email'))
            $('.loginform .email input').focus();
        else
            $('.loginform .password input').focus();
    });
});


function applyUser(data) {
    $('#placeholder').hide();
    if (data.IsAuthenticated) {
        $('#userName').text(data.Name);
        $('#userName').attr('href', data.ProfileUrl);
        $('#authenticated').show();
        $('#unauthenticated').hide();
        $("body").addClass("auth");

        $('#message').html(data.Message);
    }
    else {
        $('#message').hide();
        $('#authenticated').hide();
        $('#unauthenticated').show();
    }
}


function initOverLabels() {
    if (!document.getElementById) return;

    var labels, id, field;

    // Set focus and blur handlers to hide and show 
    // labels with 'overlabel' class names.
    labels = document.getElementsByTagName('label');
    for (var i = 0; i < labels.length; i++) {
        if (labels[i].className == 'overlabel') {
            // Skip labels that do not have a named association
            // with another field.
            id = labels[i].htmlFor || labels[i].getAttribute('for');
            if (!id || !(field = document.getElementById(id))) {
                continue;
            }
            // Change the applied class to hover the label 
            // over the form field.
            labels[i].className = 'overlabel-apply';
            // Hide any fields having an initial value.
            if (field.value !== '') {
                hideLabel(field.getAttribute('id'), true);
            }

            // Set handlers to show and hide labels.
            field.onfocus = function() {
                hideLabel(this.getAttribute('id'), true);
            };
            field.onblur = function() {
                if (this.value === '') {
                    hideLabel(this.getAttribute('id'), false);
                }
            };
            // Handle clicks to label elements (for Safari).
            labels[i].onclick = function() {
                var id, field;
                id = this.getAttribute('for');
                if (id && (field = document.getElementById(id))) {
                    field.focus();
                }
            };

        }
    }
};
function hideLabel(field_id, hide) {
    var field_for;
    var labels = document.getElementsByTagName('label');
    for (var i = 0; i < labels.length; i++) {
        field_for = labels[i].htmlFor || labels[i].getAttribute('for');
        if (field_for == field_id) {
            labels[i].style.textIndent = (hide) ? '-1000px' : '0px';
            return true;
        }
    }
}
window.onload = function() {
    setTimeout(initOverLabels, 50);
};


/* 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();
    });
}


var achievement;

function ensureAchievementContainer() {
    if (achievement == null) {
        //achievement = $("<div/>").attr("id", "dim").hide(); //testing - shukri
        achievement = $("<div/>").attr("id", "acv").addClass("dialog achievement").hide();
        $("body").prepend(achievement);
    }
}

function hookAchievements() {

    var images = $("img.achievement")
    $.each(images, function(i, item) {
        var a = $("<a/>").attr("href", "javascript:;").addClass("achievement");
        $(item).wrap(a);
    });

    $("a.achievement").click(showAchievement);
}

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("");
    }
}
