/**
 * Juan Servera - 01/10/2009

 * Libreria para el uso de calendarios de disponibilidad.
 * Seleccion de rangos de dias entre fechas.
 * Sincroniza las fechas de inicio y de final con 
 * los inputs del cajetin de busqueda.
 * 
 * Esta libre de restricciones (Soporta n meses y n años).
 * 
 * Tiene una configuracion por defecto que corresponde
 * al "estandar" de los fronts del BookingCore.
 * De todos modos dispone de funciones para cambiar
 * en algunos casos estos valores sin tener que 
 * modificar este codigo.
 *
 * !!!! UNICA NORMA !!!!
 * El dia del calendario en el jsp debe tener un 
 * identificador del tipo:  id="[dia]_[mes]_[año]" 
 * 
 * - Modificaciones :
 * David Socías:
 *  03/03/2011 - Modificación para funcionar con DatePickers de JQuery
 *  			con el formato dd/MM/yyyy
 */

/*********************** Configuracion ***********************/
// -- configuraciones por defecto. --
var FORM_CALENDARIO		= "formCalendario";
var FORM_CAJETIN		= "form1";
var DIA_ENTRADA			= "from";
//var MES_ANIO_ENTRADA	= "entrada2";
var DIA_SALIDA			= "to";
//var MES_ANIO_SALIDA		= "salida2";
var SEPARADOR_FECHA		= "_";
var CLASE_ACTIVA		= "active";
var CLASE_DISPARADOR	= "click_calendar";

// -- modificadores de los valores por defecto. --
function setNombreFormCalendario(v){FORM_CALENDARIO = v;}
function setNombreFormCajetin(v){FORM_CAJETIN = v;}
function setNombreInputDiaEntrada(v){DIA_ENTRADA = v;}
//function setNombreInputMesAnioEntrada(v){MES_ANIO_ENTRADA = v;}
function setNombreInputDiaSalida(v){DIA_SALIDA = v;}
//function setNombreInputMesAnioSalida(v){MES_ANIO_SALIDA = v;}
//function setSeparadorFecha(v){SEPARADOR_FECHA = v;}
function setClaseActiva(v){CLASE_ACTIVA = v;}
function setClaseDisparador(v){CLASE_DISPARADOR = v;}
/*************************************************************/

var click	= 0;
var diaIni	= 0;
var mesIni	= 0;
var anioIni	= 0;
var diaFin	= 0;
var mesFin	= 0;
var anioFin	= 0;

$(document).ready(function(){
		
	$("."+CLASE_DISPARADOR).live("click",function(){
		var vars = $(this).attr('id').split(SEPARADOR_FECHA);
		var dia = parseInt(vars[0].replace(/^0+/g, ''));
		var mes = parseInt(vars[1].replace(/^0+/g, ''));
		var anio = parseInt(vars[2].replace(/^0+/g, ''));
		
		if(click == 1 && dia == diaIni && mes == mesIni && anio == anioIni){			
			diaIni = 0;
			mesIni = 0;
			anioIni = 0;
			diaFin = 0;
			mesFin = 0;
			anioFin = 0;
			click = 0;
			$(this).removeClass(CLASE_ACTIVA);
		}else if(click == 0 || (dia < diaIni && mes == mesIni && anio==anioIni && click == 1) || (mes < mesIni && click == 1) || (anio < anioIni && click == 1)){
			$("#"+rellenaValor(diaIni)+SEPARADOR_FECHA+rellenaValor(mesIni)+SEPARADOR_FECHA+anioIni).removeClass(CLASE_ACTIVA);
			diaIni = dia;
			mesIni = mes;
			anioIni = anio;
			click = 1;
			$(this).addClass(CLASE_ACTIVA);
			setFechaInicio(dia,mes,anio);
		}else if(click==3 && (dia<=diaIni && mes == mesIni && anio == anio) ||  mes < mesIni || anio < anioIni){
			diaFin = 0;
			mesFin = 0;
			anioFin = 0;
			
			$(".active").each(function(){
				$(this).removeClass(CLASE_ACTIVA);
			});
			
			if(dia==diaIni && mes == mesIni && anio == anioIni){
				diaIni = 0;
				mesIni = 0;
				anioIni = 0;
				click = 0;
			}else{
				diaIni = dia;
				mesIni = mes;
				anioIni = anio;
				click = 1;
				$(this).addClass(CLASE_ACTIVA);
				setFechaInicio(dia,mes,anio);
			}
		}else if((dia > diaFin && mes == mesFin && anio == anioFin) || (mes > mesFin || anio > anioFin)){
			/* Pintamos entre fechas */
			if(mesIni == mes && anioIni == anio){
				var i;
				for(i = diaIni; i <= dia; i++){
					var celda = $("#"+rellenaValor(i)+SEPARADOR_FECHA+rellenaValor(mes)+SEPARADOR_FECHA+anio);
					if(celda!=null){
						celda.addClass(CLASE_ACTIVA);
					}else{	
						break;
					}
				}
				diaFin = i-1;
				mesFin = mes;
				anioFin = anio;
				click = 3;
				setFechaSalida(diaFin,mesFin,anioFin);
			}else{
				//var f = new Date();
				//f.setFullYear(anioIni,mesIni-1,diaIni);
				//var dias = Date.getDaysInMonth(f.getFullYear(),f.getMonth());
				
				/* rellenamos el mes a medias (inicial) */
				for(i = diaIni; i <= 31; i++){
					if($("#"+rellenaValor(i)+SEPARADOR_FECHA+rellenaValor(mesIni)+SEPARADOR_FECHA+anioIni)!=null){	
						$("#"+rellenaValor(i)+SEPARADOR_FECHA+rellenaValor(mesIni)+SEPARADOR_FECHA+anioIni).addClass(CLASE_ACTIVA);
					}else{
						//diaFin = i-1;
						//mesFin = mes;
						//anioFin = anio;
						//click = 3;
						//setFechaSalida(diaFin,mesFin,anioFin);
						//return false;
						break
					}
				}
				
				/* Meses intermedios. */
				//var mIni = Date.today().set({day:1, month:mesIni-1, year:anioIni});
				//var mFin = Date.today().set({day:1, month:mes-1, year:anio});
				
				/*while(0>mIni.addMonths(1).compareTo(mFin)){
					for(i = 1; i <= 31; i++){
						if($("#"+rellenaValor(i)+SEPARADOR_FECHA+rellenaValor(mIni.getMonth()+1)+SEPARADOR_FECHA+mIni.getFullYear())!=null){
							$("#"+rellenaValor(i)+SEPARADOR_FECHA+rellenaValor(mIni.getMonth()+1)+SEPARADOR_FECHA+mIni.getFullYear()).addClass(CLASE_ACTIVA);
						}else{
							//diaFin = i;
							//mesFin = mIni.getMonth();
							//anioFin = mIni.getFullYear();
							//click = 3;
							//setFechaSalida(diaFin,mesFin,anioFin);
							//return false;
							break;
						}
					}
				}*/
				
				/* rellenamos el mes a medias (final) */
				for(i = 1; i <= dia; i++){
					if($("#"+rellenaValor(i)+SEPARADOR_FECHA+rellenaValor(mes)+SEPARADOR_FECHA+anio)!=null){
						$("#"+rellenaValor(i)+SEPARADOR_FECHA+rellenaValor(mes)+SEPARADOR_FECHA+anio).addClass(CLASE_ACTIVA);
					}else{		
						//diaFin = i;
						//mesFin = mes;
						//anioFin = anio;
						//click = 3;
						//setFechaSalida(diaFin,mesFin,anioFin);
						//return false;
						break;
					}
				}
				diaFin = dia;
				mesFin = mes;
				anioFin = anio;
				click = 3;
				setFechaSalida(diaFin,mesFin,anioFin);
				
			}
			
		}
		return false;
	});
		
});

function rellenaValor(v){
	if(v<10){
		return "0"+v;
	} else {
		return v;
	}
}

function setFechaInicio(dia,mes,anio){
	document.getElementById(DIA_ENTRADA).value = rellenaValor(dia) + "/" + rellenaValor(mes) + "/" + anio;
	//changeFecha(FORM_CAJETIN,null,null,true);
}

function setFechaSalida(dia,mes,anio){
	document.getElementById(DIA_SALIDA).value = rellenaValor(dia) + "/" + rellenaValor(mes) + "/" + anio;
	//changeFecha(FORM_CAJETIN,null,null,true);
}

