/* suggest.js,minify 2009-11-20T23:09:07 */
function Suggest(options){var Query=null;var req=null;var div=null;if(!options.limit){options.limit=250;
}var timer=0;var cache=new Object();var _results=[];var _index=-1;var key=function(event){if((event.altKey)||(event.ctrlKey)){return(true);
}else{if(isCtrlKey(event.keyCode)){return(false);}else{if(isCursor(event.keyCode)){return(false);
}else{if(event.keyCode==27){options.input.val("");}if(!timer){timer=window.setTimeout(function(){send();
},150);}return(true);}}}};var isCursor=function(keycode){if(div==null){return(false);
}if((keycode==33)){highlight(0);return(true);}else{if((keycode==34)){highlight(_results.item.length-1);
return(true);}else{if((keycode==38)){highlight(_index-1);return(true);}else{if((keycode==40)){highlight(_index+1);
return(true);}else{if(keycode==13){select(_index);return(true);}}}}}};var highlight=function(index){if(index>_results.item.length-1){index=_results.item.length-1;
}else{if(index<0){index=-1;}}div.children(".suggest_item_selected").removeClass("suggest_item_selected");
if(index>-1){div.children().eq(index).addClass("suggest_item_selected");}_index=index;
};var select=function(index){hide();if(options.callback){if(index==-1){options.callback();
}else{options.input.val($("<span />").html(_results.item[index].name).text());options.callback(_results.item[index]);
}}else{options.input[0].form["id"].value=(index==-1)?"":_results.item[index].id;$(options.input[0].form).trigger("submit");
options.input[0].form.submit();}};var send=function(){timer=0;if(Query==options.input.val()){return ;
}else{Query=options.input.val();}if((Query.length!=0)&&(Query.search(/\S/)!=-1)){var result=cache[Query];
if(result){display(Query,result);}else{if(req){req.abort();}var _this=this;req=$.getJSON(options.service+encodeURIComponent(Query),function(data){display(Query,data);
});}}else{_index=-1;_results=[];hide();}};var hide=function(){if(div==null){return ;
}_index=-1;div.remove();};var display=function(query,results){if(query==null){_results=cache[Query];
if(_results==null){return ;}}else{cache[query]=_results=results;}index=-1;if(div!=null){div.remove();
}div=$("<div />").addClass("suggest").css({left:options.input.offset().left+"px",position:"absolute",top:(options.input.offset().top+options.input.outerHeight()-1)+"px",width:(options.input.outerWidth()-2)+"px"});
$(document.body).append(div);var j=0;for(var f=0;f<_results.item.length;f++){if(f==options.limit-1){_results.item.splice(f,_results.item.length-f);
break;}if(options.format){_results.item[f].data=options.format(_results.item[f]);
if(_results.item[f].data==null){_results.item.splice(f,1);f--;continue;}}var div_item=$("<div />").addClass("suggest_item").attr({id:"suggest_item_"+f}).appendTo(div);
div_item.append($("<div />").addClass("suggest_name").html(_results.item[f].name));
if(_results.item[f].data){div_item.append($("<div />").addClass("suggest_data").html(_results.item[f].data));
}}if(_results.item.length==0){div.append($("<div />").addClass("suggest_default").text("No matches found."));
}else{div.children().bind("mouseover",onMouseOver).bind("mouseout",onMouseOut).bind("mousedown",onMouseDown);
}};var onMouseDown=function(event){if(isLeftButton(event)){select(this.id.substring(13));
}};var onMouseOut=function(event){highlight(-1);};var onMouseOver=function(event){highlight(this.id.substring(13));
};var isCtrlKey=function(keycode){if((keycode==16)||(keycode==17)||(keycode==18)){return(true);
}else{return(false);}};var isLeftButton=function(e){var leftclick;if(!e){var e=window.event;
}if(e.which){leftclick=(e.which==1);}else{if(e.button){leftclick=(e.button==0||e.button==1);
}}return leftclick;};options.input.bind("keydown",key);options.input.bind("blur",function(event){window.setTimeout(function(){hide();
},150);});options.input.bind("focus",function(event){display();});}

