/*
	Clocks.js - shows the 3 clocks for different timezones

	set city1, city2, city3, refreshTime as globals
	cityN should match zoneNames in getZone()
	refreshTime is # of ms to wait before updating clock. Should be at least 60000.

	also do a 'window.onload=showClocks;' somewhere
*/


	//returns the zone
	function getZone(zoneName) {

		zone = 0;

		now = new Date();
		dsStart = new Date();
		dsEnd = new Date();

		offset = now.getTimezoneOffset() / 60;

		//see http://javascript.about.com/library/bltime4.htm for how to work out the date of the last sunday of a given month
		//for simplicity, all clocks update dst at 2am

		if( zoneName == 'Adelaide' ) {
			zone = 9.5;
			//Start: Last Sunday in March
			//End: Last Sunday in October

			dsStart.setMonth(2); //march
			dsStart.setDate(31); //last day in march
			dsStart.setDate(31-dsStart.getDay()); //last sunday in march
			dsStart.setHours(2-offset, 0, 0, 0); //2am

			dsEnd.setMonth(9); //oct
			dsEnd.setDate(31); 
			dsEnd.setDate(31-dsEnd.getDay());
			dsEnd.setHours(2-offset, 0, 0, 0); //2am

			//if daylight saving ends before it starts, set it to next year
			if( dsEnd < dsStart )
				dsEnd.setYear( dsEnd.getFullYear() + 1 );

			//alert( zoneName + "\nDS Start: " + dsStart.toString() + "\n" + 'DS End: ' + dsEnd.toString());

			if( now > dsStart && now < dsEnd ) { 
				//alert("Daylight saving in "+zoneName+" is currently in effect.");
				zone++;
			}

		}
		else if( zoneName == 'Amsterdam' ) {
			zone = 1;
			//Start: Last Sunday in March
			//End: Last Sunday in October

			dsStart.setMonth(2); //march
			dsStart.setDate(31); //last day in march
			dsStart.setDate(31-dsStart.getDay()); //last sunday in march
			dsStart.setHours(2-offset, 0, 0, 0); //2am

			dsEnd.setMonth(9); //oct
			dsEnd.setDate(31); 
			dsEnd.setDate(31-dsEnd.getDay());
			dsEnd.setHours(2-offset, 0, 0, 0); //2am

			//if daylight saving ends before it starts, set it to next year
			if( dsEnd < dsStart )
				dsEnd.setYear( dsEnd.getFullYear() + 1 );

			//alert( zoneName + "\nDS Start: " + dsStart.toString() + "\n" + 'DS End: ' + dsEnd.toString());

			if( now > dsStart && now < dsEnd ) { 
				//alert("Daylight saving in "+zoneName+" is currently in effect.");
				zone++;
			}

				
		}
		else if( zoneName == 'Atlanta' ) {
			zone = -5;
			//Start: Second Sunday in March 2am local
			//End: First Sunday in November 2am local

			dsStart.setMonth(2); //march
			dsStart.setDate(1); //first day in march
			dsStart.setDate( ( 7 - dsStart.getDay() ) % 7 + 8 ); //second sunday
			dsStart.setHours(2-offset, 0, 0, 0); //2am 
			dsEnd.setHours(2-offset, 0, 0, 0); //2am 
		
			dsEnd.setMonth(10); //nov
			dsEnd.setDate(1); //first day in nov
			dsEnd.setDate( ( 7 - dsEnd.getDay() ) % 7 + 1 ); //first sunday

			//if daylight saving ends before it starts, set it to next year
			if( dsEnd < dsStart )
				dsEnd.setYear( dsEnd.getFullYear() + 1 );


			//alert("Atlanta\nDS Start: " + dsStart.toString() + "\n" + 'DS End: ' + dsEnd.toString());
			
			if( now > dsStart && now < dsEnd ) {
				//alert("Daylight saving in "+zoneName+" in full effect, yo."); 
				zone++;
			}

		}
		else if( zoneName == 'Auckland' ) {
			zone = 12;
			//Start: last Sunday in september
			//End: Third Sunday in March

			dsStart.setMonth(8); //sept
			dsStart.setDate(30); //last day in sept
			dsStart.setDate(30-dsStart.getDay()); //last sunday in sept
			dsStart.setHours(zone - offset+2, 0, 0, 0); //2am

			dsEnd.setMonth(2); //mar
			dsEnd.setDate(1); //first day
			dsEnd.setDate( (7-dsEnd.getDay()) % 7 + 15 ); //third sunday
			dsEnd.setHours(zone - offset + 2, 0, 0, 0); //2am

			//if daylight saving ends before it starts, set it to next year
			if( dsEnd < dsStart )
				dsEnd.setYear( dsEnd.getFullYear() + 1 );

			//alert(zoneName + "\n" + 'DS Start: ' + dsStart.toString() + "\n" + 'DS End: ' + dsEnd.toString() );
			
			if( now > dsStart && now < dsEnd ) {
				//alert("Daylight saving in "+zoneName+" in current in effect."); 
				zone++;
			}

		}
		else if( zoneName == 'Brisbane' ) {
			zone = 10;

		}
		else if( zoneName == 'Chicago' ) {
			zone = -6;
			//Start: Second Sunday in March
			//End: First Sunday in November

			dsStart.setMonth(2); //march
			dsStart.setDate(1); //first day in march
			dsStart.setDate( ( 7 - dsStart.getDay() ) % 7 + 8 ); //second sunday
			dsStart.setHours(2-offset, 0, 0, 0); //2am 
			dsEnd.setHours(2-offset, 0, 0, 0); //2am 
		
			dsEnd.setMonth(10); //nov
			dsEnd.setDate(1); //first day in nov
			dsEnd.setDate( ( 7 - dsEnd.getDay() ) % 7 + 1 ); //first sunday

			//if daylight saving ends before it starts, set it to next year
			if( dsEnd < dsStart )
				dsEnd.setYear( dsEnd.getFullYear() + 1 );

			//alert( zoneName + "\nDS Start: " + dsStart.toString() + "\n" + 'DS End: ' + dsEnd.toString());
			
			if( now > dsStart && now < dsEnd ) {
				//alert("Daylight saving in "+zoneName+" is currently in effect."); 
				zone++;
			}

		}
		else if( zoneName == 'Christchurch' ) {
	
			zone = 12;
			//Start: last Sunday in september
			//End: Third Sunday in March

			dsStart.setMonth(8); //sept
			dsStart.setDate(30); //last day in sept
			dsStart.setDate(30-dsStart.getDay()); //last sunday in sept
			dsStart.setHours(zone - offset+2, 0, 0, 0); //2am

			dsEnd.setMonth(2); //mar
			dsEnd.setDate(1); //first day
			dsEnd.setDate( (7-dsEnd.getDay()) % 7 + 15 ); //third sunday
			dsEnd.setHours(zone - offset + 2, 0, 0, 0); //2am

			//if daylight saving ends before it starts, set it to next year
			if( dsEnd < dsStart )
				dsEnd.setYear( dsEnd.getFullYear() + 1 );

			//alert(zoneName + "\n" + 'DS Start: ' + dsStart.toString() + "\n" + 'DS End: ' + dsEnd.toString() );
			
			if( now > dsStart && now < dsEnd ) {
				//alert("Daylight saving in "+zoneName+" in current in effect."); 
				zone++;
			}

	
		}
		else if( zoneName == 'Darwin' ) {
			zone = 9.5;
		}
		else if( zoneName == 'Dunedin' ) {
			zone = 12;
			//Start: First Sunday in October
			//End: Third Sunday in March

			dsStart.setMonth(9); //oct
			dsStart.setDate(1); //first day in oct
			dsStart.setDate( (7-dsStart.getDate()) % 7 + 1 ); //first sunday
			dsStart.setHours(zone - offset+2, 0, 0, 0); //2am

			dsEnd.setMonth(2); //mar
			dsEnd.setDate(1); //first day
			dsEnd.setDate( (7-dsEnd.getDay()) % 7 + 15 ); //third sunday
			dsEnd.setHours(zone - offset + 2, 0, 0, 0); //2am

			//if daylight saving ends before it starts, set it to next year
			if( dsEnd < dsStart )
				dsEnd.setYear( dsEnd.getFullYear() + 1 );

			//alert(zoneName + "\n" + 'DS Start: ' + dsStart.toString() + "\n" + 'DS End: ' + dsEnd.toString() );
			
			if( now > dsStart && now < dsEnd ) {
				//alert("Daylight saving in "+zoneName+" in current in effect."); 
				zone++;
			}


		}
		else if( zoneName == 'Frankfurt' ) {
			zone = 1;
			//Start: Last Sunday in March
			//End: Last Sunday in October

			dsStart.setMonth(2); //march
			dsStart.setDate(31); //last day in march
			dsStart.setDate(31-dsStart.getDay()); //last sunday in march
			dsStart.setHours(2-offset, 0, 0, 0); //2am

			dsEnd.setMonth(9); //oct
			dsEnd.setDate(31); 
			dsEnd.setDate(31-dsEnd.getDay());
			dsEnd.setHours(2-offset, 0, 0, 0); //2am

			//if daylight saving ends before it starts, set it to next year
			if( dsEnd < dsStart )
				dsEnd.setYear( dsEnd.getFullYear() + 1 );

			//alert( zoneName + "\nDS Start: " + dsStart.toString() + "\n" + 'DS End: ' + dsEnd.toString());

			if( now > dsStart && now < dsEnd ) { 
				//alert("Daylight saving in "+zoneName+" is currently in effect.");
				zone++;
			}

		}
		else if( zoneName == 'Hong Kong' ) {
			zone = 8;

			//No DST in China
			//alert( zoneName + " does not use daylight saving time." );

		}
		else if( zoneName == 'Istanbul' ) {
			zone = 2;
			//Start: Last Sunday in March
			//End: Last Sunday in October

			dsStart.setMonth(2); //march
			dsStart.setDate(31); //last day in march
			dsStart.setDate(31-dsStart.getDay()); //last sunday in march
			dsStart.setHours(2-offset, 0, 0, 0); //2am

			dsEnd.setMonth(9); //oct
			dsEnd.setDate(31); 
			dsEnd.setDate(31-dsEnd.getDay());
			dsEnd.setHours(2-offset, 0, 0, 0); //2am

			//if daylight saving ends before it starts, set it to next year
			if( dsEnd < dsStart )
				dsEnd.setYear( dsEnd.getFullYear() + 1 );

			//alert( zoneName + "\nDS Start: " + dsStart.toString() + "\n" + 'DS End: ' + dsEnd.toString());

			if( now > dsStart && now < dsEnd ) { 
				//alert("Daylight saving in "+zoneName+" is currently in effect.");
				zone++;
			}

		}
		else if( zoneName == 'Jakarta' ) {
			zone = 7;
			dsMsg = ' (' + zoneName +' does not use daylight saving time)';
			//alert( zoneName + " does not use daylight saving time." );

		}
		else if( zoneName == 'Kuwait' ) {
			zone = 3;
			//alert( zoneName + " does not use daylight saving time." );

		}
		else if( zoneName == 'Lae' ) {
			zone = 10;

		}
		else if( zoneName == 'London' ) {
			zone = 0;
			//Start: Last Sunday in March
			//End: Last Sunday in October

			dsStart.setMonth(2); //march
			dsStart.setDate(31); //last day in march
			dsStart.setDate(31-dsStart.getDay()); //last sunday in march
			dsStart.setHours(2-offset, 0, 0, 0); //2am

			dsEnd.setMonth(9); //oct
			dsEnd.setDate(31); 
			dsEnd.setDate(31-dsEnd.getDay());
			dsEnd.setHours(2-offset, 0, 0, 0); //2am

			//if daylight saving ends before it starts, set it to next year
			if( dsEnd < dsStart )
				dsEnd.setYear( dsEnd.getFullYear() + 1 );

			//alert( zoneName + "\nDS Start: " + dsStart.toString() + "\n" + 'DS End: ' + dsEnd.toString());

			if( now > dsStart && now < dsEnd ) { 
				//alert("Daylight saving in "+zoneName+" is currently in effect.");
				zone++;
			}

		}
		else if( zoneName == 'Los Angeles' ) {
			zone = -8;
			//Start: Second Sunday in March
			//End: First Sunday in November

			dsStart.setMonth(2); //march
			dsStart.setDate(1); //first day in march
			dsStart.setDate( ( 7 - dsStart.getDay() ) % 7 + 8 ); //second sunday
			dsStart.setHours(2-offset, 0, 0, 0); //2am 
			dsEnd.setHours(2-offset, 0, 0, 0); //2am 
		
			dsEnd.setMonth(10); //nov
			dsEnd.setDate(1); //first day in nov
			dsEnd.setDate( ( 7 - dsEnd.getDay() ) % 7 + 1 ); //first sunday

			//if daylight saving ends before it starts, set it to next year
			if( dsEnd < dsStart )
				dsEnd.setYear( dsEnd.getFullYear() + 1 );

			//alert( zoneName + "\nDS Start: " + dsStart.toString() + "\n" + 'DS End: ' + dsEnd.toString());
			
			if( now > dsStart && now < dsEnd ) {
				//alert("Daylight saving in "+zoneName+" is currently in effect."); 
				zone++;
			}
		}
		else if( zoneName == 'Madang' ) {
			zone = 10;

		}
		else if( zoneName == 'Melbourne' ) {
			zone = 10;
			//Start: Last Sunday in October
			//End: Last Sunday in March

			dsStart.setMonth(9); //oct
			dsStart.setDate(31); 
			dsStart.setDate(31-dsEnd.getDay());
			dsStart.setHours(2-offset, 0, 0, 0); //2am

			dsEnd.setMonth(2); //march
			dsEnd.setDate(31); //last day in march
			dsEnd.setDate(31-dsStart.getDay()); //last sunday in march
			dsEnd.setHours(2-offset, 0, 0, 0); //2am

			//if daylight saving ends before it starts, set it to next year
			if( dsEnd < dsStart )
				dsEnd.setYear( dsEnd.getFullYear() + 1 );

			//alert( zoneName + "\nDS Start: " + dsStart.toString() + "\n" + 'DS End: ' + dsEnd.toString());

			if( now > dsStart && now < dsEnd ) { 
				//alert("Daylight saving in "+zoneName+" is currently in effect.");
				zone++;
			}
		}
		else if( zoneName == 'Milan' ) {
			zone = 1;
			//Start: Last Sunday in March
			//End: Last Sunday in October

			dsStart.setMonth(2); //march
			dsStart.setDate(31); //last day in march
			dsStart.setDate(31-dsStart.getDay()); //last sunday in march
			dsStart.setHours(2-offset, 0, 0, 0); //2am

			dsEnd.setMonth(9); //oct
			dsEnd.setDate(31); 
			dsEnd.setDate(31-dsEnd.getDay());
			dsEnd.setHours(2-offset, 0, 0, 0); //2am

			//if daylight saving ends before it starts, set it to next year
			if( dsEnd < dsStart )
				dsEnd.setYear( dsEnd.getFullYear() + 1 );

			//alert( zoneName + "\nDS Start: " + dsStart.toString() + "\n" + 'DS End: ' + dsEnd.toString());

			if( now > dsStart && now < dsEnd ) { 
				//alert("Daylight saving in "+zoneName+" is currently in effect.");
				zone++;
			}
		}
		else if( zoneName == 'Mumbai' ) {
			zone = 5.5;
			//alert( zoneName + " does not use daylight saving time." );

		}
		else if( zoneName == 'New York' ) {
			zone = -5;
			//Start: Second Sunday in March
			//End: First Sunday in November

			dsStart.setMonth(2); //march
			dsStart.setDate(1); //first day in march
			dsStart.setDate( ( 7 - dsStart.getDay() ) % 7 + 8 ); //second sunday
			dsStart.setHours(2-offset, 0, 0, 0); //2am 
			dsEnd.setHours(2-offset, 0, 0, 0); //2am 
		
			dsEnd.setMonth(10); //nov
			dsEnd.setDate(1); //first day in nov
			dsEnd.setDate( ( 7 - dsEnd.getDay() ) % 7 + 1 ); //first sunday

			//if daylight saving ends before it starts, set it to next year
			if( dsEnd < dsStart )
				dsEnd.setYear( dsEnd.getFullYear() + 1 );

			//alert( zoneName + "\nDS Start: " + dsStart.toString() + "\n" + 'DS End: ' + dsEnd.toString());
			
			if( now > dsStart && now < dsEnd ) {
				//alert("Daylight saving in "+zoneName+" is currently in effect."); 
				zone++;
			}


		}
		else if( zoneName == 'Paris' ) {
			zone = 1;
			//Start: Last Sunday in March
			//End: Last Sunday in October

			dsStart.setMonth(2); //march
			dsStart.setDate(31); //last day in march
			dsStart.setDate(31-dsStart.getDay()); //last sunday in march
			dsStart.setHours(2-offset, 0, 0, 0); //2am

			dsEnd.setMonth(9); //oct
			dsEnd.setDate(31); 
			dsEnd.setDate(31-dsEnd.getDay());
			dsEnd.setHours(2-offset, 0, 0, 0); //2am

			//if daylight saving ends before it starts, set it to next year
			if( dsEnd < dsStart )
				dsEnd.setYear( dsEnd.getFullYear() + 1 );

			//alert( zoneName + "\nDS Start: " + dsStart.toString() + "\n" + 'DS End: ' + dsEnd.toString());

			if( now > dsStart && now < dsEnd ) { 
				//alert("Daylight saving in "+zoneName+" is currently in effect.");
				zone++;
			}

		}
		else if( zoneName == 'Perth' ) {
			zone = 8;
			//Start: Last Sunday in October
			//End: Last Sunday in March

			dsStart.setMonth(9); //oct
			dsStart.setDate(31); 
			dsStart.setDate(31-dsEnd.getDay());
			dsStart.setHours(2-offset, 0, 0, 0); //2am

			dsEnd.setMonth(2); //march
			dsEnd.setDate(31); //last day in march
			dsEnd.setDate(31-dsStart.getDay()); //last sunday in march
			dsEnd.setHours(2-offset, 0, 0, 0); //2am

			//if daylight saving ends before it starts, set it to next year
			if( dsEnd < dsStart )
				dsEnd.setYear( dsEnd.getFullYear() + 1 );

			//alert( zoneName + "\nDS Start: " + dsStart.toString() + "\n" + 'DS End: ' + dsEnd.toString());

			if( now > dsStart && now < dsEnd ) { 
				//alert("Daylight saving in "+zoneName+" is currently in effect.");
				zone++;
			}

		}
		else if( zoneName == 'Port Moresby' ) {
			zone = 10;

		}
		else if( zoneName == 'Shanghai' ) {
			zone = 8;
			//alert( zoneName + " does not use daylight saving time." );

		}
		else if( zoneName == 'Singapore' ) {
			zone = 8;
			//alert( zoneName + " does not use daylight saving time." );
		}
		else if( zoneName == 'Sydney' ) {
			zone = 10;
			//Start: Last Sunday in October
			//End: Last Sunday in March

			dsStart.setMonth(9); //oct
			dsStart.setDate(31); 
			dsStart.setDate(31-dsEnd.getDay());
			dsStart.setHours(2-offset, 0, 0, 0); //2am

			dsEnd.setMonth(2); //march
			dsEnd.setDate(31); //last day in march
			dsEnd.setDate(31-dsStart.getDay()); //last sunday in march
			dsEnd.setHours(2-offset, 0, 0, 0); //2am

			//if daylight saving ends before it starts, set it to next year
			if( dsEnd < dsStart )
				dsEnd.setYear( dsEnd.getFullYear() + 1 );

			//alert( zoneName + "\nDS Start: " + dsStart.toString() + "\n" + 'DS End: ' + dsEnd.toString());

			if( now > dsStart && now < dsEnd ) { 
				//alert("Daylight saving in "+zoneName+" is currently in effect.");
				zone++;
			}
		}
		else if( zoneName == 'Tokyo' ) {
			zone = 9;
			//alert( zoneName + " does not use daylight saving time." );

		}
		else if( zoneName == 'Toronto' ) {
			zone = -5;
			//Start: Second Sunday in March
			//End: First Sunday in November

			dsStart.setMonth(2); //march
			dsStart.setDate(1); //first day in march
			dsStart.setDate( ( 7 - dsStart.getDay() ) % 7 + 8 ); //second sunday
			dsStart.setHours(2-offset, 0, 0, 0); //2am 
			dsEnd.setHours(2-offset, 0, 0, 0); //2am 
		
			dsEnd.setMonth(10); //nov
			dsEnd.setDate(1); //first day in nov
			dsEnd.setDate( ( 7 - dsEnd.getDay() ) % 7 + 1 ); //first sunday

			//if daylight saving ends before it starts, set it to next year
			if( dsEnd < dsStart )
				dsEnd.setYear( dsEnd.getFullYear() + 1 );

			//alert( zoneName + "\nDS Start: " + dsStart.toString() + "\n" + 'DS End: ' + dsEnd.toString());
			
			if( now > dsStart && now < dsEnd ) {
				//alert("Daylight saving in "+zoneName+" is currently in effect."); 
				zone++;
			}

		}
		else if( zoneName == 'Vancouver' ) {
			zone = -8;
			//Start: Second Sunday in March
			//End: First Sunday in November

			dsStart.setMonth(2); //march
			dsStart.setDate(1); //first day in march
			dsStart.setDate( ( 7 - dsStart.getDay() ) % 7 + 8 ); //second sunday
			dsStart.setHours(2-offset, 0, 0, 0); //2am 
			dsEnd.setHours(2-offset, 0, 0, 0); //2am 
		
			dsEnd.setMonth(10); //nov
			dsEnd.setDate(1); //first day in nov
			dsEnd.setDate( ( 7 - dsEnd.getDay() ) % 7 + 1 ); //first sunday

			//if daylight saving ends before it starts, set it to next year
			if( dsEnd < dsStart )
				dsEnd.setYear( dsEnd.getFullYear() + 1 );

			//alert( zoneName + "\nDS Start: " + dsStart.toString() + "\n" + 'DS End: ' + dsEnd.toString());
			
			if( now > dsStart && now < dsEnd ) {
				//alert("Daylight saving in "+zoneName+" is currently in effect."); 
				zone++;
			}

		}
		else if( zoneName == 'Wellington' ) {
			zone = 12;
			//Start: last Sunday in september
			//End: Third Sunday in March

			dsStart.setMonth(8); //sept
			dsStart.setDate(30); //last day in sept
			dsStart.setDate(30-dsStart.getDay()); //last sunday in sept
			dsStart.setHours(zone - offset+2, 0, 0, 0); //2am

			dsEnd.setMonth(2); //mar
			dsEnd.setDate(1); //first day
			dsEnd.setDate( (7-dsEnd.getDay()) % 7 + 15 ); //third sunday
			dsEnd.setHours(zone - offset + 2, 0, 0, 0); //2am

			//if daylight saving ends before it starts, set it to next year
			if( dsEnd < dsStart )
				dsEnd.setYear( dsEnd.getFullYear() + 1 );

			//alert(zoneName + "\n" + 'DS Start: ' + dsStart.toString() + "\n" + 'DS End: ' + dsEnd.toString() );
			
			if( now > dsStart && now < dsEnd ) {
				//alert("Daylight saving in "+zoneName+" in current in effect."); 
				zone++;
			}

		}
		else {
			//set to gmt
			zone = 0;
			dsMsg = 'Please select a city';
		}

		return zone;

	}



	

	function showClocks() {
		
		if( !document.getElementById )
			return;
		
		city1 = CITY1;
		city2 = CITY2;
		city3 = CITY3;
		
		zone1 = getZone(city1);
		zone2 = getZone(city2);
		zone3 = getZone(city3);

		now = new Date();
		ofst = now.getTimezoneOffset()/60;
		
		mins1 = now.getMinutes();
		mins2 = now.getMinutes();
		mins3 = now.getMinutes();

		hr1 = now.getHours() + parseInt(ofst) + parseInt(zone1);
		hr2 = now.getHours() + parseInt(ofst) + parseInt(zone2);
		hr3 = now.getHours() + parseInt(ofst) + parseInt(zone3);
		
		dayOfMonth1 = now.getDate();
		dayOfMonth2 = now.getDate();
		dayOfMonth3 = now.getDate();

		month1 = now.getMonth() + 1;
		month2 = now.getMonth() + 1;
		month3 = now.getMonth() + 1;


		if( month1 < 10 )
			month1 = '0' + month1; //add leading 0

		if( month2 < 10 )
			month2 = '0' + month2; //add leading 0

		if( month3 < 10 )
			month3 = '0' + month3; //add leading 0


		year = now.getFullYear();

		//account for zones like mumbai that are utc+5:30hrs
		if( zone1 - parseInt(zone1) == 0.5 ) {
			mins1 += 30;
			//make sure it's a valid time.
			if( mins1 > 60 ) {
				mins1 -= 60;
				hr1++;	
			}
		} //end if half hour zone

		if( zone2 - parseInt(zone2) == 0.5 ) {
			mins2 += 30;
			//make sure it's a valid time.
			if( mins2 > 60 ) {
				mins2 -= 60;
				hr2++;	
			}
		} //end if half hour zone

		if( zone3 - parseInt(zone3) == 0.5 ) {
			mins3 += 30;
			//make sure it's a valid time.
			if( mins3 > 60 ) {
				mins3 -= 60;
				hr3++;	
			}
		} //end if half hour zone



		//work out what day it is
		if( hr1 < 0 )
			dayOfMonth1--;
		else if( hr1 > 23 )
			dayOfMonth1++;

		if( hr1 < 0 )
			hr1 += 24;

		if( hr1 > 23 )
			hr1 -= 24;

		ampm1 = (hr1 > 11) ? "pm" : "am";

		hr1A = hr1;
		if( hr1A == 0 )
			hr1A = 12;
		
		(hr1A < 13) ? hr1A : hr1A %= 12;

		//leading zero
		//if( hr1A < 10 )
		//	hr1A = "0" + hr1A;


		//work out what day it is
		if( hr2 < 0 )
			dayOfMonth2--;
		else if( hr2 > 23 )
			dayOfMonth2++;

		if( hr2 < 0 )
			hr2 += 24;

		if( hr2 > 23 )
			hr2 -= 24;

		ampm2 = (hr2 > 11) ? "pm" : "am";

		hr2A = hr2;
		if( hr2A == 0 )
			hr2A = 12;
		
		(hr2A < 13) ? hr2A : hr2A %= 12;

		//if( hr2A < 10 )
		//	hr2A = "0" + hr2A;


		//work out what day it is
		if( hr3 < 0 )
			dayOfMonth3--;
		else if( hr3 > 23 )
			dayOfMonth3++;

		if( hr3 < 0 )
			hr3 += 24;

		if( hr3 > 23 )
			hr3 -= 24;

		ampm3 = (hr3 > 11) ? "pm" : "am";

		hr3A = hr3;
		if( hr3A == 0 )
			hr3A = 12;
		
		(hr3A < 13) ? hr3A : hr3A %= 12;

		//if( hr3A < 10 )
		//	hr3A = "0" + hr3A;


		now.setDate(dayOfMonth1);
		dayOfWeek1 = now.getDay();

		now.setDate(dayOfMonth2);
		dayOfWeek2 = now.getDay();

		now.setDate(dayOfMonth3);
		dayOfWeek3 = now.getDay();

		d = new Array();
		d[0] = "Sunday";
		d[1] = "Monday";
		d[2] = "Tuesday";
		d[3] = "Wednesday";
		d[4] = "Thursday";
		d[5] = "Friday";
		d[6] = "Saturday";

		var finaltime1 = '<div class="date">'+ d[dayOfWeek1] + ', ' + dayOfMonth1 + '/' + month1 + '/' + year + '<\/div><div class="time"> ' + hr1A + ':' + ((mins1 < 10) ? "0" + mins1:mins1) + ' ' + ampm1 + '<\/div>';
		
		var finaltime2 = '<div class="date">'+ d[dayOfWeek2] + ', ' + dayOfMonth2 + '/' + month2 + '/' + year + '<\/div><div class="time"> ' + hr2A + ':' + ((mins2 < 10) ? "0" + mins2:mins2) + ' ' + ampm2 + '<\/div>';
		
		var finaltime3 = '<div class="date">'+ d[dayOfWeek3] + ', ' + dayOfMonth3 + '/' + month3 + '/' + year + '<\/div><div class="time"> ' + hr3A + ':' + ((mins3 < 10) ? "0" + mins3:mins3) + ' ' + ampm3 + '<\/div>';
		
		if( document.getElementById ) {
			document.getElementById("city1Name").innerHTML = city1;
			document.getElementById("city1Time").innerHTML = finaltime1;
			document.getElementById("city2Name").innerHTML = city2;
			document.getElementById("city2Time").innerHTML = finaltime2;
			document.getElementById("city3Name").innerHTML = city3;
			document.getElementById("city3Time").innerHTML = finaltime3;
		}

		//wait 1 second before updating

		setTimeout('showClocks()', refreshTime);

	} //end function showClocks


