﻿//-------- Start Set OneWay/RoundTrip --------
function SetupOneWay() {
    $('.item-two-date').hide();
}
function SetupRoundTrip() {
    $('.item-two-date').show();
}
function isDirect() {    
    if ($('#direct_flights').attr('checked') == false) {
        $('#direct_check').val('yes');
    }
    else {
        $('#direct_check').val('no');
    }    
}
//-------- End Set OneWay/RoundTrip --------
//-------- Start Check Url --------
function CheckUrl(url) {
    var pos_start = url.indexOf('?');
    var key_value_array = {};
    if (pos_start > -1) {
        var query_string = url.substring(pos_start + 1);
        var temp_array = query_string.split('&');

        $.each(temp_array, function(x, y) {
            var temp = y.split('=');
            key_value_array[temp[0]] = temp[1];
        });
    }
    else {
        key_value_array = null;
    }
    return key_value_array;
}
//-------- End Check Url --------
//-------- Start Get Keysearch --------
function GetKeySearch(document) {
    var ref = document.referrer;
    var reg = new RegExp('q=([^&]*?)(&|$)');
    var key = reg.exec(ref);
    if (key != null && key.length > 1) {
        return key[1];
    }
    return '';
}
//-------- End Get Keysearch --------
//-------- Start Validation Form --------
function Validate(w1, w2, l1, l2, d1, d2, w) {
    if (l1.length != 3) {
        if (/\(([\w]{3}).+?\)/.test(w1)) {
            SetLocation(w1, 'depart_airport');
        }
        else {
            var values = eval($.ajax({
                            type: 'GET',
                            url: 'GetSuggest.aspx', 
                            data: 'term=' + w1,
                            async: false
                        }).responseText);
            if (values.length > 0) {
                SetLocation(values[0].label, 'depart_airport');
            }
            else {
                alert('Aeroporto di partenza non valido');
                return false;
            }
        }
    }
    if (l2.length != 3) {
        if (/\(([\w]{3}).+?\)/.test(w2)) {
            SetLocation(w2, 'arrival_airport');
        }
        else {
            var values = eval($.ajax({
                type: 'GET',
                url: 'GetSuggest.aspx',
                data: 'term=' + w2,
                async: false
            }).responseText);
            if (values.length > 0) {
                SetLocation(values[0].label, 'arrival_airport');
            }
            else {
                alert('Aeroporto di arrivo non valido');
                return false;
            }
        }
    }    
    var tdd;
    var tad;
    if(/^(\d{1,2})(\/)(\d{1,2})\2(\d{4})$/.test(d1)) {
        tdd = d1.split('/');
        if(!IsDate(tdd[0], tdd[1], tdd[2])) {
            alert('Data di partenza non valida');
            return false;
        }        
    }
    else {
        alert('La data di partenza non é in un formato valido');
        return false;
    }
    if(w == 'roundtrip') {
        if(/^(\d{1,2})(\/)(\d{1,2})\2(\d{4})$/.test(d2)) {
            tad = d2.split('/');
            if(!IsDate(tad[0], tad[1], tad[2])) {
                alert('Data di ritorno non valida');
                return false;
            }
        }
        else {
            alert('La data di ritorno non é in un formato valido');
            return false;
        }
    }
    var tdc = new Date(tdd[2], tdd[1]-1, tdd[0]);
    if (CompareDates(new Date(), tdc)) {
        if(w == 'roundtrip') {
            if (CompareDates(tdc, new Date(tad[2], tad[1]-1, tad[0]))) {
                return true;
            }
            else {
                alert('La data di ritorno deve essere maggiore o uguale alla data di partenza');
            }
        }
        else {
            return true;
        }       
    }
    else {
        alert('La data di partenza deve essere maggiore o uguale alla data odierna');
    }
    return false;
}
//-------- End Validation Form --------
//-------- Start Compare Dates --------
function CompareDates(date1, date2) {    
    if (date2.getFullYear() > date1.getFullYear()) {
        return true;
    }
    else if (date2.getFullYear() == date1.getFullYear()) {
        if (date2.getMonth() > date1.getMonth()) {
            return true;
        }
        else if (date2.getMonth() == date1.getMonth()) {
            if (date2.getDate() >= date1.getDate()) {
                return true;
            }
        }
    }
    return false;
}
//-------- End Compare Dates --------
//-------- Start IsDate --------
function IsDate(day, month, year) {
    if (day < 1 || day > 31) {
        return false;
    }
    if (month < 1 || month > 12) {
        return false;
    }    
    if((month == 4 || month == 6 || month == 9 || month == 11) && day > 30){
        return false;
    }
    if (month == 2) {
        var bisestile = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
        if ((bisestile && day > 29) || day > 28) {
            return false;
        }
    }
    return true;
}
//-------- End IsDate --------
//-------- Start Set Location --------
function SetLocation(l, i) {
    var r = new RegExp('\\(([\\w]{3}).+?\\)');
    $('#' + i + '_code').val(r.exec(l)[1]);
    $('#' + i).val(l);
}
//-------- End Set Location --------