/** * %%INFO 2007-09-28 13:08:32+0200 rgarcia%%
 * @author Rubén García
 * @usage SearchSuggestionWidget(Object options)
 * @example
 * <script type="text/javascript">
 * // <![CDATA[
var sW = new SearchSuggestionWidget(element, [options]);
 * // ]]>
 * </script>
 */

SearchSuggestionWidget = Class.create();
SearchSuggestionWidget.prototype = {
	initialize: function(element, options) {
		this.input = $(element);
		if(!this.input) return;
		this.options = Object.extend({
			containerName:     'searchBoxSug',
			modifier:          true,
			modifierName:      'searchType',
			modifierParameter: 'type',
			minChars:          3,
			URL:               'ajax/_ajaxSearchSug'
		}, options || {});

		this.eventHandler = this.onEvent.bindAsEventListener(this);

		this.prepareElements();
	},
	prepareElements: function() {
		var opts = {
			minChars: this.options.minChars
		};
		this.container = $(this.options.containerName);
		if(!this.container) {
			this.createContainer();
		}
		if(this.options.modifier) {
			this.modifier = $(this.options.modifierName);
			if(!this.modifier) {
				return;
			}
			opts.parameters = this.options.modifierParameter + '=' + $F(this.options.modifierName);
			this.modifier.observe('change', this.eventHandler);
		}
		this.autoCompleter = new Ajax.Autocompleter(
			this.input,
			this.options.containerName,
			this.options.URL,
			opts
		)
	},
	createContainer: function() {
		this.container = document.createElement('div');
		Element.extend(this.container);
		this.container.setAttribute('id',this.options.containerName);
		document.body.appendChild(this.container);
	},
	onEvent: function(event) {
		this.autoCompleter.options.defaultParams = this.options.modifierParameter + '=' + $F(this.options.modifierName);
	}
}