//  Search related variables and functions

var searchInput, searchQuery, searchForm, initSearchText;
var searchCategory, term = false;

// Event.observe('searchInput', 'focus', function() {
//    // term = $('searchQuery').value;
//    // $('searchQuery').addCalassName('active');
// });

function setupSearch() {

    searchInput = $('searchInput');
    searchForm  = $('searchForm');
    initSearchText = searchInput.value;
    
    Event.observe(searchForm, 'submit', doSearch.bindAsEventListener(this), false);
    Event.observe(searchInput, 'focus', function() {
        searchInput.addClassName('active');
        if (searchInput.value == initSearchText) {
            searchInput.value = '';
        }
    });
    
    Event.observe(searchInput, 'blur', function() {
        searchInput.removeClassName('active');
        if (searchInput.value == '') {
            searchInput.value = initSearchText;
        }
    });
    
    $('searchButton').hide();
    checkURLBasedSearch();
}

function checkURLBasedSearch() {
    // Checking if there i already a search query based on the URL
    match = window.location.hash.match("^#search=(.*)");
    // console.dir(match);
    if (match) {
        searchInput.value = match[1];
        startSearch();
    }
}

function doSearch(e) {
    
    if ((searchQuery != searchInput.value) && (searchInput.value != '') && (searchInput.value != initSearchText)) {
        searchQuery = searchInput.value;
        window.location.hash = 'search=' + searchQuery;
        startSearch();
    }
    
    // prevent form from being submitted, but do an ajax request instead.
    Event.stop(e);
}

function startSearch() {

    term = (term) ? term : searchInput.value;
    
    searchInput.blur();
    new Ajax.Request(searchForm.action, {
      method: 'get',
      parameters: {q: searchInput.value, ajax: true, category: searchCategory},
      onLoading: function() {
          searchInput.addClassName('inSearch');
      },
      onSuccess: function(transport) {
        // if (transport.responseText.match(/href="http:\/\/prototypejs.org/))
        if (200 == transport.status) {
            $('results').update(transport.responseText);
        }
        else {
            alert('error: ' + transport.status);
        }
      },
      onComplete: function() {
          searchInput.removeClassName('inSearch');
      }
    });
}
