
////////////////////////////////////////////////////////////////////////////////////
// CONFIGURATION
////////////////////////////////////////////////////////////////////////////////////

// Main background color (the large area)
	if (typeof fcolor == 'undefined') { var fcolor = "#FFFFFF";}

// Border color and color of caption
	if (typeof backcolor == 'undefined') { var backcolor = "#01617c";}

// 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 = "200";}

// How thick the border should be in pixels
// 1-3 pixels is typical
	if (typeof border == 'undefined') { var border = "2";}

// 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
////////////////////////////////////////////////////////////////////////////////////

var ns4 = (navigator.appName=='Netscape' && parseInt(navigator.appVersion) == 4);
var ns6 = (document.getElementById)? true:false;
var ie4 = (document.all)? true:false;

if (ie4) var docRoot='document.body';

var ie5=false;
if (ns4)
{
	var oW = window.innerWidth;
	var oH = window.innerHeight;
	window.onresize=function(){ if(oW!=window.innerWidth||oH!=window.innerHeight)location.reload(); }
}

if (ie4)
{
	if ( (navigator.userAgent.indexOf('MSIE 5') > 0) || (navigator.userAgent.indexOf('MSIE 6') > 0) )
	{
		ie5 = true;
	}
	if (ns6)
	{
		ns6 = 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) || (ns6) )
{
	if (ns4) over = document.panelLayer
	if (ie4) over = panelLayer.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 clearPanel()
{
	if ( cnt >= 1 ) { sw = 0 };

	if ( (ns4) || (ie4) || (ns6) )
	{
		if ( sw == 0 )
		{
			snow = 0;
			hideObject(over);
		}
		else
		{
			cnt++;
		}
	}
	hMob = 1;
}

// Simple popup
function basicPanel(d,text)
{        
	txt = "<TABLE "+widthTag(text)+" BORDER=0 CELLPADDING="+border+" CELLSPACING=0 BGCOLOR=\""+backcolor+"\"><TR><TD><TABLE CLASS=\"basicPanel\" WIDTH=100% BORDER=0 CELLPADDING=2 CELLSPACING=0\"><TR><TD>"+text+"</TD></TR></TABLE></TD></TR></TABLE>";
	layerWrite(txt);

        if ( d == 'fixed' )
        {
               	dir = 'left';

                hMob = 0;
        }
        else
        {
                dir = d;
        }
	
        disp();
}

// Caption popup
function dynamicPanel(d,text, title)
{
	txt = "<TABLE "+widthTag(text)+" BORDER=0 CELLPADDING="+border+" CELLSPACING=0 BGCOLOR=\""+backcolor+"\"><TR><TD><TABLE CLASS=\"dynamicPanel\" 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 staticPanel(d,text, title)
{
	sw = 1;
	cnt = 0;
	txt = "<TABLE "+widthTag(text)+" BORDER=0 CELLPADDING="+border+" CELLSPACING=0 BGCOLOR=\""+backcolor+"\"><TR><TD><TABLE CLASS=\"staticPanel\" 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 || ns6) && 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 = panelLayer.clientWidth;
    }   
}

// Respond to mousemove event
function mouseMove(e)
{
    if (ns4 || ns6) {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["panelLayer"].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.panelLayer.document
		lyr.write(txt)
		lyr.close()
	}
	else if (ie4)
	{
		document.all["panelLayer"].innerHTML = txt
	}
	else if (ns6)
	{
		range = document.createRange();
		range.setStartBefore(over);
		domfrag = range.createContextualFragment(txt);
		while( over.hasChildNodes() )
		{
			over.removeChild(over.lastChild);
		}
		over.appendChild(domfrag);
	}
}


// Make an object visible
function showObject(obj)
{
	if (ns4) obj.visibility = "show"
	else if (ie4) obj.visibility = "visible"
	else if (ns6) obj.style.visibility="visible";
}

// Hides an object
function hideObject(obj)
{
	if (ns4) obj.visibility = "hide"
	else if (ie4) obj.visibility = "hidden"
	else if (ns6) obj.style.visibility="hidden";
}

