(function($){
	$(document).ready(function() {
	    $('form.log-form').livequery('submit', function() {
            return $(this).eviewLoad($(this));
        });
	    
		$('.toggle-log').livequery(function(){
			$(this).click(function(){
				$('.log-block').addClass('minimized');
				if ($(this).hasClass('maximized')) {
					$(this).removeClass('maximized');
				} else {
					$('.toggle-log').removeClass('maximized');
					$(this).addClass('maximized');
					$(this).parents('.log-block').removeClass('minimized');
					if(!$(this).parents('.log-block').find('.tab-link.current').length) {
						$(this).parents('.log-block').find('.tab-link:first').click();
					}
				}
			});
		});
			
		$('.tab-link').livequery(function(){
			$(this).click(function(){
				if ($(this).hasClass('current')) {
					return false;
				}
				$(this).parents('.eview-block-content').find('.log-content-tab').hide();
				$(this).parents('.eview-block-content').find('.tab-link').removeClass('current');
				var target = $(this).addClass('current').attr('href');
				target = target.substr(target.indexOf('#'));
				$(target).show();
				return false;
			});
		});
			
		$('div.slider:visible').livequery(function(){
			$(this).each(function() {
				var inputValue = parseInt($(this).next('input.slider').val(),10);
				var startValue = inputValue ? inputValue : 0;
				$(this).slider({
					range:'min',
					min:0,
					max:10,
					step:1,
					value: startValue,
					disabled: $(this).next('input.slider').is(':disabled'),
					slide: function(event, ui) {
						$(this).next('input.slider').val(ui.value);
					},
					change: function(event, ui) {
						$(this).next('input.slider').change();
					}
				});
			});
		});
		
		$('form.log-values').livequery(function(){
			$(this).find('input, textarea').not(':disabled').change(function(){
				var form = $(this).parents('form');
				var data = form.serializeArray();
				data.push({'name':'noRender', 'value':1});
				addToSaveStack(form.attr('action'), data);
			});
		});
		
		$('.eview-link.prev-week,.eview-link.next-week').livequery(function() {
			$(this).click(function(){
				if (!$('.page-eview-load').length) {
					var container = $(this).closest('.eview-link-target');
					var loaderDiv = $('<div>').addClass('page-eview-load')
						.css({ 
							'height' : $(container).height(),
							'width'  : $(container).width()
						}).appendTo(
							$(container).css({ 'position' : 'relative' })
						);
				}
			});
		});
		
		$('input.log-graph-line-toggle,input[name="profile"]').livequery(function(){
			$(this).click(function(){
				if ($(this).is('.log-graph-line-toggle')) {
					if ($('.log-graph-line-toggle:checked').length >= 12) {
						$('.log-graph-line-toggle:not(:checked)').attr('disabled', 'disabled');
					} else {
						$('.log-graph-line-toggle[disabled]').removeAttr('disabled');
					}
				} else if ($(this).is('input[name="profile"]')) {
					var selectFields = $(this).val().split(',');
					$('.log-graph-line-toggle').removeAttr('disabled').removeAttr('checked');
					for (var i in selectFields) {
						$('#field-' + selectFields[i]).attr('checked', 'checked');
					}
				}
				
				var form = $(this).parents('form');
				addToSaveStack(
					form.attr('action'), 
					form.serialize(), 
					function(data) {
						saveStack.shift();
						if (!saveStack.length) {
							$('.log-graph').parents('.eview-link-target:first').replaceWith(data);
						}
						performSave();
					}
				);
			});
		});
		
		$('.log-graph-nav').livequery(function(){
			$(this).click(function(){
				$(this).parents('form').attr('action', $(this).attr('href')).submit();
				return false;
			});
		});
		
		$('.log-tooltip').livequery(function(){
			$(this).hover(function(){
				$(this).addClass('hover');
			},function(){
				$(this).removeClass('hover');
			});
		});
		
		$('#week-selector').change(function(){
			if ($(this).val()) {
				$(this).parents('form').submit();
			}
		});
		$('input[name="range"]').click(function(){
			$(this).parents('form').submit();
		});
		$('.week-select-block form').submit(function(){
			if ($('.week-selectable').length) {
				weekSelectForm = this;
				$('.week-selectable form').each(function(){
					var action = $(this).attr('action');
					if ((pos = action.indexOf('?')) != -1) {
						action = action.substr(0, pos);
					}
					action += '?' + $(weekSelectForm).serialize()
					$(this).attr('action', action);
					if ($(this).parents('.week-selectable').length) {
						$(this).submit();
					}
				});
				return false;
			}
		});
		
		$(".log-datepicker").datepicker({
			maxDate: new Date(),
			dateFormat: 'dd-mm-yy',
			showOn: 'button',
			buttonImage: '/images/datepicker-trigger.gif',
			buttonImageOnly: true
		});
	});
	
	$('.eview-loader').livequery(function(){
		$(this).ajaxStart(function(){
			$(this).show();
		}).ajaxStop(function(){
			$(this).hide();
		});
	});
	
	var saveStack = new Array();
	function addToSaveStack(action, values, postAjaxFunction) {
		if (saveStack.length > 1) {
			saveStack.pop();
		}
		
		if (typeof postAjaxFunction != 'function') {
			var postAjaxFunction = function(){
				saveStack.shift();
				performSave();
			}
		}
		
		saveStack.push({ action : action, values : values, postAjaxFunction : postAjaxFunction });
		if (saveStack.length == 1) {
			performSave();
		}
	}
	
	function performSave() {
		if (saveObject = saveStack.shift()) {
			saveStack.unshift(saveObject); // put it back for now;
			
			$.post(
				saveObject.action, 
				saveObject.values, 
				saveObject.postAjaxFunction
			)
		}
	}
})(jQuery);
