
////////////////////////////////////////////////////////////////////////////////////
// CONFIGURATION
////////////////////////////////////////////////////////////////////////////////////

// Main background color (the large area)
	if (typeof fcolor == 'undefined') { var fcolor = "#99FF99";}

// Border color and color of caption
	if (typeof backcolor == 'undefined') { var backcolor = "#FF3333";}


// Text color
	if (typeof textcolor == 'undefined') { var textcolor = "#000000";}
	
// Color of the caption text
	if (typeof capcolor == 'undefined') { var capcolor = "#FFFFFF";}

// Color of "Close" when using Sticky
	if (typeof closecolor == 'undefined') { var closecolor = "#9999FF";}


// Width of the popups in pixels
	if (typeof width == 'undefined') { var width = "330";}

// How thick the border should be in pixels
// 1-3 pixels is typical
	if (typeof border == 'undefined') { var border = "3";}


// How many pixels to the right/left of the cursor to show the popup
	if (typeof offsetx == 'undefined') { var offsetx = 10;}

// How many pixels to the below the cursor to show the popup
	if (typeof offsety == 'undefined') { var offsety = 20;}

////////////////////////////////////////////////////////////////////////////////////
// END CONFIGURATION
////////////////////////////////////////////////////////////////////////////////////

ns4 = (document.layers)? true : false;
ie4 = (document.all)? true : false;

// Microsoft Stupidity Check.
if (ie4) {
	if (navigator.userAgent.indexOf('MSIE 5')>0) {
		ie5 = true;
	} else {
		ie5 = false; }
} else {
	ie5 = false;
}

var x = 0;
var y = 0;
var snow = 0;
var sw = 0;
var cnt = 0;
var dir = 1;
var tr = 1;
var hMob = 1;
var curWidth = width;

if ( (ns4) || (ie4) ) {
	if (ns4) over = document.popupLayer
	if (ie4) over = popupLayer.style
	document.onmousemove = mouseMove
	if (ns4) document.captureEvents(Event.MOUSEMOVE)
}

// Work out how wide to make popup
function widthTag(text)
{
        if ( text.length < 47 )
        {
            return '';
        }
        else
        {        
            return "WIDTH=" + width;
        }
}

// Public functions to be used on pages.

// Clears popups if appropriate
function clearPopup() {
	if ( cnt >= 1 ) { sw = 0 };
	if ( (ns4) || (ie4) ) {
		if ( sw == 0 ) {
			snow = 0;
			hideObject(over);
		} else {
			cnt++;
		}
	}
        hMob = 1;
}

// Simple popup
function basicPopup(d,text)
{        
	txt = "<TABLE "+widthTag(text)+" BORDER=0 CELLPADDING="+border+" CELLSPACING=0 BGCOLOR=\""+backcolor+"\"><TR><TD><TABLE WIDTH=100% BORDER=0 CELLPADDING=2 CELLSPACING=0 BGCOLOR=\""+fcolor+"\"><TR><TD><FONT FACE=\"Arial,Helvetica\" COLOR=\""+textcolor+"\" SIZE=\"2\">"+text+"</FONT></TD></TR></TABLE></TD></TR></TABLE>";
	layerWrite(txt);

        if ( d == 'fixed' )
        {
               	dir = 'left';

                hMob = 0;
        }
        else
        {
                dir = d;
        }
	
        disp();
}

// Caption popup
function dynamicPopup(d,text, title) {
	txt = "<TABLE "+widthTag(text)+" BORDER=0 CELLPADDING="+border+" CELLSPACING=0 BGCOLOR=\""+backcolor+"\"><TR><TD><TABLE WIDTH=100% BORDER=0 CELLPADDING=2 CELLSPACING=0><TR><TD><SPAN ID=\"PTT\"><B><FONT SIZE=2 FACE=\"Arial\" COLOR=\""+capcolor+"\">"+title+"</FONT></B></SPAN></TD></TR></TABLE><TABLE WIDTH=100% BORDER=0 CELLPADDING=2 CELLSPACING=0 BGCOLOR=\""+fcolor+"\"><TR><TD><SPAN ID=\"PST\"><FONT SIZE=2 FACE=\"Arial\" COLOR=\""+textcolor+"\">"+text+"</FONT><SPAN></TD></TR></TABLE></TD></TR></TABLE>";
	layerWrite(txt);
	dir = d;
        hMob = 0;
	disp();
}

// Sticky
function staticPopup(d,text, title) {
	sw = 1;
	cnt = 0;
	txt = "<TABLE "+widthTag(text)+" BORDER=0 CELLPADDING="+border+" CELLSPACING=0 BGCOLOR=\""+backcolor+"\"><TR><TD><TABLE WIDTH=100% BORDER=0 CELLPADDING=0 CELLSPACING=0><TR><TD><SPAN ID=\"PTT\"><B><FONT COLOR=\""+capcolor+"\">"+title+"</FONT></B></SPAN></TD><TD ALIGN=RIGHT><A HREF=\"/\" onMouseOver=\"cClick();\" ID=\"PCL\"><FONT COLOR=\""+closecolor+"\">Close</FONT></A></TD></TR></TABLE><TABLE WIDTH=100% BORDER=0 CELLPADDING=2 CELLSPACING=0 BGCOLOR=\""+fcolor+"\"><TR><TD><SPAN ID=\"PST\"><FONT COLOR=\""+textcolor+"\">"+text+"</FONT><SPAN></TD></TR></TABLE></TD></TR></TABLE>";
	layerWrite(txt);
	dir = d;
	disp();
	snow = 0;
}


// Non public functions. These are called by other functions etc.

// Position and show popup
function disp()
{
    if ( (ns4 || ie4) && snow==0) 
    {
        switch ( dir )
        {
            case 'center':
                moveTo(over,x+offsetx-(width/2),y+offsety);
            break;
            case 'right':
                moveTo(over,x+offsetx,y+offsety);
            break;
            case 'left':
                moveTo(over,x-offsetx-width,y+offsety);
            break;
        }
        showObject(over);
        snow = 1;
    }

    curWidth = width;
    if ( document.all )
    {
        curWidth = popupLayer.clientWidth;
    }   
}

// Respond to mousemove event
function mouseMove(e)
{
    if (ns4) {x=e.pageX; y=e.pageY;}
    if (ie4) {x=event.x; y=event.y;}
    if (ie5) {x=event.x+document.body.scrollLeft; y=event.y+document.body.scrollTop;}
    if (snow) {
        switch ( dir )
        {
            case 'center':
                moveTo(over,x+offsetx-(width/2),y+offsety);
            break;
            case 'right':
                moveTo(over,x+offsetx,y+offsety);
            break;
            case 'left':
                moveTo(over,x-offsetx-curWidth,y+offsety);
            break;
        }
    }
}

// Move a layer
function moveTo(obj,xL,yL) 
{
    if ( hMob )
    {
        if ( ns4 && parseInt(xL) + parseInt(width) > window.pageXOffset + window.innerWidth )
            xL = window.pageXOffset + window.innerWidth - width;
        if ( ( ie4 || ie5 ) && parseInt(xL) + parseInt(curWidth) > document.body.scrollLeft + document.body.clientWidth )
            xL = document.body.scrollLeft + document.body.clientWidth - curWidth;

        if ( ns4 && parseInt(xL) < window.pageXOffset )
            xL = window.pageXOffset;
        if ( (ie4 || ie5) && parseInt(xL) < document.body.scrollLeft )
            xL = document.body.scrollLeft;
    }
    else
    {
        
        if ( document.layers )
            xL = window.pageXOffset + 20;
        if ( document.all )
            xL = document.body.scrollLeft + 20;
    }
    
    if ( document.all && !hMob )
    {
        var popupHeight = document.all["popupLayer"].clientHeight;
        
        if ( parseInt(yL) + parseInt(popupHeight) > document.body.scrollTop + document.body.clientHeight )
            yL = document.body.scrollTop + document.body.clientHeight - popupHeight;
    }

    obj.left = xL;
    obj.top = yL;
}

// The Close onMouseOver function for Sticky
function cClick() {
	hideObject(over);
	sw=0;
}

// Writes to a layer
function layerWrite(txt) {
        if (ns4) {
                var lyr = document.popupLayer.document
                lyr.write(txt)
                lyr.close()
        }
        else if (ie4) document.all["popupLayer"].innerHTML = txt
}

// Make an object visible
function showObject(obj) {
        if (ns4) obj.visibility = "show"
        else if (ie4) obj.visibility = "visible"
}

// Hides an object
function hideObject(obj) {
        if (ns4) obj.visibility = "hide"
        else if (ie4) obj.visibility = "hidden"
}

