/**
* Istanzia l'oggetto AJAX sui browser pił conosciuti.
*
* @category
* @package     AJAX
* @author      Sergio Rinaudo <kaiohken1982[at]hotmail[dot]com>
* @copyright   2006 Sergio Rinaudo
* @version     
* @license     http://www.opensource.org/licenses/bsd-license.php
* @link        
*/

var Ajax = new Object();

  Ajax = function(url, callback, data) 
  {
    try 
    {
      // Proviamo a creare XMLHttpRequest per i vecchi browser IE 4
      XHR = new ActiveXObject("Msxml2.XMLHTTP"); 
    }
    catch(e) 
    {
      try  
      { 
        // Proviamo a creare XMLHttpRequest per i vecchi browser IE 5, 6
        XHR = new ActiveXObject("Microsoft.XMLHTTP");
      }
      catch(e)
      {
        try 
        {
          // Proviamo a creare XMLHttpRequest per i nuovi browser IE 7, Firefox
          XHR = new XMLHttpRequest();
        }
        catch (e)
        {
          try 
          { 
            // Proviamo a creare XMLHttpRequest per ICEbrowser, un browser creato in Java
            XHR = window.createRequest();
          }
          catch (e) 
          { 
            // Se proprio non ci riusciamo, per esempio Netcape Navigator o IE < 4, VISUALIZZIAMO L'ERRORE
            alert("Ajax Class's Exception : " + e); 
          }
        }
      }
    }
      
  	if(XHR)
    {
  		try 
      {			
        // Metodo open, apro la connessione
        XHR.open("POST", url, true);
        
        // Se ci sono dati da inviare setto gli headers ed invio
        XHR.send((data == null ? "" : data.toJSONString()));
          
        XHR.onreadystatechange = function()
        {
          if(XHR.readyState == 4)
          {
            try
            {
              callback(XHR.responseText.parseJSON());
            }
            catch(e)
            {
              // QUESTO CATTURA MOLTISSIMI ERRORI PRESENTI NELLO SCRIPT
              // ABILITARLO SOLO IN FASE DI TEST PER EVITARE BRUTTI ALERT
              //alert(e);
              alert('ajax.class.js error (line 74) :'+XHR.responseText);
              //alert(XHR.responseText.parseJSON());
            }
          }
        }
  		}
      catch(e) 
      {
  			alert("XHR Exception: " + e);
  		}
  	}
    else
    {
      alert("Errore sconosciuto");
    }
  }
