﻿
PlayerServices.GetPlayerStatus(null, EndGetPlayerStatus, null);

var PlayerStatus;

function EndGetPlayerStatus(response, state)
{
	if (!HandleCommonResults(response))
	{
		if (IsSuccessResult(response))
		{
			PlayerStatus = response;
			
			var statusMessage = FormatStatusMessage(response.StatusMessage, response.StatusTimestamp);

			if (response.ProfileThumbnailUrl == null || response.ProfileThumbnailUrl.length < 1)
			{
				document.getElementById("statusAvatar").src = NoImagePath;
			}
			else
			{
				document.getElementById("statusAvatar").src = response.ProfileThumbnailUrl;
			}
			
			document.getElementById("statusAvatar").style.display = "inline";

			SetInnerText(document.getElementById("statusPlayerName"), response.PlayerName);
			document.getElementById("statusPlayerName").title = response.PlayerName;
			SetInnerText(document.getElementById("statusPlayerStatus"), statusMessage);
			
			if(PlayerStatus.PlayerRoleName == "Admin")
			{
				AppendClass(document.getElementById("statusPlayerName"), "adminName");
				document.getElementById("adminShoutButton").style.display = "inline";
			}

			if (response.StatusMessage == null || response.StatusMessage.length < 1)
			{
				document.getElementById("statusPlayerStatus").title = "No status message";
				document.getElementById("statusClearPlayerStatus").style.display = "none";
			}
			else
			{
				document.getElementById("statusPlayerStatus").title = response.StatusMessage;
				//document.getElementById("statusClearPlayerStatus").style.display = "inline";
			}
			
			//if (response.UnreadMessageCount > 0)
			{
				document.getElementById("inboxNotifier").style.display = "inline";
				document.getElementById("inboxCount").innerHTML = "(" + response.UnreadMessageCount + ")";
				document.getElementById("noNotifications").style.display = "none";
			}

			//if (response.NewPollCount > 0)
			{
				document.getElementById("pollNotifier").style.display = "inline";
				document.getElementById("newPollCount").innerHTML = "(" + response.NewPollCount + ")";
				document.getElementById("noNotifications").style.display = "none";
			}

			if (response.FriendNotificationCount > 0)
			{
				document.getElementById("friendNotifier").style.display = "inline";
				document.getElementById("friendNotificationCount").innerHTML = "(" + response.FriendNotificationCount + ")";
				document.getElementById("noNotifications").style.display = "none";
			}

			document.getElementById("friendRequestsNotifier").style.display = "inline";
			document.getElementById("friendRequestCount").innerHTML = "(" + response.FriendRequestCount + ")";
			document.getElementById("noRequests").style.display = "none";
				
			if (response.FriendRequestCount > 0)
			{
				document.getElementById("friendRequestsIcon").src = "images/themes/default/status-icon-friend-new.png";
			}
			else
			{
				document.getElementById("friendRequestsIcon").src = "images/themes/default/status-icon-friend.png";
			}
			
			CheckForMirGame(response);
		}
		else
		{
			UnknownResult(response);
		}
	}
}

function StatusMessageKeyPress(e)
{
	if (e == null)
	{
		e = window.event;
	}

	var keyCode = e.keyCode;

	if (keyCode == null)
	{
		keyCode = e.which;
	}

	if (keyCode == 13)//enter key
	{
		UpdateStatusMessage();
	}
}

function UpdateStatusMessage()
{
	var statusMessage = document.getElementById("statusMessage").value;

	if (statusMessage == null || statusMessage.length < 1)
	{
		alert("Please enter a message to share!");
		return;
	}

	document.getElementById("statusMessage").value = "";

	PlayerServices.UpdatePlayerStatus(statusMessage, EndUpdatePlayerStatus, statusMessage);
}

function EndUpdatePlayerStatus(response, statusMessage)
{
	if (!HandleCommonResults(response))
	{
		if (IsSuccessResult(response))
		{
			document.getElementById("statusPlayerStatus").innerHTML = FormatStatusMessage(statusMessage, response.Timestamp);
		
			if (statusMessage == null || statusMessage.length < 1)
			{
				document.getElementById("statusPlayerStatus").title = "No status message";
				document.getElementById("statusClearPlayerStatus").style.display = "none";
			}
			else
			{
				document.getElementById("statusPlayerStatus").title = statusMessage;
				//document.getElementById("statusClearPlayerStatus").style.display = "inline";
			}		

			if (response.Event != null)
			{
				var eventContainer = document.getElementById("eventContainer");
				var event = response.Event;

				var eventBody = BuildEventBody(event);

				if (eventContainer.childNodes.length > 0)
				{
					eventContainer.insertBefore(eventBody, eventContainer.childNodes[0]);
				}
				else
				{
					eventContainer.appendChild(eventBody);
				}
			}
		}
		else
		{
			UnknownResult(response);
		}
	}
}

function FormatStatusMessage(statusMessage, timestamp)
{
	if (statusMessage != null && statusMessage.length > 0)
	{
		if (statusMessage.length > 75)
		{
			statusMessage = statusMessage.substr(0, 50) + "... - " + GetRelativeDate(timestamp);
		}
		else
		{
			statusMessage += " - " + GetRelativeDate(timestamp);
		}
	}
	else
	{
		statusMessage = "...";
	}

	return statusMessage;
}

function ShowProfilePicSelector()
{
	document.getElementById("popupCover").style.display = "block";
	document.getElementById("profilePicSelector").style.display = "block";
}

function CloseProfilePicSelector()
{
	document.getElementById("popupCover").style.display = "none";
	document.getElementById("profilePicSelector").style.display = "none";
}

function UploadPlayerImage(form, div_id)
{
	var profilePictureSelection = document.getElementById("profilePictureSelection");

	if (profilePictureSelection.value == null || profilePictureSelection.value.length < 1)
	{
		alert("Please select a picture to upload.");
		return;
	}
	
	var action_url = "http://" + WebServicePath + "/Service.aspx?svc=PlayerService&rpc=UploadProfilePicture";

	// Create the iframe...
	var iframe = document.createElement("iframe");
	iframe.setAttribute("id", "upload_iframe");
	iframe.setAttribute("name", "upload_iframe");
	iframe.setAttribute("width", "0");
	iframe.setAttribute("height", "0");
	iframe.setAttribute("border", "0");
	iframe.setAttribute("style", "width: 0; height: 0; border: none;");

	// Add to document...
	form.parentNode.appendChild(iframe);
	window.frames['upload_iframe'].name = "upload_iframe";

	iframeId = document.getElementById("upload_iframe");

	// Add event...
	var eventHandler = function()
	{
		if (iframeId.detachEvent)
		{
			iframeId.detachEvent("onload", eventHandler);
		}
		else
		{
			iframeId.removeEventListener("load", eventHandler, false);
		}

		var content = "";
		// Message from server...
		if (iframeId.contentDocument)
		{
			content += iframeId.contentDocument.body.innerHTML;
		}
		else if (iframeId.contentWindow)
		{
			content += iframeId.contentWindow.document.body.innerHTML;
		}
		else if (iframeId.document)
		{
			content += iframeId.document.body.innerHTML;
		}

		content = content.replace("<PRE>", "").replace("</PRE>", "").replace("<pre>", "").replace("</pre>", "");

		var response = content.parseJSON();

		// Del the iframe...
		setTimeout('iframeId.parentNode.removeChild(iframeId)', 250);

		if (!HandleCommonResults(response))
		{
			if (IsSuccessResult(response))
			{
				alert("Upload successful!");

				location.reload();
			}
			else
			{
				UnknownResult(response);
			}
		}

		document.getElementById(div_id).innerHTML = "";
	}

	if (iframeId.addEventListener)
	{
		iframeId.addEventListener("load", eventHandler, true);
	}

	if (iframeId.attachEvent)
	{
		iframeId.attachEvent("onload", eventHandler);
	}

	// Set properties of form...
	form.setAttribute("target", "upload_iframe");
	form.setAttribute("action", action_url);
	form.setAttribute("method", "post");
	form.setAttribute("enctype", "multipart/form-data");
	form.setAttribute("encoding", "multipart/form-data");

	// Submit the form...
	form.submit();

	document.getElementById(div_id).innerHTML = "Uploading... dont navigate away";
}

function ClearPlayerStatusMessage()
{
	PlayerServices.UpdatePlayerStatus(null, EndUpdatePlayerStatus, "");	
}

function BroadcastMessage()
{
	var broadcastMessage = document.getElementById("statusMessage").value;

	if (broadcastMessage == null || broadcastMessage.length < 1)
	{
		alert("Please enter a message to broadcast!");
		return;
	}
	
	var answer = confirm("You are about to broadcast this message to the entire server...\r\n\r\n\"" + broadcastMessage + "\"\r\n\r\nPress OK to continue.");
	
	if (answer)
	{
		document.getElementById("statusMessage").value = "";

		CommunityServices.BroadcastMessage(broadcastMessage, EndUpdatePlayerStatus, broadcastMessage);	
	}
}
