﻿

// Start: Generic Calls
var chatScript = null;
var genericLoading = null;
var genericNoResultsMessage = null;
var memberUrl = "../Member/MemberProfile.aspx?MemberId=";
var teamUrl = "../Team/TeamHome.aspx?TeamId=";
var clubUrl = "../Club/ClubHome.aspx?ClubId=";
var teamBlogUrl = "../Team/TeamBlog.aspx?Option=3&ArtID=";
var memberBlogUrl = "../Member/ProfileCommunity.aspx?Option=3&ArtID=";
var defaultLeagueSmallImage = "";
var defaultTournamentSmallImage = "";
var defaultTournamentBigImage = "../images/tournament/default.jpg";
var defaultNewsSmallImage = "../images/iconList1.jpg";
var defaultMemberSmallImage = "../images/noImageSeleted.jpg";
var defaultTeamSmallImage = "";
var defaultClubSmallImage = "../images/iconList1.jpg";
var defaultBlogSmallImage = "../images/iconList1.jpg";
var defaultBranchSmallImage = "../images/branches/us_civilian_mini.jpg";
var defaultSkillSmallImage = "../images/skill/beginner_mini.jpg";
var matchLink = new Object();

matchLink[1] = "/League/Match.aspx?MatchId=";
matchLink[2] = "/Tournament/Match.aspx?MatchId=";
matchLink[3] = "/Match/ReportScore.aspx?MatchId=";

var competitionLink = new Object();

competitionLink[1] = "/League/Info.aspx?LeagueId=";
competitionLink[2] = "/Tournament/Info.aspx?TournamentId=";
competitionLink[3] = "/Game/Game.aspx?GameId=";

function Chat(user) {
    if (chatScript != null) {
        chatScript.open(user, "");
    }
    else {
        alert('You must be logged in to enable this function.');
    }
}

function Hide(htmlObject) {
    $("#" + htmlObject).hide();
}

function getParameterByName(webMethod, name) {
    name = name.toLowerCase();
    webMethod = webMethod.toLowerCase();
    name = name.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]");
    var regexS = "[\\?&]" + name + "=([^&#]*)";
    var regex = new RegExp(regexS);
    var results = regex.exec(webMethod);
    if (results == null)
        return "";
    else
        return results[1];
}

function SetDefaultImage(image, type) {
    var imageFile = "";
    image.onerror = null;
    switch (type) {
        case 1:
            imageFile = defaultNewsSmallImage;
            break;
        case 2:
            break;
        case 3:
            break;
        case 4:
            imageFile = defaultClubSmallImage;
            break;
        case 5:
            imageFile = defaultMemberSmallImage;
            break;
        case 6:
            imageFile = defaultBlogSmallImage;
            break;
        case 7:
            imageFile = defaultTournamentBigImage;
            break;
        case 8:
            imageFile = defaultBranchSmallImage;
            break;
        case 9:
            imageFile = defaultSkillSmallImage;
            break;
        default:
            break;
    }
    image.src = imageFile;
}

function SetGenericLoader(placeHolder) {
    if (genericLoading == null) {
        genericLoading = $('#genericLoader');
    }
    placeHolder.html(genericLoading.html());
}

function SetGenericNoResultsMessage(placeHolder, message) {
    if (genericNoResultsMessage == null) {
        genericNoResultsMessage = $('#genericNoResultsMessage');
    }

    var text = genericNoResultsMessage.html().replace(/\[Message\]/g, message);
    placeHolder.html(text);
}

function GenericAjaxCall(webMethod, returningFunction) {
    $.ajax({
        type: "GET",
        url: webMethod,
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: returningFunction,
        error: GenericErrorFunction
    });
}

function GenericErrorFunction(e, text) {
    alert(e + ":" + text);
}

function SetGenericPagination(placeHolder, pages, pageFunction, pageNextFunction, pagePreviousFunction, maximunNumberOfPages) {
    var start = 0;
    var end = pages;
    var result = "";
    var first = "";
    var last = "";
    result += "<ul><li><a href=\"javascript:" + pagePreviousFunction + "()\" class=\"prevnext\">« back</a></li>";
    if (maximunNumberOfPages != null) {
        if (maximunNumberOfPages < pages) {
            first = "<li id='" + pageFunction.replace(".", "") + "First'><a  href='javascript:" + pageFunction + "(0)'>..</a></li>";
            last = "<li id='" + pageFunction.replace(".", "") + "Last'><a href='javascript:" + pageFunction + "(" + (pages-1) + ")'>..</a></li>";
        }
    }

    result += first;

    for (var i = 0; i < pages; i++) {

            result += "<li><a name=\"" + pageFunction + "\" href=\"javascript:" + pageFunction + "(" + i + ")\">" + (i + 1) + "</a></li>";
        
    }

    result += last;
    
    
    result += "<li><a href=\"javascript:" + pageNextFunction + "()\" class=\"prevnext\">next »</a></li></ul>";
    placeHolder.html(result);
}

function showToolTip(obj, show) {
    var tooltip = obj.childNodes[1];
    if (tooltip == undefined) {
        tooltip = obj.childNodes[0];
    }
    if (show) {
        tooltip.style.display = '';

    }
    else {
        tooltip.style.display = 'none';
    }
}
// End: Generic Calls

// Start: Send Challenges
var sendChallengeContainer = null;
var sendChallengeFrame = null;
var sendChallengeContentFrame = null;

function GetSendChallengesContainer() {
    if (sendChallengeContainer == null) {
        sendChallengeContainer = $('#sendChallengeContainer');
    }
    return sendChallengeContainer;
}

function GetSendChallengesFrame() {
    if (sendChallengeContentFrame == null) {
        sendChallengeContentFrame = $($.browser.msie ? frames["sendChallengeFrame"] : "#sendChallengeFrame");
    }
    return sendChallengeContentFrame;
}

function ShowSendChallengesFrame(matchID, contestantID, action, GameId) {

    var oIframe = document.getElementById("sendChallengeFrame");
    var oDoc = oIframe.contentWindow || oIframe.contentDocument;
    if (oDoc.document) {
        oDoc = oDoc.document;
    }
    //SetGenericLoader(GetSendChallengesContainer());
    var src = "../Match/MatchDetails.aspx?MatchID=" + matchID + "&ContestantID=" + contestantID + "&action=" + action + "&GameId=" + GameId;
    oIframe.src = src;
    //myiframe[0].onload = myiframe.show;
    //myiframe.show();
    // myiframe.onreadystatechange = ShowSendChallengesFrameOnLoad;
}

function ShowSendChallengesFrameOnLoad() {

    //var myiframe = $($.browser.msie ? frames["sendChallengeFrame"] : "#sendChallengeFrame");
    //var otherIframe = $("#sendChallengeFrame");

    var oIframe = document.getElementById("sendChallengeFrame");
    var oDoc = oIframe.contentWindow || oIframe.contentDocument;
    if (oDoc.document) {
        oDoc = oDoc.document;
    }

    if (oIframe.src != "") {
        oIframe.style.display = "";
    }

}

function HideSendChallengesFrame() {
    var oIframe = document.getElementById("sendChallengeFrame");
    var oDoc = oIframe.contentWindow || oIframe.contentDocument;
    if (oDoc.document) {
        oDoc = oDoc.document;
    }
    oIframe.style.display = "none";
}
// End: Send Challenges

// Start: Big League List
var bigLeagueListContainer = null;
var bigLeagueListWebMethod = null;
var bigLeagueListTemplate = null;
var bigLeagueListHeader = null;
var bigLeagueListPage = 0;
var bigLeagueListTabs = null;
var bigLeagueListObjects = null;
var bigLeagueListMaxCount = 10;
var bigLeagueListMaxPages = 0;
var bigLeagueListPagination = null;
var bigLeagueListPages = null;
var bigLeagueListEmptyError = "There are no leagues ...";

function GetBigLeagueListPages() {
    if (bigLeagueListPages == null) {
        bigLeagueListPages = $("a[name='SetBigLeagueListPage']");
    }
    return bigLeagueListPages;
}

function GetBigLeagueListContainer() {
    if (bigLeagueListContainer == null) {
        bigLeagueListContainer = $('#bigLeagueList')
    }
    return bigLeagueListContainer;
}

function GetBigLeagueListTemplate() {
    if (bigLeagueListTemplate == null) {
        bigLeagueListTemplate = $('#bigLeagueListTemplate')
    }
    return bigLeagueListTemplate;
}

function GetBigLeagueListHeader() {
    if (bigLeagueListHeader == null) {
        bigLeagueListHeader = $('#bigLeagueListHeader')
    }
    return bigLeagueListHeader;
}

function GetBigLeagueListPagination() {
    if (bigLeagueListPagination == null) {
        bigLeagueListPagination = $('#bigLeagueListPagination')
    }
    return bigLeagueListPagination;
}

function GetBigLeagueListTabs() {
    if (bigLeagueListTabs == null) {
        bigLeagueListTabs = $("li[name='bigLeagueListTab']");
    }
    return bigLeagueListTabs;
}

function ChangeSelectedBigLeagueList(selectedBigLeagueList) {
    var tabs = GetBigLeagueListTabs();
    tabs.each(
    function() {
        this.className = '';
    })
    tabs[selectedBigLeagueList].className = 'tabActive';
    GetBigLeagueListPaginable(selectedBigLeagueList);
}

function GetBigLeagueListPaginable(type) {
    SetGenericLoader(GetBigLeagueListContainer());
    var modifiedWebMethod = bigLeagueListWebMethod.replace(/\[Type\]/g, type);

    GenericAjaxCall(modifiedWebMethod, GetBigLeagueList);
}

function GetBigLeagueList(objects) {

    var BigLeagueListCount = objects.length;
    if (objects.length > 0) {
        bigLeagueListMaxPages = Math.ceil(objects.length / bigLeagueListMaxCount);
        SetGenericPagination(GetBigLeagueListPagination(), bigLeagueListMaxPages, "SetBigLeagueListPage", "SetBigLeagueListNextPage", "SetBigLeagueListPreviousPage");
        bigLeagueListObjects = objects;
        SetBigLeagueListPage(0);
    }
    else {
        SetGenericNoResultsMessage(GetBigLeagueListContainer(), bigLeagueListEmptyError);
    }
}

function SetBigLeagueListPage(page) {
    bigLeagueListPage = page;
    pages = GetBigLeagueListPages();

    pages.each(
    function() {
        this.className = '';
    })
    pages[page].className = 'currentpage';
    SetBigLeagueList(bigLeagueListObjects);
}

function SetBigLeagueListPreviousPage() {

    var page = bigLeagueListPage - 1;

    if (page >= 0) {
        SetBigLeagueListPage(page);
    }
}

function SetBigLeagueListNextPage() {
    var page = bigLeagueListPage + 1;
    if (page < bigLeagueListMaxPages) {
        SetBigLeagueListPage(page)
    }
}

function SetBigLeagueList(objects) {
    var rows = objects;
    var template = GetBigLeagueListTemplate().html();
    var item;
    var result = GetBigLeagueListHeader().html();
    var container = GetBigLeagueListContainer();

    for (var i = 0; i < rows.length; i++) {
        item = template.replace(/\[Id\]/g, rows[i].Id);
        item = item.replace(/alt=\"\[Image\]\"/g, "src=\"" + rows[i].Image + "\"");
        item = item.replace(/alt=\[Image\]/g, "src=\"" + rows[i].Image + "\"");
        item = item.replace(/\[Name\]/g, rows[i].Name);
        item = item.replace(/\[GameId\]/g, rows[i].Game.Id);
        item = item.replace(/\[GameName\]/g, rows[i].Game.Name);
        item = item.replace(/\[PlatformId\]/g, rows[i].Game.Platform.Id);
        item = item.replace(/\[PlatformName\]/g, rows[i].Game.Platform.Name);
        item = item.replace(/\[Starts\]/g, rows[i].Starts);
        item = item.replace(/\[Ends\]/g, rows[i].Ends);
        item = item.replace(/\[StatusName\]/g, rows[i].Status.Name);
        item = item.replace(/\[SkillFrom\]/g, rows[i].SkillFrom);
        item = item.replace(/\[SkillTo\]/g, rows[i].SkillTo);

        result += item;
    }
    container.html(result);
}

// End: Big League List

// Start: Profile Clubs
var profileClubsListContainer = null;
var profileMemberClubsListWebMethod = null;
var profileFindClubsListWebMethod = null;

var profileMemberClubsMyClubBox = null;
var profileMemberClubsListHeader = null;
var profileMemberClubsListTemplate = null;

var combo = Array(5);
var profileFindClubsListFilter = null;
var profileFindClubsListHeader = null;
var profileFindClubsListTemplate = null;

var profileMemberClubsListPage = 0;
var profileClubsListTabs = null;

var profileFindClubsListPagination = null;
var profileFindClubsListPages = null;
var profileFindClubsListPage = 0;
var profileFindClubsListObjects = null;
var profileFindClubsListCount = 0;
var profileFindClubsListMaxCount = 10;
var profileFindClubsListMaxPages = 20;

function GetProfileClubsListContainer() {
    if (profileClubsListContainer == null) {
        profileClubsListContainer = $('#profileClubsList')
    }
    return profileClubsListContainer;
}

function GeProfileMemberClubsMyClubBox() {
    if (profileMemberClubsMyClubBox == null) {
        profileMemberClubsMyClubBox = $('#profileMemberClubsMyClubBox')
    }
    return profileMemberClubsMyClubBox;
}

function GetProfileMemberClubsListHeader() {
    if (profileMemberClubsListHeader == null) {
        profileMemberClubsListHeader = $('#profileMemberClubsListHeader')
    }
    return profileMemberClubsListHeader;
}

function GetProfileMemberClubsListTemplate() {
    if (profileMemberClubsListTemplate == null) {
        profileMemberClubsListTemplate = $('#profileMemberClubsListTemplate')
    }
    return profileMemberClubsListTemplate;
}

function GetProfileFindClubsListTemplate() {
    if (profileFindClubsListTemplate == null) {
        profileFindClubsListTemplate = $('#profileFindClubsListTemplate')
    }
    return profileFindClubsListTemplate;
}

function GetProfileFindClubsListFilter() {
    if (profileFindClubsListFilter == null) {
        profileFindClubsListFilter = $('#profileFindClubsListFilter')
    }
    return profileFindClubsListFilter;
}

function GetProfileFindClubsListHeader() {
    if (profileFindClubsListHeader == null) {
        profileFindClubsListHeader = $('#profileFindClubsListHeader')
    }
    return profileFindClubsListHeader;
}

function GetProfileFindClubsListPagination() {
    if (profileFindClubsListPagination == null) {
        profileFindClubsListPagination = $('#profileFindClubsListPagination')
    }
    return profileFindClubsListPagination;
}

function GetProfileFindClubsPages() {
    if (profileFindClubsListPages == null) {
        profileFindClubsListPages = $("a[name='SetProfileFindClubsPage']");
    }
    return profileFindClubsListPages;
}

function SetProfileFindClubsListPaginable(objects) {
    if (objects.length > 0) {
        profileFindClubsListCount = objects.length;
        profileFindClubsListMaxPages = Math.ceil(objects.length / profileFindClubsListMaxCount);
        SetGenericPagination(GetProfileFindClubsListPagination(), profileFindClubsListMaxPages, "SetProfileFindClubsPage", "SetProfileFindClubsNextPage", "SetProfileFindClubsPreviousPage");
        profileFindClubsListObjects = objects;
        SetProfileFindClubsPage(0);
    } else {
        var container = GetProfileClubsListContainer();
        SetGenericNoResultsMessage(container, "The search returned no results.");
    }
}

function SetProfileFindClubsPage(page) {
    profileFindClubsListPage = page;
    pages = GetProfileFindClubsPages();
    pages.each(
    function() {
        this.className = '';
    })
    pages[page].className = 'currentpage';
    SetProfileFindClubsList(profileFindClubsListObjects);
}

function SetProfileFindClubsPreviousPage() {
    var page = profileFindClubsListPage - 1;

    if (page >= 0) {
        SetProfileFindClubsPage(page);
    }
}

function SetProfileFindClubsNextPage() {
    var page = profileFindClubsListPage + 1;
    if (page < profileFindClubsListMaxPages) {
        SetProfileFindClubsPage(page)
    }
}

function GetProfileClubsListTabs() {
    if (profileClubsListTabs == null) {
        profileClubsListTabs = $("li[name='profileClubsListTab']");
    }
    return profileClubsListTabs;
}

function ChangeSelectedProfileClubsList(selectedProfileClubsList) {
    var tabs = GetProfileClubsListTabs();
    tabs.each(
    function() {
        this.className = '';
    })
    tabs[selectedProfileClubsList].className = 'tabActive';
    GetProfileClubsList(selectedProfileClubsList);
}

function GetProfileClubsList(type) {
    var webMethod = "";
    var returnFunction = null;
    SetGenericLoader(GetProfileClubsListContainer());

    switch (type) {
        case 0:
            $("#profileMemberClubsMyClubBox").css("display", "block");
            $("#profileFindClubsListFilter").css("display", "none");
            webMethod = profileMemberClubsListWebMethod;
            webMethod = webMethod.replace(/\[Page\]/g, profileMemberClubsListPage);
            returnFunction = SetProfileMemberClubsList;
            break;
        case 1:
            $("#profileMemberClubsMyClubBox").css("display", "none");
            $("#profileFindClubsListFilter").css("display", "block");
            webMethod = profileFindClubsListWebMethod;
            webMethod = webMethod.replace(/\[clubName\]/g, $('#tbName').val());
            webMethod = webMethod.replace(/\[commitmentID\]/g, $(combo[0]).val());
            webMethod = webMethod.replace(/\[countryID\]/g, $(combo[1]).val());
            webMethod = webMethod.replace(/\[personalityID\]/g, $(combo[2]).val());
            webMethod = webMethod.replace(/\[timeZoneID\]/g, $(combo[3]).val());
            webMethod = webMethod.replace(/\[militaryBranchID\]/g, $(combo[4]).val());
            webMethod = webMethod.replace(/\[platformID\]/g, $(combo[5]).val());

            //            webMethod = webMethod.replace(/\[Page\]/g, profileFindClubsListPage);
            returnFunction = SetProfileFindClubsList;
            break;
    }

    GenericAjaxCall(webMethod, returnFunction);
}

function SetProfileMemberClubsList(objects) {
    var rows = objects;
    var template = GetProfileMemberClubsListTemplate().html();
    var item;
    var result = "";
    var container = GetProfileClubsListContainer();

    if (rows.length > 0) {
        result = GetProfileMemberClubsListHeader().html();

        for (var i = 0; i < rows.length; i++) {
            item = template.replace(/\[Id\]/g, rows[i].Id);
            item = item.replace(/\[Name\]/g, rows[i].Name);
            item = item.replace(/\[Image\]/g, rows[i].Image);
            item = item.replace(/\[FlagURL\]/g, rows[i].Nationality.FlagURL);
            item = item.replace(/\[Nationality\]/g, rows[i].Nationality.Name);
            item = item.replace(/\[Manager\]/g, rows[i].Manager.Username);
            item = item.replace(/\[Role\]/g, rows[i].MemberRole);
            item = item.replace(/\[Members\]/g, rows[i].Members);
            item = item.replace(/\[PrefPlatform\]/g, rows[i].PreferedPlatform.Description);
            item = item.replace(/\[Branch\]/g, rows[i].MilitaryBranch.Name);
            item = item.replace(/\[Personality\]/g, rows[i].Personality.Name);

            result += item;
        }

        container.html(result);
    }
    else {
        SetGenericNoResultsMessage(container, "<br /><br /><br /><br /><br /><br /><br />If you prefer not to be a Team Leader, you can always<br />join a team. You must send a request to the Leader<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />");
    }
}

function SetProfileFindClubsList(objects) {
    var rows = objects;
    var template = GetProfileFindClubsListTemplate().html();
    var item;
    var result = "";
    var container = GetProfileClubsListContainer();

    var countFrom = (profileFindClubsListPage * profileFindClubsListMaxCount);
    var countTo = (profileFindClubsListPage * profileFindClubsListMaxCount) + profileFindClubsListMaxCount;

    if (rows.length < countTo) {
        countTo = rows.length;
    }

    result = GetProfileFindClubsListHeader().html();
    for (var i = countFrom; i < countTo; i++) {
        item = template.replace(/\[Id\]/g, rows[i].Id);
        item = item.replace(/\[Name\]/g, rows[i].Name);
        item = item.replace(/alt=\"\[Image\]\"/g, "src=\"" + rows[i].Image + "\"");
        item = item.replace(/alt=\[Image\]/g, "src=\"" + rows[i].Image + "\"");
        item = item.replace(/\[FlagURL\]/g, rows[i].Nationality.FlagURL);
        item = item.replace(/\[Nationality\]/g, rows[i].Nationality.Name);
        item = item.replace(/\[Manager\]/g, rows[i].Manager.Username);
        item = item.replace(/\[TimeZone\]/g, rows[i].TimeZone.Description);
        item = item.replace(/\[Members\]/g, rows[i].Members);
        item = item.replace(/\[PrefPlatform\]/g, rows[i].PreferedPlatform.Description);
        item = item.replace(/\[Branch\]/g, rows[i].MilitaryBranch.Name);
        item = item.replace(/\[Personality\]/g, rows[i].Personality.Name);

        result += item;
    }

    container.html(result);
}
//End: Profile Clubs

//Start: Player Manager: Join a Clubs (Usa métodos de Profile Clubs)
function GetJoinClubsList() {
    SetGenericLoader(GetProfileClubsListContainer());

    webMethod = profileFindClubsListWebMethod;
    webMethod = webMethod.replace(/\[clubName\]/g, $('#tbName').val());
    webMethod = webMethod.replace(/\[commitmentID\]/g, $(combo[0]).val());
    webMethod = webMethod.replace(/\[countryID\]/g, $(combo[1]).val());
    webMethod = webMethod.replace(/\[personalityID\]/g, $(combo[2]).val());
    webMethod = webMethod.replace(/\[timeZoneID\]/g, $(combo[3]).val());
    webMethod = webMethod.replace(/\[militaryBranchID\]/g, $(combo[4]).val());
    webMethod = webMethod.replace(/\[platformID\]/g, $(combo[5]).val());

    returnFunction = SetProfileFindClubsListPaginable;

    GenericAjaxCall(webMethod, returnFunction);
}

//End: Player Manager: Join a Clubs

// Start: Member Games List
var memberGamesListPagination = null;
var memberGamesListContainer = null;

var memberGamesListWebMethod = null;
var memberSoloGamesListTemplate = null;
var memberSoloGamesListPage = 0;
var memberSoloGamesListPages = null;
var memberSoloGamesListMaxCount = 4;
var memberSoloGamesListMaxPages = 0;

var memberCompetitionListWebMethod = null;
var memberTeamGamesListTemplate = null;
var memberTeamGamesListPage = 0;
var memberTeamGamesListPages = null;
var memberTeamGamesListMaxCount = 4;
var memberTeamGamesListMaxPages = 0;

var memberGamesListTab = null;
var memberGamesListObjects = null;

var competitionType = null;

function GetMemberSoloGamesPages() {
    if (memberSoloGamesListPages == null) {
        memberSoloGamesListPages = $("a[name='SetMemberSoloGamesPage']");
    }
    return memberSoloGamesListPages;
}

function GetMemberTeamGamesPages() {
    if (memberTeamGamesListPages == null) {
        memberTeamGamesListPages = $("a[name='SetMemberTeamGamesPage']");
    }
    return memberTeamGamesListPages;
}

function GetMemberGamesListPagination() {
    if (memberGamesListPagination == null) {
        memberGamesListPagination = $('#memberGamesListPagination')
    }
    return memberGamesListPagination;
}

function GetMemberGamesListContainer() {
    if (memberGamesListContainer == null) {
        memberGamesListContainer = $('#memberGamesList')
    }
    return memberGamesListContainer;
}

function GetMemberSoloGamesListTemplate() {
    if (memberSoloGamesListTemplate == null) {
        memberSoloGamesListTemplate = $('#ChallengeGamesListTemplate')
    }
    return memberSoloGamesListTemplate;
}

function GetMemberTeamGamesListTemplate() {
    if (memberTeamGamesListTemplate == null) {
        memberTeamGamesListTemplate = $('#CompetitionGameListTemplate')
    }
    return memberTeamGamesListTemplate;
}

function GetMemberGamesListTabs() {
    if (memberGamesListTab == null) {
        memberGamesListTab = $("li[name='memberGamesListTab']");
    }
    return memberGamesListTab;
}

function ChangeSelectedMemberGamesList(selectedMemberGamesList) {
    var tabs = GetMemberGamesListTabs();
    tabs.each(
    function() {
        this.className = '';
    })
    tabs[selectedMemberGamesList].className = 'tabActive';
    GetMemberGamesList(selectedMemberGamesList);
}

function GetMemberGamesList(tab) {
    SetGenericLoader(GetMemberGamesListContainer());
    var webMethod = "";

    var returnFunction = null;

    switch (tab) {
        case 0:
            webMethod = memberGamesListWebMethod;
            returnFunction = SetMemberChallengeGamesPaginable;
            break;
        case 1:
            webMethod = memberCompetitionListWebMethod;
            competitionType = "League";
            webMethod = webMethod.replace(/\[Type\]/g, competitionType);
            returnFunction = SetMemberCompetitionGamesPaginable;

            break;
        case 2:
            webMethod = memberCompetitionListWebMethod;
            competitionType = "Tournament";
            webMethod = webMethod.replace(/\[Type\]/g, competitionType);
            returnFunction = SetMemberCompetitionGamesPaginable;
            break;
    }

    GenericAjaxCall(webMethod, returnFunction);
}

function SetMemberChallengeGamesPaginable(objects) {
    if (objects.length > 0) {
        memberSoloGamesListCount = objects.length;
        memberSoloGamesListMaxPages = Math.ceil(objects.length / memberSoloGamesListMaxCount);
        SetGenericPagination(GetMemberGamesListPagination(), memberSoloGamesListMaxPages, "SetMemberSoloGamesPage", "SetMemberSoloGamesNextPage", "SetMemberSoloGamesPreviousPage");
        memberGamesListObjects = objects;
        SetMemberSoloGamesPage(0);
    } else {
        var container = GetMemberGamesListContainer();
        SetGenericNoResultsMessage(container, "You are not active on any Ladder.<br><a href='../Game'><span class='text11Yellow'>Join a challenge ladder</span></a>");
    }
}

function SetMemberCompetitionGamesPaginable(objects) {
    if (objects.length > 0) {
        memberTeamGamesListCount = objects.length;
        memberTeamGamesListMaxPages = Math.ceil(objects.length / memberTeamGamesListMaxCount);
        SetGenericPagination(GetMemberGamesListPagination(), memberTeamGamesListMaxPages, "SetMemberTeamGamesPage", "SetMemberTeamGamesNextPage", "SetMemberTeamGamesPreviousPage");
        memberGamesListObjects = objects;
        SetMemberTeamGamesPage(0);
    } else {
        var container = GetMemberGamesListContainer();
        var message = "You are not active in any [CompetitionType].<br><a href='../[CompetitionType]'><span class='text11Yellow'>Join a [CompetitionType]</span></a>"
        message = message.replace(/\[CompetitionType\]/g, competitionType);
        SetGenericNoResultsMessage(container, message);
    }
}

function SetMemberSoloGamesPage(page) {
    memberSoloGamesListPage = page;
    pages = GetMemberSoloGamesPages();
    pages.each(
    function() {
        this.className = '';
    })
    pages[page].className = 'currentpage';

    SetMemberSoloGamesList(memberGamesListObjects);
}

function SetMemberSoloGamesPreviousPage() {
    var page = memberSoloGamesListPage - 1;
    if (page >= 0) {
        SetMemberSoloGamesPage(page);
    }
}

function SetMemberSoloGamesNextPage() {
    var page = memberSoloGamesListPage + 1;
    if (page < memberSoloGamesListMaxPages) {
        SetMemberSoloGamesPage(page)
    }
}

function SetMemberTeamGamesPage(page) {
    memberTeamGamesListPage = page;
    pages = GetMemberTeamGamesPages();
    pages.each(
    function() {
        this.className = '';
    })
    pages[page].className = 'currentpage';

    SetMemberTeamGamesList(memberGamesListObjects);
}

function SetMemberTeamGamesPreviousPage() {
    var page = memberTeamGamesListPage - 1;
    if (page >= 0) {
        SetMemberTeamGamesPage(page);
    }
}

function SetMemberTeamGamesNextPage() {
    var page = memberTeamGamesListPage + 1;
    if (page < memberTeamGamesListMaxPages) {
        SetMemberTeamGamesPage(page)
    }
}

function SetMemberSoloGamesList(objects) {
    var rows = objects;
    var template = GetMemberSoloGamesListTemplate().html();
    var item;
    var result = "";

    var countFrom = (memberSoloGamesListPage * memberSoloGamesListMaxCount);
    var countTo = (memberSoloGamesListPage * memberSoloGamesListMaxCount) + memberSoloGamesListMaxCount;
    var container = GetMemberGamesListContainer();

    if (rows.length < countTo) {
        countTo = rows.length;
    }

    for (var i = countFrom; i < countTo; i++) {
        item = template.replace(/\[Id\]/g, rows[i].Id);
        item = item.replace(/alt=\"\[Image\]\"/g, "src='" + rows[i].Image + "'");
        item = item.replace(/alt=\[Image\]/g, "src='" + rows[i].Image + "'");
        item = item.replace(/\[Name\]/g, rows[i].Name);
        item = item.replace(/\[PlatformId\]/g, rows[i].Platform.Id);
        item = item.replace(/\[PlatformName\]/g, rows[i].Platform.Name);
        item = item.replace(/\[MatchType\]/g, rows[i].MatchType);
        item = item.replace(/\[Points\]/g, rows[i].Points);
        item = item.replace(/\[Skill\]/g, rows[i].Skill);
        item = item.replace(/\[ContestantID\]/g, rows[i].ContestantID);

        result += item;
    }

    container.html(result);
}

function SetMemberTeamGamesList(objects) {
    var rows = objects;
    var template = GetMemberTeamGamesListTemplate().html();
    var item;
    var result = "";

    var countFrom = (memberTeamGamesListPage * memberTeamGamesListMaxCount);
    var countTo = (memberTeamGamesListPage * memberTeamGamesListMaxCount) + memberTeamGamesListMaxCount;
    var container = GetMemberGamesListContainer();

    if (rows.length < countTo) {
        countTo = rows.length;
    }

    for (var i = countFrom; i < countTo; i++) {
        item = template.replace(/\[Id\]/g, rows[i].Id);
        item = item.replace(/alt=\"\[Image\]\"/g, "src='" + rows[i].Game.Image + "'");
        item = item.replace(/alt=\[Image\]/g, "src='" + rows[i].Game.Image + "'");
        item = item.replace(/\[Name\]/g, rows[i].Name);
        item = item.replace(/\[GameName\]/g, rows[i].Game.Name);
        item = item.replace(/\[MatchType\]/g, rows[i].Game.MatchType);
        item = item.replace(/\[Points\]/g, rows[i].Points);
        item = item.replace(/\[Skill\]/g, rows[i].Skill);
        item = item.replace(/\[Rank\]/g, rows[i].Rank);
        item = item.replace(/\[Type\]/g, competitionType);
        result += item;
    }

    container.html(result);
}
// End: Member Games List

// Start: Member Teams List
var memberTeamsListContainer = null;
var memberTeamsListWebMethod = null;
var memberTeamsListTemplate = null;

var memberTeamsListPage = 0;
var memberTeamsListPages = null;
var memberTeamsListObjects = null;
var memberTeamsListMaxCount = 3;
var memberTeamsListCount = 0;
var memberTeamsListMaxPages = 0;

var memberTeamsListPagination = null;

function GetMemberTeamsListPages() {
    if (memberTeamsListPages == null) {
        memberTeamsListPages = $("a[name='SetMemberTeamsListPage']");
    }
    return memberTeamsListPages;
}

function GetMemberTeamsListContainer() {
    if (memberTeamsListContainer == null) {
        memberTeamsListContainer = $('#memberTeamsList')
    }
    return memberTeamsListContainer;
}

function GetMemberTeamsListPagination() {
    if (memberTeamsListPagination == null) {
        memberTeamsListPagination = $('#memberTeamsListPagination')
    }
    return memberTeamsListPagination;
}

function SetMemberTeamsListPaginable(objects) {
    if (objects.length > 0) {
        memberTeamsListCount = objects.length;
        memberTeamsListMaxPages = Math.ceil(objects.length / memberTeamsListMaxCount);
        SetGenericPagination(GetMemberTeamsListPagination(), memberTeamsListMaxPages, "SetMemberTeamsListPage", "SetMemberTeamsListNextPage", "SetMemberTeamsListPreviousPage");
        memberTeamsListObjects = objects;
        SetMemberTeamsListPage(0);
    } else {
        var container = GetMemberTeamsListContainer();
        SetGenericNoResultsMessage(container, "No Clubs Joined.<br /><a href=\"../Member/ProfileTeams.aspx\"><span class=\"text11Yellow\">Click Here to Search for Teams to Join</span></a><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />");
    }
}

function SetMemberTeamsListPage(page) {
    memberTeamsListPage = page;
    pages = GetMemberTeamsListPages();
    pages.each(
    function() {
        this.className = '';
    })
    pages[page].className = 'currentpage';

    SetMemberTeamsList(memberTeamsListObjects);
}

function SetMemberTeamsListPreviousPage() {
    var page = memberTeamsListPage - 1;

    if (page >= 0) {
        SetMemberTeamsListPage(page);
    }
}

function SetMemberTeamsListNextPage() {
    var page = memberTeamsListPage + 1;
    if (page < memberTeamsListMaxPages) {
        SetMemberTeamsListPage(page)
    }
}

function GetMemberTeamsListTemplate() {
    if (memberTeamsListTemplate == null) {
        memberTeamsListTemplate = $('#memberTeamsListTemplate')
    }
    return memberTeamsListTemplate;
}

function GetMemberTeamsList() {
    SetGenericLoader(GetMemberTeamsListContainer());
    webMethod = memberTeamsListWebMethod;
    //returnFunction = SetMemberTeamsList;
    returnFunction = SetMemberTeamsListPaginable;

    GenericAjaxCall(webMethod, returnFunction);
}

function SetMemberTeamsList(objects) {
    var rows = objects;
    var template = GetMemberTeamsListTemplate().html();
    var item;
    var result = "";

    var container = GetMemberTeamsListContainer();
    var countFrom = (memberTeamsListPage * memberTeamsListMaxCount);
    var countTo = (memberTeamsListPage * memberTeamsListMaxCount) + memberTeamsListMaxCount;

    if (rows.length < countTo) {
        countTo = rows.length;
    }

    for (var i = countFrom; i < countTo; i++) {
        item = template.replace(/\[Id\]/g, rows[i].Id);
        item = item.replace(/\[Name\]/g, rows[i].Name);
        item = item.replace(/alt=\"\[Image\]\"/g, "src='" + rows[i].Image + "'");
        item = item.replace(/alt=\[Image\]/g, "src='" + rows[i].Image + "'");
        item = item.replace(/\[MilitaryBranch\]/g, rows[i].MilitaryBranch.Name);
        item = item.replace(/\[MemberRole\]/g, rows[i].MemberRole);
        item = item.replace(/\[Rank\]/g, rows[i].Ranking);

        result += item;
    }

    container.html(result);
}
// End: Member Teams List

// Start: Member Friends List
var memberFriendsListContainer = null;
var memberFriendsListWebMethod = null;
var memberFriendsListTemplate = null;

function GetMemberFriendsListContainer() {
    if (memberFriendsListContainer == null) {
        memberFriendsListContainer = $('#memberFriendsList')
    }
    return memberFriendsListContainer;
}

function GetMemberFriendsListTemplate() {
    if (memberFriendsListTemplate == null) {
        memberFriendsListTemplate = $('#memberFriendsListTemplate')
    }
    return memberFriendsListTemplate;
}

function GetMemberFriendsList() {
    webMethod = memberFriendsListWebMethod;
    returnFunction = SetMemberFriendsList;

    GenericAjaxCall(webMethod, returnFunction);
}

function SetMemberFriendsList(objects) {
    var rows = objects;
    var template = GetMemberFriendsListTemplate().html();
    var item;
    var result = "";

    var container = GetMemberFriendsListContainer();

    if (rows.length > 0) {
        for (var i = 0; i < rows.length; i++) {
            item = template.replace(/\[Id\]/g, rows[i].Id);
            item = item.replace(/\alt=\"\[Image\]\"/g, "src='" + rows[i].Image + "'");
            item = item.replace(/\alt=\[Image\]/g, "src='" + rows[i].Image + "'");
            item = item.replace(/\[Name\]/g, rows[i].UserName);
            item = item.replace(/\[MilitaryBranch\]/g, rows[i].Branch.Name);
            item = item.replace(/\[Nationality\]/g, rows[i].Nationality.Name);
            item = item.replace(/\[FlagImage\]/g, rows[i].Nationality.Image);

            result += item;
        }

        container.html(result);
    }
    else {
        SetGenericNoResultsMessage(container, "No Friends Added. <br /><a href=\"../Member/SearchMembers.aspx\"><span class=\"text11Yellow\">Click Here to Search for Members</span></a><br /><br>");
    }
}
// End: Member Friends List

// Start: Profile Matches List
var filtros = Array(2);
var profileMatchesListContainer = null;
var profileMatchesWebMethod = null;
var profileMatchesListTemplate = null;
var profileMatchesListHeader = null;
//var allMatchesListPage = 0;
var profileMatchesTab = null;

function GetProfileMatchesListContainer() {
    if (profileMatchesListContainer == null) {
        profileMatchesListContainer = $('#profileMatchesList')
    }
    return profileMatchesListContainer;
}

function GetProfileMatchesListHeader() {
    if (profileMatchesListHeader == null) {
        profileMatchesListHeader = $('#profileMatchesListHeader')
    }
    return profileMatchesListHeader;
}

function GetProfileMatchesListTemplate() {
    if (profileMatchesListTemplate == null) {
        profileMatchesListTemplate = $('#profileMatchesListTemplate')
    }
    return profileMatchesListTemplate;
}

function GetProfileMatchesTab() {
    if (profileMatchesTab == null) {
        profileMatchesTab = $("li[name='profileMatchesTab']");
    }
    return profileMatchesTab;
}

function ChangeSelectedProfileMatchesList(selectedProfileMatchesList, option) {
    var tabs = GetProfileMatchesTab();
    tabs.each(
    function() {
        this.className = '';
    })
    tabs[selectedProfileMatchesList].className = 'tabActive';
    GetProfileMatchesList(selectedProfileMatchesList, option);
}

function GetProfileMatchesList(type, option) {
    SetGenericLoader(GetProfileMatchesListContainer());
    var modifiedWebMethod = profileMatchesWebMethod.replace(/\[option\]/g, option);
    modifiedWebMethod = modifiedWebMethod.replace(/\[gameID\]/g, filtros[0]);
    modifiedWebMethod = modifiedWebMethod.replace(/\[platformID\]/g, filtros[1]);

    GenericAjaxCall(modifiedWebMethod, SetProfileMatchesList);
}

function SetProfileMatchesList(objects) {
    var rows = objects;
    var template = GetProfileMatchesListTemplate().html();
    var item;
    var result = "";
    var container = GetProfileMatchesListContainer();

    if (rows.length > 0) {
        result = GetProfileMatchesListHeader().html();
        for (var i = 0; i < rows.length; i++) {
            item = template.replace(/\[Id\]/g, rows[i].Id);
            item = item.replace(/\[Date\]/g, rows[i].Date);
            item = item.replace(/\[PlatformID\]/g, rows[i].Game.Platform.Id);
            item = item.replace(/\[Platform\]/g, rows[i].Game.Platform.Description);
            item = item.replace(/\[GameID\]/g, rows[i].Game.Id);
            item = item.replace(/\[Game\]/g, rows[i].Game.Name);
            item = item.replace(/\[Hour\]/g, rows[i].Hour);
            item = item.replace(/\[ContestantHome\]/g, rows[i].ContestantHome.Name);
            item = item.replace(/\[ContestantHomeImage\]/g, rows[i].ContestantHome.Image);
            item = item.replace(/\[ContestantAway\]/g, rows[i].ContestantAway.Name);
            item = item.replace(/\[ContestantAwayImage\]/g, rows[i].ContestantAway.Image);
            item = item.replace(/\[Status\]/g, rows[i].Status);
            item = item.replace(/\[Action\]/g, rows[i].Action);
            result += item;
        }
    } else {
        result = SetGenericNoResultsMessage(container, "No Matches");
    }

    container.html(result);
}

// End: Profile Matches List

// Start: Club Member Short List
var clubMemberShortListContainer = null;
var clubMemberShortListWebMethod = null;
var clubMemberShortListHeader = null;
var clubMemberShortListTemplate = null;

var clubMemberShortListPage = 0;
var clubMemberShortListObjects = null;
var clubMemberShortListMaxCount = 6;
var clubMemberShortListMaxPages = 0;

var clubMemberShortListPagination = null;
var clubMemberShortListPages = null;

function GetClubMemberShortListPages() {
    if (clubMemberShortListPages == null) {
        clubMemberShortListPages = $("a[name='SetClubMemberShortListPage']");
    }
    return clubMemberShortListPages;
}

function GetClubMemberShortListPagination() {
    if (clubMemberShortListPagination == null) {
        clubMemberShortListPagination = $('#clubMemberShortListPagination')
    }
    return clubMemberShortListPagination;
}

function SetClubMemberShortListPaginable(objects) {
    if (objects.length > 0) {
        clubMemberShortListCount = objects.length;
        clubMemberShortListMaxPages = Math.ceil(objects.length / clubMemberShortListMaxCount);
        SetGenericPagination(GetClubMemberShortListPagination(), clubMemberShortListMaxPages, "SetClubMemberShortListPage", "SetClubMemberShortListNextPage", "SetClubMemberShortListPreviousPage");
        clubMemberShortListObjects = objects;
        SetClubMemberShortListPage(0);
    } else {
        var container = GetClubMemberShortListContainer();
        SetGenericNoResultsMessage(container, "No Members where found.");
    }
}

function SetClubMemberShortListPage(page) {
    clubMemberShortListPage = page;
    pages = GetClubMemberShortListPages();
    pages.each(
    function() {
        this.className = '';
    })
    pages[page].className = 'currentpage';
    SetClubMemberShortList(clubMemberShortListObjects);
}

function SetClubMemberShortListPreviousPage() {
    var page = clubMemberShortListPage - 1;

    if (page >= 0) {
        SetClubMemberShortListPage(page);
    }
}

function SetClubMemberShortListNextPage() {
    var page = clubMemberShortListPage + 1;
    if (page < clubMemberShortListMaxPages) {
        SetClubMemberShortListPage(page)
    }
}

function GetClubMemberShortListContainer() {
    if (clubMemberShortListContainer == null) {
        clubMemberShortListContainer = $('#clubMemberShortList')
    }
    return clubMemberShortListContainer;
}

function GetClubMemberShortListHeader() {
    if (clubMemberShortListHeader == null) {
        clubMemberShortListHeader = $('#clubMemberShortListHeader')
    }
    return clubMemberShortListHeader;
}

function GetClubMemberShortListTemplate() {
    if (clubMemberShortListTemplate == null) {
        clubMemberShortListTemplate = $('#clubMemberShortListTemplate')
    }
    return clubMemberShortListTemplate;
}

function GetClubMemberShortList() {
    SetGenericLoader(GetClubMemberShortListContainer());
    GenericAjaxCall(clubMemberShortListWebMethod, SetClubMemberShortListPaginable);
}

function SetClubMemberShortList(objects) {
    var rows = objects;
    var template = GetClubMemberShortListTemplate().html();
    var item;
    var result = "";
    var container = GetClubMemberShortListContainer();

    var countFrom = (clubMemberShortListPage * clubMemberShortListMaxCount);
    var countTo = (clubMemberShortListPage * clubMemberShortListMaxCount) + clubMemberShortListMaxCount;

    if (rows.length < countTo) {
        countTo = rows.length;
    }

    result = GetClubMemberShortListHeader().html();
    for (var i = countFrom; i < countTo; i++) {
        item = template.replace(/\[Id\]/g, rows[i].Member.Id);
        item = item.replace(/\[Username\]/g, rows[i].Member.Username);
        item = item.replace(/\[FlagURL\]/g, rows[i].Member.Nationality.FlagURL);
        item = item.replace(/\[Nationality\]/g, rows[i].Member.Nationality.Name);
        item = item.replace(/\[DateRegistered\]/g, rows[i].Member.DateRegistered);

        result += item;
    }

    container.html(result);
}

// End: Club Member Short List

// Start: Club Teams Short List

var clubTeamsShortListContainer = null;
var clubTeamsShortListWebMethod = null;
var clubTeamsShortListTemplate = null;
var clubTeamsShortListEmptyMessage = null;

function GetClubTeamsShortListContainer() {
    if (clubTeamsShortListContainer == null) {
        clubTeamsShortListContainer = $('#clubTeamsShortList')
    }
    return clubTeamsShortListContainer;
}

function GetClubTeamsShortListTemplate() {
    if (clubTeamsShortListTemplate == null) {
        clubTeamsShortListTemplate = $('#clubTeamsShortListTemplate')
    }
    return clubTeamsShortListTemplate;
}

function GetClubTeamsShortListEmptyMessage() {
    if (clubTeamsShortListEmptyMessage == null) {
        clubTeamsShortListEmptyMessage = $('#clubTeamsShortListEmptyMessage')
    }
    return clubTeamsShortListEmptyMessage;
}


function GetClubTeamsShortList() {
    SetGenericLoader(GetClubTeamsShortListContainer());
    GenericAjaxCall(clubTeamsShortListWebMethod, SetClubTeamsShortList);
}

function SetClubTeamsShortList(objects) {
    var rows = objects;
    var template = GetClubTeamsShortListTemplate().html();
    var item;
    var result = "";
    var container = GetClubTeamsShortListContainer();

    if (rows.length > 0) {
        for (var i = 0; i < rows.length; i++) {
            item = template.replace(/\[Id\]/g, rows[i].Id);
            item = item.replace(/\[GameName\]/g, rows[i].Game.GameName);
            item = item.replace(/\[Platform\]/g, rows[i].Game.Platform.Description);
            item = item.replace(/\[Captain\]/g, rows[i].Captain.Name);

            result += item;
        }
    } else {
        result = SetGenericNoResultsMessage(container, GetClubTeamsShortListEmptyMessage().html());
    }

    container.html(result);
}
// End: Club Teams Short List

// Start: Club Scheduled Matches List
var scheduledMatchesListContainer = null;
var scheduledMatchesListWebMethod = null;
var scheduledMatchesListHeader = null;
var scheduledMatchesListTemplate = null;

function GetScheduledMatchesListContainer() {
    if (scheduledMatchesListContainer == null) {
        scheduledMatchesListContainer = $('#scheduledMatchesList')
    }
    return scheduledMatchesListContainer;
}

function GetScheduledMatchesListHeader() {
    if (scheduledMatchesListHeader == null) {
        scheduledMatchesListHeader = $('#scheduledMatchesListHeader')
    }
    return scheduledMatchesListHeader;
}

function GetScheduledMatchesListTemplate() {
    if (scheduledMatchesListTemplate == null) {
        scheduledMatchesListTemplate = $('#scheduledMatchesListTemplate')
    }
    return scheduledMatchesListTemplate;
}

function GetScheduledMatchesList() {
    SetGenericLoader(GetScheduledMatchesListContainer());
    GenericAjaxCall(scheduledMatchesListWebMethod, SetScheduledMatchesList);
}

function SetScheduledMatchesList(objects) {
    var rows = objects;
    var template = GetScheduledMatchesListTemplate().html();
    var item;
    var result = "";
    var container = GetScheduledMatchesListContainer();

    if (rows.length > 0) {
        result = GetScheduledMatchesListHeader().html();
        for (var i = 0; i < rows.length; i++) {
            item = template.replace(/\[Id\]/g, rows[i].Id);
            item = item.replace(/\[Date\]/g, rows[i].Date);
            item = item.replace(/\[Hour\]/g, rows[i].Hour);
            item = item.replace(/\[ContestantHome\]/g, rows[i].ContestantHome.Name);
            item = item.replace(/\[ContestantAway\]/g, rows[i].ContestantAway.Name);

            //lbStatus
            item = item.replace(/\[Status\]/g, rows[i].lbStatus.statusText);
            item = item.replace(/\[lbStatusCss\]/g, rows[i].lbStatus.statusCss);

            //lbResult
            item = item.replace(/\[Result\]/g, rows[i].lbResult.resultText);
            item = item.replace(/\[lbStatusCss\]/g, rows[i].lbResult.resultCss);

            //Feedback Button
            item = item.replace(/\[btnFeedbackText\]/g, rows[i].btnFeedback.btnText);
            item = item.replace(/\[btnFeedbackCss\]/g, rows[i].btnFeedback.btnCss);
            item = item.replace(/\[btnFeedbackDisplay\]/g, rows[i].btnFeedback.btnDisplay);

            //View Button
            item = item.replace(/\[btnViewText\]/g, rows[i].btnView.btnText);
            item = item.replace(/\[btnViewCss\]/g, rows[i].btnView.btnCss);
            item = item.replace(/\[btnViewDisplay\]/g, rows[i].btnView.btnDisplay);

            //Accept Button
            item = item.replace(/\[btnAcceptText\]/g, rows[i].btnAccept.btnText);
            item = item.replace(/\[btnAcceptCss\]/g, rows[i].btnAccept.btnCss);
            item = item.replace(/\[btnAcceptDisplay\]/g, rows[i].btnAccept.btnDisplay);

            //Report Button
            item = item.replace(/\[btnReportText\]/g, rows[i].btnReport.btnText);
            item = item.replace(/\[btnReportCss\]/g, rows[i].btnReport.btnCss);
            item = item.replace(/\[btnReportDisplay\]/g, rows[i].btnReport.btnDisplay);

            //Dispute Button
            item = item.replace(/\[btnDisputeText\]/g, rows[i].btnDispute.btnText);
            item = item.replace(/\[btnDisputeCss\]/g, rows[i].btnDispute.btnCss);
            item = item.replace(/\[btnDisputeDisplay\]/g, rows[i].btnDispute.btnDisplay);

            result += item;
        }
    } else {
        SetGenericNoResultsMessage(container, "<br /><br />No Completed or Upcoming Matches.<br />You must Select an Active Game to Challenge.<br /><br /><br /><br /><br /><br />");
    }

    container.html(result);
}

// End: Club Scheduled Matches List

// Start: Club Active Challenges List
var activeChallengesListContainer = null;
var activeChallengesListWebMethod = null;
var activeChallengesListHeader = null;
var activeChallengesListTemplate = null;

function GetActiveChallengesListContainer() {
    if (activeChallengesListContainer == null) {
        activeChallengesListContainer = $('#activeChallengesList')
    }
    return activeChallengesListContainer;
}

function GetActiveChallengesListHeader() {
    if (activeChallengesListHeader == null) {
        activeChallengesListHeader = $('#activeChallengesListHeader')
    }
    return activeChallengesListHeader;
}

function GetActiveChallengesListTemplate() {
    if (activeChallengesListTemplate == null) {
        activeChallengesListTemplate = $('#activeChallengesListTemplate')
    }
    return activeChallengesListTemplate;
}

function GetActiveChallengesList() {
    SetGenericLoader(GetActiveChallengesListContainer());
    GenericAjaxCall(activeChallengesListWebMethod, SetActiveChallengesList);
}

function SetActiveChallengesList(objects) {
    var rows = objects;
    var template = GetActiveChallengesListTemplate().html();
    var item;
    var result = "";
    var container = GetActiveChallengesListContainer();

    if (rows.length > 0) {
        result = GetActiveChallengesListHeader().html();
        for (var i = 0; i < rows.length; i++) {
            item = template.replace(/\[Id\]/g, rows[i].Id);
            item = item.replace(/\[Date\]/g, rows[i].Date);
            item = item.replace(/\[Hour\]/g, rows[i].Hour);
            item = item.replace(/\[ContestantHome\]/g, rows[i].ContestantHome.Name);
            item = item.replace(/\[ContestantAway\]/g, rows[i].ContestantAway.Name);

            //lbStatus
            item = item.replace(/\[Status\]/g, rows[i].lbStatus.statusText);
            item = item.replace(/\[lbStatusCss\]/g, rows[i].lbStatus.statusCss);

            //lbResult
            item = item.replace(/\[Result\]/g, rows[i].lbResult.resultText);
            item = item.replace(/\[lbStatusCss\]/g, rows[i].lbResult.resultCss);

            //Feedback Button
            item = item.replace(/\[btnFeedbackText\]/g, rows[i].btnFeedback.btnText);
            item = item.replace(/\[btnFeedbackCss\]/g, rows[i].btnFeedback.btnCss);
            item = item.replace(/\[btnFeedbackDisplay\]/g, rows[i].btnFeedback.btnDisplay);

            //View Button
            item = item.replace(/\[btnViewText\]/g, rows[i].btnView.btnText);
            item = item.replace(/\[btnViewCss\]/g, rows[i].btnView.btnCss);
            item = item.replace(/\[btnViewDisplay\]/g, rows[i].btnView.btnDisplay);

            //Accept Button
            item = item.replace(/\[btnAcceptText\]/g, rows[i].btnAccept.btnText);
            item = item.replace(/\[btnAcceptCss\]/g, rows[i].btnAccept.btnCss);
            item = item.replace(/\[btnAcceptDisplay\]/g, rows[i].btnAccept.btnDisplay);

            //Report Button
            item = item.replace(/\[btnReportText\]/g, rows[i].btnReport.btnText);
            item = item.replace(/\[btnReportCss\]/g, rows[i].btnReport.btnCss);
            item = item.replace(/\[btnReportDisplay\]/g, rows[i].btnReport.btnDisplay);

            //Dispute Button
            item = item.replace(/\[btnDisputeText\]/g, rows[i].btnDispute.btnText);
            item = item.replace(/\[btnDisputeCss\]/g, rows[i].btnDispute.btnCss);
            item = item.replace(/\[btnDisputeDisplay\]/g, rows[i].btnDispute.btnDisplay);

            result += item;
        }
    } else {
        SetGenericNoResultsMessage(container, "<br /><br />No Active Matches. <br /> You must Select an Active Game to Challenge.<br /><br /><br /><br /><br /><br />");
    }

    container.html(result);
}
// End: Club Active Challenges List

// Start: Club Announcements List
var announcementsListContainer = null;
var announcementsListWebMethod = null;
var announcementsListTemplate = null;

function GetAnnouncementsListContainer() {
    if (announcementsListContainer == null) {
        announcementsListContainer = $('#announcementsList')
    }
    return announcementsListContainer;
}

function GetAnnouncementsListTemplate() {
    if (announcementsListTemplate == null) {
        announcementsListTemplate = $('#announcementsListTemplate')
    }
    return announcementsListTemplate;
}

function GetAnnouncementsList() {
    SetGenericLoader(GetAnnouncementsListContainer());
    GenericAjaxCall(announcementsListWebMethod, SetAnnouncementsList);
}

function SetAnnouncementsList(objects) {
    var rows = objects;
    var template = GetAnnouncementsListTemplate().html();
    var item;
    var result = "";
    var container = GetAnnouncementsListContainer();

    if (rows.length > 0) {
        for (var i = 0; i < rows.length; i++) {
            item = template.replace(/\[Id\]/g, rows[i].Id);
            item = item.replace(/\[Date\]/g, rows[i].Date);
            item = item.replace(/\[Title\]/g, rows[i].Title);

            result += item;
        }
    } else {
        result = SetGenericNoResultsMessage(container, "No Announcements Added.");
    }

    container.html(result);
}
// End: Club Announcements List

// Start: Club Member List

var clubMemberListContainer = null;
var clubMemberListWebMethod = null;
var clubMemberListHeader = null;
var clubMemberListTemplate = null;

var clubMemberListPage = 0;
var clubMemberListObjects = null;
var clubMemberListMaxCount = 10;
var clubMemberListMaxPages = 0;

var clubMemberListPagination = null;
var clubMemberListPages = null;

function GetClubMemberListPages() {
    if (clubMemberListPages == null) {
        clubMemberListPages = $("a[name='SetClubMemberListPage']");
    }
    return clubMemberListPages;
}

function GetClubMemberListContainer() {
    if (clubMemberListContainer == null) {
        clubMemberListContainer = $('#clubMemberList')
    }
    return clubMemberListContainer;
}

function GetClubMemberListHeader() {
    if (clubMemberListHeader == null) {
        clubMemberListHeader = $('#clubMemberListHeader')
    }
    return clubMemberListHeader;
}

function GetClubMemberListTemplate() {
    if (clubMemberListTemplate == null) {
        clubMemberListTemplate = $('#clubMemberListTemplate')
    }
    return clubMemberListTemplate;
}

function GetClubMemberListPagination() {
    if (clubMemberListPagination == null) {
        clubMemberListPagination = $('#clubMemberListPagination')
    }
    return clubMemberListPagination;
}

//***

function GetClubMemberList() {
    SetGenericLoader(GetClubMemberListContainer());
    var modifiedWebMethod = clubMemberListWebMethod.replace(/\[Page\]/g, clubMemberListPage);
    GenericAjaxCall(modifiedWebMethod, SetClubMemberListPaginable);
}

function SetClubMemberListPaginable(objects) {
    if (objects.length > 0) {
        clubMemberListCount = objects.length;
        clubMemberListMaxPages = Math.ceil(objects.length / clubMemberListMaxCount);
        SetGenericPagination(GetClubMemberListPagination(), clubMemberListMaxPages, "SetClubMemberListPage", "SetClubMemberListNextPage", "SetClubMemberListPreviousPage");
        clubMemberListObjects = objects;
        SetClubMemberListPage(0);
    } else {
        var container = GetClubMemberListContainer();
        SetGenericNoResultsMessage(container, "There are no members currently logged.");
    }
}

function SetClubMemberListPage(page) {
    clubMemberListPage = page;
    pages = GetClubMemberListPages();
    pages.each(
    function() {
        this.className = '';
    })
    pages[page].className = 'currentpage';
    SetClubMemberList(clubMemberListObjects);
}

function SetClubMemberListPreviousPage() {
    var page = clubMemberListPage - 1;

    if (page >= 0) {
        SetClubMemberListPage(page);
    }
}

function SetClubMemberListNextPage() {
    var page = clubMemberListPage + 1;
    if (page < clubMemberListMaxPages) {
        SetClubMemberListPage(page)
    }
}
//**

function SetClubMemberList(objects) {
    var rows = objects;
    var template = GetClubMemberListTemplate().html();
    var item;
    var result = "";
    var container = GetClubMemberListContainer();

    var countFrom = (clubMemberListPage * clubMemberListMaxCount);
    var countTo = (clubMemberListPage * clubMemberListMaxCount) + clubMemberListMaxCount;

    if (rows.length < countTo) {
        countTo = rows.length;
    }

    if (rows.length > 0) {
        result = GetClubMemberListHeader().html();
        for (var i = countFrom; i < countTo; i++) {
            item = template.replace(/\[Id\]/g, rows[i].Member.Id);
            item = item.replace(/\[Username\]/g, rows[i].Member.Username);
            item = item.replace(/\[Role\]/g, rows[i].RoleClub.Name);
            item = item.replace(/\[FlagURL\]/g, rows[i].Member.Nationality.FlagURL);
            item = item.replace(/\[Nationality\]/g, rows[i].Member.Nationality.Name);
            item = item.replace(/\[DateRegistered\]/g, rows[i].Member.DateRegistered);

            //Co-Manager Button
            item = item.replace(/\[btnCoManagerText\]/g, rows[i].Action.CoManager.Text);
            item = item.replace(/\[btnCoManagerCss\]/g, rows[i].Action.CoManager.Css);
            item = item.replace(/\[btnCoManagerDisplay\]/g, rows[i].Action.CoManager.Display);

            //Member Button
            item = item.replace(/\[btnMemberText\]/g, rows[i].Action.Member.Text);
            item = item.replace(/\[btnMemberCss\]/g, rows[i].Action.Member.Css);
            item = item.replace(/\[btnMemberDisplay\]/g, rows[i].Action.Member.Display);

            //Fire Button
            item = item.replace(/\[btnFireText\]/g, rows[i].Action.Fire.Text);
            item = item.replace(/\[btnFireCss\]/g, rows[i].Action.Fire.Css);
            item = item.replace(/\[btnFireDisplay\]/g, rows[i].Action.Fire.Display);

            //Aim Contact
            item = item.replace(/\[Aim\]/g, rows[i].Contact.Aim.contactUser);
            item = item.replace(/\[displayAim\]/g, rows[i].Contact.Aim.Display);

            //Msn Contact
            item = item.replace(/\[Msn\]/g, rows[i].Contact.Msn.contactUser);
            item = item.replace(/\[displayMsn\]/g, rows[i].Contact.Msn.Display);

            //Skype Contact
            item = item.replace(/\[Skype\]/g, rows[i].Contact.Skype.contactUser);
            item = item.replace(/\[displaySkype\]/g, rows[i].Contact.Skype.Display);

            //Icq Contact
            item = item.replace(/\[Icq\]/g, rows[i].Contact.Icq.contactUser);
            item = item.replace(/\[displayIcq\]/g, rows[i].Contact.Icq.Display);

            //Email Contact
            item = item.replace(/\[Email\]/g, rows[i].Contact.Email.contactUser);
            item = item.replace(/\[displayEmail\]/g, rows[i].Contact.Email.Display);

            result += item;
        }
    } else {
        result = SetGenericNoResultsMessage(container, "No Members where found.");
    }

    container.html(result);
}

// End: Club Member List

// Start: Club History List

var clubHistoryListContainer = null;
var clubHistoryListWebMethod = null;
var clubHistoryListHeader = null;
var clubHistoryListTemplate = null;

var clubHistoryListPage = 0;
var clubHistoryListObjects = null;
var clubHistoryListMaxCount = 14;
var clubHistoryListMaxPages = 0;

var clubHistoryListPagination = null;
var clubHistoryListPages = null;

function GetClubHistoryListPages() {
    if (clubHistoryListPages == null) {
        clubHistoryListPages = $("a[name='SetClubHistoryListPage']");
    }
    return clubHistoryListPages;
}

function GetClubHistoryListContainer() {
    if (clubHistoryListContainer == null) {
        clubHistoryListContainer = $('#clubHistoryList')
    }
    return clubHistoryListContainer;
}

function GetClubHistoryListHeader() {
    if (clubHistoryListHeader == null) {
        clubHistoryListHeader = $('#clubHistoryListHeader')
    }
    return clubHistoryListHeader;
}

function GetClubHistoryListTemplate() {
    if (clubHistoryListTemplate == null) {
        clubHistoryListTemplate = $('#clubHistoryListTemplate')
    }
    return clubHistoryListTemplate;
}

function GetClubHistoryList() {
    SetGenericLoader(GetClubHistoryListContainer());
    //    var modifiedWebMethod = clubHistoryListWebMethod.replace(/\[Page\]/g, clubHistoryListPage);
    GenericAjaxCall(clubHistoryListWebMethod, SetClubHistoryListPaginable);
}

function GetClubHistoryListPagination() {
    if (clubHistoryListPagination == null) {
        clubHistoryListPagination = $('#clubHistoryListPagination')
    }
    return clubHistoryListPagination;
}

function SetClubHistoryListPaginable(objects) {
    if (objects.length > 0) {
        clubHistoryListCount = objects.length;
        clubHistoryListMaxPages = Math.ceil(objects.length / clubHistoryListMaxCount);
        SetGenericPagination(GetClubHistoryListPagination(), clubHistoryListMaxPages, "SetClubHistoryListPage", "SetClubHistoryListNextPage", "SetClubHistoryListPreviousPage");
        clubHistoryListObjects = objects;
        SetClubHistoryListPage(0);
    } else {
        var container = GetClubHistoryListContainer();
        SetGenericNoResultsMessage(container, "No Members where found.");
    }
}

function SetClubHistoryListPage(page) {
    clubHistoryListPage = page;
    pages = GetClubHistoryListPages();
    pages.each(
    function() {
        this.className = '';
    })
    pages[page].className = 'currentpage';
    SetClubHistoryList(clubHistoryListObjects);
}

function SetClubHistoryListPreviousPage() {
    var page = clubHistoryListPage - 1;

    if (page >= 0) {
        SetClubHistoryListPage(page);
    }
}

function SetClubHistoryListNextPage() {
    var page = clubHistoryListPage + 1;
    if (page < clubHistoryListMaxPages) {
        SetClubHistoryListPage(page)
    }
}

function SetClubHistoryList(objects) {
    var rows = objects;
    var template = GetClubHistoryListTemplate().html();
    var item;
    var result = "";
    var container = GetClubHistoryListContainer();

    var countFrom = (clubHistoryListPage * clubHistoryListMaxCount);
    var countTo = (clubHistoryListPage * clubHistoryListMaxCount) + clubHistoryListMaxCount;

    if (rows.length < countTo) {
        countTo = rows.length;
    }

    result = GetClubHistoryListHeader().html();
    for (var i = countFrom; i < countTo; i++) {
        item = template.replace(/\[Id\]/g, rows[i].Member.Id);
        item = item.replace(/\[Username\]/g, rows[i].Member.Username);
        item = item.replace(/\[Position\]/g, rows[i].RoleClub.Name);
        item = item.replace(/\[Date\]/g, rows[i].Date);
        item = item.replace(/\[Status\]/g, rows[i].Status);
        item = item.replace(/\[ExecutedByID\]/g, rows[i].ExecutedBy.Id);
        item = item.replace(/\[ExecutedBy\]/g, rows[i].ExecutedBy.Username);

        result += item;
    }

    container.html(result);
}

// End: Club History List

// Start: Club Invitations List
var clubInvitationsListPagination = null;
var clubInvitationsListContainer = null;

var clubInvitationsListWebMethod = null;
var clubInvitationsListHeader = null;
var clubInvitationsListTemplate = null;
var clubInvitationsListPage = 0;
var clubInvitationsListPages = null;
var clubInvitationsListMaxCount = 5;
var clubInvitationsListMaxPages = 0;

var clubInvitationsListObjects = null;

function GetClubInvitationsPages() {
    if (clubInvitationsListPages == null) {
        clubInvitationsListPages = $("a[name='SetClubInvitationsPage']");
    }
    return clubInvitationsListPages;
}

function GetClubInvitationsListPagination() {
    if (clubInvitationsListPagination == null) {
        clubInvitationsListPagination = $('#clubInvitationsListPagination')
    }
    return clubInvitationsListPagination;
}

function GetClubInvitationsListContainer() {
    if (clubInvitationsListContainer == null) {
        clubInvitationsListContainer = $('#clubInvitationsList')
    }
    return clubInvitationsListContainer;
}

function GetClubInvitationsListHeader() {
    if (clubInvitationsListHeader == null) {
        clubInvitationsListHeader = $('#clubInvitationsListHeader')
    }
    return clubInvitationsListHeader;
}

function GetClubInvitationsListTemplate() {
    if (clubInvitationsListTemplate == null) {
        clubInvitationsListTemplate = $('#clubInvitationsListTemplate')
    }
    return clubInvitationsListTemplate;
}

function GetClubInvitationsList() {
    SetGenericLoader(GetClubInvitationsListContainer());
    clubInvitationsListWebMethod = clubInvitationsListWebMethod.replace(/\[Page\]/g, clubInvitationsListPage);
    GenericAjaxCall(clubInvitationsListWebMethod, SetClubInvitationsPaginable);
}

function SetClubInvitationsPaginable(objects) {
    if (objects.length > 0) {
        clubInvitationsListCount = objects.length;
        clubInvitationsListMaxPages = Math.ceil(objects.length / clubInvitationsListMaxCount);
        SetGenericPagination(GetClubInvitationsListPagination(), clubInvitationsListMaxPages, "SetClubInvitationsPage", "SetClubInvitationsNextPage", "SetClubInvitationsPreviousPage");
        clubInvitationsListObjects = objects;
        SetClubInvitationsPage(0);
    } else {
        var container = GetClubInvitationsListContainer();
        SetGenericNoResultsMessage(container, "No Invitation Were Found.");
    }
}

function SetClubInvitationsPage(page) {
    clubInvitationsListPage = page;
    pages = GetClubInvitationsPages();
    pages.each(
    function() {
        this.className = '';
    })
    pages[page].className = 'currentpage';

    SetClubInvitationsList(clubInvitationsListObjects);
}

function SetClubInvitationsPreviousPage() {
    var page = clubInvitationsListPage - 1;
    if (page >= 0) {
        SetClubInvitationsPage(page);
    }
}

function SetClubInvitationsNextPage() {
    var page = clubInvitationsListPage + 1;
    if (page < clubInvitationsListMaxPages) {
        SetClubInvitationsPage(page)
    }
}

function SetClubInvitationsList(objects) {
    var rows = objects;
    var template = GetClubInvitationsListTemplate().html();
    var item;
    var result = "";

    result += GetClubInvitationsListHeader().html();

    var countFrom = (clubInvitationsListPage * clubInvitationsListMaxCount);
    var countTo = (clubInvitationsListPage * clubInvitationsListMaxCount) + clubInvitationsListMaxCount;
    var container = GetClubInvitationsListContainer();

    if (rows.length < countTo) {
        countTo = rows.length;
    }

    if (rows.length > 0) {
        for (var i = countFrom; i < countTo; i++) {
            item = template.replace(/\[Id\]/g, rows[i].Member.Id);
            item = item.replace(/\[Name\]/g, rows[i].Member.Username);
            item = item.replace(/\[Subject\]/g, rows[i].Subject);
            item = item.replace(/\[btnAcceptDisplay\]/g, rows[i].btnAcceptDisplay);
            item = item.replace(/\[btnCancelDisplay\]/g, rows[i].btnCancelDisplay);
            item = item.replace(/\[btnDeclineDisplay\]/g, rows[i].btnDeclineDisplay);

            result += item;
        }

        container.html(result);
    }
    else {
        SetGenericNoResultsMessage(container, "No Invitation Were Found.");
    }
}
// End: Club Invitations List

// Start: Club Search Members List
var clubSearchMembersListPagination = null;
var clubSearchMembersListContainer = null;

var clubSearchMembersListWebMethod = null;
var clubSearchMembersListFilters = null;
var clubSearchMembersListTemplate = null;
var clubSearchMembersListPage = 0;
var clubSearchMembersListPages = null;
var clubSearchMembersListMaxCount = 11;
var clubSearchMembersListMaxPages = 0;

var filtersSearchMembers = Array(2);
var clubSearchMembersListObjects = null;

function GetClubSearchMembersPages() {
    if (clubSearchMembersListPages == null) {
        clubSearchMembersListPages = $("a[name='SetClubSearchMembersPage']");
    }
    return clubSearchMembersListPages;
}

function GetClubSearchMembersListPagination() {
    if (clubSearchMembersListPagination == null) {
        clubSearchMembersListPagination = $('#clubSearchMembersListPagination')
    }
    return clubSearchMembersListPagination;
}

function GetClubSearchMembersListContainer() {
    if (clubSearchMembersListFilters == null) {
        clubSearchMembersListFilters = $('#clubSearchMembersList')
    }
    return clubSearchMembersListFilters;
}

function GetClubSearchMembersListFilters() {
    if (clubSearchMembersListFilters == null) {
        clubSearchMembersListFilters = $('#clubSearchMembersListFilters')
    }
    return clubSearchMembersListFilters;
}

function GetClubSearchMembersListTemplate() {
    if (clubSearchMembersListTemplate == null) {
        clubSearchMembersListTemplate = $('#clubSearchMembersListTemplate')
    }
    return clubSearchMembersListTemplate;
}

function GetClubSearchMembersList() {
    SetGenericLoader(GetClubSearchMembersListContainer());
    var webMethod = clubSearchMembersListWebMethod;
    webMethod = webMethod.replace(/\[Page\]/g, clubSearchMembersListPage);
    webMethod = webMethod.replace(/\[Keywords\]/g, $('#filter').val());
    webMethod = webMethod.replace(/\[CountryID\]/g, $(filtersSearchMembers[0]).val());
    webMethod = webMethod.replace(/\[TimeZoneID\]/g, $(filtersSearchMembers[1]).val());
    GenericAjaxCall(webMethod, SetClubSearchMembersPaginable);
}

function SetClubSearchMembersPaginable(objects) {
    if (objects.length > 0) {
        clubSearchMembersListCount = objects.length;
        clubSearchMembersListMaxPages = Math.ceil(objects.length / clubSearchMembersListMaxCount);
        SetGenericPagination(GetClubSearchMembersListPagination(), clubSearchMembersListMaxPages, "SetClubSearchMembersPage", "SetClubSearchMembersNextPage", "SetClubSearchMembersPreviousPage");
        clubSearchMembersListObjects = objects;
        SetClubSearchMembersPage(0);
    } else {
        var container = GetClubSearchMembersListContainer();
        SetGenericNoResultsMessage(container, "No Users Were Found.");
    }
}

function SetClubSearchMembersPage(page) {
    clubSearchMembersListPage = page;
    pages = GetClubSearchMembersPages();
    pages.each(
    function() {
        this.className = '';
    })
    pages[page].className = 'currentpage';

    SetClubSearchMembersList(clubSearchMembersListObjects);
}

function SetClubSearchMembersPreviousPage() {

    var page = clubSearchMembersListPage - 1;

    if (page >= 0) {
        SetClubSearchMembersPage(page);
    }
}

function SetClubSearchMembersNextPage() {
    var page = clubSearchMembersListPage + 1;
    if (page < clubSearchMembersListMaxPages) {
        SetClubSearchMembersPage(page)
    }
}

function SetClubSearchMembersList(objects) {
    var rows = objects;
    var template = GetClubSearchMembersListTemplate().html();
    var item;
    var result = "";

    var countFrom = (clubSearchMembersListPage * clubSearchMembersListMaxCount);
    var countTo = (clubSearchMembersListPage * clubSearchMembersListMaxCount) + clubSearchMembersListMaxCount;
    var container = GetClubSearchMembersListContainer();

    if (rows.length < countTo) {
        countTo = rows.length;
    }

    if (rows.length > 0) {
        $('#clubSearchMembersListFilters').show();

        for (var i = countFrom; i < countTo; i++) {
            item = template.replace(/\[Id\]/g, rows[i].Id);
            item = item.replace(/\[Name\]/g, rows[i].Name);
            item = item.replace(/\[Since\]/g, rows[i].DateRegistered);

            result += item;
        }

        container.html(result);
    }
}
// End: Club Search Members List

// Start: Club Teams List
var clubTeamsListPagination = null;
var clubTeamsListContainer = null;

var clubTeamsListWebMethod = null;
var clubTeamsListHeader = null;
var clubTeamsListTemplate = null;
var clubTeamsListPage = 0;
var clubTeamsListPages = null;
var clubTeamsListMaxCount = 10;
var clubTeamsListMaxPages = 0;

var clubTeamsListObjects = null;

function GetClubTeamsPages() {
    if (clubTeamsListPages == null) {
        clubTeamsListPages = $("a[name='SetClubTeamsPage']");
    }
    return clubTeamsListPages;
}

function GetClubTeamsListPagination() {
    if (clubTeamsListPagination == null) {
        clubTeamsListPagination = $('#clubTeamsListPagination')
    }
    return clubTeamsListPagination;
}

function GetClubTeamsListContainer() {
    if (clubTeamsListContainer == null) {
        clubTeamsListContainer = $('#clubTeamsList')
    }
    return clubTeamsListContainer;
}

function GetClubTeamsListHeader() {
    if (clubTeamsListHeader == null) {
        clubTeamsListHeader = $('#clubTeamsListHeader')
    }
    return clubTeamsListHeader;
}

function GetClubTeamsListTemplate() {
    if (clubTeamsListTemplate == null) {
        clubTeamsListTemplate = $('#clubTeamsListTemplate')
    }
    return clubTeamsListTemplate;
}

function GetClubTeamsList() {
    SetGenericLoader(GetClubTeamsListContainer());
    clubTeamsListWebMethod = clubTeamsListWebMethod.replace(/\[Page\]/g, clubTeamsListPage);
    //GenericAjaxCall(clubTeamsListWebMethod, SetClubTeamsPaginable);
    GenericAjaxCall(clubTeamsListWebMethod, SetClubTeamsList);
}

function SetClubTeamsPaginable(objects) {
    ClubTeamsListCount = objects.length;
    ClubTeamsListMaxPages = Math.ceil(objects.length / clubTeamsListMaxCount);
    SetGenericPagination(GetClubTeamsListPagination(), clubTeamsListMaxPages, "SetClubTeamsPage", "SetClubTeamsNextPage", "SetClubTeamsPreviousPage");
    clubTeamsListObjects = objects;
    SetClubTeamsPage(0);
}

function SetClubTeamsPage(page) {
    clubTeamsListPage = page;
    pages = GetClubTeamsPages();
    pages.each(
    function() {
        this.className = '';
    })
    pages[page].className = 'currentpage';

    SetClubTeamsList(clubTeamsListObjects);
}

function SetClubTeamsPreviousPage() {
    var page = clubTeamsListPage - 1;
    if (page >= 0) {
        SetClubTeamsPage(page);
    }
}

function SetClubTeamsNextPage() {
    var page = clubTeamsListPage + 1;
    if (page < clubTeamsListMaxPages) {
        SetClubTeamsPage(page)
    }
}

function SetClubTeamsList(objects) {
    var rows = objects;
    var template = GetClubTeamsListTemplate().html();
    var item;
    var result = GetClubTeamsListHeader().html();

    //    var countFrom = (clubTeamsListPage * clubTeamsListMaxCount);
    //    var countTo = (clubTeamsListPage * clubTeamsListMaxCount) + clubTeamsListMaxCount;
    var container = GetClubTeamsListContainer();

    //    if (rows.length < countTo) {
    //        countTo = rows.length;
    //    }

    if (rows.length > 0) {
        for (var i = 0; i < rows.length; i++) {
            //for (var i = countFrom; i < countTo; i++) {
            item = template.replace(/\[Id\]/g, rows[i].Id);
            item = item.replace(/\[Ranking\]/g, rows[i].Ranking);
            item = item.replace(/\[GameId\]/g, rows[i].Game.Id);
            item = item.replace(/\[Game\]/g, rows[i].Game.GameName);
            item = item.replace(/\[PlatformId\]/g, rows[i].Game.Platform.Id);
            item = item.replace(/\[Platform\]/g, rows[i].Game.Platform.Description);
            item = item.replace(/\[CaptainId\]/g, rows[i].Captain.Id);
            item = item.replace(/\[Captain\]/g, rows[i].Captain.Name);

            result += item;
        }
    } else {
        result = SetGenericNoResultsMessage(container, "This club does not have any active team.");
    }

    container.html(result);
}
// End: Club Teams List

// Start: Club - Active a Team - Select Game List
var activeTeamGamesListPagination = null;
var activeTeamGamesListContainer = null;

var activeTeamGamesListWebMethod = null;
var activeTeamGamesListFilters = null;
var activeTeamGamesListHeader = null;
var activeTeamGamesListTemplate = null;
var activeTeamGamesListPage = 0;
var activeTeamGamesListPages = null;
var activeTeamGamesListMaxCount = 10;
var activeTeamGamesListMaxPages = 0;

var activeTeamGamePlatform = 0;
var activeTeamGamesListObjects = null;

function GetActiveTeamGamesPages() {
    if (activeTeamGamesListPages == null) {
        activeTeamGamesListPages = $("a[name='SetActiveTeamGamesPage']");
    }
    return activeTeamGamesListPages;
}

function GetActiveTeamGamesListPagination() {
    if (activeTeamGamesListPagination == null) {
        activeTeamGamesListPagination = $('#activeTeamGamesListPagination')
    }
    return activeTeamGamesListPagination;
}

function GetActiveTeamGamesListContainer() {
    if (activeTeamGamesListContainer == null) {
        activeTeamGamesListContainer = $('#activeTeamGamesList')
    }
    return activeTeamGamesListContainer;
}

function GetActiveTeamGamesListHeader() {
    if (activeTeamGamesListHeader == null) {
        activeTeamGamesListHeader = $('#activeTeamGamesListHeader')
    }
    return activeTeamGamesListHeader;
}

function GetActiveTeamGamesListTemplate() {
    if (activeTeamGamesListTemplate == null) {
        activeTeamGamesListTemplate = $('#activeTeamGamesListTemplate')
    }
    return activeTeamGamesListTemplate;
}

function GetActiveTeamGamesList() {
    SetGenericLoader(GetActiveTeamGamesListContainer());
    var webMethod = activeTeamGamesListWebMethod;
    webMethod = webMethod.replace(/\[Page\]/g, activeTeamGamesListPage);
    webMethod = webMethod.replace(/\[Keywords\]/g, $('#txtfilter').val());
    webMethod = webMethod.replace(/\[PlatformID\]/g, $(activeTeamGamePlatform).val());
    GenericAjaxCall(webMethod, SetActiveTeamGamesPaginable);
}

function SetActiveTeamGamesPaginable(objects) {
    if (objects.length > 0) {
        activeTeamGamesListCount = objects.length;
        activeTeamGamesListMaxPages = Math.ceil(objects.length / activeTeamGamesListMaxCount);
        SetGenericPagination(GetActiveTeamGamesListPagination(), activeTeamGamesListMaxPages, "SetActiveTeamGamesPage", "SetActiveTeamGamesNextPage", "SetActiveTeamGamesPreviousPage");
        activeTeamGamesListObjects = objects;
        SetActiveTeamGamesPage(0);
    } else {
        var container = GetActiveTeamGamesListContainer();
        SetGenericNoResultsMessage(container, "There are no games available.");
    }
}

function SetActiveTeamGamesPage(page) {
    activeTeamGamesListPage = page;
    pages = GetActiveTeamGamesPages();
    pages.each(
    function() {
        this.className = '';
    })
    pages[page].className = 'currentpage';

    SetActiveTeamGamesList(activeTeamGamesListObjects);
}

function SetActiveTeamGamesPreviousPage() {

    var page = activeTeamGamesListPage - 1;

    if (page >= 0) {
        SetActiveTeamGamesPage(page);
    }
}

function SetActiveTeamGamesNextPage() {
    var page = activeTeamGamesListPage + 1;
    if (page < activeTeamGamesListMaxPages) {
        SetActiveTeamGamesPage(page)
    }
}

function SetActiveTeamGamesList(objects) {
    var rows = objects;
    var template = GetActiveTeamGamesListTemplate().html();
    var item;
    var result = GetActiveTeamGamesListHeader().html();

    var countFrom = (activeTeamGamesListPage * activeTeamGamesListMaxCount);
    var countTo = (activeTeamGamesListPage * activeTeamGamesListMaxCount) + activeTeamGamesListMaxCount;
    var container = GetActiveTeamGamesListContainer();

    if (rows.length < countTo) {
        countTo = rows.length;
    }

    for (var i = countFrom; i < countTo; i++) {
        item = template.replace(/\[Id\]/g, rows[i].Id);
        item = item.replace(/\[GameName\]/g, rows[i].Name);
        item = item.replace(/\[GameAbbreviation\]/g, rows[i].Abbreviation);
        item = item.replace(/\[MinNumber\]/g, rows[i].MinNumber);
        item = item.replace(/\[MaxNumber\]/g, rows[i].MaxNumber);
        item = item.replace(/\[Platform\]/g, rows[i].Platform.Description);

        result += item;
    }

    container.html(result);
}
// End: Club - Active a Team - Select Game List

// Start: Club - Active a Team - Select Captains List
var activeTeamCaptainsListPagination = null;
var activeTeamCaptainsListContainer = null;

var activeTeamCaptainsListWebMethod = null;
var activeTeamCaptainsListFilters = null;
var activeTeamCaptainsListHeader = null;
var activeTeamCaptainsListTemplate = null;
var activeTeamCaptainsListPage = 0;
var activeTeamCaptainsListPages = null;
var activeTeamCaptainsListMaxCount = 10;
var activeTeamCaptainsListMaxPages = 0;

var activeTeamCaptainsListObjects = null;

function GetActiveTeamCaptainsPages() {
    if (activeTeamCaptainsListPages == null) {
        activeTeamCaptainsListPages = $("a[name='SetActiveTeamCaptainsPage']");
    }
    return activeTeamCaptainsListPages;
}

function GetActiveTeamCaptainsListPagination() {
    if (activeTeamCaptainsListPagination == null) {
        activeTeamCaptainsListPagination = $('#activeTeamCaptainsListPagination')
    }
    return activeTeamCaptainsListPagination;
}

function GetActiveTeamCaptainsListContainer() {
    if (activeTeamCaptainsListContainer == null) {
        activeTeamCaptainsListContainer = $('#activeTeamCaptainsList')
    }
    return activeTeamCaptainsListContainer;
}

function GetActiveTeamCaptainsListHeader() {
    if (activeTeamCaptainsListHeader == null) {
        activeTeamCaptainsListHeader = $('#activeTeamCaptainsListHeader')
    }
    return activeTeamCaptainsListHeader;
}

function GetActiveTeamCaptainsListTemplate() {
    if (activeTeamCaptainsListTemplate == null) {
        activeTeamCaptainsListTemplate = $('#activeTeamCaptainsListTemplate')
    }
    return activeTeamCaptainsListTemplate;
}

function GetTeamCaptainsList() {
    SetGenericLoader(GetActiveTeamCaptainsListContainer());
    var webMethod = activeTeamCaptainsListWebMethod;
    webMethod = webMethod.replace(/\[Page\]/g, activeTeamCaptainsListPage);
    webMethod = webMethod.replace(/\[Keywords\]/g, $('#txtKeyCaptain').val());
    GenericAjaxCall(webMethod, SetActiveTeamCaptainsPaginable);
}

function SetActiveTeamCaptainsPaginable(objects) {
    $('#searchCaptain').show();
    if (objects.length > 0) {
        activeTeamCaptainsListCount = objects.length;
        activeTeamCaptainsListMaxPages = Math.ceil(objects.length / activeTeamCaptainsListMaxCount);
        SetGenericPagination(GetActiveTeamCaptainsListPagination(), activeTeamCaptainsListMaxPages, "SetActiveTeamCaptainsPage", "SetActiveTeamCaptainsNextPage", "SetActiveTeamCaptainsPreviousPage");
        activeTeamCaptainsListObjects = objects;
        SetActiveTeamCaptainsPage(0);
    } else {
        var container = GetActiveTeamCaptainsListContainer();
        SetGenericNoResultsMessage(container, "There are no members available.");
    }
}

function SetActiveTeamCaptainsPage(page) {
    activeTeamCaptainsListPage = page;
    pages = GetActiveTeamCaptainsPages();
    pages.each(
    function() {
        this.className = '';
    })
    pages[page].className = 'currentpage';

    SetActiveTeamCaptainsList(activeTeamCaptainsListObjects);
}

function SetActiveTeamCaptainsPreviousPage() {

    var page = activeTeamCaptainsListPage - 1;

    if (page >= 0) {
        SetActiveTeamCaptainsPage(page);
    }
}

function SetActiveTeamCaptainsNextPage() {
    var page = activeTeamCaptainsListPage + 1;
    if (page < activeTeamCaptainsListMaxPages) {
        SetActiveTeamCaptainsPage(page)
    }
}

function SetActiveTeamCaptainsList(objects) {
    var rows = objects;
    var template = GetActiveTeamCaptainsListTemplate().html();
    var item;
    var result = GetActiveTeamCaptainsListHeader().html();

    var countFrom = (activeTeamCaptainsListPage * activeTeamCaptainsListMaxCount);
    var countTo = (activeTeamCaptainsListPage * activeTeamCaptainsListMaxCount) + activeTeamCaptainsListMaxCount;
    var container = GetActiveTeamCaptainsListContainer();

    if (rows.length < countTo) {
        countTo = rows.length;
    }

    for (var i = countFrom; i < countTo; i++) {
        item = template.replace(/\[Id\]/g, rows[i].Id);
        item = item.replace(/\[Username\]/g, rows[i].Name);
        item = item.replace(/\[FirstName\]/g, rows[i].FirstName);
        item = item.replace(/\[LastName\]/g, rows[i].LastName);
        item = item.replace(/\[Motto\]/g, rows[i].Motto);
        item = item.replace(/\[GameId\]/g, rows[i].Game.Id);
        item = item.replace(/\[GameName\]/g, rows[i].Game.Name);
        item = item.replace(/\[Platform\]/g, rows[i].Game.Platform.Name);

        result += item;
    }

    container.html(result);

    $('#gameSelected').attr('href', $('#gameSelectedHidden').attr('href'));
    $('#gameSelected').html($('#gameSelectedHidden').html());
}
// End: Club - Active a Team - Select Captains List


// Start: Small League News
var smallLeagueNewsContainer = null;
var smallLeagueNewsWebMethod = null;
var smallLeagueNewsTemplate = null;

function GetSmallLeagueNewsContainer() {
    if (smallLeagueNewsContainer == null) {
        smallLeagueNewsContainer = $('#smallLeagueNews')
    }
    return smallLeagueNewsContainer;
}

function GetSmallLeagueNewsTemplate() {
    if (smallLeagueNewsTemplate == null) {
        smallLeagueNewsTemplate = $('#smallLeagueNewsTemplate')
    }
    return smallLeagueNewsTemplate;
}

function GetSmallLeagueNews() {
    SetGenericLoader(GetSmallLeagueNewsContainer());
    GenericAjaxCall(smallLeagueNewsWebMethod, SetSmallLeagueNews);
}

function SetSmallLeagueNews(objects) {
    var rows = objects;

    var template = GetSmallLeagueNewsTemplate().html();
    var item;
    var result = "";
    var container = GetSmallLeagueNewsContainer();
    if (rows.length > 0) {
        for (var i = 0; i < rows.length; i++) {
            item = template.replace(/\[Id\]/g, rows[i].Id);
            item = item.replace(/alt=\"\[Image\]\"/g, "src='" + rows[i].Thumbnail + "'");
            item = item.replace(/alt=\[Image\]/g, "src='" + rows[i].Thumbnail + "'");
            item = item.replace(/\[Title\]/g, rows[i].Headline);
            result += item;
        }
    }
    container.html(result);
}

// End: Small League News

// Start: Small League Standings & Matches

var smallLeagueStandingMatchesContainer = null;
var smallLeagueStandingsWebMethod = null;
var smallLeagueStandingsTemplate = null;
var smallLeagueStandingsHeader = null;
var smallLeagueMatchesWebMethod = null;
var smallLeagueMatchesTemplate = null;
var smallLeagueMatchesHeader = null;
var smallLeagueStandingsMatchesTabs = null;
var smallLeagueSelectContainer = null;
var smallLeagueSelect = null;

function GetSmallLeagueStandingMatchesContainer() {
    if (smallLeagueStandingMatchesContainer == null) {
        smallLeagueStandingMatchesContainer = $('#smallLeagueStandingsMatchesContainer');
    }
    return smallLeagueStandingMatchesContainer;
}

function GetSmallLeagueSelect() {
    if (smallLeagueSelect == null) {
        smallLeagueSelect = $('#smallLeagueSelect');
    }
    return smallLeagueSelect;
}

function GetSmallLeagueStandingsTemplate() {
    if (smallLeagueStandingsTemplate == null) {
        smallLeagueStandingsTemplate = $('#smallLeagueStandingsTemplate');
    }
    return smallLeagueStandingsTemplate;
}

function GetSmallLeagueSelectContainer() {
    if (smallLeagueSelectContainer == null) {
        smallLeagueSelectContainer = $('#smallLeagueSelectContainer');
    }
    return smallLeagueSelectContainer;
}

function GetSmallLeagueStandingsHeader() {
    if (smallLeagueStandingsHeader == null) {
        smallLeagueStandingsHeader = $('#smallLeagueStandingsHeader');
    }
    return smallLeagueStandingsHeader;
}

function GetSmallLeagueMatchesTemplate() {
    if (smallLeagueMatchesTemplate == null) {
        smallLeagueMatchesTemplate = $('#smallLeaguesMatchesTemplate');
    }
    return smallLeagueMatchesTemplate;
}

function GetSmallLeagueMatchesHeader() {
    if (smallLeagueMatchesHeader == null) {
        smallLeagueMatchesHeader = $('#smallLeagueMatchesHeader');
    }
    return smallLeagueMatchesHeader;
}

function GetSmallLeagueStandingsMatchesTabs() {
    if (smallLeagueStandingsMatchesTabs == null) {
        smallLeagueStandingsMatchesTabs = $('li[name=smallStandingsMatchesTabs]');
    }
    return smallLeagueStandingsMatchesTabs;
}

function ChangeSelectedSmallLeagueStandingsMatches(selectedSmallStandingsMatches) {
    var tabs = GetSmallLeagueStandingsMatchesTabs();
    tabs.each(
    function() {
        this.className = '';
    })
    tabs[selectedSmallStandingsMatches].className = 'tabActive';
    GetSmallLeagueStandingsMatchesList(selectedSmallStandingsMatches);
}

function GetSmallLeagueStandingsMatchesList(type) {

    var webMethod = "";
    var returnFunction = null;

    switch (type) {
        case 0:
            GetSmallLeagueSelectContainer().hide();
            webMethod = smallLeagueMatchesWebMethod;
            returnFunction = SetSmallLeagueMatches;
            break;
        case 1:
            GetSmallLeagueSelectContainer().show();
            webMethod = smallLeagueStandingsWebMethod.replace(/\[Type\]/g, GetSmallLeagueSelect().val());
            returnFunction = SetSmallLeagueStandings;
            break;
    }
    GenericAjaxCall(webMethod, returnFunction);
}

function SetSmallLeagueStandings(objects) {
    var rows = objects;
    var template = GetSmallLeagueStandingsTemplate().html();
    var item;
    var result = "";
    var container = GetSmallLeagueStandingMatchesContainer();
    var header = GetSmallLeagueStandingsHeader().html();
    result = header;
    for (var i = 0; i < rows.length; i++) {
        item = template.replace(/\[Id\]/g, rows[i].Id);
        item = item.replace(/\[Name\]/g, rows[i].Name);
        item = item.replace(/\alt=\"memberImage\"/g, "src=\"" + rows[i].Image + "\"");
        item = item.replace(/\alt=\"flagImage\"/g, "src=\"" + rows[i].Country.Flag + "\"");
        item = item.replace(/\alt=memberImage/g, "src=\"" + rows[i].Image + "\"");
        item = item.replace(/\alt=flagImage/g, "src=\"" + rows[i].Country.Flag + "\"");
        item = item.replace(/\[Score\]/g, rows[i].Score);
        result += item;
    }
    container.html(result);
}

function SetSmallLeagueMatches(objects) {
    var rows = objects;
    var template = GetSmallLeagueMatchesTemplate().html();
    var item;
    var result = "";
    var container = GetSmallLeagueStandingMatchesContainer();
    var header = GetSmallLeagueMatchesHeader().html();
    result = header;
    for (var i = 0; i < rows.length; i++) {
        item = template.replace(/\[Id\]/g, rows[i].Id);
        item = item.replace(/\[GameType\]/g, rows[i].Game.Type);
        if (rows[i].Game.Type = "Solo") {
            item = item.replace(/\[Url\]/g, memberUrl);
        }
        else {
            item = item.replace(/\[Url\]/g, teamUrl);
        }
        item = item.replace(/\[GameName\]/g, rows[i].Game.Name);
        item = item.replace(/\[ContestantHomeId\]/g, rows[i].ContestantHome.Id);
        item = item.replace(/\[ContestantAwayId\]/g, rows[i].ContestantAway.Id);
        item = item.replace(/\[ContestantHomeName\]/g, rows[i].ContestantHome.Name);
        item = item.replace(/\[ContestantAwayName\]/g, rows[i].ContestantAway.Name);
        item = item.replace(/\[ContestantHomeWon\]/g, rows[i].ContestantHome.Won);
        item = item.replace(/\[ContestantAwayWon\]/g, rows[i].ContestantAway.Won);
        item = item.replace(/\[CompetitionType\]/g, rows[i].Competition.Type);
        item = item.replace(/\[CompetitionName\]/g, rows[i].Competition.Name);
        item = item.replace(/\[CompetitionId\]/g, rows[i].Competition.Id);
        result += item;
    }
    container.html(result);
}
// End: Small League Standings & Matches

// Start:Competition Contestant List

var competitionContestantListPagination = null;
var competitionContestantListContainer = null;
var competitionContestantListWebMethod = null;
var competitionContestantListTemplate = null;
var competitionContestantListHeader = null;
var competitionContestantListPage = 0;
var competitionContestantListObjects = null;
var competitionContestantListMaxCount = 10;
var competitionContestantListMaxPages = 0;
var competitionContestantListEmptyError = "No contestants registered ...";

var competitionContestantPages = null;

function GetCompetitionContestantPages() {
    if (competitionContestantPages == null) {
        competitionContestantPages = $("a[name='SetCompetitionContestantPage']");
    }
    return competitionContestantPages;
}


function GetCompetitionContestantListPagination() {
    if (competitionContestantListPagination == null) {
        competitionContestantListPagination = $('#competitionContestantListPagination')
    }
    return competitionContestantListPagination;
}

function GetCompetitionContestantListContainer() {
    if (competitionContestantListContainer == null) {
        competitionContestantListContainer = $('#competitionContestantListContainer')
    }
    return competitionContestantListContainer;
}

function GetCompetitionContestantListTemplate() {
    if (competitionContestantListTemplate == null) {
        competitionContestantListTemplate = $('#competitionContestantListTemplate')
    }
    return competitionContestantListTemplate;
}

function GetCompetitionContestantListHeader() {
    if (competitionContestantListHeader == null) {
        competitionContestantListHeader = $('#competitionContestantListHeader')
    }
    return competitionContestantListHeader;
}


function GetCompetitionContestantList() {

    var webMethod = "";
    var returnFunction = null;
    var type = 0;
    competitionContestantListPage = 0;
    switch (type) {
        case 0:
            webMethod = competitionContestantListWebMethod;
            returnFunction = SetCompetitionContestantPaginable;
            break;
    }
    GenericAjaxCall(webMethod, returnFunction);
}

function SetCompetitionContestantPaginable(objects) {

    competitionContestantListCount = objects.length;
    if (competitionContestantListCount > 0) {
        competitionContestantListMaxPages = Math.ceil(objects.length / competitionContestantListMaxCount);
        SetGenericPagination(GetCompetitionContestantListPagination(), competitionContestantListMaxPages, "SetCompetitionContestantPage", "SetCompetitionContestantNextPage", "SetCompetitionContestantPreviousPage");
        competitionContestantListObjects = objects;
        SetCompetitionContestantPage(0);
    }
    else {
        SetGenericNoResultsMessage(GetCompetitionContestantListContainer(), competitionContestantListEmptyError);
    }
}

function SetCompetitionContestantPage(page) {
    competitionContestantListPage = page;
    pages = GetCompetitionContestantPages();
    pages.each(
    function() {
        this.className = '';
    })
    pages[page].className = 'currentpage';
    SetCompetitionContestantList(competitionContestantListObjects);
}

function SetCompetitionContestantPreviousPage() {

    var page = competitionContestantListPage - 1;

    if (page >= 0) {
        SetCompetitionContestantPage(page);
    }
}

function SetCompetitionContestantNextPage() {
    var page = competitionContestantListPage + 1;
    if (page < competitionContestantListMaxPages) {
        SetCompetitionContestantPage(page)
    }
}

function SetCompetitionContestantList(objects) {
    var rows = objects;
    var template = GetCompetitionContestantListTemplate().html();
    var item;
    var result = "";
    var countFrom = (competitionContestantListPage * competitionContestantListMaxCount);
    var countTo = (competitionContestantListPage * competitionContestantListMaxCount) + competitionContestantListMaxCount;
    var container = GetCompetitionContestantListContainer();
    var header = GetCompetitionContestantListHeader().html();
    result = result + header;
    if (rows.length < countTo) {
        countTo = rows.length;
    }
    for (var i = countFrom; i < countTo; i++) {
        item = template.replace(/\[Id\]/g, rows[i].Id);
        item = item.replace(/alt=\"\[Images\]\"/g, "src=\"" + rows[i].Image + "\"");
        item = item.replace(/alt=\[Images\]/g, "src=\"" + rows[i].Image + "\"");
        item = item.replace(/\[Name\]/g, rows[i].Name);
        item = item.replace(/\[PlayingAs\]/g, rows[i].PlayingAs);
        item = item.replace(/\[TimeZone\]/g, rows[i].TimeZone);
        item = item.replace(/\[Nationality\]/g, rows[i].Nationality);
        item = item.replace(/\[Position\]/g, rows[i].Position);
        item = item.replace(/\[Status\]/g, rows[i].Status);
        item = item.replace(/\[MemberCount\]/g, rows[i].MemberCount);
        result += item;
    }
    container.html(result);
}

// End: Competition Contestant List

// Start:Competition Match List

var competitionMatchGroupWebMethod = null;
var competitionMatchGroupMyMatches = null;

function CompetitionMatchListReplace(template, object) {
    var item;
    var result = "";

    item = template.replace(/\[Id\]/g, object.Id);
    item = item.replace(/\[Date\]/g, object.Date);
    item = item.replace(/\[Time\]/g, object.Time);
    item = item.replace(/\[HomeId\]/g, object.ContestantHome.Id);
    item = item.replace(/\[HomeName\]/g, object.ContestantHome.Name);
    item = item.replace(/\[AwayId\]/g, object.ContestantAway.Id);
    item = item.replace(/\[AwayName\]/g, object.ContestantAway.Name);
    if (object.Status == "8") {
        if (object.Result == 0) {
                item = item.replace(/\[HomeResult\]/g, " DRAW");
                item = item.replace(/\[AwayResult\]/g, " DRAW");
            }
            else if (object.Result == 1) {
                item = item.replace(/\[HomeResult\]/g, " WON");
                item = item.replace(/\[AwayResult\]/g, " ");
            }
            else if (object.Result == 2) {
                item = item.replace(/\[HomeResult\]/g, " ");
                item = item.replace(/\[AwayResult\]/g, " WON");
            }
        }
        else {
            item = item.replace(/\[HomeResult\]/g, " ");
            item = item.replace(/\[AwayResult\]/g, " ");
        }
        item = item.replace(/\[HomeWon\]/g, object.ContestantHome.Won);
        item = item.replace(/\[AwayWon\]/g, object.ContestantAway.Won);
        item = item.replace(/\[Status\]/g, object.StatusName);
         return item;
}

// End: Competition Match List

// Start: Competition Methods

var webRemoveContestantUrl = null;
var webRemoveContestantReturn = null;

function RemoveContestant() {
    GenericAjaxCall(webRemoveContestantUrl, RemoveContestantResult);
}

function RemoveContestantResult(objects) {
    if (objects.Result == true) {
        location.href = webRemoveContestantReturn;
    }
    else {
        alert("There was a problem while trying to remove contestant");
    }
}

// End: Competition Methods

// Start: Standings & Matches Control

var standingMatchesTab = null;

var standingMatchesContainer = null;
var standingMatchesRecentMatchesHeader = null;
var standingMatchesRecentMatchesTemplate = null;
var standingMatchesOverallHeader = null;
var standingOverallSelect = null;
var standingMatchesOverallTemplate = null;
var standingMatchesCompetitionTemplate = null;
var standingMatchesCurrentAction = null;
var standingOverallSelectContainer = null;

var standingOverallEmptyMessage = null;

var webMethodPortalTournamentList = null;
var webMethodPortalLeagueList = null;
var webMethodPortalRecentMatches = null;
var webMethodPortalStandings = null;

function GetStandingMatchesTab() {
    if (standingMatchesTab == null) {
        standingMatchesTab = $("li[name='standingMatchesTab']");
    }
    return standingMatchesTab;
}

function GetStandingOverallSelect() {
    if (standingOverallSelect == null) {
        standingOverallSelect = $("#ddlMatchType");
    }
    return standingOverallSelect;
}

function GetStandingOverallSelectContainer() {
    if (standingOverallSelectContainer == null) {
        standingOverallSelectContainer = $("#standingOverallSelectContainer");
    }
    return standingOverallSelectContainer;
}

function GetStandingMatchesContainer() {
    if (standingMatchesContainer == null) {
        standingMatchesContainer = $('#standingMatchesContainer')
    }
    return standingMatchesContainer;
}

function GetStandingMatchesRecentMatchesHeader() {
    if (standingMatchesRecentMatchesHeader == null) {
        standingMatchesRecentMatchesHeader = $('#standingMatchesRecentMatchesHeader').remove('tbody');
    }
    return standingMatchesRecentMatchesHeader;
}

function GetStandingMatchesRecentMatchesTemplate() {
    if (standingMatchesRecentMatchesTemplate == null) {
        standingMatchesRecentMatchesTemplate = $('#standingMatchesRecentMatchesTemplate')
    }
    return standingMatchesRecentMatchesTemplate;
}

function GetStandingMatchesOverallHeader() {
    if (standingMatchesOverallHeader == null) {
        standingMatchesOverallHeader = $('#standingMatchesOverallHeader')
    }
    return standingMatchesOverallHeader;
}

function GetStandingMatchesOverallTemplate() {
    if (standingMatchesOverallTemplate == null) {
        standingMatchesOverallTemplate = $('#standingMatchesOverallTemplate')
    }
    return standingMatchesOverallTemplate;
}

function GetStandingMatchesCompetitionTemplate() {
    if (standingMatchesCompetitionTemplate == null) {
        standingMatchesCompetitionTemplate = $('#standingMatchesCompetitionTemplate')
    }
    return standingMatchesCompetitionTemplate;
}

function SetStandingMatchesTab(selectedStandingMatchesTab) {
    standingMatchesCurrentAction = selectedStandingMatchesTab;
    SetGenericLoader(GetStandingMatchesContainer());
    var webMethod = null;
    var tabs = GetStandingMatchesTab();
    var returnFunction = "";
    if (tabs.length > 0) {
        tabs.each(
    function() {
        this.className = '';
    })
        tabs[selectedStandingMatchesTab].className = 'tabActive';
    }

    switch (selectedStandingMatchesTab) {
        case 0:
            GetStandingOverallSelectContainer().hide();
            webMethod = webMethodPortalRecentMatches;
            returnFunction = SetPortalRecentMatches;
            break;
        case 1:
            GetStandingOverallSelectContainer().show();
            webMethod = webMethodPortalStandings.replace(/\[Type\]/g, GetStandingOverallSelect().val());
            standingOverallEmptyMessage = "Be one of the first to have your name up on the leaderboard! Join a <a class=\"text11Yellow\" href=\"../Tournament/Default.aspx\">Tournament</a> or <a class=\"text11Yellow\" href=\"../League/Default.aspx\">League</a> for ultra fun and competitive gaming. If your into a more casual competitive experience, get started in our <a class=\"text11Yellow\" href=\"../Game/Default.aspx\">Challenge Ladders</a>!";
            returnFunction = SetPortalOverall;
            break;
        case 2:
            GetStandingOverallSelectContainer().show();
            webMethod = webMethodPortalLeagueList.replace(/\[Type\]/g, GetStandingOverallSelect().val());
            standingOverallEmptyMessage = "Our newest competitive system takes league play to an awesome level. Compete in many league styles including emulating a professional sports league! <a class=\"text11Yellow\" href=\"../League/Default.aspx\">Join a League Today</a>!";
            returnFunction = SetPortalOverall;
            break;
        case 3:
            GetStandingOverallSelectContainer().show();
            webMethod = webMethodPortalTournamentList.replace(/\[Type\]/g, GetStandingOverallSelect().val());
            standingOverallEmptyMessage = "No longer are tournaments \"one time\" events! The new StripesGamer.com Tournaments allow you to win your way up the leaderboard! Be the #1 player on the leaderboard! <a class=\"text11Yellow\" href=\"../Tournament/Default.aspx\">Join a Tournament Today</a>!";
            returnFunction = SetPortalOverall;
            break;
    }
    GenericAjaxCall(webMethod, returnFunction);
}

function SetPortalRecentMatches(objects) {
    var rows = objects;
    var container = GetStandingMatchesContainer();
    var template = GetStandingMatchesRecentMatchesTemplate().html();
    var header = GetStandingMatchesRecentMatchesHeader();

    var result = "";
    var item;

    if (rows.length > 0) {
        result += GetStandingMatchesRecentMatchesHeader().html();
        for (var i = 0; i < rows.length; i++) {
            item = template.replace(/\[Id\]/g, rows[i].Id);
            item = item.replace(/\[GameType\]/g, rows[i].Game.Type);
            if (rows[i].Game.Type = "Solo") {
                item = item.replace(/\[Url\]/g, memberUrl);
            }
            else {
                item = item.replace(/\[Url\]/g, teamUrl);
            }
            var compType;
            switch (rows[i].Competition.Type) {
                case "League":
                    compType = 1;
                    break;
                case "Tournament":
                    compType = 2;
                    break;
                case "Challenge":
                    compType = 3;
                    break;

            }
            item = item.replace(/\[CompetitionUrl\]/g, competitionLink[compType]);
            item = item.replace(/\[MatchUrl\]/g, matchLink[compType]);

            item = item.replace(/\[GameName\]/g, rows[i].Game.Name);
            item = item.replace(/\[ContestantHomeId\]/g, rows[i].ContestantHome.Id);
            item = item.replace(/\[ContestantAwayId\]/g, rows[i].ContestantAway.Id);
            item = item.replace(/\[ContestantHomeName\]/g, rows[i].ContestantHome.Name);
            item = item.replace(/\[ContestantAwayName\]/g, rows[i].ContestantAway.Name);
            item = item.replace(/\[ContestantHomeWon\]/g, rows[i].ContestantHome.Won);
            item = item.replace(/\[ContestantAwayWon\]/g, rows[i].ContestantAway.Won);
            item = item.replace(/\[CompetitionType\]/g, rows[i].Competition.Type);
            item = item.replace(/\[CompetitionName\]/g, rows[i].Competition.Name);
            item = item.replace(/\[CompetitionId\]/g, rows[i].Competition.Id);
            result += item;
        }
        container.html(result);
    }
    else {
        SetGenericNoResultsMessage(container, "The site has just launched and match play is now underway. Click here to join a <a class=\"text11Yellow\" href=\"../Tournament/Default.aspx\">Tournament</a> or <a class=\"text11Yellow\" href=\"../League/Default.aspx\">League</a>. You can also play immediately in our <a class=\"text11Yellow\" href=\"../Game/Default.aspx\">Challenge Ladders</a>!");
    }
}


function SetPortalOverall(objects) {
    var rows = objects;
    var container = GetStandingMatchesContainer();
    var template = GetStandingMatchesOverallTemplate().html();
    var header = GetStandingMatchesOverallHeader();
    var result = "";
    var item;
    if (rows.length > 0) {
        result += GetStandingMatchesOverallHeader().html();

        for (var i = 0; i < rows.length; i++) {
            item = template.replace(/\[Id\]/g, rows[i].Id);
            item = item.replace(/\[Name\]/g, rows[i].Name);
            item = item.replace(/\alt=\"memberImage\"/g, "src=\"" + rows[i].Image + "\"");
            item = item.replace(/\alt=memberImage/g, "src=\"" + rows[i].Image + "\"");
            item = item.replace(/\alt=\"flagImage\"/g, "src=\"" + rows[i].Country.Flag + "\"");
            item = item.replace(/\alt=flagImage/g, "src=\"" + rows[i].Country.Flag + "\"");
            item = item.replace(/\[Score\]/g, rows[i].Score);
            result += item;
        }
        container.html(result);
    }
    else {
        SetGenericNoResultsMessage(container, standingOverallEmptyMessage);
    }
}
// End: Standings & Matches Control

// Start: Portal Main Tab

var portalMainTab = null;

var mainPortalContainer = null;
var mainPortalLeagueObjects = null;
var mainPortalTournamentObjects = null;
var mainPortalTournamentContainer = null;
var mainPortalTournamentSelect = null;
var mainPortalTournamentFilter = null;
var mainPortalTournamentInfo = null;
var mainPortalTournamentPlayDayTemlate = null;
var mainPortalTournamentNoPlayDay = null;
var mainPortalBlogTemplate = null;
var mainPortalMemberTemplate = null;
var mainPortalClubTemplate = null;

var webMethodMainPortalLeague = null;
var webMethodMainPortalTournament = null;
var webMethodMainPortalBlog = null;
var webMethodMainPortalNewMembers = null;
var webMethodMainPortalNewClubs = null;

function GetPortalMainTab() {
    if (portalMainTab == null) {
        portalMainTab = $("li[name='portalMainTab']");
    }
    return portalMainTab;
}

function GetMainPortalContainer() {
    if (mainPortalContainer == null) {
        mainPortalContainer = $("#mainPortalContainer");
    }
    return mainPortalContainer;
}

function GetMainPortalTournamentSelect() {
    if (mainPortalTournamentSelect == null) {
        mainPortalTournamentSelect = $("#mainPortalTournamentSelect");
    }
    return mainPortalTournamentSelect;
}

function GetMainPortalTournamentInfo() {
    if (mainPortalTournamentInfo == null) {
        mainPortalTournamentInfo = $("#mainPortalTournamentInfo");
    }
    return mainPortalTournamentInfo;
}

function GetMainPortalTournamentPlayDayTemlate() {
    if (mainPortalTournamentPlayDayTemlate == null) {
        mainPortalTournamentPlayDayTemlate = $("#mainPortalTournamentPlayDayTemlate");
    }
    return mainPortalTournamentPlayDayTemlate;
}

function GetMainPortalTournamentNoPlayDay() {
    if (mainPortalTournamentNoPlayDay == null) {
        mainPortalTournamentNoPlayDay = $("#mainPortalTournamentNoPlayDay");
    }
    return mainPortalTournamentNoPlayDay;
}

function GetMainPortalBlogTemplate() {
    if (mainPortalBlogTemplate == null) {
        mainPortalBlogTemplate = $("#mainPortalBlogTemplate");
    }
    return mainPortalBlogTemplate;
}

function GetMainPortalMemberTemplate() {
    if (mainPortalMemberTemplate == null) {
        mainPortalMemberTemplate = $("#mainPortalMemberTemplate");
    }
    return mainPortalMemberTemplate;
}

function GetMainPortalClubTemplate() {
    if (mainPortalClubTemplate == null) {
        mainPortalClubTemplate = $("#mainPortalClubTemplate");
    }
    return mainPortalClubTemplate;
}



function SetPortalMainTab(selectedPortalMainTab) {
    SetGenericLoader(GetMainPortalContainer());
    var webMethod = null;
    var tabs = GetPortalMainTab();
    var returnFunction = "";
    tabs.each(
    function() {
        this.className = '';
    })
    tabs[selectedPortalMainTab].className = 'tabActive';
    switch (selectedPortalMainTab) {
        case 0:
            SetMainPortalTournamentTab();
            break;
        case 1:
            SetMainPortalLeagueTab();
            break;
        case 4:
            $('#MaintTournamentContainer').hide();
            $('#MaintLeagueContainer').hide();
            GetMainPortalContainer().show();
            GetMainPortalBlog();
            break;
        case 5:
            $('#MaintTournamentContainer').hide();
            $('#MaintLeagueContainer').hide();
            GetMainPortalContainer().show();
            GetMainPortalNewMembers();
            break;
        case 6:
            $('#MaintTournamentContainer').hide();
            $('#MaintLeagueContainer').hide();
            GetMainPortalContainer().show(); GetMainPortalNewClubs();
            break;
        default:
            $('#MaintTournamentContainer').hide();
            $('#MaintLeagueContainer').hide();
            GetMainPortalContainer().show();
            break;

    }
}

function GetMainPortalNewMembers() {
    GenericAjaxCall(webMethodMainPortalNewMembers, SetMainPortalNewMembers);
}

function SetMainPortalNewMembers(objects) {
    var rows = objects;
    var template = GetMainPortalMemberTemplate().html();
    var item;
    var result = "";
    var container = GetMainPortalContainer();

    for (var i = 0; i < rows.length; i = i + 2) {
        item = template.replace(/\[Id\]/g, rows[i].Id);
        item = item.replace(/\[Name\]/g, rows[i].UserName);
        item = item.replace(/alt=\"BranchImage\"/g, "src=\"" + rows[i].Branch.Image + "\"");
        item = item.replace(/alt=BranchImage/g, "src=\"" + rows[i].Branch.Image + "\"");
        item = item.replace(/\[Branch\]/g, rows[i].Branch.Name);
        item = item.replace(/alt=\"\"/g, "src=\"" + rows[i].Image + "\"");
        item = item.replace(/\[Nationality\]/g, rows[i].Nationality.Name);
        item = item.replace(/alt=\"FlagImage\"/g, "src=\"" + rows[i].Nationality.Image + "\"");
        item = item.replace(/alt=\"SkillImage\"/g, "src=\"" + rows[i].Skill.Image + "\"");
        item = item.replace(/alt=FlagImage/g, "src=\"" + rows[i].Nationality.Image + "\"");
        item = item.replace(/alt=SkillImage/g, "src=\"" + rows[i].Skill.Image + "\"");
        item = item.replace(/\[Skill\]/g, rows[i].Skill.Description);
        item = item.replace(/\[Rank\]/g, rows[i + 1].Ranking);

        item = item.replace(/\[Id_col2\]/g, rows[i + 1].Id);
        item = item.replace(/\[Name_col2\]/g, rows[i + 1].UserName);
        item = item.replace(/alt=\"BranchImage_col2\"/g, "src=\"" + rows[i + 1].Branch.Image + "\"");
        item = item.replace(/alt=BranchImage_col2/g, "src=\"" + rows[i + 1].Branch.Image + "\"");
        item = item.replace(/\[Branch_col2\]/g, rows[i + 1].Branch.Name);
        item = item.replace(/alt=\"Image_col2\"/g, "src=\"" + rows[i + 1].Image + "\"");
        item = item.replace(/alt=Image_col2/g, "src=\"" + rows[i + 1].Image + "\"");
        item = item.replace(/\[Nationality_col2\]/g, rows[i + 1].Nationality.Name);
        item = item.replace(/alt=\"FlagImage_col2\"/g, "src=\"" + rows[i + 1].Nationality.Image + "\"");
        item = item.replace(/alt=\"SkillImage_col2\"/g, "src=\"" + rows[i + 1].Skill.Image + "\"");
        item = item.replace(/alt=FlagImage_col2/g, "src=\"" + rows[i + 1].Nationality.Image + "\"");
        item = item.replace(/alt=SkillImage_col2/g, "src=\"" + rows[i + 1].Skill.Image + "\"");
        item = item.replace(/\[Skill_col2\]/g, rows[i + 1].Skill.Description);
        item = item.replace(/\[Rank_col2\]/g, rows[i + 1].Ranking);

        result += item;
    }
    container.html(result);
}

function GetMainPortalNewClubs() {
    GenericAjaxCall(webMethodMainPortalNewClubs, SetMainPortalNewClubs);
}

function SetMainPortalNewClubs(objects) {
    var rows = objects;
    var template = GetMainPortalClubTemplate().html();
    var item;
    var result = "";
    var container = GetMainPortalContainer();

    for (var i = 0; i < rows.length; i = i + 2) {
        item = template.replace(/\[Id\]/g, rows[i].Id);
        item = item.replace(/\[Name\]/g, rows[i].Name);
        item = item.replace(/alt=\"\[Image\]\"/g, "src='" + rows[i].Image + "'");
        item = item.replace(/alt=\"\[FlagURL\]\"/g, "src='" + rows[i].Nationality.Image + "'");
        item = item.replace(/alt=\[Image\]/g, "src='" + rows[i].Image + "'");
        item = item.replace(/alt=\[FlagURL\]/g, "src='" + rows[i].Nationality.Image + "'");
        item = item.replace(/\[Nationality\]/g, rows[i].Nationality.Name);
        item = item.replace(/\[Manager\]/g, rows[i].Manager.Username);
        item = item.replace(/\[Role\]/g, rows[i].MemberRole);
        item = item.replace(/\[Members\]/g, rows[i].Members);
        item = item.replace(/\[PrefPlatform\]/g, rows[i].PreferedPlatform.Description);
        item = item.replace(/\[Branch\]/g, rows[i].MilitaryBranch.Name);
        item = item.replace(/alt=\"\[BranchImage\]\"/g, "src='" + rows[i].MilitaryBranch.Image + "'");
        item = item.replace(/alt=\[BranchImage\]/g, "src='" + rows[i].MilitaryBranch.Image + "'");
        item = item.replace(/\[Skill\]/g, rows[i].Skill.Description);
        item = item.replace(/alt=\"\[SkillImage\]\"/g, "src='" + rows[i].Skill.Image + "'");
        item = item.replace(/alt=\[SkillImage\]/g, "src='" + rows[i].Skill.Image + "'");
        item = item.replace(/\[Personality\]/g, rows[i].Personality.Name);
        item = item.replace(/\[Rank\]/g, rows[i].Ranking);

        item = item.replace(/\[Id_col2\]/g, rows[i + 1].Id);
        item = item.replace(/\[Name_col2\]/g, rows[i + 1].Name);
        item = item.replace(/alt=\"\[Image_col2\]\"/g, "src='" + rows[i + 1].Image + "'");
        item = item.replace(/alt=\"\[FlagURL_col2\]\"/g, "src='" + rows[i + 1].Nationality.Image + "'");
        item = item.replace(/alt=\[Image_col2\]/g, "src='" + rows[i + 1].Image + "'");
        item = item.replace(/alt=\[FlagURL_col2\]/g, "src='" + rows[i + 1].Nationality.Image + "'");
        item = item.replace(/\[Nationality_col2\]/g, rows[i + 1].Nationality.Name);
        item = item.replace(/\[Manager_col2\]/g, rows[i + 1].Manager.Username);
        item = item.replace(/\[Branch_col2\]/g, rows[i + 1].MilitaryBranch.Name);
        item = item.replace(/alt=\"\[BranchImage_col2\]\"/g, "src='" + rows[i + 1].MilitaryBranch.Image + "'");
        item = item.replace(/alt=\[BranchImage_col2\]/g, "src='" + rows[i + 1].MilitaryBranch.Image + "'");
        item = item.replace(/\[Skill_col2\]/g, rows[i + 1].Skill.Description);
        item = item.replace(/alt=\[SkillImage_col2\]/g, "src='" + rows[i + 1].Skill.Image + "'");
        item = item.replace(/alt=\"\[SkillImage_col2\]\"/g, "src='" + rows[i + 1].Skill.Image + "'");
        item = item.replace(/\[Rank_col2\]/g, rows[i + 1].Ranking);

        result += item;
    }

    container.html(result);
}

function GetMainPortalBlog() {
    GenericAjaxCall(webMethodMainPortalBlog, SetMainPortalBlog);
}

function SetMainPortalBlog(objects) {
    var rows = objects;
    var template = GetMainPortalBlogTemplate().html();
    var item;
    var result = "";
    var container = GetMainPortalContainer();
    var bloggerUrl = "";

    for (var i = 0; i < rows.length; i++) {
        item = template.replace(/\[Id\]/g, rows[i].Id);
        item = item.replace(/\alt=\"\[Image\]\"/g, "src=\"" + rows[i].Image + "\"");
        item = item.replace(/\alt=\[Image\]/g, "src=\"" + rows[i].Image + "\"");
        item = item.replace(/\[Date\]/g, rows[i].Date);
        item = item.replace(/\[Title\]/g, rows[i].Title);
        if (rows[i].Type == 1) {
            item = item.replace(/\[Type\]/g, "Member");
            item = item.replace(/\[BlogType\]/g, "Member");
            url = "" + memberBlogUrl + rows[i].Id + "&MemberID=" + +rows[i].Author.Id;
            item = item.replace(/\[Url\]/g, url); //+ "&MemberId="+rows[i].Author.Id);
            bloggerUrl = memberUrl + rows[i].Author.Id;
            item = item.replace(/\[BloggerUrl\]/g, bloggerUrl); //+ "&MemberId="+rows[i].Author.Id);
        }
        else {
            item = item.replace(/\[Type\]/g, "Team");
            item = item.replace(/\[BlogType\]/g, "Team");
            url = "" + memberBlogUrl + rows[i].Id + "&MemberID=" + +rows[i].Author.Id;
            item = item.replace(/\[Url\]/g, url);
            bloggerUrl = teamUrl + rows[i].Author.Id;
            item = item.replace(/\[BloggerUrl\]/g, bloggerUrl); //+ "&MemberId="+rows[i].Author.Id);
        }
        item = item.replace(/\[Blogger\]/g, rows[i].Author.Name);
        item = item.replace(/\[Body\]/g, rows[i].Body);
        result += item;
    }
    container.html(result);
}

function SetMainPortalTournamentTab() {
    $('#MaintTournamentContainer').show();
    $('#MaintLeagueContainer').hide();
    GetMainPortalContainer().hide();
    /*
    if (mainPortalTournamentObjects == null) {
    GenericAjaxCall(webMethodMainPortalTournament, SetMainPortalTournament);
    }
    else {
    $('#mainTabTournamentFilter').html($('#mainTabTournamentFilter').html().replace(/League/g, "Tournament"));
    $('#mainTabTournamentFilter').show();
    FillMainPortalTournamentSelector(mainPortalTournamentObjects, 1);
    }
    */
}

function SetMainPortalLeagueTab() {
    $('#MaintTournamentContainer').hide();
    $('#MaintLeagueContainer').show();
    GetMainPortalContainer().hide();
    /*
    if (mainPortalLeagueObjects == null) {
    GenericAjaxCall(webMethodMainPortalLeague, SetMainPortalLeague);
    }
    else {
    $('#mainTabTournamentFilter').html($('#mainTabTournamentFilter').html().replace(/Tournament/g, "League"));
    $('#mainTabTournamentFilter').show();
    SetMainPortalSelectedLeague();
    FillMainPortalTournamentSelector(mainPortalLeagueObjects, 2);
    }
    */
}

function SetMainPortalLeague(objects) {
    mainPortalTournamentObjects = objects;
    FillMainPortalTournamentSelector(objects, 2);
}

function SetMainPortalTournament(objects) {
    mainPortalTournamentObjects = objects;
    FillMainPortalTournamentSelector(objects, 2);
}

function FillMainPortalTournamentSelector(objects, competition) {
    var selector = GetMainPortalTournamentSelect();
    for (var i = 0; i < objects.length; i++) {
        selector.append($("<option></option>").
          attr("value", i).
          text(objects[i].Name));
    }
    $('#mainTabTournamentFilter').show();
    SetMainPortalSelectedTournament(competition);
}

function SetMainPortalSelectedTournament(competition) {
    var selected = GetMainPortalTournamentSelect().val();
    if (selected != undefined) {
        var tournament = mainPortalTournamentObjects[selected];
        var container = GetMainPortalContainer();
        if (tournament.Status.Id < 5) {
            var template = GetMainPortalTournamentInfo().html();
            var item = template.replace(/\[Id\]/g, tournament.Id);
            item = item.replace(/\[Name\]/g, tournament.Name);
            item = item.replace(/\[Status\]/g, tournament.Status.Name);
            item = item.replace(/\[PlatformName\]/g, tournament.Game.Platform.Name);
            item = item.replace(/\[RegistrationStarts\]/g, tournament.RegistrationStarts);
            item = item.replace(/\[RegistrationEnds\]/g, tournament.RegistrationEnds);
            item = item.replace(/\[PlayStarts\]/g, tournament.Starts);
            item = item.replace(/\[PlayEnds\]/g, tournament.Ends);
            item = item.replace(/\[NumberOfPlayers\]/g, tournament.NumberOfTeams);
            item = item.replace(/\[NumberOfGroups\]/g, tournament.NumberOfGroups);
            item = item.replace(/\[ContestantsRegistered\]/g, tournament.ContestantsRegistered);
            item = item.replace(/\alt=\"\"/g, "src=\"" + tournament.Game.Image + "\"");
            var playDay = PlayDayInformation(tournament.PlayDays.Group);
            item = item.replace(/<tbody id\=\"GroupInformation\"><\/tbody>/g, playDay);
            var playDay = PlayDayInformation(tournament.PlayDays.Bracket);
            item = item.replace(/<tbody id\=\"BracketInformation\"><\/tbody>/g, playDay);
            container.html(item);
        }
        else {

        }
    }
    else {
        var text = "";
        if (competition == 1) {
            text = "Tournaments";
        }
        if (competition == 2) {
            text = "Leagues"
        }
        SetGenericNoResultsMessage(GetMainPortalContainer(), "There are no " + text + " available");
    }
}

function PlayDayInformation(playDays) {
    var strPlaydays = "";
    if (playDays.length > 0) {
        var template = GetMainPortalTournamentPlayDayTemlate().html();
        var item;
        for (var i = 0; i < playDays.length; i++) {
            item = template.replace(/\[Day\]/g, playDays[i].Day);
            item = item.replace(/\[From\]/g, playDays[i].TimeFrom);
            item = item.replace(/\[To\]/g, playDays[i].TimeTo);
            strPlaydays += item;
        }
    }
    else {
        strPlaydays = GetMainPortalTournamentNoPlayDay().html();
    }
    return strPlaydays;
}

function MainPortalGoToSelectedTournament() {
    var selected = GetMainPortalTournamentSelect().val();
    location.href = '../Tournament/Home.aspx?TournamentId=' + mainPortalTournamentObjects[selected].Id;

}
//End: Portal Main Tab

// Start: News & Alerts Tab

var newsAlertTab = null;

var newsAlertTabContainer = null;
var newsAlertNewsTemplate = null;
var newsAlertAlertTemplate = null;
var newsAlertMessageTemplate = null;
var newsAlertChallengeTemplate = null;
var newsAlertChatTemplate = null;

var newsAlertViewMoreBtn = null;

var newsAlertNewsWebMethod = null;
var newsAlertAlertWebMethod = null;
var newsAlertChallengeWebMethod = null;
var newsAlertChatWebMethod = null;
var newsAlertMessageWebMethod = null;



function GetNewsAlertTab() {
    if (newsAlertTab == null) {
        newsAlertTab = $("li[name='newsAlertTab']");
    }
    return newsAlertTab;
}

function GetNewsAlertTabContainer() {
    if (newsAlertTabContainer == null) {
        newsAlertTabContainer = $("#newsAlertTabContainer");
    }
    return newsAlertTabContainer;
}

function GetNewsAlertNewsTemplate() {
    if (newsAlertNewsTemplate == null) {
        newsAlertNewsTemplate = $("#newsAlertNewsTemplate");
    }
    return newsAlertNewsTemplate;
}

function GetNewsAlertAlertTemplate() {
    if (newsAlertAlertTemplate == null) {
        newsAlertAlertTemplate = $("#newsAlertAlertTemplate");
    }
    return newsAlertAlertTemplate;
}

function GetNewsAlertMessageTemplate() {
    if (newsAlertMessageTemplate == null) {
        newsAlertMessageTemplate = $("#newsAlertMessageTemplate");
    }
    return newsAlertMessageTemplate;
}

function GetNewsAlertChallengeTemplate() {
    if (newsAlertChallengeTemplate == null) {
        newsAlertChallengeTemplate = $("#newsAlertChallengeTemplate");
    }
    return newsAlertChallengeTemplate;
}

function GetNewsAlertChatTemplate() {
    if (newsAlertChatTemplate == null) {
        newsAlertChatTemplate = $("#newsAlertChatTemplate");
    }
    return newsAlertChatTemplate;
}

function GetNewsAlertViewMoreBtn() {
    if (newsAlertViewMoreBtn == null) {
        newsAlertViewMoreBtn = $("#newsAlertViewMoreBtn");
    }
    return newsAlertViewMoreBtn;
}

function SetNewsAlertTab(selectedNewsAlertTab) {
    SetGenericLoader(GetNewsAlertTabContainer());
    var webMethod = null;
    var tabs = GetNewsAlertTab();
    var returnFunction = "";
    var button = GetNewsAlertViewMoreBtn();
    tabs.each(
    function() {
        this.className = '';
    })
    tabs[selectedNewsAlertTab].className = 'tabActive';

    switch (selectedNewsAlertTab) {
        case 0:
            webMethod = newsAlertNewsWebMethod;
            returnFunction = SetNewsAlertNews;
            button.show();
            getParameterByName(webMethod, 'ZoneID');
            button.click(function() {
                location.href = '../Portal/News.aspx?ZoneID=' + getParameterByName(webMethod, 'ZoneID');
            });
            break;
        case 1:
            webMethod = newsAlertAlertWebMethod;
            returnFunction = SetNewsAlertAlert;
            button.show();
            button.click(function() {
                location.href = '../MessageCentre/MessageCentre.aspx?tab=alert';
            });
            break;
        case 2:
            webMethod = newsAlertChallengeWebMethod;
            returnFunction = SetNewsAlertChallenge;
            button.show();
            button.click(function() {
                location.href = '../MessageCentre/MessageCentre.aspx?tab=challenges';
            });
            break;
        case 3:
            webMethod = newsAlertMessageWebMethod;
            returnFunction = SetNewsAlertMessage;
            button.show();
            button.click(function() {
                location.href = '../MessageCentre/MessageCentre.aspx?tab=messages';
            });
            button.attr("onclick", "location.href = '../MessageCentre/MessageCentre.aspx?tab='");
            break;
        case 4:
            webMethod = newsAlertChatWebMethod;
            returnFunction = SetNewsAlertChat;
            button.show();
            button.click(function() {
                location.href = '../Portal/Chat.aspx';
            });
            break;
        default:
            break;
    }
    GenericAjaxCall(webMethod, returnFunction);
}

function SetNewsAlertChat(objects) {
    var rows = objects;
    var container = GetNewsAlertTabContainer();
    var template = GetNewsAlertChatTemplate().html();
    var result = "";
    var item;
    if (rows.length > 0) {
        for (var i = 0; i < rows.length && i < 4; i++) {
            item = template.replace(/\[Id\]/g, rows[i].Id);
            item = item.replace(/\[UserName\]/g, rows[i].UserName);
            item = item.replace(/\alt=\"\"/g, "src='" + rows[i].Country.Flag + "'");
            item = item.replace(/\[CountryName\]/g, rows[i].Country.Name);
            result += item;
        }
        container.html(result);
    }
    else {
        SetGenericNoResultsMessage(container, "There are no members currently logged");
    }
}

function SetNewsAlertChallenge(objects) {
    var rows = objects.Rows;
    var container = GetNewsAlertTabContainer();
    var template = GetNewsAlertChallengeTemplate().html();
    var result = "";
    var item;
    if (rows.length > 0) {
        for (var i = 0; i < rows.length && i < 4; i++) {
            item = template.replace(/\[Id\]/g, rows[i].Id);
            item = item.replace(/\[Subject\]/g, rows[i].Subject);
            item = item.replace(/\[Date\]/g, rows[i].Date);
            item = item.replace(/\[Name\]/g, rows[i].From.Name);
            result += item;
        }
        container.html(result);
    }
    else {
        SetGenericNoResultsMessage(container, "There are no new challenges");
    }
}

function SetNewsAlertMessage(objects) {
    var rows = objects.Rows;
    var container = GetNewsAlertTabContainer();
    var template = GetNewsAlertMessageTemplate().html();
    var result = "";
    var item;
    if (rows.length > 0) {
        for (var i = 0; i < rows.length && i < 4; i++) {
            item = template.replace(/\[Id\]/g, rows[i].Id);
            item = item.replace(/\[Subject\]/g, rows[i].Subject);
            item = item.replace(/\[Date\]/g, rows[i].Date);
            item = item.replace(/\[Name\]/g, rows[i].From.Name);
            result += item;
        }
        container.html(result);
    }
    else {
        SetGenericNoResultsMessage(container, "There are no new message");
    }
}

function SetNewsAlertAlert(objects) {
    var rows = objects.Rows;
    var container = GetNewsAlertTabContainer();
    var template = GetNewsAlertAlertTemplate().html();
    var result = "";
    var item;
    if (rows.length > 0) {
        for (var i = 0; i < rows.length && i < 4; i++) {
            item = template.replace(/\[Id\]/g, rows[i].Id);
            item = item.replace(/\[Subject\]/g, rows[i].Subject);
            item = item.replace(/\[Date\]/g, rows[i].Date);
            item = item.replace(/\[Name\]/g, rows[i].From.Name);
            result += item;
        }
        container.html(result);
    }
    else {
        SetGenericNoResultsMessage(container, "There are no new alerts");
    }
}

function SetNewsAlertNews(objects) {
    var rows = objects;
    var container = GetNewsAlertTabContainer();
    var template = GetNewsAlertNewsTemplate().html();
    var result = "";
    var item;
    container.empty();
    if (rows.length > 0) {
        for (var i = 0; i < rows.length && i < 4; i++) {
            item = template.replace(/\[Id\]/g, rows[i].Id);
            image = "src='" + rows[i].Thumbnail + "'"
            item = item.replace(/\alt=\"\"/g, image);
            item = item.replace(/\[Publisher\]/g, rows[i].Publisher);
            item = item.replace(/\[Headline\]/g, rows[i].Headline);
            item = item.replace(/\[Date\]/g, rows[i].Date);
            container.append(item);
        }
    }
    else {
        SetGenericNoResultsMessage(container, "There is currently no news reported news");
    }
}

// End: News & Alerts Tab

// Start: League Award List

var awardListContainer = null;
var awardListTemplate = null;

var awardListWebMethod = null;

function GetAwardListContainer() {
    if (awardListContainer == null) {
        awardListContainer = $("#awardListContainer");
    }
    return awardListContainer;
}

function GetAwardListTemplate() {
    if (awardListTemplate == null) {
        awardListTemplate = $("#awardListTemplate");
    }
    return awardListTemplate;
}

function GetAwardList() {
    SetGenericLoader(GetAwardListContainer());
    GenericAjaxCall(awardListWebMethod, SetAwardList);
}

function SetAwardList(objects) {
    var rows = objects;
    var template = GetAwardListTemplate().html();
    var item;
    var result = "";
    var container = GetAwardListContainer();
    if (rows.length > 0) {
        for (var i = 0; i < rows.length; i++) {
            item = template.replace(/\[Id\]/g, rows[i].Id);
            item = item.replace(/\[Image\]/g, rows[i].Image);
            item = item.replace(/\[Name\]/g, rows[i].Name);
            item = item.replace(/\[Points\]/g, rows[i].Points);

            result += item;
        }
        container.html(result);
    }
    else {
        SetGenericNoResultsMessage(container, "We are in the process of adding the awards. Please check back shortly.");
    }

}

// End: League Award List

// Start:Competition Contestant List

function CompetitionStandingListReplace(template, object) {
    var item;
    var result = "";
    item = template.replace(/\[Id\]/g, object.Id);
    item = item.replace(/\[MemberName\]/g, object.Name);
    item = item.replace(/\[MemberAlias\]/g, object.Alias);
    item = item.replace(/\alt=\"FlagImage\"/g, "src=\"" + object.Flag + "\"");
    item = item.replace(/\alt=\"MemberImage\"/g, "src=\"" + object.Image + "\"");
    item = item.replace(/\alt=FlagImage/g, "src=\"" + object.Flag + "\"");
    item = item.replace(/\alt=MemberImage/g, "src=\"" + object.Image + "\"");
    item = item.replace(/\[Favor\]/g, object.Favor);
    item = item.replace(/\[Against\]/g, object.Against);
    item = item.replace(/\[Wins\]/g, object.Won);
    item = item.replace(/\[Lost\]/g, object.Lost);
    item = item.replace(/\[Draws\]/g, object.Tied);
    item = item.replace(/\[Nationality\]/g, object.Nationality);
    item = item.replace(/\[Position\]/g, object.Rank);
    item = item.replace(/\[Points\]/g, object.Points);
    
    return item;
}

// End: Competition Standing List

// Start: Big League Leader Board

var bigLeagueLeaderBoardPagination = null;
var bigLeagueLeaderBoardContainer = null;
var bigLeagueLeaderBoardWebMethod = null;
var bigLeagueLeaderBoardTemplate = null;
var bigLeagueLeaderBoardHeader = null;
var bigLeagueLeaderBoardPage = 0;
var bigLeagueLeaderBoardObjects = null;
var bigLeagueLeaderBoardMaxCount = 10;
var bigLeagueLeaderBoardMaxPages = 0;
var bigLeagueLeaderBoardMatchTypeSelect = null;
var bigLeagueLeaderBoardGameSelect = null;
var bigLeagueLeaderBoardGameTypeSelect = null;
var webMethodLeaderBoardGames = null;

var bigLeagueLeaderBoardPages = null;

function GetBigLeagueLeaderBoardPages() {
    if (bigLeagueLeaderBoardPages == null) {
        bigLeagueLeaderBoardPages = $("a[name='SetBigLeagueLeaderBoardPage']");
    }
    return bigLeagueLeaderBoardPages;
}

function GetBigLeagueLeaderBoardMatchTypeSelect() {
    if (bigLeagueLeaderBoardMatchTypeSelect == null) {
        bigLeagueLeaderBoardMatchTypeSelect = $("#bigLeagueLeaderBoardMatchTypeSelect");
    }
    return bigLeagueLeaderBoardMatchTypeSelect;
}

function GetBigLeagueLeaderBoardGameSelect() {
    if (bigLeagueLeaderBoardGameSelect == null) {
        bigLeagueLeaderBoardGameSelect = $("#bigLeagueLeaderBoardGameSelect");
    }
    return bigLeagueLeaderBoardGameSelect;
}

function GetBigLeagueLeaderBoardGameTypeSelect() {
    if (bigLeagueLeaderBoardGameTypeSelect == null) {
        bigLeagueLeaderBoardGameTypeSelect = $('#bigLeagueLeaderBoardGameTypeSelect')
    }
    return bigLeagueLeaderBoardGameTypeSelect;
}

function GetBigLeagueLeaderBoardContainer() {
    if (bigLeagueLeaderBoardContainer == null) {
        bigLeagueLeaderBoardContainer = $('#bigLeagueLeaderBoardContainer')
    }
    return bigLeagueLeaderBoardContainer;
}

function GetBigLeagueLeaderBoardTemplate() {
    if (bigLeagueLeaderBoardTemplate == null) {
        bigLeagueLeaderBoardTemplate = $('#bigLeagueLeaderBoardTemplate')
    }
    return bigLeagueLeaderBoardTemplate;
}

function GetBigLeagueLeaderBoardHeader() {
    if (bigLeagueLeaderBoardHeader == null) {
        bigLeagueLeaderBoardHeader = $('#bigLeagueLeaderBoardHeader')
    }
    return bigLeagueLeaderBoardHeader;
}

function GetBigLeagueLeaderBoardPagination() {
    if (bigLeagueLeaderBoardPagination == null) {
        bigLeagueLeaderBoardPagination = $('#bigLeagueLeaderBoardPagination')
    }
    return bigLeagueLeaderBoardPagination;
}

function GetBigLeagueLeaderBoardChangeMatchType() {
    SetGenericLoader(GetBigLeagueLeaderBoardContainer());
    GetBigLeagueLeaderBoardGameTypeSelect().html("<option value=\"0\">All</option>");
    var webMethod = webMethodLeaderBoardGames.replace(/\[MatchType\]/g, GetBigLeagueLeaderBoardMatchTypeSelect().val());
    GenericAjaxCall(webMethod, GetBigLeagueLeaderBoardGame);
    GetBigLeagueLeaderBoardList();
}

function GetBigLeagueLeaderBoardGame(objects) {
    var result = "<option value='0'>All</option>";
    for (var i = 0; i < objects.length; i++) {
        result += "<option value='" + objects[i].Id + "'>" + objects[i].Name + "</option>";
    }
    GetBigLeagueLeaderBoardGameSelect().html(result);
}

function GetBigLeagueLeaderBoardChangeGame() {
    SetGenericLoader(GetBigLeagueLeaderBoardContainer());
    var webMethod = webMethodLeaderBoardGameTypes.replace(/\[GameId\]/g, GetBigLeagueLeaderBoardGameSelect().val());
    GenericAjaxCall(webMethod, GetBigLeagueLeaderBoardGameType);
    GetBigLeagueLeaderBoardList();
}

function GetBigLeagueLeaderBoardGameType(objects) {
    var result = "<option value='0'>All</option>";
    for (var i = 0; i < objects.length; i++) {
        result += "<option value='" + objects[i].Id + "'>" + objects[i].Name + "</option>";
    }
    GetBigLeagueLeaderBoardGameTypeSelect().html(result);
}


function GetBigLeagueLeaderBoardList() {
    SetGenericLoader(GetBigLeagueLeaderBoardContainer());
    var webMethod = "";
    var returnFunction = null;
    var type = 0;
    BigLeagueLeaderBoardPage = 0;
    switch (type) {
        case 0:
            webMethod = bigLeagueLeaderBoardWebMethod.replace(/\[MatchType\]/g, GetBigLeagueLeaderBoardMatchTypeSelect().val());
            webMethod = webMethod.replace(/\[GameId\]/g, GetBigLeagueLeaderBoardGameSelect().val());
            webMethod = webMethod.replace(/\[GameTypeId\]/g, GetBigLeagueLeaderBoardGameTypeSelect().val());
            webMethod = webMethod;
            returnFunction = SetBigLeagueLeaderBoardPaginable;
            break;
    }
    GenericAjaxCall(webMethod, returnFunction);
}

function SetBigLeagueLeaderBoardPaginable(objects) {

    BigLeagueLeaderBoardCount = objects.length;
    if (objects.length > 0) {
        bigLeagueLeaderBoardMaxPages = Math.ceil(objects.length / bigLeagueLeaderBoardMaxCount);
        SetGenericPagination(GetBigLeagueLeaderBoardPagination(), bigLeagueLeaderBoardMaxPages, "SetBigLeagueLeaderBoardPage", "SetBigLeagueLeaderBoardNextPage", "SetBigLeagueLeaderBoardPreviousPage");
        bigLeagueLeaderBoardObjects = objects;
        SetBigLeagueLeaderBoardPage(0);
    }
    else {
        var container = GetBigLeagueLeaderBoardContainer();
        SetGenericNoResultsMessage(container, "Leader board is empty.");
    }
}

function SetBigLeagueLeaderBoardPage(page) {
    bigLeagueLeaderBoardPage = page;
    pages = GetBigLeagueLeaderBoardPages();
    pages.each(
    function() {
        this.className = '';
    })
    pages[page].className = 'currentpage';
    SetBigLeagueLeaderBoardList(bigLeagueLeaderBoardObjects);
}

function SetBigLeagueLeaderBoardPreviousPage() {

    var page = bigLeagueLeaderBoardPage - 1;

    if (page >= 0) {
        SetBigLeagueLeaderBoardPage(page);
    }
}

function SetBigLeagueLeaderBoardNextPage() {
    var page = bigLeagueLeaderBoardPage + 1;
    if (page < bigLeagueLeaderBoardMaxPages) {
        SetBigLeagueLeaderBoardPage(page)
    }
}

function SetBigLeagueLeaderBoardList(objects) {
    var rows = objects;
    var item;
    var result = "";

    var container = GetBigLeagueLeaderBoardContainer();


    if (rows.length > 0) {
        var template = GetBigLeagueLeaderBoardTemplate().html();
        var countFrom = (bigLeagueLeaderBoardPage * bigLeagueLeaderBoardMaxCount);
        var countTo = (bigLeagueLeaderBoardPage * bigLeagueLeaderBoardMaxCount) + bigLeagueLeaderBoardMaxCount;
        var header = GetBigLeagueLeaderBoardHeader().html();
        result = result + header;
        if (rows.length < countTo) {
            countTo = rows.length;
        }

        for (var i = countFrom; i < countTo; i++) {
            item = template.replace(/\[Id\]/g, rows[i].Id);
            item = item.replace(/\[Name\]/g, rows[i].Name);
            item = item.replace(/\[Favor\]/g, rows[i].Favor);
            item = item.replace(/\[Against\]/g, rows[i].Against);
            item = item.replace(/\[Win\]/g, rows[i].Win);
            item = item.replace(/\[Lose\]/g, rows[i].Lose);
            item = item.replace(/\[Draw\]/g, rows[i].Draw);
            item = item.replace(/\alt=\"flagImage\"/g, "src=\"" + rows[i].Country.Flag + "\"");
            item = item.replace(/\alt=\"Images\"/g, "src=\"" + rows[i].Image + "\"");
            item = item.replace(/\alt=flagImage/g, "src=\"" + rows[i].Country.Flag + "\"");
            item = item.replace(/\alt=Images/g, "src=\"" + rows[i].Image + "\"");
            item = item.replace(/\[Rank\]/g, rows[i].Rank);
            item = item.replace(/\[Points\]/g, rows[i].Points);
            result += item;
        }
        container.html(result);
    }
    else {
        SetGenericNoResultsMessage(container, "Leader board is empty.");
    }

}


// End: Big League Leader Board

// Start: Member Game Control

var webMethodListGames = null;
var editGameListContainer = null;
var editGameList = null;
var editGameEditedTemplate = null;
var editGameTemplate = null;

function GetEditGameList() {
    if (editGameList == null) {
        editGameList = $("#editGameList");
    }
    return editGameList;
}

function GetEditGameListContainer() {
    if (editGameListContainer == null) {
        editGameListContainer = $("#editGameListContainer");
    }
    return editGameListContainer;
}

function GetEditGameTemplate() {
    if (editGameTemplate == null) {
        editGameTemplate = $("#editGameTemplate");
    }
    return editGameTemplate;
}



function EditGameListGames(platformId) {

    SetGenericLoader(GetEditGameListContainer());
    if ($("#platform" + platformId + ":checked").val() != null) {
        editGameEditedTemplate = GetEditGameTemplate().replace(/alt=\"active\"/g, "");
        editGameEditedTemplate = GetEditGameTemplate().replace(/alt=active/g, "");
    }
    else {
        editGameEditedTemplate = GetEditGameTemplate().replace(/alt=\"active\"/g, "disabled");
        editGameEditedTemplate = GetEditGameTemplate().replace(/alt=active/g, "disabled");
    }
    var webMethod = webMethodListGames.replace(/\[PlatformId\]/g, platformId);
    GenericAjaxCall(webMethod, SetEditGameList);
}

function SetEditGameList(objects) {
    GetEditGameList().show();
    var container = GetEditGameListContainer();
    var result = "";

    container.html(result);
}

// End: Member Game Control

// Start: Big Tournament List
var bigTournamentListContainer = null;
var bigTournamentListWebMethod = null;
var bigTournamentListTemplate = null;
var bigTournamentListHeader = null;
var bigTournamentListPage = 0;
var bigTournamentListTabs = null;
var bigTournamentListObjects = null;
var bigTournamentListMaxCount = 10;
var bigTournamentListMaxPages = 0;
var bigTournamentListPagination = null;
var bigTournamentListPages = null;
var bigTournamentListEmptyError = "There are no tournaments ...";

function GetBigTournamentListPages() {
    if (bigTournamentListPages == null) {
        bigTournamentListPages = $("a[name='SetBigTournamentListPage']");
    }
    return bigTournamentListPages;
}

function GetBigTournamentListContainer() {
    if (bigTournamentListContainer == null) {
        bigTournamentListContainer = $('#bigTournamentList')
    }
    return bigTournamentListContainer;
}

function GetBigTournamentListTemplate() {
    if (bigTournamentListTemplate == null) {
        bigTournamentListTemplate = $('#bigTournamentListTemplate')
    }
    return bigTournamentListTemplate;
}

function GetBigTournamentListHeader() {
    if (bigTournamentListHeader == null) {
        bigTournamentListHeader = $('#bigTournamentListHeader')
    }
    return bigTournamentListHeader;
}

function GetBigTournamentListPagination() {
    if (bigTournamentListPagination == null) {
        bigTournamentListPagination = $('#bigTournamentListPagination')
    }
    return bigTournamentListPagination;
}

function GetBigTournamentListTabs() {
    if (bigTournamentListTabs == null) {
        bigTournamentListTabs = $("li[name='bigTournamentListTab']");
    }
    return bigTournamentListTabs;
}

function ChangeSelectedBigTournamentList(selectedBigTournamentList) {
    var tabs = GetBigTournamentListTabs();
    tabs.each(
    function() {
        this.className = '';
    })
    tabs[selectedBigTournamentList].className = 'tabActive';
    GetBigTournamentListPaginable(selectedBigTournamentList);
}

function GetBigTournamentListPaginable(type) {
    SetGenericLoader(GetBigTournamentListContainer());
    var modifiedWebMethod = bigTournamentListWebMethod.replace(/\[Type\]/g, type);

    GenericAjaxCall(modifiedWebMethod, GetBigTournamentList);
}

function GetBigTournamentList(objects) {

    var BigTournamentListCount = objects.length;
    if (BigTournamentListCount > 0) {
        bigTournamentListMaxPages = Math.ceil(objects.length / bigTournamentListMaxCount);
        SetGenericPagination(GetBigTournamentListPagination(), bigTournamentListMaxPages, "SetBigTournamentListPage", "SetBigTournamentListNextPage", "SetBigTournamentListPreviousPage");
        bigTournamentListObjects = objects;
        SetBigTournamentListPage(0);
    }
    else {
        SetGenericNoResultsMessage(GetBigTournamentListContainer(), bigTournamentListEmptyError);
    }
}

function SetBigTournamentListPage(page) {
    bigTournamentListPage = page;
    pages = GetBigTournamentListPages();

    pages.each(
    function() {
        this.className = '';
    })
    pages[page].className = 'currentpage';
    SetBigTournamentList(bigTournamentListObjects);
}

function SetBigTournamentListPreviousPage() {

    var page = bigTournamentListPage - 1;

    if (page >= 0) {
        SetBigTournamentListPage(page);
    }
}

function SetBigTournamentListNextPage() {
    var page = bigTournamentListPage + 1;
    if (page < bigTournamentListMaxPages) {
        SetBigTournamentListPage(page)
    }
}

function SetBigTournamentList(objects) {
    var rows = objects;
    var template = GetBigTournamentListTemplate().html();
    var item;
    var result = GetBigTournamentListHeader().html();
    var container = GetBigTournamentListContainer();

    for (var i = 0; i < rows.length; i++) {
        item = template.replace(/\[Id\]/g, rows[i].Id);
        item = item.replace(/alt=\"\[Image\]\"/g, "src=\"" + rows[i].Game.Image + "\"");
        item = item.replace(/alt=\[Image\]/g, "src=\"" + rows[i].Game.Image + "\"");
        item = item.replace(/\[Name\]/g, rows[i].Name);
        item = item.replace(/\[GameId\]/g, rows[i].Game.Id);
        item = item.replace(/\[GameName\]/g, rows[i].Game.Name);
        item = item.replace(/\[PlatformId\]/g, rows[i].Game.Platform.Id);
        item = item.replace(/\[PlatformName\]/g, rows[i].Game.Platform.Name);
        item = item.replace(/\[Starts\]/g, rows[i].Starts);
        item = item.replace(/\[Ends\]/g, rows[i].Ends);
        item = item.replace(/\[StatusName\]/g, rows[i].Status.Name);


        item = item.replace(/\[SkillFrom\]/g, rows[i].SkillFrom);
        item = item.replace(/\[SkillTo\]/g, rows[i].SkillTo);
        result += item;
    }
    container.html(result);
}

// End: Big Tournament List

// Start: Small Tournament News
var smallTournamentNewsContainer = null;
var smallTournamentNewsWebMethod = null;
var smallTournamentNewsTemplate = null;

function GetSmallTournamentNewsContainer() {
    if (smallTournamentNewsContainer == null) {
        smallTournamentNewsContainer = $('#smallTournamentNews')
    }
    return smallTournamentNewsContainer;
}

function GetSmallTournamentNewsTemplate() {
    if (smallTournamentNewsTemplate == null) {
        smallTournamentNewsTemplate = $('#smallTournamentNewsTemplate')
    }
    return smallTournamentNewsTemplate;
}

function GetSmallTournamentNews() {
    SetGenericLoader(GetSmallTournamentNewsContainer());
    GenericAjaxCall(smallTournamentNewsWebMethod, SetSmallTournamentNews);
}

function SetSmallTournamentNews(objects) {
    var rows = objects;
    var template = GetSmallTournamentNewsTemplate().html();
    var item;
    var result = "";
    var container = GetSmallTournamentNewsContainer();
    result = "<tr><td>";
    for (var i = 0; i < rows.length; i++) {
        item = template.replace(/\[Id\]/g, rows[i].Id);
        item = item.replace(/\[Image\]/g, rows[i].Thumbnail);
        item = item.replace(/\[Title\]/g, rows[i].Headline);
        result += item;
    }
    result += "</td></tr>";
    container.html(result);
}

// End: Small Tournament News

// Start: Small Tournament Standings & Matches

var smallTournamentStandingMatchesContainer = null;
var smallTournamentStandingsWebMethod = null;
var smallTournamentStandingsTemplate = null;
var smallTournamentStandingsHeader = null;
var smallTournamentMatchesWebMethod = null;
var smallTournamentMatchesTemplate = null;
var smallTournamentMatchesHeader = null;
var smallTournamentStandingsMatchesTabs = null;
var smallTournamentSelectContainer = null;
var smallTournamentSelect = null;

function GetSmallTournamentStandingMatchesContainer() {
    if (smallTournamentStandingMatchesContainer == null) {
        smallTournamentStandingMatchesContainer = $('#smallTournamentStandingsMatchesContainer');
    }
    return smallTournamentStandingMatchesContainer;
}

function GetSmallTournamentSelect() {
    if (smallTournamentSelect == null) {
        smallTournamentSelect = $('#smallTournamentSelect');
    }
    return smallTournamentSelect;
}

function GetSmallTournamentStandingsTemplate() {
    if (smallTournamentStandingsTemplate == null) {
        smallTournamentStandingsTemplate = $('#smallTournamentStandingsTemplate');
    }
    return smallTournamentStandingsTemplate;
}

function GetSmallTournamentSelectContainer() {
    if (smallTournamentSelectContainer == null) {
        smallTournamentSelectContainer = $('#smallTournamentSelectContainer');
    }
    return smallTournamentSelectContainer;
}

function GetSmallTournamentStandingsHeader() {
    if (smallTournamentStandingsHeader == null) {
        smallTournamentStandingsHeader = $('#smallTournamentStandingsHeader');
    }
    return smallTournamentStandingsHeader;
}

function GetSmallTournamentMatchesTemplate() {
    if (smallTournamentMatchesTemplate == null) {
        smallTournamentMatchesTemplate = $('#smallTournamentsMatchesTemplate');
    }
    return smallTournamentMatchesTemplate;
}

function GetSmallTournamentMatchesHeader() {
    if (smallTournamentMatchesHeader == null) {
        smallTournamentMatchesHeader = $('#smallTournamentMatchesHeader');
    }
    return smallTournamentMatchesHeader;
}

function GetSmallTournamentStandingsMatchesTabs() {
    if (smallTournamentStandingsMatchesTabs == null) {
        smallTournamentStandingsMatchesTabs = $('li[name=smallStandingsMatchesTabs]');
    }
    return smallTournamentStandingsMatchesTabs;
}

function ChangeSelectedSmallTournamentStandingsMatches(selectedSmallStandingsMatches) {
    var tabs = GetSmallTournamentStandingsMatchesTabs();
    tabs.each(
    function() {
        this.className = '';
    })
    tabs[selectedSmallStandingsMatches].className = 'tabActive';
    GetSmallTournamentStandingsMatchesList(selectedSmallStandingsMatches);
}

function GetSmallTournamentStandingsMatchesList(type) {

    var webMethod = "";
    var returnFunction = null;

    switch (type) {
        case 0:
            GetSmallTournamentSelectContainer().hide();
            webMethod = smallTournamentMatchesWebMethod;
            returnFunction = SetSmallTournamentMatches;
            break;
        case 1:
            GetSmallTournamentSelectContainer().show();
            webMethod = smallTournamentStandingsWebMethod.replace(/\[Type\]/g, GetSmallTournamentSelect().val());
            returnFunction = SetSmallTournamentStandings;
            break;
    }
    GenericAjaxCall(webMethod, returnFunction);
}

function SetSmallTournamentStandings(objects) {
    var rows = objects;
    var template = GetSmallTournamentStandingsTemplate().html();
    var item;
    var result = "";
    var container = GetSmallTournamentStandingMatchesContainer();
    var header = GetSmallTournamentStandingsHeader().html();
    result = header;
    for (var i = 0; i < rows.length; i++) {
        item = template.replace(/\[Id\]/g, rows[i].Id);
        item = item.replace(/\[Name\]/g, rows[i].Name);
        item = item.replace(/\alt=\"memberImage\"/g, "src=\"" + rows[i].Image + "\"");
        item = item.replace(/\alt=\"flagImage\"/g, "src=\"" + rows[i].Country.Flag + "\"");
        item = item.replace(/\alt=memberImage/g, "src=\"" + rows[i].Image + "\"");
        item = item.replace(/\alt=flagImage/g, "src=\"" + rows[i].Country.Flag + "\"");
        item = item.replace(/\[Score\]/g, rows[i].Score);
        result += item;
    }
    container.html(result);
}

function SetSmallTournamentMatches(objects) {
    var rows = objects;
    var template = GetSmallTournamentMatchesTemplate().html();
    var item;
    var result = "";
    var container = GetSmallTournamentStandingMatchesContainer();
    var header = GetSmallTournamentMatchesHeader().html();
    result = header;
    for (var i = 0; i < rows.length; i++) {
        item = template.replace(/\[Id\]/g, rows[i].Id);
        item = item.replace(/\[GameType\]/g, rows[i].Game.Type);
        if (rows[i].Game.Type = "Solo") {
            item = item.replace(/\[Url\]/g, memberUrl);
        }
        else {
            item = item.replace(/\[Url\]/g, teamUrl);
        }
        item = item.replace(/\[GameName\]/g, rows[i].Game.Name);
        item = item.replace(/\[ContestantHomeId\]/g, rows[i].ContestantHome.Id);
        item = item.replace(/\[ContestantAwayId\]/g, rows[i].ContestantAway.Id);
        item = item.replace(/\[ContestantHomeName\]/g, rows[i].ContestantHome.Name);
        item = item.replace(/\[ContestantAwayName\]/g, rows[i].ContestantAway.Name);
        item = item.replace(/\[ContestantHomeWon\]/g, rows[i].ContestantHome.Won);
        item = item.replace(/\[ContestantAwayWon\]/g, rows[i].ContestantAway.Won);
        item = item.replace(/\[CompetitionType\]/g, rows[i].Competition.Type);
        item = item.replace(/\[CompetitionName\]/g, rows[i].Competition.Name);
        item = item.replace(/\[CompetitionId\]/g, rows[i].Competition.Id);
        result += item;
    }
    container.html(result);
}
// End: Small Tournament Standings & Matches
// Start: Big Tournament Leader Board

var bigTournamentLeaderBoardPagination = null;
var bigTournamentLeaderBoardContainer = null;
var bigTournamentLeaderBoardWebMethod = null;
var bigTournamentLeaderBoardTemplate = null;
var bigTournamentLeaderBoardHeader = null;
var bigTournamentLeaderBoardPage = 0;
var bigTournamentLeaderBoardObjects = null;
var bigTournamentLeaderBoardMaxCount = 10;
var bigTournamentLeaderBoardMaxPages = 0;
var bigTournamentLeaderBoardMatchTypeSelect = null;
var bigTournamentLeaderBoardGameSelect = null;
var bigTournamentLeaderBoardGameTypeSelect = null;
var webMethodLeaderBoardGames = null;

var bigTournamentLeaderBoardPages = null;

function GetBigTournamentLeaderBoardPages() {
    if (bigTournamentLeaderBoardPages == null) {
        bigTournamentLeaderBoardPages = $("a[name='SetBigTournamentLeaderBoardPage']");
    }
    return bigTournamentLeaderBoardPages;
}

function GetBigTournamentLeaderBoardMatchTypeSelect() {
    if (bigTournamentLeaderBoardMatchTypeSelect == null) {
        bigTournamentLeaderBoardMatchTypeSelect = $("#bigTournamentLeaderBoardMatchTypeSelect");
    }
    return bigTournamentLeaderBoardMatchTypeSelect;
}

function GetBigTournamentLeaderBoardGameSelect() {
    if (bigTournamentLeaderBoardGameSelect == null) {
        bigTournamentLeaderBoardGameSelect = $("#bigTournamentLeaderBoardGameSelect");
    }
    return bigTournamentLeaderBoardGameSelect;
}

function GetBigTournamentLeaderBoardGameTypeSelect() {
    if (bigTournamentLeaderBoardGameTypeSelect == null) {
        bigTournamentLeaderBoardGameTypeSelect = $('#bigTournamentLeaderBoardGameTypeSelect')
    }
    return bigTournamentLeaderBoardGameTypeSelect;
}

function GetBigTournamentLeaderBoardContainer() {
    if (bigTournamentLeaderBoardContainer == null) {
        bigTournamentLeaderBoardContainer = $('#bigTournamentLeaderBoardContainer')
    }
    return bigTournamentLeaderBoardContainer;
}

function GetBigTournamentLeaderBoardTemplate() {
    if (bigTournamentLeaderBoardTemplate == null) {
        bigTournamentLeaderBoardTemplate = $('#bigTournamentLeaderBoardTemplate')
    }
    return bigTournamentLeaderBoardTemplate;
}

function GetBigTournamentLeaderBoardHeader() {
    if (bigTournamentLeaderBoardHeader == null) {
        bigTournamentLeaderBoardHeader = $('#bigTournamentLeaderBoardHeader')
    }
    return bigTournamentLeaderBoardHeader;
}

function GetBigTournamentLeaderBoardPagination() {
    if (bigTournamentLeaderBoardPagination == null) {
        bigTournamentLeaderBoardPagination = $('#bigTournamentLeaderBoardPagination')
    }
    return bigTournamentLeaderBoardPagination;
}

function GetBigTournamentLeaderBoardChangeMatchType() {
    GetBigTournamentLeaderBoardGameTypeSelect().html("<option value=\"0\">All</option>");
    var webMethod = webMethodLeaderBoardGames.replace(/\[MatchType\]/g, GetBigTournamentLeaderBoardMatchTypeSelect().val());
    GenericAjaxCall(webMethod, GetBigTournamentLeaderBoardGame);
    GetBigTournamentLeaderBoardList();
}

function GetBigTournamentLeaderBoardGame(objects) {
    var result = "<option value='0'>All</option>";
    for (var i = 0; i < objects.length; i++) {
        result += "<option value='" + objects[i].Id + "'>" + objects[i].Name + "</option>";
    }
    GetBigTournamentLeaderBoardGameSelect().html(result);
}

function GetBigTournamentLeaderBoardChangeGame() {
    var webMethod = webMethodLeaderBoardGameTypes.replace(/\[GameId\]/g, GetBigTournamentLeaderBoardGameSelect().val());
    GenericAjaxCall(webMethod, GetBigTournamentLeaderBoardGameType);
    GetBigTournamentLeaderBoardList();
}

function GetBigTournamentLeaderBoardGameType(objects) {
    var result = "<option value='0'>All</option>";
    for (var i = 0; i < objects.length; i++) {
        result += "<option value='" + objects[i].Id + "'>" + objects[i].Name + "</option>";
    }
    GetBigTournamentLeaderBoardGameTypeSelect().html(result);
}


function GetBigTournamentLeaderBoardList() {

    var webMethod = "";
    var returnFunction = null;
    var type = 0;
    BigTournamentLeaderBoardPage = 0;
    switch (type) {
        case 0:
            webMethod = bigTournamentLeaderBoardWebMethod.replace(/\[MatchType\]/g, GetBigTournamentLeaderBoardMatchTypeSelect().val());
            webMethod = webMethod.replace(/\[GameId\]/g, GetBigTournamentLeaderBoardGameSelect().val());
            webMethod = webMethod.replace(/\[GameTypeId\]/g, GetBigTournamentLeaderBoardGameTypeSelect().val());
            webMethod = webMethod;
            returnFunction = SetBigTournamentLeaderBoardPaginable;
            break;
    }
    GenericAjaxCall(webMethod, returnFunction);
}

function SetBigTournamentLeaderBoardPaginable(objects) {

    BigTournamentLeaderBoardCount = objects.length;
    bigTournamentLeaderBoardMaxPages = Math.ceil(objects.length / bigTournamentLeaderBoardMaxCount);
    SetGenericPagination(GetBigTournamentLeaderBoardPagination(), bigTournamentLeaderBoardMaxPages, "SetBigTournamentLeaderBoardPage", "SetBigTournamentLeaderBoardNextPage", "SetBigTournamentLeaderBoardPreviousPage");
    bigTournamentLeaderBoardObjects = objects;
    SetBigTournamentLeaderBoardPage(0);
}

function SetBigTournamentLeaderBoardPage(page) {
    bigTournamentLeaderBoardPage = page;
    pages = GetBigTournamentLeaderBoardPages();
    pages.each(
    function() {
        this.className = '';
    })
    pages[page].className = 'currentpage';
    SetBigTournamentLeaderBoardList(bigTournamentLeaderBoardObjects);
}

function SetBigTournamentLeaderBoardPreviousPage() {

    var page = bigTournamentLeaderBoardPage - 1;

    if (page >= 0) {
        SetBigTournamentLeaderBoardPage(page);
    }
}

function SetBigTournamentLeaderBoardNextPage() {
    var page = bigTournamentLeaderBoardPage + 1;
    if (page < bigTournamentLeaderBoardMaxPages) {
        SetBigTournamentLeaderBoardPage(page)
    }
}

function SetBigTournamentLeaderBoardList(objects) {
    var rows = objects;
    var item;
    var result = "";

    var container = GetBigTournamentLeaderBoardContainer();


    if (rows.length > 0) {
        var template = GetBigTournamentLeaderBoardTemplate().html();
        var countFrom = (bigTournamentLeaderBoardPage * bigTournamentLeaderBoardMaxCount);
        var countTo = (bigTournamentLeaderBoardPage * bigTournamentLeaderBoardMaxCount) + bigTournamentLeaderBoardMaxCount;
        var header = GetBigTournamentLeaderBoardHeader().html();
        result = result + header;
        if (rows.length < countTo) {
            countTo = rows.length;
        }

        for (var i = countFrom; i < countTo; i++) {
            item = template.replace(/\[Id\]/g, rows[i].Id);
            item = item.replace(/\[Name\]/g, rows[i].Name);
            item = item.replace(/\[Favor\]/g, rows[i].Favor);
            item = item.replace(/\[Against\]/g, rows[i].Against);
            item = item.replace(/\[Win\]/g, rows[i].Win);
            item = item.replace(/\[Lose\]/g, rows[i].Lose);
            item = item.replace(/\[Draw\]/g, rows[i].Draw);
            item = item.replace(/\alt=\"flagImage\"/g, "src=\"" + rows[i].Country.Flag + "\"");
            item = item.replace(/\alt=\"Images\"/g, "src=\"" + rows[i].Image + "\"");
            item = item.replace(/\alt=flagImage/g, "src=\"" + rows[i].Country.Flag + "\"");
            item = item.replace(/\alt=Images/g, "src=\"" + rows[i].Image + "\"");
            item = item.replace(/\[Rank\]/g, rows[i].Rank);
            item = item.replace(/\[Points\]/g, rows[i].Points);
            result += item;
        }
        container.html(result);
    }
    else {
        SetGenericNoResultsMessage(container, "Leader board is empty.");
    }

}


// End: Big Tournament Leader Board


// Start: Challenge Ladder Stats

function ChallengeLadderStatsReplace(template, object)
{
    var item = template.replace(/\[Id\]/g, object.Id);
    item = item.replace(/\[PlatformName\]/g, object.Name);
    item = item.replace(/\[Image\]/g, object.Image);
    item = item.replace(/\[Games\]/g, object.Games);
    item = item.replace(/\[Members\]/g, object.Members);
    item = item.replace(/\[Teams\]/g, object.Teams);
    return item;
}

// End: Challenge Ladder Stats










// Start: Available Challenge Ladders
var availableChallengeLaddersContainer = null;
var availableChallengeLaddersTemplate = null;
var availableChallengeLaddersContainer = null;
var availableChallengeLaddersPagination = null;
var availableChallengeLaddersPage = 0;
var availableChallengeLaddersObjects = null;
var availableChallengeLaddersMaxCount = 12;
var availableChallengeLaddersMaxPages = 0;

var availableChallengeLaddersWebMethod = null;
var availableChallengeLaddersPages = null;

function GetAvailableChallengeLaddersPages() {
    if (availableChallengeLaddersPages == null) {
        availableChallengeLaddersPages = $("a[name='SetAvailableChallengeLaddersPage']");
    }
    return availableChallengeLaddersPages;
}

function GetAvailableChallengeLaddersContainer() {
    if (availableChallengeLaddersContainer == null) {
        availableChallengeLaddersContainer = $('#availableChallengeLadderStatsContainer')
    }
    return availableChallengeLaddersContainer;
}

function GetAvailableChallengeLaddersTemplate() {
    if (availableChallengeLaddersTemplate == null) {
        availableChallengeLaddersTemplate = $('#availableChallengeLaddersTemplate')
    }
    return availableChallengeLaddersTemplate;
}

function GetAvailableChallengeLaddersPagination() {
    if (availableChallengeLaddersPagination == null) {
        availableChallengeLaddersPagination = $('#availableChallengeLaddersPagination')
    }
    return availableChallengeLaddersPagination;
}

function GetAvailableChallengeLaddersList() {
    SetGenericLoader(GetAvailableChallengeLaddersContainer());
    availableChallengeLaddersPage = 0;
    GenericAjaxCall(availableChallengeLaddersWebMethod, SetAvailableChallengeLaddersListPaginable);
}

function SetAvailableChallengeLaddersListPaginable(objects) {
    if (objects.length > 0) {
        AvailableChallengeLaddersCount = objects.length;
        availableChallengeLaddersMaxPages = Math.ceil(objects.length / availableChallengeLaddersMaxCount);
        SetGenericPagination(GetAvailableChallengeLaddersPagination(), availableChallengeLaddersMaxPages, "SetAvailableChallengeLaddersPage", "SetAvailableChallengeLaddersNextPage", "SetAvailableChallengeLaddersPreviousPage");
        availableChallengeLaddersObjects = objects;
        SetAvailableChallengeLaddersPage(0);
    } else {
        var container = GetAvailableChallengeLaddersContainer();
        SetGenericNoResultsMessage(container, "Ladder board is empty.");
    }
}

function SetAvailableChallengeLaddersPage(page) {
    availableChallengeLaddersPage = page;
    pages = GetAvailableChallengeLaddersPages();
    pages.each(
    function() {
        this.className = '';
    })
    pages[page].className = 'currentpage';
    SetAvailableChallengeLaddersList(availableChallengeLaddersObjects);
}

function SetAvailableChallengeLaddersPreviousPage() {
    var page = availableChallengeLaddersPage - 1;

    if (page >= 0) {
        SetAvailableChallengeLaddersPage(page);
    }
}

function SetAvailableChallengeLaddersNextPage() {
    var page = availableChallengeLaddersPage + 1;
    if (page < availableChallengeLaddersMaxPages) {
        SetAvailableChallengeLaddersPage(page)
    }
}

function SetAvailableChallengeLaddersList(objects) {
    var rows = objects;
    var item;
    var result = "";

    var container = GetAvailableChallengeLaddersContainer();

    var template = GetAvailableChallengeLaddersTemplate().html();
    var countFrom = (availableChallengeLaddersPage * availableChallengeLaddersMaxCount);
    var countTo = (availableChallengeLaddersPage * availableChallengeLaddersMaxCount) + availableChallengeLaddersMaxCount;

    if (rows.length < countTo) {
        countTo = rows.length;
    }

    for (var i = countFrom; i < countTo; i++) {
        item = template.replace(/\[GameId\]/g, rows[i].Id);
        item = item.replace(/\[GameName\]/g, rows[i].Name);
        item = item.replace(/alt=\"\[GameImage\]\"/g, "src=\"" + rows[i].Image + "\"");
        item = item.replace(/alt=\[GameImage\]/g, "src=\"" + rows[i].Image + "\"");
        item = item.replace(/\[PlatformId\]/g, rows[i].Platform.Id);
        item = item.replace(/\[PlatformName\]/g, rows[i].Platform.Description);
        item = item.replace(/\[Active\]/g, rows[i].Active);
        item = item.replace(/\[MatchType\]/g, rows[i].MatchType);
        if (rows[i].Active == "True") {
            item = item.replace(/\[GameOff\]/g, "hidden");
        } else {
            item = item.replace(/\[GameOn\]/g, "hidden");
        }

        result += item;
    }
    container.html(result);
}
// End: Available Challenge Ladders

// Start: Ladder Central: Standings & Matches

var standingsMatchesLadderTab = null;

var standingsMatchesLadderContainer = null;
var standingsMatchesLadderRecentMatchesHeader = null;
var standingsMatchesLadderRecentMatchesTemplate = null;
var standingsMatchesLadderRecentMatchesSelectContainer = null;
var standingsMatchesLadderSelectGame = null;

var standingsMatchesLadderCurrentAction = null;

var standingsMatchesLadderRankingHeader = null;
var standingsMatchesLadderRankingTemplate = null;
var standingsMatchesLadderRankingSelectContainer = null;
var standingsMatchesLadderRankingSelectGame = null;
var standingsMatchesLadderRankingSelectType = null;

var webMethodStandingsMatchesLadderRecentMatches = null;
var webMethodStandingsMatchesLadderRanking = null;

function GetStandingsMatchesLadderTab() {
    if (standingsMatchesLadderTab == null) {
        standingsMatchesLadderTab = $("li[name='standingsMatchesLadderTab']");
    }
    return standingsMatchesLadderTab;
}

function GetStandingsMatchesLadderContainer() {
    if (standingsMatchesLadderContainer == null) {
        standingsMatchesLadderContainer = $("#standingsMatchesLadderContainer");
    }
    return standingsMatchesLadderContainer;
}

function GetStandingsMatchesLadderRecentMatchesHeader() {
    if (standingsMatchesLadderRecentMatchesHeader == null) {
        standingsMatchesLadderRecentMatchesHeader = $('#standingsMatchesLadderRecentMatchesHeader');
    }
    return standingsMatchesLadderRecentMatchesHeader;
}

function GetStandingsMatchesLadderRecentMatchesTemplate() {
    if (standingsMatchesLadderRecentMatchesTemplate == null) {
        standingsMatchesLadderRecentMatchesTemplate = $('#standingsMatchesLadderRecentMatchesTemplate')
    }
    return standingsMatchesLadderRecentMatchesTemplate;
}

function GetStandingsMatchesLadderRecentMatchesSelectContainer() {
    if (standingsMatchesLadderRecentMatchesSelectContainer == null) {
        standingsMatchesLadderRecentMatchesSelectContainer = $("#standingsMatchesLadderRecentMatchesSelectContainer");
    }
    return standingsMatchesLadderRecentMatchesSelectContainer;
}

function GetStandingsMatchesLadderSelectGame() {
    if (standingsMatchesLadderSelectGame == null) {
        standingsMatchesLadderSelectGame = $("#standingsMatchesLadderSelectGame");
    }
    return standingsMatchesLadderSelectGame;
}

function GetStandingsMatchesLadderGames() {
    GetStandingsMatchesLadderSelectGame().html("<option value=\"0\">All</option>");
    var webMethod = webMethodStandingsMatchesLadderGames;
    GenericAjaxCall(webMethod, SetStandingsMatchesLadderGames);
}

function SetStandingsMatchesLadderGames(objects) {
    var result = "<option value='0'>All</option>";
    for (var i = 0; i < objects.length; i++) {
        result += "<option value='" + objects[i].Id + "'>" + objects[i].Name + "</option>";
    }
    GetStandingsMatchesLadderSelectGame().html(result);
}


//tab: Ladder Rankings
function GetStandingsMatchesLadderRankingHeader() {
    if (standingsMatchesLadderRankingHeader == null) {
        standingsMatchesLadderRankingHeader = $('#standingsMatchesLadderRankingHeader');
    }
    return standingsMatchesLadderRankingHeader;
}

function GetStandingsMatchesLadderRankingTemplate() {
    if (standingsMatchesLadderRankingTemplate == null) {
        standingsMatchesLadderRankingTemplate = $('#standingsMatchesLadderRankingTemplate')
    }
    return standingsMatchesLadderRankingTemplate;
}

function GetStandingsMatchesLadderRankingSelectContainer() {
    if (standingsMatchesLadderRankingSelectContainer == null) {
        standingsMatchesLadderRankingSelectContainer = $("#standingsMatchesLadderRankingSelectContainer");
    }
    return standingsMatchesLadderRankingSelectContainer;
}

function GetStandingsMatchesLadderRankingSelectType() {
    if (standingsMatchesLadderRankingSelectType == null) {
        standingsMatchesLadderRankingSelectType = $("#standingsMatchesLadderRankingSelectType");
    }
    return standingsMatchesLadderRankingSelectType;
}

function GetStandingsMatchesLadderRankingSelectGame() {
    if (standingsMatchesLadderRankingSelectGame == null) {
        standingsMatchesLadderRankingSelectGame = $("#standingsMatchesLadderRankingSelectGame");
    }
    return standingsMatchesLadderRankingSelectGame;
}

function GetStandingsMatchesLadderRankingChangeMatchType() {
    SetStandingsMatchesLadderTab(standingsMatchesLadderCurrentAction);
}

function SetStandingsMatchesLadderTab(selectedStandingsMatchesLadderTab) {
    standingsMatchesLadderCurrentAction = selectedStandingsMatchesLadderTab;
    SetGenericLoader(GetStandingsMatchesLadderContainer());
    var webMethod = null;
    var tabs = GetStandingsMatchesLadderTab();
    var returnFunction = "";

    tabs.each(
    function() {
        this.className = '';
    })
    tabs[selectedStandingsMatchesLadderTab].className = 'tabActive';

    switch (selectedStandingsMatchesLadderTab) {
        case 0:
            GetStandingsMatchesLadderRankingSelectContainer().hide();
            webMethod = webMethodStandingsMatchesLadderRecentMatches; //.replace(/\[MatchType\]/g, GetStandingsMatchesLadderRankingSelectType().val());
            returnFunction = SetStandingsMatchesLadderRecentMatches;
            break;
        case 1:
            GetStandingsMatchesLadderRankingSelectContainer().show();
            webMethod = webMethodStandingsMatchesLadderRanking.replace(/\[MatchType\]/g, GetStandingsMatchesLadderRankingSelectType().val());
            returnFunction = SetStandingsMatchesLadderRanking;
            break;
    }
    GenericAjaxCall(webMethod, returnFunction);
}

function SetStandingsMatchesLadderRecentMatches(objects) {
    var rows = objects;
    var container = GetStandingsMatchesLadderContainer();
    var template = GetStandingsMatchesLadderRecentMatchesTemplate().html();

    var result = "";
    var item;

    if (rows.length > 0) {
        result += GetStandingsMatchesLadderRecentMatchesHeader().html();
        for (var i = 0; i < rows.length; i++) {

            item = template.replace(/\[Id\]/g, rows[i].Id);
            item = item.replace(/\[GameType\]/g, rows[i].Game.Type);
            if (rows[i].Game.Type = "Solo") {
                item = item.replace(/\[Url\]/g, memberUrl);
            }
            else {
                item = item.replace(/\[Url\]/g, teamUrl);
            }
            var compType;
            switch (rows[i].Competition.Type) {
                case "League":
                    compType = 1;
                    break;
                case "Tournament":
                    compType = 2;
                    break;
                case "Challenge":
                    compType = 3;
                    break;

            }
            item = item.replace(/\[CompetitionUrl\]/g, competitionLink[compType]);
            item = item.replace(/\[MatchUrl\]/g, matchLink[compType]);

            item = item.replace(/\[GameName\]/g, rows[i].Game.Name);
            item = item.replace(/\[ContestantHomeId\]/g, rows[i].ContestantHome.Id);
            item = item.replace(/\[ContestantAwayId\]/g, rows[i].ContestantAway.Id);
            item = item.replace(/\[ContestantHomeName\]/g, rows[i].ContestantHome.Name);
            item = item.replace(/\[ContestantAwayName\]/g, rows[i].ContestantAway.Name);
            item = item.replace(/\[ContestantHomeWon\]/g, rows[i].ContestantHome.Won);
            item = item.replace(/\[ContestantAwayWon\]/g, rows[i].ContestantAway.Won);
            item = item.replace(/\[CompetitionType\]/g, rows[i].Competition.Type);
            item = item.replace(/\[CompetitionName\]/g, rows[i].Competition.Name);
            item = item.replace(/\[CompetitionId\]/g, rows[i].Competition.Id);
            result += item;
        }
        container.html(result);


    }
    else {
        var message = "Welcome to the Challenge Ladder! There are currently no matches played yet! We may have just added the game so " +
                        "help us get this ladder started. Challenge Ladder's are a fun way to track your stats without the pressure of " +
                        "competing in a scheduled fashion like our <a class=\"text11Yellow\" href=\"../Tournament/Default.aspx\">Leagues</a> and " +
                        "<a class=\"text11Yellow\" href=\"../League/Default.aspx\">Tournaments</a>. It's also excellent practice and training " +
                        "for big events. All it takes is two players to get up on the leaderboard so click on the Challenge or " +
                        "Play Now tabs and get started!"
        SetGenericNoResultsMessage(container, message);
    }
}

function SetStandingsMatchesLadderRanking(objects) {
    var rows = objects;
    var container = GetStandingsMatchesLadderContainer();
    var template = GetStandingsMatchesLadderRankingTemplate().html();

    var result = "";
    var item;

    if (rows.length > 0) {
        result += GetStandingsMatchesLadderRankingHeader().html();
        for (var i = 0; i < rows.length; i++) {
            item = template.replace(/\[Id\]/g, rows[i].Id);
            item = item.replace(/\[Name\]/g, rows[i].Name);
            item = item.replace(/\alt=\"memberImage\"/g, "src=\"" + rows[i].Image + "\"");
            item = item.replace(/\alt=\"flagImage\"/g, "src=\"" + rows[i].Country.Flag + "\"");
            item = item.replace(/\alt=memberImage/g, "src=\"" + rows[i].Image + "\"");
            item = item.replace(/\alt=flagImage/g, "src=\"" + rows[i].Country.Flag + "\"");
            item = item.replace(/\[Score\]/g, rows[i].Score);
            result += item;
        }
        container.html(result);
    }
    else {
        SetGenericNoResultsMessage(container, "The Leaderboards are generated <br /> once matches are played.");
    }
}

// End: Ladder Central: Standings & Matches

// Start: Ladder Forum Hot Topics
var ladderForumTopicsContainer = null;
var ladderForumTopicsTemplate = null;

var ladderForumTopicsPagination = null;
var ladderForumTopicsPage = 0;
var ladderForumTopicsObjects = null;
var ladderForumTopicsMaxCount = 6;
var ladderForumTopicsMaxPages = 0;

var ladderForumTopicsWebMethod = null;
var ladderForumTopicsPages = null;

function GetLadderForumTopicsPages() {
    if (ladderForumTopicsPages == null) {
        ladderForumTopicsPages = $("a[name='SetLadderForumTopicsPage']");
    }
    return ladderForumTopicsPages;
}

function GetLadderForumTopicsContainer() {
    if (ladderForumTopicsContainer == null) {
        ladderForumTopicsContainer = $('#ladderForumTopicsContainer')
    }
    return ladderForumTopicsContainer;
}

function GetLadderForumTopicsTemplate() {
    if (ladderForumTopicsTemplate == null) {
        ladderForumTopicsTemplate = $('#ladderForumTopicsTemplate')
    }
    return ladderForumTopicsTemplate;
}

function GetLadderForumTopicsPagination() {
    if (ladderForumTopicsPagination == null) {
        ladderForumTopicsPagination = $('#ladderForumTopicsPagination')
    }
    return ladderForumTopicsPagination;
}

function GetLadderForumTopicsList() {
    SetGenericLoader(GetLadderForumTopicsContainer());
    ladderForumTopicsPage = 0;
    GenericAjaxCall(ladderForumTopicsWebMethod, SetLadderForumTopicsListPaginable);
}

function SetLadderForumTopicsListPaginable(objects) {
    if (objects.length > 0) {
        LadderForumTopicsCount = objects.length;
        ladderForumTopicsMaxPages = Math.ceil(objects.length / ladderForumTopicsMaxCount);
        SetGenericPagination(GetLadderForumTopicsPagination(), ladderForumTopicsMaxPages, "SetLadderForumTopicsPage", "SetLadderForumTopicsNextPage", "SetLadderForumTopicsPreviousPage");
        ladderForumTopicsObjects = objects;
        SetLadderForumTopicsPage(0);
    } else {
        var container = GetLadderForumTopicsContainer();
        SetGenericNoResultsMessage(container, "There are no forum topics.");
    }
}

function SetLadderForumTopicsPage(page) {
    ladderForumTopicsPage = page;
    pages = GetLadderForumTopicsPages();
    pages.each(
    function() {
        this.className = '';
    })
    pages[page].className = 'currentpage';
    SetLadderForumTopicsList(ladderForumTopicsObjects);
}

function SetLadderForumTopicsPreviousPage() {
    var page = ladderForumTopicsPage - 1;

    if (page >= 0) {
        SetLadderForumTopicsPage(page);
    }
}

function SetLadderForumTopicsNextPage() {
    var page = ladderForumTopicsPage + 1;
    if (page < ladderForumTopicsMaxPages) {
        SetLadderForumTopicsPage(page)
    }
}

function SetLadderForumTopicsList(objects) {
    var rows = objects;
    var item;
    var result = "";

    var container = GetLadderForumTopicsContainer();

    var template = GetLadderForumTopicsTemplate().html();
    var countFrom = (ladderForumTopicsPage * ladderForumTopicsMaxCount);
    var countTo = (ladderForumTopicsPage * ladderForumTopicsMaxCount) + ladderForumTopicsMaxCount;

    if (rows.length < countTo) {
        countTo = rows.length;
    }

    for (var i = countFrom; i < countTo; i++) {

        result += item;
    }
    container.html(result);
}
// End: Ladder Forum Hot Topics

// Start: Challenge Contestant List
var challengeContestantListContainer = null;
var challengeContestantListWebMethod = null;
var challengeContestantListTemplate = null;
var challengeContestantListHeader = null;
var tbSearch = null;
var challengeContestantListPage = 0;
var challengeContestantListTabs = null;
var challengeContestantListObjects = null;
var challengeContestantListMaxCount = 10;
var challengeContestantListMaxPages = 0;
var challengeContestantListPagination = null;
var challengeContestantListPages = null;

function GetChallengeContestantListPages() {
    if (challengeContestantListPages == null) {
        challengeContestantListPages = $("a[name='SetChallengeContestantListPage']");
    }
    return challengeContestantListPages;
}

function GetChallengeContestantListContainer() {
    if (challengeContestantListContainer == null) {
        challengeContestantListContainer = $('#challengeContestantList');
    }
    return challengeContestantListContainer;
}

function GetChallengeContestantListTemplate() {
    if (challengeContestantListTemplate == null) {
        challengeContestantListTemplate = $('#challengeContestantListTemplate');
    }
    return challengeContestantListTemplate;
}

function GetChallengeContestantListHeader() {
    if (challengeContestantListHeader == null) {
        challengeContestantListHeader = $('#challengeContestantListHeader');
    }
    return challengeContestantListHeader;
}

function GetChallengeContestantListPagination() {
    if (challengeContestantListPagination == null) {
        challengeContestantListPagination = $('#challengeContestantListPagination');
    }
    return challengeContestantListPagination;
}

function GetTbSearch() {
    if (tbSearch == null) {
        tbSearch = $("#tbSearch");
    }
    return tbSearch;
}

function GetChallengeContestantList() {
    SetGenericLoader(GetChallengeContestantListContainer());
    challengeContestantListPage = 0;
    var webMethod = null;
    webMethod = challengeContestantListWebMethod.replace(/\[Key\]/g, GetTbSearch().val());

    GenericAjaxCall(webMethod, GetChallengeContestantListPaginable);
}

function GetChallengeContestantListPaginable(objects) {
    var ChallengeContestantListCount = objects.length;
    if (objects.length > 0) {
        challengeContestantListMaxPages = Math.ceil(objects.length / challengeContestantListMaxCount);
        SetGenericPagination(GetChallengeContestantListPagination(), challengeContestantListMaxPages, "SetChallengeContestantListPage", "SetChallengeContestantListNextPage", "SetChallengeContestantListPreviousPage");
        challengeContestantListObjects = objects;
        SetChallengeContestantListPage(0);
    }
    else {
        SetGenericNoResultsMessage(GetChallengeContestantListContainer(), "No contestants found... ");
    }
}

function SetChallengeContestantListPage(page) {
    challengeContestantListPage = page;
    pages = GetChallengeContestantListPages();

    pages.each(
    function() {
        this.className = '';
    })
    pages[page].className = 'currentpage';
    SetChallengeContestantList(challengeContestantListObjects);
}

function SetChallengeContestantListPreviousPage() {

    var page = challengeContestantListPage - 1;

    if (page >= 0) {
        SetChallengeContestantListPage(page);
    }
}

function SetChallengeContestantListNextPage() {
    var page = challengeContestantListPage + 1;
    if (page < challengeContestantListMaxPages) {
        SetChallengeContestantListPage(page)
    }
}

function SetChallengeContestantList(objects) {
    var rows = objects;
    var template = GetChallengeContestantListTemplate().html();
    var item;
    var result = GetChallengeContestantListHeader().html();
    var container = GetChallengeContestantListContainer();

    var countFrom = (challengeContestantListPage * challengeContestantListMaxCount);
    var countTo = (challengeContestantListPage * challengeContestantListMaxCount) + challengeContestantListMaxCount;

    if (rows.length < countTo) {
        countTo = rows.length;
    }

    for (var i = countFrom; i < countTo; i++) {
        item = template.replace(/\[Id\]/g, rows[i].Id);

        if (rows[i].MatchType = "Solo") {
            item = item.replace(/\[Url\]/g, memberUrl);
        }
        else {
            item = item.replace(/\[Url\]/g, teamUrl);
        }
        item = item.replace(/alt=\"\[Image\]\"/g, "src=\"" + rows[i].Image + "\"");
        item = item.replace(/alt=\"\[FlagImage\]\"/g, "src=\"" + rows[i].Nationality.Image + "\"");
        item = item.replace(/alt=\[Image\]/g, "src=\"" + rows[i].Image + "\"");
        item = item.replace(/alt=\[FlagImage\]/g, "src=\"" + rows[i].Nationality.Image + "\"");
        item = item.replace(/\[Name\]/g, rows[i].Name);
        item = item.replace(/\[TimeZone\]/g, rows[i].TimeZone.Name);
        result += item;
    }
    container.html(result);
}

// End: Big League List

// Start: Community: Gaming News

function GamingNewsItemReplace(template, object) {
    var item = template.replace(/\[Id\]/g, object.Id);
        var image = "src='" + object.Thumbnail + "'"
        item = item.replace(/\alt=\"\"/g, image);
        item = item.replace(/\[Publisher\]/g, object.Publisher);
        item = item.replace(/\[Headline\]/g, object.Headline);
        item = item.replace(/\[Date\]/g, object.Date);
        return item;

}
// End: Community: Gaming News

// Start: Community: Recent Posts
function RecentBlogReplace(template, object) {

        var item = template.replace(/\[Id\]/g, object.Id);
        item = item.replace(/\alt=\"\"/g, "src=\"" + object.Image + "\"");
        item = item.replace(/\[Date\]/g, object.Date);
        item = item.replace(/\[Title\]/g, object.Title);
        if (object.Type == 1) {
            item = item.replace(/\[Type\]/g, "Member");
            item = item.replace(/\[BlogType\]/g, "Member");
            item = item.replace(/\[Url\]/g, memberBlogUrl);
        }
        else {
            item = item.replace(/\[Type\]/g, "Team");
            item = item.replace(/\[BlogType\]/g, "Team");
            item = item.replace(/\[Url\]/g, teamBlogUrl);
        }
        item = item.replace(/\[Blogger\]/g, object.Author.Name);
        item = item.replace(/\[Body\]/g, object.Body);
        return item;
}
// End: Community: Recent Posts

// Start: Community: Videos

function NewVideoReplace(template, object) {
    var item = template.replace(/\[Id\]/g, object.Id);
    item = item.replace(/\alt=\"\"/g, "src=\"" + object.Thumbnail + "\"");
    item = item.replace(/\[Name\]/g, object.Name);
    return item;
}
// End: Community: Videos

// Start: Community: Users Online

function UsersOnlineReplace(template, object) {

    var item = template.replace(/\[Id\]/g, object.Id);
        item = item.replace(/\[UserName\]/g, object.UserName);
        item = item.replace(/\alt=\"\"/g, "src='" + object.Country.Flag + "'");
        item = item.replace(/\[CountryName\]/g, object.Country.Name);
        return item;
}

// End: Community: Users Online

// Start: Game Ladder: Recent Matches

var gameLadderRecentMatchesContainer = null;
var gameLadderRecentMatchesHeader = null;
var gameLadderRecentMatchesTemplate = null;
var gameLadderRecentMatchesSelectGameContainer = null;
var gameLadderRecentMatchesSelectGame = null;

var gameLadderRecentMatchesCurrentAction = null;

var webMethodGameLadderRecentMatches = null;
var webMethodGameLadderRecentMatchesGames = null;

//falta paginacion

function GetGameLadderRecentMatchesContainer() {
    if (gameLadderRecentMatchesContainer == null) {
        gameLadderRecentMatchesContainer = $("#gameLadderRecentMatchesContainer");
    }
    return gameLadderRecentMatchesContainer;
}

function GetGameLadderRecentMatchesHeader() {
    if (gameLadderRecentMatchesHeader == null) {
        gameLadderRecentMatchesHeader = $('#gameLadderRecentMatchesHeader');
    }
    return gameLadderRecentMatchesHeader;
}

function GetGameLadderRecentMatchesTemplate() {
    if (gameLadderRecentMatchesTemplate == null) {
        gameLadderRecentMatchesTemplate = $('#gameLadderRecentMatchesTemplate')
    }
    return gameLadderRecentMatchesTemplate;
}

function GetGameLadderRecentMatchesSelectGameContainer() {
    if (gameLadderRecentMatchesSelectGameContainer == null) {
        gameLadderRecentMatchesSelectGameContainer = $("#gameLadderRecentMatchesSelectGameContainer");
    }
    return gameLadderRecentMatchesSelectGameContainer;
}

function GetGameLadderRecentMatchesSelectGame() {
    if (gameLadderRecentMatchesSelectGame == null) {
        gameLadderRecentMatchesSelectGame = $("#gameLadderRecentMatchesSelectGame");
    }
    return gameLadderRecentMatchesSelectGame;
}

function GetGameLadderRecentMatchesGames() {
    GetGameLadderRecentMatchesSelectGame().html("<option value=\"0\">All</option>");
    var webMethod = webMethodGameLadderRecentMatchesGames;
    GenericAjaxCall(webMethod, SetGameLadderRecentMatchesGames);
}

function SetGameLadderRecentMatchesGames(objects) {
    var result = "<option value='0'>All</option>";
    for (var i = 0; i < objects.length; i++) {
        result += "<option value='" + objects[i].Id + "'>" + objects[i].Name + "</option>";
    }
    GetGameLadderRecentMatchesSelectGame().html(result);
}

function GetGameLadderRecentMatches() {
    var webMethod = null;
    var returnFunction = "";

    SetGenericLoader(GetGameLadderRecentMatchesContainer());
    GetGameLadderRecentMatchesSelectGameContainer().show();

    webMethod = webMethodGameLadderRecentMatches.replace(/\[GameId\]/g, GetGameLadderRecentMatchesSelectGame().val());
    returnFunction = SetGameLadderRecentMatches;

    GenericAjaxCall(webMethod, returnFunction);
}

function SetGameLadderRecentMatches(objects) {
    var rows = objects;
    var container = GetGameLadderRecentMatchesContainer();
    var template = GetGameLadderRecentMatchesTemplate().html();

    var result = "";
    var item;

    if (rows.length > 0) {

        result += GetGameLadderRecentMatchesHeader().html();
        for (var i = 0; i < rows.length; i++) {

            item = template.replace(/\[Id\]/g, rows[i].Id);
            item = item.replace(/\[GameType\]/g, rows[i].Game.Type);
            if (rows[i].Game.Type = "Solo") {
                item = item.replace(/\[Url\]/g, memberUrl);
            }
            else {
                item = item.replace(/\[Url\]/g, teamUrl);
            }
            var compType;
            switch (rows[i].Competition.Type) {
                case "League":
                    compType = 1;
                    break;
                case "Tournament":
                    compType = 2;
                    break;
                case "Challenge":
                    compType = 3;
                    break;

            }
            item = item.replace(/\[CompetitionUrl\]/g, competitionLink[compType]);
            item = item.replace(/\[MatchUrl\]/g, matchLink[compType]);

            item = item.replace(/\[GameName\]/g, rows[i].Game.Name);
            item = item.replace(/\[ContestantHomeId\]/g, rows[i].ContestantHome.Id);
            item = item.replace(/\[ContestantAwayId\]/g, rows[i].ContestantAway.Id);
            item = item.replace(/\[ContestantHomeName\]/g, rows[i].ContestantHome.Name);
            item = item.replace(/\[ContestantAwayName\]/g, rows[i].ContestantAway.Name);
            item = item.replace(/\[ContestantHomeWon\]/g, rows[i].ContestantHome.Won);
            item = item.replace(/\[ContestantAwayWon\]/g, rows[i].ContestantAway.Won);
            item = item.replace(/\[CompetitionType\]/g, rows[i].Competition.Type);
            item = item.replace(/\[CompetitionName\]/g, rows[i].Competition.Name);
            item = item.replace(/\[CompetitionId\]/g, rows[i].Competition.Id);
            result += item;
        }
        container.html(result);
    }
    else {
        SetGenericNoResultsMessage(container, "There are no recent matches");
    }
}

// End: Game Ladder: Recent Matches

// Start: Game Ladder: Ladder Rankings
var gameLadderRankingContainer = null;
var gameLadderRankingHeader = null;
var gameLadderRankingTemplate = null;
var gameLadderRankingSelectContainer = null;
var gameLadderRankingSelectGame = null;
var gameLadderRankingSelectType = null;

var webMethodGameLadderRanking = null;
var webMethodGameLadderRankingGames = null;

function GetGameLadderRankingContainer() {
    if (gameLadderRankingContainer == null) {
        gameLadderRankingContainer = $('#gameLadderRankingContainer');
    }
    return gameLadderRankingContainer;
}

function GetGameLadderRankingHeader() {
    if (gameLadderRankingHeader == null) {
        gameLadderRankingHeader = $('#gameLadderRankingHeader');
    }
    return gameLadderRankingHeader;
}

function GetGameLadderRankingTemplate() {
    if (gameLadderRankingTemplate == null) {
        gameLadderRankingTemplate = $('#gameLadderRankingTemplate')
    }
    return gameLadderRankingTemplate;
}

function GetGameLadderRankingSelectContainer() {
    if (gameLadderRankingSelectContainer == null) {
        gameLadderRankingSelectContainer = $("#gameLadderRankingSelectContainer");
    }
    return gameLadderRankingSelectContainer;
}

function GetGameLadderRankingSelectType() {
    if (gameLadderRankingSelectType == null) {
        gameLadderRankingSelectType = $("#gameLadderRankingSelectType");
    }
    return gameLadderRankingSelectType;
}

function GetGameLadderRankingSelectGame() {
    if (gameLadderRankingSelectGame == null) {
        gameLadderRankingSelectGame = $("#gameLadderRankingSelectGame");
    }
    return gameLadderRankingSelectGame;
}

function GetGameLadderRankingChangeMatchType() {
    var webMethod = webMethodGameLadderRankingGames.replace(/\[MatchType\]/g, GetGameLadderRankingSelectType().val());

    GenericAjaxCall(webMethod, SetGameLadderRankingGames);
    GetGameLadderRankingChangeGame();
}

function SetGameLadderRankingGames(objects) {
    var result = "";
    for (var i = 0; i < objects.length; i++) {
        result += "<option value='" + objects[i].Id + "'>" + objects[i].Name + "</option>";
    }
    GetGameLadderRankingSelectGame().html(result);
}

function GetGameLadderRankingChangeGame() {
    var webMethod = webMethodGameLadderRanking.replace(/\[GameId\]/g, GetGameLadderRankingSelectGame().val());
    webMethod = webMethod.replace(/\[MatchType\]/g, GetGameLadderRankingSelectType().val());
    GenericAjaxCall(webMethod, SetGameLadderRanking);
}

function GetGameLadderRanking() {
    var webMethod = null;
    var returnFunction = "";

    GetGameLadderRankingSelectContainer().show();

    webMethod = webMethodGameLadderRanking.replace(/\[MatchType\]/g, GetGameLadderRankingSelectType().val());
    webMethod = webMethod.replace(/\[GameId\]/g, GetGameLadderRankingSelectGame().val());
    returnFunction = SetGameLadderRanking;

    GenericAjaxCall(webMethod, returnFunction);
}

function SetGameLadderRanking(objects) {
    var rows = objects;
    var container = GetGameLadderRankingContainer();
    var template = GetGameLadderRankingTemplate().html();

    var result = "";
    var item;

    if (rows.length > 0) {
        result += GetGameLadderRankingHeader().html();
        for (var i = 0; i < rows.length; i++) {
            item = template.replace(/\[Id\]/g, rows[i].Id);
            item = item.replace(/\[Name\]/g, rows[i].Name);
            item = item.replace(/\alt=\"memberImage\"/g, "src=\"" + rows[i].Image + "\"");
            item = item.replace(/\alt=\"flagImage\"/g, "src=\"" + rows[i].Country.Flag + "\"");
            item = item.replace(/\alt=memberImage/g, "src=\"" + rows[i].Image + "\"");
            item = item.replace(/\alt=flagImage/g, "src=\"" + rows[i].Country.Flag + "\"");
            item = item.replace(/\[Score\]/g, rows[i].Score);
            result += item;
        }
        container.html(result);
    }
    else {
        SetGenericNoResultsMessage(container, "Ladder board is empty");
    }
}

// End: Game Ladder: Ladder Rankings

// Start: Game Ladder: Users Online

function OnlineGameContestantReplace(template, object) {

    var item = template.replace(/\[Id\]/g, object.Id);
    item = item.replace(/\[UserName\]/g, object.Name);
    item = item.replace(/\alt=\"\"/g, "src='" + object.Nationality.Image + "'");
    item = item.replace(/\[CountryName\]/g, object.Nationality.Name);
    return item;

}

// End: Game Ladder: Users Online

// Start: Play day availability

var playdayAvailabilityTab = null;

function GetPlaydayAvailabilityTab() {
    if (playdayAvailabilityTab == null) {
        playdayAvailabilityTab = $("li[name='playDayAvailabilityTab']");
    }
    return playdayAvailabilityTab;
}

function ChangePlaydaySelectedTab(tab) {
    var tabs = GetPlaydayAvailabilityTab();
    tabs.each(
    function() {
        this.className = '';
    })
    tabs[tab].className = 'tabActive';
}

// End: Play day availability

// Start: List News

function NewsItemReplace(template, object) {

    var item = template.replace(/\[Id\]/g, object.Id);
    var image = "src='" + object.Thumbnail + "'";
    item = item.replace(/\alt=\"\"/g, image);
    item = item.replace(/\[Publisher\]/g, object.Publisher);
    item = item.replace(/\[Headline\]/g, object.Headline);
    item = item.replace(/\[Date\]/g, object.Date);
    item = item.replace(/\[Summary\]/g, object.Summary);
    return item;

}
// End: List News


// Start: Generic Item List

var ItemListResult = function() {
    this.TotalCount = 0;
    this.Count = 0;
    this.List = null;
    this.Filtered = new Object();
    this.CurrentPage = 1;
    this.PageSize = 1;
    this.TotalPageCount = 0;
    this.PageCount = 0;

    this.IsFiltered = function(Id) {

        if (this.Filtered[Id] != null) {
            if (this.Filtered[Id] > 0) {
                return true;
            }
        }
        return false;
    }

    this.SetList = function(objects) {
        if (objects != null) {
            this.List = objects;
            this.TotalCount = this.List.length;
            this.Count = this.List.length;

            if (this.List != null) {
                this.PageCount = Math.ceil(this.List.length / this.PageSize);
                this.TotalPageCount = this.PageCount;
            }
        }
    }

    this.GetCurrentPage = function() {

        var currentPage = new Array();
        var startFromItem = (this.CurrentPage - 1) * this.PageSize
        var itemNumber = 0;
        var itemAvailable = 0;
        var itemCreated = 0;

        while ((itemNumber < this.List.length) && (itemCreated < (this.PageSize))) {
            if (!this.IsFiltered(this.List[itemNumber].Id)) {
                if (startFromItem <= itemAvailable) {
                    currentPage[itemCreated] = this.List[itemNumber];
                    itemCreated++;
                }
                itemAvailable++;
            }
            itemNumber++;
        }
        return currentPage;
    }
}

var ItemListGraphic = function() {

    this.emptyMessage = "";
    this.name = "";
    this.hasPagination = true;

    this.containerDOMId = null;
    this.templateDOMId = null;
    this.headerDOMId = null;
    this.paginationDOMId = null;

    this.containerDOM = null;
    this.headerDOM = null;
    this.templateDOM = null;
    this.paginationDOM = null;

    this.pages = null;

    this.replace = null;

    this.MaxPages = null;

    this.GetContainer = function() {
        if (this.containerDOM == null) {
            if (this.containerDOMId != null) {
                this.containerDOM = $("#" + this.containerDOMId);
            }
        }
        return this.containerDOM;
    }

    this.GetHeader = function() {
        if (this.headerDOM == null) {
            if (this.headerDOMId != null) {
                this.headerDOM = $("#" + this.headerDOMId);
            }
        }
        return this.headerDOM;
    }

    this.GetTemplate = function() {
        if (this.templateDOM == null) {
            if (this.templateDOMId != null) {
                this.templateDOM = $("#" + this.templateDOMId);
            }
        }
        return this.templateDOM;
    }

    this.GetPagination = function() {
        if (this.paginationDOM == null) {
            if (this.paginationDOMId != null) {
                this.paginationDOM = $("#" + this.paginationDOMId);
            }
        }
        return this.paginationDOM;
    }

    this.SetLoading = function() {
        var container = this.GetContainer();
        if (container != null) {
            SetGenericLoader(container);
        }
    }

    this.GetPages = function() {
        if (this.pages == null) {
            this.pages = $("a[name='" + this.name + ".Page']");
        }
        return this.pages;
    }

    this.SetSelectedPage = function(page) {

        var pages = this.GetPages();
        var i = 0;

        var max = pages.length;
        var showingFrom = 0;
        var showingTo = max;

        var media = this.MaxPages / 2
        if (max > this.MaxPages) {
            if (page > media) {
                showingTo = page + media;
                if (showingTo > max) {
                    showingFrom = page - media - (showingTo - max);

                }
                else {
                    showingFrom = page - media;
                }

            }
            else {

                showingFrom = page - media;
                showingTo = page + media - showingFrom;
            }
        }

        if (showingFrom > 0) {
            $("#" + this.name + "PageFirst").show();
        }
        else {
            $("#" + this.name + "PageFirst").hide();
        }
        if (showingTo < max) {
            $("#" + this.name + "PageLast").show();
        }
        else {
            $("#" + this.name + "PageLast").hide();
        }

        if (pages.length > 0) {
            pages.each(
        function() {

            if ((i >= showingFrom) && (showingTo > i)) {
                if (this.parentNode != null) {
                    this.parentNode.style.display = '';
                }
            }
            else {
                if (this.parentNode != null) {
                    this.parentNode.style.display = 'none';
                }
            }
            this.className = '';
            i++;
        })
            pages[page].className = 'currentpage';
        }
    }

    this.DrawPagination = function(NumberPage) {

        var pagination = this.GetPagination();
        if (pagination != null) {
            SetGenericPagination(pagination, NumberPage, this.name + ".Page", this.name + ".NextPage", this.name + ".PreviousPage", this.MaxPages);
        }
    }

    this.DrawList = function(objects) {
        var header = this.GetHeader();
        var template = this.GetTemplate().html();
        var container = this.GetContainer();
        var result = "";
        if (container != null) {

            if (objects.length > 0) {
                container.html('');

                if (header != null) {
                    result += header.html();
                }

                if (this.replace != null) {
                    for (var i = 0; i < objects.length; i++) {
                        result += this.replace(template, objects[i]);
                    }
                }

                container.html(result);

            }
            else {
                SetGenericNoResultsMessage(container, this.emptyMessage)
            }
        }
    }
}



var List = function() {

    this.name = null;
    this.webMethod = null;
    this.ItemResult = new ItemListResult();
    this.ItemGraphic = new ItemListGraphic();

    this.Create = function(method, container, header, template, pagination, listName, emptyMessage, replace) {
        this.name = listName;
        this.ItemGraphic.containerDOMId = container;
        this.ItemGraphic.templateDOMId = template;
        this.ItemGraphic.headerDOMId = header;
        this.ItemGraphic.paginationDOMId = pagination;
        this.ItemGraphic.name = listName;
        this.ItemGraphic.emptyMessage = emptyMessage;
        this.ItemGraphic.replace = replace;
        this.ItemGraphic.MaxPages = 20;
        this.webMethod = method;
        this.ItemResult = new ItemListResult();
    }

    this.Page = function(pageNumber) {
        this.ItemResult.CurrentPage = pageNumber + 1;
        this.ItemGraphic.DrawList(this.ItemResult.GetCurrentPage());
        this.ItemGraphic.SetSelectedPage(pageNumber);
    }

    this.PreviousPage = function() {
        var pageNumber = this.ItemResult.CurrentPage - 1;
        if (pageNumber >= 1) {
            this.Page(pageNumber - 1);
        }
    }

    this.NextPage = function() {
        var pageNumber = this.ItemResult.CurrentPage + 1;
        if (pageNumber <= this.ItemResult.TotalPageCount) {
            this.Page(pageNumber - 1);
        }
    }

    this.GetResults = function() {
        this.ItemGraphic.SetLoading();
        var that = this;

        GenericAjaxCall(
            this.webMethod,
            function(objects) {
                that.ItemResult.SetList(objects);
                that.ItemGraphic.DrawList(that.ItemResult.GetCurrentPage());
                if (that.ItemResult.TotalPageCount > 0) {

                    that.ItemGraphic.DrawPagination(that.ItemResult.TotalPageCount);
                    that.ItemGraphic.SetSelectedPage(that.ItemResult.CurrentPage - 1);
                }
            }
        )
    }
}