/*Comprueba que el string que se le pase sea una direccion de mail correcta.*/
function comprobar_email(string){
	valor=string;
	i=0;
	TROBATPUNT=0;//servira para mirar si hay un punto en el string
	var TROBATARROBA;//servira para mirar si hay un @ en el string
	TROBATARROBA=0;

 	while (i<valor.length) {
  		if(valor.charAt(i)=="@")  {
   			TROBATARROBA= TROBATARROBA+ 1;
  		}
  		if(valor.charAt(i)==".") {
   			TROBATPUNT= TROBATPUNT+ 1;
  		}
  		if((valor.charAt(i)==".")||(valor.charAt(i)=="@")){ //no puede ser que acabe un Email en "." o en @
   			if(i==valor.length-1)   {
    			TROBATARROBA= 3;   //forzamos que sea incorrecto
   			}
  		}
  		if(valor.charAt(i)==" ")  {
   			if(i<valor.length-1) { //miramos que no sea el ultimo caracter
   				TROBATARROBA= 3;   //forzamos que sea incorrecto
   			}
  		}
  		i++;
 	}
 	if ((TROBATPUNT>=1) && (TROBATARROBA==1))//si hay las dos cosas, @(solo una) y . nos dara el ok
 		return(0);
 	else
 		return(-1);
 }

/*Funcion para abrir ver02 para imprimir*/
  function ventanaListaHoteles(desImp,zonImp,idiImp)
  {
	 var imp="ver02i.jsp?dst=" + desImp + "&zon=" + zonImp + "&idi=" + idiImp;
     myWin= open(imp,'_blank','menubar=no,locationbar=no,statusbar=no,scrollbars=yes,resizable=yes,height=550,width=750,screenX=0,screenY=0,top=0,left=0');
  }

/*funciones para abrir la ficha del hotel seleccionado*/
  function ventanaFichaHotel(codImp,desImp,idiImp,nomImp)
  {
     var imp="ver04.jsp?hotel=" + codImp + "&dst=" + desImp + "&idi=" + idiImp + "&nom_hotel=" + nomImp;
     myWin= open(imp,'_blank','menubar=no,locationbar=no,statusbar=no,scrollbars=yes,resizable=yes,height=550,width=750,screenX=0,screenY=0,top=0,left=0');
  }

  function ventanaFichaHotel_sinNombre(conImp,desImp,idiImp,fechaIn)
  {
     var imp="ver05.jsp?con=" + conImp + "&dst=" + desImp + "&idi=" + idiImp + "&fentrada=" + fechaIn
     myWin= open(imp,'_blank','menubar=no,locationbar=no,statusbar=no,scrollbars=yes,resizable=yes,height=250,width=750,screenX=0,screenY=0,top=0,left=0');
  }
  
/*Funcion que abre la pantalla de terminales de aeropuerto en trs01*/
 function abrirTerminales(form,idi,oficina,pOrigen,age_path)
 {
     // si me pasan un origen y es un traslado de entrada
     // o me pasan un destino y es un traslado de salida
     if ( ((pOrigen=="o1")&&(form.t1.selectedIndex==0)) ||
      ((pOrigen=="o2")&&(form.t2.selectedIndex==0)) ||
      ((pOrigen=="o3")&&(form.t3.selectedIndex==0)) ||
      ((pOrigen=="o4")&&(form.t4.selectedIndex==0)) ||
      ((pOrigen=="o5")&&(form.t5.selectedIndex==0)) ||
      ((pOrigen=="o6")&&(form.t6.selectedIndex==0)) ||
      ((pOrigen=="d1")&&(form.t1.selectedIndex==1)) ||
      ((pOrigen=="d2")&&(form.t2.selectedIndex==1)) ||
      ((pOrigen=="d3")&&(form.t3.selectedIndex==1)) ||
      ((pOrigen=="d4")&&(form.t4.selectedIndex==1)) ||
      ((pOrigen=="d5")&&(form.t5.selectedIndex==1)) ||
      ((pOrigen=="d6")&&(form.t6.selectedIndex==1))
      )     {
      	var pagTerm="aer01.jsp?idi="+idi+"&ofi=&campo="+pOrigen+"&age_path="+age_path
      	window.open(pagTerm,'_blank','location=no,menubar=no,scrollbars=yes,width=550,height=300,screenX=0,screenY=0,top=0,left=0')
     }
     // si me pasan un origen y es un traslado de salida
     // o me pasan un destino y es un traslado de entrada
     if ( ((pOrigen=="o1")&&(form.t1.selectedIndex==1)) ||
      ((pOrigen=="o2")&&(form.t2.selectedIndex==1)) ||
      ((pOrigen=="o3")&&(form.t3.selectedIndex==1)) ||
      ((pOrigen=="o4")&&(form.t4.selectedIndex==1)) ||
      ((pOrigen=="o5")&&(form.t5.selectedIndex==1)) ||
      ((pOrigen=="o6")&&(form.t6.selectedIndex==1)) ||
      ((pOrigen=="d1")&&(form.t1.selectedIndex==0)) ||
      ((pOrigen=="d2")&&(form.t2.selectedIndex==0)) ||
      ((pOrigen=="d3")&&(form.t3.selectedIndex==0)) ||
      ((pOrigen=="d4")&&(form.t4.selectedIndex==0)) ||
      ((pOrigen=="d5")&&(form.t5.selectedIndex==0)) ||
      ((pOrigen=="d6")&&(form.t6.selectedIndex==0))
      )  {
      	var pagTerm="aer01.jsp?idi=" + idi + "&ofi="+oficina+"&campo="+pOrigen+"&age_path="+age_path
      	window.open(pagTerm,'_blank','location=no,menubar=no,scrollbars=yes,width=550,height=300,screenX=0,screenY=0,top=0,left=0')
     }
}

/*Funcion para obtener datos de una fila de excursiones */
function obtenerDatosExc(excursiones, nombre)
{
	fin = 0;
	index = 0;
	aux = "";
	while (((index + nombre.length) < excursiones.length) && (fin == 0)){
		if(excursiones.substring(index, (index + nombre.length)) == nombre)
		{
			fin = 1;
		}
		index++;
	}
	cont = index + (nombre.length) - 1;
	fin2 = 0;
	while ((cont < excursiones.length) && (fin2 == 0))	{
		if((excursiones.charAt(cont) == ",") || (excursiones.charAt(cont) == "#"))
		{
			fin2 = 1;
		}
		cont++;
	}
	if ((fin == 1) && (fin2 == 1)) {
		aux = excursiones.substring((index + (nombre.length -1)), (cont-1));
	}
	return (aux);
}

/*Comprueba los dias disponibles de las excursiones*/
function comprobarDisponibilidad (diasOp,num,fDesde,fHasta) {
	//alert("diasop="+diasOp+", num="+num+", fDesde="+fDesde+", fHasta="+fHasta);
	datosOk = 0;
	resultado = 0;
  if(document.forms['fexc01'].elements['cExcursion' + num].checked) {
    var fecha = document.forms['fexc01'].elements['f' + num].value;
    resultado = formato_fecha(fecha);
    if (resultado != -1){
     //document.forms['fexc01'].elements['f' + num].value = resultado;
     resultado  = compruebaFechaDentroDeRangos(fDesde,fHasta,fecha);
    }
    /*if (resultado == 0){ // comprobamos que la Fecha este disponible       
     resultado = comprobarFecha(fechaAux);
    }*/	
 	var dia=fecha.substring(0,2);
 	var mes=parseInt(fecha.substring(3,5))-1;
	var anyo=fecha.substring(6,10);
	fecha = new Date(anyo,mes,dia);
	numant=fecha.getDay();
	if (numant==0) numant=7;
    if(resultado >= 0){
      if(diasOp.charAt(numant-1) == 0)
       resultado =-5;
    }
  }
  return resultado;
}

//Abre el popup de ofertas para el pais seleccionado
function abreOfertas(pais,descripcion)
{
 window.open('zon01.jsp?idi='+strIdi + '&pais='+pais+'&descripcion='+descripcion,'_blank', 'toolbar=no,location=no,menubar=yes,scrollbars=yes,width=690,height=440,screenX=0,screenY=0,top=0,left=0');
 return
}
/*Comprueba que el formato del valor pasado sea correcto HH:MM*/
function formato_hora(valor)
{
	if (valor.length!=5)
		return -1;
	var hora=valor.substring(0,2);
	hora=parseInt(hora, 10);
	if (isNaN(hora))
		return -1;
	if((hora>24) || (hora<0))
  		return -1;
	if(valor.charAt(2) != ":" )
    	return -1;
    var minuts=valor.substring(3,5);
	minuts=parseInt(minuts, 10);
	if (isNaN(minuts))
		return -1;
	if( (minuts > 59) || (minuts < 0) )
   		return -1;
   
   	return 0;
}

/*Usamos esta funcion cuando ya se ha comprobado el formato de las fechas, y éste es correcto
Devuelve -3 si fEntrada no es menor que fSalida. 0 si todo correcto*/
function compruebaRangos(fEntrada,fSalida)
{
 var auxEntrada = new String(fEntrada)
 var auxSalida = new String(fSalida)
 var diaE=parseInt(auxEntrada.substring(0,2),10);
 var mesE=parseInt(auxEntrada.substring(3,5),10);
 var anyE=parseInt(auxEntrada.substring(6,10),10);
 var diaS=parseInt(auxSalida.substring(0,2),10);
 var mesS=parseInt(auxSalida.substring(3,5),10);
 var anyS=parseInt(auxSalida.substring(6,10),10);
  
 if ( ( (anyS>anyE) || 
	(anyS==anyE && mesS>mesE) ) || 
	((anyS==anyE && mesS==mesE) && (diaS>diaE || diaS==diaE)) )
		return 0;
	else
		return -3;//fS posterior a fE
}

/*Comprueba Fecha Dentro De Rangos*/
function compruebaFechaDentroDeRangos(rIzq,rDer,fecha)
  {
  var ok=0
  
  ok=compruebaRangos(rIzq,fecha) //retorna (0,-3)
  if (ok==0)
  {
   ok=compruebaRangos(fecha,rDer) //retorna (0,-3)
  }
  return (ok)
  }
  
/*Funcion que comprueba el formato de una fecha dd/mm/aaaa */
function formato_fecha(fecha)
{
	if (fecha.length!=10)
		return -1;
	var dia=fecha.substring(0,2);
	dia=parseInt(dia, 10);
	if (isNaN(dia))
		return -1;
	if((dia>31) || (dia<0))
  		return -1;
	if(fecha.charAt(2) != "/" )
    	return -1;
    var mes=fecha.substring(3,5);
	mes=parseInt(mes, 10);
	if (isNaN(mes))
		return -1;
	if( (mes > 12) || (mes < 0) )
   		return -1;
	if(fecha.charAt(5) != "/" )
    	return -1;
    var any=fecha.substring(6,10);
	any=parseInt(any, 10);
	if (isNaN(any))
		return -1;
	  
   	return 0;
}

/*Funcion para rellenar pax01 a partir de informacion ya metida*/
function omple_inputs(form, strPaxes){
	 	if (strPaxes != "") {
          	var paxes = new Array();
          	obtenerString(strPaxes, paxes);
			k=0;
		 	for (i=0; i<form.imax.value; i++){
          		if((k<paxes.length) &&((paxes[k] != "") &&(paxes[k] != "#"))) {
            		form.cNombre(i).value = obtenerNombre(paxes[k]);
            		form.cDni(i).value = obtenerDni(paxes[k]);
            		form.cEdad(i).value = obtenerEdad(paxes[k]);
            		k++;
          		}//if k
			}//end for i..imax
		}//if       
 }

/* Para obtener el nombre a traves del string con formato pax01 */
function obtenerNombre (pasajeros) {
	fin = 0;
	aux = "";
	index = 7;
	while ((index < pasajeros.length) && (fin == 0)) {
		if(pasajeros.charAt(index) == ",") {
			fin = 1;
		}
		index++;
	}
	if (fin == 1)
		aux = pasajeros.substring(7, (index-1));
	return (aux);
}

/* Para obtener el dni a traves del string de pax*/
function obtenerDni (pasajeros) {
	index = 0;
	fin = 0;
	aux = "";
	while (((index+4) < pasajeros.length) && (fin == 0)) {
		if(pasajeros.substring(index, (index+4)) == "DNI=") {
			fin = 1;
		}
		index++;
	}
	cont = index + 3;
	fin2 = 0;
	while ((cont < pasajeros.length) && (fin2 == 0)) {
		if(pasajeros.charAt(cont) == ",") {
			fin2 = 1;
		}
		cont++;
	}
	
	if ((fin == 1) && (fin2 == 1)) {
		aux = pasajeros.substring((index + 3), (cont-1));
	}
	return (aux);
}

/*Para obtener la edad a traves del string de pax */
function obtenerEdad (pasajeros) {
	index = 0;
	fin = 0;
	aux = "";
	while (((index+5) < pasajeros.length) && (fin == 0)) {
		if(pasajeros.substring(index, (index+5)) == "EDAD=") {
			fin = 1;
		}
		index++;
	}
	if (fin == 1) {
         fin2 = 0;
         cont=index
	 while ((cont < pasajeros.length) && (fin2 == 0)) {
	 	if(pasajeros.charAt(cont) == ",") {
	 		fin2 = 1;
		}
		cont++;
	 }
	 aux = pasajeros.substring((index + 4), cont-1);
	}
	return (aux);
}

/*Para obtener el string "OLD" a traves del string de pax */
function obtenerOld (pasajeros) {
	index = 0;
	fin = 0;
	aux = "";
	while (((index+4) < pasajeros.length) && (fin == 0)) {
		if(pasajeros.substring(index, (index+4)) == "OLD=") {
			fin = 1;
		}
		index++;
	}
	if (fin == 1) {
         fin2 = 0;
         cont=index
	 while ((cont < pasajeros.length) && (fin2 == 0)) {
	 	if(pasajeros.charAt(cont) == ",") {
	 		fin2 = 1;
		}
		cont++;
	 }
	 if (fin2==1)
	 	aux = pasajeros.substring((index + 3), cont-1);
	 else //fin2==0 (el string 'OLD' era el ultimo token)
	 	aux = pasajeros.substring((index + 3), pasajeros.length);
	}
	return (aux);
}

/*Funcion auxiliar para dividir en array de Strings segun caracter '#'*/
function obtenerString(origen, resultado) {
	cont = 0;
	index = 0;
	index2 = 0;
	while (index < origen.length) {
		if(origen.charAt(index) == "#") {
			resultado[cont] = origen.substring(index2, index);
			index2 = index+1;
			cont++;
			resultado[cont]="";
		}
		index++;
	}
}

/*Funcion que carga los valores de alj01 al motor de busqueda*/
function devolverHotel(codigo, nombre)
{
 	window.opener.document.frsv01.cod_aloj.value=codigo;
	window.opener.document.frsv01.nom_aloj.value=nombre;
 	close();
}

/* NUEVO CÓDIGO DE LLAMADA AL CALENDARIO */
	//posición del cursor respecto a la pantalla cuando se abre el calendario
	var coordX = 0;
	var coordY = 0;
	function verCoordenadas(){
		coordX=(event.screenX - 112);
		coordY=(event.screenY - 100);
	}
	var inputCalend = null;
	var slcDia = null;
	var slcMes = null;
	var slcAnyo = null;
	var presentar_mes = null;
	var presentar_anio = null;
	
function fecha(dia,mes,anyo,ver_mes,ver_anio,inputTexto,age_path) {
		inputCalend = inputTexto;
		slcDia = dia;
		slcMes = mes;
		slcAnyo = anyo;
		presentar_mes = ver_mes;
		presentar_anio = ver_anio; 
		window.open("cal01.jsp?age_path="+age_path,"calendario",'location=no,menubar=no,width=199,height=225,screenX=0,screenY=0,top='+coordY+',left='+coordX);
	}/* FIN: LLAMADA AL CALENDARIO: ALVARO */

/*Escribe los options con valores desde ini hasta fi de 1 en 1*/
function escriu_options1(ini, fi, sel, text)
{
	var i=parseInt(ini);
	while (i<=parseInt(fi)){
		if (sel!='' && i==parseInt(sel,10)) {
		   if (text)
			   document.write('<option selected="selected">' + i + ' ( ' + (i + 1) + ' dias)</option>');
			else
			   document.write('<option selected="selected">'+i+'</option>');
		} else {
		   if (text)
			   document.write('<option>' + i + ' (' + (i + 1) + ' dias)</option>');
			else
			   document.write('<option>'+i+'</option>');
	   }
		i++;
	}
}

/*Funcion que hace comprobaciones en el forumlario de reservas00: fechas ok,que haya destino y ocupación ok*/
function compruebaForm_rsv01(form,tbusqueda,maximo)
{
	//alert("Dins Irecep.js");
	var ok= 0;
	var diaE= form.fe_dia.options[form.fe_dia.selectedIndex].text;
	var mesE= form.fe_mes.options[form.fe_mes.selectedIndex].text;
	var anyE= form.fe_anyo.options[form.fe_anyo.selectedIndex].text;
	var diaS= form.fs_dia.options[form.fs_dia.selectedIndex].text;
	var mesS= form.fs_mes.options[form.fs_mes.selectedIndex].text;
	var anyS= form.fs_anyo.options[form.fs_anyo.selectedIndex].text;
	
	var nits= form.noches.options[form.noches.selectedIndex].text;
	
	if (tbusqueda=='N') {
		var cp=form.pais.options[form.pais.selectedIndex].value;
		if (cp=="")
    		return -41;  //Debe seleccionar un pais
	
		var cd=form.destino.options[form.destino.selectedIndex].value;
		//alert("Dest= "+cd);
   		if (cd=="")
    		return -42;  //Debe seleccionar un destino
	}

 	if (isNaN(parseInt(diaE,10))|| (isNaN(parseInt(mesE,10))|| isNaN(parseInt(anyE,10))))
		return -11; //error fechas e/s
	else {
		diaE=parseInt(diaE,10);
		mesE=parseInt(mesE,10);
		anyE=parseInt(anyE,10);
	}
	if (isNaN(parseInt(diaS,10))|| (isNaN(parseInt(mesS,10))|| isNaN(parseInt(anyS,10))))
		return -12; //error fechas e/s
	else {
		diaS=parseInt(diaS,10);
		mesS=parseInt(mesS,10);
		anyS=parseInt(anyS,10);
	}
	
	var fechaActual = new Date();
	var hoyAnio = fechaActual.getYear();
	var hoyMes = fechaActual.getMonth() + 1;
	var hoyDia = fechaActual.getDate();

	if(	anyE < hoyAnio  ||
		(anyE == hoyAnio && mesE < hoyMes) ||
		(anyE == hoyAnio && mesE == hoyMes && diaE < hoyDia) )
	{
		return -13; //error fechas e/s
	}

	ok=compruebaFechaMinima(diaE,mesE,anyE);  
	if (ok!=0)
 		return -21; //fecha debe ser posterior
		
	ok=compruebaFechaMinima(diaS, mesS, anyS);  
	if (ok!=0)
 		return -22; //fecha debe ser posterior
 
 	if ( ( (anyS>anyE) || 
	(anyS==anyE && mesS>mesE) ) || 
	((anyS==anyE && mesS==mesE) && diaS>diaE) )
		ok=0;
	else
		return -3;//fS posterior a fE
    
    

    
    ok=compruebaOcu(form,maximo) //(retorna 0,-5,-6,-7)
   
 	return ok;
}


/*Funcion que hace comprobaciones en el forumlario de reservas00: fechas ok,que haya destino y ocupación ok*/
function compruebaForm_rsv01_filtros(form,tbusqueda,maximo)
{
	//alert("Dins Irecep.js");
	var ok= 0;
	var diaE= form.fe_dia.options[form.fe_dia.selectedIndex].text;
	var mesE= form.fe_mes.options[form.fe_mes.selectedIndex].text;
	var anyE= form.fe_anyo.options[form.fe_anyo.selectedIndex].text;
	var diaS= form.fs_dia.options[form.fs_dia.selectedIndex].text;
	var mesS= form.fs_mes.options[form.fs_mes.selectedIndex].text;
	var anyS= form.fs_anyo.options[form.fs_anyo.selectedIndex].text;
	
	var nits= form.noches.options[form.noches.selectedIndex].text;
	
	if (tbusqueda=='N') {
		var cp=form.pais.options[form.pais.selectedIndex].value;
		if (cp=="")
    		return -41;  //Debe seleccionar un pais
	
		var cd=form.destino.options[form.destino.selectedIndex].value;
		//alert("Dest= "+cd);
   		if (cd=="")
    		return -42;  //Debe seleccionar un destino
	}

 	if (isNaN(parseInt(diaE,10))|| (isNaN(parseInt(mesE,10))|| isNaN(parseInt(anyE,10))))
		return -11; //error fechas e/s
	else {
		diaE=parseInt(diaE,10);
		mesE=parseInt(mesE,10);
		anyE=parseInt(anyE,10);
	}
	if (isNaN(parseInt(diaS,10))|| (isNaN(parseInt(mesS,10))|| isNaN(parseInt(anyS,10))))
		return -12; //error fechas e/s
	else {
		diaS=parseInt(diaS,10);
		mesS=parseInt(mesS,10);
		anyS=parseInt(anyS,10);
	}
	
	var fechaActual = new Date();
	var hoyAnio = fechaActual.getYear();
	var hoyMes = fechaActual.getMonth() + 1;
	var hoyDia = fechaActual.getDate();

	if(	anyE < hoyAnio  ||
		(anyE == hoyAnio && mesE < hoyMes) ||
		(anyE == hoyAnio && mesE == hoyMes && diaE < hoyDia) )
	{
		return -13; //error fechas e/s
	}

	ok=compruebaFechaMinima(diaE,mesE,anyE);  
	if (ok!=0)
 		return -21; //fecha debe ser posterior
		
	ok=compruebaFechaMinima(diaS, mesS, anyS);  
	if (ok!=0)
 		return -22; //fecha debe ser posterior
 
 	if ( ( (anyS>anyE) || 
	(anyS==anyE && mesS>mesE) ) || 
	((anyS==anyE && mesS==mesE) && diaS>diaE) )
		ok=0;
	else
		return -3;//fS posterior a fE
    
    
    	//Comprobar si hay algun check marcado ------------------------  	
    	var i=0;
    	var contcat=0;
    
    	
    	//El if es para los casos en los que solo hay una categoria
    	//Si hay una categoria el check no tiene length y entonces length==undefined
    	//No puede haber ninguna categoria pq es un campo obligatorio

//    	if (form.ch_cat.length==undefined)
    	if (countFormElements(form,'checkbox','ch_cat') == 1)
    	{	
    		if (form.ch_cat.checked) //Si no hay ninguno check concat=0
    			contcat++;
    	}
    	else
    	{
    	  while (i < form.ch_cat.length) //como es un check dinamico
    	   {	      		
    	    if (form.ch_cat[i].checked) //Si no hay ninguno check concat=0
    			contcat++;
    	   	i++; 		
    	   }	      			  
    	 }
    	 if (contcat==0) return -61;	
    	 
       //Lo mismo para regimen-----------------		   
       i=0;
       contcat=0;
       
//       if (form.ch_board.length==undefined)
    	if (countFormElements(form,'checkbox','ch_board') == 1)
       {
       	  if(form.ch_board.checked)
    	  	 contcat++;	
       }
       else
       {
    	   while (i < form.ch_board.length) //como es un check dinamico
    	   {    		
    	    if (form.ch_board[i].checked) //Si no hay ninguno check concat=0
    			contcat++;
    	   	i++; 
    	   }
       }   		
       if (contcat==0) return -62;
    	
    	
    //------------------------------  
    
    ok=compruebaOcu(form,maximo) //(retorna 0,-5,-6,-7)
   
 	return ok;
}

	/*
		Función para contar el número de elementos de un formulario dado su tipo y nombre
	*/
	function countFormElements(frm,type,name){
		var num_elem = 0;
		for(var i = 0; i < frm.elements.length;i++){
			var elem = frm.elements[i];
			if(elem.type == type && elem.name == name){
				num_elem++;
			}
		}		
		return num_elem;
	}



/*funcion que comprueba que las ocupaciones sean correctas.*/
function compruebaOcu(form,maximo){
	var ok=0

  	if (form.ocu01.value!="" || 
      form.ocu02.value!="" || 
      form.ocu03.value!="" || 
      form.ocu04.value!="" || 
      form.ocu05.value!="" || 
      form.ocu06.value!="" ||
      form.ocu07.value!="" ||
      form.ocu08.value!="" ||
      form.ocu09.value!="" ||
      form.ocu10.value!="" ||
      form.ocu11.value!="" ||
      form.ocu12.value!="" ||
      form.ocu13.value!="" ||
      form.ocu14.value!="" ||
      form.ocu15.value!="" ||
      form.ocu16.value!="" ||
      form.ocu17.value!="")
    	ok=0;
  	else 
   		ok=-5 // Debe rellenar como mínimo un tipo de ocupación')
   
//alert("1="+form.ocu01.value+" 2="+form.ocu02.value+" 3="+form.ocu03.value+"\n4="+form.ocu04.value+" 5="+form.ocu05.value+" 6="+form.ocu06.value);
	if (ok==0) {
	  if ( (isNaN(parseInt(form.ocu01.value,10)) && form.ocu01.value!='')||
	     (isNaN(parseInt(form.ocu02.value,10)) && form.ocu02.value!='')||
		 (isNaN(parseInt(form.ocu03.value,10)) && form.ocu03.value!='')||
		 (isNaN(parseInt(form.ocu04.value,10)) && form.ocu04.value!='')||
		 (isNaN(parseInt(form.ocu05.value,10)) && form.ocu05.value!='')||
		 (isNaN(parseInt(form.ocu06.value,10)) && form.ocu06.value!='') ){
	   	ok=-6;// alert('Las ocupaciones deben ser sólo números');
	  } 	
	  else {
	   	ok=0   
	  }
	}

	// comprobamos que la suma de cada ocupacion sean como mucho 5 unidades
	if (ok==0)	
	 {
	  var ss=0;
	  if (form.ocu01.value!="") 
	  	ss+=new Number(form.ocu01.value); 
	  if (form.ocu02.value!="") 
	  	ss+=new Number(form.ocu02.value); 
	  if (form.ocu03.value.value!="") 
	  	ss+=new Number(form.ocu03.value); 
	  if (form.ocu04.value!="") 
	  	ss+=new Number(form.ocu04.value); 
	  if (form.ocu05.value!="") 
	  	ss+=new Number(form.ocu05.value);
	  if (form.ocu06.value!="") 
	  	ss+=new Number(form.ocu06.value);  
	  if (ss<=maximo) {
	   ok=0;
	  } 	
	  else {
	   ok=-7; //alert(texto 108);
	  }
	 }
	
	return (ok);
}





function compruebaOcuDistintas(form){

  total=0;
	  if (form.ocu01.value!="" && form.ocu01.value!='0') 
	  	total++; 
	  if (form.ocu02.value!="" && form.ocu02.value!='0') 
	  	total++; 
	  if (form.ocu03.value!="" && form.ocu03.value!='0') 
	  	total++;;
	  if (form.ocu04.value!="" && form.ocu04.value!='0') 
	  	total++;
	  if (form.ocu05.value!="" && form.ocu05.value!='0') 
	  	total++;
	  if (form.ocu06.value!="" && form.ocu06.value!='0') 
	  	total++;
	  if (form.ocu07.value!="" && form.ocu07.value!='0') 
	  	total++;
	  if (form.ocu08.value!="" && form.ocu08.value!='0') 
	  	total++;
	  if (form.ocu09.value!="" && form.ocu09.value!='0') 
	  	total++;
	  if (form.ocu10.value!="" && form.ocu10.value!='0') 
	  	total++;
	  if (form.ocu11.value!="" && form.ocu11.value!='0') 
	  	total++;
	  if (form.ocu12.value!="" && form.ocu12.value!='0') 
	  	total++;
	  	
 return (total);	  

}





/*Comprueba que la fecha introducida sea como mínimo la fecha actual*/
function compruebaFechaMinima(dia, mes, any){
	var hoy= new Date();
	var diah = hoy.getDate();
	var mesh = hoy.getMonth();
	var anyh;
	if(document.all)
		anyh = hoy.getYear();
	else
		anyh = hoy.getFullYear();
	//alert("diah="+diah+" mesh="+mesh+" anyh="+anyh+"\ndia="+dia+" mes="+mes+" any="+any);
	if ( ( (any>anyh) || 
	(any==anyh && mes>mesh) ) || 
	((any==anyh && mes==mesh) && dia>diah) )
		return 0;
	else
		return -1;
}

/*Funcion que actualiza la fs a partir del nº de noches*/
var mseg1Noche=1000*60*60*24;
function actualizar_fS(form){
    if ( !isNaN(parseInt(form.fe_dia.options[form.fe_dia.selectedIndex].text,10)) && 
	     !isNaN(parseInt(form.fe_mes.options[form.fe_mes.selectedIndex].text,10)) &&
		 !isNaN(parseInt(form.fe_anyo.options[form.fe_anyo.selectedIndex].text,10)) &&
		 !isNaN(parseInt(form.noches.options[form.noches.selectedIndex].text,10)) ){
		  
	    var dia= parseInt(form.fe_dia.options[form.fe_dia.selectedIndex].text,10);
		var mes= parseInt(form.fe_mes.options[form.fe_mes.selectedIndex].text,10);
		var any= parseInt(form.fe_anyo.options[form.fe_anyo.selectedIndex].text,10);
		//alert("dia="+dia+"mes"+mes+"año"+any);
		dia= dia + parseInt(form.noches.options[form.noches.selectedIndex].text,10);
		//alert("dia+nits="+dia);
		if (dia > getDaysInMonth(mes-1,any)){
			dia = dia - getDaysInMonth(mes-1,any);
			mes ++;
			if (mes > 12){
				mes = mes - 12;
				any ++;
			}
		}
		//alert("diaS="+dia+"mesS"+mes+"añoS"+any);	
		
		//form.fs_dia.selectedIndex = dia; 
		i = 0;
    	while (i < form.fs_dia.length ) {
			if (form.fs_dia.options[i].text == dia){ 
				form.fs_dia.selectedIndex = i;
				break;
			}
			else i++;
		}
		
		//form.fs_mes.selectedIndex = mes; 
		i = 0;
    	while (i < form.fs_mes.length ) {
			//alert('form.fs_mes.options['+i+'].text'+form.fs_mes.options[i].text);
			//alert('mes'+mes);
			if (form.fs_mes.options[i].text == mes){ 
				form.fs_mes.selectedIndex = i;
				break;
			}
			else i++;
		}
		
		i = 0;
    	while (i < form.fs_anyo.length ) {
			if (form.fs_anyo.options[i].text == any.toString(10)){ 
				form.fs_anyo.selectedIndex = i;
				break;
			}
			else i++;
		}
		actualizar_fs_dsem (form);		
	}//end if
	return;
}

/*Funcion que actualiza el nº de noches a partir de la fE y la fS*/
function actualizar_Noches(form){
	if ( !isNaN(parseInt(form.fs_dia.options[form.fs_dia.selectedIndex].text,10)) && 
	     !isNaN(parseInt(form.fs_mes.options[form.fs_mes.selectedIndex].text,10)) &&
		 !isNaN(parseInt(form.fs_anyo.options[form.fs_anyo.selectedIndex].text,10)) &&
		 !isNaN(parseInt(form.fe_dia.options[form.fe_dia.selectedIndex].text,10)) && 
	     !isNaN(parseInt(form.fe_mes.options[form.fe_mes.selectedIndex].text,10)) &&
		 !isNaN(parseInt(form.fe_anyo.options[form.fe_anyo.selectedIndex].text,10))){
		
		
		var diaE= parseInt(form.fe_dia.options[form.fe_dia.selectedIndex].text,10);
		var mesE= parseInt(form.fe_mes.options[form.fe_mes.selectedIndex].text,10);
		var anyE= parseInt(form.fe_anyo.options[form.fe_anyo.selectedIndex].text,10);
		var diaS= parseInt(form.fs_dia.options[form.fs_dia.selectedIndex].text,10);
		var mesS= parseInt(form.fs_mes.options[form.fs_mes.selectedIndex].text,10);
		var anyS= parseInt(form.fs_anyo.options[form.fs_anyo.selectedIndex].text,10);
		
		var nits;
		
		if ( ( (anyS>anyE) || (anyS==anyE && mesS>mesE) ) || ((anyS==anyE && mesS==mesE) && diaS>diaE) ){
			if (diaE==diaS && mesE==mesS && anyE==anyS)	{
				nits=0;
				//alert ("nits=0!");
			}
			else {
				nits=0;
				while (diaE!=diaS || mesE!=mesS || anyE!=anyS){
					diaE++; nits++;
					//alert ("Increment dia");
					if (diaE > getDaysInMonth(mesE-1,anyE)){
						diaE = diaE - getDaysInMonth(mesE-1,anyE);
						mesE ++;
						if (mesE > 12){
							mesE = mesE - 12;
							anyE ++;
						}
					}
				}//end while
			}
		}
		else //fs es anterior a fe!
			nits=0;
		
		if (nits > 0 && nits < form.noches.length)    
			form.noches.selectedIndex = nits; 
		else 
			form.noches.selectedIndex = 0;
			
	} //end if
	return nits;
	
}
/*Funciones para escribir el dia de la semana a partir de la fecha de checkin 
o checkout. Se usa el array arrSem que esta en meses.js*/
var arrSem = new Array();

function actualizar_fe_dsem (form){
	if( !isNaN(parseInt(form.fe_dia.options[form.fe_dia.selectedIndex].text,10)) && 
	    !isNaN(parseInt(form.fe_mes.options[form.fe_mes.selectedIndex].text,10)) &&
		!isNaN(parseInt(form.fe_anyo.options[form.fe_anyo.selectedIndex].text,10)) ){
				
		var diaE= parseInt(form.fe_dia.options[form.fe_dia.selectedIndex].text,10);
		var mesE= parseInt(form.fe_mes.options[form.fe_mes.selectedIndex].text,10);
		var anyE= parseInt(form.fe_anyo.options[form.fe_anyo.selectedIndex].text,10);
		
		var fentrada = new Date (anyE, mesE-1, diaE);
		
		var isem = fentrada.getDay();
		var idiI;
		if (m_Idi == 'ALE') idiI = 1;
		else if (m_Idi == 'ING') idiI = 2;
		else if (m_Idi == 'FRA') idiI = 3;
		else if (m_Idi == 'POR') idiI = 4;
		else if (m_Idi == 'ITA') idiI = 5;
		else idiI = 0;
		form.fe_dsem.value = arrSem[idiI][isem];
		if (form.fe_ndsem) form.fe_ndsem.value = isem;
	}
	return;
}
function actualizar_fs_dsem (form){
	if( !isNaN(parseInt(form.fs_dia.options[form.fs_dia.selectedIndex].text,10)) && 
	    !isNaN(parseInt(form.fs_mes.options[form.fs_mes.selectedIndex].text,10)) &&
		!isNaN(parseInt(form.fs_anyo.options[form.fs_anyo.selectedIndex].text,10)) ){
				
		var diaS= parseInt(form.fs_dia.options[form.fs_dia.selectedIndex].text,10);
		var mesS= parseInt(form.fs_mes.options[form.fs_mes.selectedIndex].text,10);
		var anyS= parseInt(form.fs_anyo.options[form.fs_anyo.selectedIndex].text,10);
		
		var fsalida = new Date (anyS, mesS-1, diaS);
		
		var isem = fsalida.getDay();
		var idiI;
		if (m_Idi == 'ALE') idiI = 1;
		else if (m_Idi == 'ING') idiI = 2;
		else if (m_Idi == 'FRA') idiI = 3;
		else if (m_Idi == 'POR') idiI = 4;
		else if (m_Idi == 'ITA') idiI = 5;
		else idiI = 0;
		form.fs_dsem.value = arrSem[idiI][isem];
		if (form.fs_ndsem) form.fs_ndsem.value = isem;
	}
	return;
}

/*Variables y funciones para paises, destinos y zonas*/
var zonaArr    = new Array(); // creamos el array bidimensional con las zonas por cada destino
var destArr    = new Array(); // creamos el array bidimensional con los destinos por cada pais
var paisArr    = new Array();

function escribePaises(form, ini, codpais, paises) {
	var cont, aux;
	var inicial = new String(ini);
    form.pais.options[0] = new Option(inicial, "");
	aux = 0;
	cont = 0;
	while (aux < paisArr.length ) {
	   if (paises) {
	      if (buscaPais(paises, paisArr[aux][0])) {
	         form.pais.options[cont+1] = new Option(paisArr[aux][1], paisArr[aux][0]);
	         cont++;
	      }
	   } else
		   form.pais.options[aux+1] = new Option(paisArr[aux][1], paisArr[aux][0]);
	   aux++;
	}
	if (codpais!=null && codpais!=''){
		var i = 0;
    	while (i < form.pais.length) {
			if (form.pais.options[i].value == codpais){
				form.pais.selectedIndex = i;
				return;
			} else i++;
		}
		if (form.pais.length == 2) form.pais.selectedIndex = 1;
	} else {
	   if (form.pais.length == 2) form.pais.selectedIndex = 1;
	   else form.pais.selectedIndex = 0;
   }
}

/* Se encarga de comprobar si se debe cargar el país */
function buscaPais(paises, codigo) {
   cod = '#' + codigo + '#';
   if (paises.indexOf(cod) != -1) return true
   return false;
}

/*Esta función reconstruye el select de zonas a partir de la elección de un destino.*/
function actualizarZonaPorDestino(form,ini, codzon) {
	var CodigoDestino;
	var cont, aux;
	//Si hemos seleccionado el primer elemento del select de zonas salimos
	if ( form.destino.selectedIndex == 0 || form.destino.options[form.destino.selectedIndex].value.length<1) {
		cont = form.zona.length;
		while (cont-- > 0 ) form.zona.options[0] = null;
		var inicial = new String(ini);
		form.zona.options[0] = new Option(inicial, "");
		return;
	}
	CodigoDestino = form.destino.options[form.destino.selectedIndex].value;
	aux = 0;
    while (zonaArr[aux][0] != CodigoDestino ) aux++;

    cont = form.zona.length;
    while (cont-- > 0 ) form.zona.options[0] = null;

	//Empezamos a reconstruir el select de zonas
    var inicial = new String(ini);

    form.zona.options[0] = new Option(inicial, "");
	cont = 1;
	while (zonaArr[aux][0] == CodigoDestino ) {
		form.zona.options[cont] = new Option(zonaArr[aux][2], zonaArr[aux][1]);
		if ( aux == zonaArr.length - 1 )
			break;
		cont++;
		aux++;
	}
	if (codzon!=null && codzon!=''){
		var i = 0;
    	while (i < form.zona.length ) {
			if (form.zona.options[i].value == codzon){ 
				form.zona.selectedIndex = i;
				return;
			}
			else i++;
		}
	}
	else
		form.zona.selectedIndex = 0;
}

/*Actualización 10/05/2004. Función que reconstruye el select de agrupaciones al seleccionar un destino */
function actualizarAgrupacionPorDestino(form, ini, codagrzon) {
	var CodigoDestino; //Almacenaremos el codigo del destino del select
	var cont, aux;
	cont = form.agr_zona.length;
    while (cont-- > 0 ) form.agr_zona.options[0] = null;
	
	//Empezamos a reconstruir el select de zonas
    
	var inicial = new String(ini);
	
	form.agr_zona.options[0] = new Option(inicial, "");	
	
	//Si hemos seleccionado el primer elemento del select de agrupaciones salimos
	if ( form.destino.selectedIndex == 0 || form.destino.options[form.destino.selectedIndex].value.length<1) 
	{
		cont = form.agr_zona.length;
		while (cont-- > 0 ) form.agr_zona.options[0] = null;
		var inicial = new String(ini);
		form.agr_zona.options[0] = new Option(inicial, "");
		return;
	}
	CodigoDestino = form.destino.options[form.destino.selectedIndex].value;	
	
	aux=0;
	while ((aux < agrZonaArr.length) && (agrZonaArr[aux][0] != CodigoDestino)) aux++;
	 
	
	cont = 1; //Indice del option
	var aux2;

	//Si ha recorrido todo el array sin econtrar nada saldra por la primera comparacion		
	while ((aux < agrZonaArr.length) && (agrZonaArr[aux][0] == CodigoDestino )) 
		{		
			//La A# sirve para distinguir entre las agrupaciones y las zonas a secas
			form.agr_zona.options[cont] = new Option(agrZonaArr[aux][2], 'A#'+agrZonaArr[aux][1]);
			form.agr_zona.options[cont].className="boton02";
			cont++;
			
			//*Buscamos el codigo de agrupacion en  ZonaPorAgrArr
			aux2=0;
			while ((aux2<zonaPorAgrArr.length) && (zonaPorAgrArr[aux2][0] != agrZonaArr[aux][1])) aux2++;
	
	
			//
			
			
			//Sacamos todos los que el corresponden al codigo de agrupacion
			while ((aux2<zonaPorAgrArr.length) && (zonaPorAgrArr[aux2][0] == agrZonaArr[aux][1] ))
			{		
			//	form.agr_zona.options[cont] = new Option ('  -'+zonaPorAgrArr[aux2][2],zonaPorAgrArr[aux2][1]);
			        form.agr_zona.options[cont] = new Option ('  -'+zonaPorAgrArr[aux2][2],'A#'+agrZonaArr[aux][1]);
				if ( aux2 == zonaPorAgrArr.length - 1 )
					break;
				cont++;
				aux2++;
			}	
			//*Si ya hemos llegado al limite salgo del bucle
			if ( aux == agrZonaArr.length - 1 ) break;
			
			aux++;
		}
	
	
	//Esto serviria pq desde algunas paginas se le pasa ya el codigo.
	//Si fuera asi debe sacar directamente ese destino como si lo hubieran seleccionado
	//en el desplegable. Lo he hecho por similitud con actualizarZonaPorDestino
	if (codagrzon!=null && codagrzon!=''){
		var i = 0;
    	while (i < form.agr_zona.length ) {
			//alert(form.agr_zona.options[i].value + " = " + codagrzon);
			if (form.agr_zona.options[i].value == codagrzon){ 
				form.agr_zona.selectedIndex = i;
				return;
			}
			else i++;
		}
	}
	else
		form.agr_zona.selectedIndex = 0;
}

/*Función que reconstruye el select de destinos a partir de la elección de un país.*/
function actualizarDestinoPorPais(form, ini, coddes, destinos) {
	var CodigoPais;
	var cont, aux, contador;
	//Si hemos seleccionado el primer elemento del select de paises salimos
	if ( form.pais.selectedIndex == 0 || form.pais.options[form.pais.selectedIndex].value.length<1) {
	    cont = form.destino.length;
	    while (cont-- > 0 ) form.destino.options[0] = null;
	    var inicial = new String(ini);
	    form.destino.options[0] = new Option(inicial, "");
		if(form.zona != null)
			actualizarZonaPorDestino(form,optZona, "");
		return;
	}
	CodigoPais = form.pais.options[form.pais.selectedIndex].value;
	aux = 0;
	contador = 1;
    while (destArr[aux][0] != CodigoPais ) aux++;

    cont = form.destino.length;
    while (cont-- > 0 ) form.destino.options[0] = null;

	//Empezamos a reconstruir el select de destinos
    var inicial = new String(ini);

    form.destino.options[0] = new Option(inicial, "");
	cont = 1;
	while (destArr[aux][0] == CodigoPais ) {
	//El campo destinos indica si se ha pasado desde la xsl los destinos que han de aparecer en la solapa
	//si no están se ignora este bloque y se cargan todos
	   if (destinos) {
	      if (buscaPaisDestino(CodigoPais, destinos, destArr[aux][1])) {
	         form.destino.options[contador] = new Option(destArr[aux][2], destArr[aux][1]);
	         contador++;
	      }
	   } else
		   form.destino.options[cont] = new Option(destArr[aux][2], destArr[aux][1]);
		if ( aux == destArr.length - 1 )
			break;
		cont++;
		aux++;
	}
	if (coddes!=null && coddes!=''){
		var i = 0;
    	while (i < form.destino.length ) {
			if (form.destino.options[i].value == coddes){ 
				form.destino.selectedIndex = i;
				return;
			}
			else i++;
		}
	}
	else
		form.destino.selectedIndex = 0;
}

/* Se encarga de comprobar si se debe cargar el destino */
function buscaPaisDestino(codigoPais, destinos, codigoDestino) {
   cod = '#' + codigoPais + '%' + codigoDestino + '#';
   if (destinos.indexOf(cod) != -1) return true;
   return false;
}

/*Saca la fecha de la cabecera con el formato de las paginas principales*/
function data()
{
	//Selección de idioma
	var idiI;
	var idioma = strIdi;
	if (idioma == 'ALE') idiI = 1;
	else if (idioma == 'ING') idiI = 2;
	else if (idioma == 'FRA') idiI = 3;
	else if (idioma == 'POR') idiI = 4;
	else idiI = 0;

	Dia= new Date();
	if(document.all)
	{
		document.write(Dia.getDate()+' | '+(arrMes[idiI][Dia.getMonth()])+' | '+Dia.getYear());
	}
	else
	{
		document.write(Dia.getDate()+' | '+(arrMes[idiI][Dia.getMonth()])+' | '+Dia.getFullYear());
	}
}

/*Saca la fecha de la cabecera con el formato de las paginas auxiliares*/
function data_modif()
{
	//Selección de idioma
	var idiI;
	var idioma = strIdi;
	if (idioma == 'ALE') idiI = 1;
	else if (idioma == 'ING') idiI = 2;
	else if (idioma == 'FRA') idiI = 3;
	else idiI = 0;

	Dia= new Date();
	if(document.all)
	{
		document.write(Dia.getDate()+' / '+(arrMes[idiI][Dia.getMonth()])+' / '+Dia.getYear());
	}
	else
	{
		document.write(Dia.getDate()+' / '+(arrMes[idiI][Dia.getMonth()])+' / '+Dia.getFullYear());
	}
}


/*
	Función para enviar páginas por mail a través de la página formMail.jsp
*/
function popByMail(page,subject,names,parameters){
	var strURL = "formMail.jsp?";
	strURL += "subject=" + subject + "&";
	strURL += "page=" + page + "&";
	for(var i = 0; i < names.length; i++){
		strURL += names[i] + "=" + parameters[i];
		if( (i + 1) != names.length ){
			strURL += "&";
		}
	}

	var ancho = 450;
	var alto = 100;
	coordX=(event.screenX - parseInt(ancho/2));
	coordY=(event.screenY + 10);

	window.open(strURL,"formMail",'menubar=no,locationbar=no,statusbar=no,scrollbars=no,resizable=no,height='+alto+',width='+ancho+',screenX='+coordX+',screenY='+coordY+',top='+coordY+',left='+coordX);
}

function openLegalNotes(interf,idioma,path_estilo) {
	var ancho = 640;
	var strURL = "avisolegal_" + idioma;
/*
	if(interf == 'F'){
		strURL += "_" + interf;
	}
*/
	strURL += ".jsp?age_path=" + path_estilo;
	if(interf == 'F'){
		strURL = path_estilo + "about_first4hotels.htm";
		ancho = 540;
	}
	window.open(strURL,"_blank","scrollbars=yes,width=" + ancho + ",height=400");
}

/*function cargando()
{
  capaCargando = new DynLayer("divCargando");
  capaCargando.hide(); 
}*/
