1// script by Josh Fraser (http://www.onlineaspect.com) 2 3function calculate_time_zone() { 4 var rightNow = new Date(); 5 var jan1 = new Date(rightNow.getFullYear(), 0, 1, 0, 0, 0, 0); // jan 1st 6 var june1 = new Date(rightNow.getFullYear(), 6, 1, 0, 0, 0, 0); // june 1st 7 var temp = jan1.toGMTString(); 8 var jan2 = new Date(temp.substring(0, temp.lastIndexOf(" ")-1)); 9 temp = june1.toGMTString(); 10 var june2 = new Date(temp.substring(0, temp.lastIndexOf(" ")-1)); 11 var std_time_offset = (jan1 - jan2) / (1000 * 60 * 60); 12 var daylight_time_offset = (june1 - june2) / (1000 * 60 * 60); 13 var dst; 14 if (std_time_offset == daylight_time_offset) { 15 dst = "0"; // daylight savings time is NOT observed 16 } else { 17 // positive is southern, negative is northern hemisphere 18 var hemisphere = std_time_offset - daylight_time_offset; 19 if (hemisphere >= 0) 20 std_time_offset = daylight_time_offset; 21 dst = "1"; // daylight savings time is observed 22 } 23 var i; 24 // check just to avoid error messages 25 if (document.getElementById('timezone')) { 26 for (i = 0; i < document.getElementById('timezone').options.length; i++) { 27 if (document.getElementById('timezone').options[i].value == convert(std_time_offset)+","+dst) { 28 document.getElementById('timezone').selectedIndex = i; 29 break; 30 } 31 } 32 } 33} 34 35function convert(value) { 36 var hours = parseInt(value); 37 value -= parseInt(value); 38 value *= 60; 39 var mins = parseInt(value); 40 value -= parseInt(value); 41 value *= 60; 42 var secs = parseInt(value); 43 var display_hours = hours; 44 // handle GMT case (00:00) 45 if (hours == 0) { 46 display_hours = "00"; 47 } else if (hours > 0) { 48 // add a plus sign and perhaps an extra 0 49 display_hours = (hours < 10) ? "+0"+hours : "+"+hours; 50 } else { 51 // add an extra 0 if needed 52 display_hours = (hours > -10) ? "-0"+Math.abs(hours) : hours; 53 } 54 55 mins = (mins < 10) ? "0"+mins : mins; 56 return display_hours+":"+mins; 57} 58 59onload = calculate_time_zone;