function checkTimeZone(x){

	checkCountry = x;

	
	if (checkCountry == "Antigua"){
		zone = -4;
		dstFlag = 0;
	}
	else if (checkCountry == "Argentina"){
		zone = -3;
		dstFlag = 0;
	}
	else if (checkCountry == "Aruba"){
		zone = -4;
		dstFlag = 0;
	}
/*	else if (checkCountry == "ASEAN"){
		zone = 0;
		dstFlag = 0;
	} */
	else if (checkCountry == "Australia"){
		zone = 10;
		dstFlag = 4;
	}
	else if (checkCountry == "Austria"){
		zone = 1;
		dstFlag = 2;
	}
	else if (checkCountry == "Bahamas"){
		zone = -5;
		dstFlag = 1;
	}
	else if (checkCountry == "Bangladesh"){
		zone = 6;
		dstFlag = 0;
	}
	else if (checkCountry == "Barbados"){
		zone = -4;
		dstFlag = 0;
	}
	else if (checkCountry == "Belgium"){
		zone = 1;
		dstFlag = 2;
	}
	else if (checkCountry == "Bermuda"){
		zone = -4;
		dstFlag = 1;
	}
	else if (checkCountry == "Bolivia"){
		zone = -4;
		dstFlag = 0;
	}
	else if (checkCountry == "Brazil"){
		zone = -3;
		dstFlag = 5;
	}
	else if (checkCountry == "BurkinaFaso"){
		zone = 0;
		dstFlag = 0;
	}
	else if (checkCountry == "Canada"){
		zone = -5;
		dstFlag = 1;
	}
	else if (checkCountry == "Chile"){
		zone = -4;
		dstFlag = 9;
	}
	else if (checkCountry == "China"){
		zone = 8;
		dstFlag = 0;
	}
	else if (checkCountry == "Colombia"){
		zone = -5;
		dstFlag = 0;
	}
	else if (checkCountry == "CostaRica"){
		zone = -6;
		dstFlag = 0;
	}
	else if (checkCountry == "Croatia"){
		zone = 1;
		dstFlag = 2;
	}
	else if (checkCountry == "Curacao"){
		zone = -4;
		dstFlag = 0;
	}
	else if (checkCountry == "CzechRepublic"){
		zone = 1;
		dstFlag = 2;
	}
	else if (checkCountry == "Denmark"){
		zone = 1;
		dstFlag = 2;
	}
	else if (checkCountry == "Dominican"){
		zone = -4;
		dstFlag = 0;
	}
	else if (checkCountry == "Ecuador"){
		zone = -5;
		dstFlag = 0;
	}
	else if (checkCountry == "Elsalvador"){
		zone = -6;
		dstFlag = 0;
	}
	else if (checkCountry == "Estonia"){
		zone = 2;
		dstFlag = 2;
	}
/*	else if (checkCountry == "EU"){
		zone = 0;
		dstFlag = 0;
	} */
	else if (checkCountry == "Finland"){
		zone = 2;
		dstFlag = 2;
	}
	else if (checkCountry == "France"){
		zone = 1;
		dstFlag = 2;
	}
	else if (checkCountry == "Germany"){
		zone = 1;
		dstFlag = 2;
	}
	else if (checkCountry == "GrandCayman"){
		zone = -5;
		dstFlag = 0;
	}
	else if (checkCountry == "Greece"){
		zone = 2;
		dstFlag = 2;
	}
	else if (checkCountry == "Grenada"){
		zone = -4;
		dstFlag = 0;
	}
	else if (checkCountry == "Guam"){
		zone = 10;
		dstFlag = 0;
	}
	else if (checkCountry == "Guatemala"){
		zone = -6;
		dstFlag = 0;
	}
	else if (checkCountry == "Guyana"){
		zone = -4;
		dstFlag = 0;
	}
	else if (checkCountry == "Haiti"){
		zone = -5;
		dstFlag = 0;
	}
	else if (checkCountry == "Honduras"){
		zone = -6;
		dstFlag = 0;
	}
	else if (checkCountry == "HongKong"){
		zone = 8;
		dstFlag = 0;
	}
	else if (checkCountry == "Hungary"){
		zone = 1;
		dstFlag = 2;
	}
	else if (checkCountry == "Iceland"){
		zone = 0;
		dstFlag = 0;
	}
	else if (checkCountry == "India"){
		zone = 5.5;
		dstFlag = 0;
	}
	else if (checkCountry == "Indonesia"){
		zone = 7;
		dstFlag = 0;
	}
	else if (checkCountry == "Iran"){
		zone = 3.5;
		dstFlag = 0; //modify 06.03.30
 	}
	else if (checkCountry == "Ireland"){
		zone = 0;
		dstFlag = 2;
	}
	else if (checkCountry == "Israel"){
		zone = 2;
		dstFlag = 13;
	}
	else if (checkCountry == "Italy"){
		zone = 1;
		dstFlag = 2;
	}
	else if (checkCountry == "Jamaica"){
		zone = -5;
		dstFlag = 0;
	}
	else if (checkCountry == "Japan"){
		zone = 9;
		dstFlag = 0;
	}
	else if (checkCountry == "Korea"){
		zone = 9;
		dstFlag = 0;
	}
	else if (checkCountry == "Latvia"){
		zone = 2;
		dstFlag = 2;
	}
	else if (checkCountry == "Lithuania"){
		zone = 2;
		dstFlag = 2;
	}
	else if (checkCountry == "Malaysia"){
		zone = 8;
		dstFlag = 0;
	}
	else if (checkCountry == "Mauritius"){
		zone = 4;
		dstFlag = 0;
	}
	else if (checkCountry == "Mexico"){
		zone = -6;
		dstFlag = 1;
	}
	else if (checkCountry == "Morocco"){
		zone = 0;
		dstFlag = 0;
	}
	else if (checkCountry == "Nepal"){
		zone = 5.75;
		dstFlag = 0;
	}
	else if (checkCountry == "Netherlands"){
		zone = 1;
		dstFlag = 2;
	}
	else if (checkCountry == "NewZealand"){
		zone = 12;
		dstFlag = 8;
	}
	else if (checkCountry == "Nicaragua"){
		zone = -6;
		dstFlag = 0;
	}
	else if (checkCountry == "Nigeria"){
		zone = 1;
		dstFlag = 0;
	}
	else if (checkCountry == "Norway"){
		zone = 1;
		dstFlag = 2;
	}
	else if (checkCountry == "Pakistan"){
		zone = 5;
		dstFlag = 0;
	}
	else if (checkCountry == "Panama"){
		zone = 5;
		dstFlag = 0;
	}
	else if (checkCountry == "Paraguay"){
		zone = -4;
		dstFlag = 19;
	}
	else if (checkCountry == "Peru"){
		zone = -5;
		dstFlag = 0;
	}
	else if (checkCountry == "Philippines"){
		zone = 8;
		dstFlag = 0;
	}
	else if (checkCountry == "Poland"){
		zone = 1;
		dstFlag = 2;
	}
	else if (checkCountry == "Portugal"){
		zone = 0;
		dstFlag = 2;
	}
	else if (checkCountry == "PuertoRico"){
		zone = -4;
		dstFlag = 0;
	}
	else if (checkCountry == "Russia"){
		zone = 3;
		dstFlag = 2;
	}
	else if (checkCountry == "Saipan"){
		zone = 10;
		dstFlag = 0;
	}
	else if (checkCountry == "Singapore"){
		zone = 8;
		dstFlag = 0;
	}
	else if (checkCountry == "Slovakia"){
		zone = 1;
		dstFlag = 2;
	}
	else if (checkCountry == "SouthAfrica"){
		zone = 2;
		dstFlag = 0;
	}
	else if (checkCountry == "Spain"){
		zone = 1;
		dstFlag = 2;
	}
	else if (checkCountry == "SriLanka"){
		zone = 6;
		dstFlag = 0;
	}
	else if (checkCountry == "StKitts"){
		zone = -4;
		dstFlag = 0;
	}
	else if (checkCountry == "StLucia"){
		zone = -4;
		dstFlag = 0;
	}
	else if (checkCountry == "StMaarten"){
		zone = -4;
		dstFlag = 0;
	}
	else if (checkCountry == "Suriname"){
		zone = -3;
		dstFlag = 0;
	}
	else if (checkCountry == "Sweden"){
		zone = 1;
		dstFlag = 2;
	}
	else if (checkCountry == "Switzerland"){
		zone = 1;
		dstFlag = 2;
	}
	else if (checkCountry == "Syria"){
		zone = 2;
		dstFlag = 7;
	}
	else if (checkCountry == "Taiwan"){
		zone = 8;
		dstFlag = 0;
	}
	else if (checkCountry == "Thailand"){
		zone = 7;
		dstFlag = 0;
	}
	else if (checkCountry == "Trinidad"){
		zone = -4;
		dstFlag = 0;
	}
	else if (checkCountry == "Turkey"){
		zone = 2;
		dstFlag = 2;
	}
	else if (checkCountry == "UAE"){
		zone = 4;
		dstFlag = 0;
	}
	else if (checkCountry == "UK"){
		zone = 0;
		dstFlag = 2;
	}
	else if (checkCountry == "USA"){
		zone = -5;
		dstFlag = 1;
	}
	else if (checkCountry == "Ukraine"){
		zone = 2;
		dstFlag = 2;
	}
	else if (checkCountry == "Uruguay"){
		zone = -3;
		dstFlag = 27;
	}
	else if (checkCountry == "Venezuela"){
		zone = -4;
		dstFlag = 0;
	}
	else if (checkCountry == "Vietnam"){
		zone = 7;
		dstFlag = 0;
	}
	else if (checkCountry == "NY"){
		zone = -5;
		dstFlag = 1;
	}
	else if (checkCountry == "LA"){
		zone = -8;
		dstFlag = 1;
	}
	else if (checkCountry == "EDT"){
		zone = -5;
		dstFlag = 1;
	}
	else if (checkCountry == "PDT"){
		zone = -8;
		dstFlag = 1;
	}
	else if (checkCountry == "CDT"){
		zone = -6;
		dstFlag = 1;
	}
	else if (checkCountry == "EST"){
		zone = -5;
		dstFlag = 0;
	}
	else if (checkCountry == "Brazil2"){
		zone = -4;
		dstFlag = 0;
	}
	else if (checkCountry == "Seychelles"){
		zone = 4;
		dstFlag = 0;
	}
	else if (checkCountry == "Egypt"){
		zone = 2;
		dstFlag = 6;
	}
	else if (checkCountry == "Bahrain"){
		zone = 3;
		dstFlag = 0;
	}
	else if (checkCountry == "Qatar"){
		zone = 3;
		dstFlag = 0;
	}
	else if (checkCountry == "SanMarino"){
		zone = 1;
		dstFlag = 2;
	}
	else if (checkCountry == "Monaco"){
		zone = 1;
		dstFlag = 2;
	}
	else if (checkCountry == "Luxembourg"){
		zone = 1;
		dstFlag = 2;
	}
	else if (checkCountry == "Macedonia"){
		zone = 1;
		dstFlag = 2;
	}
	else if (checkCountry == "Bulgaria"){
		zone = 2;
		dstFlag = 2;
	}
	else if (checkCountry == "Romania"){
		zone = 2;
		dstFlag = 2;
	}
	else if (checkCountry == "Slovenia"){
		zone = 1;
		dstFlag = 2;
	}
	else if (checkCountry == "Cyprus"){
		zone = 2;
		dstFlag = 2;
	}
}

//--------------------------
// main
//--------------------------
nowyear = new Date();
year = nowyear.getYear(); if (year < 2000) { year += 1900; }
offset = nowyear.getTimezoneOffset() / 60; //GMTからの時差(単位:時)

sun4_1 = calcDst(year,4,1,0);   
sun3_e = calcDst(year,3,5,0);   
sun10_e= calcDst(year,10,5,0);  
sat3_e = calcDst(year,3,5,6);   
sat10_e= calcDst(year,10,5,6);  
sun10_3= calcDst(year,10,3,0);  
sun2_3 = calcDst(year,2,3,0);   
sun4_e = calcDst(year,4,5,0);   
fri9_e = calcDst(year,9,5,5);   
y_4_1  = calcDst(year,4,1,-1);  
y_10_1 = calcDst(year,10,1,-1); 
sun10_1= calcDst(year,10,1,0);  
sun3_3 = calcDst(year,3,3,0);   
sun10_2= calcDst(year,10,2,0);  
sun3_2 = calcDst(year,3,2,0);   
y_3_25 = calcDst(year,3,25,-1); 
y_9_30= calcDst(year,9,30,-1);  
y_4_21 = calcDst(year,4,21,-1); 
y_10_4= calcDst(year,10,4,-1); 
//y_3_20 = calcDst(year,3,20,-1); 
//y_9_20 = calcDst(year,9,20,-1); 
y_3_31  = calcDst(year,3,31,-1);  
y_10_1 = calcDst(year,10,1,-1); 
y_3_30 = calcDst(year,3,30,-1); 
y_9_29= calcDst(year,9,29,-1); 
y_4_1 = calcDst(year,4,1,-1); 
y_10_1 = calcDst(year,10,1,-1); 
sun9_1 = calcDst(year,9,1,0);   
sun9_3 = calcDst(year,9,3,0);   
sun4_3 = calcDst(year,4,3,0);   
y_3_24= calcDst(year,3,24,-1); 
y_4_21= calcDst(year,4,21,-1); 
y_10_4= calcDst(year,10,4,-1); 

function calcTime(a_pctime,b_zone,c_dstFlag,txtType) {

  twntime = a_pctime + (b_zone + offset) * 3600000; 
   mark = ""; 
  if (c_dstFlag == 1) { 
    if ((sun4_1<=twntime) && (sun10_e>twntime)) { twntime+= 3600000; mark="*";}
  } else if (c_dstFlag == 2) { 
    if ((sun3_e<=twntime) && (sun10_e>twntime)) { twntime+= 3600000; mark="*";}
  } else if (c_dstFlag == 3) { 
    if ((sat3_e<=twntime) && (sat10_e>twntime)) { twntime+= 3600000; mark="*";}
  } else if (c_dstFlag == 4) { 
    if ((sun10_e<=twntime) || (sun4_1>twntime)) { twntime+= 3600000; mark="*";}
  } else if (c_dstFlag == 5) { 
    if ((sun10_3<=twntime) || (sun2_3>twntime)) { twntime+= 3600000; mark="*";}
  } else if (c_dstFlag == 6) { 
    if ((sun4_e<=twntime) && (fri9_e>twntime))  { twntime+= 3600000; mark="*";}
  } else if (c_dstFlag == 7) { 
    if ((y_4_1<=twntime) && (y_10_1>twntime))   { twntime+= 3600000; mark="*";}
  } else if (c_dstFlag == 8) { 
    if ((sun10_1<=twntime) || (sun3_3>twntime)) { twntime+= 3600000; mark="*";}
  } else if (c_dstFlag == 9) { 
    if ((sun10_3<=twntime) || (sun3_2>twntime)) { twntime+= 3600000; mark="*";}
  } else if (c_dstFlag == 10) {
    if ((y_3_25<=twntime) && (y_9_30>twntime)) { twntime+= 3600000; mark="*";}
  } else if (c_dstFlag == 11) {
    if ((y_4_21<=twntime) && (y_10_4>twntime)) { twntime+= 3600000; mark="*";}
  } else if (c_dstFlag == 12) {
    if ((y_3_20<=twntime) && (y_9_20>twntime))  { twntime+= 3600000; mark="*";}
  } else if (c_dstFlag == 13) {
    if ((y_3_31<=twntime) && (y_10_1>twntime)) { twntime+= 3600000; mark="*";}
  } else if (c_dstFlag == 14) {
    if ((y_3_30<=twntime) && (y_9_29>twntime)) { twntime+= 3600000; mark="*";}
  } else if (c_dstFlag == 15) {
    if ((y_4_1<=twntime) && (y_10_1>twntime))  { twntime+= 3600000; mark="*";}
  } else if (c_dstFlag == 16) {
    if ((sun9_1<=twntime) || (sun4_1>twntime))  { twntime+= 3600000; mark="*";}
  } else if (c_dstFlag == 17) {
    if ((sun9_1<=twntime) || (sun4_3>twntime))  { twntime+= 3600000; mark="*";}
  } else if (c_dstFlag == 18) {
    if ((sun10_1<=twntime) || (sun4_1>twntime)) { twntime+= 3600000; mark="*";}
  } else if (c_dstFlag == 19) {
    if ((sun10_3<=twntime) || (sun3_2>twntime)) { twntime+= 3600000; mark="*";}
  } else if (c_dstFlag == 27) {
    if ((sun10_2<=twntime) || (sun3_2>twntime))  { twntime+= 3600000; mark="*";}
  }
  calcnow = new Date();
  calcnow.setTime(twntime);
  nowmonth = calcnow.getMonth();
    if(nowmonth == 0){ nowmonth = "Jan";}	
    else if(nowmonth == 1){ nowmonth = "Feb";}
    else if(nowmonth == 2){ nowmonth = "Mar";}
    else if(nowmonth == 3){ nowmonth = "Apr";}
	else if(nowmonth == 4){ nowmonth = "May";}
	else if(nowmonth == 5){ nowmonth = "Jun";}
	else if(nowmonth == 6){ nowmonth = "Jul";}
    else if(nowmonth == 7){ nowmonth = "Aug";}
    else if(nowmonth == 8){ nowmonth = "Sep";}
    else if(nowmonth == 9){ nowmonth = "Oct";}
	else if(nowmonth == 10){ nowmonth = "Nov";}
	else if(nowmonth == 11){ nowmonth = "Dec";}
	
  nowdate = calcnow.getDate();
  nowday = calcnow.getDay();
  	if(nowday == 0){ nowday = "Sunday";}	
    else if(nowday == 1){ nowday = "Monday";}
    else if(nowday == 2){ nowday = "Tuesday";}
    else if(nowday == 3){ nowday = "Wednesday";}
	else if(nowday == 4){ nowday = "Thursday";}
	else if(nowday == 5){ nowday = "Friday";}
	else if(nowday == 6){ nowday = "Saturday";}

  nowhour = calcnow.getHours();   if (nowhour < 10) { nowhour = "0" + nowhour; }
  nowmin  = calcnow.getMinutes(); if (nowmin  < 10) { nowmin = "0" + nowmin; }
  nowsec  = calcnow.getSeconds(); if (nowsec  < 10) { nowsec = "0" + nowsec; }
  
	if(b_zone >= 0){
		plusminus = "+";
	}
	else{
		plusminus = "";
	}
	
	nowoffset = b_zone;
	if(mark == "*"){
		nowoffset += 1;
	}
	
  Utcnow = new Date();
  Utcyear = Utcnow.getUTCFullYear();
  Utcmonth = Utcnow.getUTCMonth();
    if(Utcmonth == 0){ Utcmonth = "Jan";}	
    else if(Utcmonth == 1){ Utcmonth = "Feb";}
    else if(Utcmonth == 2){ Utcmonth = "Mar";}
    else if(Utcmonth == 3){ Utcmonth = "Apr";}
	else if(Utcmonth == 4){ Utcmonth = "May";}
	else if(Utcmonth == 5){ Utcmonth = "Jun";}
	else if(Utcmonth == 6){ Utcmonth = "Jul";}
    else if(Utcmonth == 7){ Utcmonth = "Aug";}
    else if(Utcmonth == 8){ Utcmonth = "Sep";}
    else if(Utcmonth == 9){ Utcmonth = "Oct";}
	else if(Utcmonth == 10){ Utcmonth = "Nov";}
	else if(Utcmonth == 11){ Utcmonth = "Dec";}

  Utcdate = Utcnow.getUTCDate();
  Utcday = Utcnow.getDay();
  	if(Utcday == 0){ Utcday = "Sunday";}	
    else if(Utcday == 1){ Utcday = "Monday";}
    else if(Utcday == 2){ Utcday = "Tuesday";}
    else if(Utcday == 3){ Utcday = "Wednesday";}
	else if(Utcday == 4){ Utcday = "Tursday";}
	else if(Utcday == 5){ Utcday = "Friday";}
	else if(Utcday == 6){ Utcday = "Saturday";}

  Utchour = Utcnow.getUTCHours();   if (Utchour < 10) { Utchour = "0" + Utchour; }
  Utcmin  = Utcnow.getUTCMinutes(); if (Utcmin  < 10) { Utcmin = "0" + Utcmin; }
  Utcsec  = Utcnow.getUTCSeconds(); if (Utcsec  < 10) { Utcsec = "0" + Utcsec; }

  if(txtType == "separate"){
	  return "<font style='font-size:24px;font-family: Verdana;'>" + nowhour + ":" + nowmin + ":" + nowsec + "</font>" + "<font class='m'>" +  mark + "</font><br>" + "<font class='m'>" + nowday + ", "  + nowmonth + " " + nowdate + ", "  + year + "</font><br>";
  }
  else if(txtType == "top"){
	  return "<font style='font-size:9px;font-family: Verdana;color:#FFFFFF;font-weight: bold;'>" + nowhour + ":" + nowmin + ":" + nowsec + "</font>" + "<font color='#FFFFFF' class='s'>" +  mark + "</font><br>" + "<font color='#BBBBBB' class='ss'>" + nowday + ", "  + nowmonth + " " + nowdate + ", "  + year + "</font><br>";
  }
}

function writeDate(){
  document.write("<br>");
  document.write("<font class='s'>" + "UTC/GMT Offset " + "(" + plusminus + nowoffset + mark + ")"  + "</font>");

	if(mark == "*"){
		document.write("<br>");
  		document.write("<font class='ss' color='#999999'>" + "'*' means the place is observing DST" + "</font>");
	}
  document.write("<br>");
  document.write("<font class='ss' color='#999999'>[ <a href='/worldclock/'>About Honda World Clock</a> ]</font>");
}


function updateClock(i) {
  localCountry = i;
  now = new Date();
  pctime = now.getTime(); 
  checkTimeZone(localCountry);
  zone1 = zone;
  dstFlag1 = dstFlag;
  timetext1 = calcTime(pctime,zone1,dstFlag1,"separate");
  
  clockPoint = document.getElementById("clock");
  clockPoint.innerHTML = timetext1;

  setTimeout("updateClock(localCountry)", 999);
}

localCountryArray = new Array();
zoneArray = new Array();
dstFlagArray = new Array();
timetextArray = new Array();
clockPointArray = new Array();
clockCount = 0;


function setClockMulti(i,j) {
  localCountryArray[j] = i;
  checkTimeZone(localCountryArray[j]);
  zoneArray[j] = zone;
  dstFlagArray[j] = dstFlag;
 
  now = new Date();
  pctime = now.getTime();

  timetextArray[j] = calcTime(pctime,zoneArray[j],dstFlagArray[j],"top");

  clockCount += 1;
  
}

function updateClockMulti() {
  now = new Date();
  pctime = now.getTime();

  for(x=1; x<=clockCount;x++){
	timetextArray[x] = calcTime(pctime,zoneArray[x],dstFlagArray[x],"top");
  
	clockPointArray[x] = document.getElementById("clock" + x);
	clockPointArray[x].innerHTML = timetextArray[x];

  }
  setTimeout("updateClockMulti()", 999);
}


function calcDst(year,month,num,wno) {
 if (wno < 0) {
  dstime = new Date(year,month-1,num,2,0,0);
  return dstime.getTime();
 } else { 
  if (month <= 2) { zyear = year - 1; zmonth = month + 12; }
  else { zyear = year; zmonth = month; }  
  wday = (zyear + Math.floor(zyear/4) - Math.floor(zyear/100)
       + Math.floor(zyear/400) + Math.floor((13*zmonth + 8)/5) + 1) % 7;


  if (num == 5) {
    if (month == 2) {
      if (((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0))
                    { leap = 1; } else { leap = 0; } 
      if (leap == 0 || wno != wday) { num -= 1; } 
    } else if (month== 4 || month== 6 || month== 9 || month== 11) { 
      if (wno <= 1) { if( (wno+1) <= wday && wday < (wno+6) ) { num -= 1; } }
               else { if( (wno+1) <= wday || wday < (wno-1) ) { num -= 1; } }
    } else { 
      if (wno <= 2) { if( (wno+1) <= wday && wday < (wno+5) ) { num -= 1; } }
               else { if( (wno+1) <= wday || wday < (wno-2) ) { num -= 1; } }
    }
  }

  if (wday <= wno) { dstime = (num-1) * 7 + ((wno+1) - wday); }
              else { dstime = num * 7 - (wday - (wno+1)); }
  dstime = new Date(year,month-1,dstime,2,0,0);
  return dstime.getTime();
 }
}