var Calendar = null;
var DirectionBalloon = null;
var CalendarForm = false;
var AllowSubmit = true;
var CurrentFocus = null;
var RequestCount = 3;
var DocumentURL = document.location.search;
var DirectionCookie = '';
var DatesCookie = '';

$(function() {

    Datepicker = new DatepickerObj();
    Datepicker.createStructure();
    
    Timepicker = new TimepickerObj();

    if (window.use_pmpicker)
        PMpicker = new PMpickerObj();
    
    DirectionBalloon = new DirectionBalloonClass();
    Calendar         = new CalendarObj(maxFlightOptions, calendarType);
    var DirectionsTD = $("#Directions").find("div.Direction");

    $(DirectionsTD).each(function(i) {
        var DirectionDOMObj = new DirectionDOMClass();
        DirectionDOMObj.createFromDOM(DirectionsTD[i]);
    });

    if(typeof out_search != 'undefined' && !out_search && typeof out_search_params != 'undefined' && !out_search_params){
    	LoadCookieRequest();
    }
    checkAGR500();
    
    $('.search-header').find('.jNiceRadio').click(function(){
        
        var type = $(this).next().val() * 1;
        
        var closes = $("#Directions").find("div.Direction:visible .close");
        var len = closes.length * 1;
        
        if (len < 2)
            len = 1;
            
        if (type > len) {
            for (var i=len;i<type;i++) {
                var last = $("#Directions").find("div.Direction:visible:last");
                var add = last.find(".add");
                last.show();
                add.trigger('click');
            }
        } else {            
            for (var i=len;i>type;i--) {
                $(closes[i-1]).trigger('click');
            }
        }       
    });
    
});


function ReSaveCookie() {
	ReSave = true;
	
	if (cur_domain == 'avia') {
		air_loader.create_params();		
	} else if (cur_domain == 'gd') {
		rail_loader.create_params();
	} else if (cur_domain == 'bus') {
		bus_loader.create_params();
	}
		
	CreateCookie('Directions_' + cur_domain, DirectionCookie, 1);
    CreateCookie('Dates_' + cur_domain, DatesCookie, 1);
    CreateCookie('AdultCount_' + cur_domain, AdultCount, 1);
    CreateCookie('ChildCount_' + cur_domain, ChildCount, 1);
    CreateCookie('InfantCount_' + cur_domain, InfantCount, 1);
    CreateCookie('Class_' + cur_domain, Class, 1);
    CreateCookie('Time_' + cur_domain, Time, 1);
}

function LoadCookieRequest() {
    //same session date check
	
    Today = new Date();
    var ThisYear = Today.getFullYear();
    var ThisMonth = Today.getMonth() + 1;
    if (String(ThisMonth).length == 1) ThisMonth = '0' + ThisMonth;
    var ThisDay = Today.getUTCDate();
    if (String(ThisDay).length == 1) ThisDay = '0' + ThisDay;
    var TodayNumber = String(ThisYear) + String(ThisMonth) + String(ThisDay);

    var DirectionsCookie = ReadCookie('Directions_' + cur_domain);
    var Dates            = ReadCookie('Dates_' + cur_domain);
    var AdultCount       = ReadCookie('AdultCount_' + cur_domain);
    var ChildCount       = ReadCookie('ChildCount_' + cur_domain);
    var InfantCount      = ReadCookie('InfantCount_' + cur_domain);
    var Class            = ReadCookie('Class_' + cur_domain);
    var Time             = ReadCookie('Time_' + cur_domain);
    
    if (DirectionsCookie && Dates && AdultCount != null && ChildCount != null) {
        
        var AllDirections = DirectionsCookie.split(';');
        	
        var AllDates = Dates.split(';');

        if (Date.parseAWADString(AllDates[0]).getTime() < new Date(Today.getFullYear(), Today.getMonth(), Today.getDay()).getTime()) {       	
        	return false;
        }
        
        var firstDateArr = AllDates[0].split('.');
        var firstDate = firstDateArr[2] + firstDateArr[1] + firstDateArr[0] + '';
        if (firstDateArr[2] >= ThisYear) {
            var Years = parseInt(firstDateArr[2] - ThisYear, 10);
            var Months = Years * 12 + parseInt(firstDateArr[1] - 1);
            Calendar.date.setDate(1);
            Calendar.date = new Date(Calendar.date.setMonth(Months)); //slide calendar forward
        }
        var f = 0; //failed direction cookie;
        if (parseInt(TodayNumber, 10) <= parseInt(firstDate, 10)) {
            for (i = 0, DirectionsLength = AllDirections.length; i < DirectionsLength - 1; i++) {
                SingleDirection = AllDirections[i].split(':');
                               
                Start = SingleDirection[0];
                End = SingleDirection[1]; 

                var DirectionNumber = i + 1;
                var DirectionDate   = AllDates[i];
                var StartAirp       = Start.split('^')[0]; 
                var EndAirp         = End.split('^')[0];
                var StartAirpCode   = Start.split('^')[1];
                var EndAirpCode     = End.split('^')[1];
                var StartAirpStr    = Start.split('^')[0];
                var EndAirpStr      = End.split('^')[0];
                var PlusMinus       = SingleDirection[(SingleDirection.length - 2)];
                
                
                if (DirectionDate && StartAirp && EndAirp && StartAirpCode && EndAirpCode) {
                	if (i >= 1) {
                		$(DirectionsDOM[1].Add).trigger('click');
                	}
                    var NewDirectionObj = new DirectionClass(DirectionNumber, DirectionDate, StartAirp, EndAirp, StartAirpCode, EndAirpCode, StartAirpStr, EndAirpStr, Time, PlusMinus);
                    if (typeof DirectionsDOM[DirectionNumber] == 'undefined') {
                    	continue;
                    }                    
                    DirectionsDOM[DirectionNumber].update(NewDirectionObj);
                }
            }
        }   
        
    }
}


function search_by_params(params){
	if (cur_domain == 'avia') {
	    $.each(params.directions, function(index, value){
	        var NewDirectionObj = new DirectionClass(index, value.FDate, value.StartAirpName, value.EndAirpName, value.StartAirp, value.EndAirp, value.StartAirpName, value.EndAirpName, value.Time, value.PlusMinus);        
	        if(DirectionsDOM[NewDirectionObj.DirectionNumber]){
	           DirectionsDOM[NewDirectionObj.DirectionNumber].update(NewDirectionObj);
	        } else {
	           var DirectionDOMObj = new DirectionDOMClass();
	           DirectionDOMObj.create();
	           DirectionsDOM[NewDirectionObj.DirectionNumber].update(NewDirectionObj);
	        }
	    });
	    if(air_loader.create_params()){
	        air_loader.ajax();
	    }		
	} else if (cur_domain == 'gd') {
		rail_loader.params = out_search_params;
        rail_loader.ajax();		
	} else if (cur_domain == 'bus') {
        bus_loader.params = out_search_params;
        bus_loader.ajax();        
    }
}
