function validateBedroomBookingForm(nbmin, nbmax, mindays, alertmin, alertmax, alertdates, alertminday, alertemail) 
{

	var start = $('Booking_start').value;
	var end = $('Booking_end').value;

	// Remplissage automatique de end - possibilité de ne prendre qu'une journée
	if (end == '' )
	{
		$('Booking_end').value = start;
		end = $('Booking_end').value;
	}

	if ( start=='' || end=='' ) 
	{	
		alert(alertdates);
		return false;
	}
	
	var total = parseInt($('Adult').value) +  parseInt($('Child').value);
	
	var nbdays = Math.round((parseInt(end) - parseInt(start))/(60*60*24)+1);
	
	if (nbdays < mindays) 
	{	
		alert(alertminday);
		return false;
	}
	if (total < nbmin) 
	{	
		alert(alertmin);
		return false;
	}
	if (total > nbmax) 
	{	
		alert(alertmax);
		return false;
	}
	// Si formulaire en mode sur demande et Email par rempli
	if ( ($('msg-button').getStyle('display') == 'block') && ($('Email').value == '') ) 
	{	
		alert(alertemail);
		return false;
	}
	
	return true;
}

function validateFlatBookingForm(nbmin, nbmax, mindays, alertmin, alertmax, alertdates, alertminday, alertemail) 
{

	var start = $('Booking_start').value;
	var end = $('Booking_end').value;

	// Remplissage automatique de end - possibilité de ne prendre qu'une journée
	if (end == '' )
	{
		$('Booking_end').value = start;
		end = $('Booking_end').value;
	}

	if ( start=='' || end=='' ) 
	{	
		alert(alertdates);
		return false;
	}
	
	var total = parseInt($('Adult').value);
	
	var nbdays = Math.round((parseInt(end) - parseInt(start))/(60*60*24)+1);
	
	if (nbdays < mindays) 
	{	
		alert(alertminday);
		return false;
	}
	if (total < nbmin) 
	{	
		alert(alertmin);
		return false;
	}
	if (total > nbmax) 
	{	
		alert(alertmax);
		return false;
	}
	// Si formulaire en mode sur demande et Email par rempli
	if ($('msg-button').getStyle('display') == 'block' && $('Email').value == '') 
	{	
		alert(alertemail);
		return false;
	}
	
	return true;
}

function validateDinerBookingForm(nbmin, nbmax, alertmin, alertmax, alertdate) 
{
	
	var date = $('Date').value;

	if ( date=='') 
	{	
		alert(alertdate);
		return false;
	}
	
	var total = parseInt($('Adult').value) +  parseInt($('Child').value);
	
	if (total < nbmin) 
	{	
		alert(alertmin);
		return false;
	}
	if (total > nbmax) 
	{	
		alert(alertmax);
		return false;
	}
	
	return true;
}


function validateVisiteBookingForm(alertdepart) 
{
	
	var depart = $('Depart').value;

	if ( depart=='' ) 
	{	
		alert(alertdepart);
		return false;
	}
	
	return true;
}

function updateContactLightBox(id)
{
	$('BookingLBContent').innerHTML = $('upload_obj_container').innerHTML;
	var d = new Date();
			
	new Ajax.Updater(
			'BookingLBContent',
			'ajax/contact.php',
			{
				method: 'get',
				parameters: {ID: id, time:d.getTime()},
				evalScripts : true
			}
		);	
}

function updateBookingBedroomLightBox(id)
{
	$('BookingLBContent').innerHTML = $('upload_obj_container').innerHTML;
			
	STATUS_DAYS = new Array();
	SELECTED_DAYS = new Array();
	START_DAY = '';
	END_DAY = '';
	swithdate = '';		
	var d = new Date();
			
	new Ajax.Updater(
			'BookingLBContent',
			'ajax/booking_bedroom.php',
			{
				method: 'get',
				parameters: {ID: id, time:d.getTime()},
				evalScripts : true
			}
		);		
}

function updateBookingFlatLightBox(id)
{
	$('BookingLBContent').innerHTML = $('upload_obj_container').innerHTML;
			
	STATUS_DAYS = new Array();
	SELECTED_DAYS = new Array();
	START_DAY = '';
	END_DAY = '';
	swithdate = '';		
	var d = new Date();
			
	new Ajax.Updater(
			'BookingLBContent',
			'ajax/booking_flat.php',
			{
				method: 'get',
				parameters: {ID: id, time:d.getTime()},
				evalScripts : true
			}
		);		
}

function updateBookingVisiteLightBox(id)
{
	$('BookingLBContent').innerHTML = $('upload_obj_container').innerHTML;
	var d = new Date();
			
	new Ajax.Updater(
			'BookingLBContent',
			'ajax/booking_visite.php',
			{
				method: 'get',
				parameters: {ID: id, time:d.getTime()},
				evalScripts : true
			}
		);		
}

function updateBookingDinerLightBox(id)
{
	$('BookingLBContent').innerHTML = $('upload_obj_container').innerHTML;
	var d = new Date();
			
	new Ajax.Updater(
			'BookingLBContent',
			'ajax/booking_diner.php',
			{
				method: 'get',
				parameters: {ID: id, time:d.getTime()},
				evalScripts : true
			}
		);		
}

function updateBookingVisiteDateLightBox(nbmin, nbmax, alertmin, alertmax)
{
	var d = new Date();
	var total = parseInt($('Adult').value) +  parseInt($('Child').value);
	
	if (total < nbmin) 
	{	
		alert(alertmin);
		$('Booking_visite_date').innerHTML = '';
		return false;
	}
	
	if (total > nbmax) 
	{	
		alert(alertmax);
		$('Booking_visite_date').innerHTML = '';
		return false;
	}

	var id = $('ID').value;
	
	$('Booking_visite_date').innerHTML = $('upload_obj_container').innerHTML;
				
	STATUS_DAYS = new Array();
	SELECTED_DAYS = new Array();
	START_DAY = '';
	END_DAY = '';
	
	new Ajax.Updater(
			'Booking_visite_date',
			'ajax/booking_visite_date.php',
			{
				method: 'get',
				parameters: {ID: id, Num:total, time:d.getTime()},
				evalScripts : true
			}
		);
	
}


function updateBookingVisiteDepartsLightBox()
{
	var d = new Date();
	var date = $('Date').value;
	var id = $('ID').value;
	var total = parseInt($('Adult').value) +  parseInt($('Child').value);
	
	$('Booking_visite_departs').innerHTML = $('upload_obj_container').innerHTML;

	new Ajax.Updater(
			'Booking_visite_departs',
			'ajax/booking_visite_departs.php',
			{
				method: 'get',
				parameters: {ID: id, Date: date, Num: total, time:d.getTime()},
				evalScripts : true
			}
		);		
}

var today_date = new Date();

// Fonction d'initiliaze du calendrier des périodes
function initPeriodCalendar(msg)
{
	// Reinitiliazation à la selection du début de la période
    swithdate = 0;
	// Recharge des jours du calendrier de la chambre
		
	// Si la réservation est lié un produit du catalogue 
	// On va cherche son calendrier de disponibilité
	
	// Réinitialisation du calendrier start
	// Range 	: 2008 à 2010
	// FirstDay : lundi
	// onClose	: important ! réinitilize tout les id du calendrier
	// onSelect	: les events
	// dateStatusFunc : permet de charger les CSS => calendrier des dispo et les dates selectionnés

	no_booking_msg = msg;

	Calendar.setup(
    {
		flat        	: 	"display_booking", 				// ID of the parent element
		flatCallback 	: 	saveSelectCalendar, 
		singleClick   	:   true,
		range		   	: 	[today_date.getFullYear(),today_date.getFullYear()+2],
		cache		   	:	false,
		firstDay	   	:    1,
		weekNumbers		:	false,
		dateStatusFunc : 	function(date, y, m, d) {
							
								 var ret = dateStatus(y, m, d);
								 return ret;
							}
    }
  );
	
}

// Fonction d'initiliaze du calendrier des périodes
function initDisplayPeriodCalendar()
{
	// Recharge des jours du calendrier de la chambre
		
	// Si la réservation est lié un produit du catalogue 
	// On va cherche son calendrier de disponibilité
	
	// Réinitialisation du calendrier start
	// Range 	: 2008 à 2010
	// FirstDay : lundi
	// onClose	: important ! réinitilize tout les id du calendrier
	// onSelect	: les events
	// dateStatusFunc : permet de charger les CSS => calendrier des dispo et les dates selectionnés

	Calendar.setup(
    {
		flat        	: 	"display_booking", 				// ID of the parent element
		singleClick   	:   true,
		range		   	: 	[today_date.getFullYear(),today_date.getFullYear()+2],
		cache		   	:	false,
		firstDay	   	:    1,
		weekNumbers		:	false,
		dateStatusFunc : 	function(date, y, m, d) {
							
								 var ret = dateStatus(y, m, d);
								 return ret;
							}
    }
  );
	
}

// Fonction d'initiliaze du calendrier des périodes
function initCalendar()
{

	// Réinitialisation du calendrier start
	// Range 	: 2008 à 2010
	// FirstDay : lundi
	// dateStatusFunc : permet de charger les CSS => calendrier des dispo et les dates selectionnés

	Calendar.setup(
		{
		flat        	: 	"display_booking", 				// ID of the parent element
		flatCallback	: 	selectDate, 
		singleClick		:   true,
		range			: 	[today_date.getFullYear(),today_date.getFullYear()+2],
		cache			:	false,
		firstDate		:    1,
		weekNumbers		:	false,
		dateStatusFunc	: 	function(date, y, m, d) {
							
								 var ret = dateStatusVisite(y, m, d);
								 return ret;
							}
		}
	);
}

// Fonction d'initiliaze du calendrier des périodes
function initDinerCalendar()
{

	// Réinitialisation du calendrier start
	// Range 	: 2008 à 2010
	// FirstDay : lundi
	// dateStatusFunc : permet de charger les CSS => calendrier des dispo et les dates selectionnés

	Calendar.setup(
		{
		flat        	: 	"display_booking", 				// ID of the parent element
		flatCallback	: 	selectDate, 
		singleClick		:   true,
		range			: 	[today_date.getFullYear(),today_date.getFullYear()+2],
		cache			:	false,
		firstDate		:    1,
		weekNumbers		:	false,
		dateStatusFunc	: 	function(date, y, m, d) {
							
								 var ret = dateStatusDiner(y, m, d);
								 return ret;
							}
		}
	);
}

function selectDate(cal)
{
	var date = cal.date;
	var p = cal.params;

	if (cal.dateClicked)
	{
		// supprimer la selection de l'ancien start
		var list = $$('td.selectedstart');
		
		if ( list.length > 0 )
		{
			for ( var j = 0 ; j < list.length ; j++ )
			{
				Calendar.removeClass(list[j], "selectedstart");
			}
		}
		
		var elt_start = cal.activeDiv;
		Calendar.addClass(elt_start, "selectedstart");
		
		$('DateJs').value = date.getTime();
		$('Date').value = parseInt(date.getTime()/1000);
		//$('Preview').innerHTML = date.print("%d/%m/%Y");
		updateBookingVisiteDepartsLightBox();
		
	}
}

//	Fonction qui permet de sélectionner une période dans le calendrier
//  Deux clics pour deux dates, période entre le deux
function saveSelectCalendar(cal){

	var date = cal.date;

	// Si une date est cliqué
	if (cal.dateClicked)
	{
		
		// supprimer la selection de la période
		var listf = $$('td.focus');
		SELECTED_DAYS = new Array();
		
		if ( listf.length > 0 )
		{
			for ( var k = 0 ; k < listf.length ; k++ )
			{
				Calendar.removeClass(listf[k], "focus");
			}
		}
		
		// Date 1
		if (swithdate == 0)
		{
			$('Preview_start').innerHTML = date.print("%d-%m-%Y");
			$('Booking_startJs').value = date.getTime();
			$('Booking_start').value = parseInt(date.getTime()/1000);
		
			// Date de fin
			//var temp = parseInt($('Booking_startJs').value);
			//temp+= Date.DAY;
			//var tempdate = new Date(temp);
			
			$('Preview_end').innerHTML = '';
			$('Booking_endJs').value ='';
			$('Booking_end').value ='';
			swithdate = 1;
			
			// supprimer la selection de l'ancien start
			var list = $$('td.selectedstart');
			
			if ( list.length > 0 )
			{
				for ( var j = 0 ; j < list.length ; j++ )
				{
					Calendar.removeClass(list[j], "selectedstart");
				}
			}
			
			var elt_start = cal.activeDiv;
			Calendar.addClass(elt_start, "selectedstart");
			
			var month = parseFloat(date.print("%m"));
			var year = date.print("%Y");
			var day = parseFloat(date.print("%d"));
			
			START_DAY = year+'-'+month+'-'+day;
			
			// Si certains jour sont sur demande on ajoute un formulaire de mail et on envoie sur l'acction msg
			$('booking-button').setStyle({display:'none'});
			$('msg-infos').setStyle({display:'none'});
			$('msg-button').setStyle({display:'none'});
			$('action').value="msg";
			
		}
		// Date 2
		else
		{
			var temp_end = date.getTime();
			var temp_start = $('Booking_startJs').value;
			
			// Si date de fin avant de début
			// Il faut inverser les deux dates
			if (temp_end < temp_start )
			{
				// Preview 
				$('Preview_start').innerHTML = date.print("%d-%m-%Y");
				
				//var temp2 = parseInt(temp_start);
				var tempdate = new Date(parseInt(temp_start));
				
				$('Preview_end').innerHTML =  tempdate.print("%d-%m-%Y");
				
				// Dates
				temp_end = $('Booking_startJs').value;
				temp_start = date.getTime();
			}
			else
			{
				// Preview J+1
				//var temp2 = parseInt(temp_end);
				var tempdate = new Date(parseInt(temp_end));
				
				$('Preview_end').innerHTML = tempdate.print("%d-%m-%Y");
				
				
			}
			
			// Vérifie qu'il n'y est pas de date d'indispo dans le calendrier
			var current = parseInt(temp_start);
			
			var test = true;
			var test2 = true;
			
			while(current < (temp_end))
			{
				
				var currentDate = new Date(current);
				
				var month 	= parseFloat(currentDate.print("%m"));
				var year 	= parseFloat(currentDate.print("%Y"));
				var day 	= parseFloat(currentDate.print("%d"));
				
				// Si l annee existe dans la table
				//alert(year+'-'+month+'-'+day);
				//alert(STATUS_DAYS[year+'-'+month+'-'+day]);
				
				if (STATUS_DAYS[year+'-'+month+'-'+day] == 2 || STATUS_DAYS[year+'-'+month+'-'+day] == 3)
				{
					test = false;
				}
				else
				{
					var id = year+'-'+month+'-'+day;
					SELECTED_DAYS[id] = 1;
					
					if ($(id))
					{
						var elt = $(id);
						elt.addClassName("focus");	
					}
					
					if (STATUS_DAYS[year+'-'+month+'-'+day] != 1)
					{
						test2 = false;
					}
				}
				current+= Date.DAY;
			}

			if (test == false)
			{
				alert(no_booking_msg);
				
				$('Booking_start').value ='';
				//$('Preview_start').innerHTML = '';
				swithdate = 0;
			}
			else
			{
				// Dernière nuit réservée = jour de départ -1
				//var lastnightstamp = parseInt(temp_end);
				//lastnightstamp-=Date.DAY;
				var lastnight = new Date(temp_end-Date.DAY);
				
				// J-1
				var montha = parseFloat(lastnight.print("%m"));
				var yeara = lastnight.print("%Y");
				var daya = parseFloat(lastnight.print("%d"));
								
				if (test2 == false )
				{
					// Si certains jour sont sur demande on ajoute un formulaire de mail et on envoie sur l'acction msg
					$('booking-button').setStyle({display:'none'});
					$('msg-infos').setStyle({display:'block'});
					$('msg-button').setStyle({display:'block'});
					$('action').value="msg";
				}
				else
				{
					// Autrement booking classique
					$('msg-infos').setStyle({display:'none'});
					$('msg-button').setStyle({display:'none'});
					$('booking-button').setStyle({display:'block'});
					$('action').value="booking";
				}
				
				
				var elt_end = cal.activeDiv;
				Calendar.addClass(elt_end, "selectedstart");
				
				// Si date de fin avant de début
				// Il faut inverser les deux dates pour le formulaire
				if (date.getTime() < $('Booking_startJs').value )
				{
					$('Booking_end').value = parseInt(($('Booking_startJs').value-Date.DAY)/1000);
					$('Booking_endJs').value = lastnight.getTime();
					
					$('Booking_start').value = parseInt(date.getTime()/1000);
					$('Booking_startJs').value = date.getTime();
					
				}
				else
				{
					END_DAY = yeara+'-'+montha+'-'+daya;
					
					//$('Preview_end').innerHTML = date.print("%Y-%m-%d");
					$('Booking_end').value = parseInt(lastnight.getTime()/1000);
					$('Booking_endJs').value = lastnight.getTime();
				}
				swithdate = 0;
			}

		}
	}
}

function dateStatus(year, month, day) 
{

	var date =  year+'-'+(month+1)+'-'+day;
	var formatDate = new Date(year,month,day);
	var status_day = STATUS_DAYS[date];

	var select_day = SELECTED_DAYS[date];
	
	// Si c'est la date du début de la période selectionné
	/*if (START_DAY == date)
	{
		if (status_day) 
		{
			if (status_day == 1) 
				return 'green selectedstart';
			else
				return 'selectedstart';
		}
		else
		{
			return 'selectedstart';
		}
	}
	
	// Si c'est la date de din de la période selectionné
	if (END_DAY == date)
	{
		if (status_day) 
		{
			if (status_day == 1) 
				return 'green selectedstart';
			else
				return 'selectedstart';
		}
		else
		{
			return 'selectedstart';
		}
	}*/
	
	// si cette date fait partie de la période selectionné
	if (select_day)
	{
		if (status_day) 
		{
			if (status_day == 1) 
				return 'green focus';
			else
				return 'focus';
		}
		else
		{
			return 'focus';
		}
	}

	// Si dispo ou à la demande et date future
	if ( (status_day == 1 ) && formatDate.getTime() > today_date.getTime())
	{
		return 'dispo';
	}
	else if ( (!status_day) && formatDate.getTime() > today_date.getTime())
	{
		return false;
	}
	else if ( formatDate.getTime() > today_date.getTime())
	{
		return 'red';	
	}
	else
	{
		return true;	
	}
}
function dateStatusVisite(year, month, day) 
{

	var date =  year+'-'+(month+1)+'-'+day;
	var formatDate = new Date(year,month,day);
	var status_day = STATUS_DAYS[date];

	// Si indisponible
	if ( !status_day || status_day == 2 || formatDate.getTime() < today_date.getTime() ) return true;
	
	// Si disponible
	if (status_day == 1 && formatDate.getTime() > today_date.getTime()) 
		return 'dispo';
		//return 'red';
}

function dateStatusDiner(year, month, day) 
{

	var date =  year+'-'+(month+1)+'-'+day;
	var formatDate = new Date(year,month,day);
	
	// Jour d'exception pour les diners
	// 1 er janvier
	var jan1 =  new Date(year,0,1);
	// 24 décembre
	var dec24 =  new Date(year,11,24);
	// 31 décembre
	var dec31 =  new Date(year,11,31);


	if ( formatDate.getTime() < today_date.getTime() || jan1.getTime() == formatDate.getTime() || dec24.getTime() == formatDate.getTime() || dec31.getTime() == formatDate.getTime()  ) return true;
	else return 'dispo';

}
