﻿/*--------------------------------Definido, diseñado y creado por Rubén Martín Guerrero 15/06/2008------------------------------*/

var xmlcomunidad_provincia = null;
var xmllocalidad = null;
var xmlorigenes = null;


/*---------------------------------------------Funciones Destino Sólo Hotel------------------------------------------------------*/

function pinta_comunidades (BuscHotel,texto_inicio,rutaxml){//Pinta comunidades o paises sin ningun tipo de control

//Bloque de codigo que llama a funcion para generar objeto ajax  y recupera la informacion del xml indicado	

	var aj=ajax();
	
    if(!aj){
        alert('error');
        return;
    }

    aj.open('get',rutaxml,false);

	aj.send(null); 

	xmlcomunidad_provincia=aj.responseXML.documentElement;

//Fin bloque codigo ajax

	var comunidades= xmlcomunidad_provincia.getElementsByTagName('comunidad');
	var long_com = comunidades.length;
	var i=0;

	BuscHotel.options[0] = new Option(texto_inicio,'')

	for (i=0; i<long_com; i++)
	{
		BuscHotel.options[i+1]=new Option(comunidades[i].getAttribute('nombre_comunidad'),comunidades[i].getAttribute('cod_comunidad'));
	}

}


function pinta_provincias_com (BuscHotel,cod_comunidad,texto_inicio,rutaxml){//Pinta provincias o ciudad teniendo encuenta el pais
//Bloque de codigo que llama a funcion para generar objeto ajax  y recupera la informacion del xml indicado	
	var aj=ajax();
	
    if(!aj){
        alert('error');
        return;
    }

    aj.open('get',rutaxml,false);

	aj.send(null); 

	xmlcomunidad_provincia=aj.responseXML.documentElement;

//Fin bloque codigo ajax

	var areas = new Array ();
	var pos_array = 0;
	var provincias= xmlcomunidad_provincia.getElementsByTagName('provincia');
	var long_pro = provincias.length;

	var i=0;

	BuscHotel.options[0] = new Option(texto_inicio,'')

	for (i=0; i<long_pro; i++)
	{
		if(provincias[i].getAttribute('cod_comunidad')==cod_comunidad)
		{
//alert(provincias[i].getAttribute('cod_comunidad'));
			areas[pos_array]=provincias[i].getAttribute('nombre_provincia') + "-" + provincias[i].getAttribute('cod_provincia');
			pos_array=pos_array+1;
		}
	}
	areas = ordenaArray (areas);
	pintaArea (areas,BuscHotel);	

}

function pinta_provincias (BuscHotel,texto_inicio,rutaxml){

//Bloque de codigo que llama a funcion para generar objeto ajax  y recupera la informacion del xml indicado	
	var aj=ajax();
	
    if(!aj){
        alert('error');
        return;
    }

    aj.open('get',rutaxml,false);

	aj.send(null); 

	xmlcomunidad_provincia=aj.responseXML.documentElement;

//Fin bloque codigo ajax
	var areas = new Array ();
	var pos_array = 0;
	var provincias= xmlcomunidad_provincia.getElementsByTagName('provincia');
	var long_pro = provincias.length;

	var i=0;

	BuscHotel.options[0] = new Option(texto_inicio,'')

	for (i=0; i<long_pro; i++)
	{		
		areas[pos_array]=provincias[i].getAttribute('nombre_provincia') + "-" + provincias[i].getAttribute('cod_provincia');
		pos_array=pos_array+1;
	}

	areas = ordenaArray (areas);
	pintaArea (areas,BuscHotel);	
}

function pintaArea (areas,BuscHotel){
	var long_area = areas.length;
	var dato;

	for (i=0; i<long_area; i++)	{
		dato = areas[i].split ("-");
		BuscHotel.options[i+1]=new Option(dato[0],dato[1]);
//alert(BuscHotel.options[i+1].value);
	}
	
	//Destinos nieve
	var desc_estacion = new Array("---- Estaciones de Nieve ----","Andorra","Pirineo Aragonés","Pirineo Catalán","Pirineo Francés","Sierra Nevada");
	var cod_estacion =  new Array("nieve","NRR","ARA","CAT","FRA","AND");
	var j;
	
	for (j=0; j< desc_estacion.length; j++)
	{
		BuscHotel.options[i+1] = new Option (desc_estacion[j],cod_estacion[j])	
		i++;
	}
}


//DESTINOS NIEVE
function carga_estacion(estacion,zona)
{	
	estacion.options[0] = new Option ("Selecciona estación","");
	
	switch (zona)
	{
		case "AND": 	
				estacion.options.length=2;
				estacion.options[1]=new Option("Sierra Nevada","NVSN-GRX");	
			break;
		case "NRR": 	
				estacion.options.length=4;
				estacion.options[1]=new Option("Andorra la Vella","NVAV-NRR");	
				//estacion.options[1]=new Option("Andorra la Vella","-NRR");
				estacion.options[2]=new Option("Grandvalira","NVGR-NRR");	
				//estacion.options[2]=new Option("Grandvalira","-NRR");	
				estacion.options[3]=new Option("Vallnord","NVVL-NRR");	
			break;
		case "ARA": 	
				estacion.options.length=5;
				//estacion.options[1]=new Option("Astún","NVCA-HUA");	
				estacion.options[1]=new Option("Astún y Candanchú","NVCA-HUA");	
				estacion.options[2]=new Option("Cerler","NVCE-HUA");	
				estacion.options[3]=new Option("Formigal y Panticosa","NVFO-HUA");	
				//estacion.options[4]=new Option("Panticosa","NVPA-HUA");	
			break;	
		case "FRA": 	
				estacion.options.length=5;
				estacion.options[1]=new Option("Cauterets","NVCT-PIF");	
				estacion.options[2]=new Option("Font Romeu","NVFR-PIF");	
				estacion.options[3]=new Option("Les Angles","NVLE-PIF");	
				estacion.options[4]=new Option("Saint Lary","NVSA-PIF");	
			break;			
		case "CAT": 	
				estacion.options.length=5;
				estacion.options[1]=new Option("Baqueira Beret","NVBB-QLQ");	
				estacion.options[2]=new Option("Boi Taüll","NVBO-QLQ");	
				estacion.options[3]=new Option("La Molina y Masella","NVMO-GRO");	
				//estacion.options[4]=new Option("Masella","NVMA-GRO");	
				//estacion.options[4]=new Option("Masella","-GRO");	
			break;		
	}
}


function seleccion_localidad()
{
	//ESTACIONES DE NIEVE
	if((es_AndorraNieve() || document.BuscHotel.pro.value == "ARA" || document.BuscHotel.pro.value == "CAT" || document.BuscHotel.pro.value == "FRA" || document.BuscHotel.pro.value == "AND") &&  $("#pro").find("option:selected").text() != "Castellón")
	{
		$(".texto_select").text ("Destino:");
		$(".texto_select2").text ("Estación:");
		$(".texto_select").css ("margin-left","36px");
		$(".texto_select2").css ("margin-left","34px");
		es_nieve = 1;
		
		//seleccion primera pagina nieve
		if (document.BuscHotel.pro.value == "FRA")
		{
			codpagina = "NVF";
			$("#botavanzado").attr("href","http://www.viajeselcorteingles.es/viajes/vuelos_hoteles/programas/buscador.asp?copagina="+ codpagina +"&codwebor=ESP");
		}
		else
		{
			codpagina = "NAZ";
			$("#botavanzado").attr("href","http://www.viajeselcorteingles.es/viajes/vuelos_hoteles/programas/buscador.asp?copagina="+ codpagina +"&codwebor=ESP");
		}
			
		document.BuscHotel.comunidad_pais.value = "";
		borracombo(document.BuscHotel.loc);
		document.BuscHotel.loc.options[0] = new Option('(Opcional)','')
		borracombo(document.BuscHotel.folletovalido);
		document.BuscHotel.folletovalido.options[0] = new Option('(Opcional)','')
		controla_TipoHotel();	
		carga_estacion(document.BuscHotel.loc,document.BuscHotel.pro.value)
	}
	else if (document.BuscHotel.pro.value == "nieve") //CUANDO LA OPCION SELECCIONADA ES ----ESTACIONES DE NIEVE ----
	{
		$(".texto_select").text ("Destino:");
		$(".texto_select2").text ("Estación:");
		$(".texto_select").css ("margin-left","36px");
		$(".texto_select2").css ("margin-left","34px");
		es_nieve = 1;	
		codpagina = "NAZ";	
		$("#botavanzado").attr("href","http://www.viajeselcorteingles.es/viajes/vuelos_hoteles/programas/buscador.asp?copagina=" + codpagina + "&codwebor=ESP");	
		borracombo(document.BuscHotel.loc);
		document.BuscHotel.loc.options[0] = new Option('(Opcional)','')
		borracombo(document.BuscHotel.folletovalido);
		document.BuscHotel.comunidad_pais.value = "";	
		controla_TipoHotel();
		document.BuscHotel.folletovalido.options[0] = new Option('(Opcional)','')
	}
	else //RESTO BUSQUEDAS DE HOTEL
	{
		$(".texto_select").text ("Provincia/Área:");
		$(".texto_select2").text ("Localidad:");
		$(".texto_select").css ("margin-left","0px");
		$(".texto_select2").css ("margin-left","27px");
		es_nieve = 0;	
		codpagina = "NAC";		
		$("#botavanzado").attr("href","http://www.viajeselcorteingles.es/viajes/vuelos_hoteles/programas/buscador.asp?copagina=" + codpagina + "&codwebor=ESP")	;
		pinta_localidad(document.BuscHotel.loc,document.BuscHotel.pro,'(Opcional)',rutas_localidades_nacionales);
		recupera_comunidad_pais(document.BuscHotel.pro.value);
	}
}

function es_AndorraNieve()
{
	var opcion_seleccionada = parseInt(document.BuscHotel.pro.selectedIndex) - 1;

	if (document.BuscHotel.pro.value == "NRR")
	{
		if (document.BuscHotel.pro.options[opcion_seleccionada].value == "nieve")
			return true;
		else
			return false;
	}
	else
		return false;
}

function controla_TipoHotel()
{
	//PARA NIEVE NO DEJO SELECCIONAR Y PONGO DIRECTAMENTE NIEVE
	if((document.BuscHotel.pro.value == "NRR" || document.BuscHotel.pro.value == "ARA" || document.BuscHotel.pro.value == "CAT" || document.BuscHotel.pro.value == "AND" || document.BuscHotel.pro.value == "nieve") &&  $("#pro").find("option:selected").text() != "Castellón")
	{
		borracombo(document.BuscHotel.folletovalido);
		document.BuscHotel.folletovalido.options[0] = new Option ("Nieve","A11NV");	
	}
	else if (document.BuscHotel.pro.value == "FRA")
	{
		borracombo(document.BuscHotel.folletovalido);
		document.BuscHotel.folletovalido.options[0] = new Option ("Nieve","V11NV");
	}
	else
		controlaZona(document.BuscHotel.loc.value,document.BuscHotel.folletovalido);
}

function pinta_localidad (BuscHotel,cod_provincia,texto_inicio,ruta_localidades)
{
	if(cod_provincia.selectedIndex==0)
	{
		borracombo(BuscHotel);
		BuscHotel.options[0] = new Option('(Opcional)','')
	}
	else
	{
		borracombo(BuscHotel);
		var encontrado=0;
		var folletos="";
		var ruta_xml=ruta_localidades + cod_provincia.value + ".xml";
		
	
	//Bloque de codigo que llama a funcion para generar objeto ajax  y recupera la informacion del xml indicado	
		var aj=ajax();
		
		if(!aj){
			alert('error');
			return;
		}
	
		aj.open('get',ruta_xml,false);
	
		aj.send(null); 
	
		xmllocalidad=aj.responseXML.documentElement;
	
	//Fin bloque codigo ajax
	
		var localidades= xmllocalidad.getElementsByTagName('localidad');
		var long_loc = localidades.length;
		var i=0;
		var j=1;
	
		BuscHotel.options[0] = new Option(texto_inicio,'')
	
		for (i=0; i<long_loc; i++)
		{
			if(localidades[i].getAttribute('vendible')=='SI')
			{
				BuscHotel.options[j]=new Option(localidades[i].getAttribute('nombre_localidad'),localidades[i].getAttribute('cod'));
				if (encontrado != 0)
				{
					folletos += ',';
				}
				folletos += localidades[i].getAttribute('folleto');
				encontrado=1;
				j=j+1;
			}
		}
		if (encontrado != 0)
		pintaFolletos (folletos,document.BuscHotel.folletovalido)
	}
}


function controlaZona (zona,BuscHotel){

	borracombo(BuscHotel);
	var localidades= xmllocalidad.getElementsByTagName('localidad');
	var long_loc = localidades.length;
	var i=0;

	for (i=0; i<long_loc; i++)
	{
		if(localidades[i].getAttribute('cod')==zona)
			pintaFolletos(localidades[i].getAttribute("folleto"),BuscHotel);
	}
}

function pintaFolletos (folletos,BuscHotel){

	var folleto = folletos.split(",");
	var tot_folletos = folleto.length;
	var folletos_pintados = new Array ();
	var cont_folleto;
	var cont_select = 1
	var encontrado;

	borracombo (BuscHotel);
	BuscHotel.options[0] = new Option("(Todos)","")
	for (i=0; i<tot_folletos;i++){
		if (folleto [i] != 'BH' && folleto [i] != 'FS'){
			cont_folleto = folletos_pintados.length;
			if (cont_folleto == 0){
				pintaNombreFolleto(BuscHotel,folleto[i],cont_select);
				cont_select++;
				folletos_pintados [cont_folleto] = folleto [i];
			}
			else
			{
				encontrado = 0;
				for (j=0;j<cont_folleto;j++){
					if (folleto[i] == folletos_pintados[j]) encontrado++
				}
				if (encontrado == 0){
					pintaNombreFolleto(BuscHotel,folleto[i],cont_select);
					cont_select++;
					folletos_pintados [cont_folleto] = folleto [i];	
				}
			}
		}
	}
}

function pintaNombreFolleto (BuscHotel,folleto,cont){
	switch (folleto){
		case "EM": 	BuscHotel.options[cont]=new Option("Urbano",folleto);	
					break;
		case "FM": 	BuscHotel.options[cont]=new Option("Hotel de Montaña",folleto);	
					break;
		case "FR": 	BuscHotel.options[cont]=new Option("Turismo Rural",folleto);	
					break;
		case "MC": 	BuscHotel.options[cont]=new Option("Hotel en la playa",folleto);	
					break;
		case "FP": 	BuscHotel.options[cont]=new Option("Parador",folleto);	
					break;
		case "PA": 	BuscHotel.options[cont]=new Option("Port Aventura",folleto);	
					break;
		case "II": 	BuscHotel.options[cont]=new Option("Islas",folleto);	
					break;
		case "PE": 	BuscHotel.options[cont]=new Option("Picos de Europa",folleto);	
					break;
		case "CP": 	BuscHotel.options[cont]=new Option("Hoteles con Encanto",folleto);	
					break;
		case "SB": 	BuscHotel.options[cont]=new Option("Salud y Belleza",folleto);	
					break;
		case "ED": 	BuscHotel.options[cont]=new Option("Disney",folleto);	
					break;
	}
}

/*----------------------------------------------------Funciones Neutras-----------------------------------------------------------*/

function recupera_comunidad_pais(provincia_seleccionada)//al acceder directamente a pintar las provincias, cuando estas cambiam es necesario recuperar su comunidad
{
if(provincia_seleccionada!="")
{
	var provincias = xmlcomunidad_provincia.getElementsByTagName('provincia');
	var long_pro = provincias.length;
	var i=0;
	var encontrado=0;

	while(i<=long_pro && encontrado==0)
	{
		if(provincias[i].getAttribute('cod_provincia')==provincia_seleccionada)
		{
			document.BuscHotel.comunidad_pais.value=provincias[i].getAttribute('cod_comunidad');
			encontrado=1;
		}
		i++;
	}
}
else
{
	document.BuscHotel.comunidad_pais.value="";
}
}

function inicializa_destino(BuscHotel)
{
	BuscHotel.selectedIndex=0;
}

function borracombo (BuscHotel){
	var elemencombo = BuscHotel.length;
	for(i=0;i<elemencombo;i++){
		BuscHotel.options[0]=null;
	}
}

function ordenaArray (areas){
	var cambio;
	var aux;
	var i =0;
	var j=0;

	while(i < areas.length && cambio!=0){
		cambio=0;
		for(j=0;j<areas.length-1;j++){
			if(areas[j]>areas[j+1]){
				aux=areas[j];
				areas[j]=areas[j+1];	
				areas[j+1]=aux;
				cambio=1;
			}
		}
		i++;	
	}
	return areas;
}
