var ProcessLogger = {

	timer: null,
	pageNum: 1,

	submitFilters: function(updateOnlyNew) {
		if(typeof updateOnlyNew == "undefined") updateOnlyNew = false;
		var filters = {
			q: $("#Inputfield_q").val(),
			date_from: $("#Inputfield_date_from").val(),
			date_to: $("#Inputfield_date_to").val(),
			time: 0
		};
		if(updateOnlyNew) filters.time = $("#ProcessLogPage").attr('data-time');
		ProcessLogger.startSpinner(!updateOnlyNew);
		$.getJSON('./', filters, function(data) {
			if(!updateOnlyNew || (data.qty > -1 && ProcessLogger.pageNum == 1)) {
				$("#ProcessLogEntries").html(data.out).effect('highlight', 500); 
			}
			if(data.note.length > 0) {
				if(typeof Notifications != "undefined") {
					Notifications.message(data.note, '', 'tree'); 
				}
				$("#ProcessLogHeadline").find('.notes').html('+ ' + data.note);	
			}
			ProcessLogger.setupLogEntries();
			ProcessLogger.stopSpinner(!updateOnlyNew);
			$("#ProcessLogPage").attr('data-time', data.time);
		});
	},

	setupLogEntries: function() {
		
		ProcessLogger.pageNum = parseInt($("#ProcessLogPage").attr('data-page'));
		if(ProcessLogger.timer) clearTimeout(ProcessLogger.timer); 
		ProcessLogger.timer = setTimeout('ProcessLogger.submitFilters(true)', 5000);
	
		if(ProcessLogger.pageNum == 1) {
			$(".ProcessLogNew").each(function () {
				var $tr = $(this).closest('tr');
				$tr.hide().fadeIn('normal', function() {
					$tr.effect('highlight', 1000);
				});
				$(this).removeClass('ProcessLogNew');
			});
		}
	},

	paginationClick: function() {
		// pagination link clicked
		clearTimeout(ProcessLogger.timer); 
		ProcessLogger.startSpinner(true);
		$.getJSON($(this).attr('href'), function(data) {
			$("#ProcessLogEntries").html(data.out);
			ProcessLogger.setupLogEntries();
			ProcessLogger.stopSpinner(true);
		});
		return false;
	},
	
	startSpinner: function(tree) {
		if(typeof tree == "undefined") tree = true;
		if(tree) {
			$("#ProcessLogSpinner").addClass('fa-spin fa-spinner').removeClass('fa-tree');
		} else {
			$("#FieldsetTools").find('i.fa-sun-o').addClass('fa-spin');
		}
	},
	
	stopSpinner: function(tree) {
		if(typeof tree == "undefined") tree = true;
		if(tree) {
			$("#ProcessLogSpinner").removeClass('fa-spin fa-spinner').addClass('fa-tree');
		} else {
			$("#FieldsetTools").find('i.fa-sun-o').removeClass('fa-spin');
		}
	},
	
	filterChange: function() {
		clearTimeout(ProcessLogger.timer);
		ProcessLogger.timer = setTimeout('ProcessLogger.submitFilters(false)', 500);
	},

	init: function() {

		$("#Inputfield_q").on('keyup', ProcessLogger.filterChange); 
		$("#Inputfield_date_to, #Inputfield_date_from").on('change', ProcessLogger.filterChange); 

		$(document).on('click', '.MarkupPagerNav a', ProcessLogger.paginationClick); 
		
		ProcessLogger.setupLogEntries();
	}
}

$(document).ready(function() {
	ProcessLogger.init();	
}); 
