/* *********************************************************************** */
var uk = uk ? uk : {}
    uk.co  = uk.co ? uk.co : {};   
    uk.co.legalhip  = uk.co.legalhip ? uk.co.legalhip : {};   
    uk.co.legalhip.forms  = uk.co.legalhip.forms ? uk.co.legalhip.form : {};       
/* *********************************************************************** */
if(!uk.co.legalhip.forms.contactus) {
  uk.co.legalhip.forms.contactus = {};
/* *********************************************************************** */

uk.co.legalhip.forms.contactus.validateForm = function(ev) {
  var scope = uk.co.legalhip.forms.contactus;
  var event = new com.bigllc.lang.Event(ev)
  var form = document.getElementById("contactus");
  
  var fieldTitle = document.getElementById("title");
  var fieldOther = document.getElementById("other");
  scope.renderErrorMessage(fieldOther, "");
  if(fieldTitle.value == "Other") {
    var fieldOther = document.getElementById("other");
    var valueOther = fieldOther.value;
    
    if(valueOther.trim().length == 0) {
      scope.renderErrorMessage(fieldOther,
        "Please enter your title.");
    }
  }
  
  var hasError = false;

  var fieldName = document.getElementById("name");
  if(fieldName.value.trim().length == 0) {
    scope.renderErrorMessage(fieldName, "Please enter your full name.");
    hasError = true;
  }
  else {
    scope.renderErrorMessage(fieldName, "");
  }

  var fieldAddress = document.getElementById("address");
  if(fieldAddress.value.trim().length == 0) {
    scope.renderErrorMessage(fieldAddress, "Please enter your full address.");
    hasError = true;
  }
  else {
    scope.renderErrorMessage(fieldAddress, "");
  }

  var fieldEmail = document.getElementById("email");
  if(!scope.validateEmail(fieldEmail.value.trim())) {
    scope.renderErrorMessage(fieldEmail, "Please enter a valid e-mail address.");
    hasError = true;
  }
  else {
    scope.renderErrorMessage(fieldEmail, "");
  }

  var fieldPhone = document.getElementById("telephone");
  if(fieldPhone.value.trim().length < 8) {
    scope.renderErrorMessage(fieldPhone, "Please enter a valid contact telephone number.");
    hasError = true;
  }
  else {
    scope.renderErrorMessage(fieldPhone, "");
  }

  var fieldComment = document.getElementById("comment");
  if(fieldComment.value.trim().length == 0) {
    scope.renderErrorMessage(fieldComment, "Please enter your comments or enquiry.");
    hasError = true;
  }
  else {
    scope.renderErrorMessage(fieldComment, "");
  }
  
  if(hasError == true) {
    event.cancelEvent();
  }
}

uk.co.legalhip.forms.contactus.titleOtherToggle = function() {
    var fieldTitle = document.getElementById("title");
    var fieldOther = document.getElementById("other");
    if(fieldTitle.value == "Other") {
      fieldOther.disabled = false;
    }
    else {
      fieldOther.disabled = true;
      fieldOther.value = "";
    }
}

uk.co.legalhip.forms.contactus.validateEmail = function(email) {
  return (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(email));
}

uk.co.legalhip.forms.contactus.renderErrorMessage = function(el, msg) {
  var errorDivId = el.id + "-error";
  var errorDiv = document.getElementById(errorDivId);
  
  if(!errorDiv) {
    errorDiv = document.createElement("div");
  }
  
  errorDiv.id = errorDivId;
  errorDiv.className = "form-field-error";
  errorDiv.innerHTML = msg;
  //el.parentElement.insertBefore(errorDiv, el);
  com.bigllc.lang.System.insertAfter(el, errorDiv);
  
  errorDiv.style.display = (msg.length > 0) ? "block" : "none";
}

uk.co.legalhip.forms.contactus.install = function(ev) {
  var form = document.getElementById("contactus");
  
  if(form) 
  {
    com.bigllc.lang.System.addEvent(
      form, "submit", uk.co.legalhip.forms.contactus.validateForm);
      
    com.bigllc.lang.System.addEvent(
      document.getElementById("title"), "change", 
      uk.co.legalhip.forms.contactus.titleOtherToggle);
    
    uk.co.legalhip.forms.contactus.titleOtherToggle();
  }
}

com.bigllc.lang.System.addEvent(
  window, "load", uk.co.legalhip.forms.contactus.install);
  
/* *********************************************************************** */
}
/* *********************************************************************** */
  
