var _base = 'assets/snippets/ajaxSearch/';

var _version = '1.8.5';
var opacity = 1.;
var liveSearch = 0;
var minChars = 3;

var newToggle;
var is_searching = false;
var liveTimeout = null;

as_version = '1.8.5';
advSearch = 'exactphrase';
subSearch = 5;
ucfg = ' &advSearch=`exactphrase` &ajaxMax=`4` &jscript=`mootools1.2` &addJscript=`0`';


function activateSearch() {

  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 = document.id('ajaxSearch_form');

  var aso = document.id('ajaxSearch_output');
  aso.setStyle('opacity', '0');

  if (asf) {
    asf.addEvent('submit', function(e) { e.stop(); doSearch(); });

    var c = new Element('div');
    c.setProperties({
       id: 'searchClose'
    });
    c.addEvent('click', function(){closeSearch();});
    toggleImage(c);
    asf.appendChild(c);
    document.id('search_icons').appendChild(c);
    document.id('searchClose').innerHTML = "Close Search";
    var i = new Element('img');
    i.setProperties({
       src: _base + 'images/indicator.white.gif', //Loading Image
       alt: 'loading',
       id: 'indicator'
    });
    toggleImage(i);
    document.id('search_icons').appendChild(i);
    var n = new Element('div');
    n.setProperty('id', 'current-search-results');
    n.setStyle('opacity', '1');
    aso.appendChild(n);
    newToggle = new Fx.Slide('current-search-results', {duration: 600,transition: Fx.Transitions.Quint.easeIn}).hide();
    newToggle.isDisplayed = function() {
      return this.wrapper['offset'+this.layout.capitalize()] > 0;
    }

    is_searching = false;
    search_open = false;
    if (liveSearch) {
      document.id('ajaxSearch_input').addEvent('keyup', liveSearchReq);
      document.id('ajaxSearch_submit').setStyle('opacity', '0');         
    }
  }
}

function liveSearchReq() {
  if (liveTimeout) {
    window.clearTimeout(liveTimeout);
  }
  liveTimeout = window.setTimeout("doSearch()",600);
}

function doSearch() {

  if (is_searching) return false;


  if (ss = document.id('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 = document.id('ajaxSearch_input').value;
  }

  if (s == '') return false;
  if (liveSearch && s.length < minChars) return false;
  is_searching = true;
  c = document.id('current-search-results');

  toggleImage(document.id('indicator'));
  if (!search_open) {toggleImage(document.id('searchClose'));}
  search_open = true;
  b = document.id('ajaxSearch_submit');
  b.disabled = true;

  if (newToggle.isDisplayed()) {
    newToggle.toggle(); 
  }


  setAdvSearch('radio_oneword');
  setAdvSearch('radio_allwords');
  setAdvSearch('radio_exactphrase');
  setAdvSearch('radio_nowords');

  sbsname = '';
  for (var i = 1; i < subSearch+1; i++) {
    if (sbs = document.id('subSearch'+i)) {
      if (sbs.checked == true) sbsname = sbs.value;
    }
  }
  subSearch = sbsname;

  var pars = Hash.toQueryString({
    q: _base + 'ajaxSearchPopup.php',
    search: s,
    as_version: as_version,
    advSearch: encodeURI(advSearch),
    subSearch: encodeURI(subSearch),
    ucfg: ucfg
  });

  var ajaxSearchReq = new Request({url: 'index-ajax.php', method: 'post', data: pars, onComplete: doSearchResponse});
  if (newToggle.isDisplayed()) {
  newToggle.toggle();
    ajaxSearchReq.send.delay(600, ajaxSearchReq);
  } else {
      ajaxSearchReq.send();
  }
  return true;
}

function doSearchResponse(request) {
  var o = document.id('ajaxSearch_output');
  o.setStyle('opacity', opacity);  // set of opacity parameter
  document.id('current-search-results').set('html', request);
  newToggle.toggle();
  is_searching = false;
  setTimeout('resetForm()',600);
}

function resetForm() {
  s = document.id('ajaxSearch_submit');
  s.disabled = false;
  toggleImage(document.id('indicator'));
}

function closeSearch() {
  newToggle.toggle();
  setTimeout('clearSearch()',600);
}

function clearSearch() {
  toggleImage(document.id('searchClose'));
  search_open = false;
  document.id('current-search-results').innerHTML = '';
  var o = document.id('ajaxSearch_output');
  o.setStyle('opacity', '0');
  document.id('ajaxSearch_input').value="";
  document.id('ajaxSearch_input').focus();
}

function setAdvSearch(id) {
  if (r = document.id(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');
  }
}

window.addEvent('domready', function(){
   activateSearch();
})

