// function to calculate local time
// in a different city
// given the city's UTC offset
function calcTime(offset)
{
    // create Date object for current location
    var d = new Date();
   
    // convert to msec
    // add local time zone offset
    // get UTC time in msec
    var utc = d.getTime() + (d.getTimezoneOffset() * 60000);
   
    // create new Date object for different city
    // using supplied offset
    var nd = new Date(utc + (3600000*offset));
    
    var h = nd.getHours();
    var m = nd.getMinutes();
    
    if (h < 10) h = '0' + h;
    if (m < 10) m = '0' + m;
    
    return h + ':' + m;
}

function populateTimes()
{
	var d = new Date();
	var londonOffset = 0;
	var parisOffset = 1;
	var newYorkOffset = -5;
	
	var day = d.getUTCDate();
	var month = d.getUTCMonth() + 1;
	
	// check london & paris offset
	if ((month > 3 || (month == 3 && day >=25)) && (month < 10 || (month == 10 && day < 28)))
	{
		londonOffset += 1;
		parisOffset += 1;
	}
	
	if ((month > 3 || (month == 3 && day >=11)) && (month < 10 || (month == 10 && day < 4)))
	{
		newYorkOffset += 1;
	}	

	document.getElementById('tmLondon').innerHTML = calcTime(londonOffset);
	document.getElementById('tmParis').innerHTML = calcTime(parisOffset);
	document.getElementById('tmNewYork').innerHTML = calcTime(newYorkOffset);
	document.getElementById('tmTokyo').innerHTML = calcTime('+9');

	window.setTimeout('populateTimes();', 500);
}

populateTimes();