/*
* AUSU jQuery-Ajax Auto Suggest
* http://www.oslund.ca/
*/
(function ($) {
		   
		   
  var enteredtext;
  
    $.fn.autosugguest = function (config) {
        var defaults = {
            className: 'search',
            methodType: 'POST',
            addParams: null,
            rtnIDs: false,
            dataFile: 'rifma.php?curr_node=5055',
            minChars: 3,
            fadeTime: 100
        };
        var config = $.extend(defaults, config);
        config.addParams = (config.addParams != '') ? '&' + config.addParams : '';
        $('<div class="suggestionsBox"><ul></ul></div>').appendTo('.' + config.className);
        $(".suggestionsBox > ul li").live('mouseover', function () {
            var sel = $(this).parent().find("li[class='selected']").removeClass('selected');
            $(this).addClass('selected');
        });
        $("." + config.className + " > #text").keyup(function (event) {
         
            var fieldParent = $(this).parents('div.' + config.className);
            if (event.which != 39 && event.which != 37 && event.which != 38 && event.which != 40 && event.which != 13 && event.which != 9) {
                fieldVal = fieldParent.find('input:eq(0)').val();
                suggest(fieldVal, this.id);
				enteredtext=fieldVal;
            } else {
                var fieldChild = fieldParent.find('.suggestionsBox > ul');
                switch (event.which) {
                case 40:
                    {
                        keyEvent(fieldChild, 'next');
                        break;
                    }
                case 38:
                    {
                        keyEvent(fieldChild, 'prev');
                        break;
                    }

                case 13:
                    {
//                        fieldParent.children('input:eq(0)').val($("li[class='selected'] a").text());
//                        if (config.rtnIDs == true) fieldParent.children('input:eq(1)').val($("li[class='selected']").attr("id"));
                        fieldParent.children('#text:eq(0)').val($("li[class='selected'] a").text());
                        if (config.rtnIDs == true) fieldParent.children('#text:eq(1)').val($("li[class='selected']").attr("id"));
						
                        fieldParent.children('div.suggestionsBox').hide();
   //                     return false;
                        break;
                    }
                case 9:
                    {
                        offFocus(this);
                        $("li").removeClass("selected");
                        break;
                    }
                }

            }
        });
        $("." + config.className).bind("keypress", function (event) {
//            if (event.keyCode == 13) return false;
        });
        $("." + config.className + " > #text").live("blur", function () {
            offFocus(this);
            $("li").removeClass("selected");
        });

        function suggest(dataInput, id) {
            if (dataInput.length < config.minChars) {
                $('#' + id).parent('.' + config.className).children('div.suggestionsBox').fadeOut();
            } else {
                $('#' + id + ":eq(0)").addClass('load');
                $.ajax({
                    type: config.methodType,
                    url: config.dataFile,
                    dataType: "html",

                    data: "data=" + dataInput + "&id=" + id + config.addParams,
                    success: function (data) {
                        if (data.length > 0) {
                            $('#' + id).parent('div.' + config.className).children('div.suggestionsBox').fadeIn();
                            $('#' + id).parent('div.' + config.className).find('.suggestionsBox > ul').html(data);
                            $('#' + id + ":eq(0)").removeClass('load');
                        } else {
                            $('#' + id + ":eq(0)").removeClass('load');
                        }
                    },

	                error: function (xhr, ajaxOptions, thrownError){
						alert(xhr.status+'('+thrownError+')');
					}   
                });
            }
        }

        function keyEvent(fieldChild, action) {
            yx = 0;
            fieldChild.find("li").each(function () {
                if ($(this).attr("class") == "selected") yx = 1;

            });
            if (yx == 1) {
                var sel = fieldChild.find("li[class='selected']");
				var txdatanew;
			
                if (action == 'next') {
                    sel.next().addClass("selected");
                    
					txdatanew=sel.next().text(); if (txdatanew=='') {txdatanew=enteredtext;}
					
					$("." + config.className + " > #text").val(txdatanew);
					
                } else {
                    sel.prev().addClass("selected");
					
					txdatanew=sel.prev().text(); if (txdatanew=='') {txdatanew=enteredtext;}
					
                    $("." + config.className + " > #text").val(txdatanew);
                }


                sel.removeClass("selected");
            } else {


                if (action == 'next') {
                    fieldChild.find("li:first").addClass("selected");
					
					txdatanew=fieldChild.find("li:first").text(); if (txdatanew=='') {txdatanew=enteredtext;}
					
                    $("." + config.className + " > #text").val(txdatanew);
                } else {
                    fieldChild.find("li:last").addClass("selected");
					
					txdatanew=fieldChild.find("li:last").text(); if (txdatanew=='') {txdatanew=enteredtext;}					
					
                    $("." + config.className + " > #text").val(txdatanew);
                }

            }
        }

        function offFocus(fieldChild) {
            var fieldParent = $(fieldChild).parents('div.' + config.className);
            fieldParent.children('div.suggestionsBox').delay(config.fadeTime).fadeOut();
        }
        $(".suggestionsBox > ul li").live("click", function () {
            var fieldParent = $(this).parents('div.' + config.className);
            fieldParent.children('input:eq(0)').val($(this).text());
            if (config.rtnIDs == true) fieldParent.children('input:eq(1)').val($(this).attr("id"));
            fieldParent.children('div.suggestionsBox').hide();
        });
    };
})(jQuery); 

/*   paste in your code and press Beautify button   */
/*if ('this_is' == /an_example/) {
    do_something();
} else {
    var a = b ? (c % d) : e[f];
}*/
