﻿//The code in this file was created by Ophir Oren for iping.co.il website.
//This code is copyright protected. You may NOT copy this code or use it for private or commercial use.

function TestNetSpeed() {
    $("#internetSpeedTest").html("<span>מבצע בדיקת מהירות (שלב <span id='speedTestPhase'>1</span> מתוך 2)</span>");
    $("#internetSpeedTest").append("<table border='0' cellpadding='0' cellspacing='0' id='speedTestTable'><tr><td><span>מוריד נתונים:&nbsp;</span></td><td style='padding-top: 3px;'><span id='downloadProgress'></span></td><td><span id='downloadSpeedResult'></span></td></tr></table>");
    $("#downloadProgress").progressBar({ showText: false });
    checkDownloadSpeed(0);
}

var totalTime = 0;
function checkDownloadSpeed(i) {
    if (i == 0) totalTime = 0;

    var d1 = new Date();
    var tStart = d1.getTime();

    $.ajax({
        type: "POST",
        url: "downloadData.ashx?size=500",
        dataType: "text",
        cache: false,
        success: function(data) {
            var d2 = new Date();
            var tComplete = d2.getTime();
            var tDownload = (parseInt(tComplete) - parseInt(tStart));
            totalTime += tDownload;

            if (i < 4) {
                $("#downloadProgress").progressBar((i + 1) * 20);
                checkDownloadSpeed(++i);
            }
            else {

                $("#downloadProgress").progressBar(100, { increment: 20 });
                $("#downloadSpeedResult").html(returnSpeed(totalTime, 2500));
                $("#speedTestTable").append("<tr><td><span>שולח נתונים:&nbsp;</span></td><td style='padding-top: 3px;'><span id='uploadProgress'></span></td><td><span id='uploadSpeedResult'></span></td></tr>");
                $("#speedTestPhase").text("2");
                checkUploadSpeed(0);
            }
        }
    });
}

function checkUploadSpeed(i) {
    if (i == 0) totalTime = 0;

    var uploadSize = 100; //KB
    var dataToSend = "x=";

    //generate upload data
    for (var j = 0; j < ((uploadSize-8) * 1024); j++) {
        dataToSend += "X";
    }

    var d1 = new Date();
    var tStart = d1.getTime();

    $.ajax({
        type: "POST",
        url: "downloadData.ashx",
        dataType: "text",
        cache: false,
        data: 'size=1&' + dataToSend,
        success: function(data) {
            var d2 = new Date();
            var tComplete = d2.getTime();
            var tDownload = (parseInt(tComplete) - parseInt(tStart));
            totalTime += tDownload;

            if (i < 4) {
                $("#uploadProgress").progressBar((i + 1) * 20, { showText: false });
                checkUploadSpeed(++i);
            }
            else {
                $("#uploadProgress").progressBar(100, { increment: 20 });
                $("#uploadSpeedResult").html(returnSpeed(totalTime, 500));
            }
        }
    });
}

function returnSpeed(ms, kb) {
    var sec = Math.floor(ms / 1000)
    var kbps = Math.round(kb / sec);

    return "<span>&nbsp;מהירות ממוצעת:&nbsp;</span>" + kbps + "kbps";
}
