// Creates a popup box with HTML text from URL given.
// Positioned above or below the click.
// Uses a single timer, which is used to close the box due to inactivity.

var intervalID = null;
var timeCnt= -1;
var lastKey;

// initialize timer
function initPopupTimer(msDelay) {
	if(intervalID) return; // already set
	intervalID = self.setInterval('if(timeCnt>=0) timeCnt++;if(timeCnt>20) unshowPopup();',msDelay/20);
}

// start timer (normally called in onmouseout event)
function startPopupTimer() {
	timeCnt= 0;
}

// disable/stop timer
function stopPopupTimer() {
	timeCnt= -1;
}

// creates popup box at position specified
// contents will be HTML text message
// key is used to calculate URL to go to when box is clicked
function createPopupBox(numX, numY, winTop, winBottom, wid, key, message) { 
	if(message.length == 0) return;
	var popupBox;
	var bTop= new Number(0);
	var bHeight;
	popupBox = document.createElement('div'); 
	popupBox.setAttribute ('id' , 'popupBox') ;
	document.getElementsByTagName('body')[0].appendChild(popupBox) ;
	popupBox = eval("document.getElementById('popupBox').style") ;
	YAHOO.util.Dom.setStyle('popupBox', 'width', wid+'px');
	document.getElementById('popupBox').innerHTML = message ;
	bHeight = document.getElementById('popupBox').offsetHeight;
	bTop = numY - bHeight;
	if((bTop + bHeight) > winBottom) bTop = winBottom - bHeight;
	if(bTop < winTop) bTop = winTop;
	var bNumX = new Number(numX);
	YAHOO.util.Dom.setXY('popupBox', [bNumX+50, bTop]); 
}

function createPopupBoxOld(numX, numY, winTop, winBottom, wid, key, message) {
	var popupBox;
	var bTop= new Number(0);
	var bHeight;
	popupBox = document.createElement('div'); 
	popupBox.setAttribute ('id' , 'popupBox') ;
	document.getElementsByTagName('body')[0].appendChild(popupBox) ;
	popupBox = eval("document.getElementById('popupBox').style") ;
	//popupBox.position = 'absolute' ;
	popupBox.position = 'absolute' ;
	//popupBox.top = numY; /*event.clientY */
	popupBox.left = numX + 50 ; /* event.clientX */
	//popupBox.left = 200
	popupBox.width = wid ;
	popupBox.border = 'outset 1 #bbbbbb' ;
	document.getElementById('popupBox').innerHTML = message ;
	//var message1 = "<P>" + 
	//	"numX=" + numX + ", numY=" + numY + ", winTop=" + winTop +
	//	"</P>";
	//document.getElementById('popupBox').innerHTML = message1 ;
	bHeight = document.getElementById('popupBox').offsetHeight;
	bTop = numY - bHeight;
	if((bTop + bHeight) > winBottom) bTop = winBottom - bHeight;
	if(bTop < winTop) bTop = winTop;
	popupBox.top = bTop;
}

// unshow popup box, stop timer
function unshowPopup() {
	stopPopupTimer();
	if(document.getElementById("popupBox"))
		document.getElementsByTagName("body")[0].removeChild(document.getElementById("popupBox"));
}

function callPopupBox(numX, numY, unshow, key, msg) {
	stopPopupTimer();
	if(unshow) {
		unshowPopup();
	} else {
		// same one already shown?
		if(lastKey == key && document.getElementById("popupBox")) return;

		winTop = YAHOO.util.Dom.getDocumentScrollTop();
		winBottom = winTop+YAHOO.util.Dom.getViewportHeight();
		//msg += "<DIV id='toc'>window top-bottom " + winTop + "-" + winBottom + "</DIV>";
		//msg += "<DIV id='toc'>click X-Y " + numX + "-" + numY + "</DIV>";
		//numX = new Number(500);
		//numY = new Number(500);

		unshowPopup(); // unshow box if already showing one
		lastKey = key;
		createPopupBox(numX, numY, winTop, winBottom, 400, key, msg);
		setTimeout('startPopupTimer()',500);
	}
}

var lastKeyURL;
var lastXURL;
var lastYURL;
var connectionObject=0;

// event processor to create popup box by calling sum.php
function callPopUpInfo(e, key) {
	if(connectionObject && 
			YAHOO.util.Connect.isCallInProgress(connectionObject)) {
		YAHOO.util.Connect.abort(connectionObject);
		unshowPopup();
	}
	initPopupTimer(1500);
	lastKeyURL = key;
	var pURL = "/sum.php?" + key;
	lastXURL = YAHOO.util.Event.getPageX(e);
	lastYURL = YAHOO.util.Event.getPageY(e);
	var callback = {
		success: function xCallback(o) {
			callPopupBox(lastXURL, lastYURL, 0/*unshow*/,
								lastKeyURL, o.responseText);
		}
	}
	//getURLdata(pURL, 0,0, key, callback);
	connectionObject = YAHOO.util.Connect.asyncRequest(
		'GET', pURL, callback);
}

// event processor to create popup box for sidebar topic
function callPopUpTopicNew(e, key) {
	initPopupTimer(1500);
	lastKeyURL = key;
	var pURL = "sum.php?" + key; ///// NEEDS MODIFICATION //////
	lastXURL = YAHOO.util.Event.getPageX(e);
	lastYURL = YAHOO.util.Event.getPageY(e);
	var callback = {
		success: function xCallback(o) {
			callPopupBox(lastXURL, lastYURL, 0/*unshow*/,
								lastKeyURL, o.responseText);
		}
	}
	//getURLdata(pURL, 0,0, key, callback);
	connectionObject = YAHOO.util.Connect.asyncRequest(
		'GET', pURL, callback);
}

function callPopUpTopic(e, key, str) {
	initPopupTimer(1500);
	
	var keyStr = 'topic'.concat(key);
	if(str.length < 1) { // no data to show
		unshowPopup();
		return;
	}
	numX = YAHOO.util.Event.getPageX(e);
	numY = YAHOO.util.Event.getPageY(e);
	callPopupBox(numX, numY, 0/*unshow*/, keyStr, str);
}

