// Variables
var currentX = 5;
var currentY = 5;
var targetX, targetY;
var screenHeight, screenWidth, scrollerHeight, scrollerWidth;
var isTracking = false;
var intervalId;
var randomMode = true;
var isInfoShown = false;
var msg = new Array("DOM", "HTML", "DHTML", "CSS", "Stylesheets", "JavaScript", "Opera browser",
					"PHP", "XHTML", "ECMAScript", "Web standards",
					"Utils", "Sidebars", "Developer resources", "The Cutting Edge",
					"Mozilla", "Cross-browser coding", "Soon...");
					

function trackMouse(e) {
    if (window.event) {
        targetX = window.event.clientX;
		targetY = window.event.clientY;
    } else if (e.pageX) {
        targetX = e.pageX;
		targetY = e.pageY;
	}
	
	if ((targetX + scrollerWidth) > screenWidth) {
		targetX = targetX - scrollerWidth;
	}
	
	if ((targetY + scrollerHeight) > screenHeight) {
		targetY = targetY - scrollerHeight;
	}
	
    if (isTracking == false) {
		intervalId = window.setInterval("track()", 10);
		isTracking = true;
	}
}

function track() {
	if ( currentX == targetX && currentY == targetY ) {
		if (randomMode) {
			targetX = getRandom(1, screenWidth - scrollerWidth);
			targetY = getRandom(1, screenHeight - scrollerHeight);
			rand = getRandom(1, msg.length) - 1;
			setInfo(msg[rand]);
 		} else {
 			window.clearInterval(intervalId);
 			isTracking = false;
 		}
	}
	
	if ( currentX > targetX ) {
		currentX--;
	} else if ( currentX < targetX )  {
		currentX++;
	}

	if ( currentY > targetY ) {
		currentY--;
	} else if ( currentY < targetY ) {
		currentY++;
	}
	
	var scr = document.getElementById("scroller");
	
	if (document.all) {
		scr.style.pixelTop  = currentY;
    	scr.style.pixelLeft = currentX;
    } else {
    	scr.style.top  = currentY + "px";
    	scr.style.left = currentX + "px";
    }
}

function init() {
	document.onmousemove=trackMouse;
	
	if (document.all) {
		screenWidth  = document.body.clientWidth;
		screenHeight = document.body.clientHeight;
	} else if (window.innerWidth) {
		screenWidth  = window.innerWidth;
     	screenHeight = window.innerHeight;
	}
	
	var scr = document.getElementById("scroller");
	scrollerHeight = scr.offsetHeight;
	scrollerWidth  = scr.offsetWidth;
}

function setInfo(message) {
	if (!isInfoShown) {
		document.getElementById("info").innerHTML = message;
		window.setTimeout("clearInfo()", 2500);
		isInfoShown = true;
	}
}

function clearInfo() {
	document.getElementById("info").innerHTML = "";
	isInfoShown = false;
}

function getRandom(min,max) {
   return (Math.round(Math.random()*(max-min)))+min;
}


