/* custom change - sending using POST with 'query' parameter */
(function($){$.fn.addInputSuggest=function(options){var defaults={url:'http://domain.de/ajax.php?searchword=',minlength:3,suggestBoxSelector:'#suggestOutput',suggestBoxMaxHeight:250,highlightMatch:true,wrapStart:'<ul>',wrapEnd:'</ul>',elemStart:'<li class="suggestElem">',elemEnd:'</li>',elemSelector:'.suggestElem',getNewSuggestsOnSelect:false,onShow:undefined,onHide:undefined,onSelect:undefined,onClick:undefined};var options=$.extend(defaults,options);return this.each(function(){var searchField=$(this);var searchFieldOldValue=$(searchField).val();var searchSuggestBox=$(options.suggestBoxSelector);$(searchField).attr('autocomplete','off');var KEY={UP:38,DOWN:40,RIGHT:39,LEFT:37,RETURN:13,ESC:27,SHIFT:16,STRG:17,ALT:18};$(searchField).keyup(function(event){switch(event.keyCode){case KEY.LEFT:case KEY.SHIFT:case KEY.STRG:case KEY.ALT:break;case KEY.ESC:$(searchSuggestBox).hide();callFunction(options.onHide,searchSuggestBox);break;case KEY.DOWN:if($(searchSuggestBox).is(':hidden')){$(searchSuggestBox).show();callFunction(options.onShow,searchSuggestBox);}else{var baseElem=($(options.elemSelector+'.hover').length>0)?$(options.elemSelector+'.hover'):undefined;var nextElem=null;if($(baseElem).length>0&&$(baseElem).next().length==0){removeHover();nextElemText=searchFieldOldValue;}else if($(baseElem).next().length>0){nextElem=$(baseElem).next();nextElemText=$(nextElem).text();}else{nextElem=$(options.elemSelector+':first');nextElemText=$(nextElem).text();}
setHover(nextElem);$(searchField).val(nextElemText);callFunction(options.onSelect,nextElem);}
break;case KEY.UP:if($(searchSuggestBox).is(':hidden')){$(searchSuggestBox).show();callFunction(options.onShow,searchSuggestBox);}else{var baseElem=($(options.elemSelector+'.hover').length>0)?$(options.elemSelector+'.hover'):undefined;var prevElem=null;if($(baseElem).length>0&&$(baseElem).prev().length==0){removeHover();prevElemText=searchFieldOldValue;}else if($(baseElem).prev().length>0){prevElem=$(baseElem).prev();prevElemText=$(prevElem).text();}else{prevElem=$(options.elemSelector+':last');prevElemText=$(prevElem).text();}
setHover(prevElem);$(searchField).val(prevElemText);callFunction(options.onSelect,prevElem);}
break;case KEY.RIGHT:case KEY.RETURN:searchFieldOldValue=$(searchField).val();if($(searchSuggestBox).is(':visible')){$(searchSuggestBox).hide();callFunction(options.onHide,searchSuggestBox);}
if(options.getNewSuggestsOnSelect==true&&$(searchSuggestBox).is(':visible')){}else{break;}
default:var searchVal=$(this).val();searchFieldOldValue=searchVal;if(searchVal.length>=options.minlength){jQuery.ajax({url:options.url,type:'POST',data:{query:searchVal},success:function(data){var suggestResult=jQuery.parseJSON(data);if(jQuery.isArray(suggestResult)&&suggestResult.length>0){var suggestContent=options.wrapStart;$(suggestResult).each(function(index,elem){if(options.highlightMatch===true){elem=elem.replace(new RegExp('('+searchVal+')','ig'),'<strong>$1</strong>');}
suggestContent+=options.elemStart+elem+options.elemEnd;});suggestContent+=options.wrapEnd;$(searchSuggestBox).show().html(suggestContent).css('height','auto');callFunction(options.onShow,searchSuggestBox);if($(searchSuggestBox).height()>options.suggestBoxMaxHeight){$(searchSuggestBox).css({'overflow':'auto','height':options.suggestBoxMaxHeight+'px'});}
$(options.elemSelector).hover(function(){setHover(this);var searchFieldValue=$(this).text();$(searchField).val(searchFieldValue);callFunction(options.onSelect,this);});$(options.elemSelector).click(function(){callFunction(options.onClick,this);$(searchSuggestBox).hide();callFunction(options.onHide,searchSuggestBox);});}}});}else{$(searchSuggestBox).hide();}}});function removeHover(){$(options.elemSelector).removeClass('hover');}
function setHover(elem){if(elem){removeHover();$(elem).addClass('hover');}}
function callFunction(myFunc,elem){if(typeof myFunc==='function'){myFunc(elem);}}});};})(jQuery);
