/*
* Form validation functions
*
*/

/*
 * A simple email validation script
 */
function isValidEmail(str) {
   return (str.indexOf(".") > 2) && (str.indexOf("@") > 0);
}


function isValidPhoneNumber(str) {
	
	var contain_lowercase_letter = /[a-z]/; 
	var contain_uppercase_letter = /[A-Z]/; 

	if ((contain_lowercase_letter.test(str)) || (contain_uppercase_letter.test(str))){
		return false;
	} else 
		return true;
}

/*
 *
  * Has a value been entered
  */
function validate_required(field,alerttxt){
	with (field){
		if (value==null||value==""){
			alert(alerttxt);
			return false;}
		else {
			return true
		}
	}
}

function value_entered(field){
	with (field){
		if (value==null||value==""){
			return false;}
		else {
			return true
		}
	}
}

function validate_request_form(thisform){

	with (thisform){
		//alert(hid_max_requests.value);
		for (i=1; i < hid_max_requests.value; i++){
			//alert(i);
			if ((value_entered(eval('txt_firstname'+i))==true) || (value_entered(eval('txt_lastname'+i))==true) || (value_entered(eval('txt_email'+i))==true)){
				
				if (validate_required(eval('txt_firstname'+i),"Please enter the first name")==false){
					eval('txt_firstname'+i).focus();
					return false;
				}
				
				if (validate_required(eval('txt_lastname'+i),"Please enter the last name")==false){
					eval('txt_lastname'+i).focus();
					return false;
				}
				
				if (validate_required(eval('txt_email'+i),"You have entered an incorrect email and password combination.\nPlease try again.")==false){
					eval('txt_email'+i).focus();
					return false;
				}
				
				var email = eval('txt_email'+i).value;
				
				if (!isValidEmail(email)){
					alert("Please enter a valid email address.");
					eval('txt_email'+i).focus();
					return false;
				}
				
				var illegalChars= /[\(\)\<\>\,\;\:\\\/\"\[\]]/
				if (email.match(illegalChars)) {
				   alert("Please enter a valid email address.");
					eval('txt_email'+i).focus();
					return false;
				}
				
				
			}
		}
	}

}

function validate_contact_solver_form(thisform){

	with (thisform){
		
		if (validate_required(txt_name,"Please enter your name")==false){
			txt_name.focus();
			return false;
		}
		
		if (validate_required(txt_email,"Please enter your email address.")==false){
			txt_email.focus();
			return false;
		}
		
		var email = txt_email.value;
		
		if (!isValidEmail(email)){
			alert("Please enter a valid email address.");
			txt_email.focus();
			return false;
		}
		
		var illegalChars= /[\(\)\<\>\,\;\:\\\/\"\[\]]/
		if (email.match(illegalChars)) {
		   alert("Please enter a valid email address.");
			txt_email.focus();
			return false;
		}
		
		if (validate_required(txt_message,"Please enter a message")==false){
			txt_message.focus();
			return false;
		}
	}
	tb_remove();
}

function validate_share_with_friend_form(thisform){

	with (thisform){
		
		if (validate_required(txt_name,"Please enter your name")==false){
			txt_name.focus();
			return false;
		}
		
		if (validate_required(txt_friend_name,"Please enter your friend's name")==false){
			txt_friend_name.focus();
			return false;
		}
		
		if (validate_required(txt_friend_email,"Please enter your friend's email address.")==false){
			txt_friend_email.focus();
			return false;
		}
		
		var email = txt_email.value;
		
		if (!isValidEmail(email)){
			alert("Please enter a valid email address.");
			txt_email.focus();
			return false;
		}
		
		var illegalChars= /[\(\)\<\>\,\;\:\\\/\"\[\]]/
		if (email.match(illegalChars)) {
		   alert("Please enter a valid email address.");
			txt_email.focus();
			return false;
		}
		
		if (validate_required(txt_message,"Please enter a message")==false){
			txt_message.focus();
			return false;
		}
	}
	tb_remove();
}

function validate_my_profile_form(thisform){

	with (thisform){

		
		// has firstname or lastname and company name been entered
		if (((txt_Solver_firstname.value != '') || (txt_Solver_lastname.value != '')) && (txt_Company_name.value != '')){
			alert('Please enter either first name and last name OR a company name.');
			txt_Solver_firstname.focus();
			return false;
		}

		// has firstname or lastname and company name NOT been entered (i.e none has been entered)
		if ((txt_Solver_firstname.value == '') && (txt_Solver_lastname.value == '') && (txt_Company_name.value == '')){
			alert('Please enter a solution provider name OR a company name.');
			txt_Solver_firstname.focus();
			return false;
		}
		
		// has a company name not been entered
		if (txt_Company_name.value == ''){
			
			// has either a first name or last name been entered
			if ((txt_Solver_firstname.value != '') || (txt_Solver_lastname.value != '')){
			
				if (validate_required(txt_Solver_firstname,"Please enter a first name")==false){
					txt_Solver_firstname.focus();
					return false;
				}
				
				if (validate_required(txt_Solver_lastname,"Please enter a last name")==false){
					txt_Solver_lastname.focus();
					return false;
				}
				
			}
		}
		
		
		if (!isValidPhoneNumber(txt_Phone.value)){
			alert("Please enter a valid phone number");
			txt_Phone.focus();
			return false;
		}
		
		if (!isValidPhoneNumber(txt_Fax.value)){
			alert("Please enter a valid fax number");
			txt_Fax.focus();
			return false;
		}
		
	}
}


function validate_rating_form(thisform){

	with (thisform){
		
		if (validate_required(rad_solution_rating,"Please rate the solution")==false){
			txt_name.focus();
			return false;
		}
		
	}
	tb_remove();
}


function validate_login_form(thisform){
	//alert('hi');
	with (thisform){
		
		if (validate_required(txt_email,"Please enter your email address.")==false){
			txt_email.focus();
			return false;
		}
		
		var email = txt_email.value;
		
		if (!isValidEmail(email)){
			alert("Please enter a valid email address.");
			txt_email.focus();
			return false;
		}
		
		if (validate_required(txt_password,"Please enter a password")==false){
			txt_password.focus();
			return false;
		}

	}
		
}
/*
 *
  * Validate the form
  */
function validate_form(thisform,formname){
	
	with (thisform){
		
		// exclude this form
		if (formname != "frmChangePassword"){
			

			if (validate_required(txt_firstname,"Please enter your first name.")==false){
				txt_firstname.focus();
				return false;
			}
			
			if (validate_required(txt_lastname,"Please enter your last name.")==false){
				txt_lastname.focus();
				return false;
			}
			
			if (validate_required(txt_email,"Please enter your email address.")==false){
				txt_email.focus();
				return false;
			}
			
			var email = txt_email.value;
			
			if (!isValidEmail(email)){
				alert("Please enter a valid email address.");
				txt_email.focus();
				return false;
			}
			
			var illegalChars= /[\(\)\<\>\,\;\:\\\/\"\[\]]/
			if (email.match(illegalChars)) {
			   alert("Please enter a valid email address.");
				txt_email.focus();
				return false;
			}
		}
		
		
		if ((formname == "frmChangePassword") || (formname == "frmDashboardRegistration")){
			
			if (validate_required(txt_firstname,"Please enter your first name.")==false){
				txt_firstname.focus();
				return false;
			}
			
			if (validate_required(txt_lastname,"Please enter your last name.")==false){
				txt_lastname.focus();
				return false;
			}
			
			if (validate_required(txt_password_new,"Please enter a password")==false){
				txt_password_new.focus();
				return false;
			}
			
			if (validate_required(txt_password_verify,"Please verify your password")==false){
				txt_password_verify.focus();
				return false;
			}
			
			if (txt_password_new.value != txt_password_verify.value){
				alert("Please type the same password twice.");
				txt_password_new.focus();
				return false;
			}
			
			if (txt_password_new.value.length < 6){
				alert("Please enter at least a 6 character for your password.");
				txt_password_new.focus();
				return false;
			}
			
			var illegalPasswordChars = /[\W_]/; // allow only letters and numbers
			if (illegalPasswordChars.test(txt_password_new.value)) {
				alert("Please enter only letters and numbers in your password.");
				txt_password_new.focus();
				return false;
			}
			
			/*
			// check if the password contain a number
			var contain_number = /[0-9]/; 
			if (!contain_number.test(txt_password_new.value)) {
				alert("Please enter a mix of letters and numbers (0-9) in your password."); 
				txt_password_new.focus();
				return false; 
			} 
			
			// check if the password contain a letter
			var contain_lowercase_letter = /[a-z]/; 
			var contain_uppercase_letter = /[A-Z]/; 
			if ((!contain_lowercase_letter.test(txt_password_new.value)) && (!contain_uppercase_letter.test(txt_password_new.value))){
				alert("Please enter a mix of letters and numbers (0-9) in your password."); 
				txt_password_new.focus();
				return false; 
			} 
			*/
			
		}
		
		// some additional checks for this form
		if (formname == "frmDashboardRegistration"){
						
			if (validate_required(txt_security_code,"Please enter the code you see in the box in the field called 'Enter Security Code'.")==false){
				txt_security_code.focus();
				return false;
			}
			
			if (!chkTerms.checked){
				alert("You must agree to the terms of use and privacy policy by checking the checkbox, before we can register your account.");
				return false;
			}
		}
	}
}

function validateDeleteRequestForm(){
	//return confirm('sure?');
	return confirm('Are you sure you want to delete this request?');
}
