var client;
var t_start=null;
var t_end=null;
var speed=0;
var filesize=256;

function CreateAJAXRequest()
{
	if (window.XMLHttpRequest) 
	{
		try 
		 {
			return new XMLHttpRequest();
		 }
		catch (e){}
	} 
	else if (window.ActiveXObject) 
	{
		 try 
		 {
			  return new ActiveXObject('Msxml2.XMLHTTP');
		 } 
		 catch (e){}
		 try 
		 {
			 return new ActiveXObject('Microsoft.XMLHTTP');
		 } 
		 catch (e){}
	}
}
function SpeedTest()
{
	t_start=new Date();
	SetContent("Подождите, идет тест скорости...<br/><img src=\"images/loadingbar.gif\">");
	// for FF, Opera and so on
	if (window.XMLHttpRequest) {
		client = CreateAJAXRequest()
		client.onreadystatechange = handler;
		client.open("GET", 'testfiles/testfile_1024'+t_start.getTime(), true);
		client.send(null);
    // for IE/Windows ActiveX version
    } else if (window.ActiveXObject) {
    	client = CreateAJAXRequest()
    	client.onreadystatechange = handler;
    	client.open("GET", 'testfiles/testfile_1024'+t_start.getTime(), true);
    	client.send();
    }
}

function SpeedTestResult(speed)
{
	client = CreateAJAXRequest()
	client.onreadystatechange = getResult;
	client.open("GET", 'result.php?speed='+speed, true);
	client.send(null);
}

function handler() 
{
	if(client.readyState == 4 && client.status == 200) 
	{
		 if(client.responseText != null)
		 {
			  t_end=new Date();
			  speed=Math.round((((1024*1024)/(t_end.getTime()-t_start.getTime())))*100)/100;
			  if((t_end.getTime()-t_start.getTime())/1000 < 10) {
				  filesize*=2;
				  SpeedTest();
			  } else {
				  SpeedTestResult(speed);
			  }
		 } else {
			alert('Ошибка загрузки файла');
		 }
	} else 
		if (client.readyState == 4 && client.status != 200) {
			alert('Не удалось загрузить файл');
	}
}

function getResult() 
{
	if(client.readyState == 4 && client.status == 200) 
	{
		 if(client.responseText != null)
		 {
			  SetContent(client.responseText);
		 } else {
			alert('Ошибка загрузки файла');
		 }
	} else 
		if (client.readyState == 4 && client.status != 200) {
			alert('Не удалось загрузить файл');
	}
}

function SetContent(content)
{
	document.getElementById("results").innerHTML = content;
}
function NewTest()
{
	SetContent("Подождите, идет тест<br/><img src=\"images/loadingbar.gif\"");
	SpeedTest();
}
