

/************************************ Global Variables *************************************************/
var xmlreqs = new Array();


/*********************************** AJAX Calling Methods ***************************************************/
function SkipXMLReq(freed) {
	this.freed = freed;
	this.xmlhttp = false;
	if (window.XMLHttpRequest) {
		this.xmlhttp = new XMLHttpRequest();
	} else if (window.ActiveXObject) {
		this.xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
	}
}

function retrieveQuesSkipReq(url,grpid) {
	var pos = -1;
	for (var i=0; i<xmlreqs.length; i++) {
		if (xmlreqs[i].freed == 1) { pos = i; break; }
	}
	if (pos == -1) { pos = xmlreqs.length; xmlreqs[pos] = new SkipXMLReq(1); }
	if (xmlreqs[pos].xmlhttp) {
		xmlreqs[pos].freed = 0;
		
		if (window.XMLHttpRequest) {
			try {
				//xmlreqs[pos].xmlhttp.open("GET",url,true);
				//alert('posting ' + url);
        		//xmlreqs[pos].xmlhttp.open("POST", url, true);
				xmlreqs[pos].xmlhttp.open("POST", url, true);
				xmlreqs[pos].xmlhttp.setRequestHeader('content-type', 'application/x-www-form-urlencoded');
		    	xmlreqs[pos].xmlhttp.setRequestHeader("Content-length", url.length);
      			xmlreqs[pos].xmlhttp.setRequestHeader("Connection", "close");        		
        					
			} catch ( e ) {
				alert(e);
			}						
			xmlreqs[pos].xmlhttp.onreadystatechange = function() { 
				if (typeof(skipXmlhttpChangeQS) != 'undefined') {
					skipXmlhttpChangeQS(pos,grpid);
			 	}
			}
			xmlreqs[pos].xmlhttp.send(null);
		} else if (window.ActiveXObject) {
			//xmlreqs[pos].xmlhttp.open("GET", url, true);
			//xmlreqs[pos].xmlhttp.open("POST", url, true);		
				xmlreqs[pos].xmlhttp.open("POST", url, true);
				xmlreqs[pos].xmlhttp.setRequestHeader('content-type', 'application/x-www-form-urlencoded');
		    	xmlreqs[pos].xmlhttp.setRequestHeader("Content-length", url.length);
      			xmlreqs[pos].xmlhttp.setRequestHeader("Connection", "close");  				
			xmlreqs[pos].xmlhttp.onreadystatechange = function() {
				if (typeof(skipXmlhttpChangeQS) != 'undefined') { skipXmlhttpChangeQS(pos,grpid);  }
			}      		

        	//xmlreqs[pos].xmlhttp.send();
			xmlreqs[pos].xmlhttp.send(url); 
      	}				
	}
}



function skipXmlhttpChangeQS(pos,grpid) 
{
	if (typeof(xmlreqs[pos]) != 'undefined' && xmlreqs[pos].freed == 0 && xmlreqs[pos].xmlhttp.readyState == 4) {
		if (xmlreqs[pos].xmlhttp.status == 200 || xmlreqs[pos].xmlhttp.status == 304) {
			populateQuesSkip(xmlreqs[pos].xmlhttp,grpid);
		} else {
			alert("Problem: " + xmlreqs[pos].xmlhttp.statusText);
		}
		xmlreqs[pos].freed = 1;
	}
}


  

 
  
  
/*********************************** Retrieve History Methods *************************************************/

  
  
  function populateQuesSkip(req, groupId)
  {
  	//alert('refreshing groupId ' + groupId + ' with ' + req.responseText);
  	var el = document.getElementById('grpspan' + groupId);
  	if ( el != null ) { //affected group is on the page
  		el.innerHTML = req.responseText;
  	}    
  }
  
  
  function skipQues(fList, gpList)
  {
  	//alert('got fields of ' + fList + ' and gps of ' + gpList);
	var flds = fList.split("|");  	
  	var gList = gpList.split("|");
	
  
  	var frmData = getFormData(document.forms[0]);
  	var qs2 = new Querystring(frmData);	

	var fParams = "";
  	for ( var i = 0; i< flds.length; i++ ) 
  	{
  		var newVal = qs2.get(flds[i]);
  		fParams = fParams + "&" + flds[i] + "=" + newVal;
  	}
    	
  
  	for ( var i = 0; i< gList.length; i++ ) 
  	{
  		var v = gList[i];
		var url = 'jsp/ajax.quesSkip?grpid=' + v + fParams;			
		//var url = 'jsp/ajax.quesSkip?grpid=' + v;		
		var waitTime = i * 200;
		//alert('calling url ' + url);
		setTimeout('retrieveQuesSkipReq("' + url + '", "' +  v + '")', waitTime);								
		
		//retrieveQuesSkipReq(url, v);
			
  	} 
  	  
  	
  	
  }
  
  
  
  
  
