var canvas_size

function init_clock(d){
canvas_size=d;
  //clock(s);
  setInterval('clock(canvas_size)',1000);
}

function clock(d){
  var now = new Date();
  var canvas=document.getElementById('clock_canvas');
  var ctx = document.getElementById('clock_canvas').getContext('2d');
  ctx.save();
  ctx.clearRect(0,0,d,d);
  ctx.translate(d/2,d/2);
//ctx.shadowblur=2;  not yet supported in firefox
//ctx.shadowOffsetY=2
//ctx.shadowOffsetX=2
//ctx.shadowColor="#000000"
  ctx.scale(d/375,d/375);   //allows arbitary scaling of the clock
  ctx.rotate(-Math.PI/2);
  ctx.strokeStyle = "black";
  ctx.fillStyle = "white";
  ctx.lineWidth = 8;
  ctx.lineCap = "round";

  // Hour marks
  ctx.save();
  ctx.beginPath();
  for (i=0;i<12;i++){
    ctx.rotate(Math.PI/6);
    ctx.moveTo(100,0);
    ctx.lineTo(120,0);
  }
  ctx.stroke();
  ctx.restore();

  // Minute marks
  ctx.save();
  ctx.lineWidth = 5;
  ctx.beginPath();
  for (i=0;i<60;i++){
    if (i%5!=0) {
      ctx.moveTo(117,0);
      ctx.lineTo(120,0);
    }
    ctx.rotate(Math.PI/30);
  }
  ctx.stroke();
  ctx.restore();

  var sec = now.getSeconds();
  var min = now.getMinutes();
  var hr  = now.getHours();
  hr = hr>=12 ? hr-12 : hr;

  ctx.fillStyle = "black";

  // write Hours
  ctx.save();
  ctx.rotate( hr*(Math.PI/6) + (Math.PI/360)*min + (Math.PI/21600)*sec )
  ctx.lineWidth = 14;
  ctx.beginPath();
  ctx.moveTo(-20,0);
  ctx.lineTo(80,0);
    ctx.stroke();
  ctx.restore();

  // write Minutes
  ctx.save();
  ctx.rotate( (Math.PI/30)*min + (Math.PI/1800)*sec )
  ctx.lineWidth = 10;
  ctx.beginPath();
  ctx.moveTo(-28,0);
  ctx.lineTo(112,0);
  ctx.stroke();
  ctx.restore();

  // Write seconds
  ctx.save();
  ctx.rotate(sec * Math.PI/30);
  ctx.strokeStyle = "#E40000";
  ctx.fillStyle = "#D40000";
  ctx.lineWidth = 5;

  ctx.beginPath();
  ctx.moveTo(-30,0);
  ctx.lineTo(0,0);
ctx.lineCap = "butt";
  ctx.stroke();

  ctx.beginPath();
  ctx.lineWidth = 5;
  ctx.moveTo(0,0);
  ctx.lineTo(68,0);
  ctx.stroke();

  ctx.beginPath();  //last it of hand beyond bobble
  ctx.lineWidth = 3;
  ctx.moveTo(82,0);
  ctx.lineTo(110,0);
  ctx.stroke();

  ctx.beginPath();
  ctx.arc(0,0,10,0,Math.PI*2,true); //circle round centre
  ctx.fill();
  ctx.beginPath();
  ctx.arc(75,0,7,0,Math.PI*2,true); //bobble on second hand
  ctx.stroke()
  ctx.beginPath();
  ctx.arc(-37,0,7,Math.PI/2,-Math.PI/2,true); //bobble on second hand
  ctx.stroke()

  ctx.beginPath();
  ctx.stroke();
  ctx.fillStyle = "#555";
  ctx.arc(0,0,3,0,Math.PI*2,true);  // dot in centre
  ctx.fill();
  ctx.restore();

  ctx.beginPath();
  ctx.lineWidth = 14;
  ctx.strokeStyle = '#325FA2';
  ctx.arc(0,0,142,0,Math.PI*2,true);
  ctx.stroke();
  ctx.restore();
}

