// JavaScript Document
var emailfilter=/^\w+[\+\.\w-]*@([\w-]+\.)*\w+[\w-]*\.([a-z]{2,4}|\d+)$/i
var numericFilter=/^\d+$/;

function isEmail(emailAddress) {
  return emailfilter.test(emailAddress)
}

function isNumeric(data) {
  return numericFilter.test(data);
}

function isEmpty(data) {
  if (data.length < 1) {
    return true;
  } else {
    return false;
  }
}

function validTextbox(obj,minLength,message1,message2) {
  if (isEmpty(String(obj.value))) {alert(message1);obj.focus();return false;}
  if (String(obj.value).length<minLength) {alert(message2);obj.focus();return false;}
  return true;
}


function validTextarea(obj,minLength,message1,message2) {
  if (isEmpty(obj.innerHTML)) {alert(message1);obj.focus();return false;}
  if (obj.innerHTML.length<minLength) {alert(message2);obj.focus();return false;}
  return true;
}

function validatePhone(label,code,number3,number4,isOptional) {
  if (code.value.length>0||number3.value.length>0||number4.value.length>0) {
    if (!validTextbox(code,2,"Please enter the first part of the contact number, e.g. 021, 011, 083...","Please check the first part of the contact number - it should generally be three digits long, e.g. 021, 011, 083...")) return false;    
    if (!validTextbox(number3,3,"Please enter the second part of the contact number, e.g. 982","Please check the second part of the contact number - it should be three digits long")) return false;    
    if (!validTextbox(number4,4,"Please enter the third part of the contact number, e.g. 6384","Please check the third part of the contact number - it should be four digets long, e.g. 5555")) return false;
    return true;
  } else {
    if (isOptional) return true; 
    else {
      alert("Please enter the "+label);
      code.focus();
      return false;
    } 
  }
}

  /*
  Validate the current pages contact person
  */
  function validateContact(requireEmail) {
    
    if (typeof requireEmail == "undefined") {
      requireEmail = false;
    }
    
    var contact_name = document.getElementById("contact_name");
    var contact_surname = document.getElementById("contact_surname");

    var contact_telephone_code = document.getElementById("contact_telephone_code");
    var contact_telephone_number3 = document.getElementById("contact_telephone_number3");
    var contact_telephone_number4 = document.getElementById("contact_telephone_number4");

    var contact_cell_code = document.getElementById("contact_cell_code");
    var contact_cell_number3 = document.getElementById("contact_cell_number3");
    var contact_cell_number4 = document.getElementById("contact_cell_number4");

    var contact_fax_code = document.getElementById("contact_fax_code");
    var contact_fax_number3 = document.getElementById("contact_fax_number3");
    var contact_fax_number4 = document.getElementById("contact_fax_number4");

    var contact_email = document.getElementById("contact_email");
    
    if (requireEmail){
	    if (!validTextbox(contact_name,1,"Please enter the contact persons's firstname.","Please enter the contact persons's firstname.")) return false;
	    if (!validTextbox(contact_surname,1,"Please enter the contact persons's surname.","Please enter the contact persons's surname.")) return false;
	}
    if (!validatePhone("Telephone Number", contact_telephone_code, contact_telephone_number3, contact_telephone_number4,true)) return false;
    if (!validatePhone("Cell Number", contact_cell_code, contact_cell_number3, contact_cell_number4,true)) return false;
    if (!validatePhone("Fax Number", contact_fax_code, contact_fax_number3, contact_fax_number4,true)) return false;

    if (!isEmpty(contact_email.value)) {
      if (!isEmail(contact_email.value)) {
        alert("The email address that you've entered appears to be incorrect - please verify it.");
        contact_email.focus(); 
        return false;
      }
    } else {
      if (requireEmail) {
        alert("Please supply an email address.");
        contact_email.focus();
        return false;
      }
    }
    
    if (contact_telephone_code.value.length<1 && contact_cell_code.value.length<1 && contact_fax_code.value.length<1 && contact_email.value.length<1) {
      alert('Please supply at least a phone number or email address.');
      contact_telephone_code.focus();
      return false;
    }
    
    return true;
  }
