function get_dlspeed(callback){
	var startTime = (new Date()).getTime();
	new Ajax.Request('speedtest_data.php',
	{
		method:'get',
		onSuccess: function(transport){
			var endTime = (new Date()).getTime();
			var bytes = transport.responseText.length;
			var speed = Math.round(bytes/(endTime-startTime));
			new Ajax.Request('speedtest_data.php?report_speed='+speed, { method:'get' });
			callback(speed);
		},
		onFailure: function(){ alert('Ihre Bandbreite konnte nicht ermittelt werden.') }
	});
}

function calc_dltime(bytes){
	var dltime = $('dl_time');
	var dltLink = $('dl_time_calc');
	var dltWait = $('dl_time_wait');
	dltime.innerHTML = '';
	dltLink.hide();
	dltWait.show();
	Effect.Pulsate(dltWait, {duration: 10, pulses: 10});
	get_dlspeed(function(speed){
		show_dltime(bytes, speed);
		dltWait.hide();
		dltLink.innerHTML = "(neu berechnen)";
		dltLink.show();
	});
}

function show_dltime(bytes, speed){
	var dlSeconds = Math.round((bytes/1024)/speed);
	$('dl_time').innerHTML = format_seconds(dlSeconds) + " bei " + format_speed(speed);
	$('dl_time_calc').innerHTML = "(neu berechnen)";

}

function format_seconds(s){
	function tfn(t){
		return t >= 10 ? t : '0'+t
	}

	var sec = s % 60;
	var min = Math.floor((s/60) % 60);
	var h = Math.floor(s/3600);
	var f = '';
	if(!h && !min) f = sec + ' Sekunden';
	else if(!h) f = min + ':' + tfn(sec) + ' Minuten';
	else f = h + ':' + tfn(min) + ':' + tfn(sec) + ' Stunden';

	return f;
}

function format_speed(s){
	kbps = s*8;
	if(kbps > 1000)
		f = Math.round(10*kbps/1000)/10 + " Mbit/s";
	else
		f = Math.round(kbps) + " kbit/s";

	return f;
}
