function zHCIncome(vEvent) {
    var nIncome = zStrToInt(document.forms["calc"].elements["Income"].value);
    if (nIncome > 0) {
        document.forms["calc"].elements["MaxSum"].value = nIncome * 30;
        document.forms["calc"].elements["MaxPay"].value = (nIncome * 4) / 10;
    }
    else {
        document.forms["calc"].elements["MaxSum"].value = "";
        document.forms["calc"].elements["MaxPay"].value = "";
    }
    zHCMinPay();
} 

function zHCSum(vEvent) {
    var vSum = document.forms["calc"].elements["Sum"];
    var nIncome = zStrToInt(document.forms["calc"].elements["Income"].value);
    var nMaxSum = zStrToInt(document.forms["calc"].elements["MaxSum"].value);
    if (nIncome > 0 && zStrToInt(vSum.value) > nMaxSum)
        vSum.style.color = "red";
    else
        vSum.style.color = "#336633";
}

function zHCMinPay() {
    var vMinPay = document.forms["calc"].elements["MinPay"];
    var nMinPay = zStrToInt(vMinPay.value);
    var nMaxPay = zStrToInt(document.forms["calc"].elements["MaxPay"].value);
    if (nMinPay > 0 && nMaxPay > 0 && nMaxPay < nMinPay)
        vMinPay.style.color = "red";
    else
        vMinPay.style.color = "gray";
}

function zHCPeriod(obj) {
    document.forms["calc"].elements["Res1"].value = "";
    document.forms["calc"].elements["OverPay"].value = "";
}

function zHCPayment(obj) {
    document.forms["calc"].elements["Res2"].value = "";
    document.forms["calc"].elements["OverPay"].value = "";
}

function zHCSource(vEvent) {
    var nSum = zStrToInt(document.forms["calc"].elements["Sum"].value);
    var nMonthly = zStrToInt(document.forms["calc"].elements["Percent"].value) / 1200;
    document.forms["calc"].elements["Res1"].value = "";
    document.forms["calc"].elements["Res2"].value = "";
    document.forms["calc"].elements["OverPay"].value = "";
    var nMinPay = Math.round(nSum * nMonthly);
    if (nMinPay > 0) nMinPay++;
    if (nMinPay < 1)
        document.forms["calc"].elements["MinPay"].value = "";
    else
        document.forms["calc"].elements["MinPay"].value = nMinPay;
    zHCMinPay();
}

function zHCLoan(nFlag) {
    var nSum = zStrToInt(document.forms["calc"].elements["Sum"].value);
    var nMonthly = zStrToInt(document.forms["calc"].elements["Percent"].value) / 1200;
    if (nSum < 1 || nMonthly <= 0) return(false);
    if (nFlag == 1) {
        var nMonthes = document.forms["calc"].elements["Period"].value;
        if (nMonthes < 1) return(false);
        document.forms["calc"].elements["Payment"].value = "";
        document.forms["calc"].elements["Res2"].value = "";
        var vRes1 = document.forms["calc"].elements["Res1"];
        var nPayment = nSum * nMonthly / (1 - 1 / Math.pow((1 + nMonthly), nMonthes - 1));
        vRes1.value = Math.round(nPayment * 100) / 100;
        var nMaxPay = zStrToInt(document.forms["calc"].elements["MaxPay"].value);

        if (nMaxPay > 0 && zStrToInt(vRes1.value) > nMaxPay)
            vRes1.style.color = "red";
        else
            vRes1.style.color = "gray";
        document.forms["calc"].elements["OverPay"].value = Math.round(nPayment * nMonthes / nSum * 100) / 100;
        document.forms["calc"].elements["OverPay"].style.color = "gray";
    }
    else if (nFlag == 2) {
        var nPayment = zStrToInt(document.forms["calc"].elements["Payment"].value);
        if (nPayment < 1) return(false);
        document.forms["calc"].elements["Period"].value = "";
        document.forms["calc"].elements["Res1"].value = "";
        var vRes2 = document.forms["calc"].elements["Res2"];
        if (nPayment > nSum * nMonthly) {
            var nMonthes = 1 - Math.log(1 - nSum * nMonthly / nPayment) / Math.log(1 + nMonthly);
            document.forms["calc"].elements["OverPay"].value = Math.round(nPayment * nMonthes / nSum * 100) / 100;
            document.forms["calc"].elements["OverPay"].style.color = "gray";
            vRes2.value = Math.round(nMonthes / 1) * 1;
            vRes2.style.color = "gray";
            if (zStrToInt(vRes2.value) > 5*12)
                vRes2.style.color = "red";
            else
                vRes2.style.color = "gray";
        }
        else {
            document.forms["calc"].elements["OverPay"].value = document.getElementById("infin").innerText;
            vRes2.style.color = "red";
            document.forms["calc"].elements["OverPay"].style.color = "red";
        }
    }
    return(false);
}

function zStrToInt(sPar, bFloat) {
    if (sPar.length == 0 || isNaN(sPar) || sPar == 0) return(0);
    while (sPar.substring(0, 1) == "0")
        sPar = sPar.substring(1, sPar.length);
    if (bFloat == true)
        return(parseFloat(sPar));
    else
        return(parseInt(sPar));
}

function zNumericField(obj, bFloat) {
    if (bFloat == true)
        var nValue = parseFloat(obj.value);
    else
        var nValue = parseInt(obj.value);

    if (obj.value.toString() == nValue.toString() || obj.value.length == 0);
    else if (isNaN(nValue))
        obj.value = "";
    else if (bFloat && obj.value.toString() == nValue.toString() + ".");
    else if (obj.value != nValue)
        obj.value = nValue;
}
