document.observe('dom:loaded', function() {
	//RoundTangle.addRule('.form .fieldset', 5);
	
	if (advancedSearch) {
		var searchViewConfig = {
			'objects-search-operation-sale': {
				availableTypes: {
					'objects-search-type-flats':  [
						'objects-search-district-item', 
						'objects-search-street-item',
						'objects-search-rooms-item',
						'objects-search-floor-item',
						'objects-search-wall-item',
						'objects-search-phone-item',
						'objects-search-price-item',
						'objects-search-tsquare-item',
						'objects-search-lsquare-item',
						'objects-search-ksquare-item'
					], 
					'objects-search-type-offices':  [
						'objects-search-district-item', 
						//'objects-search-street-item',
						//'objects-search-rooms-item',
						//'objects-search-floor-item',
						//'objects-search-wall-item',
						//'objects-search-phone-item',
						//'objects-search-profile-item',
						'objects-search-class-item',
						'objects-search-levelling-item',
						'objects-search-price-item',
						'objects-search-tsquare-item'
					], 
					'objects-search-type-houses': [
						'objects-search-region-item',
						'objects-search-totalfloor-item',
						'objects-search-wall-item',
						'objects-search-phone-item',
						'objects-search-price-item',
						'objects-search-tsquare-item',
						'objects-search-asquare-item',
						'objects-search-kievdistance-item'
					], 
					'objects-search-type-lands':  [
						'objects-search-region-item',
						'objects-search-electricity-item',
						'objects-search-sewerage-item',
						'objects-search-forest-item',
						'objects-search-pond-item',
						'objects-search-transport-item',
						'objects-search-landprice-item',
						'objects-search-asquare-item',
						'objects-search-kievdistance-item'
					]
				}
			},
			'objects-search-operation-rent': {
				availableTypes: {
					'objects-search-type-flats':  [
						'objects-search-district-item', 
						'objects-search-street-item',
						'objects-search-rooms-item',
						'objects-search-floor-item',
						'objects-search-floortype-item',
						'objects-search-wall-item',
						'objects-search-phone-item',
						'objects-search-tv-item',
						'objects-search-furniture-item',
						'objects-search-refrigerator-item',
						'objects-search-price-item',
						'objects-search-tsquare-item',
						'objects-search-lsquare-item',
						'objects-search-ksquare-item'
					],
					'objects-search-type-offices':  [
						'objects-search-district-item', 
						//'objects-search-street-item',
						//'objects-search-rooms-item',
						//'objects-search-floor-item',
						//'objects-search-wall-item',
						//'objects-search-profile-item',
						//'objects-search-phone-item',
						'objects-search-levelling-item',
						'objects-search-class-item',
						//'objects-search-price-item',
						'objects-search-price-qm-item',
						'objects-search-tsquare-item'
					],
					'objects-search-type-houses': [
						'objects-search-region-item',
						'objects-search-totalfloor-item',
						'objects-search-wall-item',
						'objects-search-phone-item',
						'objects-search-tv-item',
						'objects-search-furniture-item',
						'objects-search-refrigerator-item',
						'objects-search-price-item',
						'objects-search-tsquare-item',
						'objects-search-asquare-item',
						'objects-search-kievdistance-item'
					]
				}
			}
		};
	} else {
		var searchViewConfig = {
			'objects-search-operation-sale': {
				availableTypes: {
					'objects-search-type-flats':  [
						'objects-search-district-item', 
						'objects-search-street-item',
						'objects-search-rooms-item',
						'objects-search-floor-item',
						'objects-search-price-item',
						'objects-search-tsquare-item'
					], 
					'objects-search-type-offices':  [
						'objects-search-district-item', 
						//'objects-search-street-item',
						//'objects-search-rooms-item',
						//'objects-search-floor-item',
						//'objects-search-profile-item',
						'objects-search-levelling-item',
						'objects-search-class-item',
						'objects-search-price-item',
						'objects-search-tsquare-item'
					], 
					'objects-search-type-houses': [
						'objects-search-region-item',
						'objects-search-totalfloor-item',
						'objects-search-wall-item',
						'objects-search-phone-item',
						'objects-search-price-item',
						'objects-search-tsquare-item',
						'objects-search-kievdistance-item'
					], 
					'objects-search-type-lands':  [
						'objects-search-region-item',
						'objects-search-electricity-item',
						'objects-search-sewerage-item',
						'objects-search-landprice-item',
						'objects-search-asquare-item',
						'objects-search-kievdistance-item'
					]
				}
			},
			'objects-search-operation-rent': {
				availableTypes: {
					'objects-search-type-flats':  [
						'objects-search-district-item', 
						'objects-search-street-item',
						'objects-search-rooms-item',
						'objects-search-floor-item',
						'objects-search-price-item',
						'objects-search-tsquare-item'
					],
					'objects-search-type-offices':  [
						'objects-search-district-item', 
						//'objects-search-street-item',
						//'objects-search-rooms-item',
						//'objects-search-floor-item',
						//'objects-search-profile-item',
						'objects-search-levelling-item',
						'objects-search-class-item',
						//'objects-search-price-item',
						'objects-search-price-qm-item',
						'objects-search-tsquare-item'
					],
					'objects-search-type-houses': [
						'objects-search-region-item',
						'objects-search-totalfloor-item',
						'objects-search-phone-item',
						'objects-search-price-item',
						'objects-search-tsquare-item',
						'objects-search-kievdistance-item'
					]
				}
			}
		};
	}
	
	
	
	function sync(){
		var operationId, typeId;
		$$('#objects-search-operations .selector').each(function(operationItem){
			if (operationItem.hasClassName('selected')) {
				operationId = operationItem.id;
			
				var cfg = searchViewConfig[operationItem.id];
				if (cfg) {
					var firstItem;
					$$('#objects-search-types .selector').each(function(typeItem){
						if (!firstItem) {
							firstItem = typeItem;
						}
						var isAvailable = cfg.availableTypes[typeItem.id];
						if (isAvailable){
							typeItem.removeClassName('disabled');
							typeItem.down('input').disabled = false;
							if (typeItem.hasClassName('selected')) {
								typeId = typeItem.id;
							}
						} else {
							typeItem.addClassName('disabled');
							typeItem.down('input').disabled = true;
							if (typeItem.hasClassName('selected')){
								// enable first item
								typeItem.removeClassName('selected');
								firstItem.addClassName('selected');
								firstItem.down('input').checked = true;
								
								typeId = firstItem.id;
							}
						}
					});
				}
				return false;
			}
		});
		
		var formItems = searchViewConfig[operationId].availableTypes[typeId];
		$$('#objects-search-form .form-item').each(function(formItem){
			var formItemElements = $A(formItem.getElementsByTagName('*')).inject([],
				function(elements, child) {
					if (Form.Element.Serializers[child.tagName.toLowerCase()]){
						elements.push(Element.extend(child));
					}
					return elements;
				}
			);
			if (formItems.include(formItem.id)) {
				formItem.removeClassName('hidden');
				formItemElements.invoke('enable');
			} else {
				formItem.addClassName('hidden');
				formItemElements.invoke('disable');
			}
		});
	}
	
	sync();
	
	$$('.radio-selectors .selector').each(function(el){
		el.down('label').observe('click', function(){
			if (el.hasClassName('disabled')) return;
			el.addClassName('selected');
			el.siblings('.selector').each(function(sb){
				sb.removeClassName('selected');
			});
		});													
	});
	
	
	$$('#objects-search-operations .selector').each(function(operationItem){
		operationItem.down('label').observe('click', function(){
			operationItem.addClassName('selected');
			operationItem.siblings('.selector').each(function(siblingItem){
				siblingItem.removeClassName('selected');
			});
			sync();
		});	
		$$('#objects-search-types .selector').each(function(typeItem){
			typeItem.observe('click', function(){
				sync();
			});
		});
	});
	
	var streetsList = new AutosuggestMultiSelect(
		'objects-search-street', 
		'objects-search-street-autosuggest',{
			fetchFile: App.appUrl + '/geo?type=street&lang=' + App.lang
		}
	);
	
	/** Regions */
	
	var regionsPopup = $('objects-search-regions-popup'),
		regionsList  = $('objects-search-regions-list'),
		regionsItems = regionsPopup.select('input[type=checkbox]');
		
	function syncRegions(){
		var html = [];
		regionsItems.each(function(el){
			if (el.checked) {
				html.push(el.up('dl').down('label').innerHTML);	
			}
		});
		html = html.length > 0 ? html.join(', ') : __('любой');
		regionsList.innerHTML = html;
	}
	
	syncRegions();
	
	regionsPopup.down('ins.close-button').observe('click', function(){
		regionsPopup[Browser.IE ? 'hide' : 'fade']({from:1, to:0, duration:0.2});
		Overlay.hide(true);
	});
	regionsPopup.down('input.ok-button').observe('click', function(){
		syncRegions();
		regionsPopup[Browser.IE ? 'hide' : 'fade']({from:1, to:0, duration:0.2});
		Overlay.hide(true);
	});
	$('objects-search-regions-link').observe('click', function(){		
		Overlay.show(true, {
			afterFinish: function(){
				if (Browser.IE){
					//alert(regionsPopup.className);
					regionsPopup.removeClassName('hidden').show().alignTo(Util.Dom.getBody(), 'c-c', [-40, -40]);
				}
			}
		});
		if (!Browser.IE){
			regionsPopup.removeClassName('hidden').show().alignTo(Util.Dom.getBody(), 'c-c', [-40, -40]).hide().appear({from:0, to:1, duration:0.2});
		}
	});
	regionsItems.each(function(el){
		el.observe('click', function(){
			syncRegions();
		});
	});
	
	/** Districts */
		
	var districtsPopup = $('objects-search-districts-popup'),
		districtsList  = $('objects-search-districts-list'),
		districtsItems = districtsPopup.select('input[type=checkbox]');
	
	function syncDistricts(){
		var html = [];
		districtsItems.each(function(el){
			if (el.checked) {
				html.push(el.up('dl').down('label').innerHTML);	
			}
		});
		html = html.length > 0 ? html.join(', ') : __('любой');
		districtsList.innerHTML = html;
	}
	
	syncDistricts();
		
	districtsPopup.down('ins.close-button').observe('click', function(){
		districtsPopup[Browser.IE ? 'hide' : 'fade']({from:1, to:0, duration:0.2});
		Overlay.hide(true);
		if (Browser.IE) {
		    $$('select').each(function (sel){
			   sel.show();
			});		
		}		
	});
	districtsPopup.down('input.ok-button').observe('click', function(){
		syncDistricts();
		districtsPopup[Browser.IE ? 'hide' : 'fade']({from:1, to:0, duration:0.2});
		Overlay.hide(true);
		if (Browser.IE) {
		    $$('select').each(function (sel){
			   sel.show();
			});		
		}		
	});
	$('objects-search-districts-link').observe('click', function(){
		Overlay.show(true, {
			afterFinish: function(){				
				if (Browser.IE){
					$$('select').each(function (sel){
					    sel.hide();
					});		
					districtsPopup.removeClassName('hidden').show().alignTo(Util.Dom.getBody(), 'c-c', [-40, -40]);
					
				}
			}
		});
		if (!Browser.IE){
			districtsPopup.removeClassName('hidden').show().alignTo(Util.Dom.getBody(), 'c-c', [-40, -40]).hide().appear({from:0, to:1, duration:0.2});
		}
		districtsPopup.removeClassName('hidden').show().alignTo(Util.Dom.getBody(), 'c-c', [-40, -40]);
	});
	districtsItems.each(function(el){
		el.observe('click', function(){
			var childrenCt = el.up('li').down('ul');
			if (childrenCt) {
				childrenCt.select('input[type=checkbox]').each(function(childEl){
					childEl.checked = el.checked;
				});
			}
			syncDistricts();
		});
	});

});
