var chooseText = 'wybierz';
var choosedMenu = 0;
var categoryElements = {
	'L' : [ 'city', 'region', 'radius', 'post_code' ],
	'C' : [ 'realisation_count', 'user_opinion', 'user_company', 'user_verified' ],
	'R' : [ 'realisation_taker', 'realisation_giver', 'realisation_remote' ],
	'U' : [ 'user_rating' ]
};
var values = {};
function overStar(nr) {
	var i, val = $('#service_browse_user_rating').val();
	if (nr == 0) {
		nr = (val in {'1':1, '2':1, '3':1, '4':1, '5':1}) ? parseInt(val) : 0;
	}
	for (i = 1; i <= nr; i++) {
		$('#star_' + i).css({
			'background-image' : 'url(/images/starbox/starDarkGreenFull.gif)'
		});
	}
	for (i = nr + 1; i <= 5; i++) {
		$('#star_' + i).css({
			'background-image' : 'url(/images/starbox/starDarkGray.gif)'
		});
	}
}
function typeStar() {
	var val = $('#service_browse_user_rating').val();
	if (val in {'1':1, '2':1, '3':1, '4':1, '5':1}) {
		overStar(parseInt(val));
	}
	clearButtonVisibility();
}
function clickStar(nr) {
	if ($('#service_browse_user_rating').val() == nr) {
		$('#service_browse_user_rating').val('min. ocen');
	} else {
		$('#service_browse_user_rating').val(nr);
	}
	clearButtonVisibility();
}
function validStar() {
	var val = $('#service_browse_user_rating').val();
	if (!(val in {'1':1, '2':1, '3':1, '4':1, '5':1})) {
		$('#service_browse_user_rating').val('min. ocen')
		overStar(0);
	}
}

function applyFilters() {
	if ($('#service_browse_radius').val() == 'kilometry') {
		$('#service_browse_radius').clear();
	}
	if ($('#service_browse_post_code').val() == 'kod pocztowy') {
		$('#service_browse_post_code').clear();
	}
	if ($('#service_browse_radius').val() == '' || $('#service_browse_post_code').val() == '') {
		$('#service_browse_radius, #service_browse_post_code').clear();
	}

	if (!($('#service_browse_user_rating').val() in {'1':1, '2':1, '3':1, '4':1, '5':1})) {
		$('#service_browse_user_rating').clear();
	}
	if ($('#localizationC').attr('checked')) {
		$('#service_browse_radius, #service_browse_post_code').clear();
	} else {
		if ($('#localizationP').attr('checked')) {
			$('#service_browse_city, #service_browse_region').clear();
		} else {
			$('#service_browse_city, #service_browse_region, #service_browse_radius, #service_browse_post_code').clear();
		}
	}
	$('#browse_form').submit();
}
function setLabelForMenu(filter) {
	var s = '', t = '';
	if (filter == 'L') {
		if ($('#localizationC').is(':checked')) {
			s = $('#service_browse_city').val().replace(/[<=>]/g, '');
			t = $('#service_browse_region').find('option:selected').val() != '1' ? $('#service_browse_region').find('option:selected').text() : '';
			if (s && t) {
				s += ', ' + t;
			} else {
				s += t;
			}
				
		}
			
		if ($('#localizationP').is(':checked')) {
			s = $('#service_browse_radius').val() + ' km od ' + $('#service_browse_post_code').val();
		}
	}
	if (filter == 'C') {
		if ($('#service_browse_realisation_count').is(':checked')) {
			s = 'Z realizacjami';
		}
		if ($('#service_browse_user_opinion').is(':checked')) {
			s = (s ? s + ', ' : '') + 'Z opiniami';
		}
		if ($('#service_browse_user_company').is(':checked')) {
			s = (s ? s + ', ' : '') + 'tylko zweryfikowane firmy';
		}
		if ($('#service_browse_user_verified').is(':checked')) {
			s = (s ? s + ', ' : '') + 'tylko zweryfikowanych';
		}
	}
	if (!s) {
		s = chooseText;
		
		$('#label' + filter).css({
    		'background': 'url(/images/filterChoose.png) no-repeat',
	    	'color': '#aaa'
		});			
		$('#label' + filter).mouseout(function() {
			$(this).css({
  	    		'background': 'url(/images/filterChoose.png) no-repeat',
  	    		'color': '#aaa'
			});			
		});
	} else {
		$('#label' + filter).mouseout(function() {
			$(this).css({
  	    		'background': 'url(/images/filterChooseOverGreen.png) no-repeat',
  	    		'color': '#fff'
			});			
		});
		$('#label' + filter).css({
			'background' : 'url("/images/filterChooseOverGreen.png") no-repeat scroll 0 0 transparent',
	    	'color': '#fff'
		});
	}
	$('#label' + filter + ' span').html(s);
	$('#label' + filter + ' span').limitLineWidth({'width' : 150});
	clearButtonVisibility();
}
function removeFilterItem(item, apply) {
	$('#service_browse_' + item).clear();
	if (apply !== false) {
		applyFilters();
	}
}

function toggleFilters() {
	if ($('#filtersShowButton').attr('class') == 'fold') {
		$('#filtersShowButton').html('rozwiń');
		$('#filtersShowButton').attr('class', 'unfold');
		$('#browse_form').css({
			'display' : 'none'
		});
	} else {
		$('#filtersShowButton').html('zwiń');
		$('#filtersShowButton').attr('class', 'fold');
		$('#browse_form').css({
			'display' : ''
		});
	}
	$('#filtersShowLabelSpan').toggle();
	$('#filtersSelectedLabelSpan').toggle();
	$('#activeFilters').toggle();
	setLabelForMenu('L');
	setLabelForMenu('C');
	setLabelForMenu('P');	
	typeStar();
}
function showFilters() {
	$('#filtersShowButton').html('zwiń');
	$('#filtersShowButton').attr('class', 'fold');
	$('#filtersShowLabelSpan').show();
	$('#filtersSelectedLabelSpan').hide();
	$('#browse_form').show();
	$('#activeFilters').hide();
	setLabelForMenu('L');
	setLabelForMenu('C');
	setLabelForMenu('P');
	typeStar();
}
function setCity(city) {
	$('#service_browse_city').val(city.replace(/[<=>]/g, ''));
	$('#localizationC').attr('checked', true);
	setLabelForMenu('L');
}
function clearButtonVisibility() {
	var rating;
	
	if ($('#localizationC').is(':checked') && ($('#service_browse_city').val() || $('#service_browse_region').find('option:selected').val() != '1')) {
		return $('#clearButton').show();		
	}

	if ($('#localizationP').is(':checked') && $('#service_browse_radius').val() && $('#service_browse_post_code').val()) {
		return $('#clearButton').show();		
	}
	
	if ($('#service_browse_realisation_count:checked, #service_browse_user_opinion:checked, #service_browse_user_company:checked, #service_browse_user_verified:checked, #service_browse_realisation_taker:checked, #service_browse_realisation_giver:checked, #service_browse_realisation_remote:checked').length > 0) {
		return $('#clearButton').show();		
	}
	rating = parseInt($('#service_browse_user_rating').val());
	if (rating > 0 && rating < 6) {
		return $('#clearButton').show();
	}

	$('#service_browse_realisation_taker, #service_browse_realisation_giver, #service_browse_realisation_remote').each(function() {
		$(this).parent().css({
			'background-color': 'transparent'
		});
		$(this).parent().find('label').css({
			'color': '#000'
		})
	});

	$('#clearButton').hide();
}

function openMenu(menu) {
	switch(menu)
	{
		case 'L': closeMenu('C'); closeMenu('P'); break;
		case 'C': closeMenu('L'); closeMenu('P'); break;
		case 'P': closeMenu('L'); closeMenu('C'); break;
	}
	$('#menu' + menu).slideDown(400);
	$('#label' + menu).unbind('click').click(function() {
		closeMenu(menu);

		return false;
	});

	switch(menu) {
		case 'L':
			values['city'] = $('#service_browse_city').val().replace(/[<=>]/g, '');
			values['region'] = $('#service_browse_region').val();
			values['radius'] = $('#service_browse_radius').val();
			values['post_code'] = $('service_browse_post_code').val();
			values['localizationc'] = $('#localizationC').attr('checked');
			values['localizationp'] = $('#localizationP').attr('checked');
			break;
		case 'C':
			values['realisation_count'] = $('#service_browse_realisation_count').attr('checked');
			values['user_opinion'] = $('#service_browse_user_opinion').attr('checked');
			values['user_company'] = $('#service_browse_user_company').attr('checked');
			values['user_verified'] = $('#service_browse_user_verified').attr('checked');
			break;
	}
	setLabelForMenu(menu);

	return false;
}
function closeMenu(menu) {
	if (!$('#menu' + menu).is(":visible")) {
		return;
	}

	$('#label' + menu).unbind('click').click(function() {
		openMenu(menu);
		
		return false;
	});
	$('#menu' + menu).slideUp(400);
	switch(menu) {
		case 'L':
			$('#service_browse_city').val(values['city'].replace(/[<=>]/g, ''));
			$('#service_browse_region').val(values['region']);
			$('#service_browse_radius').val(values['radius']);
			$('#service_browse_post_code').val(values['post_code']);
			$('#localizationC').attr('checked', values['localizationc']);
			$('#localizationP').attr('checked', values['localizationp']);
			break;
		case 'C':
			$('#service_browse_realisation_count').attr('checked', values['realisation_count']);
			$('#service_browse_user_opinion').attr('checked', values['user_opinion']);
			$('#service_browse_user_company').attr('checked', values['user_company']);
			$('#service_browse_user_verified').attr('checked', values['user_verified']);
			break;
	}
	setLabelForMenu(menu);

	return false;
}
function clearMenu(menu) {
	resetFilter(menu);
	$('#menu' + menu).slideUp(400);
	$('#label' + menu).unbind('click').click(function() {
		openMenu(menu);
		
		return false;
	});
}
function applyMenu(menu) {
	setLabelForMenu(menu);
	$('#menu' + menu).slideUp(400);
	$('#label' + menu).unbind('click').click(function() {
		openMenu(menu);
		
		return false;
	});
}
function resetFilter(filter) {
	var element, elements = categoryElements[filter];
	for ( var element in categoryElements[filter]) {
		$('#service_browse_' + elements[element]).clear();
	}
	if (filter == 'L') {
		$('#localizationC').attr('checked', false);
		$('#localizationP').attr('checked', false);
		$('#service_browse_radius, #service_browse_post_code').clear();
	}
	if (filter == 'U') {
		$('#service_browse_user_rating').val('min. ocen');
	}
	setLabelForMenu(filter);
}
function resetFilters() {
	resetFilter('L');
	resetFilter('C');
	resetFilter('P');
	resetFilter('R');
	resetFilter('U');
        overStar(0);
	$('#clearButton').hide();
  applyFilters();
}

$(document).ready(function() {
	$('#labelL').click(function() {
		return openMenu('L');
	});
	$('#closeL').click(function() {
		return closeMenu('L');
	});

	$('#labelC').click(function() {
		return openMenu('C');
	});
	$('#closeC').click(function() {
		return closeMenu('C');
	});

	$('#labelP').click(function() {
		return openMenu('P');
	});
	$('#closeP').click(function() {
		return closeMenu('P');
	});
	
	if ($('#service_browse_city').val() != '' || $('#service_browse_region').val() != '1') {
		$('#localizationC').attr('checked', true);
	} else if ($('#service_browse_post_code').val() != '' && $('#service_browse_post_code').val() != 'kod pocztowy') {
		$('#localizationP').attr('checked', true);
	}
	$('#service_browse_post_code').defaultValue('kod pocztowy', {'color' : '#aaa'}, {'color': '#000'});
	$('#service_browse_radius').defaultValue('kilometry', {'color' : '#aaa'}, {'color': '#000'});

	// change
	$('#localizationC, #localizationP, #service_browse_region').change(function() {
		setLabelForMenu('L');
		clearButtonVisibility();
	});

	// key up
	$('#service_browse_city, #service_browse_radius, #service_browse_post_code').keyup(function() {
		setLabelForMenu('L');
		clearButtonVisibility();
	});
	
	// focus in
	$('#service_browse_city, #service_browse_region').focusin(function() {
		$('#localizationC').attr('checked', true);
                choosedMenu = 1;
		clearButtonVisibility();
	});
	$('#service_browse_radius, #service_browse_post_code').focusin(function() {
		$('#localizationP').attr('checked', true);
                choosedMenu = 1;
		clearButtonVisibility();
	});	
	
	// focus out
	$('#service_browse_city, #service_browse_radius, #service_browse_post_code').focusout(function() {
		setLabelForMenu('L');
		clearButtonVisibility();
	});

	// characteristic
	$('#service_browse_realisation_count, #service_browse_user_opinion, #service_browse_user_company, #service_browse_user_verified').change(function() {
 		setLabelForMenu('C');
		clearButtonVisibility();
	});
	
	$('#service_browse_realisation_taker, #service_browse_realisation_giver, #service_browse_realisation_remote').change(function(){
		if ($(this).attr('checked') == true) {
			$(this).parent().css({
				'background-color': '#8d8d8d'
			})
			$(this).parent().find('label').css({
				'color': '#fff'
			})
		} else {
			$(this).parent().css({
				'background-color': 'transparent'
			})
			$(this).parent().find('label').css({
				'color': '#000'
			})
		}
		
		clearButtonVisibility();
	});
	
	$('#service_browse_realisation_taker, #service_browse_realisation_giver, #service_browse_realisation_remote').each(function() {
		if ($(this).attr('checked') == true) {
			$(this).parent().css({
				'background-color': '#8d8d8d'
			})
			$(this).parent().find('label').css({
				'color': '#fff'
			})
		} else {
			$(this).parent().css({
				'background-color': 'transparent'
			})
			$(this).parent().find('label').css({
				'color': '#000'
			})
		}
	});

	setLabelForMenu('L');
	setLabelForMenu('C');
	setLabelForMenu('P');
	
	$('#service_browse_post_code').validInput({'type': 'post_code'});
	$('#service_browse_radius').validInput({'type': 'positive_integer'});
	clearButtonVisibility();
        typeStar();
	
	$('#menuL').mouseenter(function() {
		choosedMenu = 1;
	});
	$('#menuC').mouseenter(function() {
		choosedMenu = 2;
	});
	$('#menuP').mouseenter(function() {
		choosedMenu = 3;
	});
	$('#menuL, #menuC, #menuP').mouseleave(function() {
		choosedMenu = 0;
	});
    // IE9 fix
  var isListOpen = 0;
	$(document).click(function(e){
    
    if ((e.target || e.srcElement).id == 'service_browse_region') {
      isListOpen = 1;
      return false;
    }
    else {
      if (choosedMenu != 1 && isListOpen == 0) {
            closeMenu('L');		
          }
          if (choosedMenu != 2 && isListOpen == 0) {
            closeMenu('C');		
          }
          if (choosedMenu != 3 && isListOpen == 0) {
            closeMenu('P');		
          }
          isListOpen = 0;
    }
		
	})
});
