var product_hover_contents = new Array();

function showHover(aHoverId, aContentId){
    clearHideHoverTimeout();

	if(window._currentHoverId && window._currentHoverId != aHoverId){
		hideHover();
	}

    window._currentHoverId = aHoverId;
	window._currentContentId = aContentId;
	
	var vHover = jQuery("#" + aHoverId).css("display", "block")[0];
	
    if(vHover){
		/*if(window._hoverHeading){
			document.getElementById("product_hover_heading").firstChild.nodeValue = window._hoverHeading;
		}*/
		
		jQuery(document.body).addClass("ie6-hide-selects");
		
		//alert(jQuery("#" + aContentId).outerHTML());
		var vContent = jQuery("#" + aContentId);

		if(vContent[0]){
			var vHtml = vContent.css("display", "").outerHTML();
			//alert(vHtml);
			vContent.css("display", "none");
			jQuery("#hover_content_div").html(vHtml);
		}
		
		if(window._contentURL){
        	var url = window._contentURL;
        	jQuery("#hover_content_div").html('<img src="images/ajax-loader-regular.gif"/>');
        	if( !product_hover_contents[url] )
        	{
	        	jQuery.get(url,null,function(_data,_textStatus){
	        		product_hover_contents[url] = _data;
					jQuery("#hover_content_div").html( _data );
	        	});
        	}
        	else
        	{
				jQuery("#hover_content_div").html( product_hover_contents[url] );
			}
        }
		
		var vTargetOffset = jQuery(window._hoverTarget).offset();

		//alert(vTargetOffset.top + "," + vTargetOffset.left + "," + window._hoverTarget.offsetWidth);
		
		//var vHoverArrow = document.getElementById("hover_arrow");
		var vWindowWidth = jQuery(window).innerWidth();
		var vWindowHeight = jQuery(window).innerHeight();
		var vScrollTop = jQuery(window).scrollTop();
		var vScrollLeft = jQuery(window).scrollLeft();
		
		var vWidth = jQuery(vHover).outerWidth();
		var vHeight = jQuery(vHover).outerHeight();
		
		var vOffsetY = 10;
		var vOffsetX = 0;//vHoverArrow.offsetWidth * 0.5;
		var vArrowTop = 0;
		var vArrowLeft = 0;

		var vTop = vTargetOffset.top + vOffsetY;
		var vLeft = vTargetOffset.left + window._hoverTarget.offsetWidth + vOffsetX + 10;

        //var vTop = vTargetOffset.top - (vHeight * 0.5) + vOffsetY;
		//var vLeft = vTargetOffset.left + window._hoverTarget.offsetWidth + vOffsetX + 10;
		
		//vArrowTop = vHeight * 0.5 - vHoverArrow.offsetHeight + 24;

		if(vTop + vHeight - vScrollTop > vWindowHeight){
			var vOldTop = vTop;
			vTop = vWindowHeight - vHeight + vScrollTop;
			vArrowTop += vOldTop - vTop;
		}
		if(vTop < vScrollTop){
			var vOldTop = vTop;
			vTop = vScrollTop;
			vArrowTop += vOldTop - vTop;
		}

//		if(vArrowTop > vHeight - vHoverArrow.offsetHeight - 16){
//			vArrowTop = vHeight - vHoverArrow.offsetHeight - 16;
//		}                    
		else if(vArrowTop < 16){
			vArrowTop = 16;
		}
		
		//vArrowLeft = -vHoverArrow.offsetWidth + 14;

		if(vLeft + vWidth - vScrollLeft > vWindowWidth){//outside the right bounds of window
			vLeft = vTargetOffset.left - vWidth - vOffsetX - 10;
			vArrowLeft = vWidth - 14;
		}

		if(vLeft < vTargetOffset.left){
			//vHoverArrow.className = "hover_arrow_right";
			//we need to do this to force the iepngfix to run for IE 6
			//vHoverArrow.style.backgroundImage = "url('images/hover_arrow_right.png')";
		}
		else{
			//vHoverArrow.className = "hover_arrow_left";
			//we need to do this to force the iepngfix to run for IE 6
			//vHoverArrow.style.backgroundImage = "url('images/hover_arrow_left.png')";
		}

		var jHover = jQuery(".hover");
		if(jHover.supersleight){
			jHover.supersleight({shim: "images/blank.gif"});
		}

//		vHoverArrow.style.top = vArrowTop + "px";
//		vHoverArrow.style.left = vArrowLeft + "px";

//		vHover.style.top = vTop + 10 + "px";
//        vHover.style.left = vLeft - 200 + "px";
        
        vHover.style.top = vTop + "px";
        vHover.style.left = vLeft + "px";
    }
}

function setShowHoverTimeout(evt, aAnchor, aHoverId, aContentId){
    clearHideHoverTimeout();
    
    evt = evt ? evt : window.event;
	window._hoverTarget = evt.currentTarget ? evt.currentTarget : evt.srcElement;
	window._hoverHeading = null;
	if(aAnchor){
		window._contentURL = aAnchor.getAttribute("contentURL");
	}
    window._showHoverTimeoutId = setTimeout("showHover('" + aHoverId + "', '" + aContentId + "');", 500);
	showHover(aHoverId, aContentId);
}

function clearShowHoverTimeout(){
    clearTimeout(window._showHoverTimeoutId);
}

function setHideHoverTimeout(){
    clearShowHoverTimeout();

    window._hideHoverTimeoutId = setTimeout("hideHover();", 500);
	hideHover();
}

function clearHideHoverTimeout(){
    clearTimeout(window._hideHoverTimeoutId);
}
function hideHover(){
	if(window._currentHoverId){
		jQuery("#" +  window._currentHoverId).css("display", "none");
	}
	if(window._currentContentId){
		jQuery("#" + window._currentContentId).css("display", "none");
	}
	jQuery(document.body).removeClass("ie6-hide-selects");
}

jQuery.fn.outerHTML = function() {
    return $("<div></div>").append( this.eq(0).clone() ).html();
};