jQuery(document).ready(function($) {
    'use strict';
    
    // Format number with commas
    function formatNumber(num) {
        return new Intl.NumberFormat('en-AU', {
            style: 'currency',
            currency: 'AUD',
            minimumFractionDigits: 0,
            maximumFractionDigits: 0
        }).format(num);
    }
    
    // Format currency with cents
    function formatCurrency(num) {
        return new Intl.NumberFormat('en-AU', {
            style: 'currency',
            currency: 'AUD',
            minimumFractionDigits: 2,
            maximumFractionDigits: 2
        }).format(num);
    }
    
    // Add input formatting for loan amount
    $('#loan-amount').on('input', function() {
        let value = $(this).val().replace(/[^0-9]/g, '');
        if (value) {
            $(this).val(parseInt(value).toLocaleString());
        }
    });
    
    // Remove formatting on focus for easier editing
    $('#loan-amount').on('focus', function() {
        let value = $(this).val().replace(/[^0-9]/g, '');
        $(this).val(value);
    });
    
    // Add formatting back on blur
    $('#loan-amount').on('blur', function() {
        let value = $(this).val().replace(/[^0-9]/g, '');
        if (value) {
            $(this).val(parseInt(value).toLocaleString());
        }
    });
    
    // Handle form submission
    $('#mortgage-form').on('submit', function(e) {
        e.preventDefault();
        
        const $form = $(this);
        const $button = $form.find('.calculate-btn');
        const $btnText = $button.find('.btn-text');
        const $btnLoader = $button.find('.btn-loader');
        const $results = $('#results');
        
        // Get form data
        const loanAmount = parseFloat($('#loan-amount').val().replace(/[^0-9.]/g, ''));
        const interestRate = parseFloat($('#interest-rate').val());
        const loanTerm = parseInt($('#loan-term').val());
        const frequency = $('#repayment-frequency').val();
        
        // Validate inputs
        if (!loanAmount || loanAmount < 1000) {
            alert('Please enter a valid loan amount (minimum $1,000)');
            return;
        }
        
        if (!interestRate || interestRate < 0.1 || interestRate > 15) {
            alert('Please enter a valid interest rate (0.1% - 15%)');
            return;
        }
        
        if (!loanTerm || loanTerm < 1 || loanTerm > 40) {
            alert('Please enter a valid loan term (1 - 40 years)');
            return;
        }
        
        // Show loading state
        $button.prop('disabled', true);
        $btnText.hide();
        $btnLoader.show();
        $results.removeClass('show').hide();
        
        // Prepare data for AJAX
        const data = {
            action: 'calculate_mortgage',
            nonce: mortgage_ajax.nonce,
            loan_amount: loanAmount,
            interest_rate: interestRate,
            loan_term: loanTerm,
            repayment_frequency: frequency
        };
        
        // Make AJAX request
        $.ajax({
            url: mortgage_ajax.ajax_url,
            type: 'POST',
            data: data,
            success: function(response) {
                if (response.success) {
                    displayResults(response.data);
                } else {
                    alert('Error calculating mortgage. Please try again.');
                }
            },
            error: function() {
                alert('Error calculating mortgage. Please check your connection and try again.');
            },
            complete: function() {
                // Reset button state
                $button.prop('disabled', false);
                $btnText.show();
                $btnLoader.hide();
            }
        });
    });
    
    // Display calculation results
    function displayResults(data) {
        const frequencyText = {
            'weekly': 'Weekly',
            'fortnightly': 'Fortnightly',
            'monthly': 'Monthly'
        };
        
        // Update result values
        $('#repayment-amount').text(formatCurrency(data.payment) + ' ' + frequencyText[data.frequency]);
        $('#total-interest').text(formatNumber(data.total_interest));
        $('#total-repayment').text(formatNumber(data.total_repayment));
        
        // Show results with animation
        const $results = $('#results');
        $results.addClass('show').fadeIn(300);
        
        // Scroll to results on mobile
        if ($(window).width() < 768) {
            $('html, body').animate({
                scrollTop: $results.offset().top - 20
            }, 500);
        }
    }
    
    // Input validation for interest rate
    $('#interest-rate').on('input', function() {
        let value = parseFloat($(this).val());
        if (value > 15) {
            $(this).val(15);
        }
    });
    
    // Input validation for loan term
    $('#loan-term').on('input', function() {
        let value = parseInt($(this).val());
        if (value > 40) {
            $(this).val(40);
        }
    });
    
    // Add placeholder animation
    $('input, select').on('focus', function() {
        $(this).closest('.form-group').addClass('focused');
    });
    
    $('input, select').on('blur', function() {
        if (!$(this).val()) {
            $(this).closest('.form-group').removeClass('focused');
        }
    });
    
    // Initialize with default values for demo
    $('#loan-amount').val('500,000');
    $('#interest-rate').val('5.5');
    $('#loan-term').val('30');
    $('#repayment-frequency').val('monthly');
});