var arrayDayNamesShort = ['Dim', 'Lun', 'Mar', 'Mer', 'Jeu', 'Ven', 'Sam'];

$.datepicker.setDefaults({
    dateFormat: 'dd/mm/yy',
    monthNames: ['Janvier', 'F&eacute;vrier', 'Mars', 'Avril', 'Mai', 'Juin', 'Juillet', 'Ao&ucirc;t', 'Septembre', 'Octobre', 'Novembre', 'D&eacute;cembre'],
    dayNames: ['Dimanche', 'Lundi', 'Mardi', 'Mercredi', 'Jeudi', 'Vendredi', 'Samedi'],
    dayNamesMin: ['Di', 'Lu', 'Ma', 'Me', 'Je', 'Ve', 'Sa'],
    dayNamesShort: arrayDayNamesShort,
    firstDay: 1,
    nextText: 'Suivant',
    prevText: 'Pr&eacute;c&eacute;dent',
    numberOfMonths: 2,
    showOtherMonths: true,
    showButtonPanel: true,
    maxDate: '+10m',
    closeText: 'Fermer'
});

var selectedDateFrom = new Array();
var initDateFields = function(defaultDate, duration, dateFromId, dateToId, minDateFrom, dateFrHidden, dateToHidden, idDuration) {
    $(dateFromId).datepicker({
        defaultDate: +minDateFrom,
        minDate: +minDateFrom,
        onClose: function(dateText, inst) {
            var d = $(this).datepicker('getDate');
            var dd = d.getDate();
            var mm = d.getMonth();
            var y = d.getFullYear();
            var fromDayName = d.getDay();
            selectedDateFrom = [dd, mm, y];
            splitDate(d, dateFromId);
            var newDateTo = $(dateFromId).datepicker('getDate');
            newDateTo.setDate(newDateTo.getDate() + duration);
            if ($(dateToId).datepicker('getDate') < newDateTo) {
                $(dateToId).datepicker('setDate', newDateTo);
                $(dateToId).datepicker('option', 'minDate', d);
                splitDate(newDateTo, dateToId);

            }
            else {
                $(dateToId).datepicker('option', 'minDate', d);
            }
            var dTo = $(dateToId).datepicker('getDate');
            if (idDuration != "") {
                $(idDuration).text(calculateDiff(d, dTo));
            }
        }
    });    
    $(dateFromId).datepicker('setDate', defaultDate);
    splitDate(defaultDate, dateFromId);

    $(dateToId).datepicker({
        defaultDate: defaultDate,
        minDate: defaultDate,
        beforeShowDay: setSelectedDate,
        onClose: function(dateText, inst) {
            var dayFr = $(dateFromId).datepicker('getDate');
            var dayTo = $(this).datepicker('getDate');
            splitDate(dayTo, dateToId);
            if (idDuration != "") {
                $(idDuration).text(calculateDiff(dayFr, dayTo));
            }
        }
    });    
    var default_dateTo = new Date(defaultDate.getFullYear(), defaultDate.getMonth(), defaultDate.getDate());
    default_dateTo.setDate(default_dateTo.getDate() + duration);
    $(dateToId).datepicker('setDate', default_dateTo);
    splitDate(default_dateTo, dateToId);
    if (idDuration != "") {
        $(idDuration).text(calculateDiff(defaultDate, default_dateTo));
    }
}

var splitDate = function(aDate, idDate) {
    var theDayName = aDate.getDay();
    $(idDate + "_DN").text(arrayDayNamesShort[theDayName] + ".");
}

var setSelectedDate = function(date) {
    var isSelectedDate = false;
    // Check for selected day
    if (date.getDate() == selectedDateFrom[0] && date.getMonth() == selectedDateFrom[1] && date.getFullYear() == selectedDateFrom[2]) {
        isSelectedDate = true;
    }
    if (isSelectedDate)
        return [true, "selectedDateFromCss"];
    else
        return [true, ""];
}

var getParam = function(name) {
    var start = location.search.indexOf("?" + name + "=");
    if (start < 0) start = location.search.indexOf("&" + name + "=");
    if (start < 0) return '';
    start += name.length + 2;
    var end = location.search.indexOf("&", start) - 1;
    if (end < 0) end = location.search.length;
    var result = '';
    for (var i = start; i <= end; i++) {
        var c = location.search.charAt(i);
        result = result + (c == '+' ? ' ' : c);
    }
    return unescape(result);
}

var swithchEngine = function() {
    $(".GO_engine").eq(0).show();
    $(".GO_enginesChoice li a").eq(0).addClass("GO_selectedChoice");
    $(".GO_enginesChoice li a").click(function() {
        $(".selectOptions").each(function() {
            if (!$(this).hasClass("styledSelectContent")) {
                $(this).find("li").eq($(this).attr("rel")).addClass("liSelected");
                var idInput = $(this).attr("id").replace("Options", "");
                $("#" + idInput).val($(this).find("li").eq($(this).attr("rel")).text());
            }
        });
        $(".GO_textInput").each(function() {
            if (!$(this).hasClass("GO_inputDate")) {
                $(this).val("");
            }
        });
        $(".GO_engine").hide();
        $(".GO_selectedChoice").removeClass("GO_selectedChoice");
        var engineId = $(this).attr("href");
        $(engineId).fadeIn();
        $(this).addClass("GO_selectedChoice");
        if ($(this).hasClass("changeTitle")) {
            $("#engineTitle").text($(this).attr("rel"));
        }
        if ($(this).hasClass("isFlightHotel")) $("#IsWeekend").val(0);
        else if ($(this).hasClass("isWeekend")) $("#IsWeekend").val(1);
        return false;
    });
}

var initIsOneWay = function() {
    if ($(".isOneWay:checked").val() == 0) {
        $("#tb_FSReturnDate").attr("disabled", "disabled");
        $("#tb_FSReturnDate").addClass("inputDisabled");
    }
    $(".isOneWay").click(function() {
        if ($(this).val() == 0) {
            $("#tb_FSReturnDate").attr("disabled", "disabled");
            $("#tb_FSReturnDate").addClass("inputDisabled");
        }
        else {
            $("#tb_FSReturnDate").removeAttr("disabled");
            $("#tb_FSReturnDate").removeClass("inputDisabled");
        }
    });
}

//Default dates
var default_Saturday = new Date();
default_Saturday.setDate(default_Saturday.getDate() + 7);
var default_dayName = default_Saturday.getDay();
while (default_dayName != 6) {
    default_Saturday.setDate(default_Saturday.getDate() + 1);
    default_dayName = default_Saturday.getDay();
}

var default_Friday = new Date();
default_Friday.setDate(default_Friday.getDate() + 7);
default_dayName = default_Friday.getDay();
while (default_dayName != 5) {
    default_Friday.setDate(default_Friday.getDate() + 1);
    default_dayName = default_Friday.getDay();
}

var calculateDiff = function(d1, d2) {
    var nbOfDays = (d2.getTime() - d1.getTime()) / (1000 * 60 * 60 * 24);
    return nbOfDays;
}


var initFlightEngine = function() {
    /*$("#tb_FSDepartFrom").autocomplete('/GoGeoService.ashx', {
    delay: 10,
    minChars: 3,
    matchSubset: 1,
    matchContains: 1,
    cacheLength: 10,
    width: 180
    });
    $("#tb_FSArriveTo").autocomplete('/GoGeoService.ashx', {
    delay: 10,
    minChars: 3,
    matchSubset: 1,
    matchContains: 1,
    cacheLength: 10,
    width: 180
    });
    $("#tb_FSDepartFrom").result(function(event, data, formatted) {
    var v_tab = data.toString().split(',');
    $("#hf_FSDepartFrom").val(v_tab[v_tab.length - 1]);
    });
    $("#tb_FSArriveTo").result(function(event, data, formatted) {
    var v_tab = data.toString().split(',');
    $("#hf_FSArriveTo").val(v_tab[v_tab.length - 1]);
    });*/
    initIsOneWay();
    initDateFields(default_Saturday, 7, "#tb_FSDepartDate", "#tb_FSReturnDate", 1, "#DEPART", "#RETOUR", "");
}

var initHotelEngine = function() {
    /*$("#tb_HSArriveTo").autocomplete('/GoGeoService.ashx', {
    delay: 10,
    minChars: 3,
    matchSubset: 1,
    matchContains: 1,
    cacheLength: 10,
    width: 180
    });
    $("#tb_HSArriveTo").result(function(event, data, formatted) {
    var v_tab = data.toString().split(',');
    $("#hf_HSArriveTo").val(v_tab[v_tab.length - 1]);
    });*/
    initDateFields(default_Friday, 1, "#tb_HSArriveDate", "#tb_HSDepartDate", 0, "#HS_DEPART", "#HS_RETOUR", "#nbNights");
}

var initHotelFlightEngine = function() {
    initDateFields(default_Saturday, 7, "#tb_FHSDepartDate", "#tb_FHSReturnDate", 1, "#FHS_DEPART", "#FHS_RETOUR", "");
}

var initCarEngine = function() {
    initDateFields(default_Friday, 1, "#tb_CSPickupDate", "#tb_CSDropOffDate", 0, "", "", "");
}

var initShowTariffDetails = function() {
	$(".showTariffDetails").hover(function() {
		 $(this).parents(".flightPrice").find(".tariffDetails").fadeIn();
	}, function(){
		$(this).parents(".flightPrice").find(".tariffDetails").fadeOut();
   });
}

var initShowHideEngine = function(){
	$(".showMoreLess").click(function(){
		if($(this).hasClass("more")){
			$("#modifySearch").slideDown();
			$(this).removeClass("more");
		}
		else{
			$("#modifySearch").slideUp();
			$(this).addClass("more");
		}
		return false;
	});	
}

var initSelectAll = function(){
	$(".selectAll").click(function(){
		var id = $(this).attr("rel");		
		$("#"+id).find("input:checkbox").attr("checked", "checked");
		/* TO DO */
		/* FILTRER PAR RAPPORT AUX NOMS DES COMPANIES SELECTIONNES */
		/* END TO DO */
		return false;
	});	
}
var initUnselectAll = function(){
	$(".unselectAll").click(function(){
		var id = $(this).attr("rel");		
		$("#"+id).find("input:checkbox").attr("checked", false);
		/* TO DO */
		/* FILTRER PAR RAPPORT AUX NOMS DES COMPANIES SELECTIONNES => AUCUN RESULTAT */
		/* END TO DO */
		return false;
	});	
}

var initShowHideFilter = function(){
	$(".showHideFilter").click(function(){
		$(this).toggleClass("showFilter");
		$(this).parent("h3").next(".filterDiv").toggle("slow");
		return false;
	});
}

var initResultsTabs = function(){
	$(".resultsTabContent").eq(0).show();
	$(".resultsTabContent").eq(0).addClass("resultsTabOpened");
	$(".resultsTabs li a").eq(0).addClass("tabActive");
	$(".resultsTabs li a").click(function(){
		var id = $(this).attr("rel");
		$(".resultsTabOpened").hide();
		$(".resultsTabOpened").removeClass("resultsTabOpened");
		$(".tabActive").removeClass("tabActive");
		$(id).slideDown("slow");
		$(id).addClass("resultsTabOpened");
		$(this).addClass("tabActive");
		return false;
	});
}

var initShowPopupTypo = function(){
	$(".showPopupTypo").click(function(){
		var pos = $(this).position();
		var id = $(this).attr("rel");
		var bottom = $(".GO_searchContainer").height() - pos.top;
		var right = $(".GO_searchContainer").width() - pos.left - 45;
		$(id).css("bottom", bottom + "px");
		$(id).css("right", right + "px");
		$(id).fadeIn();
		return false;
	});
	$(".closePopupTypo").click(function(){
		$(this).parents(".popupTypo").fadeOut();
		return false;
	});
}

var initLegend = function(){
	$(".legends li").eq(0).addClass("pictoActive");
	$(".legends li").eq(0).find("span").show();
	$(".legends a").mouseover(function(){
		$(".pictoActive a span").hide();
		$(".pictoActive").removeClass("pictoActive");
		$(this).find("span").fadeIn();
		$(this).parent("li").addClass("pictoActive");
	});
}

var initAllSE = function(){
	if ($(".GO_enginesChoice li a").is("a")) swithchEngine();
	if ($("#tb_FSDepartDate").is("input")) initFlightEngine();
	if ($("#tb_HSArriveDate").is("input")) initHotelEngine();
	if ($("#tb_FHSDepartDate").is("input")) initHotelFlightEngine();
	if ($("#tb_CSPickupDate").is("input")) initCarEngine();
	if ($(".showTariffDetails").is("a")) initShowTariffDetails();
	if ($(".showMoreLess").is("a")) initShowHideEngine();
	if ($(".selectAll").is("a")) initSelectAll();
	if ($(".unselectAll").is("a")) initUnselectAll();
	if ($(".showHideFilter").is("a")) initShowHideFilter();	
	if ($(".resultsTabs li a").is("a")) initResultsTabs();
	if ($(".showPopupTypo").is("a")) initShowPopupTypo();
	if ($(".legends a").is("a")) initLegend();
}

$(document).ready(function() {
	initAllSE();
});


function Trim(Value) {
    return Value.replace(/^\s+/g, '').replace(/\s+$/g, '')
}