var useShades = false;
var shadesOn = 0;
var dragging = false;
var hL;
var hR;
var timer;
var poked = new Array;
var range = 50;

var bloodshot = new Image(40,40); bloodshot.src = bandwidth + "/pix/bloodshot.gif";
var whites    = new Image(40,40); whites.src    = bandwidth + "/pix/whites.gif";

function moveAnEye(side,x,y)
	{
	var nx,ny;

	var myWhite = getObj('white' + side);
	var myPupil = getObj('pupil' + side);
	var myWrapper = getObj('wrapper');
	var myContent = getObj('content');
	var myFreddy  = getObj('freddyDiv');
	var pupilSize = myPupil.offsetWidth;
	var whiteSize = myWhite.offsetWidth;
	var move = (whiteSize-pupilSize)/2;
	var offsetX = myFreddy.offsetLeft + myWhite.offsetLeft + (pupilSize/2);
	var offsetY = myFreddy.offsetTop  + myWhite.offsetTop  + (pupilSize/2);

	if (document.all)
		{
		// offsetX += myWrapper.offsetLeft + myContent.offsetLeft;
		}

	var dx=x-(offsetX+(whiteSize/2));
	var dy=y-(offsetY+(whiteSize/2));
	var h = Math.sqrt(dx*dx+dy*dy);

	if (side == 'L')
		{hL = h;}
	else
		{hR = h;}

	if (dy == 0) // to prevent division by zero;
		{dy = 1;}

	var r = Math.abs(Math.atan(dx/dy));

	ny = Math.cos(r) * move;
	nx = Math.sin(r) * move;

	if (x > offsetX) {nx = nx+(pupilSize/2);} else {nx = (pupilSize/2)-nx;}
	if (y > offsetY) {ny = ny+(pupilSize/2);} else {ny = (pupilSize/2)-ny;}

	// window.status = x + ':' + y;

	// alert(nx+myWhite.offsetLeft);
	
	myPupil.style.left = parseInt(nx+myWhite.offsetLeft) + 'px';
	myPupil.style.top  = parseInt(ny+myWhite.offsetTop) + 'px';
	}

function hideShades()
	{
	if ((!dragging) && (hL > range) && (hR > range))
		{
		shadesOn=false;
		getObj('shades').style.display = 'none';
		}
	}

function jseyesmove(x,y)
	{
	moveAnEye('L',x,y);
	moveAnEye('R',x,y);

	if ((useShades) && (!dragging))
		{
		if (shadesOn)
			{
			if ((hL > range) && (hR > range))
				{timer = setTimeout("hideShades();",2000);}
			}
		else
			{
			if ((hL < range) || (hR < range))
				{
				getObj('shades').style.display = 'block';
				shadesOn = true;
				clearTimeout(timer);
				}
			}
		}
	}

function poke(side)
	{
	if (useShades)
		{
		shadesOn=false;
		getObj('shades').style.display = 'none';
		}
	else
		{
		getObj('white' + side).src = bloodshot.src;
		poked[side] = 1;
		if (poked['L'] && poked['R'])
			{setTimeout('gone()',1000);}
		}
	}

function jseyesmousemoveNS(e)
	{
	jseyesmove(e.pageX, e.pageY);
	}

function jseyesmousemoveIE()
	{
	if (document.documentElement.scrollTop)
		{jseyesmove(event.clientX+document.documentElement.scrollLeft, event.clientY+document.documentElement.scrollTop);}
	else
		{jseyesmove(event.clientX+document.body.scrollLeft, event.clientY+document.body.scrollTop);}
	}

function gone()
	{
	getObj('freddyDiv').style.display = 'none';
	alert("I hope you're happy now, Freddy has left the desktop!");
	setTimeout("word()",1000);
	}

function word()
	{
	alert("Hold on a minute, I'll just go and have a word with him...");
	setTimeout("back()",3000);
	}

function back()
	{
	getObj('whiteL').src = whites.src;
	getObj('whiteR').src = whites.src;
	alert("Ok, if you promise to be good, he says he'll come back!");
	useShades = 1;
	getObj('freddyDiv').style.display = 'block';
	}

function freddy_init(num)
	{
	if (getObj)
		{
		if (document.all)
			{document.onmousemove=jseyesmousemoveIE;}
		else
			{document.onmousemove=jseyesmousemoveNS;}

		Drag.init(getObj('shades'));
		}
	}

var Drag =
	{
	obj : null,
	
	init : function(o, oRoot, minX, maxX, minY, maxY, bSwapHorzRef, bSwapVertRef, fXMapper, fYMapper)
		{
		o.onmousedown	= Drag.start;
		o.hmode			= bSwapHorzRef ? false : true;
		o.vmode			= bSwapVertRef ? false : true;
		o.root = oRoot && oRoot != null ? oRoot : o;
		if (o.hmode  && isNaN(parseInt(o.root.style.left  ))) {o.root.style.left   = "184px";}
		if (o.vmode  && isNaN(parseInt(o.root.style.top   ))) {o.root.style.top    = "128px";}
		if (!o.hmode && isNaN(parseInt(o.root.style.right ))) {o.root.style.right  = "0px";}
		if (!o.vmode && isNaN(parseInt(o.root.style.bottom))) {o.root.style.bottom = "0px";}
		o.minX	= typeof minX != 'undefined' ? minX : null;
		o.minY	= typeof minY != 'undefined' ? minY : null;
		o.maxX	= typeof maxX != 'undefined' ? maxX : null;
		o.maxY	= typeof maxY != 'undefined' ? maxY : null;
		o.xMapper = fXMapper ? fXMapper : null;
		o.yMapper = fYMapper ? fYMapper : null;
		o.root.onDragStart	= new Function();
		o.root.onDragEnd	= new Function();
		o.root.onDrag		= new Function();
		},

	start : function(e)
		{
		dragging = true;

		clearTimeout(timer);

		var o = Drag.obj = this;
		e = Drag.fixE(e);
		var y = parseInt(o.vmode ? o.root.style.top  : o.root.style.bottom);
		var x = parseInt(o.hmode ? o.root.style.left : o.root.style.right);
		o.root.onDragStart(x, y);

		o.lastMouseX = e.clientX;
		o.lastMouseY = e.clientY;

		if (o.hmode)
			{
			if(o.minX != null) o.minMouseX = e.clientX - x + o.minX;
			if(o.maxX != null) o.maxMouseX = o.minMouseX + o.maxX - o.minX;
			}
		else
			{
			if(o.minX != null) o.maxMouseX = -o.minX + e.clientX + x;
			if(o.maxX != null) o.minMouseX = -o.maxX + e.clientX + x;
			}

		if (o.vmode)
			{
			if(o.minY != null) o.minMouseY = e.clientY - y + o.minY;
			if(o.maxY != null) o.maxMouseY = o.minMouseY + o.maxY - o.minY;
			}
		else
			{
			if(o.minY != null) o.maxMouseY = -o.minY + e.clientY + y;
			if(o.maxY != null) o.minMouseY = -o.maxY + e.clientY + y;
			}

		document.onmousemove	= Drag.drag;
		document.onmouseup   = Drag.end;
		return false;
		},

	drag : function(e)
		{
		e = Drag.fixE(e);
		var o = Drag.obj;

		var ey	= e.clientY;
		var ex	= e.clientX;
		var y = parseInt(o.vmode ? o.root.style.top  : o.root.style.bottom);
		var x = parseInt(o.hmode ? o.root.style.left : o.root.style.right );
		var nx, ny;

		if (o.minX != null) ex = o.hmode ? Math.max(ex, o.minMouseX) : Math.min(ex, o.maxMouseX);
		if (o.maxX != null) ex = o.hmode ? Math.min(ex, o.maxMouseX) : Math.max(ex, o.minMouseX);
		if (o.minY != null) ey = o.vmode ? Math.max(ey, o.minMouseY) : Math.min(ey, o.maxMouseY);
		if (o.maxY != null) ey = o.vmode ? Math.min(ey, o.maxMouseY) : Math.max(ey, o.minMouseY);

		nx = x + ((ex - o.lastMouseX) * (o.hmode ? 1 : -1));
		ny = y + ((ey - o.lastMouseY) * (o.vmode ? 1 : -1));

		if(o.xMapper)		nx = o.xMapper(y)
		else if(o.yMapper)	ny = o.yMapper(x)

		Drag.obj.root.style[o.hmode ? "left" : "right"] = nx + "px";
		Drag.obj.root.style[o.vmode ? "top" : "bottom"] = ny + "px";
		Drag.obj.lastMouseX	= ex;
		Drag.obj.lastMouseY	= ey;

		Drag.obj.root.onDrag(nx, ny);

		if (document.all)
			{jseyesmousemoveIE();}
		else
			{jseyesmousemoveNS();}

		return false;
		},

	end : function()
		{
		timer = setTimeout("hideShades();",2000);

		dragging = false;
				
		Drag.obj.style.left = 184 + 'px';
		Drag.obj.style.top  = 128 + 'px';

		document.onmousemove = null;
		document.onmouseup   = null;

		if (document.all)
			{document.onmousemove = jseyesmousemoveIE;}
		else
			{document.onmousemove = jseyesmousemoveNS;}
		
		Drag.obj.root.onDragEnd(
			parseInt(Drag.obj.root.style[Drag.obj.hmode ? "left" : "right"]), 
			parseInt(Drag.obj.root.style[Drag.obj.vmode ? "top" : "bottom"]));
		
		Drag.obj = null;
		},

	fixE : function(e)
		{
		if(typeof e == 'undefined') e = window.event;
		if(typeof e.layerX == 'undefined') e.layerX = e.offsetX;
		if(typeof e.layerY == 'undefined') e.layerY = e.offsetY;
		return e;
		}
	}

function changeFreddy(freddy)
	{
	var prev;
	for (var f=1; f<=5; f++)
		{
		if (getObj('freddyImg' + f).style.display == 'block')
			{prev = f;}
		getObj('freddyImg' + f).style.display = (f == freddy) ? 'block' : 'none';
		getObj('freddyTxt' + f).style.display = (f == freddy) ? 'block' : 'none';
		}

	if (prev == freddy)
		{
		if ((document.cookie.indexOf('icq=') > -1) && (confirm('Would you like to set this as your default?')))
			{window.location = 'icq-welcome.pl?page=' + freddy;}
		}
	}