/**
* Wonderful clock, found on http://www.java-scripts.net/javascripts/Mouse-Tail-Clock.phtml
* modified by Jürgen Müller-Lütken on 22. January 2010 kontakt@p-six.de
* it is possibly a clock from Randy Klinger, but there is another one
* called clock pointer with the same code but without an author name
* (http://www.java-scripts.net/javascripts/Clock-Pointer.phtml)
* I removed the code for Netscape4, sorted the code a bit
* and allowed stopping the mouse follow:
* clock stops following the mouse by clicking into the window
* another click starts following again
**/

var dCol='#FC0';//date colour.
var fCol='#FFC';//face colour.
var sCol='#FC0';//seconds colour.
var mCol='#FC0';//minutes colour.
var hCol='#FC0';//hours colour.
var fontFamily='Courier New';
var fontSize=11;
//var ddays=new Array("SUNDAY","MONDAY","TUESDAY","WEDNESDAY","THURSDAY","FRIDAY","SATURDAY");
//var months=new Array("JANUARY","FEBRUARY","MARCH","APRIL","MAY","JUNE","JULY","AUGUST","SEPTEMBER","OCTOBER","NOVEMBER","DECEMBER");
var ddays=new Array("SONNTAG","MONTAG","DIENSTAG","MITTWOCH","DONNERSTAG","FREITAG","SAMSTAG");
var months=new Array("JANUAR","FEBRUAR","MÄRZ","APRIL","MAI","JUNI","JULI","AUGUST","SEPTEMBER","OKTOBER","NOVEMBER","DEZEMBER");
var ClockHeight=30;
var ClockWidth=30;
var ClockFromMouseY=0; // distance between the mouse pointer and the clock (from top)
var ClockFromMouseX=10; // distance between the mouse pointer and the clock (from left)
var restingSpeed = 1000; // Speed of the Date; turns counterclockwise if not following the mouse

//Alter nothing below! Alignments will be lost!

var freeFlight = true;
var movinSpeed = 20;
var ie=(document.all);
var date=new Date();
var day=date.getDate();
var year=date.getYear();

if (year < 2000) year=year+1900;
var TodaysDate=" "+ddays[date.getDay()]+" "+day+" "+months[date.getMonth()]+" "+year;
var D=TodaysDate.split('');
var clockH='...';
var clockH=clockH.split('');
var M='....';
var M=M.split('');
var S='.....';
S=S.split('');
var Face='1 2 3 4 5 6 7 8 9 10 11 12';
Face=Face.split(' ');
var n=Face.length;
var speedy=0.6;
var ymouse=0;
var xmouse=0;
var scrll=0;
var props='<span style="font-family:'+fontFamily+';font-size:'+fontSize+'px;font-weight:bold;color:'+fCol+'">';
var props2='<span style="font-family:'+fontFamily+';font-size:'+fontSize+'px;font-weight:bold;color:'+dCol+'">';
var a=1;
var Split=360/n;
var Dsplit=360/D.length;
var HandHeight=ClockHeight/4.5
var HandWidth=ClockWidth/4.5
var HandY=-7;
var HandX=-2.5;

step = ie ? 0.09 : 0.06;

var currStep=0;
var clocky=new Array();
var clockx=new Array();
var clockY=new Array();
var clockX=new Array();

for (i=0; i < n; i++)
{
	clocky[i]=0;
	clockx[i]=0;
	clockY[i]=0;
	clockX[i]=0;
}

var clockDy=new Array();
var clockDx=new Array();
var clockDY=new Array();
var clockDX=new Array();

for (i=0; i < D.length; i++)
{
	clockDy[i]=0;
	clockDx[i]=0;
	clockDY[i]=0;
	clockDX[i]=0;
}

function initClock()
{
	var str ='<div id="Od" style="position:absolute;top:0px;left:0px"><div style="position:relative">';
	for (i=0; i < D.length; i++)
		str += '<div id="ieDate'+i+'" style="position:absolute;top:0px;left:0;height:'+a+'px;width:'+a+'px;text-align:center">'+props2+D[i]+'</span></div>';
	str += '</div></div>';
	str += '<div id="Of" style="position:absolute;top:0px;left:0px"><div style="position:relative">';
	for (i=0; i < n; i++)
		str += '<div id="ieFace' + i + '" style="position:absolute;top:0px;left:0;height:'+a+'px;width:'+a+'px;text-align:center">'+props+Face[i]+'</span></div>';
	str += '</div></div>';
	str += '<div id="Oh" style="position:absolute;top:0px;left:0px"><div style="position:relative">';
	for (i=0; i < clockH.length; i++)
		str += '<div id="ieHours' + i + '" style="position:absolute;width:16px;height:16px;font-family:Arial;font-size:16px;color:'+hCol+';text-align:center;font-weight:bold">'+clockH[i]+'</div>';
	str += '</div></div>';
	str += '<div id="Om" style="position:absolute;top:0px;left:0px"><div style="position:relative">';
	for (i=0; i < M.length; i++)
		str += '<div id="ieMinutes'+i+'" style="position:absolute;width:16px;height:16px;font-family:Arial;font-size:16px;color:'+mCol+';text-align:center;font-weight:bold">'+M[i]+'</div>';
	str += '</div></div>';
	str += '<div id="Os" style="position:absolute;top:0px;left:0px"><div style="position:relative">';
	for (i=0; i < S.length; i++)
		str += '<div id="ieSeconds'+i+'" style="position:absolute;width:16px;height:16px;font-family:Arial;font-size:16px;color:'+sCol+';text-align:center;font-weight:bold">'+S[i]+'</div>';
	str += '</div></div>';
	document.body.innerHTML += str;
	Delay();
}

/*
function Mouse(event)
{
	if(freeFlight)
	{
		ymouse = (document.all) ? event.y+ClockFromMouseYp + document.body.scrollTop : event.pageY+ClockFromMouseY+window.pageYOffset;
		xmouse = (document.all) ? event.x+ClockFromMouseX : event.pageX+ClockFromMouseX;
		movinSpeed = 20;
	}
}
*/
if(document.attachEvent)
{
	document.attachEvent("onmousemove", Mouse)
	document.attachEvent("onclick", stopFlying)
}
else
{
	document.addEventListener("mousemove", Mouse, true);
	document.addEventListener("click", stopFlying, true);
}

function Mouse(evnt)
{
	if(freeFlight)
	{
		ymouse = (!document.all)?evnt.pageY+ClockFromMouseY:event.y+ClockFromMouseY;
		xmouse = (!document.all)?evnt.pageX+ClockFromMouseX:event.x+ClockFromMouseX;
		movinSpeed = 20;
	}
}

function ClockAndAssign()
{
	time = new Date ();
	secs = time.getSeconds();
	sec = -1.57 + Math.PI * secs/30;
	mins = time.getMinutes();
	min = -1.57 + Math.PI * mins/30;
	hr = time.getHours();
	hrs = -1.575 + Math.PI * hr/6+Math.PI*parseInt(time.getMinutes())/360;
	if (ie)
	{
		document.getElementById("Od").style.top=window.document.body.scrollTop + 'px';
		document.getElementById("Of").style.top=window.document.body.scrollTop + 'px';
		document.getElementById("Oh").style.top=window.document.body.scrollTop + 'px';
		document.getElementById("Om").style.top=window.document.body.scrollTop + 'px';
		document.getElementById("Os").style.top=window.document.body.scrollTop + 'px';
	}
	for (i=0; i < n; i++)
	{
		var F=document.getElementById("ieFace" + i ).style;
		F.top=clocky[i] + ClockHeight*Math.sin(-1.0471 + i*Split*Math.PI/180)+scrll + 'px';
		F.left=clockx[i] + ClockWidth*Math.cos(-1.0471 + i*Split*Math.PI/180) + 'px';
	}
	for (i=0; i < clockH.length; i++)
	{
		var HL=document.getElementById("ieHours"+i).style;
		HL.top=clocky[i]+HandY+(i*HandHeight)*Math.sin(hrs)+scrll + 'px';
		HL.left=clockx[i]+HandX+(i*HandWidth)*Math.cos(hrs) + 'px';
	}
	for (i=0; i < M.length; i++)
	{
		var ML=document.getElementById("ieMinutes"+i).style;
		ML.top=clocky[i]+HandY+(i*HandHeight)*Math.sin(min)+scrll + 'px';
		ML.left=clockx[i]+HandX+(i*HandWidth)*Math.cos(min) + 'px';
	}
	for (i=0; i < S.length; i++)
	{
		var SL=document.getElementById("ieSeconds" + i).style;
		SL.top=clocky[i]+HandY+(i*HandHeight)*Math.sin(sec)+scrll + 'px';
		SL.left=clockx[i]+HandX+(i*HandWidth)*Math.cos(sec) + 'px';
	}
	for (i=0; i < D.length; i++)
	{
		var DL=document.getElementById("ieDate" + i).style;
		DL.top=clockDy[i] + ClockHeight*1.5*Math.sin(currStep+i*Dsplit*Math.PI/180)+scrll + 'px';
		DL.left=clockDx[i] + ClockWidth*1.5*Math.cos(currStep+i*Dsplit*Math.PI/180) + 'px';
	}
	currStep-=step;
}

function stopFlying()
{
	freeFlight = (freeFlight) ? false : true;
	movinSpeed = (movinSpeed == restingSpeed) ? 20 : restingSpeed;
}

function Delay()
{
	scrll=0;
	clockDy[0]=Math.round(clockDY[0]+=((ymouse)-clockDY[0])*speedy);
	clockDx[0]=Math.round(clockDX[0]+=((xmouse)-clockDX[0])*speedy);
	for (i=1; i < D.length; i++)
	{
		clockDy[i]=Math.round(clockDY[i]+=(clockDy[i-1]-clockDY[i])*speedy);
		clockDx[i]=Math.round(clockDX[i]+=(clockDx[i-1]-clockDX[i])*speedy);
	}
	clocky[0]=Math.round(clockY[0]+=((ymouse)-clockY[0])*speedy);
	clockx[0]=Math.round(clockX[0]+=((xmouse)-clockX[0])*speedy);
	for (i=1; i < n; i++)
	{
		clocky[i]=Math.round(clockY[i]+=(clocky[i-1]-clockY[i])*speedy);
		clockx[i]=Math.round(clockX[i]+=(clockx[i-1]-clockX[i])*speedy);
	}
	ClockAndAssign();
	setTimeout('Delay()',movinSpeed);
}

