//Какую картинку грузим
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; // Текущий размер испытательного куска данных, автоматически установленный test_start(), используется в качестве индекса для dataSrc и dataSize
var timerStatus = 0 // Статус таймера
var timerStartVal, timerStopVal; // Значения, когда мы запускаем и останавливаем таймер


//
// onLoad, событие изображения, запускается когда данные img догрузились.
//
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);
		}
	}
}

//
// result_show: Показывает результат теста на странице.
//
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 * 0.5;
		if (TestGraph.width > 150) {
			TestGraph.width = 150;
		}
	}

	// Сброс интерфейса
	button.disabled = false;
	TestProgress.style.display='none';
}

//
// timer_start: Старт таймера
//
function timer_start()
{
	var myDate = new Date();
	timerStartVal = myDate.getTime();
	timerStatus = 1;
}

//
// timer_stop: Остановка таймера
//
function timer_stop()
{
	var myDate = new Date();
	timerStopVal = myDate.getTime();
	timerStatus = 0;
}


//
// interface_init: Инициализация интерфейса для теста
//
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= "Проверка..." ;
}

//
// test_start Запуск теста с выбранным размером изображения
//
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); 
}

