
$.fn.updateSearch = function(settings){
    var defaults =  {
       updateSearchFunction : function(){}
    }

	$.extend(defaults, settings);
	return this.each(function(i,n){
        /* variable's initialization */
        var oldVal ="";
        var timer = null;
        var currentElem = $(this);

        var callback = function(){
            var currentValue  = currentElem.val(); 
            if(oldVal == currentValue){
            	clearTimeout(timer);
            	defaults.updateSearchFunction();
            } else {
                oldVal = currentValue;
                clearTimeout(timer);
            	timer = setTimeout(callback,1000);
            }
        };

        var launchTimer = function(){
            if(timer){
                clearTimeout(timer);
            }
            timer = setTimeout(callback,1000);
        }

        currentElem
            .bind("updateSearch",launchTimer)
            .keyup(function(){
               $(this).trigger("updateSearch");
            });
	});
};
