function get_formatted_speed(bytes, duration) {
    var bits = bytes * 8;
    var bits_per_second = (bytes * 8 * 1000) / duration;
    var formatted_speed = '';
    
    if (bits_per_second >= 1000) {
        if(bits_per_second >= 1000000) {
            formatted_speed = '' + (Math.round(bits_per_second / 1000000 * 100) / 100) + ' Mbit/s';
        } else {
            formatted_speed = '' + Math.round(bits_per_second / 1000) + ' Kbit/s';
        }
    } else {
        formatted_speed = '' + Math.round(bits_per_second) + ' bit/s';
    }
    
    return formatted_speed;
}
function log_msg(logMsg) {
    var currentTime = new Date()
    var hours = currentTime.getHours();
    var minutes = currentTime.getMinutes();
    var seconds = currentTime.getSeconds();
    
    if (hours < 10) {
        hours = "0" + hours;
    }
    if (minutes < 10) {
        minutes = "0" + minutes;
    }
    if (seconds < 10) {
        seconds = "0" + seconds;
    }
    
    $("#logging").append(hours + ':' + minutes + ':' + seconds + ',' + logMsg + '<br />');
}
function update_progress(id, percentage) {
    //console.log(percentage);
    var bgPosHor = 200-percentage;
    //console.log(bgPosHor);
    $("#"+id).css("background-position",bgPosHor+"% 1px");
}
function optimize_check_completed (parallelUploads, parallelDownloads) {
    //console.log("optimized");
    $("#optimizeInfo").text("");
}
function download_check_completed (bytes, duration) {
    //console.log(bytes);
    //console.log(duration);
    $("li#downSpeed dl dt").text("Ihre derzeitige Downloadgeschwindigkeit beträgt:");
    var formatedDownSpeed = get_formatted_speed(bytes, duration);
    $("li#downSpeed span.formatedSpeed").text(formatedDownSpeed);
    // $("#java_button").show();
}
function upload_check_completed (bytes, duration) {
    $("li#upSpeed dl dt").text("Ihre derzeitige Uploadgeschwindigkeit beträgt:");
    var formatedUpSpeed = get_formatted_speed(bytes, duration);
    $("li#upSpeed span.formatedSpeed").text(formatedUpSpeed);
    //console.log(bytes);
    //console.log(duration);
    //console.log(formatedUpSpeed);
    // $(".box_cable img.speedLoader").hide();
}
function show_error() {
    $("p.progressInfo, p#optimizeInfo, #pBarList").hide();
    $(".errMessage").show();
    $(".box_cable img.speedLoader").hide();
    $(".box_cable a.btn_startSpeed").show();
}
function download_error(errorMsg) {
    show_error();
}
function upload_error(errorMsg) {
    show_error();
}
function optimize_error(errorMsg) {
    show_error();
}
function ping_error(errorMsg) {
    show_error();
}
function checkJava() {
    javaVer = deployJava.getJREs();
    
    if (javaVer == "") {
        $("p.advice, .box_cable").hide();
        $(".noJava").show();
    }
}
function speedcheck_started() {
    $(".errMessage").hide();
    $(".box_cable, p.progressInfo, p#optimizeInfo").show();
    $("#optimizeInfo").text("Einen Moment, bitte. Der Alice Speedchecker prüft Ihre Verbindung.");
    $("#pBarList").show();
}
function reset_results() {
    update_progress("optimizeProgress", 0);
    update_progress("downloadProgress", 0);
    update_progress("uploadProgress", 0);
    // $("#java_button").hide(); // does not work, hidden applets are stopped
}
function speedcheck_completed() {
}
function ping_check_completed() {
}
