var states = new Array();
states.push([0,'',0]);
  states.push(new Array('226', 'Alaska (AK)', '1'));
  states.push(new Array('226', 'Alabama (AL)', '2'));
  states.push(new Array('226', 'American Samoa (AS)', '3'));
  states.push(new Array('226', 'Arizona (AZ)', '4'));
  states.push(new Array('226', 'Arkansas (AR)', '5'));
  states.push(new Array('226', 'California (CA)', '6'));
  states.push(new Array('226', 'Colorado (CO)', '7'));
  states.push(new Array('226', 'Connecticut (CT)', '8'));
  states.push(new Array('226', 'Delaware (DE)', '9'));
  states.push(new Array('226', 'District of Columbia (DC)', '10'));
  states.push(new Array('226', 'Federated States of Micronesia (FM)', '11'));
  states.push(new Array('226', 'Florida (FL)', '12'));
  states.push(new Array('226', 'Georgia (GA)', '13'));
  states.push(new Array('226', 'Guam (GU)', '14'));
  states.push(new Array('226', 'Hawaii (HI)', '15'));
  states.push(new Array('226', 'Idaho (ID)', '16'));
  states.push(new Array('226', 'Illinois (IL)', '17'));
  states.push(new Array('226', 'Indiana (IN)', '18'));
  states.push(new Array('226', 'Iowa (IA)', '19'));
  states.push(new Array('226', 'Kansas (KS)', '20'));
  states.push(new Array('226', 'Kentucky (KY)', '21'));
  states.push(new Array('226', 'Louisiana (LA)', '22'));
  states.push(new Array('226', 'Maine (ME)', '23'));
  states.push(new Array('226', 'Marshall Islands (MH)', '24'));
  states.push(new Array('226', 'Maryland (MD)', '25'));
  states.push(new Array('226', 'Massachusetts (MA)', '26'));
  states.push(new Array('226', 'Michigan (MI)', '27'));
  states.push(new Array('226', 'Minnesota (MN)', '28'));
  states.push(new Array('226', 'Mississippi (MS)', '29'));
  states.push(new Array('226', 'Missouri (MO)', '30'));
  states.push(new Array('226', 'Montana (MT)', '31'));
  states.push(new Array('226', 'Nebraska (NE)', '32'));
  states.push(new Array('226', 'Nevada (NV)', '33'));
  states.push(new Array('226', 'New Hampshire (NH)', '34'));
  states.push(new Array('226', 'New Jersey (NJ)', '35'));
  states.push(new Array('226', 'New Mexico (NM)', '36'));
  states.push(new Array('226', 'New York (NY)', '37'));
  states.push(new Array('226', 'North Carolina (NC)', '38'));
  states.push(new Array('226', 'North Dakota (ND)', '39'));
  states.push(new Array('226', 'Northern Mariana Islands (MP)', '40'));
  states.push(new Array('226', 'Ohio (OH)', '41'));
  states.push(new Array('226', 'Oklahoma (OK)', '42'));
  states.push(new Array('226', 'Oregon (OR)', '43'));
  states.push(new Array('226', 'Palau (PW)', '44'));
  states.push(new Array('226', 'Pennsylvania (PA)', '45'));
  states.push(new Array('226', 'Puerto Rico (PR)', '46'));
  states.push(new Array('226', 'Rhode Island (RI)', '47'));
  states.push(new Array('226', 'South Carolina (SC)', '48'));
  states.push(new Array('226', 'South Dakota (SD)', '49'));
  states.push(new Array('226', 'Tennessee (TN)', '50'));
  states.push(new Array('226', 'Texas (TX)', '51'));
  states.push(new Array('226', 'Utah (UT)', '52'));
  states.push(new Array('226', 'Vermont (VT)', '53'));
  states.push(new Array('226', 'Virgin Islands (VI)', '54'));
  states.push(new Array('226', 'Virginia (VA)', '55'));
  states.push(new Array('226', 'Washington (WA)', '56'));
  states.push(new Array('226', 'West Virginia (WV)', '57'));
  states.push(new Array('226', 'Wisconsin (WI)', '58'));
  states.push(new Array('226', 'Wyoming (WY)', '59'));
  states.push(new Array('226', 'Armed Forces Africa (AE)', '60'));
  states.push(new Array('226', 'Armed Forces Americas (except Canada) (AA)', '61'));
  states.push(new Array('226', 'Armed Forces Canada (AE)', '62'));
  states.push(new Array('226', 'Armed Forces Europe (AE)', '63'));
  states.push(new Array('226', 'Armed Forces Middle East (AE)', '64'));
  states.push(new Array('226', 'Armed Forces Pacific (AP)', '65'));
  states.push(new Array('38', 'Alberta (AB)', '66'));
  states.push(new Array('38', 'British Columbia (BC)', '67'));
  states.push(new Array('38', 'Manitoba (MB)', '68'));
  states.push(new Array('38', 'New Brunswick (NB)', '69'));
  states.push(new Array('38', 'Newfoundland and Labrador (NL)', '70'));
  states.push(new Array('38', 'Nova Scotia (NS)', '71'));
  states.push(new Array('38', 'Northwest Territories (NT)', '72'));
  states.push(new Array('38', 'Nunavut (NU)', '73'));
  states.push(new Array('38', 'Ontario (ON)', '74'));
  states.push(new Array('38', 'Prince Edward Island (PE)', '75'));
  states.push(new Array('38', 'Quebec (QC)', '76'));
  states.push(new Array('38', 'Saskatchewan (SK)', '77'));
  states.push(new Array('38', 'Yukon (YT)', '78'));
  states.push(new Array('13', 'Australian Capital Territory (ACT)', '79'));
  states.push(new Array('13', 'New South Wales (NSW)', '80'));
  states.push(new Array('13', 'Northern Territory (NT)', '81'));
  states.push(new Array('13', 'Queensland (QLD)', '82'));
  states.push(new Array('13', 'South Australia (SA)', '83'));
  states.push(new Array('13', 'Tasmania (TAS)', '84'));
  states.push(new Array('13', 'Victoria (VIC)', '85'));
  states.push(new Array('13', 'Western Australia (WA)', '86'));

function countrySelected() {
  country_id = formCountry.val();
  state_id = formState.val();
  options = new Array();
  options.length = 0;
  jQuery.each(states, function(index, state) {
    if (state[0] == country_id) {
      options[options.length] = new Option(state[1], state[2], state[2] == state_id);
    }
  });
  if (options.length == 0) {
    formState.closest('div').hide();
    formStateText.closest('div').show();
  } else {
    formState.closest('div').show();
    formStateText.val('').closest('div').hide();
  }
}

function stateSelected() {
  country_id = formCountry.val();
  state_id = formState.val();
  if (states[state_id][0] != country_id) {
    formCountry.val(states[state_id][0])
  }
  countrySelected();
}

function focusOnState() {
  $('input[id$=state_text],select[id$=state_id]').filter(":visible").focus();
}

$(function() {
  formCountry = $('select[id$=country_id]');
  formState = $('select[id$=state_id]');
  formStateText = $('input[id$=state_text]');
  formCountry.change(function() {
    countrySelected();
    focusOnState();
  });
  formState.change(function() {
    stateSelected();
  });
  countrySelected();
});


