var intervaltime = 10000; //poll every 10 seconds
var maxtries = 10 * 6; //poll for 10 minutes
var tries = 0;

function doIdealRequest(url, vars)
{
	tries++;
	var connection = false;
	

	// except IE
	if(window.XMLHttpRequest) {
	  connection = new XMLHttpRequest();
	// IE
	} else if(window.ActiveXObject) {
	  try {
	    connection = new ActiveXObject("Msxml2.XMLHTTP");	
	  } 
	  	catch(e) {
	    connection = new ActiveXObject("Microsoft.XMLHTTP");
	  }
	}	

	if (!connection) 
	{
		return false;
	}
			
	connection.open("POST", url, true);
		
	connection.onreadystatechange=function()
	{
		
		if (connection.readyState == 1 || connection.readyState == 2 || connection.readyState == 3)
		{
			//do nothing	
		}
		if (connection.readyState != 4) return;
		if (connection.readyState == 4)
		{
			if (connection.responseText=="failure" || connection.responseText=="expired" || connection.responseText=="cancelled" || connection.responseText=="unknown" || connection.responseText=="success")
			{
				idealDone(connection.responseText);
				delete connection;
			}
			else if (connection.responseText=="new" || connection.responseText=="open")
			{
				//do nothing wait for another request..
				if (tries > maxtries) 
				{
					//ideal request done
					idealDone(connection.responseText);
				}
				else
				{
					window.setTimeout("doIdealRequest('"+url+"','"+vars+"')", intervaltime);
				}
				delete connection;
			}
			else
			{
				idealDone('generalerror');
				delete connection;
			}									
		}		
	}

  	connection.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
	connection.send(vars);
}