  var countryArray = new Array("|---MOST POPULAR---","US|United States","CA|Canada","AU|Australia","GB|United Kingdom","FR|France","NL|Netherlands","IT|Italy","|---ALPHABETICAL---","AF|Afghanistan","AL|Albania","DZ|Algeria","AS|American Samoa","AD|Andorra","AO|Angola","AI|Anguilla","AQ|Antarctica","AG|Antigua and Barbuda","AR|Argentina","AM|Armenia","AW|Aruba","AU|Australia","AT|Austria","AZ|Azerbaijan","BS|Bahamas","BH|Bahrain","BD|Bangladesh","BB|Barbados","BY|Belarus","BE|Belgium","BZ|Belize","BJ|Benin","BM|Bermuda","BT|Bhutan","BO|Bolivia","BW|Botswana","BV|Bouvet Island","BA|Boznia and Herzegovina","BR|Brazil","IO|British Indian Ocean Territory","BN|Brunei Darussalam","BG|Bulgaria","BF|Burkina Faso","BI|Burundi","KH|Cambodia","CM|Cameroon","CA|Canada","CV|Cape Verde","KY|Cayman Islands","CF|Central African Republic","TD|Chad","CL|Chile","CN|China","CX|Christmas Island","CC|Cocos (Keeling) Islands","CO|Columbia","KM|Comoros","CG|Congo","CD|Congo, The Democratic Republic of The","CK|Cook Islands","CR|Costa Rica","HR|Croatia","CU|Cuba","CY|Cyprus","CZ|Czech Republic","CI|Côte D'Ivoire","DK|Denmark","DJ|Djibouti","DM|Dominica","DO|Dominican Republic","TP|East Timor","EC|Ecuador","EG|Egypt","SV|El Salvador","GQ|Equatorial Guinea","ER|Eritrea","EE|Estonia","ET|Ethiopia","FK|Falkland Islands (Malvinas)","FO|Faroe Islands","FJ|Fiji","FI|Finland","FR|France","GF|French Guiana","PF|French Polynesia","TF|French Southern Territories","GA|Gabon","GM|Gambia","GE|Georgia","DE|Germany","GH|Ghana","GI|Gibraltar","GR|Greece","GL|Greenland","GD|Grenada","GP|Guadeloupe","GU|Guam","GT|Guatemala","GN|Guinea","GW|Guinea-Bissau","GY|Guyana","HT|Haiti","HM|Heard Island and McDonald Islands","VA|Holy See (Vatican City State)","HN|Honduras","HK|Hong Kong","HU|Hungary","IS|Iceland","IN|India","ID|Indonesia","IR|Iran, Islamic Republic of","IQ|Iraq","IE|Ireland","IL|Israel","IT|Italy","JM|Jamaica","JP|Japan","JO|Jordan","KZ|Kazakstan","KE|Kenya","KI|Kiribati","KP|Korea, Democratic People's Republic","KR|Korea, Republic of","KW|Kuwait","KG|Kyrgyzstan","LA|Lao People's Democratic Republic","LV|Latvia","LB|Lebanon","LS|Lesotho","LR|Liberia","LY|Libyan Arab Jamahiriya","LI|Liechtenstein","LT|Lithuania","LU|Luxembourg","MO|Macau","MK|Macedonia","MG|Madagascar","MW|Malawi","MY|Malaysia","MV|Maldives","ML|Mali","MT|Malta","MH|Marshall Islands","MQ|Martinique","MR|Mauritania","MU|Mauritius","YT|Mayotte","MX|Mexico","FM|Micronesia, Federated States of","MD|Moldova, Republic of","MC|Monaco","MN|Mongolia","MS|Montserrat","MA|Morocco","MZ|Mozambique","MM|Myanmar","NA|Namibia","NR|Nauru","NP|Nepal","NL|Netherlands","AN|Netherlands Antilles","NC|New Caledonia","NZ|New Zealand","NI|Nicaragua","NE|Niger","NG|Nigeria","NU|Niue","NF|Norfolk Island","MP|Northern Mariana Islands","NO|Norway","OM|Oman","PK|Pakistan","PW|Palau","PS|Palestinian Territory, Occupied","PA|Panama","PG|Papua New Guinea","PY|Paraguay","PE|Peru","PH|Philippines","PN|Pitcairn","PL|Poland","PT|Portugal","PR|Puerto Rico","QA|Qatar","RO|Romania","RU|Russian Federation","RW|Rwanda","RE|Réunion","SH|Saint Helena","KN|Saint Kitts and Nevis","LC|Saint Lucia","PM|Saint Pierre and Miquelon","VC|Saint Vincent and The Grenadines","WS|Samoa","SM|San Marino","ST|Sao Tome and Principe","SA|Saudi Arabia","SN|Senegal","SC|Seychelles","SL|Sierra Leone","SG|Singapore","SK|Slovakia","SI|Slovenia","SB|Solomon Islands","SO|Somalia","ZA|South Africa","GS|South Georgia and The South Sandwhich Islands","ES|Spain","LK|Sri Lanka","SD|Sudan","SR|Suriname","SJ|Svalbard and Jan Mayen","SZ|Swaziland","SE|Sweden","CH|Switzerland","SY|Syrian Arab Republic","TW|Taiwan, Province of China","TJ|Tajikistan","TZ|Tanzania, United Republic of","TH|Thailand","TG|Togo","TK|Tokelau","TO|Tonga","TT|Trinidad and Tobago","TN|Tunisia","TR|Turkey","TM|Turkmenistan","TC|Turks and Caicos Islands","TV|Tuvalu","UG|Uganda","UA|Ukraine","AE|United Arab Emirates","GB|United Kingdom","US|United States","UM|United States Minor Outlying Islands","UY|Uruguay","UZ|Uzbekistan","VU|Vanuatu","VE|Venezuela","VN|Viet Nam","VG|Virgin Islands, British","VI|Virgin Islands, U.S.","WF|Wallis and Futuna","EH|Western Sahara","YE|Yemen","YU|Yugoslavia","ZM|Zambia","ZW|Zimbabwe");

  function addCountryList(myselect) {
    var codeArray, x;
    for( x=0; x < countryArray.length; x++ ) {
	  codeArray = countryArray[x].split("|");
	  var new_option = document.createElement("OPTION");
	  new_option.value = codeArray[0];
	  new_option.text = codeArray[1];
      //myselect.add(new_option);
	  myselect.options[x+1] = new_option;
	}
  }
  
  function addCountryListSelected(couSelect, couValue, staSelect, staValue) {
    var codeArray, x;
	couSelect.length = 0;
	var new_option = document.createElement("OPTION");
    new_option.value = "";
	new_option.text = "Country";	  
	//couSelect.add(new_option);
	couSelect.options[0] = new_option;
	
    for( x=0; x < countryArray.length; x++ ) {
	  codeArray = countryArray[x].split("|");
	  var new_option = document.createElement("OPTION");
      new_option.value = codeArray[0];
	  new_option.text = codeArray[1];
      //couSelect.add(new_option);
	  couSelect.options[x+1] = new_option;

	  if( codeArray[0] == couValue ) {
	    new_option.selected = true;
		populateRegion(staSelect, couValue, staValue, false);
	  }
	}
  }
  

var zipLength = 0;
var zipLengthShipping = 0;

function initializeRegions( selectedRegion ) {
	if( document.account.country.options[document.account.country.selectedIndex].value != '--NULL--' ) {
		populateRegion(document.account.state_or_province,document.account.country.options[document.account.country.selectedIndex].value,selectedRegion,false);
	}
}

function populateRegion(optionField,selected,selectedRegion,shipping) {

    var selectedArray = new Array( new Array("-", "--------") );
	if (selected == '') {
        selectedArray = XX_Array;
    } else {
        selectedArray = eval(selected + "_Array");
    }
    while (selectedArray.length < optionField.options.length+1) {
        optionField.options[(optionField.options.length - 1)] = null;
    }
    var selectedIx=0;
    for (var i=0; i < selectedArray.length; i++) {
        if( i==selectedArray.length-1 ) {
            if( shipping ) {
                zipLengthShipping = selectedArray[i];
            } else {
                zipLength = selectedArray[i];
            }
        } else {
            var option = new Option(selectedArray[i][1], selectedArray[i][0]);
            if( option.value == selectedRegion ) {
                selectedIx = i;
            }
            eval("optionField.options[i]=option");
            optionField.options[selectedIx].selected=true;
        }
    }
    if (optionField.options[0].value == '') {
        optionField.options[0]= null;
        //if ( navigator.appName == 'Netscape') {
        //    if (parseInt(navigator.appVersion) < 4) {
        //    window.history.go(0);
        //    }else {
        //        if (navigator.platform == 'Win32' || navigator.platform == 'Win16') {
        //            window.history.go(0);
        //        }
        //    }
        //}
    }
}

function verifyZipCode( zipCode, country, shipping ) {

	var mask_CA = "ANA NAN";
	var mask_US = "NNNNN";
	var mask_US2 = "NNNNN-NNNN";
	var mask_SE = "NNN NN";
	var mask_PL = "NN-NNN"
	var mask_NL = "NNNN AA";

	var zipCodeLength = zipLength;

	if( shipping ) {
		zipCodeLength = zipLengthShipping;
	}

	if( zipCodeLength==0 ) {
		return true;
	} else {
		// check the length for all but SPECIAL zip codes
		if( zipCodeLength >= 0 && zipCodeLength != zipCode.length ) {
			window.alert( "The postal code is not the right length" );
			return false;
		}
		// check the special zip codes now
		if( country == "CA" ) {
			if( !checkMask( zipCode, mask_CA ) ) {
				window.alert( "Canadian postal codes are of the following format: ANA NAN - where A is a letter and N is a number" );
				return false;
			}
		}
		if( country == "US" ) {
			if( !checkMask( zipCode, mask_US ) && !checkMask( zipCode, mask_US2 ) ) {
				window.alert( "US postal codes are of the following format: ##### or #####-####" );
				return false;
			}
		}
		if( country == "SE" ) {
			if( !checkMask( zipCode, mask_SE ) ) {
				window.alert( "Sweedish postal codes are of the following format: ### ##" );
				return false;
			}
		}
		if( country == "PL" ) {
			if( !checkMask( zipCode, mask_PL ) ) {
				window.alert( "Polish postal codes are of the following format: ##-###" );
				return false;
			}
		}
		if( country == "NL" ) {
			if( !checkMask( zipCode, mask_NL ) ) {
				window.alert( "Dutch postal codes are of the following format: NNNN AA - where A is a letter and N is a number" );
				return false;
			}
		}
		return true;
	}
}

function checkMask( inStr, mask ) {
	if( inStr.length != mask.length ) {
		return false;
	}

	var letters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
	var numbers = "0123456789";

	for (var i=0; i < inStr.length; i++ ) {
		var chr = inStr.charAt(i);
		var msk = mask.charAt(i);
		if( msk=='A' ) {
			if (letters.indexOf(chr) == -1 ) {
          	return false;
  			}
		}
		if( msk=='N' ) {
			if (numbers.indexOf(chr) == -1 ) {
          	return false;
  			}
		}
		if( msk==' ' ) {
			if( chr != ' ' ) {
				return false;
			}
		}
		if( msk=='-' ) {
			if( chr != '-' ) {
				return false;
			}
		}
	}
	return true;
}

