//---------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------
//------------------------ FUNCIONES PARA EL CALENDARIO ---------------------------------------
//---------------------------------------------------------------------------------------------

var tratando = 'fechaInicio';

var losDias = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);

var hoy = new Date();
var diaHoy = hoy.getDate();
var mesHoy = hoy.getMonth()+1;
var anoHoy = hoy.getYear();
if (anoHoy<1900) anoHoy+=1900;
var elDia = diaHoy;
var elMes = mesHoy;
var elAno = anoHoy;
var ProductoActual = '';

//---------------------------------------------------------------------------------------------
//Calcula las coordenadas para sacar el calendario
//---------------------------------------------------------------------------------------------
function CalcularCoordenadas(tipoFecha, mes, ano, Evento, producto)
{
	ProductoActual = producto;

	switch (producto)
	{
		case 'vuelos': 		idFormulario = 'formularioBusquedaVuelos';
							calendario = 'calendarioVuelos';
							if (tipoFecha == 'fechaInicio')
								cadenaCamposOcultarCalendario = cadenaCamposOcultarCalendarioVuelosInicio;
							else
								cadenaCamposOcultarCalendario = cadenaCamposOcultarCalendarioVuelosFin;
							break;

		case 'hoteles':		idFormulario = 'formularioBusquedaHoteles';
							calendario = 'calendarioHoteles';
							cadenaCamposOcultarCalendario = cadenaCamposOcultarCalendarioHoteles;
							break;

		case 'vuelos_hoteles':idFormulario = 'formularioBusquedaVuelosHoteles';
							calendario = 'calendarioVuelosHoteles';
							if (tipoFecha == 'fechaInicio')
								cadenaCamposOcultarCalendario = cadenaCamposOcultarCalendarioVuelosHotelesInicio;
							else
								cadenaCamposOcultarCalendario = cadenaCamposOcultarCalendarioVuelosHotelesFin;
							break;

		case 'costas':		idFormulario = 'formularioBusquedaCostas';
							calendario = 'calendarioCostas';
							cadenaCamposOcultarCalendario = cadenaCamposOcultarCalendarioCostas;
							break;

		case 'coches':		idFormulario = 'formularioBusquedaCoches';
							calendario = 'calendarioCoches';
							cadenaCamposOcultarCalendario = cadenaCamposOcultarCalendarioCoches;
							break;

		case 'ferrys':		idFormulario = 'formularioBusquedaFerrys';
							calendario = 'calendarioFerrys';
							cadenaCamposOcultarCalendario = cadenaCamposOcultarCalendarioFerrys;
							break;

	 	case 'paquetes':	idFormulario = 'formularioBusquedaPaquetes';
							calendario = 'calendarioPaquetes';
							cadenaCamposOcultarCalendario = cadenaCamposOcultarCalendarioPaquetes;
							break;
	}


	if(document.all)
	{
		PosX = window.event.clientX + document.documentElement.scrollLeft;
		PosY = window.event.clientY + document.documentElement.scrollTop;
	}
	else
	{
		PosX = Evento.pageX;
		PosY = Evento.pageY;
	}

	PosX = PosX - 30;
	PosY = PosY - 25;

	mostrarCalendario(tipoFecha, mes, ano, PosX, PosY);
}



//---------------------------------------------------------------------------------------------
//Funciones para unir y separar cadenas
//---------------------------------------------------------------------------------------------
function explode(elSeparador, laCadena)
{
	var elArray = new Array();
	var cadenita = "";
	for (var a=0,indice=0; a<laCadena.length; a++)
	{
	    if (laCadena.charAt(a)==elSeparador)
		{
	        elArray[indice] = cadenita;
	        indice++;
	        cadenita = "";
	    }
		else   cadenita+=laCadena.charAt(a);
	}//for a
	elArray[indice] = cadenita;
	return elArray;
}//explode



//---------------------------------------------------------------------------------------------
function siguienteMes(mes, ano)
{
	if (mes==12)
	{
	    mes = 1;
	    ano++;
	}
	else   mes++;

	return mes+"-"+ano;
}

//---------------------------------------------------------------------------------------------
function anteriorMes(mes, ano)
{
	if (mes==1)
	{
	    mes = 12;
	    ano--;
	}
	else  mes--;

	return mes+"-"+ano;
}

//---------------------------------------------------------------------------------------------
function colorear(dia, mes, ano, esDomingo, tratando)
{
	var hoy = new Date();

	if (tratando == 'fechaInicio')
	{
   		var diaHoy = hoy.getDate();
 	  	var mesHoy = hoy.getMonth()+1;
	  	var anoHoy = hoy.getYear();
    }
    else
	{
    	diasol = explode("-", document.getElementById(idFormulario).fechaInicio.value);
        var diaHoy = diasol[0];
        var mesHoy = diasol[1];
        var anoHoy = diasol[2];
    }

	if (anoHoy<1900) anoHoy+=1900;
	var celdaDia;

	//Hoy o fechas posteriores al día de hoy
	if ((ano>anoHoy) || ((ano==anoHoy) && (mes>mesHoy)) || ((ano==anoHoy) && (mes==mesHoy) && (dia>=diaHoy)))
	{
		//Si es el día de HOY: marcarlo destacado
		if ((dia+"-"+mes+"-"+ano)==(diaHoy+"-"+mesHoy+"-"+anoHoy)) claseDia = 'calendarToday';
		else
		    if (esDomingo)	claseDia = 'calendarSunday'; //Si no es hoy y es un domingo
			else claseDia = 'calendarNoToday'; //Si no es hoy ni tampoco es domingo

		celdaDia='<td id="celda'+dia+'" class="'+claseDia+'" onClick="marcar('+dia+','+mes+','+ano+');">'+dia+'</td>';
	}
	else //Fechas pasadas: no permitir seleccionarlas
	{
		celdaDia = '<td id="celda'+dia+'" class="calendarPast">'+dia+'</td>';
	}


	return celdaDia;
}//colorear


//---------------------------------------------------------------------------------------------
function generarCalendario(mes, ano, tratando)
{
	var hoy = new Date();
	if (tratando == 'fechaInicio')
	{
		var diaHoy = hoy.getDate();
		var mesHoy = hoy.getMonth()+1;
		var anoHoy = hoy.getYear();
	}
	else
	{
		var valorCampo = document.getElementById(idFormulario).fechaInicio.value;
		diasol = explode("-", valorCampo);
		var diaHoy = diasol[0];
		var mesHoy = diasol[1];
		var anoHoy = diasol[2];
	}
	if (anoHoy<1900) anoHoy+=1900;

	var dias=losDias[mes-1];
  	var i,j;

  	diaUno=calcularDia(1, mes, ano);

  	var calendarioMes="";



	var mesAnt = anteriorMes(mes, ano);
	mesAnt = explode("-", mesAnt);
	var mesSig = siguienteMes(mes, ano);
	mesSig = explode("-", mesSig);
	if ((mes==mesHoy) && (ano==anoHoy)) mesAnt="";
	else mesAnt = "onClick=\"mostrarCalendario('', "+mesAnt[0]+", "+mesAnt[1]+", '', '')\"";

	calendarioMes = '<table class="calendarTable" cellpadding="0" cellspacing="0">';
	calendarioMes+= '<tr valign="middle">';
	calendarioMes+= '<td class="calendarPrev">';
	calendarioMes+= '<img src="'+directorioImagenes+'/calendario/prev.jpg" alt="<<" '+mesAnt+' width="15" height="15" />';
	calendarioMes+= '</td>';

	calendarioMes+= '<td colspan="4" height="20" class="calendarMonth">'+losMeses[mes-1]+' '+ano+'</td>';

	calendarioMes+= '<td class="calendarNext">';
	calendarioMes+= '<img src="'+directorioImagenes+'calendario/next.jpg" alt=">>" onClick="mostrarCalendario(\'\', '+mesSig[0]+', '+mesSig[1]+', \'\', \'\')" />';
	calendarioMes+= '</td>';

	calendarioMes+= '<td class="calendarNext">';
	calendarioMes+= '<img src="'+directorioImagenes+'calendario/close.jpg" alt="Close" onClick="cerrarCalendario()" />';
	calendarioMes+= '</td>';
	calendarioMes+= '</tr>';
	calendarioMes+= '</table>';


	//rellenamos la segunda fila con las primeras letras de cada dia L M X J V S D
	calendarioMes+= '<table class="calendarTableDays">';
	calendarioMes+= '<tr>';
	for (i=0;i<7;i++)
	{
		calendarioMes+= '<td class="calendarWeekDays">';
		calendarioMes+= diasSemana[i];
		calendarioMes+= '</td>';
	}
	calendarioMes+=	'</tr>';


	calendarioMes+='<tr>';

	//rellenamos hasta el primer dia de Mes a guiones
	for (i=0;diasSemana[i]!=diaUno;i++)
	{
		calendarioMes+= '<td class="calendarPast">-</td>';
	}

	dias_del_mes = losDias[mes-1];
	if ((mes==2) && (ano % 4==0)) dias_del_mes++;  //es bisiesto
	{
		for (j=i,i=1; i<=dias_del_mes;)
		{
			for (; j<7 && i<=dias_del_mes; j++,i++)
			{
				if (j==6)
				{
					calendarioMes+=colorear(i, mes, ano, 1, tratando);
				}
				else
				{
					calendarioMes+=colorear(i, mes, ano, 0, tratando);
				}
			}
			if (j==7)
			{
				calendarioMes+=('</tr><tr>');
				j=0;
			}
		}
	}


	if (j>0)
	{
		for (;j<7;j++) calendarioMes+='<td class="calendarPast">-</td>';
	}

	calendarioMes+= '</tr></table>';


	return calendarioMes;
}//generarCalendario

//---------------------------------------------------------------------------------------------
function calcularDia (dia, mes, ano)
{
	var dias=365*(ano-1);
	var i;
	var deSemana;
    for (i=0;i<(mes-1);i++) dias+=losDias[i];
  	dias+=dia-1;
  	dias+=(Math.floor((ano-1)/4));
  	if ((mes>2) && (((ano%4)==0)))	dias++;
  	deSemana=dias % 7;

    if (idioma=="es")
	{
	  	if (deSemana==0) deSemana=6;
	  	else deSemana--;
  	}

   	return diasSemana[deSemana];
}//calcularDia

//---------------------------------------------------------------------------------------------
function mostrarCalendario (tipoFecha, mes, ano, posIz, posTop)
{
	if (tipoFecha!="")	tratando = tipoFecha;

	if(posIz!=""){
		document.getElementById(calendario).style.left=posIz+"px";
	}
	if(posTop!=""){
		document.getElementById(calendario).style.top=posTop+"px";
	}

	if (tipoFecha=='fechaFin')
	{
		diasol = explode("-", document.getElementById(idFormulario).fechaInicio.value);
        mes = diasol[1];
        ano = diasol[2];
	}

	var tablaCalendario = '<table>';
	tablaCalendario+= '<tr><td>' + generarCalendario(mes, ano, tratando) + '</td></tr></table>';
	var celda;

	document.getElementById(calendario).innerHTML = tablaCalendario;

	abrirCalendario();

}//mostrarCalendario

//---------------------------------------------------------------------------------------------
function marcar (dia, mes, ano)
{
	if ((elDia<10) && (elDia.toString().length)>1)    elDia = elDia.toString().substr(1,1);

	elDia = dia;
	elMes = mes;
	elAno = ano;

	devolverFecha(dia, mes, ano);
}//marcar

//---------------------------------------------------------------------------------------------
function devolverFecha (elDia, elMes, elAno)
{
	if (elDia<10) elDia = "0"+elDia;
	if (elMes<10) elMes = "0"+elMes;

	if (tratando=='fechaInicio')
	{
	    document.getElementById(idFormulario).fechaInicio.value=elDia+"-"+elMes+"-"+elAno;
	   	//si hay una fecha de fin copiar la fecha de inicio, sino nada
	    if (isset(document.getElementById(idFormulario).fechaFin))
	    	document.getElementById(idFormulario).fechaFin.value=elDia+"-"+elMes+"-"+elAno;
	}
	else
	  document.getElementById(idFormulario).fechaFin.value=elDia+"-"+elMes+"-"+elAno;

	//recalcular fecha de salida
	sumarNoches(ProductoActual);

	cerrarCalendario();
}

//---------------------------------------------------------------------------------------------
function abrirCalendario()
{
	//Ocultar combos bajo el calendario SOLO IE 6

	var ieVer=/*@cc_on function(){ switch(@_jscript_version){ case 1.0:return 1; case 3.0:return 3; case 5.0:return 5; case 5.1:return 5; case 5.5:return 5.5; case 5.6:return 6; case 5.7:return 7; case 5.8:return 5.8; }}()||@*/0;
	if (/MSIE 6.0/i.test(navigator.userAgent))
	{
		if(cadenaCamposOcultarCalendario!='')
		{
			//ocultar campos indicados en: cadenaCamposOcultarCalendario
			var arrayCamposOcultar = new Array();
			var arrayCamposOcultar = cadenaCamposOcultarCalendario.split(',');
			numeroCamposOcultar = arrayCamposOcultar.length;
			for (i=0; i<numeroCamposOcultar; i++)
			{
				eval('document.getElementById("'+idFormulario+'").'+arrayCamposOcultar[i]+'.style.visibility = "hidden"');
			}
		}
	}

	document.getElementById(calendario).style.visibility='visible';
}//abrirCalendario

//---------------------------------------------------------------------------------------------
function cerrarCalendario()
{
	document.getElementById(calendario).style.visibility='hidden';

	if(cadenaCamposOcultarCalendario!='')
	{
		//mostrar campos indicados en: cadenaCamposOcultarCalendario
		var arrayCamposOcultar = new Array();
		var arrayCamposOcultar = cadenaCamposOcultarCalendario.split(',');
		numeroCamposOcultar = arrayCamposOcultar.length;
		for (i=0; i<numeroCamposOcultar; i++)
		{
			eval('document.getElementById("'+idFormulario+'").'+arrayCamposOcultar[i]+'.style.visibility = "visible"');
		}
	}
}



//---------------------------------------------------------------------------------------------
//Inhabilitacion del boton derecho
//---------------------------------------------------------------------------------------------
if(document.layers)
{
	document.captureEvents(Event.MOUSEDOWN);
}






//---------------------------------------------------------------------------------------------
//Cambiar fecha de salida segun las noches seleccionadas
//---------------------------------------------------------------------------------------------


function finMes(nMes, nAno)
{
	return losDias[nMes - 1] + (((nMes == 2) && (nAno % 4) == 0)? 1: 0);
}

function padNmb(nStr, nLen, sChr)
{
	var sRes = String(nStr);
	for (var i = 0; i < nLen - String(nStr).length; i++)
		sRes = sChr + sRes;
	return sRes;
}

function makeDateFormat(nDay, nMonth, nYear)
{
	var sRes;
	sRes = padNmb(nDay, 2, "0") + "-" + padNmb(nMonth, 2, "0") + "-" + padNmb(nYear, 4, "0");
	return sRes;
}


function incDate(sFec0)
{
	var nDia = parseInt(sFec0.substr(0, 2), 10);
	var nMes = parseInt(sFec0.substr(3, 2), 10);
	var nAno = parseInt(sFec0.substr(6, 4), 10);
	nDia += 1;
	if (nDia > finMes(nMes, nAno)){
		nDia = 1;
		nMes += 1;
		if (nMes == 13){
	 		nMes = 1;
	 		nAno += 1;
		}
	}
	return makeDateFormat(nDia, nMes, nAno);
}

function decDate(sFec0)
{
	var nDia = Number(sFec0.substr(0, 2));
	var nMes = Number(sFec0.substr(3, 2));
	var nAno = Number(sFec0.substr(6, 4));
	nDia -= 1;
	if (nDia == 0){
		nMes -= 1;
		if (nMes == 0){
		 	nMes = 12;
		 	nAno -= 1;
		}
		nDia = finMes(nMes, nAno);
	}
	return makeDateFormat(nDia, nMes, nAno);
}

function addToDate(sFec0, sInc)
{
	var nInc = Math.abs(parseInt(sInc));
	var sRes = sFec0;
	if (parseInt(sInc) >= 0)
		for (var i = 0; i < nInc; i++) sRes = incDate(sRes);
	else
		for (var i = 0; i < nInc; i++) sRes = decDate(sRes);
	return sRes;
}

function sumarNoches(producto)
{
	switch (producto)
	{
		case 'vuelos': 		idFormulario = 'formularioBusquedaVuelos';
							break;

		case 'hoteles':		idFormulario = 'formularioBusquedaHoteles';
							break;

	  case 'paquetes':		idFormulario = 'formularioBusquedaPaquetes';
							break;

		case 'coches':		idFormulario = 'formularioBusquedaCoches';
							break;

    case 'ferrys':		idFormulario = 'formularioBusquedaFerrys';
							break;

		case 'costas':		idFormulario = 'formularioBusquedaCostas';
							break;
	}

	if (isset(document.getElementById(idFormulario).noches))
	{
		if (isset(document.getElementById(idFormulario).fechaFin))
		{
			document.getElementById(idFormulario).fechaFin.value = addToDate(document.getElementById(idFormulario).fechaInicio.value, document.getElementById(idFormulario).noches.value);
		}
	}
}
