// JavaScript Document

var global_roster ='';
var global_roster_complete = false;
var global_player = '';
var global_schedule = '';
var global_form_id;
var global_form_obj;
var global_form_count = 0;
var global_last_player = '';
var global_last_game_id = '';
var global_form_request = '';
var global_form_opt = '';

var tab = 1;

function randomString() {
	var chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz";
	var string_length = 8;
	var randomstring = '';
	for (var i=0; i<string_length; i++) {
		var rnum = Math.floor(Math.random() * chars.length);
		randomstring += chars.substring(rnum,rnum+1);
	}
	return randomstring;
}


function pausecomp(millis) 
{
	var date = new Date();
	var curDate = null;
	
	do { curDate = new Date(); } 
	while(curDate-date < millis);
} 


function jsonRosterRequest(team_id,season){
	new Ajax.Request('/api/fetch_team_players.php',
	  {
		method:'get',
		asynchronous: false,
		parameters: {team_id: team_id, season: season},
		onSuccess:	prepareRoster,
		onFailure: function(){ alert('Something went horribly, horribly wrong...') }
	  });
	  
}

function prepareRoster(transport){
	var response = transport.responseText || "no response text";
	var teamplayers2 = response.evalJSON();
	
	var html = '';
	
	var players = teamplayers2['players'];
	for(x=0; x < players.length; x++){
		var player = players[x];
		html += "<option value='"+player['player_id']+"'>" + player['lname'] + ", " + player['fname'] + " (" + player['gradyear'] + ")</option>";
	}
	global_roster = html;
	global_roster_complete = true;
}

//Player Functions
function jsonPlayerRequest(player_id,season){
	new Ajax.Request('/api/fetch_players.php',
	  {
		method:'get',
		asynchronous: false,
		parameters: {player_id: player_id},
		onSuccess:	makePlayer,
		onFailure: function(){ alert('Something went wrong...') }
	  });
	  
}
function makePlayer(transport){
	var response = transport.responseText || "no response text";
	var player = response.evalJSON();
	global_player = player;
}

//Schedule Functions
function jsonTeamSchedule(team_id,season){
	new Ajax.Request('/api/fetch_team_schedule.php',
	  {
		method:'get',
		asynchronous: false,
		parameters: {team_id: team_id, season: season},
		onSuccess:	makeSchedule,
		onFailure: function(){ alert('Something went wrong...') }
	  });
	  
}
function makeSchedule(transport){
	var response = transport.responseText || "no response text";
	var schedule = response.evalJSON();
	global_schedule = schedule;
}
function scheduleSelectMenu(game_id){
	var html ='';
	html += "<option value=''>Select game</option>";
	for(i = 0; i < global_schedule['games'].length; i++){
		var game = global_schedule['games'][i];
		if(game_id == game['gameid']){
			var selected = ' selected ';
		} else {
			var selected = '';
		}
		
		html += "<option value='" + game['gameid'] + "'" + selected + ">" + game['gdate'] + " vs. " + game['oppname'] + "</option>";
	}
	return html;
}

function tableHeader(form_id,opt){
	var str = "<tr valign=\"bottom\" class=\"statHeader statRow\" id='statheader_"+form_id+"'> <th>QC</th>";
		if( opt['r_type'] == 'game' ){
			str += "<th align='center'>Game</th>";
		} else {
			str += "<th align='center'># Games</th>";
		}
		str +="<th valign=\"top\"><a name=\"addplayer\" id=\"addplayer\">Player</a>";
		if(opt['show_add_player']){
				str += "<a title=\"\" href=\"#addplayer\" onclick=\"showMenuModal(); return false;\" id=\"__addplayerlink_"+form_id+"\">Add Player</a>";
		}
		str += "</th>";
		str +="<th>StatType</th>\n              <th>Att./#</th>\n              <th>Comp.</th>\n              <th>Yards</th>\n              <th>Fumble/<br>Int.</th>\n              <th>TDs</th>\n              <th>Long</th>\n              <th>1pt/2pt<br>Conv.</th>\n              <th>FG</th> </tr>";
	return str;
}

// Page helper functions

		function createFormDiv(){
			var d = 'div_formwrapper';
			if( $(d) ){
				return d;
			} else {
				var str ="<div id='div_formwrapper' style='display:none;'>";
					str +="<div id='div_formresults'></div>";
					str +="<div id='div_formexisting'></div>";
					str +="<div id='div_formcontainer'></div>";
					str +="<div id='div_formfooter'><a href='#' class='ajax_button' alt='Add Another Form' onClick=\"showStatForm(); return false;\"/><span>Add Another Form</span></a></div>";
				str +="</div>";
				var b = $$('body')[0];
				b.insert(str);
				return d;
			}
		}
		
		function formCount(){
			var f = $$('#div_formwrapper form.statform');
			return f.length;
		}
		
		function showStatForm(request,opt){
			var forms = new Array;
			
			//Defaults and globals
			if(request) {
				global_form_request = request;
				local_request = request;
			} else {
				local_request = global_form_request;
			}
			
			if(opt) {
				global_form_opt = opt;
				local_opt = opt;
			} else {
				local_opt = global_form_opt;
			}
				
				
			//Count up the existing forms
			global_form_count = formCount();
			if(global_form_count ==0){
				form_opt['header'] = true;
			} else {
				form_opt['header'] = false;			
			}
			
			local_request['player_id'] = 	(global_last_player !=='') ? global_last_player : local_request['player_id'];
			local_request['game_id'] = 		(global_last_game_id !=='') ?  global_last_game_id : local_request['game_id'];
			
			
			var response = createStatEntryForm(local_request,local_opt);
			forms[0] = response['form_id'];
			global_form_id = response['form_id'];
			
			//Create the wrappers
			var div_formwrapper = createFormDiv();
			$('div_formcontainer').insert(response['form_html']);
			
			//Set defaults
			selectMenu('gameid_' +  response['form_id'],global_last_game_id);
			selectMenu('playerid_' +  response['form_id'],global_last_player);
			
			//Show the form
			Modalbox.show( $(div_formwrapper) , {title: 'Enter Stats', height: 200, width: 900});
			Modalbox.resizeToContent();
		}


// End helper

//Variable helper functions


//end variable functions



// Main Function
function createStatEntryForm(request,opt){
	/* Usage
	var request = {
				form_id: '',
				team_id: '486',
				season: '2008',
				player_id: '1',
				game_date: '9/11/2010',
				game_id: '8888',
				total_games: '10',
				r_type: 'game',
				player_select_html:'',
				sequence: '1'
				}
	var opt = {entry_type: 'team'};
	*/
	
	var xajax_handler = 'xajax_testForm';
	
	if(! request['form_id']){
		var form_id = randomString();
	} else {
		var form_id = request['form_id'];
	}
	if(! request['sequence']){
		var sequence = 1;
	}
	
	if(opt['entry_type'] !== 'player'){
	
		if(global_roster==''){
			jsonRosterRequest(request['team_id'],request['season']);
		}
	} else {

		if(global_player==''){
			jsonPlayerRequest(request['player_id'],request['season']);
		}
		
	}
	
	//Check for r_type, request schedule if necessary
	if(request['r_type'] == 'game') {
		if(global_schedule == ''){
			jsonTeamSchedule(request['team_id'],request['season']);
		}
	}
	
	
	//Now build the form
	var form_str = "<div id='dynwrapper_" + form_id + "'>";	
		form_str +="<form action='' method='post' name='statform_" + form_id + "' id='statform_" + form_id + "' autocomplete='off' class='statform' onSubmit=\" xajax_enterStats('"+form_id+"',xajax.getFormValues('statform_"+ form_id +"')); return false;\">";
		form_str += "<input type=\"hidden\" name=\"class\" value=\"1A\" />";
		form_str += "<input type=\"hidden\" name=\"team_id\" id=\"team_id_"+form_id+"\" value='"+request['team_id']+"' />";
		form_str += "<input type=\"hidden\" name=\"teamid\" id=\"teamid_"+form_id+"\" value='"+request['team_id']+"' />";
		form_str += "<input type=\"hidden\" name=\"season\" id=\"season_"+form_id+"\" value='"+request['season']+"' />";
		form_str += "<input type=\"hidden\" name=\"user_id\" id=\"user_id_"+form_id+"\" value='"+request['user_id']+"' />";
		form_str += "<input type=\"hidden\" name=\"gdate\" id=\"gdate_"+form_id+"\" value='"+request['game_date']+"' />";
		if(request['r_type'] == 'game'){
			form_str += "<input type=\"hidden\" name=\"games\" id=\"games_"+form_id+"\" value='"+request['games']+"' />";
		} else {
		}
		form_str += "<input type=\"hidden\" name=\"rtype\" id=\"rtype_"+form_id+"\" value='"+request['r_type']+"' />";
//		form_str += "<input type=\"hidden\" name=\"gameid\" id=\"gameid_"+form_id+"\" value='"+request['game_id']+"' />";
		
		
		//Rows
		form_str += "<table width='98%' border='0' cellspacing='0' cellpadding='2' id='stattable_" + form_id + "'>";
		
		if(opt['header']){
			opt['r_type'] = request['r_type'];
			form_str += tableHeader(form_id,opt);
		}
		
		form_str += "<tr class='statEntryRowInactive' id='statrow_"+form_id+"'>";
		
		//QC cell
		form_str +="<td id=\"qc_"+form_id+"\" class=\"qccell\" style=\"color:#FFFF00;\" align=\"center\" title=\"header=[QC] body=[Click here to check this entry row for potential duplicates in the dabatase.]\">";
		form_str +="<a href=\"javascript: statCheck('"+form_id+"','verbose');\" onmouseover=\"window.status='Change this line for duplication.';\"><img border=\"0\" alt=\"Change this line for duplication.\" id=\"qci_"+form_id+"\" src=\"/images/question_mark.gif\" width=\"15\" height=\"15\"></a>";
		form_str +="</td>";
		
		//Game Menu/Schedule Menu
		form_str +="<td id='schedulecell_"+form_id+"'>";
			if( request['r_type'] == 'game' ) {
				form_str +="<select name='gameid' id='gameid_"+form_id+"' class='statselect'>";
				form_str += scheduleSelectMenu(request['game_id']);
				form_str +="</select>";
			} else {
				form_str += "<input type=\"text\" size='2' name=\"total_games\" id=\"total_games_"+form_id+"\" value='"+request['total_games']+"' />";
			}
		form_str +="</td>";
		
		//Player select
	if(opt['entry_type'] !== 'player'){
		form_str +="<td id='playercell_"+form_id+"'>";
		form_str +="<select class=\"statselect\" name=\"playerid\" size='1' style='width: 150px' id='playerid_"+form_id+"'  tabindex='"+tab+"' onchange=\"checkCheck('"+form_id+"',this.selectedIndex); $('statcat_"+form_id+"').focus(); statCheckResetRow('"+form_id+"');\"><option value=''></option>";
		form_str += global_roster;
		form_str +="</select></td>";
	} else {
		form_str +="<td id='playercell_"+form_id+"'>";
		form_str +="<input type='hidden' name='playerid' id=\"playerid_"+form_id+"\" value='"+request['player_id']+"' />";
		form_str +="<span id='player_name_"+form_id+"'>" + global_player['player']['fname'] + " " + global_player['player']['lname'] + "</span>";
		form_str +="</td>";
		
	}
		tab++;

		//Stat Cat
		form_str +="<td id=\"statcatcell_"+form_id+"\">";
		form_str +="<select class=\"statselect\" name=\"statcat\" style=\"width: 75px\" tabindex='"+tab+"' id=\"statcat_"+form_id+"\" onchange=\"if( $('statcat_"+form_id+"').value=='passing') { $('comp_"+form_id+"').enable();} else {$('comp_"+form_id+"').disable(); }; $('attempt_"+form_id+"').focus(); statCheck('"+form_id+"',\'silent\');\" onblur=\"statCheck('"+form_id+"','silent');\">";
		form_str +="<option value=\"\" selected=\"selected\"></option><option value=\'rushing\'>Rushing</option>\n<option value=\'passing\'>Passing</option>\n<option value=\'receiving\'>Receiving</option>\n<option value=\'preturn\'>Punt Return</option>\n<option value=\'kreturn\'>Kick Return</option>\n<option value=\'punt\'>Punting</option>\n<option value=\'pkick\'>Place Kick/FG/EP</option>\n<option value=\'int\'>Interceptions</option>\n<option value=\'fumble\'>Fumble Recv.</option>";
		form_str +="</select></td>";
		tab++;
		
		//Attempt
		form_str +="<td id=\"attemptcell_"+form_id+"\">"
		form_str +="<input class=\"statform\" name=\"attempt\" autocomplete=\"off\" type=\"text\" id=\"attempt_"+form_id+"\" size=\"5\" maxlength=\"5\" tabindex='"+tab+"' onchange=\"statCheck('"+form_id+"','silent');\">";
		form_str +="</td>";
		tab++;
		
		//Completion
		form_str += "<td id=\"completetioncell_"+form_id+"\"><span id=\"cspan\"> <input name=\"comp\" type=\"text\" autofill=\"off\" autocomplete=\"off\" disabled=\"true\" id=\"comp_"+form_id+"\" size=\"5\" maxlength=\"5\" tabindex='"+tab+"'></span></td>";
		tab++;
		
		//Yards
		form_str += "<td id=\"yardscell_"+form_id+"\">";
		form_str += "<input class=\"statform\" name=\"yards\" autofill=\"off\" autocomplete=\"off\" type=\"text\" id=\"yards_"+form_id+"\" size=\"4\" maxlength=\"6\" tabindex='"+tab+"' onblur=\" if( $('attempt_"+form_id+"').value==1) { $('long_"+form_id+"').value = this.value;};\">";
		form_str +="</td>";
		tab++;
		
		//Fumble
		form_str +="<td id=\"turnovercell_"+form_id+"\">";
		form_str +="<input class=\"statform\" name=\"turnover\" autocomplete=\"off\" type=\"text\" id=\"turnover_"+form_id+"\" size=\"3\" maxlength=\"3\" tabindex='"+tab+"'>";
		form_str +="</td>";
		tab++;
		
		//TDs
		form_str +="<td id=\"tdscell_"+form_id+"\">";
		form_str +="<input class=\"statform\" name=\"tds\" autocomplete=\"off\" type=\"text\" id=\"tds_"+form_id+"\" size=\"2\" maxlength=\"3\" tabindex='"+tab+"'>";
		form_str +="</td>";
		tab++;
		
		//Long
		form_str +="<td id=\"longcell_"+form_id+"\">";
		form_str +="<input class=\"statform\" name=\"long\" autocomplete=\"off\" type=\"text\" id=\"long_"+form_id+"\" size=\"2\" maxlength=\"3\" tabindex='"+tab+"'>";
		form_str +="</td>";
		tab++;
		
		//Extra Point
		form_str +="<td id=\"epcell_"+form_id+"\">";
		form_str +="<input class=\"statform\" name=\"ep1\" autocomplete=\"off\" type=\"text\" id=\"ep1_"+form_id+"\" size=\"1\" maxlength=\"2\" tabindex='"+tab+"'>/";
		tab++
		form_str +="<input class=\"statform\" name=\"ep2\" type=\"text\" id=\"ep2_"+form_id+"\" size=\"1\" maxlength=\"2\" tabindex='"+tab+"'>";
		form_str +="</td>";
		tab++
		
		//FG
		form_str +="<td id=\"fgcell_"+form_id+"\">";
		form_str +="<input class=\"statform\" name=\"fg\" autocomplete=\"off\" type=\"text\" id=\"fg_"+form_id+"\" size=\"1\" maxlength=\"2\" tabindex='"+tab+"'>";
		form_str +="</td>";
		tab++;
		
		//Entry Button
		form_str +="<td>";
		//form_str +="<input value='Add' type='button' onClick=\""+ xajax_handler + "(xajax.getFormValues('statform_"+ form_id +"'));\" />";
		form_str +="<input value='Add' type='button' onClick=\"xajax_enterStats('"+form_id+"',xajax.getFormValues('statform_"+ form_id +"'));\" />";
		form_str +="</td>";
		
		//end entry row
		form_str +="</tr>";
		
		//QC row
		form_str +="<tr id=\"confirmRow_"+form_id+"\" class=\"confirmRow\" style=\"display:none;\">";
		form_str +="<td><a href=\"#\" onClick=\"statCheckClose('"+form_id+"'); return false;\">Close</a></td>";
		form_str +="<td colspan=\"8\" id=\"confirmCell_"+form_id+"\" class=\"confirmCellx\">&nbsp;</td>";
		form_str +="</tr>";
		
		//end table & form>
		form_str +="</table></form>";
		
		//Ajax status div
		form_str +="<div id='status_"+form_id+"'></div>";
		
		//End Container
		form_str +="</div>";
		
		var response = {form_id: form_id, form_html: form_str};
	
	return response;

}
