function cursorLoadBar ()
{
	this.loader = null;
	this.isMSIE = (navigator.appName.toLowerCase().indexOf("microsoft") >= 0) ? true : false;
	this.offsetX = -5;
	this.offsetY = -5;
	this.mouseX = 0;
	this.mouseY = 0;
	this.animator = null;
	this.loaderText = "";
	this.aniframe = 0;
	
	this.animate = function ()
	{
		cLoadBar.aniframe++;
		if (cLoadBar.aniframe == 1)
		{
			cLoadBar.loader.style.color = "#ff0000";
			cLoadBar.loader.innerHTML = cLoadBar.loaderText + ' Please wait';
		}
		else if (cLoadBar.aniframe == 2)
		{
			cLoadBar.loader.style.color = "#dd0000";
			cLoadBar.loader.innerHTML = cLoadBar.loaderText + ' Please wait.';
		}
		else if (cLoadBar.aniframe == 3)
		{
			cLoadBar.loader.style.color = "#bb0000";
			cLoadBar.loader.innerHTML = cLoadBar.loaderText + ' Please wait..';
		}
		else if (cLoadBar.aniframe == 4)
		{
			cLoadBar.loader.style.color = "#990000";
			cLoadBar.loader.innerHTML = cLoadBar.loaderText + ' Please wait...';
			cLoadBar.aniframe = 0;
		}
	}
	
	this.start = function (loadbar, text)
	{
		if (this.loader)
		{
			this.release();
		}
		
		this.loaderText = text;
		this.loader = document.getElementById(loadbar);
		
		if (this.loader)
		{		
			this.loader.style.display = "";
			document.body.style.cursor = "wait";
			
			this.loader.style.left = this.mouseX + this.offsetX;
			this.loader.style.top = this.mouseY + this.offsetY;
			this.loader.style.zIndex = 999;
			
			this.aniframe = 0;
			this.animate();
			
			this.animator = window.setInterval("cLoadBar.animate();", 250);
		}
	}
	
	this.release = function ()
	{
		this.loader.style.display = "none";
		document.body.style.cursor = "auto";
		this.loader = null;
		
		window.clearInterval(this.animator);
	}
	
	this.getMousePos = function(ev)
	{
		var pos = new Array();

		pos['x'] = 0;
		pos['y'] = 0;
		
		if (ev.pageX || ev.pageY)
		{
			pos['x'] = ev.pageX;
			pos['y'] = ev.pageY;
		}
		else if (ev.clientX || ev.clientY)
		{
			pos['x'] = ev.clientX + document.body.scrollLeft;
			pos['y'] = ev.clientY + document.body.scrollTop;
		}
		
		return pos;
	}
	
	this.mouseMove = function (ev)
	{
		if (!ev) var ev = window.event;	
		var pos = cLoadBar.getMousePos(ev);
			
		// drag loader if available
		if (cLoadBar && cLoadBar.loader)
		{
			cLoadBar.loader.style.left = pos.x + cLoadBar.offsetX;
			cLoadBar.loader.style.top = pos.y + cLoadBar.offsetY;
		}
		
		cLoadBar.mouseX = pos.x;
		cLoadBar.mouseY = pos.y;
	}
	
	this.init = function ()
	{
		// if document body element has loaded, init
		if (document.body)
		{
			// bind mouse move event
			document.body.onmousemove = cLoadBar.mouseMove;
		}
		// else, set a delay to try again later in 0.25 sec
		else
		{
			setTimeout("cLoadBar.init()", 250);
		}
	}
	
	// init object with delay
	this.init();
}

var cLoadBar = new cursorLoadBar();
