﻿
function keyCheck(e, el) {
    var k=e.keyCode||e.which;
    
}
function isNumberKey(evt, el) {
    var charCode = (evt.which) ? evt.which : event.keyCode;
    //alert(charCode);
    if (charCode == 13)
        el.blur();

    // decimal - check for 1 only
    if (charCode == 46) {
        var foundDecimal = false;
        var a = new Array();
        a = el.value.split("");
        for (var i = 0; i < a.length; i++)
            if (a[i] == ".") return false;
    } else {

        if (charCode != 44 && (charCode > 31 && (charCode < 48 || charCode > 57)))
            return false;
    }

    return true;
}

//function firstLoad() {
//    alert("test");
//    var el = $("_txtMB");
//    el.value = "1024";
//    calc(el);

//}
//Ekina.Events.register(window, "ondomready", function() { firstLoad(); });

var _txtLastUsed;
var roundDecimals = 0;

function calc(el) {

    // if el is null, then set to the last used element
    if (!el) {
        el = (_txtLastUsed ? _txtLastUsed : $("_txtBits"));
        el.oldValue = "";
    }


    // check options
    $("_selDecimals").disabled = !$("_chkRound").checked;
    if ($("_chkRound").checked)
        roundDecimals = $("_selDecimals").value;
    else
        roundDecimals = -1;

    if (el.value == el.oldValue)
        return;

    var unit = el.name;
    var val = parseFloat(el.value.replace(/\,/g, ''));
    
    var row = $(el.parentNode.parentNode);
    clearRows();
    row.addClass("selected");
        
    switch (unit) {

        case "b":
            _calculateFromBits(val);
            break;

        case "Kb":
            _calculateFromBits(val * 1000);
            break;

        case "Mb":
            _calculateFromBits(val * 1000 * 1000);
            break;

        case "B":
            _calculateFromBits(val * 8);
            break;

        case "KB":
            _calculateFromBits((val * 8) * 1024);
            break;

        case "MB":
            _calculateFromBits((val * 8) * 1024 * 1024);
            break;

        case "GB":
            _calculateFromBits((val * 8) * 1024 * 1024 * 1024);
            break;

        case "TB":
            _calculateFromBits((val * 8) * 1024 * 1024 * 1024 * 1024);
            break;
            
        case "PB":
            _calculateFromBits((val * 8) * 1024 * 1024 * 1024 * 1024 * 1024);
            break;

    }

    _txtLastUsed = el;
}

var rows;
function clearRows() {
    if (!rows) rows = $("byte-calc").getElementsByTagName("tr");

    for (var i = 0; i < rows.length; i++) {
        $(rows[i]).removeClass("selected");
    }
}

function _chkRound_Click(chkbox) {
    $("_selDecimals").disabled = !chkbox.checked;
    calc();
}

function _calculateFromBits(bits) {
    bits = parseInt(bits);
    if (isNaN(bits)) bits = 0;
    var bytes = bits / 8;

    setValue("_txtBits", bits);
    setValue("_txtKbits", (bits = bits / 1000));
    setValue("_txtMbits", (bits = bits / 1000));

    setValue("_txtB", bytes);
    setValue("_txtKB", (bytes = bytes / 1024));
    setValue("_txtMB", (bytes = bytes / 1024));
    setValue("_txtGB", (bytes = bytes / 1024));
    setValue("_txtTB", (bytes = bytes / 1024));
    setValue("_txtPB", (bytes = bytes / 1024));

}

function setValue(txtInput, value) {

    txtInput = $(txtInput);

    value = format(value, roundDecimals);
    
    txtInput.oldValue = value;
    txtInput.value = value;

}

function format(num, digits) { 
    
    if (digits > -1)
        num = Math.round(num * Math.pow(10, digits)) / Math.pow(10, digits);

    return $("_chkCommaSeparate").checked ? addCommas(num) : num;
}

function addCommas(nStr) {
    nStr += '';
    x = nStr.split('.');
    x1 = x[0];
    x2 = x.length > 1 ? '.' + x[1] : '';
    var rgx = /(\d+)(\d{3})/;
    while (rgx.test(x1)) {
        x1 = x1.replace(rgx, '$1' + ',' + '$2');
    }
    return x1 + x2;
}

