var BanterRpc = BundleRpc,
	NewsRpc = BundleRpc,
	TeamRpc = BundleRpc,
	ResultsRpc = BundleRpc,
	PlayerRpc = BundleRpc;

function confirmSubmit(message) {
	
	var agree = confirm(message);
	
	if (agree) {
		return true;
	} else {
		return false;
	}
}

function imageRollOut(image, src) {
  
  	image.src = src;

}

function imageRollOver(image, src) {
  
  	image.src = src;
  
}

function getElement(id) {
		
	var element = document.getElementById(id);
	return(element);

}

function popHelp(page) {

	pop(page,800,700,'yes');

}

function pop(page, width, height, scrollbars) {

	if ((width+"") == "undefined" || (height+"") == "undefined") {
		width="400";
		height="300";
	}
	
	if ((scrollbars+"") == "undefined") {
		scrollbars = "no";
	}

	var openWin = this.open(page, "newwin", "width=" + width + ",height=" + height + ",scrollbars=" + scrollbars + ",resizable=yes,status=no");
	openWin.focus();

}

function setElementValue(elementFromId, elementToId) {

	if(getElement(elementFromId) != null && getElement(elementToId) != null) {
		getElement(elementToId).value = getElement(elementFromId).value;
	}

}

function clickElement(elementId) {
	getElement(elementId).click();
}

function highlightRow(element) {
	element.className = element.className + '_highlight';
	return false;
}

function unhighlightRow(element) {
	element.className = element.className.split('_')[0];
	return false;
}

function autoFill() {
	setTimeout(showNew, 1);
	setTimeout(showResults, 1);
	setTimeout(showTwitter, 1);
}

var ladderElements;

function showResults() {

	jQuery(".auto_ladder").each( function(i) {
		
		var element = this,
			compId = element.innerHTML * 1;
		
		if (compId > 0) {
		
			//proxy so call-back for correct element
			function getLadderProxyForComp(competitionId, element) {
				ResultsRpc.getLadderForCompetition(competitionId, function(ladder) { gotLadder(ladder, element); });
			}
		
			getLadderProxyForComp(element.innerHTML, element);
			
		} else {
		
			function getLadderProxy(element) {
				ResultsRpc.getLadderForOwnCompetition(function(ladder) { gotLadder(ladder, element); });
			}
		
			getLadderProxy(element);
			
		}
		
	});

}

function gotLadder(ladder, element) {

	jQuery(element).empty();

	var ladderTable = document.createElement("table"), 
		tbody = document.createElement("tbody"),

		cellWritters = [
		  function(club) { return club.clubName; },
		  function(club) { return club.rung.wins * 4 + club.rung.draws; }
		];
	
	jQuery(ladderTable).append(tbody);
	jQuery(tbody).addRows(ladder, cellWritters);
	
	jQuery(element).html(ladderTable);

}

function showNew() {

	jQuery(".auto_news").each(function(i) {
		
		var element = this;

		storyCount = 1 * element.innerHTML;

		if (storyCount > 0) {

			//proxy so call-back for correct element
			function getNewsProxyWithLimit(element, storyCount) {
				NewsRpc.getLeagueNews(function(news) { gotNews(news, element, storyCount); });
			}
		
			getNewsProxyWithLimit(element, storyCount);
			
		} else {

			//proxy so call-back for correct element
			function getNewsProxy(element) {
				NewsRpc.getLeagueNews(function(news) { gotNews(news, element, 5); });
			}
		
			getNewsProxy(element);
			
		}		
		
	});

}

function showTwitter() {

	jQuery(".auto_twitter").each(function(i) {
		
		var element = this;

		storyCount = 1 * element.innerHTML;

		if (storyCount > 0) {

			//proxy so call-back for correct element
			function getNewsProxyWithLimit(element, storyCount) {
				NewsRpc.getTwitterFeed(function(news) { gotTwitterFeed(news, element, storyCount); });
			}
		
			getNewsProxyWithLimit(element, storyCount);
			
		} else {

			//proxy so call-back for correct element
			function getNewsProxy(element) {
				NewsRpc.getTwitterFeed(function(news) { gotTwitterFeed(news, element, 5); });
			}
		
			getNewsProxy(element);
			
		}		
		
	});

}

function gotNews(news, element, storyCount) {

	if (storyCount <= 0) storyCount = 5;

	jQuery(element).empty();

	var newsHtml = document.createElement("div"),
		newsStories = news.length,
		i;
	
	if (newsStories > storyCount) newsStories = storyCount;
	
	for(i = 0; i < newsStories; i++) {
		newsHtml.innerHTML = newsHtml.innerHTML + "<p><label><a href=\"" + news[i].link + "\">" + news[i].title + "</a></label><br/>" + news[i].description + "</p>";
	}
	
	jQuery(element).html(newsHtml);
	
}

function gotTwitterFeed(news, element, storyCount) {

	var lastWeek = new Date();
	lastWeek.setDate(lastWeek.getDate() - 2);
	
	if (storyCount <= 0) storyCount = 5;

	jQuery(element).empty();

	var newsHtml = document.createElement("div"),
		newsStories = news.length,
		newsTitle,
		i;
	
	if (newsStories > storyCount) newsStories = storyCount;
	
	for(i = 0; i < newsStories; i++) {

		newsTitle = news[i].title;
		newsTitle = newsTitle.replace("the_bench: ", "")
		
		
		if (news[i].pubDate != null && news[i].pubDate > lastWeek) {
			//new post
			newsHtml.innerHTML = newsHtml.innerHTML + "<p><img src=\"image/none.gif\" class=\"img_icon blue_star_mini\"/> " + newsTitle + "</p>";
		} else {
			//old post
			newsHtml.innerHTML = newsHtml.innerHTML + "<p>" + newsTitle + "</p>";
		}
		
	}
	
	jQuery(element).html(newsHtml);
	
}

/*
 * jQuery plugin to add Rows to a Table body element (table, tbody, thead, tfoot)
 * Addapted from dwr.utils (http://directwebremoting.org/)
 * 
 * data: 2D array of data representing rows and columns, must be a 2D array
 * cellFunct: custom function to apply to the data for each cell
 * options: 
 * 		.rowCreator: custom function to create rows
 * 		.cellCreator: custom cell creation function
 * 
 */

(function($) {

	$.fn.extend({
		addRows: function(data, cellFuncs, options) {
			
			return this.each(function() {
				new AddRows(this, data, cellFuncs, options);
			});
			
		}
	});
	
	
	function AddRows(element, data, cellFuncs, options) {

		if (element == null) return;

		if (!options) options = {};
		
		if (!options.rowCreator) options.rowCreator = function(options) { return document.createElement("tr"); };
		
		if (!options.cellCreator) options.cellCreator = function(options) { return document.createElement("td"); };
		
		var tr, rowNum;
	
		for (rowNum = 0; rowNum < data.length; rowNum++) {
			options.rowData = data[rowNum];
			options.rowIndex = rowNum;
			options.rowNum = rowNum;
			options.data = null;
			options.cellNum = -1;
			tr = _addRowInner(cellFuncs, options);
			if (tr != null) element.appendChild(tr);
		}

		
		/**
		 * @private Internal function to draw a single row of a table.
		 */
		function _addRowInner(cellFuncs, options) {
			
			var tr = options.rowCreator(options);
			
			if (tr == null) return null;
			
			for (var cellNum = 0; cellNum < cellFuncs.length; cellNum++) {
				
				var func = cellFuncs[cellNum];
				
				if (typeof func == 'function') {
					options.data = func(options.rowData, options);
				} else {
					options.data = func || "";
				}
				
				options.cellNum = cellNum;
				var td = options.cellCreator(options);
				
				if (td != null) {
					
					if (options.data != null) {
						
						if (_isHTML(options.data)) {
							td.appendChild(options.data);
						} else {
							td.innerHTML = options.data;
						}
						
					} 
					
					tr.appendChild(td);
					
				}
			}
			
			return tr;
			
		};

		function _isHTML(object) {
			
			if (object == null || typeof object != "object" || object.nodeName == null) {
				return false;
			}
			return true;
		}
	};

})(jQuery);var page = 0;

function gotBanter(banterList) {
								
	jQuery("#banterTableBody").empty();
	
	jQuery('#banterTableBody').addRows(banterList, banterCellWriters, {
		cellCreator:function(options) {
		    var td = document.createElement("td");
		    
		    return td;
		}
	});
	
	hideExternalBanter();
	
	setTimeout(refreshBanter, 60000);		//set refresh in future...
	
}

var banterCellWriters = [
	function (banter) {
		
		var banterHtml = document.createElement("div");
	
		var table = document.createElement("table");
		var tbody = document.createElement("tbody");
		var tr = document.createElement("tr");
		banterHtml.appendChild(table);
		table.appendChild(tbody);
		tbody.appendChild(tr);
		jQuery(table).addClass("banter_entry");
		
		if (banter.external) {
			jQuery(table).addClass("external_banter");
		}
		
		var imageTd = document.createElement("td");
		jQuery(imageTd).addClass("banter_avatar_box");
		var msgTd = document.createElement("td");
		
		tr.appendChild(imageTd);
		tr.appendChild(msgTd);
		
		msgTd.innerHTML = "<b>From: " + banter.user + "</b> " + banter.updated + "<br/>" + banter.message;
			
		if (banter.avatarId > 0) {	
			var avatarImage = document.createElement("img");
			avatarImage.setAttribute("src", "avatar/?id=" + banter.avatarId);
			imageTd.appendChild(avatarImage);	
		} else {
			var avatarImage = document.createElement("div");
			jQuery(imageTd).addClass("banter_no_avatar");
			imageTd.appendChild(avatarImage);
		}
		
		return banterHtml;
		
	}
];

function refreshBanter() {
	BanterRpc.loadBanterForPage(page, gotBanter);
}

function hideExternalBanter() {
	
	jQuery(".external_banter").each( function(i) {
		if (jQuery("#hideExternalBanter").is(":checked")) {
			jQuery(this).hide();
		} else {
			jQuery(this).show();
		}
	});
		
}


function pageBack() {
	page--;
	if (page <= 0) {
		page = 0;
		jQuery('#backLink').hide();
	}
	BanterRpc.loadBanterForPage(page, gotBanter);
	jQuery('#nextLink').text("Page " + (page+2));
	jQuery('#backLink').text("Page " + page);
}

function pageNext() {
	page++;
	BanterRpc.loadBanterForPage(page, gotBanter);
	jQuery('#nextLink').text("Page" + (page+2));
	jQuery('#backLink').text("Page" + page);
	jQuery('#backLink').show();
}//************** on load **************
var gameId = jQuery('#teamSelectionForm\\:gameId').val();

var teamLoaded = false;		//initially set to false so normal page errors are not cleared, see clearErrors()

var stats_popup_playerId;

//dwr Error handler
dwr.engine.setErrorHandler(rpcError);
	
//************** functions **************
										
function dropSquadMember (position, element) {
	var gameId = jQuery('#teamSelectionForm\\:gameId').val();
	if (! isNaN(gameId)) {										
		element.hide();
		jQuery('#getTeam_loading').show();
		TeamRpc.addToTeam(gameId, position, element.attr("id"), gotTeam);
	}
}

function getTeam() {

	jQuery('#getTeam_loading').show();
	
	var gameId = jQuery('#teamSelectionForm\\:gameId').val();
	var typeofG = typeof(gameId);
	
	if (!isNaN(gameId) && gameId > 0) {
		TeamRpc.getTeam(gameId, gotTeam);
	} else {
		clearTeamSheet();
		jQuery('getTeam_loading').hide();
	}
	
}

function gotTeam(team) {

	jQuery('#getTeam_loading').hide();
	clearTeamSheet();
	clearErrors();
	
	//iterate players picked in team
	for (var i = 0; i < team.teamMembers.length; i++) {
		var teamMember = team.teamMembers[i];
		if (teamMember != null && teamMember.squadMember != null) {
			jQuery("#teammember_" + teamMember.position.id).html(buildPlayerIcon(teamMember));
		}
	}

	var squadList = ""; //"<div style=\"margin: 4px\">Drag a Player to a position on the field to select in your team.</div>";

	//iterate players available to be picked
	for (var i = 0; i < team.availableSquadMembers.length; i++) {
		var squadMember = team.availableSquadMembers[i];
		squadList += buildSquadMemberIcon(squadMember);
	}
	
	jQuery("#squadList").html(squadList);
	
	if (team.editable) {

		jQuery("#squadList").sortable({appendTo: 'body', helper: 'clone', opacity: 0.75});
		jQuery("#squadList").removeClass("locked");
		
	} else {
		jQuery("#squadList").addClass("locked");
	}
	
	teamLoaded = true;
	
}

//Players picked in the team, ie. on the Field
function buildPlayerIcon(teamMember) {
	var score = "";
	var positionGroup = "";
	
	if (teamMember.score != 0) {
		score = "<label>" + teamMember.score + "</label>";
	}
	
	if (teamMember.squadMember.player.positionGroupSymbols != null) {
		positionGroup = "<label title=\"" + teamMember.squadMember.player.positionGroupDesc + "\">" + teamMember.squadMember.player.positionGroupSymbols + "</label>";
	}
	
	if (teamMember.squadMember != null) {
		//return "<table id=\"squadMember_" + teamMember.squadMember.id + "\" class=\"draggable_squadmember " + teamMember.squadMember.player.positionGroupKeys + "\" cellpadding=\"0\" cellspacing=\"0\"><tr class=\"imagerow\"><td><a><div class=\"squadmember_image realClub_" + teamMember.squadMember.realClub + "\">" + score + "</div><span class=\"oop\">Out of position</span><span class=\"positiongroup_label\">" + teamMember.squadMember.player.positionGroupSymbols + "</span></a></td></tr><tr class=\"labelrow\"><td><label>" + teamMember.squadMember.playerName + "</label></td></tr></table>";
		return "<div id=\"squadMember_" + teamMember.squadMember.id + "\" class=\"player draggable_squadmember " + teamMember.squadMember.player.positionGroupKeys + "\"><div class=\"imagerow\"><div class=\"squadmember_image realClub_" + teamMember.squadMember.realClub + "\"></div><div class=\"score\">" + score + "</div><div class=\"oop\" title=\"Out of position\"></div><div class=\"positiongroup_label\">" + positionGroup + "</div></div><div class=\"labelrow\"><label>" + teamMember.squadMember.playerName + "</label></div></div>";
	} else {
		return "";
	}

}

//Players available to pick, ie. on the Bench
function buildSquadMemberIcon(squadMember) {
	var positionGroup = "";

	if (squadMember.player.positionGroupSymbols != null) {
		positionGroup = "<label title=\"" + squadMember.player.positionGroupDesc + "\">" + squadMember.player.positionGroupSymbols + "</label>";
	}
	
	if (squadMember != null) {
		//return "<table id=\"squadMember_" + squadMember.id + "\" class=\"draggable_squadmember " + squadMember.player.positionGroupKeys + "\" cellpadding=\"0\" cellspacing=\"0\"><tr class=\"imagerow\"><td><a><div class=\"squadmember_image realClub_" + squadMember.realClub + "\"></div><span class=\"oop\">Out of position</span><span class=\"positiongroup_label\">" + squadMember.player.positionGroupSymbols + "</span></a></td></tr><tr class=\"labelrow\"><td><label>" + squadMember.playerName + "</label></td></tr></table>";
		return "<div id=\"squadMember_" + squadMember.id + "\" class=\"player draggable_squadmember " + squadMember.player.positionGroupKeys + "\"><div class=\"imagerow\"><div class=\"squadmember_image realClub_" + squadMember.realClub + "\"></div><div class=\"oop\">Out of position</div><div class=\"positiongroup_label\">" + positionGroup + "</div></div><div class=\"labelrow\"><label>" + squadMember.playerName + "</label></div></div>";
	} else {
		return "";
	}
}



function clearTeamSheet() {

	jQuery('#squadList').empty();
	
	jQuery('.selected_teammember').each(function(i) {
		$(this).html("<div class=\"teammember_placeholder\"></div>");
	});

}

function clearErrors() {
	if (teamLoaded) {
		jQuery("#errors").empty();
	}
}

function toggleStatsSummary() {
	jQuery('#stats_summary_popup').toggle("slow");
}

function showStatsSummary() {
	jQuery('#stats_summary_popup').show("slow");
}

function hideStatsSummary() {
	jQuery('#stats_summary_popup').hide("slow");
}

function getStatsSummary(playerId) {
	
	if (stats_popup_playerId != playerId) { 
		stats_popup_playerId = playerId;	
		PlayerRpc.getStatisticsSummary(playerId, gotStatisticsSummary);
		showStatsSummary();
	} else {
		hideStatsSummary();
	}
	
}

function gotStatisticsSummary(performanceSummaryDto) {

	var playerName = performanceSummaryDto.player.playerName;
	
	if (performanceSummaryDto.player.realClub != null && performanceSummaryDto.player.realClub.length > 0) {
		playerName = playerName + "(" + performanceSummaryDto.player.realClub + ")";
	}

	//Set Player Name
	jQuery("#stats_summary_playername").text(playerName);
	
	//Clear
	jQuery("#stats_summary_table_body").empty();
	
	//Create Table Header
	var tableData = new Array();

	//Write Position Headers
	var headerData = new Array();
	headerData[0] = "Round";
	var cellIndex = 1;
	for(i = 0; i < performanceSummaryDto.positions.length; i++) {
		if (performanceSummaryDto.positions[i].report) {
			headerData[cellIndex] = performanceSummaryDto.positions[i].abbreviation;
			cellIndex++;
		}
	}
	
	//Write Stats Headers
	for(i = 0; i < performanceSummaryDto.statisticTokens.length; i++) {
		if (performanceSummaryDto.statisticTokens[i].report) {
			headerData[cellIndex] = performanceSummaryDto.statisticTokens[i].abbreviation;
			cellIndex++;
		}
	}
	
	var rowIndex = 0;
	
	var playerPerformanceList = performanceSummaryDto.playerPerformance;
	for(i = 0; i < playerPerformanceList.length; i++) {

		var rowData = new Array();
		rowData[0] = playerPerformanceList[i].round.roundName;
		
		cellIndex = 1;
		
		//Position Scores
		for(j = 0; j < playerPerformanceList[i].positionScores.length; j++) {
			if (performanceSummaryDto.positions[j].report) {
				rowData[cellIndex] = playerPerformanceList[i].positionScores[j];
				cellIndex++;
			}	
		}
		//Stats Scores
		for(j = 0; j < playerPerformanceList[i].statisticScores.length; j++) {
			if (performanceSummaryDto.statisticTokens[j].report) {
				rowData[cellIndex] = playerPerformanceList[i].statisticScores[j];
				cellIndex++;
			}		
		}
		tableData[rowIndex] = rowData;
		rowIndex++;
	}
	
	function cellFunctProxy(index) {
		return function (data) {return data[index]};
	}
	
	var cellFuncts = Array();
	for(i = 0; i < headerData.length; i++) {
		cellFuncts[i] = cellFunctProxy(i);
	}
	
	var tableHeader = new Array();
	tableHeader[0] = headerData;
	
	jQuery("#stats_summary_table_body").addRows(tableHeader, cellFuncts, { 
			cellCreator:function(options) {
			    return document.createElement("th");
			}});
			
	jQuery("#stats_summary_table_body").addRows(tableData, cellFuncts, {
		rowCreator:function(options) {
				var row = document.createElement("tr");
				if ((options.rowIndex % 2) != 0) {
					row.className = "base hover_highlight";
				} else {
					row.className = "alt hover_highlight";
				}		
				return row;
			}
	});

}

//dwr Error handler
function rpcError(msg) {

	$("#errors").html("<ul><li>" + msg + "</li></ul>");
	rpcErrorCaught = true;
	
	$('#getTeam_loading').hide();
	
}var firstResults = 0;
var lastPositionId;
var lastSearchTerm;

/***** Find players by search term *****/
function findPlayersForSalaryCap() {
	findPlayers(gotPlayersForSalaryCap);
}

function findPlayersForPreferences() {
	findPlayers(gotPlayersForPreferences);
}

function findPlayersForDraft() {
	findPlayers(gotPlayersForDraft);
}

function findPlayers(callback) {
	
	var searchTerm = jQuery("#playerSearchTerm").val();
	lastSearchTerm = searchTerm;
	
	if (searchTerm.length >= 2) {
		PlayerRpc.findPlayers(searchTerm, callback);
	} else {
		jQuery("#playerSearchErrors").text("Enter 2 or more characters of a player's name to search.");
	}
	jQuery("#playerSearchNext").hide();
	jQuery("#orderNotice").hide();
	
}

/***** Find players by Position *****/
function findPlayersByPositionForSalaryCap(positionId) {
	findPlayersByPosition(positionId, gotPlayersForSalaryCap);
}

function findPlayersByPositionForPreferences(positionId) {
	findPlayersByPosition(positionId, gotPlayersForPreferences);
}

function findPlayersByPositionForDraft(positionId) {
	findPlayersByPosition(positionId, gotPlayersForDraft);
}

function findPlayersByPosition(positionId, callback) {
	firstResults = 0;
	lastPositionId = positionId;
	PlayerRpc.findPlayersByPosition(positionId, firstResults, 10, callback);
	jQuery("#playerSearchNext").show();
	jQuery("#orderNotice").show();
}

/***** Find Next - by Search Term *****/
function findNextPlayerForSalaryCap() {
	firstResults = firstResults + 10;
	PlayerRpc.findPlayers(searchTerm, firstResults, 10, gotPlayersForSalaryCap);
}

function findNextPlayerForPreferences() {
	firstResults = firstResults + 10;
	PlayerRpc.findPlayers(searchTerm, firstResults, 10, gotPlayersForPreferences);
}

function findNextPlayerForDraft() {
	firstResults = firstResults + 10;
	PlayerRpc.findPlayers(searchTerm, firstResults, 10, gotPlayersForDraft);
}

/***** Find Next - by Position *****/
function findNextForSalaryCap() {
	firstResults = firstResults + 10;
	PlayerRpc.findPlayersByPosition(lastPositionId, firstResults, 10, gotPlayersForSalaryCap);
}

function findNextForPreferences() {
	firstResults = firstResults + 10;
	PlayerRpc.findPlayersByPosition(lastPositionId, firstResults, 10, gotPlayersForPreferences);
}

function findNextForDraft() {
	firstResults = firstResults + 10;
	PlayerRpc.findPlayersByPosition(lastPositionId, firstResults, 10, gotPlayersForDraft);
}

/***** Find Previous - by Search Term *****/
function findNextPlayerForSalaryCap() {
	firstResults = firstResults - 10;
	if (firstResults < 0) firstResults = 0;
	PlayerRpc.findPlayers(searchTerm, firstResults, 10, gotPlayersForSalaryCap);
}

function findNextPlayerForPreferences() {
	firstResults = firstResults - 10;
	if (firstResults < 0) firstResults = 0;
	PlayerRpc.findPlayers(searchTerm, firstResults, 10, gotPlayersForPreferences);
}

function findNextPlayerForDraft() {
	firstResults = firstResults - 10;
	if (firstResults < 0) firstResults = 0;
	PlayerRpc.findPlayers(searchTerm, firstResults, 10, gotPlayersForDraft);
}

/***** Find Prev - by Postion *****/
function findPrevForSalaryCap() {
	firstResults = firstResults - 10;
	if (firstResults < 0) firstResults = 0;
	PlayerRpc.findPlayersByPosition(lastPositionId, firstResults, 10, gotPlayersForSalaryCap);
}

function findPrevForPreferences() {
	firstResults = firstResults - 10;
	if (firstResults < 0) firstResults = 0;
	PlayerRpc.findPlayersByPosition(lastPositionId, firstResults, 10, gotPlayersForPreferences);
}

function findPrevForDraft() {
	firstResults = firstResults - 10;
	if (firstResults < 0) firstResults = 0;
	PlayerRpc.findPlayersByPosition(lastPositionId, firstResults, 10, gotPlayersForDraft);
}


/***** gotPlayer Callbacks *****/
function gotPlayersForSalaryCap(playerList) {
	gotPlayers(playerList, playerCellWriters);
}

function gotPlayersForPreferences(playerList) {
	gotPlayers(playerList, playerCellWritersForPreferences);
}

function gotPlayersForDraft(playerList) {
	gotPlayers(playerList, playerCellWritersForDraft);
}


function gotPlayers(playerList, cellWriters) {

	jQuery("#playerSearchTableBody").empty();
	jQuery("#playerSearchErrors").empty();
	
	if (playerList.length > 0) {
	
	
		jQuery("#playerSearchTableBody").addRows(playerList, cellWriters, { 
			cellCreator:function(options) {
			    var td = document.createElement("td");
			    
			    return td;
			},
			rowCreator:function(options) {

				var row = document.createElement("tr");
				if ((options.rowIndex % 2) != 0) {
					row.className = "base";
				} else {
					row.className = "alt";
				}
				
				return row;
			}
		});
		
	} else {
		jQuery("#playerSearchErrors").text("No players found");
	}
}

/***** Add Player *****/
function draftPlayer(playerId, playerName) {
	if (confirmSubmit("Are you sure you want to draft this player?")) {
		jQuery("#draftPlayerForm\\:playerId").val(playerId);
		clickElement("draftPlayerForm:draftPlayerLink");
	}
}

function addDraftPreference(playerId, playerName) {
	jQuery("#draftPreferenceForm\\:playerId").val(playerId);
	clickElement("draftPreferenceForm:draftPreferenceLink");
}


/***** Table Cell Writers *****/
var playerCellWriters = [
	function (player) {
		/*var playerHtml = document.createElement("div");
		
		var playerIcon = createPlayerIcon(player);
		
		//playerHtml.innerHTML = "<table class=\"playersearch base\" onmouseout=\"unhighlightRow(this)\" onmouseover=\"highlightRow(this)\" title=\"Click to add player to your squad\"><tr><td><div class=\"squadmember_image realClub_" + player.realClub + "\"></td><td><a id=\"add_namelink_" + player.id + "\" class=\"altlink\" onclick=\"draftPlayer('" + player.id + "')\">" + player.playerName + " (" + player.realClub + ")</a><br/>$" + player.worth + "</td><td width=\"20px\"><a class=\"altlink\" id=\"add_imglink_" + player.id + "\" onclick=\"draftPlayer('" + player.id + "')\"><div class=\"addplayer\" ></div></a></td></tr></table>";
		playerHtml.innerHTML = "<table class=\"playersearch base\" onmouseout=\"unhighlightRow(this)\" onmouseover=\"highlightRow(this)\" title=\"Click to add player to your squad\"><tr><td class=\"imagecol\">" + jQuery(playerIcon).text() + "</td><td><a id=\"add_namelink_" + player.id + "\" class=\"altlink\" onclick=\"draftPlayer('" + player.id + "')\">" + player.playerName + " (" + player.realClub + ")</a><br/>$" + player.worth + "</td><td width=\"20px\"><a class=\"altlink\" id=\"add_imglink_" + player.id + "\" onclick=\"draftPlayer('" + player.id + "')\"><div class=\"addplayer\" ></div></a></td></tr></table>";
		return playerHtml;
		*/
		return createPlayerSearchRow(player, false, true);
		
	}
];

var playerCellWritersForPreferences = [
	function (player) {
		
		return createPlayerSearchRow(player, true, false);
		
	}
];

var playerCellWritersForDraft = [
	function (player) {
		
		return createPlayerSearchRow(player, false, false);
		
	}
];

function createPlayerSearchRow(player, addAsPreferenceOnly, showPlayerWorth) {
	
	var table = document.createElement("table");
	jQuery(table).addClass("playersearch base");
	
	jQuery(table).mouseover(function () { highlightRow(table); });
	jQuery(table).mouseout(function () { unhighlightRow(table); });
	
	var tbody = document.createElement("tbody");
	table.appendChild(tbody);
	
	var tr = document.createElement("tr");
	tbody.appendChild(tr);
	
	var tdImage = document.createElement("td");
	tr.appendChild(tdImage);
	jQuery(tdImage).addClass("imagecol");
	tdImage.appendChild(createPlayerIcon(player));
	
	var tdLabel = document.createElement("td");
	tr.appendChild(tdLabel);
	
	var tdLink = document.createElement("td");
	tr.appendChild(tdLink);
	tdLink.setAttribute("width", "20px");
	
	//proxy for playerId is passed as param
	function draftPlayerProxy(playerId) {
		return function () { draftPlayer(playerId); }; 
	}
	
	if (player.available) {
		
		table.setAttribute("title", "Click to add player");
		
		var nameLink = document.createElement("a");
		tdLabel.appendChild(nameLink);
		nameLink.setAttribute("id", "add_namelink_" + player.id);
		jQuery(nameLink).addClass("altlink");
		
		if (player.rookie) {
			jQuery(nameLink).text(player.playerName + " (" + player.realClub + ") - rookie");
		} else {
			jQuery(nameLink).text(player.playerName + " (" + player.realClub + ")");
		}
		
		if (showPlayerWorth) {
			tdLabel.appendChild(document.createElement("br"));
			jQuery(tdLabel).append("$" + player.worth);
		}
		
		var imgLink = document.createElement("a");
		tdLink.appendChild(imgLink);
		imgLink.setAttribute("id", "add_imglink_" + player.id);
		jQuery(imgLink).addClass("altlink");		
		
		var addImgDiv = document.createElement("div");
		imgLink.appendChild(addImgDiv);
		jQuery(addImgDiv).addClass("addplayer");		

		if (addAsPreferenceOnly) {
			jQuery(nameLink).click(addDraftPreferenceProxy(player.id));
			jQuery(imgLink).click(addDraftPreferenceProxy(player.id));	
		} else {
			jQuery(nameLink).click(draftPlayerProxy(player.id));
			jQuery(imgLink).click(draftPlayerProxy(player.id));					
		}
		
	} else {
		table.setAttribute("title", "Not Available");
		jQuery(tdLabel).addClass("disabled");
		jQuery(tdLabel).text(player.playerName + " (" + player.realClub + ") - not available");
	}

	return table;
	
}

function draftPlayerProxy(playerId) {
	return function() {draftPlayer(playerId);};
}

function addDraftPreferenceProxy(playerId) {
	return function() {addDraftPreference(playerId);};
}

/***** Player *****/
function createPlayerIcon(player) {

	var playerDiv = document.createElement("div");
	jQuery(playerDiv).addClass("player");
	
	var imageDiv = document.createElement("div");
	jQuery(imageDiv).addClass("squadmember_image");
	jQuery(imageDiv).addClass("realClub_" + player.realClub);
	
	var labelDiv = document.createElement("div");
	jQuery(labelDiv).addClass("positiongroup_label");

	playerDiv.appendChild(imageDiv);
	playerDiv.appendChild(labelDiv);

	if (player.positionGroupSymbols != null) {
		var positionGroupLabel = document.createElement("label");
		positionGroupLabel.setAttribute("title", player.positionGroupDesc);
		jQuery(positionGroupLabel).text(player.positionGroupSymbols);
		labelDiv.appendChild(positionGroupLabel);
	}
	
	return playerDiv;
}
