////////////////////////////////////////////////////////////////
// Copyright ReFreezed 2008-2009
////////////////////////////////////////////////////////////////



var Floater = {};

(function(){







/* MEMBERS
********************************************************************************************************************************/

var mHideOnClick = false;
var mFloaterIsVisible = false;
var mUpdatePositionIntervalId = 0;







/* PRIVATE METHODS
********************************************************************************************************************************/



function UpdatePosition()
{
	if (!mFloaterIsVisible)
		return;
	var y = Math.floor($('#floater').height()/2-$('#innerFloater').height()/2);
	$('#innerFloater').css('top', y+'px');
}







/* PUBLIC METHODS
********************************************************************************************************************************/



Floater.AddContent = function(content)
{
	$('#floaterBody').append(content);
};



Floater.Hide = function()
{
	if (!mFloaterIsVisible)
		return;
	$('#floater, #blackout').hide();
	mFloaterIsVisible = false;
	$('.floaterSense').css('visibility', '');
	if (mUpdatePositionIntervalId > 0)
	{
		clearInterval(mUpdatePositionIntervalId);
		mUpdatePositionIntervalId = 0;
	}
};



Floater.Reset = function()
{
	Floater.Hide();
};



Floater.SetHideOnClick = function(state)
{
	mHideOnClick = !!state;
	if (mHideOnClick)
	{
		$('#floaterHead').hide();
		$('#floater').addClass('pointerCur');
	}
	else
	{
		$('#floaterHead').show();
		$('#floater').removeClass('pointerCur');
	}
};



Floater.SetContent = function(content)
{
	$('#floaterBody').empty().append(content);
};



Floater.SetHeight = function(height)
{
	$('#floaterBody').height(height);
	UpdatePosition();
};



Floater.SetSize = function(width, height)
{
	$('#innerFloater').width(width);
	$('#floaterBody').height(height);
	UpdatePosition();
};



Floater.SetWidth = function(width)
{
	$('#innerFloater').width(width);
	UpdatePosition();
};



Floater.Show = function()
{
	if (mFloaterIsVisible)
		return;
	$('#blackout, #floater').show();
	mFloaterIsVisible = true;
	$('.floaterSense').css('visibility', 'hidden');
	UpdatePosition();
	//mUpdatePositionIntervalId = setInterval(UpdatePosition, 400);
};







/* ONLOAD
********************************************************************************************************************************/



$(document).ready(function()
{



	// Automatic update of position
	$(window).resize(UpdatePosition);



	// "Hide on click"
	$('#floater').click(function()
	{
		if (mHideOnClick)
			Floater.Hide();
	});



});







})();
