function worldClock(zone, region){
var dst = 0
var time = new Date()
var gmtMS = time.getTime() + (time.getTimezoneOffset() * 60000)
var gmtTime = new Date(gmtMS)
var month = gmtTime.getMonth()
var year = gmtTime.getYear()
var day=gmtTime.getDate()
if(year < 1000){
year += 1900
}

//get day of the month

if (region == "Texas"){
var DZ = time.getDay()
}

if (region == "England"){
var DZ = gmtTime.getDay()
}


if (region == "Nigeria"){
var DZ = gmtTime.getDay()
}


if (region == "Japan"){
var DZ = gmtTime.getDay() + 1
}

var dayArray=new Array("Sun","Mon","Tue","Wed","Thu","Fri","Sat")

var monthArray = new Array("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", 
				"Sep", "Oct", "Nov", "Dec")
var monthDays = new Array("31", "28", "31", "30", "31", "30", "31", "31", "30", "31", "30", "31")
if (year%4 == 0){
monthDays = new Array("31", "29", "31", "30", "31", "30", "31", "31", "30", "31", "30", "31")
}
if(year%100 == 0 && year%400 != 0){
monthDays = new Array("31", "28", "31", "30", "31", "30", "31", "31", "30", "31", "30", "31")
}

var hr = gmtTime.getHours() + zone
var min = gmtTime.getMinutes()
var sec = gmtTime.getSeconds()

if (hr >= 24){
hr = hr-24
day -= -1
}
if (hr < 0){
hr -= -24
day -= 1
}
if (hr < 10){
hr = " " + hr
}
if (min < 10){
min = "0" + min
}
if (sec < 10){
sec = "0" + sec
}

ampm = (hr > 11)?"PM":"AM";
statusampm = ampm;


hr2 = hr;
if (hr2 == 0) hr2=12;
(hr2 < 13)?hr2:hr2 %= 12;
if (hr2<10) hr2=hr2

//if (hr2<10) hr2="0"+hr2

if (day <= 0){
if (month == 0){
	month = 11
	year -= 1
	}
	else{
	month = month -1
	}
day = monthDays[month]
}
if(day > monthDays[month]){
	day = 1
	if(month == 11){
	month = 0
	year -= -1
	}
	else{
	month -= -1
	}
}
if (region == "Texas"){
	var startDST = new Date()
	var endDST = new Date()
	startDST.setMonth(3)
	startDST.setHours(2)
	startDST.setDate(1)
	var dayDST = startDST.getDay()
	if (dayDST != 0){
		startDST.setDate(8-dayDST)
		}
		else{
		startDST.setDate(1)
		}
	endDST.setMonth(9)
	endDST.setHours(1)
	endDST.setDate(31)
	dayDST = endDST.getDay()
	endDST.setDate(31-dayDST)
	var currentTime = new Date()
	currentTime.setMonth(month)
	currentTime.setYear(year)
	currentTime.setDate(day)
	currentTime.setHours(hr)
	if(currentTime >= startDST && currentTime < endDST){
		dst = 1
		}
}
if (region == "England"){
	var startDST = new Date()
	var endDST = new Date()
	startDST.setMonth(2)
	startDST.setHours(1)
	startDST.setDate(31)
	var dayDST = startDST.getDay()
	startDST.setDate(31-dayDST)
	endDST.setMonth(9)
	endDST.setHours(0)
	endDST.setDate(31)
	dayDST = endDST.getDay()
	endDST.setDate(31-dayDST)
	var currentTime = new Date()
	currentTime.setMonth(month)
	currentTime.setYear(year)
	currentTime.setDate(day)
	currentTime.setHours(hr)
	if(currentTime >= startDST && currentTime < endDST){
		dst = 1
		}
}


	
if (dst == 1){
	hr -= -1
	if (hr >= 24){
	hr = hr-24
	day -= -1
	}
	if (hr < 10){
	hr = " " + hr
	}
	if(day > monthDays[month]){
	day = 1
	if(month == 11){
	month = 0
	year -= -1
	}
	else{
	month -= -1
	}

ampm = (hr > 11)?"PM":"AM";
statusampm = ampm;

hr2 = hr;
if (hr2 == 0) hr2=12;
(hr2 < 13)?hr2:hr2 %= 12;
if (hr2<10) hr2=hr2

//if (hr2<10) hr2="0"+hr2

	}
return dayArray[DZ] + " " + hr2 + ":" + min + ":" + sec + statusampm + " DST"
//return monthArray[month] + " " + day + ", " + year + "<br>" + hr2 + ":" + min + ":" + sec + " DST"
}
else{
// return monthArray[month] + " " + day + ", " + year + "<br>" + hr2 + ":" + min + ":" + sec + statusampm

return dayArray[DZ] + " " + hr2 + ":" + min + ":" + sec + statusampm
}
}


function worldClockZone(){
document.getElementById("Dallas").innerHTML = worldClock(-5, "Texas")
document.getElementById("London").innerHTML = worldClock(1, "England")
document.getElementById("Lagos").innerHTML = worldClock(1, "Nigeria")
document.getElementById("Tokyo").innerHTML = worldClock(9, "Japan")

setTimeout("worldClockZone()", 1000)
}
window.onload=worldClockZone;