// JavaScript Document

// Request objects
// catches microsofts IE exceptions
// ********************************//
//-------------------------------------------------------------
function sendText(e, text)
{
	e.value=e.value + text
}

var request = null;
try {
  request = new XMLHttpRequest();
} catch (trymicrosoft) {
  try {
    request = new ActiveXObject("Msxml2.XMLHTTP");
  } catch (othermicrosoft) {
    try {
      request = new ActiveXObject("Microsoft.XMLHTTP");
    } catch (failed) {
      request = null;
    }
  }
}

if (request == null) {
	alert("Errore: Devi avere JavaScript abilitato. Se il problema persiste, contatta un amministratore.");
}

var chat = null;
try {
  chat = new XMLHttpRequest();
} catch (trymicrosoft) {
  try {
    chat = new ActiveXObject("Msxml2.XMLHTTP");
  } catch (othermicrosoft) {
    try {
      chat = new ActiveXObject("Microsoft.XMLHTTP");
    } catch (failed) {
      chat = null;
    }
  }
}

// Set request object for chatting
var chatlog = null;
try {
  chatlog = new XMLHttpRequest();
} catch (trymicrosoft) {
  try {
    chatlog = new ActiveXObject("Msxml2.XMLHTTP");
  } catch (othermicrosoft) {
    try {
      chatlog = new ActiveXObject("Microsoft.XMLHTTP");
    } catch (failed) {
      chatlog = null;
    }
  }
}

// Set request object for chatting
var chatlogINS = null;
try {
  chatlogINS = new XMLHttpRequest();
} catch (trymicrosoft) {
  try {
    chatlogINS = new ActiveXObject("Msxml2.XMLHTTP");
  } catch (othermicrosoft) {
    try {
      chatlogINS = new ActiveXObject("Microsoft.XMLHTTP");
    } catch (failed) {
      chatlogINS = null;
    }
  }
}

// Set request object for logging in
var userlog = null;
try {
  userlog = new XMLHttpRequest();
} catch (trymicrosoft) {
  try {
    userlog = new ActiveXObject("Msxml2.XMLHTTP");
  } catch (othermicrosoft) {
    try {
      userlog = new ActiveXObject("Microsoft.XMLHTTP");
    } catch (failed) {
      userlog = null;
    }
  }
}

// Set request object for chat messages
var chatmsg = null;
try {
  chatmsg = new XMLHttpRequest();
} catch (trymicrosoft) {
  try {
    chatmsg = new ActiveXObject("Msxml2.XMLHTTP");
  } catch (othermicrosoft) {
    try {
      chatmsg = new ActiveXObject("Microsoft.XMLHTTP");
    } catch (failed) {
      chatmsg = null;
    }
  }
}

//-------------------------------------------------------------
//**************************************
// Help panel

function closeHelp() {
	document.getElementById("chatFilter").className="chatFilterFalse";
	document.getElementById("helpPanel").className="hide";
}

//-------------------------------------------------------------
//**************************************
// Admin panel

function showAdmin() {
	var cfilter = document.getElementById("chatFilter").className;
	var apanel = document.getElementById("adminPanel").className;
	if (cfilter == "chatFilterTrue"){
		document.getElementById("chatFilter").className="chatFilterFalse";
		document.getElementById("adminPanel").className="hide";
	} else {
		document.getElementById("chatFilter").className="chatFilterTrue";
		document.getElementById("adminPanel").className="show";
		document.getElementById("adminp").focus();
	}
}

function adminPanel() {
	var apass = document.getElementById("adminp").value;
	if (request.readyState != 0){
		request.abort();
	}
	var adurl = "chat/chat/php/admin.php";
	request.open("POST", adurl, true);
	request.onreadystatechange = getPanel;
	request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	request.send("pass=" + escape(apass));
}

function getPanel() {
	if (request.readyState==4 || request.readyState=="complete") {
		document.getElementById("adminPanel").innerHTML=request.responseText;
	}
}

// Replacement HTML //

var adminlogin = "<table cellpadding=\"0\" cellspacing=\"4\" align=\"center\" width=\"60%\" border=\"0\"><tr><td colspan=\"2\">Inserisci la password:</td></tr><tr><td align=\"left\"><input type=\"password\" id=\"adminp\" size=\"20\" onkeydown=\"if(event.keyCode==13){adminPanel();}\" /></td><td align=\"left\"><input type=\"button\" value=\"Submit\" class=\"btn\" onmouseover=\"this.className='btn btnhov'\" onmouseout=\"this.className='btn'\" onclick=\"adminPanel();\" /></td></tr><tr><td align=\"right\" colspan=\"2\"><span id=\"closeb\"><br /><input type=\"button\" value=\"[Close]\" onclick=\"showAdmin();\" /></span></td></tr></table>";

//-------------------------------------------------------------
//**************************************
// Catch users leaving to clear chat log
window.onunload = function()
{
 if (chatlogINS.readyState != 0){
		chatlogINS.abort();
 }
 clearInterval(msgint);
 clearInterval(chtint);
 var url = "chat/chat/php/clearChatLog.php";
 chatlogINS.open("GET", url, true);
 chatlogINS.send(null);
};


//-------------------------------------------------------------
//**************************************
// Chat functions
function enterChat() {
	var name = document.getElementById("cuser").value;
	if (userlog.readyState != 0){
		userlog.abort();
	}
	
	if (name == "") {
		alert("Devi inserire un nickname!");
	} else {
		document.getElementById("chatLogin").innerHTML="<center>Caricamento...</center>";
		var url = "chat/chat/php/loginChat.php";
		userlog.open("POST", url, true);
		userlog.onreadystatechange = checkLog;
		userlog.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
		userlog.send("user=" + escape(name));
	}
}

function checkLog() {
	if (userlog.readyState==4 || userlog.readyState=="complete") { 
		var status = userlog.responseText;
		if (status == "true") {
			document.getElementById("chatFilter").className="chatFilterFalse";
			document.getElementById("chatLogin").className="hide";
			document.getElementById("txtmsg").disabled = false;
			document.getElementById("btnsub").disabled = false;
			document.getElementById("adminb").disabled = false;
			msgint = setInterval(getMsg, 5000);
			chtint = setInterval(chatLog, 12000);
			document.getElementById("txtmsg").focus();
			
			if (chat.readyState != 0){
			chat.abort();
			}
			var url = "chat/chat/php/getChat.php";
			chat.onreadystatechange = updateChats;
			chat.open("GET", url, true);
			chat.send(null);
			
			if (chatlog.readyState != 0){
				chatlog.abort();
			}
			var url = "chat/chat/php/getChatLog.php";
			chatlog.onreadystatechange = updateChatLog;
			chatlog.open("GET", url, true);
			chatlog.send(null);
		} else {
			var logreplace = "Stai per collegarti come:<br /><br /><input type=\"text\" id=\"cuser\" size=\"20\" value=\"<?php $user =& JFactory::getUser(); echo $user->username;?>\" onkeydown=\"if(event.keyCode==13){enterChat();}\" />&nbsp;<input type=\"button\" value=\"Submit\" class=\"btn\" onmouseover=\"this.className='btn btnhov'\" onmouseout=\"this.className='btn'\" onclick=\"enterChat();\" />";
			document.getElementById("chatLogin").innerHTML=logreplace;
			alert("Il nickname inserito non è valido o è già occupato, cambialo e riprova.");
		}
	}
}

function chatKick() {
	document.getElementById("chatFilter").className="chatFilterTrue";
	document.getElementById("chatLogin").className="show";
	document.getElementById("txtmsg").disabled = true;
	document.getElementById("btnsub").disabled = true;
	document.getElementById("adminb").disabled = true;
	var chatlogscreen = "La chat è stata aggiornata.<br />Aggiorna la pagina per rientrare";
	document.getElementById("chatLogin").innerHTML=chatlogscreen;
	var apanel = document.getElementById("adminPanel").className;
	if (apanel == "show"){
		document.getElementById("chatFilter").className="chatFilterTrue";
		document.getElementById("adminPanel").className="hide";
	}
	clearInterval(msgint);
 	clearInterval(chtint);
}

function sendMsg() {
	var msg = document.chatbox.msg.value;
	
	// if a chat is already in the works then cancel it
	if (chatmsg.readyState != 0){
		chatmsg.abort();
	}

	if (msg == "") {
		alert("Devi inserire un essaggio!");
	} else if (msg == "/?") {
			document.getElementById("chatFilter").className="chatFilterTrue";
			document.getElementById("helpPanel").className="show";
	} else {
		var url = "chat/chat/php/sendmsg.php";
		chatmsg.open("POST", url, true);
		chatmsg.onreadystatechange = updateChat;
		chatmsg.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
		chatmsg.send("msg=" + escape(msg));
		
		var objDiv = document.getElementById("chat_display");
		objDiv.scrollTop = objDiv.scrollHeight;
	}
}

function getMsg() {
	if (chat.readyState != 0){
		chat.abort();
	}
	var url = "chat/chat/php/getChat.php";
	chat.onreadystatechange = updateChats;
	chat.open("GET", url, true);
	chat.send(null);
}

function updateChats() { 
	if (chat.readyState==4 || chat.readyState=="complete") { 
	document.getElementById("chat_display")
	.innerHTML=chat.responseText;
	}
}

function updateChat() { 
	if (chatmsg.readyState==4 || chatmsg.readyState=="complete") { 
	document.getElementById("chat_display")
	.innerHTML=chatmsg.responseText;
	}
}

function chatLog() {
	if (chatlog.readyState != 0){
		chatlog.abort();
	}
	var url = "chat/chat/php/getChatLog.php";
	chatlog.onreadystatechange = updateChatLog;
	chatlog.open("GET", url, true);
	chatlog.send(null);
}

function clearLog() {
	if (chatlogINS.readyState != 0){
		chatlogINS.abort();
	}
	var url = "chat/chat/php/clearChatLog.php";
	chatlogINS.open("GET", url, true);
	chatlogINS.send(null);
}

function updateChatLog() {
	if (chatlog.readyState==4 || chatlog.readyState=="complete") {
	var logResponse = chatlog.responseText;
		if (logResponse == "kick_user_cl") {
			chatKick();
			document.getElementById("adminPanel").innerHTML=adminlogin;
		} else {
			document.getElementById("chat_users").innerHTML=chatlog.responseText;
		}
	}
}

function clearChat() {
	if (request.readyState != 0){
		request.abort();
	}
	document.getElementById("lstatus").innerHTML="<img src='chat/chat/img/ajax-loader.gif' id='aload' class='show' />";
	var clearurl = "chat/chat/php/clearChat.php";
	request.onreadystatechange = updateStatus;
	request.open("GET", clearurl, true);
	request.send(null);
}

function trimChat() {
	if (request.readyState != 0){
		request.abort();
	}
	document.getElementById("lstatus").innerHTML="<img src='chat/chat/img/ajax-loader.gif' id='aload' class='show' />";
	var url = "chat/chat/php/trimChat.php";
	request.onreadystatechange = updateStatus;
	request.open("GET", url, true);
	request.send(null);
}

function updateStatus() {
	if (request.readyState==4 || request.readyState=="complete") {
		document.getElementById("lstatus").innerHTML="<img src='chat/chat/img/ajax-loader.gif' id='aload' class='hide' />Done!";
		chatLog();
	}
}

