
/* - som_livesearch.js - */
// http://www.med.unc.edu/oge/portal_javascripts/som_livesearch.js?original=1
var livesearch=function(){var _search_delay=400;var _hide_delay=400;var _search_handlers={};var _LSHighlight="LSHighlight";
function _searchfactory($form,$inputnode){var $lastsearch=null;var $request=null;var $cache={};var $querytarget="som_livesearch_reply";var $querytarget=$form.attr('action').replace(/som_search_portlet_results$/g,"")+$querytarget;var $$result=$form.find('div.LSResult');var $shadow=$form.find('div.LSShadow');var $path=$form.find('input[name=path]');var $subsite_paths=$form.find("input[name=subsite_paths]").val();var $parent_only=$form.find("input[name=parent_only]").val();
function _hide(){$$result.hide();$lastsearch=null};
function _hide_delayed(){window.setTimeout('livesearch.hide("'+$form.attr('id')+'")',_hide_delay)};
function _show($data){$$result.show();$shadow.html($data)};
function _search(){if($lastsearch==$inputnode.value){return}
$lastsearch=$inputnode.value;if($request&&$request.readyState<4)
$request.abort();if($inputnode.value.length<2){_hide();return}
var $$query={q:$inputnode.value};if($path.length&&$path[0].checked)
$$query['path']=$path.val();$$query['subsite_paths']=$subsite_paths;$$query['parent_only']=$parent_only;$$query=jq.param($$query);if($cache[$$query]){_show($cache[$$query]);return}
$request=jq.get($querytarget,$$query, function($data){_show($data);$cache[$$query]=$data},'text')};
function _search_delayed(){window.setTimeout('livesearch.search("'+$form.attr('id')+'")',_search_delay)};return{hide:_hide,hide_delayed:_hide_delayed,search:_search,search_delayed:_search_delayed}};
function _keyhandlerfactory($form){var $timeout=null;var $$result=$form.find('div.LSResult');var $shadow=$form.find('div.LSShadow');
function _keyUp(){$cur=$shadow.find('li.LSHighlight').removeClass(_LSHighlight);$prev=$cur.prev('li');if(!$prev.length) $prev=$shadow.find('li:last');$prev.addClass(_LSHighlight);return false};
function _keyDown(){$cur=$shadow.find('li.LSHighlight').removeClass(_LSHighlight);$next=$cur.next('li');if(!$next.length) $next=$shadow.find('li:first');$next.addClass(_LSHighlight);return false};
function _keyEscape(){$shadow.find('li.LSHighlight').removeClass(_LSHighlight);$$result.hide()};
function _handler($event){window.clearTimeout($timeout);switch($event.keyCode){case 38:return _keyUp();case 40:return _keyDown();case 27:return _keyEscape();case 37:break;case 39:break;default:{$timeout=window.setTimeout('livesearch.search("'+$form.attr('id')+'")',_search_delay)}}};
function _submit(){var $target=$shadow.find('li.LSHighlight a').attr('href');if(!$target) return;window.location=$target;return false};return{handler:_handler,submit:_submit}};
function _setup(i){var $id='livesearch'+i;var $form=jq(this).parents('form:first');var $key_handler=_keyhandlerfactory($form);_search_handlers[$id]=_searchfactory($form,this);$form.attr('id',$id).css('white-space','nowrap').submit($key_handler.submit);jq(this).attr('autocomplete','off').keydown($key_handler.handler).focus(_search_handlers[$id].search_delayed).blur(_search_handlers[$id].hide_delayed)};jq(function(){jq("#searchGadget,input.portlet-search-gadget").each(_setup)});return{search: function(id){_search_handlers[id].search()},hide: function(id){_search_handlers[id].hide()}}}();

