/*
dojo.require("dojo.debug.Firebug");
dojo.require("dojo.widget.Dialog");
dojo.require("dojo.dnd.HtmlDragMove");
dojo.require("dojo.validate.*");
dojo.require("dojo.rpc.JsonService");
dojo.require("dojo.widget.TitlePane");
*/
//dojo.require("dijit.TitlePane");
//dojo.require("dojo.parser");

dojo.require("dijit.Dialog");
dojo.require("dijit.form.ValidationTextBox");
dojo.require("dijit.form.Button");
dojo.require("dijit.form.CheckBox");
dojo.require("dojox.validate.regexp");
dojo.require("dojo.rpc.JsonService");
dojo.require("dojo.parser");
dojo.require("dijit.ProgressBar");
dojo.require("dojo.fx");

var jsonService;
var dlgScoresU;
var dlgScores;
var dlgUmpires;

var positionLeagues;

var maskImages = Array();
maskImages[0] = Array();
maskImages[0][0] = new Image(24,14);
maskImages[0][0].src = "/images/mask0.gif";
maskImages[0][1] = new Image(24,14);
maskImages[0][1].src = "/images/mask1.gif";
maskImages[0][2] = new Image(24,14);
maskImages[0][2].src = "/images/mask2.gif";
maskImages[1] = Array();
maskImages[1][0] = new Image(24,14);
maskImages[1][0].src = "/images/maskT0.gif";
maskImages[1][1] = new Image(24,14);
maskImages[1][1].src = "/images/maskT1.gif";
maskImages[1][2] = new Image(24,14);
maskImages[1][2].src = "/images/maskT2.gif";
maskImages[1][3] = new Image(24,14);
maskImages[1][3].src = "/images/maskT3.gif";
maskImages[1][4] = new Image(24,14);
maskImages[1][4].src = "/images/maskT4.gif";

dojo.addOnLoad(function() {
	dlgScoresU = dijit.byId("UScoresDialog");
	dlgUmpires = dijit.byId("UmpireDialog");
	//var UCanx = document.getElementById("UScoresDialogCanx");
	//dlgScoresU.setCloseControl(UCanx);
	//new dojo.dnd.HtmlDragMoveSource(document.getElementById("UScoresDialog"));
	//<?php
	//if ($admin > 1) {
		//?>
		//createjsDOMenu();
		//dlgGame = dojo.widget.byId("GameDialog");
		//dlgScores = dojo.widget.byId("ScoresDialog");
		//dlgTeam = dojo.widget.byId("TeamDialog");
		//var GCanx = document.getElementById("GameDialogCanx");
		//var SCanx = document.getElementById("ScoresDialogCanx");
		//var TCanx = document.getElementById("TeamDialogCanx");
		//dlgGame.setCloseControl(GCanx);
		//dlgScores.setCloseControl(SCanx);
		//dlgTeam.setCloseControl(TCanx);
		//new dojo.dnd.HtmlDragMoveSource(document.getElementById("GameDialog"));
		//new dojo.dnd.HtmlDragMoveSource(document.getElementById("ScoresDialog"));
		//new dojo.dnd.HtmlDragMoveSource(document.getElementById("TeamDialog"));
		//<?php
	//}
	//?>
	//jsonService = new dojo.rpc.JsonService('http://testing.esportscenter.net/webservices/tournaments.smd');
	//jsonService = new dojo.rpc.JsonService('http://'+http_host+'/services/tournaments.smd');
	console.debug("starting json service");
	jsonService = new dojo.rpc.JsonService('http://'+window.location.hostname+'/services/tournaments.smd');
});

function removeChildrenFromNode(node) {
	if(node == undefined || node == null) {
		return;
	}
	var len = node.childNodes.length;
	while (node.hasChildNodes()) {
		node.removeChild(node.firstChild);
	}
}

function loadGameScoresUser(id) {
	var action = jsonService.GetTournamentScore(id).addCallbacks(UscoreResult,UscoreErr);
	//dlgScoresU.show();
	//document.getElementById('IDGame').value = id;
	dijit.byId("UScoresDialog").show();
}

function UscoreResult(result) {
	document.getElementById('UScoresTeamName_0').innerHTML = '';
	document.getElementById('UScoresTeamName_1').innerHTML = '';
	document.getElementById('UScoresTotal_0').innerHTML = '';
	document.getElementById('UScoresTotal_1').innerHTML = '';
		
	//document.getElementById('UGameNotes').innerHTML = result.notes;
	removeChildrenFromNode(document.getElementById('UScoresTableHead'));
	removeChildrenFromNode(document.getElementById('UInningsTable_0'));
	removeChildrenFromNode(document.getElementById('UInningsTable_1'));
	var testInn = result.innings.length > 0 ? result.innings : innings;
	var tmpTR = document.createElement("tr");
	
	for (var h=1; h <= testInn; h++) {
		var tmpTH = document.createElement("th");
		tmpTH.innerHTML = h;
		tmpTH.style.textAlign = 'center';
		tmpTR.appendChild(tmpTH);
	}
	document.getElementById("UScoresTableHead").appendChild(tmpTR);
	for (var t=0; t < result.scores.length; t++) {
		var tbl = document.getElementById('UInningsTable_'+t);
		var tTR = document.createElement("tr");
		document.getElementById('UScoresTeamName_'+t).innerHTML = result.scores[t].team.TeamName;
		if (result.scores[t].innings != undefined) {
			if (result.scores[t].innings[0] != undefined) {
				document.getElementById('UScoresTotal_'+t).innerHTML = result.scores[t].innings[0].Score;
			}
		}
		var tTD;
		if (result.scores[t].innings.length <= 1) {
			tTD = document.createElement("td");
			tTD.innerHTML = 'No Box Scores';
			tTR.appendChild(tTD);
		}
		
		for (var i=1; i <= testInn || i < result.scores[t].innings.length; i++) {
			tTD = document.createElement("td");
			if (result.scores[t].innings != undefined) {
				if (result.scores[t].innings[i] != undefined) {
					tTD.innerHTML = result.scores[t].innings[i].Score == null ? 'x' : result.scores[t].innings[i].Score;
					tTD.className = 'ScoresTableDisplay';
				}
			}
			tTR.appendChild(tTD);
		}
		tbl.appendChild(tTR);
	}
}

function UscoreErr(fault) {
	alert(fault);
	document.getElementById('ScoresDialogUserCanx').disabled = false;
}

function loadGameUmpireOptions(id) {
	document.getElementById('basicGame').style.display = "none";
	document.getElementById('plateBaseGame').style.display = "none";
	document.getElementById('detailedGame').style.display = "none";
	var action = jsonService.GetUmpirePositions(id).addCallbacks(umpireResult,umpireErr);
	dijit.byId("UmpireDialog").show();
}

function gameUmpires(gid) {
	var retArr = Array("Umpires:");
	
	if (!popupUmps[gid]) {
		retArr = retArr.concat(Array("No Umpires"));
	} else {
		retArr = retArr.concat(popupUmps[gid]);
	}
	return retArr;
}

function umpireResult(result) {
	var forceprev = false;
	
	for (var fp=0; fp < 4; fp++) {
		if (result[fp]) {
			if (result[fp].PreviousCount > 0) {
				forceprev = true;
			}
		}
	}
	
	for (var t=1; t <= 4; t++) {
		dijit.byId('radBasic'+t).setAttribute('checked', false);
		dijit.byId('radPlateBase'+t).setAttribute('checked',false);
		if (result[t-1] && forceprev == false) {
			document.getElementById('trBasic'+t).style.display = "block";
			document.getElementById('trPlateBase'+t).style.display = "block";
		} else {
			document.getElementById('trBasic'+t).style.display = "none";
			document.getElementById('trPlateBase'+t).style.display = "none";
		}
	}
	positionLeagues = Array();
	dijit.byId('butCommitUmpire').setAttribute('disabled',true);
	
	if (forceprev == false) {
		document.getElementById('mainMsg').style.display = "block";
		document.getElementById('forcePreviousMsg').style.display = "none";
		for (var r=0; r < result.length; r++) {
			var lblNumber = r + 1;
			//alert('lblBasic'+lblNumber);
			var positionName = result[r].LeagueAbbr == null ? result[r].PositionName : result[r].PositionName + ' (' + result[r].LeagueAbbr + ')';
			positionLeagues["" + lblNumber] = result[r].IDLeague;
			//alert(result[r].IDTypeOfUmpirePosition);
			switch (result[r].IDTypeOfUmpirePosition) {
				case 1:
					document.getElementById('basicGame').style.display = "block";
					if (result[r].UmpireName == null) {
						document.getElementById('lblBasic'+lblNumber).innerHTML = positionName;
						document.getElementById('lblBasic'+lblNumber).className = r != 0 && (result[r-1].UmpireName == null && result[r-1].LeagueAbbr == result[r].LeagueAbbr) ? "PositionDisabled" : "PositionEnabled";
						document.getElementById('lblBasic'+lblNumber).disabled = r != 0 && (result[r-1].UmpireName == null && result[r-1].LeagueAbbr == result[r].LeagueAbbr) ? true : false;
						dijit.byId('radBasic'+lblNumber).setAttribute('disabled',r != 0 && (result[r-1].UmpireName == null && result[r-1].LeagueAbbr == result[r].LeagueAbbr) ? true : false);
					} else {
						document.getElementById('lblBasic'+lblNumber).innerHTML = positionName +  ' - ' + result[r].UmpireName;
						document.getElementById('lblBasic'+lblNumber).className = "PositionDisabled";
						document.getElementById('lblBasic'+lblNumber).disabled = true;
						dijit.byId('radBasic'+lblNumber).setAttribute('disabled',true);
					}
					break;
				case 2:
					document.getElementById('plateBaseGame').style.display = "block";
					if (result[r].UmpireName == null) {
						document.getElementById('lblPlateBase'+lblNumber).innerHTML = positionName;
						document.getElementById('lblPlateBase'+lblNumber).className = "PositionEnabled";
						document.getElementById('lblPlateBase'+lblNumber).disabled = false;
						dijit.byId('radPlateBase'+lblNumber).setAttribute('disabled',false);
					} else {
						document.getElementById('lblPlateBase'+lblNumber).innerHTML = positionName +  ' - ' + result[r].UmpireName;
						document.getElementById('lblPlateBase'+lblNumber).className = "PositionDisabled";
						document.getElementById('lblPlateBase'+lblNumber).disabled = true;
						dijit.byId('radPlateBase'+lblNumber).setAttribute('disabled',true);
					}
					break;
				case 3:
					document.getElementById('detailedGame').style.display = "block";
					break;
				default:
				
			}
		}
	} else {
		document.getElementById('mainMsg').style.display = "none";
		document.getElementById('forcePreviousMsg').style.display = "block";
	}
}

function umpireErr(fault) {
	alert(fault);
}

function umpValueChanged(el,index) {
	if (el.getValue() != false) {
		document.getElementById('umpIDUmpirePosition').value = el.getValue();
		document.getElementById('umpIDLeague').value = positionLeagues[index];
		document.getElementById('umpIDGame').value = curGID;
		dijit.byId('butCommitUmpire').setAttribute('disabled',false);
	} else {
		//dijit.byId('butCommitUmpire').setAttribute('disabled',true);
	}
}

function commitUmpire() {
	//alert(document.getElementById('umpIDUmpirePosition').value + ' - ' + document.getElementById('umpIDLeague').value + ' - ' + document.getElementById('umpIDGame').value);

	dijit.byId("umpProgressBar").update({progress: 1});
	document.getElementById('umpButtonBar').style.display = 'none';
	document.getElementById('umpProgressBar').style.display = 'block';
	var tmpIDUP = document.getElementById('umpIDUmpirePosition').value;
	var tmpIDL = document.getElementById('umpIDLeague').value;
	var tmpIDG = document.getElementById('umpIDGame').value;
	var action = jsonService.CommitUmpire(tmpIDUP,tmpIDL,tmpIDG).addCallbacks(commitUmpireResult,commitUmpireErr);
}

function commitUmpireResult(result) {
	dijit.byId("umpProgressBar").update({progress: 2});
	popupUmps[result.IDGame] = result.UmpArr;
	document.getElementById('umpImg_'+result.IDGame).src = maskImages[result.Umpires > 2 ? 1 : 0][result.NumUmps].src;
	setTimeout("hideUmpireDialog()",1000);
}

function commitUmpireErr(fault) {
	dijit.byId("UmpireDialog").hide();
	document.getElementById('umpButtonBar').style.display = 'block';
	document.getElementById('umpProgressBar').style.display = 'none';
	alert(fault);
}

function hideUmpireDialog() {
	//dijit.byId("umpProgressBar").update({progress: 0});
	dijit.byId("UmpireDialog").hide();
	document.getElementById('umpButtonBar').style.display = 'block';
	document.getElementById('umpProgressBar').style.display = 'none';
	flash(["game_"+curGID],false,0);
}

function flash(el,inout,cnt) {
	var flashArrs = [];
	var animation = null;
	if (cnt == 0) {
		for (var e=0; e < el.length; e++) {
			/*
			el[e].style.backgroundColor = '#bfffbf';
			flashArrs.push([dojo.fadeIn({node: el[e],duration: 300}),
				dojo.fadeOut({node: el[e],duration: 300}),
				dojo.fadeIn({node: el[e],duration: 300}),
				dojo.fadeOut({node: el[e],duration: 300}),
				dojo.fadeIn({node: el[e],duration: 300})]);
			*/
			flashArrs.push([
				dojo.animateProperty({node: el[e],duration: 300,properties: {backgroundColor: {start: "#ffffff", end: "#9fff9f"}}}),
				dojo.animateProperty({node: el[e],duration: 300,properties: {backgroundColor: {start: "#9fff9f", end: "#ffffff"}}}),
				dojo.animateProperty({node: el[e],duration: 300,properties: {backgroundColor: {start: "#ffffff", end: "#9fff9f"}}}),
				dojo.animateProperty({node: el[e],duration: 300,properties: {backgroundColor: {start: "#9fff9f", end: "#ffffff"}}}),
				dojo.animateProperty({node: el[e],duration: 300,properties: {backgroundColor: {start: "#ffffff", end: "#9fff9f"}}}),
				dojo.animateProperty({node: el[e],duration: 300,properties: {backgroundColor: {start: "#9fff9f", end: "#ffffff"}}})
			]);
		}
	}
	
	for (var a=0; a < flashArrs.length; a++) {
		animation = dojo.fx.chain(flashArrs[a]);
		animation.play();
	}
}

//dojo.addOnLoad(initTourn);