/*
	Class: Calendario
*/

window.addEvent('domready', function(){
	//Cambio de tipo
	var alerts = new Array();
	alerts['es'] = new Array(
		'El total de personas seleccionadas no puede superar el número máximo indicado para el tipo de habitación elegido'
		);
	alerts['it'] = new Array(
		'El total de personas seleccionadas no puede superar el número máximo indicado para el tipo de habitación elegido'
		);
	alerts['de'] = new Array(
        'Die Anzahl der ausgewählten Personen darf nicht größer sein, als die für das gewählte Zimmer ausgewiesene Maximalbelegung'
        );
    alerts['en'] = new Array(
        'The number of selected persons may not be higher than the indicated maximum for the selected room'
        );
	var lang = $('lang').value
	$$('input.opttipo').each(function(el){
		el.addEvent('click', function(){
		window.location.href = 'index.php?option=com_reservas&lang='+lang+'&tipo='+el.value;
		//window.reload(true);
		});
	});
	//Navegación meses, ajax
	
	//mostrarAcordeon();	
	prepararCalendario();
	//Cálculo del importe de servicio
	
	$$('input.idservicio').each(function(el){
		el.addEvent('change',function(){
			$('imptotalservicio').innerHTML = (($$('span.'+el.value).getText()) * $('cantidad').value )+' €';
		});
	});
	//
	if($defined($('cantidad')))// Añadida la comprobación porque ya no estará los servicios y habitaciones en la misma pantalla
	{
		$('cantidad').addEvent('change', function(){
			$$('input.idservicio').each(function(el){
				if(el.checked)
					$('imptotalservicio').innerHTML = (($$('span.'+el.value).getText()) * $('cantidad').value )+' €';
			});
		});
	}
	if($defined($('adultos'))) // Añadida la comprobación porque ya no estará los servicios y habitaciones en la misma pantalla
	{
		$('adultos').addEvent('change', function(){
			if(($('adultos').value.toInt() + $('kids').value.toInt() + $('babys').value.toInt()) > $('max').getText().toInt())
			{
				alert(alerts[lang][0]);
				$('kids').value  = 0;
				$('babys').value = 0;
			}	
		});
		$('kids').addEvent('change', function(){
			if(($('adultos').value.toInt() + $('kids').value.toInt() + $('babys').value.toInt()) > $('max').getText().toInt())
			{
				alert(alerts[lang][0]);
				$('kids').value  = 0;
				$('babys').value = 0;
			}	
		});
		$('babys').addEvent('change', function(){
			if(($('adultos').value.toInt() + $('kids').value.toInt() + $('babys').value.toInt()) > $('max').getText().toInt())
			{
				alert(alerts[lang][0]);
				$('kids').value  = 0;
				$('babys').value = 0;
			}	
		});
	}
});

function newSigMes(mes)
{
	$$('p.sigmes').id = mes;
}
function fechaEuropea(fecha){
	var aFecha = fecha.split('-');
	return aFecha[2]+'/'+aFecha[1]+'/'+aFecha[0];
}

function prepararCalendario(){
	var alerts = new Array();
	alerts['es'] = new Array(
		'Selecne fecha de salida',
		'Seleccione fecha de entrada',
		'<b>Seleccione una fecha de salida superior a la fecha de entrada</b>',
		'<b>Este día sólo se puede seleccionar como fecha de salida, seleccione primero una fecha de entrada</b>'
		);
	alerts['it'] = new Array(
		'Selecne fecha de salida',
		'Seleccione fecha de entrada',
		'<b>Seleccione una fecha de salida superior a la fecha de entrada</b>',
		'<b>Este día sólo se puede seleccionar como fecha de salida, seleccione primero una fecha de entrada</b>'
		);
	alerts['de'] = new Array(
        'Wählen Sie das Abreisedatum',
        'Wählen Sie das Anreisedatum',
        '<b>Das Anreisedatum muss vor dem Abreisedatum sein</b>',
		'<b>Este día sólo se puede seleccionar como fecha de salida, seleccione primero una fecha de entrada</b>'
        );
    alerts['en'] = new Array(
        'Select arrival date',
        'Select departure date',
        '<b>The arrival has to be before the departure</b>',
		'<b>Este día sólo se puede seleccionar como fecha de salida, seleccione primero una fecha de entrada</b>'
        );
	var lang = $('lang').value;
	$$('.disponible_xa_salida').each(function(el){
		el.addEvent('click', function(){
			var fecha1 = $('fecha1');
			var fecha2 = $('fecha2');
			// Si no hay fecha de entrada seleccionada...
			if( $defined(fecha1) && fecha1.value == ''){
				mensaje(alerts[lang][3], 'mensajes');
				return;
			}
			if( $defined(fecha1) && fecha1.value != ''){
				// ... si es mayor establecer fecha de salida (fecha 2)
				if( el.id > fecha1.value )
				{ 
					fecha2.value = el.id;
					$('infosalida').innerHTML = fechaEuropea(el.id);
					$$('td.seleccionado').each(function(e){
						e.removeClass('seleccionado');
					}); 
					seleccionarRango(fecha1.value, el.id);
					return;
				}
				// ... pero si es menor advertir de ello
				mensaje(alerts[lang][2], 'mensajes' );
			}
		});
	});
	$$('.disponible').each(function(el){
		el.addEvent('click', function(){
			var fecha1 = $('fecha1');
			var fecha2 = $('fecha2');
			//Si aún no hay valor para fecha de entrada (fecha1)
			if ( $defined(fecha1) && fecha1.value == ''  )
			{ 
				fecha1.value = el.id;
				$('infoentrada').innerHTML = fechaEuropea(el.id);
				mensaje(alerts[lang][0], 'mensajes');
				el.addClass('seleccionado'); 
				return; 
			}
			//Si hay valor para fecha de entrada y es igual a este, deseleccionar dicha fecha
			if ( $defined(fecha1) && fecha1.value == el.id ) 
			{ 
				fecha1.value = ''; 
				fecha2.value = '';
				$('infoentrada').innerHTML = '';
				$('infosalida').innerHTML= '';
				$$('td.seleccionado').each(function(e){
					e.removeClass('seleccionado');
				}); 
				mensaje(alerts[lang][1], 'mensajes');
				return; 
			}
			//Si hay valor para fecha de entrada y es distinto... 
			if ( $defined(fecha1) && fecha1.value != '' ) 
			{
				// ... si es mayor establecer fecha de salida (fecha 2)
				if( el.id > fecha1.value )
				{ 
					fecha2.value = el.id;
					$('infosalida').innerHTML = fechaEuropea(el.id);
					$$('td.seleccionado').each(function(e){
						e.removeClass('seleccionado');
					}); 
					seleccionarRango(fecha1.value, el.id);
					return;
				}
				// ... pero si es menor advertir de ello
				mensaje(alerts[lang][2], 'mensajes' );
			} 
			//if ( fecha2.value == el.id ){ fecha2.value = '' }
			
		});
	});
	if ($defined($('fecha1')) && $('fecha1').value=="" )
	{
		mensaje(alerts[lang][1], 'mensajes');
	}
	else
	{
		mensaje(alerts[lang][0], 'mensajes');
	}
	if ( $defined($('fecha1')) && $('fecha1').value!="")
	{
		var tdf1 = $('fecha1').value;
		if( $defined($(tdf1)) )
		{
			if($(tdf1).hasClass('disponible')) $(tdf1).addClass('seleccionado');
		}
		var tdf2 = $('fecha2').value;
		if( $(tdf2) != "" )
		{
			seleccionarRango(tdf1, tdf2);
		}
	}
	
	$$('.sigmes').each(function(el){
		el.addEvent('click', function(ev){
			new Event(ev).stop();
			$$('span.cargando').setStyle('display','inline');
			new Ajax(
				el.href,
				{
				update: $('calendario'),
				evalScripts: true
				} 
			).request();
		});
	});
}
function seleccionarRango(inicio, fin)
{
	var alerts	=	new Array ();
	alerts['es'] = new Array (
		'La fecha de inicio seleccionada no se encuentra en la vista actual, vuelva a intentarlo',
		'No pueden existir días sin disponibilidad en una reserva. Si desea reservar  el resto de día realice dos reservas',
		'Pulse sobre añadir habitación.'
		);
	alerts['it'] = new Array (
		'La fecha de inicio seleccionada no se encuentra en la vista actual, vuelva a intentarlo',
		'No pueden existir días sin disponibilidad en una reserva. Si desea reservar  el resto de día realice dos reservas',
		'Pulse sobre añadir habitación.'
		);
	alerts['de'] = new Array (
        'Das ausgewählte Anfangsdatum befindet sich nicht in der aktuellen Ansicht, bitte wiederholen Sie den Vorgang',
        'Es dürfen keine nicht-verfügbaren Tage in einer Reservierung vorkommen. Nehmen Sie bitte zwei Reservierungen vor, wenn Sie für den übrigen Zeitraum auch reservieren wollen',
        'Klicken Sie auf Zimmer hinzufügen'
        );
    alerts['en'] = new Array (
        'The selected starting date is not in the current view, please retry the procedure',
        'There may not be unavailable days in the reservation. If you want to book the remaining days, please realise two reservations',
        'Click on add room'
        );
	var lang 	= $('lang').value;
	var ainicio =	inicio.split('-');
	var afin 	=	fin.split('-');
	var finicio =	new Date (ainicio[0], ainicio[1]-1, ainicio[2]);
	var ffin	= 	new Date (afin[0], afin[1]-1, afin[2]);
	var minicio	= 	finicio.getTime();
	var mfin	= 	ffin.getTime();
	for (actual=finicio; actual<=ffin; actual.setDate(actual.getDate()+1))
	{
		var dia 	= 	''+actual.getDate();
		var mes 	= 	''+(actual.getMonth()+1);
		var year 	= 	''+actual.getFullYear();
		var fecha 	= 	year+'-'+((mes.length==1)?'0':'')+mes+'-'+((dia.length==1)?'0':'')+dia;
		
		if(!$defined($(fecha)) )
		{
			limpiarSeleccion();
			mensaje(alerts[lang][0], 'mensajes');
			return;
		}
		if($(fecha).hasClass('nodisponible'))
		{
			limpiarSeleccion();
			mensaje(alerts[lang][1], 'mensajes'); 
			return; 
		};
		if($(fecha).hasClass('disponible')) $(fecha).addClass('seleccionado');
		
	}
	mensaje(alerts[lang][2], 'mensajes');
	
}
function limpiarSeleccion()
{
	$$('td.seleccionado').each(function(e){
		e.removeClass('seleccionado');
	});
	$('fecha1').value = '';
	$('fecha2').value = '';
	 
}
function mensaje(msg, capadestino){
	if($defined($(capadestino)))
	{
		$(capadestino).innerHTML = msg;
	}
}