
//global variables
  var req;
  var which;
  var submit;
	
  function callAction(url,nameOfFormToPost) {
	retrieveURL(url,nameOfFormToPost); 
	submit = 'false';
  }

  function callActionWithSubmit(url,nameOfFormToPost) {
	retrieveURL(url,nameOfFormToPost);
	submit = 'true';
  }   
  
  function retrieveURL(url,nameOfFormToPost) {
    //Do the Ajax call
    if (window.XMLHttpRequest) { // Non-IE browsers
    
      req = new XMLHttpRequest();
      req.onreadystatechange = processStateChange;
      try {
      	req.open("POST", url, true); //was get
      	req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); 
      } catch (e) {
        alert("Problem Communicating with Server\n"+e);
      }
      req.send(getFormAsString(nameOfFormToPost).substring(1));
    
    } else if (window.ActiveXObject) { // IE
      
      req = new ActiveXObject("Microsoft.XMLHTTP");
      if (req) {
      	req.onreadystatechange = processStateChange;
        req.open("POST", url, true);
        req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); 
        req.send(getFormAsString(nameOfFormToPost).substring(1));
        
      }
    }
  }


  function processStateChange() {
  	  if (req.readyState == 4) { // Complete
      if (req.status == 200) { // OK response
        

        spanElements = splitTextIntoSpan(req.responseText);

        replaceExistingWithNewHtml(spanElements);
        
		if(submit == 'true'){
			document.forms[0].submit();
		}
        
      } else {
        alert("Problem with server response:\n " + req.statusText);
      }
    }
  }
 
 	function getFormAsString(formName){

		returnString ="";
	
		formElements=document.forms[formName].elements;
	
		for ( var i=formElements.length-1; i>=0; --i ){
			if((formElements[i].type != "radio" && formElements[i].type != "checkbox") || formElements[i].checked) {
				returnString=returnString+"&"+escape(formElements[i].name)+"="+escape(formElements[i].value);
			}
		}
	
		return returnString;
	}

 
 function splitTextIntoSpan(textToSplit){
 

 	returnElements=textToSplit.split("</span>")
 	
	
 	for ( var i=returnElements.length-1; i>=0; --i ){
 		
 	
 		spanPos = returnElements[i].indexOf("<span");		
 		
 		if(spanPos>0){
 			subString=returnElements[i].substring(spanPos);
 			returnElements[i]=subString;
 		
 		} 
 	}
 	
 	return returnElements;
 }
 
 function replaceExistingWithNewHtml(newTextElements){
 
 	for ( var i=newTextElements.length-1; i>=0; --i ){
  
 	
 		if(newTextElements[i].indexOf("<span")>-1){
 			
 			
 			startNamePos=newTextElements[i].indexOf('"')+1;
 			endNamePos=newTextElements[i].indexOf('"',startNamePos);
 			name=newTextElements[i].substring(startNamePos,endNamePos);
 			
 		
 			startContentPos=newTextElements[i].indexOf('>')+1;
 			content=newTextElements[i].substring(startContentPos);
 			
 				
	 			if(document.getElementById(name)){
	 				document.getElementById(name).innerHTML = content;
	 			} else {
	 				alert("Element:"+name+"not found in existing document");
	 			}
 		}
 	}
 }
