var _lastId = null;
var _lastArray = null;
/*
var selDep = document.createElement("select");
selDep.options[0] = new Option("Agadir", "AGA");
selDep.value = "AGA";

var selArr = document.createElement("select");
selArr.options[0] = new Option("Bodrum", "BOD");
selArr.value = "BOD";
*/

var _selectDeparture = 'date_d';
var _selectArrival = 'date_a';


function GetDateArrayById(globalDates, departureValue, destinationValue) {
   
    var id = departureValue  + destinationValue;
        
	if (id == _lastId) 
	{
	    return _lastArray;
	}
    
	_lastId = id;

    
	var lArray = globalDates.length;
    for (var i = 0; i < lArray; i++) {
		var strId = globalDates[i][0];
        
		if (strId == id) {
		    
		
			var curArray = globalDates[i];
			var lCurArray = curArray.length;
			_lastArray = [];
			for (var j = 1; j < lCurArray; j++) { _lastArray.push(curArray[j]); }
			return _lastArray;
		}
	}
}

/*
    GetNearestDate returns the first date equal or greater than referencedate
    in the 'dates' string
    dates is a string returned by GetDateArrayById
*/
function GetNearestDate(dates, referenceDate)
{
    var day   = parseInt(referenceDate.substring(0,2),10);
    var month = parseInt(referenceDate.substring(3,5),10);
    var year  = parseInt(referenceDate.substring(6,10),10);
    var reference = new Date(year,month-1,day);
    //alert(reference);
  
    if(dates)
    {   
        for(i = 0; i < dates.length; i++)
        {
            var dateline = dates[i];
            var segments = dateline.toString().split(',');
            var yearmonth = segments[0];
            var year = parseInt(yearmonth.substring(0,4),10);
            var month = parseInt(yearmonth.substring(4,6),10);
            for(j = 1; j < segments.length; j++)
            {
                var day = parseInt(dateline[j],10);
                var dateToCompare = new Date(year,month-1,day);    
                var diff = dateToCompare - reference;
                if(diff >= 0)
                {
                    var reqYear = dateToCompare.getFullYear();
	                var reqMonth = dateToCompare.getMonth() + 1;
	                if(reqMonth < 10)
	                    reqMonth = '0' + reqMonth;
	                var reqDay = dateToCompare.getDate();
	                if(reqDay < 10)
	                    reqDay = '0' + reqDay;
	                var returnDate = reqDay + '/' + reqMonth + '/' + reqYear;
	                return returnDate;                    
                }   
            }       
        }
    }  
    else    
        return ''; 
}

function GetLastDate(dateArray)
{
    var dateline = dateArray[dateArray.length-1];
    var segments = dateline.toString().split(',');
    var yearmonth = segments[0];
    var year = parseInt(yearmonth.substring(0,4),10);
    var month = parseInt(yearmonth.substring(4,6),10);
    var day = segments[segments.length - 1 ];
    if(day < 10)
        day = '0' + day;
    return day + '/' + month + '/' + year;
}

function GetFirstAvailableDate(dates)
{
    if(dates)
    {
        var segments = dates.toString().split(",");
        if(segments)
        {
            var day = segments[1];
            if(parseInt(day,10) < 10)
                day = '0'+day;
            var yearmonth = segments[0];
            var year = yearmonth.substring(0,4);
            var month = yearmonth.substring(4,6);
            returnDate = day + '/' + month + '/' + year;
            return returnDate;
        }
    }   
}

function IsDateAvailable(date, dateArray) {
    
	var reqYear = date.getFullYear();
	var reqMonth = date.getMonth() + 1;
	var reqDay = date.getDate();
	
	if ((reqMonth + "").length == 1) reqMonth = "0" + reqMonth + "";
	
	var reqDateString = reqYear + "" + reqMonth;
	
	if(dateArray)
        var lDateArray = dateArray.length;

	for (var i = 0; i < lDateArray; i++) {
		var curDateArray = dateArray[i];
		var curDateString = curDateArray[0];

		if (curDateString == reqDateString) {
            
			var lengthCurDateArray = curDateArray.length;
			for (var j = 1; j < lengthCurDateArray; j++) {
				var curAvailDate = curDateArray[j];
				if (curAvailDate == reqDay) { return true; }
			}
		}
	}

	return true;
}


function RenderCallback(thisDate) {
		
	var year = thisDate.getFullYear();
	var month  = thisDate.getMonth() + 1;
	
	var tmpDate = new Date();
	var curDate = new Date(tmpDate.getFullYear(), tmpDate.getMonth(), tmpDate.getDate());
	var nextMonthDate = new Date(tmpDate.getFullYear(), tmpDate.getMonth() + 1, tmpDate.getDate());
		
	if (thisDate < curDate) {
		return [0, "notSelectable"];
	}
	else {
	    var axe = document.getElementById(_selectDeparture).value+document.getElementById(_selectArrival).value;
	    
	    if(typeof( window[ 'OpenAxes' ] ) != "undefined")
	    {
	        if(OpenAxes.indexOf(axe) > -1)
	            return [1, ""];
	    }
	        
/*	    var isAvail = IsDateAvailable(thisDate, GetDateArrayById(document.getElementById(_selectDeparture).value, document.getElementById(_selectArrival).value));
	    
		if (isAvail) return [1, ""];
		else return [0, "notSelectable"];*/
	}

	return [1, ""];

}

function RenderCallbackReturn(thisDate) {
		
    
	var year = thisDate.getFullYear();
	var month  = thisDate.getMonth() + 1;
	
	var tmpDate = new Date();
	var curDate = new Date(tmpDate.getFullYear(), tmpDate.getMonth(), tmpDate.getDate());
	var nextMonthDate = new Date(tmpDate.getFullYear(), tmpDate.getMonth() + 1, tmpDate.getDate());
		
	if (thisDate < curDate) {
		return [0, "notSelectable"];
	}
	else {
	    
	  /*  var isAvail = IsDateAvailable(thisDate, GetDateArrayById(document.getElementById(_selectArrival).value, document.getElementById(_selectDeparture).value));
	    
		if (isAvail) return [1, ""];
		else return [0, "notSelectable"];*/
	}
	return [1, ""];
}



jQuery(function($){
	
	// pour la homepage--------------------------------------------------------
	// paramétrage de l'icône calendrier
	
	$.datepicker.setDefaults({showOn: 'both', buttonImageOnly: true, buttonImage: 'img/calendar.png', buttonText: 'Calendrier'});
	
	// option régional français (voir ui.datepicker-fr.js)
	if (typeof(window["_clientID_FlightDepartureDate"]) != "undefined") {
		$('#' + _clientID_FlightDepartureDate).attachDatepicker($.datepicker.regional['fr']); 
		$('#' + _clientID_FlightDepartureDate).changeDatepicker({dateFormat: 'dd/mm/yy', firstDay: 1, beforeShowDay: RenderCallback});
	}
	// format de date
	if (typeof(window["_clientID_FlightBackDate"]) != "undefined") {
		$('#' + _clientID_FlightBackDate).attachDatepicker($.datepicker.regional['fr']); 
		$('#' + _clientID_FlightBackDate).changeDatepicker({dateFormat: 'dd/mm/yy', firstDay: 1, beforeShowDay: RenderCallbackReturn});
	}
		
	if (typeof(window["_clientID_pageControl_DynamicDepartureDate"]) != "undefined") {
		$('#' + _clientID_pageControl_DynamicDepartureDate).attachDatepicker($.datepicker.regional['fr']); 
		$('#' + _clientID_pageControl_DynamicDepartureDate).changeDatepicker({dateFormat: 'dd/mm/yy', firstDay: 1, beforeShowDay: RenderCallback});
	}
	
	if (typeof(window["_clientID_pageControl_DynamicBackDate"]) != "undefined") {
		$('#' + _clientID_pageControl_DynamicBackDate).attachDatepicker($.datepicker.regional['fr']);
		$('#' + _clientID_pageControl_DynamicBackDate).changeDatepicker({dateFormat: 'dd/mm/yy', firstDay: 1, beforeShowDay: RenderCallbackReturn});
	}
	
	
	// Mod : Kemal
	// Panel de recherche à droite (résultats-vols)
	$('#date_d').attachDatepicker($.datepicker.regional['fr']);
	$('#date_d').changeDatepicker({dateFormat: 'dd/mm/yy', firstDay: 1, beforeShowDay: RenderCallback});
	$('#date_a').attachDatepicker($.datepicker.regional['fr']);
	$('#date_a').changeDatepicker({dateFormat: 'dd/mm/yy', firstDay: 1, beforeShowDay: RenderCallbackReturn}); 

	
	// pour la page des cotations----------------------------------------------
	/*
	 $('#calendar').attachDatepicker({ firstDay: 1,
	    onSelect: function(date) { 
	        alert(date); 
	    } 
	});
	*/
	
	$('#calendar').attachDatepicker({ firstDay: 1}); // firstDay pour démarrer à Lundi
	
	// Demonstrate the callback on select 
	function alertDate(date) { 
	    alert('The date is ' + date); 
	} 
	
	// si on utilise le plugin bettertip ---------------------
	/*
	$('td.datepicker_daysCell a').mouseover(function(){
		var ajaxLink = $(this).attr('href');
		$(this).attr('href', ajaxLink == 'testAJAX.txt?width=250' ? '' : 'testAJAX.txt?width=250').end();
		$('td.datepicker_daysCell a').addClass('betterTip');
	})
	.mouseover(function(){
		$(this).removeClass('betterTip');
	});
	*/
	/*
	$('td.datepicker_daysCell a').mouseover(function(){
		$('td.datepicker_daysCell a').addClass('betterTip');
		$(this).attr({ 
	          href: "testAJAX.txt?width=250",
	          title: "$none",
	          id: "idlink"
	        });
		//$('td.datepicker_daysCell a').addClass('betterTip');
	})
	.mouseover(function(){
		$(this).removeClass('betterTip');
	});
	*/
	
	
	
	// si on utilise le plugin cluetip ---------------------
	// documentation : http://plugins.learningjquery.com/
	/*$('td.datepicker_daysCell a').mouseover(function(){
		
		$('td.datepicker_daysCell a').addClass('cluetip');
		$(this).attr({ 
		    href: "testAJAX.txt",
		    rel: "testAJAX.txt"
	    });
		
		
		$('a.cluetip').cluetip({
			cluetipClass: 'complet', 
			dropShadow: false, 
			sticky: false, 
			ajaxCache: false, 
			arrows: false
		});		
		
	});*/

	/*$('td.datepicker_daysCell a').click(function(){
		//var DateValue = $(this).text();
		//alert('The date is ' + DateValue); 
		alert('The date is ' + date); return false;
	});*/
	
	
});
