var RokAjaxSearch=new Class({version:"0.6",options:{'results':null,'close':null,'search':null,'readmore':null,'noresults':null,'advsearch':null,'searchlink':null,'advsearchlink':null,'uribase':null,'limit':null,'perpage':null,'ordering':null,'phrase':null,'keyevents':true,'hidedivs':null,'includelink':null,'viewall':null,'showcategory':true,'showreadmore':true,'showdescription':true},initialize:function(options){this.setOptions(options);this.timer=null;this.rows=['roksearch_odd','roksearch_even'];this.inputBox=$('roksearch_search_str').setProperty('autocomplete','off');var pos=this.inputBox.getCoordinates();var left=pos.left+pos.width-$('roksearch_results').getSize().size.x;if(left<0)left=pos.left;this.results=$('roksearch_results').setStyles({'position':'absolute','top':pos.top+pos.height,'left':left}).inject(document.body);this.fx=new Fx.Style(this.results,'opacity').set(0);this.current=0;this.addEvents();this.keyEvents()},addEvents:function(){this.inputBox.addEvents({'click':function(){if(this.inputBox.getValue()==this.options.search)this.inputBox.value=''}.bind(this),'blur':function(){if(this.inputBox.getValue()=='')this.inputBox.value=this.options.search}.bind(this),'keydown':function(e){e=new Event(e);$clear(this.timer);if(e.key=='enter')e.stop()},'keyup':function(e){e=new Event(e);if(e.code==0||e.code==17||e.code==18||e.code==224||e.alt||e.control||e.meta)return false;if(e.alt||e.control||e.meta||e.key=='esc'||e.key=='up'||e.key=='down'||e.key=='left'||e.key=='right')return true;if(e.key=='enter')e.stop();if(e.key=='enter'&&this.selectedEl!=-1){if(this.selectedEl||this.selectedEl==0)location.href=this.els[this.selectedEl].getFirst('a');return false};$clear(this.timer);var lnk=this.options.searchlink.split("?")[0];lnk=lnk.replace(this.options.uribase,'');lnk=(lnk)?lnk:"index.php";var uri=this.options.uribase+lnk;if(this.inputBox.value==''){var splitDivs=this.options.hidedivs.split(" ");this.results.empty().removeClass('roksearch_results').setStyle('visibility','hidden');if(splitDivs.length>0&&splitDivs!='')splitDivs.each(function(div){$(div).setStyle('visibility','visible')})}else{var request=new Ajax(uri,{method:'get',delay:200,data:{'option':'com_search','view':'search','searchphrase':this.options.phrase,'ordering':this.options.ordering,'limit':this.options.limit,'searchword':this.inputBox.value,'tmpl':'component','r':$time()},onComplete:function(returns,b,c){var results=new Element('div').setHTML(returns);var tmp=$('rokajaxsearch_tmp');results.getChildren().each(function(div){if(div.getProperty('class')=='contentpaneopen'||div.id=='page'){if(div.id=='page'){var rs=div.getElement('.results');tmp.setHTML((rs)?rs.innerHTML:'')}else tmp.setHTML(div.innerHTML)}});this.results.empty().removeClass('roksearch_results').setStyle('visibility','visible');this.arrowleft=null;this.arrowright=null;this.selectedEl=-1;this.els=[];if(results.getElement('.contentpaneopen'))this.outputTable();else this.outputTableless();tmp.empty().setStyle('visibility','visible');this.fx.start(1);this.fireEvent('loaded')}.bind(this)});this.timer=request.request.delay(500,request)}}.bind(this)})},keyEvents:function(){var bounds={'keyup':function(e){e=new Event(e);if(e.key=='left'||e.key=='right'||e.key=='up'||e.key=='down'||e.key=='enter'||e.key=='esc'){e.stop();if(e.key=='left'&&this.arrowleft)this.arrowleft.fireEvent('click');else if(e.key=='right'&&this.arrowright)this.arrowright.fireEvent('click');else if(e.key=='esc'&&this.close)this.close.fireEvent('click',e);else if(e.key=='down'){var store=this.selectedEl;if(this.selectedEl==-1)this.selectedEl=(this.options.perpage)*this.current;else if(this.selectedEl+1<this.els.length)this.selectedEl++;else return;if(store!=-1)this.els[store].fireEvent('mouseleave');if((this.selectedEl/this.options.perpage).toInt()>this.current)this.arrowright.fireEvent('click',true);if(this.selectedEl||this.selectedEl==0)this.els[this.selectedEl].fireEvent('mouseenter')}else if(e.key=='up'){var store=this.selectedEl;if(this.selectedEl==-1)this.selectedEl=(this.options.perpage)*this.current;else if(this.selectedEl-1>=0)this.selectedEl--;else return;if(store!=-1)this.els[store].fireEvent('mouseleave');if((this.selectedEl/this.options.perpage).toInt()<this.current)this.arrowleft.fireEvent('click',true);if(this.selectedEl||this.selectedEl==0)this.els[this.selectedEl].fireEvent('mouseenter')}else if(e.key=='enter'){if(this.selectedEl||this.selectedEl==0)window.location=this.els[this.selectedEl].getElement('a')}}}.bind(this)};if(this.options.keyevents){this.addEvent('loaded',function(){document.addEvent('keyup',bounds.keyup)});this.addEvent('unloaded',function(){document.removeEvent('keyup',bounds.keyup)})}},outputTable:function(){var self=this;var wrapper1=new Element('div',{'class':'roksearch_wrapper1'}).inject(this.results);var wrapper2=new Element('div',{'class':'roksearch_wrapper2'}).inject(wrapper1);var wrapper3=new Element('div',{'class':'roksearch_wrapper3'}).inject(wrapper2);var wrapper4=new Element('div',{'class':'roksearch_wrapper4'}).inject(wrapper3);var header=new Element('div',{'class':'roksearch_header png'}).setHTML(this.options.results).injectInside(wrapper4);this.close=new Element('a',{'id':'roksearch_link','class':'png'}).setProperty('href','#').setHTML(this.options.close).injectBefore(header);var splitDivs=this.options.hidedivs.split(" ");this.close.addEvent('click',function(e){this.fireEvent('unloaded');new Event(e).stop();this.inputBox.value=this.options.search;var self=this;this.fx.start(0).chain(function(){self.results.empty().removeClass('roksearch_results')});if(splitDivs.length>0&&splitDivs!='')splitDivs.each(function(div){$(div).setStyle('visibility','visible')})}.bind(this));if(splitDivs.length>0&&splitDivs!='')splitDivs.each(function(div){$(div).setStyle('visibility','hidden')});this.results.addClass('roksearch_results');var searchedRestuls=$$('#rokajaxsearch_tmp fieldset');if(searchedRestuls.length>0){var container=new Element('div',{'class':'container-wrapper'}).inject(wrapper4);var scroller=new Element('div',{'class':'container-scroller'}).inject(container);searchedRestuls.each(function(res,i){var data='';data=res.getChildren();if(data.length>0){data.each(function(div,j){if(div.getTag()=="div"){if(div.getChildren().length>2&&!div.getPrevious()){var suri=div.getFirst().getNext().getProperty('href');var el=new Element('div',{'class':this.rows[i%2]+' png'});var lnk=new Element('a').setProperty('href',suri).injectInside(el);var name=new Element('h3').setHTML(div.getFirst().getNext().getText()).injectInside(lnk);this.els.push(el);el.addEvents({'mouseenter':function(){this.addClass(self.rows[i%2]+'-hover');self.selectedEl=i},'mouseleave':function(){this.removeClass(self.rows[i%2]+'-hover');if(self.selectedEl==i)self.selectedEl=-1}});if(this.options.showdescription)var description=div.getNext().innerHTML;else var description='';var desc=new Element('span').setHTML(description).injectAfter(lnk);if(this.options.showcategory){var cat=new Element('span',{'class':'small'}).setHTML(div.getChildren().getLast().getText()).injectAfter(lnk);var br=new Element('br').injectAfter(cat)}if(this.options.showreadmore){var lnk=new Element('a',{'class':'clr'}).setProperty('href',suri).setHTML(this.options.readmore).injectAfter(desc);if(this.options.showdescription)var br=new Element('br').injectAfter(desc)}var innerWrapper1=new Element('div',{'class':'roksearch_result_wrapper1 png'}).inject(scroller);var innerWrapper2=new Element('div',{'class':'roksearch_result_wrapper2 png'}).inject(innerWrapper1);var innerWrapper3=new Element('div',{'class':'roksearch_result_wrapper3 png'}).inject(innerWrapper2);var innerWrapper4=new Element('div',{'class':'roksearch_result_wrapper4 png'}).inject(innerWrapper3);el.inject(innerWrapper4)}}},this)}},this);var splitting=scroller.getChildren();var max=Math.max(this.options.perpage,splitting.length);var min=Math.min(this.options.perpage,splitting.length);var perpage=this.options.perpage;this.page=[];(Math.abs(max/min)).times(function(i){if(splitting[i])this.page.push(new Element('div',{'class':'page page-'+i}).inject(scroller).setStyle('width',scroller.getStyle('width')));for(j=0,l=perpage;j<l;j++){if(splitting[i*perpage+j])splitting[i*perpage+j].inject(this.page[i])}}.bind(this));scroller.setStyle('width',container.getStyle('width').toInt()*Math.round(max/min)+1000)}if(!searchedRestuls.length){var el=new Element('div',{'class':this.rows[0]});var name=new Element('h3').setHTML(this.options.noresults).injectInside(el);var lnk=new Element('a').setProperty('href',this.options.advsearchlink).injectAfter(name);var name=new Element('span').setHTML(this.options.advsearch).injectInside(lnk);el.inject(wrapper4)}else{if(this.options.includelink){var limit=$$('#rokajaxsearch input[name=limit]')[0];this.bottombar=new Element('div',{'class':"roksearch_row_btm png"});var lnk2=new Element('a').setProperty('href',"#").injectInside(this.bottombar);var name=new Element('span').setHTML(this.options.viewall).injectInside(lnk2);lnk2.addEvent('click',function(e){new Event(e).stop();limit.value='';$('rokajaxsearch').submit()});this.bottombar.inject(wrapper4);if(splitting.length>this.options.perpage){this.arrowDiv=new Element('div',{'class':'container-arrows'}).inject(this.bottombar,'top');this.arrowleft=new Element('div',{'class':'arrow-left-disabled'}).inject(this.arrowDiv);this.arrowright=new Element('div',{'class':'arrow-right'}).inject(this.arrowDiv);this.arrowsInit(container)}}}},outputTableless:function(){var self=this;var wrapper1=new Element('div',{'class':'roksearch_wrapper1'}).inject(this.results);var wrapper2=new Element('div',{'class':'roksearch_wrapper2'}).inject(wrapper1);var wrapper3=new Element('div',{'class':'roksearch_wrapper3'}).inject(wrapper2);var wrapper4=new Element('div',{'class':'roksearch_wrapper4'}).inject(wrapper3);var header=new Element('div',{'class':'roksearch_header png'}).setHTML(this.options.results).injectInside(wrapper4);this.close=new Element('a',{'id':'roksearch_link','class':'png'}).setProperty('href','#').setHTML(this.options.close).injectBefore(header);var splitDivs=this.options.hidedivs.split(" ");this.close.addEvent('click',function(e){this.fireEvent('unloaded');new Event(e).stop();this.inputBox.value=this.options.search;var self=this;this.fx.start(0).chain(function(){self.results.empty().removeClass('roksearch_results')});if(splitDivs.length>0&&splitDivs!='')splitDivs.each(function(div){$(div).setStyle('visibility','visible')})}.bind(this));if(splitDivs.length>0&&splitDivs!='')splitDivs.each(function(div){$(div).setStyle('visibility','hidden')});this.results.addClass('roksearch_results');var searchedRestuls=$$('#rokajaxsearch_tmp ol.list li');if(searchedRestuls.length>0){var container=new Element('div',{'class':'container-wrapper'}).inject(wrapper4);var scroller=new Element('div',{'class':'container-scroller'}).inject(container);searchedRestuls.each(function(res,i){var data='';data=res.getChildren();if(data.length>0){var suri=res.getElement('a').getProperty('href');var el=new Element('div',{'class':this.rows[i%2]+' png'});var lnk=new Element('a').setProperty('href',suri).injectInside(el);var name=new Element('h3').setHTML(data[0].getText()).injectInside(lnk);this.els.push(el);el.addEvents({'mouseenter':function(){this.addClass(self.rows[i%2]+'-hover');self.selectedEl=i},'mouseleave':function(){this.removeClass(self.rows[i%2]+'-hover');if(self.selectedEl==i)self.selectedEl=-1}});if(this.options.showdescription)var description=data[2].innerHTML;else var description='';var desc=new Element('span').setHTML(description).injectAfter(lnk);if(this.options.showcategory){var cat=new Element('span',{'class':'small'}).setHTML(data[1].getText()).injectAfter(lnk);var br=new Element('br').injectAfter(cat)}if(this.options.showreadmore){var lnk=new Element('a',{'class':'clr'}).setProperty('href',suri).setHTML(this.options.readmore).injectAfter(desc);if(this.options.showdescription)var br=new Element('br').injectAfter(desc)}var innerWrapper1=new Element('div',{'class':'roksearch_result_wrapper1 png'}).inject(scroller);var innerWrapper2=new Element('div',{'class':'roksearch_result_wrapper2 png'}).inject(innerWrapper1);var innerWrapper3=new Element('div',{'class':'roksearch_result_wrapper3 png'}).inject(innerWrapper2);var innerWrapper4=new Element('div',{'class':'roksearch_result_wrapper4 png'}).inject(innerWrapper3);el.inject(innerWrapper4)}},this);var splitting=scroller.getChildren();var max=Math.max(this.options.perpage,splitting.length);var min=Math.min(this.options.perpage,splitting.length);var perpage=this.options.perpage;this.page=[];(Math.abs(max/min)).times(function(i){if(splitting[i])this.page.push(new Element('div',{'class':'page page-'+i}).inject(scroller).setStyle('width',scroller.getStyle('width')));for(j=0,l=perpage;j<l;j++){if(splitting[i*perpage+j])splitting[i*perpage+j].inject(this.page[i])}}.bind(this));scroller.setStyle('width',container.getStyle('width').toInt()*Math.round(max/min)+1000)}if(!searchedRestuls.length){var el=new Element('div',{'class':this.rows[0]});var name=new Element('h3').setHTML(this.options.noresults).injectInside(el);var lnk=new Element('a').setProperty('href',this.options.advsearchlink).injectAfter(name);var name=new Element('span').setHTML(this.options.advsearch).injectInside(lnk);el.inject(wrapper4)}else{if(this.options.includelink){var limit=$$('#rokajaxsearch input[name=limit]')[0];this.bottombar=new Element('div',{'class':"roksearch_row_btm png"});var lnk2=new Element('a',{'class':'viewall'}).setProperty('href',"#").injectInside(this.bottombar);var name=new Element('span').setHTML(this.options.viewall).injectInside(lnk2);lnk2.addEvent('click',function(e){new Event(e).stop();limit.value='';$('rokajaxsearch').submit()});this.bottombar.inject(wrapper4);if(splitting.length>this.options.perpage){this.arrowDiv=new Element('div',{'class':'container-arrows'}).inject(this.bottombar,'top');this.arrowleft=new Element('div',{'class':'arrow-left-disabled'}).inject(this.arrowDiv);this.arrowright=new Element('div',{'class':'arrow-right'}).inject(this.arrowDiv);this.arrowsInit(container)}}}},arrowsInit:function(wrapper){this.scroller=new Fx.Scroll(wrapper,{wait:false});this.arrowleft.addEvent('click',function(downkey){if(!downkey&&this.selectedEl>=0)this.els[this.selectedEl].fireEvent('mouseleave');if(!downkey)this.selectedEl=-1;if(this.current-1<=0){this.arrowleft.removeClass('arrow-left').addClass('arrow-left-disabled');this.arrowright.removeClass('arrow-right-disabled').addClass('arrow-right')}else{this.arrowleft.removeClass('arrow-left-disabled').addClass('arrow-left');this.arrowright.removeClass('arrow-right-disabled').addClass('arrow-right')}if(!this.current)return;else{if(this.current<0)this.current=0;else this.current-=1;this.scroller.toElement(this.page[this.current])}}.bind(this));this.arrowright.addEvent('click',function(downkey){if(!downkey&&this.selectedEl>=0)this.els[this.selectedEl].fireEvent('mouseleave');if(!downkey)this.selectedEl=-1;if(this.current+1>=this.page.length-1){this.arrowleft.removeClass('arrow-left-disabled').addClass('arrow-left');this.arrowright.removeClass('arrow-right').addClass('arrow-right-disabled')}else{this.arrowleft.removeClass('arrow-left').addClass('arrow-left-disabled');this.arrowright.removeClass('arrow-right-disabled').addClass('arrow-right')}if(this.current>=this.page.length)return;else{if(this.arrowleft.hasClass('arrow-left-disabled'))this.arrowleft.removeClass('arrow-left-disabled').addClass('arrow-left');if(this.current>=this.page.length-1)this.current=this.page.length-1;else this.current+=1;this.scroller.toElement(this.page[this.current])}}.bind(this))}});RokAjaxSearch.implement(new Options,new Events);
