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 = null;
var _selectArrival = null;
var _caller;

function SetCalendar(type)
{
    if(type == 'VolSec')
    {
        _selectDeparture = _clientID_FlightDepartureCity;
        _selectArrival   = _clientID_FlightArrivalCity;
    }
    else if(type == 'VolSecModify')
    {
        _selectDeparture = _clientID_VolSecModifyDeparture;
        _selectArrival = _clientID_VolSecModifyArrival;
    }
    else
    {
        _selectDeparture = _clientID_FlightDepartureCity;
        _selectArrival = _clientID_FlightArrivalCity;
    }
}

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 false;
}


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(dest, 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());
		
	var departureDate;
	if(pageType == "DYNAMICPACKAGE")
	    departureDate = StringToDate(document.getElementById(_clientID_DynamicDepartureDate).value);
	else
	    departureDate = StringToDate(document.getElementById(_clientID_FlightDepartureDate).value);
		
	if (thisDate < curDate) {
		return [0, "notSelectable"];
	}
	else if(departureDate > thisDate)
	{
	    return [0, "notSelectable"];
	}
	else {
	    
	    var axe = document.getElementById(_selectArrival).value+document.getElementById(_selectDeparture).value;
	    
	    if(typeof( window[ 'OpenAxes' ] ) != "undefined")
	    {
	        if(OpenAxes.indexOf(axe) > -1)
	            return [1, ""];
	    }
	    
	    var isAvail = IsDateAvailable(thisDate, GetDateArrayById(dest, 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: 'http://photos.marmara.com/DesignImages/buttons/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)
	$('#depart_date').attachDatepicker($.datepicker.regional['fr']);
	$('#depart_date').changeDatepicker({dateFormat: 'dd/mm/yy', firstDay: 1, beforeShowDay: RenderCallback});
	$('#arrivee_date').attachDatepicker($.datepicker.regional['fr']);
	$('#arrivee_date').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;
	});*/
	
	
});

function SetBackDate(departureCityId,destinationCityId,departureDateId, backDateId)
{
    var departureCityCode = document.getElementById(departureCityId).value;
    var destinationCityCode = document.getElementById(destinationCityId).value;
    var departureDate = document.getElementById(departureDateId);
    var backDate      = document.getElementById(backDateId);
    returnDate        = AddDaysToDate(departureDate.value, 7);
    //Get the dates for the return flight
    dateArray         = GetDateArrayById(dest, destinationCityCode, departureCityCode);     
    
    var axe = destinationCityCode + departureCityCode;
    if(typeof( window[ 'OpenAxes' ] ) != "undefined")
    {
        if(OpenAxes.indexOf(axe) > -1)
            backDate.value    = returnDate;
        
    }
    else
    {
        if(dateArray)
        {
            returnDate        = GetNearestDate(dateArray, returnDate);
            if(!returnDate)
            {
                returnDate = GetLastDate(dateArray);
            }        
            backDate.value    = returnDate;
        }
        if( (departureDate.Value == '') || (departureDate.Value == 'Undefined') || (departureDate.Value == 'Undefined//'))
        {
            departureDate.Value = 'Choissez une date';
        }
    }
}


function SetBothDates(departureCityId,destinationCityId,departureDateId,backDateId)
{
    var departureCity   = document.getElementById(departureCityId);
    var destinationCity = document.getElementById(destinationCityId);
    var departureDate   = document.getElementById(departureDateId);
    
    
    
    var departureCityCode   = departureCity.value;
    var destinationCityCode = destinationCity.value;
    var dateArray           = GetDateArrayById(dest, departureCityCode, destinationCityCode);
    var defaultDepartureDate;
    
    var axe = departureCityCode + destinationCityCode;
	    
    if(typeof( window[ 'OpenAxes' ] ) != "undefined")
    {
        var now = new Date();
        var year = now.getFullYear().toString();
        
        var month = (now.getMonth() +1 ).toString();
        if(month < 10)
            month = '0' + month.toString();
        
        var day   = now.getDate();
        
        if(day < 10)
            day = '0' + day.toString();       
        
        if(OpenAxes.indexOf(axe) > -1)
            defaultDepartureDate = day + '/' + month +  '/' + year;
        else
            defaultDepartureDate =  GetFirstAvailableDate(dateArray);
    }
    else
        defaultDepartureDate =  GetFirstAvailableDate(dateArray);
    
    
    
    
    
    
    if(defaultDepartureDate.indexOf('undefined') >= 0)
    {    
        defaultDepartureDate = 'Modifiez votre choix svp';
    }
    
    departureDate.value = defaultDepartureDate;
//    alert(departureCity.value);
 //   alert(destinationCity.value);
  //  alert(defaultDepartureDate);
    
    SetBackDate(departureCityId,destinationCityId,departureDateId,backDateId);   
}


/*
    AddDaysToDate accepts a date string in the '01/01/2000' format.
    Returns a date with 'days' days added 
*/
function AddDaysToDate(date, days)
{
    //alert(date);
    var day   = parseInt(date.substring(0,2),10);
    var month = parseInt(date.substring(3,5),10);
    var year  = parseInt(date.substring(6,10),10);
    var date = new Date(year,month-1,day + parseInt(days,10));
    
    
    //alert(date);
    var yearToReturn  = date.getFullYear().toString();
    //alert(yearToReturn);
    var monthToReturn = (date.getMonth() +1 ).toString();
    if(monthToReturn < 10)
        monthToReturn = '0' + monthToReturn.toString();
    //alert(monthToReturn);
    var dayToReturn   = date.getDate();
    //alert(dayToReturn);
    if(dayToReturn < 10)
        dayToReturn = '0' + dayToReturn.toString();
    
    returnDate = dayToReturn + '/' + monthToReturn + '/' + yearToReturn;
    //alert(returnDate);
    return returnDate;
}

function StringToDate(dateToConvert)
{
    var day   = parseInt(dateToConvert.substring(0,2),10);
    var month = parseInt(dateToConvert.substring(3,5),10);
    var year  = parseInt(dateToConvert.substring(6,10),10);
    var date = new Date(year,month-1,day);
    return date
}


