//---------------------------------------------------//
// E-mail form validation - Mike Wilson, 10-01-2002  //
//---------------------------------------------------//
/*
	Quote Request form validation
*/
var ruvalid = "";
var bgNotValid = "#B6CFEE";
var bgValid = "white";   
var bgCheckbox = "#CCFFCC";

//Generic function to change background colour of objects
function setColor(el, bg) {
  if (el.style) el.style.backgroundColor = bg;
}

//Generic function to check to see the text boxes are filled in
function isFilled(elem) {

  if (elem.value == "" || elem.value == null)
  return false;
  else return true;
}

//check to see the email box is filled in correctly
// it must have at least this format ( char + @ + char + . + char )
function isEmail(eml)
{	
	a = eml.value.search(/@/i);
	a1 = eml.value.substring(0,a);
	a2 = a1.length;
	
	a = a + 1;
	b = eml.value.indexOf(".");
	b1 = eml.value.substring(a,b);
	b2 = b1.length;
	
	b = b + 1;
	c = eml.value.length;
	c1 = eml.value.substring(b,c);
	c2 = c1.length;

	if(eml.value.indexOf("@") != "-1" && eml.value.indexOf(".") != "-1" && a2 >= 1 && b2 >= 1 && c2 >= 1)
		{
			return true;
		}
	else
		{
			return false;
		}		
}

//validate checkbox choices
function isChecked(elem) { 
  if (elem.checked) 
  return true;
  else return false;
}

//-----------------------------------
// check the whole form is OK to send
//-----------------------------------

function isComplete(form) {

	ruvalid = "";
//Name	
    if (isFilled(form.name) == false) {
      ruvalid += "Name.\n";
      setColor(form.name, bgNotValid);
    }
    else
    {
      setColor(form.name, bgValid);
    }    
    
//Organisation	
    if (isFilled(form.org) == false) {
      ruvalid += "Organisation.\n";
      setColor(form.org, bgNotValid);
    }
    else
    {
      setColor(form.org, bgValid);
    }                      
    
//Address
    if (isFilled(form.address) == false) {
      ruvalid += "Postal address.\n";
      setColor(form.address, bgNotValid);
    }                      
    else
    {
      setColor(form.address, bgValid);    
    }                      
    
//Postcode
    if (isFilled(form.postcode) == false) {
      ruvalid += "Postcode.\n";
      setColor(form.postcode, bgNotValid);
    }                       
    else
    {
      setColor(form.postcode, bgValid);
    }                         
      
//Email	
    if (isEmail(form.email) == false) {
      ruvalid += "E-mail address in the standard format e.g. yourname@location.com.\n";
      setColor(form.email, bgNotValid);
    }
    else
    {
      setColor(form.email, bgValid);    
    }                    

//Phone
    if (isFilled(form.phone) == false) {
      ruvalid += "Phone number.\n";
      setColor(form.phone, bgNotValid);
    }                    
    else
    {
      setColor(form.phone, bgValid);
    }

//What data? must select at least one checkbox or contact me...
    if (isChecked(form.lcm90_datacb1) == false && isChecked(form.lcm90_datacb2) == false && isChecked(form.lcm90_datacb3) == false && 
        isChecked(form.lcm90_datacb4) == false && isChecked(form.lcm90_datacb5) == false && isChecked(form.lcm2k_datacb1) == false && 
        isChecked(form.lcm2k_datacb2) == false && isChecked(form.lcm2k_datacb3) == false && isChecked(form.lcm2k_datacb4) == false && 
        isChecked(form.lcm2k_datacb5) == false && isChecked(form.lcm2k_datacb6) == false && isChecked(form.lcm2k_datacb7) == false &&
		isChecked(form.data_contactme) == false)
    {
      ruvalid += "Choose which data you require or check the box for us to contact you.\n";
      setColor(form.lcm90_datacb1, bgNotValid); setColor(form.lcm90_datacb2, bgNotValid); setColor(form.lcm90_datacb3, bgNotValid);
      setColor(form.lcm90_datacb4, bgNotValid); setColor(form.lcm90_datacb5, bgNotValid); setColor(form.lcm2k_datacb1, bgNotValid);
      setColor(form.lcm2k_datacb2, bgNotValid); setColor(form.lcm2k_datacb3, bgNotValid); setColor(form.lcm2k_datacb4, bgNotValid);
      setColor(form.lcm2k_datacb5, bgNotValid); setColor(form.lcm2k_datacb6, bgNotValid); setColor(form.lcm2k_datacb7, bgNotValid);
	  setColor(form.data_contactme, bgNotValid);
    }
    else
    {
      setColor(form.lcm90_datacb1, bgCheckbox); setColor(form.lcm90_datacb2, bgCheckbox); setColor(form.lcm90_datacb3, bgCheckbox);
      setColor(form.lcm90_datacb4, bgCheckbox); setColor(form.lcm90_datacb5, bgCheckbox); setColor(form.lcm2k_datacb1, bgCheckbox);
      setColor(form.lcm2k_datacb2, bgCheckbox); setColor(form.lcm2k_datacb3, bgCheckbox); setColor(form.lcm2k_datacb4, bgCheckbox);
      setColor(form.lcm2k_datacb5, bgCheckbox); setColor(form.lcm2k_datacb6, bgCheckbox); setColor(form.lcm2k_datacb7, bgCheckbox);
	  setColor(form.data_contactme, bgCheckbox);
    }      

//If they clicked the tile ref box, make sure a tile ref has been entered.  
  if (isChecked(form.lcm90_geocb5) == true && isFilled(form.lcm90_tileref) == false)
  {
    ruvalid += "Enter the required LCM1990 a tile ref number.\n";
    setColor(form.lcm90_tileref, bgNotValid);
  }
  else
  {
    setColor(form.lcm90_tileref, bgValid);
  }

//If they clicked the Grid ref box, make sure they specified an actual grid ref.
  if (isChecked(form.lcm90_geocb6) == true) 
  {
    if (isFilled(form.lcm90_swcorner) == false) 
    {
      ruvalid += "Enter the required LCM1990 SW corner grid reference.\n";
      setColor(form.lcm90_swcorner, bgNotValid);
    }
    else
    {
      setColor(form.lcm90_swcorner, bgValid); 
    }
    
    if (isFilled(form.lcm90_necorner) == false) 
    {
      ruvalid += "Enter the required LCM1990 NE corner grid reference.\n";
      setColor(form.lcm90_necorner, bgNotValid); 
    }
    else
    {
      setColor(form.lcm90_necorner, bgValid); 
    }
  }
  else
  {
    setColor(form.lcm90_swcorner, bgValid);
    setColor(form.lcm90_necorner, bgValid);         
  }  

//Lcm 2000 tile ref wanted but not letter given?  
  if (isChecked(form.lcm2k_geocb6))
  {
    if (!isFilled(form.lcm2k_tileref))
    {
      ruvalid += "Enter the required LCM2000 tile ref letter.\n";
      setColor(form.lcm2k_tileref, bgNotValid);
    }
    else
    {
      setColor(form.lcm2k_tileref, bgValid);
    }
  }
  else
  {
    setColor(form.lcm2k_tileref, bgValid);
  }
  
//Lcm 2000 box county 
  if (isChecked(form.lcm2k_geocb7))
  {
    if (!isFilled(form.lcm2k_databoxcounty))
    {
      ruvalid += "Enter the required LCM2000 box county name.\n";
      setColor(form.lcm2k_databoxcounty, bgNotValid);
    }
    else
    {
      setColor(form.lcm2k_databoxcounty, bgValid);
    }
  }
  else
  {
    setColor(form.lcm2k_databoxcounty, bgValid);
  }
  
//Lcm 2000 cut out boundary  
  if (isChecked(form.lcm2k_geocb8))
  {
    if (!isFilled(form.lcm2k_databoundcounty))
    {
      ruvalid += "Enter the required LCM2000 cut out county name.\n";
      setColor(form.lcm2k_databoundcounty, bgNotValid);
    }
    else
    {
      setColor(form.lcm2k_databoundcounty, bgValid);
    }
  }
  else
  {
    setColor(form.lcm2k_databoundcounty, bgValid);
  }

//If they clicked the 2000 Grid ref box, make sure they specified an actual grid ref.
  if (isChecked(form.lcm2k_geocb9) == true) 
  {
    if (isFilled(form.lcm2k_swcorner) == false) 
    {
      ruvalid += "Enter the required LCM2000 SW corner grid reference.\n";
      setColor(form.lcm2k_swcorner, bgNotValid);
    }
    else
    {
      setColor(form.lcm2k_swcorner, bgValid); 
    }
    
    if (isFilled(form.lcm2k_necorner) == false) 
    {
      ruvalid += "Enter the required LCM2000 NE corner grid reference.\n";
      setColor(form.lcm2k_necorner, bgNotValid); 
    }
    else
    {
      setColor(form.lcm2k_necorner, bgValid); 
    }
  }
  else
  {
    setColor(form.lcm2k_swcorner, bgValid);
    setColor(form.lcm2k_necorner, bgValid);         
  }  

//Lcm 2000 data area
  if (isChecked(form.lcm2k_geocb10))
  {
    if (!isFilled(form.lcm2k_dataarea))
    {
      ruvalid += "Enter the required LCM2000 data area.\n";
      setColor(form.lcm2k_dataarea, bgNotValid);
    }
    else
    {
      setColor(form.lcm2k_dataarea, bgValid);
    }
  }
  else
  {
    setColor(form.lcm2k_dataarea, bgValid);
  }
                                          
//Other GIS check.  
  if (isChecked(form.gis_cb4))
  {
    if (!isFilled(form.gis_othertext))
    {
      ruvalid += "Enter Other GIS system used.\n";
      setColor(form.gis_othertext, bgNotValid);
    }
    else
    {
      setColor(form.gis_othertext, bgValid);
    }
  }
  else
  {
    setColor(form.gis_othertext, bgValid);
  }

//Other delivery check.  
  if (isChecked(form.deliv_cb3))
  {
    if (!isFilled(form.deliv_othertext))
    {
      ruvalid += "Enter Other delivery method required.\n";
      setColor(form.deliv_othertext, bgNotValid);
    }
    else
    {
      setColor(form.deliv_othertext, bgValid);
    }
  }
  else
  {
    setColor(form.deliv_othertext, bgValid);
  }
    
  if (ruvalid != "" ) 
  {
    alert("Form Incomplete, please complete the following fields!\n------------------------------------------------------\n" + ruvalid);                    
    return false;
  }
  else
  {
    return true;
  }
  
  return false;
} //function isComplete
