 function checkPostCode (toCheck) {

  var alpha1 = "[abcdefghijklmnoprstuwyz]";                       // Character 1
  var alpha2 = "[abcdefghklmnopqrstuvwxy]";                       // Character 2
  var alpha3 = "[abcdefghjkstuw]";                                // Character 3
  var alpha4 = "[abehmnprvwxy]";                                  // Character 4
  var alpha5 = "[abdefghjlnpqrstuwxyz]";                          // Character 5
  
  var pcexp = new Array ();

  pcexp.push (new RegExp ("^(" + alpha1 + "{1}" + alpha2 + "?[0-9]{1,2})(\\s*)([0-9]{1}" + alpha5 + "{2})$","i"));
  pcexp.push (new RegExp ("^(" + alpha1 + "{1}[0-9]{1}" + alpha3 + "{1})(\\s*)([0-9]{1}" + alpha5 + "{2})$","i"));
  pcexp.push (new RegExp ("^(" + alpha1 + "{1}" + alpha2 + "?[0-9]{1}" + alpha4 +"{1})(\\s*)([0-9]{1}" + alpha5 + "{2})$","i"));
  pcexp.push (/^(GIR)(\s*)(0AA)$/i);
  pcexp.push (/^(bfpo)(\s*)([0-9]{1,4})$/i);
  pcexp.push (/^(bfpo)(\s*)(c\/o\s*[0-9]{1,3})$/i);  
  pcexp.push (/^([A-Z]{4})(\s*)(1ZZ)$/i);

  var postCode = toCheck;
  var valid = false;
  
  for ( var i=0; i<pcexp.length; i++) {
    if (pcexp[i].test(postCode)) {    
      pcexp[i].exec(postCode);     
      postCode = RegExp.$1.toUpperCase() + " " + RegExp.$3.toUpperCase();
      postCode = postCode.replace (/C\/O\s*/,"c/o ");      
      valid = true;      
      break;
    }
  }
  
  if (valid) {return postCode;} else return false;
}
 
 function formatFields(){
   document.orderform.forename.value = convertCase(document.orderform.forename.value);
   document.orderform.surname.value = convertCase(document.orderform.surname.value);
   document.orderform.billingpostcode.value = convertUpperCase(document.orderform.billingpostcode.value);
   document.orderform.telephone.value = convertCase(document.orderform.telephone.value);
   document.orderform.fax.value = convertCase(document.orderform.fax.value);
   document.orderform.mobile.value = convertCase(document.orderform.mobile.value);
   document.orderform.email.value = convertLowerCase(document.orderform.email.value);   
 }

 function validateForm(){
   var forename, surname, address, title, county, postcode, email, dobday, dobmonth, dobyear, telephone;
   title = document.orderform.title.value;
   forename = document.orderform.forename.value.length - 1;
   surname = document.orderform.surname.value.length - 1;
   address = document.orderform.billingaddress.value.length - 1;
   country = document.orderform.billingcountry.value;
   postcode = document.orderform.billingpostcode.value;
   email = document.orderform.email.value.length - 1;
   
   
   dobday = document.orderform.day.value;
   dobmonth = document.orderform.month.value;
   dobyear = document.orderform.year.value;
   
   if(dobday == '0'){
     alert("Please select day of your date of birth");
	 return false;
   }
   
   if(dobmonth == '0'){
     alert("Please select month of your date of birth");
	 return false;
   }
   
   if(dobyear == '0'){
     alert("Please select year of your date of birth");
	 return false;
   }
   
   
   
   telephone = document.orderform.telephone.value.length - 1;
   
   if(title == 0){
     alert("Please select title");
	 return false;
   }
   
   if(forename < 3){
     alert("Please enter forename (min 3 chars)");
     return false;
   }
   
   if(surname < 3){
     alert("Please enter surname (min 3 chars)");
     return false;
   }
   
   if(address < 10){
     alert("Please enter billing address (min 10 chars)");
     return false;
   }
   
   if(country == 0){
     alert("Please select country");
	 return false;
   }
   

   if (checkPostCode(postcode)) {
    //alert("Postcode is valid");
    }else {
     
        if(postcode == '0000'){
        //valid postcode
        }else{
            alert ("Postcode has invalid format");
            return false;   	 
        }
	 
    }//end else
   
   
   if(email < 6){
     alert("Please enter email address (min 6 chars)");
     return false;
   }
   
         
   if(telephone < 6){
     alert("Please enter telephone number (min 6 chars)");
     return false;
   }
   
   
   return true;
    
  }

 
 
function convertCase(sString) {
  sString = trimAll(sString);
  sString = sString.toLowerCase();
  var numchars = sString.length;
  var newVal = '';
  var tempvals = sString.split(' ');
  for(var c=0; c < tempvals.length; c++)
    newVal += tempvals[c].substring(0,1).toUpperCase() + tempvals[c].substring(1,tempvals[c].length) + ' ';
  sString = newVal;  
return sString;
}

function convertUpperCase(sString) {
  sString = trimAll(sString);
  sString = sString.toUpperCase();
return sString;
}

function convertLowerCase(sString) {
  sString = trimAll(sString);
  sString = sString.toLowerCase();
return sString;
}

function trimAll(sString) {
  while (sString.substring(0,1) == ' '){
    sString = sString.substring(1, sString.length);
  }
  while (sString.substring(sString.length-1, sString.length) == ' '){
    sString = sString.substring(0,sString.length-1);
  }
return sString;
}
