/******* script for simple popups ********/

var LEFT		=	"left";
var LEFT_EDGE		=	"left_edge";
var RIGHT		=	"right";
var CENTER		=	"centre";

// Decide browser version
var ns4 = (document.layers)? true:false
var ie4 = (document.all)? true:false
var dom = (document.getElementById) ? true:false;
var dom2 = (document.createRange) ? true:false;
var ie5 = false;

// Microsoft IE5 test.
if (ie4) {
	if (navigator.userAgent.indexOf('MSIE 5')>0) {
		ie5 = true;
	}
}
// Microsoft IE6 test.
if (ie4) {
	if (navigator.userAgent.indexOf('MSIE 6')>0) {
		ie5 = true;
	}
}
// Opera test
var opera = (navigator.userAgent.indexOf('Opera') > 0) ? true:false;



/******* CONFIGURATION for NS4 only ********/
/******* others use CSS #popDiv     ********/

// Main background color (the large area)
// Usually a bright color (white, yellow etc)
if (typeof pip_fgcolor == 'undefined') { var pip_fgcolor = "#CCCCFF";}
if (pip_fgcolor != "") {var pop_fgcolor = "BGCOLOR=\""+pip_fgcolor+"\"";}
else 		       {var pop_fgcolor = "";}


// Border color
// Usually a dark color (black, brown etc)
if (typeof pip_bgcolor == 'undefined') { var pip_bgcolor = "#333399";}
if (pip_bgcolor != "") 
	{var pop_bgcolor = "BGCOLOR=\""+pip_bgcolor+"\"";}
else
	{var pop_bgcolor = "";}

	
// Text color
// Usually a dark color
if (typeof pop_textcolor == 'undefined') { var pop_textcolor = "#000000";}
	

// Font face for the main text
if (typeof pop_textfont == 'undefined') { var pop_textfont = "Verdana,Arial,Helvetica";}


// Font size for the main text
if (typeof pop_textsize == 'undefined') { var pop_textsize = "2";}


// Width of the popups in pixels
// 100-300 pixels is typical
if (typeof pop_width == 'undefined') { var pop_width = "200";}
	
// How thick the border should be in pixels
// 1-3 pixels is typical
if (typeof pop_border == 'undefined') { var pop_border = "2";}
	
// How many pixels to the right/left of the cursor to show the popup
// Values between 3 and 12 are best
if (typeof pop_offsetx == 'undefined') { var pop_offsetx = 10;}
	
// How many pixels to the below the cursor to show the popup
// Values between 3 and 12 are best
if (typeof pop_offsety == 'undefined') { var pop_offsety = 10;}

// Default horizontal alignment for popups.
// Other options are LEFT and CENTER.
if (typeof pop_hpos == 'undefined') { var pop_hpos = RIGHT; }

// Default vertical alignment for popups.
// Enter a number for fixed position.
if (typeof pop_vpos == 'undefined') { var pop_vpos = ""; }

// Default window.
if (typeof pop_dest == 'undefined') { var pop_dest = "self"; }

/********** END CONFIGURATION ************/

var popup_active = 0;

var pop_text = "";

var pop_x = 0;
var pop_y = 0;

var box = null;





// Capture events.
if ( (ns4) || (ie4 || dom2) ) {
	document.onmousemove = mouseMove
	if (ns4) document.captureEvents(Event.MOUSEMOVE)
} else {
//	alert("useless browser");
	Popup		= fn_dummy;
	Popdown	= fn_dummy;
}


// dummy function for incompatible browser.
function fn_dummy() {
	return true;
}
/******************************************/


// Write to layer
function layerWrite(txt) {
	if (dom) {
		var obj = eval(pop_dest + ".document.getElementById('popDiv')");
		obj.innerHTML=txt;
	} else if (ns4) {
		var lyr = eval(pop_dest + ".document.popDiv.document");
		lyr.open()
		lyr.write(txt)
		lyr.close()
	} else if (ie4) {
		eval(pop_dest + ".document.all[\"popDiv\"].innerHTML \= txt")
	} else if (dom2) {
		// for reference only - should use (dom)
		alert("reference only");
		var range = eval("document.createRange()");
		var obj = eval(pop_dest + ".document.getElementById('popDiv')");
			range.setStartBefore(obj);
		var docFrag = range.createContextualFragment(txt);
	//	obj.insertBefore(docFrag, obj.firstChild);
		obj.innerHTML=txt;
	}
}

/******************************************/
/* main function - to call from HTML page */
/******************************************/
function Popup() {
	var layerhtml;	

	pop_text = arguments[0];
	if (arguments.length > 1) {
		pop_image = arguments[1];
	} else {
		pop_image = null
	}
	

//	alert(pop_text);
	popup_active = 0;

	if ( (dom) || (ns4) || (ie4) ) {
		if (dom) { box = eval(pop_dest + ".document.getElementById('popDiv')" + ".style")
		} else if (ns4) {box = eval(pop_dest + ".document.popDiv")
		} else if (ie4) {box = eval(pop_dest + ".popDiv.style")}

	}
	

	if (ns4) {
		layerhtml = HTML_table(pop_text);
	} else {
		layerhtml = HTML_simple(pop_text);
	}

	layerWrite(layerhtml);
	
	layerShow(pop_text);

	return true;
}

/*******************************************/

// Clear popups 
function Popdown() {

	if ( (dom) || (ns4) || (ie4) ) {
		popup_active = 0;
		hideObject(box);
	}
	
	return true;
}

/********************************************/

// Make simple 
function HTML_simple(text) {
	if (pop_image != null) {
txt2="<center><img src=\""+pop_image+"\" border=0><\/center><br class=zero clear=all>";
} else { txt2 = ""}

txt = txt2 + text
	return txt;
}

/*******************************************/

// Make table for ns4
function HTML_table(text) {
	txt = "<TABLE WIDTH="+pop_width+" BORDER=0 CELLPADDING="+pop_border+" CELLSPACING=0 "+pop_bgcolor+"><TR><TD><TABLE WIDTH=100% BORDER=0 CELLPADDING=2 CELLSPACING=0 "+pop_fgcolor+">"

if (pop_image != null) {
txt2="<TR><TD align=center><img src=\""+pop_image+"\" height=160 width=160></td></tr>";

} else { txt2 = ""}


txt = txt + txt2 + "<TR><TD VALIGN=TOP><FONT FACE=\""+pop_textfont+"\" COLOR=\""+pop_textcolor+"\" SIZE=\""+pop_textsize+"\">"+text+"</FONT></TD></TR></TABLE></TD></TR></TABLE>"
	return txt;
}

/*******************************************/


// Make object visible
function showObject(obj) {
    if (ns4) { obj.visibility = "show" }
	else {obj.visibility = "visible"}
}

// Hide an object
function hideObject(obj) {
        if (ns4) {obj.visibility = "hide"}
        else {obj.visibility = "hidden"}      
}

/*******************************************/
// Display the popup
function layerShow(popuptext) {
	if ( (dom) || (ns4) || (ie4) ) {
		if (popup_active == 0) 	{
			placeLayer();
			showObject(box);
			popup_active = 1;
		}
	}
}

// Position the popup.
function placeLayer() {
	var placeX, placeY;
	
	// Horizontal Position - from mouse
	switch (pop_hpos) {
		case "centre": {
			placeX = pop_x+pop_offsetx-(pop_width/2);
			break;}
		case "right": {
			placeX = pop_x+pop_offsetx;
			break;}
		case "left": {
			placeX = pop_x-pop_offsetx-pop_width;
			break;}
		case "left_edge": {
			placeX = 5;
			break;}
		default: {
			placeX = pop_hpos;}
		}
	

	// Vertical Position - below mouse
	if (pop_vpos == "") {
		if (pop_image == null) {
			placeY = pop_y + pop_offsety;
		} else {
			placeY = pop_y + pop_offsety - 80;
		}
	} else {
		placeY = pop_vpos;
	}

	// Actually move the object.	
//	alert("position");
        box.left = placeX
        box.top = placeY
// opera claims support for:
//        box.pixelLeft = placeX
//        box.pixelTop = placeY

}


// Move the layer
function mouseMove(e) {
	if ( (ns4) || (dom2) ) {
		pop_x=e.pageX; pop_y=e.pageY;
//		alert("ns pop_x = "+pop_x);
	} else if ( (ie5) && (!opera) ) {
		pop_x=event.x+self.document.body.scrollLeft; 	
		pop_y=event.y+self.document.body.scrollTop;
//		alert("ie5 pop_x = "+pop_x);
	} else if ( (ie4) || opera ) {
		pop_x=event.x; pop_y=event.y;
//		alert("ie4 pop_x = "+pop_x);
	}

	
	if (popup_active) {
		placeLayer();
	}
}

