Ajax.Responders.register({
	onException: function(request, transport) {
		alert('Exception: ' + transport);
	}
});

var initSearchForm = function() {
	var sb = $('searchButton');
	sb.value = 'Search';
	sb.disabled = false;				
}

var doSearchFormOnSuccess = function(transport, json) {
	initSearchForm();
}

var doSearchFormOnFailure = function(transport, json) {
	initSearchForm();
}

var flatCalendarOnUpdate = function(calendar) {
	if (calendar.dateClicked) {
		var selectedDated = calendar.date.print(calendar.dateFormat);
		var params = $H( { search_date_start: selectedDated, search_date_end: selectedDated } ).toQueryString()
		window.location = 'calendar_of_events.asp?' + params;
	}
}

var doPleaseWaitSearchButton = function() {
	var sb = $('searchButton');
	sb.disabled = true;
	sb.value = 'Searching, please Wait...';
}

var updateSearchResults = function(page, params) {
	var update_request = new Ajax.Updater('searchResult',
			page, {	parameters: params,
				onFailure: function(transport, json) { doSearchFormOnFailure(transport, json); },
				onSuccess: function(transport, json) { doSearchFormOnSuccess(transport, json); }
			});				
}

var inputArray2QueryString = function(source) {
	var result = '';
	source.each(function(value, index) {
		var serialized = Form.Element.serialize(value);
		if (serialized)
			result += '&' + Form.Element.serialize(value);				
	});
	return result;
}

var doSearch = function() {	
	doPleaseWaitSearchButton();
	var params = $H( { keywords: $F('keywordz'), search_date_start: $F('search_date_start'), search_date_end: $F('search_date_end') } ).toQueryString();
	var cats = Form.getInputs('searchForm', 'checkbox', 'cat');
	params += inputArray2QueryString(cats);
	updateSearchResults('search_events/searchevents.asp', params);
}

var SR_updateSearchResults = function(page, pageSize, keywords, search_date_start, search_date_end, categories) {
	doPleaseWaitSearchButton();
	var SR_params = $H( { p: page, s: pageSize, keywords: keywords, search_date_start: search_date_start, search_date_end: search_date_end } ).toQueryString()
	SR_params += '&cat=' + categories.split(', ').join('&cat=');
	updateSearchResults('search_events/searchevents.asp', SR_params);
}