/* 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();

states['Canada'] = new Array('Alberta','British Columbia','Manitoba','New Brunswick','Newfoundland','Northwest Territories','Nova Scotia','Nunavut','Ontario','Prince Edward Island','Quebec','Saskatchewan','Yukon');

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['United Kingdom'] = new Array('Baja California','Chihuahua','Jalisco');



// City lists
var cities = new Array();

cities['Canada'] = new Array();
cities['Canada']['Alberta']           = new Array('Brooks','Calgary','Camrose','Canmore','Cold Lake','Edmonton','Fort McMurray','Grande Prairie','Lethbridge','Lloydminster','Medicine Hat','Okotoks','Red Deer','Wetaskiwin');
cities['Canada']['British Columbia']  = new Array('Abbotsford','Campbell River','Chilliwack','Courtenay','Cranbrook','Dawson Creek','Fort St. John','Kamloops','Kelowna','Nanaimo','North Cowichan','Parksville','Penticton','Port Alberni','Powell River','Prince George','Prince Rupert','Quesnel','Salmon Arm','Squamish','Terrace','Vancouver','Vernon','Victoria','Williams Lake');
cities['Canada']['Manitoba']          = new Array('Brandon','Portage la Prairie','Thompson','Winnipeg');
cities['Canada']['New Brunswick']     = new Array('Fredericton','Moncton','Saint John');
cities['Canada']['Newfoundland']      = new Array('St. Johns');
cities['Canada']['Northwest Territories'] = new Array('Yellowknife');
cities['Canada']['Nova Scotia']       = new Array('Cape Breton','Halifax');
cities['Canada']['Ontario']           = new Array('Barrie','Belleville','Brantford','Brockville','Chatham-Kent','Cobourg','Collingwood','Cornwall','Elliot Lake','Guelph','Hamilton','Hawkesbury','Ingersoll','Kenora','Kingston','Kitchener','Leamington','London','Midland','Norfolk','North Bay','Orillia','Oshawa','Ottawa','Owen Sound','Pembroke','Petawawa','Peterborough','Port Hope','Sarnia','Sault Ste. Marie','St. Catharines','Stratford','Sudbury','Thunder Bay','Tillsonburg','Timmins','Toronto','Windsor','Woodstock');
cities['Canada']['Prince Edward Island']          = new Array('Charlottetown');
cities['Canada']['Quebec']            = new Array('Alma','Amos','Baie-Comeau','Cowansville','Dolbeau-Mistassini','Drummondville','Granby','Joliette','Lachute','La Tuque','Matane','Montreal','Quebec','Rimouski','Rouyn-Noranda','Saguenay','Saint-Georges','Saint-Hyacinthe','Saint-Jean-sur-Richelieu','Salaberry-de-Valleyfield','Sept-Iles','Shawinigan','Sherbrooke','Sorel-Tracy','Thetford Mines','Trois-Rivieres','Val-dOr','Victoriaville');
cities['Canada']['Saskatchewan']      = new Array('Moose Jaw','Prince Albert','Regina','Saskatoon');
cities['Canada']['Yukon']             = new Array('Whitehorse');


///////

cities['United States'] = new Array();

cities['United States']['Alabama'] = new Array('Anniston','Auburn','Birmingham','Decatur','Dothan','Florence','Gadsden','Huntsville','Mobile','Montgomery','Tuscaloosa');
cities['United States']['Alaska'] = new Array('Anchorage','Fairbanks');
cities['United States']['Arizona'] = new Array('Flagstaff','Lake Havasu City','Phoenix','Prescott','Tucson','Yuma');
cities['United States']['Arkansas'] = new Array('Fayetteville','Fort Smith','Hot Springs','Jonesboro','Little Rock','Pine Bluff');
cities['United States']['California'] = new Array('Bakersfield','Chico','El Centro','Fresno','Hanford','Los Angeles','Madera','Merced','Modesto','Napa','Oxnard','Redding','Riverside','Sacramento','Salinas','San Diego','San Francisco','San Jose','San Luis Obispo','Santa Barbara','Santa Cruz','Santa Rosa','Stockton','Vallejo','Visalia','Yuba City');
cities['United States']['Colorado'] = new Array('Boulder','Colorado Springs','Denver','Fort Collins','Grand Junction','Greeley','Longmont','Pueblo');
cities['United States']['Connecticut'] = new Array('Bridgeport','Hartford','Manchester','New Haven','Norwich');
cities['United States']['Delaware'] = new Array('Dover');
cities['United States']['District of Columbi'] = new Array('Washington');
cities['United States']['Florida'] = new Array('Boca Raton','Cape Coral','Deltona','Fort Walton Beach','Gainesville','Jacksonville','Lakeland','Miami','Naples','Ocala','Orlando','Palm Bay','Palm Coast','Panama City','Pensacola','Port Charlotte (Punta Gorda)','Port St. Lucie','Sarasota','Tallahassee','Tampa','Vero Beach');
cities['United States']['Georgia'] = new Array('Albany','Athens','Atlanta','Augusta','Brunswick','Columbus','Dalton','Gainesville','Hinesville','Macon','Rome','Savannah','Valdosta','Warner Robins');
cities['United States']['Hawaii'] = new Array('Honolulu');
cities['United States']['Idaho'] = new Array('Boise City','Coeur dAlene','Idaho Falls','Lewiston','Pocatello');
cities['United States']['Illinois'] = new Array('Bloomington','Champaign','Chicago','Danville','Decatur','Kankakee','Peoria','Rockford','Springfield');
cities['United States']['Iowa'] = new Array('Ames','Cedar Rapids','Davenport','Des Moines','Dubuque','Iowa City','Sioux City','Waterloo');
cities['United States']['Kansas'] = new Array('Lawrence','Topeka','Wichita');
cities['United States']['Kentucky'] = new Array('Bowling Green','Elizabethtown','Lexington','Louisville','Owensboro');
cities['United States']['Louisiana'] = new Array('Alexandria','Baton Rouge','Houma','Lafayette','Lake Charles','Monroe','New Orleans','Shreveport');
cities['United States']['Maine'] = new Array('Barnstable Town','Boston','Pittsfield','Springfield','Worcester');
cities['United States']['Maryland'] = new Array('Baltimore','Cumberland','Hagerstown','Salisbury');
cities['United States']['Massachusetts'] = new Array('Barnstable Town','Boston','Pittsfield','Springfield','Worcester');
cities['United States']['Michigan'] = new Array('Ann Arbor','Battle Creek','Bay City','Benton Harbor','Detroit','Flint','Grand Rapids','Holland','Jackson','Kalamazoo','Lansing','Monroe','Muskegon','Saginaw');
cities['United States']['Minnesota'] = new Array('Duluth','Minneapolis','Rochester','St. Cloud','Saint Paul');
cities['United States']['Mississippi'] = new Array('Gulfport','Hattiesburg','Jackson','Pascagoula');
cities['United States']['Missouri'] = new Array('Columbia','Jefferson City','Joplin','Kansas City','Springfield','St. Joseph','St. Louis');
cities['United States']['Montana'] = new Array('Billings','Great Falls','Missoula');
cities['United States']['Nebraska'] = new Array('Lincoln','Omaha');
cities['United States']['Nevada'] = new Array('Las Vegas','Reno');
cities['United States']['New Hampshire'] = new Array('Manchester');
cities['United States']['New Jersey'] = new Array('Elizabeth','Jersey City','Newark','Paterson');
cities['United States']['New Mexico'] = new Array('Albuquerque');
cities['United States']['New York'] = new Array('New York City','New York','Bronx','Brooklyn','Kings','Manhattan','Queens','Staten Island','Richmond','Buffalo','Rochester','Yonkers','Syracuse','Albany');
cities['United States']['North Carolina'] = new Array('Cary','Charlotte','Durham','Fayetteville','Greensboro','High Point','Raleigh','Winston-Salem');
cities['United States']['North Dakota'] = new Array('Bismarck');
cities['United States']['Ohio'] = new Array('Akron','Cincinnati','Cleveland','Columbus','Dayton','Toledo');
cities['United States']['Oklahoma'] = new Array('Norman','Oklahoma City','Tulsa');
cities['United States']['Oregon'] = new Array('Eugene','Portland','Salem');
cities['United States']['Pennsylvania'] = new Array('Allentown','Erie','Philadelphia','Pittsburgh');
cities['United States']['Rhode Island'] = new Array('Providence');
cities['United States']['South Carolina'] = new Array('Charleston','Columbia');
cities['United States']['South Dakota'] = new Array('Sioux Falls');
cities['United States']['Tennessee'] = new Array('Chattanooga','Clarksville','Knoxville','Memphis','Nashville');
cities['United States']['Texas'] = new Array('Abilene','Amarillo','Arlington','Austin','Beaumont','Brownsville','Carrollton','Corpus Christi','Dallas','Denton','El Paso','Fort Worth','Garland','Grand Prairie','Houston','Irving','Killeen','Laredo','Lubbock','McAllen','McKinney','Mesquite','Midland','Pasadena','Plano','San Antonio','Waco','Wichita Falls');
cities['United States']['Utah'] = new Array('Provo','Salt Lake City','West Jordan','West Valley City');
cities['United States']['Vermont'] = new Array('Burlington');
cities['United States']['Virginia'] = new Array('Arlington','Chesapeake','Hampton','Newport News','Norfolk','Portsmouth','Richmond','Virginia Beach');
cities['United States']['Washington'] = new Array('Bellevue','Seattle','Spokane','Tacoma','Vancouver');
cities['United States']['West Virginia'] = new Array('Charleston');
cities['United States']['Wisconsin'] = new Array('Green Bay','Madison','Milwaukee');
cities['United States']['Wyoming'] = new Array('Cheyenne');


//cities['United Kingdom'] = new Array();
//cities['United Kingdom']['Baja California'] = new Array('Tijauna','Mexicali');
//cities['United Kingdom']['Chihuahua']       = new Array('Ciudad Juárez','Chihuahua');
//cities['United Kingdom']['Jalisco']         = new Array('Guadalajara','Chapala');




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]);
  }
}

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();
});

