var searchBehaviour = function(name, popups)
{
	var items = new Array;
	var clean = new Array;

	var arrow = jQuery("#" + name + " > span");
	var block = jQuery("#" + name + "-block");
	var container = jQuery("#" + name + "-container");
	var anyLabel = jQuery("#" + name + "-Any-label");
	var anyInput = jQuery("#" + name + "-Any");
	var choicesLabel = jQuery("label:gt(0)", block.get());
	var choicesInput = jQuery("input", choicesLabel.get());
	var done = jQuery("a", block);

	var choicesInputClick = function(element)
	{
		if (element.checked == true)
		{
			items[element.value - 1] = jQuery.trim(jQuery("#" + name + "-" + element.value + "-label").text());
		}
		else
		{
			items[element.value - 1] = undefined;
		}

		clean = new Array;
		var j = 0;

		for (i = 0; i < items.length; i++)
		{
			if (items[i] != undefined) { clean[j] = items[i]; j++; }
		}

		if (clean.length == 0) {anyInput.get(0).click();}
		else {anyInput.get(0).checked = false;}
		
		if (clean.length == choicesLabel.length) {anyInputClick();}

		container.text(clean.join(", "));
	}

	var anyInputClick = function()
	{
		if (anyInput.get(0))
			anyInput.get(0).checked = true;

		items = new Array;
		clean = new Array;

		choicesInput.each(function(i)
		{
			choicesInput.get(i).checked = false;
		});

		window.setTimeout(function(){container.text(anyLabel.text())}, 1);
	}

	choicesInput.each(function(i)
	{
		if (this.checked) {choicesInputClick(this);}
	});

	if (clean.length == 0) anyInputClick();

	arrow.click(function()
	{
		for (i in popups)
		{
			if (popups[i] != name && typeof(popups[i]) != "function")
			{
				jQuery("#" + popups[i] + "-block").css("display", "none");
			}
		}
		block.css("display", (block.css("display") == "block") ? "none" : "block");
		jQuery("#vyvodselect").css("display", (jQuery("#vyvodselect").css("display") == "block") ? "none" : "block");
	});

	done.click(function()
	{
		block.css("display", "none");
		jQuery('#vyvodselect').css("display", "block");
		return false;
	});

	anyInput.click(function()
	{
		anyInputClick();
	});

	choicesInput.click(function()
	{
		choicesInputClick(this);
	});
}

var locationBehaviour = function(name)
{	
	var arrow = jQuery("#" + name + " > span");
	var block = jQuery("#" + name + "-block");
	var container = jQuery("#" + name + "-container");
	var done = jQuery("a", block);
	var inner = jQuery("#country-city-inner", block);
	var loader = jQuery("#country-city-loader");
	var selects = jQuery("select", block);
	
	var loaded = false;
	
	var loadLocations = function() {
		loader.show();
		jQuery.ajaxSetup({ cache: true });
		jQuery.getScript(locationsUrl, function(){
			loader.hide();
			block.show();

			if (searchCountry) addOptions('country', c, searchCountry); else addOptions('country', c);
			if (searchState) addOptions('state', getStates(), searchState); else addOptions('state', getStates());
			if (searchCity) addOptions('city', getCities(), searchCity); else addOptions('city', getCities());
			if (lang == 'ru') addOptions('metro', getMetro(), searchMetro);
			loaded = true;

			block.find('input[type=hidden]').remove();
			
			updateLocationString();
		});

		jQuery.ajaxSetup({ cache: false });
	};
	
	arrow.click(function() {
		if (loaded)
			block.toggle();
		else			
			loadLocations();
	});
	
	var updateLocationString = function() {
		var text = '';
		selects.each(function(i) {
			var select = jQuery(selects.get(i));
			if (select.parent().css('display') != 'none' && select.val() > 0)
				text += select.find('option:selected').text();
		});
		
		text = text.replace(/ \(\d+\)/g, ', ').replace(/, $/, '');
		container.text(text);
		
		if (text) {
			jQuery('#change-location').show();
			jQuery('#select-location').hide();
		} else {
			jQuery('#select-location').show();
			jQuery('#change-location').hide();
		}
	}
	
	done.click(function() {
		updateLocationString();
		block.hide();
		return false;
	});
}

jQuery(function(){
	var searchPopups = new Array("body-type", "sex-role");

	searchBehaviour("body-type", searchPopups);
	searchBehaviour("sex-role", searchPopups);
	locationBehaviour("country-city");
});