//This file here to hold all form validation functions to be used for the various forms in this site
function validateUserSignup(form){
	var noError = true;

	if(!form.display_name.value){
		document.getElementById("display_nameLabel").className="formError";
		noError = false;
	} else document.getElementById("display_nameLabel").className="";

	if(!form.new_email.value){
			document.getElementById("emailLabel").className="formError";
			noError = false;
	}	else	document.getElementById("emailLabel").className="";


	if(!form.new_password.value){
		document.getElementById("passwordLabel").className="formError";
		noError = false;
	}	else document.getElementById("passwordLabel").className="";

	if(!form.password2.value){
		document.getElementById("pass2label").className="formError";
		noError = false;
	}	else document.getElementById("pass2label").className="";

	if(!form.first_name.value){
		document.getElementById("first_nameLabel").className="formError";
		noError = false;
	}	else document.getElementById("first_nameLabel").className="";

	if(!form.last_name.value){
		document.getElementById("last_nameLabel").className="formError";
		noError = false;
	}	else document.getElementById("last_nameLabel").className="";

	for(var i=0; !form.gender[i].checked; i++);
	if(!form.gender[i].value){
		document.getElementById("genderLabel").className="formError";
		noError = false;
	}	else document.getElementById("genderLabel").className="";

	if(!form.city.value){
		document.getElementById("cityLabel").className="formError";
		noError = false;
	}	else document.getElementById("cityLabel").className="";

	if(!form.state.value){
		document.getElementById("stateLabel").className="formError";
		noError = false;
	}	else document.getElementById("stateLabel").className="";

	if(!form.zip.value){
		document.getElementById("zipLabel").className="formError";
		noError = false;
	}	else document.getElementById("zipLabel").className="";

	for(var i=0; !form.country.options[i].selected; i++);
	if(!form.country.options[i].value){
		document.getElementById("countryLabel").className="formError";
		noError = false;
	} else document.getElementById("countryLabel").className="";

	if(!form.terms.checked){
		document.getElementById("termsLabel").className="formError";
		noError = false;
	}	else document.getElementById("termsLabel").className="";

	if(!noError)
		alert("Please fix the fields in blue, before running to the next step");
	return noError;
}


function DoConvToKm(floval, unit)
{
	switch(unit)
		{
		case "1": //miles
			return (floval * 1.609344);
			break;
		case "2": //yds
			return (floval * 0.0009144);
			break;
		case "3":	//km
			return floval;
			break;
		case "4":	//m
			return floval * 0.001;
			break;
		default:
			return 0;
		}
}
		
		
function validateRacedetails(form){
//	Date, Start Time, and country are also required fields,
// but in the form's current incarnation,
// these are select boxes with no blank value

	var error=false;
	var rval = false;
	var message = "The Following errors were found in this form.\n";
	message += "Please correct them before trying to save again.\n";
	message += "-------------------------------------\n";

	if (form.name.value== '') {
		message += "Race Name - Please enter the name of the race\n";
		error = true;
	}	
	if (form.sport.value == 0) {
		message += "Sport - Please select a sport\n";
		error = true;
	}	
	if (form.type.value == 0) {
		message += "Type - Please select a Type\n";
		error = true;
	}	

	if (form.city.value == '') {
		message += "City - Please enter the name of the city\n";
		error = true;
	}	
	if (form.state.value == '') {
		message += "State - Please enter the name of the state\n";
		error = true;
	}	
	if (form.run_single.value != "")
		{
		form.run_1.value = form.run_single.value;
		form.run_1_uom.value = form.run_single_uom.value;
		}

	if (form.sport.value > 0)
		{
		switch(form.sport.value)
			{
			case 	"1":	// Triathlon
				if (form.swim.value == "")
					{
					message += "Swim Distance - Please enter the Swim Distance\n";
					error = true;
					}
				if (form.bike.value == "")
					{
					message += "Bike Distance - Please enter the Bike Distance\n";
					error = true;
					}	
				if (form.run_1.value == "")
					{
					message += "Run Distance - Please enter the Run Distance\n";
					error = true;
					}	
				break;
			case 	"2":	// Duathlon
				if (form.run_1.value == "")
					{
					message += "Run 1 Distance - Please enter the Run 1 Distance\n";
					error = true;
					}	
				if (form.bike.value == "")
					{
					message += "Bike Distance - Please enter the Bike Distance\n";
					error = true;
					}	
				if (form.run_2.value == "")
					{
					message += "Run 2 Distance - Please enter the Run 2 Distance\n";
					error = true;
					}	
				break;
			case 	"3":	// Aquathlon
				if (form.swim.value == "")
					{
					message += "Swim Distance - Please enter the Swim Distance\n";
					error = true;
					}	
				if (form.run_1.value == "")
					{
					message += "Run Distance - Please enter the Run Distance\n";
					error = true;
					}	
				break;
			case 	"4":	// Aquabike
				if (form.swim.value == "")
					{
					message += "Swim Distance - Please enter the Swim Distance\n";
					error = true;
					}	
				if (form.bike.value == "")
					{
					message += "Bike Distance - Please enter the Bike Distance\n";
					error = true;
					}	
				break;
			case 	"5":	// Running
				if (form.run_1.value == "")
					{
					message += "Run Distance - Please enter the Run Distance\n";
					error = true;
					}	
				break;
			case 	"6":	// Swimming
				if (form.swim.value == "")
					{
					message += "Swim Distance - Please enter the Swim Distance\n";
					error = true;
					}	
				break;
			case 	"7":	// Cycling
				if (form.bike.value == "")
					{
					message += "Bike Distance - Please enter the Bike Distance\n";
					error = true;
					}	
				break;
			}
		}

	form.distance.value = 0;

	if (form.run_1.value != "")
		{
		var floval = parseFloat(form.run_1.value);
		if (isNaN(floval) || floval < 0)
			{
			message += "Run Distance must be a numerical value\n";
			error = true;
			}	
		else
			{
			form.distance.value = parseFloat(form.distance.value) + parseFloat(DoConvToKm(floval, form.run_1_uom.value));
			}
		}
	if (form.run_2.value != "")
		{
		var floval = parseFloat(form.run_2.value);
		if (isNaN(floval) || floval < 0)
			{
			message += "Run 2 Distance must be a numerical value\n";
			error = true;
			}	
		else
			{
			form.distance.value = parseFloat(form.distance.value) + parseFloat(DoConvToKm(floval, form.run_2_uom.value));
			}
		}
	if (form.swim.value != "")
		{
		var floval = parseFloat(form.swim.value);
		if (isNaN(floval) || floval < 0)
			{
			message += "Swim Distance must be a numerical value\n";
			error = true;
			}	
		else
			{
			form.distance.value = parseFloat(form.distance.value) + parseFloat(DoConvToKm(floval, form.swim_uom.value));
			}
		}
	if (form.bike.value != "")
		{
		var floval = parseFloat(form.bike.value);
		if (isNaN(floval) || floval < 0)
			{
			message += "Bike Distance must be a numerical value\n";
			error = true;
			}	
		else
			{
			form.distance.value = parseFloat(form.distance.value) + parseFloat(DoConvToKm(floval, form.bike_uom.value));
			}
		}
	if (form.distance.value <= 0 && error == false)
			{
			message += "You haven't entered a distance for this race\n";
			error = true;
			}	
	form.uom.value = 3;
	if(error)
		{
		alert(message);
		rval = false;
		}
	else
		{
		document.getElementById("uom").removeAttribute('disabled');
		document.getElementById("distance").removeAttribute('disabled');
		document.getElementById("run_single").removeAttribute('disabled');
		document.getElementById("run_1").removeAttribute('disabled');
		document.getElementById("swim").removeAttribute('disabled');
		document.getElementById("run_2").removeAttribute('disabled');
		document.getElementById("bike").removeAttribute('disabled');
		document.getElementById("run_single_uom").removeAttribute('disabled');
		document.getElementById("run_1_uom").removeAttribute('disabled');
		document.getElementById("swim_uom").removeAttribute('disabled');
		document.getElementById("run_2_uom").removeAttribute('disabled');
		document.getElementById("bike_uom").removeAttribute('disabled');
		rval = true;
		}
	return rval;
}

function validateCardio(){	
	var form = document.forms.cardio;
	var error = false;
	var errora=false;
	var errorb=false;
	var errorc=false;
	var errord=false;
	var message = "The Following errors were found in this form.\n";
	message += "Please correct them before trying to save again.\n";
	message += "-------------------------------------\n";
	for(var i=0; form.time_of_day.options.length; i++)
		if(form.time_of_day.options[i].selected) break;

	if(form.time_of_day.options[i].value==0) {
		message += "Time of Day - Please select a Time of Day\n";
		error = true;
	}
	for(var i=0; form.activity.options.length; i++)
		if(form.activity.options[i].selected) break;

	if(form.activity.options[i].value==0) {
		message += "Activity - Please select an Activity\n";
		error = true;
	}
if(form.routeid.value==0) {
	if(!IsNumeric(form.distance.value) ||  form.distance.value == 0) {
		errorb = true;
		errorc = true;
	}
	
	for(var i=0; form.uom.options.length; i++)
		if(form.uom.options[i].selected) break
	if(form.uom.options[i].value==0) {
		//messageb += "UOM - Please select a UOM\n";
		errorb = true;
		errord = true;
	}
	

	for(var i=0; form.ttc_Hour.options.length; i++)
		if(form.ttc_Hour.options[i].selected) break;
		
	if(form.ttc_Hour.options[i].value==00 ) {
		var hourerror = true;
	}
	for(var i=0; form.ttc_Minute.options.length; i++)
		if(form.ttc_Minute.options[i].selected) break;
	if(form.ttc_Minute.options[i].value==00 ) {
		var minuteerror = true;
	}
	for(var i=0; form.ttc_Second.options.length; i++)
		if(form.ttc_Second.options[i].selected) break;
	if(form.ttc_Second.options[i].value==00 ) {
		var seconderror = true;
	}
	
	if(hourerror && minuteerror && seconderror) {
		errora = true;
	}
}
	if(errorb && errora) {
		message += "Please enter a time to complete or distance and unit of measurement\n";
		error = true;
	}
	if(errord && form.distance.value != '') {
		message += "UOM - Please select a unit of measurement\n";
		error = true;
	}	
	if(errorc && form.distance.value != '') {
		message += "Distance - Must be a numeric value\n";
		error = true;
	}
			
	
	var ischecked = false;
	for(var i=0; i < form.stretching.length; i++){
		if(form.stretching[i].checked){
			ischecked = true;
			break;
		}
	}
	if(!ischecked){
		message += "Stretching - Please choose a stretching option\n";
		error = true;
	}
	var ischecked = false;
	for(var i=0; i < form.workout_rating.length; i++){
		if(form.workout_rating[i].checked){
			ischecked = true;
			break;
		}
	}
	if(!ischecked){
		message += "Workout Rating - Please rate your workout\n";
		error = true;
	}
	
	
	if(error)
		alert(message);
		
	return !error;
}

function validateRoute(){
	var form = document.forms.route;
	var error = false;
	var message = "The Following errors were found in this form.\n";
	message += "Please correct them before trying to save again.\n";
	message += "-------------------------------------\n";
	if(form.name.value=="") {
		message += "Name - can not be blank\n";
		error = true;
	}
	if(form.description.value=="") {
		message += "Description - can not be blank\n";
		error = true;
	}
	if(form.distance.value=="" || form.distance.value < 1 || !IsNumeric(form.distance.value)) {
		message += "Distance - can not be blank, and must be numeric\n";
		error = true;
	}
	for(var i=0; form.uom.options.length; i++)
		if(form.uom.options[i].selected) break;

	if(form.uom.options[i].value==0) {
		message += "UOM - Please select a UOM\n";
		error = true;
	}
	if(error)
		alert(message);
		
	return !error;
}

// This function is used within the validateSets() and validatePower() functions
	function checkExerciseRow(row){
		var error = false;
		var seg = new Array(false,false,false,false,false,false);
	
		for(var i=0; document.getElementById('type'+row).options.length; i++)
			if(document.getElementById('type'+row).options[i].selected) break;
		if(document.getElementById('type'+row).value==0) {
			seg[0] = true;
			error = true;
		}
		for(var i=0; document.getElementById('exercise'+row).options.length; i++)
			if(document.getElementById('exercise'+row).options[i].selected) break;
		if(document.getElementById('exercise'+row).value==0) {
			seg[1] = false;
			error = true;
		}
		
		if(document.getElementById('reps'+row).value == "") {
			seg[2] = true;
			error = true;
		}

		if((document.getElementById('weight'+row).value != "" ) && (document.getElementById('weight'+row).value != "0" )) {
			for(var i=0; document.getElementById('uom'+row).options.length; i++)
				if(document.getElementById('uom'+row).options[i].selected) break;
			
			if(document.getElementById('uom'+row).value==0) {
				seg[4] = true;
				error = true;
			}
		}

		// final check, if they're all empty then return false, nothing has been filled out
		//if(seg[0] && seg[1] && seg[2] && seg[3] && seg[4] && seg[5] && row > 0)	error = false;
		if(seg[0]  && seg[1] && seg[2] && row > 0)	error = false;
		return error;		
	}
	function checkExerciseRowNum(row){
		var error = false;
		var seg = new Array(false,false,false,false,false,false);
		if(document.getElementById('weight'+row).value != "" && !IsNumeric(document.getElementById('weight'+row).value)) {
			seg[3] = true;
			error = true;
		}
		if(document.getElementById('repeat'+row).value != "" && !IsNumeric(document.getElementById('repeat'+row).value)) {
			seg[5] = true;
			error = true;
		}
		if(document.getElementById('reps'+row).value != "" && !IsNumeric(document.getElementById('reps'+row).value)) {
			seg[2] = true;
			error = true;
		}
		// final check, if they're all empty then return false, nothing has been filled out
		//if(seg[0] && seg[1] && seg[2] && seg[3] && seg[4] && seg[5] && row > 0)	error = false;
		if( seg[3] && seg[2] && seg[5])	error = false;
		return error;		
	}

	function validateSets(){
		var form = document.forms.sets;
		var error = false;
		var message = "The Following errors were found in this form.\n";
		message += "Please correct them before trying to save again.\n";
		message += "-------------------------------------\n";
		if(form.name.value=="") {
			message += "Set Name - can not be blank\n";
			error = true;
		}
		var temp1 = '';
		var temp2 = '';

		for(var index = 0; index < 15; index++){
			if(document.getElementById('toggler'+index).value == 1) {
				//it is active, check to ensure all fields are filled out
				temp1 = checkExerciseRow(index);
				temp2 = checkExerciseRowNum(index);
			}
		}
		if(temp1){
			message += "Exercise Set - Please fill out a minimum of category and reps, the first set is required\n";
			error = true;
		}	
		if(temp2){
			message += "Exercise Set - For each exercise reps, weight and repeat must be numeric values\n";
			error = true;
		}				
		if(error)
			alert(message);
		return !error;
	}
	
	function validatePower(){
		var form = document.forms.power;
		var error = false;
		var message = "The Following errors were found in this form.\n";
		message += "Please correct them before trying to save again.\n";
		message += "-------------------------------------\n";
		
		for(var i=0; form.time_of_day.options.length; i++)
			if(form.time_of_day.options[i].selected) break;

		if(form.time_of_day.options[i].value==0) {
			message += "Time of Day - Please select a Time of Day\n";
			error = true;
		}
		if(form.name.value=="" && form.save_set.checked == true) {
			message += "Set Name - can not be blank if you want to save this set\n";
			error = true;
		}			
		// take care of the exercise sets
		var temp1 = false;
		var temp2 = false;
		for(i = 0; i < 15; i++){
				//it is active, check to ensure all fields are filled out
			if(document.getElementById('toggler'+i).value == 1){
				temp1 = checkExerciseRow(i);	
				temp2 = checkExerciseRowNum(i);
			}
		}
		if(temp1){
			message += "Exercise Set - Please fill out a minimum of category, exercise and reps, the first set is required\n";
			error = true;
		}
		if(temp2){
			message += "Exercise Set - For each exercise: reps, weight and repeat must be numeric values\n";
			error = true;
		}
		for(var i=0; form.ttc_Hour.options.length; i++)
			if(form.ttc_Hour.options[i].selected) break;
			
		if(form.ttc_Hour.options[i].value==00 ) {
			var hourerror = true;
		}
		for(var i=0; form.ttc_Minute.options.length; i++)
			if(form.ttc_Minute.options[i].selected) break;
		if(form.ttc_Minute.options[i].value==00 ) {
			var minuteerror = true;
		}
		for(var i=0; form.ttc_Second.options.length; i++)
			if(form.ttc_Second.options[i].selected) break;
		if(form.ttc_Second.options[i].value==00 ) {
			var seconderror = true;
		}
		if(hourerror && minuteerror && seconderror) {
			message += "Time to Complete - Please select a time to complete\n";
			error = true;
		}
		var ischecked = false;
		for(var i=0; i < form.stretching.length; i++){
			if(form.stretching[i].checked){
				ischecked = true;
				break;
			}
		}
		if(!ischecked){
			message += "Stretching - Please choose a stretching option\n";
			error = true;
		}
		var ischecked = false;
		for(var i=0; i < form.workout_rating.length; i++){
			if(form.workout_rating[i].checked){
				ischecked = true;
				break;
			}
		}
		if(!ischecked){
			message += "Workout Rating - Please rate your workout\n";
			error = true;
		}	
		if(error)
			alert(message);
			
		return !error;
	}
	
function validateWellness(){
	var form = document.forms.wellness;
	var error = false;
	var message = "The Following errors were found in this form.\n";
	message += "Please correct them before trying to save again.\n";
	message += "-------------------------------------\n";

	var ischecked = false;
	for(var i=0; i < form.nutrition.length; i++){
		if(form.nutrition[i].checked){
			ischecked = true;
			break;
		}
	}
	if(!ischecked){
		message += "Nutrition - Please rate your nutrition\n";
		error = true;
	}
	
	var ischecked = false;
	for(var i=0; i < form.hydration.length; i++){
		if(form.hydration[i].checked){
			ischecked = true;
			break;
		}
	}
	if(!ischecked){
		message += "Hydration - Please rate your hydration\n";
		error = true;
	}
	
	var ischecked = false;
	for(var i=0; i < form.sleep.length; i++){
		if(form.sleep[i].checked){
			ischecked = true;
			break;
		}
	}
	if(!ischecked){
		message += "Sleep - Please rate your sleep\n";
		error = true;
	}	
	
	var ischecked = false;
	for(var i=0; i < form.stress.length; i++){
		if(form.stress[i].checked){
			ischecked = true;
			break;
		}
	}
	if(!ischecked){
		message += "Stress - Please rate your stress\n";
		error = true;
	}	
	
	var ischecked = false;
	for(var i=0; i < form.soreness.length; i++){
		if(form.soreness[i].checked){
			ischecked = true;
			break;
		}
	}
	if(!ischecked){
		message += "Soreness - Please rate your soreness\n";
		error = true;
	}	
	
	var ischecked = false;
	for(var i=0; i < form.fatigue.length; i++){
		if(form.fatigue[i].checked){
			ischecked = true;
			break;
		}
	}
	if(!ischecked){
		message += "Fatigue - Please rate your fatigue\n";
		error = true;
	}
	
	var ischecked = false;
	for(var i=0; i < form.injury.length; i++){
		if(form.injury[i].checked){
			ischecked = true;
			break;
		}
	}
	if(!ischecked){
		message += "Injury - Please rate your injury\n";
		error = true;
	}
	
	var ischecked = false;
	for(var i=0; i < form.sick.length; i++){
		if(form.sick[i].checked){
			ischecked = true;
			break;
		}
	}
	if(!ischecked){
		message += "Illness - Please rate your illness\n";
		error = true;
	}

if(error)
		alert(message);
		
	return !error;
}	

function IsNumeric(strString)
   {
   var strValidChars = "0123456789.";
   var strChar;
   var blnResult = true;

   if (strString.length == 0) return false;

   for (i = 0; i < strString.length && blnResult == true; i++)
      {
      strChar = strString.charAt(i);
      if (strValidChars.indexOf(strChar) == -1)
         {
         blnResult = false;
         }
      }
   return blnResult;
   }

function validateArticleSubmit() {
	var error = false;
	var message = "The Following errors were found in this form.\n";
	message += "Please correct them before trying to submit again.\n";
	message += "-------------------------------------\n";
	
	if($('articleUploadForm').article_name.value == '') {
		message += "An article title is required\n";
		error = true;
	}
	if($('articleUploadForm').article_file.value == '') {
		message += "You need to select an article to submit.\n";
		error = true;
	}
	if(error)
		alert(message);
	
	return !error;
}