/*
* zoek.js
* Copyright (C) 2009
* Author: Sergey Rossokha <Sergey.Rossokha@intego-group.com>
* Created: March 2, 2009
*
* Contains implementation of search client functionality.
*/

/**
* The class represents the search control of the Helpdesk.
*/
var Zoek = new Class({
    initialize: function(element) {
	this.element = element;
	this.searchInputText = $('search');
	this.searchButtons = this.element.getElements('a');
        this.normalSearchButton = this.element.getElement('a.NormalSearch');
        this.hookEvents();
    },

    /**
    * Hooks events of the controls.
    */
    hookEvents: function() {
        var dis = this;
        this.searchButtons.each(function(button) {
            /*On search button click*/
            button.addEvent('click', function(e) {
		e = new Event(e).stop();
                if ($defined(dis.searchInputText) && $defined(dis.searchInputText.value) && (dis.searchInputText.value != "")) {
                    window.location = button.href + dis.getParameters();
                }
            });
	});

        if ($defined(this.searchInputText) && $defined(this.normalSearchButton)) {
            this.searchInputText.addEvent('keypress', function(e){
                if ($defined(dis.searchInputText.value) && (dis.searchInputText.value != "")){
                    if (e.key == "enter"){
                        window.location = dis.normalSearchButton.href + dis.getParameters();
                    }
                }
            });
        }
    },

    /**
     * Retrieves the current search parameters.
     */
    getParameters: function()
    {
        var controls = this.element.getElements('input').extend(this.element.getElements('select'));
        var parameters = '';
        controls.each(function(control) {
            if (control.tagName.toLowerCase() != 'input' || (control.tagName.toLowerCase() == 'input' && control.type.toLowerCase() == 'text')) {
                if (parameters.length > 0) parameters += '&';
                parameters += control.name + '=' + escape(control.value);
            }
        });
        return '?' + parameters;
    }
});

window.addEvent('domready', function() {
    var searchParams = document.getElements('.SearchParameters');
    searchParams.each(function(searchParam) {
        new Zoek(searchParam);
    });
});
