// FUNZIONI DI UTILIZZO DI AJAX
//
// funzione per assegnare l'oggetto XMLHttpRequest
// compatibile con i browsers più recenti e diffusi
function assegnaXMLHttpRequest() {

// lista delle variabili locali
var
 // variabile di ritorno, nulla di default
 XHR = null,
 
 // informazioni sul nome del browser
 browserUtente = navigator.userAgent.toUpperCase();


 // browser standard con supporto nativo
 // non importa il tipo di browser
 if(typeof(XMLHttpRequest) == "function" || typeof(XMLHttpRequest) == "object")
  { XHR = new XMLHttpRequest(); } 

 // browser Internet Explorer
 // è necessario filtrare la versione 4
 else if(
  window.ActiveXObject &&
  browserUtente.indexOf("MSIE 4") < 0
 ) {
 
  // la versione 6 di IE ha un nome differente
  // per il tipo di oggetto ActiveX
  if(browserUtente.indexOf("MSIE 5") < 0)
   XHR = new ActiveXObject("Msxml2.XMLHTTP");

  // le versioni 5 e 5.5 invece sfruttano lo stesso nome
  else
   XHR = new ActiveXObject("Microsoft.XMLHTTP");
 }

 return XHR;
} 



// funzione di caricamento testo, accetta una stringa contenente il nome di un file da leggere
// elementz: l'ID dell'oggetto in cui viene caricato il file. formz: il nome del form in cui si trovano gli elementi da trasferire. Se non esiste inserite 'no'! 
// nomeFile: nome del file. tipoconn: GET o POST.
function ajaxthis(elementz,formz,nomeFile,tipoconn) {

    // assegnazione oggetto XMLHttpRequest
    ajax = assegnaXMLHttpRequest();
	
    // assegnazione elemento del documento
    elemento = document.getElementById(elementz);

	
    // impostazione richiesta asincrona in GET
    // del file specificato
	
	if (document.forms[formz]) {

    // ERRORE QUI
	stringa = PreparaDati(formz);

    }
	else
	{ stringa = ""; }
    ajax.open(tipoconn, nomeFile, true);

    ajax.onreadystatechange = function() {
      
      // verifica dello stato
      if(ajax.readyState < 4) { elemento.innerHTML = "<table class='loader'><tr><td><img src='/immagini/loader.gif' class='loader'></td><td> In Caricamento... </td></tr></table>"; }
      if(ajax.readyState == 4) {
        // verifica della risposta da parte del server
        if(ajax.status == 200)
          // operazione avvenuta con successo
          elemento.innerHTML = ajax.responseText;
        else {
          // errore di caricamento
          elemento.innerHTML = "<table class='loader'><tr><td><img src='/immagini/loader.gif' class='loader'></td><td> In Caricamento... <br/>";
          elemento.innerHTML += "Errore riscontrato: " + statusText[ajax.status] + "</td></tr></table>";

        }
      } 
    }

	
	if (tipoconn == "get") {
    ajax.setRequestHeader("Connection", "close");
    }
	else {
	ajax.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=ISO-8859-1");
	ajax.setRequestHeader("Content-length", stringa.length);
    ajax.setRequestHeader("Connection", "close");
    }	

	if (tipoconn == "get") {
    ajax.send(null);
    }
	else {
	ajax.send(stringa);
    }


} 

// Apre la pagina nomeFile e mette il risultato dentro elementz
function ajaxthisS(elementz,nomeFile,tipoconn) {

    // assegnazione oggetto XMLHttpRequest
    ajax = assegnaXMLHttpRequest();
	stringa = "";
	
    // assegnazione elemento del documento
    elemento = document.getElementById(elementz);
	
    // impostazione richiesta asincrona in GET
    // del file specificato
	
    ajax.open(tipoconn, nomeFile, true);

    ajax.onreadystatechange = function() {
      
      // verifica dello stato
      if(ajax.readyState < 4) { elemento.innerHTML = "<table class='loader'><tr><td><img src='/immagini/loader.gif' class='loader'></td><td> In Caricamento... </td></tr></table>"; }
      if(ajax.readyState == 4) {
        // verifica della risposta da parte del server
        if(ajax.status == 200)
          // operazione avvenuta con successo
          elemento.innerHTML = ajax.responseText;
        else {
          // errore di caricamento
          elemento.innerHTML = "<table class='loader'><tr><td><img src='/immagini/loader.gif' class='loader'></td><td> In Caricamento... <br/>";
          elemento.innerHTML += "Errore riscontrato: " + statusText[ajax.status] + "</td></tr></table>";

        }
      } 
    }

	if (tipoconn == "get") {
    ajax.setRequestHeader("Connection", "close");
    }
	else {
	ajax.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=ISO-8859-1");
	ajax.setRequestHeader("Content-length", stringa.length);
    ajax.setRequestHeader("Connection", "close");
    }	

	if (tipoconn == "get") {
    ajax.send(null);
    }
	else {
	ajax.send(stringa);
    }


} 

function ajaxthisT(elementz,formz,nomeFile,tipoconn,time) { // Questa è una funzione Ajax che ritarda l'esecuzione del tempo TIME.
setTimeout("ajaxthis('"+elementz+"','"+formz+"','"+nomeFile+"','"+tipoconn+"')",time);
} 



// Invia i dati di un form ma non restituisce output 
function ajaxthisF(formz,nomeFile,tipoconn) {

    // assegnazione oggetto XMLHttpRequest
    ajax = assegnaXMLHttpRequest();
		
    // impostazione richiesta asincrona in GET
    // del file specificato
	
	if (document.forms[formz]) {

    // ERRORE QUI
	stringa = PreparaDati(formz);

    }
	else
	{ stringa = ""; }
    ajax.open(tipoconn, nomeFile, true);

    ajax.onreadystatechange = function() {}

	
	if (tipoconn == "get") {
    ajax.setRequestHeader("Connection", "close");
    }
	else {
	ajax.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=ISO-8859-1");
	ajax.setRequestHeader("Content-length", stringa.length);
    ajax.setRequestHeader("Connection", "close");
    }	

	if (tipoconn == "get") {
    ajax.send(null);
    }
	else {
	ajax.send(stringa);
    }


} 

// Apre in background la pagina AJAX, non restituisce quindi nulla
function ajaxthisN(nomeFile,tipoconn) {

    // assegnazione oggetto XMLHttpRequest
    ajax = assegnaXMLHttpRequest();
	stringa = "";
	
    // assegnazione elemento del documento
	
    // impostazione richiesta asincrona in GET
    // del file specificato
	
    ajax.open(tipoconn, nomeFile, true);

    ajax.onreadystatechange = function() {}

	if (tipoconn == "get") {
    ajax.setRequestHeader("Connection", "close");
    }
	else {
	ajax.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=ISO-8859-1");
	ajax.setRequestHeader("Content-length", stringa.length);
    ajax.setRequestHeader("Connection", "close");
    }	

	if (tipoconn == "get") {
    ajax.send(null);
    }
	else {
	ajax.send(stringa);
    }


} 


// Funzione AJAX di Redirect. Se la pagina restituisce OK, effettua il redirect!
function ajaxthisR(elementz,formz,nomeFile,redir,tipoconn) {

    // assegnazione oggetto XMLHttpRequest
    ajax = assegnaXMLHttpRequest();
	
    // assegnazione elemento del documento
    elemento = document.getElementById(elementz);

	
    // impostazione richiesta asincrona in GET
    // del file specificato
	
	if (document.forms[formz]) {

    // ERRORE QUI
	stringa = PreparaDati(formz);

    }
	else
	{ stringa = ""; }
    ajax.open(tipoconn, nomeFile, true);

    ajax.onreadystatechange = function() {
      
      // verifica dello stato
      if(ajax.readyState < 4) { elemento.innerHTML = "<img src='/img/loading.gif' /> Verifica dati in corso..."; }
      if(ajax.readyState == 4) {
        // verifica della risposta da parte del server
        if(ajax.status == 200){
          // operazione avvenuta con successo
          elemento.innerHTML = ajax.responseText;
		  
		  if (ajax.responseText == "Logging In....") location.href = redir;
		  
		  }
        else {
          // errore di caricamento
          elemento.innerHTML = "Errore di Caricamento. Contattare il Webmaster.";
          elemento.innerHTML += "Errore riscontrato: " + statusText[ajax.status];

        }
      } 
    }

	
	if (tipoconn == "get") {
    ajax.setRequestHeader("Connection", "close");
    }
	else {
	ajax.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=ISO-8859-1");
	ajax.setRequestHeader("Content-length", stringa.length);
    ajax.setRequestHeader("Connection", "close");
    }	

	if (tipoconn == "get") {
    ajax.send(null);
    }
	else {
	ajax.send(stringa);
    }


}

function PreparaDati(nome){ // Funzione di Escape per la preparazione dei dati Ajax
  stringa = "";
  var form = document.forms[nome];
  var numeroElementi = form.elements.length;

  for(var i = 0; i < numeroElementi; i++){
    if(i < numeroElementi-1){
      stringa += form.elements[i].name+"="+escape(encodeURIComponent(form.elements[i].value))+"&";

    }else{
      stringa += form.elements[i].name+"="+escape(encodeURIComponent(form.elements[i].value));

    }
}
  ultimoCarattere = stringa.charAt(stringa.length - 1);
  if (ultimoCarattere == "&"){ stringa = stringa.substr(0,stringa.length-1); }
  return stringa;
}


// FINE DELLE FUNZIONI AJAX

function antipirate(splitted){ // Evita che possano fare Injection nelle tabelle
splitted = splitted.replace(/</g,"&lt;");
splitted = splitted.replace(/>/g,"&gt;");
splitted = splitted.replace(/&/g,"&amp;");
splitted = splitted.substr(0,90);
return splitted;
} 



function verifica(x) {
var acceptnumlet = /^[A-Za-z0-9 \à\è\ì\ò\ù.\_\-]+$/;
var acceptlet = /^([a-zA-Z])+$/;

  if (x == 'nick'){
  if (document.getElementById('nicklogin').value.length < 2 || !document.getElementById('nicklogin').value.match(acceptnumlet)){ red("nicklogin"); } else { green("nicklogin"); }
  if (document.getElementById('nicklogin').value.length == 0){ orange("nicklogin"); }
  }
  
  if (x == 'pass'){
  if (document.getElementById('passlogin').value.length < 6 || !document.getElementById('passlogin').value.match(acceptnumlet)){ red("passlogin"); } else { green("passlogin"); }
  if (document.getElementById('passlogin').value.length == 0){ orange("passlogin"); }
  }
  
  if (!(document.getElementById('nicklogin').value.length < 2 || !document.getElementById('nicklogin').value.match(acceptnumlet) || document.getElementById('passlogin').value.length < 6 || !document.getElementById('passlogin').value.match(acceptnumlet))){ document.getElementById('loginimage').src = '/immagini/templates/2010/bottoni/loginx.gif'; } else { document.getElementById('loginimage').src = '/immagini/templates/2010/bottoni/login.gif'; }
  
}

function search(r) {
if (r.length > 3){
document.getElementById("resultbox").style.display = "block";
ajaxthis('resultbox','search-form','/include/ajax_ricerca_high.php?r='+r,'get');
} else {
document.getElementById("resultbox").style.display = "none";
}

}

function cs() {
document.getElementById("resultbox").style.display = "none";
}

function csc() {
document.getElementById("ricercabox").style.display = "none";
}

function del(tipo,id,cont) {
ajaxthisS("c"+cont,"/include/ajax_commenti_del.php?t="+ tipo + "&id="+ id +"","GET");
}


function latest(){


$.ajax({
  url: "/include/ajax_latest.php",
  cache: false,
  success: function(html){
    $("#latest").html(html);
  }
});

}

function latest_cope(){


$.ajax({
  url: "/include/ajax_latest_cope.php",
  cache: false,
  success: function(html){
    $("#latest").html(html);
  }
});

}

function resizeFrame() {
document.getElementById('childframe').height = document.getElementById('childframe').contentWindow.document.body.scrollHeight;
var t = setTimeout("resizeFrame();",2000);
}

