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

function isnotmax(oTextarea) {
  return oTextarea.value.length != oTextarea.getAttribute("maxlength");
}

function validate() {
  var oForm = document.forms[0];
  var checkerr = false;
  document.getElementById("err_box_js").innerHTML = "";
  oForm.cf_msg.value = trim(oForm.cf_msg.value);
  if (oForm.cf_msg.value.length == 0) {
    seterr("Message content is required");
    checkerr = true;
  }
  if (oForm.cf_msg.value.length > 2000) {
    seterr("Message content is too long");
    checkerr = true;
  }
  oForm.cf_fname.value = trim(oForm.cf_fname.value);
  if (oForm.cf_fname.value.length == 0) {
    seterr("First name is required");
    checkerr = true;
  }
  oForm.cf_sname.value = trim(oForm.cf_sname.value);
  if (oForm.cf_sname.value.length == 0) {
    seterr("Surname is required");
    checkerr = true;
  }
  oForm.cf_eml.value = trim(oForm.cf_eml.value);
  if (oForm.cf_eml.value.length != 0) {
    re = /^([\w\-\.]+)@((\[([0-9]{1,3}\.){3}[0-9]{1,3}\])|(([\w\-]+\.)+)([a-zA-Z]{2,4}))$/
    if (re.test(oForm.cf_eml.value) == false) {
      seterr("Email address format is not recognised");
      checkerr = true;
    }
  }
  if (oForm.cf_tel.value.length != 0) {
    re = /^(((\+44\s?\d{4}|\(?0\d{4}\)?)\s?\d{3}\s?\d{3})|((\+44\s?\d{3}|\(?0\d{3}\)?)\s?\d{3}\s?\d{4})|((\+44\s?\d{2}|\(?0\d{2}\)?)\s?\d{4}\s?\d{4}))(\s?\#(\d{4}|\d{3}))?$/
    if (re.test(oForm.cf_tel.value) == false) {
      seterr("Telephone number format is not recognised");
      checkerr = true;
    }
  }
  if (checkerr) {
    document.getElementById("err_box_php").className = "hide";
    document.getElementById("err_box_js").className = "";
    return false;
  } else {
    return true;
  }
}

function seterr(varmsg) {
  document.getElementById("err_box_js").innerHTML = document.getElementById("err_box_js").innerHTML + "<div class='style2'><img src='images/alert.gif' alt='alert' /> " + varmsg + "</div>";
  return;
}
