/////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
// ALTTXT V1.3
// BY: BRIAN GOSSELIN OF SCRIPTASYLUM.COM
// V1.2: ADDED FADING EFFECT FOR IE4+ AND NS6+ ONLY AND OPTIMIZED THE CODE A BIT. 
// v1.3: ADDED mousefollow MODE. SEE DETAILS BELOW.
//
// INSTRUCTIONS:
//
// 1: PUT THE STYLE BELOW IN THE STYLE SHEET AREA (IF THERE ISN'T A STYLE TAG, ADD A SET), AND EDIT
//    THE STYLE ATTRIBUTES TO SUIT.
//
//    .navtext { width:150px; font-size:12pt; border-width:2px; border-style:outset; border-color:darkgray; layer-background-color:black; background-color:black; color:lightgrey;}
//
// 2: PUT THIS DIV IN THE END OF THE BODY AREA:
//
//    <div id="navtxt" class="navtext" style="position:absolute; top:-100px; left:0px; visibility:hidden"></div>
//
// 3: THEN, SET THE 4 FLAGS BELOW (mousefollow, dofade, center, centertext) TO true OR false AS DESIRED.
//
// 4: LASTLY ADD THE MOUSEOVER/MOUSEOUT EVENT HANDLERS TO EACH LINK THAT YOU WANT THIS EFFECT FOR:
//
//      EXAMPLE: <a href="scriptasylum.com" onmouseover="writetxt('Popup text')" onmouseout="writetxt(0)">Link text</a>
//
//      NOTE: YOU CAN CAUSE A BOX *NOT* TO DISAPPEAR ONCE THE MOUSE LEAVES THE LINK BY SIMPLY OMITTING
//            THE onmouseout="writetxt(0)" PART. THIS WILL CAUSE THE CURRENT BOX TO REMAIN VISIBLE. THIS
//            IS BEST USED WHEN mousefollow MODE IS DISABLED (SET TO false).
//
////////////////////////////////////////////////////////////////////////////////////////////////////////////////


var mousefollow=true;  // ENABLES MOUSE FOLLOW MODE WHERE THE BOX CONTINUES TO FOLLOW THE MOUSE.
                       // SETTING TO false WILL CAUSE THE BOX TO APPEAR NEAR THE MOUSE BUT WILL NOT
                       // CONTINUE TO FOLLOW THE MOUSE. 
var dofade=false;      // ENABLES FADE-IN EFFECT (FOR IE4+ AND NS6 ONLY)
var center=false;      // CENTERS THE BOX UNER THE MOUSE, OTHERWISE DISPLAYS BOX TO THE RIGHT OF THE MOUSE
var centertext=false;  // CENTERS THE TEXT INSIDE THE BOX. YOU CAN'T SIMPLY DO THIS VIA "STYLE" BECAUSE OF NS4.
                       // OTHERWISE, TEXT IS LEFT-JUSTIFIED.

////////////////////////////// NO NEED TO EDIT BEYOND THIS POINT //////////////////////////////////////

var NS4=(navigator.appName.indexOf("Netscape")>=0 && !document.getElementById)? true : false;
var IE4=(document.all && !document.getElementById)? true : false;
var IE5=(document.getElementById && document.all)? true : false;
var NS6=(document.getElementById && navigator.appName.indexOf("Netscape")>=0 )? true: false;
var W3C=(document.getElementById)? true : false;
var w_y, w_x, navtxt, boxheight, boxwidth;

var ishover=false;
var isloaded=false;
var ieop=0;
var op_id=0;
var oktomove=false;

function getwindowdims(){
	w_y=(NS4||NS6)? window.innerHeight : (IE5||IE4)? document.body.clientHeight : 0;
	w_x=(NS4||NS6)? window.innerWidth : (IE5||IE4)? document.body.clientWidth : 0;
}

function getboxwidth(){
	if(NS4)boxwidth=(navtxt.document.width)? navtxt.document.width : navtxt.clip.width;
	if(IE5||IE4)boxwidth=(navtxt.style.pixelWidth)? navtxt.style.pixelWidth : navtxt.offsetWidth;
	if(NS6)boxwidth=(navtxt.style.width)? parseInt(navtxt.style.width) : parseInt(navtxt.offsetWidth);
}

function getboxheight(){
	if(NS4)boxheight=(navtxt.document.height)? navtxt.document.height : navtxt.clip.height;
	if(IE4||IE5)boxheight=(navtxt.style.pixelHeight)? navtxt.style.pixelHeight : navtxt.offsetHeight;
	if(NS6)boxheight=parseInt(navtxt.offsetHeight);
}

function movenavtxt(x,y){
	if(NS4)navtxt.moveTo(x,y);
	if(W3C||IE4){
		navtxt.style.left=x+'px';
		navtxt.style.top=y+'px';
	}
}

function getpagescrolly(){
	if(NS4||NS6)return window.pageYOffset;
	if(IE5||IE4)return document.body.scrollTop;
}

function getpagescrollx(){
	if(NS4||NS6)return window.pageXOffset;
	if(IE5||IE4)return document.body.scrollLeft;
}

function writeindiv(text){
	if(NS4){
		navtxt.document.open();
		navtxt.document.write(text);
		navtxt.document.close();
	}
	if(W3C||IE4)navtxt.innerHTML=text;
}

function writetxt(text){ 
	if(isloaded){
	if(text!=0){
	oktomove=true;
	ishover=true;
	if(NS4)text='<div class="navtext">'+((centertext)?'<center>':'')+text+((centertext)?'</center>':'')+'</div>';
	writeindiv(text);
	getboxheight();
	if((W3C || IE4) && dofade){
	ieop=0;
	incropacity();
	}}else{

	if(NS4)navtxt.visibility="hide";
		if(IE4||W3C){
			if(dofade)clearTimeout(op_id);
			navtxt.style.visibility="hidden";
		}
		writeindiv('');
		ishover=false;
		}
	}
}

function incropacity(){
if(ieop<=100){
ieop+=7;
if(IE4 || IE5)navtxt.style.filter="alpha(opacity="+ieop+")";
if(NS6)navtxt.style.MozOpacity=ieop/100;
op_id=setTimeout('incropacity()', 50);
}}

function moveobj(evt){
if(isloaded && ishover && oktomove){
margin=(IE4||IE5)?5:25;
if(NS6)if(document.height+27-window.innerHeight<0)margin=15;
if(NS4)if(document.height-window.innerHeight<0)margin=10;
mx=(NS4||NS6)? evt.pageX : (IE5||IE4)? event.clientX : 0;
my=(NS4||NS6)? evt.pageY : (IE5||IE4)? event.clientY : 0;
if(NS4||NS6)mx-=getpagescrollx();
if(NS4)my-=getpagescrolly();
xoff=(center)? mx-boxwidth/2 : mx+5;
yoff=(my+boxheight+25-((NS6)?getpagescrolly():0)+margin>=w_y)? -15-boxheight: 30;
movenavtxt( Math.min(w_x-boxwidth-margin , Math.max(2,xoff))+getpagescrollx(), my+yoff+((!NS6)?getpagescrolly():0));
if(NS4)navtxt.visibility="show";
if(W3C||IE4)navtxt.style.visibility="visible";
if(!mousefollow)oktomove=false;
}}

if(NS4)document.captureEvents(Event.MOUSEMOVE);
document.onmousemove=moveobj;
window.onload=function(){
  navtxt=(NS4)? document.layers['navtxt'] : (IE4)? document.all['navtxt'] : (W3C)? document.getElementById('navtxt') : null;
  getboxwidth();
  getboxheight();
  getwindowdims();
  isloaded=true;
  if((W3C || IE4) && centertext)navtxt.style.textAlign="center";
  if(W3C)navtxt.style.padding='4px';
  if(IE4 || IE5 && dofade)navtxt.style.filter="alpha(opacity=0)";
  }
window.onresize=getwindowdims;



