var FilterController = Class.create();

FilterController.prototype = {

	initialize: function() {
		inputs = $$('input[type=checkbox]');
		
		for (i=0; i < inputs.length; i++) {
			inputs[i].observe('change',this.handleChange.bindAsEventListener(this));
		}
		
		if ($('mapHandle'))
			$('mapHandle').observe('click',this.mapHandleClick.bindAsEventListener(this));
		
		this.fetchCounts();
	},
	
	fetchCounts: function() {
		elements = $$('#filterMenu li[id]');
		ids = new Array();
		
		for (i = 0; i < elements.length; i++) {
			ids.push(elements[i].id);
		}
		//alert(ids);
		new Ajax.Request(base_url+'filter/count', {method: 'post', parameters: {ids: ids.toJSON()}, onSuccess: this.populateCounts.bind(this)});
	},
	
	populateCounts: function(transport) {
		//alert(transport.responseText);
		counts = transport.responseText.evalJSON();
		elements = $$('#filterMenu li[id]');
		
		for (i = 0; i < elements.length; i++) {
			if (elements[i].className != "selected" && elements[i].className != "showAll")
				elements[i].innerHTML = elements[i].innerHTML + ' ('+ counts[elements[i].id] +')';
		}
		
	},
	
	handleChange: function(event) {
		element = event.element();
		
		if (element.checked) {
			this.submitForm();
		} else {
			//new AJAX.request(base_url+'filter/remove/Amenity/'+element.value,{complete: this.updateFilters.bind(this)})
			window.location = base_url+'filter/remove/Amenity/'+element.value;
		}
		
		event.stop();
	},
	
	updateFilters: function() {
		new Ajax.updater('filterPaging',base_url+'filter/display');
	},
	
	submitForm: function() {
		$('amenityFilter').submit();
	},
	
	mapHandleClick: function(event) {
		element = $('resultmap');
		
		if (element.visible()) {
			Effect.BlindUp('resultmap');
		} else {
			Effect.BlindDown('resultmap');
		}
		
		event.stop();
	}
}

function initFilterController() { var myFilterController = new FilterController();}
Event.observe($(window),'load',initFilterController);
