var distanceToOpacityClick = 40;
var timeToCloseMoviment = 100;
var timeToCloseMovimentIE = 35;
var vertical = true;
var movimentToClick = true;
var inMoviment = false;

function setAlertParameter(obj)
{
	if(obj.dist != null && obj.dist != "undefined") distanceToOpacityClick = obj.dist;
	if(obj.time != null && obj.time != "undefined") timeToCloseMoviment = obj.time;
	if(obj.timeIE != null && obj.timeIE != "undefined") timeToCloseMoviment = obj.timeIE;
	if(obj.vert != null && obj.vert != "undefined") vertical = obj.vert;
	if(obj.mclick != null && obj.mclick != "undefined") movimentToClick = obj.mclick;
}

jQuery(document).ready(function()
{
	jQuery("#opacity_layer").click(function (e)
	{
		if(!movimentToClick || inMoviment) return;
		inMoviment = true;
		var idAlert = getOpenAlertID();
		if(idAlert.length > 0)
		{
			var topAlert, leftAlert, time;
			for(var i = 0; i < idAlert.length; i++)
			{
				tmpID = idAlert[i];
				
				if(tmpID == "guarda_popup_video")
				{
					closeGuardaVideo();
				}else
				{
					topAlert = parseInt(jQuery("#"+tmpID).css('margin-top'));
					leftAlert = parseInt(jQuery("#"+tmpID).css('margin-left'));
					
					time = timeToCloseMoviment;
					if(jQuery.browser.msie) time = timeToCloseMovimentIE;
					
					if(vertical)
					{
						jQuery("#"+tmpID).animate({marginTop: (topAlert - distanceToOpacityClick)+"px"}, time, 'linear', function()
						{
							jQuery(this).animate({marginTop: topAlert+"px"}, time, 'linear', function() { inMoviment = false; });
						});
					}else
					{
						jQuery("#"+tmpID).animate({marginLeft: (leftAlert - distanceToOpacityClick)+"px"}, time, 'linear', function()
						{
							jQuery("#"+tmpID).animate({marginLeft: (leftAlert + distanceToOpacityClick)+"px"}, time, 'linear', function()
							{
								jQuery(this).animate({marginLeft: leftAlert+"px"}, time, 'linear', function() { inMoviment = false; });
							});
						});
					}
				}
			}
		}
	});
});

jQuery(window).scroll(
	function () 
	{
		var animationTime = 100;
		if(jQuery.browser.msie) animationTime = 20;
		var idAlert = getOpenAlertID();
		var heightBrowser = jQuery(window).height();
		var scrollTop = jQuery(window).scrollTop();
		if(idAlert.length > 0)
		{
			var tmpID;
			var heightAlert;
			var topAlertDefault;
			
			for(var i = 0; i < idAlert.length; i++)
			{
				tmpID = idAlert[i];
				heightAlert = jQuery("#"+tmpID).height();
				if(heightAlert < heightBrowser)
				{
					topAlertDefault = Math.ceil(heightAlert * 0.5) * -1;
					topAlertDefault = getTopAlert(tmpID, topAlertDefault);
					jQuery("#"+tmpID).animate({marginTop: topAlertDefault + scrollTop}, animationTime, "linear");
				}
			}
		}
	}
);

function getOpenAlertID()
{
	var alertID = new Array();
	var alertList = jQuery(".alert_panel");
	var tmpID;
	for(var i = 0; i < alertList.length; i++)
	{
		tmpID = jQuery(alertList[i]).attr('id');
		if(jQuery("#"+tmpID).css('display') == 'block' || jQuery("#"+tmpID).css('display') == 'inline') alertID.push(tmpID);
	}
	return alertID;
}

var lastPassword = "";
function openAlert(id)
{
	if(jQuery("#"+id).attr('firstlogin') != null && jQuery("#"+id).attr('firstlogin') != "undefined" && parseInt(jQuery("#"+id).attr('firstlogin'), 10) == 1)
	{
		jQuery("#"+id).find(".container_alert").append('<a id="annullaupdatepwd" href="javascript:closeAlert(\''+id+'\')">&gt; Annulla</a>');
		jQuery("#"+id).find("#testo_update_pwd").html("Modifica la password<br>per accedere al servizio");
	}
	
	if(jQuery("#"+id).attr('firstlogin') != null && jQuery("#"+id).attr('firstlogin') != "undefined")
	{
		lastPassword = jQuery("#updatepwd").val();	
	}
	
	setTopAlert(id);
	document.getElementById('opacity_layer').style.display = 'inline';	
	document.getElementById(id).style.display = 'inline';
}

function openDinamicAlert(id, titolo, testo)
{
	jQuery("#title_"+id).html(titolo);
	jQuery("#text_"+id).html(testo);
	setTopAlert(id);
	document.getElementById('opacity_layer').style.display = 'inline';	
	document.getElementById(id).style.display = 'inline';
}

function closeAlert(id)
{
	if(jQuery("#"+id).attr('firstlogin') != null && jQuery("#"+id).attr('firstlogin') != "undefined" && parseInt(jQuery("#"+id).attr('firstlogin'), 10) == 1)
	{
		jQuery("#"+id).find(".container_alert").children("#annullaupdatepwd").remove();
		jQuery("#"+id).find("container_alert").children("#testo_update_pwd").html("Stai eseguendo il primo accesso al sito. Aggiorna la tua password");
	}
	
	if(jQuery("#"+id).attr('firstlogin') != null && jQuery("#"+id).attr('firstlogin') != "undefined")
	{
		jQuery("#updatepwd").val(lastPassword);
		lastPassword = "";	
	}
	
	document.getElementById('opacity_layer').style.display = 'none';	
	document.getElementById(id).style.display = 'none';
}

function getTopAlert(id, top)
{
	var heightPanel = jQuery("#"+id).height();
	var heightWin = jQuery(window).height();
	if(heightPanel >= heightWin) top = Math.ceil(heightWin * 0.5) * -1;
	return top;
}

function setTopAlert(id)
{
	var heightAlert = jQuery("#"+id).height();
	var top = Math.ceil(heightAlert * 0.5) * -1;
	var Y = jQuery(window).scrollTop();
	top = getTopAlert(id, top);
	var pannello_y_default = top;
	document.getElementById(id).style.marginTop = pannello_y_default+'px';
	if(Y > 0)
	{
		var newTop = pannello_y_default + Y;
		pannello_y_default = newTop;
		document.getElementById(id).style.marginTop = pannello_y_default+'px';
	}
}

function getScrollXY() 
{
	var scrOfX = 0, scrOfY = 0;
	if( typeof( window.pageYOffset ) == 'number' ) {
		//Netscape compliant
		scrOfY = window.pageYOffset;
		scrOfX = window.pageXOffset;
	} else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {
		//DOM compliant
		scrOfY = document.body.scrollTop;
		scrOfX = document.body.scrollLeft;
	} else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) {
		//IE6 standards compliant mode
		scrOfY = document.documentElement.scrollTop;
		scrOfX = document.documentElement.scrollLeft;
	}
	//return [ scrOfX, scrOfY ];
	return scrOfY;
}
