function trim(inp)
{
	var whitespace = "\\s";
	
	inp = inp.replace(new RegExp("^[" + whitespace + "]+", "g"), "");
	inp = inp.replace(new RegExp("[" + whitespace + "]+$", "g"), "");
	
	return inp;
}

function ShowLogin()
{
	document.getElementById("login_box").style.display = "block";
	document.getElementById("signup_box").style.display = "none";
}

function ShowSignup()
{
	document.getElementById("login_box").style.display = "none";
	document.getElementById("signup_box").style.display = "block";
}

function Login(method)
{
	if(method == "classic")
	{
		var f = document.getElementById("login_form");
		var e = document.getElementById("login_errors");
		var valid = true;
		
		f.elements["email"].className = "";
		f.elements["password"].className = "";
		
		if(trim(f.elements["email"].value) == "")
		{
			valid = false;
			f.elements["email"].className = "input_error";
		}
		
		if(trim(f.elements["password"].value) == "")
		{
			valid = false;
			f.elements["password"].className = "input_error";
		}
		
		if(valid)
		{
			f.elements["email"].disabled = "disabled";
			f.elements["password"].disabled = "disabled";
			f.elements["btn"].disabled = "disabled";
			
			document.getElementById("login_wait").style.visibility = "visible";
			
			document.getElementById("login_error").style.display = "none";
			document.getElementById("login_error").innerHTML = "";
			
			AJAX.EnqueueForm("callback", null, "", "", "LoginCallback", "", f);
		}
	}
	else if(method == "facebook")
	{
		AJAX.EnqueueRequest("callback", null, "", "", "LoginCallback", "", "ajax_membership.php", "act=login_facebook", "post");
	}
}

function Signup()
{
	var f = document.getElementById("signup_form");
	var e = document.getElementById("signup_errors");
	var valid = true;
	
	f.elements["displayname"].className = "";
	f.elements["email"].className = "";
	f.elements["password"].className = "";
	f.elements["password2"].className = "";
	
	if(trim(f.elements["displayname"].value) == "")
	{
		valid = false;
		f.elements["displayname"].className = "input_error";
	}
	
	if(trim(f.elements["email"].value) == "")
	{
		valid = false;
		f.elements["email"].className = "input_error";
	}
	
	if(trim(f.elements["password"].value) == "")
	{
		valid = false;
		f.elements["password"].className = "input_error";
	}
	
	if(trim(f.elements["password2"].value) == "")
	{
		valid = false;
		f.elements["password2"].className = "input_error";
	}
	
	if(valid)
	{
		f.elements["displayname"].disabled = "disabled";
		f.elements["email"].disabled = "disabled";
		f.elements["password"].disabled = "disabled";
		f.elements["password2"].disabled = "disabled";
		f.elements["btn"].disabled = "disabled";
		
		document.getElementById("signup_wait").style.visibility = "visible";
		
		AJAX.EnqueueForm("callback", null, "", "", "SignupCallback", "", f);
	}
}

function Logout()
{
	AJAX.EnqueueRequest("callback", null, "", "", "LogoutCallback", "", "ajax_membership.php", "act=logout", "post");
}

// Callbacks

function LoginCallback(response, passthrough)
{
	if(response == "0")
	{
		window.location.reload();
	}
	else
	{
		var f = document.getElementById("login_form");
		var error = "";
		
		f.elements["email"].disabled = null;
		f.elements["password"].disabled = null;
		f.elements["btn"].disabled = null;
		
		document.getElementById("login_wait").style.visibility = "hidden";
		
		if(response == "1")
		{
			error = "Login invalid. Please check your information and try again.";
		}
		
		document.getElementById("login_error").innerHTML = error;
		document.getElementById("login_error").style.display = "block";
	}
}

function SignupCallback(response, passthrough)
{
	if(response == "0")
	{
		window.location.reload();
	}
	else
	{
		var f = document.getElementById("signup_form");
		var error = "";
		
		f.elements["displayname"].disabled = null;
		f.elements["email"].disabled = null;
		f.elements["password"].disabled = null;
		f.elements["password2"].disabled = null;
		f.elements["btn"].disabled = null;
		
		document.getElementById("signup_wait").style.visibility = "hidden";
		
		if(response == "1")
		{
			error = "The passwords you entered do not match.";
		}
		else if(response == "2")
		{
			error = "The email address you entered is already registered.";
		}
		
		document.getElementById("signup_error").innerHTML = error;
		document.getElementById("signup_error").style.display = "block";
	}
}

function LogoutCallback(response, passthrough)
{
	if(response == "0")
	{
		window.location.reload();
	}
}

function External(a)
{
	window.open(a.href);
	return false;
}

function Validate_NewComment(f)
{
	if(trim(f.elements['comment'].value) != "")
	{
		f.elements['submit'].disabled = null;
	}
	else
	{
		f.elements['submit'].disabled = "disabled";
	}
}

function AJAXSubmit(f)
{
	AJAX.EnqueueForm("callback", null, "commentbox"+f.elements['post'].value, "", "CommentPostback", f.elements['post'].value + "|" + f.elements['post_title'].value, f);
}

function trim(inp)
{
	return inp.replace(/^\s+|\s+$/g,"");
}

function PostFacebookPromo()
{
	var template_data = {};
	
	FB.Connect.showFeedDialog(91626371032, template_data);
}

function GoToCommentPage(id, page)
{
	AJAX.EnqueueRequest("callback", null, "commentbox"+id, "", "CommentPostback", id, "ajax_comments.php", "post="+id+"&page="+page, "GET");
}

function CommentPostback(HTML, Passthrough)
{
	var spl = Passthrough.split("|", 2);
	
	var post_id = spl[0];
	var post_title = spl[1];
	
	var template_data = {post: post_id, posttitle: post_title};
	
	FB.Connect.showFeedDialog(91707176032, template_data);

	document.getElementById("commentbox"+post_id).innerHTML = HTML;
	
	//FB.XFBML.Host.parseDomTree();
}

function CommentToggle(id, link)
{
	if(document.getElementById('commentbox'+id).style.display == "none")
	{
		document.getElementById('commentbox'+id).style.display = "block";
		link.innerHTML = "Hide Comments";
	}
	else
	{
		document.getElementById('commentbox'+id).style.display = "none";
		link.innerHTML = "View Comments";
	}
}