function memberRegister(url) 
{
	$("a.memberRegister").click(function() {
		$(this).after('<div class="memberRegisterDialog"></div>');
		$.get(url + 'register/ajax/', function(formHtml) {
			initialiseDialogs("memberRegisterDialog", 
				url + 'my-genero/process-register/ajax/',
				'',
				'memberRegister');
			$("div.memberRegisterDialog").html(formHtml);
			$("div.memberRegisterDialog").dialog('open');

			$("div.memberRegisterDialog").dialog('option', 'title', '<h2>Register</h2>');
			replacePageTitles();
		});

		return false;
	});
}


function memberUpdate(url) 
{
	$("a.memberUpdate").click(function() {
		$(this).after('<div class="memberUpdateDialog"></div>');
		$.get(url + 'edit-my-details/ajax/', function(formHtml) {
			initialiseDialogs("memberUpdateDialog", 
				(url + 'my-genero/process-edit-my-details/ajax/'),
				'memberUpdate',
				'memberRegister');
			$("div.memberUpdateDialog").html(formHtml);
			$("div.memberUpdateDialog").dialog('open');

			$("div.memberUpdateDialog").dialog('option', 'title', '<h2>Member Details</h2>');
			replacePageTitles();
		});

		return false;
	});
}

function displayNewLoginDialog(formID, url, fromTopLogin, redirectUrl)
{
	$("form#" + formID).after('<div class="loginDialog"></div>');
	if(parseInt($('div.loginDialog').size()) == 0)
	{
		$("body").after('<div class="loginDialog"></div>');
	}

	$.get(url, function(formHtml) {

		initialiseDialogs("loginDialog", 
			url,
			'memberLogin',
			'loginAJAX',
			redirectUrl);
		$("div.loginDialog").html(formHtml);
		$("div.loginDialog").dialog('open');

		$('.loginDialog .formError').css('display', 'none');
		$('#ajaxUsername').focus();

		$("div.loginDialog").dialog('option', 'title', '<h2>Login</h2>');
		replacePageTitles();
	});
}
	

function displayLoginDialog(formID, url, fromTopLogin)
{
	$("form#" + formID).after('<div class="loginDialog"></div>');
	var loginAction = 'login';
	if(fromTopLogin)
	{
		loginAction = 'my-genero/process-login';
	}

	$.get(url + loginAction  + '/?ajax=true', function(formHtml) {
		initialiseDialogs("loginDialog", 
			url + 'my-genero/process-login/?ajax=true',
			'memberLogin',
			'loginAJAX');
		$("div.loginDialog").html(formHtml);
		$("div.loginDialog").dialog('open');

		if(fromTopLogin)
		{
			$('#ajaxUsername').attr('value', $('#username').attr('value'));
			$('#ajaxPassword').attr('value', $('#password').attr('value'));
		}
		$('#ajaxUsername').focus();

		$("div.loginDialog").dialog('option', 'title', '<h2>Login</h2>');
		replacePageTitles();
	});
}


function submitLogin(formID, url, baseURL)
{
	$("form#" + formID + " input.submit,input#submitLoginButton").click(function() {	
		if(!emailEntered)
		{
			$('#username').attr('value', '');
			$('#username').removeClass('dummy');
			emailEntered = true;
		}

		var postData = $("form#" + formID).serialize();
		$.getJSON(baseURL + url, postData, function(response) {
			if(response['success'])
			{
				window.location = response['url'];
			}
			else
			{
				$('form input[name="token"]').val(response['formToken']);
				displayLoginDialog(formID, baseURL, true);
			}
		});
		return false;
	});
}


function submitLogout(formID, url, baseURL)
{
	$("form#" + formID + " input.submit,a#submitLogoutButton").click(function() {
		var postData = $("form#" + formID).serialize();
		$.getJSON(baseURL + url, postData, function(response) {
			window.location = window.location;
		});
		return false;
	});
}


function initialiseDialogs(dialogClass, submitUrl, customClass, formClass, redirectUrl) 
{
	if(!customClass)
	{
		customClass = "";
	}

	$("div." + dialogClass).each(function(index) {
		var dialog = this;

		$(dialog).dialog({
			bgiframe: true,
			autoOpen: false,
			modal: true,
			width: 500,
			dialogClass: "generoDialog memberDialog " + customClass,
			beforeclose: function() {
				if(redirectUrl)
				{
					$.ajax({
						url: redirectUrl
					});
				}

				$("div." + dialogClass).remove();
			},
			buttons: {
				'': function() {
					var postData = $("form." + formClass).serialize();

					$.post(submitUrl, 
						postData,
						function(data) {
							$(dialog).html(data);
						}
					);
				}
			}
		});
	});
}
