// -- detectar navegadores (básicamente)
var dom=typeof(document.getElementById)!="undefined"?true:false
var ns4=document.layers?true:false
var ie4=document.all?true:false
var ns6=dom&&navigator.appName.indexOf("Netscape")>-1?true:false
var iew=navigator.appName.indexOf("Microsoft")>-1?true:false

/*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);
 }

/*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;
}

/*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 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();
}

//posición del cursor respecto a la pantalla cuando se abre el calendario

var coordX = 0;
var coordY = 0;

function verCoordenadas(E){ // rastrea el ratón
	if(iew)E=event
	coordX=dom?(E.pageX?E.pageX:E.x):E.x
	coordY=dom?(E.pageY?E.pageY:E.y):E.y
	return true
}
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("calendar.php?age_path="+age_path,"calendario",'location=no,menubar=no,width=192,height=165,screenX=0,screenY=0,top='+coordY+',left='+coordX);
}

/*Escribe los options con valores desde ini hasta fi de 1 en 1*/
function escriu_options1(ini, fi, sel)
{
	var i=parseInt(ini);
	var zerro = 0;
	while (i<=parseInt(fi)){
	if (i>9) zerro='';
		if (sel!='' && i==parseInt(sel,10))
			document.write('<option selected  >'+zerro+i+'</option>');
		else
			document.write('<option  >'+zerro+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.getFullYear();
	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);
}

/*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;
	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++;
		}

	}//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;

}


/*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) {
	var cont, aux;

	var inicial = new String(ini);
    form.pais.options[0] = new Option(inicial, "");
	aux = 0;
	while (aux < paisArr.length ) {
		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++;
		}
	}
	else
		form.pais.selectedIndex = 0;
}

/*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="bordes";
			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 (sacamos las zonas que hay dentro)
			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) {
	var CodigoPais;
	var cont, aux;
	//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;
    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 ) {
		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;
}

/*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 idiI = 2;

	Dia= new Date();
	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 = 2;

	Dia= new Date();
	document.write(Dia.getDate()+' / '+(arrMes[idiI][Dia.getMonth()])+' / '+Dia.getFullYear());
}


/*function cargando()
{
  capaCargando = new DynLayer("divCargando");
  capaCargando.hide();
}*/

//En texto inicial encontramos el texto que se le podrá a la primera opción del combo
function actualizarPaises(textoinicial)
	{
	for (j=document.frsv01.pais.length-1; j>=0; j--) document.frsv01.pais.options[j] = null;
	document.frsv01.pais.options[0]=new Option(textoinicial, "");
	paises=p[1].split('#');
	for (i=0; i<paises.length; i++)
		{
		items=paises[i].split('|');
		document.frsv01.pais.options[i+1]=new Option(items[1],i+"."+items[0]);
		}
	}

//En texto inicial encontramos el texto que se le podrá a la primera opción del combo
function actualizarDestinos(textoinicial)
	{
	for (j=document.frsv01.destino.length-1; j>=0; j--) document.frsv01.destino.options[j] = null;
	document.frsv01.destino.options[0]=new Option(textoinicial, "");
	valor=document.frsv01.pais.value.split('.');
	if (valor[0])
		{
		provincias=d[valor[0]].split('#');
		for (i=0; i<provincias.length; i++)
			{
			items=provincias[i].split('|');
			document.frsv01.destino.options[i+1]=new Option(items[1],i+"."+items[0]);
			}
		}
	}