var currentBalloon = null;
var bTimer = null;
var onBalloon = null;

function findPos(obj) {
	var curleft = obj.offsetLeft;
	var curtop = obj.offsetTop;
	if (obj.offsetParent) {
		var p = obj.offsetParent;
		while (p != null) {
			curleft += p.offsetLeft;
			curtop += p.offsetTop;
			p = p.offsetParent;
		}
	}
	return [curleft,curtop];
}

function balloonShow(obj) {
	var curleft = obj.offsetLeft;
	var curtop = obj.offsetTop;
	var oParent = obj.parentNode;
	while (oParent.className.indexOf(''+'block'+'') == -1  
		&& oParent.className.indexOf(''+'palette'+'') == -1  
		&& oParent.className.indexOf(''+'paletteImg'+'') == -1  
		&& oParent.className.indexOf(''+'userSection'+'') == -1 && oParent != 'document.body') {
		oParent = oParent.parentNode;
	}

	var arrDivs = oParent.getElementsByTagName('div');
	if (arrDivs.length <= 0) return;
	for (var i = 0; i < arrDivs.length; i++) {
		if (arrDivs[i].className.indexOf('dialogBalloon') > -1) {
			if (currentBalloon != null) {
				clearTimeout(bTimer); 
				hideCurrentBalloon();
			}
			var oHeight = arrDivs[i].offsetHeight;

			// process the balloon offset correctly based on where it's used
			if (oParent.className.indexOf(''+'wtf'+'') > -1) {
				oHeight -= 22;
			} else if (oParent.className.indexOf(''+'palette'+'') > -1 || oParent.className.indexOf(''+'paletteImg'+'') > -1) {
				oHeight -= 43;
			} else if (oParent.className.indexOf(''+'userSection'+'') > -1) {
				oHeight -= 68;
			} else if (oParent.parentNode.className.indexOf(''+'sigBrandsContainer'+'') > -1) {
				oHeight += 13;			
			} else {
				oHeight -= 56;
			}

			//position left
			if (oParent.className.indexOf(''+'wtf'+'') > -1) {
				arrDivs[i].style.left = (curleft + 20) + 'px';
			} else if (oParent.className.indexOf(''+'palette'+'') > -1 || oParent.className.indexOf(''+'paletteImg'+'') > -1) {
				arrDivs[i].style.left = (curleft + 10) + 'px';
			} else if (oParent.className.indexOf(''+'userSection'+'') > -1) {
				arrDivs[i].style.left = (curleft - 20) + 'px';
			} else if (oParent.parentNode.className.indexOf(''+'sigBrandsContainer'+'') > -1) {
				arrDivs[i].style.left = (curleft - 20) + 'px';
			} else {
				arrDivs[i].style.left = (curleft + 30) + 'px';
			}

			//position top (the if/else is to handle IE variant)
			if(oParent.parentNode.className.indexOf(''+'sigBrandsContainer'+'') > -1 && BrowserDetect.browser == "Explorer") {// && BrowserDetect.version < 7) {
				arrDivs[i].style.top  = (45 - oHeight) + 'px';
				arrDivs[i].style.left = "0";
			}
			else {
				arrDivs[i].style.top  = (0 - oHeight) + 'px';			
			}
			arrDivs[i].style.visibility = 'visible'; //make visible
			currentBalloon = arrDivs[i];
		}
	}
}

function hideCurrentBalloon() { 
	if( currentBalloon != null ) {
		currentBalloon.style.visibility = 'hidden';
		currentBalloon = null;
		onBalloon = false;
	}
}

function balloonInit() {
	var arrDivs = document.getElementsByTagName('div');
	if (arrDivs.length <= 0) return;
	for (var i = 0; i < arrDivs.length; i++) {
		if (arrDivs[i].className.indexOf('dialogBalloon') > -1) {

			arrDivs[i].style.visibility = 'hidden';

			arrDivs[i].onmouseover = function() {
				onBalloon = true;
				clearTimeout(bTimer);
				return false;
			}
			arrDivs[i].onmouseout = function() {
				bTimer = setTimeout('hideCurrentBalloon()', 1000);
				return false;
			}
		}
	}
	var arrLinks = document.getElementsByTagName('a');
	if (arrLinks.length <= 0) return;
	for (var i = 0; i < arrLinks.length; i++) {
		if (arrLinks[i].className.indexOf('itIsBalloon') > -1) {
			arrLinks[i].onmouseover = function() {
				balloonShow(this);
				return false;
			}
			arrLinks[i].onmouseout = function() {
				if (!onBalloon) {
					bTimer = setTimeout('hideCurrentBalloon()', 1000);
				}
				return false;
			}
		}
	}
}

windowObject.addLoadFunction(balloonInit);
