function jonesClock ( ) {
	var months = new Array("Jan", "Feb", "Mar",
        "Apr", "May", "Jun",
        "Jul", "Aug", "Sep",
        "Oct", "Nov", "Dec");
	
	var time = new Date();
	var hour = time.getHours ( );
	var minute = time.getMinutes ( );
	var date = time.getDate();
	var month = time.getMonth();
	month = months[month];
	var year = time.getFullYear();
	var timezone = determine_timezone();
	
	// Add a leading 0 in minute
	minute = ( minute < 10 ? "0" : "" ) + minute;
	// determin am or pm
	var ampm = ( hour < 12 ) ? "A.M." : "P.M.";
	// change hour to 12 hour format
	hour = ( hour > 12 ) ? hour - 12 : hour;  
	// Add a leading 0 in hour
	hour = ( hour < 10 ? "0" : "" ) + hour;  
	// add leading zero to date
	date = ( date < 10 ? "0" : "" ) + date;
	
	// Compose the string for display
	var clock_text = "<div><span>" + hour + ":" + minute + "</span><strong>" + ampm + " " + timezone + "</strong></div><p style='color:#007fc3;'>" + month + " " + date + ", " + year + "</p>";
	// Update the time display
	document.getElementById("showclock").innerHTML = clock_text;
	var ua = navigator.userAgent;
	if ((ua.indexOf('Firefox') != -1) && (ua.indexOf('Mac') != -1)) {
	  document.getElementById("showclock").style.width = "128px";
	}
}

function determine_timezone() {
	// This function determines the timzezone of the logged in user.
	// script by Josh Fraser (http://www.onlineaspect.com)
	
	// Determine whether dst is in effect in New York
	var localtime = new Date ();
	var is_observing_dst = 0;
	if (localtime >= new Date(2008, 3-1, 9) && (localtime <= new Date(2008,11-1,2))) {
		is_observing_dst = 1;
	} else {
		if (localtime >= new Date(2009, 3-1, 8) && (localtime <= new Date(2009,11-1,1))) {
			is_observing_dst = 1;
		} else {
			if (localtime >= new Date(2010, 3-1, 14) && (localtime <= new Date(2010,11-1,7))) {
				is_observing_dst = 1;
			}
		}
	}	
	var rightNow = new Date();
	var jan1 = new Date(rightNow.getFullYear(), 0, 1, 0, 0, 0, 0);  // jan 1st
	var june1 = new Date(rightNow.getFullYear(), 5, 1, 0, 0, 0, 0); // june 1st
	var temp = jan1.toGMTString();
	var jan2 = new Date(temp.substring(0, temp.lastIndexOf(" ")-1));
	temp = june1.toGMTString();
	var june2 = new Date(temp.substring(0, temp.lastIndexOf(" ")-1));
	var std_time_offset = (jan1 - jan2) / (1000 * 60 * 60);
	var daylight_time_offset = (june1 - june2) / (1000 * 60 * 60);
	var is_dst_observed ;
	if (std_time_offset == daylight_time_offset) {
		is_dst_observed = "0"; // daylight savings time is NOT observed
	} else {
		// positive is southern, negative is northern hemisphere
		var hemisphere = std_time_offset - daylight_time_offset;
		if (hemisphere >= 0) {
			std_time_offset = daylight_time_offset;
		}
		is_dst_observed = "1"; // daylight savings time is observed
	}
	var timezone = "";
	var tz_offset = convert(std_time_offset)+","+is_dst_observed;
	if (tz_offset == "+05:30,0") {
		timezone = "IST";
	} else if (tz_offset == "00:00,0") {
		timezone = "GMT";
	} else if (tz_offset == "00:00,1") {
		timezone = "GMT";
	} else if (tz_offset == "-04:00,1") {
		timezone = "EDT";
	} else if (tz_offset == "-05:00,1") {
		timezone = "EST";
		if (is_observing_dst == 1) {
			timezone = "EDT";
		}
	} else if (tz_offset == "-06:00,1") {
		timezone = "MDT";
	} else if (tz_offset == "-07:00,1") {
		timezone = "PDT";
	} else if (tz_offset == "-06:00,0") {
		timezone = "CST";
	} else if (tz_offset == "-07:00,0") {
		timezone = "MST";
	} else if (tz_offset == "-08:00,1") {
		timezone = "PST";
		if (is_observing_dst == 1) {
			timezone = "PDT";
		}
	} else if (tz_offset == "-08:00,0") {
		timezone = "PST";
	} else if (tz_offset == "+02:00,0") {
		timezone = "CEST";
	} else {
		timezone = "";
	}
	return timezone;
}

function convert(value) {
	var hours = parseInt(value);
	value -= parseInt(value);
	value *= 60;
	var mins = parseInt(value);
	value -= parseInt(value);
	value *= 60;
	var secs = parseInt(value);
	var display_hours = hours;
	display_hours = (hours < 10 && hours > 0) ? "+0"+hours : "+"+hours; // positive
	display_hours = (hours == 0) ? "0"+hours : display_hours; // handle GMT case (00:00)
	display_hours = (hours < 0 && hours > -10) ? "-0"+Math.abs(hours) : display_hours; // neg
	mins = (mins < 10) ? "0"+mins : mins;
	return display_hours+":"+mins;
}