var http_request = false;
var http_request_type = "";

function makeRequest (url)
{
	http_request = false;

	if (window.XMLHttpRequest)
	{ // Mozilla, Safari,...
		http_request = new XMLHttpRequest();
		/*if (http_request.overrideMimeType) {
			http_request.overrideMimeType('text/xml');
			// See note below about this line
		}*/
	}
	else if (window.ActiveXObject)
	{ // IE
		try
		{
			http_request = new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch (e)
		{
			try
			{
				http_request = new ActiveXObject("Microsoft.XMLHTTP");
			}
			catch (e) {}
		}
	}

	if (!http_request)
	{
		alert('Giving up :( Cannot create an XMLHTTP instance');
		return false;
	}

	pos = url.indexOf(".");
	http_request_type = url.substring(0, pos);
	http_request.onreadystatechange = alertContents;
	http_request.open('GET', url, true);
	http_request.send(null);
}

function alertContents()
{
	if (http_request.readyState == 1)
		document.getElementById("error").innerHTML = "<img src='images/ajax-loader.gif' />";
	else if (http_request.readyState == 4)
	{
		if (http_request.status == 200)
		{
			// Esito invio profilo utente
			if (http_request_type == "signup_cmd")
			{
				// Iscrizione nuovo utente ok
				if (http_request.responseText.indexOf("<!-- insert ok -->") != -1)
					document.getElementById("registrazione").innerHTML = http_request.responseText;
				
				// Aggiornamento profilo utente ok
				else if (http_request.responseText.indexOf("<!-- update ok -->") != -1)
				{
					document.getElementById("registrazione").innerHTML = http_request.responseText;
					setTimeout('window.location.reload()', 2000);
				}
				
				// Errore
				else
					document.getElementById("error").innerHTML = http_request.responseText;
			}
			
			// Esito login
			else if (http_request_type == "login_cmd")
			{
				resp_split = http_request.responseText.split("|");
				
				// Login ok
				if (resp_split[0] == "ok")
					document.location.href = resp_split[1] + "/";
				
				// Errore
				else
				{
					// Login fatto nella home
					if (http_request.responseText.indexOf("<!-- home -->") != -1)
						document.getElementById("error_login_home").innerHTML = http_request.responseText;
					
					// Login fatto nelle altre pagine (popup)
					else
						document.getElementById("error_login").innerHTML = http_request.responseText;
				}
			}
			
			// Esito azioni su un dibattito
			else if (http_request_type == "debate_ajax")
			{
				resp_split = http_request.responseText.split("|");
				
				// Azione eseguita
				if (resp_split[0] == "ok")
				{
					// Distingue il tipo di azione in base al numero di parametri inviati
					if (resp_split.length >= 4)
					{
						// Chiusura dibattito
						if (resp_split[2] == "chiuso")
							document.location.href = resp_split[3] + "/";
						
						// Eliminazione dibattito
						else if (resp_split[2] == "eliminato")
							document.location.href = resp_split[3] + "/";
						
						// Aggiornamento voti
						else
						{
							// Voti alla singola opinione
							voti = parseInt(document.getElementById(resp_split[3]).innerHTML) + 1;
							document.getElementById(resp_split[3]).innerHTML = voti;
							document.getElementById(resp_split[2]).innerHTML = resp_split[1];
							document.getElementById(resp_split[2]).style.color = "green";
							
							// Voti alle tesi del dibattito
							if (resp_split[4] != null)
								document.getElementById("blue_number").innerHTML = resp_split[4];
							if (resp_split[5] != null)
								document.getElementById("orange_number").innerHTML = resp_split[5];
						}
					}
					else if (resp_split.length == 3)
					{
						// Iscrizione per seguire il dibattito via email
						if (resp_split[2] == "emailSi")
							document.getElementById("emailSi").innerHTML = resp_split[1];
						
						// Cancellazione per non seguire pił il dibattito via email
						else if (resp_split[2] == "emailNo")
							document.getElementById("emailNo").innerHTML = resp_split[1];
						
						// Altre azioni
						else
						{
							document.getElementById(resp_split[2]).innerHTML = resp_split[1];
							document.getElementById(resp_split[2]).style.color = "green";
						}
					}
				}
				
				// Errore
				else
				{
					document.getElementById(resp_split[2]).innerHTML = resp_split[1];
					document.getElementById(resp_split[2]).style.color = "red";
				}
				
				// Il messaggio con l'esito rimane visibile 2 secondi e poi scompare da solo
				fadeIn(resp_split[2], 800);
			}
		}
		else
			alert('There was a problem with the request.');
	}
}

function toggle (targetId)
{
	target = document.getElementById(targetId);
	if (target.style.display == "none")
		target.style.display = "";
	else
		target.style.display = "none";
}

function setOpacity2 (id, opacity)
{
	var target = document.getElementById(id);
	if (document.all) // se sto usando internet explorer
		target.style.filter = "alpha(opacity=" + opacity + ")";
	else
		target.style.opacity = opacity / 100;
}

function fadeIn (divID, time)
{
	target = document.getElementById(divID);
	target.style.display = "block";
	var speed = Math.round(time / 100); //arrotonda il valore della divisione
	var frame = 0;
	for (fade = 0; fade < 100; fade++)
	{
		setTimeout("setOpacity2('" + divID + "', " + fade + ")", (speed * frame));
		frame++;
	}
	setTimeout("fadeOut('" + divID + "',500)", 5000);
}

function fadeOut (divID, time)
{
	target = document.getElementById(divID);
	var speed = Math.round(time / 100); //arrotonda il valore della divisione
	var frame = 0;
	for (fade = 100; fade > 0; fade--)
	{
		setTimeout("setOpacity2('" + divID + "', " + fade + ")", (speed * frame));
		frame++;
	}
	toggle(divID);
}

