var ymFly = {
    reqCount: null,
    reqTimer: null,
    input: null,
    resultHolder: null,
    selectedInput: null,
    init: function(input,selectedAirportCode) {
        var input = document.getElementById(input);
        this.input = input;
        $(input).keyup(function(e) {
            if(e.keyCode <= 8 || (e.keyCode > 45 && e.keyCode < 91)) {
                    ymFly.getAirports(this);
            }
        }).click(function() {
            if(ymFly.selectedInput.value)
                input.select();
        });
        
        $(input).css("display","block").blur(function() {
        setTimeout(function() {
            $(ymFly.resultHolder).hide();
            },100);
        });
        
        $(document.forms[0]).bind("submit",function() {
            if(!ymFly.selectedInput.value)
                return false;
        });
        
        resultHolder = document.createElement("ul");
        $(resultHolder).addClass("ymFlyResults").hide();
        this.resultHolder = resultHolder;
        
        selectedInput = document.createElement("input");
        selectedInput.type = "hidden";
        selectedInput.name = "selectedAirport";
        selectedInput.value = selectedAirportCode;
        this.selectedInput = selectedInput;
        
        $(input).after(resultHolder).after(selectedInput);
    },
    getAirports: function(input) {
        clearTimeout(this.reqTimer);
        ymFly.selectedInput.value = "";
        if(input.value) {
            this.reqTimer = setTimeout(function() {  
                    ymFly.retrieveData(input.value);
            },1000);   
        } else {
            $(ymFly.resultHolder).empty().hide();
        }    
    },
    retrieveData: function(string) {
   $("#airportAjaxLoader").show();
    $(ymFly.resultHolder).empty().show();
   $(ymFly.resultHolder).text("Loading...");
        $.ajax({
            type: "GET",
            url: "/Flights/FlightFeed.aspx?s=" + string,
            dataType: "xml",
            success: function(data) {
            $(ymFly.resultHolder).empty();
                if($(data).children().children().length) {
                $(data).children().children().each(function(e) {
                    suggestion = document.createElement("li");
                    $(suggestion).click(function() {
                        ymFly.input.value = $(this).text();
                        $(ymFly.resultHolder).empty().hide();
                        $(ymFly.selectedInput).val(this.AirportCode);
                        setTimeout(function() {
                        document.forms[0].submit();
                        },200);
                    }).hover(function() {
                        $(this).addClass("hover");
                    },function() {
                        $(this).removeClass("hover");
                    }).text("(" + $(this).attr("AirportCode") + ") " + $(this).attr("Name") + ", "  + $(this).attr("City") + ", " + $(this).attr("CountryCode"));
                    suggestion.AirportCode = $(this).attr("AirportCode");
                    $(ymFly.resultHolder).append(suggestion);
                });
                } else {
                $(ymFly.resultHolder).empty().text("No results found.");;
                }
                ymFly.reqCount++;
                $("#airportAjaxLoader").hide();
                
            }
        });
    }
}

