// JavaScript Document

// ----- Inclusiones de librerías para Dialog
if(no_cargar_librerias_js!='no_cargar_librerias_js')
{
	$.getScript(ruta_raiz+"lib/js/ui_jquery/jquery.dimensions.js");
	$.getScript(ruta_raiz+"lib/js/ui_jquery/ui.dialog.js");
	$.getScript(ruta_raiz+"lib/js/ui_jquery/ui.resizable.js");
	$.getScript(ruta_raiz+"lib/js/ui_jquery/ui.mouse.js");
	$.getScript(ruta_raiz+"lib/js/ui_jquery/ui.draggable.js");
	$.getScript(ruta_raiz+"lib/js/ui_jquery/ui.droppable.js");
	$.getScript(ruta_raiz+"intranet_admin/lib/cal2.js");
	$.getScript(ruta_raiz+"intranet_admin/lib/cal_conf2.js");
}

// ----- Variables globales => Hay controles para la ficha de la casa
var url_accion_SS=ruta_raiz+'modulos/singlesearch/lib/accion.singlesearch.php';
if(nombre_capa_ficha=='capa_resultado')
	var nombre_capa_disponibilidad_SS=nombre_capa_ficha;
else
	var nombre_capa_disponibilidad_SS='capa_disponibilidad';

// ---- control para saltarnos los días mínimos si es acceso=3
var tiene_dias_minimos='';

// ----- Funcion del onLoad
$(document).ready(function()
{
	
	$('#boton_calcular_dispo').click(function()
	{
		getDisponibilidad(id_casa,Version_plataforma);
	});	
	
	setEventosDatePicker();	
});

function getHTMLCargando()
{
	return '<img src="'+ruta_raiz+'mod_b/images/ajax-loader.gif" align="absmiddle" />&nbsp;&nbsp;Cargando...';
}

function getHTMLEjecucion()
{
	return '<img src="'+ruta_raiz+'mod_b/images/ajax-loader.gif" align="absmiddle" />&nbsp;&nbsp;Cargando...';
}

// ----- Funciones para la gestion de capas
function SS_CrearCapa(nombre)
{
	// ----- Creamos la capa
	_capa=document.createElement('div');
	_capa.setAttribute('name',nombre);
	_capa.setAttribute('id',nombre);
	document.body.appendChild(_capa);

	// ----- Ajustamos parámetros básicos
	_capa=document.getElementById(nombre);
	_capa.style.position='absolute';
	_capa.style.display='none';
}

function getParametrosDisponibilidad()
{
	resultado='';
	
	resultado+='&e_fecha_entrada='+$('#setCalendar_dia').val()+'-'+(parseInt($('#setCalendar_mes').val())+1)+'-'+$('#setCalendar_anio').val();
	resultado+='&e_n_noches='+$('#setCalendar_n_noches').val();
	if (typeof(filtrar_habitaciones) != "undefined")
	{
		resultado+='&filtrar_habitaciones='+filtrar_habitaciones;
	}
	//alert(resultado);
		
	return resultado;
}

/**
 * Devuelve la Disponibilidad de la casa para las fechas indicadas
 * @param int P_id_casa
 * @param int modo => ''=Normal, 'V9'=Ficha de la casa V9
 * @return
 */
 
 var tiempo_parpadeo=0;

function getDisponibilidad(P_id_casa,modo)
{
	parametros=getParametrosDisponibilidad();
	if(parametros=='')
		return false;
	
	// ----- Cargamos el ejecutando
	$('#'+nombre_capa_disponibilidad_SS).html(getHTMLEjecucion());
	$('#'+nombre_capa_disponibilidad_SS).slideDown('slow');
	
	// ----- Hacemos la petición Ajax
	//jorge añado el post de acceso para saltarnos los dias minimos
	parametros_='&accion=2'+
				'&id_casa='+P_id_casa+
				'&id_operador='+$('#operador').val()+
				'&id_oficina='+$('#id_of').val()+				
				'&id_idioma='+$('#lang').val()+	
				'&acceso='+$('#acceso').val()+
				'&version='+modo+
				parametros;
	//alert(parametros_);
	$.post(url_accion_SS,parametros_,function(data,textStatus)
	{
		resultado=data.split('|');
		if(resultado[0]=='KO')
		{
			alert('Han surgido problemas al efectuar las acciones requeridas. Cod. Error: '+resultado[1]);
			//return false;
			$('#'+nombre_capa_disponibilidad_SS).html(resultado[1]);
		} else 
		{
			if(resultado[0]=='dias_minimos=1')
			{
				$('#'+nombre_capa_disponibilidad_SS).html(resultado[2]);
				//alert(resultado[1]);
				tiene_dias_minimos=resultado[1];
			}
			else
			{
				$('#'+nombre_capa_disponibilidad_SS).html(data);
				tiene_dias_minimos='';
			}
			
			setParpadeoTextos(P_id_casa);
			setEventosResultados(P_id_casa);
			
			// ---- Asignamos botón de Presupuesto
			$('.btn_click_presupuesto').each(function(){$('#'+this.id).unbind('click');}); 
			if (($('#estadoscr').val()==0)||($('#estadoscr').val()==2)){
				$('.btn_click_presupuesto').click(function()
						{
							alert('Lo sentimos pero este alojamiento no tiene activo el sistema de reservas online.')
						});	
			}
			if ($('#estadoscr').val()==1){
				$('.btn_click_presupuesto').click(function()
						{
							setPresupuesto(P_id_casa);
						});			
			}


			// ---- Si tenemos ya habitaciones marcadas
			if((dias_marcados!='') && (hab_marcados!=''))
			{
				hab_marcados_aux=hab_marcados.split(',');
				
				identificador_aux='sel_'+hab_marcados_aux[0]+'_'+hab_marcados_aux[1]+'_0';
				if(document.getElementById(identificador_aux))
				{
					//alert('Rural - Casa Completa');
					$('#'+identificador_aux).click();
					controlElementosSelec(identificador_aux);
				}
				
				identificador_aux='sel_'+hab_marcados_aux[0]+'_'+hab_marcados_aux[1]+'_1';
				if(document.getElementById(identificador_aux))
				{
					//alert('Rural - Habitacion');
					$('#'+identificador_aux).click();
					controlElementosSelec(identificador_aux);
				}
				
				identificador_aux='des_'+hab_marcados_aux[0]+'_0_'+prod_ocupacion+'_0';
				if(document.getElementById(identificador_aux))
				{
					//alert('Hotel - Casa Completa');
					$('#'+identificador_aux).click();
					controlElementosSelec(identificador_aux);
				}
				
				identificador_aux='des_'+hab_marcados_aux[0]+'_'+hab_marcados_aux[0]+'_'+prod_ocupacion+'_0';
				if(document.getElementById(identificador_aux))
				{
					//alert('Hotel - Habitacion');
					$('#'+identificador_aux).click();
					controlElementosSelec(identificador_aux);
				}

			} // Si hay dhabitaciones maracadas
		}
	});	
}

function setEventosResultados(P_id_casa)
{
	// ---- Asignamos los Click de las habitaciones (Rural)
	$('.s_cb_sel_hab').click(function()
	{
		controlElementosSelec(this.id);
	});
	
	// ---- Asignamos OnChange del desplegables de Plazas para rural.
	$('.s_des_sel_hab_rural').change(function()
	{
		//preparaPreciosSel(0,this.id.replace('pl_',''));
		controlElementosSelec(this.id.replace('pl_','sel_'));
	});
	
	// ---- Asignamos onchange del desplegable de las habitaciones (Hotel)
	$('.s_lb_sel_hab').change(function()
	{
		controlElementosSelec(this.id);
	});
}

function setParpadeoTextos(P_id_casa)
{
	// ---- Parapadeo de la frase al lado de las habitaciopnes
	clearInterval(tiempo_parpadeo); 
	tiempo_parpadeo=setInterval('parpadeo_texto()', 500);
}

function parpadeo_texto() 
{
	$('#msg_2').css('color',(($('#msg_2').css('color') == '#4a4949')||($('#msg_2').css('color') =='rgb(74, 73, 73)') ? '#bbbbbb' : '#4a4949') );
	$('#capa_info_ofertas_presupuesto').css('color',(($('#capa_info_ofertas_presupuesto').css('color') == '#4a4949')||($('#capa_info_ofertas_presupuesto').css('color') =='rgb(74, 73, 73)') ? '#bbbbbb' : '#4a4949') );
	clearInterval(tiempo_parpadeo); 
	tiempo_parpadeo=setInterval('parpadeo_texto()', 500);

	/*$('#msg_2').css('visibility',($('#msg_2').css('visibility') == 'hidden' ? 'visible' : 'hidden'));
	clearInterval(tiempo_parpadeo);*/		
}


/**
 * Lanza el presupesto con las habitaciones marcadas
 * @param int P_id_casa
 * @param int P_modo => 0=Presupuesto, 1=Reserva
 * @return
 */
function setPresupuesto(P_id_casa,P_modo)
{
	if(P_modo==1)
	{
		if(ES_HTTPS=='1')
			$('#f_VariablesNecesarias_'+P_id_casa).attr('action','https://'+PREFIJO_HTTPS+URL_HTTPS+'/scr/modulos/reservas/confirmacion.php?desple=1&id_casa='+P_id_casa);
		else
			$('#f_VariablesNecesarias_'+P_id_casa).attr('action','../../modulos/reservas/confirmacion.php?desple=1&id_casa='+P_id_casa);
		$('#f_VariablesNecesarias_'+P_id_casa).attr('target','_self');
	}
	else
	{
		$('#f_VariablesNecesarias_'+P_id_casa).attr('action',ruta_raiz+'modulos/reservas/presupuesto.php?id_casa='+P_id_casa);
		$('#f_VariablesNecesarias_'+P_id_casa).attr('target','_blank');
	}
	
	modo_hotel=$(".s_cb_sel_hab").length==0;
	
	// ---- Preparamos Habitaciones ModoHotel
	if(modo_hotel)
	{
		// ---- Control si hay algún elemento seleccionado
		if($(".s_lb_sel_hab_op:selected").length==0)
		{
			alert('Tiene que seleccionar algún elemento para realizar la reserva.');
			return false;
		}
		
		// ---- Montamos las habitaciones marcadas
		OcupacionHabitaciones='';
		$(".s_lb_sel_hab_op:selected").each(function(i)
		{
			//alert(this.value);
			// --- Composicion => 0valor_1idhabitacion_2idtipoagrupacion_3plazas_4supletoria_5nombre_6tipoagrupacion
			elemento_=this.value.split('_');
			ids_elemento=elemento_[5]+'|'+elemento_[6]+'|'+elemento_[1]+'|'+elemento_[2]+'|'+elemento_[3]+'|'+elemento_[4]+'|'+elemento_[0];

			if(OcupacionHabitaciones=='')	OcupacionHabitaciones=ids_elemento;
			else							OcupacionHabitaciones+='¨'+ids_elemento;
		});
		//alert(OcupacionHabitaciones);
		//return false;
	}
	else
	// ---- Preparamos las Habitaciones ModoRural
	{
		// ---- Control si hay algún elemento seleccionado
		if($(".s_cb_sel_hab:checked").length==0)
		{
			alert('Tiene que seleccionar algún elemento para realizar la reserva.');
			return false;
		}
		
		// ---- Montamos las habitaciones marcadas
		OcupacionHabitaciones='';
		$(".s_cb_sel_hab:checked").each(function(i)
		{
			// --- Composicion =>  id="0sel_1idhabitacion_2idhabitacionbase_3idtipoagrupacion_4nombre_5tipoagrupacion
			//alert(this.value);
			elemento_=this.value.split('_');
			opcion_plazas=$(".s_des_sel_hab_rural_op_"+elemento_[1]+"_"+elemento_[2]+":selected").val().split('-');
			ids_elemento=elemento_[4]+'|'+elemento_[5]+'|'+elemento_[1]+'|'+elemento_[2]+'|'+opcion_plazas[0]+'|'+opcion_plazas[1]+'|0';

			if(OcupacionHabitaciones=='')	
				OcupacionHabitaciones=ids_elemento;
			else							
				OcupacionHabitaciones+='¨'+ids_elemento;
		});
		//alert(OcupacionHabitaciones);
	}
	
	// ---- Preparamos los días
	//FechaAux=$('#e_fecha_entrada').val().split('-');
	dias_marcados='';
	for(ind_dia=0;ind_dia<$('#setCalendar_n_noches').val();ind_dia++)
	{
		FEchaAux=new Date(parseInt($('#setCalendar_anio').val()),($('#setCalendar_mes').val()),(parseInt($('#setCalendar_dia').val())+parseInt(ind_dia)),0,0,0);
		if(dias_marcados=='')
			dias_marcados=parseInt(FEchaAux.getTime()/1000);
		else
			dias_marcados+='|'+parseInt(FEchaAux.getTime()/1000);
	}

	//alert(OcupacionHabitaciones+' - '+dias_marcados);
	$('#f_VariablesNecesarias_'+P_id_casa+' > #hab_marcados').val(OcupacionHabitaciones);
	$('#f_VariablesNecesarias_'+P_id_casa+' > #dias_marcados').val(dias_marcados);	
	//alert($('#hab_marcados').val()+' - '+$('#dias_marcados').val());
	
	// ----- control de días mínimos para acceso=3
	continuar_submit=true;
	if(tiene_dias_minimos!='')
	{
		// Decimos que hay restriciones para confirmación
		$('#hay_restricciones').val(1);
		Mensaje_=tiene_dias_minimos+'\n\n¿Desea continuar?';
		continuar_submit=confirm(Mensaje_);
	}
	
	if(continuar_submit)
		$('#f_VariablesNecesarias_'+P_id_casa).submit();
}

/**
 * Control para ver que se selecciona, si es casa completa se desactiban las hab. y a la inversa.
 * @param stirng id_elemento
 * @return
 */
function controlElementosSelec(id_elemento)
{
	//alert(id_elemento);
	elemento_=id_elemento.split('_');
	
	btn_reservar_activo=false;
	precio_final=0;
	
	// ---- Reseteo del texto información de ofertas en el botón presupuesto
	$('#capa_info_ofertas_presupuesto').hide();

	// ----- si es checkbox
	if(elemento_[0]=='sel')
	{
		$(".s_cb_sel_hab").each(function(i)
		{
			// ---- Control de precios y activos
			if(this.checked) btn_reservar_activo=true;
			precio_final+=parseFloat(preparaPreciosSel(0,this.id.replace('sel_','')));
			
			// ---- Comprobamos si hay ofertas para algún elemento seleccionado
			if((this.checked) && ($('#'+this.id.replace('sel_','TOfertas_')).val()==1))
				$('#capa_info_ofertas_presupuesto').show();
			
			// ---- Comprobamos si se ha pulsado una habitacion desmarcamos casa_completa
			elemento_2=this.id.split('_');
			if((elemento_2[3]==0) && (elemento_[3]!=0))
				this.checked=false;
			
			// ---- Comprobamos si se ha pulsado casa_completa desmarcamos las habitaciones
			if((elemento_2[3]!=0) && (elemento_[3]==0))
				this.checked=false;
		});
		
		// ---- control del boton reservar
		controlBtnReservar(btn_reservar_activo);
	}
	else if(elemento_[0]=='des')
	// ----- Si es un desplegable (modo hotel)
	{
		//alert('Seleccionado: '+$('#'+id_elemento).val());
		//if($('#'+id_elemento).attr('selectedIndex')>0)
		$(".s_lb_sel_hab").each(function(i)
		{
			// ---- Comprobamos si se ha pulsado una habitacion desmarcamos casa_completa
			elemento_2=this.id.split('_');
			if((elemento_2[2]==0) && (elemento_[2]!=0))
				$('#'+this.id).val(0);
			// ---- Comprobamos si se ha pulsado casa_completa desmarcamos las habitaciones
			if((elemento_2[2]!=0) && (elemento_[2]==0))
				$('#'+this.id).val(0);
		});
		
		// ---- control del boton reservar
		controlBtnReservar( ($(".s_lb_sel_hab_op:selected").length>0) );
		
		// ---- Control de plazas diponibles para el elemento
		plazas_total_seleccionadas=0;
		$(".s_lb_sel_hab_op_"+elemento_[1]+":selected").each(function(i)
		{
			// ----- sumamos todas las selecciones
			plazas_total_seleccionadas+=parseInt(this.text);
		});
		
		// ---- Para cada desplegables ajustamos elementos disponibles
		// -- Desplegable	=> des_id_habitacion_id_tipo_agrupacion_plazas_supletoria
		// -- Opciones		=> valor_id_habitacion_id_tipo_agrupacion_plazas_supletoria
		$(".s_lb_sel_hab_"+elemento_[1]).each(function(i)
		{
			//alert(this.id);
			elemento_2=this.id.split('_');
			// ---- Total de opciones para eldesplegable, descontanto la opcion por defecto q es el 0 
			TotalOpciones=$(".s_lb_sel_hab_op_"+elemento_2[1]+"_"+elemento_2[3]+"_"+elemento_2[4]).length;
			Seleccionado=parseInt(this.selectedIndex);
			$(".s_lb_sel_hab_op_"+elemento_2[1]+"_"+elemento_2[3]+"_"+elemento_2[4]).each(function(i)
			{
				// -- Opciones Disponibles=Seleccionado + (TotalOpciones-TotalValoresSeleccionados-)
				OpcionesDisponibles=(Seleccionado+(TotalOpciones-plazas_total_seleccionadas));
				//alert(this.index+'<='+"("+Seleccionado+"+("+TotalOpciones+"-"+plazas_total_seleccionadas+"))="+OpcionesDisponibles);
				if(parseInt(this.index)<=OpcionesDisponibles)
					this.style.display='block';
				else
					this.style.display='none';
			});
		});
		
	}
	
	$('#precio_final_rural').val(formateaNumScript(parseFloat(precio_final))+' €');
}

function preparaPreciosSel(tipo,nombre_aux)
{
	// ---- Rural
	if(tipo==0)
	{		
		if($('#sel_'+nombre_aux).attr('checked'))
		{
			precio_aux_=$('#precio_'+$('#pl_'+nombre_aux).val()).val();
			$('#precio_'+nombre_aux).val(formateaNumScript(parseFloat(precio_aux_))+' €');
			$('#precio_'+nombre_aux).show();
		}
		else
		{
			precio_aux_=0;
			$('#precio_'+nombre_aux).val('');
			$('#precio_'+nombre_aux).hide();
		}
		return precio_aux_;
	} else
	// ---- Hotel
	{
	}
}

function formateaNumScript(numero)
{
	precio_total_aux=((Math.round(numero*100))/100)+'';
	precio_total_aux=precio_total_aux.replace('.',',');
	return precio_total_aux;
}

function controlBtnReservar(activo)
{
	if(!document.getElementById('btn_reservar'))
		return false;
	
	
	$("#btn_reservar").unbind('click'); 
	$('#btn_reservar').css('background-color','#CCCCCC');
	if(activo)
	{
		$('#btn_reservar').css('background-color','#FF0000');
		if (($('#estadoscr').val()==0)||($('#estadoscr').val()==2)){
			$('#btn_reservar').click(function()
					{
						alert('Lo sentimos pero este alojamiento no tiene activo el sistema de reservas online.');
					});	
		}
		
		if ($('#estadoscr').val()==1){
			$('#btn_reservar').click(function()
			{
				setPresupuesto(id_casa,1);
			});	
		}
	}
}



// ----- Eventos para el calendario del SingleSearch
function setEventosDatePicker()
{
	// ----- Valores por defecto
	$.datepicker.setDefaults(
	{
	    showOn: "both", 
	    buttonImage: ruta_raiz+"mod_b/images/ico_calendario.gif", 
	    buttonImageOnly: true
	});
	
	// ---- Date Piker
	anioAux=new Date();
	$("#linkedDates").datepicker(
	{ 		
	    minDate: new Date(), 
	    maxDate: new Date(anioAux.getFullYear()+1, 12 - 1, 31), 
	    beforeShow: readLinked, 
	    onSelect: updateLinked
	});
	
	// ---- Lenguaje
    $.datepicker.regional['es'];
	
	// ---- Eventos de los desplegables
	$("#setCalendar_mes, #setCalendar_dia, #setCalendar_anio").change(checkLinkedDays);
	
	// ---- Estilo para el calendario
	$('.ui-datepicker-trigger').attr('align','absbottom');
}

//Prepare to show a date picker linked to three select controls 
function readLinked() 
{ 
	//alert($('#linkedDates').val());
    $('#linkedDates').val($('#setCalendar_mes').val() + '-' + 
        $('#setCalendar_dia').val() + '-' + $('#setCalendar_anio').val()); 
    return {}; 
} 
 
// Update three select controls to match a date picker selection 
function updateLinked(date) 
{ 
    valor_fecha_select=date.split('/');
    //alert(valor_fecha_select[1]);
    aux_mes=parseInt(valor_fecha_select[1],10)-1;
    //alert(aux_mes);
    $('#setCalendar_mes').val(aux_mes); 
	$('#setCalendar_dia').val(valor_fecha_select[0]); 
	$('#setCalendar_anio').val(valor_fecha_select[2]);

	//alert(date);
	//alert($('#setCalendar_dia').val()+'-'+$('#setCalendar_mes').val()+'-'+$('#setCalendar_anio').val());
	/*
    $('#setCalendar_mes').val(parseInt(date.substring(0, 2))-1); 
    $('#setCalendar_dia').val(date.substring(3, 5)); 
    $('#setCalendar_anio').val(date.substring(6, 10));
	*/
} 
 
// Prevent selection of invalid dates through the select controls 
function checkLinkedDays() 
{ 
    var daysInMonth = 32 - new Date($('#setCalendar_anio').val(),$('#setCalendar_mes').val() , 32).getDate(); 
    $('#setCalendar_dia option').attr('disabled', ''); 
    $('#setCalendar_dia option:gt(' + (daysInMonth - 1) +')').attr('disabled', 'disabled'); 
    if ($('#setCalendar_dia').val() > daysInMonth) 
    { 
        $('#setCalendar_dia').val(daysInMonth); 
    } 
} 
