var g_oDados = {
	Lang: 		null,
	Pensao:		null
};

function SetDtNasc(sDtNasc)
{
	var oPensao = g_oDados.Pensao  || (g_oDados.Pensao = {});
	oPensao.DtNasc = sDtNasc;
}

function AnoValores(sAnos, sVals)
{
	try
	{
		if(!sAnos || !sVals)
			return;
		
		var aAnos = sAnos.split(";");
		var aVals = sVals.split(";");
		var iSalCount = aAnos.length;
		if(iSalCount == 0)
			return;
		
		//if(iSalCount != aVals.length - 1)
		if(iSalCount != aVals.length)
		//	Parâmetros inconsistentes
			return;
		
		var oPensao   = g_oDados.Pensao  || (g_oDados.Pensao = {});
		var aSalarios = oPensao.Salarios || (oPensao.Salarios = []);
		
		for(var i = aSalarios.length , j = iSalCount - 1 ; j >= 0 ; j--)
		{
			if(aAnos[j] === "")  // Linha vazia?
				continue;
			
			var iAno = parseInt(aAnos[j]);
			if(isNaN(iAno)) // isto já é mais grave...
				continue;
			
			var Valor = aVals[j];
			if(Valor !== "")
			{
				Valor = parseFloat(Valor.replace(",", ".")); // ainda pode dar NaN...
				if(isNaN(Valor))
				//	O valor 0 provocará um erro no cálculo o que alertará o utilizador para o facto de não ter sido possível ler o campo
					Valor = 0;
			}
			else // permitir valores não especificados por forma a possibilitar os anos convencionais
				Valor = null;
			
			aSalarios[i] = {Ano: iAno, ValorNominal: Valor};
			i++;
		}
	}
	catch(ex)
	{
		/* NOOP */
	}
}

function ArranqueAppletFalhou(sReason)
{
	try
	{
		var oApplet = getElementById("idSimulCP");
		if(oApplet)
		{
			setElementVisible(oApplet, false);
			
			if(sReason == "popup")
				setElementVisible("idExplicacaoPopup", true);
		}
	}
	catch(ex)
	{
		alert("Não foi possível iniciar o Simulador do cálculo de pensão.");
	}
}

var g_sVersaoTeste = "1.5";

function parseVersao(sVersao)
{
	return parseFloat(sVersao.substring(0,3));
}

function doNetscape()
{
//	Tem o Java instalado e activado?
	if(!navigator.javaEnabled())
	// 	Desactivado: Você usa o Netscape e necessita de instalar a Java Runtime Environment
		return 1;

//	A versão é maior ou igual à mínima?		
	var sVersao 	 = getElementById("idAppletTeste").getJavaVersion();
	var fVersao 	 = parseVersao(sVersao);
	var fVersaoTeste = parseVersao(g_sVersaoTeste);
	if (fVersao < fVersaoTeste)
		return 2;
	
	return 0;
}

function doMicrosoft()
{
//	Tem o Java instalado e activado?
	var oApplet = getElementById("idAppletTeste");
	if(oApplet == null || typeof(oApplet.getJavaVersion) !== "string")
		return 1;
	
//	A versão é maior ou igual à mínima?
	var sVersao 	 = oApplet.getJavaVersion();
	var fVersao 	 = parseVersao(sVersao);
	var fVersaoTeste = parseVersao(g_sVersaoTeste);
	if(fVersao < fVersaoTeste)
		return 2;
	
	return 0;
}

function getElementById(sId)
{
	if(!sId) return null;
	if(typeof(sId) !== 'string') return sId;
	return document.getElementById(sId);
}
function setElementVisible(sId, bVisible)
{
	var oElem = getElementById(sId);
	if(oElem != null)
		oElem.style.display = (bVisible == null || bVisible) 
								? "" 
								: "none";
}

function checkJavaPlugin()
{
	var iResult = -2;

	var sBrowserName = navigator.appName;
	if(sBrowserName.indexOf("Netscape") != -1) 
		iResult = doNetscape();
	else if(sBrowserName.indexOf("Microsoft") != -1) 
		iResult = doMicrosoft();
	
	if(iResult === 1)
		return"idInstalarJavaPlugin";
	
	if(iResult === 2)
		return "idVersaoJavaPlugin";
	
	// return undefined;
}

// função chamada pela applet para abrir janelas
function openWindow(sUrl, sWinName, sWinStyle, sHtml, bPrint)
{
	var oWin = window.open(sUrl 		|| "", 
						   sWinName 	|| "_blank", 
						   sWinStyle, 
						   false);
	if(oWin)
	{
		if(sHtml)
		{
			var oDoc = oWin.document;
			oDoc.open();
			oDoc.write(sHtml);
			oDoc.close();
		}
		
		if(bPrint)
			oWin.print();
	}
	
	return oWin;
}

function checkPopupBlocker()
{
	function _setStatus(iTimeToCloseMilliseconds)
	{
		try
		{
			_oWinPopup.focus();
			
			var iTimeSeconds = parseInt(iTimeToCloseMilliseconds / 1000);
			
			var sTime = String(iTimeSeconds) + " " + 
						((iTimeSeconds === 1)
						  ? "segundo" 
						  : "segundos");

			_oWinPopup.document.getElementById("idSeconds").innerHTML = " em " +sTime;
		}
		catch(ex)
		{
		//	alert(ex.description);
		}
	}
	
	function _onInterval()
	{
		var iTimeMilliseconds 	 = (new Date()).getTime();
		var iElapsedMilliseconds = iTimeMilliseconds - _iLoadTimeMilliseconds;
		
		var iTimeToAutoCloseMilliseconds = _ciAutoCloseMilliseconds - iElapsedMilliseconds;
		if(iTimeToAutoCloseMilliseconds <= 0)
		{
			iTimeToAutoCloseMilliseconds = 0;
			
			_clearInterval();
		}
		
		_setStatus(iTimeToAutoCloseMilliseconds);
	}
	
	function _clearTimeout()
	{
		if(_iTimeoutHandle >= 0)
		{
			try{ window.clearTimeout(_iTimeoutHandle); }catch(ex){ /*NOOP*/ }
			
			_iTimeoutHandle = -1;
		}
	}
	
	function _clearInterval()
	{
		if(_iIntervalHandle >= 0)
		{
			try{ window.clearInterval(_iIntervalHandle); }catch(ex){ /*NOOP*/ }
			_iIntervalHandle = -1;
		}
	}
	
	function _safeClose()
	{
		_clearTimeout();
		
		_clearInterval();
		
		if(_oWinPopup != null)
		{
			//_oWinPopup.document.body.onclick = null;
			
			if(!_oWinPopup.closed)
				try
				{ 
					_oWinPopup.close();
				}
				catch(ex)
				{
					/*NOOP*/
				}
		}
	}
	
	var _oWinPopup = window.open("SimuladorCP/SimuladorCP_PopupTest.htm", 
								 "SimuladorCPPopupTestWindow",
								 "width=500,height=180,top=10,left=450,toolbar=no,location=no,status=no,menubar=no,resizable=no,scrollbars=no",
								 false);
	
	if(_oWinPopup == null)
	{
	//	Possibly a popup blocker is active, so warn user...
		return "idExplicacaoPopup";
	}
	
//	Fechar a janela ao fim de uns segundos ou por click do utilizador
	
	_oWinPopup.document.body.onclick = _safeClose;
	
	var _ciAutoCloseMilliseconds 	= 10000;
	var _ciUpdateStatusMilliseconds = 200;
	var _iLoadTimeMilliseconds = (new Date()).getTime();
	var _iTimeoutHandle  = window.setTimeout(_safeClose,   _ciAutoCloseMilliseconds		);
	var _iIntervalHandle = window.setInterval(_onInterval, _ciUpdateStatusMilliseconds	);
	
	//return undefined;
}

function checkBrowser()
{
	var sIdDivMostrar = checkJavaPlugin();
	
	if(!sIdDivMostrar && g_oDados.TestPopup)
		sIdDivMostrar = checkPopupBlocker();
	
	if(!sIdDivMostrar)
		sIdDivMostrar = "idSimulCP";
		
	setElementVisible(sIdDivMostrar);
}