/*
 * DatePicker Handler for Tiket2.com
 * author: Jakub Derdziak
 * ver. 1.0
 */

// initialise the "Select date" link
function startDatePicker(field)
{
    if( field == undefined )
        {
        var field = "from";
        }

    $('a#date_' + field + '_picker')
        .datePickerMultiMonth(
            // associate the link with a date picker
            {
                createButton:false,
                startDate:$("input#from_date_field").val(),
                endDate:$("input#to_date_field").val(),
                numMonths: 2
            }
        ).bind(
            // when the link is clicked display the date picker
            'click',
            function()
            {
                updateSelects($(this).dpGetSelected()[0]);
                $(this).dpDisplay();
                return false;
            }
        ).bind(
            // when a date is selected update the SELECTs
            'dateSelected',
            function(e, selectedDate, $td, state)
            {
                updateSelects(selectedDate);
            }
        ).bind(
            'dpClosed',
            function(e, selected)
            {
                updateSelects(selected[0]);
            }
        );

    var updateSelects = function (selectedDate)
    {

        var selectedDate = new Date(selectedDate);
        var month = selectedDate.getMonth()+1;
        if( month < 10 )
        {
        //add 0 to one digit month
        month = "0"+month;
        }
        var day = selectedDate.getDate();
        if( day < 10 )
        {
        day = "0" + day;
        }

        $('#search_flights_date_' + field + '_day option[value=' + day + ']').attr('selected', 'selected');
        $('#search_flights_date_' + field + '_month_year option[value=' + (selectedDate.getFullYear()) +"-" + month + ']').attr('selected', 'selected');
        $('#date_' + field + '_dayname').html(selectedDate.getDayName(true));

        //Check if range is correct
        departDate = $('#search_flights_date_from_month_year').val() + "-" + $('#search_flights_date_from_day').val();
        returnDate = $('#search_flights_date_to_month_year').val() + "-" + $('#search_flights_date_to_day').val();
        if ( returnDate < departDate )
        {

        temp = "to";
        if( field == "to" )
            temp = "from";

        /*$('#search_flights_date_' + temp + '_month_year').val( $('#search_flights_date_' + field + '_month_year').val() );
        $('#search_flights_date_' + temp + '_day').val( $('#search_flights_date_' + field + '_day').val() );
        $('#search_flights_date_' + temp + '_day').trigger('change');*/

        var day = $('#search_flights_date_' + field + '_day').val();
        var month_year = $('#search_flights_date_' + field + '_month_year').val().split("-");
        var month = month_year[1];
        var year = month_year[0];

        if( day.indexOf("0") === 0 )
        {
            day = day.substr(1);
        }
        var d = new Date(
                    parseInt(year,10),
                    parseInt(month,10)-1,
                    parseInt(day,10)
                );
        d.addDays(7);
        $('a#date_' + temp + '_picker').dpSetSelected(d.asString());
        }
    }


    // listen for when the selects are changed and update the picker
    $('#search_flights_date_' + field + '_day, #search_flights_date_' + field + '_month_year')
        .bind(
            'change',
            function()
            {
                var day = $('#search_flights_date_' + field + '_day').val();
                var month_year = $('#search_flights_date_' + field + '_month_year').val().split("-");
                var month = month_year[1];
                var year = month_year[0];

                if( day.indexOf("0") === 0 )
                {
                day = day.substr(1);
                }

                var d = new Date(
                            parseInt(year,10),
                            parseInt(month,10)-1,
                            parseInt(day,10)
                        );
                $('a#date_' + field + '_picker').dpSetSelected(d.asString());
            }
        );

    if( $("#search_flights_date_from_day").val() == $("#search_flights_date_to_day").val() && $("#search_flights_date_from_day").val() == "01" && $("#search_flights_date_from_month_year").val() == $("#search_flights_date_to_month_year").val() )
    {
        // default the position of the selects to today
        var today = new Date();

        // add days depends on field
        if( field == "from" )
        {
            today.addDays(1)
        }
        else
        {
            today.addDays(8);
        }
        
        updateSelects(today.getTime());
    }
    
    // and update the datePicker to reflect it...
    $('#search_flights_date_' + field + '_day').trigger('change');
}


$(function()
{
  $(document).ready( function() {

    startDatePicker("from");
    startDatePicker("to");
		$('#date_from_picker').dpSetOffset(30, -210);
		$('#date_to_picker').dpSetOffset(30, -210);
  });
});
