﻿function IsNapacenZnesek(znesek) {
    inp = znesek.value;

    pos = -1
    num = inp.length
    for (i = inp.length - 1; i >= 0; i--) {
        if (inp.charAt(i) == CultureDecimalSeparator) {
            if (num != inp.length) //|| i == 0 )
            {
                return true;
            }
            num = i;
        }
        if (inp.charAt(i) == CultureGroupSeparator) {
            if (((num - i - 1) % 3) != 0 || i == 0 || i == (inp.length - 1)) {
                return true;
            }
            num = i;
        }
    }
    return false;
}

function trim_number(s) {
    while (s.substring(0, 1) == '0') {
        s = s.substring(1, s.length);
    }
    while (s.substring(s.length - 1, s.length) == ' ') {
        s = s.substring(0, s.length - 1);
    }

    if (s.substring(0, 1) == CultureDecimalSeparator) s = '0' + s;

    return s;
}

function format_znesek(name, dec) {
    inp = name.value;

    if (IsNapacenZnesek(name))
        return;

    if (inp != "") {
        vejica = 0;
        if (inp == "") return;
        outt = "";
        for (i = 0; i < inp.length; i++) {
            znak = inp.charAt(i);
            if (znak == CultureGroupSeparator) continue;
            else if (znak == CultureDecimalSeparator) {
                if (dec == 0) break;
                if (vejica > 0) break;
                vejica = 1;
                outt = outt + znak;
            }
            else if (znak < "0" || znak > "9") break;
            else outt = outt + znak;
        }
        out = "";
        outt = trim_number(outt);

        if (dec) {
            nule = "000000000";
            out = CultureDecimalSeparator;
            pos1 = outt.indexOf(CultureDecimalSeparator);
            if (pos1 != -1) {
                pos2 = outt.length;
                if (pos2 - pos1 - 1 > dec) pos2 = pos1 + dec + 1;
                out = out + outt.substring(pos1 + 1, pos2);
                outt = outt.substring(0, pos1);
            }
            out = out + nule.substring(0, 3 - out.length);
        }

        for (i = outt.length; i > 3; i -= 3) out = CultureGroupSeparator + outt.substring(i - 3, i) + out;
        out = outt.substring(0, i) + out;

        zero = CultureDecimalSeparator + "00";
        if (out == zero)
            out = "0" + CultureDecimalSeparator + "00";
        name.value = out;
    }

}

function format_znesek_culture(val, dec) {
    // konvertiramo v string (če še ni)         
    formattedString = '';
    var prefix = (val < 0)?'-':'';
    val = Math.abs(val);
    if ((dec == null) || (dec < 0)) dec = 2;
    var numDec = Math.min(dec, 9);
    val = Math.round(val * Math.pow(10, numDec+1)) / Math.pow(10, numDec+1);
    var wholePart = Math.floor(val);
    var decimalPart = Math.round((val - wholePart) * Math.pow(10, numDec));

    decimalPartString = decimalPart + '';
    for (var i = decimalPartString.length; i < numDec; i++)
        decimalPartString = '0' + decimalPartString;
        
    wholePartString = wholePart + '';  
    for (i = wholePartString.length; i > 3; i -= 3) formattedString = CultureGroupSeparator + wholePartString.substring(i - 3, i) + formattedString;
    formattedString = prefix + wholePartString.substring(0, i) + formattedString;
    if (decimalPartString != '')
        formattedString = formattedString + CultureDecimalSeparator + decimalPartString;
    return formattedString;
}

function unformat_znesek(znesekStr, deleteAllButFirstDecimalSeparators) {
    var temp = "";
    var isDecimalSeparatorInResult = false;
    for (var i = 0; i < znesekStr.length; i++) {
        if (znesekStr.charAt(i) == CultureGroupSeparator) {
        }
        else if (znesekStr.charAt(i) == CultureDecimalSeparator)
        {
            if (!deleteAllButFirstDecimalSeparators || !isDecimalSeparatorInResult)
            {
                temp = temp + ".";
                isDecimalSeparatorInResult = true;
            }
        }
        else
            temp = temp + znesekStr.charAt(i);
    }
    return temp;
}

function isNumeric(key) {
    return (key >= 48 && key <= 57);
}

function numInput(field, e, val) {
    var key;

    if (navigator.appName == 'Netscape') {
        key = e.which;
        evnt = e;
        if (isNumeric(key) || key < 32)
            return true;
        if (val != null) {
            for (i = 0; i < val.length; i++) {
                if (val[i] == key)
                    return true;
            }
        }
        return false;
    }
    else {
        key = window.event.keyCode;
        window.event.returnValue = true;
        if (isNumeric(key))
            return true;
        if (val != null) {
            for (i = 0; i < val.length; i++) {
                if (val[i] == key)
                    return true;
            }
        }
        window.event.returnValue = false;
        return false;
    }
}

function vnosSR(field, e) {
    var a = new Array(1);
    a[0] = 45;
    return numInput(field, e, a);
}

function CheckNumericAdv(field, e, onlyNumeric) {
    if (!onlyNumeric) {
        var a = new Array(2);
        a[0] = 46;
        a[1] = 44;
        return numInput(field, e, a);
    }
    else return numInput(field, e);
}


function CheckNumeric(field, e, onlyNumeric) {
    var key;

    if (navigator.appName == 'Netscape') {
        key = e.which;
        if (key == 8 || key == 13 || key == 0)
            return true;
    }
    return CheckNumericAdv(field, e, onlyNumeric);
}

function CheckNumericSpecial(field, e, allowedCharsArray) {
    var key;

    if (navigator.appName == 'Netscape') {
        key = e.which;
        if (key == 8 || key == 13 || key == 0)
            return true;
    }
    return numInput(field, e, allowedCharsArray);    
}

function CheckNumericOrComma(field, e)
{
    var a = new Array(1);
    a[0] = 44;
    return CheckNumericSpecial(field, e, a);
}


function CheckLetter(field, e) {
    var key;

    if (navigator.appName == 'Netscape') {
        key = e.which;
        if (key == 8 || key == 13 || key == 0)
            return true;
    }

    if (navigator.appName == 'Netscape') {
        key = e.which;
        evnt = e;
        return ((key >= 65 && key <= 90) || (key >= 97 && key <= 122));

    }
    else {
        key = window.event.keyCode;
        window.event.returnValue = true;
        if ((key >= 65 && key <= 90) || (key >= 97 && key <= 122))
            return true;

        window.event.returnValue = false;
        return false;
    }

}
function CheckLetterAndMinus(field, e) {
    var key;

    if (navigator.appName == 'Netscape') {
        key = e.which;
        if (key == 8 || key == 13 || key == 0)
            return true;
    }

    if (navigator.appName == 'Netscape') {
        key = e.which;
        evnt = e;
        return ((key >= 65 && key <= 90) || (key >= 97 && key <= 122)  || (key == 45));

    }
    else {
        key = window.event.keyCode;
        window.event.returnValue = true;
        if ((key >= 65 && key <= 90) || (key >= 97 && key <= 122) || (key == 45))
            return true;

        window.event.returnValue = false;
        return false;
    }

}
function ToUpper(ctrl) {
    ctrl.value = ctrl.value.toUpperCase();
}
function trim(s) {
    return rtrim(ltrim(s));
}

function ltrim(s) {
    var l = 0;
    while (l < s.length && s[l] == ' ')
    { l++; }
    return s.substring(l, s.length);
}

function rtrim(s) {
    var r = s.length - 1;
    while (r > 0 && s[r] == ' ')
    { r -= 1; }
    return s.substring(0, r + 1);
}

function custom_validator_check_znesek(source, args) {
    args.IsValid = false;
    try {
        var znesekString = unformat_znesek(source.value);
        args.IsValid = !(isNaN(znesekString)) && (znesekString > 0.0);
    }
    catch (ex) { }
}

function format_znesek_valuta(name, numDec)
{
    try
    {
            if (numDec == null) numDec = 2;
            if (!isNaN(parseFloat(unformat_znesek(name.value, true))))
                name.value = format_znesek_culture(parseFloat(unformat_znesek(name.value, true)), numDec);
    }            
    catch (e) {}
}   
