var login;
var loginId;

function addClickHandlers()
{
	$("#pyramid_view_container").intercept( 'click', {
		"div.player_view .player_rank_view" : function(e) { 
			playerShowStats($(this).parent().attr("ad:id"));
		},
		"div.player_view .login_button" : function(e) { 
			playerShowLoginDialog($(this).parent()); return false;
		}
	});
	$("#login_dialog").intercept( 'submit', "#login_dialog form", function(e) {
		playerLogin($("#login_dialog input:hidden").val(), $("#login_dialog input:password").val());
		e.preventDefault(); // return false;
	});
	$("#login_dialog").click( function(e) {
		e.stopPropagation();
	});
	$("body").click(function(e) {
		$("#login_dialog").hide();
	});
}

// function addClickHandlers()
// {
// 	$("div.player_view .login_button").click(function(e) {
// 		
// 		playerShowLoginDialog($(this).parent());
// 		// factor ot cancelClick as pattern vor cancelation
// 		function cancelClick(e) {
// // 			if ( e.target != $("#login_dialog").get(0) ) {
// 			if ( e.target.id != "login_dialog" ) {
// 				$("#login_dialog").hide();
// 				this.removeEventListener('click', cancelClick, true);
// 			}
// 		}
// 		$("body").get(0).addEventListener('click', cancelClick, true);
// 		e.stopPropagation();
// 	});
// 	$("div.player_view .player_rank_view").click(function() {
// 		playerSelected($(this).parent().attr("ad:id"));
// 	});
// }

function playerShowLoginDialog(playerElement)
{
	var pos = $(playerElement).position();
	var height = $(playerElement).height();
	var width = $(playerElement).width();
	$("#login_dialog form input:hidden").val($(playerElement).attr("ad:id"));
	$("#login_dialog").bind('loginComplete', function(e, playerId, result) {
		$(this).unbind('loginComplete');
		loginActionCleanup(playerId, result);
	});
	$("#login_dialog").css({
  		"top" : pos.top + 15,
		"left" : pos.left + width + 5,
	}).show();
}

function loginActionCleanup(playerId, result)
{
	function successCleanup() {
		$("#login_dialog .success_message").hide();
		$("#login_dialog").find(".form_container").show();
		$(".login_button").hide();
	}
	
	function failureCleanup() {
		$("#login_dialog .failed_message").hide();
		$("#login_dialog").find(".form_container").show();
	}
	
	$("#login_dialog").find(".form_container").hide();
	if (result == true) {
		login = true;
		loginId = playerId;
		$("#login_dialog .success_message").show();
		markChallengeable(loginId);
		$("#login_dialog").fadeOut(2000, successCleanup);
	} else {
		$("#login_dialog .failed_message").show();
		$("#login_dialog").fadeOut(2000, failureCleanup);
	}
}

function playerLogin(playerId, password)
{
	var chap_challenge;
	var login;
	$.post('player_login.php', {action : 0, id : playerId}, function(data) {
		chap_challenge = data;
		md5 = hex_md5(chap_challenge + hex_md5(password));
		$.post('player_login.php', {action : 1, id : playerId, md5 : md5}, function(data) {
			login = JSON.parse(data);
			$("#login_dialog").trigger('loginComplete', [ playerId, login ]);
		});
	});
}

function markChallengeable(playerId)
{
	$.getJSON('player_challengeable.php', {id: playerId}, function(data) {
		var challengeableOpponents = data["challengeable"];
		console.log(challengeableOpponents);
		for (var player in challengeableOpponents) {
			$("#pyramid_view_container .player_view").filter(function(index) {
				return $(this).attr("ad:id") == challengeableOpponents[player].id;
			}).toggleClass('challengeable');
		}
	});
}

function playerSelected(playerId)
{
	$.getJSON('player_selected.php', {id: playerId}, function(data) {
		$("#pyramid_view_container").html(data["ranking_html"]);
		var possibleOpponents = data["challengeable"];
		for (var player in possibleOpponents) {
			$("#pyramid_view_container .player_view").filter(function(index) {
				return $(this).attr("ad:id") == possibleOpponents[player].id;
			}).toggleClass('challengeable');
		}
// 		addClickHandlers();
	});
	playerShowStats(playerId);
}

function playerShowStats(playerId)
{
	$.getJSON('player_stats.php', {id: playerId}, function(data) {
		$("#player_stats_container .fullname").html(data.firstname + ' ' + data.name);
		$("#player_stats_container .nickname").html(data.nick);
		$("#player_stats_container .rank").html(data.rank);
		$("#player_stats_container .challenges").html("dummy");
	});
}
