JS2.OO.createClass("SearchSuggest.Main");SearchSuggest.Main.oo('extends',JS2.Main);(function(K,Package){var self=K;var _super=JS2.OO['super'];K.oo('method',"initialize",function(options){this.truncLength=options.truncLength||20;this.jqSearchButton=options.button;this.suggestLinkMode=(this.jqSearchButton==null);this.jqSearchInput=$(options.input);var TMP_SEL_MARKER=this.SEL_MARKER||JS2.SEL_MARKER;TMP_SEL_MARKER.addVal(TMP_SEL_MARKER.getRealClassScope(this),"Search Input",this.jqSearchInput,null);if(!options.withoutToggleInput){this.jqSearchInput.toggleInput();if(!$.isEmpty(options.query)){this.jqSearchInput.toggleInput('val',options.query);}}
this.useCache=options.useCache;if(this.useCache==null)this.useCache=true;this.baseUrl=options.baseUrl||'/search/suggest';this.params=options.params||{};this.ajax=null;this.timeout=null;this.cache={};this.enabled=true;});K.oo('method',"e_start",function(){this.seed.setSeed(this.htmlCache.main());this.seed.setSass();this.initHTML();this.registerEvents();});K.oo('method',"enable",function(){this.enabled=true;});K.oo('method',"disable",function(){this.enabled=false;});K.oo('method',"initHTML",function(){var jq=this.seed.jq;this.jqSuggest=jq.first('.suggestContent');this.jqSuggestStatus=jq.first('.suggestStatus');var TMP_SEL_MARKER=this.SEL_MARKER||JS2.SEL_MARKER;TMP_SEL_MARKER.addVal(TMP_SEL_MARKER.getRealClassScope(this),"Suggest Status",this.jqSuggestStatus,null);this.jqSuggestList=this.jqSuggest.first('.suggestList');var TMP_SEL_MARKER=this.SEL_MARKER||JS2.SEL_MARKER;TMP_SEL_MARKER.addVal(TMP_SEL_MARKER.getRealClassScope(this),"Suggest List",this.jqSuggestList,null);this.jqForm=jq.parents('form:first');});K.oo('method',"registerEvents",function(){var self=this;$(document).click(function(evt){var jq=$(evt.target||evt.srcElement).parents('.SearchSuggest');if(jq.length==0){self.closeSuggest();}});var self=this;this.jqSearchInput.keydown(function(evt){switch(evt.keyCode){case KEYCODE.ESC:self.closeSuggest();break;case KEYCODE.BACKSPACE:self.closeSuggest();break;case KEYCODE.ENTER:self.executeSearch();break;case KEYCODE.DOWN:self.changeSelect(1);break;case KEYCODE.TAB:self.changeSelect(1);if(self.jqSelected)self.jqSelected.click();break;case KEYCODE.UP:self.changeSelect(-1);break;default:if(self.timeout)clearTimeout(self.timeout);self.timeout=setTimeout(function(){self.getSuggest();},500);break;}});this.jqSuggestList.mouseover(function(evt){var jqTarget=$(evt.target||evt.srcElement);if(jqTarget.length>0){if(!jqTarget.hasClass('suggestItem')){jqTarget=jqTarget.parents('.suggestItem:first');}
self.jqSelected=jqTarget;}});this.jqSuggestList.click(function(){if(self.jqSearchButton){self.jqSearchInput.attr('value',self.jqSelected.attr('title'));self.jqSearchButton.click();}});this.jqForm.submit(function(){if(self.ajax)self.ajax.abort();});});K.oo('method',"executeSearch",function(){if(this.jqSelected&&this.jqSelected.size()>0){this.jqForm.submit(function(){return false;});this.jqSearchInput.attr('value',this.jqSelected.attr('title'));if(this.suggestLinkMode){window.location=this.jqSelected.first('a').attr('href');}}
this.closeSuggest();});K.oo('method',"highlight",function(query,text,len){if(text.length>len){text=text.substr(0,len).concat('...');}
query=query.toString().replace(/([\^\[\]\\\$\*\(\)\+\-\?\.\,\{\}\:\/\!\=\<\>\|])/g,'\\$1');return text.replace(new RegExp("("+query+")","gi"),"<span class='searchHighlight'>$1</span>");});K.oo('method',"showSuggest",function(query,results){this.jqSuggestList.html('');var self=this;if(results&&results.length>0){results.sort(function(a,b){return b.score-a.score;})
$.each(results,function(index,value){var text=self.highlight(query,this.value,self.truncLength);var description=this.score;description+=this.score>1?' results':' result';var jqItem=(self.suggestLinkMode)?$(self.htmlCache.suggestLink(text,description,escape(this.value))):$(self.htmlCache.suggestItem(text,description,this.value));if(index==0)jqItem.addClass('first');if(index==results.length-1)jqItem.addClass('last');self.jqSuggestList.append(jqItem);});self.jqSuggest.show();self.jqSuggestStatus.hide();self.suggestMode=true;}else{self.closeSuggest();}});K.oo('method',"suggesting",function(){return(this.suggestMode==true);});K.oo('method',"closeSuggest",function(){this.jqSuggest.hide();this.jqSuggestStatus.hide();this.jqSelected=null;this.suggestMode=false;});K.oo('method',"getSuggest",function(){if(!this.enabled)return;var query=$.trim(this.jqSearchInput.val());if(query.length<=0){this.closeSuggest();return;}
this.jqSuggestStatus.html('searching...').show();this.jqSuggest.hide();var results=this.cache[query];if(results){this.showSuggest(query,results);}else{if(this.ajax)this.ajax.abort();var self=this;var params=this.params;params.query=query;this.ajax=sci.ajax.get(this.baseUrl,params,function(ret){var results=ret.results;if(self.useCache)self.cache[query]=results;self.showSuggest(query,results);});}});K.oo('method',"changeSelect",function(step){this.jqSelected=this.jqSuggestList.first('.suggestItemHover');if(this.jqSelected.size()>0){this.jqSelected.removeClass('suggestItemHover');this.jqSelected=step>0?this.jqSelected.next():this.jqSelected.prev();}else{this.jqSelected=step>0?this.jqSuggestList.first('.suggestItem'):this.jqSuggestList.find('.suggestItem:last');}
this.jqSelected.addClass('suggestItemHover');});})(SearchSuggest.Main,SearchSuggest);SearchSuggest.Main.oo('setHTMLCache',{"suggestLink":function(text,description,value){return"<li class='suggestItem h'><a href='\/search?q="+value+"'><span>"+text+"<\/span><span class='description'> - "+description+"<\/span><\/a><\/li>"},"suggestItem":function(text,description,value){return"<li class='suggestItem' title='"+value+"'><span>"+text+"<\/span><span class='description'> - "+description+"<\/span><\/li>"},"fields":function(fields){return"<div>Fields: "+fields+"<\/div>"},"main":function(){return"<div class='SearchSuggest dialogShadow'><div class='suggestContent content hidden'><ol class='suggestList'><\/ol><\/div><div class='suggestStatus content hidden'><\/div><\/div>"},"tableType":function(type,title){return"<li class='"+type+"' title='"+title+"'><\/li>"},"source":function(source){return"<div>Source: "+source+"<\/div>"},"item":function(id,title,description,more){return"<li class='suggestItem'><div class='info'><a href='\/tables\/"+id+"'><div><span>"+title+"<\/span><span class='description'>"+description+"<\/span><\/div><div class='more'>"+more+"<\/div><\/a><\/div><div class='clear'><\/div><\/li>"}});JS2.OO.createClass("SearchSuggestV2.Main");SearchSuggestV2.Main.oo('extends',JS2.Main);(function(K,Package){var self=K;var _super=JS2.OO['super'];K.oo('method',"initialize",function(options){this.results={};this.jqSearchInput=$(options.input);if(options.useCache==null){this.useCache=true;}else{this.useCache=options.useCache;}
this.baseUrl=options.baseUrl||'/search/suggest';this.params=options.params||{};});K.oo('method',"e_start",function(){this.initAutoComplete();});K.oo('method',"enable",function(){this.jqSearchInput.autocomplete("enable");});K.oo('method',"disable",function(){this.jqSearchInput.autocomplete("disable");});K.oo('method',"initAutoComplete",function(){this.jqSearchInput.autocomplete({source:(function(self){return function(request,response){self.getSearchResult(request,response);}})(this)});});K.oo('method',"getSearchResult",function(request,response){if(this.results[request.term]){response(this.results[request.term]);return;}
if(this.ajax)this.ajax.abort();var params=$.extend(true,{},this.params);params['query']=request.term;this.ajax=sci.ajax.get(this.baseUrl,params,(function(request,response,self){return function(data){response(self.parseSuggestions(request.term,data));}})(request,response,this));});K.oo('method',"parseSuggestions",function(term,data){try{this.results[term]=$.map(data.results,function(item){return{label:item.value,value:item.value}});return this.results[term];}catch(e){this.results[term]=undefined;return[];}});})(SearchSuggestV2.Main,SearchSuggestV2);SearchSuggestV2.Main.oo('setHTMLCache',{});