javascript: function convertToLocalTime() {
	bodyText = document.body.innerHTML;
	var newText = "";
	var version = "1.2";
	
	bodyText = bodyText.replace(/&nbsp;/," ");

	newText = bodyText.replace(/(\d?\d?[\:\.]?\d?\d[\:\.]\d\d)\s?([aApPM]\.?[mM]\.?)?\s?([A-Z]{1,4})/g,function($1,$2,$3,$4){ return convertTime($1,$2,$3,$4); });
	newText = newText.replace(/(\d?\d?[\:\.]?\d?\d)\s?([aApP]\.?[mM]\.?)\s?([A-Z]{1,4})/g,function($1,$2,$3,$4){ return convertTime($1,$2,$3,$4); });

	document.body.innerHTML = newText;
}

function convertTime(string,hour,ampm,tz){

		var times = new Array(3);
		times[0] = hour;
		times[1] = ampm;
		times[2] = tz;

		var spacer = ".";

		var time = times[0];
		if(hour.indexOf(':') > 0){ time = times[0].replace(/\:/,"."); }

		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;

		if(time.indexOf('.') > 0){
			var timeparts = time.split(/[\:\.]/);
			if(timeparts.length == 3){ time = Math.floor(timeparts[0]) + Math.floor(timeparts[1])/60 + Math.floor(timeparts[2])/3600; }
			else{ time = Math.floor(timeparts[0]) + Math.floor(timeparts[1])/60; }
		}else{ time = Math.round(time); }

		if(ampm == "am" || ampm == "AM" || ampm == "a.m."){ }
		else if(ampm == "pm" || ampm == "PM" || ampm == "p.m."){ time += 12; }
		else{ useampm = 0; }

		var tzs = new Array();
		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;

		if(typeof tzs[tz]!="number"){ return string; }
		tz = tzs[tz];

		var rightNow = new Date();
		time += (-rightNow.getTimezoneOffset()/60 - 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;
		time2 = time.replace(/\./,":");

		if(times[0] == time || times[0] == time2){ return string; }
		else{ return string+' ('+timestr+')'; }
}

convertToLocalTime();

