<!--

function checkDate(input)
{
    var date = null;
    var value = trim(input.value);
    if (value != null && value != '')
    {
        var msg = input.id + 'Msg';
        try
        {
            date = parseDateString(value);
            input.value = formatDate(date);
            input.className = '';
            // document.getElementById(msg).firstChild.nodeValue = date.toDateString();
            document.getElementById(msg).className = 'normal';
        }
        catch(e)
        {
            input.className = 'error';
            var message = e.message;

            if (message.indexOf('is null or not an object') > -1)
            {
                message = 'Invalid date string';
            }

            document.getElementById(msg).firstChild.nodeValue = ' ' + message;
            document.getElementById(msg).className = 'error';
        }
    }

    return date;
}

function checkDateApplied(form)
{
    checkDate(form.dateApplied);

    setEndDate(form);
}

function setEndDate(form)
{
    var endDate = '';
    var msg = 'dateAppliedMsg';
    months = (+form.monthsTreatment.value);
    if (months > 0)
    {
        form.monthsRemaining.value = months;
        form.numberPayments.value = months;
        var d = null;
        try
        {
            d = parseDateString(form.dateApplied.value);

            form.dateApplied.className = '';
            document.getElementById(msg).className = 'normal';
        }
        catch(e)
        {
            d = null;
            form.dateApplied.className = 'error';
            var message = e.message;

            if (message.indexOf('is null or not an object') > -1)
            {
                message = 'Invalid date string';
            }

            document.getElementById(msg).firstChild.nodeValue = ' ' + message;
            document.getElementById(msg).className = 'error';
        }
        if (d != null)
        {
            d.setYear(d.getFullYear() + (months / 12));
            mths = d.getMonth() + (months % 12);
            if (mths >= 12)
            {
                d.setYear(d.getFullYear() + 1);
                mths -= 12;
            }
            d.setMonth(mths);
            endDate = formatDate(d);
        }
    }
    form.endDate.value = endDate;
    getMonthsRemaining(form);
}

function checkMaxMedical(form)
{
    try
    {
        var maxMedical = getDollarValue(form.maxMedical);
    }
    catch(e)
    {
        return;
    }

    setBalance(form);
}

function setBalance(form)
{
    var monthsTreatment = form.monthsTreatment.value;

    try
    {
        var cost = getDollarValue(form.treatmentFee);
    }
    catch(e)
    {
        return;
    }

    var payments = 0;
    var additional = 0;
    var downPayment = 0;
    var applied = null;
    try
    {
        payments += getDollarValue(form.lifetimeBenefit);
        payments += getDollarValue(form.discounts);
        additional += getDollarValue(form.otherPayments);

        downPayment += getDollarValue(form.downPayment);

        applied = parseDateString(form.dateApplied.value);
    }
    catch(e)
    {
        return;
    }

    if (isNextYear(applied))
    {
        additional += downPayment;
    }
    else
    {
        payments += downPayment;
    }

    var patientPays = cost - payments;

    form.patientResponsibility.value = Dollar(patientPays);
    form.remainingBalance.value = Dollar(patientPays - additional);
    form.monthlyPayment.value = Dollar(patientPays / monthsTreatment);

    setMonthlyFSA(form);
}

function setMonthlyFSA(form)
{
    payments = (+form.numberPayments.value);
    if (payments > 0)
    {
        numPeriods = 0;
        for (var i = 0; i < form.payPeriod.length; i++)
        {
            if (form.payPeriod[i].checked)
            {
                numPeriods = form.payPeriod[i].value;
                break;
            }
        }
        balance = (+form.remainingBalance.value);
        monthlyPayment = (+form.monthlyPayment.value);
        maxMedical = (+form.maxMedical.value);

        amountToPay = payments * monthlyPayment;

        if (amountToPay > balance)
        {
            amountToPay = balance;
        }
        if (amountToPay > maxMedical)
        {
            amountToPay = maxMedical;
        }

        form.fsaContribution.value = Dollar(amountToPay / numPeriods);
        form.fsaTotalContribution.value = Dollar(amountToPay);
    }
    else
    {
        form.fsaContribution.value = 0;
        form.fsaTotalContribution.value = 0;
    }
}

function getMonthsRemaining(form)
{
    var msg = 'dateAppliedMsg';
    var mths = 0;
    var d = null;
    months = (+form.monthsTreatment.value);
    if (months > 0)
    {
        try
        {
            d = parseDateString(form.dateApplied.value);

            form.dateApplied.className = '';
            document.getElementById(msg).className = 'normal';
        }
        catch(e)
        {
            d = null;
            form.dateApplied.className = 'error';
            var message = e.message;

            if (message.indexOf('is null or not an object') > -1)
            {
                message = 'Invalid date string';
            }

            document.getElementById(msg).firstChild.nodeValue = ' ' + message;
            document.getElementById(msg).className = 'error';
        }
        if (d != null)
        {
            mths = 0;
            var today = new Date();
            while (today > d)
            {
                ++mths;
                today.setMonth(today.getMonth() - 1);
            }
        }
        treatment = (+form.monthsTreatment.value);
        form.monthsRemaining.value = treatment - mths;
        form.numberPayments.value = treatment - mths;
    }
    else
    {
        form.monthsRemaining.value = 0;
        form.numberPayments.value = 0;
    }
}

function checkRemaining(form)
{
    treatment = (+form.monthsTreatment.value);
    remaining = (+form.monthsRemaining.value);

    if (remaining > treatment)
    {
        form.monthsRemaining.value = getMonthsRemaining(form);
    }
}

function checkNumberPayments(form)
{
    treatment = (+form.monthsTreatment.value);
    payments = (+form.numberPayments.value);

    if (payments > treatment)
    {
        payments = treatment;
    }
    form.numberPayments.value = payments;

    setBalance(form);
}

function clear(form)
{
    today = new Date();
    for (var k = 0; k < form.payPeriod.length; k++)
    {
        form.payPeriod[k].checked = false;
    }
    form.payPeriod[0].checked = true;
    form.maxMedical.value = 5000;
    form.dateApplied.value = formatDate(today);
    form.monthsTreatment.value = 24;
    form.numberPayments.value = 0;

    form.treatmentFee.value = 0;
    form.lifetimeBenefit.value = 0;
    form.downPayment.value = 0;
    form.discounts.value = 0;
    form.otherPayments.value = 0;

    // disabled fields
    form.endDate = addMonths(today, 24);
    form.monthsRemaining.value = 0;
    form.patientResponsibility.value = 0;
    form.remainingBalance.value = 0;
    form.monthlyPayment.value = 0;
    form.fsaContribution.value = 0;
    form.fsaTotalContribution.value = 0;

    setEndDate(form);
}
//-->
