// JavaScript Document
function getRate(days){
    if (days >= 1 && days <= 30){
        return .20;
    }
    else if (days > 30 && days <= 45){
        return .24;
    }
    else {
        return .28;
    }
}

function parseDate(datestr){
    var parts = datestr.split('/');
    if (parts.length != 3){
        parts = datestr.split('-');
        if (parts.length != 3){
            return false;
        }
    }

    var date = new Date();
    date.setMonth(parts[0]-1);
    date.setDate(parts[1]);
    if (parts[2] < 100){
        parts[2] += 2000;
    }

    date.setFullYear(parts[2]);
    return date;
}

function clearFields(frm){
    var today = new Date();
    frm.desired_advance.value = '$0.00';
    frm.closing_date.value = (today.getMonth()+1)+'/'+today.getDate()+'/'+today.getFullYear();
    frm.costs.value = '$0.00';
    frm.advance.value = '$0.00';
    frm.reserve_fee.value = '$0.00';
    frm.discount_fee.value = '$0.00';
}

function getUnixTime(date){
    if (!date){
        return false;
    }
    return date.getTime()/1000;
}

function calculate(){
	var desired_advance = parseFloat(frm.desired_advance.value.replace(/(\$|,|\s)/g, ''), 10);
    if (isNaN(desired_advance) || desired_advance < 1){
        alert('Please enter your desired advance.');
        frm.desired_advance.focus();
        return false;
    }

    var closing_date = getUnixTime(parseDate(frm.closing_date.value));
    var date_diff = Math.ceil( (closing_date - getUnixTime(new Date())) / (24*60*60) );
	
    if (date_diff < 1){
        alert('Please enter a closing date in the future.');
        frm.closing_date.focus();
        return false;
    }
    else if (date_diff > 90){
        alert('Sorry, but we will only do advances up to 90 days.');
        frm.closing_date.focus();
        return false;
    }
    else {
        document.getElementById('days_advanced').innerHTML = date_diff+' day advance';
        var discount_fee = (desired_advance) * getRate(date_diff);
        var other_fees = 49;
        var costs = discount_fee + other_fees; //200 + 49
        var advance = desired_advance + costs; //2000-249
        frm.costs.value = '$'+costs.toFixed(2);
        frm.advance.value = '$'+advance.toFixed(2);
        frm.reserve_fee.value = '$'+reserve_fee.toFixed(2);
        frm.discount_fee.value = '$'+discount_fee.toFixed(2);
    }

    return true;
}
