/* jSuggest plugin * created by EMVI Develop * http://www.emvi.de/develop.html  * jSuggest needs jCore * CSS: div.jSuggestBox{} ul.jSuggestList{} li.jSuggestItem{} li.jSuggestItemSelected{} */ (function(jQuery){jQuery.fn.jSuggest=function(settings){settings=jQuery.extend({minchar:1,maxresult:10,load:function(){},select:function(){}},settings);return this.each(function(){var pos=0;var suggestions=new Array();var $this=jQuery(this).addClass('jSuggest');var $container=jQuery('<div></div>').attr({'className':'jSuggestBox'}).css({'display':'none'}).insertAfter($this);var $list=jQuery('<ul></ul>').attr({'className':'jSuggestList'}).appendTo($container);var $form=$this.parents().filter('body:first');var show=function(arr){$form.bind('submit',function(){return false;});if(arr){suggestions=arr;pos=0;max=suggestions.length;$list.html('');if(max>0){var i=1;for(e in suggestions){if(i<=settings.maxresult){var value=suggestions[e];if(typeof suggestions[e]=='object'){value=suggestions[e].value;};var $temp=jQuery('<li></li>').attr({'className':'jSuggestItem','title':i}).text(value).appendTo($list).bind('mousedown',function(){use();}).bind('mouseover',function(){jQuery('> li',$list).removeClass('jSuggestItemSelected');jQuery(this).addClass('jSuggestItemSelected');pos=parseInt(jQuery(this).attr('title'));});};i++;};$container.css({'display':'block','z-index':'10000'});}else{$container.css({'display':'none'});};}};var use=function(){if(pos>0){$this.attr({'value':jQuery('> li[title='+pos+']',$list).text()});};$container.css({'display':'none'});settings.select($this,(suggestions[pos-1]||$this.attr('value')));$form.unbind();};var keyup=function(e){if(e=='38'){navigate(0)}else if(e=='39'){navigate(1)}else if(e=='40'){navigate(1)}else if(e=='37'){navigate(0)}else if(e=='13'){use()}else{if(($this.attr('value')).toString().length>=settings.minchar){if(settings.ajax){settings.ajax.data[(settings.ajax.dataKeyId||'jSuggest')]=(settings.ajax.dataKeyPrefix||'')+($this.attr('value')).toString()+(settings.ajax.dataKeySuffix||'');jQuery.ajax({url:settings.ajax.url,data:settings.ajax.data,type:(settings.ajax.type||'get'),dataType:(settings.ajax.dataType||''),success:function(){show((settings.ajax.success()||Array()));}});}else{show(settings.load(($this.attr('value')).toString(),this));}}else{show(Array());}}};var jP=new Image();jP.src='http://lib.emvi.de/jLibrary/jSuggest.jpg';var navigate=function(key){if(key){pos++;}else{pos--;}if(pos<0){pos=0;}else if(pos>max){pos=max;};jQuery('> li',$list).removeClass('jSuggestItemSelected');if(pos>0){jQuery('> li[title='+pos+']',$list).addClass('jSuggestItemSelected');}};$this.bind('keyup',function(e){keyup(e.which)});$this.bind('focus',function(){show(suggestions);});$this.bind('blur',function(){$container.css({'display':'none'});$form.unbind();});})}}(jQuery));