//ajaxSearch.js //Version: 1.8.4 - refactored by coroico //20/10/2009 //Created by: KyleJ (kjaebker@muddydogpaws.com) //Created on: 03/14/2006 //Description: This code is used to setup the ajax search request //set the loading and the close image to the correct location for you //set the folder location to the correct location of ajaxSearch.php //set the default parameters as default.config.inc.php // AjaxSearch Snippet folder location var _base = 'assets/snippets/ajaxSearch/'; // AjaxSearch default snippet parameter values var _version = '1.8.4'; var opacity = 1.; var liveSearch = 0; var minChars = 3; var newToggle; var is_searching = false; var liveTimeout = null; function activateSearch() { if (as_version != _version) { alert("AjaxSearch version obsolete. Empty your browser cache and check the version of AjaxSearch.js file"); return; } res = ucfg.match(/&opacity=`([^`]*)`/); if (res != null) opacity = parseFloat(res[1]); res = ucfg.match(/&liveSearch=`([^`]*)`/); if (res != null) liveSearch = parseInt(res[1]); res = ucfg.match(/&minChars=`([^`]*)`/); if (res != null) minChars = parseInt(res[1]); var asf = $('ajaxSearch_form'); var aso = $('ajaxSearch_output'); aso.setStyle('opacity', '0'); if (asf) { asf.onsubmit = function() { doSearch(); return false; }; var c = new Element('img'); //Close Image c.setProperties({ src: _base + 'images/cross.png', alt: 'close search', id: 'searchClose' }); c.addEvent('click', function(){closeSearch();}); toggleImage(c); asf.appendChild(c); var i = new Element('img'); i.setProperties({ src: _base + 'images/indicator.white.gif', //Loading Image alt: 'loading', id: 'indicator' }); toggleImage(i); asf.appendChild(i); var n = new Element('div'); // New search results div n.setProperty('id', 'current-search-results'); n.setStyle('opacity', '1'); aso.appendChild(n); newToggle = new Fx.Slide('current-search-results', {duration: 600}).hide(); newToggle.isDisplayed = function() { return this.wrapper['offset'+this.layout.capitalize()] > 0; } is_searching = false; search_open = false; if (liveSearch) { $('ajaxSearch_input').addEvent('keyup', liveSearchReq); $('ajaxSearch_submit').setStyle('opacity', '0'); } } } function liveSearchReq() { if (liveTimeout) { window.clearTimeout(liveTimeout); } liveTimeout = window.setTimeout("doSearch()",400); } function doSearch() { // If we're already loading, don't do anything if (is_searching) return false; // get the input searchstring from select or from input if (ss = $('ajaxSearch_select')) { selected = new Array(); for (var i = 0; i < ss.options.length; i++) if (ss.options[ i ].selected) selected.push(ss.options[ i ].value); s = selected.join(" "); } else { s = $('ajaxSearch_input').value; } // Same if the searchstring is blank if (s == '') return false; if (liveSearch && s.length < minChars) return false; is_searching = true; c = $('current-search-results'); toggleImage($('indicator')); if (!search_open) {toggleImage($('searchClose'));} search_open = true; b = $('ajaxSearch_submit'); b.disabled = true; if (newToggle.isDisplayed()) { newToggle.toggle(); } // update the advSearch value from radio button if they exists setAdvSearch('radio_oneword'); setAdvSearch('radio_allwords'); setAdvSearch('radio_exactphrase'); setAdvSearch('radio_nowords'); // update the subSearch value from radio button if they exists sbsname = ''; for (var i = 1; i < subSearch+1; i++) { if (sbs = $('subSearch'+i)) { if (sbs.checked == true) sbsname = sbs.value; } } subSearch = sbsname; // Setup the parameters and make the ajax call to the popup window var pars = Object.toQueryString({ q: _base + 'ajaxSearchPopup.php', search: s, as_version: as_version, advSearch: encodeURI(advSearch), subSearch: encodeURI(subSearch), ucfg: ucfg }); var ajaxSearchReq = new Ajax('index-ajax.php', {postBody: pars, onComplete: doSearchResponse}); if (newToggle.isDisplayed()) { newToggle.toggle(); ajaxSearchReq.request.delay(600, ajaxSearchReq); } else { ajaxSearchReq.request(); } return true; } function doSearchResponse(request) { var o = $('ajaxSearch_output'); o.setStyle('opacity', opacity); // set of opacity parameter $('current-search-results').setHTML(request); newToggle.toggle(); is_searching = false; setTimeout('resetForm()',600); } function resetForm() { s = $('ajaxSearch_submit'); s.disabled = false; toggleImage($('indicator')); } function closeSearch() { newToggle.toggle(); setTimeout('clearSearch()',600); } function clearSearch() { toggleImage($('searchClose')); search_open = false; $('current-search-results').innerHTML = ''; var o = $('ajaxSearch_output'); o.setStyle('opacity', '0'); $('ajaxSearch_input').value=""; $('ajaxSearch_input').focus(); } function setAdvSearch(id) { if (r = $(id)) { if (r.checked == true) advSearch = r.value; } } function toggleImage(imgElement) { imgStyle = imgElement.getStyle('opacity'); if (imgStyle == '0') { imgElement.setStyle('opacity', '1'); } else { imgElement.setStyle('opacity', '0'); } } //Event.observe(window, 'load', activateSearch, false); Window.onDomReady(activateSearch);