var gTipId='';
var gTipHoldTitle='';

var gPageX = 0;
var gPageY = 0;
var gScrollX = 0;
var gScrollY = 0;
var gMouseX = 0;
var gMouseY = 0;
var gWindowX = 0;
var gWindowY = 0;
var gViewX = 0;
var gViewY = 0;

var gMouseId='';
var gScrollId = '';
var gScale = 20;
var gOffsetX = 1;
var gOffsetY = 25;

var gMouseBId='';
var gMouseLId='';
var gMouseMId='';
var gMouseRId='';
var gMouseBDn=0;

var gDebug=0;

var gShow=0;
var gShowText='';
var gMouseTimer;

var IE = document.all?true:false;
document.onload = setupEvents;

function setupEvents(){
	var lis = document.getElementsByTagName('*');
	for (var i=0;i<lis.length;i++) {
		if(!lis[i].onmouseover && lis[i].title){
			lis[i].onmouseover = function()	{
				gTipId.innerHTML=this.title;
				gTipHoldTitle=this.title;
				this.title='';
				gTipId.className='gTip';
			}
		};
		if(!lis[i].onmouseout && lis[i].title){
			lis[i].onmouseout = function(){
				gTipId.className='gTipHide';
				if (gTipHoldTitle != '') this.title=gTipHoldTitle;
				gTipHoldTitle='';
			}
		};
	}

	
	document.body.style.cursor='auto';
	gTipId=document.getElementById('gTipId');
	document.getElementById('gTipId').className='gTipHide';
	if (document.getElementById('box-rotate')){gShowText=document.getElementById('box-rotate');};

	getMouseEvents();
	getScrollTop();

};

function getMouseEvents(){


	if (!IE) document.captureEvents(Event.MOUSEMOVE);
	document.onmousemove = getMouseXY;
	//window.onmousemove = getMouseXY;
	window.onscroll = document.onmousemove;
	window.onresize = getScrollTop;
//	document.onclick = gEvents;
	document.onmousedown = gEvents;
	document.onmouseup = gEvents;

//******** Testing ****************	
	//document.Xonmousemove = document.onmousemove; document.onmousemove = function(e){gEvents(e); document.Xonmousemove(e);};
	if (gDebug){
		//document.onscroll = function(e){gEvents(e); document.onmousemove(e);}
		document.onresize = function(e){gEvents(e); getScrollTop(e);}
		document.onkeypress = gEvents;
		document.onclick = gEvents;
		document.ondblclick = gEvents;
		document.onkeydown = gEvents;
		document.onkeyup = gEvents;
		document.onblur = gEvents;
		document.onfocus = gEvents;
		document.onerror = gEvents;
		document.onunload = gEvents;
		document.onchange = gEvents;
		document.onabort = gEvents;
		document.onreset = gEvents;
		document.onmouseover = gEvents;
		document.onmouseout = gEvents;
	}		
	
//**********************************



	
	gMouseId=document.getElementById('gMouse');
	gScrollId=document.getElementById('gScroll');
	
	gMouseBId=document.getElementById('gMouseButtons');
	gMouseLId=document.getElementById('gMouseLeftButton');
	gMouseMId=document.getElementById('gMouseMidButton');
	gMouseRId=document.getElementById('gMouseRightButton');
}
	


function getScrollTop(){

	var doc = document.documentElement;
	var body = document.body;
	var gMouseBX;
	var gMouseBY;

	gWindowY =  Math.max( body.scrollHeight, body.offsetHeight, doc.clientHeight, doc.scrollHeight, doc.offsetHeight );
	gWindowX =  Math.max( body.scrollWidth, body.offsetWidth, doc.clientWidth, doc.scrollWidth, doc.offsetWidth );



	var elem = (document.compatMode === "CSS1Compat") ? document.documentElement:document.body;
   
	gViewX = elem.clientWidth;
	gViewY = elem.clientHeight;

	gMouseId.style.height=((gWindowY/gScale))+'px';
	gScrollId.style.height=((gViewY/gScale))+'px';
	gMouseId.style.width=((gWindowX/gScale))+'px';
	gScrollId.style.width=((gViewX/gScale))+'px';

	gMouseId.style.top=gOffsetY+'px';
	gMouseId.style.left=gOffsetX+'px';
	gMouseId.style.backgroundPosition=((gPageX/gScale)-25)+'px '+((gPageY/gScale)-23)+'px';
	gScrollId.style.top=((gScrollY/gScale)+gOffsetY)+'px';
	gScrollId.style.left=((gScrollX/gScale)+gOffsetX)+'px';


	
	gMouseBY=(gOffsetY+((gWindowY/gScale)/2)-20);
	if (gMouseBY < 0){gMouseBY=0;};
	gMouseBId.style.top=gMouseBY+'px';
	gMouseLId.style.top=(gMouseBY+1)+'px';
	gMouseMId.style.top=(gMouseBY+1)+'px';
	gMouseRId.style.top=(gMouseBY+1)+'px';

	gMouseBX=(gOffsetX+((gWindowX/gScale)/2)-16);
	if (gMouseBX < 0){gMouseBX=0;};
	gMouseBId.style.left=gMouseBX+'px';
	gMouseLId.style.left=(gMouseBX+1)+'px';
	gMouseMId.style.left=(gMouseBX+11)+'px';
	gMouseRId.style.left=(gMouseBX+21)+'px';

	
}


function getMouseXY(e) {

	var elem = document.documentElement;
	var body = document.body;
	var gTipX, gTipY;
   
	gScrollY=((elem && elem.scrollTop) || (body && body.scrollTop || 0)) - (elem.clientTop || 0);
	gScrollX=((elem && elem.scrollLeft) || (body && body.scrollLeft || 0)) - (elem.clientLeft || 0);
	
	if (IE) {
		gMouseX = event.clientX;
		gMouseY = event.clientY;
	} else {
		gMouseX = (e.pageX - gScrollX) || 0;
		gMouseY = (e.pageY - gScrollY) || 0;
	}  				   
	

	gPageX = gMouseX + gScrollX;
	gPageY = gMouseY + gScrollY;


	gMouseId.style.backgroundPosition=((gPageX/gScale)-25)+'px '+((gPageY/gScale)-23)+'px';
	gScrollId.style.top=((gScrollY/gScale)+gOffsetY)+'px';
	gScrollId.style.left=((gScrollX/gScale)+gOffsetX)+'px';

	gTipX = gPageX;
	gTipY = gPageY+20;
	if ((gTipX + gTipId.offsetWidth+10) > (gViewX+gScrollX)){gTipX = ((gViewX+gScrollX) - gTipId.offsetWidth-5)};
	if ((gTipY + gTipId.offsetHeight+10) > (gViewY+gScrollY)){gTipY =  gPageY - gTipId.offsetHeight -5;}//((gViewY+gScrollY) - gTipId.offsetHeight - 52)};
	


	gTipId.style.left=gTipX+'px';
	gTipId.style.top=(gTipY)+'px';

	
	if (gShow && gShowText){gShowText.innerHTML='X:'+gPageX+' Y:'+gPageY;}
	

	if (gDebug){document.getElementById('test').innerHTML='gScrollX: '+gScrollX+' <br> gScrollY: '+gScrollY+' <br> mouseX: '+gMouseX+' <br> mouseY: '+gMouseY+' <br> pageX: '+gPageX+' <br> pageY: '+gPageY+' <br> WindowX: '+gWindowX+' <br> WindowY: '+gWindowY+' <br> ViewX: '+gViewX+' <br> ViewY: '+gViewY;}
	

	return true
}

function gEvents(e){
	var ee;
	var eb;
	if (e){ee=e.type; eb=e.button;}else{ee=event.type; eb=event.button;};

	if (ee == "mousedown"){
		gMouseBId.style.display='block';
		gMouseLId.style.display='block';
		gMouseMId.style.display='block';
		gMouseRId.style.display='block';
		

		//gMouseBId.style.backgroundColor='#777777';
		if (eb == 0) {gMouseLId.style.backgroundColor='#00FF00'; gMouseBDn=(gMouseBDn|1);}
		if (eb == 1) {gMouseMId.style.backgroundColor='#00FF00'; gMouseBDn=(gMouseBDn|2);}
		if (eb == 2) {gMouseRId.style.backgroundColor='#00FF00'; gMouseBDn=(gMouseBDn|4);}
		clearTimeout(gMouseTimer);
	}
	if (ee == "mouseup"){
		
		//gMouseBId.style.backgroundColor='#000000';
		if (eb == 0) {gMouseLId.style.backgroundColor='#000000'; gMouseBDn=(gMouseBDn&6);}
		if (eb == 1) {gMouseMId.style.backgroundColor='#000000'; gMouseBDn=(gMouseBDn&5);}
		if (eb == 2) {gMouseRId.style.backgroundColor='#000000'; gMouseBDn=(gMouseBDn&3);}
		if (!gMouseBDn){gMouseTimer=setTimeout('gMouseHide()',5000);}
	
	}

	if (gDebug){
		document.getElementById('test2').innerHTML=document.getElementById('test2').innerHTML+ee+'|'+eb+'<br>';
		document.getElementById('test2').scrollTop = document.getElementById('test2').scrollHeight;	
	};

return true;
}
function gMouseHide(){
		gMouseBId.style.display='none';
		gMouseLId.style.display='none';
		gMouseMId.style.display='none';
		gMouseRId.style.display='none';
}
	

// ****************** Tool Tips ****************************************************** 

function showTip(t){
	gTipId.innerHTML=t.title;
	gTipHoldTitle=t.title;
	t.title='';
	gTipId.className='gTip';

	gTipId.style.left=0+'px';
	gTipId.style.top=0+'px';
	
}
function hideTip(t){
	gTipId.className='gTipHide';
	if (gTipHoldTitle != '') t.title=gTipHoldTitle;
}
function gShower(){
	gShow=!gShow;
	if (!gShow && gShowText){gShowText.innerHTML='&copy MMXI Grampton Enterprises';}

}
if (gDebug){document.getElementById('gTipId').innerHTML='Debug';}


if (gDebug){document.write('<span id="test" style="position:fixed; top:200px; left:0px; background-color:#000000; color:yellow;">Testing...<br></span><br><span id="test2" style="position:fixed; top:200px; left:150px; background-color:#000000; color:yellow; max-height:300px; overflow:scroll;">Testing...<br></span><br>');};




