var Rate    = 100;  // milliseconds between random fluctuation check
var Jiggle  = 15;  // the percent chance of any given blip will jiggle when checked
var MaxMove = 100;  // number of pixels the blip can be pushed


var GG_Dots = new Array();


function makeDots() {
	for (var xx=0; xx<makeDots.arguments.length; xx++) {
		var Data   = makeDots.arguments[xx].split("|");
		var NewDot = "";
		if (document.layers) {
			if (isNaN(Data[0])) Data[0] = parseInt(Math.random() * window.innerWidth);
			if (isNaN(Data[1])) Data[1] = parseInt(Math.random() * window.innerHeight);
			document.write('<layer id="Dot'+Data[0]+Data[1]+'" visibility="show" ');
			document.write('left="'+Data[0]+'" top="'+Data[1]+'" onmouseover="this.visibility = \'hide\';">');
			document.write('<img src="'+Data[2]+'" width="'+Data[3]+'" height="'+Data[4]+'" vspace="2" hspace="2"></layer>');
			NewDot        = document.layers["Dot"+Data[0]+Data[1]];
			NewDot.width  = NewDot.clip.width;
			NewDot.height = NewDot.clip.height;
			NewDot.max    = MaxMove;
			NewDot.move   = dotMove;
			GG_Dots[xx]   = NewDot;
		} else if (document.all) {
			if (isNaN(Data[0])) Data[0] = parseInt(Math.random() * document.body.clientWidth);
			if (isNaN(Data[1])) Data[1] = parseInt(Math.random() * document.body.clientHeight);
			document.write('<div id="Dot'+Data[0]+Data[1]+'" style="position: absolute; visibility: visible; ');
			document.write('left: '+Data[0]+'; top: '+Data[1]+'" onmouseover="this.style.visibility = \'hidden\';">');
			document.write('<img src="'+Data[2]+'" width="'+Data[3]+'" height="'+Data[4]+'" vspace="2" hspace="2"></div>');
			NewDot      = document.all["Dot"+Data[0]+Data[1]].style;
			NewDot.max  = MaxMove;
			NewDot.move = dotMove;
			GG_Dots[xx] = NewDot;
		} else if (document.getElementById) {
			if (isNaN(Data[0])) Data[0] = parseInt(Math.random() * window.innerWidth);
			if (isNaN(Data[1])) Data[1] = parseInt(Math.random() * window.innerHeight);
			document.write('<div id="Dot'+Data[0]+Data[1]+'" style="position: absolute; visibility: visible; ');
			document.write('left: '+Data[0]+'; top: '+Data[1]+'" onmouseover="this.style.visibility = \'hidden\';">');
			document.write('<img src="'+Data[2]+'" width="'+Data[3]+'" height="'+Data[4]+'" vspace="2" hspace="2"></div>');
			NewDot      = document.getElementById("Dot"+Data[0]+Data[1]).style;
			NewDot.max  = MaxMove;
			NewDot.move = dotMove;
			GG_Dots[xx] = NewDot;
		} else return false;
	}
	setInterval('dotJiggler()', Rate);
}





function dotPush(e) {
	MouseX = (e) ? e.pageX : event.clientX + document.body.scrollLeft;
	MouseY = (e) ? e.pageY : event.clientY + document.body.scrollTop;
	for (var ii=0; ii<GG_Dots.length; ii++) {
		var NewX = parseInt(GG_Dots[ii].left) + (GG_Dots[ii].width  /2);
		var NewY = parseInt(GG_Dots[ii].top)  + (GG_Dots[ii].height /2);
		var Dist = Math.round(Math.sqrt(Math.pow((NewX - MouseX),2) + Math.pow((NewY - MouseY),2)));
		var ModX = 0;
		var ModY = 0;
		if (Dist < GG_Dots[ii].max) {
			ModX = ((GG_Dots[ii].max - Dist) * (NewX - MouseX)) / Dist;
			ModY = ((GG_Dots[ii].max - Dist) * (NewY - MouseY)) / Dist;
			GG_Dots[ii].max = Dist;
		}
		GG_Dots[ii].move(NewX + ModX, NewY + ModY);
	}
}





function dotJiggler() {
	for (var ii=0; ii<GG_Dots.length; ii++) {
		var Check = Math.round(Math.random() * (800 / Jiggle));
		if (Check < 8) {
			var NewX = parseInt(GG_Dots[ii].left) + (GG_Dots[ii].width  /2);
			var NewY = parseInt(GG_Dots[ii].top)  + (GG_Dots[ii].height /2);
			if (Check == 0) {
				NewX += 1;
			} else if (Check == 1) {
				NewX += 1;
				NewY += 1;
			} else if (Check == 2) {
				NewY += 1;
			} else if (Check == 3) {
				NewY += 1;
				NewX -= 1;
			} else if (Check == 4) {
				NewX -= 1;
			} else if (Check == 5) {
				NewX -= 1;
				NewY -= 1;
			} else if (Check == 6) {
				NewY -= 1;
			} else if (Check == 7) {
				NewY -= 1;
				NewX += 1;
			}
			GG_Dots[ii].move(NewX, NewY);
		}
	}
}



//~~~~~~~==>>}) break out by browser ability ({<<==~~~~~~~~\\


function dotMove(NewX, NewY) {
	this.left = Math.round(NewX - (this.width  /2));
	this.top  = Math.round(NewY - (this.height /2));
}



if (document.layers) {
	document.captureEvents(Event.MOUSEMOVE);
}
document.onmousemove = dotPush;

