/* Softland Technology project: www.sltuk.com : validate.js

Module: 
Author: Mehrdad Vosoughi
Date: 1 April 2004
Version: 1.0
Class Dependencies:
Required parameter: first name, last name, company, address, city,                                   post code, phone number, e-mail, how did you hear, method
optional requirement: fax number, message
Links to: contact_form.html

Description: All the function that will be called from form
			 
			 
-------------------------------------------------------------------------------------
Modifications
-------------------------------------------------------------------------------------
Version			Date			Author				Change

1.0				30/3/2004		Mehrdad Vosoughi	Creation
1.1				29/7/2004		Mohammad Assadi		added password confirmation check

------------------------------------------------------------------------------------*/


/* Function to check the e-mail is valid */
function isEmailAddr(email)
{
  var result = false;
  var theStr = new String(email);
  var index = theStr.indexOf("@");
  if (index > 0)
  {
    var pindex = theStr.indexOf(".",index);
    if ((pindex > index+1) && (theStr.length > pindex+1))
	result = true;
  }
  return result;
}

function validRequired(formField,fieldLabel)
{
	var result = true;
	
	if (formField.value == "")
	{
		alert('Please enter a value for the "' + fieldLabel +'" field.');
		formField.focus();
		result = false;
	}
	
	return result;
}

function allDigits(str)
{
	return inValidCharSet(str," 0123456789");
}

function inValidCharSet(str,charset)
{
	var result = true;

	// Note: doesn't use regular expressions to avoid early Mac browser bugs	
	for (var i=0;i<str.length;i++)
		if (charset.indexOf(str.substr(i,1))<0)
		{
			result = false;
			break;
		}
	
	return result;
}

function validEmail(formField,fieldLabel,required)
{
	var result = true;
	
	if (required && !validRequired(formField,fieldLabel))
		result = false;

	if (result && ((formField.value.length < 3) || !isEmailAddr(formField.value)) )
	{
		alert("Please enter a complete email address in the form: yourname@yourdomain.com");
		formField.focus();
		result = false;
	}
   
  return result;

}

function validNum(formField,fieldLabel,required)
{
	var result = true;

	if (required && !validRequired(formField,fieldLabel))
		result = false;
  
 	if (result)
 	{
 		if (!allDigits(formField.value))
 		{
 			alert('Please enter a number for the "' + fieldLabel +'" field.');
			formField.focus();		
			result = false;
		}
	} 
	
	return result;
}


function validInt(formField,fieldLabel,required)
{
	var result = true;

	if (required && !validRequired(formField,fieldLabel))
		result = false;
  
 	if (result)
 	{
 		var num = parseInt(formField.value,10);
 		if (isNaN(num))
 		{
 			alert('Please enter a number for the "' + fieldLabel +'" field.');
			formField.focus();		
			result = false;
		}
	} 
	
	return result;
}


/* CHecks the fax number is numeric*/
function validtel(formField, fieldLabel)
{
	var result = true;
	if (result)
 	{
 		if (!allDigits(formField.value))
 		{
 			alert('Please enter a number for the "' + fieldLabel +'" field.');
			formField.focus();		
			result = false;
		}
	} 
	
	return result;
}

/*checks the two passwords to see if they correspond*/
function compPass() {

var doc = document.form1;
var pass1 = doc['password'].value; 
var pass2 = doc['passconfirm'].value; 

if (pass1 == pass2) { 
} else { 
alert ("The passwords entered do not match!"); 
doc['password'].value = "";
doc['passconfirm'].value="";
doc['password'].focus();
} 
} 

/*validate postcode*/
function postit(){ //check postcode format is valid
	var result =true;
 test = document.form1.postcode.value; size = test.length
 test = test.toUpperCase(); //Change to uppercase
 while (test.slice(0,1) == " ") //Strip leading spaces
  {test = test.substr(1,size-1);size = test.length
  }
 while(test.slice(size-1,size)== " ") //Strip trailing spaces
  {test = test.substr(0,size-1);size = test.length
  }
 document.form1.postcode.value = test; //write back to form field
 if (size < 3 || size > 8){ //Code length rule
  alert(test + " is not a valid postcode - wrong length");
  document.form1.postcode.focus();
  var result = false;
  }
 if (!(isNaN(test.charAt(0)))){ //leftmost character must be alpha character rule
   alert(test + " is not a valid postcode - cannot start with a number");
   document.form1.postcode.focus();
  var result = false;
}
return result;
}
//  End -->



function validateForm(theForm)
{
	// calls the form from Step 1
	if (!validRequired(theForm.name,"Name"))
		return false;
	if (!validRequired(theForm.surname,"Surname"))
		return false;
	if (!validRequired(theForm.company,"Company"))
		return false;
	if (!validRequired(theForm.address1,"Address"))
		return false;
	if (!validRequired(theForm.city,"City"))
		return false;
	if (!validRequired(theForm.postcode,"Postcode"))
		return false;
	if (!validRequired(theForm.tel_prefix,"Telephone"))
		return false;
	if (!validtel(theForm.tel_prefix,"Telephone"))
		return false;
	if (!validRequired(theForm.telephone,"Telephone"))
		return false;
	if (!validtel(theForm.telephone,"Telephone"))
		return false;
	if (!validRequired(theForm.email,"E-mail"))
		return false;
	if (!validEmail(theForm.email,"E-Mail",true))
		return false;
	if(!validtel(theForm.mobile,"Mobile"))
		return false;
	if (!validtel(theForm.fax_prefix,"Fax"))
		return false;
	if (!validtel(theForm.fax,"Fax"))
		return false;
	// <--------- End
	
	return true;
}

function validateForm2(theForm)
{
	if (!validRequired(theForm.title,"Title"))
		return false;
	if (!validRequired(theForm.name,"Name"))
		return false;
	if (!validRequired(theForm.surname,"Surname"))
		return false;
	if (!validRequired(theForm.company,"Company"))
		return false;
	if (!validRequired(theForm.address1,"Address"))
		return false;
	if (!validRequired(theForm.city,"City"))
		return false;
	if (!validRequired(theForm.postcode,"Postcode"))
		return false;
	if (!validRequired(theForm.tel_prefix,"Telephone"))
		return false;
	if (!validtel(theForm.tel_prefix,"Telephone"))
		return false;
	if (!validRequired(theForm.telephone,"Telephone"))
		return false;
	if (!validtel(theForm.telephone,"Telephone"))
		return false;
	if(!validtel(theForm.mobile,"Mobile"))
		return false;
	if (!validtel(theForm.fax_prefix,"Fax"))
		return false;
	if (!validtel(theForm.fax,"Fax"))
		return false;
	if (!validRequired(theForm.email,"E-mail"))
		return false;
	if (!validRequired(theForm.password,"Password"))
		return false;
	if (!validRequired(theForm.passconfirm,"Password Confirm"))
		return false;
	if (!validEmail(theForm.email,"E-Mail",true))
		return false;
			
	return true;
}
