
var filter = {

	actionUrl : null,

	init : function(actionUrl) {
		filter.actionUrl = actionUrl;
	},

	changeAlphabeticFilterType : function() {
		var events = $('eventsCheckbox').checked ? true : false;
		var persons = $('personsCheckbox').checked ? true : false;
		if (events == false && persons == false) return false;

		var letter = $('currentLetter');
		if (letter) letter = letter.innerHTML.toLowerCase();
		if (!letter) return false;
		return filter.changeAlphabeticLetter(letter);
	},

	changeAlphabeticLetter : function(letter) {
		var events = $('eventsCheckbox').checked ? true : false;
		var persons = $('personsCheckbox').checked ? true : false;
		if (events == false && persons == false) return false;

		var url = filter.actionUrl;
		if (events != persons) url += (events ? 'hauptereignisse' : 'personen') + '/';
		if (letter) url += letter + '/';

		window.location.href = url;
		return false;
	},

	changeSearchFilterType : function() {
		if (!filter._checkSearchFilterType()) return false;
		if (!filter._checkSimpleSearchQuery()) return false;

		return filter.changeSearchQuery();
	},

	changeSearchQuery : function() {
		if (!filter._checkSearchFilterType()) return false;
		if (!filter._checkSimpleSearchQuery()) return false;

		var url = filter.actionUrl;
		var path = filter._fetchPath();
		if (path === false) return false;
		url += path;

		var query = $('query');
		url += '?search='+query.value;
		window.location.href = url;
		return false;
	},

	changeExtendedSearchFilterType : function() {
		if (!filter._checkSearchFilterType()) return false;
		if (!filter._hasExtendedSearchQuery()) return false;

		return filter.changeExtendedSearchQuery();
	},

	changeExtendedSearchQuery : function() {
		if (!filter._checkSearchFilterType()) return false;
		if (!filter._hasExtendedSearchQuery()) return false;

		var url = filter.actionUrl;
		var path = filter._fetchPath();
		if (path === false) return false;
		url += path;

		var form = $('extendedsearch');
		if (!form) return false;

		var extQuery = filter._getExtendedSearchQuery();
		url += '?' + extQuery;
		window.location.href = url;
		return false;
	},

	_checkSearchFilterType : function() {
		var eventsCheckbox = $('eventsCheckbox');
		var events = (eventsCheckbox && eventsCheckbox.checked ? true : false);
		var subeventsCheckbox = $('subeventsCheckbox');
		var subevents = (subeventsCheckbox && subeventsCheckbox.checked ? true : false);
		var personsCheckbox = $('personsCheckbox');
		var persons = (personsCheckbox && personsCheckbox.checked ? true : false);
		if (events == false && subevents == false && persons == false) return false;

		return true;
	},

	_checkSimpleSearchQuery : function() {
		var query = $('query');
		if (query) query = query.value;
		if (typeof(query) != 'string' || query == '') return false;

		return true;
	},

	_getExtendedSearchQuery : function() {
		var form = $('extendedsearch');
		if (!form) return false;

		var presentElements = [];
		var inputElements = $A(form.getElementsByTagName('input'));
		inputElements.each(function(e) {
			if (e.value != '') presentElements.push(e);
		});
		var selectElements = $A(form.getElementsByTagName('select'));
		selectElements.each(function(e) {
			if (e.value != '') presentElements.push(e);
		});

		return Form.serializeElements($A(presentElements));
	},

	_hasExtendedSearchQuery : function() {
		var form = $('extendedsearch');
		if (!form) return false;

		var presentElements = [];
		var inputElements = $A(form.getElementsByTagName('input'));
		inputElements.each(function(e) {
			if (e.name != 'events' && e.name != 'subevents' && e.name != 'persons' && e.value != '') presentElements.push(e);
		});
		var selectElements = $A(form.getElementsByTagName('select'));
		selectElements.each(function(e) {
			if (e.name != 'events' && e.name != 'subevents' && e.name != 'persons' && e.value != '') presentElements.push(e);
		});

		return elements.length > 0;
	},

	_fetchPath : function() {
		var path = '';
		var eventsCheckbox = $('eventsCheckbox');
		var events = (eventsCheckbox && eventsCheckbox.checked ? true : false);
		var subeventsCheckbox = $('subeventsCheckbox');
		var subevents = (subeventsCheckbox && subeventsCheckbox.checked ? true : false);
		var personsCheckbox = $('personsCheckbox');
		var persons = (personsCheckbox && personsCheckbox.checked ? true : false);
		if (events && !subevents && !persons) {
			path = 'hauptereignisse/';
		} else if (!events && subevents && !persons) {
			path = 'nebenereignisse/';
		} else if (!events && !subevents && persons) {
			path = 'personen/';
		} else if (events && subevents && !persons) {
			path = 'ereignisse/';
		} else if (!events && subevents && persons) {
			path = 'ohne-hauptereignisse/';
		} else if (events && !subevents && persons) {
			path = 'ohne-nebenereignisse/';
		} else {
			return false;
		}
		return path;
	}

}

