var field_error = "#FFAA2A";
var field_noerror = "#FFFFFF";

function validate_send(form_id) {
	var form = document.getElementById(form_id);
	//alert(form.id);
	
	var error = false;
	var msg = "";
	
	error_youremail = ValidateEmail(form.youremail);
	error_friendsemail = ValidateEmail(form.friendsemail);
	
	if(error_youremail || error_friendsemail) {
		msg += "Please input valid email address.\n";
	}
	
	error = error 
		|| error_youremail
		|| error_friendsemail;
		
	if(!error) {
		form.submit();
	} else {
		alert(msg);
	}
}






function validate_login(form_id) {
	var form = document.getElementById(form_id);
	
	var error = false;
	
	/*
	 * validate login_username
	 */
	error_username = ValidateTextfield(form.login_username, "");
	
	/*
	 * vallidate login_password
	 */
	error_password = ValidateTextfield(form.login_password, "");

	error = error 
		|| error_username 
		|| error_password;

	if(!error) {
		form.submit();
	} else {
		alert("Please input your correct username and password.");
	}
}

function validate_register(form_id) {
	var form = document.getElementById(form_id);
	//alert(form.id);
	
	var error = false;
	var msg = "";
	
	/*
	 * validate username
	 */
	error_username = ValidateTextfield(form.username, "");
	
	/*
	 * vallidate password
	 */
	error_password = ValidateTextfield(form.password, "");
	error_confirm_password = ValidateTextfield(form.confirm_password, "");
	error_compare_password = CompareTwoTextfields(form.password, form.confirm_password, form.confirm_password);
	if(error_compare_password) {
		msg += "Please check your password.\n"
	}
	
	/*
	 * validate title, first name, lastname
	 */
	error_title = ValidateTextfield(form.title, "");
	error_firstname = ValidateTextfield(form.firstname, "");
	error_lastname = ValidateTextfield(form.lastname, "");
	
	/*
	 * validate sex
	 */
	error_sex = ValidateDropdown(form.sex);
	
	/*
	 * validate age
	 */
	/*error_age = IsTextfieldNumber(form.age);
	if(error_age) {
		msg += "Please input valid number for your age.\n";
	}*/
	
	/*
	 * validate postcode, country
	 */
	error_postcode = ValidateDropdown(form.postcode, "");
	error_country = ValidateDropdown(form.country, "");
	
	/*
	 * validate email
	 */
	error_email = ValidateEmail(form.email);
	if(error_email) {
		msg += "Please enter a valid email address.\n";
	}
	
	/*
	 * validate cyberpet
	 */
	error_cyberpet = ValidateDropdown(form.cyberpet, "");
	
	
	error = error 
		|| error_username 
		|| error_password 
		|| error_confirm_password 
		|| error_compare_password
		|| error_title
		|| error_firstname
		|| error_lastname
		|| error_sex
		//|| error_age
		|| error_postcode
		|| error_country
		|| error_email
		|| error_cyberpet;
	
	//alert(error);
	if(!error) {
		form.submit();
	} else if(msg != "") {
		alert(msg);
	}
}

function CompareTwoTextfields(form1, form2, formError) {
	form1.value = TrimString(form1.value);
	form2.value = TrimString(form2.value);
	if(form1.value != form2.value) {
		formError.style.backgroundColor = field_error;
		return true;
	} else if(form1.value == "") {
		form1.style.backgroundColor = field_error;
	} else if(form2.value == "") {
		form2.style.backgroundColor = field_error;
	} else {
		formError.style.backgroundColor = field_noerror;
		return false;
	}
}

function ValidateTextfield(obj, defaultTxt) {
	//alert(obj.name);
	var error = false;
	
	obj.value = TrimString(obj.value);
	if(obj.value == defaultTxt) {
		error = true;
		obj.style.backgroundColor = field_error;
	} else if(TrimString(obj.value).length == 0) {
		error = true;
		obj.style.backgroundColor = field_error;
	} else {
		obj.style.backgroundColor = field_noerror;
	}

	return error;
}

function ValidateDropdown(obj) {
	if(!obj.value) {
		obj.style.backgroundColor = field_error;
		return true;
	} else {
		obj.style.backgroundColor = field_noerror;
		return false;
	}
}



function ValidateEmail(obj) {
	if(ValidateTextfield(obj, "")) {
		return true;
	} else {
		var val = TrimString(obj.value);
		var tmpRegex = new RegExp("^[A-Za-z0-9\.\-_]+@[A-Za-z0-9\.\-_]+\.[A-Za-z]+$");
		
		if(val.indexOf(".") == -1 || val.indexOf(".") == 0 || val.indexOf(".") == val.length-1) {
			obj.style.backgroundColor = field_error;
			return true;
		} else if(!val.match(tmpRegex)) {
			obj.style.backgroundColor = field_error;
			return true;
		} else {
			obj.style.backgroundColor = field_noerror;
			return false;
		}
	}
}






function IsTextfieldNumber(obj) {
	var val = TrimString(obj.value);
	if(val.length > 0 && IsNumber(val)) {
		obj.style.backgroundColor = field_noerror;
		return false;
	} else {
		obj.style.backgroundColor = field_error;
		return true;
	}
}

function IsNumber(x){
	var result;
	var anum=/(^\d+$)|(^\d+\.\d+$)/;
	if (anum.test(x))
		result=true;
	else{
		//alert("Please input a valid number!");
		result=false;
	}
	return result;
}

function TrimString(str) {
  str = str.replace( /^\s+/g, "" );// strip leading
  return str.replace( /\s+$/g, "" );// strip trailing
}


/******
PHONE FORM
********/

function validateMobileNumber(num)
{
	var re = new RegExp("^[0-9]{11}$");
	if (num.substr(0,2)=="07" && re.exec(num)) {
		return true;
	}else{
		return false;
	}
}



function validate_phone(form_id)
{
	
	
	var form = document.getElementById(form_id);
	var error = false;
	var mobileNumber = validateMobileNumber(form.mobile.value);
	
	if(!mobileNumber)
	{
		alert("> Your mobile number must begin with '07' and have 11 digits\n");
	}else
	{
		form.submit();
	}
	
	
}

/******
FEEDBACK
********/

function ValidateEmailNotMandatory(obj) {
	if(ValidateTextfield(obj, "")) {
		obj.style.backgroundColor = field_noerror;
		return false;
	} else {
		var val = TrimString(obj.value);
		var tmpRegex = new RegExp("^[A-Za-z0-9\.\-_]+@[A-Za-z0-9\.\-_]+\.[A-Za-z]+$");
		
		if(val.indexOf(".") == -1 || val.indexOf(".") == 0 || val.indexOf(".") == val.length-1) {
			obj.style.backgroundColor = field_error;
			return true;
		} else if(!val.match(tmpRegex)) {
			obj.style.backgroundColor = field_error;
			return true;
		} else {
			obj.style.backgroundColor = field_noerror;
			return false;
		}
	}
}

function IsTextfieldNumberNotMandatory(obj) {
	var val = TrimString(obj.value);
	if(val.length == 0) {
		obj.style.backgroundColor = field_noerror;
		return false;
	}
	else if(val.length > 0 && IsNumber(val)) {
		obj.style.backgroundColor = field_noerror;
		return false;
	} else {
		obj.style.backgroundColor = field_error;
		return true;
	}
}


function ValidateRadio(obj) {
	
	var isValid = false;
	
	for (var i=0; i<obj.length-1; i++)
	{
		if(obj[i].checked)
		{
			isValid = true
		}
	}
	
	//alert ("valid="+ isValid)
	
	if(!valid) {
		//obj.style.backgroundColor = field_error;
		return true;
	} else {
		//obj.style.backgroundColor = field_noerror;
		return false;
	}
}



function validate_feedback(form_id)
{
	
	
	
	
	
	
	
	
	var form = document.getElementById(form_id);
	var error = false;
	var error_msg = ""
	
	var favourite_game = form.favourite_game.value;
	//var favourite_game = ValidateRadio(form.favourite_game)

	var difficulty = form.difficulty.value;
	var favourite_thing = form.favourite_thing.value;
	var comments = form.comments.value;
	var age = IsTextfieldNumberNotMandatory(form.age);
	var email = ValidateEmailNotMandatory(form.email)
	var phone = IsTextfieldNumberNotMandatory(form.phone);
	var terms = form.terms
	
	
	

	if(age)
	{
		error_msg += "  > Your age\n" 
	}
	
	
	if (email)
	{
		error_msg += "  > Your email address\n" 
	}
	
	
	if(phone)
	{
		error_msg += "  > Your phone number\n" 
	}
	
	if(terms.checked)
	{
		//terms.style.backgroundColor = field_error;
		terms.parentNode.style.backgroundColor = field_noerror;
	}else
	{
		terms.parentNode.style.backgroundColor = field_error;
		error_msg += "  > You should accept terms and conditions" ;
		
		
	}
	

	if(error_msg != "") {
		alert("Please check in the following field(s):\n" + error_msg);
	} else {
		form.submit();
	}
	
	
	
	
	
	
	
	
	
}





