/* This script and many more are available free online at
The JavaScript Source!! http://javascript.internet.com
Created by: Michael J. Damato | http://developing.damato.net/ */
// State lists

var states = new Array();

/*Afghanistan*/
states['Afghanistan'] = new Array(
'Badakhshan',
'Badghis', 
'Baghlan', 
'Balkh', 
'Bamiyan', 
'Daykundi', 
'Farah', 
'Faryab', 
'Ghazni', 
'Ghor', 
'Helmand', 
'Herat', 
'Jowzjan', 
'Kabul', 
'Kandahar', 
'Kapisa', 
'Khost', 
'Kunar', 
'Kunduz', 
'Laghman', 
'Lowgar', 
'Nangarhar', 
'Nimruz', 
'Nurestan', 
'Oru-zga-n', 
'Paktia', 
'Paktika', 
'Panjshir', 
'Parwan', 
'Samangan', 
'Sar-e Pol', 
'Takhar', 
'Wardak', 
'Zabul'
);

/*Albania*/
states['Albania'] = new Array(
'Berat',
'Diber', 
'Durres', 
'Elbasan', 
'Fier', 
'Gjirokaster', 
'Korce', 
'Kukes', 
'Lezhe',
'Shkoder', 
'Tirana', 
'Vlore' 
);



/*Algeria*/
states['Algeria'] = new Array(
'Adrar',
'Chlef',
'Laghouat',
'Oum el-Bouaghi',
'Batna',
'Bejaia',
'Biskra',
'Bechar',
'Blida',
'Bouira',
'Tamanghasset',
'Tebessa',
'Tlemcen',
'Tiaret',
'Tizi Ouzou',
'Algiers',
'Djelfa',
'Jijel',
'Setif',
'Saida',
'Skikda',
'Sidi Bel Abbes',
'Annaba',
'Guelma',
'Constantine',
'Medea',
'Mostaganem',
'M Sila',
'Mascara',
'Ouargla',
'Oran',
'El Bayadh',
'Illizi',
'Bordj Bou Arréridj',
'Boumerdes',
'El Tarf',
'Tindouf',
'Tissemsilt',
'El Oued',
'Khenchela',
'Souk Ahras',
'Tipasa',
'Mila',
'Ain Defla',
'Naama',
'Ain Temouchent',
'Ghardaia',
'Relizane' 
);


/*American Samoa*/
states['American Samoa'] = new Array(
'Pago Pago' // Capital City 
);


/*Andorra*/
states['Andorra'] = new Array(
'Canillo',
'Encamp', 
'Ordino', 
'La Massana', 
'Andorra la Vella', 
'Sant Julia de Loria', 
'Escaldes-Engordany' 
);

/*Angola*/
states['Angola'] = new Array(
'Bengo',
'Benguela',
'Bie',
'Cabinda',
'Cuando Cubango',
'Cuanza Norte',
'Cuanza Sul',
'Cunene',
'Huambo',
'Huila',
'Luanda',
'Lunda Norte',
'Lunda Sul',
'Malanje',
'Moxico',
'Namibe',
'Uige',
'Zaire'
);

/*Anguilla*/
states['Anguilla'] = new Array(
'The Valley' // Capital City
);

/*Antarctica*/
states['Antarctica'] = new Array(
'No Province' 
);


/*Antigua and Barbuda*/
states['Antigua and Barbuda'] = new Array(
'St. George', 
'St. John', 
'St. Mary', 
'St. Paul', 
'St. Peter', 
'St. Philip'
);


/*Argentina*/
states['Argentina'] = new Array(
'Ciudad Autonoma de Buenos Airesa',
'Provincia de Buenos Aires',
'Provincia de Catamarca',
'Provincia del Chaco',
'Provincia del Chubut',
'Provincia de Cordoba',
'Provincia de Corrientes',
'Provincia de Entre Rios',
'Provincia de Formosa',
'Provincia de Jujuy',
'Provincia de La Pampa',
'Provincia de La Rioja',
'Provincia de Mendoza',
'Provincia de Misiones',
'Provincia del Neuquen',
'Provincia de Rio Negrob',
'Provincia de Salta',
'Provincia de San Juan',
'Provincia de San Luis',
'Provincia de Santa Cruz',
'Provincia de Santa Fe',
'Provincia de Santiago del Estero',
'Provincia de Tierra del Fuego',
'Antartida e Islas del Atlantico Surc',
'Provincia de Tucuman'
);


/*Armenia*/
states['Armenia'] = new Array(
'Aragatsotn',
'Ararat', 
'Armavir',
'Gegharkunik', 
'Kotayk',
'Lori',
'Shirak',
'Syunik', 
'Tavush', 
'Vayots Dzor',
'Yerevan'
);



/*Aruba*/
states['Aruba'] = new Array(
'Oranjestad' // Capital City
);

/*Australia*/
states['Australia'] = new Array(
'Ashmore and Cartier Islands',
'Australian Antarctic Territory', 
'Australian Capital Territory', 
'Christmas Island', 
'Cocos (Keeling) Islands', 
'Coral Sea Islands Territory', 
'Heard Island and McDonald Islands', 
'Jervis Bay Territory', 
'New South Wales', 
'Norfolk Island', 
'Northern Territory', 
'Queensland', 
'South Australia', 
'Tasmania', 
'Victoria', 
'Western Australia' 
);

/*Austria*/
states['Austria'] = new Array(
'Burgenland',
'Carinthia',
'Lower Austria',
'Upper Austria',
'Salzburg', 
'Styria',
'Tyrol',
'Vorarlberg', 
'Vienna'
);


/*Azerbaijan*/
states['Azerbaijan'] = new Array(
'Baku' // Capital City
);

/*Bahamas*/
states['Bahamas'] = new Array(
'Acklins',
'Berry Islands',
'Bimini',
'Black Point (Exuma)',
'Cat Island',
'Central Abaco',
'Central Andros',
'Central Eleuthera',
'City of Freeport (Grand Bahama)',
'Crooked Island',
'East Grand Bahama',
'Exuma',
'Grand Cay (Abaco)',
'Harbour Island (Eleuthera)',
'Hope Town (Abaco)',
'Inagua',
'Long Island',
'Mangrove Cay (Andros)',
'Mayaguana',
'Moores Island (Abaco)',
'North Abaco',
'North Andros',
'North Eleuthera',
'Ragged Island',
'Rum Cay',
'San Salvador',
'South Abaco',
'South Andros',
'South Eleuthera',
'Spanish Wells (Eleuthera)',
'West Grand Bahama'
);


/*Bahrain*/
states['Bahrain'] = new Array(
'Capital Governorate',
'Central Governorate',
'Muharraq Governorate',
'Northern Governorate',
'Southern Governorate'
);

/*Bangladesh*/
states['Bangladesh'] = new Array(
'Barisal',
'Chittagong',
'Dhaka',
'Khulna',
'Rajshahi',
'Sylhet'
);



/*Barbados*/
states['Barbados'] = new Array(
'Christ Church',
'Saint Andrew',
'Saint George',
'Saint James',
'Saint John',
'Saint Joseph',
'Saint Lucy',
'Saint Michael',
'Saint Peter',
'Saint Philip',
'Saint Thomas'
);


/*Belarus*/
states['Belarus'] = new Array(
'Brest Province',
'Homyel Province',
'Hrodna Province',
'Mahilyow Province', 
'Minsk Province', 
'Vitsebsk Province' 
);


/*Belgium*/
states['Belgium'] = new Array(
'Brussels-Capital Region',
'Flemish Region',
'Walloon Region'
);


/*Belize*/
states['Belize'] = new Array(
'Belize District',
'Cayo District',
'Corozal District',
'Orange Walk District',
'Stann Creek District',
'Toledo District'
);



/*Benin*/
states['Benin'] = new Array(
'Alibori',
'Atakora',
'Atlantique',
'Borgou',
'Collines',
'Donga',
'Kouffo',
'Littoral',
'Mono',
'Oueme',
'Plateau',
'Zou'
);




/*Bermuda*/
states['Bermuda'] = new Array(
'Devonshire',
'Hamilton',
'Paget',
'Pembroke',
'St Georges',
'Sandys',
'Smiths',
'Southampton',
'Warwick'
);




/*Bhutan*/
states['Bhutan'] = new Array(
'Bumthang',
'Chukha (old spelling: Chhukha)',
'Dagana',
'Gasa',
'Haa',
'Lhuntse',
'Mongar',
'Paro',
'Pemagatshel (Pemagatsel)',
'Punaka',
'Samdrup Jongkhar',
'Samtse (Samchi)',
'Sarpang',
'Thimphu',
'Trashigang (Tashigang)',
'Trashiyangste',
'Trongsa (Tongsa)',
'Tsirang (Chirang)',
'Wangdue Phodrang (Wangdi Phodrang)',
'Zhemgang (Shemgang)'
);





/*Bolivia*/
states['Bolivia'] = new Array(
'Beni (Trinidad)',
'Chuquisaca (Sucre)',
'Cochabamba (Cochabamba)',
'La Paz (La Paz)',
'Oruro (Oruro)',
'Pando (Cobija)',
'Potosi (Potosi)',
'Santa Cruz (Santa Cruz de la Sierra)',
'Tarija (Tarija)'
);



/*Bosnia and Herzegowina*/
states['Bosnia and Herzegowina'] = new Array(
'Federacija Bosne i Hercegovine',
'Republika Srpska',
'Brcko District'
);


/*Botswana*/
states['Botswana'] = new Array(
'Gaborone' // Capital City
);


/*Bouvet Island*/
states['Bouvet Island'] = new Array(
'No Province'
);


/*Brazil*/
states['Brazil'] = new Array(
'Acre', 
'Alagoas ',
'Amapa',
'Amazonas', 
'Bahia', 
'Ceara ',
'Distrito Federal', 
'Espirito Santo ',
'Goias',
'Maranhao', 
'Mato Grosso', 
'Mato Grosso do Sul', 
'Minas Gerais', 
'Para', 
'Paraiba', 
'Parana', 
'Pernambuco', 
'Piaui', 
'Rio de Janeiro', 
'Rio Grande do Norte', 
'Rio Grande do Sul', 
'Rondonia', 
'Roraima', 
'Santa Catarina', 
'Sao Paulo', 
'Sergipe', 
'Tocantins'
);
















states['United States'] = new Array('Alabama','Alaska','Arizona','Arkansas','California','Colorado','Connecticut','Delaware','District of Columbia','Florida','Georgia','Hawaii','Idaho','Illinois','Indiana','Iowa','Kansas','Kentucky','Louisiana','Maine','Maryland','Massachusetts','Michigan','Minnesota','Mississippi','Missouri','Montana','Nebraska','Nevada','New Hampshire','New Jersey','New Mexico','New York','North Carolina','North Dakota','Ohio','Oklahoma','Oregon','Pennsylvania','Rhode Island','South Carolina','South Dakota','Tennessee','Texas','Utah','Vermont','Virginia','Washington','West Virginia','Wisconsin','Wyoming');

states['Canada'] = new Array('Alberta','British Columbia','Ontario');

states['Mexico'] = new Array('Baja California','Chihuahua','Jalisco');

// City lists
var cities = new Array();

cities['Canada'] = new Array();
cities['Canada']['Alberta']          = new Array('Edmonton','Calgary');
cities['Canada']['British Columbia'] = new Array('Victoria','Vancouver');
cities['Canada']['Ontario']          = new Array('Toronto','Hamilton');

cities['Mexico'] = new Array();
cities['Mexico']['Baja California'] = new Array('Tijauna','Mexicali');
cities['Mexico']['Chihuahua']       = new Array('Ciudad Juárez','Chihuahua');
cities['Mexico']['Jalisco']         = new Array('Guadalajara','Chapala');

cities['United States'] = new Array();
cities['United States']['California'] = new Array('Los Angeles','San Francisco');
cities['United States']['Florida']    = new Array('Miami','Orlando');
cities['United States']['New York']   = new Array('Buffalo','new York');


function setStates() {
  cntrySel = document.getElementById('country');
  stateList = states[cntrySel.value];
  changeSelect('state', stateList, stateList);
  setCities();
}

function setCities() {
  cntrySel = document.getElementById('country');
  stateSel = document.getElementById('state');
  cityList = cities[cntrySel.value][stateSel.value];
  changeSelect('city', cityList, cityList);
}

function changeSelect(fieldID, newOptions, newValues) {
  selectField = document.getElementById(fieldID);
  selectField.options.length = 0;
  for (i=0; i<newOptions.length; i++) {
    selectField.options[selectField.length] = new Option(newOptions[i], newValues[i]);
  }
}

// Multiple onload function created by: Simon Willison
// http://simonwillison.net/2004/May/26/addLoadEvent/
function addLoadEvent(func) {
  var oldonload = window.onload;
  if (typeof window.onload != 'function') {
    window.onload = func;
  } else {
    window.onload = function() {
      if (oldonload) {
        oldonload();
      }
      func();
    }
  }
}

addLoadEvent(function() {
  setStates();
});
