var SearchTabbed = Class.create(Search4, {

	initialize: function($super, prefixes)
	{
		this._paramElements = {};
		$super(prefixes);
	},

	_initHintText: function()
	{
		this._hintText = Lang.miasto_lub_dzielnica;
	},

	_initElements: function($super)
	{
		$super();

		this._prefixes.each(function(prefix) {
			var prefixRe = new RegExp('_' + prefix + '_');
			this._paramElements[prefix] = [];
			['cel', 'typ[]', 'rynek[]', 'przetarg'].each(function(name) {
				obj = document.getElementsByName(name);
				for (var i = 0; i < obj.length; i++) {
					if (!prefixRe.match(obj.item(i).id))
						continue;
					this._paramElements[prefix].push(obj.item(i));
				}
			}, this)
		}, this);
	},

	_initObservers: function()
	{
		var _this = this;
		this._prefixes.each(function(prefix) {
			Event.observe(_this._elements[prefix]['lokalizacja'], 'focus', function(event) {
				_this._lokalizacjaClick(prefix);
			});
			Event.observe(_this._elements[prefix]['lokalizacja'], 'blur', function(event) {
				_this._lokalizacjaBlur(prefix);
			});
			Event.observe(_this._elements[prefix]['form'], 'submit', function(event) {
				_this._formSubmit(_this._getPrefix($(Event.findElement(event)).id));
			});
			
			var tab = $('s4_' + prefix + '_tab');
			if (typeof tab != 'undefined') {
				Event.observe(tab, 'click', function(event) {
					_this._changeTab(tab.id.replace('s4_', '').replace('_tab', ''));
				});
			}
		});
	},

	/**
	 * Metoda pobiera potrzebne parametry z danej szukarki (do boxa regionów)
	 */
	_getParams: function(prefix, hash)
	{
		if (hash)
			var params = Form.serializeElements(this._paramElements[prefix], {hash: true});
		else
			var params = Form.serializeElements(this._paramElements[prefix]);
		return params;
	},

	callback: function(element, entry)
	{
		// Jesteśmy poza obiektem.
		var prefix = (new RegExp('^s4_([a-z]+)_')).exec(element.id)[1];
		var prefixRe = new RegExp('_' + prefix + '_');

		params = {};

		// Obsługa limitu autocompletera do iframów
		params['limit'] = Object.isElement($('s4_autocompleter_limit')) ? $F('s4_autocompleter_limit') : '';

		['cel[]', 'typ[]', 'rynek[]', 'przetarg'].each(function(name) {
			var obj = document.getElementsByName(name);
			var tmp = [];
			for (var i = 0; i < obj.length; i++) {
				if (!prefixRe.match(obj.item(i).id))
					continue;
				var value = $F(obj.item(i));
				if (value != null) {
					tmp.push(value);
				}
			}
			params[name] = tmp;
		});

		if (params['typ[]'].length == 0) {
			var part = $F('s4_' + prefix + '_part');
			switch (part) {
				case 'mieszkaniowy':
					params['typ[]'] = 'mieszkanie.dom';
					break;
				case 'lokale':
					params['typ[]'] = 'biuro.magazyn.uslugi';
					break;
				case 'dzialki':
					params['typ[]'] = 'dzialka';
					break;
				default:
					params['typ[]'] = 'mieszkanie.dom.biuro.magazyn.uslugi.dzialka';
			}
		} else {
			params['typ[]'] = params['typ[]'].join(".");
		}

		if (params['cel[]'].length > 1 || params['cel[]'].length == 0) {
			params['cel[]'] = '*';
		}

		if (params['rynek[]'].length > 1 || params['rynek[]'].length == 0) {
			params['rynek[]'] = '*';
		}

		if (params['przetarg'].length == 0)
			params['przetarg'] = '*';
		if (params['przetarg'].length > 1)
			params['przetarg'] = '1';

		return entry + '&typ=' + params['typ[]'] + '&cel=' + params['cel[]'] + '&rynek=' + params['rynek[]'] + '&przetarg=' + params['przetarg'] + '&limit=' + params['limit'];
	},

	_changeTab: function(tab)
	{
		$$('.s4_box').invoke('hide');
		$('s4_' + tab + '_box').show();
		$$('.s4_tab').invoke('removeClassName', 'msz_sel');
		$('s4_' + tab + '_tab').addClassName('msz_sel');
	},

	_formSubmit: function($super, prefix)
	{
		$super(prefix);

		this._elements[prefix]['form'].submit();

		var _this = this;
		window.setTimeout(function() {
			_this._elements[prefix]['lokalizacja'].enable();
			_this._elements[prefix]['form'].select('.hint').invoke('enable');
		}, 1000);

	}


});

