QuickHit.Game = {};
QuickHit.Game.Football = {};

$(document).ready(function() {
    QuickHit.Game.Football.init();
});

QuickHit.Game.Football.init = function() {
    $(".play-small, .play-large, .accept-invite-button").live("click", function() {
        var button = $(this);
		button.addClass("awaiting");
        if (button.hasClass("ai")) { //Launch game...
            button.removeClass("available").addClass("challenged");
            var opponentTeamId = button.children(".team-id").length ? button.children(".team-id").val() : button.text();
            if (button.hasClass("campaign")) {
                QuickHit.Game.Football.Campaign(opponentTeamId, function(success, data) {
                    button.removeClass("challenged").addClass("available");
                });
            } else {
                QuickHit.Game.Football.MakeMatch(opponentTeamId, button.attr("name"), false, function(success, data) {
                    button.removeClass("challenged").addClass("available");
                });
            }
			return false;

        } else { //User...
            var mode = button.attr("name").replace("-","_").toUpperCase();
            if (button.hasClass("available")) {
                if (button.hasClass("invite")) {
                    button.removeClass("available").addClass("challenged");
                    var opponent = button.children(".username").length ? button.children(".username").val() : button.text();
                    QuickHit.MessageCenter.outgoingInvite(opponent, mode);
                } else {
                    //var multiOpponentTeamId = button.children(".team-id").length ? button.children(".team-id").val() : button.text();
                    var multiOpponentTeamId = button.attr("id");
                    QuickHit.Game.Football.MakeMatch(multiOpponentTeamId, mode, true, function(success, data) {
                        if (success === true) {
                            var window = button.parents(".window");
                            data.teamId = data.opponentTeamId;
                            data.teamLevel = data.opponentTeamLevel;
                            QuickHit.MessageCenter.outgoingAccept(window.attr("id").replace("invite-", ""), escape(JSON.stringify(data)));
                            button.removeClass("challenged").addClass("in-game");
                        } else {
                            QuickHit.MessageCenter.opponent = null;
                            QuickHit.MessageCenter.gameLaunching = false;
                            button.removeClass("challenged").addClass("unavailable");
                        }
                    });
                }
            }
			return false;
        }
    });
};



QuickHit.Game.Football.MakeMatch = function(opponentTeamId, gameMode, multiPlayer, callback) {
    if(QuickHit.Maintenance.down){
        alert(QuickHit.Maintenance.message);
        return false;
    }
    if(opponentTeamId === undefined) {
        callback(false, null);
        return false;
    }

    var data = {opponentTeamId: opponentTeamId};
    if (multiPlayer)
    {
        data = {opponentTeamId: opponentTeamId, gameMode : gameMode, multiPlayer: "true"};
    }
    else
    {
        data = {opponentTeamId: opponentTeamId, gameMode : gameMode};
    }

    $.ajax({
        type: "GET",
        url: "/gameRequest/initGame",
        data: data,
        dataType: "json",
        cache: false,
        success: function(data, status, xhr) {
            if (status == "success") {
                if (typeof(data.gsb) === "undefined" || data.gsb === null) {
                    callback(false);
                }
                else {
                    callback(true, data);
                    //QuickHit.Game.Football.Embed(escape(xhr.responseText));
                    $("#gameLaunchResult")[0].value = escape(xhr.responseText);
                    $("#gameLaunch").submit();
                }
            }
        }
    });
};

QuickHit.Game.Football.Campaign = function(challengeGameId, challengeId, campaignId, campaignName, callback) {
    if(QuickHit.Maintenance.down){
        alert(QuickHit.Maintenance.message);
        return;
    }
    $("body").addClass("campaign-game");
    $.ajax({
        type: "GET",
        url: "/gameRequest/newCampaignGame",
        data: { challengeGameId: challengeGameId, challengeId: challengeId, campaignId: campaignId, campaignName: campaignName },
        dataType: "json",
        async: false,
        cache: false,
        success: function(data, status, xhr) {
            if (status == "success") {
                if (typeof(data.gsb) === "undefined" || data.gsb === null) {
                    callback(false);
                }
                else {
                    callback(true, data);
                    $("#gameLaunchResult")[0].value = escape(xhr.responseText);
                    $("#gameLaunch").submit();
                }
            }
        }
    });
};

