(function($){$.fn.uoSearch=function(options){var defaultOptions={formId:'aaaa',phraseField:'aaaa',suggestBox:'aaaa',suggestContainer:'aaaa',listContainer:'aaaa',submitControl:'aaaa',action:'aaaa',suggestAction:'aaaa',phraseRequestName:'aaaa',suggestRequestName:'aaaa',useSuggestions:1,useInstantSearch:1,useAjaxSearch:0,focusSearch:0};options=$.extend(defaultOptions,options);var $ctrls={form:$('#'+options.formId),phraseField:$('#'+options.phraseField),suggestBox:$('#'+options.suggestBox),suggestContainer:$('#'+options.suggestContainer),listContainer:$('#'+options.listContainer),submitControl:$('#'+options.submitControl)};if(options.focusSearch)
$ctrls.phraseField.focus();if(options.useAjaxSearch)
$ctrls.submitControl.click(function(){__makeInstantCall(0,1);return false;});if(options.useInstantSearch)
$ctrls.form.find('input[type=radio], input[type=checkbox], select').change(function(event){return __makeInstantCall();});if(options.useInstantSearch)
$ctrls.phraseField.keypress(function(event){return __rateKey(event);});if(options.useSuggestions){$ctrls.suggestBox.live('keypress',function(event){return __rateKey(event);});$ctrls.suggestBox.live('click',function(event){return __applySuggestion();});$ctrls.phraseField.keyup(function(event){return __makeSuggestCall(event);});$ctrls.phraseField.keypress(function(event){return __rateKey(event);});if(options.useInstantSearch)
$ctrls.phraseField.keyup(function(event){return __makeInstantCall(event);});}
var timers={suggest:0,instant:0};function __applySuggestion(){$ctrls.phraseField.val($('#'+options.suggestBox).val());if(options.useInstantSearch)
__makeInstantCall(0,1);$ctrls.phraseField.focus();$('#'+options.suggestBox).hide();return true;}
function __rateKey(e){switch(e.keyCode){case 13:if($('#'+options.suggestBox).val())
__applySuggestion();$ctrls.form.submit();break;case 27:$('#'+options.suggestBox).hide();$('#'+options.suggestBox).focus();break;case 38:if($('#'+options.suggestBox).attr('selectedIndex')==0)
$ctrls.phraseField.focus();break;case 40:if($('#'+options.suggestBox).attr('selectedIndex')==-1)
{$('#'+options.suggestBox).focus();$('#'+options.suggestBox).attr('selectedIndex',0);}
break;}
return true;}
function __makeSuggestCall(e){if(!e||e.keyCode==8||(e.keyCode>40&&e.keyCode<=127)){if(timers.suggest){clearTimeout(timers.suggest);timers.suggest=0;}
timers.suggest=setTimeout(function(){var values=$ctrls.form.serializeArray();var params={};$.each(values,function(){params[this['name']]=this['value'];});var val=params[options.phraseRequestName];params[options.suggestRequestName]=val?val:1;$ctrls.suggestContainer.show();$ctrls.suggestContainer.css({position:'absolute',top:0,left:0});$ctrls.suggestContainer.load(options.suggestAction,params,function(){var css={position:'absolute',left:$ctrls.phraseField.position().left,top:$ctrls.phraseField.position().top
+$ctrls.phraseField.height(),width:$ctrls.phraseField.width()};$('#'+options.suggestBox).css(css);timers.suggest=0;});},250);}}
function __makeInstantCall(e,noWait){if(!e||e.keyCode==8||(e.keyCode>40&&e.keyCode<=127)){if(timers.instant){clearTimeout(timers.instant);timers.instant=0;}
var valLength=$ctrls.phraseField.val().length;if(valLength==0||valLength>3||!e){timers.instant=setTimeout(function(){var values=$ctrls.form.serializeArray();var params={};$.each(values,function(){params[this['name']]=this['value'];});$ctrls.listContainer.load(options.action,params,function(){timers.instant=0;});},(noWait?0:500));}}}
this.displayScreenshot=function(caller,url){return;var $div=$('<div style="background: red; position: absolute">').hide();var $img=$('<img src="'+url+'" />').load(function(){$div.show();var $caller=$(caller);var callerSize={width:$caller.width(),height:$caller.height()};var imgSize={width:$img.width(),height:$img.height()};var cPosition=$caller.position();var windowSize={height:$(window).height(),width:$(window).width()};var trgtTop=cPosition.top-(imgSize.height-callerSize.height)/2;var trgtEndOverflow=imgSize.height+trgtTop;var trgtPosition={left:cPosition.left+callerSize.width,top:trgtTop};$div.css(trgtPosition);}).appendTo($div);$('body').append($div);}
this.didYouMean=function(caller){$caller=$(caller);$ctrls.phraseField.val($caller.text());$ctrls.submitControl.trigger('click');}
return this;}})(jQuery);
