$(document).ready(function() {
    var search_timeout = null;
    $(".search-form input[name=keywords]").keyup(function(e) {
        if(e.which == "13") {
            unsetTimeout(search_timeout);
            doSearch();
            return false;
        } else if(e.which != "27" && e.which != "32") {
            if(search_timeout != null) {
                unsetTimeout(search_timeout);
            }
            
            if($(this).val()) {
                search_timeout = setTimeout(doSearch, 500);
            }
        }
    });
    $(".search-form").bind("keypress keyup", function(e) {
        if(e.which == 13) {
            return false;
        }
    }).bind("submit", function(e) {
        if(!$("input[name=keywords]", this).val()) {
            return false;
        }
    });
    
    var mouse_over_search = false;
    
    $("#search-results-display").live('mouseover mouseout', function(e) {
        if(e.type == 'mouseover') {
            mouse_over_search = true;
        } else {
            mouse_over_search = false;
        }
    });
    
    $("body").mouseup(function() {
        if(! mouse_over_search) $("#search-results-display").fadeOut(300);
    });
    $("body").keyup(function(e) {
        if(e.keyCode == "27") {
            $("#search-results-display").fadeOut(300);
        }
    });
});

function doSearch() {
    if(!$(".search-form input[name=keywords]").val()) {
        return false;
    }
    var keywords = $(".search-form input[name=keywords]").val().split(" ");
    keywords = keywords.join(" && ");
    
    $.ajax({
        url: $(".search-form").attr("action")+"/live",
        data: { keywords: keywords, category: $(".search-form input[name=category]").val() },
        dataType: 'text',
        type: 'POST',
        success: ajax_search_callback
    });
}

function unsetTimeout(timeout)
{
	clearTimeout(timeout);
	timeout = null;
};

function ajax_search_callback(response, status) {
    $form = $("form.search-form");
    $("#search-results-display").remove();
    $("body").append($(response));
    $("#search-results-display").css({
        left: $form.offset().left+9,
        top: $form.offset().top+$form.height()+11
    }).fadeIn(300);
    $("#more-results-link").click(function() {
        $form.submit();
        return false;
    });
}
