     //Funciones para la validacion de fechas
   function merge(obj, var1, var2, idia, fdia, fmerge, fmes, fany)
	{
	alert(entro);
	var date = new Array();
	date = obj.value.split("-");
	var1.value = date[0]; alert(var1.value);
	var2.value = date[1]; alert(var2.value);
	
	if(idia) chkDate(idia, obj, fdia, fmerge, fmes, fany);
	}

	function merge(obj, var1, var2, idia, fdia, fmerge, fmes, fany)
	{
		var date = new Array();
		date = obj.value.split("-");
		var1.value = date[0];
		var2.value = date[1];
		
		if(idia) chkDate(idia, obj, fdia, fmerge, fmes, fany);
	}
			
	function chkDate(var1, var2, var3, var4, var5, var6)
	{
		date1 = var2.value.split("-");
		date2 = var4.value.split("-");
	
		fecha1=new Date(date1[0], date1[1]-1, var1.value);
		fecha2=new Date(date2[0], date2[1]-1, var3.value);
	
		if(fecha2<fecha1){
			fin = new Date(fecha1.getTime()+(24*60*60*3*1000));
			year = fin.getFullYear();
			month = fin.getMonth()+1;
			day = fin.getDate();
			if(month < 10) month='0'+month;
			if(day < 10) day='0'+day;
			var3.value = day;
			var4.value = year+'-'+month;
			var5.value = month;
			var6.value = year;
		}
	}
	function esDigito(sChr){
	var sCod = sChr.charCodeAt(0);
	return ((sCod > 47) && (sCod < 58));
	}

    function valSep(oTxt){
    var bOk = false;
    bOk = bOk || ((oTxt.charAt(2) == "-") && (oTxt.charAt(5) == "-"));
    bOk = bOk || ((oTxt.charAt(2) == "/") && (oTxt.charAt(5) == "/"));
    return bOk;
    }

   function finMes(oTxt){
    var nMes = parseInt(oTxt.substr(3, 2), 10);
    var nAno = parseInt(oTxt.substr(6), 10);
    var nRes = 0;
    switch (nMes){
     case 1: nRes = 31; break;
     case 2: nRes = 28; break;
     case 3: nRes = 31; break;
     case 4: nRes = 30; break;
     case 5: nRes = 31; break;
     case 6: nRes = 30; break;
     case 7: nRes = 31; break;
     case 8: nRes = 31; break;
     case 9: nRes = 30; break;
     case 10: nRes = 31; break;
     case 11: nRes = 30; break;
     case 12: nRes = 31; break;
    }
    return nRes + (((nMes == 2) && (nAno % 4) == 0)? 1: 0);
   }

   function valDia(oTxt){
    var bOk = false;
    var nDia = parseInt(oTxt.substr(0, 2), 10);
    bOk = bOk || ((nDia >= 1) && (nDia <= finMes(oTxt)));
    return bOk;
   }

   function valMes(oTxt){
    var bOk = false;
    var nMes = parseInt(oTxt.substr(3, 2), 10);
    bOk = bOk || ((nMes >= 1) && (nMes <= 12));
    return bOk;
   }

   function valAno(oTxt){
    var bOk = true;
    var nAno = oTxt.substr(6);
    bOk = bOk && ((nAno.length == 2) || (nAno.length == 4));
    if (bOk){
     for (var i = 0; i < nAno.length; i++){
      bOk = bOk && esDigito(nAno.charAt(i));
     }
    }
    return bOk;
   }

   function valFecha(oTxt){
    var bOk = true;
    if (oTxt != ""){
     bOk = bOk && (valAno(oTxt));
     bOk = bOk && (valMes(oTxt));
     bOk = bOk && (valDia(oTxt));
     bOk = bOk && (valSep(oTxt));
     return bOk;
    }
   }

   function fechaMayorQue(inicio, fin){
    var bRes = false;
    var sDia0 = inicio.substr(0, 2);
    var sMes0 = inicio.substr(3, 2);
    var sAno0 = inicio.substr(6, 4);
    var sDia1 = fin.substr(0, 2);
    var sMes1 = fin.substr(3, 2);
    var sAno1 = fin.substr(6, 4);
    if (sAno0 > sAno1) bRes = true;
    else {
     if (sAno0 == sAno1){
      if (sMes0 > sMes1) bRes = true;
      else {
       if (sMes0 == sMes1)
        if (sDia0 > sDia1) bRes = true;
      }
     }
    }
    return bRes;
   }

   function valFechas(idia, imes, iany, fdia, fmes, fany){
    var bOk = false;
    
    var inicio 	= idia+"/"+imes+"/"+iany;
    var fin		= fdia+"/"+fmes+"/"+fany;

    if (valFecha(inicio)){
     if (valFecha(fin)){
      if (fechaMayorQue(fin, inicio)){
       bOk = true;
       return true;
      } else {
       alert("Invalid range");
       return false;
      }
     } else {
      alert("Wrong departure date");
      return false;
     }
    } else {
     alert("Wrong arrival date");
     return false;
    }
   } 
   
   //ZONAS Y DISTRITOS DE TODOS LOS DESTINOS	
		var DISTRICTS = new Array();
		var CODES = new Array();
		
		//BARCELONA ZONES		
		DISTRICTS['BAR']     = new Array();
		DISTRICTS['BAR'][0]  = 'Barceloneta';
		DISTRICTS['BAR'][1]  = 'Borne';
		DISTRICTS['BAR'][2]  = 'Eixample derecho';
		DISTRICTS['BAR'][3]  = 'Eixample izquierda';
		DISTRICTS['BAR'][4]  = 'Gotico';
		DISTRICTS['BAR'][5]  = 'Gracia';
		DISTRICTS['BAR'][6]  = 'Horta';
		DISTRICTS['BAR'][7]  = 'Les Corts';
		DISTRICTS['BAR'][8]  = 'Poble Sec';
		DISTRICTS['BAR'][9]  = 'Raval';
		DISTRICTS['BAR'][10] = 'San Gervasi';
		DISTRICTS['BAR'][11] = 'Sant Marti';
		DISTRICTS['BAR'][12] = 'Santa Caterina / Sant Per';
		DISTRICTS['BAR'][13] = 'Sants';
		DISTRICTS['BAR'][14] = 'Vila Olimpica';
			
		CODES['BAR'] = new Array();
		CODES['BAR'][0] = 3;
		CODES['BAR'][1] = 4;
		CODES['BAR'][2] = 8;
		CODES['BAR'][3] = 7;
		CODES['BAR'][4] = 2;
		CODES['BAR'][5] = 10;
		CODES['BAR'][6] = 14;
		CODES['BAR'][7] = 12;
		CODES['BAR'][8] = 9;
		CODES['BAR'][9] = 1;
		CODES['BAR'][10] = 11;
		CODES['BAR'][11] = 15;
		CODES['BAR'][12] = 5;
		CODES['BAR'][13] = 13;
		CODES['BAR'][14] = 6;
		
		
		//COSTA BRAVA CITIES	
		DISTRICTS['CBR']    = new Array();									
		DISTRICTS['CBR'][0] = 'Arenys de Mar';										
		DISTRICTS['CBR'][1] = 'Blanes';										
		DISTRICTS['CBR'][2] = 'Calella de Mar';										
		DISTRICTS['CBR'][3] = 'Canet de Mar';										
		DISTRICTS['CBR'][4] = 'Cassa de la Selva';										
		DISTRICTS['CBR'][5] = 'Cruilles';										
		DISTRICTS['CBR'][6] = 'Empuriabrava';										
		DISTRICTS['CBR'][7] = 'L\'Estartit';										
		DISTRICTS['CBR'][8] = 'Lloret de Mar';										
		DISTRICTS['CBR'][9] = 'Malgrat de Mar';										
		DISTRICTS['CBR'][10] = 'Palamos';										
		DISTRICTS['CBR'][11] = 'Platja d\'Aro';										
		DISTRICTS['CBR'][12] = 'Rosas';										
		DISTRICTS['CBR'][13] = 'Roses';										
		DISTRICTS['CBR'][14] = 'Agaro';										
		DISTRICTS['CBR'][15] = 'Tossa de Mar';
		
		CODES['CBR'] = new Array();
		CODES['CBR'][0] = 100000;										
		CODES['CBR'][1] = 528;										
		CODES['CBR'][2] = 592;										
		CODES['CBR'][3] = 593;										
		CODES['CBR'][4] = 497;										
		CODES['CBR'][5] = 503;										
		CODES['CBR'][6] = 436;										
		CODES['CBR'][7] = 475;										
		CODES['CBR'][8] = 493;										
		CODES['CBR'][9] = 597;										
		CODES['CBR'][10] = 449;										
		CODES['CBR'][11] = 470;										
		CODES['CBR'][12] = 448;										
		CODES['CBR'][13] = 647;										
		CODES['CBR'][14] = 537;										
		CODES['CBR'][15] = 472;
		
		//COSTA DEL SOL CITIES	
		DISTRICTS['CDO']     = new Array();	
		DISTRICTS['CDO'][0]  = 'Altafulla';
		DISTRICTS['CDO'][1]  = 'Ametlla de Mar';										
		DISTRICTS['CDO'][2]  = 'Brafim';										
		DISTRICTS['CDO'][3]  = 'Cambrils';										
		DISTRICTS['CDO'][4]  = 'Castelldefels';										
		DISTRICTS['CDO'][5]  = 'La Pineda';										
		DISTRICTS['CDO'][6]  = 'Les Cases d\'Alcanar';										
		DISTRICTS['CDO'][7]  = 'Miami Playa';										
		DISTRICTS['CDO'][8]  = 'Salou';										
		DISTRICTS['CDO'][9]  = 'Selva del Camp';										
		DISTRICTS['CDO'][10] = 'Sitges';										
		DISTRICTS['CDO'][11] = 'Valls';										
		DISTRICTS['CDO'][12] = 'Vila-Seca';										
		DISTRICTS['CDO'][13] = 'Vilanova i la Geltru';										

		CODES['CDO'] = new Array();
		CODES['CDO'][0] = 536;
		CODES['CDO'][1] = 693;										
		CODES['CDO'][2] = 583;										
		CODES['CDO'][3] = 439;										
		CODES['CDO'][4] = 454;										
		CODES['CDO'][5] = 440;										
		CODES['CDO'][6] = 455;										
		CODES['CDO'][7] = 438;										
		CODES['CDO'][8] = 441;										
		CODES['CDO'][9] = 564;										
		CODES['CDO'][10] = 437;										
		CODES['CDO'][11] = 533;										
		CODES['CDO'][12] = 735;
		CODES['CDO'][13] = 570;											
							
		//GERONA CITIES
		DISTRICTS['GIR'] = new Array();	
		DISTRICTS['GIR'][0] = 'Torremirona-Navata';	
		
		CODES['GIR'] = new Array();
		CODES['GIR'][0] = 588;

		//IBIZA CITIES
		DISTRICTS['IBI'] = new Array();	
		DISTRICTS['IBI'][0] = 'Portinaxt';										
		DISTRICTS['IBI'][1] = 'San Antonio';										
		DISTRICTS['IBI'][2] = 'San antonio-bahia';										
		DISTRICTS['IBI'][3] = 'San Augustin';										
		DISTRICTS['IBI'][4] = 'Santa Eulalia del Rio';	
		
		CODES['IBI'] = new Array();
		CODES['IBI'][0] = 538;										
		CODES['IBI'][1] = 495;										
		CODES['IBI'][2] = 613;										
		CODES['IBI'][3] = 576;										
		CODES['IBI'][4] = 494;	
		
		//MALLORCA CITIES
		DISTRICTS['MAL'] = new Array();	
		DISTRICTS['MAL'][0] = 'Alcudia';										
		DISTRICTS['MAL'][1] = 'Cala Santanyi';										
		DISTRICTS['MAL'][2] = 'Canyamel';										
		DISTRICTS['MAL'][3] = 'Colonia Sant Jordi';										
		DISTRICTS['MAL'][4] = 'Colonia Sant Pere';										
		DISTRICTS['MAL'][5] = 'East mallorca';										
		DISTRICTS['MAL'][6] = 'Lloret de Vistalegre';										
		DISTRICTS['MAL'][7] = 'Llucmajor';										
		DISTRICTS['MAL'][8] = 'Palma de Majorca';										
		DISTRICTS['MAL'][9] = 'Pollensa';										
		DISTRICTS['MAL'][10] = 'Porto Colom';										
		DISTRICTS['MAL'][11] = 'Sencelles';
		DISTRICTS['MAL'][12] = 'Soller';
		
		CODES['MAL'] = new Array();
		CODES['MAL'][0] = 517;										
		CODES['MAL'][1] = 447;										
		CODES['MAL'][2] = 514;										
		CODES['MAL'][3] = 478;										
		CODES['MAL'][4] = 519;										
		CODES['MAL'][5] = 719;										
		CODES['MAL'][6] = 499;										
		CODES['MAL'][7] = 505;										
		CODES['MAL'][8] = 1;										
		CODES['MAL'][9] = 540;										
		CODES['MAL'][10] = 578;										
		CODES['MAL'][11] = 522;
		CODES['MAL'][12] = 527;
						
			//Funcion que cambia los valores de la select de ciudad/distrito
			function searchZona (val)
			{
			var divDistrictCity;
			divDistrictCity = document.getElementById('divDistrictCity');
			
			//Solo Barcelona tiene distritos
			if(val == 'BAR')
				{
					document.getElementById('districtCity').innerHTML = 'District: ';
					idSelect = 'varM_DSTR';
				}
			else{
					idSelect = 'varM_CITY';
					document.getElementById('districtCity').innerHTML = 'City: ';
				}
			
				document.getElementById('varM_ZONE').value = val;	
				
				
				divDistrictCity.innerHTML = '<select id="'+idSelect+'" name="'+idSelect+'" class="oh_input"></select>';
				select = document.getElementById(idSelect);
				select.options[0] = new Option('All','');
				for(i=1;i<=DISTRICTS[val].length;i++){
					select.options[i] = new Option(DISTRICTS[val][i-1],CODES[val][i-1]);
				}
							
			}

			/**
			@param params Array asociativo (clave, valor)
			*/
			function genPOST (msg)
			{
				post = '';
				vars = document.OH.elements;
			
				for (idx in vars)
				{ 
					if (document.all)	// Explorer
					{ 
						if (idx.substring(0, 3) == 'var' || idx.substring(0, 3) == 'par' || idx.substring(0, 3) == 'CTL')
						{ 
							if (vars[idx].type != 'checkbox') {
								if((vars[idx][0]) && (vars[idx][0].type == 'radio')) { // FALTA OPTIMIZAR, SALEN TANTOS COMO DECLARADOS HAYA
									for(var i=0;i<vars[idx].length;i++) {
										if(vars[idx][i].checked) {
											post += idx + '=' + escape(vars[idx][i].value) + '&';
										}
									}
								} else {
									post += idx + '=' + escape(vars[idx].value) + '&';
								}
							} else {
								if (vars[idx].checked) {
									post += idx + '=' + escape(vars[idx].value) + '&';
								}
							}
						}
					} else { 
						if (vars[idx])
						{
							name = vars[idx].name + '';
							if (name.substring(0, 3) == 'var' || name.substring(0, 3) == 'par' || name.substring(0, 3) == 'CTL')
							{
								if(vars[idx].type != 'checkbox') {
									if(vars[idx].type == 'radio' && vars[idx].checked) {
										post += name + '=' + escape(vars[idx].value) + '&';
									} else {
										post += name + '=' + escape(vars[idx].value) + '&';
									}
								} else {
									if(vars[idx].checked) {
										post += name + '=' + escape(vars[idx].value) + '&';					
									}
								}
							}
						}
					}
				}
				post += 'msx=' + msg + "&";	
				return post;
			}

			function searchAlo(message)
			{
				if(valFechas(
							document.getElementById('varR_IDIA').value, 
							document.getElementById('varR_IMES').value, 
							document.getElementById('varR_IANY').value, 
							document.getElementById('varR_FDIA').value,
							document.getElementById('varR_FMES').value,
							document.getElementById('varR_FANY').value
						 ))
				{
					document.getElementById('parM_ZONE').value = document.getElementById('varM_ZONE').value;
					document.OH.parCTLPag.value = '';
					document.OH.parCTLTPag.value = '';
					document.OH.parCTLOrder.value = '';
					document.OH.parCTLTOrder.value = '';

					doSubmit(message);
	
				}
				
			}
			function searchHot(message)
			{
				if(valFechas(
							document.getElementById('varR_HIDIA').value, 
							document.getElementById('varR_HIMES').value, 
							document.getElementById('varR_HIANY').value, 
							document.getElementById('varR_HFDIA').value, 
							document.getElementById('varR_HFMES').value,
							document.getElementById('varR_HFANY').value
						 ))
				{
					document.getElementById('parM_HZONE').value = document.getElementById('varM_HZONE').value;
					document.OH.parCTLPag.value = '';
					document.OH.parCTLTPag.value = '';
					document.OH.parCTLOrder.value = '';
					document.OH.parCTLTOrder.value = '';

					doSubmit(message);
					
				}

			}

			function doSubmit(message)
			{					
					document.OH.msx.value=message; 				
					document.OH.submit();
			}
			
						function searchAlo(message)
			{
				if(valFechas(
							document.getElementById('varR_IDIA').value, 
							document.getElementById('varR_IMES').value, 
							document.getElementById('varR_IANY').value, 
							document.getElementById('varR_FDIA').value,
							document.getElementById('varR_FMES').value,
							document.getElementById('varR_FANY').value
						 ))
				{
					document.getElementById('parM_ZONE').value = document.getElementById('varM_ZONE').value;
					document.OH.parCTLPag.value = '';
					document.OH.parCTLTPag.value = '';
					document.OH.parCTLOrder.value = '';
					document.OH.parCTLTOrder.value = '';
					
					doSubmit(message);
				}
				
			}				
			
			

	//Obtenemos la fecha actual
	date = new Date();
	thisYear = date.getFullYear();
	thisMonth = date.getMonth();
	thisDay = date.getDate();
	
	function genDays(name,parent){
		//Generamos la select
		var obj = document.createElement ('select');			
			obj.setAttribute ('class', 'oh_input');
			obj.setAttribute ('id', name);
			obj.setAttribute ('name', name);
			obj.onchange = obj.onclick = function () {chkDate(document.getElementById('varR_IDIA'), document.getElementById('varR_IMERGE'), document.getElementById('varR_FDIA'), document.getElementById('varR_FMERGE'), document.getElementById('varR_FMES'), document.getElementById('varR_FANY'));javascript:merge(document.getElementById('varR_IMERGE'), document.getElementById('varR_IANY'), document.getElementById('varR_IMES'), document.getElementById('varR_IDIA'), document.getElementById('varR_FDIA'), document.getElementById('varR_FMERGE'), document.getElementById('varR_FMES'), document.getElementById('varR_FANY'));}
			//Anyadimos días
			selDay = thisDay;
			if(name=='varR_FDIA'){
				selDay = thisDay+5;
				if(selDay > 31) {selDay = selDay-31;}								
			}
			for(i=1;i<=31;i++){
				objOpt = document.createElement ('option');
				if(i<=9){value='0'+i;}else{value=i;}
				objOpt.setAttribute ('value', value);					
				if(selDay==i){objOpt.setAttribute ('selected', 'selected');}
				objOpt.text = objOpt.innerHTML = value;				
				obj.appendChild (objOpt);				
			}
			//Anyadimos el select a la posicion deseada
			document.getElementById(parent).appendChild (obj);
	}
	
	function genMerge(name,parent){
	//Generamos la select
		var obj = document.createElement ('select');			
			obj.setAttribute ('class', 'oh_input');
			obj.setAttribute ('id', name);
			obj.setAttribute ('name', name);
			if(name=='varR_FMERGE')	
				functionMerge = function () {merge(document.getElementById('varR_FMERGE'), document.getElementById('varR_FANY'), document.getElementById('varR_FMES'));}
			else
				functionMerge = function () {merge(document.getElementById('varR_IMERGE'), document.getElementById('varR_IANY'), document.getElementById('varR_IMES'), document.getElementById('varR_IDIA'), document.getElementById('varR_FDIA'), document.getElementById('varR_FMERGE'), document.getElementById('varR_FMES'), document.getElementById('varR_FANY'));}
							
			obj.onchange = obj.onClick = functionMerge;
			//Anyadimos meses y anyos
			i=thisMonth;
			total = 30;
			cont=0;
			
			selYear = thisYear;
			selDay = thisDay;
			selMonth = thisMonth;
			if(name=='varR_FMERGE'){			
				selDay = thisDay+5;				
				if(selDay > 31) {selMonth+=1;}	
					if(selMonth > 11){selMonth=0;selYear++;}
			}
	
			for(j=thisYear;j<(thisYear+2);j++){
				for(i;i<=12;i++){
					objOpt = document.createElement ('option');
					if(i<=9){value='0'+i;}else{value=i;}
					objOpt.setAttribute ('value', j+'-'+value);
					if(selMonth==i-1 && selYear ==j){objOpt.setAttribute ('selected', 'selected');}									
					objOpt.text = objOpt.innerHTML = months[i-1]+' - '+j;			
					obj.appendChild (objOpt);
					cont++;
					if(cont==total) break;
				}
				i=1;
				if(cont==total) break;
			}
			//Anyadimos el select a la posicion deseada
			document.getElementById(parent).appendChild (obj);		
	}
	
	function genHiddenYear(name,parent){
	//Generamos la select
		var obj = document.createElement ('select');
			obj.setAttribute ('name', name);
			obj.setAttribute ('id', name);
			
			//Anyadimos anyos		
			selYear = thisYear;
			selDay = thisDay;
			selMonth = thisMonth;
			if(name=='varR_FANY'){			
				selDay = thisDay+5;				
				if(selDay > 31) {selMonth+=1;}	
					if(selMonth > 11){selMonth=0;selYear++;}
			}
			for(j=thisYear;j<(thisYear+2);j++){				
					objOpt = document.createElement ('option');					
					objOpt.setAttribute ('value', j);
					if(selYear==j){objOpt.setAttribute ('selected', 'selected');}									
					objOpt.text = objOpt.innerHTML = j;			
					obj.appendChild (objOpt);
			}				
			
			//Anyadimos el select a la posicion deseada
			document.getElementById(parent).appendChild (obj);	
	}
	function genHiddenMonth(name,parent){
		//Generamos la select
		var obj = document.createElement ('select');
			obj.setAttribute ('name', name);
			obj.setAttribute ('id', name);
			
			//Anyadimos anyos		
			selYear = thisYear;
			selDay = thisDay;
			selMonth = thisMonth;
			if(name=='varR_FMES'){			
				selDay = thisDay+5;				
				if(selDay > 31) {selMonth+=1;}	
					if(selMonth > 11){selMonth=0;selYear++;}
			}
			for(j=1;j<=12;j++){				
					objOpt = document.createElement ('option');	
					if(j<=9){value='0'+j;}else{value=j;}				
					objOpt.setAttribute ('value',value);					
					if(selMonth==(j-1)){objOpt.setAttribute ('selected', 'selected');}									
					objOpt.text =  objOpt.innerHTML = months[j-1];			
					obj.appendChild (objOpt);										
			}								
			//Anyadimos el select a la posicion deseada
			document.getElementById(parent).appendChild (obj);
	}