$().ready(function() {
	
	function initManager(actions, forms) {

		var contentSelector = '#manager div.block-content > div:first';
		
		var linksSelector = [];
		for(var action in actions)
			linksSelector.push('a[href*=manager\=' + actions[action] + ']');
		linksSelector = linksSelector.join(', ');

		var formsSelector = [];
		for(var form in forms)
			formsSelector.push('form#' + forms[form]);
		formsSelector = formsSelector.join(', ');

		function bindHandlers() {
			var content = $(contentSelector);
			content.find(linksSelector).bind('click', handleLinks);
			content.find(formsSelector).bind('submit', handleForms);
		}
		
		bindHandlers();
		
		function handleLinks(e)
		{
			if(e.preventDefault) e.preventDefault(); else e.returnValue = false;
			var action = e.target.href.match(/\bmanager\=(\w*)/)[1];
	
			$.ajax({
				type: 'POST',  
				url: '/manager/' + action,
				success: function(response)
				{
					$(contentSelector).replaceWith(response);
					bindHandlers();
				}
			});
		}
		
		function handleForms(e)
		{
			if(e.preventDefault) e.preventDefault(); else e.returnValue = false;
			var actionUrl = e.target.action;
			var match = e.target.action.match(/\bmanager\=(\w*)/);
			var url = match !== null ? '/manager/' + match[1] : document.location.pathName;
			
			
			var form = $(e.target);
			var data = {ajax: 1, actionUrl: actionUrl};
			form.find(':input').each(function()
			{
				data[this.name] = $(this).val();
			});

			$.ajax({
				type: 'POST',  
				url: url,
				data: data,
				success: function(response)
				{
					if(response.substring(0,3) === '<!D')
					{
						window.location.reload(true);
						return;
					}
					
					try {
						var json = $.parseJSON(response);
					} catch(error) {
						json = undefined;
					}
					
					if(json !== undefined && json.status !== undefined && json.status === 302)
					{
						document.location.href = json.location;
					}
					else
					{
						$(contentSelector).replaceWith(response);
						bindHandlers();
					}
				}
			});
		}
	}
	
	initManager(['login', 'register', 'password'], ['loginForm', 'registerForm', 'passwordForm']);
	
	$('#export-datev a').click(function(e) {
		var el = $(this);
		if(el.parent('p.disabled').length)
			return false;
		
		setTimeout(function() {
			el.children('.info').text('(0)');
			el.parent('p').addClass('disabled');
		}, 500);
	});
	
});
