// Astronomy Blog Time Converter Version 0.2.2
// http://www.strudel.org.uk/blog/astro/
// Released under the GPL
// Created 4th July 2005 by Stuart

function getLocalTime(obj) {
	// Get the time from the link
	var string = obj.innerHTML;
	if(!string) return;

	var spacer = ".";
	var times = string.split(" ");
	if(times[0].indexOf(":") > 0){
		var bits = times[0].split(":");
		times[0] = bits[0]+"."+bits[1];	// note: this isn't decimal
		spacer = ":";	// keep track of the spacer used for time
	}
	var time = times[0];
	var ampm = times[1];
	var tz = times[2];
	// Keep in same display format as input
	var useleadzero = (times[0].charAt(0) == "0") ? 1 : 0
	var usetrailzero = (times[0].charAt(times[0].length-1) == "0" && (time != 10 && time != 0)) ? 1 : 0

	var useampm = 1;
	time++;
	time--;

	// Now convert time into decimal hours
	if(time != Math.round(time)){ time = Math.floor(time) + (time-Math.floor(time))*10/6; }

	if(ampm == "am" || ampm == "AM" || ampm == "a.m."){ }
	else if(ampm == "pm" || ampm == "PM" || ampm == "p.m."){ time += 12 }
	else{ tz = ampm; useampm = 0; }

	var tzs = new Array();	// Create an array to hold time zones
	tzs["A"] = 1;
	tzs["ACDT"] = 10.5;
	tzs["ACST"] = 9.5;
	tzs["ADT"] = -3;
	tzs["AEDT"] = 11;
	tzs["AEST"] = 10;
	tzs["AKDT"] = -8;
	tzs["AKST"] = -9;
	tzs["AST"] = -4;
	tzs["AWST"] = 8;
	tzs["B"] = 2;
	tzs["BST"] = 1;
	tzs["C"] = 3;
	tzs["CDT"] = -5;
	tzs["CEDT"] = 2;
	tzs["CEST"] = 2;
	tzs["CET"] = 1;
	tzs["CST"] = -6;
	tzs["CXT"] = 7;
	tzs["D"] = 4;
	tzs["E"] = 5;
	tzs["EDT"] = -4;
	tzs["EEDT"] = 3;
	tzs["EEST"] = 3;
	tzs["EET"] = 2;
	tzs["EST"] = -5;
	tzs["F"] = 6;
	tzs["G"] = 7;
	tzs["GMT"] = 0;
	tzs["H"] = 8;
	tzs["HAA"] = -3;
	tzs["HAC"] = -5;
	tzs["HADT"] = -9;
	tzs["HAE"] = -4;
	tzs["HAP"] = -7;
	tzs["HAR"] = -6;
	tzs["HAST"] = -10;
	tzs["HAT"] = -2.5;
	tzs["HAY"] = -8;
	tzs["HNA"] = -4;
	tzs["HNC"] = -6;
	tzs["HNE"] = -5;
	tzs["HNP"] = -8;
	tzs["HNR"] = -7;
	tzs["HNT"] = -3.5;
	tzs["HNY"] = -9;
	tzs["I"] = 9;
	tzs["IST"] = 9;
	tzs["IST"] = 1;
	tzs["JST"] = 9;
	tzs["K"] = 10;
	tzs["L"] = 11;
	tzs["M"] = 12;
	tzs["MDT"] = -6;
	tzs["MESZ"] = 2;
	tzs["MEZ"] = 1;
	tzs["MST"] = -7;
	tzs["N"] = -1;
	tzs["NDT"] = -2.5;
	tzs["NFT"] = 11.5;
	tzs["NST"] = -3.5;
	tzs["O"] = -2;
	tzs["P"] = -3;
	tzs["PDT"] = -7;
	tzs["PST"] = -8;
	tzs["Q"] = -4;
	tzs["R"] = -5;
	tzs["S"] = -6;
	tzs["T"] = -7;
	tzs["U"] = -8;
	tzs["UTC"] = 0;
	tzs["UT"] = 0;
	tzs["V"] = -9;
	tzs["W"] = -10;
	tzs["WEDT"] = 1;
	tzs["WEST"] = 1;
	tzs["WET"] = 0;
	tzs["WST"] = 8;
	tzs["X"] = -11;
	tzs["Y"] = -12;
	tzs["Z"] = 0;

	tz = tzs[tz];	// Choose the input time zone
	
	// Work out system timezone offset
	var rightNow = new Date();
	var d1 = new Date(rightNow.getFullYear(), 0, 1, 0, 0, 0, 0);
	var d2 = new Date(rightNow.getFullYear(), 6, 1, 0, 0, 0, 0);
	var temp = d1.toGMTString();
	var d3 = new Date(temp.substring(0, temp.lastIndexOf(" ")-1));
	var temp = d2.toGMTString();
	var d4 = new Date(temp.substring(0, temp.lastIndexOf(" ")-1));
	var hoursDiffStdTime = (d1 - d3) / (1000 * 60 * 60);
	var hoursDiffDaylightTime = (d2 - d4) / (1000 * 60 * 60);

	// Observe Daylight savings
	if (hoursDiffDaylightTime != hoursDiffStdTime) time += (hoursDiffDaylightTime-tz);
	else time += (hoursDiffStdTime-tz);

	if(time > 23) time -= 24;
	if(time < 0) time += 24;

	var timestr = "";

	if(useampm == 1){
		if(time >= 12){
			time -= 12;
			if(time == 0){ time = 12; timestr += " noon"; }
			else timestr += " pm";
		}else timestr += " am";
	}
	var hour = Math.floor(time);
	var min = Math.round((time - Math.floor(time))*100*0.6);
	if(hour < 10 && useleadzero) hour = "0" + hour;
	if(min < 10) min = "0" + min;
	if((min == "0" || min == "00") && !usetrailzero){ min = ""; spacer = ""; }
	
	time = hour + spacer + min;
	timestr = time + timestr

	if(times[0] == time) return "";
	else return string + " is " + timestr + " in your local time zone";

}

function UTC(obj){
	var output = getLocalTime(obj);
	if(output) obj.title = output;
}

function hideUTC(obj){
	// this is a place holder
}

