/**
* @copyright	Copyright (C) 2011 Hussfelt Consulting AB. All rights reserved.
* @license		GNU/GPL, see LICENSE.php
* MigurSearch is free software. This version may have been modified pursuant
* to the GNU General Public License, and as distributed it includes or
* is derivative of works licensed under the GNU General Public License or
* other free or open source software licenses.
* See COPYRIGHT.php for copyright notices and details.
*/

var MigurSearch=new Class({Implements:Options,options:{lang:{results:"Results",close:"Close",search:"Search",readmore:"Read more...",noresults:"No results.",advsearch:"Advanced search",viewall:"View all",totalfound:"Total: %% results found."},site_url:"",usetemplate:"beez5",limit:10,ordering:"newest",searchphrase:"any",hide_divs:"",show_spinner:1,show_link:1,adv_search_link:"",show_category:1,show_readmore:1,show_description:1,show_results:1,show_no_results:1,hide_flash:0,delay:200,useTemplateOverride:false, inputFieldId:"mod-search-searchword",latency:500},initialize:function(a){this.setOptions(a);this.inputfield=$(this.options.inputFieldId);this.currentclass=""},fetch:function(){var a=new Date,b=this;this.currentclass="";delete this.transport;this.transport=(new Request.HTML({url:this.options.site_url,delay:this.options.delay,onFailure:function(){b.failure()},onRequest:function(){b.spinner(true)},onSuccess:function(a,c,e){a={};b.options.useTemplateOverride==1?(c=JSON.decode(e),e=b.parseJSONResult(c), a.countText=b.options.lang.totalfound.replace("%%",c.totalFound)):(c=new Element("div",{html:e}),e=b.parseHTMLResult(c),elementTotalFound=c.getElements("div.searchintro"),a.countText=String.from(elementTotalFound[0].getFirst().getFirst().get("text")),delete c);a.results=e;b.show(a)}})).post({template:this.options.usetemplate,tmpl:"component",option:"com_search",limit:this.options.limit,ordering:this.options.ordering,searchphrase:this.options.searchphrase,searchword:this.inputfield.getProperty("value"), time:a.getTime(),layout:this.options.useTemplateOverride?"json":"default"})},spinner:function(a){this.options.show_spinner&&(a?this.inputfield.inject((new Element("span",{id:"mg_spinner"})).set("text","..."),"before"):$("mg_spinner")&&$("mg_spinner").destroy())},failure:function(){$("mg_spinner").remove();alert("Failure")},parseHTMLResult:function(a){var b=[],d=a.getElements("dt.result-title"),c=a.getElements("dd.result-category"),e=a.getElements("dd.result-text");a.getElements("dd.result-created"); for(a=0;a<d.length;a++){var f={};f.href=d[a].getElement("a").get("href").trim().stripScripts();f.title=d[a].getElement("a").get("text").trim().stripScripts();f.text=e[a].get("html").stripScripts();f.category=c[a].getElement("span").get("text").trim().stripScripts();b.include(f)}return b},parseJSONResult:function(a){for(var b=[],d=0;d<a.elements.length;d++){var c={};c.href=a.elements[d].resultTitle.href;c.title=a.elements[d].resultTitle.text;c.text=a.elements[d].resultText.text;c.category=a.elements[d].resultCategory.text; b.include(c)}return b},show:function(a){this.spinner(false);var b=this;$("migursearch_results")&&$("migursearch_results").destroy();a.results.length>0?(b.prepareContainer(),this.currentclass="",a.results.each(function(a){b.createRow(a)}),this.options.show_results&&$("migursearch_results").grab((new Element("div",{id:"mg_no_results"})).set("text",a.countText)),this.options.show_link&&(a=(new Element("a",{id:"mg_adv_link"})).set("href",this.options.adv_search_link),a.grab((new Element("span")).set("text", this.options.lang.advsearch)),$("migursearch_results").grab(a.addClass("mg_adv_link")))):this.options.show_no_results&&(b.prepareContainer(),$("migursearch_results").set("text",this.options.lang.noresults),$("migursearch_results").addClass("migursearch_noresults"))},prepareContainer:function(){$("migursearch_results")&&$("migursearch_results").destroy();var a=$(this.options.inputFieldId);if(!a)return false;a=a.getCoordinates($$("body")[0]);a=new Element("div",{id:"migursearch_results",styles:{position:"absolute", top:a.top+a.height,left:a.left,zIndex:"65535"}});a.inject($$("body")[0],"after");a.grab(new Element("a",{id:"migursearch_close",href:"#",events:{click:function(){$("migursearch_results").setStyles({display:"none"})}}}))},createRow:function(a){this.currentclass=this.currentclass=="mg_row1"?"mg_row2":"mg_row1";var b=new Element("div",{"class":this.currentclass}),d=(new Element("a")).set("href",a.href),c=d.clone();c.grab((new Element("h3")).set("text",a.title));var e=new Element("div",{"class":"resulttext"}); this.options.show_description&&e.grab((new Element("p")).set("html",a.text));this.options.show_readmore&&(d.grab((new Element("span")).set("text",this.options.lang.readmore)),e.grab(d.addClass("mg_readmore")));this.options.show_category&&e.grab((new Element("span")).addClass("mg_cat").set("text",a.category));b.grab(c);e.get("text")!=""&&b.grab(e);$("migursearch_results").grab(b)}});MigurSearch.implement(new Options); var MigurSearchFire=new Class({fire:function(a,b){this.timeout&&clearTimeout(this.timeout);this.timeout=setTimeout(function(){b.fetch.call(b,a)},b.options.latency)}});window.addEvent("domready",function(){var a=new MigurSearch(MigurSearchOptions),b=new MigurSearchFire;if($(MigurSearchOptions.inputFieldId))$(MigurSearchOptions.inputFieldId).onkeyup=function(){$(MigurSearchOptions.inputFieldId).getProperty("value").length>3&&b.fire(this,a)}});
