function countryWarp(sPrefix, sId) {
    if (document.getElementById) {
	oSelect = document.getElementById(sId);
	sLocation = oSelect.options[oSelect.selectedIndex].value ;
	if (document.getElementById("countryMode") ) {
	    if ((  document.getElementById("countryMode").value == "absolute" &&
		   oSelect.parentNode.parentNode.getAttribute('id') != 'regional-sites')
		|| sLocation.substring(0,7) == "http://") {
		// it's an absolute URL
		window.location.href = sLocation; 
		return false;
	    } else {
		// it's relative
		window.location.href = sPrefix + sLocation;
		return false;
	    }
	} else {
	    if (sLocation.substring(0,7) != "http://") {
		// If no http:// prefix then assume it's an ELT site with URL relative to /elt/.
		window.location.href = sPrefix + sLocation;
		return false;
	    } else {
		// else it's an absolute URL
		window.location.href = sLocation; 
		return false;
	    }
	}
    }
    return false;
}

function countrySelect(sPrefix, sId) {
    /* Gets the country code from the URL, or if fails tries the prefix, and sets the drop-down menu.
`      Or defaults to international. Example prefixes: "/elt" (for all sites below /elt), "/us/esl" (for US) */
    sLocation = document.location.href;
    iIndex = sLocation.indexOf(sPrefix) + sPrefix.length;
    sLocation = sLocation.substring(iIndex + 1);
    iIndex = sLocation.indexOf("/");
    sCountry = "/" + sLocation.substring(0,iIndex+1);
    oSelect = document.getElementById(sId);

    var bFound=false;
    for(i=1; i < oSelect.options.length; i++) {
	if (oSelect.options[i].value == sCountry) {
	    iPleaseSelect = i; 
	    bFound = true;
	}
    }

    if (!bFound) {
	/* Either it's not there, or it's a 'foreign' (in URL terms) site. Find based on prefix. */
	switch (sPrefix) {
	    case "/us/esl": iPleaseSelect = 1; break;  /* Index of US page in list */
              /* Add more 'foreign' sites here */
	    default: iPleaseSelect = 0;  /* Index of International page in list */
	}

	/* For IE5 Mac, add one to menu selection. */
	if (  (navigator.appName == "Microsoft Internet Explorer") &&
	      (navigator.appVersion.indexOf('MSIE 5') != -1) ) {
	    iPleaseSelect = iPleaseSelect + 1;
	}
    }

    oSelect.selectedIndex = iPleaseSelect;

    return false;
}

function countryDropDown(sPrefix) {
    /* This information is repeated in class.elt-page.inc/page->countries_asTable(); */
    /* IE5/Mac Breaks the formatting if we use OPTGROUP so check for this and provide a flat 
     * menu instead of the hierarchical one. */
    if ( ((navigator.appName == "Microsoft Internet Explorer") &&
	  (navigator.appVersion.indexOf('MSIE 5') != -1) )) {

	sHTML  = "<form method=\"post\" action=\"#\">\n";
	sHTML += " <select id=\"countries\" onChange=\"countryWarp('"+sPrefix+"', 'countries')\">\n";
	/* URLs without http:// are interpreted by countryWarp() as relative to its first arg, else absolute. */

	sHTML += "  <option value=\"#\">--- Cambridge ELT sites ---</option>\n";
	sHTML += "  <option value=\"/\">International ELT</option>\n";
	sHTML += "  <option value=\"http://www.cambridge.org/us/esl/\">North America ESL</option>\n";
	//	sHTML += "  <option value=\"/al/\">ELT Albania</option>\n";
	sHTML += "  <option value=\"/be/\">ELT Benelux</option>\n";
	sHTML += "  <option value=\"/si/\">ELT Bosnia</option>\n";
	sHTML += "  <option value=\"/hr/\">ELT Croatia</option>\n";
	sHTML += "  <option value=\"/si/\">ELT Czech Republic</option>\n";
	sHTML += "  <option value=\"/fr/\">ELT France</option>\n";
	sHTML += "  <option value=\"/gr/\">ELT Greece and Cyprus</option>\n";
	sHTML += "  <option value=\"/hk/\">ELT Hong Kong</option>\n";
	//	sHTML += "  <option value=\"/hk-cn/\">ELT Hong Kong (Chinese)</option>\n";
	sHTML += "  <option value=\"/hu/\">ELT Hungary</option>\n";
	sHTML += "  <option value=\"/it/\">ELT Italy</option>\n";
	//	sHTML += "  <option value=\"/jp/\">ELT Japan</option>\n";
	sHTML += "  <option value=\"/lt/\">ELT Lithuania</option>\n";
	//   sHTML += "  <option value=\"/ae/\">ELT Middle East/The Gulf</option>\n";
	sHTML += "  <option value=\"/mena/\">ELT Middle East/North Africa</option>\n";
	sHTML += "  <option value=\"/pl/\">ELT Poland</option>\n";
	sHTML += "  <option value=\"/iberia/\">ELT Portugal</option>\n";
	sHTML += "  <option value=\"/ru/\">ELT Russia</option>\n";
	sHTML += "  <option value=\"/scandinavia/\">ELT Scandinavia</option>\n";
	//	sHTML += "  <option value=\"/sr/\">ELT Serbia</option>\n";
	sHTML += "  <option value=\"/sg/\">ELT Singapore</option>\n";
	//	sHTML += "  <option value=\"/sk/\">ELT Slovakia</option>\n";
	sHTML += "  <option value=\"/si/\">ELT Slovenia</option>\n";
	sHTML += "  <option value=\"/kr/\">ELT South Korea</option>\n";
	sHTML += "  <option value=\"/iberia/\">ELT Spain</option>\n";
	sHTML += "  <option value=\"/ch/\">ELT Switzerland</option>\n";
	//	sHTML += "  <option value=\"/sk/\">ELT Taiwan</option>\n";
	sHTML += "  <option value=\"/tr/\">ELT Turkey</option>\n";
	sHTML += "  <option value=\"/uk/\">ELT UK and Ireland</option>\n";

	sHTML += "  <option value=\"#\">--- Other Cambridge sites ---</option>\n";
	sHTML += "  <option value=\"http://www.cambridge.org/\">Cambridge Home Page</option>\n";
	sHTML += " </select>\n";
	sHTML += "</form>\n";

    } else {

	sHTML  = "<form method=\"post\" action=\"#\">\n";
	sHTML += " <select id=\"countries\" onChange=\"countryWarp('"+sPrefix+"', 'countries')\">\n";
	/* URLs without http:// are interpreted by countryWarp() as relative to its first arg, else absolute. */

	sHTML += "  <optgroup class=\"heading\" label=\"Cambridge ELT sites\">\n";
	sHTML += "    <option value=\"/\">International ELT</option>\n";
	sHTML += "    <option value=\"http://www.cambridge.org/us/esl/\">North America ESL</option>\n";
	//	sHTML += "  <option value=\"/al/\">ELT Albania</option>\n";
	sHTML += "  <option value=\"/be/\">ELT Benelux</option>\n";
	sHTML += "  <option value=\"/si/\">ELT Bosnia</option>\n";
	sHTML += "  <option value=\"/si/\">ELT Croatia</option>\n";
	sHTML += "  <option value=\"/cz/\">ELT Czech Republic</option>\n";
	sHTML += "  <option value=\"/fr/\">ELT France</option>\n";
	sHTML += "  <option value=\"/gr/\">ELT Greece</option>\n";
	sHTML += "  <option value=\"/hk/\">ELT Hong Kong</option>\n";
	//	sHTML += "  <option value=\"/hk-cn/\">ELT Hong Kong (Chinese)</option>\n";
	sHTML += "  <option value=\"/hu/\">ELT Hungary</option>\n";
	sHTML += "  <option value=\"/it/\">ELT Italy</option>\n";
	//	sHTML += "  <option value=\"/jp/\">ELT Japan</option>\n";
	sHTML += "  <option value=\"/lt/\">ELT Lithuania</option>\n";
	//  sHTML += "  <option value=\"/ae/\">ELT Middle East/The Gulf</option>\n";
	sHTML += "  <option value=\"/mena/\">ELT Middle East/North Africa</option>\n";
	sHTML += "  <option value=\"/pl/\">ELT Poland</option>\n";
	sHTML += "  <option value=\"/iberia/\">ELT Portugal</option>\n";
	sHTML += "  <option value=\"/ru/\">ELT Russia</option>\n";
	sHTML += "  <option value=\"/scandinavia/\">ELT Scandinavia</option>\n";
	//	sHTML += "  <option value=\"/sr/\">ELT Serbia</option>\n";
	sHTML += "  <option value=\"/sg/\">ELT Singapore</option>\n";
	//	sHTML += "  <option value=\"/sk/\">ELT Slovakia</option>\n";
	sHTML += "  <option value=\"/si/\">ELT Slovenia</option>\n";
	sHTML += "  <option value=\"/kr/\">ELT South Korea</option>\n";
	sHTML += "  <option value=\"/iberia/\">ELT Spain</option>\n";
	sHTML += "  <option value=\"/ch/\">ELT Switzerland</option>\n";
	//	sHTML += "  <option value=\"/sk/\">ELT Taiwan</option>\n";
	sHTML += "  <option value=\"/tr/\">ELT Turkey</option>\n";
	sHTML += "  <option value=\"/uk/\">ELT UK and Ireland</option>\n";

	sHTML += "  </optgroup>\n";
	sHTML += "  <optgroup class=\"heading\" label=\"Other Cambridge sites\">\n";
	sHTML += "    <option value=\"http://www.cambridge.org/\">Cambridge Home Page</option>\n";
	sHTML += "  </optgroup>\n";
	sHTML += " </select>\n";
	sHTML += "</form>\n";
    }
    document.write(sHTML);
    return false;
}
