function display_div(id,tipo,listid){
	var escondidos;
	//display_div('cpais','none',[1,2]);
	if(tipo=='none'){
		if(document.getElementById('0'+id)) document.getElementById('0'+id).style.display=tipo;
		for(var i=0;i<(listid.length+1);i++){
			if(document.getElementById(listid[i]+''+id)) {
				document.getElementById(listid[i]+''+id).style.display=tipo;
				//escondidos=escondidos+listid[i]+''+id+',';
			}
		}
		//alert("Escondidos:"+escondidos+" array("+listid[0]+","+listid[1]+","+listid[2]);
	}else {
		document.getElementById(id).style.display=tipo;
		//alert("Visivel:"+id);
	}

}

function codex_mostra(id){
	var iElementId1='cp1';
	var iElementId2='codex1';
	var element;

	element = document.getElementById(iElementId2);
	if(id==1){
		document.getElementById('cp1').maxLength='4';
		element.style.display='block';
	}else if(id==2){
		document.getElementById('cp1').maxLength='5';
		element.style.display='none';
	}
}

//FORMATO DA DATA TEM QUE SER DD/MM/YYYY
function soma_noites(noites,data1,data2){
	var montharray=new Array("","Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec");
	var date1 = document.getElementById(data1).value;

  	date1 = date1.split("/");

	dia1=(Math.floor(date1[0])-1);
	mes1=(Math.floor(date1[1]));
	ano1=date1[2];
	var dt=montharray[mes1]+" "+dia1+", "+ano1; alert('data1:'+dt);
	var eDate1 = new Date(dt);//Date(mes,dia,ano)

	//SOMA as noites à data_e
	var soma = eDate1.getDate() + noites;
	eDate1.setDate(soma);

	//alert("Data2:"+(eDate1.getDate()+1)+"/"+(eDate1.getMonth()+2)+"/"+eDate1.getYear());

	//Actualiza campo da Data de Saída
	document.getElementById(data2).value = eDate1.getDate()+"/"+eDate1.getMonth()+"/"+eDate1.getYear();
}

//FORMATO DA DATA TEM QUE SER DD/MM/YYYY
function conta_noites(id,data1,data2){
	var montharray=new Array("","Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec");

	var date1 = document.getElementById(data1).value;
  	var date2 = document.getElementById(data2).value;

  	date1 = date1.split("/");
  	date2 = date2.split("/");

	dia1=(Math.floor(date1[0]));
	dia2=(Math.floor(date2[0]));
	mes1=(Math.floor(date1[1]));
	mes2=(Math.floor(date2[1]));
	ano1=date1[2];
	ano2=date2[2]; 

	var eDate=montharray[mes1]+" "+dia1+", "+ano1;
	var sDate=montharray[mes2]+" "+dia2+", "+ano2;

	//alert("ini="+eDate+" fim="+sDate);

	var noites=(Math.round((Date.parse(sDate)-Date.parse(eDate))/(24*60*60*1000))*1);
        //alert("Noites:"+noites);
	//apresenta o número de noites
	document.getElementById(id).value=Math.abs(noites);

	if(false && noites<0) {//Caso fique negativo
		var eDate1 = new Date(eDate);//Date(mes,dia,ano)
		//Coloca a Data de Saída um dia depois da Entrada
		if((eDate1.getMonth())>11) document.getElementById('data_s').value=(eDate1.getDate())+"/01/"+eDate1.getYear();
                else document.getElementById('data_s').value=(eDate1.getDate())+"/"+(eDate1.getMonth()+2)+"/"+eDate1.getYear();
	}


}


//Funcão para criar opções num determinado SELECT  <-- MAS TEM PROBLEMAS COM O OPERA e MOZILLA
//Não esta a ser utilizada
function build_menu(id,list_cod,list_txt,num){

	var cc = document.getElementById(id);
	// remove all options from it
	while ( cc.options.length )
	{
		cc.remove(cc.options[0]);
	}

	if(num=="") tot_opcoes=list_cod.length;
	else tot_opcoes=num;

	for ( var i = 0; i < tot_opcoes; i++ ){
		// create new option element
		var newOpt=document.createElement('option');

		if(num=="") newOpt.text=list_txt[i];
		else newOpt.text=i;
		// try adding the option to the select object
		try
		{
			cc.add(newOpt,null); // standards compliant
		}
		catch(ex)
		{
			cc.add(newOpt); // IE only
		}
		// coloca elemento da lista de codigos
		if(num=="") cc.options[i].value = list_cod[i];
		else cc.options[i].value = i;
	}
	// set selected index
	cc.selectedIndex = 0;
}


/***********************************************************
 *         Funções de controlo de caracteres
 *********************************************************/
function pasteThisCharsetOnly( charset, caseSensitive){
 var IsOK = false;
 if (window.clipboardData) {
     var clipChar = window.clipboardData.getData("Text");
     var Char ;

      if ( clipChar == null || clipChar == "" )
          return IsOK;

     if (caseSensitive && (caseSensitive == true)) {
            clipChar = clipChar.toLowerCase();
     }



     for (i = 0; i < clipChar.length  && IsOK  == false; i++)    {
         Char =  clipChar.charAt(i);
         if (charset.indexOf(Char) == -1)   {
              IsOK = true;
           }
      }
     if(IsOK ){
       window.clipboardData.setData("Text","");
     }
 }
 return IsOK;

}
//----------------------------------------------------
//-----------------------------------------------------------------------------
function thisCharsetOnly(e,charset,caseSensitive)
{
var key;
var keychar;

if (window.event)
   key = window.event.keyCode;
else if (e)
   key = e.which;
else
   return true;

keychar = String.fromCharCode(key);
if (caseSensitive && (caseSensitive == true)) {
    keychar = keychar.toLowerCase();
}

// control keys
if ((key==null) || (key==0) || (key==8) ||
    (key==9) || (key==13) || (key==27) )
   return true;

// alphas and numbers
else if (((charset).indexOf(keychar) > -1))
   return true;
else
   return false;
}
//----------------------------------------------------
function portugueseNameFilter(event){
return thisCharsetOnly(event,'QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnmáàéêèíìóòúùãõâôçºª.ÁÀÉÊÈÍÌÓÒÚÙÔÕÃÂÇ ',true);
}
function pastePortugueseNameFilter(){
 return pasteThisCharsetOnly('QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnmáàéêèíìóòúùãõâôçºª.ÁÀÉÊÈÍÌÓÒÚÙÔÕÃÂÇ ',true);
}


function portugueseAddressFilter(event){
return thisCharsetOnly(event,'QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnmáàéêèíìóòúùãõâôçºª.ÁÀÉÊÈÍÌÓÒÚÙÔÕÃÂÇ, -_:/1234567890',true);
}
function pastePortugueseAddressFilter(){
 return pasteThisCharsetOnly('QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnmáàéêèíìóòúùãõâôçºª.ÁÀÉÊÈÍÌÓÒÚÙÔÕÃÂÇ, -_:/1234567890',true);
}
//-----------------------------------------------------------------------------
function pasteNumberOnly(dec){

  if (window.clipboardData) {
 var clipChar = window.clipboardData.getData("Text");
 var ValidChars = "0123456789."
 var Char ;
 var IsNumber=false;

  if ((clipChar == null) || (clipChar == ""))
    return true;

 for (i = 0; (i < clipChar.length)  && (IsNumber == false); i++)    {
     Char =  clipChar.charAt(i);
     if (ValidChars.indexOf(Char)== -1){
             IsNumber = true;
     }
  }

 if(IsNumber){
   window.clipboardData.setData("Text","");
 }
  }

return IsNumber;
}

function numbersOnly(myfield, e, dec){
	var key;
	var keychar;

	if (window.event)
	   key = window.event.keyCode;
	else if (e)
	   key = e.which;
	else
	   return true;
	keychar = String.fromCharCode(key);

	// control keys
	if ((key==null) || (key==0) || (key==8) ||
	    (key==9) || (key==13) || (key==27) )
	   return true;

	// numbers
	else if ((("0123456789").indexOf(keychar) > -1))
	   return true;

	// decimal point jump
	/*
	else if (dec && (keychar == "."))
	   {
	   myfield.form.elements[dec].focus();
	   return false;
	   }
	*/
	else if ((keychar == ".") && dec && (dec==true))
	   {
	   return true;
	   }
	else
	   return false;
}
//-------------------------------------------------------------------
// isBlank(value)
//   Returns true if value only contains spaces
//-------------------------------------------------------------------
function isBlank(val){
	if(val==null){return true;}
	for(var i=0;i<val.length;i++) {
		if ((val.charAt(i)!=' ')&&(val.charAt(i)!="\t")&&(val.charAt(i)!="\n")&&(val.charAt(i)!="\r")){return false;}
	}
	return true;
}

function valid_mail(form,msg) {
	var field = form;
	var str = field.value;
	if (str!=""){
		if (window.RegExp) {
			var reg1str = "(@.*@)|(\\.\\.)|(@\\.)|(\\.@)|(^\\.)";
			var reg2str = "^.+\\@(\\[?)[a-zA-Z0-9\\-\\.]+\\.([a-zA-Z]{2,3}|[0-9]{1,3})(\\]?)$";
			var reg1 = new RegExp(reg1str);
			var reg2 = new RegExp(reg2str);
			if (!reg1.test(str) && reg2.test(str))
			  return true;
			field.focus();
			field.select();
			janela_zonotel(msg,0);//alert(msg);
			return false;
		} else {
			if(str.indexOf("@") >= 0)
			  return true;
			field.focus();
			field.select();
			janela_zonotel(msg,0);//alert(msg);
			return false;
		}
	}
}

//FORMULÁRIO FICHA DE CLIENTE [particular ou empresa]
function campos_clientes(f,msg,ficha){
	var fieldEmpty = "";
	var campo_vazio="";
	var campo_erro="";


	// check if input type text and textarea are empty
	for(var noElement=0;noElement<f.elements.length;noElement++){
		var element = f.elements[noElement];
                element.style.backgroundColor='#ffffff';//Para todos
		if( (element.type == "text" || element.name == "distrito" || element.name == "concelho")  && !optionalCampos1(element.name,ficha)){
			if(element.value==null || element.value=="" || isBlank(element.value) ){
				//element.style.borderColor='#ff0000';
				element.style.backgroundColor='#ffc8b3';
				campo_vazio=element.name;
				//alert("Campo:"+element.name+"="+element.value);
			}
		}

		//CASO ESPECIAL PARA OS NÚMERO DE TELEFONE
		if( (element.name == "telefone" || element.name == "telemovel" || element.name == "telef_geral" || element.name == "telef_reservas" || element.name == "fax_reservas") && !isBlank(element.value) ){
			if(!telefone_ok(element.value)) campo_erro=element.name;
		}
		//CASO ESPECIAL PARA O NIB
		if( element.name == "nib" && !isBlank(element.value) ){
			if(!nib_ok(element.value)) campo_erro=element.name;
		}
                //janela_zonotel('NIF ou CIF:',element.value);
                //CASO ESPECIAL PARA O NIF e CIF
                if( element.name == "contribuinte" && !isBlank(element.value) ){
                    //alert('NIF ou CIF:' + element.value);
                    if(false && !ValidateNIF(element)) {//Desactivado a verficação do NIF válido
                        campo_erro = element.name;
                        element.style.backgroundColor='#ffc8b3';
                    }
                }
	}

	//alert("Campo:"+campo_vazio+" ERRO:"+campo_erro);
	if(campo_vazio || campo_erro){
		janela_zonotel(msg,0);//alert(msg);// +' '+campo_vazio+'->'+campo_erro
		return false;
	}

	return true;
}
//Campos que são opcionais
function optionalCampos1(campo,ficha){
	// Aqui estão os campos opcionais do formulario PARTICULAR
	if( ficha=='cli' && (campo=="passaport" || campo=="site" || campo=="codex" || campo=="concelho" || campo=="telefone" || campo=="matricula" || campo=="titulo_cartao") ) return true;
	else if( ficha=='emp' && (campo=="cadeia" || campo=="cargo" || campo=="site" || campo=="codex" || campo=="concelho" || campo=="telemovel" || campo=="matricula" || campo=="titulo_cartao") ) return true;
	return false;
}

//FORMULÁRIO FICHA DE AGENCIA
function campos_importantes1(f,msg){
	var fieldEmpty = "";
	var campo_vazio="";
	var campo_erro="";


	// check if input type text and textarea are empty
	for(var noElement=0;noElement<f.elements.length;noElement++){
		var element = f.elements[noElement];
                element.style.backgroundColor='#ffffff';//Para todos
		if( (element.type == "text" || element.name == "distrito" || element.name == "concelho")  && !optionalFields1(element.name)){
			if(element.value==null || element.value=="" || isBlank(element.value) ){
				//element.style.borderColor='#ff0000';
				element.style.backgroundColor='#ffc8b3';
				campo_vazio=element.name;
				//alert("Campo:"+element.name+"="+element.value);
			}
		}

		//CASO ESPECIAL PARA OS NÚMERO DE TELEFONE
		if( (element.name == "telefone" || element.name == "telemovel" || element.name == "telef_geral" || element.name == "telef_reservas" || element.name == "fax_reservas") && !isBlank(element.value) ){
			if(!telefone_ok(element.value)) campo_erro=element.name;
		}
		//CASO ESPECIAL PARA O NIB
//		if( element.name == "nib" && !isBlank(element.value) ){
//			if(!nib_ok(element.value)) campo_erro=element.name;
//		}
                //CASO ESPECIAL PARA O NIF e CIF
//                if( element.name == "contribuinte" && !isBlank(element.value) ){
//                    if(!ValidateNIF(element)) {
//                        campo_erro = element.name;
//                        element.style.backgroundColor='#ffc8b3';
//                    }
//                }
	}

	//alert("Campo:"+campo_vazio+" ERRO:"+campo_erro);
	if(campo_vazio || campo_erro){
		janela_zonotel(msg,0);//alert(msg);// +' '+campo_vazio+'->'+campo_erro
		return false;
	}

	return true;
}
//Campos que são opcionais1 da ficha de CLIENTE
function optionalFields1(campo){
	// Aqui estão os campos opcionais do formulario TRAVEL
	if ( campo=="passaport" || campo=="cadeia" || campo=="cargo" || campo=="grupo_agencias" || campo=="sede" || campo=="site" || campo=="codex" || campo=="concelho" || campo=="telemovel" || campo=="telef_geral" ) return true;
	if ( campo=="nib" || campo=="iban" || campo=="bic_swift" ) return true;

	return false;
}
//Janela ZONOTEL para substituir alert()
function janela_zonotel(msg,act){
    //activar FUNDO
    document.getElementById('aviso_fundo').style.display='block';
    //activar Janela
    document.getElementById('aviso_geral').style.display='block';
    //Altera Botão
    if(act==1) {
           document.getElementById('janela_ok').style.display='none';
           document.getElementById('janela_ok1').style.display='block';
    }
    //apresentar texto
    document.getElementById('janela_msg').innerHTML = msg;
}

//FORMULÁRIO FICHA DE HOTEL/AGENCIA
function campos_importantes(f,msg){
	var fieldEmpty = "";
	var campo_vazio="";
	var campo_erro="";
        var agenciaSemNIB = 0;//Permitir apenas às Agências a não obrigação do NIB


	// check if input type text and textarea are empty
	for(var noElement=0;noElement<f.elements.length;noElement++){
		var element = f.elements[noElement];
                element.style.backgroundColor='#ffffff';
                //
                if(element.name == "agenciaSemNIB")
                    agenciaSemNIB = 1;                
		if( (element.type == "text" || element.name == "distrito" || element.name == "concelho")  && !optionalFields(element.name,agenciaSemNIB)){
			if(element.value==null || element.value=="" || isBlank(element.value) ){
				//element.style.borderColor='#ff0000';
				element.style.backgroundColor='#ffc8b3';
				campo_vazio=element.name;
				//alert("Campo:"+element.name+"="+element.value);
			}
		}

		//CASO ESPECIAL PARA OS NÚMERO DE TELEFONE
		if( (element.name == "telefone" || element.name == "telemovel" || element.name == "telef_geral" || element.name == "telef_reservas" || element.name == "fax_reservas") && !isBlank(element.value) ){
			if(!telefone_ok(element.value)) campo_erro=element.name;
		}

		//CASO ESPECIAL PARA O NIB
		if(element.name == "nib" && !isBlank(element.value) ){
			if(!nib_ok(element.value)) campo_erro=element.name;
		}
                //CASO ESPECIAL PARA O NIF e CIF
                if( element.name == "contribuinte" && !isBlank(element.value) ){
                    if(false && !ValidateNIF(element)) {//Desactivado a verficação do NIF válido
                        campo_erro = element.name;
                        element.style.backgroundColor='#ffc8b3';
                    }
                }
	}

	//alert("Campo:"+campo_vazio+" ERRO:"+campo_erro);
	if(campo_vazio || campo_erro){
		janela_zonotel(msg,0);// +' '+campo_vazio+'->'+campo_erro
		return false;
	}

	return true;
}
//Campos que são opcionais
function optionalFields(campo,agencia){
	// Aqui estão os campos opcionais do formulario pre-registos
	if ( campo=="email_reg" || campo=="chave_reg" ||campo=="cadeia" || campo=="cargo" || campo=="grupo_agencias" || campo=="sede" || campo=="site" || campo=="codex" || campo=="concelho" || campo=="telemovel" || campo=="telef_geral" ) return true;
	if ( campo=="iban" || campo=="bic_swift") return true;
        if(!agencia && campo=="nib") return true;
	return false;
}

//verifica números de telefone
function telefone_ok(telf){
	//verifica tamanho do número (tanto o número PT e ES de telefone tem 9digitos)
	if(telf.length==9) return true;

	return false;
}
//verifica números de NIB
function nib_ok(nib){
	//verifica tamanho do número NIB (21digitos)
	if(nib.length==21) return true;

	return false;
}
//Verifica NIF - PT e CIF - ES
function ValidateNIF(args){
    var res;

    if(!args.value.match(/^\d{1}/))//Caso o 1ºdigito seja Letra
        res = IsValidCIF(args.value);//ES
    else{
        res = IsValidNIF(args.value);//PT
        alert('NIF' + res);
    }

    return res;
}
//Verifica se o NIF 00000000L é válido, segundo a regras PT
function IsValidNIF(nif){
    var c;
    var checkDigit = 0;
    alert('NIF tem '+nif.length+'digitos. E é numerico ('+IsNumeric(nif)+')' );
    //Verifica se é nulo, se é numérico e se tem 9 dígitos
    if(nif != null && IsNumeric(nif) && nif.length == 9)
    {
        //Obtem o primeiro número do NIF
        c = nif.charAt(0);
        alert('9digitos!');
        //Verifica se o primeiro número é (1, 2, 5, 6, 8 ou 9)
        if(c == '1' || c == '2' || c == '5' || c == '6' || c == '8' || c == '9')
        {
            //Calculo do Digito de Controle
            checkDigit = c * 9;
            var i = 0;
            for(i = 2; i <= 8; i++)
            {
                checkDigit += nif.charAt(i-1) * (10-i);
            }
            checkDigit = 11 - (checkDigit % 11);

            //Se o digito de controle é maior que dez, coloca-o a zero
            if(checkDigit >= 10)
                checkDigit = 0;

            //Compara o digito de controle com o último numero do NIF
            //Se igual, o NIF é válido.
            if(checkDigit == nif.charAt(8))
                return true;
        }
    }
    return false;
}
//Verifica se o CIF L000000000 é válido, segundo as regras ES
function IsValidCIF(cif){
        var pares = 0;
        var impares = 0;
        var suma;
        var ultima;
        var unumero;
        var uletra = new Array("J", "A", "B", "C", "D", "E",
                        "F", "G", "H", "I");
        /*
         * var letraDesc= new Array("A"="Sociedad
         * AnÃ³nima","B"="Sociedad de responsabilidad
         * limitada","C"="Sociedad colectiva","D"="Sociedad
         * comanditaria", "E"="Comunidad de bienes","F"=
         * "Sociedad
         * cooperativa","G"="AsociaciÃ³n","H"="Comunidad de
         * propietarios", "K"="Formato antiguo","L"="Formato
         * antiguo","M"="Formato antiguo","N"="Formato antiguo",
         * "P"="CorporaciÃ³n local","Q"="Organismo
         * autÃ³nomo","S"="Organo de la administraciÃ³n");
         */
        var xxx;

        cif = cif.toUpperCase();

        var regular = new RegExp(
                        /^[ABCDEFGHKLMNPQS]\d\d\d\d\d\d\d[0-9,A-J]$/g);
        if (!regular.exec(cif))
                return false;

        ultima = cif.substr(8, 1);

        for ( var cont = 1; cont < 7; cont++) {
                xxx = (2 * parseInt(cif.substr(cont++, 1)))
                                .toString()
                                + "0";
                impares += parseInt(xxx.substr(0, 1))
                                + parseInt(xxx.substr(1, 1));
                pares += parseInt(cif.substr(cont, 1));
        }
        xxx = (2 * parseInt(cif.substr(cont, 1))).toString()
                        + "0";
        impares += parseInt(xxx.substr(0, 1))
                        + parseInt(xxx.substr(1, 1));

        suma = (pares + impares).toString();
        unumero = parseInt(suma.substr(suma.length - 1, 1));
        unumero = (10 - unumero).toString();
        if (unumero == 10)
                unumero = 0;

        if ((ultima == unumero) || (ultima == uletra[unumero]))
                /* $("input#surname.text").html('Sociedad'); */
                return true;
        else
                return false;
}

function IsNumeric(ObjVal)
{
    var RE = /^-{0,1}\d*\.{0,1}\d+$/;
    return (RE.test(ObjVal));
}

//Inidica campo obrigatorio para ES e não para PT  <--- deixou de ser necessária
function inidica_obrig(id,indica,txt){
	if(indica) document.getElementById(id).innerHTML='<font color=red size=-1 >*</font>'+txt;
	else document.getElementById(id).innerHTML=txt;
}

//Contabiliza os checkboxes seleccionados e monta lista
function conta_checkbox(id_div){
  var minhaDiv = document.getElementById(id_div);
  var listaMarcados = minhaDiv.getElementsByTagName("INPUT");
  lista="";

  for (loop = 0; loop < listaMarcados.length; loop++) {
     var item = listaMarcados[loop];
     if (item.type == "checkbox" && item.checked) {
     	if(lista!="") lista = lista + "|";
     	lista = lista + item.value;
       //alert(item.value);
     }
  }

  return lista;
}


function soma_percentagem(valor,percentagem)
{
	var ffinal;
	perc = percentagem/100+1;
	pvp = valor*perc;
	ffinal = pvp.toFixed(2);

	return ffinal;
}
function subtrai_percentagem(pvp,percentagem)
{
	var ffinal;
	perc = (percentagem/100)+1;
	valor = pvp/perc;
	//valor = valor+0.005;
	ffinal = valor.toFixed(2);

	return ffinal;
}

//Função calcula percentagem relativa
function valorRelativo_percent(valor_base,percentagem){
	var ffinal;
	perc = percentagem/100;
	valor = valor_base * perc;
	ffinal = valor.toFixed(2);

	return ffinal;
}


//Alterar o preço total do Alojamento, quando é ecolhido um regime de alimentação
// ??? - subtrair criança que tem grátis
function regime_alim_altpreco(id,preco,quant_adult,quant_cri,gratis_cri,noites,valor,descritv){

	var servi=0;
	var servi_nome="";
	var total_cri;
        var desc = descritv.split('|');
        var servi_cri=0;
        var servi_criTotal = 0;
        var servi_criDiario = 0;
        var preco_adult = 0;
        var preco_cri = 0;
        var preco_ra = 0;
        var preco_alt = 0;
        var total_ra = 0;
        var total_quant = 0;
        var servipago;
        var preco_base = preco;
                
	if(valor!="") {
		servipago = valor.split('|');
		servi_nome = servipago[3];
		servi = servipago[1];//Total (soma de todos os valores diários )
		servi_cri = servipago[2];
		//REGIME ALIMENTAR
		//document.getElementById(id+'ra').innerHTML = servipago[2];                
	}

	//preco_adult = parseFloat(servi)*parseInt(quant_adult)*parseInt(noites);
        preco_adult = parseFloat(servi)/(parseInt(quant_adult) * parseInt(noites));
	total_cri = parseInt(quant_cri)-parseInt(gratis_cri);
        servi_criTotal = servi_criDiario = 0;
	if(total_cri<=0) total_cri=0;
        else{
            servi_criDiario = parseFloat(servi_cri)/(parseInt(quant_cri) * parseInt(noites));
            servi_criTotal = servi_criDiario * (total_cri * parseInt(noites));
        }
	//preco_cri = parseFloat(servi_cri)*total_cri*parseInt(noites);
        if(total_cri>0) preco_cri = servi_criDiario;
        else {
            preco_cri = 0;
            servi_cri = 0;
        }
	preco_ra = (parseFloat(servi) + parseFloat(servi_cri));//Preço total dos Regimes Alimentares
	preco_alt = (parseFloat(preco_base) + parseFloat(preco_ra));
        //alert("Preço RA:"+servi_criDiario);
	total_ra = (preco_adult + preco_cri);
	total_quant = (parseInt(quant_adult)+parseInt(quant_cri));

	//Actualiza o preço do Alojamento
	document.getElementById(id).innerHTML = preco_alt.toFixed(2);

	//Actualiza preço dos detalhes
	if(servipago[0]==61) document.getElementById('d'+id).innerHTML = "<b>TOTAL:</b> "+preco_alt.toFixed(2)+"<font style=\"font-size:9px;font-weight:normal;\" >EUR</font>";
	else{
		//document.getElementById('d'+id).innerHTML = servi_nome+" x "+quant_adult+" = "+preco_adult.toFixed(2)+"<font style=\"font-size:9px;font-weight:normal;\" >EUR</font><br/>"+servi_nome+" x "+quant_cri+" = "+preco_cri.toFixed(2)+"<font style=\"font-size:9px;font-weight:normal;\" >EUR</font><br/>TOTAL: "+preco_alt.toFixed(2)+"<font style=\"font-size:9px;font-weight:normal;\" >EUR</font>";
		//document.getElementById('d'+id).innerHTML = servi_nome+" x "+total_quant+" = "+total_ra.toFixed(2)+"<font style=\"font-size:9px;font-weight:normal;\" >EUR</font><br/><b>TOTAL: "+preco_alt.toFixed(2)+"</b><font style=\"font-size:9px;font-weight:normal;\" >EUR</font>";
		var conteudo_HTML="";
		conteudo_HTML+= "<b>" + servi_nome + " </b>";//[" +servi + " + " + servi_cri + "]
		//conteudo_HTML+= "<br/><i>"+desc[0]+":</i> "+parseFloat(servi)+"<font style=\"font-size:9px;font-weight:normal;\" >EUR</font> x "+parseInt(quant_adult)+" x "+parseInt(noites)+""+desc[1]+" = "+preco_adult.toFixed(2)+"<font style=\"font-size:9px;font-weight:normal;\" >EUR</font>";
                conteudo_HTML+= "<br/><i>"+desc[0]+":</i> "+preco_adult.toFixed(2)+"<font style=\"font-size:9px;font-weight:normal;\" >EUR</font> x "+parseInt(quant_adult)+" x "+parseInt(noites)+""+desc[1]+" = "+parseFloat(servi)+"<font style=\"font-size:9px;font-weight:normal;\" >EUR</font>";
		//conteudo_HTML+= "<br/><i>"+desc[2]+":</i> "+servi_criDiario+"<font style=\"font-size:9px;font-weight:normal;\" >EUR</font> x "+total_cri+" x "+parseInt(noites)+""+desc[1]+" = "+preco_cri.toFixed(2)+"<font style=\"font-size:9px;font-weight:normal;\" >EUR</font>";
                conteudo_HTML+= "<br/><i>"+desc[2]+":</i> "+preco_cri.toFixed(2)+"<font style=\"font-size:9px;font-weight:normal;\" >EUR</font> x "+total_cri+" x "+parseInt(noites)+""+desc[1]+" = "+servi_criTotal +"<font style=\"font-size:9px;font-weight:normal;\" >EUR</font>";
		conteudo_HTML+= "<br/><center><b>TOTAL: "+preco_alt.toFixed(2)+"</b><font style=\"font-size:9px;font-weight:normal;\" >EUR</font></center>";
		document.getElementById('d'+id).innerHTML = conteudo_HTML;
	}
}


//Usado em especial no Campo Cadeia do Hotel e Grupos de Agências
function autoComplete(field, select, property, forcematch){
	var found = false;
	for(var i = 0;i < select.options.length;i++){
		if(select.options[i][property].toUpperCase().indexOf(field.value.toUpperCase()) == 0){
			found=true;
			break;
		}
	}
	if(found){
		select.selectedIndex = i;
	}else{
		select.selectedIndex = -1;
	}
	if(field.createTextRange){
		if(forcematch && !found){
			field.value=field.value.substring(0,field.value.length-1);
			return;
		}
		var cursorKeys ="8;46;37;38;39;40;33;34;35;36;45;";
		if(cursorKeys.indexOf(event.keyCode+";") == -1){
			var r1 = field.createTextRange();
			var oldValue = r1.text;
			var newValue = found ? select.options[i][property] : oldValue;
			if(newValue != field.value){
				field.value = newValue;
				var rNew = field.createTextRange();
				rNew.moveStart('character', oldValue.length) ;
				rNew.select();
			}
		}
	}
}

//Contabiliza os checkboxes de  e  seleccionados e monta lista
// aloj e pax   max_pessoas
function conta_pax(msg){
  var minhaDiv = document.getElementById('aloj');
  var listaCheckbox = minhaDiv.getElementsByTagName("INPUT");
  var listaSelect = minhaDiv.getElementsByTagName("SELECT");
  var lista_check=0;
  var select_value=0;
  var total_pax=0;
  var item;
  var pax_value;


  //CHECKBOX
  for (loop = 0; loop < listaCheckbox.length; loop++) {
     item = listaCheckbox[loop];
     if (item.type == "checkbox" && (item.name == "crianca1" || item.name == "crianca2" || item.name == "equip_id_31" || item.name == "equip_id_32") && item.checked) {
     	lista_check++;

     }

  }

  //SELECT
  for (loop = 0; loop < listaSelect.length; loop++) {
     item = listaSelect[loop];
     if (item.name == "max_pessoas") {
     	select_value=item.value;
     }

     if (item.name == "pax_num" ) {
     	pax_value=item.value;
     }

  }

  //Apresenta a contagem PAX
  total_pax = parseInt(select_value) + parseInt(lista_check);

  //alert('CheckBox seleccionados: '+lista_check+' \n Select max_pessoas:'+select_value+' pax_value:'+pax_value);

  //Activa opção GUARDAR
  if(pax_value <= total_pax) {
  	document.getElementById('gquarto').disabled='';
	document.getElementById('pax').innerHTML=document.getElementById('pax2').innerHTML='';
  }else{
  	document.getElementById('gquarto').disabled='disabled';
	document.getElementById('pax').innerHTML=document.getElementById('pax2').innerHTML='<img src="imagens/aviso.png" width="20" style=\"margin:0px;\"/> '+msg;
  }

  return 1;

}

function countdown_clock(year, month, day, hour, minute, format){
         //I chose a div as the container for the timer, but
         //it can be an input tag inside a form, or anything
         //who's displayed content can be changed through
         //client-side scripting.
         html_code = '<div id="countdown"></div>';

         document.write(html_code);

         countdown(year, month, day, hour, minute, format);
}

function countdown(year, month, day, hour, minute, format) {
         Today = new Date();
         Todays_Year = Today.getFullYear() - 2000;
         Todays_Month = Today.getMonth();

         //Convert both today's date and the target date into miliseconds.
         Todays_Date = (new Date(Todays_Year, Todays_Month, Today.getDate(),
                                 Today.getHours(), Today.getMinutes(), Today.getSeconds())).getTime();
         Target_Date = (new Date(year, month - 1, day, hour, minute, 00)).getTime();

         //Find their difference, and convert that into seconds.
         Time_Left = Math.round((Target_Date - Todays_Date) / 1000);

         if(Time_Left < 0)
            Time_Left = 0;

         switch(format)
               {
               case 0:
                    //The simplest way to display the time left.
                    document.all.countdown.innerHTML = Time_Left + ' seconds';
                    break;
               case 1:
                    //More datailed.
                    days = Math.floor(Time_Left / (60 * 60 * 24));
                    Time_Left %= (60 * 60 * 24);
                    hours = Math.floor(Time_Left / (60 * 60));
                    Time_Left %= (60 * 60);
                    minutes = Math.floor(Time_Left / 60);
                    Time_Left %= 60;
                    seconds = Time_Left;

                    dps = 's'; hps = 's'; mps = 's'; sps = 's';
                    //ps is short for plural suffix.
                    if(days == 1) dps ='';
                    if(hours == 1) hps ='';
                    if(minutes == 1) mps ='';
                    if(seconds == 1) sps ='';

                    document.all.countdown.innerHTML = days + ' day' + dps + ' ';
                    document.all.countdown.innerHTML += hours + ' hour' + hps + ' ';
                    document.all.countdown.innerHTML += minutes + ' minute' + mps + ' and ';
                    document.all.countdown.innerHTML += seconds + ' second' + sps;
                    break;
               default:
                    document.all.countdown.innerHTML = Time_Left + ' seconds';
               }

         //Recursive call, keeps the clock ticking.
         setTimeout('countdown(' + year + ',' + month + ',' + day + ',' + hour + ',' + minute + ',' + format + ');', 1000);
 }

 //
 function ListaTR_display(div_id,tr_id){
    var minhaDiv = document.getElementById(div_id);
    listaTR = minhaDiv.getElementsByTagName('tr');
    for(var loop=0;loop < (listaTR.length+1);loop++){
        var item = listaTR[loop];
        var item_tipo = typeof(item);
        //alert(typeof item);
        if(item_tipo=='object' && item.id == tr_id){//
            //alert(item.id + " = " + tr_id + "?");
            if(item.style.display=='block') {
                item.style.display='none';
            }else{
                item.style.display='block';
            }
        }
    }

 }
 
function makePaginacao(index,idtab,pagtotal,pag){
    //var tabela = document.getElementById(idtab);
    //var listaTabelas = tabela.getElementsByTagName("TABLE");
    var paginas='';

    if(pagtotal>3){//Caso a página activa seja maior que 5
        paginas+='<div title=\"Primeira\" onclick="makePaginacao(\''+index+'\',\''+idtab+'\',' + pagtotal +',1);" style="float:left;width:10px;cursor:pointer;height:10px;background:url(imagens/prev.gif) center no-repeat;"></div>';
    }
    for (p = 1; p <= pagtotal; p++) {//precorre todos os idtab
        var item = document.getElementById( idtab + p  );

        if(item){
            if (p == pag) {
                    paginas+= '<div title=\"'+p+'ªpágina\" onclick="makePaginacao(\''+index+'\',\''+idtab+'\',' + pagtotal +',' + p + ');" style="float:left;width:18px;cursor:pointer;height:12px;font-weight:bold;background-color:#c2c2c2;color:#fff;font-size:10px;border:1px inset gray;">' + p + '</div>';
                    item.style.display='block';
            }else{
                    if( (pag-6)<p && (pag+5)>p ) paginas+= '<div title=\"'+p+'ªpágina\" onclick="makePaginacao(\''+index+'\',\''+idtab+'\',' + pagtotal +',' + p + ');" style="float:left;width:18px;cursor:pointer;height:12px;font-weight:normal;background-color:#fff;color:#c2c2;font-size:10px;border:1px outset #F0F0F0;">' + p + '</div>';
                    else if(pag<6 && p<=(5*2) || pag>(pagtotal-5) && p>(pagtotal-5*2) ) paginas+= '<div title=\"'+p+'ªpágina\" onclick="makePaginacao(\''+index+'\',\''+idtab+'\',' + pagtotal +',' + p + ');" style="float:left;width:18px;cursor:pointer;height:12px;font-weight:normal;background-color:#fff;color:#c2c2;font-size:10px;border:1px outset #F0F0F0;">' + p + '</div>';
                    item.style.display='none';
            }
        }
    }
    if(pagtotal>3){//Caso a página activa seja maior que 5
        paginas+='<div title=\"Última\" onclick="makePaginacao(\''+index+'\',\''+idtab+'\',' + pagtotal +','+pagtotal+');" style="float:left;width:10px;cursor:pointer;height:12px;background:url(imagens/next.gif) center no-repeat;"></div>';
    }
   //alert('Lista: '+paginas);
   if(document.getElementById( index ))
    document.getElementById(index).innerHTML = paginas;
}
