var nombreMes=new Array(12);
var diasMes=new Array(12);
var idioma=0;

//idioma: 0 --> castellano
//		  1 --> inglés
//		  2 --> alemán
function obtenerDiasMes(tipo)
{
 	 idioma=tipo;
 	 
	 //Rellenar meses según idioma
	 if(idioma==0)
	 {
	  	nombreMes[0]="Enero";
	  	nombreMes[1]="Febrero";
	 	nombreMes[2]="Marzo";
	 	nombreMes[3]="Abril";
	 	nombreMes[4]="Mayo";
	 	nombreMes[5]="Junio";
	 	nombreMes[6]="Julio";
	 	nombreMes[7]="Agosto";
	 	nombreMes[8]="Septiembre";
	 	nombreMes[9]="Octubre";
	 	nombreMes[10]="Noviembre";
	 	nombreMes[11]="Diciembre";
	}
	
	if(idioma==1)
	 {
	  	nombreMes[0]="January";
	  	nombreMes[1]="February";
	 	nombreMes[2]="March";
	 	nombreMes[3]="April";
	 	nombreMes[4]="May";
	 	nombreMes[5]="June";
	 	nombreMes[6]="July";
	 	nombreMes[7]="August";
	 	nombreMes[8]="September";
	 	nombreMes[9]="October";
	 	nombreMes[10]="November";
	 	nombreMes[11]="December";
	}
	
	if(idioma==2)
	 {
	  	nombreMes[0]="Januar";
	  	nombreMes[1]="Februar";
	 	nombreMes[2]="März";
	 	nombreMes[3]="April";
	 	nombreMes[4]="Mai";
	 	nombreMes[5]="Juni";
	 	nombreMes[6]="Juli";
	 	nombreMes[7]="August";
	 	nombreMes[8]="September";
	 	nombreMes[9]="Oktuber";
	 	nombreMes[10]="November";
	 	nombreMes[11]="Dezember";
	}
}

//Crea una nueva ventana que contendrá el calendario del mes actual y enlaces al mes anterior y siguiente
//tipo: 0 --> castellano
//		1 --> inglés
//		2 --> alemán
function abrirCalendario(botonPulsado,tipo)
{ 
 	 //Crear la ventana
     var ventana=window.open("","","height=300,width=400",true);	 

	 //El documento se abre una única vez y se cerrará varias veces, ya que cuando
	 //se escribe estando cerrado, el documento es implícitamente borrado y reabierto
	 ventana.document.open();
	 
	 var fecha=new Date();
	 var mes, anyo;
	 
	 mes=fecha.getMonth();
	 anyo=fecha.getFullYear(); //para que devuelva el año con 4 dígitos (compatibilidad con Netscape)

	 obtenerCalendario(ventana.document,mes,anyo,botonPulsado,tipo);
}

//Devuelve verdadero si el año es bisiesto, sino devuelve falso
function esAnyoBisiesto(anyo)
{
	 if (anyo%4==0)
          return true; 

     return false;
}

//Introduce la fecha seleccionada del calendario en un campo de texto del propio calendario
function ponerFecha(dia, mes, anyo)
{
     mes=mes+1; //ya que los meses van de 0 a 11 y se debe mostrar de 1 a 12
	 if(mes<10) mes="0"+mes;
	 if(dia<10) dia="0"+dia;
	 
     document.forms[0].fecha.value=dia+"/"+mes+"/"+anyo;
}

//Introduce la fecha seleccionada en el campo de texto del formulario de búsqueda de vuelos
function enviarFecha(botonPulsado,tipo)
{
     //Se debe haber selecionado una fecha (el campo no debe estar en blanco)
     if(document.forms[0].fecha.value=="")
	 {
	      if(tipo==0)
	           alert('Debe seleccionar una fecha del calendario');
	      if(tipo==1)
		       alert('Please, select a date from the calendar');
		 if(tipo==2)
		       alert('Please, select a date from the calendar');
	 }	   	   
	 else
	 {
	      //Copiar la fecha del calendario a la ventana del formulario de búsqueda de vuelos (la ventana que abrió a la actual es "opener")
	      
		  if(botonPulsado==1)
		       opener.document.forms[0].fechaEntrada.value=document.forms[0].fecha.value; 
		  else
		       opener.document.forms[0].fechaSalida.value=document.forms[0].fecha.value;
		  window.close(); //Se cierra el calendario
	 }
}

//Dibuja el calendario del mes y del año pasado como parámetro (se pasa el día de la semana correspondiente al primer día del mes)
function dibujarCalendario(documento, mes, anyo, primerDia,botonPulsado)
{
    var texto="";
    var i,j,cont=1;
	
	//Opciones cuando pasa el ratón por encima de una celda
	var opcionesCelda="style='cursor:hand' onmouseover=\"this.style.backgroundColor='black';this.style.color='white';\" onmouseout=\"this.style.backgroundColor='#bccae6';this.style.color='black';\"";
	
	var mesAnterior,anyoAnterior,mesPosterior,anyoPosterior;
	
	//DOCUMENTO CREADO DINÁMICAMENTE SEGÚN EL MES
	texto+="<html><head>";
	texto+="<link href='estilo1.css' rel='stylesheet' type='text/css' media='screen'>";
	
	if(idioma==0)
	     texto+="<title>Calendario</title>";
	if(idioma==1)
		 texto+="<title>Calendar</title>";
	if(idioma==2)
		 texto+="<title>Calendar</title>";
	
	texto+="<script language='JavaScript' src='../../scripts/calendario.js'></script>"
	texto+="</head>";
	
	texto+="<body>";
	texto+="<div class='cabecera'><h1>"+nombreMes[mes]+" "+anyo+"</h1></div>";
	texto+="<div class='cuerpo'>";
	
	if(idioma==0)
		texto+="<br><table><tr><th>L</th><th>M</th><th>X</th><th>J</th><th>V</th><th>S</th><th>D</th></tr>";
	if(idioma==1)
		texto+="<br><table><tr><th>M</th><th>T</th><th>W</th><th>T</th><th>F</th><th>S</th><th>S</th></tr>";
	if(idioma==2)
		texto+="<br><table><tr><th>M</th><th>D</th><th>M</th><th>D</th><th>F</th><th>S</th><th>S</th></tr>";
	
	texto+="<tr>";
	
	//PRIMERA FILA DEL CALENDARIO
	//Se ponen celdas vacias hasta el primer día del mes
	for(i=0;i<primerDia;i++)
	     texto+="<td></td>";
	
	//La primera fila empieza según el día inicial del mes	 
	for(j=primerDia;j<7;j++)
	{
	     texto+="<td "+opcionesCelda+"onclick='ponerFecha("+cont+","+mes+","+anyo+");'>"+cont+"</td>";
	     cont++;
	}
	texto+="</tr>";
	
	//RESTO DE FILAS
	//Se para de rellenar días cuando llegamos al último día de cada mes
    while(cont<=diasMes[mes])
	{
	     //Cada fila es una semana
	     texto+="<tr>";
		 //La semana se puede interrumpir porque se acaben los días del mes
         for(j=0;j<7 && cont<=diasMes[mes];j++)
         {
              texto+="<td "+opcionesCelda+"onclick='ponerFecha("+cont+","+mes+","+anyo+");'>"+cont+"</td>";
              cont++;
         }
		 //Se rellenan los días que faltan en la última fila con celdas vacías
	     for(i=j;i<7;i++)
	          texto+="<td></td>"
     	 texto+="</tr>";
	}
	
	//Si el mes actual es enero, entonces el mes anterior es diciembre del año anterior
	mesAnterior=mes==0 ? 11 : (mes-1);
	anyoAnterior=mes==0 ? anyo-1 : anyo;
	//Si el mes actual es diciembre, entonces el mes posterior es enero del año posterior
	mesPosterior=mes==11 ? 0 : (mes+1);
	anyoPosterior=mes==11 ? anyo+1 : anyo;
	
	texto+="</table>";
	texto+="</div><div class='enlaces'>";
	texto+="<a class='naveg' href='javascript:obtenerCalendario(window.document,"+mesAnterior+","+anyoAnterior+","+botonPulsado+","+idioma+");'>"+nombreMes[mesAnterior]+" "+anyoAnterior+"</a>";
	texto+="<a class='naveg' href='javascript:obtenerCalendario(window.document,"+mesPosterior+","+anyoPosterior+","+botonPulsado+","+idioma+");'>"+nombreMes[mesPosterior]+" "+anyoPosterior+"</a>";
	texto+="<form><input type='text' disabled name='fecha' size='12'><br><br>";
	
	
	if(idioma==0)
	     texto+="<input type='button' name='boton' value='Aceptar' onclick='enviarFecha("+botonPulsado+","+idioma+");'></form>";
	if(idioma==1)
	     texto+="<input type='button' name='boton' value='Accept' onclick='enviarFecha("+botonPulsado+","+idioma+");'></form>";
	if(idioma==2)
	     texto+="<input type='button' name='boton' value='Accept' onclick='enviarFecha("+botonPulsado+","+idioma+");'></form>";
		
	texto+="</div></body></html>";
			
	//Se escribe la página en el documento
	documento.write(texto);
}

//Determina el primer día del mes y año pasado como parámetros y los días de cada mes (tiene en cuenta años bisiestos)
//tipo: 0 --> castellano
//		1 --> inglés
//		2 --> alemán
function obtenerCalendario(documento,mes,anyo,botonPulsado,tipo)
{	 
	 obtenerDiasMes(tipo);
	 
	 diasMes[0]=31;
	 diasMes[1]= esAnyoBisiesto(anyo) ? 29 : 28;
	 diasMes[2]=31;
	 diasMes[3]=30;
	 diasMes[4]=31;
	 diasMes[5]=30;
	 diasMes[6]=31;
	 diasMes[7]=31;
	 diasMes[8]=30;
	 diasMes[9]=31;
	 diasMes[10]=30;
	 diasMes[11]=31;
	 	  
	 var fechaPrimerDia=new Date(anyo, mes, 1);
	 
	 var primerDia=fechaPrimerDia.getDay();
	 if(primerDia==0) //Si el dia es domingo
	      primerDia=7;
	 primerDia--; //Para que el lunes sea 0 y el domingo 6.

	 dibujarCalendario(documento, mes, anyo, primerDia,botonPulsado);
	 
	 //Se cierra el documento, si se vuelve a escribir en él, se borra el contenido del documento y se reabre
	 documento.close(); 
}


