required_fields[0]='fields_fname';
	required_fields_label[0]='First Name';
	required_fields[1]='fields_lname';
	required_fields_label[1]='Last Name';
	required_fields[2]='fields_address1';
	required_fields_label[2]='Street Address';
	required_fields[3]='fields_city';
	required_fields_label[3]='City';
	required_fields[4]='fields_zip';
	required_fields_label[4]='Zip Code';
	required_fields[5]='fields_state';
	required_fields_label[5]='State';
	required_fields[6]='fields_phone';
	required_fields_label[6]='Phone';
	required_fields[7]='fields_email';
	required_fields_label[7]='Email';

   function form_validator()
   {
      if (document.getElementById('hasFormSubmitted').value != '')
      {
         var prevPost = new Date(document.getElementById('hasFormSubmitted').value);
         prevPost.setSeconds(prevPost.getSeconds() + 3);
         var currentTime = new Date();
         if (prevPost < currentTime)
         {
            // -- blank out the formsubmitted because user went back and forth and hidden values still cached
            document.getElementById('hasFormSubmitted').value = '';
         }
      }

      var empty_fields=new Array();
      var empty_field_num=new Array();
      var empty_count=0;
      var str='field indicated Cant be empty:';
      for (i=0;i<required_fields.length;i++)
      {
         var field_ref=document.getElementById(required_fields[i]);

         if ((required_fields[i] == 'cc_number' || required_fields[i] == 'cc_expires' ||  required_fields[i] == 'cc_cvv') && document.getElementById('cc_type').value == 'checking')
         {
            continue;
         }

         if (required_fields[i] == 'cc_number')
         {
            if (document.getElementById('cc_number')!=undefined)
            {
               if (document.getElementById('cc_number').value.length<13)
               {
                  alert('Invalid credit card number');
                  return;
               }
            }
         }

         if (required_fields[i] == 'fields_state2')
         {
            var funcName = 'SetCountryValue2';
            if (typeof funcName == 'string' && eval('typeof ' + funcName) == 'function')
            {
               eval(funcName+'()');
            }
         }

         if (required_fields[i] == 'fields_state2' || required_fields[i] == 'fields_state') {
            if (validateMilitary(required_fields[i],'fields_city') == false)
            {
               alert('All military states must have a city of either "APO", "FPO", or "DPO".  Please adjust your city.');
               return;
            }
         }


         //catch all spaces, this is invalid
         var tempStr = field_ref.value.ltrim();

         if ((tempStr =='') || (tempStr == ' '))
         {
            empty_fields[empty_count]=required_fields_label[i];
            empty_field_num[empty_count]=i;
            empty_count++;
         }
         if((field_ref.length==0)||(field_ref.value==null) || (field_ref.value==''))
         {
            empty_fields[empty_count]=required_fields_label[i];
            empty_field_num[empty_count]=i;
            empty_count++;
         }
      }

      if (document.getElementById('cc_type'))
      {
         if (document.getElementById('cc_type').value == 'checking')
         {
            // -- checking account validation
            field_ref = document.getElementById('routing_number');
            if((field_ref.length==0)||(field_ref.value==null) || (field_ref.value==''))
            {
               alert('Please Enter Your Routing Number');
               field_ref.focus();
               return;
            }
            field_ref = document.getElementById('account_number');
            if((field_ref.length==0)||(field_ref.value==null) || (field_ref.value==''))
            {
               alert('Please Enter Your Account Number');
               field_ref.focus();
               return;
            }
         }
      }

      for(x in empty_fields)
      {
         str=str+'<br/>'+empty_fields[x];
         if(empty_fields[x] != undefined )
         {
            alert('Please Enter Your ' + empty_fields[x] + '');
            document.getElementById(required_fields[empty_field_num[x]]).focus();
         }
         else
         {
            alert('Please Fill in all fields');
         }
         return;
      }

      var tm_check = document.getElementById('terms');
      if(tm_check && tm_check.checked==false)
      {
         alert('Please Agree with the Terms');
         return;
      }
      if (document.getElementById('radioTwo')!=undefined)
      {
         var radio2Obj = document.getElementById('radioTwo');
         if (radio2Obj.checked)
         {
            field_ref = document.getElementById('billing_street_address');
            if((field_ref.length==0)||(field_ref.value==null) || (field_ref.value=='') || (field_ref.value.ltrim() == '') )
            {
               alert("Please enter your Billing Address");
               return;
            }
            field_ref = document.getElementById('billing_city');
            if((field_ref.length==0)||(field_ref.value==null) || (field_ref.value=='') || (field_ref.value.ltrim() == ''))
            {
               alert("Please enter your Billing City");
               return;
            }
            var state_select_is_visible = (ll('#billing_state').is(':visible') == true);
            field_ref = document.getElementById('billing_state');
            if (state_select_is_visible)
            {
               if((field_ref.length==0)||(field_ref.value==null) || (field_ref.value=='') || (field_ref.value.ltrim() == ''))
               {
                  alert("Please enter your Billing State");
                  return;
               }
            }
            var region_is_visible = (ll('#billing_state2').is(':visible') == true);
            field_ref = document.getElementById('billing_state2');
            if (region_is_visible)
            {
               if((field_ref.length==0)||(field_ref.value==null) || (field_ref.value=='') || (field_ref.value.ltrim() == ''))
               {
                  alert("Please enter your Billing State");
                  return;
               }
               else
               {
                  //store the international region value
                  ll(new Option(ll('#billing_state2').val(), ll('#billing_state2').val())).appendTo('#billing_state').attr('selected', 'selected');
               }
            }

            field_ref = document.getElementById('billing_postcode');
            if((field_ref.length==0)||(field_ref.value==null) || (field_ref.value=='') || (field_ref.value.ltrim() == ''))
            {
               alert("Please enter your Billing Zip");
               return;
            }
            if (document.getElementById('billing_country')!=undefined){
               field_ref = document.getElementById('billing_country');
               if((field_ref.length==0)||(field_ref.value==null) || (field_ref.value=='') || (field_ref.value.ltrim() == '')){
                  alert("Please chooose your Billing Country");
                  return;
               }
            }

         }
      }
      if(empty_count!=0)
      {
         var diverr=document.getElementById('err');
         diverr.innerHTML='';
         diverr.innerHTML=str;
      }
      else
      {
         if (ll('#fields_email').is(':visible') == true)
         {
            var emailCheck = isValidEmail(document.forms['opt_in_form'].fields_email.value);
         }
         else
         {
            var emailCheck = true;
         }
         if(emailCheck)
         {
            if (document.getElementById['state_cus2']!=undefined)
            {
               if ((document.getElementById['state_cus2'].style.display == 'inline') && (document.forms['opt_in_form'].fields_state2.value.length<2))
               {
                  alert('Please specify the state');
                  return;
               }
               else
               {
                  if (document.getElementById('hasFormSubmitted').value == '')
                  {
                     var d=new Date();
                     document.getElementById('hasFormSubmitted').value = d.toUTCString();
                     document.opt_in_form.submit();
                  }
               }
            }
            else
            {
               if (document.getElementById('hasFormSubmitted').value == '')
               {
                  var d=new Date();
                  document.getElementById('hasFormSubmitted').value = d.toUTCString();
                  document.opt_in_form.submit();
               }
            }
         }
      }
   }
