
function stopEvent(e)
{
	var event = e || window.event;
	if (event.stopPropagation)
		event.stopPropagation();
	else
		event.cancelBubble = true;
}

function fadeDiv(fadeIn, divId)
{
	var div = getDivById(divId);
	
	var currentOpacity = div.currentOpacity;
	
	if (fadeIn && (currentOpacity == 100))
	{
		return false;
	}
	
	if (!fadeIn && (currentOpacity == 0))
	{
		return false;
	}
	
	var startCallBackForDiv = (div.fadeIn == null);
	
	div.fadeIn = fadeIn;
	
	if (startCallBackForDiv)
	{
		fadeDivCallBack(divId);
	}
	
}

function fadeDivCallBack(divId)
{
	var div = getDivById(divId);
	
	var currentOpacity = div.currentOpacity;
	
	var fadingIn = div.fadeIn;
	
	var stopFading = false;
	
	if (fadingIn == null)
	{
		alert("fadingIn is null :/");
	}
	else if (fadingIn)
	{
		if (currentOpacity == null)
		{
			currentOpacity = 0;
		}
		
		currentOpacity += 20;
		
		if (currentOpacity >= 100)
		{
			currentOpacity = 100;
			stopFading = true;
		}
	}
	else
	{
		//fading out..
		if (currentOpacity == null)
		{
			currentOpacity = 100;
		}
		
		currentOpacity -= 20;
		
		if (currentOpacity <= 0)
		{
			currentOpacity = 0;
			stopFading = true;
		}
	}
	
	//alert(div.currentOpacity + " " + currentOpacity);
	
	setOpacity(div, currentOpacity);
	div.currentOpacity = currentOpacity;
	
	if (stopFading)
	{
		div.fadeIn = null;
	}
	else
	{
		window.setTimeout("fadeDivCallBack('" + divId + "');", 50);
	}
		
}

/* function taken from this example: http://clagnut.com/sandbox/imagefades/ */
function setOpacity(obj, opacity)
{
	opacity = (opacity == 100)?99.999:opacity;

	// IE/Win
	obj.style.filter = "alpha(opacity:"+opacity+")";

	// Safari<1.2, Konqueror
	obj.style.KHTMLOpacity = opacity/100;

	// Older Mozilla and Firefox
	obj.style.MozOpacity = opacity/100;

	// Safari 1.2, newer Firefox and Mozilla, CSS3
	obj.style.opacity = opacity/100;
}


function getDivById(divid)
{
	var div = document.getElementById(divid);
	if (div == null)
	{
		alert("ERROR: Could not find div with id \"" + divid + "\".");
	}
	return div;
};

function showOrHideDiv(showDiv, divId)
{

	var div = getDivById(divId);

	if (div == null)
	{
		alert("showOrHideDiv div is null");
	}
	if (showDiv)
	{
		div.style.visibility = 'visible';
	}
	else
	{
		div.style.visibility = 'hidden';
	}
}
