function checkOpen(timen, region){
	
	if((timen.getDay() == 0) ||  (timen.getDay() == 6))
	{
		return 0;
	}
		

if(region == "Australia")
{
	if((timen.getHours() >= 10) && (timen.getHours() < 16))
	{
		return 1
	}
}

if(region == "Tokyo")
{
	
        if((timen.getHours() >= 9) && (timen.getHours() < 11))
        {
                return 1 // open
        }
        if((timen.getHours() >= 11) && (timen.getHours() < 13))
        {
             if(timen.getHours() == 11)
             {
                 return 3
             }
             if((timen.getHours() == 12) && (timen.getMinutes() < 30))
             {
                 return 3
             }
             else
             {
                 return 1
             }
        }
        if((timen.getHours() >= 13) && (timen.getHours() < 15))
        {
                 return 1
        }
        return 0      
}
if(region == "Europe")
{
        if((timen.getHours() >= 8) && (timen.getHours() < 16))
        {
                 return 1
        }
		
        if(timen.getHours() == 16)
        {
             if(timen.getMinutes() < 20)
             {
                 return 1
             }
             else
             {
                 return 0
             }
        }
        return 0      


}
if(region == "NAmerica")
{
	 if(timen.getHours() == 9)
        {
             if(timen.getMinutes() < 30)
             {
                 return 0
             }
             else
             {
                 return 1
             }
        }
        if((timen.getHours() >= 10) && (timen.getHours() < 16))
        {
                 return 1
        }
        return 0      

}
return 0
}

function worldClock(zone, region, mycity){
var dst = 0
var time = new Date()
var gmtMS = time.getTime() + (time.getTimezoneOffset() * 60000)
var gmtTime = new Date(gmtMS)
var day = gmtTime.getDate()
var month = gmtTime.getMonth()
var year = gmtTime.getYear()
if(year < 1000){
year += 1900
}
var monthArray = new Array("January", "February", "March", "April", "May", "June", "July", "August", 
				"September", "October", "November", "December")
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()
var exchange = ''



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
}
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 == "NAmerica"){
	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 == "Europe"){
	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 (region == "SAmerica"){
	var startDST = new Date()
	var endDST = new Date()
	startDST.setMonth(9)
	startDST.setHours(0)
	startDST.setDate(1)
	var dayDST = startDST.getDay()
	if (dayDST != 0){
		startDST.setDate(22-dayDST)
		}
		else{
		startDST.setDate(15)
		}
	endDST.setMonth(1)
	endDST.setHours(11)
	endDST.setDate(1)
	dayDST = endDST.getDay()
	if (dayDST != 0){
		endDST.setDate(21-dayDST)
		}
		else{
		endDST.setDate(14)
		}
	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 == "Cairo"){
	var startDST = new Date()
	var endDST = new Date()
	startDST.setMonth(3)
	startDST.setHours(0)
	startDST.setDate(30)
	var dayDST = startDST.getDay()
	if (dayDST < 5){
		startDST.setDate(28-dayDST)
		}
		else {
		startDST.setDate(35-dayDST)
		}
	endDST.setMonth(8)
	endDST.setHours(11)
	endDST.setDate(30)
	dayDST = endDST.getDay()
	if (dayDST < 4){
		endDST.setDate(27-dayDST)
		}
		else{
		endDST.setDate(34-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 == "Israel"){
	var startDST = new Date()
	var endDST = new Date()
	startDST.setMonth(3)
	startDST.setHours(2)
	startDST.setDate(1)
	endDST.setMonth(8)
	endDST.setHours(2)
	endDST.setDate(25)
	dayDST = endDST.getDay()
	if (dayDST != 0){
	endDST.setDate(32-dayDST)
	}
	else{
	endDST.setDate(1)
	endDST.setMonth(9)
	}
	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 == "Beirut"){
	var startDST = new Date()
	var endDST = new Date()
	startDST.setMonth(2)
	startDST.setHours(0)
	startDST.setDate(31)
	var dayDST = startDST.getDay()
	startDST.setDate(31-dayDST)
	endDST.setMonth(9)
	endDST.setHours(11)
	endDST.setDate(31)
	dayDST = endDST.getDay()
	endDST.setDate(30-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 == "Baghdad"){
	var startDST = new Date()
	var endDST = new Date()
	startDST.setMonth(3)
	startDST.setHours(3)
	startDST.setDate(1)
	endDST.setMonth(9)
	endDST.setHours(3)
	endDST.setDate(1)
	dayDST = endDST.getDay()
		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 == "Australia"){
	var startDST = new Date()
	var endDST = new Date()
	startDST.setMonth(9)
	startDST.setHours(2)
	startDST.setDate(31)
	var dayDST = startDST.getDay()
	startDST.setDate(31-dayDST)
	endDST.setMonth(2)
	endDST.setHours(2)
	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
	}
	}
	var dayofweek = new Date()
	dayofweek.setMonth(month)
	dayofweek.setYear(year)
	dayofweek.setDate(day)
	dayofweek.setHours(hr)
	dayofweek.setMinutes(min)
	if(checkOpen(dayofweek, region) == 1)
	{
		exchange = "OPEN"
	}
	else if(checkOpen(dayofweek, region) == 3)
	{	
		exchange = "<span class='cgreen'>OPEN</span>"
	}
        else
        {	
		exchange = "<span class='cred'>CLOSED</span>"
	}
		
	
return hr + ":" + min + ":" + sec + " DST <div><h3>" + mycity + "</h3></div>"
//return hr + ":" + min + ":" + sec ;
}
else{
	var dayofweek = new Date()
	dayofweek.setMonth(month)
	dayofweek.setYear(year)
	dayofweek.setDate(day)
	dayofweek.setHours(hr)
	
	dayofweek.setMinutes(min)
	if(checkOpen(dayofweek, region) == 1)
	{
		exchange = "<span class='cgreen'>OPEN</span>"
	}
	else if(checkOpen(dayofweek, region) == 3)
	{	
		exchange = "<span class='cgreen'>OPEN</span>"
	}
        else
        {	
		exchange = "<span class='cred'>CLOSED</span>"
	}
return hr + ":" + min + ":" + sec +"<div><h3>" + mycity + "</h3></div>"

}
}

function worldClockZone(){
document.getElementById("Sydney").innerHTML = worldClock(10, "Australia","Sydney")
document.getElementById("Tokyo").innerHTML = worldClock(9, "Tokyo","Tokyo")
document.getElementById("London").innerHTML = worldClock(0, "Europe","London")
document.getElementById("NewYork").innerHTML = worldClock(-5, "NAmerica","New York")
setTimeout("worldClockZone()", 1000)
}
worldClockZone();

