// Speed test script By: Serge Rivest 
var PIC_SIZE_SMALL  = 0;
var PIC_SIZE_MEDIUM = 1;
var PIC_SIZE_LARGE  = 2;

var dataSrc  = new Array('data_small.jpg', 'data_medium.jpg', 'data_large.jpg');
var dataSize = new Array(104,508,1000);
var testpicSize;
var timerStatus = 0
var timerStartVal, timerStopVal;

function img_onLoad()
{
	if(timerStatus == 1)
	{
		timer_stop();

		var length_sec = (timerStopVal - timerStartVal) / 1000;
		
		if(length_sec == 0)
		{
			result_show(0);
		} 
		else if((testpicSize == PIC_SIZE_SMALL) && (length_sec <= 3))
		{
			test_start(PIC_SIZE_LARGE);
		} 
		else if((testpicSize == PIC_SIZE_SMALL) && (length_sec <= 8))
		{
			test_start(PIC_SIZE_MEDIUM);
		} else {
			result_show(length_sec);
		}
	}
}

function result_show(length_sec)
{

	var data_kbit_sent = dataSize[testpicSize] * 8;
	var data_kbyte_sent = dataSize[testpicSize];
	var kbit_speed = Math.round(data_kbit_sent / length_sec);
	var kbyte_speed = kbit_speed / 8;


	var button = document.getElementById('btnStartTest');
	var TestProgress = document.getElementById('TestProgress');
	var TestGraph = document.getElementById('testgraph');
	var Speed = document.getElementById('speed');

	if(kbit_speed == 0)
	{
		Speed.innerHTML = "Ошибка!!!";
	} else {
		Speed.innerHTML = kbit_speed+' [ '+kbyte_speed+' ]';
		TestGraph.width = kbit_speed * 200 / 1024;
		if (TestGraph.width > 200) {
			TestGraph.width = 250;
		}
	}

	button.disabled = false;
	TestProgress.style.display='none';
}


function timer_start()
{
	var myDate = new Date();
	timerStartVal = myDate.getTime();
	timerStatus = 1;
}


function timer_stop()
{
	var myDate = new Date();
	timerStopVal = myDate.getTime();
	timerStatus = 0;
}


function interface_init()
{
	var button = document.getElementById('btnStartTest');
	var TestProgress = document.getElementById('TestProgress');
	var Speed = document.getElementById('speed');


	button.disabled = true;
	TestProgress.style.display = "block";
	Speed.innerHTML='Проверка...';
}

function test_start(picSize)
{
	var DataImg = document.getElementById('DataImg');

	testpicSize = picSize;	
	if(picSize == PIC_SIZE_SMALL) interface_init();
	timer_start();
	DataImg.src = URL + dataSrc[testpicSize] + '?' + Math.random(); 
}

function test_start_virtual(URL,picSize)
{
	this.URL=URL;
	test_start(picSize); 
}

