var searchOptionActiveClassName = 'searchOptionActive';
var searchOptionHoverClassName = 'searchOptionHover';

function SearchPanel(dhtmlHistory) {
	if (dhtmlHistory) this.dhtmlHistory = dhtmlHistory;
	else this.dhtmlHistory = false;
	this.useAjax = false;
	this.url = site_url;
	this.attach();
}
SearchPanel.prototype = {
	submit: function() {
		var self = this;
		if (self.useAjax) {
			$('search-results-list').hide();
			//new Effect.BlindUp('search-results-list', { queue: 'end' });
			$('search-working').show();
			var searchParameters = $('search-panel-form').serialize();
			var searchParametersHashed = searchParameters.replace(/=/g, ':').replace(/&/g, ',');
			//if (self.dhtmlHistory) self.dhtmlHistory.add('search',searchParametersHashed);
			window.location.href = '#'+searchParametersHashed;
			
			new Effect.ScrollTo('search-results', { offset: -20 });
			new Ajax.Updater(
				'search-results',
				self.url,
				{
					method: 'post',
					parameters: searchParameters,
					evalScripts: true,
					onComplete: function(request) {
						self.attach();
					}
				}
			);
			
		} else {
			//siteWorking();
			$('search-panel-form').submit();
		}
	},
	attach: function() {
		var self = this;
		
		if ($('search-panel-form')) {
			Event.observe($('search-panel-form'), 'submit', function(e){ e.stop(); return false; }, false);
			self.formEventObserver = new Form.EventObserver('search-panel-form', function(){
				self.submit();
			});
		};
		
		$$('.search-option').each(function(el){
			var self = this;
			
			if ($(el.parentNode).hasClassName('search-option-box')) {
				if (el.checked && el.value != '') $(el.parentNode).addClassName(searchOptionActiveClassName);
				if (el.type != 'radio') {
					Event.observe(el.parentNode, 'click', function(event){
						if (event.target != this) {
							if (this.checked) this.checked = false; else this.checked = true;
							$(this.parentNode).addClassName(searchOptionActiveClassName);
							//if (!self.useAjax) siteWorking();
							//$('search-panel-form').submit();
							self.submit();
						}
					}.bind(el), false);
				}
				Event.observe(el.parentNode, 'mouseover', function(){ $(this.parentNode).addClassName(searchOptionHoverClassName); }.bind(el), false);
				Event.observe(el.parentNode, 'mouseout', function(){ $(this.parentNode).removeClassName(searchOptionHoverClassName); }.bind(el), false);
				
			} else if ($(el.parentNode).hasClassName('search-option-text')) {
				if (el.value != '') $(el.parentNode).addClassName(searchOptionActiveClassName);
				Event.observe(el.parentNode, 'mouseover', function(){ $(this.parentNode).addClassName(searchOptionHoverClassName); }.bind(el), false);
				Event.observe(el.parentNode, 'mouseout', function(){ $(this.parentNode).removeClassName(searchOptionHoverClassName); }.bind(el), false);
				/*
				self.formTextObserver[el.name] = new Form.Element.Observer(el, 1, function(){
					self.formTextTimer[el.name] = setTimeout(function(){
						self.submit();
					}, 2000);
				});
				*/
				Event.observe(el, 'keypress', function(){
					if (self.formTextTimer && self.formTextTimer[el.name]) {
						clearTimeout(self.formTextTimer[el.name]);
					}
					self.formTextTimer[el.name] = setTimeout(function(){
						self.submit();
					}, 1500);
				}, false);
				
			}
		}.bind(self));
		
		if ($('search-panel-showhide-button')) {
			Event.observe('search-panel-showhide-button', 'click', function(){
				if (!$('search-panel').visible()) {
					new Effect.SlideDown('search-panel');
					$('search-showoptions').value = 'true';
					//new Effect.ScrollTo('listings', { offset: -20 } );
				} else {
					new Effect.SlideUp('search-panel');
					$('search-showoptions').value = 'false';
				}
			}, false);
		}
		
		$$('.block-links a').each(function(el){
			Event.observe(el, 'click', function(e){
				$('search-page').value = el.href.replace(/^.*page=([0-9]+).*$/,"$1");
				self.submit();
				e.stop();
				return false;
			}, false);
		});
		/*
		if ($('search-reset')) {
			$('search-reset').onclick = function() {
				$('search-panel-form').reset();
				self.submit();
			};
		}
		*/
		siteCorners();
		$$('.tooltipTrigger').each(function(el){
			Tooltips.activate(el);
		});
		
	}
};
