$(function() {
	var search_timeout_id = 0;
	var keyword = "";
	var keyword_tip = "Type anything";
	var search_cache = {};
	
	$("#keyword").focus(function() {
		if($(this).val() == keyword_tip) {
			$(this).val("").focus();
		}
	}).keyup(function(event) {
		if(event.keyCode == '13') {
			clearTimeout(search_timeout_id);
			search_timeout_id = 0;
			run_event_search();
		} else {
			if($(this).val() != keyword) {
				keyword = $.trim($(this).val()); 
				clearTimeout(search_timeout_id);
				search_timeout_id = setTimeout('run_event_search()', 700);
			}
		}
	}).change(function() {
		if($(this).val() != keyword) {
			clearTimeout(search_timeout_id);
			search_timeout_id = setTimeout('run_event_search()', 700);
			keyword = $.trim($(this).val());
		}
	});
	
	$("#venue").change(function() {
		run_event_search();
	});

	$("#genre").change(function() {
		run_event_search();
	});

	$("#date").change(function() {
		run_event_search();
	});
	
	$("#clear-search-options").click(function(e) {
		$("#genre OPTION:selected").removeAttr("selected");
		$("#genre OPTION:first").attr("selected", "selected");
		$("#venue OPTION:selected").removeAttr("selected");
		$("#venue OPTION:first").attr("selected", "selected");
		$("#date OPTION:first").val('Any');
		$("#date OPTION:first").text('Any');
		$("#keyword").val(keyword_tip);
		run_event_search();
		e.preventDefault();
	});
	
	run_event_search = function() {
		$("#event_table").html('<div align="center" style="padding: 100px 0 100px 0;"><img src="/img/icons/loading.gif"></div>');

		var search_genre_id = $("#genre").val();
		var search_venue_id = $("#venue").val();
		var search_date = $("#date OPTION:first").val();
		var search_keyword = $("#keyword").val();
		var category_id = $("#cid").val();
		var category_other = $("#other").val();
		
		if(search_keyword == keyword_tip) {
			search_keyword = "";
		}
		
		var search_params = {
			genre: search_genre_id,
			venue: search_venue_id,
			date: search_date,
			keyword: search_keyword
		};
		
		search_params.page = 1
		search_params.cat_name = $('#cat_name').val()
		
		if(category_id) {
			search_params.cid = category_id;
		} else if(category_other) {
			search_params.other = 1;
		}
		
		var cache_index = [];
		
		for(property in search_params) {
			cache_index.push(search_params[property]);
		}
		
		cache_index = cache_index.join("-");
		
		if(search_cache[cache_index]) {
			// take cached version
			$("#event_table").html(search_cache[cache_index]);
		} else {
			// do request otherwise
			$.get(
				'/buy_tickets/list_events.php',
				search_params,
				function(response) {
					search_cache[cache_index] = response;
					$("#event_table").html(response);
				}
			);
		}
		
	};
});

