var FormReqFieldsArray= new Array('FIRST_NAME', 'Please enter your first name','',
            'LAST_NAME', 'Please enter your last name','',
            'COMPANY', 'Please enter a your company name.','',
            'ADDRESS_LINE1', 'Please enter your address','',
            'CITY', 'Please enter your city','',
            'STATE', 'Please select your state','select',
            'ZIP', 'Please enter your zip code','',
            'EMAIL', 'Please enter your email address','')

// simple routine to validate and submit the form
function OnNotificationSubmit()
{
    if( formCheck('Form1', FormReqFieldsArray) )
    {
	    return true;
    }
    else
    {
      return false;
    }
}

//============================================================================
//function: formCheck(FormName,requiredFields,status)
//
//description:        this function checks a form based on a 'required fields'
//                    which contains a field name, an error message, and a 
//                    special case handler.
//
//args: FormName       - name attribute of <form> tag
//      requiredFields - an array containing field name, error message, 
//                       and special type id.
//      status         - optional, used to disable form checking
// eg. requiredFields = 'first_name','Please enter your first Name','',
//                   'phonenumber','please enter a valid phone number','phone'
//
//usage: <form onSubmit="return formCheck('someName',requredFields)">
//============================================================================
function formCheck(FormName,requiredFields)
{   
   for(var i=0; i<requiredFields.length; i+=3)
   {
      var thirdelement = requiredFields[i+2]
      if (thirdelement == 'special'){
        //handle special checkbox cases
         if (!document.dealerContact.INTEREST_NEWTRUCKS.checked &&
             !document.dealerContact.INTEREST_USEDTRUCKS.checked &&
             !document.dealerContact.INTEREST_SERVICE.checked &&
             !document.dealerContact.INTEREST_PARTS.checked &&
             !document.dealerContact.INTEREST_OTHER.checked ) {               
                alert("Please check at least one area in which you are interested");     
                document.dealerContact.INTEREST_NEWTRUCKS.focus()
                return  false;
         }            
       
      }

      else {
      //-------------------------------------------------- identify input type
      if(!document.getElementById(requiredFields[i]).type)
      {
         var inputType = document.getElementById(requiredFields[i])[0].type;        
      }
      else
      var inputType = document.getElementById(requiredFields[i]).type;

      if ((inputType == 'text') || (inputType == 'textarea'))
      {
         //-------------------------------------------------- special cases
         if ( requiredFields[i+2] == "email" )
         {
            if( !isEmail(document.getElementById(requiredFields[i])) )
            {
               alert(requiredFields[i+1])
               document.getElementById(requiredFields[i]).focus();
               return  false;
            }
         }
         else if (requiredFields[i+2] == "phone")
         {
            if(!isPhone(document.getElementById(requiredFields[i])) )
            {
               if (document.getElementById(requiredFields[i]).value == "" ) {
               alert("Please enter your phone number")
               document.getElementById(requiredFields[i]).focus();
               return  false;
               }
               else {                                           
               alert(requiredFields[i+1])
               document.getElementById(requiredFields[i]).focus();
               return  false;
               }
            }
         }
         else if ( requiredFields[i+2] == "zip" )
         {
            if(!isZIP(document.getElementById(requiredFields[i])) )
            {
               alert(requiredFields[i+1])
               document.getElementById(requiredFields[i]).focus();
               return  false;
            }
         }
         else if ( requiredFields[i+2] == "num" )
         {
            if(!isNumber(document.getElementById(requiredFields[i])) )
            {
               alert(requiredFields[i+1])
               document.getElementById(requiredFields[i]).focus();
               return  false;
            }
         }
         //----------------------------------------------------general case
         else if( document.getElementById(requiredFields[i]).value == '')
         {
           alert(requiredFields[i+1])
           document.getElementById(requiredFields[i]).focus();
           return false;
         }
      }
      else if (inputType == 'radio')
      {
        
        var isChecked = false;
        for(var n = 0; n < document.getElementById(requiredFields[i]).length; n++)
        {
          if(document.getElementById(requiredFields[i])[n].checked == true)
             var isChecked = true;
        }
        if(!isChecked)
        {
           alert(requiredFields[i+1])
           document.getElementById(requiredFields[i])[0].focus();
           return false;            
        }
      }
      else if (inputType == 'select-one')      {   
         
         if( document.getElementById(requiredFields[i]).selectedIndex==0)
         {
           alert(requiredFields[i+1])
           document.getElementById(requiredFields[i]).focus();
           return false;
         }
      }
      else if (inputType == 'checkbox')
      {
         if(requiredFields[i+2] == "mustBeChecked")
         {
            if( !document.getElementById(requiredFields[i]).checked)
            {
               alert(requiredFields[i+1]);
               document.getElementById(requiredFields[i]).focus();
               return false;
            }
         }
      }
   }
   }
   return( true );
}


//*******************************************************************
//  function: isEmail -This script checks the user's input and cancels 
//                 the submission if the e-mail has an invalid syntax
//
//  input: email field
//
//  output: true/false
//
//*******************************************************************
function isEmail(field) {
  var str = field.value;
  if (window.RegExp) {
    var reg1str = "(@.*@)|(\\.\\.)|(@\\.)|(\\.@)|(^\\.)";
    var reg2str = "^.+\\@(\\[?)[a-zA-Z0-9\\-\\.]+\\.([a-zA-Z]{2,3}|[0-9]{1,3})(\\]?)$";
    var reg1 = new RegExp(reg1str);
    var reg2 = new RegExp(reg2str);
    if (!reg1.test(str) && reg2.test(str)) {
      return true;
    }
    field.focus();
    field.select();
    return false;
  } else {
    if(str.indexOf("@") >= 0)
      return true;
    field.focus();
    field.select();
    return false;
  }
}


//*******************************************************************
//  function: isNumber - ensures a number
//
//  input: number field
//
//  output: true/false
//
//*******************************************************************
function isNumber(field) {
   var str = field.value;
   var valid = "0123456789";

   if (str.length == 0) {
      return false;
   }
   for (var i=0; i < str.length; i++) {
      temp = "" + str.substring(i, i+1);
      if (valid.indexOf(temp) == "-1") {
         return false;
      }
   }

   return true;
}


//*******************************************************************
//  function: isZIP - ensures a valid 5 or 9 digit zip code
//
//  input: email field
//
//  output: true/false
//
//*******************************************************************
function isZIP(field) {
   var str = field.value;
   var valid = "0123456789-";
   var hyphencount = 0;

   if (str.length!=5 && str.length!=10) {
      return false;
   }
   for (var i=0; i < str.length; i++) {
      temp = "" + str.substring(i, i+1);
      if (temp == "-") hyphencount++;
      if (valid.indexOf(temp) == "-1") {
         return false;
   }
   if ((hyphencount > 1) || ((str.length==10) && ""+str.charAt(5)!="-")) {
      return false;
      }
   }
   return true;
}


//*******************************************************************
//  function: isPhone - ensures a valid 3 digit area code
//
//  input:  Phone field
//
//  output: true/false
//
//*******************************************************************
function isPhone(field) 
{
   var valid = "0123456789";
   var str = field.value;
   var temp = "";
   var phoneString = "";
   for (var i=0; i < str.length; i++) 
   {
      temp = "" + str.substring(i, i+1);
      if (valid.indexOf(temp) != "-1") 
      {
         phoneString += temp;  	
      }
   }

   if (phoneString.length!=7 && phoneString.length!=10) {
      return false;
   }
   else return true;
}
