var postState = '';
var postCountry = '';

// State table
//
// To edit the list, just delete a line or add a line. Order is important.
// The order displayed here is the order it appears on the drop down.
//
var state = '\
United States:AL:Alabama|\
United States:AK:Alaska|\
United States:AS:American Samoa|\
United States:AZ:Arizona|\
United States:AR:Arkansas|\
United States:AE:Armed Forces|\
United States:AA:Armed Forces Americas|\
United States:AP:Armed Forces Pacific|\
United States:CA:California|\
United States:CO:Colorado|\
United States:CT:Connecticut|\
United States:DE:Delaware|\
United States:DC:Disctrict Of Columbia|\
United States:FM:Federated States of Micronesia|\
United States:FL:Florida|\
United States:GA:Georgia|\
United States:Guam:Guam|\
United States:HI:Hawaii|\
United States:ID:Idaho|\
United States:IA:Iowa|\
United States:IL:Illinois|\
United States:IN:Indiana|\
United States:KS:Kansas|\
United States:KY:Kentucky|\
United States:LA:Louisiana|\
United States:MA:Massachusetts|\
United States:MD:Maryland|\
United States:ME:Maine|\
United States:MI:Michigan|\
United States:MN:Minnesota|\
United States:MO:Missouri|\
United States:MS:Mississippi|\
United States:MT:Montana|\
United States:MH:Marshall Islands|\
United States:NC:North Carolina|\
United States:ND:North Dakota|\
United States:NE:Nebraska|\
United States:NH:New Hampshire|\
United States:NJ:New Jersey|\
United States:NM:New Mexico|\
United States:NV:Nevada|\
United States:NY:New York|\
United States:MP:Northern Marina Islands|\
United States:OH:Ohio|\
United States:OK:Oklahoma|\
United States:OR:Oregon|\
United States:PW:Palau|\
United States:PA:Pennsylvania|\
United States:PR:Puerto Rico|\
United States:RI:Rhode Island|\
United States:SC:South Carolina|\
United States:SD:South Dakota|\
United States:TN:Tennessee|\
United States:TX:Texas|\
United States:UT:Utah|\
United States:VT:Vermont|\
United States:VI:Virgin Islands|\
United States:VA:Virginia|\
United States:WA:Washington|\
United States:WI:Wisconsin|\
United States:WV:West Virginia|\
United States:WY:Wyoming|\
Canada:AB:Alberta|\
Canada:BC:British Columbia|\
Canada:MB:Manitoba|\
Canada:NB:New Brunswick|\
Canada:NF:Newfoundland|\
Canada:NS:Nova Scotia|\
Canada:NT:Northwest Territories|\
Canada:Nunavut:Nunavut|\
Canada:ON:Ontario|\
Canada:PE Island:Prince Edward Island|\
Canada:QC:Quebec|\
Canada:SK:Saskatchewan|\
Canada:YT:Yukon|\
Australia:ACT:Australian Capital Territory|\
Australia:ANT:Northern Territory|\
Australia:NSW:New South Wales|\
Australia:QLD:Queensland|\
Australia:SA:South Australia|\
Australia:TAS:Tasmania|\
Australia:VIC:Victoria|\
Australia:AWA:Western Australia|\
China:Beijing:Beijing|\
China:Shanghai:Shanghai|\
China:Tianjin:Tianjin|\
China:Anhui:Anhui|\
China:Fujian:Fujian|\
China:Gansu:Gansu|\
China:Guangdong:Guangdong|\
China:Guizhou:Guizhou|\
China:Hainan:Hainan|\
China:Hebei:Hebei|\
China:Heilongjiang:Heilongjiang|\
China:Henan:Henan|\
China:Hubei:Hubei|\
China:Hunan:Hunan|\
China:Jiangsu:Jiangsu|\
China:Jiangxi: Jiangxi|\
China:Jilin:Jilin|\
China:Liaoning:Liaoning|\
China:Qinghai:Qinghai|\
China:Shaanxi:Shaanxi|\
China:Shandong:Shandong|\
China:Shanxi:Shanxi|\
China:Sichuan:Sichuan|\
China:Yunnan:Yunnan|\
China:Zhejiang:Zhejiang|\
China:Xinjiang:Xinjiang|\
China:Xizang:Xizang|\
China:Ningxia:Ningxia|\
China:Guangxi:Guangxi|\
China:Neimenggu:Neimenggu|\
India:Andhra Pradesh:Andhra Pradesh|\
India:Arunachal Pradesh:Arunachal Pradesh|\
India:Assam:Assam|\
India:Bihar:Bihar|\
India:Chhattisgarh:Chhattisgarh|\
India:Goa:Goa|\
India:Gujarat:Gujarat|\
India:Haryana:Haryana|\
India:Himachal Pradesh:Himachal Pradesh|\
India:Jammu and Kashmir:Jammu and Kashmir|\
India:Jharkhand:Jharkhand|\
India:Karnataka:Karnataka|\
India:Kerala:Kerala|\
India:Madhya Pradesh:Madhya Pradesh|\
India:Maharashtra:Maharashtra|\
India:Manipur:Manipur|\
India:Meghalaya:Meghalaya|\
India:Mizoram:Mizoram|\
India:Nagaland:Nagaland|\
India:Orissa:Orissa|\
India:Punjab:Punjab|\
India:Rajasthan:Rajasthan|\
India:Sikkim:Sikkim|\
India:Tamil Nadu:Tamil Nadu|\
India:Tripura:Tripura|\
India:Uttar Pradesh:Uttar Pradesh|\
India:Uttarakhand:Uttarakhand|\
India:West Bengal:West Bengal|\
India:Andaman & Nicobar:Andaman & Nicobar|\
India:Chandigarh:Chandigarh|\
India:Dadra and Nagar Haveli:Dadra and Nagar Haveli|\
India:Daman & Diu:Daman & Diu|\
India:Delhi:Delhi|\
India:Lakshadweep:Lakshadweep|\
India:Pondicherry:Pondicherry|\
Japan:Hokkaido:Hokkaido|\
Japan:Aomori-ken:Aomori-ken|\
Japan:Iwate-ken:Iwate-ken|\
Japan:Miyagi-ken:Miyagi-ken|\
Japan:Akita-ken:Akita-ken|\
Japan:Yamagata-ken:Yamagata-ken|\
Japan:Fukushima-ken:Fukushima-ken|\
Japan:Ibaraki-ken:Ibaraki-ken|\
Japan:Tochigi-ken:Tochigi-ken|\
Japan:Gunma-ken:Gunma-ken|\
Japan:Saitama-ken:Saitama-ken|\
Japan:Chiba-ken:Chiba-ken|\
Japan:Tokyo-to:Tokyo-to|\
Japan:Kanagawa-ken:Kanagawa-ken|\
Japan:Niigata-ken:Niigata-ken|\
Japan:Toyama-ken:Toyama-ken|\
Japan:Ishikawa-ken:Ishikawa-ken|\
Japan:Fukui-ken:Fukui-ken|\
Japan:Yamanashi-ken:Yamanashi-ken|\
Japan:Nagano-ken:Nagano-ken|\
Japan:Gifu-ken:Gifu-ken|\
Japan:Shizuoka-ken:Shizuoka-ken|\
Japan:Aichi-ken:Aichi-ken|\
Japan:Mie-ken:Mie-ken|\
Japan:Shiga-ken:Shiga-ken|\
Japan:Kyoto-fu:Kyoto-fu|\
Japan:Osaka-fu:Osaka-fu|\
Japan:Hyogo-ken:Hyogo-ken|\
Japan:Nara-ken:Nara-ken|\
Japan:Wakayama-ken:Wakayama-ken|\
Japan:Tottori-ken:Tottori-ken|\
Japan:Shimane-ken:Shimane-ken|\
Japan:Okayama-ken:Okayama-ken|\
Japan:Hiroshima-ken:Hiroshima-ken|\
Japan:Yamaguchi-ken:Yamaguchi-ken|\
Japan:Tokushima-ken:Tokushima-ken|\
Japan:Kagawa-ken:Kagawa-ken|\
Japan:Ehime-ken:Ehime-ken|\
Japan:Kochi-ken:Kochi-ken|\
Japan:Fukuoka-ken:Fukuoka-ken|\
Japan:Saga-ken:Saga-ken|\
Japan:Nagasaki-ken:Nagasaki-ken|\
Japan:Kumamoto-ken:Kumamoto-ken|\
Japan:Oita-ken:Oita-ken|\
Japan:Miyazaki-ken:Miyazaki-ken|\
Japan:Kagoshima-ken:Kagoshima-ken|\
Japan:Okinawa-ken:Okinawa-ken|\
';

// Country data table
//
// To edit the list, just delete a line or add a line. Order is important.
// The order displayed here is the order it appears on the drop down.
//
var country = '\
Afghanistan:Afghanistan|\
Aland Islands:Aland Islands|\
Albania:Albania|\
Algeria:Algeria|\
American Samoa:American Samoa|\
Andorra:Andorra|\
Angola:Angola|\
Anguilla:Anguilla|\
Antarctica:Antarctica|\
Antigua And Barbuda:Antigua And Barbuda|\
Argentina:Argentina|\
Armenia:Armenia|\
Aruba:Aruba|\
Australia:Australia|\
Austria:Austria|\
Azerbaijan:Azerbaijan|\
Bahamas:Bahamas|\
Bahrain:Bahrain|\
Bangladesh:Bangladesh|\
Barbados:Barbados|\
Belarus:Belarus|\
Belgium:Belgium|\
Belize:Belize|\
Benin:Benin|\
Bermuda:Bermuda|\
Bhutan:Bhutan|\
Bolivia:Bolivia|\
Bosnia And Herzegowina:Bosnia And Herzegowina|\
Botswana:Botswana|\
Bouvet Island:Bouvet Island|\
Brazil:Brazil|\
British Indian Ocean Territory:British Indian Ocean Territory|\
Virgin Islands, British:Virgin Islands, British|\
Brunei Darussalam:Brunei Darussalam|\
Bulgaria:Bulgaria|\
Burkina Faso:Burkina Faso|\
Burundi:Burundi|\
Cambodia:Cambodia|\
Cameroon:Cameroon|\
Canada:Canada|\
Cape Verde:Cape Verde|\
Cayman Islands:Cayman Islands|\
Central African Republic:Central African Republic|\
Chad:Chad|\
Chile:Chile|\
China:China|\
Christmas Island:Christmas Island|\
Cocos (Keeling) Islands:Cocos (Keeling) Islands|\
Colombia:Colombia|\
Comoros:Comoros|\
Cook Islands:Cook Islands|\
Costa Rica:Costa Rica|\
Cote D\'ivoire:Cote D\'ivoire|\
Croatia:Croatia|\
Cyprus:Cyprus|\
Czech Republic:Czech Republic|\
Democratic Republic of Congo:Democratic Republic of Congo|\
Denmark:Denmark|\
Djibouti:Djibouti|\
Dominica:Dominica|\
Dominican Republic:Dominican Republic|\
East Timor:East Timor|\
Ecuador:Ecuador|\
Egypt:Egypt|\
El Salvador:El Salvador|\
Equatorial Guinea:Equatorial Guinea|\
Eritrea:Eritrea|\
Estonia:Estonia|\
Ethiopia:Ethiopia|\
Falkland Islands (Malvinas):Falkland Islands (Malvinas)|\
Faroe Islands:Faroe Islands|\
Fiji:Fiji|\
Finland:Finland|\
France:France|\
French Guiana:French Guiana|\
French Polynesia:French Polynesia|\
French Southern Territories:French Southern Territories|\
Gabon:Gabon|\
Gambia:Gambia|\
Georgia:Georgia|\
Germany:Germany|\
Ghana:Ghana|\
Gibraltar:Gibraltar|\
Greece:Greece|\
Greenland:Greenland|\
Grenada:Grenada|\
Guadeloupe:Guadeloupe|\
Guam:Guam|\
Guatemala:Guatemala|\
Guernsey:Guernsey|\
Guinea:Guinea|\
Guinea-bissau:Guinea-bissau|\
Guyana:Guyana|\
Haiti:Haiti|\
Heard And Mc Donald Islands:Heard And Mc Donald Islands|\
Holy See:Holy See|\
Honduras:Honduras|\
Hong Kong:Hong Kong|\
Hungary:Hungary|\
Iceland:Iceland|\
India:India|\
Indonesia:Indonesia|\
Iraq:Iraq|\
Ireland:Ireland|\
Isle of man:Isle of man|\
Israel:Israel|\
Italy:Italy|\
Jamaica:Jamaica|\
Japan:Japan|\
Jersey:Jersey|\
Jordan:Jordan|\
Kazakhstan:Kazakhstan|\
Kenya:Kenya|\
Kiribati:Kiribati|\
Republic Of Korea:Republic Of Korea|\
Republic of Kosovo:Republic of Kosovo|\
Kuwait:Kuwait|\
Kyrgyzstan:Kyrgyzstan|\
Lao:Lao|\
Latvia:Latvia|\
Lebanon:Lebanon|\
Lesotho:Lesotho|\
Liberia:Liberia|\
Libyan Arab Jamahiriya:Libyan Arab Jamahiriya|\
Liechtenstein:Liechtenstein|\
Lithuania:Lithuania|\
Luxembourg:Luxembourg|\
Macau:Macau|\
Macedonia:Macedonia|\
Madagascar:Madagascar|\
Malawi:Malawi|\
Malaysia:Malaysia|\
Maldives:Maldives|\
Mali:Mali|\
Malta:Malta|\
Marshall Islands:Marshall Islands|\
Martinique:Martinique|\
Mauritania:Mauritania|\
Mauritius:Mauritius|\
Mayotte:Mayotte|\
Mexico:Mexico|\
Micronesia:Micronesia|\
Moldova:Moldova|\
Monaco:Monaco|\
Mongolia:Mongolia|\
Montenegro:Montenegro|\
Montserrat:Montserrat|\
Morocco:Morocco|\
Mozambique:Mozambique|\
Namibia:Namibia|\
Nauru:Nauru|\
Nepal:Nepal|\
Netherlands:Netherlands|\
Netherlands Antilles:Netherlands Antilles|\
New Caledonia:New Caledonia|\
New Zealand:New Zealand|\
Nicaragua:Nicaragua|\
Niger:Niger|\
Nigeria:Nigeria|\
Niue:Niue|\
Norfolk Island:Norfolk Island|\
Northern Mariana Islands:Northern Mariana Islands|\
Norway:Norway|\
Oman:Oman|\
Pakistan:Pakistan|\
Palau:Palau|\
Panama:Panama|\
Papua New Guinea:Papua New Guinea|\
Paraguay:Paraguay|\
Peru:Peru|\
Philippines:Philippines|\
Pitcairn:Pitcairn|\
Poland:Poland|\
Portugal:Portugal|\
Puerto Rico:Puerto Rico|\
Qatar:Qatar|\
Republic of Congo:Republic of Congo|\
Reunion:Reunion|\
Romania:Romania|\
Russian Federation:Russian Federation|\
Rwanda:Rwanda|\
Saint Helena:Saint Helena|\
Saint Kitts And Nevis:Saint Kitts And Nevis|\
Saint Lucia:Saint Lucia|\
Saint martin:Saint martin|\
Saint Pierre and Miquelon:Saint Pierre and Miquelon|\
Saint Vincent and the Grenadin:Saint Vincent and the Grenadin|\
Samoa:Samoa|\
San Marino:San Marino|\
Sao Tome And Principe:Sao Tome And Principe|\
Saudi Arabia:Saudi Arabia|\
Senegal:Senegal|\
Serbia:Serbia|\
Serbia and Montenegro:Serbia and Montenegro|\
Seychelles:Seychelles|\
Sierra Leone:Sierra Leone|\
Singapore:Singapore|\
Slovakia:Slovakia|\
Slovenia:Slovenia|\
Solomon Islands:Solomon Islands|\
Somalia:Somalia|\
South Africa:South Africa|\
South Georgia:South Georgia|\
Spain:Spain|\
Sri Lanka:Sri Lanka|\
Suriname:Suriname|\
Svalbard And Jan Mayen Islands:Svalbard And Jan Mayen Islands|\
Swaziland:Swaziland|\
Sweden:Sweden|\
Switzerland:Switzerland|\
Taiwan:Taiwan|\
Tajikistan:Tajikistan|\
Tanzania, United Republic of:Tanzania, United Republic of|\
Thailand:Thailand|\
Timor-Leste:Timor-Leste|\
Togo:Togo|\
Tokelau:Tokelau|\
Tonga:Tonga|\
Trinidad And Tobago:Trinidad And Tobago|\
Tunisia:Tunisia|\
Turkey:Turkey|\
Turkmenistan:Turkmenistan|\
Turks And Caicos Islands:Turks And Caicos Islands|\
Tuvalu:Tuvalu|\
Virgin Islands, U.S.:Virgin Islands, U.S.|\
Uganda:Uganda|\
Ukraine:Ukraine|\
United Arab Emirates:United Arab Emirates|\
United Kingdom:United Kingdom|\
United States:United States|\
Uruguay:Uruguay|\
US Minor Islands:US Minor Islands|\
Uzbekistan:Uzbekistan|\
Vanuatu:Vanuatu|\
Venezuela:Venezuela|\
Vietnam:Vietnam|\
Wallis And Futuna Islands:Wallis And Futuna Islands|\
Western Sahara:Western Sahara|\
Yemen:Yemen|\
Zambia:Zambia|\
Zimbabwe:Zimbabwe|\
';

function TrimString(sInString) {
  if ( sInString ) {
    sInString = sInString.replace( /^\s+/g, "" );// strip leading
    return sInString.replace( /\s+$/g, "" );// strip trailing
  }
}

// Populates the country selected with the counties from the country list
function populateCountry(defaultCountry) {
  if ( postCountry != '' ) {
    defaultCountry = postCountry;
  }
  var countryLineArray = country.split('|');  // Split into lines
  var selObj = document.getElementById('countrySelect');
  selObj.options[0] = new Option('Select Country','');
  selObj.selectedIndex = 0;
  for (var loop = 0; loop < countryLineArray.length; loop++) {
    lineArray = countryLineArray[loop].split(':');
    countryCode  = TrimString(lineArray[0]);
    countryName  = TrimString(lineArray[1]);
    if ( countryCode != '' ) {
      selObj.options[loop + 1] = new Option(countryName, countryCode);
    }
    if ( defaultCountry == countryCode ) {
      selObj.selectedIndex = loop + 1;
    }
  }
}

function populateState() {
  var selObj = document.getElementById('stateSelect');
  var foundState = false;
  // Empty options just in case new drop down is shorter
  if ( selObj.type == 'select-one' ) {
    for (var i = 0; i < selObj.options.length; i++) {
      selObj.options[i] = null;
    }
    selObj.options.length=null;
    selObj.options[0] = new Option('Select State','');
    selObj.selectedIndex = 0;
  }
  // Populate the drop down with states from the selected country
  var stateLineArray = state.split("|");  // Split into lines
  var optionCntr = 1;
  for (var loop = 0; loop < stateLineArray.length; loop++) {
    lineArray = stateLineArray[loop].split(":");
    countryCode  = TrimString(lineArray[0]);
    stateCode    = TrimString(lineArray[1]);
    stateName    = TrimString(lineArray[2]);
  if (document.getElementById('countrySelect').value == countryCode && countryCode != '' ) {
    // If it's a input element, change it to a select
      if ( selObj.type == 'text' ) {
        parentObj = document.getElementById('stateSelect').parentNode;
        parentObj.removeChild(selObj);
        var inputSel = document.createElement("SELECT");
        inputSel.setAttribute("name","state");
        inputSel.setAttribute("id","stateSelect");
        parentObj.appendChild(inputSel) ;
        selObj = document.getElementById('stateSelect');
        selObj.options[0] = new Option('Select State','');
        selObj.selectedIndex = 0;
      }
      if ( stateCode != '' ) {
        selObj.options[optionCntr] = new Option(stateName, stateCode);
      }
      // See if it's selected from a previous post
      if ( stateCode == postState && countryCode == postCountry ) {
        selObj.selectedIndex = optionCntr;
      }
      foundState = true;
      optionCntr++
    }
  }
  // If the country has no states, change the select to a text box
  if ( ! foundState ) {
    parentObj = document.getElementById('stateSelect').parentNode;
    parentObj.removeChild(selObj);
  // Create the Input Field
    var inputEl = document.createElement("INPUT");
    inputEl.setAttribute("id", "stateSelect");
    inputEl.setAttribute("type", "text");
    inputEl.setAttribute("name", "state");
    inputEl.setAttribute("size", 20);
    inputEl.setAttribute("value", postState);
    parentObj.appendChild(inputEl) ;
  }
}

function initCountry(country) {
  populateCountry(country);
  populateState();
}