$.fn.extend({
    benbautocomplete: function (form, options) {
	return this.each(function() {
	    new $.BenbAutocompleter(this, form, options);
	});
    }
});

$.BenbAutocompleter = function (input, form, options) {
    var $input = $(input).attr("autocomplete", "off");

    var lastval = '';
    var timeout;
    var request  = 0;

    $input.keypress(function(event) {
	if (event.keyCode == 13) {
	    event.preventDefault();
	}
    });

    $input.keyup(function(event) {
	if (timeout) {
	    clearTimeout(timeout);
	}

	timeout = setTimeout(function () {
	    if ($input.val() != lastval && $input.val().length > 2) {
		$("#searchinput").focus();
		$("#searchinput").val($input.val());
		window.scrollTo(0, 0);

		$("#searchpopup").css('left', $("#pc").offset().left+'px');
		$("#searchpopup").css('top', $("#pc").offset().top+'px');

		$("#searchpopup").removeClass('spu_hidden');
		if ($("#pc").height() > $("#searchpopup").height()) {
		    $("#searchpopup").height($("#pc").height());
		    $("#spu_top_mid").height($("#pc").height()-4);
		}
		$("#searchpopupmsg").html("<img src='/images/layout/loading.gif' class='loading' /><br/><div class='spu_loading'>"+loadingText+"...</div>");

		request++;
		$.ajax({
		    type: "GET",
		    url: "/bcache",
		    data: "action=all&requestnr="+request+"&q="+$input.val(),
		    success: function(msg){
			var msg_s = msg.split("<newline/>");
			eval(msg_s[0]);
			msg = msg_s[1];
			if (request == requestnr) {
			    if (msg == '0') {
				//$("#searchpopup").addClass('spu_hidden');
			    } else {
				$("#searchpopup").height('auto');
				$("#spu_top_mid").height('auto');
				$("#searchpopupmsg").html(msg);
				if ($("#pc").height() > $("#searchpopup").height()) {
				    $("#searchpopup").height($("#pc").height());
				    $("#spu_top_mid").height($("#pc").height()-4);
				}
			    }
			}
		    }
		});

	    } else {
		if ($input.val().length < 3) $("#searchpopup").addClass('spu_hidden');
	    }

	    lastval = $input.val();
	}, 500);
    });
}