/*
 * $Id$
 *
 * Various JS eye-candy functions and special effects
 *
 */

var bObj;
var bObjStyle;
var bFadeTm;
var bWaitTm;
var bFadingIn = false;
var bFadingOut = false;
var bWaiting = false;

function balloon(id, msg) {
	bObj = Browser.getElementById(id + '_balloon');
	bStyleObj = bObj.style;

	var pObj = bObj.getElementsByTagName('p').item(0);

	Browser.setInnerHTML(pObj, msg);				// set inner message text

	var slObj = Browser.getElementById(id) ||
				Browser.getElementById(id + '_empty');

	Browser.getClientXY(slObj, 0, 'body');

	bStyleObj.visibility = 'visible';

	var bObjHeight = bObj.clientHeight ? bObj.clientHeight : bObj.offsetHeight;

	var adjHeight = Browser.clientY - bObjHeight;	// adjust for balloon height
	adjHeight += 18;								// now, push down slighty

	bStyleObj.top = adjHeight + "px";

	if (!bFadingIn && !bWaiting)
	{
		var fade = 5;
		if (bFadingOut)
		{
			clearTimeout(bFadeTm);

			fade = Browser.getOpacity('', bObj);
		}

		bFadingIn = true;

		fadeBalloon(fade, 1);
	}

	if (bWaiting)
	{
		clearTimeout(bWaitTm);
		bWaitTm = setTimeout(function() { fadeBalloonOut(); }, 4000);
	}
}

function fadeBalloonOut()
{
	bWaiting = false;
	bfadingOut = true;

	fadeBalloon(85, -1);
}

function fadeBalloon(fade, dir)
{
    if (fade >= 99 || fade <= 0)
    {
   		Browser.setOpacity(fade, '', bObj);

		if (bFadingIn)
		{
			bWaiting = true;
			bWaitTm = setTimeout(function() { fadeBalloonOut(); }, 4000);
		}

		bFadingIn = bFadingOut = false;
    }
    else
    {
        Browser.setOpacity(fade, '', bObj);

        bFadeTm = setTimeout(function() { fadeBalloon(fade + (5 * dir), dir); }, 30);
    }
}


function thumbnail_mouse_follower() {
	// _______________________________
	//                                |
	//     thumbnail mouse follower   |
	// _______________________________|
	//

	//	var itemDetailObj = Browser.getElementById('itm_detail');
	var itemDetailObj = Browser.getElementById('prod_nav');
	var provNavObj = Browser.getElementById('prod_nav');

	if (itemDetailObj) {
		if (Browser.isOpera())
			;
		else if (itemDetailObj.addEventListener)
			itemDetailObj.addEventListener("mousemove", move, false);
		else if (itemDetailObj.attachEvent)
			itemDetailObj.attachEvent('onmousemove', move);
	}

	var hovering = false;

	var offsetx = -55;
	var offsety = 160;

	function move(e) {
		////////////////////////////
		// Safari supporst x/y & pageX/pageY, but both are relative to browser edge
		// IE supports x/y, which is relative to clientX (ie, the listener edge)
		// FF supports pageX/pageY, which is relative to browser edge

		lastx = e.pageX ? e.pageX : e.x;
		lasty = e.pageY ? e.pageY : e.y;

		if (e.pageX) {
			Browser.getClientXY(provNavObj);

			lastx = lastx - (Browser.clientX + offsetx);
			lasty = lasty - (Browser.clientY + offsety);
		}
		else {
			lastx -= 15 + offsetx;
			lasty -= offsety;
		}

		if (hovering)
			moveDimDialog();
	}

	moveDimDialog = function() {
		if (lastx) {
			dimObjStyle.left = lastx + "px";
			dimObjStyle.top = lasty + "px";
		}
	}

	// function to reveal/hide dimension rollover popup on item and group pages
	dimDialog = function(mode, obj, furnitureType) {
		if (Browser.isOpera())
			return;

		dimObj = Browser.getElementById(furnitureType+'DimensionDialog');
		dimObjStyle = dimObj.style;

		if (dimObj) {
			if (mode == 'reveal') {
				moveDimDialog();

				dimObjStyle.visibility = 'visible';

				hovering = true;
			}
			if (mode === 'hide') {
				hovering = false;

				dimObjStyle.visibility = 'hidden';

			}
		}
	}

}
