var LoanForm = {
    errorCount: 0,

    focus: null,

    validate: function(form) {
        this.errorCount = 0;

        amount = parseFloat(form.find('input[name="amount"]').val());
        if ( amount < 0 || amount == 0 || amount > parseFloat(form.find('input[name="property_price"]').val()) ) {
            this.error(form, 'input[name="amount"]', 'Given loan amount is invalid');
        } else {
            this.approve(form, 'input[name="amount"]');
        }

        // Validate rate
        rate = parseFloat(form.find('input[name="rate"]').val());
        if ( rate < 0 || rate == 0 ) {
            this.error(form, 'input[name="rate"]', 'Interest rate can`t be less than 0');
        } else {
            this.approve(form, 'input[name="rate"]');
        }

        // Validate years
        years = parseInt(form.find('input[name="years"]').val());
        if ( years < 0 || years == 0 || years != form.find('input[name="years"]').val()) {
            this.error(form, 'input[name="years"]', 'Number of years can`t be less than 0');
        } else {
            this.approve(form, 'input[name="years"]');
        }

        return (this.errorCount==0);
    },

    error: function(form, field, message) {
        this.errorCount++;
        currentField = form.find(field);

        currentField.css('border-color','red').parent('label').prev('label').find('span, br').remove();
        currentField.parent('label').prev('label').append('<br /><span style="color: red;">' + message + '</span>');
    },

    approve: function(form, field) {
        form.find(field).css('border-color', '#fff').parent('label').prev('label').find('span, br').remove();
    },

    report: function(element, serializer) {
        if ( !LoanForm.validate(element.find('form')) ) {
            return false;
        }

        var block = element.find('input[name="block"]').val();

        $('#report_indicator_' + block).css('display','inline');
        element.find('input[type=submit]').attr('disabled', 'disabled');

        element.load(
            '/property/ajax-loan-recalculate/',
            element.find('form').serialize() + serializer,
            function(response, status){
                $('#report_indicator_' + block).css('display','none');
                $('#form_report_' + block).find('input[type=submit]').removeAttr('disabled');
                $('#form_report_' + block + ' .replaced').selectbox();

                if (null != LoanForm.focus) {
                    $('#' + LoanForm.focus + ':visible').focus();
                }
            }
        );

        return false;
    }
};

