function Login()
{

	var sLoginForm = "<div id='divLogin'>\n" +
					"<form id='frmLogin' onsubmit='PerformLogin();return false'>\n" +
					"<label for='txtUsername'>Username:</label><br />\n" +
					"<input type='text' name='txtUsername' id='txtUsername' style='width:100%;' /><br />\n" +
					"<label for='txtPassword'>Password:</label<br />\n" +
					"<input type='password' name='txtPassword' id='txtPassword' style='width:100%;' /><br />\n" +
					"<div id='divLoginStatus'></div>\n" +
					"<div style='float:left;width:50%;text-align:center;'><input type='button' value='Cancel' onClick='HideLogin()' /></div>\n" +
					"<div style='float:left;width:50%;text-align:center;'><input type='submit' value='Login' /></div>\n" +
					"<br clear='all' />\n" +
					"<div style='float:left;width:50%;text-align:center'><a href='javascript:Register()'>Register</a></div>\n" +
					"<div style='float:left;width:50%;text-align:center'><a href='/password.php'>Forgot Password</a></div>\n" +
					"</form>\n" +
					"</div>";
	$("body").append(sLoginForm);

	$("#Modal").fadeTo("fast", .5);
	$("#Modal").bind("click", HideLogin);
	$("#divLogin").fadeIn("fast");
	$("#txtUsername").focus();
}

function ToggleArticle(id)
{
	if ($("#Article" + id).is(":visible"))
	{
		// Hide
		$("#ToggleArticle" + id).html("Show article");
	} else {
		// Show
		$("#ToggleArticle" + id).html("Hide article");
	}

	$("#Article" + id).animate({
								height: 'toggle',
								opacity: 'toggle'
							}, 'slow');
}

function RequestUploadGUID()
{
	var iReturn="UNLOADED";
	
	$.ajax({
			url:	"/admin/ajax.php?req=UploadGUID",
			success: function(result) {
						var oJson = $.parseJSON(result);
						if (oJson["status"] != 0)
						{
							alert("Unable to retrieve upload GUID:\n" + oJson["message"]);
							iReturn = "";
						} else {
							iReturn = oJson["message"];
						}
					},
			async: false
		});
	return iReturn;
}

var iUsernameValidated = 0;
var iEmailValidated = 0;
var iPasswordValidated = 0;

function ValidateUsername()
{
	$("#txtUsername").removeClass("error");
	$("#txtUsername").addClass("validating");
	$("#txtUsername").removeAttr("title");
	jQuery.get("login.php?validate=" + $("#txtUsername").val(), function(data) {
		if (data.replace(/ /gi) == "0")
		{
			// Not unique
			$("#txtUsername").removeClass("validating");
			$("#txtUsername").addClass("error");
			iUsernameValidated=0;
			$("#txtUsername").attr("title", "Username is unavailable.");
		} else {
			$("#txtUsername").removeClass("error");
			$("#txtUsername").removeClass("validating");
			iUsernameValidated=1;
		}
		ToggleRegistrationSubmit();
	});
}

function ToggleRegistrationSubmit()
{
	if (iUsernameValidated && iEmailValidated && iPasswordValidated)
		$("#btnRegister").removeAttr("disabled");
	else
		$("#btnRegister").attr("disabled", "");
}

function ValidatePasswords()
{
	var sPass = $("#txtPassword").val();
	var sConf = $("#txtConfirm").val();
	
	$("#txtConfirm").removeClass("error");
	$("#txtConfirm").removeAttr("title");
	
	if (sConf != "")
	{
		$("#txtConfirm").addClass("validating");
		if (sPass != sConf)
		{
			// Error
			$("#txtConfirm").addClass("error");
			$("#txtConfirm").attr("title", "Provided passwords do not match.");
			iPasswordValidated=0;
		} else {
			$("#txtConfirm").removeClass("validating");
			iPasswordValidated=1;
		}
	} else {
		iPasswordValidated = 0;
	}
	ToggleRegistrationSubmit();
}

function HideRegister()
{
	$("#Modal").fadeOut("fast");
	$("#Modal").unbind("click", HideRegister);
	$("#divRegister").fadeOut("fast");
}

function ValidateEmail()
{
	var oElem = $("#txtEmail");
	oElem.removeClass("error");
	oElem.removeAttr("title");
	
	if (oElem.val() == "")
	{
		iEmailValidated=0;
	} else {
		oElem.addClass("validating");
		var oReg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
		if (!oReg.test(oElem.val()))
		{
			oElem.removeClass("validating");
			oElem.addClass("error");
			oElem.attr("title", "Email address does not appear to be valid.");
			iEmailValidated=0;
		} else {
			oElem.removeClass("validating");
			iEmailValidated=1;
		}
	}
	ToggleRegistrationSubmit();
}

function Register()
{
	var sRegisterForm = "<div id='divRegister'>\n" +
						"<form id='frmRegister' onsubmit='return PerformRegistration()'>\n" +
						"<label for='txtUsername'>Username:</label><br />\n" +
						"<input type='text' name='txtUsername' id='txtUsername' onchange='ValidateUsername()' style='width:100%;' /><br />\n" +
						"<label for='txtPassword'>Password:</label><br />\n" +
						"<input type='password' name='txtPassword' id='txtPassword' onchange='ValidatePasswords()' style='width:100%;' /><br />\n" +
						"<label for='txtConfirm'>Confirm Password:</label><br />\n" +
						"<input type='password' name='txtConfirm' id='txtConfirm' onchange='ValidatePasswords()' style='width:100%;' /><br />\n" +
						"<label for='txtEmail'>Email Address:</label><br />\n" +
						"<input type='email' name='txtEmail' id='txtEmail' style='width:100%;' onchange='ValidateEmail()' /><br />\n" +
						"<div id='divRegistrationStatus'></div>\n" +
						"<div style='float:left;width:50%;text-align:center;'><input type='button' value='Cancel' onClick='HideRegister()' /></div>\n" +
						"<div style='float:left;width:50%;text-align:center;'><input type='button' onClick='PerformRegistration();' value='Register' id='btnRegister' /></div>\n" +
						"</form>\n" +
						"</div>";
						
	$("body").append(sRegisterForm);
	
	$("#divLogin").fadeOut("fast");
	$("#divLogin").remove();
	$("#Modal").fadeTo("fast", 0.5);
	$("#Modal").unbind("click", HideLogin);
	$("#divRegister").fadeIn("fast");
	$("#Modal").click(HideRegister);
	
	$("#frmRegister > input").removeAttr("disabled");
	
	ToggleRegistrationSubmit();
}

function HideLogin()
{
	$("#Modal").fadeOut("fast");
	$("#Modal").unbind("click", HideLogin);
	$("#divLogin").remove();
}

function Logout()
{
	$("#Modal").fadeTo("fast", 0.5);
	jQuery.getJSON("/login.php?logout=1", function() {
		$("#Menu").load("/menu.php");
		$("#Modal").fadeOut("fast");
	});
}

function PerformRegistration()
{
	var sData = $("#frmRegister").serialize();
	$("#frmRegister > input").attr("disabled", "");
	
	ShowRegistrationStatus("Submitting registration ... <img src='/img/Loading.gif' />");
	
	/**/
	var jqxhr = jQuery.post("login.php?action=register", sData, function(data) {
		// Success
		ShowRegistrationStatus(data);
		// Log the user in.
		var jqxhr2 = jQuery.post("/login.php", "txtUsername=" + $("#txtUsername").val() + "&txtPassword=" + $("#txtPassword").val(), function(data) {
			// Success
			var oResponse = jQuery.parseJSON(data + "");
			if (oResponse.status == -1)
			{
				// Reenable form
				ShowRegistrationStatus(oResponse.message);
			} else {
				ShowRegistrationStatus(oResponse.message);
				setTimeout("HideRegister()", 1000);
				$("#Menu").load("menu.php");
			}
		});
		jqxhr2.fail(function(data) {
			// Error
			ShowRegistrationStatus("Error: " + data);
		});
	});
	
	jqxhr.fail(function(data) {
		// An error was raised.
		$("#frmRegister > input").removeAttr("disabled");
		ShowRegistrationStatus("Error: " + data);
	});
	/**/
}

function ShowRegistrationStatus(Message)
{
	var oElem = $("#divRegistrationStatus");
	oElem.html(Message);
	if (oElem.is(":hidden"))
	{
		oElem.slideDown("fast");
		var height = $("#divRegister").height() + 24;
		$("#divRegister").animate({height: height + "px"}, "fast");
	}
}

function PerformLogin()
{
	var sUsername = $("#txtUsername").val();
	var sPassword = $("#txtPassword").val();
	
	var sData = $("#frmLogin").serialize();
	
	$("#txtUsername").attr("disabled", "");
	$("#txtPassword").attr("disabled", "");
	
	var oElem = $("#divLoginStatus");
	oElem.html("Logging in ... <img src='/img/loading.gif' />");
	if (oElem.is(":hidden"))
	{
		oElem.slideDown("fast");
		var height = ($("#divLogin").height() + 24);
		$("#divLogin").animate({height: height + "px"}, "fast");
	}
	var jqxhr = jQuery.post("/login.php", sData, function(data) {
		// Success
		var oResponse = jQuery.parseJSON(data + "");
		if (oResponse.status == -1)
		{
			$("#divLoginStatus").html(oResponse.message);
			$("#txtUsername").removeAttr("disabled");
			$("#txtPassword").removeAttr("disabled");
		} else {
			$("#divLoginStatus").html(oResponse.message);
			setTimeout("HideLogin()", 1000);
			$("#Menu").load("/menu.php");
		}
		//setTimeout("HideLogin()", 1000);
	});
	
	jqxhr.fail(function(data) {
		// Error
		$("#txtUsername").removeAttr("disabled");
		$("#txtPassword").removeAttr("disabled");
		alert("Error: " + data.responseText);
	});

}

function ShowImage(id)
{
	if ($("#divPopup").is(":visible"))
	{
		var iCnt=0;
		for (var Index in Images)
		{
			// Find our image
			if (parseInt(Images[Index]["id"]) == parseInt(id))
			{
				SwapImage(Index);
				return;
			} else {
				iCnt++;
			}
		}
		alert(id + " not found.");
	} else {
		ShowContentPopup("image.php?id=" + id);
		$("#divPopup").attr("noresize", 1);
	}
}

function SwapImage(Index)
{
	var oImage = Images[Index];
	var id = oImage["id"];
	var Name = oImage["name"];
	var Desc = oImage["description"];
	var Url = oImage["image"];
	
	$(".ThumbSelected").removeClass("ThumbSelected");
	$("#ImageThumb" + id).addClass("ThumbSelected");
	
	var speed = "fast";
	var Links = "<div style='float:right;'><a href='" + Url + "'>View Full</a><br /><a href='gallery.php?image=" + id + "'>Direct Link</a></div>";
	Desc = Links + Desc + "<br clear='all' />";

	$("Image").unbind("load");
	$("#ImageTitle").fadeOut(speed, function() {
		$(this).html(Name);
		$(this).fadeIn(speed);
	});
	
	$("#ImageDescription").fadeOut(speed, function() {
		$(this).html(Desc);
		$(this).fadeIn(speed);
	});
	
	$("#Image").fadeOut(speed, function() {
		$(this).attr("src", Url);
		$(this).load(function() {
			SizeImage();
			$(this).fadeIn(speed);
		});
	});
}

function SizeContentPopup()
{
	var oPopup = $("#divPopup");
	
	var iNoResize = oPopup.attr("noresize");
	if (iNoResize == undefined || iNoResize==0)
	{
		var iTemp = oPopup.width();
		
		var iOverrideWidth = oPopup.attr("overridewidth");
		var iOverrideHeight = oPopup.attr("overrideheight");
		
		var iWidth=0;
		var iHeight=0;
		
		var iWindowHeight = $(window).height();
		var iWindowWidth = $(window).width();
		
		if (iOverrideWidth != undefined)
		{
			iWidth = iOverrideWidth;
		} else {
			// Calculate width, minimum of 400px.
			iWidth = oPopup.width();
			if (iWidth < 400)
				iWidth = 400;
		}
		
		if (iOverrideHeight != undefined)
		{
			iHeight = iOverrideHeight;
		} else {
			// Calculate height.
			oPopup.width(iWidth + "px");
			var iHeight = oPopup[0].scrollHeight + 5;
			oPopup.width(iTemp + "px");
		}
		
		// Restrict popup to fit in our window
		if (iHeight > iWindowHeight)
			iHeight = iWindowHeight - 100;
		if (iWidth > iWindowWidth)
			iWidth = iWindowWidth - 100;
		
		
		oPopup.animate({
						"height": iHeight + "px",
						"margin-top": -(iHeight/2) + "px",
						"width": iWidth + "px",
						"margin-left": -(iWidth/2) + "px"
					}, "fast");
	}
}

function ShowContentPopup(Location)
{
	$("#Modal").fadeTo("fast", 0.5);
	$("#Modal").click(function() {
		HideContentPopup();
	});
	
	$("body").append("<div id='divPopup'></div>");
	$("#divPopup").css({"overflow": "hidden"});

	$("#divPopup").html("Loading ... <img src='/img/loading.gif' />");
	$("#divPopup").removeAttr("overrideheight");
	$("#divPopup").removeAttr("overridewidth");
	$("#divPopup").animate({
							"margin-left": "-75px",
							"margin-top": "-12",
							"width": "150",
							"height": "25",
						}, 250);
						
	// Actually load
	$("#divPopup").load(Location, SizeContentPopup);
		
}

function HideContentPopup()
{
	$("#divPopup").html("");
	$("#divPopup").css({
						"overflow": "hidden"
						});
	$("#divPopup").animate({
							"width": "0px",
							"height": "0px",
							"margin-left": "0px",
							"margin-top": "0px"
							}, 250, function() {
								RemoveElement("divPopup");
						});
	$("#Modal").fadeOut("fast");
	if (SizeImage != undefined)
		$(window).unbind("resize", SizeImage);
}

function RemoveElement(id)
{
	$("#" + id).remove();
}
