var previewDivDelayed;
var previewDivStyleDisplay = "none";
var delayedPreview = 0;

function getAbsolutePosition(obj) {
	var x = y = 0;
	
	if(obj.offsetParent) {
		
		x = obj.offsetLeft;
		y = obj.offsetTop;
		
		while(obj = obj.offsetParent) {
			x += obj.offsetLeft;
			y += obj.offsetTop;
		}
	}
	return { x:x, y:y };
}

function showGnPreview(obj, previewDivId, previewIframeId, previewContentDivId, html, inIframe) {	
	
	var position = getAbsolutePosition(obj);
	var previewDiv = document.getElementById(previewDivId);
	var previewContentDiv = document.getElementById(previewContentDivId);

	previewContentDiv.innerHTML = html;

	if (delayedPreview != null && delayedPreview > 0) {
		previewDivStyleDisplay = "";
		previewDivDelayed = previewDiv;
		setTimeout('previewDivDelayed.style.display = previewDivStyleDisplay', delayedPreview);
	}
	else {
		previewDiv.style.display = "";
	}
	
	var previewDivWidth = previewDiv.clientWidth;
	
	// If it will encroach on the skyskraper banner's position (since we can't guarantee
	// that it won't be a flash banner with wmode="window".
	if((position.x + obj.clientWidth + previewDiv.clientWidth) > 780) {
		previewDiv.style.left = (position.x - previewDiv.clientWidth - 12) + "px";
		previewDiv.style.top = (position.y - 100) + "px";
				
	} else {
		previewDiv.style.left = (position.x + obj.clientWidth + 2) + "px";
		previewDiv.style.top = (position.y - 100) + "px";
	}
}

function hideGnPreview(previewDivId, previewIframeId, inIframe) {
	var previewDiv = document.getElementById(previewDivId);
	previewDiv.style.display = "none";
}

function showGnPreviewDelayed(obj, previewDivId, previewIframeId, previewContentDivId, html, inIframe, delay) {
	delayedPreview = delay;
	showGnPreview(obj, previewDivId, previewIframeId, previewContentDivId, html, inIframe);
}

function hideGnPreviewDelayed(previewDivId) {
	previewDivStyleDisplay = "none";
	hideGnPreview(previewDivId, null, null);
}