
Livesearch = Class.create();

Livesearch.prototype = {
        initialize: function(father, attachitem, target, hideitem, url, pars, searchform, loaditem, searchtext, resetbutton) {
                this.father = father;
                this.attachitem = attachitem;
                this.target = target;
                this.hideitem = hideitem;
                this.url = url;
                this.pars = pars;
                this.searchform = searchform;
                this.loaditem = loaditem;
                this.searchtext = searchtext;
                this.resetbutton = resetbutton;
                this.t = null;  // Init timeout variable

                var buttonvalue = 'los';
                $(father).innerHTML = '<input type="text" id="s" name="s" class="livesearch" autocomplete="off" value="'+searchtext+'" /><span id="searchreset"></span><span id="searchload"></span><input type="submit" id="searchsubmit" value="'+buttonvalue+'" />';

                // Style the searchform for livesearch
                var inputs = $(searchform).getElementsByTagName('input');
                for (var i = 0; i < inputs.length; i++) {
                        var input = inputs.item(i);
                        if (input.type == 'submit')
                                input.style.display = "none";
                }

                Effect.Fade(this.resetbutton, { duration: .1, to: 0.3 });
                $(this.loaditem).style.display = 'none';

                Event.observe(attachitem, 'focus', function() { if ($(attachitem).value == searchtext) $(attachitem).setAttribute('value', '') });
                Event.observe(attachitem, 'blur', function() { if ($(attachitem).value == '') $(attachitem).setAttribute('value', searchtext) });

                // Bind the keys to the input
                Event.observe(attachitem, 'keyup', this.readyLivesearch.bindAsEventListener(this));
        },

        readyLivesearch: function(event) {
                var code = event.keyCode;
                if (code == Event.KEY_ESC || ((code == Event.KEY_DELETE || code == Event.KEY_BACKSPACE) && $F(this.attachitem) == '')) {
                        this.resetLivesearch.bind(this);
                } else if (code != Event.KEY_LEFT && code != Event.KEY_RIGHT && code != Event.KEY_DOWN && code != Event.KEY_UP && code != Event.KEY_RETURN) {
                        if (this.t) { clearTimeout(this.t) };
                this.t = setTimeout(this.doLivesearch.bind(this), 400);
                }
        },

    doLivesearch: function() {
                Effect.Fade(this.resetbutton, { duration: .1, to: 0 });
                Effect.Appear(this.loaditem, {duration: .1});

                new Ajax.Updater(
                        this.target,
                        this.url,
                        {
                                method: 'get',
                                evalScripts: true,
                                parameters: this.pars + encodeURIComponent($F(this.attachitem)) + '&rolling=1',
                                onSuccess: this.searchComplete.bind(this)
                });
        },
        
        searchComplete: function() {
                $(this.hideitem).style.display = 'none';
                Effect.Fade(this.loaditem, {duration: .1});
                Effect.Appear(this.resetbutton, { duration: .1 });

                Event.observe(this.resetbutton, 'click', this.resetLivesearch.bindAsEventListener(this));
                $(this.resetbutton).style.cursor = 'pointer';

                // Support for Lightbox
                if (window.initLightbox) {
                        initLightbox();
                }
        },

        resetLivesearch: function() {
                $(this.hideitem).style.display = 'block';
                Effect.Fade(this.resetbutton, { duration: .1, to: 0.3 });

                $(this.attachitem).value = '';
                $(this.target).innerHTML = '';
                $(this.resetbutton).style.cursor = 'default';
        }
}

new FastInit( function() { new Livesearch('searchform', 's', 'dynamic-content', 'current-content', window.location.href.match(/^(http:\/\/[^\/]+)/)[1] + '/wp-content/themes/rauchmelder-ah' + '/rollingarchive.php', '&s=', 'searchform', 'searchload', 'Ihr Suchbegriff...', 'searchreset'); } );