
function showDownloadTime(elementName, formatList, index) {
    var fileSize = document.getElementById(elementName);
    if (fileSize != null) {
	var format = formatList[index];
	fileSize.innerHTML = format.fileSize;
    }
}

function epoch() {
    var now = new Date();
    return Date.UTC( now.getUTCFullYear(), now.getUTCMonth(), now.getUTCDay(), now.getUTCHours(), now.getUTCMinutes(), now.getUTCSeconds() );
}

function computeKbyte(time, size) {
    var seconds = time / 1000;
    var value = size / time;
    return Math.round(value*100)/100;
}

function createRequestObject() {
    var xmlHttp = false;
    if (!xmlHttp && typeof XMLHttpRequest != 'undefined') {
        xmlHttp = new XMLHttpRequest();
    }
    return xmlHttp;
}

var duration = 0;
var starttime = 0;

var file_sufixes = new Array( "1KB", "10KB", "100KB", "500KB", "1MB", "2MB", "10MB" );
var sufix_divide = new Array(   1  ,  10   ,  100   ,  500   , 1024 , 2048, 10240  );

var http  = createRequestObject();

var theTimeElementName = "";
var theImageElementName = "";
var theFileSize = 0;

function sndReq(timeElementName, imageElementName, fileSize) {
	theTimeElementName = timeElementName;
	theImageElementName = imageElementName;
	theFileSize = fileSize;
    starttime = epoch();
    document.getElementById(timeElementName).innerHTML = 'wird ermittelt...';
    document.getElementById(imageElementName).innerHTML = '<img src="/shop/images/download03_ongoing.gif" alt="" style="margin: 1px 5px 1px 0px;" border="0">';

    if ( file_sufixes.length > 0 ) {
        var file_suffix = file_sufixes.shift();

        http.open('get', '/shop/images/test_' + file_suffix + '.bin?' + starttime);
	http.onreadystatechange = handleResponse;

        http.send(null);
    } else {
        document.getElementById(timeElementName).innerHTML = "N/A";
        document.getElementById(imageElementName).innerHTML = '<img src="/shop/images/download03_ready.gif" alt="" style="margin: 1px 5px 1px 0px;" border="0">';
    }
}

function handleResponse() {
    if(http.readyState == 4){
        
	if (http.status == 200) {
	    var time = epoch() - starttime;
	    var divide = sufix_divide.shift();

	    if ( time > 2000 || file_sufixes.length == 0 ) {
		var filesize = theFileSize;
		var kbyte = computeKbyte(time, divide * 1024 );
		var duration = filesize / (kbyte * 1024);
		var absSekunden = Math.round( duration ); 
		var relSekunden = absSekunden;
		var absMinuten = 0;
		var absStunden = 0;

		if ( absSekunden > 60 ) {
		    relSekunden = absSekunden % 60;
		    absMinuten = Math.round( absSekunden / 60 );
		}

                if ( relSekunden == null ) {
                    relSekunden = 0;
                }

		if ( absMinuten > 60 ) {
		    absStunden = Math.round( absMinuten / 60 );
		    absMinuten = absMinuten % 60;
		}
		var anzSekunden = ""+ relSekunden;
		var anzMinuten = "" +  absMinuten;
		var anzStunden = "" + absStunden;

		var anzeige = "";
		if ( anzStunden != "0" ) {
                    var postfix = anzStunden == "1"  ? " Stunde " : " Stunden ";
		    anzeige += anzStunden + postfix;
		}

		if ( anzMinuten != "0" ) {
                    var postfix = anzMinuten == "1"  ? " Minute " : " Minuten ";
		    anzeige += anzMinuten + postfix;
		}

		if ( anzSekunden != "0" ) {
                    var postfix = anzSekunden == "1"  ? " Sekunde " : " Sekunden ";
		    anzeige += anzSekunden + postfix;
		}

		if ( anzeige == '' ) {
		    anzeige = '&lt; 1 Sekunde';
		}

		document.getElementById(theTimeElementName).innerHTML = anzeige;
		document.getElementById(theImageElementName).innerHTML = '<img src="/shop/images/download03_ready.gif" alt="" style="margin: 1px 5px 1px 0px;" border="0">';
	    } else {
		sndReq( theTimeElementName, theImageElementName, theFileSize );
	    }

	} else {
	    alert("Status not 200: " + http.status);
	}

    } 
}

