/*
  var http_request = false;
  function makeRequest(url)
  
  ---NOTE---
  stati di httprequest.readyState:
    0 = uninitialized
    1 = loading
    2 = loaded
    3 = interactive
    4 = complete  
*/
    //Richiesta di risposta HTTP a un uri, la risposta è asincrona
    //ma viene effettuato un polling sullo stato HTTP della risposta
    //@type è il tipo che si vuol far restiruire dal request null(testo), xml(XML)
    function makeRequest(url, type,vettoreParametri) {

        var http_request = false;

        if (window.XMLHttpRequest) { // Mozilla, Safari,...
			http_request = new XMLHttpRequest();
            if (type == 'xml')
             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;
        }
        //http_request.onreadystatechange = alertContents;
        http_request.open('POST', url, true, null, null);
        http_request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=utf-8");
        if (vettoreParametri == null)
         http_request.send("noncachare=perpiacere");        
        else
        {
         param = "";      
         for (i=0; i<vettoreParametri.length; i++)
         {
          if (i>0) param += "&";
          param += vettoreParametri[i];
         }         
         http_request.send(param);
        }

       return http_request;
    }
    
    
	/**
		Effettua il parsing del codice javascript presente in una stringa. Utile per le risposte Ajax contenenti script javascript.
		Il codice javascript riconosciuto è quello compreso tra i parametri startDelimitator ed endDelimitator (ad esempio commenti).
		La funzione parserizza un qualsiasi numero di occorrenze di scripts racchiusi dai delimitatori in input. 
	**/
	function parseJavascripts(stringToParse, startDelimitator, endDelimitator, str){
			var startIndex = stringToParse.indexOf(startDelimitator);
			if(startIndex<0){
				//non ci sono più scripts da parsare
				return;
			}
			var endIndex = stringToParse.indexOf(endDelimitator);
			if(endIndex<0){
				//manca il delimitatore finale
				return;
			}
			
			if(str!=null && str!=undefined  && str!='' ){
				var subStr = stringToParse.slice(startIndex + str.length,endIndex);
			}else{
				var subStr = stringToParse.slice(startIndex,endIndex);
			}
			eval(subStr);
			parseJavascripts(stringToParse.slice(endIndex+endDelimitator.length), startDelimitator, endDelimitator,str);
	}    
    
    
   