function validateForgot(formname, elm){
   var errors = 0;
   var firstError = '';

   // Disable the submit button to avoid submitting twice and post a message to let the user know what's happening

   elm.disabled=true;
   document.getElementById('wait').innerHTML='Processing Request...  Please be patient.';
   document.getElementById('warning').innerHTML='';

   var field = 'user';
   if(document.getElementById(field).value.length == 0){
      showError(field, 'Username is required');
      if(firstError == ''){
         firstError = document.getElementById(field);
      }
      errors++;
   }else{
      clearError(field);
   }

   // If all is well, submit the form.  Else tell the user to correct their mistakes and focus on the first error.

   if(errors == 0){
      document.myform.submit();
   }else{
      elm.disabled=false;
      document.getElementById('wait').innerHTML=errors+' error(s) found on page.  Please correct<br />the fields highlighted in red and resubmit the form.';
      document.getElementById('warning').innerHTML=errors+' error(s) found on page.  Please correct<br />the fields highlighted in red and resubmit the form.';
      firstError.focus();
      return false;
   }
}

function validateProjectCode(field){
   if(document.getElementById(field).value.length > 0){
      document.myform.submit();
   }else{
      return false;
   }
}

function validateForgotUser(formname, elm){
   var errors = 0;
   var firstError = '';

   // Disable the submit button to avoid submitting twice and post a message to let the user know what's happening

   elm.disabled=true;
   document.getElementById('wait').innerHTML='Processing Request...  Please be patient.';

   var field = 'email';
   var emailFilter = /^[^@]+@[^@.]+\.[^@]*\w\w$/ ;
   var illegalChars= /[\(\)\<\>\,\;\:\\\"\[\]]/ ;
   if(document.getElementById(field).value.length == 0){
      showError(field, 'An email address is required');
      if(firstError == ''){
         firstError = document.getElementById(field);
      }
      errors++;
   }else if(!emailFilter.test(document.getElementById(field).value)){
      showError(field, 'Email address is not valid');
      if(firstError == ''){
         firstError = document.getElementById(field);
      }
      errors++;
   }else if(document.getElementById(field).value.match(illegalChars)){
      showError(field, 'Contains invalid characters');
      if(firstError == ''){
         firstError = document.getElementById(field);
      }
      errors++;
   }else{
      clearError(field);
   }

   // If all is well, submit the form.  Else tell the user to correct their mistakes and focus on the first error.

   if(errors == 0){
      document.myform.submit();
   }else{
      elm.disabled=false;
      document.getElementById('wait').innerHTML=errors+' error(s) found on page.  Please correct<br />the fields highlighted in red and resubmit the form.';
      document.getElementById('warning').innerHTML=errors+' error(s) found on page.  Please correct<br />the fields highlighted in red and resubmit the form.';
      firstError.focus();
      return false;
   }
}

function validateProject(formname, elm, numpocs){
   var errors = 0;
   var firstError = '';

   // Disable the submit button to avoid submitting twice and post a message to let the user know what's happening

   elm.disabled=true;
   document.getElementById('wait').innerHTML='Uploading project...  Please be patient.<br />This process can take a few minutes depending on file size.';
   document.getElementById('warning').innerHTML='';

   // Check the "Project Name" field to make sure something is entered

   var field = 'project_name';
   if(document.getElementById(field).value.length == 0){
      showError(field, 'Project name is required');
      if(firstError == ''){
         firstError = document.getElementById(field);
      }
      errors++;
   }else{
      clearError(field);
   }

   // Check to make sure the zip code is valid, if entered

   var field = 'zip';
   if(document.getElementById(field).value.length > 0){
      re = new RegExp(/(^\d{5}$)|(^\d{5}-\d{4}$)/);
      if (!re.test(document.getElementById(field).value)) {
         showError(field, 'Not a valid zip code');
         if(firstError == ''){
            firstError = document.getElementById(field);
         }
         errors++;
      }else{
         clearError(field);
      }
   }

   // Check to make sure a valid due date is selected, if entered

   var field = 'dateinput';
   if(document.getElementById(field).value.length > 0){
      re = new RegExp(/^\d{1,2}\/\d{1,2}\/\d{4}$/);
      if (!re.test(document.getElementById(field).value)) {
         showError(field, 'Not a valid date');
         if(firstError == ''){
            firstError = document.getElementById(field);
         }
         errors++;
      }else{
         clearError(field);
      }
   }

   // Check to make sure a point of contact was selected

   var field = 'poc';
   var checkFound = false;
   for(var i=0; i<numpocs; i++){
      if(document.getElementsByName('poc_id'+i)[0].checked == true){
         checkFound = true;
      }
   }
   if(checkFound == false){
      showError(field, 'Select one or more<br />&nbsp;&nbsp;&nbsp;Point(s) of Contact');
      if(firstError == ''){
         firstError = document.getElementById(field);
      }
      errors++;
   }else{
      clearError(field);
   }

   // Check to see if a file was selected, the file name is filled in as well

   for(var i=1; i<18; i++){
   var field = 'title_'+i;
      if(document.getElementById('stuff_'+i)){
         if(document.getElementById('stuff_'+i).value != ''){
            if(document.getElementById(field).value.length == 0){
               showError(field, 'You must name the uploaded file');
               if(firstError == ''){
                  firstError = document.getElementById(field);
               }
               errors++;
            }else{
               clearError(field);
            }
         }
      }
   }

   // Check to make sure something is typed in the "Email Message" field, unless the checkbox to not send email has been checked
/*
   var field = 'emailmsg';
   if(document.getElementsByName('donotsend')[0].checked == false){
      if(document.getElementById(field).value.length == 0){
         showError(field, 'An email message is required<br />&nbsp;&nbsp;&nbsp;unless you check the box');
         if(firstError == ''){
            firstError = document.getElementById(field);
         }
         errors++;
      }else{
         clearError(field);
      }
   }else{
      clearError(field);
   }
*/
   // If all is well, submit the form.  Else tell the user to correct their mistakes and focus on the first error.

   if(errors == 0){
      document.myform.submit();
   }else{
      elm.disabled=false;
      document.getElementById('wait').innerHTML=errors+' error(s) found on page.  Please correct<br />the fields highlighted in red and resubmit the form.';
      document.getElementById('warning').innerHTML=errors+' error(s) found on page.  Please correct<br />the fields highlighted in red and resubmit the form.';
      firstError.focus();
      return false;
   }
}

function validatePOC(formname, elm){
   var errors = 0;
   var firstError = '';

   // Disable the submit button to avoid submitting twice and post a message to let the user know what's happening

   elm.disabled=true;
   document.getElementById('wait').innerHTML='Processing Request...  Please be patient.';
   document.getElementById('warning').innerHTML='';

   // Check the "First Name" field to make sure something is entered

   var field = 'first_name';
   if(document.getElementById(field).value.length == 0){
      showError(field, 'First name is required');
      if(firstError == ''){
         firstError = document.getElementById(field);
      }
      errors++;
   }else{
      clearError(field);
   }

   // Check the "Last Name" field to make sure something is entered

   var field = 'last_name';
   if(document.getElementById(field).value.length == 0){
      showError(field, 'Last name is required');
      if(firstError == ''){
         firstError = document.getElementById(field);
      }
      errors++;
   }else{
      clearError(field);
   }

   // Check the "Phone Number" field to make sure something is entered and is a valid phone number

   var field = 'phone';
   var stripped = document.getElementById(field).value.replace(/[\(\)\.\-\ ]/g, '');
   if(document.getElementById(field).value.length == 0){
      showError(field, 'A phone number is required');
      if(firstError == ''){
         firstError = document.getElementById(field);
      }
      errors++;
   }else if(isNaN(parseInt(stripped))){
      showError(field, 'Contains invalid characters');
      if(firstError == ''){
         firstError = document.getElementById(field);
      }
      errors++;
   }else if(!(stripped.length == 10)){
      showError(field, 'Phone number must be 10 digits long including area code');
      if(firstError == ''){
         firstError = document.getElementById(field);
      }
      errors++;
   }else{
      clearError(field);
   }

   // Check the extension to make sure its 3 digits

   var field = 'extension';
   var numericExpression = /^[0-9]+$/;
   if(document.getElementById(field).value.length == 0){
      showError(field, 'A 3 digit extension is required');
      if(firstError == ''){
         firstError = document.getElementById(field);
      }
      errors++;
   }else if(!document.getElementById(field).value.match(numericExpression)){
      showError(field, 'Contains invalid characters');
      if(firstError == ''){
         firstError = document.getElementById(field);
      }
      errors++;
   }else if(!(document.getElementById(field).value.length == 3)){
      showError(field, 'Must be 3 digits long');
      if(firstError == ''){
         firstError = document.getElementById(field);
      }
      errors++;
   }else{
      clearError(field);
   }

   // Check the "Fax Number" field to make sure something is entered and is a valid fax number

   var field = 'fax';
   var stripped = document.getElementById(field).value.replace(/[\(\)\.\-\ ]/g, '');
   if(document.getElementById(field).value.length == 0){
      showError(field, 'A fax number is required');
      if(firstError == ''){
         firstError = document.getElementById(field);
      }
      errors++;
   }else if(isNaN(parseInt(stripped))){
      showError(field, 'Contains invalid characters');
      if(firstError == ''){
         firstError = document.getElementById(field);
      }
      errors++;
   }else if(!(stripped.length == 10)){
      showError(field, 'Fax number must be 10 digits long including area code');
      if(firstError == ''){
         firstError = document.getElementById(field);
      }
      errors++;
   }else{
      clearError(field);
   }

   // Check the "Email Address" field to make sure something is entered and is a valid email address

   var field = 'email';
   var emailFilter = /^[^@]+@[^@.]+\.[^@]*\w\w$/ ;
   var illegalChars= /[\(\)\<\>\,\;\:\\\"\[\]]/ ;
   if(document.getElementById(field).value.length == 0){
      showError(field, 'An email address is required');
      if(firstError == ''){
         firstError = document.getElementById(field);
      }
      errors++;
   }else if(!emailFilter.test(document.getElementById(field).value)){
      showError(field, 'Email address is not valid');
      if(firstError == ''){
         firstError = document.getElementById(field);
      }
      errors++;
   }else if(document.getElementById(field).value.match(illegalChars)){
      showError(field, 'Contains invalid characters');
      if(firstError == ''){
         firstError = document.getElementById(field);
      }
      errors++;
   }else{
      clearError(field);
   }

   // If all is well, submit the form.  Else tell the user to correct their mistakes and focus on the first error.

   if(errors == 0){
      document.myform.submit();
   }else{
      elm.disabled=false;
      document.getElementById('wait').innerHTML=errors+' error(s) found on page.  Please correct<br />the fields highlighted in red and resubmit the form.';
      document.getElementById('warning').innerHTML=errors+' error(s) found on page.  Please correct<br />the fields highlighted in red and resubmit the form.';
      firstError.focus();
      return false;
   }
}

function validateAccountEdit(formname, elm, opt){
   var errors = 0;
   var firstError = '';

   // Disable the submit button to avoid submitting twice and post a message to let the user know what's happening

   elm.disabled=true;
   document.getElementById('wait').innerHTML='Processing Request...  Please be patient.';
   document.getElementById('warning').innerHTML='';

   // Check the "First Name" field to make sure something is entered

   var field = 'fname';
   if(document.getElementById(field).value.length == 0){
      showError(field, 'First name is required');
      if(firstError == ''){
         firstError = document.getElementById(field);
      }
      errors++;
   }else{
      clearError(field);
   }

   // Check the "Last Name" field to make sure something is entered

   var field = 'lname';
   if(document.getElementById(field).value.length == 0){
      showError(field, 'Last name is required');
      if(firstError == ''){
         firstError = document.getElementById(field);
      }
      errors++;
   }else{
      clearError(field);
   }

   // Check the "Company Name" field to make sure something is entered

   var field = 'company';
   if(document.getElementById(field).value.length == 0){
      showError(field, 'Company name is required');
      if(firstError == ''){
         firstError = document.getElementById(field);
      }
      errors++;
   }else{
      clearError(field);
   }

   // Check the "Company Address" field to make sure something is entered

   var field = 'address';
   if(document.getElementById(field).value.length == 0){
      showError(field, 'Company address is required');
      if(firstError == ''){
         firstError = document.getElementById(field);
      }
      errors++;
   }else{
      clearError(field);
   }

   // Check the "Job Title" field to make sure something is entered

   var field = 'trade';
   if(document.getElementById(field).value.length == 0){
      showError(field, 'Job Title is required');
      if(firstError == ''){
         firstError = document.getElementById(field);
      }
      errors++;
   }else{
      clearError(field);
   }

   // Check the "Email Address" field to make sure something is entered and is a valid email address

   var field = 'email';
   var emailFilter = /^[^@]+@[^@.]+\.[^@]*\w\w$/ ;
   var illegalChars= /[\(\)\<\>\,\;\:\\\"\[\]]/ ;
   if(document.getElementById(field).value.length == 0){
      showError(field, 'An email address is required');
      if(firstError == ''){
         firstError = document.getElementById(field);
      }
      errors++;
   }else if(!emailFilter.test(document.getElementById(field).value)){
      showError(field, 'Email address is not valid');
      if(firstError == ''){
         firstError = document.getElementById(field);
      }
      errors++;
   }else if(document.getElementById(field).value.match(illegalChars)){
      showError(field, 'Contains invalid characters');
      if(firstError == ''){
         firstError = document.getElementById(field);
      }
      errors++;
   }else{
      clearError(field);
   }

   // Check the "Cell Phone" field to make sure something is entered and is a valid email address

   var field = 'cell';
   var stripped = document.getElementById(field).value.replace(/[\(\)\.\-\ ]/g, '');
   if(document.getElementById(field).value.length == 0){
      showError(field, 'A cell phone number is required');
      if(firstError == ''){
         firstError = document.getElementById(field);
      }
      errors++;
   }else if(isNaN(parseInt(stripped))){
      showError(field, 'Contains invalid characters');
      if(firstError == ''){
         firstError = document.getElementById(field);
      }
      errors++;
   }else if(!(stripped.length == 10)){
      showError(field, 'Number must be 10 digits long');
      if(firstError == ''){
         firstError = document.getElementById(field);
      }
      errors++;
   }else{
      clearError(field);
   }

   var field = 'curpass'
   if(document.getElementById(field)){
      if((document.getElementById('newpass').value.length > 0 || document.getElementById('confirmpass').value.length > 0) && document.getElementById(field).value.length == 0){
         showError(field, 'Current password not entered');
         if(firstError == ''){
            firstError = document.getElementById(field);
         }
         errors++;
      }else{
         clearError(field);
      }
   }

   var field = 'user'
   var alphaExp = /^[0-9a-zA-Z]+$/;
   if(document.getElementById(field)){
      if(document.getElementById(field).value.length == 0){
         showError(field, 'Username not entered');
         if(firstError == ''){
            firstError = document.getElementById(field);
         }
         errors++;
      }else if(!(document.getElementById(field).value.match(alphaExp))){
         showError(field, 'Username must be alphanumeric');
         if(firstError == ''){
            firstError = document.getElementById(field);
         }
         errors++;
      }else if(document.getElementById(field).value.length < 5){
         showError(field, 'Must be at least 5 characters');
         if(firstError == ''){
            firstError = document.getElementById(field);
         }
         errors++;
      }else if(document.getElementById(field).value.length > 30){
         showError(field, 'Cannot be longer than 30 characters');
         if(firstError == ''){
            firstError = document.getElementById(field);
         }
         errors++;
      }else{
         clearError(field);
      }
   }

   var field = 'newpass';
   var field2 = 'confirmpass';
   var alphaExp = /^[0-9a-zA-Z]+$/;
   if(document.getElementById(field).value.length > 0){
      if(document.getElementById(field2).value != document.getElementById(field).value){
         showError(field2, 'Passwords do not match');
         if(firstError == ''){
            firstError = document.getElementById(field);
         }
         errors++;
      }else{
         clearError(field2);
      }
      if(!(document.getElementById(field).value.match(alphaExp))){
         showError(field, 'Password must be alphanumeric');
         if(firstError == ''){
            firstError = document.getElementById(field);
         }
         errors++;
      }else if(document.getElementById(field).value.length < 4){
         showError(field, 'Password must be longer than 4 characters');
         if(firstError == ''){
            firstError = document.getElementById(field);
         }
         errors++;
      }else{
         clearError(field);
      }
   }else if(document.getElementById(field2).value.length > 0){
      if(document.getElementById(field2).value != document.getElementById(field).value){
         showError(field, 'Passwords do not match');
         if(firstError == ''){
            firstError = document.getElementById(field);
         }
         errors++;
      }else{
         clearError(field);
      }
   }else{
         clearError(field);
         clearError(field2);
   }
   if(opt == 'new'){
      if(document.getElementById(field).value.length == 0){
         showError(field, 'Password not entered');
         if(firstError == ''){
            firstError = document.getElementById(field);
         }
         errors++;      
      }
      if(document.getElementById(field2).value.length == 0){
         showError(field2, 'Password not confirmed');
         if(firstError == ''){
            firstError = document.getElementById(field2);
         }
         errors++;      
      }
   }

   var field = 'subRedeem'
   var alphaExp = /^[0-9a-zA-Z]+$/;
   if(document.getElementById(field)){
      if(document.getElementById(field).value.length > 0){
         if(!(document.getElementById(field).value.match(alphaExp))){
            showError(field, 'Project code must be alphanumeric');
            if(firstError == ''){
               firstError = document.getElementById(field);
            }
            errors++;
         }else{
            clearError(field);
         }
      }
   }

   // If all is well, submit the form.  Else tell the user to correct their mistakes and focus on the first error.

   if(errors == 0){
      document.myform.submit();
   }else{
      elm.disabled=false;
      document.getElementById('wait').innerHTML=errors+' error(s) found on page.  Please correct<br />the fields highlighted in red and resubmit the form.';
      document.getElementById('warning').innerHTML=errors+' error(s) found on page.  Please correct<br />the fields highlighted in red and resubmit the form.';
      firstError.focus();
      return false;
   }
}


function showError(field, msg){
   if(field != 'poc'){
      document.getElementById(field).style.backgroundColor = '#EBD3D3';
   }
   document.getElementById(field + '_title').style.backgroundColor = '#EBD3D3';
   document.getElementById(field + '_title').style.border = '1px solid #9A3D36';
   document.getElementById(field + '_error').innerHTML = '* ' + msg;
}

function clearError(field){
   if(field != 'poc'){
      document.getElementById(field).style.backgroundColor = 'transparent';
   }
   document.getElementById(field + '_title').style.backgroundColor = 'transparent';
   document.getElementById(field + '_title').style.border = '1px solid #000';
   document.getElementById(field + '_error').innerHTML = '&nbsp;';
}