$(function() {
	calendars = new Array();
	onloadCharge();
	var nbDatePicker = 1;
	var toDay = new Date();
	var tomorrow = new Date(toDay.getFullYear(), toDay.getMonth(), toDay.getDate() + 1);
	
	for (var k = 1; k <= nbDatePicker; k++) {
		populateDays(toDay.getMonth(), toDay.getFullYear(), tomorrow.getMonth(), tomorrow.getFullYear(), k);
		
		$('#fromDate_day'+k).val(toDay.getDate());
		$('#toDate_day'+k).val(tomorrow.getDate());
	
		var fromMonth = $('#fromDate_month'+k).get(0);
		var toMonth = $('#toDate_month'+k).get(0);
		for (i = 0; i < 13; i++) {
			currentDate = new Date(toDay.getFullYear(), toDay.getMonth() + i, toDay.getDate());
			fromMonth.options[fromMonth.options.length] = new Option($.datepicker.formatDate("M. y", currentDate),$.datepicker.formatDate("mm/yy", currentDate));
			toMonth.options[toMonth.options.length] = new Option($.datepicker.formatDate("M. y", currentDate),$.datepicker.formatDate("mm/yy", currentDate));
		}
	
		$('#fromDate_month'+k).val($.datepicker.formatDate("mm/yy", toDay));
		$('#toDate_month'+k).val($.datepicker.formatDate("mm/yy", tomorrow));
	
		$('#fromDate'+k).datepicker({
			beforeShow: customRange,
			onSelect: updateCalendarDates,
			onClose: closeCalendar
		});
		
		$('#toDate'+k).datepicker({
			beforeShow: customRange,
			onSelect: updateCalendarDates,
			onClose: closeCalendar
		});
	
		$("#fromDate"+k).datepicker("setDate", toDay);
		$("#toDate"+k).datepicker("setDate", tomorrow);
		
		$("#fromDateImage"+k).click(function() {hideShowDP(cleanId(this.id));});
		$("#toDateImage"+k).click(function() {hideShowDP(cleanId(this.id));});
		
		var dayFrom = document.getElementById('fromDay'+k);
		dayFrom.innerHTML = $.datepicker.formatDate('D', toDay);
		
		var dayTo = document.getElementById('toDay'+k);
		dayTo.innerHTML = $.datepicker.formatDate('D', tomorrow);
	}
});

function cleanId(id){
	var sortie =  id.replace(/Image/g, "");
	sortie =  sortie.replace(/_day/g, "");
	sortie =  sortie.replace(/_month/g, "");
	sortie = '#' + sortie;
	return sortie;
}

function getIdNumber(id){
	var sortie =  id.replace(/Image/g, "");
	sortie =  sortie.replace(/fromDate/g, "");
	sortie =  sortie.replace(/toDate/g, "");
	sortie =  sortie.replace(/_day/g, "");
	sortie =  sortie.replace(/_month/g, "");
	return sortie;
}

function hideShowDP(selector){
	if(calendars[selector]== 1)
	{
		clearTimeout();
		calendars[selector] = 0;
		$(selector).datepicker("hide");
	}
	else
	{
		calendars[selector] = 1;
		$(selector).datepicker("show");
	}
}

function closeCalendar(input){
	var calendar = '#'+this.id;
	setTimeout(function() {hideCalendar(calendar)}, 1000);
}

function hideCalendar(calendarId){
	calendars[calendarId] = 0;
}

function customRange(input) {
	var idNumber = getIdNumber(input.id);
	var min = new Date();
	var dateMin = min;
	var max = new Date(dateMin.getFullYear() + 1, dateMin.getMonth(), dateMin.getDate());
	var dateMax = max;
	var dayRange = 30;  // Set this to the range of days you want to restrict to
	
	if ((input.id == "fromDate1") || (input.id == "fromDate2"))
	{
		dateMin = min;
		dateMax = max;               
	}
	else if ((input.id == "toDate1") || (input.id == "toDate2"))
	{
		var dateFrom = $("#fromDate" + idNumber).datepicker("getDate");
		if (dateFrom != null)
		{
			dateMin = new Date(dateFrom.getFullYear(), dateFrom.getMonth(), dateFrom.getDate() + 1);
			var rangeMax = new Date(dateMin.getFullYear(), dateMin.getMonth(), dateMin.getDate() + dayRange);
			dateMax = rangeMax;
			if(rangeMax > max)
			{
				dateMax = max;
			}
		}
	}
	return { minDate: dateMin, maxDate: dateMax };
}

function updateCalendarDates(idNumber) {
	if(this.id){
		var CurrentNumber = getIdNumber(this.id);
		if (CurrentNumber != idNumber) {
			idNumber = CurrentNumber;
		}
	}

	validateDates($("#fromDate" + idNumber).datepicker("getDate"), $("#toDate" + idNumber).datepicker("getDate"),idNumber);
	
	populateDays($("#fromDate" + idNumber).datepicker("getDate").getMonth(), $("#fromDate" + idNumber).datepicker("getDate").getFullYear(),
			$("#toDate" + idNumber).datepicker("getDate").getMonth(), $("#toDate" + idNumber).datepicker("getDate").getFullYear(), idNumber);
	
	$('#fromDate_day' + idNumber).val($("#fromDate" + idNumber).datepicker("getDate").getDate());
	$('#toDate_day' + idNumber).val($("#toDate" + idNumber).datepicker("getDate").getDate());
	
	$('#fromDate_month' + idNumber).val($.datepicker.formatDate("mm/yy", $("#fromDate" + idNumber).datepicker("getDate")));
	$('#toDate_month' + idNumber).val($.datepicker.formatDate("mm/yy", $("#toDate" + idNumber).datepicker("getDate")));
	
	var dayfrom = document.getElementById('fromDay' + idNumber) ;
	dayfrom.innerHTML = $.datepicker.formatDate('D', $("#fromDate" + idNumber).datepicker("getDate"));
	
	var dayTo = document.getElementById('toDay' + idNumber) ;
	dayTo.innerHTML = $.datepicker.formatDate('D', $("#toDate" + idNumber).datepicker("getDate"));
	
	// Pour gerer correctement l'affichage/masquage du calendrier lors du clic sur l'icone

}

function updateDates(idNumber){
	$('#fromDate' + idNumber).val($('#fromDate_day' + idNumber).val() + '/' + $('#fromDate_month' + idNumber).val());
	$('#toDate' + idNumber).val($('#toDate_day' + idNumber).val() + '/' + $('#toDate_month' + idNumber).val());
	
	updateCalendarDates(idNumber);
}

function validateDates(date1, date2, idNumber){
	var nextDate = date2;
	if (date1 > date2) {
		nextDate = new Date(date1.getFullYear(), date1.getMonth(), date1.getDate() + 1);
	}
	
	var dateFromMax = new Date(date1.getFullYear(), date1.getMonth(), date1.getDate() + 31);
	if (date2 > dateFromMax) {
		nextDate = new Date(date1.getFullYear(), date1.getMonth(), date1.getDate() + 30);
	}
	$('#toDate'+idNumber).val($.datepicker.formatDate("dd/mm/yy",nextDate));
}

function populateDays(fromMonth, fromYear, toMonth, toYear, idNumber){	
	// Calcul le nombre de jour dans chaque mois
	var ListeMois = new Array(31,28,31,30,31,30,31,31,30,31,30,31);
	
	var fromNbDays = ListeMois[fromMonth];
	var toNbDays = ListeMois[toMonth];
	
	if (fromYear %400 == 0 && fromMonth == 2) {fromNbDays = 29 };
	if (toYear %400 == 0 && toMonth == 2) {toNbDays = 29 };
	
	var fromDay = $('#fromDate_day'+idNumber).get(0);
	var toDay = $('#toDate_day'+idNumber).get(0);
	
	// Supprimer les elements precedents du select
	fromDay.length = 0;
	toDay.length = 0;
	
	for (i = 1; i <= fromNbDays; i++) {
		fromDay.options[fromDay.options.length] = new Option(i,i);
	}
	
	for (j = 1; j <= toNbDays; j++) {
		toDay.options[toDay.options.length] = new Option(j,j);
	}
}

function deeplink(idNumber){
	var finalDeepLink= "http://www.booking.com/hotel/ae/burj-al-arab.html?aid=332544";
	dateFrom=$("#fromDate"+idNumber).datepicker("getDate");
	dateTo=$("#toDate"+idNumber).datepicker("getDate");
	
	finalDeepLink+='&checkin_monthday='+$.datepicker.formatDate("dd",dateFrom);
	finalDeepLink+='&checkin_year_month='+$.datepicker.formatDate("yy-m",dateFrom);
	finalDeepLink+='&checkout_monthday='+$.datepicker.formatDate("dd",dateTo);
	finalDeepLink+='&checkout_year_month='+$.datepicker.formatDate("yy-m",dateTo);
	finalDeepLink+='&label=Burj-FR';
	finalDeepLink += '#availability_target';
	
	window.open(finalDeepLink);
}

function fade(eid)
{
  var element = document.getElementById(eid);
  if(element == null)
    return;
    
  if(element.FadeState == null)
  {
    if(element.style.opacity == null || element.style.opacity == '' 
       || element.style.opacity == '1')
      element.FadeState = 2;
    else
      element.FadeState = -2;
  }
    
  if(element.FadeState == 1 || element.FadeState == -1)
  {
    element.FadeState = element.FadeState == 1 ? -1 : 1;
    element.FadeTimeLeft = TimeToFade - element.FadeTimeLeft;
  }
  else
  {
    element.FadeState = element.FadeState == 2 ? -1 : 1;
    element.FadeTimeLeft = TimeToFade;
    setTimeout("animateFade(" + new Date().getTime() + ",'" + eid + "')", 33);
  }  
}

function animateFade(lastTick, eid)
{  
  var curTick = new Date().getTime();
  var elapsedTicks = curTick - lastTick;
  
  var element = document.getElementById(eid);
 
  if(element.FadeTimeLeft <= elapsedTicks)
  {
    element.style.opacity = element.FadeState == 1 ? '1' : '0';
    element.style.filter = 'alpha(opacity = ' + (element.FadeState == 1 ? '100' : '0') + ')';
    element.FadeState = element.FadeState == 1 ? 2 : -2;
    return;
  }
 
  element.FadeTimeLeft -= elapsedTicks;
  var newOpVal = element.FadeTimeLeft/TimeToFade;
  if(element.FadeState == 1)
    newOpVal = 1 - newOpVal;

  element.style.opacity = newOpVal;
  element.style.filter = 'alpha(opacity = ' + (newOpVal*99.99) + ')';
  
  setTimeout("animateFade(" + curTick + ",'" + eid + "')", 33);
}

function activatenav(navid) {
	clearTimeout(timer);

	fade('img'+currentnav);
	var waitingTime = TimeToFade - 300;
	setTimeout("hideShowdiv(" + currentnav + ",'" + navid + "')", waitingTime);
	
	currentnav = navid;
	timer = setTimeout("nextnav()", TimeToChange);
}

function hideShowdiv(oldid, newid) {
	var olddiv = document.getElementById('img'+oldid);
	var newdiv = document.getElementById('img'+newid);
	var oldli = document.getElementById('lien'+oldid);
	var newli = document.getElementById('lien'+newid);

	olddiv.setAttribute('style', 'display: none');
	oldli.setAttribute('class', '');
	newdiv.setAttribute('style', 'filter:alpha(opacity=0); opacity:0; display: block;');
	newli.setAttribute('class', 'acnav');
	fade('img'+newid);
}

function hnav() { 
    var nav = document.getElementById('sliderNav') ; 
    // On r�cup�re l'�l�ment ayant pour id galerie_mini
    if(nav){
	    var liens = nav.getElementsByTagName('a') ; 
	    // On r�cup�re dans une variable tous les liens contenu dans galerie_mini
		
	    // Une boucle parcourant l'ensemble des liens contenu dans galerie_mini 
	    for (var i = 0 ; i < liens.length  ; ++i) {
	        // Au clique sur ces liens
	        liens[i].onclick = function() {
				activatenav(this.innerHTML);
	            return false; // Et pour finir on inhibe l'action r�elle du lien 
			    }; 	
			// Cacher les blocks inactifs pour ensuite faire fonctionner le fadein/fadeout
				if (i != 0) {
					descdivid = i + 1;
					var descdiv = document.getElementById('img'+descdivid);
					descdiv.FadeState = -2;
				}
	    }
    }
}

function nextnav() {
	var newactive;
	if(currentnav < nbImage)
		newactive = parseInt(currentnav) + 1;
	else
		newactive = 1;
	activatenav(newactive);
}

function onloadCharge() {
	currentnav = 1;
	TimeToFade = 600;
	TimeToChange = 10000;
	hnav();
	timer = setTimeout("nextnav()", TimeToChange);
	nbImage = $("#sliderNav > *").length;
}

