// TeamSpeak2 Server Connection Functions

function validateTsNick(string, forbiddenChars) 
{
	for(var i = 0; i < string.length; i++) 
	{
		if (forbiddenChars.indexOf(string.charAt(i)) > -1) 
		{
			return false;
		}
	}
	return true;
}

function enterTsServer(serverAddress, serverPassword, nickname) 
{
	enterTsSubChannel(serverAddress, serverPassword, nickname, null, true, null);
}

function enterTsChannel(serverAddress, serverPassword, nickname, channelName, channelPassworded, channelPassword) 
{
	enterTsSubChannel(serverAddress, serverPassword, nickname, channelName, channelPassworded, channelPassword, null);
}

function enterTsSubChannel(serverAddress, serverPassword, nickname, channelName, channelPassworded, channelPassword, subChannelName) 
{
	var url = 'teamspeak://' + serverAddress;

	// User name and server password	
	if (nickname == '')
		nickname=window.prompt('Enter your nickname', '');
	if ((nickname == null) || (nickname == ''))
		return;
	else if (! validateTsNick(nickname, '()[]{}')) 
	{
		window.alert('Could not enter the teamspeak server because the nickname you entered contains one or more of these forbidden characters: ()[]{}');
		return;
	}
	else if (nickname == "") 
	{
		window.alert('Could not enter the teamspeak server because you did not enter your nickname');
		return;
	}
	url += '/?nickname=' + escape(nickname);
	url += '?password=' + escape(serverPassword);

	// Channel name and password	
	if (channelPassworded) 
	{
		if (channelPassword == '')
			channelPassword=window.prompt('Enter the channel password for channel ' + channelName + '\n(Click Cancel to go to the default channel)', '');
		if (channelPassword == null) 
			// User clicked Cancel, so assume they don't want a channel
			channelName = null;
	}

	if (channelName != null) 
		url += '?channel=' + escape(channelName);

	if ((channelPassworded) && (channelPassword != null) && (channelPassword != ''))
		url += '?channelpassword=' + escape(channelPassword);

	// Subchannel name
	if (subChannelName != null)
		url += '?subchannel=' + escape(subChannelName);

	//alert(url);
	window.location = url;
}