var arrayDayNamesShort = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];

$.datepicker.setDefaults({
    dateFormat: 'dd/mm/yy',
    monthNames: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],
    dayNames: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],
    dayNamesMin: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],
    dayNamesShort: arrayDayNamesShort,
    firstDay: 1,
    nextText: 'Next',
    prevText: 'Previous',
    numberOfMonths: 2,
    showOtherMonths: true,
    showButtonPanel: true,
    maxDate: '+10m',
    closeText: 'Close'
});

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, dateFrHidden);
            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, dateToHidden);

            }
            else {
                $(dateToId).datepicker('option', 'minDate', d);
            }
            var dTo = $(dateToId).datepicker('getDate');
            if (idDuration != "") {
                $(idDuration).text(calculateDiff(d, dTo));
            }
        }
    });
    if (getParam("Iframe") != 1) {
        $(dateFromId).datepicker('setDate', defaultDate);
        splitDate(defaultDate, dateFromId, dateFrHidden);
    }

    $(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, dateToHidden);
            if (idDuration != "") {
                $(idDuration).text(calculateDiff(dayFr, dayTo));
            }
        }
    });
    if (getParam("Iframe") != 1) {
        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, dateToHidden);
        if (idDuration != "") {
            $(idDuration).text(calculateDiff(defaultDate, default_dateTo));
        }
    }
}

var splitDate = function(aDate, idDate, idDateHidden) {
    var theDayName = aDate.getDay();
    $(idDate + "_DN").text(arrayDayNamesShort[theDayName] + ".");
    $(idDateHidden + "_DD").val(aDate.getDate());
    $(idDateHidden + "_MM").val(aDate.getMonth() + 1);
    $(idDateHidden + "_YYYY").val(aDate.getFullYear());    
}

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", 0, "#DEPART", "#RETOUR", "");
    if (getParam("Iframe") == 1) {
        var dFr = $("#tb_FSDepartDate").datepicker('getDate');
        splitDate(dFr, "#tb_FSDepartDate", "#DEPART");
        var dTo = $("#tb_FSReturnDate").datepicker('getDate');
        splitDate(dTo, "#tb_FSReturnDate", "#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");
    if (getParam("Iframe") == 1) {
        var dFr = $("#tb_HSArriveDate").datepicker('getDate');
        splitDate(dFr, "#tb_HSArriveDate", "#HS_DEPART");
        var dTo = $("#tb_HSDepartDate").datepicker('getDate');
        splitDate(dTo, "#tb_HSDepartDate", "#HS_RETOUR");        
    }
}

var initHotelFlightEngine = function() {
    initDateFields(default_Saturday, 7, "#tb_FHSDepartDate", "#tb_FHSReturnDate", 0, "#FHS_DEPART", "#FHS_RETOUR", "");
   if (getParam("Iframe") == 1) {
        var dFr = $("#tb_FHSDepartDate").datepicker('getDate');
        splitDate(dFr, "#tb_FHSDepartDate", "#FHS_DEPART");
        var dTo = $("#tb_FHSReturnDate").datepicker('getDate');
        splitDate(dTo, "#tb_FHSReturnDate", "#FHS_RETOUR");
    }
}

$(document).ready(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();
});

var myInputs = '';
var submitSearch = function(p_div, p_url, iFrame) {
    var noeud = document.getElementById(p_div);

    GetChilds(noeud);
    if (iFrame == '1') {
        parent.document.getElementById('form2').innerHTML = myInputs;
    }
    else {
        document.getElementById('form2').innerHTML = myInputs;
    }

//    document.write(myInputs);
//    return;
    if (iFrame == '1') {
        parent.document.getElementById('form2').target = '';
        parent.document.getElementById('form2').action = p_url;
        parent.document.getElementById('form2').submit();
    }
    else {
        document.getElementById('form2').target = '';
        document.getElementById('form2').action = p_url;
        document.getElementById('form2').submit();
    }
}

var GetChilds = function(obj) {
    var fils = obj.childNodes;
    var nbFils = fils.length;
    for (var i = 0; i < nbFils; i++) {
        if (fils[i].childNodes != null && fils[i].childNodes.length >= 1) {
            GetChilds(fils[i]);
        }
        if (fils[i].type == "text" && fils[i].value == "" && (fils[i].id == "tb_FHSProvenance" || fils[i].id == "tb_FHSDestination")) fils[i].value = "-";
        if (fils[i].name != undefined && fils[i].name != "") {
            if (fils[i].type != 'radio' || (fils[i].type == 'radio' && fils[i].checked == true))

                myInputs = myInputs + '<input type=\"hidden\" name=\"' + fils[i].name + '\" value=\"' + Trim(fils[i].value) + '\" />';
        }
    }
}

function Trim(Value) {
    return Value.replace(/^\s+/g, '').replace(/\s+$/g, '') 
}