/*
* AUSU jQuery-Ajax Auto Suggest
* http://www.oslund.ca/
*/
(function($){$.fn.autosugguest=function(config){var defaults={className:'suggest',methodType:'POST',addParams:null,rtnIDs:false,dataFile:'data.php',minChars:4,fadeTime:100};var config=$.extend(defaults,config);config.addParams=(config.addParams!='')?'&'+config.addParams:'';jQuery('<div class="ausu-suggestionsBox"><ul></ul></div>').appendTo('.'+config.className);jQuery(".ausu-suggestionsBox > ul li").live('mouseover',function()
{var sel=jQuery(this).parent().find("li[class='selected']").removeClass('selected');jQuery(this).addClass('selected');});jQuery("."+config.className+" > input").keyup(function(event)
{var fieldParent=jQuery(this).parents('div.'+config.className);if(event.which!=39&&event.which!=37&&event.which!=38&&event.which!=40&&event.which!=13&&event.which!=9){fieldVal=fieldParent.find('input:eq(0)').val();suggest(fieldVal,this.id);}else{var fieldChild=fieldParent.find('.ausu-suggestionsBox > ul');switch(event.which)
{case 40:{keyEvent(fieldChild,'next');break;}
case 38:{keyEvent(fieldChild,'prev');break;}
case 13:{fieldParent.children('input:eq(0)').val(jQuery("li[class='selected'] a").text());if(config.rtnIDs==true)fieldParent.children('input:eq(1)').val(jQuery("li[class='selected']").attr("id"));fieldParent.children('div.ausu-suggestionsBox').hide();return false;break;}
case 9:{offFocus(this);jQuery("li").removeClass("selected");break;}}}});jQuery("."+config.className).bind("keypress",function(event){if(event.keyCode==13)return false;});jQuery("."+config.className+" > input").live("blur",function(){offFocus(this);jQuery("li").removeClass("selected");});function suggest(dataInput,id)
{if(dataInput.length<config.minChars){jQuery('#'+id).parent('.'+config.className).children('div.ausu-suggestionsBox').fadeOut();}else{jQuery('#'+id+":eq(0)").addClass('ausu-load');$.ajax({type:config.methodType,url:config.dataFile,dataType:"html",data:"data="+dataInput+"&id="+id+config.addParams,success:function(data){if(data.length>0)
{jQuery('#'+id).parent('div.'+config.className).children('div.ausu-suggestionsBox').fadeIn();jQuery('#'+id).parent('div.'+config.className).find('.ausu-suggestionsBox > ul').html(data);jQuery('#'+id+":eq(0)").removeClass('ausu-load');}
else
{jQuery('#'+id+":eq(0)").removeClass('ausu-load');}}});}}
function keyEvent(fieldChild,action)
{yx=0;fieldChild.find("li").each(function(){if(jQuery(this).attr("class")=="selected")
yx=1;});if(yx==1)
{var sel=fieldChild.find("li[class='selected']");(action=='next')?sel.next().addClass("selected"):sel.prev().addClass("selected");sel.removeClass("selected");}
else
{(action=='next')?fieldChild.find("li:first").addClass("selected"):fieldChild.find("li:last").addClass("selected");}}
function offFocus(fieldChild)
{var fieldParent=jQuery(fieldChild).parents('div.'+config.className);fieldParent.children('div.ausu-suggestionsBox').delay(config.fadeTime).fadeOut();}
jQuery(".ausu-suggestionsBox > ul li").live("click",function()
{var fieldParent=jQuery(this).parents('div.'+config.className);fieldParent.children('input:eq(0)').val(jQuery(this).text());if(config.rtnIDs==true)fieldParent.children('input:eq(1)').val(jQuery(this).attr("id"));fieldParent.children('div.ausu-suggestionsBox').hide();});};})(jQuery);
