var Panels = {
	panels : null,
	filters : null,
	initialized : false,

	initialize : function() {
		if (!this.initialized) {
			this.panels = document.getElementsByClassName('panel');
			if ($('filter_sites')) {
				this.filters = $('filter_sites').down('ul').childElements();
				this._toggle = this.toggle.bindAsEventListener(this);
				this._toggleFilter = this.toggleFilter.bindAsEventListener(this);
			}
			this.createEvents();
			this.initialized = true;
		}
	},

	createEvents : function() {
		for (var i=0; i<this.panels.length; i++) {
			var panel = this.panels[i];
			panel.header = panel.down('h1');
			panel.content = panel.down('div');
			panel.arrow = panel.down('h1').down('img');
			if ($('filter_sites')) {
				panel.header.observe('click', this._toggle);
			}
		}
		if ($('filter_sites')) {
			for (var i=0; i<this.filters.length; i++) {
			    var filter = this.filters[i];
				filter.observe('click', this._toggleFilter);
			}
		}
	},

	toggleFilter : function(event) {
        var _this = Event.findElement(event, 'li');
        _this.toggleClassName('selected');
        this.setFilters();
        RefreshMap();
	},
 
	setFilters : function() {
	    $('filters').value = '';
	    for (var i=0; i<this.filters.length; i++) {
	        var filter = this.filters[i];
	        if (filter.hasClassName('selected')) {
	            $('filters').value += filter.classNames().toArray().without('selected') + ','
	        }
	    }
	    var value = $('filters').value;
	    $('filters').value = value.substring(0, value.length-1);
	},

	toggle : function(event) {
		var panel = Event.findElement(event, 'div');
		panel.content.toggle();
		if (panel.content.visible()) {
			panel.arrow.src = 'assets/arrow_up.jpg';
		} else {
			panel.arrow.src = 'assets/arrow_down.jpg';
		}
        if (moz) {
            var selection = window.getSelection();
			selection.collapse(document.body, 0);
        } else if (ie) {
            var selection = document.selection;
			var range = selection.createRange();
			range.collapse(true);
        }
	}
}