/**
 * Hattrick Head-Quarters 2.0
 * Matches
 *
 * @author Davide Lucchesi <davide@hattrickhq.org>
 * @version 2.0
 * @license http://opensource.org/licenses/gpl-license.php (GPL)
 *
 */

function matchAnalyzer(matchid) {
	if (sls['Matches'][matchid] && sls['Matches'][matchid]['Events'])
		matchEvents(matchid);
	else {
		console("<img src='images/ajax.gif' align='left' border=0 hspace=5 /> Loading match "+matchid+"...");
		$.getJSON(
			"hthq.php", {
				"ht_action": "MatchEvents",
				"matchID": matchid
			},
			function(json) {
				sls['Matches'][json['MatchID']] = json;
				matchEvents(json['MatchID']);
				console("");
			}
		);
	}
}

function matchEvents(matchid) {
	$("#analyzer tbody").empty();
	var hp = 0;
	var ap = 0;
	for (var idx in sls['Matches'][matchid]['Events']) {
		var key = sls['Matches'][matchid]['Events'][idx]['EventKey'];
		if (key.length < 5)
			key = '0'+key;
		var aval = parseInt(key.substring(0, 1));
		var bval = parseInt(key.replace(/^./,"").replace(/._.$/, ""));
		var cval = parseInt(key.replace(/^../,"").replace(/_.$/, ""));
		var hgoal = false;
		var agoal = false;
		var kind = parseInt(sls['Matches'][matchid]['Events'][idx]['EventKey'].replace(/.*_/, ""));

/*
		var possub = sls['Matches'][matchid]['Events'][idx]['EventText'].indexOf("title=");
		if (possub > 0) {
			possub += 7;
			var playersub = sls['Matches'][matchid]['Events'][idx]['EventText'].substring(possub).replace(/\".*$/, "");
		}
		else var playersub = "";
		var posobj = sls['Matches'][matchid]['Events'][idx]['EventText'].indexOf("title=", possub);
		if (posobj > 0) {
			posobj += 7;
			var playerobj = sls['Matches'][matchid]['Events'][idx]['EventText'].substring(posobj).replace(/\".*$/, "");
		}
		else var playerobj = "";
*/
		if (aval == 1) {
			if (sls['Matches'][matchid]['Events'][idx]['SubjectTeamID'] == sls['Matches'][matchid]['HomeTeam']['HomeTeamID']) {
				hp += 1;
				hgoal = true;
			}
			else {
				ap += 1;
				agoal = true;
			}
		}
	
		var imgevent = "";
		if ((aval == 0) && (bval == 9) && ((cval == 0) || (cval == 4)))
			imgevent = '<img src="images/inj0.png" border="0" alt="bruised" title="bruised" />';
		else if ((aval == 0) && (bval == 9) && (cval == 1))
			imgevent = '<img src="images/inj1.png" border="0" alt="soft injury" title="soft injury" />';
		else if ((aval == 0) && (bval == 9) && ((cval == 2) || (cval == 3) || (cval == 5) || (cval == 6)))
			imgevent = '<img src="images/inj2.png" border="0" alt="hard injury" title="hard injury" />';
		else if (aval == 1)
			imgevent = '<img src="images/goal.png" border="0" alt="goal" title="goal" />';
		else if (aval == 2)
			imgevent = '<img src="images/fail.png" border="0" alt="fail" title="fail" />';
		else if ((aval == 5) && (bval == 1) && ((cval == 0) || (cval == 1)))
			imgevent = '<img src="images/yel1.png" border="0" alt="yellow card" title="yellow card" />';
		else if ((aval == 5) && (bval == 1) && ((cval == 2) || (cval == 3)))
			imgevent = '<img src="images/yel2.png" border="0" alt="second yellow card" title="second yellow card" />';
		else if ((aval == 5) && (bval == 9) && (cval == 4))
			imgevent = '<img src="images/red.png" border="0" alt="red card" title="red card" />';
		
		var imgside = "";
		if (((aval == 1) || (aval == 2)) && (((bval == 0) || (bval == 1) || (bval == 3)) && (cval > 4)))
			imgside = '<img src="images/se.png" border="0" alt="special event" title="special event" />';
		else if (((aval == 1) || (aval == 2)) && (cval == 0))
			imgside = '<img src="images/fk.png" border="0" alt="free kick" title="free kick" />';
		else if (((aval == 1) || (aval == 2)) && (cval == 1))
			imgside = '<img src="images/mid.png" border="0" alt="middle" title="middle" />';
		else if (((aval == 1) || (aval == 2)) && (cval == 2))
			imgside = '<img src="images/left.png" border="0" alt="left" title="left" />';
		else if (((aval == 1) || (aval == 2)) && (cval == 3))
			imgside = '<img src="images/right.png" border="0" alt="right" title="right" />';
		else if (((aval == 1) || (aval == 2)) && (cval == 4))
			imgside = '<img src="images/pe.png" border="0" alt="penalty" title="penalty" />';
		if (((aval == 1) || (aval == 2)) && (bval == 4))
			imgside += '<img src="images/ca.png" border="0" alt="counter-attack" title="counter-attack" />';

		if ((aval == 1) || (aval == 2) || ((aval == 5) && (! ((bval == 5) && (cval == 0))) && (! ((bval == 9) && (cval == 9)))) || ((aval == 0) && (bval == 9))) {
			var etext = sls['Matches'][matchid]['Events'][idx]['EventText'].replace(/(<([^>]+)>)/ig,"");
			if (! etext)
				etext = sls['Matches'][matchid]['Events'][idx]['EventText'];
			var trow = $('<tr></tr>');
//			var trow = $('<tr title="'+etext+'"></tr>');
			trow.append($('<td align="right">'+sls['Matches'][matchid]['Events'][idx]['Minute']+'</td>'));
			trow.append($('<td align="center">'+imgevent+'</td>'));
			trow.append($('<td align="center">'+imgside+'</td>'));
			if (parseInt(sls['Matches'][matchid]['Events'][idx]['SubjectTeamID'])) {
				if (sls['Matches'][matchid]['Events'][idx]['SubjectTeamID'] == sls['Matches'][matchid]['HomeTeam']['HomeTeamID'])
					trow.append($('<td>'+sls['Matches'][matchid]['HomeTeam']['HomeTeamName']+'</td>'));
				else trow.append($('<td>'+sls['Matches'][matchid]['AwayTeam']['AwayTeamName']+'</td>'));
			}
			else trow.append($("<td></td>"));
/*
			trow.append($('<td>'+playersub+'</td>'));
			trow.append($('<td>'+playerobj+'</td>'));
*/
			trow.append($('<td>'+etext+'</td>'));
			trow.append($('<td align="center">'+(hgoal?'<strong>'+hp+'</strong>':hp)+' - '+(agoal?'<strong>'+ap+'</strong>':ap)+'</td>'));
/*
			trow.click(function() {
				$("#EventText").html($(this).attr('title'));
			});
*/
			$("#analyzer tbody").append(trow);
		}
	}
	sls['Matches'][matchid]['HomeGoals'] = hp;
	sls['Matches'][matchid]['AwayGoals'] = ap;

	$("#analyzer").tablesorter({
		widgets: ['zebra']
	});

	$("#MatchDate").html('<img src="images/weather'+sls['Matches'][matchid]['Arena']['WeatherID']+'.png" align="left" border="0" />'+sls['Matches'][matchid]['MatchDate'].replace(/ .*/, ""));
	$("#HomeTeamName").html(sls['Matches'][matchid]['HomeTeam']['HomeTeamName']);
	$("#AwayTeamName").html(sls['Matches'][matchid]['AwayTeam']['AwayTeamName']);
	$("#HomeFormation").html(matchFormation(sls['Matches'][matchid]['HomeTeam']));
	$("#AwayFormation").html(matchFormation(sls['Matches'][matchid]['AwayTeam']));
	$("#HomeGoals").html(sls['Matches'][matchid]['HomeTeam']['HomeGoals']);
	$("#AwayGoals").html(sls['Matches'][matchid]['AwayTeam']['AwayGoals']);
	$("#MatchType").html(matchTypeIcon(parseInt(sls['Matches'][matchid]['MatchType'])));

	$("#tabs > ul").tabs('select', 2);
}

function matches() {
	$("#content").hide("fast");
	content(sls['Current']['TeamName']+" matches");
	contentAddTemplate($("#Matches").html(), sls['Current']);
	for (var idx in sls['MatchList'][sls['Current']['TeamID']]) {
		var trow = $('<tr id="team-'+idx+'"></tr>');
		var elem = sls['MatchList'][sls['Current']['TeamID']][idx];
		if (sls['MatchList'][sls['Current']['TeamID']][idx]['HomeTeam']['HomeTeamID'] == sls['Current']['TeamID']) {
			var homematch = '<img src="images/home.png" border="0" alt="Home" title="Home" />';
			elem['HomeName'] = "<b>"+elem['HomeTeam']['HomeTeamName']+"</b>";
			elem['AwayName'] = elem['AwayTeam']['AwayTeamName'];
			elem['Result'] = "<b>"+elem['HomeGoals']+"</b> - "+elem['AwayGoals'];
		}
		else {
			var homematch = '';
			elem['HomeName'] = elem['HomeTeam']['HomeTeamName'];
			elem['AwayName'] = "<b>"+elem['AwayTeam']['AwayTeamName']+"</b>";
			elem['Result'] = elem['HomeGoals']+" - <b>"+elem['AwayGoals']+"</b> ";
		}
		if (! elem['HomeGoals'])  {
			elem['Result'] = "";
		}
		var date = elem['MatchDate'].replace(/ .*/, "");
		var matchtype = matchTypeIcon(parseInt(sls['MatchList'][sls['Current']['TeamID']][idx]['MatchType']));
		trow.append("<td>"+date+"</td>");
		trow.append("<td align='center'>"+matchtype+"</td>");
		trow.append("<td align='center'>"+homematch+"</td>");
		var cell = $("<td align='center' id='team-"+idx+"-"+sls['MatchList'][sls['Current']['TeamID']][idx]['HomeTeam']['HomeTeamID']+"'>"+elem['HomeName']+"</td>");
		cell.click(function() {
			console("<img src='images/ajax.gif' align='left' border=0 hspace=5 /> Loading matches...");
			var teamid = $(this).attr('id').replace(/.*-[0-9]*-/, "");
			if (sls['MatchList'][teamid]) {
				matchesDetail(teamid);
				console("");
			}
			else $.getJSON(
				"hthq.php", {
					"ht_action": "Matches",
					"teamID": teamid
				},
				function(json) {
					sls['MatchList'][teamid] = json;
					matchesDetail(teamid);
					console("");
				}
			);
		});
		trow.append(cell);
		var cell = $("<td align='center' id='team-"+idx+"-"+sls['MatchList'][sls['Current']['TeamID']][idx]['AwayTeam']['AwayTeamID']+"'>"+elem['AwayName']+"</td>");
		cell.click(function() {
			console("<img src='images/ajax.gif' align='left' border=0 hspace=5 /> Loading matches...");
			var teamid = $(this).attr('id').replace(/.*-[0-9]*-/, "");
			if (sls['MatchList'][teamid]) {
				matchesDetail(teamid);
				console("");
			}
			else $.getJSON(
				"hthq.php", {
					"ht_action": "Matches",
					"teamID": teamid
				},
				function(json) {
					sls['MatchList'][teamid] = json;
					matchesDetail(teamid);
					console("");
				}
			);
		});
		trow.append(cell);
		var cell = $("<td align='center' align='center'>"+elem['Result']+"</td>");
		if (elem['Result']) {
			cell.click(function() {
				var matchid = $(this).parents('tr').attr('id').replace("team-", "");
				matchAnalyzer(matchid);
			});
		}
		trow.append(cell);
		$("#team tbody").append(trow);
	}

	for (var idx in sls['LeagueLevelUnits'][sls['Current']['LeagueLevelUnitID']]['Season'][sls['LeagueLevelUnits'][sls['Current']['LeagueLevelUnitID']]['CurrentSeason']]) {
		var elem = sls['LeagueLevelUnits'][sls['Current']['LeagueLevelUnitID']]['Season'][sls['LeagueLevelUnits'][sls['Current']['LeagueLevelUnitID']]['CurrentSeason']][idx];
		var trow = $('<tr id="fixtures-'+idx+'">'+
			'<td align="center">'+elem['HomeTeam']['HomeTeamName']+'</td>'+
			'<td align="center">'+elem['AwayTeam']['AwayTeamName']+'</td>'+
			'<td align="center" width="20">'+((typeof elem['HomeGoals'] == "string")?elem['HomeGoals']:"")+'</td>'+
			'<td align="center" width="20">'+((typeof elem['AwayGoals'] == "string")?elem['AwayGoals']:"")+'</td>'+
		'</tr>');
		if (typeof elem['HomeGoals'] == "string") trow.click(function() {
			var matchid = $(this).attr('id').replace(/[a-z]*-/, "");
			matchAnalyzer(matchid);
		});
		trow.mouseover(function() {
			$(this).css("background-color", "#a0df82");
		});
		trow.mouseout(function() {
			$(this).css("background-color", "#ffffff");
		});
		$('#fixtures-round-'+elem['MatchRound']).append(trow);
	}

	$("#team").tablesorter({
		widgets: ['zebra']
	});

	$("#tabs > ul").tabs();
	matchesDetail(sls['Current']['TeamID']);
	$("#content").show("fast");
}

function matchesDetail(teamid) {
	$("#detail").empty();
	$("#detail").hide('fast');
	var team = { 'TeamID':  teamid };
	$("#detail").html($(contentTemplate($("#MatchesDetail").html(), team)));
	for (var idx in sls['MatchList'][teamid]) {
		if (sls['MatchList'][teamid][idx]['Status'] == "FINISHED") {
			var trow = $('<tr id="details-match-'+idx+'"></tr>');
			var matchtype = matchTypeIcon(parseInt(sls['MatchList'][teamid][idx]['MatchType']));
			$("#detail table").append('<tr><td colspan="2">'+matchtype+' '+sls['MatchList'][teamid][idx]['MatchDate']+'</td></tr>');
			trow.append('<td>'+sls['MatchList'][teamid][idx]['HomeTeam']['HomeTeamName']+'<br />'+sls['MatchList'][teamid][idx]['AwayTeam']['AwayTeamName']+'</td>');
			trow.append('<td align="right">'+sls['MatchList'][teamid][idx]['HomeGoals']+'<br />'+sls['MatchList'][teamid][idx]['AwayGoals']+'</td>');
			trow.click(function() {
				var matchid = $(this).attr('id').replace("details-match-", "");
				matchAnalyzer(matchid);
			});
			trow.mouseover(function() {
				$(this).css("background-color", "#a0df82");
			});
			trow.mouseout(function() {
				$(this).css("background-color", "#ffffff");
			});
			$("#detail table").append(trow);
			$("#detail table").append('<tr><td colspan="2">&nbsp;</td>');
		}
	}
	if (sls['MatchList'][teamid][idx]['HomeTeam']['HomeTeamID'] == teamid)
		$("#MatchesDetailTeam").html(sls['MatchList'][teamid][idx]['HomeTeam']['HomeTeamName']);
	else $("#MatchesDetailTeam").html(sls['MatchList'][teamid][idx]['AwayTeam']['AwayTeamName']);
	$("#detail h3").click(function() {
		$("#detail").hide('slow');
	});
	$("#detail").show('slow');
}

function matchTypeIcon(matchtypeid) {
	switch (matchtypeid) {
		case 1:
			var matchtype = '<img src="images/league.png" border="0" alt="League" title="League" />';
			break;
		case 2:
			var matchtype = '<img src="images/league.png" border="0" alt="Qualification" title="Qualification" />';
			break;
		case 3:
			var matchtype = '<img src="images/cup.png" border="0" alt="Cup" title="Cup" />';
			break;
		case 4:
			var matchtype = '<img src="images/friendly.png" border="0" alt="Friendly (normal rules)" title="Friendly (normal rules)" />';
			break;
		case 5:
			var matchtype = '<img src="images/friendly.png" border="0" alt="Friendly (cup rules)" title="Friendly (cup rules)" />';
			break;
		case 7:
			var matchtype = '<img src="images/league.png" border="0" alt="Hattrick Masters" title="Hattrick Masters" />';
			break;
		case 8:
			var matchtype = '<img src="images/friendly.png" border="0" alt="International friendly (normal rules)" title="International friendly (normal rules)" />';
			break;
		case 9:
			var matchtype = '<img src="images/friendly.png" border="0" alt="International friendly (cup rules)" title="International friendly (cup rules)" />';
			break;
		default:
			var matchtype = "";
			break;
	}
	return matchtype;
}
