// Check fields for errors
function checkForErrors(errors){
	var fields = Array();
	var fields = errors.split(',');
	var count = 0;
	for(var i=0;i<fields.length;i++){
		var field = document.getElementById(fields[i]+'Error').innerHTML;
		if(field != ""){
			count++;
		}
	}
	if(count > 0){
		return false;
	} else {
		return true;
	}
}


//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//                                         Field Validation                                                                     //
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

// Make sure variable is a number
function validateNumber(field,num){
	if(num != ""){
		var numAlert = "*This is not a valid number*";
		var ValidChars = "0123456789.";
		var Char;
		var decimal = 0;
		var count = 0;
		for (i = 0; i < num.length; i++){ 
		   Char = num.charAt(i);
		   if(Char == '.'){
		   	  decimal++;
		   }
		   if (ValidChars.indexOf(Char) != -1){
			  count++;
		   }
		}
		if(count != num.length || decimal > 1){
			document.getElementById(field+"Error").innerHTML = numAlert;
		} else {
			document.getElementById(field+"Error").innerHTML = "";
		}
    } else {
    	validateField(field,num);
    }
}
// Validate a 4-digit year value
function validateYear(field,year){
	var yearAlert = "*You must use a 4-digit year value*";
	if(year != ""){
		if(year != parseInt(year) || year.length != 4){
			document.getElementById(field+"Error").innerHTML = yearAlert;
		} else {
			document.getElementById(field+"Error").innerHTML = "";
		}
	}
}
// Check for empty fields
function validateField(field,value){
	if(value == ""){
		var fieldAlert = "*You must complete this field*";
		document.getElementById(field+"Error").innerHTML = fieldAlert;
		return false;
	} else {
		document.getElementById(field+"Error").innerHTML = "";
		return true;
	}
}
// Validate email address
function validateEmail(field,value){
	if (value != ""){
		var emailAlert = "*This is not a valid email address*";
		var apos=value.indexOf("@");
		var dotpos=value.lastIndexOf(".");
		if (apos<1||dotpos-apos<2){
			document.getElementById(field+"Error").innerHTML=emailAlert;
			return false;
		} else {
			document.getElementById(field+"Error").innerHTML="";
			return true;
		}
	}
}

// Check to see if user ID is correct length and that it contains no illegal characters then passes to database check function
function validateUserLogin(field,value){
	if(value != ""){
		var userLoginAlert1 = "*Your User ID must be between 5 and 15 characters long*";
		var userLoginAlert2 = "*Your User ID may only contain letters, numbers or underscores _*";
		var illegalChars = /\W/;
		if(value.length < 5 || value.length > 15){
			document.getElementById(field+"Error").innerHTML = userLoginAlert1;
			return false;
		} else if(illegalChars.test(value)){
			document.getElementById(field+"Error").innerHTML = userLoginAlert2;
			return false;
		} else {
			document.getElementById(field+"Error").innerHTML = "";
			checkForLoginID(field,value);
			return true;
		}
	}
}

// Check to see if the passwords contain any illegal characters and are the same
function validatePassword(field1,value1,field2,value2){
	if(value1 != "" && value2 != ""){
		var passAlert1 = "*Your password may only contain<br>letters, numbers or underscores _*";
		var passAlert2 = "*Your passwords do not match.<br>Please retype them*";
		var passAlert3 = "*Your password must be between<br>5 and 15 characters long*";
		var illegalChars = /\W/;
		// Check for illegal characters
		if(illegalChars.test(value1) || illegalChars.test(value2)){
			document.getElementById("userPassError").innerHTML = passAlert1;
			document.getElementById("userPass2Error").innerHTML = passAlert1;
			return false;
		} else if(value1 != value2){
			document.getElementById("userPassError").innerHTML = passAlert2;
			document.getElementById("userPass2Error").innerHTML = passAlert2;
			return false;
		} else if(value1.length < 5 || value1.length > 15 || value2.length < 5 || value2.length > 15){
			document.getElementById("userPassError").innerHTML = passAlert3;
			document.getElementById("userPass2Error").innerHTML = passAlert3;
			return false;
		} else {
			document.getElementById("userPassError").innerHTML = "";
			document.getElementById("userPass2Error").innerHTML = "";
			return true;
		}
	}
}
////////////////////////////////////////////////////////////////
//                   Begin Phone functions                    //
////////////////////////////////////////////////////////////////
// Declaring required variables
var digits = "0123456789";
// non-digit characters which are allowed in phone numbers
var phoneNumberDelimiters = "()- ";
// characters which are allowed in international phone numbers
// (a leading + is OK)
var validWorldPhoneChars = phoneNumberDelimiters + "+";
// Minimum no of digits in an international phone no.
var minDigitsInIPhoneNumber = 10;

function isInteger(s)
{   var i;
    for (i = 0; i < s.length; i++)
    {   
        // Check that current character is number.
        var c = s.charAt(i);
        if (((c < "0") || (c > "9"))) return false;
    }
    // All characters are numbers.
    return true;
}

function stripCharsInBag(s, bag)
{   var i;
    var returnString = "";
    // Search through string's characters one by one.
    // If character is not in bag, append to returnString.
    for (i = 0; i < s.length; i++)
    {   
        // Check that current character isn't whitespace.
        var c = s.charAt(i);
        if (bag.indexOf(c) == -1) returnString += c;
    }
    return returnString;
}

function validate(field,phone){
	if(phone != "" || phone !== "" || field == "phone"){
		s=stripCharsInBag(phone,validWorldPhoneChars);
		return (isInteger(s) && s.length >= minDigitsInIPhoneNumber);
	}
}

function validatePhone(field,phone){
	if(field == "phone" || phone != ""){
		var phoneAlert = "*You did not enter a valid phone number*";
		var phoneError = field+"Error";
		if(validate(field,phone) == false){
			document.getElementById(field+"Error").innerHTML=phoneAlert;
			return false;
		} else {
			document.getElementById(field+"Error").innerHTML="";
			return true;
		}
	} else {
		document.getElementById(field+"Error").innerHTML="";
	}
}
////////////////////////////////////////////////////////////////
//                     End Phone functions                    //
////////////////////////////////////////////////////////////////

