// Form Validation Script

function validate_required(field,alerttxt)
{
with (field)
{
if (value==null||value=="")
  {alert(alerttxt);return false}
else {return true}
}
}

function validate_dropdown(field,alerttxt)
{
if (field.options(0).selected == true)
  {alert(alerttxt);return false}
else {return true}
}


//SIMPLE FORM
function validate_form_simple(thisform)
{
with (thisform)
{
if (validate_required(realname,"Please provide your name!")==false) {
		realname.focus();
		return false
	} else if (validate_required(email,"Please enter an email address!")==false) {
		email.focus();
		return false
	} else if (prinum.value.length < 11) {
		alert("Please provide a valid telephone number with at least 11 digits.");
		prinum.focus();
		return false
	} else 	if(!(checkTel(prinum.value))){
		alert("Please enter a valid contact number with no letters.");prinum.focus();
		return false
	} else if (validate_dropdown(pritime,"Please select the best time to call!")==false) {
		pritime.focus();
		return false
	} else if (validate_required(cpostcodea,"Please enter your postcode!")==false) {
		cpostcode.focus();
		return false
	} else if(!(post_advanced(cpostcodea.value))){
		cpostcodea.focus();
		return false
	} 
}
}


//QUICK QUESTION
function validate_form_question(thisform)
{
with (thisform)
{

if (validate_required(realname,"Please provide your name!")==false) {
		realname.focus();
		return false
	
	} else if (validate_required(email,"Please provide a valid email address!")==false) {
		email.focus();
		return false
	
	} else 	if(!(checkEmail(email.value))){
		alert("The email format is not valid.");email.focus();
		return false
	
	}		
}
}


function checkEmail(emailStr) {
	var emailPat=/^(.+)@(.+)$/
	var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]"
	var validChars="\[^\\s" + specialChars + "\]"
	var quotedUser="(\"[^\"]*\")"
	var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/
	var atom=validChars + '+'
	var word="(" + atom + "|" + quotedUser + ")"
	var userPat=new RegExp("^" + word + "(\\." + word + ")*$")
	var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$")
	var matchArray=emailStr.match(emailPat)
	if (matchArray==null) return false
	var user=matchArray[1]
	var domain=matchArray[2]
	if (user.match(userPat)==null) return false
	var IPArray=domain.match(ipDomainPat)
	if (IPArray!=null) {
		for (var i=1;i<=4;i++) {
			if (IPArray[i]>255) return false
		}
	    return true
	}
	var domainArray=domain.match(domainPat)
	if (domainArray==null) return false
	var atomPat=new RegExp(atom,"g")
	var domArr=domain.match(atomPat)
	var len=domArr.length
	if (domArr[domArr.length-1].length<2 || domArr[domArr.length-1].length>3) return false
	if (len<2) return false
	return true;
}




//ADVANCED FORM

function validate_form_adv(thisform)
{
with (thisform)
{

// REMEMBER TO TIE UP FIELD NAMES  (email, phone)
if ( validate_dropdown(title,"Please select your title!")==false) {
		title.focus();
		return false
	} else if (validate_required(firstname,"Please provide your first name!")==false) {
		firstname.focus();
		return false
	} else if (validate_required(lastname,"Please provide your last name!")==false) {
		lastname.focus();
		return false
	} else if (prinum.value.length < 11) {
		alert("Please provide a valid telephone number with at least 11 digits.");
		prinum.focus();
		return false
	} else 	if(!(checkTel(prinum.value))){
		alert("Please enter a valid contact number with no letters.");prinum.focus();
		return false
	} else if (validate_dropdown(pritime,"Please select the best time to call!")==false) {
		pritime.focus();
		return false
	} else if (validate_required(email,"Please provide a valid email address!")==false) {
		email.focus();
		return false
	} else 	if(!(checkEmail(email.value))){
		alert("The email format is not valid.");email.focus();
		return false
	} else if (validate_required(padd1,"Please enter the first line of your address!")==false) {
		padd1.focus();
		return false
	} else if (validate_required(ptown,"Please enter your town!")==false) {
		ptown.focus();
		return false
	} else if (validate_required(ppostcode,"Please enter your postcode!")==false) {
		ppostcode.focus();
		return false
	} else if(!(post_advanced(ppostcode.value))){
		ppostcode.focus();
		return false
	} else if (validate_dropdown(protype,"Please select the property type!")==false) {
		protype.focus();
		return false
	} else if (validate_dropdown(beds,"Please select the number of bedrooms!")==false) {
		beds.focus();
		return false
	} else if (validate_required(value,"Please enter estimated property value!")==false) {
		value.focus();
		return false
	} else if (validate_dropdown(pritime,"Please select the best time to call!")==false) {
		pritime.focus();
		return false
	}
	
}
}

// QUICK QUOTE
function validate_form_quick(thisform)
{
with (thisform)
{

if (validate_required(realname,"Please provide your name!")==false) {
		realname.focus();
		return false
	}  
	else if (validate_required(prinum,"Please provide a telephone contact number!")==false) {
		prinum.focus();
		return false
	}
	else if (prinum.value.length < 11) {
		alert("Please provide a valid telephone number with t least 11 digits.");
		prinum.focus();
		return false
	} 
		else 	if(!(checkTel(prinum.value))){
		alert("Please enter a valid contact number with no letters.");prinum.focus();
		return false
	}
		else if (validate_dropdown(besttime,"Please select the best time to call!")==false) {
		besttime.focus();
		return false
	}
	
}
}






// QCFP quick quote
function validate_form_qcfp(thisform)
{
with (thisform)
{

if (validate_required(realname,"Please provide your name!")==false) {
		realname.focus();
		return false
	}  
	else if (validate_required(prinum,"Please provide a telephone contact number!")==false) {
		prinum.focus();
		return false
	}
	else if (prinum.value.length < 11) {
		alert("Please provide a valid telephone number with t least 11 digits.");
		prinum.focus();
		return false
	} 
		else 	if(!(checkTel(prinum.value))){
		alert("Please enter a valid contact number with no letters.");prinum.focus();
		return false
	}
	
	else if (email.value.length > 0) {
     if (!(checkEmail(email.value))){
      alert("The email format is not valid.");
    email.focus();
      return false
    }
}
	
		else if (validate_required(address1,"Please tell us the name or house number of the address of the property to be sold.")==false) {
		address1.focus();
		return false
	}
		else if (validate_required(postcode,"Please tell us the postcode of the property to be sold.")==false) {
		postcode.focus();
		return false
		
	} 		
		else if(!(postit(postcode.value))){
		email.focus();
		return false
			
	}
	
		else if (validate_dropdown(besttime,"Please select the best time to call!")==false) {
		besttime.focus();
		return false
	}
	
}
}






function checkTel(tel) {

var checkOK = "0123456789()- ";
var allValid = true;
for (i = 0;  i < tel.length;  i++)
{
ch = tel.charAt(i);
for (j = 0;  j < checkOK.length;  j++)
	if (ch == checkOK.charAt(j))
		break;
		if (j == checkOK.length)
		{
		allValid = false;
		
		break;
		}
	}
	if (allValid)
		return (true);
	else
		return (false);
	
}

function ToggleEstateAgent() {
	
	try {
		if (document.all.item("currently_on_with_estate_agent_no").checked == true)
			{
				document.all.item("estatetext").style.background = "#ece9d8";
				document.all.item("estatetext").disabled = true;
				document.all.item("estatetext").value = "";
			}
		else
			{
				document.all.item("estatetext").style.background = "#ffffff";
				document.all.item("estatetext").disabled = false;
			}
		}
	catch(err) {
		alert(err)
	}
		
}


function ToggleLoans() {
	
	try {
		if (document.all.item("loans_no").checked == true)
			{
				document.all.item("loan_amount").style.background = "#ece9d8";
				document.all.item("loan_amount").disabled = true;
				document.all.item("loan_amount").value = "";
			}
		else
			{
				document.all.item("loan_amount").style.background = "#ffffff";
				document.all.item("loan_amount").disabled = false;
			}
		}
	catch(err) {
		alert(err)
	}
		
}


function ToggleMortgage() {
	
	try {
		if (document.all.item("mortgage_no").checked == true)
			{
				document.all.item("mortgage_amount").style.display = "none";
				document.all.item("mortgage_amount").disabled = true;
				document.all.item("mortgage_amount").value = "";
			}
		else
			{
				document.all.item("mortgage_amount").style.display = "block";
				document.all.item("mortgage_amount").disabled = false;
			}
		}
	catch(err) {
		alert(err)
	}
		
}


// The postit function  many more are available free online at The JavaScript Source!! http://javascript.internet.com
//postit code by Peter Haydon 
//peter_haydon@lineone.net


function postit(){ //check postcode format is valid
 test = document.details.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.details.postcode.value = test; //write back to form field
 if (size < 6 || size > 8){ //Code length rule
  alert("'" + test + "' is not a valid postcode - it is the wrong length");
  document.details.postcode.focus();
  return false;
  }
 if (!(isNaN(test.charAt(0)))){ //leftmost character must be letter rule
   alert("'" + test + "' is not a valid postcode - postcodes cannot start with a number");
   document.details.postcode.focus();
   return false;
  }
 if (isNaN(test.charAt(size-3))){ //first character of inward code must be numeric rule
   alert("'" + test + "' is not a valid postcode - at least one letter is in the wrong position");
   document.details.postcode.focus();
   return false;
  }
 if (!(isNaN(test.charAt(size-2)))){ //second character of inward code must be alpha rule
   alert("'" + test + "' is not a valid postcode - at least one number is in the wrong position");
   document.details.postcode.focus();
   return false;
  }
 if (!(isNaN(test.charAt(size-1)))){ //third character of inward code must be alpha rule
   alert("'" + test + "' is not a valid postcode - at least one number in the wrong position");
   document.details.postcode.focus();
   return false;
  }
 if (!(test.charAt(size-4) == " ")){//space in position length-3 rule
   alert("'" + test + "' is not a valid postcode - there is no space or the space is in wrong position");
   document.details.postcode.focus();
   return false;
   }
 count1 = test.indexOf(" ");count2 = test.lastIndexOf(" ");
 if (count1 != count2){//only one space rule
   alert("'" + test + "' is not a valid postcode - only one space is allowed");
   document.details.postcode.focus();
   return false;
  }
return true;
}

function postit(){ //check postcode format is valid
 test = document.details.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.details.postcode.value = test; //write back to form field
 if (size < 6 || size > 8){ //Code length rule
  alert("'" + test + "' is not a valid postcode - it is the wrong length");
  document.details.postcode.focus();
  return false;
  }
 if (!(isNaN(test.charAt(0)))){ //leftmost character must be letter rule
   alert("'" + test + "' is not a valid postcode - postcodes cannot start with a number");
   document.details.postcode.focus();
   return false;
  }
 if (isNaN(test.charAt(size-3))){ //first character of inward code must be numeric rule
   alert("'" + test + "' is not a valid postcode - at least one letter is in the wrong position");
   document.details.postcode.focus();
   return false;
  }
 if (!(isNaN(test.charAt(size-2)))){ //second character of inward code must be alpha rule
   alert("'" + test + "' is not a valid postcode - at least one number is in the wrong position");
   document.details.postcode.focus();
   return false;
  }
 if (!(isNaN(test.charAt(size-1)))){ //third character of inward code must be alpha rule
   alert("'" + test + "' is not a valid postcode - at least one number in the wrong position");
   document.details.postcode.focus();
   return false;
  }
 if (!(test.charAt(size-4) == " ")){//space in position length-3 rule
   alert("'" + test + "' is not a valid postcode - there is no space or the space is in wrong position");
   document.details.postcode.focus();
   return false;
   }
 count1 = test.indexOf(" ");count2 = test.lastIndexOf(" ");
 if (count1 != count2){//only one space rule
   alert("'" + test + "' is not a valid postcode - only one space is allowed");
   document.details.postcode.focus();
   return false;
  }
return true;
}

function post_simple(){ //check postcode format is valid
 test = document.details.cpostcodea.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.details.cpostcodea.value = test; //write back to form field
 if (size < 6 || size > 8){ //Code length rule
  alert("'" + test + "' is not a valid postcode - it is the wrong length");
  document.details.cpostcodea.focus();
  return false;
  }
 if (!(isNaN(test.charAt(0)))){ //leftmost character must be letter rule
   alert("'" + test + "' is not a valid postcode - postcodes cannot start with a number");
   document.details.cpostcodea.focus();
   return false;
  }
 if (isNaN(test.charAt(size-3))){ //first character of inward code must be numeric rule
   alert("'" + test + "' is not a valid postcode - at least one letter is in the wrong position");
   document.details.cpostcodea.focus();
   return false;
  }
 if (!(isNaN(test.charAt(size-2)))){ //second character of inward code must be alpha rule
   alert("'" + test + "' is not a valid postcode - at least one number is in the wrong position");
   document.details.cpostcodea.focus();
   return false;
  }
 if (!(isNaN(test.charAt(size-1)))){ //third character of inward code must be alpha rule
   alert("'" + test + "' is not a valid postcode - at least one number in the wrong position");
   document.details.cpostcodea.focus();
   return false;
  }
 if (!(test.charAt(size-4) == " ")){//space in position length-3 rule
   alert("'" + test + "' is not a valid postcode - there is no space or the space is in wrong position");
   document.details.cpostcodea.focus();
   return false;
   }
 count1 = test.indexOf(" ");count2 = test.lastIndexOf(" ");
 if (count1 != count2){//only one space rule
   alert("'" + test + "' is not a valid postcode - only one space is allowed");
   document.details.cpostcodea.focus();
   return false;
  }
return true;
}



function post_advanced(){ //check postcode format is valid
 test = document.details.ppostcode.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.details.ppostcode.value = test; //write back to form field
 if (size < 6 || size > 8){ //Code length rule
  alert("'" + test + "' is not a valid postcode - it is the wrong length");
  document.details.ppostcode.focus();
  return false;
  }
 if (!(isNaN(test.charAt(0)))){ //leftmost character must be letter rule
   alert("'" + test + "' is not a valid postcode - postcodes cannot start with a number");
   document.details.ppostcode.focus();
   return false;
  }
 if (isNaN(test.charAt(size-3))){ //first character of inward code must be numeric rule
   alert("'" + test + "' is not a valid postcode - at least one letter is in the wrong position");
   document.details.ppostcode.focus();
   return false;
  }
 if (!(isNaN(test.charAt(size-2)))){ //second character of inward code must be alpha rule
   alert("'" + test + "' is not a valid postcode - at least one number is in the wrong position");
   document.details.ppostcode.focus();
   return false;
  }
 if (!(isNaN(test.charAt(size-1)))){ //third character of inward code must be alpha rule
   alert("'" + test + "' is not a valid postcode - at least one number in the wrong position");
   document.details.ppostcode.focus();
   return false;
  }
 if (!(test.charAt(size-4) == " ")){//space in position length-3 rule
   alert("'" + test + "' is not a valid postcode - there is no space or the space is in wrong position");
   document.details.ppostcode.focus();
   return false;
   }
 count1 = test.indexOf(" ");count2 = test.lastIndexOf(" ");
 if (count1 != count2){//only one space rule
   alert("'" + test + "' is not a valid postcode - only one space is allowed");
   document.details.ppostcode.focus();
   return false;
  }
return true;
}

