// JavaScript Document

function validate_form(formname)
{
    valid = true;

	
	//Ask Sam Validation
	if(formname == "asksam")
	{
		if ( document.asksam.name.value == "" )
		{
			alert ( "You must enter your name." );
			valid = false;
		}
		else if ( document.asksam.number.value == "" )
		{
			alert ( "You must enter your telephone number." );
			valid = false;
		}
		else if ( !checkUKTelephone(document.asksam.number.value) )
		{
			alert ( "You must enter a valid telephone number." );
			valid = false;
		}
		else if ( document.asksam.email.value == "" )
		{
			alert ( "You must enter your email address." );
			valid = false;
		} 
		else if (!validateEmail(document.asksam.email.value))
		{
			alert ( "You must enter a valid email address." );
			valid = false;
		}
		else if ( document.asksam.question.value == "" )
		{
			alert ( "You must fill in the question box" );
			valid = false;
		} 
	}
	//Car Pop Up Validation
	if(formname == "sourcepopup")
	{
		if ( document.sourcepopup.name.value == "" )
		{
			alert ( "You must enter your name." );
			valid = false;
		}
		else if ( document.sourcepopup.number.value == "" )
		{
			alert ( "You must enter your telephone number." );
			valid = false;
		}
		else if ( !checkUKTelephone(document.sourcepopup.number.value) )
		{
			alert ( "You must enter a valid telephone number." );
			valid = false;
		}
		else if ( document.sourcepopup.email.value == "" )
		{
			alert ( "You must enter your email address." );
			valid = false;
		} 
		else if (!validateEmail(document.sourcepopup.email.value))
		{
			alert ( "You must enter a valid email address." );
			valid = false;
		}
	}
	//Source Dream Car Pop Up
	if(formname == "source")
	{
		if ( document.source.make.value == "" )
		{
			alert ( "You must select a make." );
			valid = false;
		}
		else if ( document.source.model.value == "" )
		{
			alert ( "You must select a model." );
			valid = false;
		}
		else if ( document.source.fuel.value == "" )
		{
			alert ( "You must select a fuel type." );
			valid = false;
		}
		else if ( document.source.colour.value == "" )
		{
			alert ( "You must select a colour." );
			valid = false;
		}
		else if ( document.source.door.value == "" )
		{
			alert ( "You must specify the number of doors." );
			valid = false;
		}
		else if ( document.source.budget.value == "" )
		{
			alert ( "You must specify a budget." );
			valid = false;
		}
		else if ( document.source.finance.value == "" )
		{
			alert ( "You must state if you require finance." );
			valid = false;
		}
		else if ( document.source.insurance.value == "" )
		{
			alert ( "You must specify if you want us to sort out insurance for you." );
			valid = false;
		}
		else if ( document.source.name.value == "" )
		{
			alert ( "You must enter your name." );
			valid = false;
		}
		else if ( document.source.number.value == "" )
		{
			alert ( "You must enter your telephone number." );
			valid = false;
		}
		else if ( !checkUKTelephone(document.source.number.value) )
		{
			alert ( "You must enter a valid telephone number." );
			valid = false;
		}
		else if ( document.source.email.value == "" )
		{
			alert ( "You must enter your email address." );
			valid = false;
		} 
		else if (!validateEmail(document.source.email.value))
		{
			alert ( "You must enter a valid email address." );
			valid = false;
		}
	}
	//Buy Back Validation
	if(formname == "buyback")
	{
		if ( document.buyback.name.value == "" )
		{
			alert ( "You must enter your name." );
			valid = false;
		}
		else if ( document.buyback.number.value == "" )
		{
			alert ( "You must enter your telephone number." );
			valid = false;
		}
		else if ( !checkUKTelephone(document.buyback.number.value) )
		{
			alert ( "You must enter a valid telephone number." );
			valid = false;
		}
		else if ( document.buyback.reg.value == "" )
		{
			alert ( "You must enter your Registration Number." );
			valid = false;
		} 
		else if ( document.buyback.mileage.value == "" )
		{
			alert ( "You must enter your mileage" );
			valid = false;
		} 
	}
	//Car Details Validation
	if(formname == "details")
	{
		if ( document.details.name.value == "" )
		{
			alert ( "You must enter your name." );
			valid = false;
		}
		else if ( document.details.number.value == "" )
		{
			alert ( "You must enter your telephone number." );
			valid = false;
		}
		else if ( !checkUKTelephone(document.details.number.value) )
		{
			alert ( "You must enter a valid telephone number." );
			valid = false;
		}
		else if ( document.details.email.value == "" )
		{
			alert ( "You must enter your email address." );
			valid = false;
		} 
		else if (!validateEmail(document.details.email.value))
		{
			alert ( "You must enter a valid email address." );
			valid = false;
		}
	}
	//Newsletter Validation
	if(formname == "newsletter")
	{
		if ( document.newsletter.email.value == "" )
		{
			alert ( "You must enter your email address." );
			valid = false;
		} 
		else if (!validateEmail(document.newsletter.email.value))
		{
			alert ( "You must enter a valid email address." );
			valid = false;
		}
	}
    return valid;
}

function validateEmail(str)
{
		var at="@"
		var dot="."
		var lat=str.indexOf(at)
		var lstr=str.length
		var ldot=str.indexOf(dot)
		if (str.indexOf(at)==-1){
		   
		   return false
		}

		if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr){
	
		   return false
		}

		if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr){
	
		    return false
		}

		 if (str.indexOf(at,(lat+1))!=-1){
		
		    return false
		 }

		 if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot){
		
		    return false
		 }

		 if (str.indexOf(dot,(lat+2))==-1){
		
		    return false
		 }
		
		 if (str.indexOf(" ")!=-1){
		   
		    return false
		 }

 		 return true					
	
}


function checkUKTelephone (telephoneNumber) {

  // Convert into a string and check that we were provided with something
  var telnum = telephoneNumber + " ";
  if (telnum.length == 1)  {
     telNumberErrorNo = 1;
     return false
  }
  telnum.length = telnum.length - 1;
  
  // Don't allow country codes to be included (assumes a leading "+")
  var exp = /^(\+)[\s]*(.*)$/;
  if (exp.test(telnum) == true) {
     telNumberErrorNo = 2;
     return false;
  }
  
  // Remove spaces from the telephone number to help validation
  while (telnum.indexOf(" ")!= -1)  {
    telnum = telnum.slice (0,telnum.indexOf(" ")) + telnum.slice (telnum.indexOf(" ")+1)
  }
  
  // Remove hyphens from the telephone number to help validation
  while (telnum.indexOf("-")!= -1)  {
    telnum = telnum.slice (0,telnum.indexOf("-")) + telnum.slice (telnum.indexOf("-")+1)
  }  
  
  // Now check that all the characters are digits
  exp = /^[0-9]{10,11}$/;
  if (exp.test(telnum) != true) {
     telNumberErrorNo = 3;
     return false;
  }
  
  // Now check that the first digit is 0
  exp = /^0[0-9]{9,10}$/;
  if (exp.test(telnum) != true) {
     telNumberErrorNo = 4;
     return false;
  }
	
	// Disallow numbers allocated for dramas.
	 
  // Array holds the regular expressions for the drama telephone numbers
  var tnexp = new Array ();
	tnexp.push (/^(0113|0114|0115|0116|0117|0118|0121|0131|0141|0151|0161)(4960)[0-9]{3}$/);
	tnexp.push (/^02079460[0-9]{3}$/);
	tnexp.push (/^01914980[0-9]{3}$/);
	tnexp.push (/^02890180[0-9]{3}$/);
	tnexp.push (/^02920180[0-9]{3}$/);
	tnexp.push (/^01632960[0-9]{3}$/);
	tnexp.push (/^07700900[0-9]{3}$/);
	tnexp.push (/^08081570[0-9]{3}$/);
	tnexp.push (/^09098790[0-9]{3}$/);
	tnexp.push (/^03069990[0-9]{3}$/);
	
	for (var i=0; i<tnexp.length; i++) {
    if ( tnexp[i].test(telnum) ) {
      telNumberErrorNo = 5;
      return false;
    }
	}
  
  // Finally check that the telephone number is appropriate.
  exp = (/^(01|02|03|05|070|071|072|073|074|075|07624|077|078|079)[0-9]+$/);
	if (exp.test(telnum) != true) {
     telNumberErrorNo = 5;
     return false;
  }
  
  // Telephone number seems to be valid - return the stripped telehone number  
  return telnum;
}
var telNumberErrorNo = 0;
var telNumberErrors = new Array ();
telNumberErrors[0] = "Valid UK telephone number";
telNumberErrors[1] = "Telephone number not provided";
telNumberErrors[2] = "UK telephone number without the country code, please";
telNumberErrors[3] = "UK telephone numbers should contain 10 or 11 digits";
telNumberErrors[4] = "The telephone number should start with a 0";
telNumberErrors[5] = "The telephone number is either invalid or inappropriate";
