var server = 'includes/chatserver.php';

var username = '';
var latest = '';
var room_nr=1;

function login(user_in, room_in, userid_in) {
	// Get username
	if (user_in && room_in && userid_in)
	{
		var user = user_in;
		var room = room_in;
		var userid = userid_in;
	}
	else
	{
		var user = $F('user');
		var userid = $F('userid');
		var room = $F('room');
	}
	// alert(room);

	if (user == '')	{ 
		alert('Please login before entering the chat room');
		return false;
	}
  
	username = user;
  	room_nr = room;
  	// alert ('ID:'+userid);
  	// akt_room=room;
  	// akt_room_text=Chat_Room.options[select.options.selectedIndex].value;
    // document.getElementById("akt_room").innerHTML = 'room: '+akt_room_text;
  
	// Show chat
	Element.hide('login');
	Element.show('chatelements');
	Element.show('akt_room');

	$('chat').value = '';
	$('message').value = '';

  // Clear Initial MSG
  var chat = $('chat');
  chat.innerHTML = '';
  
	// Begin getting messages
	get_messages();
	msg='<span style="color:green; font-style:italic; ">*** betritt den Raum ***</span>';
	send_message(msg);
	// Alle 2 sec. neue Messages abrufen
	checker = new PeriodicalExecuter(get_messages, 5);
}

function get_messages() {
	var args = 'action=get&latest=' + latest + '&room=' + room_nr;
	var do_ajax = new Ajax.Request(server, {method: 'get', parameters: args, onComplete: handle_response});
}

function send_message(msg) {
	var message = $F('message');
	if (msg) message=msg;

	if (message == '') {
		// alert('You need to enter your message still...');
		return false;
	}
  // alert(room_nr);
  
	// Send message
	var args = 'action=add&latest=' + latest + '&user=' + username + '&message=' + message+ '&room=' + room_nr;
	if (msg) args += '&admin=1';
	var do_ajax = new Ajax.Request(server, {method: 'get', parameters: args, onComplete: handle_response});

	$('message').value = '';
}

function handle_response(request) {
	var response = request.responseText;
	// alert ("Request");
  // response=response.substring(2, response.length);
  response = response.replace(/^\s+|\s+$/, '');
  // tt="-"+latest+"-"+response+"-"; alert (tt);

	// Add each message
	var chat = $('chat');
    
  // Error?
	if (response == 'error:no-user') {
		// No username, show login again
		alert('It appears you aren\'t logged in any longer. Please login again');
		Element.show('login');
		Element.hide('chatelements');
		return false;
	}
	else if (response == 'error:no-message') {
		// No username, show login again
		alert('You didn\'t send any message. Please try again');
		return false;
	}
	else if (response == 'no-message'){
		// There are no new messages
		
		return false;
	}
	else if (response == 'no-messages'){
		// There are no new messages
		// alert('There are no new messages');
		return false;
	}
	else if (response == '*** clear messages ***')
	{
    // chat.innerHTML='';
    // alert(t);
    chat.innerHTML = blockmessage;
    return false;
    
  }
  
	// We're getting a valid response, first get the latest timestamp
	latest = response.substring(0, response.indexOf("#") );
  // alert(latest);
  
	// Now get the messages
	messages = response.substring(response.indexOf("#")+1, response.length);
  
	// Split messages
  var ang_user=messages.split("+~[MESSAGE1]~-");
  
  user_in_chat=ang_user[1];
  // alert (user_in_chat);
  message = ang_user[0]; 
  
	messages = message.split('<br />');

  blockmessage='';
  	
	for (var i=0; i < messages.length; i++) {
		var message = messages[i].split("%~[MESSAGE]~%");
		if (message[1]) 
		{
		  // chat.innerHTML = chat.innerHTML + '<br />';
      einzelmessage = message[0] + '&nbsp;:&nbsp;' + message[1];
      blockmessage=blockmessage+einzelmessage;
		  chat.innerHTML = chat.innerHTML + einzelmessage;
    } 
	}

  h = chat.scrollHeight;
  chat.scrollTop = h;
  document.getElementById('message').focus();
  document.getElementById('user_inchat').innerHTML=user_in_chat;
  document.getElementById('Users_In_Chat_Content').innerHTML=user_in_chat;
  // alert (einzelmessage);
  // alert(chat.scrollTop);
	// chat.scrollTo(0,1000);
}

function hitkey(event) {
	if (event.keyCode == 13) {
		send_message();
	}
}

// This is added so we can just hit ENTER when sending a message
Event.observe(window, 'load', function() {
	var message = $('message');
	Event.observe(message, 'keydown', hitkey, false);			
}, false);
