function validateQuery(query)
{
	val = query.value;
	val = val.replace("*", "");
	if (val.length < 3) {
		alert('Query must have at least 3 non-wildcard characters.');
		return false;
	}
	return true;
}

function user_Validator(userform)
{
	firstname = userform.firstname.value.replace(/^\s+|\s+$/g, '');
	surname = userform.surname.value.replace(/^\s+|\s+$/g, '');
	email = userform.email.value.replace(/^\s+|\s+$/g, '');
	
	if (firstname == "" || surname == "" || email == "")
	{
		alert('You must enter a value in firstname, surname and email fields.');
		return false;
	}
	
	if (!email.match("[a-z_0-9-'\+~]+(\.[a-z_0-9-'\+~]+)*@([a-z_0-9-]+\.)+[a-z]{2,7}"))
	{
		alert('You must enter a valid email address.');
		return false;
	}
	
	pwd = userform.pwd.value.replace(/^\s+|\s+$/g, '');
	pwd2 = userform.pwd2.value.replace(/^\s+|\s+$/g, '');
	
	if (pwd != "" || pwd2 != "") {
		if (pwd != pwd2	) {
			alert('The password your entered do not match.');
			return false;
		}
		
		if (pwd.length < 8 || pwd.length > 20) {
			alert('Passwords should be between 8 and 20 chars in length.');
			return false;			
		}
		
	}
	
	userform.firstname.value = firstname;
	userform.surname.value = surname;
	userform.email.value = email;
	userform.pwd.value = pwd;
	
	return confirm("Are you sure you wish to update your details?");
}



function formContactUsValidator(form)
{
  if (form.name.value == "" || form.email.value == "" || form.message.value == "")
  {
    alert("Please ensure all fields are filled in.");
    return (false);
  }

	temp = form.name.value;
  if (temp.length > 30)
  {
    alert("Name too long (max 30 chars).");
    return (false);
  }

	temp = form.email.value;
  if (temp.length > 30)
  {
    alert("Email too long (max 50 chars).");
    return (false);
  }

	if (!temp.match("[a-z_0-9-'\+~]+(\.[a-z_0-9-'\+~]+)*@([a-z_0-9-]+\.)+[a-z]{2,7}"))
	{
		alert('You must enter a valid email address.');
		return false;
	}
	  
	temp = form.message.value;
  if (temp.length > 400)
  {
    alert("Message too long (max 400 chars) (currently "+temp.length+" chars).");
    return (false);
  }
      
  return (true);
}


function player_Validator(userform)
{
	ssid = userform.ssid.value.replace(/\s+/g, '');
	firstname = userform.firstname.value.replace(/^\s+|\s+$/g, '');
	surname = userform.surname.value.replace(/^\s+|\s+$/g, '');
	
	day = userform.dofb_day.value;
	month = userform.dofb_month.value;
	year = userform.dofb_year.value;
	
	if (ssid == "" || firstname == "" || surname == "")
	{
		alert('You must enter a value in spreadsheetid, firstname and surname.');
		return false;
	}
	
	userform.ssid.value = ssid;
	userform.firstname.value = firstname;
	userform.surname.value = surname;

	userform.birthplace.value = userform.birthplace.value.replace(/^\s+|\s+$/g, '');
	userform.nationality.value = userform.nationality.value.replace(/^\s+|\s+$/g, '');
	userform.position.value = userform.position.value.replace(/^\s+|\s+$/g, '');
	userform.signedfrom.value = userform.signedfrom.value.replace(/^\s+|\s+$/g, '');
	userform.soldto.value = userform.soldto.value.replace(/^\s+|\s+$/g, '');
	userform.otherclubs.value = userform.otherclubs.value.replace(/^\s+|\s+$/g, '');

	if (day == 0 || month == 0 || year == 0) {
		userform.dofb.value = "";
	}
	
	if (userform.newplayer.value) {
		return confirm("Are you sure you wish to create this new player?");
	} else {
		return confirm("Are you sure you wish to update the details?");
	}
}

function manager_Validator(userform)
{
	ssid = userform.ssid.value.replace(/\s+/g, '');
	firstname = userform.firstname.value.replace(/^\s+|\s+$/g, '');
	surname = userform.surname.value.replace(/^\s+|\s+$/g, '');
	
	if (ssid == "" || firstname == "" || surname == "")
	{
		alert('You must enter a value in spreadsheetid, firstname and surname.');
		return false;
	}
	
	userform.ssid.value = ssid;
	userform.firstname.value = firstname;
	userform.surname.value = surname;
	
	if (userform.newmanager.value) {
		return confirm("Are you sure you wish to create this new manager?");
	} else {
		return confirm("Are you sure you wish to update the details?");
	}
}

function referee_Validator(userform)
{
	ssid = userform.ssid.value.replace(/\s+/g, '');
	firstname = userform.firstname.value.replace(/^\s+|\s+$/g, '');
	surname = userform.surname.value.replace(/^\s+|\s+$/g, '');
	
	if (ssid == "" || firstname == "" || surname == "")
	{
		alert('You must enter a value in spreadsheetid, firstname and surname.');
		return false;
	}
	
	userform.ssid.value = ssid;
	userform.firstname.value = firstname;
	userform.surname.value = surname;
	
	if (userform.newreferee.value) {
		return confirm("Are you sure you wish to create this new referee?");
	} else {
		return confirm("Are you sure you wish to update the details?");
	}
}

function opposition_Validator(userform)
{
	name = userform.name.value.replace(/^\s+|\s+$/g, '');
	userform.country.value = userform.country.value.replace(/^\s+|\s+$/g, '');
	
	if (name == "")
	{
		alert('You must enter a value in name.');
		return false;
	}
	
	userform.name.value = name;
	
	if (userform.newopposition.value) {
		return confirm("Are you sure you wish to create this new opponent?");
	} else {
		return confirm("Are you sure you wish to update the details?");
	}
}

function competition_Validator(userform)
{
	name = userform.name.value.replace(/^\s+|\s+$/g, '');
	
	if (name == "")
	{
		alert('You must enter a value in name.');
		return false;
	}

	userform.name.value = name;
	
	if (userform.newcompetition.value) {
		return confirm("Are you sure you wish to create this new competition?");
	} else {
		return confirm("Are you sure you wish to update the details?");
	}
}

function game_Validator(userform)
{
	maxscore = 15;
	maxsubs = 3;
	maxlineup = 11;
	maxyellow = 8;
	maxred = 4;
	err = "";

//Game Details
	ssid = userform.ssid.value.replace(/^\s+|\s+$/g, '');
	season = userform.season.value;
	comp = userform.comp.value;
	userform.round.value = userform.round.value.replace(/^\s+|\s+$/g, '');
	opp = userform.comp.value;
	venue = userform.venue.value;
	res = userform.res.value;
	goals = userform.s.value;
	against = userform.a.value;
	htgoals = userform.hts.value;
	htagainst = userform.hta.value;
	pos = userform.pos.value.replace(/^\s+|\s+$/g, '');
	att = userform.att.value.replace(/^\s+|\s+$/g, '');
	man1 = userform.man1.value;
	man2 = userform.man2.value;
	userform.notes.value = userform.notes.value.replace(/^\s+|\s+$/g, '');
	userform.notes2.value = userform.notes2.value.replace(/^\s+|\s+$/g, '');
		
	day = userform.played_day.value;
	month = userform.played_month.value;
	year = userform.played_year.value;

	if (ssid == "") {
		err += 'You must enter a value in spreadsheet id.\n';
	}
	else if (!ssid.match(/^\d+$/)) {
		err += 'Spreadsheet id number be a number.\n';
	}
	if (season == 0) {
		err += 'You must select a season.\n';
	}
	if (day == 0 || month == 0 || year == 0) {
		err += 'You must select the date this game was played.\n';
	}
	if (comp == 0) {
		err += 'You must select a competition.\n';
	}
	if (opp == 0) {
		err += 'You must select an opposition.\n';
	}
	if (venue == 0) {
		err += 'You must select a venue.\n';
	}
	if (res == 0) {
		err += 'You must select a result.\n';
	}
	if (goals == -1) {
		err += 'You must select number of goals scored.\n';
	}
	if (against == -1) {
		err += 'You must select number of goals conceded.\n';
	}

	intGoals = parseInt(goals);
	intAgainst = parseInt(against);

	if (parseInt(htgoals) > intGoals) {
		err += 'Number of goals scored at half time cannot be larger than final number scored.\n';
	}
	if (parseInt(htagainst) > intAgainst) {
		err += 'Number of goals conceded at half time cannot be larger than final number conceded.\n';
	}
	if ((res == 'L' && intGoals >= intAgainst) ||
	    (res == 'D' && intGoals != intAgainst) ||
	    (res == 'W' && intGoals <= intAgainst)) {
	  if (!confirm('Final Score does not match result type.\nDo you still will to create the game?')) {
            err += 'Final Score does not match result type.\n';
          }
	}

	if (man1 == 0 && man2 != 0) {
		err += 'Manager 2 is selected but Manager 1 isn\'t.\n';
	}
	else if (man1 != 0 && man1 == man2) {
		err += 'Manager 1 and Manager 2 set to the same value.\n';
	}

	if (att != "" && !att.match(/^\d+$/)) {
		err += 'Attendance must be a whole number (or left blank if unknown).\n';
	}
	if (pos != "" && !pos.match(/^\d+$/)) {
		err += 'New League Pos must be a whole number (or left blank if unknown/not relevant).\n';
	}
						
	if (err != "") {
		alert (err);
		return false;
	}

//Lineup
	var lineup=new Array();
	lineup[0] = userform.player1.value;
	lineup[1] = userform.player2.value;
	lineup[2] = userform.player3.value;
	lineup[3] = userform.player4.value;
	lineup[4] = userform.player5.value;
	lineup[5] = userform.player6.value;
	lineup[6] = userform.player7.value;
	lineup[7] = userform.player8.value;
	lineup[8] = userform.player9.value;
	lineup[9] = userform.player10.value;
	lineup[10] = userform.player11.value;
	lineup.sort(function(a,b){return a - b});
	
	for (i=0; i<maxlineup; i++) {
		if (lineup[i] == 1) {
			alert ("Can't have 'An Own Goal' in the starting lineup!");
			return false;				
		}

		for (j=i+1; j<maxlineup; j++) {
			if (lineup[i] >= 10 && lineup[i] == lineup[j]) {
				alert ("Duplicate players in lineup");
				return false;
			}
		}
	}

//Oncoming Subs
	var subs=new Array();
	subs[0] = userform.sub1.value;
	subs[1] = userform.sub2.value;
	subs[2] = userform.sub3.value;
	subs.sort(function(a,b){return a - b});
	
	for (i=0; i<maxsubs; i++) {
		if (subs[i] == 1) {
			alert ("Can't have 'An Own Goal' as a sub!");
			return false;				
		}
			
		for (j=i+1; j<maxsubs; j++) {
			if (subs[i] >= 10 && subs[i] == subs[j]) {
				alert ("Duplicate players in ongoing subs");
				return false;				
			}
		}
	}

	for (i=0; i<3; i++) {
		for (j=0; j<maxlineup; j++) {
			if (subs[i] >= 10 && subs[i] == lineup[j]) {
				alert ("Oncoming sub is already in starting lineup!");
				return false;				
			}
		}
	}

//Outgoing Subs
	var subsoff=new Array();
	subsoff[0] = userform.off1.value;
	subsoff[1] = userform.off2.value;
	subsoff[2] = userform.off3.value;
	subsoff.sort(function(a,b){return a - b});
	
	for (i=0; i<maxsubs; i++) {
		if (subsoff[i] == 1) {
			alert ("Can't have 'An Own Goal' as an outgoing sub!");
			return false;				
		}
			
		for (j=i+1; j<maxsubs; j++) {
			if (subsoff[i] >= 10 && subsoff[i] == subs[j]) {
				alert ("Duplicate players in outgoing subs");
				return false;				
			}
		}
	}

	for (i=0; i<maxsubs; i++) {
		isFound = 0;
		
		if (subsoff[i] > 0) {
			for (j=0; j<maxlineup; j++) {
				if (subsoff[i] >= 10 && subsoff[i] == lineup[j]) {
					isFound = 1;			
				}
			}
	
			for (j=0; j<maxsubs; j++) {
				if (subsoff[i] >= 10 && subsoff[i] == subs[j]) {
					isFound = 1;
				}
			}
			
			if (!isFound) {
				alert ("Invalid Outgoing sub. They haven't played in this game!");
				return false;
			}
		}
	}

//Yellow
	var yellow=new Array();
	yellow[0] = userform.yellow1.value;
	yellow[1] = userform.yellow2.value;
	yellow[2] = userform.yellow3.value;
	yellow[3] = userform.yellow4.value;
	yellow[4] = userform.yellow5.value;
	yellow[5] = userform.yellow6.value;
	yellow[6] = userform.yellow7.value;
	yellow[7] = userform.yellow8.value;
	
	for (i=0; i<maxyellow; i++) {
		if (yellow[i] == 1) {
			alert ("Can't have 'An Own Goal' getting a yellow card!");
			return false;				
		}
	}

	for (i=0; i<maxyellow; i++) {
		isFound = 0;
		
		if (yellow[i] > 0) {
			for (j=0; j<maxlineup; j++) {
				if (yellow[i] >= 10 && yellow[i] == lineup[j]) {
					isFound = 1;			
				}
			}
	
			for (j=0; j<maxsubs; j++) {
				if (yellow[i] >= 10 && yellow[i] == subs[j]) {
					isFound = 1;
				}
			}
			
			if (!isFound) {
				alert ("Invalid Yellow Card. The player hasn't played in this game!");
				return false;
			}
		}
	}

//Red
	var red=new Array();
	red[0] = userform.red1.value;
	red[1] = userform.red2.value;
	red[2] = userform.red3.value;
	red[3] = userform.red4.value;
	
	for (i=0; i<maxred; i++) {
		if (red[i] == 1) {
			alert ("Can't have 'An Own Goal' getting a red card!");
			return false;				
		}
	}

	for (i=0; i<maxred; i++) {
		isFound = 0;
		
		if (red[i] > 0) {
			for (j=0; j<maxlineup; j++) {
				if (red[i] >= 10 && red[i] == lineup[j]) {
					isFound = 1;			
				}
			}
	
			for (j=0; j<maxsubs; j++) {
				if (red[i] >= 10 && red[i] == subs[j]) {
					isFound = 1;
				}
			}
			
			if (!isFound) {
				alert ("Invalid Red Card. The player hasn't played in this game!");
				return false;
			}
		}
	}

//Scorers
	var scorers=new Array();
	scorers[0] = userform.goal1.value;
	scorers[1] = userform.goal2.value;
	scorers[2] = userform.goal3.value;
	scorers[3] = userform.goal4.value;
	scorers[4] = userform.goal5.value;
	scorers[5] = userform.goal6.value;
	scorers[6] = userform.goal7.value;
	scorers[7] = userform.goal8.value;
	scorers[8] = userform.goal9.value;
	scorers[9] = userform.goal10.value;
	scorers[10] = userform.goal11.value;
	scorers[11] = userform.goal12.value;
	scorers[12] = userform.goal13.value;
	scorers[13] = userform.goal14.value;
	scorers[14] = userform.goal15.value;
	
	goalcount = 0;
	
	for (i=0; i<maxscore; i++) {
		isFound = 0;
		
		if (scorers[i] > 0) {
			goalcount++;
		}
		
		if (scorers[i] >= 10) {
			for (j=0; j<maxlineup; j++) {
				if (scorers[i] >= 10 && scorers[i] == lineup[j]) {
					isFound = 1;			
				}
			}
	
			for (j=0; j<maxsubs; j++) {
				if (scorers[i] >= 10 && scorers[i] == subs[j]) {
					isFound = 1;
				}
			}
			
			if (!isFound) {
				alert ("Invalid Goal. The player hasn't played in this game!");
				return false;
			}
		}
	}

	if (goalcount != goals) {
		alert ("Number of scorers doesn't match number of goals.\n"+goals+" Goals and "+goalcount+" Scorers\nAdd 'unknown' if scorer unknown.");
		return false;
	}
		
	if (userform.newgame.value) {
		return confirm("Are you sure you wish to create this new game?");
	} else {
		return confirm("Are you sure you wish to update the details?");
	}
}

function leaguetable_Validator(userform)
{

	maxteams = 22;
	err = "";
	lastteam = 0;


//Teams
	var teams=new Array();
	teams[0] = userform.team1.value;
	teams[1] = userform.team2.value;
	teams[2] = userform.team3.value;
	teams[3] = userform.team4.value;
	teams[4] = userform.team5.value;
	teams[5] = userform.team6.value;
	teams[6] = userform.team7.value;
	teams[7] = userform.team8.value;
	teams[8] = userform.team9.value;
	teams[9] = userform.team10.value;
	teams[10] = userform.team11.value;
	teams[11] = userform.team12.value;
	teams[12] = userform.team13.value;
	teams[13] = userform.team14.value;
	teams[14] = userform.team15.value;
	teams[15] = userform.team16.value;
	teams[16] = userform.team17.value;
	teams[17] = userform.team18.value;
	teams[18] = userform.team19.value;
	teams[19] = userform.team20.value;
	teams[20] = userform.team21.value;
	teams[21] = userform.team22.value;

	for (i=1; i<maxteams; i++) {
	  if (teams[i] != -1) {
	    lastteam = (i+1);
	  }
	  
		if (teams[i] != -1 && teams[i-1] == -1) {
			alert ("Can't have a blank team in the league!");
			return false;				
		}
	}

	teams.sort(function(a,b){return a - b});

	for (i=0; i<maxteams; i++) {
		for (j=i+1; j<maxteams; j++) {
			if (teams[i] > -1 && teams[i] == teams[j]) {
				alert ("Duplicate teams in league");
				return false;				
			}
		}
	}

//Ssids
	var ssids=new Array();
	ssids[0] = userform.ssid1.value;
	ssids[1] = userform.ssid2.value;
	ssids[2] = userform.ssid3.value;
	ssids[3] = userform.ssid4.value;
	ssids[4] = userform.ssid5.value;
	ssids[5] = userform.ssid6.value;
	ssids[6] = userform.ssid7.value;
	ssids[7] = userform.ssid8.value;
	ssids[8] = userform.ssid9.value;
	ssids[9] = userform.ssid10.value;
	ssids[10] = userform.ssid11.value;
	ssids[11] = userform.ssid12.value;
	ssids[12] = userform.ssid13.value;
	ssids[13] = userform.ssid14.value;
	ssids[14] = userform.ssid15.value;
	ssids[15] = userform.ssid16.value;
	ssids[16] = userform.ssid17.value;
	ssids[17] = userform.ssid18.value;
	ssids[18] = userform.ssid19.value;
	ssids[19] = userform.ssid20.value;
	ssids[20] = userform.ssid21.value;
	ssids[21] = userform.ssid22.value;

	ssids.sort(function(a,b){return a - b});

	for (i=0; i<maxteams; i++) {
		for (j=i+1; j<maxteams; j++) {
			if (ssids[i] && ssids[j] && ssids[i] == ssids[j]) {
				alert ("Duplicate Spreadsheet ids");
				return false;				
			}
		}
	}
				
	return confirm("Are you sure you wish to update the details?");
}
