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(); 
});