﻿// Presence catalog namespace
if (window.PresenceCatalog == null) 
	PresenceCatalog = {};

// Lobby / Lobbies
PresenceCatalog.Lobbies = {};

PresenceCatalog.Lobbies.All = [];
PresenceCatalog.Lobbies.All.ByLobby = {};
PresenceCatalog.Lobbies.All.BySku = {};
PresenceCatalog.addLobby = function( lobbyID, numberOfPlayers )
{
	var newLobby = 
			{ 
				LobbyID : lobbyID,
				NumberOfPlayers : numberOfPlayers
			};
    this.Lobbies.All[this.Lobbies.All.length] = newLobby;
    this.Lobbies.All.ByLobby[newLobby.LobbyID] = newLobby;
}

PresenceCatalog.addLobbySku = function( sku, lobbyID, numberOfPlayers )
{
	var newLobby = 
			{ 
				LobbyID : lobbyID,
				NumberOfPlayers : numberOfPlayers
			};
    this.Lobbies.All[this.Lobbies.All.length] = newLobby;
    this.Lobbies.All.BySku[sku] = newLobby;
}

PresenceCatalog.addLobbySku2 = function( sku, lobbyID, numberOfPlayers, membersAutoPlayRoomURL, nonMembersAutoPlayRoomURL )
{
    var newLobby = 
            {
                LobbyID             : lobbyID,
				NumberOfPlayers     : numberOfPlayers,
				MembersRoomURL      : membersAutoPlayRoomURL,
                NonMembersRoomURL   : nonMembersAutoPlayRoomURL
            }
    this.Lobbies.All[this.Lobbies.All.length] = newLobby;
    this.Lobbies.All.BySku[sku] = newLobby;
}

// Room / Rooms
PresenceCatalog.Rooms = {};

PresenceCatalog.Rooms.All = [];
PresenceCatalog.Rooms.All.ByRoom = {};
PresenceCatalog.addRoom = function( roomID, numberOfPlayers )
{
	var newRoom = 
			{
				RoomID : roomID,
				NumberOfPlayers : numberOfPlayers
			};

    this.Rooms.All[this.Rooms.All.length] = newRoom;
    this.Rooms.All.ByRoom[newRoom.RoomID] = newRoom;
}

PresenceCatalog.Rooms.All.ByCategory = {};
PresenceCatalog.addCategory = function( categoryCODE,numberOfPlayers )
{
	var newCategory = 
			{
				CategoryCODE : categoryCODE,
				NumberOfPlayers : numberOfPlayers
			};

    this.Rooms.All.ByCategory[categoryCODE] = newCategory;
}

PresenceCatalog.getTopPlayedSkus = function(iTop) 
{
    var topSkus = new Array();
    var allSkus = new Array();
    for (sku in this.Lobbies.All.BySku)
    {
        var currElement = 
            {
                Sku             : sku,
                NumberOfPlayers : this.Lobbies.All.BySku[sku].NumberOfPlayers
            };
        allSkus[allSkus.length] = currElement;
    }
    allSkus.sort(PresenceCatalog.getTopPlayedSkus.sortSkus);
    
    for (index = 0; index < allSkus.length && index < iTop; ++index)
    {
        topSkus[topSkus.length] = allSkus[index].Sku;
    }
    return topSkus;
}

PresenceCatalog.getTopPlayedSkus.sortSkus = function(a, b)
{
    return b.NumberOfPlayers - a.NumberOfPlayers;
}

// place holder (the whole community)
PresenceCatalog.NumberOfPlayers = 0;
