var doSubmit = false;

$(document).ready(function() {
	$(document).click(function() {$('#login_div').hide();});
	$('#login_div').click(function(e) {e.stopPropagation();});
	$('#login_div').bgiframe();
});

function ShowLogin() {
	$('#login_div').show();
}

function SubmitLogin(obj) {
	DeasactiveForm('#login_form');
	$.ajax({
		type: 'POST',
		url: $('#login_form').attr('action'),
		data: $('#login_form').serialize(),
		success: function(msg) {
			if (msg.indexOf('error:') > -1) {
				ActiveForm('#login_form');
				DisplayError($('#error_pos'), msg);
			} else {
				doSubmit = true;
				$('#login_form').submit();
			}
		}
	});
	return doSubmit;
/*	$.ajax({
		type: 'POST',
		url: $('#login_form').attr('action'),
		data: $('#login_form').serialize(),
		success: function(msg) {
			if (msg.indexOf('error:') > -1) {
				ActiveForm('#login_form');
				DisplayError(obj, msg);
			} else {
				if (window.location.href.indexOf('logout') >= 0)
					window.location = '/';
				else if (window.location.href.indexOf('forgot') >= 0)
					window.location = '/';
				else
					window.location.reload(true);
			}
		}
	});*/
}

function pressedKey() {
	if (event.keyCode == 13) {
		$('#error_pos').focus();
	}
}
function DisplaySignUp() {
	$('#login_div').hide();
	$.ajax({
		url: '/',
		data: 'signup/now/ajax',
		success: function(msg){
			$('#dialog_box').data('title.dialog', 'Share positives vibes on Talawa !');
			$('#dialog_box').html(msg);
			$('#dialog_box').dialog('option', 'buttons', { });
			$('#dialog_box').dialog('option', 'bgiframe', true);
			$('#dialog_box').dialog('option', 'width', 595);
			$('#dialog_box').dialog('option', 'height', 'auto');
			$('#dialog_box').dialog('open');
			UpdateInterface();
		}
	});
}

function ShowTOS() {
	$('#signup_div').hide();
	$('#tos_div').fadeIn('fast');
}

function HideTOS() {
	$('#tos_div').hide();
	$('#signup_div').fadeIn('fast');
}

function DisplayForgot() {
	$('#login_div').hide();
	$.ajax({
		url: '/',
		data: 'forgot/reset/ajax',
		success: function(msg){
			$('#dialog_box').data('title.dialog', 'Reset your password');
			$('#dialog_box').html(msg);
			$('#dialog_box').dialog('option', 'buttons', { });
			$('#dialog_box').dialog('option', 'bgiframe', true);
			$('#dialog_box').dialog('option', 'width', 595);
			$('#dialog_box').dialog('option', 'height', 'auto');
			$('#dialog_box').dialog('open');
			UpdateInterface();
			if ($('#username').val().length > 0 && $('#username').val() != 'Your E-Mail...')
				$('#f_email').val($('#username').val());
		}
	});
}


function DisplayShare() {
	DisplaySignUp();
}

function SubmitSignUp(obj) {
	if (!ValidateForm(obj))
		return false;
	DeasactiveForm('#signup_form');
	$.ajax({
		type: 'POST',
		url: $('#signup_form').attr('action'),
		data: $('#signup_form').serialize(),
		success: function(msg) {
			ActiveForm('#signup_form');
			if (msg.indexOf('error:') > -1) {
				DisplayError(obj, msg);
			} else {
				if ($('#dialog_box').dialog('isOpen'))
					$('#dialog_box').dialog('close');
				$('#username').val($('#s_email').val());
				setTimeout(function(){ ShowLogin(); $('#password').focus(); }, 1);
			}
		}
	});
}

function SubmitForgot(obj) {
	if (ValidateEmail($('#f_email').val()) == false) {
		DisplayError(obj, 'Invalid email address.');
		$('#f_email').focus();
		return false;
	}
	$.ajax({
		url: '/',
		data: 'forgot/reset/email/'+$('#f_email').val()+'/ajax',
		success: function(msg){
			if (msg.indexOf('error:') > -1) {
				DisplayError(obj, msg);
				$('#f_email').focus();
			} else {
				DeasactiveForm('#forgot_form');
				$.ajax({
					type: 'POST',
					url: $('#forgot_form').attr('action'),
					data: $('#forgot_form').serialize(),
					success: function(msg) {
						ActiveForm('#forgot_form');
						if (msg.indexOf('error:') > -1) {
							DisplayError(obj, msg);
						} else {
							$('#n_email').html($('#f_email').val());
							$('#forgot_send').hide();
							$('#forgot_notif').fadeIn('fast');
						}
					}
				});
			}
		}
	});
}

function CloseForgot() {
	$('#dialog_box').dialog('close');
}

function SubmitRecover(obj) {
	if ($('#f_password').val().length < 4 || $('#f_password_bis').val().length < 4) {
		DisplayError(obj, 'Password must have at least 4 characters.');
		$('#f_password').focus();
		return false;
	}
	if ($('#f_password').val() != $('#f_password_bis').val()) {
		DisplayError(obj, 'The retyped Password does not match.');
		$('#f_password').focus();
		return false;
	}
	DeasactiveForm('#forgot_form');
	$.ajax({
		type: 'POST',
		url: $('#forgot_form').attr('action'),
		data: $('#forgot_form').serialize(),
		success: function(msg) {
			ActiveForm('#forgot_form');
			if (msg.indexOf('error:') > -1) {
				DisplayError(obj, msg);
			} else {
				$('.signup').html(msg);
				$('#login_div').show();
			}
		}
	});
}

function ValidateForm(obj) {
	if ($('#s_username').val().length < 4) {
		DisplayError(obj, 'Username must have at least 4 characters.');
		$('#s_username').focus();
		return false;
	}
	var re = new RegExp(/^([a-zA-Z0-9\s]+)$/);
	if (!$('#s_username').val().match(re)) {
		DisplayError(obj, 'Username contains invalid characters.');
		$('#s_username').focus();
		return false;
  }
	if (ValidateEmail($('#s_email').val()) == false) {
		DisplayError(obj, 'Invalid email address.');
		$('#s_email').focus();
		return false;
	}
	if ($('#s_password').val().length < 4 || $('#s_password_bis').val().length < 4) {
		DisplayError(obj, 'Password must have at least 4 characters.');
		$('#s_password').focus();
		return false;
	}
	if ($('#s_password').val() != $('#s_password_bis').val()) {
		DisplayError(obj, 'The retyped Password does not match.');
		$('#s_password').focus();
		return false;
	}
	if ($('#tos').attr('checked') != true) {
		DisplayError(obj, 'TOS must be read and agree.');
		$('#tos').focus();
		return false;
	}
	/*
	if ($('#s_gender').val() == 0) {
		DisplayError(obj, 'Please select an user category.');
		$('#s_gender').focus();
		return false;
	}*/
	$.ajax({
		url: '/',
		data: 'signup/check/name/'+$('#s_username').val()+'/ajax',
		success: function(msg){
			if (msg.indexOf('error:') > -1) {
				DisplayError(obj, msg);
				$('#s_username').focus();
				return false;
			}
		}
	});
	$.ajax({
		url: '/',
		data: 'signup/check/email/'+$('#s_email').val()+'/ajax',
		success: function(msg){
			if (msg.indexOf('error:') > -1) {
				DisplayError(obj, msg);
				$('#s_email').focus();
				return false;
			}
		}
	});
	return true;
}

function ValidateEmail(email) {
	var at = email.lastIndexOf("@");

	// Make sure the at (@) sybmol exists and
	// it is not the first or last character
	if (at < 1 || (at + 1) === email.length)
		return false;

	// Make sure there aren't multiple periods together
	if (/(\.{2,})/.test(email))
		return false;

	// Break up the local and domain portions
	var local = email.substring(0, at);
	var domain = email.substring(at + 1);

	// Check lengths
	if (local.length < 1 || local.length > 64 || domain.length < 4 || domain.length > 255)
		return false;

	// Make sure local and domain don't start with or end with a period
	if (/(^\.|\.$)/.test(local) || /(^\.|\.$)/.test(domain))
		return false;

	// Check for quoted-string addresses
	// Since almost anything is allowed in a quoted-string address,
	// we're just going to let them go through
	if (!/^"(.+)"$/.test(local)) {
		// It's a dot-string address...check for valid characters
		if (!/^[-a-zA-Z0-9!#$%*\/?|^{}`~&'+=_\.]*$/.test(local))
			return false;
	}

	// Make sure domain contains only valid characters and at least one period
	if (!/^[-a-zA-Z0-9\.]*$/.test(domain) || domain.indexOf(".") === -1)
		return false;

	return true;
}
