function diasMes (mes, ano) {
	var dias = new Array (12);
	dias[0] = 31;
	dias[1] = (bisiesto(ano)) ? 29 : 28;
	dias[2] = 31;
	dias[3] = 30;
	dias[4] = 31;
	dias[5] = 30;
	dias[6] = 31;
	dias[7] = 31;
	dias[8] = 30;
	dias[9] = 31;
	dias[10] = 30;
	dias[11] = 31;
	return dias[mes];
}

function bisiesto(ano) {
	if ((ano % 4 == 0) && ((ano % 100 != 0) || (ano % 400 == 0))) {
		return true;
	} else {
		return false;
	}
}

function posicion (objeto, accion) {
	var mitop = 0;
	while (objeto){
		if (accion == "top")
			mitop += objeto.offsetTop;
		else
			mitop += objeto.offsetLeft;
		objeto = objeto.offsetParent;
	}
	return mitop;
}

var nombreDiv = "popCalendario";

var meses = {
		es : new Array ("Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre"),
		en : new Array ("January","February","March","April","May","June","July","August","September","October","November","December"),
		fr : new Array ("Janvier","Fevrier","Mars","Avril","Mai","Juin","Juillet","Aout","Septembre","Octobre","Novembre","Decembre"),
		de : new Array ("Januar","Februar","Marz","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember")
	};

var semana = {
		es : new Array ("D","L","M","M","J","V","S"),
		en : new Array ("Sun","Mon","Tue","Wed","Thu","Fri","Sat"),
		fr : new Array ("L","M","M","J","V","S","D"),
		de : new Array ("M","D","M","D","F","S","S")
	};


function DCalendario() {
	if (document.getElementById(nombreDiv))
		document.body.removeChild(document.getElementById(nombreDiv));
}

/**
* Crea un calendario que se abre v�a dhtml
* @param object El objeto que llama a la funci�n
* @param int PrimerDiaSemana: 0 empieza un domingo, 1 empieza el lunes
* @param int Mes inicial
* @param int A�o inicial
* @param string El nombre de la caja de texto de fecha inicial
* @param string El nombre de la caja de texto de fecha final
* @param int El tipo de acci�n: 1 un mes adelante, -1 un mes atr�s
* @param string El identificador del idioma
*/

var inputControl;

function showcalendar (control, primerDiaSemana, mes, ano, cajaTexto, cajaTexto2, accion, idioma) {
		var calendario = "";
		if (control != 0) inputControl = control;
		if (accion>0) // Un mes adelante
		{
			if (mes<11)
				mes++;
			else
			{
				mes=0;
				ano++;
			}
		}
		else if (accion<0) // Un mes atras
		{
			if (mes>0)
				mes--;
			else
			{
				mes = 11;
				ano--;
			}
		}
		else
		{
			if (!cajaTexto2 || cajaTexto2 == 0)
			{
				hoy = new Date();
				if (!mes || mes == 0)
					mes = hoy.getMonth();
				else
					mes--; // En Date los meses empiezan del 0
				if (!ano)
					ano = hoy.getFullYear();
			}
			else // Empezar selecci�n desde la fecha seleccionada primero (cajaTexto2)
			{
				primera_fecha = cajaTexto2.split("/");
				mes = parseInt(primera_fecha[1]-1,10);
				ano = parseInt(primera_fecha[2],10);
			}
		}
		calendario += construyeInicio1(control, mes, ano, primerDiaSemana, cajaTexto, cajaTexto2, idioma);
		calendario += construyeDias1(mes, ano, primerDiaSemana, cajaTexto, cajaTexto2, idioma);
		calendario += construyeFin1();
		if (!document.getElementById(nombreDiv))
		{
			midiv = document.createElement("div");
			midiv.setAttribute("id",nombreDiv);

			mitop = posicion(control,"top")+"px";
			mileft = posicion(control,"left")+control.offsetWidth+"px";
						midiv.setAttribute("style",'top:'+mitop+';'+'left:'+mileft+';');
			//document.getElementById(nombreDiv).style.top = mitop;
			//document.getElementById(nombreDiv).style.left = mileft;	
			document.body.appendChild(midiv);
		}
		else
		{
			if (control) // S�lo pasa el control de bot�n la primera vez que abre el calendario
				DCalendario(); // Ha hecho un segundo click en el bot�n, debe cerrar
		}
		if (document.getElementById(nombreDiv)) {
			document.getElementById(nombreDiv).innerHTML = calendario;
		}
}

function construyeDias1(mes, ano, primerDiaSemana, cajaTexto, cajaTexto2, idioma) {
	var sum_dias = 0; // D�as para sumar a la fecha inicial
	if (!cajaTexto2 || cajaTexto2 == 0) {
		hoy = new Date();
		diah = hoy.getDate();
		mesh = hoy.getMonth();
		anoh = hoy.getFullYear();
	} else {// Empezar selecci�n desde la fecha seleccionada primero (cajaTexto2)
		primera_fecha = cajaTexto2.split("/");
		diah = parseInt(primera_fecha[0],10);
		mesh = parseInt(primera_fecha[1]-1,10);
		anoh = parseInt(primera_fecha[2],10);
	}
	diah = new Date(ano,mes,diah+sum_dias);
	diah = diah.getDate();
	calendario = "<tr class=\"diasMes\">";
	inicioSemana = new Date(ano, mes, 01);
	inicioSemana = inicioSemana.getDay();
	if (primerDiaSemana)
		inicioSemana--;
	if (inicioSemana<0) 
		inicioSemana=6;
	for (i=0; i<inicioSemana; i++)
		calendario += "<td></td>";
	var dia = 1;
	i++;
	while (dia<=diasMes(mes,ano)) {
		if (dia<10)
			dia_fecha = "0"+dia;
		else
			dia_fecha = dia;
		if (mes<9)
			mes_fecha = "0"+(mes+1);
		else
			mes_fecha = mes+1;
		calendario += "<td id=\""+cajaTexto+"1\" style=\"cursor: pointer\" onclick=\"enviaFecha1('"+dia_fecha+"/"+mes_fecha+"/"+ano+"',this,'"+cajaTexto+"')\">"+dia+"</td>";
		if (i%7==0)
			calendario += "</td><tr class=\"diasMes\">";
		i++;
		dia++;
	}
	return calendario;
}

function construyeInicio1(control, mes, ano, primerDiaSemana, cajaTexto, cajaTexto2, idioma) {
	calendario = "<table class=\"estiloCalendario\"><caption><input type=\"button\" value=\"<\" onclick=\"showcalendar("+0+", "+primerDiaSemana+", "+mes+", "+ano+", '"+cajaTexto+"', '"+cajaTexto2+"', -1, '"+idioma+"')\" style=\"position: absolute; top: -5px; left: -5px; width: 20px\"><span>"+meses[idioma][mes]+" - "+ano+"</span><input type=\"button\" value=\">\" onclick=\"showcalendar("+0+", "+primerDiaSemana+", "+mes+", "+ano+", '"+cajaTexto+"', '"+cajaTexto2+"', 1, '"+idioma+"')\" style=\"position: absolute; top: -5px; right: -5px; width: 20px\"></caption>";
	if (primerDiaSemana)
		calendario += "<tr><th>"+semana[idioma][1]+"</th><th>"+semana[idioma][2]+"</th><th>"+semana[idioma][3]+"</th><th>"+semana[idioma][4]+"</th><th>"+semana[idioma][5]+"</th><th>"+semana[idioma][6]+"</th><th>"+semana[idioma][0]+"</th></tr>";
	else
		calendario += "<tr><th>"+semana[idioma][0]+"</th><th>"+semana[idioma][1]+"</th><th>"+semana[idioma][2]+"</th><th>"+semana[idioma][3]+"</th><th>"+semana[idioma][4]+"</th><th>"+semana[idioma][5]+"</th><th>"+semana[idioma][6]+"</th></tr>";
	return (calendario);
}

function construyeFin1() {
	return ("</table>");
}

function enviaFecha1(valor, campo, texto) {
	texto2 = texto+"1";
 if (inputControl.id == 'entrada') {
 var hoy = new Date();
				primera_fecha = valor.split("/");
				dia = parseInt(primera_fecha[0],10);
				mes = parseInt(primera_fecha[1]-1,10);
				ano = parseInt(primera_fecha[2],10);
	document.getElementById('fechaDia').value=dia;
	document.getElementById('fechaMes').value=mes+'/'+ano;

       var miFecha1 = new Date( ano, mes, dia );
		if ((miFecha1.getTime() - hoy.getTime()) < 0) {
avisoEntrada();
		} else {
		 inputControl.value = valor;		
		}
	} else  if (inputControl.id == 'salida') {
				primera_fecha = valor.split("/");
				dia = parseInt(primera_fecha[0],10);
				mes = parseInt(primera_fecha[1]-1,10);
				ano = parseInt(primera_fecha[2],10);
  var miFecha1 = new Date( ano, mes, dia );
  var fecha2 = document.getElementById('entrada').value;
				primera_fecha = fecha2.split("/");
				dia = parseInt(primera_fecha[0],10);
				mes = parseInt(primera_fecha[1]-1,10);
				ano = parseInt(primera_fecha[2],10);
	var miFecha2 = new Date( ano, mes, dia ) ;
var diferencia = miFecha1.getTime() - miFecha2.getTime()  ;
var dias = Math.floor(diferencia/(1000 * 60 * 60 * 24))  ;
if (dias < 0) {
 avisoSalida();
}else {
	document.getElementById('noches').value=dias;
	inputControl.value = valor;
	}
}

	DCalendario();
}
