
var timeDiv;

function dateToLongDate(dateObj){
	var Months = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];
	var Days = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']
	
	var ordinal = '';
	switch(dateObj.getDate()){
		case 1:
		case 21:
		case 31: {
			ordinal = 'st';
			break;
		}
		case 2:
		case 22:
		case 32: {
			ordinal = 'nd';
			break;
		}
		case 3:
		case 23: {
			ordinal = 'rd';
			break;
		}
		default: ordinal = 'th';
	}
	return Days[dateObj.getDay()] + ' ' + dateObj.getDate() + ordinal + ' ' +  Months[dateObj.getMonth()];
}

function dateToTime(dateObj){
	var hour = dateObj.getHours() + '';
	var minutes = dateObj.getMinutes() + '';
	if(hour.length == 1) hour = '0' + hour;
	if(minutes.length == 1) minutes = '0' + minutes;
	return hour + ':' + minutes;
}

var oldDate;

function clockUpdate(){
	var now = new Date();
	now.setTime(now.getTime()-LondonTimeSkew);
	
	if((!oldDate)||Math.floor((now.getTime() - oldDate.getTime())/60000)){
		//only draw if we really have to
		timeDiv.contents.nodeValue = dateToLongDate(now) + ', ' + dateToTime(now);
		oldDate = now;
	}
}

function clockInit(){
	timeDiv = $('londonTime');
	timeDiv.innerHTML = '';
	
	timeDiv.contents = document.createTextNode('');
	timeDiv.appendChild(timeDiv.contents);
	clockUpdate();
	setInterval(clockUpdate, 700);
	
	EventRemove(window, 'load', clockInit);
}

EventListen(window, 'load', clockInit);