
// -----------------------------------------------------------------------------
// getXmlNodeValue - Used internally to get xml node values
// -----------------------------------------------------------------------------
function getXmlNodeValue(xmlNode) {
    if (navigator.appVersion.match(/\bSafari\b/)) {
       return xmlNode.firstChild.nodeValue;
    } else if (navigator.appVersion.match(/\bMSIE\b/)) {
		return xmlNode.text;
	} else
		return xmlNode.textContent;
}

// -----------------------------------------------------------------------------
// addOption - Used internally to add options to select elements
// -----------------------------------------------------------------------------
function addOption(selectElement, newOption) {
    Try.these( function() { selectElement.add(newOption, null); },
	           function() { selectElement.add(newOption, selectElement.length); }
			  );
}

// -------------------------------------------------------------------- VALIDAÇÃO NIF ARRENDATARIO
var resultValidationArrendat;

function checkArrendatario(nifArrendatario, isHabitacional) {
	var nifArrendatario = nifArrendatario;
	var isContrHab = isHabitacional;
	
	if (isEmpty( nifArrendatario ) || !isNumeroContribuinte( nifArrendatario ) || !isContrHab) {
		return;
	}

	if($('nifArrendatario')!=null) {
		$('nifArrendatario').disabled = true;
	}
	
	if ($('tipoContrHab')!=null) {
		$('tipoContrHab').disabled = true;
		$('tipoContrNaoHab').disabled = true;
	}
	
    var url = "validaArrendatario.jsp";
    var pars = 'nifArrendatario=' + nifArrendatario;

    var requester = new Ajax.Request(
		url, 
		{
			method: 'post', 
			parameters: pars, 
			onComplete: processCheckArrendatario
		});
}

function processCheckArrendatario (requester) {
	var validacao = requester.responseXML.getElementsByTagName("validaArrendatario")[0];
	var codigo = validacao.getElementsByTagName("codigo")[0];
	
	if (getXmlNodeValue(codigo) != 0) {
		resultValidationArrendat = getXmlNodeValue(validacao.getElementsByTagName("msg")[0]);
	}

	if($('nifArrendatario')!=null) {
		$('nifArrendatario').disabled = false;
	}
	
	if ($('tipoContrHab')!=null) {
		$('tipoContrHab').disabled = false;
		$('tipoContrNaoHab').disabled = false;
	}
}

// -------------------------------------------------------------------- OBTENÇÃO DA RENDA IMEDIATA (COMUNICAÇÃO ACORDO)
var numProcesso;
var rendaCessante;
var faseamento;
var rendaMax;
var dataComunicacao;
	
function obterRendaImediata() {

	numProcesso = document.getElementsByName("numProcesso")[0];
	rendaCessante = document.getElementsByName("rendaCessante")[0];
	faseamento = document.getElementsByName("faseamento")[0];
	rendaMax = document.getElementsByName("rendaNova")[0];
	dataComunicacao = document.getElementsByName("dataComunicacao")[0];

	if (numProcesso==null || isEmpty(numProcesso.value) || 
		rendaCessante==null || isEmpty(rendaCessante.value) || 
		faseamento==null || isEmpty(faseamento.value) || 
		rendaMax==null || isEmpty(rendaMax.value) ) {
		return;
	}
		    
    var url = "obterRendaImediata.jsp";
    var pars = 'numProcesso=' + numProcesso.value + 
    			'&rendaCessante=' + rendaCessante.value + 
    			'&faseamento=' + faseamento.value + 
    			'&dataComunicacao=' + dataComunicacao.value + 
    			'&rendaMax=' + rendaMax.value;

    var requester = new Ajax.Request(
		url, 
		{
			method: 'post', 
			parameters: pars, 
			onComplete: processRendaImediata
		});
}

function processRendaImediata(requester) {
	var renda = requester.responseXML.getElementsByTagName("renda")[0];
	$('renda1oAno').value = getXmlNodeValue(renda);
}

// -------------------------------------------------------------------- OBTENÇÃO REGIÕES DA ORDEM (INSCRIÇÃO TÉCNICO)
var categoria;
var regiao;

function obterRegioes() {

	categoria = document.getElementsByName("categoria")[0];
	regiao = document.getElementsByName("tipoRegiao")[0];
		
	if (regiao != null)
		regiao.options.length=0;

    categoria.disabled = true;
    
    var url = "obterRegioes.jsp";
    
    var pars = 'categoria=' + categoria.value;

    var requester = new Ajax.Request(
		url, 
		{
			method: 'post', 
			parameters: pars, 
			onComplete: processRegioes
		});
}

function processRegioes(requester) {

	var regioes = requester.responseXML.getElementsByTagName("regioes")[0];
	
    regiao.options.length = 1;

    var nodes = $A(regioes.childNodes);

    nodes.each(function(regiaoNode) {
        if (regiaoNode.nodeName == "regiao") {
            var newOption = document.createElement('option');
            newOption.value = getXmlNodeValue(regiaoNode);
            newOption.text = getXmlNodeValue(regiaoNode);
            addOption(regiao, newOption);
        }
    });
    categoria.disabled = false;
}

// -------------------------------------------------------------------- OBTENÇÃO MOTIVOS (PROPOSTAS / DESPACHOS)
var numRows;

function obterMotivos(numRowsToUpdate) {
	numRows = numRowsToUpdate;
    document.getElementById("situacaoFinal").disabled = true;
    
    var url = "obterMotivos.jsp";
    var pars = 'situacaoInicial=' + document.getElementById("situacaoInicial").value + 
    			'&situacaoFinal=' + document.getElementById("situacaoFinal").value;

    var requester = new Ajax.Request(
		url, 
		{
			method: 'post', 
			parameters: pars, 
			onComplete: processMotivos
		});
}

function processMotivos(requester) {

	var motivos = requester.responseXML.getElementsByTagName("motivos")[0];
	var nodes = $A(motivos.childNodes);
	    
	for(var i=1; i<=numRows; i++) {
		var motivoId = document.getElementById('motivoId'+i);
		motivoId.options.length = 1;
	
	    nodes.each(function(motivo) {
	        if (motivo.nodeName == "motivo") {
	            var newOption = document.createElement('option');
	            var motivoNodes = $A(motivo.childNodes);
	            motivoNodes.each(function(motivoNode) {
	                if (motivoNode.nodeName == 'motivoId')
	                    newOption.value = getXmlNodeValue(motivoNode);
	                if (motivoNode.nodeName == 'descr')
	                    newOption.text = getXmlNodeValue(motivoNode);
	            });

	            addOption(motivoId, newOption);
	        }
	    });
	}
    
    document.getElementById("situacaoFinal").disabled = false;
    /*
    if(document.getElementById('motivoId1').options.length==1) {
    	alert("Não existem motivos para fazer evoluir o pedido do estado actual para a situação final seleccionada.");
    }
    */
}

// -------------------------------------------------------------------- OBTENÇÃO MUNICÍPIOS 
var codDist;
var codMun;
var codFreg;

function obterMunicipios(row) {

	codDist = document.getElementsByName("codDist"+row)[0];
	codMun = document.getElementsByName("codMun"+row)[0];
	codFreg = document.getElementsByName("codFreg"+row)[0];
		
	if (codMun != null)
		codMun.options.length=0;
	if (codFreg != null)
		codFreg.options.length=0;
	
	if (codDist.value == "") {
        if (codMun!=null)
        	codMun.options.length = 1;
        if (codFreg != null)
        	codFreg.options.length = 1;
        return;
    }

    codDist.disabled = true;
    
    var url = "obterMunicipios.jsp";
    
    var pars = 'distrito=' + codDist.value;

    var requester = new Ajax.Request(
		url, 
		{
			method: 'post', 
			parameters: pars, 
			onComplete: processMunicipios
		});
}

function processMunicipios(requester) {

	var municipios = requester.responseXML.getElementsByTagName("municipios")[0];
	
    codMun.options.length = 1;
    if (codFreg != null)
    	codFreg.options.length = 1;

    var nodes = $A(municipios.childNodes);

    nodes.each(function(mun) {
        if (mun.nodeName == "municipio") {
            var newOption = document.createElement('option');
            var municipioNodes = $A(mun.childNodes);
            municipioNodes.each(function(municipioNode) {
                if (municipioNode.nodeName == 'codMun')
                    newOption.value = getXmlNodeValue(municipioNode);
                if (municipioNode.nodeName == 'descr')
                    newOption.text = getXmlNodeValue(municipioNode);
            });
            addOption(codMun, newOption);
        }
    });
    codDist.disabled = false;
}

// -------------------------------------------------------------------- OBTENÇÃO FREGUESIAS
function obterFreguesias(row) {
	codDist = document.getElementsByName("codDist"+row)[0];
	codMun = document.getElementsByName("codMun"+row)[0];
	codFreg = document.getElementsByName("codFreg"+row)[0];
		
	if (codFreg != null)
		codFreg.options.length = 0;	
	
	if (codMun.value == "") {
        if (codFreg != null)
        	codFreg.options.length = 1;
        return;
    }

    codDist.disabled = true;	
    if (codMun != null)
    	codMun.disabled = true;

    var url = "obterFreguesias.jsp";
    
    var pars = 'distrito=' + codDist.value + '&municipio=' + codMun.value;

    var requester = new Ajax.Request(
			url, 
			{
				method: 'post', 
				parameters: pars, 
				onComplete: processFreguesias
			});
}

function processFreguesias(requester) {
    var freguesias = requester.responseXML.getElementsByTagName("freguesias")[0];

	if (codFreg != null)
        codFreg.options.length = 1;

    var nodes = $A(freguesias.childNodes);
	

	    nodes.each(function(freg) {
	        if (freg.nodeName == 'freguesia') {
	            var newOption = document.createElement('option');
	            var freguesiaNodes = $A(freg.childNodes);
	            freguesiaNodes.each(function(freguesiaNode) {
	                if (freguesiaNode.nodeName == 'codFreg')
	                    newOption.value = getXmlNodeValue(freguesiaNode);
	                if (freguesiaNode.nodeName == 'descr')
	                    newOption.text = getXmlNodeValue(freguesiaNode);
	            });
	            addOption(codFreg, newOption);
	        }
	    });
    codDist.disabled = false;
    codMun.disabled = false;
}

// -------------------------------------------------------------------- OBTENÇÃO DOS PAISES CONSOANTE A REGIAO - SIGA_PORTING

var codRegiao;
var codPais;

function obterPaises(row) {

	codRegiao = document.getElementsByName("codRegiao"+row)[0];
	codPais = document.getElementsByName("codPais"+row)[0];
		
	if (codPais != null)
		codPais.options.length=0;
	
	if (codRegiao.value == "") {
        if (codPais!=null)
        	codPais.options.length = 1;
        return;
    }

    codRegiao.disabled = true;
    
    var url = "obterPaises.jsp";
    
    var pars = 'regiao=' + codRegiao.value;

    var requester = new Ajax.Request(
		url, 
		{
			method: 'post', 
			parameters: pars, 
			onComplete: processPaises
		});
}

function processPaises(requester) {

	var paises = requester.responseXML.getElementsByTagName("paises")[0];
	
    codPais.options.length = 1;
    if (codPais != null)
    	codPais.options.length = 1;

    var nodes = $A(paises.childNodes);

    nodes.each(function(ps) {
        if (ps.nodeName == "pais") {
            var newOption = document.createElement('option');
            var paisNodes = $A(ps.childNodes);
            paisNodes.each(function(paisNode) {
            	if (paisNode.nodeName == 'codPais')
	                newOption.value = getXmlNodeValue(paisNode);
                if (paisNode.nodeName == 'descr')
                    newOption.text = getXmlNodeValue(paisNode);
            });
            addOption(codPais, newOption);
        }
    });
    codRegiao.disabled = false;
}


