Deze routine zorgt er voor dat de tijdzone van een bezoeker wordt uitgelezen. In de variabele selectedIndex=i staat het resultaat van de javascript procedure. Die variabele bepaalt welke regel in de select wordt getoond. Maar met hetzelfde gemak kan je een array aanmaken, en de variabele gebruiken om de juiste positie te verkrijgen (in de array). Met een ajax-call kan je dan de gegevens (via PHP) wegschrijven om in een textfile (of database) de tijdzone van de bezoeker op te slaan (voor later gebruik in statistieken etc.).
<select name='zone_tijd' id='zone_tijd' style='width:500px'>
<option value='-12:00,0'>( -12:00 ) Internationale westelijke datumgrens</option>
<option value='-11:00,0'>( -11:00 ) Midway Island, Samoa</option>
<option value='-10:00,0'>( -10:00 ) Hawaii</option>
<option value='-09:00,1'>( -09:00 ) Alaska</option>
<option value='-08:00,1'>( -08:00 ) Pacific Time (V.S. en Canada)</option>
<option value='-07:00,0'>( -07:00 ) Arizona</option>
<option value='-07:00,1'>( -07:00 ) Mountain Time (V.S. en Canada)</option>
<option value='-06:00,0'>( -06:00 ) Central Amerika</option>
<option value='-06:00,1'>( -06:00 ) Central Time (V.S. en Canada)</option>
<option value='-05:00,0'>( -05:00 ) Indiana, Bogota, Lima, Quito, Rio Branco</option>
<option value='-05:00,1'>( -05:00 ) Eastern time (V.S. en Canada)</option>
<option value='-04:00,1'>( -04:00 ) Atlantic time (Canada), Manaus, Santiago</option>
<option value='-04:00,0'>( -04:00 ) Caracas, La Paz</option>
<option value='-03:30,1'>( -03:30 ) Newfoundland</option>
<option value='-03:00,1'>( -03:00 ) Greenland, Brasilia, Montevideo</option>
<option value='-03:00,0'>( -03:00 ) Buenos Aires, Georgetown</option>
<option value='-02:00,1'>( -02:00 ) Mid-Atlantic</option>
<option value='-01:00,1'>( -01:00 ) Azoren</option>
<option value='-01:00,0'>( -01:00 ) Kaapverdie</option>
<option value='00:00,0'>( 00:00 ) Casablanca, Monrovia, Reykjavik</option>
<option value='00:00,1'>( 00:00 ) Greenwich mean time, Lissabon Londen</option>
<option value='+01:00,1'>( +01:00 ) Amsterdam, Berlijn, Rome, Wenen, Praag, Brussel</option>
<option value='+01:00,0'>( +01:00 ) West Centraal Afrika</option>
<option value='+02:00,1'>( +02:00 ) Amman, Athene, Istanbul, Beirut, Cairo, Jerusalem</option>
<option value='+02:00,0'>( +02:00 ) Harare, Pretoria</option>
<option value='+03:00,1'>( +03:00 ) Baghdad, Moskou, St. Petersburg, Volgograd</option>
<option value='+03:00,0'>( +03:00 ) Kuweitt, Riyadh, Nairobi, Tbilisi</option>
<option value='+03:30,0'>( +03:30 ) Teheran</option>
<option value='+04:00,0'>( +04:00 ) Abu Dhadi, Muscat</option>
<option value='+04:00,1'>( +04:00 ) Baku, Yerevan</option>
<option value='+04:30,0'>( +04:30 ) Kabul</option>
<option value='+05:00,1'>( +05:00 ) Ekaterinburg</option>
<option value='+05:00,0'>( +05:00 ) Islamabad, Karachi, Tashkent</option>
<option value='+05:30,0'>( +05:30 ) Chennai, Kolkata, Mumbai, New Delhi, Sri Jayawardenepura</option>
<option value='+05:45,0'>( +05:45 ) Kathmandu</option>
<option value='+06:00,0'>( +06:00 ) Astana, Dhaka</option>
<option value='+06:00,1'>( +06:00 ) Almaty, Nonosibirsk</option>
<option value='+06:30,0'>( +06:30 ) Yangon (Rangoon)</option>
<option value='+07:00,1'>( +07:00 ) Krasnoyarsk</option>
<option value='+07:00,0'>( +07:00 ) Bangkok, Hanoi, Jakarta</option>
<option value='+08:00,0'>( +08:00 ) Beijing, Hong Kong, Singapore, Taipei</option>
<option value='+08:00,1'>( +08:00 ) Irkutsk, Ulaan Bataar, Perth</option>
<option value='+09:00,1'>( +09:00 ) Yakutsk</option>
<option value='+09:00,0'>( +09:00 ) Seoul, Osaka, Sapporo, Tokyo</option>
<option value='+09:30,0'>( +09:30 ) Darwin</option>
<option value='+09:30,1'>( +09:30 ) Adelaide</option>
<option value='+10:00,0'>( +10:00 ) Brisbane, Guam, Port Moresby</option>
<option value='+10:00,1'>( +10:00 ) Canberra, Melbourne, Sydney, Hobart, Wladiwostok</option>
<option value='+11:00,0'>( +11:00 ) Magadan, Solomon Is., New Caledonia</option>
<option value='+12:00,1'>( +12:00 ) Auckland, Wellington</option>
<option value='+12:00,0'>( +12:00 ) Fiji, Kamchatka, Marshall Is.</option>
<option value='+13:00,0'>( +13:00 ) Nuku'alofa</option>
</select>
<script>
/*global window: false */
/*global document: false */
function bereken_tijdzone(de_zone) {
var uur = parseInt(de_zone, 10);
de_zone -= parseInt(de_zone, 10);
de_zone *= 60;
var welke_plaats = parseInt(de_zone, 10);
de_zone -= parseInt(de_zone, 10);
de_zone *= 60;
var welk_uur = uur;
if (uur === 0) {
welk_uur = "00";
} else if (uur > 0) {
welk_uur = (uur < 10) ? "+0" + uur : "+" + uur;
} else {
welk_uur = (uur > -10) ? "-0" + Math.abs(uur) : uur;
}
welke_plaats = (welke_plaats < 10) ? "0" + welke_plaats : welke_plaats;
return welk_uur + ":" + welke_plaats;
}
function tijdzone() {
var nu = new Date();
var check_1_januari = new Date(nu.getFullYear(), 0, 1, 0, 0, 0, 0);
var check_1_juni = new Date(nu.getFullYear(), 6, 1, 0, 0, 0, 0);
var temp = check_1_januari.toGMTString();
var check_2_januari = new Date(temp.substring(0, temp.lastIndexOf(" ") - 1));
temp = check_1_juni.toGMTString();
var check_2_juni = new Date(temp.substring(0, temp.lastIndexOf(" ") - 1));
var naar_off = (check_1_januari - check_2_januari) / (1000 * 60 * 60);
var dlight_off = (check_1_juni - check_2_juni) / (1000 * 60 * 60);
var verschil;
if (naar_off === dlight_off) {
verschil = "0";
} else {
var het_halfrond = naar_off - dlight_off;
if (het_halfrond >= 0) {
naar_off = dlight_off;
}
verschil = "1";
}
var i;
if (document.getElementById('zone_tijd')) {
for (i = 0; i < document.getElementById('zone_tijd').options.length; i++) {
if (document.getElementById('zone_tijd').options[i].value === bereken_tijdzone(naar_off) + "," + verschil) {
document.getElementById('zone_tijd').selectedIndex = i;
break;
}
}
}
}
window.onload = tijdzone;
</script>