function limit_chars(obj, limit)
{
   if (obj == null)
      return;

   if (obj.value.length > limit)
      obj.value = obj.value.substr(0, limit);
}

function setlabel_onfocus(obj, label)
{
   if (obj.value == label)
   {
      obj.value = "";
   }

   obj.className = obj.className.replace(/ input_unfocused/g, "");
}

function setlabel_onblur(obj, label)
{
   if (obj.value == "")
   {
      obj.value = label;
      obj.className += " input_unfocused";
   }
}

var phone_err = false;
function validate_phone(form, label)
{
   multiTarget = "validationError";
   //if the input values are the same as the labels, empty them
   if (form.qp.value == label)
      form.qp.value = '';

   //the regex below will test for a phone number that includes spaces, periods or dashes as delimiters
   //and optionally may have parentheses around the area code
   //any trailing characters will automatically be trimmed by the searchpack
   var valid = true;
   var regex = /^\s*\(?\s*[0-9]{3}\s*\)?\s*[-.]?\s*[0-9]{3}\s*[-.]?\s*[0-9]{4}.*$/;
   if (form.qp.value == null || form.qp.value == '' || !regex.test(form.qp.value))
      valid = false;

   if (!valid)
   {
      setlabel_onblur(form.qp, label);
      var errmsg = document.getElementById(multiTarget);
      var err = "Please enter a valid 10-digit phone number.";
      if (phone_err)
      {
         phone_err = false;
         errmsg.style.background = '#f00';
         errmsg.style.color = '#fff';
         errmsg.style.padding = '5px';
         errmsg.style.fontSize = '12px'
         errmsg.style.fontWeight = 'normal';
         errmsg.innerHTML = err;
         errmsg.style.display = "block";
      }
      else
      {
         phone_err = true;
         errmsg.style.background = '#f00';
         errmsg.style.color = '#fff';
         errmsg.style.padding = '5px';
         errmsg.style.fontSize = '12px';
         errmsg.style.fontWeight = 'normal';
         errmsg.innerHTML = err;
         errmsg.style.display = "block";
      }
   }
   else
   {
      phone_err = 0;
      errmsg.style.display = "none";
   }

   return valid;
}

var people_err = false;
function validate_people(form, label_qf, label_qn, label_qc)
{
   multiTarget = "validationError";
   //if the input values are the same as the labels, empty them
   if (form.qf.value == label_qf)
      form.qf.value = "";
   if (form.qn.value == label_qn)
      form.qn.value = "";
   if (form.qc.value == label_qc)
      form.qc.value = "";

   //replace dashes with spaces
   form.qf.value = form.qf.value.replace(/-/g, " ");
   form.qn.value = form.qn.value.replace(/-/g, " ");

   var valid = true;
   var count = 0;
   var regex_nonempty = /[a-zA-Z]{2,}/;
   if (form.qf != null && regex_nonempty.test(form.qf.value))
      count++;
   if (form.qn != null && regex_nonempty.test(form.qn.value))
      count++;
   if (form.qs.selectedIndex > 0)
      count++;
   if (count < 2)
      valid = false;
   if (form.qf.value.length == 1 || form.qn.value.length == 1)
      valid = false;

   //ensure that the field has a value that is not just whitespace or invalid characters
   var regex_blacklist = /[^a-zA-Z \']/;
   if (regex_blacklist.test(form.qf.value))
      valid = false;
   if (regex_blacklist.test(form.qn.value))
      valid = false;

   if (!valid)
   {
      setlabel_onblur(form.qf, label_qf);
      setlabel_onblur(form.qn, label_qn);
      setlabel_onblur(form.qc, label_qc);
      var errmsg = document.getElementById(multiTarget);
      var err = "Please fill out all required fields.<br>Names may only contain letters and must be at least 2 letters long.";
      if (people_err)
      {
         people_err = false;
         errmsg.style.background = '#f00';
         errmsg.style.color = '#fff';
         errmsg.style.fontSize = '12px'
         errmsg.style.fontWeight = 'normal';
         errmsg.style.padding = '5px';
         errmsg.innerHTML = err;
         errmsg.style.display = "block";
      }
      else
      {
         people_err = true;
         errmsg.style.background = '#f00';
         errmsg.style.color = '#fff';
         errmsg.style.fontSize = '12px'
         errmsg.style.fontWeight = 'normal';
         errmsg.style.padding = '5px';
         errmsg.innerHTML = err;
         errmsg.style.display = "block";
      }
   }
   else
   {
      people_err = 0;
      errmsg.style.display = "none";
   }

   return valid;
}

var contact_err = false;
function validate_contact(form, label_name, label_email, label_message)
{
   multiTarget = "validationError";
   //if the input values are the same as the labels, empty them
   if (form.name.value == label_name)
      form.name.value = "";
   if (form.email.value == label_email)
      form.email.value = "";

   //replace dashes with spaces
   form.name.value = form.name.value.replace(/-/g, " ");
   form.email.value = form.email.value.replace(/-/g, " ");

   var valid = false;
   var count = 0;
   var regex_nonempty = /[a-zA-Z]{2,}/;
   var regex_email = /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/;
   if (form.name != null && regex_nonempty.test(form.name.value))
      count++;
   if (form.email != null && regex_nonempty.test(form.email.value)) // && (regex_email.test(form.email.value) == true))
      count++;
   if (form.message != null && regex_nonempty.test(form.message.value))
      count++;
   if (count > 2)
      valid = true;

   //ensure that the field has a value that is not just whitespace or invalid characters
   var regex_blacklist = /[^a-zA-Z\. -\']/;
   if (regex_blacklist.test(form.name.value))
   {
      valid = false;
   }

   if (regex_blacklist.test(form.message.value))
   {
      valid = false;
   }

   var errmsg = document.getElementById(multiTarget);
   if (!valid)
   {
      setlabel_onblur(form.name, label_name);
      setlabel_onblur(form.email, label_email);
      var err = "Please fill out all fields.<br>";
      if (contact_err)
      {
         contact_err = false;
         errmsg.style.background = '#f00';
         errmsg.style.color = '#fff';
         errmsg.style.fontSize = '12px'
         errmsg.style.fontWeight = 'normal';
         errmsg.style.padding = '5px';
         errmsg.innerHTML = err;
         errmsg.style.display = "block";
      }
      else
      {
         contact_err = true;
         errmsg.style.background = '#f00';
         errmsg.style.color = '#fff';
         errmsg.style.fontSize = '12px'
         errmsg.style.fontWeight = 'normal';
         errmsg.style.padding = '5px';
         errmsg.innerHTML = err;
         errmsg.style.display = "block";
      }
   }
   else
   {
      contact_err = 0;
      errmsg.style.display = "none";
   }

   count = 0;

   return valid;
}


