/**
 * Hattrick Head-Quarters 2.0
 * Lineup assistant
 *
 * @author Davide Lucchesi <davide@hattrickhq.org>
 * @version 2.0
 * @license http://opensource.org/licenses/gpl-license.php (GPL)
 *
 */

function lineup() {
	$("#content").hide("fast");
	content(sls['Current']['TeamName']+": lineup assistant");
	contentAddTemplate($("#Lineup").html(), sls['Current']);

	lineupDetail(0, 0);
	var list = { 0: 'RightDef', 1: 'MidDef', 2: 'LeftDef', 3: 'Midfield', 4: 'RightAtt', 5: 'MidAtt', 6: 'LeftAtt' };
	for (var i in list) {
		var slid = $("#Rating"+list[i]);
		slid.slider({
			slide: function(e, ui) {
				var sum = ui.value + parseInt(sls['Opponent'][$(this).attr('id')]);
				$("#"+$(this).attr('id').replace("Rating", "Detail")).slider("moveTo", parseInt(ui.value*80/sum));
				$("#"+$(this).attr('id')+"Text").html(lineupEval(ui.value));
				$("#"+$(this).attr('id')+"Text").css('color', '#FFFFFF');
			},
			min: 0,
			max: 80
		});
		slid.slider("moveTo", 0);
	}

	var matches = $("#matches");
	matches.append("<option value='0'></option>");
	for (var idx in sls['Matches']) {
		if (((sls['Matches'][idx]['HomeTeam']['HomeTeamID'] == sls['Current']['TeamID']) || (sls['Matches'][idx]['AwayTeam']['AwayTeamID'] == sls['Current']['TeamID'])) && (sls['Matches'][idx]['FinishedDate'])) {
			matches.append("<option value='"+sls['Matches'][idx]['MatchID']+"'>"+sls['Matches'][idx]['HomeTeam']['HomeTeamName']+" - "+sls['Matches'][idx]['AwayTeam']['AwayTeamName']+"</option>");
		}
	}
	matches.change(function() {
		lineupCompose($(this).children("[@selected]").val());
	});

	for (var i = 1; i <= 11; i++) {
		lineupUpdate(i);
		$("#role"+i).change(function() {
			var id = $(this).children("[@selected]").val();
			for (var j = 1; j <= 11; j++) {
				if ($("#role"+j).children("[@selected]").val() == id) {
					if ($(this).attr("name") != "role"+j) {
						$("#role"+j).val(0);
					}
					var be = parseInt($("#beha"+j).children("[@selected]").val());
					switch (be) {
						case 5:
							$("#RatingLeftAttText").css('color', '#A0DF82');
							$("#RatingMidAttText").css('color', '#A0DF82');
							$("#RatingRightAttText").css('color', '#A0DF82');
						break;
						case 6:
							$("#RatingLeftAttText").css('color', '#A0DF82');
							$("#RatingMidAttText").css('color', '#A0DF82');
							$("#RatingRightAttText").css('color', '#A0DF82');
							$("#RatingMidfieldText").css('color', '#A0DF82');
							$("#RatingLeftDefText").css('color', '#A0DF82');
							$("#RatingMidDefText").css('color', '#A0DF82');
							$("#RatingRightDefText").css('color', '#A0DF82');
						break;
						case 7:
							$("#RatingLeftDefText").css('color', '#A0DF82');
							$("#RatingMidDefText").css('color', '#A0DF82');
							$("#RatingRightDefText").css('color', '#A0DF82');
							$("#RatingMidfieldText").css('color', '#A0DF82');
						break;
						default:
							switch (j) {
								case 1:
									$("#RatingLeftDefText").css('color', '#A0DF82');
									$("#RatingMidDefText").css('color', '#A0DF82');
									$("#RatingRightDefText").css('color', '#A0DF82');
								break;
								case 2:
									$("#RatingMidDefText").css('color', '#A0DF82');
									$("#RatingRightDefText").css('color', '#A0DF82');
									$("#RatingMidfieldText").css('color', '#A0DF82');
									$("#RatingRightAttText").css('color', '#A0DF82');
								break;
								case 3:
									$("#RatingMidDefText").css('color', '#A0DF82');
									$("#RatingRightDefText").css('color', '#A0DF82');
									$("#RatingMidfieldText").css('color', '#A0DF82');
								break;
								case 4:
									$("#RatingLeftDefText").css('color', '#A0DF82');
									$("#RatingMidDefText").css('color', '#A0DF82');
									$("#RatingMidfieldText").css('color', '#A0DF82');
								break;
								case 5:
									$("#RatingLeftDefText").css('color', '#A0DF82');
									$("#RatingMidDefText").css('color', '#A0DF82');
									$("#RatingMidfieldText").css('color', '#A0DF82');
									$("#RatingLeftAttText").css('color', '#A0DF82');
								break;
								case 6:
								case 7:
									$("#RatingMidDefText").css('color', '#A0DF82');
									$("#RatingRightDefText").css('color', '#A0DF82');
									$("#RatingMidfieldText").css('color', '#A0DF82');
									$("#RatingMidAttText").css('color', '#A0DF82');
									$("#RatingRightAttText").css('color', '#A0DF82');
								break;
								case 8:
								case 9:
									$("#RatingLeftDefText").css('color', '#A0DF82');
									$("#RatingMidDefText").css('color', '#A0DF82');
									$("#RatingMidfieldText").css('color', '#A0DF82');
									$("#RatingLeftAttText").css('color', '#A0DF82');
									$("#RatingMidAttText").css('color', '#A0DF82');
								break;
								case 10:
								case 11:
									$("#RatingLeftAttText").css('color', '#A0DF82');
									$("#RatingMidAttText").css('color', '#A0DF82');
									$("#RatingRightAttText").css('color', '#A0DF82');
								break;
							}
						break;
					}
				}
			}
		});
		$("#beha"+i).change(function() {
			var curr = $(this).attr("name");
			curr = curr.replace('beha', '');
			lineupUpdate(curr);
		});
	}
	$("#lineupButtons > span").mouseover(function() {
		$(this).css("background-color", "#a0df82");
	});
	$("#lineupButtons > span").mouseout(function() {
		$(this).css("background-color", "");
	});
	$("#lineupAuto").click(function() {
		lineupAuto();
	});
	$("#lineupFlip").click(function() {
		lineupFlip();
	});
	$("#lineupClear").click(function() {
		lineupClear();
	});
	$("#tabs > ul").tabs();
	$("#content").show("fast");
}

function lineupAuto() {
	for (var i = 1; i <= 11; i++) {
		if ($("#role"+i).val() == 0) {
			var beha = $("#beha"+i).val();
			for (var idx in sls['Lineup'][i][beha]) {
				if (playerFree(sls['Lineup'][i][beha][idx]['PlayerID'])) {
					$("#role"+i).val(sls['Lineup'][i][beha][idx]['PlayerID']);
					break;
				}
			}
		}
	}
	lineupRatingsClear();
}

function lineupClear() {
	for (var i = 1; i <= 11; i++) {
		$("#role"+i).val(0);
	}
	lineupRatingsClear();
}

function lineupCompose(matchid) {
	if (sls['Matches'][matchid] && sls['Matches'][matchid]['Teams'][sls['Current']['TeamID']]) {
		if (sls['Matches'][matchid]['HomeTeam']['HomeTeamID'] == sls['Current']['TeamID']) {
			sls['Opponent'] = sls['Matches'][matchid]['AwayTeam'];
			sls['Ratings'] = sls['Matches'][matchid]['HomeTeam'];
			$("#DetailTeamName").html(sls['Matches'][matchid]['AwayTeam']['AwayTeamName']);
			$("#DetailTeamFormation").html(matchFormation(sls['Matches'][matchid]['AwayTeam']));
		}
		else {
			sls['Opponent'] = sls['Matches'][matchid]['HomeTeam'];
			sls['Ratings'] = sls['Matches'][matchid]['AwayTeam'];
			$("#DetailTeamName").html(sls['Matches'][matchid]['HomeTeam']['HomeTeamName']);
			$("#DetailTeamFormation").html(matchFormation(sls['Matches'][matchid]['HomeTeam']));
		}
		var lineup = sls['Matches'][matchid]['Teams'][sls['Current']['TeamID']]['Lineup'];
		for (var idx in lineup) {
			$("#role"+lineup[idx]['RoleID']).val(lineup[idx]['PlayerID']);
			$("#beha"+lineup[idx]['RoleID']).val(lineup[idx]['Behaviour']);
			lineupUpdate(lineup[idx]['RoleID']);
			for (key in sls['Ratings']) {
				if (key.substring(/^Rating/)) {
					$("#"+key).slider("moveTo", sls['Ratings'][key]);
					$("#Detail"+key.replace("Rating", "")).slider("moveTo", parseInt(sls['Ratings'][key]*80/(parseInt(sls['Ratings'][key])+parseInt(sls['Opponent'][key]))));
					$("#"+key+"Text").css('color', '#FFFFFF');
				}
			}
		}
	}
}

function lineupDetail(matchid, teamid) {
	$("#detail").empty();
	$("#detail").hide('fast');

	$("#detail").html($(contentTemplate($("#LineupDetail").html(), { 'MatchID': matchid+"", 'TeamID': teamid+"" })));
	if (matchid && teamid) {
		if (sls['Matches'][matchid]['HomeTeam']['HomeTeamID'] == teamid) {
			sls['Opponent'] = sls['Matches'][matchid]['HomeTeam'];
			$("#DetailTeamName").html(sls['Matches'][matchid]['HomeTeam']['HomeTeamName']);
			$("#DetailTeamFormation").html(matchFormation(sls['Matches'][matchid]['HomeTeam']));
		}
		else {
			sls['Opponent'] = sls['Matches'][matchid]['AwayTeam'];
			$("#DetailTeamName").html(sls['Matches'][matchid]['AwayTeam']['AwayTeamName']);
			$("#DetailTeamFormation").html(matchFormation(sls['Matches'][matchid]['AwayTeam']));
		}
	}
	else if (matchid) {
		if (sls['Matches'][matchid]['HomeTeam']['HomeTeamID'] == sls['Current']['TeamID']) {
			sls['Opponent'] = sls['Matches'][matchid]['AwayTeam'];
			$("#DetailTeamName").html(sls['Matches'][matchid]['AwayTeam']['AwayTeamName']);
			$("#DetailTeamFormation").html(matchFormation(sls['Matches'][matchid]['AwayTeam']));
		}
		else {
			sls['Opponent'] = sls['Matches'][matchid]['HomeTeam'];
			$("#DetailTeamName").html(sls['Matches'][matchid]['HomeTeam']['HomeTeamName']);
			$("#DetailTeamFormation").html(matchFormation(sls['Matches'][matchid]['HomeTeam']));
		}
	}
	else {
		sls['Opponent'] = { 'RatingRightDef': '0', 'RatingMidDef': '0', 'RatingLeftDef': '0', 'RatingMidfield': '0', 'RatingRightAtt': '0', 'RatingMidAtt': '0', 'RatingLeftAtt': '0' };
		sls['Ratings'] = { 'RatingRightDef': '0', 'RatingMidDef': '0', 'RatingLeftDef': '0', 'RatingMidfield': '0', 'RatingRightAtt': '0', 'RatingMidAtt': '0', 'RatingLeftAtt': '0' };
	}
	var list = { 0: 'RightDef', 1: 'MidDef', 2: 'LeftDef', 3: 'Midfield', 4: 'RightAtt', 5: 'MidAtt', 6: 'LeftAtt' };
	for (var i in list) {
		var slid = $("#Detail"+list[i]);
		slid.slider({
			slide: function(e, ui) {
				$("#"+$(this).attr('id')+"Text").html(lineupDetailEval(ui.value)+" %");
				$("#"+$(this).attr('id').replace("Detail", "Rating")+"Text").css('color', '#A0DF82');
//$('#content').append(ui.value+' ');
			},
			min: 0,
			max: 80
		});
		slid.slider("moveTo", 0);
	}
	for (var idx in sls['Matches']) {
		if ((sls['Matches'][idx]['HomeTeam']['HomeTeamID'] != sls['Current']['TeamID']) && (sls['Matches'][idx]['AwayTeam']['AwayTeamID'] != sls['Current']['TeamID'])) {
			switch (parseInt(sls['Matches'][idx]['MatchType'])) {
				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;
	
			}
			$("#detail table").append('<tr><td colspan="3">'+matchtype+' '+sls['Matches'][idx]['MatchDate']+'</td></tr>');
			var trow = $('<tr id="details-match-team-'+idx+'-'+sls['Matches'][idx]['HomeTeam']['HomeTeamID']+'"></tr>');
			trow.append('<td colspan="2">'+sls['Matches'][idx]['HomeTeam']['HomeTeamName']+'</td>');
			trow.append('<td align="right">'+sls['Matches'][idx]['HomeGoals']+'</td>');
			trow.click(function() {
				var matchid = $(this).attr('id').replace("details-match-team-", "").replace(/-[0-9]*/, "");
				var teamid = $(this).attr('id').replace(/details-match-team-[0-9]*-/, "");
				lineupDetailUpdate(matchid, teamid);
			});
			trow.mouseover(function() {
				$(this).css("background-color", "#a0df82");
			});
			trow.mouseout(function() {
				$(this).css("background-color", "#ffffff");
			});
			$("#detail table").append(trow);
			var trow = $('<tr id="details-match-team-'+idx+'-'+sls['Matches'][idx]['AwayTeam']['AwayTeamID']+'"></tr>');
			trow.append('<td colspan="2">'+sls['Matches'][idx]['AwayTeam']['AwayTeamName']+'</td>');
			trow.append('<td align="right">'+sls['Matches'][idx]['AwayGoals']+'</td>');
			trow.click(function() {
				var matchid = $(this).attr('id').replace("details-match-team-", "").replace(/-[0-9]*/, "");
				var teamid = $(this).attr('id').replace(/details-match-team-[0-9]*-/, "");
				lineupDetailUpdate(matchid, teamid);
			});
			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="3">&nbsp;</td>');
		}

	}
	$("#detail h3").click(function() {
		$("#detail").hide('slow');
	});
	$("#detail").show('slow');
}

function lineupDetailEval(val) {
	return(parseInt(val*100/80));
	
}

function lineupDetailUpdate(matchid, teamid) {
	if (sls['Matches'][matchid]['HomeTeam']['HomeTeamID'] == teamid) {
		sls['Opponent'] = sls['Matches'][matchid]['HomeTeam'];
		$("#DetailTeamName").html(sls['Matches'][matchid]['HomeTeam']['HomeTeamName']);
		$("#DetailTeamFormation").html(matchFormation(sls['Matches'][matchid]['HomeTeam']));
	}
	else {
		sls['Opponent'] = sls['Matches'][matchid]['AwayTeam'];
		$("#DetailTeamName").html(sls['Matches'][matchid]['AwayTeam']['AwayTeamName']);
		$("#DetailTeamFormation").html(matchFormation(sls['Matches'][matchid]['AwayTeam']));
	}
	var list = { 0: 'RightDef', 1: 'MidDef', 2: 'LeftDef', 3: 'Midfield', 4: 'RightAtt', 5: 'MidAtt', 6: 'LeftAtt' };
	for (var i in list) {
		sls['Ratings']['Rating'+idx] = $("#Rating"+list[i]).slider("value")+"";
		$("#Rating"+list[i]+"Text").css('color', '#FFFFFF');
	}
	for (key in sls['Ratings']) {
		if (key.substring(/^Rating/)) {
			$("#Detail"+key.replace("Rating", "")).slider("moveTo", parseInt(sls['Ratings'][key]*80/(parseInt(sls['Ratings'][key])+parseInt(sls['Opponent'][key]))));
		}
	}
}

function lineupEval(val) {
	cpat = 21*val/80+0.5;
	ival = parseInt(cpat);
	if (cpat < 1)
		cpat = 0;
	if (ival > 20)
		ival = 20;
	dval = cpat - ival;
	denom = sls['Translations']['Skills'][ival];
	if (cpat > 0) {
		if (dval < 0.25)
			denom += ' - -';
		else if (dval < 0.50)
			denom += ' -';
		else if (dval < 0.75)
			denom += ' +';
		else
			denom += ' + +';
	}
	return(denom);
	
}

function lineupFlip() {
	var beha;
	var id;
	var rate;

	beha = $("#beha2").val();
	id = $("#role2").val();
	$("#beha2").val($("#beha5").val());
	$("#beha5").val(beha);
	$("#role2").val($("#role5").val());
	$("#role5").val(id);
	lineupUpdate(2);
	lineupUpdate(5);
	beha = $("#beha3").val();
	id = $("#role3").val();
	$("#beha3").val($("#beha4").val());
	$("#beha4").val(beha);
	$("#role3").val($("#role4").val());
	$("#role4").val(id);
	lineupUpdate(3);
	lineupUpdate(4);
	beha = $("#beha6").val();
	id = $("#role6").val();
	$("#beha6").val($("#beha9").val());
	$("#beha9").val(beha);
	$("#role6").val($("#role9").val());
	$("#role9").val(id);
	lineupUpdate(6);
	lineupUpdate(9);
	beha = $("#beha7").val();
	id = $("#role7").val();
	$("#beha7").val($("#beha8").val());
	$("#beha8").val(beha);
	$("#role7").val($("#role8").val());
	$("#role8").val(id);
	lineupUpdate(7);
	lineupUpdate(8);
	beha = $("#beha10").val();
	id = $("#role10").val();
	$("#beha10").val($("#beha11").val());
	$("#beha11").val(beha);
	$("#role10").val($("#role11").val());
	$("#role11").val(id);
	lineupUpdate(10);
	lineupUpdate(11);

	rate = $("#RatingLeftDef").slider("value");
	$("#RatingLeftDef").slider("moveTo", $("#RatingRightDef").slider("value"));
	$("#RatingRightDef").slider("moveTo", rate);
	rate = $("#RatingLeftAtt").slider("value");
	$("#RatingLeftAtt").slider("moveTo", $("#RatingRightAtt").slider("value"));
	$("#RatingRightAtt").slider("moveTo", rate);
}

function lineupRatings() {
	var params = new Array();
	params["ht_action"] = 'LineupRatings';
	for (var i = 1; i <= 11; i++) {
		params["beha"+i] = $("#beha"+i).val();
		for (var idx in sls['Lineup'][i][params["beha"+i]]) {
			if (sls['Lineup'][i][params["beha"+i]][idx]['PlayerID'] == $("#role"+i).val()) {
				params["star"+i] = sls['Lineup'][i][params["beha"+i]][idx]['RatingStars'];
			}
		}
	}
	$.post(
		"hthq.php", {
			"ht_action": "LineupRatings",
			"beha1": params["beha1"], "star1": params["star1"],
			"beha2": params["beha2"], "star2": params["star2"],
			"beha3": params["beha3"], "star3": params["star3"],
			"beha4": params["beha4"], "star4": params["star4"],
			"beha5": params["beha5"], "star5": params["star5"],
			"beha6": params["beha6"], "star6": params["star6"],
			"beha7": params["beha7"], "star7": params["star7"],
			"beha8": params["beha8"], "star8": params["star8"],
			"beha9": params["beha9"], "star9": params["star9"],
			"beha10": params["beha10"], "star10": params["star10"],
			"beha11": params["beha11"], "star11": params["star11"]
		},
		function(json) {
			sls['Ratings'] = json;
			for (key in sls['Ratings']) {
				if (key.substring(/^Rating/)) {
					$("#"+key).slider("moveTo", sls['Ratings'][key]);
					$("#"+key+"Text").html(sls['Ratings'][key]);
				}
			}
		},
		"json"
	);
}

function lineupRatingsClear() {
	$("#RatingRightDef").slider("moveTo", 0);
	$("#RatingMidDef").slider("moveTo", 0);
	$("#RatingLeftDef").slider("moveTo", 0);
	$("#RatingMidfield").slider("moveTo", 0);
	$("#RatingRightAtt").slider("moveTo", 0);
	$("#RatingMidAtt").slider("moveTo", 0);
	$("#RatingLeftAtt").slider("moveTo", 0);
}

function lineupUpdate(roleid) {
	var behaviour = $("#beha"+roleid).val();
	var list = $("#role"+roleid);
	var id = list.children("[@selected]").val();
	list.empty();
	list.append("<option value='0'> </option>");
	for (idx in sls['Lineup'][roleid][behaviour]) {
		var num = '';
		if (sls['Teams'][sls['Current']['TeamID']]['PlayerList'][sls['Lineup'][roleid][behaviour][idx]['PlayerID']]['PlayerNumber'])
			num = sls['Teams'][sls['Current']['TeamID']]['PlayerList'][sls['Lineup'][roleid][behaviour][idx]['PlayerID']]['PlayerNumber']+" ";
		var opt = $("<option value='"+sls['Lineup'][roleid][behaviour][idx]['PlayerID']+"'>"+num+sls['Teams'][sls['Current']['TeamID']]['PlayerList'][sls['Lineup'][roleid][behaviour][idx]['PlayerID']]['Events']['Names']['ShortFirst'].substring(0, 1)+'. '+sls['Teams'][sls['Current']['TeamID']]['PlayerList'][sls['Lineup'][roleid][behaviour][idx]['PlayerID']]['Events']['Names']['ShortLast']+" ("+sls['Lineup'][roleid][behaviour][idx]['RatingStars']+")</option>");
		if ((sls['Teams'][sls['Current']['TeamID']]['PlayerList'][sls['Lineup'][roleid][behaviour][idx]['PlayerID']]['Cards'] > 2) || (sls['Teams'][sls['Current']['TeamID']]['PlayerList'][sls['Lineup'][roleid][behaviour][idx]['PlayerID']]['InjuryLevel'] > 0))
			opt.css('color', 'red');
		list.append(opt);
	}
	list.val(id);
}

function playerFree(id) {
	for (var i = 1; i <= 11; i++) {
		if ($("#role"+i).val() == id) {
			return false;
		}
	}
	return true;
}
