function validate_add_message(widget,msg){
  var span = document.createElement("span");
  span.style.color = "red";
  span.innerHTML = msg;
  widget.parentNode.insertBefore(span,widget);
}
function validate_remove_message(widget){
  while(widget.previousSibling.nodeName == "SPAN"){
    widget.parentNode.removeChild(widget.previousSibling);
  }
}
function validate_set_error(widget,msg){
  var id = document.getElementById('submit_button');
  id.disabled = true;
  validate_add_message(id,"Please correct errors shown in red.&nbsp;");

  widget.style.border = "1px solid red";
  validate_add_message(widget,msg);

}
function validate_clear_error(widget){
  var id = document.getElementById('submit_button');
  validate_remove_message(widget);
  id.disabled = false;
  widget.style.border = "";
  validate_remove_message(widget);
  validate_remove_message(id);
}
function validate_zip(widget){
  validate_clear_error(widget);
  if(/^\s*\d{5}\s*$/.test(widget.value)) return;
  validate_set_error(widget,"Please enter 5 digits");
}
function validate_email(widget){
  validate_clear_error(widget);
  if(/^\s*[a-zA-Z0-9_]+@[a-zA-Z0-9]+\.[a-zA-Z]{3,3}\s*$/.test(widget.value)) return;
  validate_set_error(widget,"Please enter valid email address including '@' and .com , .net, .org or .edu");
}
function validate_date(widget){
  validate_clear_error(widget);
  if(/^\s*\d{1,2}\/\d{1,2}\/\d{2}$\s*/.test(widget.value)) return;
  if(/^\s*\d{1,2}\/\d{1,2}\/\d{4}$\s*/.test(widget.value)) return;
  if(/^\s*$/.test(widget.value)) return;
  validate_set_error(widget,"Please enter dates as mm/dd/yyyy ");
}
function validate_phone(widget){
  validate_clear_error(widget);
  if(/^\s*\d{3}[\-\.]?\d{3}[\-\.]?\d{4}\s*$/.test(widget.value)) return;
  if(/^\s*\(\d{3}\)[\-\.]?\d{3}[\-\.]?\d{4}\s*$/.test(widget.value)) return;
  if(/^\s*\(\d{3}\)\d{3}[\-\.]?\d{4}\s*$/.test(widget.value)) return;
  validate_set_error(widget,"Please enter a 10 digit phone number like 999-999-9999");
}
