/**
 * Hattrick Head-Quarters 2.0
 *
 * @author Davide Lucchesi <davide@hattrickhq.org>
 * @version 2.0
 * @license http://opensource.org/licenses/gpl-license.php (GPL)
 *
 */

var sls = false;

$(document).ready(function() {
	$("#login").click(function() {
		login();
	});
});

function console(msg) {
	$("#console").html(msg);
}

function content(title) {
	$("#content").empty();
	$("#content").append($("<h1>"+title+"</h1>"));
}

function contentAdd(msg) {
	if (typeof(msg) == 'string')
		$("#content").append($(msg));
	else $("#content").append(msg);
}

function contentAddTemplate(html, vars) {
	$("#content").append($(contentTemplate(html, vars)));
}

function contentTemplate(html, vars) {
	for (var key in vars) {
		if (typeof(vars[key]) == 'string') {
			// it's a value!
			html = html.replace("{$"+key+"}", vars[key]);
		}
		else {
			// is a container, let's do it again...
			html = contentTemplate(html, vars[key]);
		}
	}
	return html;
}

function homeTeam() {
	$("#content").hide("fast");
	content(sls['Current']['TeamID']+" "+sls['Current']['TeamName']);
	contentAddTemplate($("#Team").html(), sls['Current']);
	if (sls['Teams'][sls['Current']['TeamID']]['Cup']['StillInCup'] == 'True')
		$("#Cup").html("<p>Still in "+sls['Teams'][sls['Current']['TeamID']]['Cup']['CupName']+"</p>");
	$("#logo").attr("src", sls['Current']['LogoURL']);
	$("#LeagueLevelUnitName").html(sls['Current']['LeagueLevelUnitName']);
	var count = 0;
	for (var idx in sls['LeagueLevelUnits'][sls['Current']['LeagueLevelUnitID']]['Team']) {
		count++;
		var elem = sls['LeagueLevelUnits'][sls['Current']['LeagueLevelUnitID']]['Team'][idx];
		elem['GoalsDif'] = parseInt(elem['GoalsFor'])-parseInt(elem['GoalsAgainst']);
		var trow = $("<tr></tr>");
		var cell = $('<td align="right">'+count+'</td>');
		trow.append(cell);
		if (elem['TeamID'] == sls['Current']['TeamID'])
			var tname = "<strong>"+elem['TeamName']+"</strong>";
		else var tname = elem['TeamName'];
		var cell = $('<td align="left">'+tname+'</td>');
		trow.append(cell);
		var cell = $('<td align="right">'+elem['GoalsFor']+'</td>');
		trow.append(cell);
		var cell = $('<td align="right">'+elem['GoalsAgainst']+'</td>');
		trow.append(cell);
		var cell = $('<td align="right">'+elem['GoalsDif']+'</td>');
		trow.append(cell);
		var cell = $('<td align="right">'+elem['Points']+'</td>');
		trow.append(cell);
		trow.attr("id", "team-"+elem['TeamID']);
		trow.click(function() {
			teamid = $(this).attr('id').replace("team-", "");
			if (sls['Teams'][teamid]) {
				teamDetail(teamid);
			}
			else {
				console("<img src='images/ajax.gif' align='left' border=0 hspace=5 /> Loading team...");
				$.getJSON(
					"hthq.php", {
						"ht_action": "TeamDetail",
						"teamID": teamid
					},
					function(json) {
						sls['Teams'][teamid] = json;
						teamDetail(teamid);
						console("");
					}
				);
			}
		});
		$("#League tbody").append(trow);
	}
	$("#League").tablesorter({
		widgets: ['zebra']
	});
	$("#tabs > ul").tabs();
	$("#BalanceFull").html(parseInt(sls['Current']['Economy']['IncomeSum']) - parseInt(sls['Current']['Economy']['CostsSum']) + parseInt(sls['Current']['Economy']['LastIncomeSum']) - parseInt(sls['Current']['Economy']['LastCostsSum']));
	$("#Balance").html(parseInt($("#BalanceFull").html()) - parseInt(sls['Current']['Economy']['IncomeTemporary']) + parseInt(sls['Current']['Economy']['CostsTemporary']) - parseInt(sls['Current']['Economy']['LastIncomeTemporary']) + parseInt(sls['Current']['Economy']['LastCostsTemporary']));
	$("#CashNext").html(parseInt(sls['Current']['Economy']['ExpectedCash']) - parseInt(sls['Current']['Economy']['CostsSum']) + parseInt(sls['Current']['Economy']['CostsTemporary']));
	$("#content").show("slow");
	teamDetail(sls['Current']['TeamID']);
}

function loadTeam() {
	console("<img src='images/ajax.gif' align='left' border=0 hspace=5 /> Login successful.<br />Please wait while downloading team details: this can take a while...");
	$.getJSON(
		"hthq.php?ht_action=Team",
		function(json) {
			sls = json;
			sls['Current']['TeamName'] = sls['Teams'][sls['Current']['TeamID']]['TeamName'];
			sls['Current']['HomePage'] = sls['Teams'][sls['Current']['TeamID']]['HomePage'];
			sls['Current']['LeagueLevelUnitID'] = sls['Teams'][sls['Current']['TeamID']]['LeagueLevelUnit']['LeagueLevelUnitID'];
			sls['Current']['LeagueLevelUnitName'] = sls['Teams'][sls['Current']['TeamID']]['LeagueLevelUnit']['LeagueLevelUnitName'];
			sls['Current']['LeagueName'] = sls['Teams'][sls['Current']['TeamID']]['League']['LeagueName'];
			sls['Current']['NumberOfUndefeated'] = sls['Teams'][sls['Current']['TeamID']]['NumberOfUndefeated'];
			sls['Current']['NumberOfVictories'] = sls['Teams'][sls['Current']['TeamID']]['NumberOfVictories'];
			sls['Current']['RegionName'] = sls['Teams'][sls['Current']['TeamID']]['Region']['RegionName'];
			sls['Current']['Loginname'] = sls['Teams'][sls['Current']['TeamID']]['User']['Loginname'];
			if (sls['Teams'][sls['Current']['TeamID']]['LogoURL'])
				sls['Current']['LogoURL'] = sls['Teams'][sls['Current']['TeamID']]['LogoURL'];
			else sls['Current']['LogoURL'] = "images/mainlogo.png";
			menu();
			homeTeam();
		}
	);
}

function login() {
	console("<img src='images/ajax.gif' align='left' border=0 hspace=5 /> Checking for user credentials validity...");
	$.post(
		"hthq.php",
		{ "ht_action": "Login", "loginname": $("#user").val(), "readonlypassword": $("#pass").val() },
		function(json) {
			if (json.ht_valid) {
				console("User logged in");
				sls = json;
				loadTeam();
			}
			else {
				console("Login failed");
				sls = false;
			}
		},
		"json"
	);
}

function logout() {
	$.post(
		"hthq.php",
		{ "ht_action": "Logout" },
		function(json) {
			$(".main").hide("slow");
		},
		"json"
	);
}

function matchFormation(team) {
	var res = team['Formation']+' ';
	switch (team['TacticType']) {
		case "1":
			res += '<img src="images/pr.png" border="0" alt="Pressing" title="Pressing" />';
			break;
		case "2":
			res += '<img src="images/ca.png" border="0" alt="Counter-attacks" title="Counter-attacks" />';
			break;
		case "3":
			res += '<img src="images/mid.png" border="0" alt="Attack in the middle" title="Attack in the middle" />';
			break;
		case "4":
			res += '<img src="images/aw.png" border="0" alt="Attack in wings" title="Attack in wings" />';
			break;
		case "7":
			res += '<img src="images/se.png" border="0" alt="Play creatively" title="Play creatively" />';
			break;
	}
	return res;
}

function menu() {
	$("#menu").hide("slow");
	$("#menu").empty();
	var list = $("<ul></ul>");

	var item = $("<li>Team</li>");
	item.click(function() {
		homeTeam();
	});
	list.append(item);

	var item = $("<li>Player details</li>");
	item.click(function() {
		players();
	});
	list.append(item);

	var item = $("<li>Matches</li>");
	item.click(function() {
		matches();
	});
	list.append(item);

	var item = $("<li>Lineup assistant</li>");
	item.click(function() {
		lineup();
	});
	list.append(item);

/*
	var item = $("<li>Debug</li>");
	item.click(function() {
		$.dump(sls);
	});
	list.append(item);
*/

	var item = $("<li>Logout</li>");
	item.click(function() {
		logout();
	});
	list.append(item);

	$("#menu").append($('<h3>Menu</h3>'));
	var box = $('<div class="Box"></div>');
	box.append(list);
	box.append($('<p id="console"></p>'));
	$("#menu").append(box);
	$("#menu").append($("<div id='detail'></div>"));
	$("#menu").show("slow");
}

function stringToDate(datetime) {
	var nums = datetime.replace(/^([0-9]{2,4})-([0-1][0-9])-([0-3][0-9]) (?:([0-2][0-9]):([0-5][0-9]):([0-5][0-9]))?$/, "$1 $2 $3 $4 $5 $6").split(' ');
	return new Date(nums[0], nums[1]-1, nums[2], nums[3], nums[4], nums[5]);
}

function teamDetail(teamid) {
	$("#detail").empty();
	$("#detail").hide('fast');
	var team = sls['Teams'][teamid];
	team['User']['LastDate'] = team['User']['LastLoginDate'].replace(/ .*/, "");
	team['User']['LastTime'] = team['User']['LastLoginDate'].replace(/.* /, "");
	$("#detail").html($(contentTemplate($("#TeamDetail").html(), team)));
	$("#detail h3").click(function() {
		$("#detail").hide('slow');
	});
	$("#detail").show('slow');
}
