var _player = new Player(0, null, null);

var AccountTypes = {
    euro: 2000,
    prize: 2001,
    freeLotteryTickets: 2004
};

var memberDetailPanel = $(".member_detail");
var memberDetailBalances = $(".member_balances", memberDetailPanel);

var MemberUI = {
    waiting: {
        panel: $(".member_waiting")
    },
    login: {
        panel: $(".member_login")
    },
    detail: {
        panel: memberDetailPanel,
        email: $(".member_email", memberDetailPanel),
        balances: {
            list: memberDetailBalances,
            euro: $(".currency_euro .balance_value", memberDetailBalances),
            free: $(".currency_free .balance_value", memberDetailBalances)
        }
    }
};

function Player(id, email, accounts) {

    var _id = id;
    var _email = email;
    var _balances = accounts;

    this.id = function() { return _id; };
    this.email = function() { return _email; };

    this.euroBalance = function() { return _balances[AccountTypes.euro]; };
    this.prizeBalance = function() { return _balances[AccountTypes.prize]; };
    this.availableBalance = function() { return _balances[AccountTypes.euro] + _balances[AccountTypes.prize]; }; 
    this.freeTicketBalance = function() { return _balances[AccountTypes.freeLotteryTickets]; };

    this.refresh = function(callback) {

        if (!callback)
            callback = updatePlayerData;

        $.ajax({
			type: "GET",
			url: "/player-info",
			dataType:'json',
			contentType: "application/json; charset=utf-8",
            success:callback
		});
    };
}

function updatePlayerData(data) {

    switch (data.result) {
        case "OK":
            _player = new Player(data.profile.id, data.profile.email, data.accounts);
            break;
        case "err-not-authenticated":
            _player = new Player(0, null, null);
            break;
    }

    updateMemberDisplay();
}

function refreshMemberDisplay() {
    MemberUI.detail.panel.hide();
    MemberUI.login.panel.hide();
    MemberUI.waiting.panel.show();

    _player.refresh();
}

function updateMemberDisplay() {

    MemberUI.waiting.panel.hide();

    if (_player.id() == 0) {
        MemberUI.detail.panel.hide();
        MemberUI.login.panel.show();

        return;
    }

    MemberUI.detail.email.text(_player.email());
    MemberUI.detail.balances.euro.text(_player.euroBalance() + _player.prizeBalance());
    MemberUI.detail.balances.free.text(_player.freeTicketBalance());

    if (_player.freeTicketBalance() == 0)
        MemberUI.detail.balances.free.parent().hide();
    else
        MemberUI.detail.balances.free.parent().show();

    MemberUI.detail.panel.show();
}


// On document load ...
$(function() {
    refreshMemberDisplay();
});