var jfbcUsernameSuccessElement;
var jfbcEmailSuccessElement;

function jfbcCheckUsernameAvailable(usernameField)
{
	jfbcUsernameSuccessElement = document.getElementById(usernameField);
	var testName = $('username').value;
	if (testName != '')
		var myXHR = new XHR({method:'get', onSuccess:jfbcShowUsernameSuccess}).send('index.php', 'option=com_jfbconnect&view=loginregister&task=checkUsernameAvailable&username='+testName);
}

function jfbcShowUsernameSuccess(req)
{
	if (req == 1)
	{
		jfbcUsernameSuccessElement.innerHTML='<img src="' + jfbcRoot + 'images/apply_f2.png" width="20" height="20">' + jfbcUsernameIsAvailable;
	}
	else
	{
		jfbcUsernameSuccessElement.innerHTML='<img src="' + jfbcRoot + 'images/cancel_f2.png" width="20" height="20">' + jfbcUsernameIsInUse;
	}
}

function jfbcCheckEmailAvailable(emailField)
{
	jfbcEmailSuccessElement = document.getElementById(emailField);
	var testEmail = $('email').value;
	if (testEmail != '' && jfbcIsEmail(testEmail))
		var myXHR = new XHR({method:'get', onSuccess:jfbcShowEmailSuccess}).send('index.php', 'option=com_jfbconnect&view=loginregister&task=checkEmailAvailable&email='+testEmail);
}

function jfbcShowEmailSuccess(req)
{
	if (req == 1)
	{
		jfbcEmailSuccessElement.innerHTML='<img src="' + jfbcRoot + 'images/apply_f2.png" width="20" height="20">' + jfbcEmailIsAvailable;
	}
	else
	{
		jfbcEmailSuccessElement.innerHTML='<img src="' + jfbcRoot + 'images/cancel_f2.png" width="20" height="20">' + jfbcEmailIsInUse;
	}
}

function jfbcIsEmail( text )
{
	var pattern = "^[\\w-_\.]*[\\w-_\.]\@[\\w]\.+[\\w]+[\\w]$";
	var regex = new RegExp( pattern );
	return regex.test( text );
}

function jfbcCheckPermission(permission, callback)
{
	FB.ensureInit(function()
	{
		FB.Connect.requireSession(function()
		{
			FB.Connect.showPermissionDialog(permission,
				function(result)
				{
					callback();
				}, false, null);
		});
	});

	return false;
}


function dumpObj(obj, name, indent, depth) {
	if (depth > 10) {
		return indent + name + ": <Maximum Depth Reached>\n";
	}

	if (typeof obj == "object") {
		var child = null;
		var output = indent + name + "\n";
		indent += "\t";
		for (var item in obj)
		{
			try {
				child = obj[item];
			} catch (e) {
				child = "<Unable to Evaluate>";
			}
			if (typeof child == "object") {
 				output += dumpObj(child, item, indent, depth + 1);
			} else {
				output += indent + item + ": " + child + "\n";
			}
		}
		return output;
	} else {
		return obj;
	}
}

