//World Clock (No DST - standard time only!)
//By http://www.btinternet.com/~kurt.grigg/javascript
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>World Clock. No DST, standard time only!</title>
<style type = "text/css">
body{
background-color : #000000;
}
/*Alter .theContainer background colour & border styles only*/
.theContainer{
position:relative;width:120px;height:160px;text-align:center;
background-color:#880000;border: 2px solid #ff0000;
}
.handsanddotsstyle{
position:absolute;top:0px;left:0px;width:2px;height:2px;
font-size:2px;background-color:#000000;
}
.ampmstyle{
position:absolute;top:0px;left:0px;width:20px;height:10px;
text-align:center;font-family:arial,sans-serif;font-size:12px;color:#000000;
}
.datestyle{
position:absolute;top:0px;left:0px;width:100px;text-align:center;
font-family:arial,sans-serif;font-size:11px;color:#000000;
}
.facestyle{
position:absolute;top:0px;left:0px;width:15px;height:15px;
text-align:center;font-family:arial,sans-serif;font-size:10px;color:#000000;
}
.citystyle{
position:absolute;top:0px;left:0px;width:110px;height:20px;z-index:100;
}
.selectstyle{
width:110px;font-family:arial,sans-serif;font-size:12px;color:#ffffff;
background:#000000;
}
</style>
</head>
<body>
<p>
<script type="text/javascript">
//World Clock (No DST - standard time only!)
//By http://www.btinternet.com/~kurt.grigg/javascript
if ((document.getElementById &&
document.firstChild &&
typeof document.getElementsByTagName != "undefined") &&
window.addEventListener || window.attachEvent){
(function(){
//Alter clock colours here:
var fCol = "#fff000"; //face/number colour.
var dCol = "#ff0000"; //dot colour.
var hCol = "#ffffff"; //hours colour.
var mCol = "#ffffff"; //minutes colour.
var sCol = "#ff0000"; //seconds colour.
var cCol = "#fff000"; //date colour.
var aCol = "#ff0000"; //am-pm colour.
var bCol = "#880000"; //select/form background colour.
var tCol = "#fff000"; //select/form text colour.
//Add places here - make sure format is correct!
var locations = [
["Your Time","0"],
["GMT","0"],
["Rome","1"],
["Cairo","2"],
["Moscow","3"],
["Tehran","3.30"],
["Karachi","5"],
["Bombay","5.30"],
["Kathmandu","5.45"],
["Bangkok","7"],
["Hong Kong","8"],
["Tokyo","9"],
["Darwin","9.30"],
["Sydney","10"],
["Suva","12"],
["Honolulu","-10"],
["San Francisco","-8"],
["Arizona","-7"],
["New York","-5"],
["Newfoundland","-3.30"],
["Nuuk","-3"]];
//Alter nothing below! Alignments will be lost!
var d = document;
var idx = d.getElementsByTagName('div').length;
var ids = d.getElementsByTagName('select').length;
var y = 87;
var x = 60;
var h = 4;
var m = 5;
var s = 5;
var cf = [];
var cd = [];
var ch = [];
var cm = [];
var cs = [];
var face = "3 4 5 6 7 8 9 10 11 12 1 2";
face = face.split(" ");
var n = face.length;
var e = 360/n;
var hDims = 30/4;
var zone = 0;
var isItLocal = true;
var ampm = "";
var daysInMonth = 31;
var todaysDate = "";
var oddMinutes;
var getOddMinutes;
var addOddMinutes;
var plusMinus = false;
d.write("<div class = 'theContainer'>"
+"<div id = 'theCities"+idx+"' class = 'citystyle'>"
+"<p style = 'margin:0px;'>"
+"<select id = 'city"+ids+"' class = 'selectstyle'>");
for (var i = 0; i < locations.length; i++){
d.write("<option value = "+locations[i][1]+">"+locations[i][0]+"<\/option>");
}
d.write("<\/select><\/p><\/div>");
d.write('<div id = "theDate'+(idx)+'" class = "datestyle" style = "color:'+cCol+'">\!<\/div>');
d.write('<div id = "amOrPm'+(idx)+'" class = "ampmstyle" style = "color:'+aCol+'">\!<\/div>');
for (var i = 0; i < n; i++){
d.write('<div id = "theFace'+(idx+i)+'" class="facestyle" style="color:'+fCol+'">'+face[i]+'<\/div>');
}
for (var i = 0; i < n; i++){
d.write('<div id = "theDots'+(idx+i)+'" class = "handsanddotsstyle" style = "background-color:'+dCol+'"><\/div>');
}
for (var i = 0; i < h; i++){
d.write('<div id = "H'+(idx+i)+'" class = "handsanddotsstyle" style = "background-color:'+hCol+'"><\/div>');
}
for (var i = 0; i < m; i++){
d.write('<div id = "M'+(idx+i)+'" class = "handsanddotsstyle" style = "background-color:'+mCol+'"><\/div>');
}
for (var i = 0; i < s; i++){
d.write('<div id = "S'+(idx+i)+'" class = "handsanddotsstyle" style = "background-color:'+sCol+'"><\/div>');
}
d.write("<\/div>");
function init(){
for (var i = 0; i < n; i++){
cf[i] = d.getElementById("theFace"+(idx+i)).style;
cf[i].top = y-6+30*1.4*Math.sin(i*e*Math.PI/180)+"px";
cf[i].left = x-6+30*1.4*Math.cos(i*e*Math.PI/180)+"px";
}
for (var i = 0; i < n; i++){
cd[i] = d.getElementById("theDots"+(idx+i)).style;
cd[i].top = y+30*Math.sin(i*e*Math.PI/180)+"px";
cd[i].left = x+30*Math.cos(i*e*Math.PI/180)+"px";
}
for (var i = 0; i < h; i++){
ch[i] = d.getElementById("H"+(idx+i)).style;
}
for (var i = 0; i < m; i++){
cm[i] = d.getElementById("M"+(idx+i)).style;
}
for (var i = 0; i < s; i++){
cs[i] = d.getElementById("S"+(idx+i)).style;
}
d.getElementById("amOrPm"+idx).style.top = y-8+"px";
d.getElementById("amOrPm"+idx).style.left = x+6+"px";
d.getElementById("theCities"+idx).style.top = y-80+"px";
d.getElementById("theCities"+idx).style.left = x-55+"px";
d.getElementById("theDate"+idx).style.top = y+55+"px";
d.getElementById("theDate"+idx).style.left = x-49+"px";
d.getElementById("city"+ids).style.backgroundColor = bCol;
d.getElementById("city"+ids).style.color = tCol;
ClockAndAssign();
}
function lcl(){
var c = document.getElementById("city"+ids);
zone = c.options[c.selectedIndex].value;
isItLocal = (c.options[0].selected);
plusMinus = (zone.charAt(0) == "-");
oddMinutes = (zone.indexOf(".") != -1);
if (oddMinutes){
getOddMinutes = zone.substring(zone.indexOf(".")+1,zone.length);
}
if (plusMinus)
addOddMinutes = (oddMinutes)?parseInt(-getOddMinutes):0;
else
addOddMinutes = (oddMinutes)?parseInt(getOddMinutes):0;
}
function ClockAndAssign(){
var hourAdjust = 0;
var dayAdjust = 0;
var monthAdjust = 0;
var now = new Date();
var ofst = now.getTimezoneOffset()/60;
var secs = now.getSeconds();
var secOffSet = secs - 15;
if (secs < 15){
secOffSet = secs + 45;
}
var sec = Math.PI * (secOffSet/30);
var mins = now.getMinutes();
if (oddMinutes){
mins = mins+addOddMinutes;
}
var minOffSet = mins - 15;
if (mins < 15){
minOffSet = mins + 45;
}
var min = Math.PI * (minOffSet/30);
if (mins < 0){
mins += 60;
hourAdjust = -1;
}
if (mins > 59){
mins -= 60;
hourAdjust = 1;
}
hr = (isItLocal)?now.getHours()+hourAdjust:(now.getHours()+parseInt(ofst))+parseInt(zone)+hourAdjust;
hrs = Math.PI * (hr-3)/6 + Math.PI * (parseInt(mins)) / 360;
if (hr < 0){
hr += 24;
dayAdjust = -1;
}
if (hr > 23){
hr -= 24;
dayAdjust = 1;
}
day = now.getDate() + dayAdjust;
if (day < 1){
day += daysInMonth;
monthAdjust = -1;
}
if (day > daysInMonth){
day -= daysInMonth;
monthAdjust = 1;
}
month = parseInt(now.getMonth() + 1 + monthAdjust);
if (month == 2){
daysInMonth = 28;
}
year = now.getYear();
if (year < 2000){
year = year + 1900;
}
leapYear = (year%4 == 0);
if (leapYear&&month == 2){
daysInMonth = 29;
}
if (month < 1){
month += 12;
year--;
}
if (month > 12){
month -= 12;
year++;
}
todaysDate = day+" "+month+" "+year;
ampm = (hr > 11)?"pm":"am";
for (var i = 0; i < s; i++){
cs[i].top = y+(i*hDims)*Math.sin(sec) + "px";
cs[i].left = x+(i*hDims)*Math.cos(sec) + "px";
}
for (var i = 0; i < m; i++){
cm[i].top = y+(i*hDims)*Math.sin(min) + "px";
cm[i].left = x+(i*hDims)*Math.cos(min) + "px";
}
for (var i = 0; i < h; i++){
ch[i].top = y+(i*hDims)*Math.sin(hrs) + "px";
ch[i].left = x+(i*hDims)*Math.cos(hrs) + "px";
}
d.getElementById("amOrPm"+idx).firstChild.data = ampm;
d.getElementById("theDate"+idx).firstChild.data = todaysDate;
setTimeout(ClockAndAssign,100);
}
if (window.addEventListener){
window.addEventListener("load",init,false);
d.getElementById("city"+ids).addEventListener("change",lcl,false);
}
else if (window.attachEvent){
window.attachEvent("onload",init);
d.getElementById("city"+ids).attachEvent("onchange",lcl);
}
})();
}
</script>
</p>
</body>
</html>
|