//Id´s de las fechas en session
var fechaDesdeSession='';
var fechaHastaSession='';
//Class de la imagen del calendario
var imagenCalendarioClass='muestraCal';
var numeroNoches=0;

//Inicializamos Calendarios
function initVarsCalendario(initVar) {
    fechaDesdeSession = initVar.fechaDesdeSession;
    fechaHastaSession = initVar.fechaHastaSession;
    imagenCalendarioClass = initVar.imagenCalendarioClass;
}

$$(document).ready(function() {
    //Funcion para Inicializar Calendario
    $$.datepicker.setDefaults({
        monthNames: ['Enero', 'Febrero', 'Marzo', 'Abril', 'Mayo', 'Junio', 'Julio', 'Agosto', 'Septiembre', 'Octubre', 'Noviembre', 'Diciembre'],
        monthNamesShort: ['Ene', 'Feb', 'Mar', 'Abr', 'May', 'Jun', 'Jul', 'Ago', 'Sep', 'Oct', 'Nov', 'Dic'],
        dayNamesMin: ['Do', 'Lu', 'Ma', 'Mi', 'Ju', 'Vi', 'Sa'],
        showAnim: '',
        numberOfMonths: 2,
        showButtonPanel: true,
        firstDay: 0,
        currentText: 'Hoy',
        closeText: 'Listo',
        dateFormat: 'dd/M/yy',
        disabled: true,
        stepMonths: 2
    });
    //Funcion para Agregar dias a una fecha
    function addDays(myDate, days, format) {
        return $$.datepicker.formatDate(format, new Date(myDate.getFullYear(), myDate.getMonth(), myDate.getDate() + days));
    }

    var valFechaIda;
	
    //Funcionalidad de Calendarios "Desde Hasta" 
    function rangoFechas(campoIda, campoRegreso, daysMin) {
        var fechas = $$('#' + campoIda + ',#' + campoRegreso).datepicker({
            minDate: 0,
            beforeShow: function(input, inst) {
                inputOffset = $$(input).offset();
                if ((inputOffset.left + 415) > parseInt($$('body').width())) {
                    inst.dpDiv.css({ marginLeft: ($$('body').width() - (inputOffset.left + 415) - 20) + 'px' });
                }

                var parentForm = $$(this).parents('form');
                if (this.id == campoRegreso && $$('input[id=status_calendar]', parentForm).val() == '0') {
                    //Inicializamos minDate del Calendario Hasta
					var minDateInit = fechaDesdeSession.split('-');
					$$(this).datepicker('option', 'minDate', addDays(new Date(minDateInit[2], minDateInit[1] - 1, minDateInit[0]), daysMin, 'dd/M/yy'));
                }
            },
            onSelect: function(selectedDate) {
                var instance = $$(this).data('datepicker');
                var parentForm = $$(this).parents('form');
                if (this.id == campoIda) {
                    //Actualizamos Fechas en el formulario 'Desde'
                    $$('input[name=dia_desde]', parentForm).val(instance.selectedDay);
                    $$('input[name=mes_desde]', parentForm).val(instance.selectedMonth + 1);
                    $$('input[name=anio_desde]', parentForm).val(instance.selectedYear);
                    $$('input[name=status_calendar]', parentForm).val(1);


                    //Hacemos Bloqueo de fechas minDate solo para el calendario 'Hasta'
                    var datemin = $$.datepicker.parseDate(instance.settings.dateFormat || $$.datepicker._defaults.dateFormat, addDays(new Date(instance.selectedYear, instance.selectedMonth, instance.selectedDay), daysMin, 'dd/M/yy'), instance.settings);
                    $$('#' + campoRegreso).datepicker("option", 'minDate', datemin);

                    //Verificamos si es mayor o igual la fecha "Desde" a la fecha "Hasta", si es asi, actulizamos dia hasta
                    if (instance.selectedDay >= $$('input[name=dia_hasta]', parentForm).val() || (instance.selectedMonth + 1) >= $$('input[name=mes_hasta]', parentForm).val() || instance.selectedYear >= $$('input[name=anio_hasta]', parentForm).val()) {
                        $$('#' + campoRegreso).datepicker('setDate', addDays(datemin, numeroNoches, 'dd/M/yy')); //Agregamos noches
                        var fechaActualizada = $$('#' + campoRegreso).datepicker('getDate');
                        $$('input[name=dia_hasta]', parentForm).val(fechaActualizada.getDate());
                        $$('input[name=mes_hasta]', parentForm).val(fechaActualizada.getMonth() + 1);
                        $$('input[name=anio_hasta]', parentForm).val(fechaActualizada.getFullYear());
                    }
                } else {
                    //Actualizamos Fechas en el formulario 'Hasta'
                    $$('input[name=dia_hasta]', parentForm).val(instance.selectedDay);
                    $$('input[name=mes_hasta]', parentForm).val(instance.selectedMonth + 1);
                    $$('input[name=anio_hasta]', parentForm).val(instance.selectedYear);
                    $$('input[name=status_calendar]', parentForm).val(1);
                }
            }
        });
    }

    // Calendarios Expedia
    function rangoFechasExp(campoIda, campoRegreso) {
        var fechas = $$('#' + campoIda + ',#' + campoRegreso).datepicker({
            minDate: 0,
            dateFormat: 'mm/dd/yy',
			onSelect: function(selectedDate) {
                var instance = $$(this).data('datepicker');
                var parentForm = $$(this).parents('form');
                if (this.id == campoIda) {

                    var datemin = $$.datepicker.parseDate(instance.settings.dateFormat || $$.datepicker._defaults.dateFormat, addDays(new Date(instance.selectedYear, instance.selectedMonth, instance.selectedDay), 1, 'mm/dd/yy'), instance.settings);
                    //Verificamos si es mayor o igual la fecha "Desde" a la fecha "Hasta", si es asi, actulizamos dia hasta
                    if ($$('#' + campoIda).datepicker('getDate') >= $$('#' + campoRegreso).datepicker('getDate')) {
                        $$('#' + campoRegreso).datepicker('setDate', addDays(datemin, numeroNoches, 'mm/dd/yy')); //Agregamos 4
                    }
                    //Hacemos Bloqueo de fechas minDate solo para el calendario 'Hasta'
                    $$('#' + campoRegreso).datepicker("option", 'minDate', datemin);
                }
            }
        });
    }

    //Funcion para inicializar fechas de Calendarios "Desde Hasta"
    function initFechas(campoIda, campoRegreso, formatoFecha) {
        var fechadesde = fechaDesdeSession.split('-');
        var fechahasta = fechaHastaSession.split('-');
        fechadesde = $$.datepicker.formatDate(formatoFecha, new Date(fechadesde[2], fechadesde[1] - 1, fechadesde[0]));
        fechahasta = $$.datepicker.formatDate(formatoFecha, new Date(fechahasta[2], fechahasta[1] - 1, fechahasta[0]));
        //Inicializamos Fechas de Calendario	
        $$('#' + campoIda).datepicker('setDate', (fechadesde == undefined || fechadesde == '' ? +7 : fechadesde));
        $$('#' + campoRegreso).datepicker('setDate', (fechahasta == undefined || fechahasta == '' ? +8 : fechahasta));

        $$('.' + imagenCalendarioClass).click(function() {
            $$(this).prev().datepicker('show');
        });
	}
	//Funcionalidad Calendario "Desde"
   function rangoFecha(campoIda, tipo, daysMin) {
        if (tipo == null || typeof tipo == 'undefined') { tipo = 0; }
        var fechas = $$('#' + campoIda).datepicker({
            minDate: 0,
            beforeShow: function(input, inst) {			
                var parentForm = $$(this).parents('form');
                if (tipo == 1 && $$('input[id=status_calendar]', parentForm).val() == '0') {
                    //Inicializamos minDate del Calendario Hasta
					if($$('select[name=tipo_traslado]').val() != 'S'){
						var minDateInit = fechaHastaSession.split('-');
						$$(this).datepicker('option', 'minDate', addDays(new Date(minDateInit[2], minDateInit[1] - 1, minDateInit[0]), daysMin, 'dd/M/yy'));
					}
                }
            },
            onSelect: function(selectedDate) {
                var instance = $$(this).data('datepicker');
                var parentForm = $$(this).parents('form');
                if (tipo == 0) {
                    //Actualizamos Fechas en el formulario 'Desde'
                    $$('input[name=dia_desde]', parentForm).val(instance.selectedDay);
                    $$('input[name=mes_desde]', parentForm).val(instance.selectedMonth + 1);
                    $$('input[name=anio_desde]', parentForm).val(instance.selectedYear);
                    $$('input[name=status_calendar]', parentForm).val(1);

                    if ($$('#hasta_UI_trans').is(':visible')) {
					
                        var datemin = $$.datepicker.parseDate(instance.settings.dateFormat || $$.datepicker._defaults.dateFormat, addDays(new Date(instance.selectedYear, instance.selectedMonth, instance.selectedDay), daysMin, 'dd/M/yy'), instance.settings);
                        $$('#hasta_UI_trans').datepicker("option", 'minDate', datemin);

                        if (instance.selectedDay >= $$('input[name=dia_hasta]', parentForm).val() || (instance.selectedMonth + 1) >= $$('input[name=mes_hasta]', parentForm).val() || instance.selectedYear >= $$('input[name=anio_hasta]', parentForm).val()) {
                            $$('#hasta_UI_trans').datepicker('setDate', addDays(datemin, numeroNoches, 'dd/M/yy')); //Agregamos noches
                            var fechaActualizada = $$('#hasta_UI_trans').datepicker('getDate');
                            $$('input[name=dia_hasta]', parentForm).val(fechaActualizada.getDate());
                            $$('input[name=mes_hasta]', parentForm).val(fechaActualizada.getMonth() + 1);
                            $$('input[name=anio_hasta]', parentForm).val(fechaActualizada.getFullYear());
                        }
                    }
					
                } else {
				
                    //Actualizamos Fechas en el formulario 'hasta'
                    $$('input[name=dia_hasta]', parentForm).val(instance.selectedDay);
                    $$('input[name=mes_hasta]', parentForm).val(instance.selectedMonth + 1);
                    $$('input[name=anio_hasta]', parentForm).val(instance.selectedYear);
					
					if(new Date(instance.selectedYear, instance.selectedMonth, instance.selectedDay) > new Date() && $$('#desde_UI_trans').is(':hidden')){
						
						$$('#desde_UI_trans').datepicker('setDate',addDays(new Date(),2,'dd/M/yy'));
						var fechaActualizada = $$('#desde_UI_trans').datepicker('getDate');
						$$('input[name=dia_desde]', parentForm).val(fechaActualizada.getDate());
						$$('input[name=mes_desde]', parentForm).val(fechaActualizada.getMonth() + 1);
						$$('input[name=anio_desde]', parentForm).val(fechaActualizada.getFullYear());

						$$('input[name=status_calendar]', parentForm).val(1);
						
					}

				}

            }
			

			
        });
    }
    //Funcion para inicializar fecha de Calendario "Desde"
    function initFecha(campoIda, tipo) {
        var fechadesde;
        if (tipo == null || typeof tipo == 'undefined') { tipo = 0 }
        //Fecha de Desde -- Fecha Hasta
        if (tipo == 0) { fechadesde = fechaDesdeSession.split('-'); } else { fechadesde = fechaHastaSession.split('-'); }
        fechadesde = $$.datepicker.formatDate('dd/M/yy', new Date(fechadesde[2], fechadesde[1] - 1, fechadesde[0]));
        //Inicializamos Fechas de Calendario	
        $$('#' + campoIda).datepicker('setDate', (fechadesde == undefined || fechadesde == '' ? +7 : fechadesde));
        $$('.' + imagenCalendarioClass).click(function() {
            $$(this).prev().datepicker('show');
        });
    }
    //Iniciamos la funcionalidad de los calendarios
    rangoFecha('desde_UI_tour');
    rangoFecha('desde_UI_formahotel');
    rangoFecha('desde_UI_trans', 0,1);
    rangoFecha('hasta_UI_trans', 1,1);
    rangoFechas('desde_UI_pack', 'hasta_UI_pack', 1);
    rangoFechas('desde_UI_hotel', 'hasta_UI_hotel', 1);
    rangoFechas('desde_UI_cars', 'hasta_UI_cars', 1);
    rangoFechas('desde_UI_flight', 'hasta_UI_flight', 0);
    rangoFechasExp('FromDate', 'ToDate');

    //Inicializamos las Fechas de los Calendarios
    initFecha('desde_UI_tour');
    initFecha('desde_UI_formahotel');
    initFecha('desde_UI_trans', 0);
    initFecha('hasta_UI_trans', 1);
    initFechas('desde_UI_pack', 'hasta_UI_pack', 'dd/M/yy');
    initFechas('desde_UI_hotel', 'hasta_UI_hotel', 'dd/M/yy');
    initFechas('desde_UI_cars', 'hasta_UI_cars', 'dd/M/yy');
    initFechas('desde_UI_flight', 'hasta_UI_flight', 'dd/M/yy');
    //initFechas('desde_UI_trans', 'hasta_UI_trans','dd/M/yy');
    initFechas('FromDate', 'ToDate', 'mm/dd/yy');

    //Traslados
    //rangoFechas('desde_UI_trans', 'hasta_UI_trans', 1);
    //initFechas('desde_UI_trans', 'hasta_UI_trans', 'dd/M/yy');
	
	$$('select[name=tipo_traslado]').change(function(){
		if($$(this).val() == 'S'){
			$$('#hasta_UI_trans').datepicker("option", 'minDate',  new Date());
		}
	});
});
