//language
var uid = 0;

function showLanguageBox() {
	$('#languageBox').toggle();
}

$.fn.center = function() {
	this.css("position", "absolute");
	this.css("top", ($(window).height() - this.height()) / 2
			+ $(window).scrollTop() + "px");
	this.css("left", ($(window).width() - this.width()) / 2
			+ $(window).scrollLeft() + "px");
	return this;
}

// player
var _player = new Player(0, 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)
		}
	},
	balance : {
		panel : $(".balanceContainer", memberDetailBalances),
		value : $(".balance_value", memberDetailBalances)
	}
};
function Player(id, email, wallet) {
	var _id = id;
	var _email = unescape(email);
	var _wallet = wallet;
	this.id = function() {
		return _id;
	};
	this.email = function() {
		return _email;
	};
	this.wallet = function() {
		return _wallet;
	};
	this.availableBalance = function() {
		return _wallet && _wallet.EUR ? _wallet.EUR.amount : 0;
	}
	this.freeTicketBalance = function() {
		return _wallet && _wallet.MM ? _wallet.MM.amount : 0;
	}
	this.refresh = function(callback) {
		if (!callback)
			callback = updatePlayerData;
		$.ajax({
			type : "POST",
			url : "/dispatch/",
			data : ({
				call : "player"
			}),
			success : callback,
			error : error
		});
	};
}
function updatePlayerData(data) {
	switch (data.result) {
	case "OK":
		_player = new Player(data.profile.id, data.profile.email, data.wallet);
		break;
	case "err-not-authenticated":
		_player = new Player(0, null, null, null);
		break;
	}
	updateMemberDisplay();
}
function refreshMemberDisplay() {
	if (_player != null) {
		_player.refresh();
		updateMemberDisplay();
	}
}
function updateMemberDisplay() {

	if (_player.wallet() != null) {
		var balance = _player.wallet().EUR;
		if (balance != null && balance.amount != MemberUI.balance.value.text()) {
			MemberUI.balance.panel.fadeOut(250);
			MemberUI.balance.value.text(balance.amount.toFixed(2));
			MemberUI.balance.panel.fadeIn(1000);
		}
	}

}
function error() {
	// MemberUI.detail.balances.euro.text("Add Funds");
}

// balance

var _balance = {
	curDeduct : 0,
	eur : 0,
	fgr : 0,
	flt : 0,
	fss : 0,
	refresh : function() {
		_balance.getBalance(_balance.returnValue);
		_balance.refreshId = setInterval(function() {
			_balance.getBalance(_balance.returnValue);
		}, 30000);
		$.ajaxSetup({
			cache : false
		});
	},
	getBalance : function(callback) {
		$.postJSON("/action/", {
			get_balance : "submit"
		}, callback);
	},
	returnValue : function(data, textStatus, jqXHR) {
		if (data['result'])
			window.location.href = "/";
		else {
			_balance.updateBalance(data);
		}
	},
	clear : function() {
		if (_balance.refreshId)
			clearInterval(_balance.refreshId);
	},
	deductFromBalance : function(value) {
		_balance.value -= value;
		_balance.curDeduct = value;
		if (_balance.curDeduct == 4) {
			if (_balance.fgr > 0) {
				_balance.fgr--;
			} else {
				_balance.eur -= 4;
			}
		} else if (_balance.curDeduct == 2) {
			if (_balance.fss > 0) {
				_balance.fss--;
			} else {
				_balance.eur -= 2;
			}
		}
		strBal = "";
		if (_balance.eur > 0) {
			strBal += "&euro;" + _balance.eur;
			if (_balance.flt > 0) {
				strBal += "/FREE LT " + _balance.flt;
			}
			if (_balance.fgr > 0) {
				strBal += "/FREE GR " + _balance.fgr;
			}
			if (_balance.flt > 0) {
				strBal += "/FREE SS " + _balance.fss;
			}
			$(".balance_value").html(strBal);
		} else {
			isset = false;
			strFree = "";
			if (_balance.flt > 0) {
				strFree += "/FREE LT " + _balance.flt;
				isset = true;
			}
			if (_balance.fgr > 0) {
				strFree += "/FREE GR " + _balance.fgr;
				isset = true;
			}
			if (_balance.flt > 0) {
				strFree += "/FREE SS " + _balance.fss;
				isset = true;
			}			
			strBal = '';
			if (isset) {
				strBal = "&euro;0" + strFree;
			} else {
				strBal = addBalance;
			}
			$(".balance_value").html(strBal);
		}
	},
	updateBalance : function(data) {
		strBal = "";
		if (data['content']['EUR'] && data['content']['EUR']['amount']>0) {
			strBal += "&euro;" + data['content']['EUR']['amount'];
			_balance.eur = data['content']['EUR']['amount'];
			if (data['content']['FREE']) {
				if (data['content']['FREE']['FREE LT']) {
					if (data['content']['FREE']['FREE LT']['amount'] > 0) {
						strBal += "/"
								+ data['content']['FREE']['FREE LT']['symbol']
								+ " "
								+ data['content']['FREE']['FREE LT']['amount'];
						_balance.flt = data['content']['FREE']['FREE LT']['amount'];
					}
				}
				if (data['content']['FREE']['FREE GR']) {
					if (data['content']['FREE']['FREE GR']['amount'] > 0) {
						strBal += "/"
								+ data['content']['FREE']['FREE GR']['symbol']
								+ " "
								+ data['content']['FREE']['FREE GR']['amount'];
						_balance.fgr = data['content']['FREE']['FREE GR']['amount'];
					}
				}
				if (data['content']['FREE']['FREE SS']) {
					if (data['content']['FREE']['FREE SS']['amount'] > 0) {
						strBal += "/"
								+ data['content']['FREE']['FREE SS']['symbol']
								+ " "
								+ data['content']['FREE']['FREE SS']['amount'];
						_balance.fss = data['content']['FREE']['FREE SS']['amount'];
					}
				}
			}
			$(".balance_value").html(strBal);
		} else {
			isset = false;
			strFree = "";
			if (data['content']['FREE']) {
				if (data['content']['FREE']['FREE LT']) {
					if (data['content']['FREE']['FREE LT']['amount'] > 0) {
						strBal += "/"
								+ data['content']['FREE']['FREE LT']['symbol']
								+ " "
								+ data['content']['FREE']['FREE LT']['amount'];
						isset = true;
						_balance.flt = data['content']['FREE']['FREE LT']['amount'];
					}
				}
				if (data['content']['FREE']['FREE GR']) {
					if (data['content']['FREE']['FREE GR']['amount'] > 0) {
						strBal += "/"
								+ data['content']['FREE']['FREE GR']['symbol']
								+ " "
								+ data['content']['FREE']['FREE GR']['amount'];
						isset = true;
						_balance.fgr = data['content']['FREE']['FREE GR']['amount'];
					}
				}
				if (data['content']['FREE']['FREE SS']) {
					if (data['content']['FREE']['FREE SS']['amount'] > 0) {
						strBal += "/"
								+ data['content']['FREE']['FREE SS']['symbol']
								+ " "
								+ data['content']['FREE']['FREE SS']['amount'];
						isset = true;
						_balance.fss = data['content']['FREE']['FREE SS']['amount'];
					}
				}
			}
			strBal = '';
			if (isset) {
				strBal = "&euro;0" + strFree;
			} else {
				strBal = addBalance;
			}
			$(".balance_value").html(strBal);
		}
	}
}

function updateBalanceValue() {
	_balance.getBalance(_balance.returnValue);
}

function updatePlayerBalance() {
	_balance.refresh();
}

// cart

var _cart = {
	cartRequestURL : '/cart/',
	attachAndHighlight : function() {
		$(".cartRemoveTicket").click(_cart.removeTicketFromCart);
		$('#removeAll').click(_cart.emptyCart);
		$('#cartTable tbody tr:even').addClass('cartEvenCol');
	},
	reloadCart : function() {
		// $('.scrollTable').load('/cartTable/', _cart.attachAndHighlight);
	},
	refreshCart : function() {
		$.unblockUI();
		_cart.getCart();
	},

	emptyCart : function() {
		var ticketList = new Array();
		count = $('.cartRemoveTicket').length;
		for ( var i = 0; i <= count; i++) {
			ticketList.push(i);
		}
		;

		_cart.removeTicketRequest(ticketList, _cart.refreshCart)
	},
	removeTicketFromCart : function() {
		val = $(this).attr('ticketid');
		_cart.removeTicketRequest([ val ], _cart.refreshCart);
	},
	removeTicketRequest : function(tickets, callback) {
		var str = "";
		for ( var i = 0; i < tickets.length; i++) {
			str += tickets[i] + '-';
		}
		;

		$.post("/action/", {
			remove : str,
			lottery : "remove-cart"
		}, callback);
	},
	showCart : function(data) {
		$("#insertCards").html(data);
		$("#closeCart").click($.unblockUI);
		$(".cartRemoveTicket").click(_cart.removeTicketFromCart);
		$('#removeAll').click(_cart.emptyCart);
		$('#cartTable tbody tr:even').addClass('cartEvenCol');
		$.blockUI({
			message : $('#basket')
		});
		$('.blockUI.blockMsg').center()
	},
	getCart : function() {
		$.post("/dispatch/", {
			call : "cart"
		}, function(data) {
			_cart.showCart(data);
		});
	}
}

$(function() {
	uid = parseInt($("#uid").text());
	jQuery.ajaxSettings.traditional = true;
	$(".languageSelection").click(showLanguageBox);
	$('#languageBox .closeButton').click(showLanguageBox);

	try {
		$("input[placeholder]").placeHeld();
	} catch (err) {
	}
	refreshMemberDisplay();
	if ($("#playerID").html() != 0)
		_balance.refresh();
	else {
		_balance.clear();
	}
	$.blockUI.defaults.css = {};
	$('#showCart').click(_cart.getCart);
});
