function speed_test()
	{
	// setup vars
	var checkDL = document.form1.download.checked;
	var checkUL = document.form1.upload.checked;
	
	if (!checkDL && !checkUL)
		{
		alert('Не выбрано ни одного теста. Отметьте галочками нужный Вам тест скорости интернета.');
		return false;
		}
	
	var dataSize = get_test_data_size();
	var tdSbmt = document.getElementById('sbmt');
	var res = document.getElementById('result');
	DLres = document.getElementById('dlres');
	UPres = document.getElementById('upres');
	
	//tdSbmt.innerHTML="Начат тест скорости интернета. Пожалуйста, ждите.<h2>Результаты теста:</h2>";
	res.style.display='block';
	if (checkDL) DLres.innerHTML="Ожидание начала теста.";
	if (checkUL) UPres.innerHTML="Ожидание начала теста.";
	
	var dataSizeB = dataSize=='1M'?1024:dataSize=='200k'?200:3072;
	
	
	if (checkDL)
		{
		DLres.innerHTML="Тест начат.";
		dots = setInterval("printDotsDL()",1000);
		var touchtime=getTimestamp();
		$.get('http://speed.yorest.ru/test_' + dataSize + '.json?' + touchtime, function(ld){
			var ts=getTimestamp();
			var interval=ts-touchtime;
			if (interval<0.0001) interval=0.0001;
			dataSizeB=dataSizeB*1024*8;
			var dlspeed=Math.floor(dataSizeB/interval);
			clearInterval(dots);
			DLres.innerHTML="Тест завершен. Результат:<br />" + 
			"<span class=res1>" + get_speed_readable(dlspeed) + "</span><br />" +
			"<span class=res2>" + get_speed_readable_byte(dlspeed) + "</span>";
			saveSpeedDL(interval, dataSizeB);
			if ( checkUL ) UP_speed_test(UPres,dataSizeB);
			}, 'text');
		}else if ( checkUL ) UP_speed_test(UPres,dataSizeB);
	
	//alert(checkDL+'-'+checkUL+'-'+dataSize);
	}

function UP_speed_test(UPres, dataSize)
	{
	if (dataSize > 1500) dataSize=1500;
	UPres.innerHTML="Подготовка данных к отправке.";
	var up_data='';
	while (up_data.length < dataSize*1024)
		{
		up_data = up_data + 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer eleifend erat sed quam sagittis semper in vel neque. Donec sagittis, lectus vitae iaculis faucibus, enim dolor vehicula velit, eu facilisis enim urna varius dolor. Praesent quis orci nec neque bibendum bibendum. Cras sollicitudin rutrum lacus, et suscipit elit dapibus vitae. Suspendisse id euismod sem. Duis et nibh sem, faucibus dictum risus. ';
		}
	UPres.innerHTML="Подготовка данных завершена.<br />Тест начат.";
	dots = setInterval("printDotsUP()",1000);
	var touchtime1=getTimestamp();
	$.post('http://speed.yorest.ru/test_UP.json?' + touchtime1, { func: up_data }, function(ld){
		var ts1=getTimestamp();
		var interval1=ts1-touchtime1;
		if (interval1<0.0001) interval1=0.0001;
		dataSize=dataSize*1024*8;
		var ulspeed=Math.floor(dataSize/interval1);
		clearInterval(dots);
		UPres.innerHTML="Тест завершен. Результат:<br />" + 
		"<span class=res1>" + get_speed_readable(ulspeed) + "</span><br />" +
		"<span class=res2>" + get_speed_readable_byte(ulspeed) + "</span>";
		saveSpeedUL(interval1, dataSize);
		}, 'text');
	}

function getTimestamp()
	{
	var humDate = new Date();
	return(humDate.getTime()/1000.0);
	}

function get_test_data_size()
	{
	//return '1';
	var buttons = document.form1.tsize;
	for ( var i = 0; i < buttons.length; i++ )
		{
		if ( buttons[i].checked === true ) return buttons[i].value;
		}
	return '1M';
	}

function get_speed_readable(speed)
	{
	if (speed > 1000000) return Math.floor(speed/10000)/100 + ' Мбит/сек';
	if (speed > 1000) return Math.floor(speed/10)/100 + ' Кбит/сек';
	return speed + ' бит/сек';
	}

function get_speed_readable_byte(speed)
	{
	speed=speed/8;
	if (speed > 1048576) return Math.floor(speed*100/1048576)/100 + ' МБайт/сек';
	if (speed > 1024) return Math.floor(speed*100/1024)/100 + ' КБайт/сек';
	return Math.floor(speed) + ' Байт/сек';
	}

function printDotsDL()
	{
	DLres.innerHTML=DLres.innerHTML + ' .';
	}

function printDotsUP()
	{
	UPres.innerHTML=UPres.innerHTML + ' .';
	}

function fabout()
	{
	var el=document.getElementById('about');
	var fel=document.getElementById('fabout');
	if (!el.getAttribute('opened'))
		{
		el.setAttribute('opened', true);
		el.style.height='auto';
		fel.innerHTML='Свернуть полный текст';
		}else
		{
		el.removeAttribute('opened');
		el.style.height='170px';
		fel.innerHTML='Развернуть полный текст';
		}
	}


function setCookie(name, value, expires, domain, secure)
	{
	var curCookie = name + "=" + escape(value) + ((expires) ? "; expires=" + expires.toGMTString() : "")  + ((domain) ? "; domain=" + domain : "") + ((secure) ? "; secure" : "");
	document.cookie = curCookie;
	}

function fixDate(date)
	{
	var base = new Date(0);
	var skew = base.getTime();
	if (skew > 0)	date.setTime(date.getTime() - skew);
	}

function saveSpeedDL(size, interval)
	{
	var now = new Date();
	fixDate(now);
	var time=now.getTime();
	now.setTime(now.getTime() + 50 * 24 * 3600 * 1000);
	setCookie('dl_'+time, interval+','+size, now);
	}

function saveSpeedUL(size, interval)
	{
	var now = new Date();
	fixDate(now);
	var time=now.getTime();
	now.setTime(now.getTime() + 50 * 24 * 3600 * 1000);
	setCookie('ul_'+time, interval+','+size, now);
	}

$(document).ready(function() { document.getElementById('imgsbmt').style.display='block'; });
$(document).ready(function() {
	$("#ip").load("http://speed.yorest.ru/ip.php");
	//$.get("http://speed.yorest.ru/ip.php", function(ip){document.getElementById('ip').innerHTML=ip;});
});