//Global Ajax Manager
var am = new AjaxManager();
  //am.method = "POST";

var PANNELS = ["framePicks", "frameSlides", "frameListings"];
var FIELDS = ["fldAtmStreaks", "fldAtmLeader", "fldCurLeader", "fldYlStreak", "fldYcStreak"];

//Global objects
var RESULTS; //Data handler object with results data
var STATS; //Data handler object with Players data
var SEL_DATE; //Date previously selected from a pick
var SEL_TEAM_ID; //Team ID previously selected either from a pick or from the teams list
var SEL_PICK_IDX = 0;
var PICK_LOCKED = false;
var CHANGE_PLAYER = false;

//First function to run when the page loads
function init() {
	loadResults();
	displayPlayer("You haven't made your selection", null);	
}

function navUp() {
	if(RESULTS != null) {
		var pick = RESULTS.GetFirstPick();
		if(pick) {
			var dt = pick.gamedate;

			function doNext() {
				if(RESULTS.GetPicks()) {
					clearPannel(0);
					clearPannel(2);
					var frameRef = getPannel(0);
					renderPicks(frameRef);
					setStats(RESULTS.GetStats());
					selectPick(0);
				} else {
					loadResults();	
				}
			}
			RESULTS.ScrollDown(dt, doNext);
		} else {
			loadResults();
		}
	}
}

function navDown() {
	if(RESULTS != null) {
		var pick = RESULTS.GetLastPick();
		if(pick) {
			var dt = pick.gamedate;

			function doNext() {
				if(RESULTS.GetPicks()) {
					clearPannel(0);
					clearPannel(2);
					var frameRef = getPannel(0);
					renderPicks(frameRef);
					setStats(RESULTS.GetStats());
					selectPick(0);
				} else {
					loadResults();	
				}
			}
			RESULTS.ScrollUp(dt, doNext);
		} else {
			loadResults();
		}
	}
}

//Retrieves a reference to a pannel
function getPannel(pIdx) {
	if(pIdx >= 0 && pIdx <= PANNELS.length) {
		var pnl = getObject(PANNELS[pIdx]);	
		if(pnl != null) {
			return pnl;
		}
	}
	return null;
}

//Clears a pannel on the console
function clearPannel(pIdx) {
	var pnl = getPannel(pIdx);
	if(pnl != null) {
		pnl.innerHTML = "&nbsp;";
	}
}

//Clears all pannels on the console
function clearPannels() {
	var pLen = PANNELS.length;
	do {
		clearPannel(pLen);		
	} while(pLen--);
}

//Gets an instance of a field
function getField(fIdx) {
	if(fIdx >= 0 && fIdx <= FIELDS.length) {
		var fld = getObject(FIELDS[fIdx]);	
		if(fld != null) {
			return fld;
		}
	}
	return null;
}
//Sets a field to a value
function setField(fIdx, value) {
	var fld = getField(fIdx);	
	if(fld != null) {
		fld.innerHTML = value;
	}
}
//Resets stats field to 0
function resetField(fIdx) {	
	var fld = getField(fIdx);	
	if(fld != null) {
		fld.innerHTML = "0";
	}	
}

//Resets all fields
function resetFields() {
	var fLen = FIELDS.length;
	do {
		resetField(fLen);
	} while(fLen--);
}

function handleError(resp) {
	alert(resp.Text);
}
/*********************************************/

//Sets a color for a row
function colorRow(row, className) {
	if(row.cells) {
		var isHeader = (row.getAttribute("type") == "header")?true:false;
		var cells = row.cells;
		var cLen = cells.length - 1;
		var cCell;
		if(isHeader) { return false; }
		do {
			cCell = cells[cLen];
			cCell.className = className;
		} while (cLen--);
	} else {
		row.className = className;
	}
}

//On Row Hover event
function onRowHover(row, mode) {
	var isSelected = row.getAttribute("selected");
	if(isSelected == "true") {
		return false;
	}
	colorRow(row, "streakPicksHover");	
}

//On row leave event
function onRowLeave(row, mode) {
	var isSelected = row.getAttribute("selected");
	if(isSelected == "true") {
		return false;
	}
	colorRow(row, "streakPicks");	
}

//Select Row
function rowSelect(row, mode) {
	colorRow(row, "streakSelected");
	row.setAttribute("selected", "true");	
}

//On Row Select Event
function onRowSelect(row, mode) {
	//Reset all other rows
	if(row.parentNode) {
		var rows = row.parentNode.rows;
		var rLen = rows.length - 1;	
		do {
			rows[rLen].setAttribute("selected", "false");		
			onRowLeave(rows[rLen], mode);
		} while(rLen--);
		//Select hilited one
		rowSelect(row, mode);	
	}
}

//Select Pick
function selectPick(pickIdx) {
	SEL_PICK_IDX = pickIdx;
	displayPlayer("You haven't made your selection", null);
	var pick = RESULTS.GetPick(pickIdx);
	if(pick) {
		SEL_DATE = pick.gamedate;
		if(pick.player) {			
			var title = "Pick for " + SEL_DATE.substring(0, 5) + ": " + pick.player.name + " " + pick.score.Text;
			displayPlayer(title, pick);
			loadPlayers(SEL_DATE);
		} 
	}
}

//Helper functions
function getPlayerImage(id) {
	var imgLocation = "/shared/scripts/validator.jsp?url=http://web.minorleaguebaseball.com/images/players/mugshot/ph_"+ String(id).toLowerCase() + ".jpg&other=/images/milb/home/nophoto.gif";
	var pic = new SimpleImage()
		pic.src = imgLocation;
	return pic.toHTML();
}

//Creates an image to a blank silhuette
function getBlankImage() {
	var pic = new SimpleImage()
		pic.src = "http://web.minorleaguebaseball.com/images/milb/home/nophoto.gif";	
	return pic.toHTML();	
}
