﻿//Utility functions
function whatDecimalSeparator() {
    /*var n = 1.1;
    n = n.toLocaleString().substring(1, 2);
    return n;*/

    return ","; 
}

function roundNumber(num, dec) {
    var result = Math.round(num * Math.pow(10, dec)) / Math.pow(10, dec);
    return result;
}

function FmtNumber(aNbr, dec) {
    var seperator = whatDecimalSeparator();
    var sResult;

    sResult = roundNumber(aNbr, dec).toString();
    if (seperator == ".") sResult = sResult.split(",").join(".");
    else sResult = sResult.split(".").join(",");
    
    return sResult;
}

//<ClientSideEvents KeyPress="KeyPressDecimal"/>
function KeyPressDecimal(s, e) {
     KeyPressGeneral(s, e, "0123456789.,-");
}

function KeyPressGeneral(s, e, expr) {
    var evt = e.htmlEvent;
    var key = evt.keyCode ? evt.keyCode : evt.which;
    var ch = String.fromCharCode(key).toLowerCase();

    var seperator = whatDecimalSeparator();
    if (ch == "." && seperator == ",") {
        if (!ASPxClientUtils.chrome) {
            s.SetValue(s.GetValue().toString() + ",");
        }

        ASPxClientUtils.PreventEvent(evt);
        //evt.keyCode = 44; //comma  (werkt enkel in IE)
    }
    else if (ch == "," && seperator == ".") {
        if (!ASPxClientUtils.chrome) {
            s.SetValue(s.GetValue().toString() + ".");
        }

        ASPxClientUtils.PreventEvent(evt);
        //evt.keyCode = 46;  //point
    }

    if (key != 8 && key != 37 && key != 39 && key != 46 && key != 9) {  //Backspace, left arrow, right arrow, delete, tab character 
        var a = expr.indexOf(ch);

        if (a == -1) {
            ASPxClientUtils.PreventEvent(evt); //Works crossbrowser
            //evt.keyCode = 0;
        }
    }
}


function KeyPressDecimalPositiveOnly(s, e) {
    KeyPressGeneral(s, e, "0123456789.,");
}

//<ClientSideEvents Validation="ValidateRequired"/>
function ValidateRequired(s, e) {
    e.isValid = s.GetText().length > 0;
    e.errorText = "Field is required";
}

function ToFloat(aText) {
    return parseFloat(aText.split(',').join('.'))
}

function ValidateDecimalPositiveOnly(s, e) {
    var sText = s.GetText();

    if (sText.length == 0) {
        e.isValid = false;
        e.errorText = "Field is required";
    }

    try {
        ToFloat(sText);
    }
    catch (err) {
        e.isValid = false;
        e.errorText = "Field is not numeric";
    }

    var iDec = ToFloat(sText);
    if (iDec < 0) {
        e.isValid = false;
        e.errorText = "Field value is not positive";
    }
}


