var TOOLTIP_DEFAULT_WIDTH  = 100;
var TOOLTIP_DEFAULT_HEIGHT = 30;
var showDebug = false;
var time = 0;
var showPop = false;
var timeOffset = 500;
var timeOffsetClose = 500;
var isVisible = false;
var isNav = (navigator.appName.indexOf("Netscape") != -1);
var x=0;
var y=0;
var ttAjax='';
var tooltipId        = "TOOLTIP_ID";
var tooltipContentId = "TOOLTIP_CONTENT_ID";
var tooltipResponseHandler = null;


function startTooltipTimer(event, content, mode, windowOffsetX, windowOffsetY){
	event = event || window.event;
	mode = (mode == null) ? "plain" : mode;
	time = new Date().getTime()+timeOffset;
	showPop = true;
	setTimeout('checkPopup()', timeOffset);
	if (mode == 'plain') {
		$(tooltipContentId).innerHTML = content;
		ttAjax = '';
	} else if (mode=='AJAX') {
		ttAjax = content;
		if (isVisible){
			$(tooltipContentId).innerHTML = TOOLTIP_PLEASEWAIT;
			handleAjaxRequest(ttAjax);
		}
	}
	
	
	
	$(tooltipId).style.position = "absolute";
	var placementNameSpan = (event.target)? event.target : event.srcElement;
	
	if (placementNameSpan.parentNode.parentNode.parentNode.parentNode.parentNode.id == "receivingPlacementPanel"){
	//and 'parentNode.parentNode.parentNode.parentNode.parentNode' is the receiving placement 'table'
		var popupOffsetLeft = 150;
		var popupOffsetTop = 60;
	
		// BTI-1732 need to get the left and top if the user move the popup in EditPlacement.
		var mainIFrameElem = document.getElementById("mainwindow");
		if (mainIFrameElem) {
			var mainHTML;
			var popUpElem;
			// get the mainwindow iframe content, then get editplacementdiv iframe
			if (mainIFrameElem.contentDocument) {
				mainHTML = mainIFrameElem.contentDocument;
				if (mainHTML) {
					popUpElem = mainHTML.getElementById("editplacementdiv");
				}
			} else {
				// we are using IEx, need to use contentWindow
				mainHTML = mainHTML = mainIFrameElem.contentWindow;
				if (mainHTML) {
					popUpElem = mainHTML.document.getElementById("editplacementdiv");
				}
			}
			// get top and left position of editplacementdiv iframe
			if (popUpElem) {
				popupOffsetLeft = popUpElem.offsetLeft;
				popupOffsetTop = popUpElem.offsetTop;
			}
		}
		$(tooltipId).style.top      = (event.clientY +windowOffsetY+popupOffsetTop) + "px";
		$(tooltipId).style.left     = (event.clientX +windowOffsetX+popupOffsetLeft) + "px";
	}else {
		$(tooltipId).style.top      = (event.clientY +windowOffsetY) + "px";
		$(tooltipId).style.left     = (event.clientX +windowOffsetX) + "px";
	}
	detectTooltipCollisions();
}

function checkPopup(){
	if (showPop){
		var now = new Date().getTime();
		if (now >= time) {
			// showPopup
			if (!isVisible) {
				showTooltipPopup();
			}
		} else {
			// don't show yet - wait your turn
			setTimeout('checkPopup()',time-now);
		}
	}
}

function hidePopup() {
	hidePopup(false);
}

function hidePopup(force) {
	if (!showPop || force==true){
		isVisible=false;
		popupStyle = document.getElementById('TOOLTIP_ID').style;
		popupStyle.display='none';
		popupStyle.visibility='hidden';
		popupStyle.width  = TOOLTIP_DEFAULT_WIDTH  + "px";
		popupStyle.height = TOOLTIP_DEFAULT_HEIGHT + "px";
		$('TOOLTIP_CONTENT_ID').innerHTML = TOOLTIP_PLEASEWAIT;  // variable rendered by ToolTipRenderer before including this file!
	}
}

	
function triggerTooltipHide() {
	showPop = false;
	setTimeout('hidePopup()',timeOffsetClose);
}
function showTooltipPopup() {

	if (ttAjax != '') {
		handleAjaxRequest(ttAjax);
	}
	isVisible = true;
	popupStyle = document.getElementById('TOOLTIP_ID').style;
	popupStyle.display='block';
	popupStyle.visibility='visible';
}

top.setMousePos = function setMousePos(theEvent){
	theEvent = theEvent || window.event;
	x = getMouseX(theEvent);
	y = getMouseY(theEvent);
}

function handleAjaxRequest(theUrl) {
	if (tooltipResponseHandler == null)
		tooltipResponseHandler = new TooltipResponseHandler();
	req = new AjaxRequest(theUrl, tooltipResponseHandler);
	req.send();
}

function setTooltipWidth(iWidth) {
	$(tooltipId).style.width = iWidth + "px";
	$(tooltipContentId).style.width = (parseInt(iWidth) - 20) + "px";
}

function setTooltipHeight(iHeight) {
	$(tooltipId).style.height = "";
	$(tooltipContentId).style.height = "";
}

function detectTooltipCollisions() {
	/* Collision detection goes here... */
	
	if ((parseInt($(tooltipId).style.left.substring(0,$(tooltipId).style.left.indexOf('px'))) + windowOffsetX + $(tooltipId).offsetWidth) > top.document.body.clientWidth) {
		$(tooltipId).style.left = parseInt($(tooltipId).style.left) - parseInt($(tooltipId).offsetWidth) - 20;
	}
	if ((parseInt($(tooltipId).style.top.substring(0,$(tooltipId).style.top.indexOf('px'))) + windowOffsetY + $(tooltipId).offsetWidth) > top.document.body.clientHeight) {
		$(tooltipId).style.top = parseInt($(tooltipId).style.top) - parseInt($(tooltipId).offsetHeight);
	}	
}


/** The TooltipResponseHandler class **/
function TooltipResponseHandler() {}
TooltipResponseHandler.prototype.handleAjaxResponseEvent = function(ajaxRequest) {

	var xml = req.getResponseXML();
	if (!xml) return;
	var arrTooltipNodes = xml.getElementsByTagName("tooltip");
	if (arrTooltipNodes != undefined && arrTooltipNodes != null) {
		var tooltipNode     = arrTooltipNodes[0];
		if (tooltipNode == null) return;
		var tooltipWidth    = tooltipNode.getAttribute("width");
		var tooltipHeight   = tooltipNode.getAttribute("height");
		setTooltipWidth(tooltipWidth);
		setTooltipHeight(tooltipHeight);
		detectTooltipCollisions();
	
		var sContent      = tooltipNode.getElementsByTagName("content")[0].firstChild.data;
		$(tooltipContentId).innerHTML = sContent + "<BR><BR>";
		$(tooltipContentId).style.verticalAlign = "middle";
	}
}


function stayOpen(){
	showPop=true;
}
if (isNav) {
	document.captureEvents(Event.MOUSEMOVE);
}

//addEventListener(document, "mousemove", setMousePos);
//document.onmousemove = setMousePos;
