//Copyright 2002 - DPA Software
//All Rights Reserved
//http://www.frontlook.com/


var flce_ns4up, flce_ie4up, flce_ns6up;
var flce_AnimateTimerId;

// only if browser is not N3, scan for the other browsers. otherwise N3 shows error
if ( navigator.appName == "Netscape" && parseInt(navigator.appVersion,10) == 3 )
{
	flce_ns4up = flce_ie4up = flce_ns6up = 0;
}
else
{
	flce_ie4up = (document.all) ? 1 : 0;
	flce_ns6up = (document.getElementById && !flce_ie4up)? 1 : 0;
	if ( ! flce_ie4up && ! flce_ns6up ) flce_ns4up = 1;  // browser sniffer
}

var flce_Direction = 'Movement';

var flce_2pi = (Math.PI*2);

var flce_pi_4 = (Math.PI/4);

var flce_e = 0.392699;
var flce_se = flce_e + flce_pi_4;
var flce_s = flce_se + flce_pi_4;
var flce_sw = flce_s + flce_pi_4;
var flce_w = flce_sw + flce_pi_4;
var flce_nw = flce_w + flce_pi_4;
var flce_n = flce_nw + flce_pi_4;
var flce_ne = flce_n + flce_pi_4;

// define number of divs
var flce_nDots = 2;

// define starting position of image
var flce_Xpos = 0;
var flce_Ypos = 0;

var flce_OldXpos = 0, flce_OldYpos = 0;

// define speed of moving image
var flce_DELTAT = 0.1;

// define how far the image drops from the cursor
var flce_SEGLEN = 10;

// define how big is the loop the image makes around the cursor
var flce_SPRINGK = 10;

// the greater the mass the slower the speed of image
var flce_MASS = 1;

// the greater the gravity the smaller is the loop
var flce_GRAVITY = 50;

// the greater the resistance the slower the speed of image
var flce_RESISTANCE = 10;

var flce_STOPVEL = 0.1 //Terminal velocity 0.1

var flce_STOPACC = 0.1 // Stop Acceleration 0.1;
var flce_DOTSIZE = 11;

var flce_Timeout = 0;

var flce_XOffset = 0;
var flce_YOffset = 0;

// define the size of the bounces of the image
var flce_BOUNCE = 0.75;
var flce_isNetscape = navigator.appName=="Netscape";
var flce_followmouse = true;
var flce_dots = new Array();

var flce_C_N = 2, flce_C_NE = 3, flce_C_E = 4, flce_C_SE = 5, flce_C_S = 6, flce_C_SW = 7, flce_C_W = 8, flce_C_NW = 9  

var flce_ImageArray = new Array();

//Copyright 2002- DPA Software
//All Rights Reserved
//http://www.frontlook.com/

function StopEffect ()
{
	var i, j, img;
	
	clearInterval ( flce_AnimateTimerId );
	for ( i = 0 ; i < flce_nDots ; i++)
	{
		img = "dot_ce_" + i
		if ( flce_ie4up )
		{
			document.all[img].style.visibility = "hidden";
			document.images["image_ce_"+i+"_"+flce_dots[i].VisibleImage].style.visibility = "hidden";
		}
		else if ( flce_ns4up )
		{
			document.layers[img].document.open ();
			document.layers[img].document.write ( "" );
			document.layers[img].document.close ();
			document.layers[img].visibility = "hidden";
		}
		else if ( flce_ns6up )
		{
			var elm = document.getElementById(img);
			elm.style.visibility = "hidden";
			document.images["image_ce_"+i+"_"+flce_dots[i].VisibleImage].style.visibility = "hidden";
		}
	}
}

//Copyright 2002 - DPA Software
//All Rights Reserved
//http://www.frontlook.com/

function init()
{
	var i = 0;
	for (i = 0; i < flce_nDots; i++)
	{
		flce_dots[i] = new dot(i);
	}
	for (i = 0; i < flce_nDots; i++)
	{
		flce_dots[i].obj.left = flce_dots[i].X;
		flce_dots[i].obj.top = flce_dots[i].Y;
		if (flce_ie4up)
		{
			flce_dots[i].obj.pixelWidth = flce_dots[i].objImg.width;
		}
		else if (flce_ns4up)
		{
			flce_dots[i].obj.clip.width = flce_dots[i].objImg.width;
		}
	}
	if (flce_ie4up)
	{
		setTimeout("startanimate()", 3000);
	}
	else if(flce_ns4up || flce_ns6up)
	{
		startanimate();
	}
}

//Copyright 2002 - DPA Software
//All Rights Reserved
//http://www.frontlook.com/

function dot(i)
{
	this.X = flce_Xpos;
	this.Y = flce_Ypos;
	this.dx = 0;
	this.dy = 0;
	this.index = i;
	this.VisibleImage = 0;
	if (flce_ie4up)
	{
		this.obj = eval("dot_ce_" + i + ".style") ;
		this.objImg = document.images["image_ce_" + i + "_0"];
	}
	else if(flce_ns4up)
	{
		this.obj = document.layers["dot_ce_"+i];
		this.objImg = document.layers["dot_ce_"+i].clip;
	}
	else if	(flce_ns6up)
	{
		this.obj = eval(document.getElementById("dot_ce_" + i ).style);
		this.objImg = document.images["image_ce_" + i + "_0"];
	}
}

//Copyright 2002 - DPA Software
//All Rights Reserved
//http://www.frontlook.com/

function startanimate()
{
	flce_AnimateTimerId = setInterval("animate()", 20);
}

//Copyright 2002 - DPA Software
//All Rights Reserved
//http://www.frontlook.com/

function MoveHandler(e)
{
	if (flce_ns4up)
	{
		flce_Xpos = e.pageX + (flce_XOffset);
		flce_Ypos = e.pageY + (flce_YOffset);
	}
	else if(flce_ns6up)
	{
		flce_Xpos = e.pageX + (flce_XOffset);
		flce_Ypos = e.pageY + (flce_YOffset);
	}
	return true;
}

//Copyright 2002 - DPA Software
//All Rights Reserved
//http://www.frontlook.com/

function MoveHandlerIE()
{
	flce_Xpos = window.event.x + document.body.scrollLeft + (flce_XOffset);
	flce_Ypos = window.event.y + document.body.scrollTop + (flce_YOffset);
}

if (flce_ie4up)
{
	document.onmousemove = MoveHandlerIE;
}
else if (flce_ns4up)
{
	document.captureEvents(Event.MOUSEMOVE);
	document.onMouseMove = MoveHandler;
}
else if (flce_ns6up)
{
	document.captureEvents(Event.MOUSEMOVE);
	document.onmousemove = MoveHandler;
}

//Copyright 2002 - DPA Software
//All Rights Reserved
//http://www.frontlook.com/

function vec(X, Y)
{
	this.X = X;
	this.Y = Y;
}

//Copyright 2002 - DPA Software
//All Rights Reserved
//http://www.frontlook.com/

function springForce(i, j, spring)
{	
	var dx = (flce_dots[i].X - flce_dots[j].X);
	var dy = (flce_dots[i].Y - flce_dots[j].Y);
	var len = Math.sqrt(dx*dx + dy*dy);
	if (len > flce_SEGLEN)
	{
		var springF = flce_SPRINGK * (len - flce_SEGLEN);
		spring.X += (dx / len) * springF;
		spring.Y += (dy / len) * springF;
	}
}

//Copyright 2002 - DPA Software
//All Rights Reserved
//http://www.frontlook.com/

function AssignDirectionalImage(xnew,ynew,xold,yold)
{
	var angle = Math.atan(((ynew - yold) / (xnew - xold)));
	var NewVisibleImage = 0;
	if ( angle < 0 ) 
	{
		if ( (xnew-xold) < 0 )
			angle = Math.PI + angle;
		else
			angle = flce_2pi  + angle;
	}
	else
	{
		if ( (ynew-yold) < 0 )
			angle += Math.PI;
	}

	if (angle >= flce_e && angle <= flce_se )
	{
		NewVisibleImage = flce_C_SE;
	}
	else if (angle >= flce_se && angle <= flce_s)
	{
		NewVisibleImage = flce_C_S;
	}
	else if (angle >= flce_s && angle <= flce_sw)
	{
		NewVisibleImage = flce_C_SW;
	}
	else if (angle >= flce_sw && angle <= flce_w)
	{
		NewVisibleImage = flce_C_W;
	}
	else if (angle >= flce_w && angle <= flce_nw)
	{
		NewVisibleImage = flce_C_NW;
	}
	else if (angle >= flce_nw && angle <= flce_n)
	{
		NewVisibleImage = flce_C_N;
	}
	else if (angle >= flce_n && angle <= flce_ne)
	{
		NewVisibleImage = flce_C_NE;
	}
	else 
	{
		NewVisibleImage = flce_C_E;
	}
	return NewVisibleImage;
}

//Copyright 2002 - DPA Software
//All Rights Reserved
//http://www.frontlook.com/

function animate()
{
	var start = 1;

	if (flce_followmouse)
	{
		flce_dots[0].X = flce_Xpos;
		flce_dots[0].Y = flce_Ypos;
		start = 1;
	}
	for (i = start ; i < 2 ; i++ )
	{
		var NewVisibleImage = 0, SavedObj;

		flce_OldXpos = flce_dots[i].X
		flce_OldYpos = flce_dots[i].Y
		
		var spring = new vec(0, 0);

		if (i > 0)
		{
			springForce(i-1, i, spring);
		}
		if (i < (flce_nDots - 1))
		{
			springForce(i+1, i, spring);
		}
		var resist = new vec(-flce_dots[i].dx * flce_RESISTANCE,-flce_dots[i].dy * flce_RESISTANCE);
		var accel = new vec((spring.X + resist.X)/ flce_MASS,(spring.Y + resist.Y)/ flce_MASS + flce_GRAVITY);
		flce_dots[i].dx += (flce_DELTAT * accel.X);
		flce_dots[i].dy += (flce_DELTAT * accel.Y);
		if (Math.abs(flce_dots[i].dx) < flce_STOPVEL && Math.abs(flce_dots[i].dy) < flce_STOPVEL &&
			Math.abs(accel.X) < flce_STOPACC &&
			Math.abs(accel.Y) < flce_STOPACC)
		{
			flce_dots[i].dx = 0;
			flce_dots[i].dy = 0;
		}
	 	flce_dots[i].X += flce_dots[i].dx;
		flce_dots[i].Y += flce_dots[i].dy;
		var height, width;

		if (flce_isNetscape)
		{
			height = self.innerHeight + self.pageYOffset;
			width = self.innerWidth + self.pageXOffset;
		}
		else
		{
			height = document.body.clientHeight + document.body.scrollTop;
			width = document.body.clientWidth + document.body.scrollLeft;
		}
		if (flce_dots[i].Y >=  height - flce_dots[i].objImg.height - 1)
		{
			if (flce_dots[i].dy > 0)
			{
				flce_dots[i].dy = flce_BOUNCE * -flce_dots[i].dy;
			}
			flce_dots[i].Y = height - flce_dots[i].objImg.height - 1;
		}
		else if (flce_dots[i].Y < 0)
		{
			if (flce_dots[i].dy < 0)
			{
				flce_dots[i].dy = flce_BOUNCE * -flce_dots[i].dy;
			}
			flce_dots[i].Y = 0;
		} 
		if (flce_dots[i].X >= width - flce_dots[i].objImg.width)
		{
			if (flce_dots[i].dx > 0)
			{
				flce_dots[i].dx = flce_BOUNCE * -flce_dots[i].dx;
			}
			flce_dots[i].X = width - flce_dots[i].objImg.width - 1;
		}
		else if (flce_dots[i].X < 0)
		{
			if (flce_dots[i].dx < 0)
			{
				flce_dots[i].dx = flce_BOUNCE * -flce_dots[i].dx;
			}
			flce_dots[i].X = 0;
		}
		if (flce_Direction == "Movement")
		{
			if (Math.abs(flce_dots[i].X - flce_OldXpos ) > 5 || Math.abs(flce_dots[i].Y - flce_OldYpos) > 5)
			{
				 NewVisibleImage = AssignDirectionalImage(flce_dots[i].X,flce_dots[i].Y,flce_OldXpos,flce_OldYpos)
			}
			else
			{
				NewVisibleImage = 1;
			}
		}
		else if (flce_Direction == "Cursor")
		{
			flce_OldXpos = flce_dots[i].X + (flce_dots[i].objImg.width/2);
			flce_OldYpos = flce_dots[i].Y + (flce_dots[i].objImg.height/2);
			NewVisibleImage = AssignDirectionalImage(flce_Xpos-(flce_XOffset), flce_Ypos-(flce_YOffset), flce_OldXpos, flce_OldYpos);
		}
		flce_dots[i].obj.left = flce_dots[i].X ;
		flce_dots[i].obj.top =  flce_dots[i].Y ;

		if ( flce_dots[i].VisibleImage != NewVisibleImage )
		{
			if ( flce_ie4up || flce_ns6up )
			{
				img1 = document.images["image_ce_" + i + "_" + flce_dots[i].VisibleImage];
				img2 = document.images["image_ce_" + i + "_" + NewVisibleImage];
				img2.style.visibility = "visible";
				img1.style.visibility = "hidden";
			}
			else if ( flce_ns4up )
			{
				img1 = document.layers["dot_ce_" + i].document.layers["imgdot_ce_" + i + "_" + flce_dots[i].VisibleImage];
				img2 = document.layers["dot_ce_" + i].document.layers["imgdot_ce_" + i + "_" + NewVisibleImage];
				img1.visibility = "hidden";
				img2.visibility = "show";
				flce_dots[i].objImg.width = img2.document.images[0].width;
				flce_dots[i].objImg.height = img2.document.images[0].height;
			}
			flce_dots[i].VisibleImage = NewVisibleImage;
		}
	}
	flce_OldXpos = flce_Xpos
	flce_OldYpos = flce_Ypos
}

//Copyright 2002 - DPA Software
//All Rights Reserved
//http://www.frontlook.com/

function StartCE ( Direction, Acceleration, Elasticity, MASS, Timeout, 
	StationaryImage, NImage, NEImage, EImage, SEImage, SImage, SWImage, WImage, NWImage,
	x_offset, y_offset )
{
	flce_Direction = Direction;
	flce_DELTAT = Acceleration/1000;
	flce_SPRINGK = Elasticity;
	flce_MASS = MASS;
	Timeout = Timeout * 60 * 1000;
	flce_ImageArray[0] = StationaryImage;
	flce_ImageArray[1] = StationaryImage;
	flce_ImageArray[flce_C_N] = NImage;
	flce_ImageArray[flce_C_NE] = NEImage;
	flce_ImageArray[flce_C_E] = EImage;
	flce_ImageArray[flce_C_SE] = SEImage;
	flce_ImageArray[flce_C_S] = SImage;
	flce_ImageArray[flce_C_SW] = SWImage;
	flce_ImageArray[flce_C_W] = WImage;
	flce_ImageArray[flce_C_NW] = NWImage;

	flce_XOffset = x_offset;
	flce_YOffset = y_offset;

	for ( i = 0 ; i < flce_nDots ; i++)
	{
		if ( flce_ie4up || flce_ns6up )
		{
			document.write ( "<div id=\"dot_ce_"+ i +"\" style=\"POSITION: absolute; Z-INDEX: "+ i +"; VISIBILITY: hidden; TOP: 0px; LEFT: 0px;\">" );
			for ( j= flce_ImageArray.length-1 ; j >= 0 ; j-- )
			{
				document.write ( "<img name=\"image_ce_" + i + "_" + j +"\" src=\"" + flce_ImageArray[j] + "\" border=\"0\" style=\"position:absolute;left:0;top:0;visibility:hidden;\">" );
			}
			document.write ( "</div>");
		}
		else if ( flce_ns4up )
		{
			document.write ( "<layer name=\"dot_ce_"+ i +"\" left=\"0\" top=\"0\" visibility=\"hidden\">" );
			for ( j= flce_ImageArray.length-1 ; j >= 0 ; j-- )
			{
				document.write ( "<layer name=\"imgdot_ce_" + i + "_" + j + "\" left=\"0\" top=\"0\" visibility=\"hidden\">" );
				document.write ( "<img src=\"" + flce_ImageArray[j] + "\" name=\"image_ce_" + i + "_" + j +"\" border=\"0\">" );
				document.write ( "</layer>" );
			}
			document.write ( "</layer>" );
		}
	}

	if (flce_ie4up)
	{
		document.all["dot_ce_1"].style.visibility = "visible";
	}
	else if (flce_ns4up)
	{
		document.layers["dot_ce_1"].visibility = "show";
	}
	else if(flce_ns6up)
	{
		var elm = document.getElementById("dot_ce_1");
		elm.style.visibility = "visible";
	}

	if ( flce_ns4up || flce_ie4up || flce_ns6up )
	{
		init();

		if (Timeout != 0)
		{
			setTimeout ( "StopEffect()", Timeout );
		}
	}
}
