includeCSS( "gfx/dsuss.WebClient.PlayersOnline.css" );

var g_onlineUsersAutorefreshInterval = 15000;

function createPlayersOnlineTable( returnValue )
{
	isLoggedIn = getCurrentUserName() != null;

	var numberOfOnlineUsers = 0;
	
	if (returnValue != null && returnValue != undefined &&
		returnValue.GetOnlineUsers != null && returnValue.GetOnlineUsers != undefined)
	{
		if (returnValue.GetOnlineUsers.length == undefined)
		{
			numberOfOnlineUsers = 1;			
		}
		else
		{
			numberOfOnlineUsers = returnValue.GetOnlineUsers.length;
		}
	}
	
	var htmlForDiv = '<table id=PlayersOnlineTable>';
			
	if (isLoggedIn == true)
	{
		htmlForDiv += 
			'<tr>'
			+	'<th><b>' + dsuss_WebClient_PlayersOnline.UserOnlineHeader + ' (' + numberOfOnlineUsers + ')</b><br>' + dsuss_WebClient_PlayersOnline.LocationHeader + '</th>'
			+	'<th>&nbsp;</th>'
			+ '</tr>';
	}
	else
	{
		htmlForDiv += 
			'<tr>'
			+	'<th>' + dsuss_WebClient_PlayersOnline.UserOnlineHeader + ' (' + numberOfOnlineUsers + ')</th>'
			+ '</tr>';
	}

	htmlForDiv += '</tr>';

	if (returnValue != null)
	{
		for ( var i=0; ((returnValue.GetOnlineUsers.length == null) && (i<1)) || (i < returnValue.GetOnlineUsers.length); i++)
		{
			var currentUser = (returnValue.GetOnlineUsers.length == null)
				? returnValue.GetOnlineUsers
				: returnValue.GetOnlineUsers[ i ];
			
			if (isLoggedIn)
			{
				htmlForDiv +=
				'<tr>'
					+ '<td>'
					+	'<b><a href="javascript:getPlayerDetails(\'' + currentUser.UserName + '\');" >'
					+		currentUser.ContactAlias
					+	'</a></b><br>'
					+	((currentUser.Club == null || currentUser.Club.lenght == 0)? '' : currentUser.Club)
					+ '</td>';
				
				if (currentUser.UserName.toLowerCase() != getCurrentUserName().toLowerCase())
				{
					htmlForDiv +=
						  '<td>'
						+	'<a href = "javascript:openChallengePopup(\'' + currentUser.UserName + '\', \'' + currentUser.ContactAlias + '\');" >'
						+	dsuss_WebClient_PlayersOnline.ChallengeLabel
						+	'</a>'
						+ '</td>'
						+ '</tr>';						
				}
				else
				{
					htmlForDiv += '<td>&nbsp;</td></tr>';
				}
			}
			else			
			{
				htmlForDiv += '<tr><td>' + currentUser.ContactAlias + '</td></tr>';
			}
		}
	}

	htmlForDiv += '</table>';
	
	document.getElementById("PlayersOnlineTableContainer").innerHTML = htmlForDiv;
}

function getOnlineUsers()
{
	var searchText = document.getElementById("SearchText").value;

	var parameters = new WebMethodParameters( true );
	parameters.add( "search", searchText);	

	var returnValue;
	returnValue = call("Session","GetOnlineUsers",parameters.all);
	
	rewriteQuotationsInAll(returnValue);

	createPlayersOnlineTable (returnValue);
}

function clearSearch() {
	document.getElementById("SearchText").value = "";
	getOnlineUsers();
}

var onlineUsersTabVisible = false;
var getOnlineUsersPostponed = false;

function onPlayersOnlineTabShow()
{
	onlineUsersTabVisible = true;
	
	if (getOnlineUsersPostponed)
	{
		getOnlineUsers();
		getOnlineUsersPostponed = false;
	}
}

function onPlayersOnlineTabHide()
{
	onlineUsersTabVisible = false;
}

addTabEventHandler( "PlayersOnlineTab", onPlayersOnlineTabShow, onPlayersOnlineTabHide );

function onlineUsersAutorefresh()
{
	if (onlineUsersTabVisible)
	{
		getOnlineUsers();
	}
	else
	{
		getOnlineUsersPostponed = true;
	}
	
	setTimeout( "onlineUsersAutorefresh()", g_onlineUsersAutorefreshInterval );
}

function dsuss_WebClient_PlayersOnline_StringsLoaded()
{
	document.getElementById("SearchButton").value = dsuss_WebClient_PlayersOnline.SearchButton;
	document.getElementById("ClearButton").value = dsuss_WebClient_PlayersOnline.ClearButton;
	
	onlineUsersAutorefresh();
}

function rewriteQuotationsInAll(returnValue) 
{
	if (returnValue != null && returnValue != undefined &&
		returnValue.GetOnlineUsers != null && returnValue.GetOnlineUsers != undefined)
	{
		if (returnValue.GetOnlineUsers.length == undefined)
		{
			returnValue.GetOnlineUsers.ContactAlias = rewriteQuotationsInString(returnValue.GetOnlineUsers.ContactAlias);
		}
		else
		{
			for (var index = 0; index < returnValue.GetOnlineUsers.length; index++)
			{
				returnValue.GetOnlineUsers[index].ContactAlias = rewriteQuotationsInString(returnValue.GetOnlineUsers[index].ContactAlias);
			}
		}
	}
}

function rewriteQuotationsInString(text)
{
	while (text.indexOf("\\'") >= 0)
	{
		text = text.replace("\\'", "\"");
	}
	
	return text;
}

includeStringTable( "dsuss.WebClient.PlayersOnline" );