// Speed test script By: Serge Rivest // — // PHP-Nuke 8.0 adapted by KrasivayaSvo //Какую картинку грузим 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; // Значения, когда мы запускаем и останавливаем таймер //var URL = 'http://php-nuke/images/'; //путь к папке, где лежат изображения // // 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 Speed = document.getElementById('speed'); if(kbit_speed == 0) { Speed.innerHTML = "Ошибка!!!"; } else { Speed.innerHTML = kbit_speed; } // Сброс интерфейса 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); }