// Realtime Analog XBM Inline Clock
// (c)2001 David L. Blackledge
//
http://David.Blackledge.com
// Written on 9/3/01
// You may use this if you keep this copyright notice intact
// --------------------
// To use this, place this file in your directory,
// then add the following line where you want the clock to appear:
// (SCRIPT language="JavaScript" SRC="dlbClock.js")(/SCRIPT)
// except replace ( and ) with < and >
window.clockimage = "";
function clock_drawline(angle,radius) {
var xoff = 8;
var used = 0;
if(angle >= Math.PI/2) {
if(angle >= Math.PI) {
if(angle >= Math.PI*3/2) {
} else {
used=1;
}
} else {
used=1;
}
} else {
}
var cosa = Math.cos(angle);
var sina = Math.sin(angle);
if(cosa < 0)
for(var x = 0; x <=radius ; ++x) {
clock_bits[used][xoff+parseInt(sina*x)] |= (0x80>>parseInt(Math.abs(cosa)*x));
}
else
for(var x = 0; x <=radius ; ++x) {
clock_bits[used][xoff+parseInt(sina*x)] |= (0x01<
}
}
var clock_base = new Array();
/* Circle with hour ticks:*/
clock_base[0] = new Array(0x03,0x0d,0x14,0x24,0x40,0x70,0x80,0xc0,0xc0 ,0x80,0x70,0x40,0x24,0x14,0x0d,0x03);
clock_base[1] = new Array(0xc0,0xb0,0x28,0x24,0x02,0x0e,0x01,0x03,0x03 ,0x01,0x0e,0x02,0x24,0x28,0xb0,0xc0);
/* start with just a circle
clock_base[0] = new Array(0x03,0x0c,0x10,0x20,0x40,0x40,0x80,0x80,
0x80,0x80,0x40,0x40,0x20,0x10,0x0c,0x03);
clock_base[1] = new Array(0xc0,0x30,0x08,0x04,0x02,0x02,0x01,0x01,
0x01,0x01,0x02,0x02,0x04,0x08,0x30,0xc0);
*/
var clock_bits = new Array();
clock_bits[0] = new Array(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
clock_bits[1] = new Array(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
var clock_hourmin = new Array();
clock_hourmin[0] = new Array(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
clock_hourmin[1] = new Array(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
var clock_angle = 0;
var clock_w =16;
var clock_h = 16;
var clock_anglemin = 0;
var clock_anglehour = 0;
var clock_anglesec = 0;
function clock_domins() {
clock_bits[0] = new Array().concat(clock_base[0]);
clock_bits[1] = new Array().concat(clock_base[1]);
var now = new Date();
clock_anglemin = 0.01+(now.getMinutes()/60.0*Math.PI*2+Math.PI*3/2)%(Math.PI*2);
clock_anglehour = 0.01+((now.getHours()*60+now.getMinutes())/(12.0*60)*Math.PI*2+Math.PI*3/2)%(Math.PI*2);
clock_drawline(clock_anglemin,7);
clock_drawline(clock_anglemin+.1,6);
clock_drawline(clock_anglehour-.1,3);
clock_drawline(clock_anglehour,4);
clock_drawline(clock_anglehour+.1,3);
clock_hourmin[0] = new Array().concat(clock_bits[0]);
clock_hourmin[1] = new Array().concat(clock_bits[1]);
}
function clock_output() {
var now = new Date();
if(now.getSeconds()==0) clock_domins();
clock_bits[0] = new Array().concat(clock_hourmin[0]);
clock_bits[1] = new Array().concat(clock_hourmin[1]);
clock_anglesec = 0.01+(now.getSeconds()/60.0*Math.PI*2+Math.PI*3/2)%(Math.PI*2);
clock_drawline(clock_anglesec,8);
clock_drawline(clock_anglesec+.1,8);
window.clockimage = "#define clock_width "+clock_w+ "\n#define clock_height "+
clock_h+"\nstatic char clock_bits[] = {";
for(var i = 0 ; i < clock_bits[0].length ; ++i) {
window.clockimage += "0x"+"00".substring(clock_bits[1][i].toString(16).length)+clock_bits[1][i].toString(16)+","+
"0x"+"00".substring(clock_bits[0][i].toString(16).length)+clock_bits[0][i].toString(16)+",\n"
}
window.clockimage = window.clockimage.substring(0,window.clockimage.le ngth-2)+"}";
document.images["dlbClock"].src = "javascript
:window.clockimage";
}
document.writeln('
');
clock_domins();
clock_output();
window.clock_context = this;
setInterval('with(window.clock_context)clock_outpu t();',1000);