function handleerror(){
 return true;
}

//FORM SUBMISSIONS
function cleanValue(o){
 if(o.type=="text" || o.type=="textarea"){
  o.value=cleanString(o.value);
 }
}
function requiredValues(reqf){
 var d=df(0);
 var a,b;
 var c=true;
 var f=false;
 for(var j=0;j<reqf.length;j++){
  a=d.elements[reqf[j]];
  if(a.type=="text"){
   cleanValue(a);
   if(a.name.indexOf("email")>=0){
    a.value=a.value.toLowerCase();
   }else if(a.name.indexOf("postcode")>=0){
    a.value=a.value.toUpperCase();
   }
   b=a.value;
  }else if(a.type=="select-one"){
   b=ddv(a);
  }
  if(b==""){
   c=false;
   if(!f){
    a.focus();
    f=true;
   }
  }  
 }
 return c;
}
function sendenquiry(){
 if(checkEnquiryForm()){
  var d=df(0);
  d.action="enquiryprocess.php";
  d.submit();
 }
}
function checkEnquiryForm(){
 var d=df(0);
 if(requiredValues(["yourname", "youremail", "yourenquiry"])){
 
  cleanValue(d.yourname);
  cleanValue(d.yourenquiry);
  var n=trim(d.yourname.value);
  var e=trim(d.youremail.value);
  var m=trim(d.yourenquiry.value);
  
  if(n!="" && e!="" && m!=""){
   if(checkEmail(e,d.youremail)){
    return true;
   }else{
    return false;
   }
  }else{
   return false;
  }
 }else{
  alert("\n\nPlease complete all the fields\nbefore sending us your enquiry\n\n");
  return false;
 }
}


//UTILITY FUNCTIONS
function trim(o){
 return o.replace(/^\s*(.*)/, "$1").replace(/(.*?)\s*$/, "$1");
}
function cleanString(o){
 return trim(o).replace(/[\$\^\{\[\(\|\)\]\}\*\\\+_<>~\"]/g, "");
}
function isNum(s){
 var numRegExp=/[\D]/;
 return !numRegExp.test(s);
}
function ddv(o){
 return (o)?o.options[o.selectedIndex].value:false;
}
function df(o){
 return document.forms[o];
}



//VERIFY EMAILS
function checkEmail(e,f){
 var knownDomsPat=/^(com|net|org|edu|int|mil|gov|arpa|biz|aero|name|coop|info|pro|museum|mobi)$/;
 var specialChars="\\(\\)><@,;:\\\\\\\"\\.\\[\\]";
 var validChars="\[^\\s"+specialChars+"\]";
 var atom=validChars+"+";
 var quotedUser="(\"[^\"]*\")";
 var word="("+atom+"|"+quotedUser+")";
 var prefix="\n\nThe E-Mail Address is formatted incorrectly.\n\n";

 var matchArray=e.match(/^(.+)@(.+)$/);
 if(matchArray==null){
  alert(prefix+"Please check the @ and . (dot) characters\n\n");
  if(f)f.focus();
  return false;
 }

 var user=matchArray[1];
 for(i=0;i<user.length;i++){
  if(user.charCodeAt(i)>127){
   alert(prefix+"It contains invalid characters.\n\n");
   if(f)f.focus();
   return false;
  }
 }
 var domain=matchArray[2];
 for(i=0;i<domain.length;i++){
  if(domain.charCodeAt(i)>127){
   alert(prefix+"It contains invalid characters.\n\n");
   if(f)f.focus();
   return false;
  }
 }

 var userPat=new RegExp("^"+word+"(\\."+word+")*$");
 if(user.match(userPat)==null){
  alert(prefix);
  if(f)f.focus();
  return false;
 }

 var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/;
 var IPArray=domain.match(ipDomainPat);
 if(IPArray!=null){
  for(i=1;i<5;i++){
   if(IPArray[i]>255){
    alert(prefix+"The destination IP address is invalid.\n\n");
    if(f)f.focus();
    return false;
   }
  }
 }

 var atomPat=new RegExp("^"+atom+"$");
 var domArr=domain.split(".");
 var len=domArr.length;

 if(len<2){
  alert(prefix+"It is missing a hostname.\n\n");
  if(f)f.focus();
  return false;
 }
 for(i=0;i<len;i++){
  if(domArr[i].search(atomPat)==-1){
   alert(prefix+"The domain name is not valid.\n\n");
   if(f)f.focus();
   return false;
  }
 }
 if(domArr[len-1].length!=2 && domArr[len-1].search(knownDomsPat)==-1){
  alert(prefix+"It must end in a well-known domain\nor a two letter country abbreviation.\n\n");
  if(f)f.focus();
  return false;
 }
 return true;
}
