
// Functions for checking to make sure the correct
// State, Province, or Vat Number values are entered/selected

//-------------------------------------------------------------------
function checkState(form){

var CountryIndex = form.Mailing_Country.selectedIndex;
var CountryValue = form.Mailing_Country.options[CountryIndex].value;

if(CountryValue == "US"){
     if(!testState(form,CountryValue)){
          return false;
     }
}
else if(CountryValue == "CA"){
     if(!testProvince(form,CountryValue)){
          return false;
     }
}
else{
     if(eval(form.elements['vat_number'])){
          if(form.elements['vat_number'].value != ""){
               var vatNum = form.elements['vat_number'].value;
               if(!validateVatNumFmt(CountryValue,vatNum)){
                    return false;
               }
          }
     }
}
return true;
}

//-------------------------------------------------------------------
function testState(form,country){

var taxField = "Mailing_State";
var taxFieldValue = "";

     if(!eval(form.elements[taxField])){
          return true;
     }

     var taxFieldType = form.elements[taxField].type;

     if(taxFieldType == "select-one"){
          var taxIndex = form.elements[taxField].selectedIndex;
          taxFieldValue = form.elements[taxField].options[taxIndex].value;
     }
     else{
          taxFieldValue = form.elements[taxField].value;
     }

     if((taxFieldValue == "")||(taxFieldValue == "INVALID")){
          alert("\nSince you selected US for your country, you" +
                "\nmust enter your state abbreviation before going to checkout.\n");
          form.elements[taxField].focus();
     return false;
     }
     else{
          document.cookie = taxField + "=" + taxFieldValue + "; path=/";
     }

return true;
}
// ------------------------------------------------------------------
function testProvince(form,country){

var taxField = "TAX_RATE";
var taxFieldValue = "";

     if(!eval(form.elements[taxField])){
          return true;
     }

     var taxFieldType = form.elements[taxField].type;

     if(taxFieldType == "select-one"){
          var taxIndex = form.elements[taxField].selectedIndex;
          taxFieldValue = form.elements[taxField].options[taxIndex].value;
     }
     else{
          taxFieldValue = form.elements[taxField].value;
     }
     if((taxFieldValue == "")||(taxFieldValue == "INVALID")){
          alert("\nSince you selected Canada for your country, you" +
                "\nmust select your province before going to checkout.\n");
          return false;
     }
     else{
          var TaxRateIndex = taxFieldValue.indexOf("|", 0);
          if(TaxRateIndex > 1){
               var province = (taxFieldValue.split("|"))[0];
               document.cookie = taxField + "=" + province + "; path=/";
          }
          else{
               document.cookie = taxField + "=" + taxFieldValue + "; path=/";
          }
     }

return true;
}
//-------------------------------------------------------------------
function validateVatNumFmt(country,vatNum){

vatNum = vatNum.toLowerCase();

VATRATES = new Array();
VATRATES['AT'] = "9,[u]\\d{8}";
VATRATES['BE'] = "9,\\d{9}";
VATRATES['DK'] = "8,\\d{8}";
VATRATES['FI'] = "8,\\d{8}";
VATRATES['FR'] = "11,\\d{11}:[a-hj-np-z]\\d{10}:\\d[a-hj-np-z]\\d{9}:[a-hj-np-z][a-hj-np-z]\\d{9}";
VATRATES['DE'] = "9,\\d{9}";
VATRATES['EL'] = "8,\\d{8}";
VATRATES['IE'] = "8,\\d{7}[a-z]:\\d[a-z]\\d{5}[a-z]";
VATRATES['IT'] = "11,\\d{11}";
VATRATES['LU'] = "8,\\d{8}";
VATRATES['NL'] = "12,\\d{9}[b]\\d\\d";
VATRATES['PT'] = "9,\\d{9}";
VATRATES['ES'] = "9,[a-z]\\d{9}:\\d{9}[a-z]:[a-z]\\d{8}[a-z]";
VATRATES['SE'] = "12,\\d{10}01";
VATRATES['GB'] = "9,\\d{9}";

if(VATRATES[country] == null){
     return true;
}

var len = VATRATES[country].split(',')[0];
var pattern = VATRATES[country].split(',')[1];

     if(vatNum.length > len){
          var tooLong = (vatNum.length - len);
          alert("Your VAT Number is " + tooLong + " characters too long?");
     return false;
     }
     if(vatNum.length < len){
          var tooShort = (len - vatNum.length);
          alert("Your VAT Number is " + tooShort + " characters too short?");
     return false;
     }

     var match = false;

     if(pattern.match(/\:/g)){
          var patterns = new Array();
          patterns = pattern.split(':');
          for(k=0;k<patterns.length;k++){
               if(vatNum.match(patterns[k])){
                    alert(vatNum.match(patterns[k]));
                    match = true;
                    break;
               }
          }
     }
     else{
          if(vatNum.match(pattern)){
               match = true;
          }
     }
     if(match){
          return true;
     }
     else{
          alert("Your VAT number " + vatNum + " is invalid for " + country);
          return false;
     }

return false;
}