function retrieveURL(url,nameOfFormToPost) {
	// metodo che richiama l'url richiesto passando in 'get'
	// il form 'nameOfFormToPost', si potrebbe effettuare la chiamata
	// in 'post' aggiungendo i paramatri alla request...

  //convert the url to a string
  url=url+"?"+getFormAsString(nameOfFormToPost);
	//open(url);

  //Do the AJAX call
  if (window.XMLHttpRequest) { 
    
    // Non-IE browsers
    req = new XMLHttpRequest();
    //req.overrideMimeType('text/xml');
    
    req.onreadystatechange = processStateChange;
    try {
          //req.open("GET", url, false); 
          req.open("GET", url, true); 
          req.setRequestHeader("If-None-Match","some-random-string");
	  	  req.setRequestHeader("Cache-Control","no-cache,max-age=0");
	  	  req.setRequestHeader("Pragma","no-cache");
          
    } catch (e) {
      alert("Server Communication Problem\n"+e);
    }
    req.send(null);
  } else if (window.ActiveXObject) {
  
    // IE
    req = new ActiveXObject("Microsoft.XMLHTTP");
    if (req) {
      //req.overrideMimeType('text/xml');
           
      req.onreadystatechange=processStateChange;
      req.open("GET", url, false);
      req.setRequestHeader("If-None-Match","some-random-string");
	  req.setRequestHeader("Cache-Control","no-cache,max-age=0");
	  req.setRequestHeader("Pragma","no-cache");
      req.send();
    }
  }
}
function getFormAsString(formName){
	// metodo che converte in una stringa la 'form' richiesta

  //Setup the return String
  returnString ="";
        
  //Get the form values
  formElements=document.forms[formName].elements;
        
  //loop through the array, building up the url
  //in the format '/strutsaction.do&name=value'
 
  for(var i=formElements.length-1;i>=0; --i ){
        //we escape (encode) each value
        if(formElements[i].type != "radio"){
        	returnString+="&" 
        	+escape(formElements[i].name)+"=" 
        	+escape(formElements[i].value);
        }else{
        	// Se il campo ? di tipo radio passa il valore del campo selezionato
       		if(formElements[i].checked == true){
        		returnString+="&" 
        		+escape(formElements[i].name)+"=" 
        		+escape(formElements[i].value);
        	}
        }
 }
        
 //return the values
 return returnString; 
}

function processStateChange() {
	// metodo che controlla se il server ha completato la risposta
	// e in caso di risposta corretta procede con le operazioni...

  if (req.readyState == 4) { // Complete
    if (req.status == 200) { // OK response
    //Split the text response into Span elements
    spanElements = 
        splitTextIntoSpan(req.responseText);
    
    //Use these span elements to update the page
    replaceExistingWithNewHtml(spanElements);
    
    } else {
      alert("Problem with server response:\n " 
        + req.statusText + " \n "
        + req.status);
    }
  }
}

function replaceExistingWithNewHtml(newTextElements){
	// metodo che recupera la porzione di pagina contenuta nel tag 'span'
	// che poi sar? inserita/sostituita nella pagina corrente

  //loop through newTextElements
  for(var i=newTextElements.length-1;i>=0;--i){

    //check that this begins with <span
    if(newTextElements[i].indexOf('<span') > -1){

      //get the span name - sits
      // between the 1st and 2nd quote mark
      //Make sure your spans are in the format
      //<span id="someName">NewContent</span>
      startNamePos=newTextElements[i].indexOf('"')+1;
      endNamePos=newTextElements[i].indexOf('"',startNamePos);
      nameElem=newTextElements[i].substring(startNamePos,endNamePos);
                        
      //get the content - everything 
      // after the first > mark
      startContentPos=newTextElements[i].indexOf('>')+1; 
      var content=newTextElements[i].substring(startContentPos);

     //Now update the existing Document 
     // with this element, checking that 
     // this element exists in the document
     if(document.getElementById(nameElem)){
//        DWRUtil.setValue(nameElem, content);
		document.getElementById(nameElem).innerHTML = content;
     }
    }
  }
}
function splitTextIntoSpan(textToSplit){
	// metodo che restituisce un array di elementi 'span'

  //Split the document
  returnElements=textToSplit. 
            split("</span>")
        
  //Process each of the elements        
  for(var i=returnElements.length-1;i>=0;--i){
                
    //Remove everything before the 1st span
    spanPos = returnElements[i]. 
             indexOf("<span");               
                
    //if we find a match, take out 
    //everything before the span
    if(spanPos>0){
          subString=returnElements[i].
              substring(spanPos);
          returnElements[i]=subString;
    } 
  }
  return returnElements;
}
