<!--

function valid(form)

{

   var noop;

   //----------------------------------------------------------------------------------------------------------------
   // Get required/not required values from form
   //----------------------------------------------------------------------------------------------------------------
 
   var Email_Req = 0;
   var AcntNum_Req = 0;

   var Choice_Req = 0;   
   var Request_Type_Req = 0;   

   var Daytime_Phone_Req = 0;   
   var Evening_Phone_Req = 0;   
   var Phone_Req = 0;   

   var Response_Type_Req = 0;  

   var Address1_Req = 0;
   var Address2_Req = 0;

   var City_Req = 0;
   var State_Req = 0;

   var Zip_Req = 0;
   var ZipPlus4_Req = 0;

   var FName_Req = 0;
   var MName_Req = 0;
   var LName_Req = 0;

   var Meter_Read_Req = 0;
   var Meter_Read_Dte_Req = 0;

   var Date_Gas_Service_Req = 0;

   var Comments_Questions_Req = 0;

   var Company_Req = 0;

   var Budget_Billing_Ind_Req = 0;

   var Confirm_Req = 0;

   var temp = '';

   //-------------------------------------
   
   var Acntstr = 0;     	                                 // force the field to be numeric
   var Emailstr = "";

   var DaytimePhone1str = "";
   var DaytimePhone2str = "";
   var DaytimePhone3str = "";
   var DaytimePhoneExt = "";

   var EveningPhone1str = "";
   var EveningPhone2str = "";
   var EveningPhone3str = "";
   var EveningPhoneExt = "";
  
   var Phone1str = "";
   var Phone2str = "";
   var Phone3str = "";
   var PhoneExt  = "";

   var Fnamestr = "";
   var Mnamestr = "";
   var Lnamestr = "";

   var Address1str = "";
   var Address2str = "";
   var Citystr = "";
   var Statestr = "";
   var Zipstr = "";
   var ZipPlus4str = "";

   var MeterReadstr = "";

   var MeterReadmmstr = "";
   var MeterReadddstr = "";
   var MeterReadyyyystr = "";

   var DateGasServiceReqmmstr = "";
   var DateGasServiceReqddstr = "";
   var DateGasServiceReqyyyystr = "";

   var Comments_Questionsstr = "";
   var Companystr = "";

   var Budget_Billing_Indstr = "";
   var Confirmstr = "";
        
   //----------------------------------------------------------------------------------------------------------------
   // Check for null input on "required" field switches
   //----------------------------------------------------------------------------------------------------------------

     
   if (form.Email_Required)
      if (form.Email_Required.value != null) 
         Email_Req = form.Email_Required.value;

   if (form.AcntNum_Required)
      if (form.AcntNum_Required.value != null) 
         AcntNum_Req = form.AcntNum_Required.value;

   if (form.FName_Required)
      if (form.FName_Required.value != null) 
         FName_Req = form.FName_Required.value;

   if (form.MName_Required)
      if (form.MName_Required.value != null) 
         MName_Req = form.MName_Required.value;

   if (form.LName_Required)
      if (form.LName_Required.value != null) 
         LName_Req = form.LName_Required.value;

   if (form.Meter_Read_Dte_Required)
      if (form.Meter_Read_Dte_Required.value != null) 
         Meter_Read_Dte_Req = form.Meter_Read_Dte_Required.value;

   if (form.Date_Gas_Service_Required)
      if (form.form.Date_Gas_Service_Required.value != null) 
         Date_Gas_Service_Req = form.Date_Gas_Service_Required.value;

   if (form.Meter_Read_Required)
      if (form.Meter_Read_Required.value != null) 
         Meter_Read_Req = form.Meter_Read_Required.value;

   if (form.Phone_Required)
      if (form.Phone_Required.value != null) 
         Phone_Req = form.Phone_Required.value;

   if (form.DayPhone_Required)
      if (form.DayPhone_Required.value != null) 
         Daytime_Phone_Req = form.DayPhone_Required.value;

   if (form.EveningPhone_Required)
      if (form.EveningPhone_Required.value != null) 
         Evening_Phone_Req = form.EveningPhone_Required.value;

   if (form.Choice_Required)
      if (form.Choice_Required.value != null) 
         Choice_Req = form.Choice_Required.value;

   if (form.Response_Type_Required)
      if (form.Response_Type_Required.value != null) 
         Response_Type_Req = form.Response_Type_Required.value;

   if (form.Address1_Required)
      if (form.Address1_Required.value != null) 
         Address1_Req = form.Address1_Required.value;

   if (form.Address2_Required)
      if (form.Address2_Required.value != null) 
         Address2_Req = form.Address2_Required.value;

   if (form.City_Required)
      if (form.City_Required.value != null) 
         City_Req = form.City_Required.value;

   if (form.State_Required)
      if (form.State_Required.value != null) 
         State_Req = form.State_Required.value;

   if (form.Zip_Required)
      if (form.Zip_Required.value != null) 
         Zip_Req = form.Zip_Required.value;

   if (form.ZipPlus4_Required)
      if (form.ZipPlus4_Required.value != null) 
         ZipPlus4_Req = form.ZipPlus4_Required.value;

   if (form.Comments_Questions_Required)
      if (form.Comments_Questions_Required.value != null) 
         Comments_Questions_Req = form.Comments_Questions_Required.value;

   if (form.Company_Name_Required)
      if (form.Company_Name_Required.value != null) 
         Company_Req = form.Company_Name_Required.value;

   if (form.Budget_Billing_Start_Required)
      if (form.Budget_Billing_Start.value != null) 
         Budget_Billing_Ind_Req = form.Budget_Start_Required.value;

   if (form.Confirm_Required)
      if (form.Confirm.value != null) 
         Confirm_Req = form.Confirm.value;

   //----------------------------------------------------------------------------------------------------------------
   // Check for null input on the fields themselves
   //----------------------------------------------------------------------------------------------------------------

   if (form.Email_Address)
      if (form.Email_Address.value != null) 
         Emailstr = form.Email_Address.value;

   if (form.Account_Number)
       if (form.Account_Number.value != null) 
          Acntstr = form.Account_Number.value;

   if (form.Daytime_Phone1)
       if (form.Daytime_Phone1.value != null) 
          DaytimePhone1str = form.Daytime_Phone1.value;

   if (form.Daytime_Phone2)
       if (form.Daytime_Phone2.value != null) 
          DaytimePhone2str = form.Daytime_Phone2.value;

   if (form.Daytime_Phone3)
       if (form.Daytime_Phone3.value != null) 
          DaytimePhone3str = form.Daytime_Phone3.value;

   if (form.Daytime_Phone_Ext)
       if (form.Daytime_Phone_Ext.value != null) 
          DaytimePhoneExt = form.Daytime_Phone_Ext.value;

   if (form.Evening_Phone1)
       if (form.Evening_Phone1.value != null) 
          EveningPhone1str = form.Evening_Phone1.value;

   if (form.Evening_Phone2)
       if (form.Evening_Phone2.value != null) 
          EveningPhone2str = form.Evening_Phone2.value;

   if (form.Evening_Phone3)
       if (form.Evening_Phone3.value != null) 
          EveningPhone3str = form.Evening_Phone3.value;

   if (form.Evening_Phone_Ext)
       if (form.Evening_Phone_Ext.value != null) 
          EveningPhoneExt = form.Evening_Phone_Ext.value;

   if (form.Phone1)
       if (form.Phone1.value != null) 
          Phone1str = form.Phone1.value;

   if (form.Phone2)
       if (form.Phone2.value != null) 
          Phone2str = form.Phone2.value;

   if (form.Phone3)
       if (form.Phone3.value != null) 
          Phone3str = form.Phone3.value;

   if (form.Phone_Ext)
       if (form.Phone_Ext.value != null) 
          PhoneExt = form.Phone_Ext.value;

   if (form.Address_1)
      if (form.Address_1.value != null) 
         Address1str = form.Address_1.value;

   if (form.Address_2)
      if (form.Address_2.value != null) 
         Address2str = form.Address_2.value;

   if (form.City) 
      if (form.City.value != null)
         Citystr = form.City.value;

   if (form.State) 
      if (form.State.value != null)
         Statestr = form.State.value;

   if (form.Zip) 
      if (form.Zip.value != null)
         Zipstr = form.Zip.value;

   if (form.ZipPlus4) 
      if (form.ZipPlus4.value != null)
         ZipPlus4str = form.ZipPlus4.value;

   if (form.FName)
       if (form.FName.value != null) 
          FNamestr = form.FName.value;

   if (form.MName)
       if (form.MName.value != null) 
          MNamestr = form.MName.value;

   if (form.LName)
       if (form.LName.value != null) 
          LNamestr = form.LName.value;

   if (form.Date_Gas_Service_Req_mm)
       if (form.Date_Gas_Service_Req_mm.value != null) 
          DateGasServiceReqmmstr = form.Date_Gas_Service_Req_mm.value;

   if (form.Date_Gas_Service_Req_dd)
       if (form.Date_Gas_Service_Req_dd.value != null) 
          DateGasServiceReqddstr = form.Date_Gas_Service_Req_dd.value;

   if (form.Date_Gas_Service_Req_yyyy)
       if (form.Date_Gas_Service_Req_yyyy.value != null) 
          DateGasServiceReqyyyystr = form.Date_Gas_Service_Req_yyyy.value;

   if (form.Meter_Read)
       if (form.Meter_Read.value != null) 
          MeterReadstr = form.Meter_Read.value;
          
   if (form.Meter_Read_mm)
       if (form.Meter_Read_mm.value != null) 
          MeterReadmmstr = form.Meter_Read_mm.value;

   if (form.Meter_Read_dd)
       if (form.Meter_Read_dd.value != null) 
          MeterReadddstr = form.Meter_Read_dd.value;

   if (form.Meter_Read_yyyy)
       if (form.Meter_Read_yyyy.value != null) 
          MeterReadyyyystr = form.Meter_Read_yyyy.value;

   if (form.Comments_Questions)
       if (form.Comments_Questions.value != null) 
          Comments_Questionsstr = form.Comments_Questions.value;

   if (form.Company_Name)
       if (form.Company_Name.value != null) 
          Companystr = form.Company_Name.value;

   if (form.Budget_Billing_Start)
       if (form.Budget_Billing_Start.value != null) 
          Budget_Billing_Indstr = form.Budget_Billing_Start.value;

   if (form.Confirm)
       if (form.Confirm.value != null) 
          Confirmstr = form.Confirm.value;

   //----------------------------------------------------------------------------------------------------------------
   // If Contact2xxx, ensure that a response type is requested. 
   // This also sets what is required based on the cutomer's choice. 
   //----------------------------------------------------------------------------------------------------------------

   if (Response_Type_Req == 1) { 
      var count_selected = 0;
      var max_selects = form.Response_Type_Requested.length;
      if (form.Response_Type_Requested) {   
         for (var idx = 0; idx < max_selects; idx++){ 
            if (eval(form.Response_Type_Requested[idx].selected) == true){
               count_selected=1;	
               switch (form.Response_Type_Requested[idx].value) {
                  case "Daytime_Phone":
                     Daytime_Phone_Req = 1;
                     break;
                  case "Evening_Phone":
                     Evening_Phone_Req = 1;
                     break;
                  case "Email_Only":
                     Email_Req = 1;
                     break;
                  case "All":
                     Daytime_Phone_Req = 1;
                     Evening_Phone_Req = 1;
                     Email_Req = 1;
                     break;
               } //switch 
            }  // if 
         }  //for
      } //if
      if (count_selected == 0) {
         alert ("Please specify how you wish to be contacted."); 
         form.Response_Type_Requested[0].focus();
         form.Response_Type_Requested[0].select();
         return false;
      }
   }

   //----------------------------------------------------------------------------------------------------------------
   // Validate Email address
   //----------------------------------------------------------------------------------------------------------------

   if (Email_Req == 1 || Emailstr.length > 0) { 
      var reg1 = /(@.*@)|(\.\.)|(@\.)|(\.@)|(^\.)/;                              // not valid
      var reg2 = /^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,3}|[0-9]{1,3})(\]?)$/; // valid
      if (!reg1.test(Emailstr) && reg2.test(Emailstr))                           // if syntax is valid
         noop = 1;
      else { 
         alert("Please enter a valid email address.");                           // invalid email message
         form.Email_Address.focus();
         form.Email_Address.select();
         return false; 
      }
   }

   //----------------------------------------------------------------------------------------------------------------
   // Ensure that the user has chosen at least one item from a checkbox list.
   // this was placed first because it appears first in contact5 and contact6.
   //----------------------------------------------------------------------------------------------------------------

   if (Choice_Req == 1) { 
      var count_checks = 0;
      var max_checks = form.Choice.length;
      if (form.Choice)    
         for (var idx = 0; idx < max_checks; idx++){ 
            if (eval(form.Choice[idx].checked) == true) count_checks+=1;}
      if (count_checks == 0) {
         alert ("Please choose at least one."); 
         form.Choice[0].focus();
         form.Choice[0].select();
         return false;
      }
   }

   //----------------------------------------------------------------------------------------------------------------
   // Validate Confirm
   //----------------------------------------------------------------------------------------------------------------

   if (Confirm_Req == 1) { 
      if (Confirm.length < 1) {  
         alert ("Please confirm your request."); 
         form.Confirm.focus();
         form.Confirm.select();
         return false;
      }
   }

   //----------------------------------------------------------------------------------------------------------------
   // Validate Company Name
   //----------------------------------------------------------------------------------------------------------------

   if (Company_Req == 1) 
       if (Companystr.length < 1) {  
          alert ("Please provide a company name."); 
          form.Company_Name.focus();
          form.Company_Name.select();
          return false;
       }

   //----------------------------------------------------------------------------------------------------------------
   // Validate Name 
   //----------------------------------------------------------------------------------------------------------------

    if (FName_Req == 1) 
       if (FNamestr.length < 1) {  
          alert ("Please enter a first name."); 
          form.FName.focus();
          form.FName.select();
          return false;
       }
   
    if (MName_Req == 1) 
       if (MNamestr.length != 1) {
          alert ("Please enter a middle initial."); 
          form.MName.focus();
          form.MName.select();
          return false;
       }
    
    if (LName_Req == 1) 
       if (LNamestr.length < 1) {
          alert ("Please enter a last name."); 
          form.LName.focus();
          form.LName.select();
          return false;
       }

   //----------------------------------------------------------------------------------------------------------------
   // Validate Street Address
   //----------------------------------------------------------------------------------------------------------------

   if (Address1_Req == 1) 
      if (Address1str.length < 1) {  
         alert ("Please enter your address"); 
         form.Address_1.focus();
         form.Address_1.select();
         return false;
      }

   if (Address2_Req == 1) 
      if (Address2str.length < 1) {  
         alert ("Please enter the second line of your address"); 
         form.Address_2.focus();
         form.Address_2.select();
         return false;
      }

   if (City_Req == 1) 
      if (Citystr.length < 1) {  
         alert ("Please enter your city"); 
         form.City.focus();
         form.City.select();
         return false;
      }

   if (State_Req == 1) 
      if (Statestr.length < 2) {  
         alert ("Please enter your state"); 
         form.State.focus();
         form.State.select();
         return false;
      }

   //----------------------------------------------------------------------------------------------------------------
   // Validate Zip code
   //----------------------------------------------------------------------------------------------------------------

   var goodzip = 1;
   var goodzipplus4 = 1;

   if (ZipPlus4_Req) Zip_Req = 1;

   if (Zipstr.length > 0) Zip_Req = 1;

   if (ZipPlus4str.length > 0){
       Zip_Req = 1;
       ZipPlus4_Req = 1;
   }

   if (Zip_Req == 1)
      if (Zipstr.length < 1)  goodzip = 0;

   if (ZipPlus4_Req == 1) {
      if (!IsNumeric(ZipPlus4str)) goodzipplus4 = 0;
      if (ZipPlus4str.length < 4)  goodzipplus4 = 0;
      if (Zipstr.length < 5) goodzip = 0;
   }

   if (goodzip == 0){ 
         alert("Please enter a valid zip code.");  
         form.Zip.focus();
         form.Zip.select();
         return false;
   }

   if (goodzipplus4 == 0){ 
         alert("Please enter a valid ZIP+4 code.");  
         form.ZipPlus4.focus();
         form.ZipPlus4.select();
         return false;
   }

   //----------------------------------------------------------------------------------------------------------------
   // Validate Account Number
   //----------------------------------------------------------------------------------------------------------------

   if (AcntNum_Req == 1 || Acntstr.length > 0)             
      if (isNaN(Acntstr) || Acntstr.length != 12) {
         alert ("Please enter a valid account number."); 
         form.Account_Number.focus();
         form.Account_Number.select();
         return false;
      }

   //----------------------------------------------------------------------------------------------------------------
   // Validate Meter Read Date 
   //----------------------------------------------------------------------------------------------------------------

   if (MeterReadmmstr.length > 0 || MeterReadddstr.length > 0 || MeterReadyyyystr.length > 0) Meter_Read_Dte_Req = 1;
 
   if (Meter_Read_Dte_Req == 1) 
      if (!checkdate(MeterReadmmstr,MeterReadddstr,MeterReadyyyystr)){
         alert("Please enter a valid meter read date.");
         form.Meter_Read_mm.focus();
         form.Meter_Read_mm.select();
         return false; 
      }

   //----------------------------------------------------------------------------------------------------------------
   // Validate Meter Read
   //----------------------------------------------------------------------------------------------------------------


   if (MeterReadstr != "") Meter_Read_Req = 1;
       
   if (MeterReadstr) 
      if (MeterReadstr.length < 7 || MeterReadstr.length > 0) {  
         zeros_needed = 7 - MeterReadstr.length;
         temp = ''; 
         for (i=1;i <= zeros_needed;i++){
            temp = temp + '0';
         }
         MeterReadstr = temp + MeterReadstr;
         form.Meter_Read.value = MeterReadstr;
         }

   if (Meter_Read_Req == 1) 
      if (isNaN(MeterReadstr) || MeterReadstr.length < 7) {
        alert ("Please enter a valid meter read."); 
        form.Meter_Read.focus();
        form.Meter_Read.select();
        return false;
      }

   //----------------------------------------------------------------------------------------------------------------
   // Validate Date Gas Requested 
   //----------------------------------------------------------------------------------------------------------------

   if (DateGasServiceReqmmstr.length > 0 || DateGasServiceReqddstr.length > 0 || DateGasServiceReqyyyystr.length > 0) Date_Gas_Service_Req = 1;
 
   if (Date_Gas_Service_Req == 1) 
      if (!checkdate(DateGasServiceReqmmstr,DateGasServiceReqddstr,DateGasServiceReqyyyystr)){
         alert("Please enter a valid date that Gas service is required.");
         form.Date_Gas_Service_Req_mm.focus();
         form.Date_Gas_Service_Req_mm.select();
         return false; 
      }

   //----------------------------------------------------------------------------------------------------------------
   // Validate Daytime Phone #
   //----------------------------------------------------------------------------------------------------------------
  
   if (DaytimePhone1str.length > 0 || DaytimePhone2str.length > 0 || DaytimePhone3str.length > 0 || DaytimePhoneExt.length > 0) Daytime_Phone_Req = 1; 

   if (Daytime_Phone_Req == 1) 
      if (!CheckPhone(DaytimePhone1str,DaytimePhone2str,DaytimePhone3str)){ 
         alert("Please enter a valid daytime phone number.");  
         form.Daytime_Phone1.focus();
         form.Daytime_Phone1.select();
         return false;
      }

   //----------------------------------------------------------------------------------------------------------------
   // Validate Evening Phone #
   //----------------------------------------------------------------------------------------------------------------
  
   if (EveningPhone1str.length > 0 || EveningPhone2str.length > 0 || EveningPhone3str.length > 0 || EveningPhoneExt.length > 0) Evening_Phone_Req = 1; 

   if (Evening_Phone_Req == 1) 
      if (!CheckPhone(EveningPhone1str,EveningPhone2str,EveningPhone3str)){ 
         alert("Please enter a valid evening phone number.");  
         form.Evening_Phone1.focus();
         form.Evening_Phone1.select();
         return false;
      }

   //----------------------------------------------------------------------------------------------------------------
   // Validate Generic Phone #
   //----------------------------------------------------------------------------------------------------------------

   if (Phone1str.length > 0 || Phone2str.length > 0 || Phone3str.length > 0 || PhoneExt.length > 0) Phone_Req = 1; 

   if (Phone_Req == 1) 
      if (!CheckPhone(Phone1str,Phone2str,Phone3str)){ 
         alert("Please enter a valid phone number.");  
         form.Phone1.focus();
         form.Phone1.select();
         return false;
      }

   //----------------------------------------------------------------------------------------------------------------
   // Validate Comments/Questions
   //----------------------------------------------------------------------------------------------------------------

    if (Comments_Questions_Req == 1)
       if (Comments_Questionsstr.length < 1) {
          alert ("Please enter the reason for your inquiry. There is a limit of 2000 characters."); 
          form.Comments_Questions.focus();
          form.Comments_Questions.select();
          return false;
      }

     if (Comments_Questionsstr.length > 0)
        if (Comments_Questionsstr.length > 2000) { 
           alert ("You have exceeded the maximum length (2000 characters) for this field.  Please shorten your response."); 
           form.Comments_Questions.focus();
           form.Comments_Questions.select();
           return false;
        }

   //----------------------------------------------------------------------------------------------------------------
   // Validate Budget_Billing_Ind
   //----------------------------------------------------------------------------------------------------------------

    if (Budget_Billing_Indstr.length > 0) Budget_Billing_Ind_Req = 1;

    if (Budget_Billing_Ind_Req == 1)  
       if (Budget_Billing_Indstr.length < 1) { 
          alert ("Please tell us when you wish to start your Budget Billing."); 
          form.Budget_Billing_Start.focus();
          form.Budget_Billing_Start.select();
          return false;
          }
       else
          if (Budget_Billing_Indstr != "C")
             if (Budget_Billing_Indstr != "N")
                if (Budget_Billing_Indstr != "I") { 
                   alert ("Please correct your selection."); 
                   form.Budget_Billing_Start.focus();
                   form.Budget_Billing_Start.select();
                   return false;
                }
    
   //----------------------------------------------------------------------------------------------------------------
   // All edits passed
   //----------------------------------------------------------------------------------------------------------------

   return true;

}

//------------------------------------------------------------------------------------------------------------------
function IsNumeric(strValue) 
//------------------------------------------------------------------------------------------------------------------
{

   var i;

   if (strValue.length < 1) return false;

   for (i=0; i < strValue.length; i++){ 
      if (strValue.charAt(i) < "0" || strValue.charAt(i) > "9") return false;
   }

   return true;  
}

//------------------------------------------------------------------------------------------------------------------
function checkdate(MonthVar, DayVar, YearVar)
//------------------------------------------------------------------------------------------------------------------

   {
        
   if (MonthVar.length < 1) return false;
   if (DayVar.length < 1) return false;
   if (YearVar.length < 4) return false;

   if (!IsNumeric(MonthVar)) return false;
   if (!IsNumeric(DayVar))  return false;
   if (!IsNumeric(YearVar)) return false;

   if (MonthVar < 01 || MonthVar > 12) return false;
   if (YearVar < 1980 || YearVar > 2059) return false;

   if (MonthVar == 2)
      if (DayVar > 29) return false;  

   if (MonthVar == 4 || MonthVar == 6 || MonthVar == 9 || MonthVar == 11)
      if (DayVar > 30) return false;  
  
   var year = parseInt(YearVar);
 
   var leap1 = 0;
   var leap2 = 0;
 
   leap1 = year/4;
   leap2 = parseInt(year/4);

   var leapyear;

   if (MonthVar == 2) 
      if (leap1 == leap2 || YearVar == 2000) 
         noop++;
      else 
         if (DayVar > 28) return false;

   return true;
 
   }

//------------------------------------------------------------------------------------------------------------------
function CheckPhone(Ph1,Ph2,Ph3)
//------------------------------------------------------------------------------------------------------------------

   {

   if (Ph1.length < 3) return false;
   if (Ph2.length < 3) return false;
   if (Ph3.length < 4) return false;

   if (!IsNumeric(Ph1) || !IsNumeric(Ph2) || !IsNumeric(Ph3))  return false; 

   return true;
     
   }

//-->}

