/*

AJAX.JS V1.04 (5.2.2010)

1.04 post (5.2.2010)

1.03 correzione updateelem (3.12.2008)

1.02 ajax2function() (24.9.2008)






void =	updateelem(idelem, URL, 0 | recursiontime)
void =	updateelem_post(idelem, URL, postvariablenamesandvalues, 0 | recursiontime)
void =	ajax2function(urlconvariabiliget, nomefunzionesenzaparentesi, param, 0 | recursiontime)
void =	ajax2function_post(urlconvariabiliget, nomefunzionesenzaparentesi, param, postvariablenamesandvalues, 0 | recursiontime)
xhr = assegnaXMLHttpRequest() //crea una req xml
elemento = ele(id) //trova l'elemento id




*** AJAX methods ***


ajax = assegnaXMLHttpRequest()


ajax.open (method, uri [,async][,user][,password])


GET
ajax.send (null)

POST
ajax.setRequestHeader("content-type", "application/x-www-form-urlencoded");
ajax.setRequestHeader("connection", "close");
ajax.send("leggi=Dante");

PER FILTRARE LE E COMMERCIALI
texttosend = 'var1=' + escape(var1);
texttosend += '&';
texttosend += 'var2=' + escape(var1);
...


ajax.abort()


risposta = ajax.getAllResponseHeaders();


rispostina = ajax.getResponseHeader("content-type");




*** AJAX parameters ***

ajax.onreadystatechange = funzione()


ajax.readyState
(# 0 Uninitialized - l'oggetto XMLHttpRequest esiste, ma non è stato richiamato alcun metodo per inizializzare una comunicazione)
(# 1 Open - è stato richiamato il metodo open() ed il metodo send() non ha ancora effettuato l'invio dati)
(# 2 Sent - il metodo send() è stato eseguito ed ha effettuato la richiesta)
(# 3 Receiving - i dati in risposta cominciano ad essere letti)
# 4 Loaded - operazione completata


ajax.status
 - il codice di risposta http del server : se = 200 ok
(statusText) non su Opera
 - il testo di risposta http del server


ajax.responseText
da comunque un risultato


ajax.responseXML
solo se tutto a buon fine

*/






/* UPDATEELEM

elem = htmlelementname
URL = '/common/getchatonlinemembers.php';
recursion = 0 | seconds

USO : 
updateelem('nomeelemento', 'URLpaginafonte', 0 | interval)
setTimeout('updateelem(\'nomeelemento\', \'URLpaginafonte\', interval)', interval * 1000);

*/

function updateelem(elem, URL, recursion) {

ajax = assegnaXMLHttpRequest()
ajax.open ('get', URL, true);
ajax.setRequestHeader("connection", "close");
ajax.onreadystatechange = function() {
  if(ajax.readyState === 4){
   if(ajax.status == 200){
    ele(elem).innerHTML = ajax.responseText;
   }
  }
}
ajax.send(null);

if (recursion)
  setTimeout('updateelem(\'' + elem + '\', \'' + URL + '\', \'' + recursion + '\')', recursion * 1000);

}





/* UPDATEELEM_POST

elem = htmlelementname
URL = '/common/getchatonlinemembers.php';
postme = encoded post variable names/value list
recursion = 0 | seconds

USO : 
updateelempost('nomeelemento', 'URLpaginafonte', 'var1=value&var2=value', 0 | interval)
setTimeout('updateelem(\'nomeelemento\', \'URLpaginafonte\', interval)', 'var1=value&var2=value', interval * 1000);

*/

function updateelem_post(elem, URL, postme, recursion) {

ajax = assegnaXMLHttpRequest()
ajax.open ('post', URL, true);
ajax.setRequestHeader("content-type", "application/x-www-form-urlencoded");
ajax.setRequestHeader("connection", "close");
ajax.onreadystatechange = function() {
  if(ajax.readyState === 4){
   if(ajax.status == 200){
    ele(elem).innerHTML = ajax.responseText;
   }
  }
}
ajax.send(postme);

if (recursion)
  setTimeout('updateelem_post(\'' + elem + '\', \'' + URL + '\', \'' + postme + '\', \'' + recursion + '\')', recursion * 1000);

}









/* AJAX2FUNCTION

creare una funzione (ajaxresp, param) che esegua le azioni di risposta

chiamare con ajax2function(urlconvariabiliget, nomefunzionesenzaparentesi, param, 0 | nsecondi)

*/


function ajax2function(URL, myfunction, myparam, recursion) {

ajax = assegnaXMLHttpRequest()
ajax.open ('get', URL, true);
ajax.setRequestHeader("connection", "close");
ajax.onreadystatechange = function() {
  if(ajax.readyState === 4){
   if(ajax.status == 200){
    myfunction(ajax.responseText, myparam);
   }
  }
}
ajax.send(null);

if (recursion)
  setTimeout('checkchat(\'' + elem + '\',\'' + URL + '\',\'' + recursion + '\')\'', recursion * 1000);

}





/* AJAX2FUNCTION_POST

versione POST

*/


function ajax2function_post(URL, myfunction, myparam, postme, recursion) {

ajax = assegnaXMLHttpRequest()
ajax.open ('post', URL, true);
ajax.setRequestHeader("content-type", "application/x-www-form-urlencoded");
ajax.setRequestHeader("connection", "close");
ajax.onreadystatechange = function() {
  if(ajax.readyState === 4){
   if(ajax.status == 200){
    myfunction(ajax.responseText, myparam);
   }
  }
}
ajax.send(postme);

if (recursion)
  setTimeout('checkchat(\'' + elem + '\',\'' + URL + '\',\'' + recursion + '\')\'', recursion * 1000);

}










//assegna l'oggetto XMLHttpRequest

function assegnaXMLHttpRequest() {

var
 XHR = null,
 
 browserUtente = navigator.userAgent.toUpperCase();


 if(typeof(XMLHttpRequest) === "function" || typeof(XMLHttpRequest) === "object") {

  XHR = new XMLHttpRequest();

 } else if( window.ActiveXObject && browserUtente.indexOf("MSIE 4") < 0 ) {
 
  if(browserUtente.indexOf("MSIE 5") < 0)
   XHR = new ActiveXObject("Msxml2.XMLHTTP");
  else
   XHR = new ActiveXObject("Microsoft.XMLHTTP");
 }

 return XHR;
}






//uso : ele('xxxx').innerHTML = ''  ele('xxxx').style.display = 'none';

function ele(idelem) {
 var tempelement;

 if(document.getElementById) tempelement = document.getElementById(idelem);
 else tempelement = document.all[idelem];

 return tempelement;
}









