submittingFlag = false;

function loadMessages(userName){	//CARICA MESSAGGI E UTENTI OGNI 5 SECONDI
    showMessages();
    showUsers(userName);
	window.setTimeout("loadMessages('"+userName+"')",5000);
}

function showMessages(){	//CARICA LA PAGINA CON I MESSAGGI E LI MOSTRA
     var url = "messages.php";
     url = encodeURI(url);
     var req = getRequest(url);
     req.onreadystatechange = function () {
     	if(req.readyState == 4) {
     	   if(req.status == 200){
              //alert("RESPONSE "+req.responseText);
              var messagesDiv = document.getElementById("messagesDiv");
              if(messagesDiv!=null){
	         messagesDiv.innerHTML = req.responseText;
              }
	   }else{
              //alert("Error loading page\n");
	   }
	}
    }
    req.send(null);
}

function showUsers(userName){	//CARICA LA PAGINA CON GLI UTENTI E LI MOSTRA
	var url = "utenti.php?user="+userName;
	//alert(url);
	var req = getRequest(url);
	req.onreadystatechange = function () {
		if(req.readyState == 4) {
			if(req.status == 200){
				//alert("RESPONSE "+req.responseText);
				var usersDiv = document.getElementById("usersDiv");
				if(usersDiv!=null){
					usersDiv.innerHTML = req.responseText;
				}
			}
		}
	}
	req.send(null);
}

function openChat(user, log){	//APRE LA POPUP DELLA CHAT
	if(true){	// TODO: CONTROLLARE SE LA CHAT E' GIA APERTA
           var url = "chatpop.php?user="+user+"&log="+log;
           chatPopup = window.open(url,"chat","width=600,height=400,scrolling=no");
	   //alert(url);
	   //checkPopupClosure();
	}else{
		alert('La chat è già aperta.');
	}
}


function insertMessage(form){
	var nome = form.userName.value;
	var messaggio = form.message.value;
	// TODO: FARE IL TRIM DEL NOME
	//alert(messaggio);
	//messaggio = convertToEntities(messaggio);
	//alert("AFTER: "+unescape('%F3')+messaggio);
	if(nome!='' & messaggio!=''){
		var url = '?';
		url += 'userName='+ nome + "&";
		url += 'message='+ messaggio + "&";
		url += 'azione=insertMessage';
		//alert(url);
		url = encodeURI(url);
		//alert(url);
		executeAction(url, "showMessages()");
		//window.setTimeout("showMessages()",500);
                //showMessages();
	}
}

function loginUser(){
	if(!submittingFlag){
		submittingFlag = true;
		var form = document.forms['chatLoginForm'];
		var user = form.userName.value;
		var log = form.log.value;
		if(trim(user)!=''){	// TODO: FARE IL TRIM DEL NOME
			//var url = "?";
			//url += 'user='+ nome + "&";
			//url += 'log='+ log + "&";
			//url += 'azione=login';
			//executeAction(url);
			//RITARDA APERTURA POPUP PER DARE IL TEMPO DI EFFETTUARE IL LOGIN.
			//SE LOGIN VA A BUON FINE NELLA POPUP DOVRA' ESSERCI IL NOME UTENTE PRESO DAI COOKIE
			// IL RITARDO PUO' ESSER MESSO NELLA CHATPOPUP VIA PHP FARà APPARIRRE UNA SCRITTA 
			//DI CARICAMENTO.
			//setTimeout('openChat()',3000);
			openChat(user,log);
			submittingFlag = false;
		}else{
			alert('Selezionare un nome utente per poter accedere alla chat.');
			submittingFlag = false;
		}
	}else{
	    alert('Apertura chat in corso. Attendere.');
	}
}

function logOutUser(user){
	//alert("E' stato effettuato il logout dalla chat. Arrivederci.");
	var url = '?azione=logout&user='+user;
	executeAction(url);
}


function SetSmiley(Which) {
    document.chatForm.message.value = document.chatForm.message.value + Which;
}
function clearFields() {
    document.chatForm.message.value = "";
    document.chatForm.message.focus();
}

function getRequest(url){
    var req = new XMLHttpRequest();
    req.open('GET', url, true);
    req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
    req.setRequestHeader("Content-Type", "text/xml");
    req.setRequestHeader("Pragma", "no-cache");
    req.setRequestHeader("Cache-Control", "no-cache");	
    return req;
}

function executeAction(qString, postFunc){
        var url =  "actions.php" + qString;
	var req = getRequest(url);
	req.onreadystatechange = function () {
		if(req.readyState == 4) {
			if(req.status == 200){
				//alert("RESPONSE: "+req.responseText);
				/*if(qString.indexOf('login')>0){
					openChat();
				}*/
                          eval(postFunc);
			}
		}
	}
    req.send(null);
}

function trim(str) {
   var outStr = str.replace(/^\s*/g, "");
   outStr = outStr.replace(/\s*$/g, "");
   outStr = outStr.replace(/ +/g, " ");
   return outStr;
}


function replace(string,text,by) {  // Replaces text with by in string
    var strLength = string.length, txtLength = text.length;
    if ((strLength == 0) || (txtLength == 0)) return string;

    var i = string.indexOf(text);
    if ((!i) && (text != string.substring(0,txtLength))) return string;
    if (i == -1) return string;

    var newstr = string.substring(0,i) + by;

    if (i+txtLength < strLength)
        newstr += replace(string.substring(i+txtLength,strLength),text,by);

    return newstr;
}

function convertToEntities(text) {
    text = replace(text,'"',unescape('%22'));
    text = replace(text,'&',unescape('%26'));
    text = replace(text,'<',unescape('%3C'));
    text = replace(text,'>',unescape('%3E'));
    text = replace(text,' ',unescape('%A0'));
    text = replace(text,'¡',unescape('%A1'));
    text = replace(text,'¢',unescape('%A2'));
    text = replace(text,'£',unescape('%A3'));
    text = replace(text,'¥',unescape('%A5'));
    text = replace(text,'¦',unescape('%A6'));
    text = replace(text,'§',unescape('%A7'));
    text = replace(text,'¨',unescape('%A8'));
    text = replace(text,'©',unescape('%A9'));
    text = replace(text,'ª',unescape('%AA'));
    text = replace(text,'«',unescape('%AB'));
    text = replace(text,'¬',unescape('%AC'));
    text = replace(text,'­',unescape('%AD'));
    text = replace(text,'®',unescape('%AE'));
    text = replace(text,'¯',unescape('%AF'));
    text = replace(text,'°',unescape('%B0'));
    text = replace(text,'±',unescape('%B1'));
    text = replace(text,'²',unescape('%B2'));
    text = replace(text,'³',unescape('%B3'));
    text = replace(text,'´',unescape('%B4'));
    text = replace(text,'µ',unescape('%B5'));
    text = replace(text,'¶',unescape('%B6'));
    text = replace(text,'·',unescape('%B7'));
    text = replace(text,'¸',unescape('%B8'));
    text = replace(text,'¹',unescape('%B9'));
    text = replace(text,'º',unescape('%BA'));
    text = replace(text,'»',unescape('%BB'));
    text = replace(text,'¼',unescape('%BC'));
    text = replace(text,'½',unescape('%BD'));
    text = replace(text,'¾',unescape('%BE'));
    text = replace(text,'¿',unescape('%BF'));
    text = replace(text,'À',unescape('%C0'));
    text = replace(text,'Á',unescape('%C1'));
    text = replace(text,'Â',unescape('%C2'));
    text = replace(text,'Ã',unescape('%C3'));
    text = replace(text,'Ä',unescape('%C4'));
    text = replace(text,'Å',unescape('%C5'));
    text = replace(text,'Æ',unescape('%C6'));
    text = replace(text,'Ç',unescape('%C7'));
    text = replace(text,'È',unescape('%C8'));
    text = replace(text,'É',unescape('%C9'));
    text = replace(text,'Ê',unescape('%CA'));
    text = replace(text,'Ë',unescape('%CB'));
    text = replace(text,'Ì',unescape('%CC'));
    text = replace(text,'Í',unescape('%CD'));
    text = replace(text,'Î',unescape('%CE'));
    text = replace(text,'Ï',unescape('%CF'));
    text = replace(text,'Ð',unescape('%D0'));
    text = replace(text,'Ñ',unescape('%D1'));
    text = replace(text,'Ò',unescape('%D2'));
    text = replace(text,'Ó',unescape('%D3'));
    text = replace(text,'Ô',unescape('%D4'));
    text = replace(text,'Õ',unescape('%D5'));
    text = replace(text,'Ö',unescape('%D6'));
    text = replace(text,'×',unescape('%D7'));
    text = replace(text,'Ø',unescape('%D8'));
    text = replace(text,'Ù',unescape('%D9'));
    text = replace(text,'Ú',unescape('%DA'));
    text = replace(text,'Û',unescape('%DB'));
    text = replace(text,'Ü',unescape('%DC'));
    text = replace(text,'Ý',unescape('%DD'));
    text = replace(text,'Þ',unescape('%DE'));
    text = replace(text,'ß',unescape('%DF'));
    text = replace(text,'à',unescape('%E0'));
    text = replace(text,'á',unescape('%E1'));
    text = replace(text,'â',unescape('%E2'));
    text = replace(text,'ã',unescape('%E3'));
    text = replace(text,'ä',unescape('%E4'));
    text = replace(text,'å',unescape('%E5'));
    text = replace(text,'æ',unescape('%E6'));
    text = replace(text,'ç',unescape('%E7'));
    text = replace(text,'è',unescape('%E8'));
    text = replace(text,'é','&egrave;');
    text = replace(text,'ê',unescape('%EA'));
    text = replace(text,'ë',unescape('%EB'));
    text = replace(text,'ì',unescape('%EC'));
    text = replace(text,'í',unescape('%ED'));
    text = replace(text,'î',unescape('%EE'));
    text = replace(text,'ï',unescape('%EF'));
    text = replace(text,'ð',unescape('%F0'));
    text = replace(text,'ñ',unescape('%F1'));
    text = replace(text,'ò',unescape('%F2'));
    text = replace(text,'ó',unescape('%F3'));
    text = replace(text,'ô',unescape('%F4'));
    text = replace(text,'õ',unescape('%F5'));
    text = replace(text,'ö',unescape('%F6'));
    text = replace(text,'÷',unescape('%F7'));
    text = replace(text,'ø',unescape('%F8'));
    text = replace(text,'ù',unescape('%F9'));
    text = replace(text,'ú',unescape('%FA'));
    text = replace(text,'û',unescape('%FB'));
    text = replace(text,'ü',unescape('%FC'));
    text = replace(text,'ý',unescape('%FD'));
    text = replace(text,'þ',unescape('%FE'));
    text = replace(text,'ÿ',unescape('%FF'));
    return text;
}




// FUNZIONI NON USATE: ********************************************************
function unloadedPage(){ //NON USATA
   logOutUser();
   chatPopup.close();
}



function checkPopupClosure(){	// NON USATA:::OGNI 5 SECONDI CONTROLLA SE LA POPUP DELLA CHAT E' STATA CHIUSA

 	//window.onunload =  unloadedPage;
	//window.onunload =  msg;
	if(chatPopup.closed){
		//alert('popup chiusa');
		logOutUser();
	}else{
		window.setTimeout("checkPopupClosure()",5000);
	}
}

function checkOpenerClosure(){	// NON USATA::: OGNI 5 SECONDI CONTROLLA SE LA OPENER PAGE E' STATA CHIUSA
	if(window.opener == null || window.opener.closed){
		alert('La finestra di Noale.Info che ha aperto questa chat è stata chiusa. Arrivederci.');
        logOutUser();
		self.close();
	}else{
		window.setTimeout("checkOpenerClosure()",5000);
	}
}
