﻿/**
* LiveSearch (requires the dimensions plug-in)
*
* Applies "live search" to input-fields
*
* Usage: jQuery('#q').liveSearch({ajaxURL: '/ajax/search/?q='});
*
* @class liveSearch
* @param {Object} conf, custom config-object
*
* Copyright (c) 2008 Andreas Lagerkvist (andreaslagerkvist.com)
* Released under a GNU General Public License v3 (http://creativecommons.org/licenses/by/3.0/)
*/
// Hide all search-results if you click outside them

jQuery(document.body).click(function(event) {
    if (!jQuery(event.target).parents('div.live-search-results').length) {
        jQuery('div.live-search-results').slideUp(300);
    }
});
jQuery.fn.liveSearch = function(conf) {
    var config = jQuery.extend({
        ajaxURL: '/mod/search-results.php?q='
    }, conf);

    return this.each(function() {
        var input = jQuery(this);
        var tmpOffset = input.offset();
        var inputDim = {
            left: tmpOffset.left,
            top: tmpOffset.top,
            width: 900,
            height: 300
        };
        var results = jQuery('<div class="live-search-results"></div>').appendTo('#searchBox').hide().slideUp(0);
        var resultsShit = parseInt(results.css('paddingLeft'), 10) + parseInt(results.css('paddingRight'), 10) + parseInt(results.css('borderLeftWidth'), 10) + parseInt(results.css('borderRightWidth'), 10);
        inputDim.topNHeight = inputDim.top + inputDim.height;
        inputDim.widthNShit = inputDim.width - resultsShit;
        results.css({
            position: 'absolute',
            left: inputDim.left + 'px',
            top: inputDim.topNHeight + 'px',
            width: inputDim.widthNShit + 'px'
        });

        input.keyup(function() {
            //if(this.value != this.lastValue) {
            input.addClass('ajax-loading');

            var q = this.value;

            if (this.timer) {
                clearTimeout(this.timer);
            }

            this.timer = setTimeout(function() {
                jQuery.get(config.ajaxURL, { key: q}, function(data) {
                    input.removeClass('ajax-loading');

                    if (data.length) {
                        results.html(data).slideDown(300, function() {

                        });
                    }
                    else {
                        results.slideUp(300);
                    }
                });
            }, 200);

            this.lastValue = this.value;
            //}
        });
    });
};