/* This script and many more are available free online at
The JavaScript Source!! http://javascript.internet.com
Created by: Steve Chipman | http://slayeroffice.com/ */

// constants to define the title of the alert and button text.
var ALERT_TITLE = "Please correct these errors.";
var ALERT_BUTTON_TEXT = "Close This";

// over-ride the alert method only if this a newer browser.
// Older browser will see standard alerts
if(document.getElementById) {
  window.alert = function(txt) {
    createCustomAlert(txt);
  }
}

function createCustomAlert(txt) {
  // shortcut reference to the document object
  d = document;

  // if the modalContainer object already exists in the DOM, bail out.
  if(d.getElementById("modalContainer")) return;

  // create the modalContainer div as a child of the BODY element
  mObj = d.getElementsByTagName("body")[0].appendChild(d.createElement("div"));
  mObj.id = "modalContainer";
   // make sure its as tall as it needs to be to overlay all the content on the page
  mObj.style.height = d.documentElement.scrollHeight + "px";

  // create the DIV that will be the alert 
  alertObj = mObj.appendChild(d.createElement("div"));
  alertObj.id = "alertBox";
  // MSIE doesnt treat position:fixed correctly, so this compensates for positioning the alert
  if(d.all && !window.opera) alertObj.style.top = document.documentElement.scrollTop + "px";
  // center the alert box
  alertObj.style.left = (d.documentElement.scrollWidth - alertObj.offsetWidth)/2 + "px";

  // create an H1 element as the title bar
  h1 = alertObj.appendChild(d.createElement("h1"));
  h1.appendChild(d.createTextNode(ALERT_TITLE));

  // create a paragraph element to contain the txt argument
  msg = alertObj.appendChild(d.createElement("p"));
  msg.innerHTML = txt;
  
  // create an anchor element to use as the confirmation button.
  btn = alertObj.appendChild(d.createElement("a"));
  btn.id = "closeBtn";
  btn.appendChild(d.createTextNode(ALERT_BUTTON_TEXT));
  btn.href = "#";
  // set up the onclick event to remove the alert when the anchor is clicked
  btn.onclick = function() { removeCustomAlert();return false; }
}

// removes the custom alert from the DOM
function removeCustomAlert() {
  document.getElementsByTagName("body")[0].removeChild(document.getElementById("modalContainer"));
}


function validateFormOnSubmit(theForm) {

var reason = "";

  reason += validateSurname(theForm.surname);
  reason += validatePostcode(theForm.postcode);
  reason += validatePhone(theForm.phone);
  
  /*if (theForm.mobile.length > 0)
  {
  reason += validateMobile(theForm.mobile);	
  }*/
 
 if (reason != "") {
    
	alert("<br />Please complete the following contact information so that we can deal with your request:<br /><br />\n" + reason);
    return false;
  }

   
  return true;
}


function validateEmpty(fld) {
    var error = "";
 
    if (fld.value.length ==0) {
        fld.style.background = 'Red'; 
        error = "The required field has not been filled in.\n"
    } else {
        fld.style.background = 'White';
    }
    return error;  
}

//SURNAME
function validateSurname(fld) {
    var error = "";
    var illegalChars = /\W/; // allow letters, numbers, and underscores
 
    if (fld.value == "") {
        fld.style.background = 'Red'; 
        error = "Please enter your Surname.<br />\n\n";
    } else {
        fld.style.background = 'White';
    }
    return error;
}

function trim(s)
{
  return s.replace(/^\s+|\s+$/, '');
}

//POSTCODE
function validatePostcode(fld) {
    var error = "";
    var illegalChars = /\W/; // allow letters, numbers, and underscores
 
    if (fld.value == "") {
        fld.style.background = 'Red'; 
        error = "Please enter your Postcode.<br />\n\n";
    } else {
        fld.style.background = 'White';
    }
    return error;
}

//PHONE
function validatePhone(fld) {
    var error = "";
    var stripped = fld.value.replace(/[\(\)\.\-\ ]/g, '');    

  	if (isNaN(parseInt(stripped))) {
        error = "Please enter your Phone Number.<br />\n\n";
        fld.style.background = 'Red';
	}
  
  	else if (!(stripped.length > 5 )) {
        error = "Your telephone number appears to be incorrect, please try again.<br />\n\n";
        fld.style.background = 'Red';
    }
	else if (!(stripped.length < 15 )) {
        error = "Your telephone number appears to be incorrect, please try again.<br />\n\n";
        fld.style.background = 'Red';
    }
	else {
        fld.style.background = 'White';
    }
	
    return error;
}
