﻿
function GameBoardItem(iGameBoard, iGameId)
{
    var This = this;

    // Implements
    Implements(This, Content, iGameBoard.Id + '-' + iGameId);

    // Data members
    This.GameId = iGameId;
    This.VisitorScore = new Content(This.Id + '-visitorscore');
    This.HomeScore = new Content(This.Id + '-homescore');
    This.Status = new Content(This.Id + '-status');
    This.WatchButton = new Content(This.Id + '-watch');

    // Methods
    This.Update = function(iData)
    {
        if (iData.Status == 'Live')
        {
            This.SetStyle('live');
            This.VisitorScore.GetElement().innerHTML = iData.VisitorScore;
            This.HomeScore.GetElement().innerHTML = iData.HomeScore;
            This.Status.GetElement().innerHTML = iData.Period;
            This.WatchButton.Show();
        }
        else if (iData.Status == 'Cancelled')
        {
            This.SetStyle(null);
            This.Status.GetElement().innerHTML = Cultures.Current.Language.Strings['cancelled'];   
        }
        else
        {
            This.SetStyle(null);
            This.Status.GetElement().innerHTML = iData.Period;
            This.WatchButton.Hide();
        }
    }
}

// TODO: make more consistent with ArchivedGameList
function GameBoard(iId, iGameData, iItems)
{
    var This = this;

    // Implements
    Implements(This, Content, iId);

    // Data members
    This.GameData = null;
    This.Items = [];

    // Methods
    This.Update = function()
    {
        for (var i = 0; i < This.Items.length;  i++)
        {
            var item = This.Items[i];
            var data = This.GameData.Games[item.GameId];

            if (data)
                item.Update(data);
        }
    }

    // Initialize
    {
        for (var i = 0; i < iItems.length; i++)
            This.Items.push(new GameBoardItem(This, iItems[i]));

        if (iGameData)
        {
            This.GameData = iGameData;
            This.GameData.OnUpdate.Add(This.Update);
            if (iGameData.Games)
                This.Update(iGameData.Games);
        }
    }
}