var isIE = (window.navigator.userAgent.indexOf("MSIE") > 0);

if (! isIE) {
  HTMLElement.prototype.__defineGetter__("innerText", 
              function () { return(this.textContent); });
  HTMLElement.prototype.__defineSetter__("innerText", 
              function (txt) { this.textContent = txt; });
}

tipoObjectoSelObj = null; 
tipoReencaminhamentoSel = null;

var stationHasChanged=false;

function init()
{
	setTipoObjectoSel();
	showTipoObjectoSel();
	setTipoReencaminhamentoSel();
	showTipoReencaminhamentoSel();
	setTarifa();
	stationHasChanged = false;
}

function setTarifaIfStationHasChanged()
{
	if (stationHasChanged)
	{
		setTarifa();
		stationHasChanged=false;
	}
}

function setTipoObjectoSel()
{
	var theForm = document.forms["sigaForm"];
	tipoObjectoCodeSel = document.getElementById("sigaForm:tipoObjectoCodeSel").value;
	
    for(i=0; i<theForm.elements.length; i++)
    {
		if (theForm.elements[i].name == "sigaForm:tipoObjectoSel")
		{
			if (theForm.elements[i].value == tipoObjectoCodeSel) //TIPO_OBJECTO_CORRESPONDENCIA
			{	
				theForm.elements[i].checked = true;
				break;
			}
			else if (theForm.elements[i].value == tipoObjectoCodeSel) //TIPO_OBJECTO_ENCOMENDA
			{
				theForm.elements[i].checked = true;
				break;
			}
		}
	}
}

function showTipoObjectoSel()
{
	var theForm = document.forms["sigaForm"];

    for(i=0; i<theForm.elements.length; i++)
    {
		if (theForm.elements[i].name == "sigaForm:tipoObjectoSel")
		{
			if (theForm.elements[i].value == "9" && theForm.elements[i].checked)
			{	
				tipoObjectoSelObj = theForm.elements[i];
				//hide nº de objecto (label, input e hint)
				document.getElementById("sigaNumObjectoLabel").style.display = "block";
				document.getElementById("sigaForm:hintNumeroObjecto").style.visibility = "visible";
				document.getElementById("sigaForm:tipoObjectoCodeSel").value = theForm.elements[i].value;
				//show nº de encomenda (label e input)
				document.getElementById("sigaNumEncomendaLabel").style.display = "none";
				break;
			}
			else if (theForm.elements[i].value == "10" && theForm.elements[i].checked)
			{
				tipoObjectoSelObj = theForm.elements[i];
				//show nº de objecto (label, input e hint)
				document.getElementById("sigaNumObjectoLabel").style.display = "none";
				document.getElementById("sigaForm:hintNumeroObjecto").style.visibility = "hidden";
				//hide nº de encomenda (label e input)
				document.getElementById("sigaNumEncomendaLabel").style.display = "block";
				document.getElementById("sigaForm:tipoObjectoCodeSel").value = theForm.elements[i].value;
				break;
			}
		}
	};

	enableOrdisableFields(true);
}

function setTipoReencaminhamentoSel()
{
	var theForm = document.forms["sigaForm"];
	tipoReencaminhamentoSel = document.getElementById("sigaForm:tipoReencaminhamentoCodeSel").value;

	if (tipoReencaminhamentoSel == -1) {
		return;
	}
	
    for(i=0; i<theForm.elements.length; i++)
    {
		if (theForm.elements[i].name == "sigaForm:tipoReencaminhamento")
		{
			if (theForm.elements[i].value == tipoReencaminhamentoSel) //TIPO_REENC_OUTRA_ESTACAO
			{	
				theForm.elements[i].checked = true;
				setEnableModusOnTipoReencaminhamentoFields(false, true, true);
				break;
			}
			else if (theForm.elements[i].value == tipoReencaminhamentoSel) //TIPO_REENC_NOVO_ENDERECO
			{
				theForm.elements[i].checked = true;
				setEnableModusOnTipoReencaminhamentoFields(true, false, true);
				break;
			}
			else if (theForm.elements[i].value == tipoReencaminhamentoSel) //TIPO_REENC_NOVO_ENDERECO2
			{
				theForm.elements[i].checked = true;
				setEnableModusOnTipoReencaminhamentoFields(true, true, false);
				break;
			}
			else if (theForm.elements[i].value == tipoReencaminhamentoSel) //TIPO_REENC_ENDERECO_CONSTANTE_AVISO
			{
				theForm.elements[i].checked = true;
				setEnableModusOnTipoReencaminhamentoFields(true, true, true);
				break;
			}
		}
	}
}

function showTipoReencaminhamentoSel()
{
	var theForm = document.forms["sigaForm"];

    for(i=0; i<theForm.elements.length; i++)
    {
		if (theForm.elements[i].name == "sigaForm:tipoReencaminhamento")
		{
			if (theForm.elements[i].value == "2" && theForm.elements[i].checked) //TIPO_REENC_OUTRA_ESTACAO
			{	
				tipoReencaminhamentoSel = theForm.elements[i];
				document.getElementById("sigaForm:tipoReencaminhamentoCodeSel").value=theForm.elements[i].value;
				setEnableModusOnTipoReencaminhamentoFields(false, true, true);
				break;
			}
			else if (theForm.elements[i].value == "4" && theForm.elements[i].checked) //TIPO_REENC_NOVO_ENDERECO
			{
				tipoReencaminhamentoSel = theForm.elements[i];
				document.getElementById("sigaForm:tipoReencaminhamentoCodeSel").value=theForm.elements[i].value;
				setEnableModusOnTipoReencaminhamentoFields(true, false, true);
				break;
			}
			else if (theForm.elements[i].value == "11" && theForm.elements[i].checked) //TIPO_REENC_NOVO_ENDERECO2
			{
				tipoReencaminhamentoSel = theForm.elements[i];
				document.getElementById("sigaForm:tipoReencaminhamentoCodeSel").value=theForm.elements[i].value;
				setEnableModusOnTipoReencaminhamentoFields(true, true, false);
				break;
			}
			else if (theForm.elements[i].value == "3" && theForm.elements[i].checked) //TIPO_REENC_ENDERECO_CONSTANTE_AVISO
			{
				tipoReencaminhamentoSel = theForm.elements[i];
				document.getElementById("sigaForm:tipoReencaminhamentoCodeSel").value=theForm.elements[i].value;
				setEnableModusOnTipoReencaminhamentoFields(true, true, true);
				break;
			}
		}
	}
	
}

function switchStateComponents(startId, endId, newstate)
{
	var startObj = document.getElementById(startId);  

	if (startObj != null)     
	{
		var formObj = startObj.form;
		var itemsFound = false;
	
		for (i=0;i<formObj.elements.length;i++) 
		{
			var element = formObj.elements[i];
			
			if (element.id == startId)
				itemsFound = true;
	
			if (itemsFound == true) 
			{        
				element.disabled = newstate;
				
				if (element.id == endId) 
					break;               
			}     
		}
	}
}


function setEnableModusOnTipoReencaminhamentoFields(outraEstacaob, novoEnderecob, novoEnderecob2)
{
	//Actualizar o modo de Enable/Disable dos campos


	//enable ou disable campos da outraEstacao
	/*
	document.getElementById("sigaForm:sigaEstacaoDestinoCodigo").disabled = outraEstacaob;
	document.getElementById("sigaForm:sigaEstacaoDestino").disabled = outraEstacaob;
	document.getElementById("sigaForm:sigaEstacaoDestinoLink").disabled = outraEstacaob;
	*/
	switchStateComponents("sigaForm:sigaEstacaoStart","sigaForm:sigaEstacaoEnd",outraEstacaob);
	
	//enable ou disable campos do NovoEndereco
	/*
	document.getElementById("sigaForm:sigaNovoEnderecoMorada").disabled = novoEnderecob;
	document.getElementById("sigaForm:sigaNovoEnderecoLocalidade").disabled = novoEnderecob;
	document.getElementById("sigaForm:sigaNovoCodigoPostal_P").disabled = novoEnderecob;
	document.getElementById("sigaForm:sigaNovoCodigoPostal_C").disabled = novoEnderecob;
	document.getElementById("sigaForm:sigaNovoCodigoPostal_L").disabled = novoEnderecob;
	*/
	switchStateComponents("sigaForm:novoEnderecoStart","sigaForm:novoEnderecoEnd",novoEnderecob);
	
	//enable ou disable campos do NovoEndereco2
	/*
	document.getElementById("sigaForm:sigaNovoEnderecoMorada2").disabled = novoEnderecob;
	document.getElementById("sigaForm:sigaNovoEnderecoLocalidade2").disabled = novoEnderecob;
	document.getElementById("sigaForm:sigaNovoCodigoPostal_P2").disabled = novoEnderecob;
	document.getElementById("sigaForm:sigaNovoCodigoPostal_C2").disabled = novoEnderecob;
	document.getElementById("sigaForm:sigaNovoCodigoPostal_L2").disabled = novoEnderecob;
	*/
	switchStateComponents("sigaForm:novoEnderecoStart2","sigaForm:novoEnderecoEnd2",novoEnderecob2);	
}

/*
function activateTipoReencaminhamento(tipoReencaminhamentoObj)
{
	disableOutraEstacaob = true;
	disableNovoEnderecob = true;
	disableNovoEnderecob2 = true;

	//Reset aos Campos
	setEnableModusOnTipoReencaminhamentoFields(disableOutraEstacaob,disableNovoEnderecob,disableNovoEnderecob2);

	if (tipoReencaminhamentoObj.value == "2") //TIPO_REENC_OUTRA_ESTACAO
	{
		disableOutraEstacaob = false;
	}
	else if (tipoReencaminhamentoObj.value == "4") //TIPO_REENC_NOVO_ENDERECO
	{
		disableNovoEnderecob = false;
	}
	else if (tipoReencaminhamentoObj.value == "11") //TIPO_REENC_NOVO_ENDERECO2
	{
		disableNovoEnderecob2 = false;
	}
	else if (tipoReencaminhamentoObj.value == "3") //TIPO_REENC_ENDERECO_CONSTANTE_AVISO
	{
		
	}
	else //TIPO_REENC_ENDERECO_DESCONHECIDO
	{
		alert("Tipo de Reencaminhamento desconhecido.\n Por favor, contacte os seriços centrais a reportar o problema.\n Obrigado.");
	};

	//Actualizar os Campos
	setEnableModusOnTipoReencaminhamentoFields(disableOutraEstacaob,disableNovoEnderecob,disableNovoEnderecob2);
}
*/
function searchEstacoes(formObj,codeObj,descObj)
{

	window.open("m-sigaEstacaoSearch.jsf?refresh=1&formObj="+formObj+"&codeObj="+codeObj+"&descObj="+descObj,
				"_blank", 
				"width=570, height=600, status=1, scrollbars=1");
}

//9905559*FUNDO DE VILA (S.JOÃO DA MADEIRA)*RUA DO PODER LOCAL, S/Nº FUNDO DE VILA*3700 - 890 ROMARIZ*ROMARIZ - ROMARIZ --> 3700
function getPostalCode (descObj)
{
  var val = descObj.value;
  
  for (i=0;i<3;i++)
  {
  	if (val != null && val.indexOf('*') > -1)
  		val = val.substr(val.indexOf('*')+1,val.length);
  	else
  		return null;
  };
  
  if (val.length < 4)
  	return null;
  else
  {
  	return val.substr(0,4);
  }
}

function setEstacaoSel(codeObjSel,descObjSel)
{
	var theForm = document.forms["sigaEstacaoSearch"];
			
	if (codeObjSel != null && descObjSel != null)
	{
		formObj = document.getElementById("sigaEstacaoSearch:formObj").value;
		codeObj = document.getElementById("sigaEstacaoSearch:codeObj").value;
		descObj = document.getElementById("sigaEstacaoSearch:descObj").value;
		formObjAux = "";

		if (formObj.indexOf(':') > 0)
			formObjAux = formObj.substr(0,formObj.indexOf(':'));
		else
			formObjAux = formObj;

		opener.document.getElementById(formObj+codeObj).value = codeObjSel; //theForm.elements[i].value.substr(0,theForm.elements[i].value.indexOf('*'));
		opener.document.getElementById(formObj+descObj).value = descObjSel; //theForm.elements[i].value;

		opener.setStationHasChanged();

		window.close();
		
		//return false;
	}
	else
		alert("Tem que escolher uma Estação!");
}

function enableOrdisableFields(disabledq)
{
	document.getElementById("sigaForm:sigaEstacaoOrigem").disabled=disabledq;
	document.getElementById("sigaForm:sigaEstacaoDestino").disabled=disabledq;
}

function setTarifa()
{
	setTarifa(false);
}

function setTarifa(openerq)
{
    var reply1 = function(data)
    {
    	if (data != null && typeof data == 'object' && data.resultado != null) 
    	{
    		resultStr = dwr.util.toDescriptiveString(data.resultado, 0);
    		tarifa = '';
    		iva = '';
    		if (resultStr.indexOf('*') < 0)
    		{
    			tarifa = resultStr;
    		}
    		else
    		{
    			tarifa = resultStr.substr(0,resultStr.indexOf('*'));
    			iva = resultStr.substr(resultStr.indexOf('*')+1,resultStr.length);
    		}
    		
    		document.getElementById("sigaForm:sigaTarifa").innerText = 
    			" "+tarifa+" \u20AC";
    		
    		document.getElementById("sigaForm:sigaTarifaObj").value =
    			" "+tarifa+" \u20AC";
    	}
    	else
    	{
    		document.getElementById("sigaForm:sigaTarifa").innerText = "";
    		document.getElementById("sigaForm:sigaTarifaObj").value = "";
    	};
    };

	if (tipoReencaminhamentoSel == -1) {
		return;
	}
	
	var postalCode = null;

	if (postalCode == null || postalCode == '')
	{
		tipoReencaminhamentoObj = document.getElementById('sigaForm:tipoReencaminhamentoCodeSel');
		
		//Dependendo do tipo de Reencimnhamento, temos de ir buscar o valor do codigo postal correcto
		if (tipoReencaminhamentoObj.value == "2") //TIPO_REENC_OUTRA_ESTACAO
		{
			postalCode = getPostalCode(document.getElementById('sigaForm:sigaEstacaoDestino'));
		}
		else if (tipoReencaminhamentoObj.value == "4") //TIPO_REENC_NOVO_ENDERECO
		{
			postalCode = document.getElementById('sigaForm:sigaNovoCodigoPostal_P').value;
		}
		else if (tipoReencaminhamentoObj.value == "11") //TIPO_REENC_NOVO_ENDERECO2
		{
			postalCode = document.getElementById('sigaForm:sigaNovoCodigoPostal_P2').value;
		}
		else if (tipoReencaminhamentoObj.value == "3") //TIPO_REENC_ENDERECO_CONSTANTE_AVISO
		{
			postalCode = document.getElementById('sigaForm:sigaCodigoPostal_P').value;
		}
		else //TIPO_REENC_ENDERECO_DESCONHECIDO
		{
			alert("Tipo de Reencaminhamento desconhecido.\n Por favor, contacte os seriços centrais a reportar o problema.\n Obrigado.");
		};
	};

	if (postalCode == null || postalCode == '')
		return;

	SigaManager.calcTarifa(tipoReencaminhamentoSel.value*1,tipoObjectoSelObj.value*1,postalCode*1,reply1);

}

function setTarifaIfValidPostalCode(postalCodeObj)
{
	if (postalCodeObj != null && postalCodeObj.value != null && (postalCodeObj.value.length == 4 || postalCodeObj.value.length == 0))
		setTarifa();
}


