Florida Probate Attorney Fee Calculator

Florida Probate Attorney Fee Calculator :root { –primary-color: #004a99; –success-color: #28a745; –background-color: #f8f9fa; –text-color: #333; –border-color: #ddd; –card-background: #fff; –shadow: 0 2px 4px rgba(0,0,0,.1); } body { font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; background-color: var(–background-color); color: var(–text-color); line-height: 1.6; margin: 0; padding: 20px; display: flex; justify-content: center; } .container { max-width: 1000px; width: 100%; background-color: var(–card-background); padding: 30px; border-radius: 8px; box-shadow: var(–shadow); margin: 0 auto; } h1, h2, h3 { color: var(–primary-color); text-align: center; margin-bottom: 20px; } h1 { font-size: 2.2em; } h2 { font-size: 1.8em; margin-top: 40px; border-bottom: 2px solid var(–primary-color); padding-bottom: 10px; } h3 { font-size: 1.4em; margin-top: 30px; } .loan-calc-container { background-color: var(–card-background); padding: 25px; border-radius: 8px; box-shadow: var(–shadow); margin-bottom: 30px; } .input-group { margin-bottom: 20px; text-align: left; } .input-group label { display: block; margin-bottom: 8px; font-weight: bold; color: var(–primary-color); } .input-group input[type="number"], .input-group input[type="text"], .input-group select { width: calc(100% – 22px); padding: 10px; border: 1px solid var(–border-color); border-radius: 4px; font-size: 1em; box-sizing: border-box; } .input-group .helper-text { font-size: 0.85em; color: #666; margin-top: 5px; display: block; } .error-message { color: red; font-size: 0.8em; margin-top: 5px; display: none; /* Hidden by default */ } .button-group { display: flex; justify-content: space-between; margin-top: 25px; gap: 10px; } button { padding: 12px 20px; border: none; border-radius: 4px; cursor: pointer; font-size: 1em; font-weight: bold; transition: background-color 0.3s ease; } button.primary { background-color: var(–primary-color); color: white; } button.primary:hover { background-color: #003366; } button.secondary { background-color: #6c757d; color: white; } button.secondary:hover { background-color: #5a6268; } button.reset { background-color: #ffc107; color: #212529; } button.reset:hover { background-color: #e0a800; } #results { margin-top: 30px; padding: 25px; background-color: var(–primary-color); color: white; border-radius: 8px; text-align: center; box-shadow: var(–shadow); } #results h3 { color: white; margin-bottom: 15px; } .result-item { margin-bottom: 10px; font-size: 1.1em; } .result-item strong { display: inline-block; min-width: 200px; text-align: right; margin-right: 10px; } .primary-result { font-size: 1.8em; font-weight: bold; margin-top: 15px; padding: 15px; background-color: var(–success-color); border-radius: 4px; } .formula-explanation { font-size: 0.9em; color: #eee; margin-top: 20px; padding-top: 15px; border-top: 1px solid rgba(255, 255, 255, 0.3); } table { width: 100%; border-collapse: collapse; margin-top: 20px; margin-bottom: 30px; box-shadow: var(–shadow); } th, td { padding: 12px; text-align: left; border: 1px solid var(–border-color); } thead { background-color: var(–primary-color); color: white; } tbody tr:nth-child(even) { background-color: #f2f2f2; } caption { font-size: 1.1em; font-weight: bold; color: var(–primary-color); margin-bottom: 10px; caption-side: top; text-align: left; } canvas { display: block; margin: 20px auto; max-width: 100%; background-color: var(–card-background); border-radius: 4px; box-shadow: var(–shadow); } .article-content { margin-top: 40px; background-color: var(–card-background); padding: 30px; border-radius: 8px; box-shadow: var(–shadow); } .article-content h2, .article-content h3 { text-align: left; margin-top: 30px; } .article-content p, .article-content ul, .article-content ol { margin-bottom: 15px; } .article-content ul, .article-content ol { padding-left: 25px; } .article-content li { margin-bottom: 8px; } .faq-item { margin-bottom: 15px; padding: 10px; border-left: 3px solid var(–primary-color); background-color: #fdfdfd; } .faq-item strong { display: block; color: var(–primary-color); margin-bottom: 5px; } .internal-links { margin-top: 30px; padding: 20px; background-color: #e9ecef; border-radius: 4px; } .internal-links h3 { text-align: left; margin-top: 0; margin-bottom: 15px; } .internal-links ul { list-style: none; padding: 0; margin: 0; } .internal-links li { margin-bottom: 10px; } .internal-links a { color: var(–primary-color); text-decoration: none; font-weight: bold; } .internal-links a:hover { text-decoration: underline; } .internal-links p { font-size: 0.9em; color: #555; margin-top: 5px; } .highlight { background-color: var(–success-color); color: white; padding: 2px 5px; border-radius: 3px; } .formula-variable-table th, .formula-variable-table td { border: 1px solid #ccc; } .formula-variable-table th { background-color: #e9ecef; color: var(–text-color); }

Florida Probate Attorney Fee Calculator

Estimate potential attorney fees for probate proceedings in Florida. This tool provides an approximation based on statutory guidelines and common practices.

Probate Fee Estimator

Enter the total value of the deceased's assets before debts and expenses.
Standard (Simple Estate) Moderate (Some Complications) Complex (Extensive Assets/Disputes) Select the general complexity of the probate process.
If known, enter the attorney's hourly rate. Leave blank if relying solely on statutory fees.
Enter the estimated number of hours the attorney will work if using an hourly rate.

Estimated Attorney Fees

Statutory Fee Estimate:
Hourly Fee Estimate:
Complexity Adjustment:
Estimated Total Fee:
Formula Used: Statutory fees in Florida are typically a percentage of the gross estate value. For estates over $1 million, the percentages decrease. Complexity and hourly rates can adjust this. This calculator uses Florida Statute 733.6171 as a baseline and applies adjustments.

Fee Breakdown Table

Florida Probate Fee Structure (Statutory Baseline)
Gross Estate Value Bracket Percentage Fee Example Fee
First $100,000 3% $–
Next $100,000 (up to $200,000) 2.5% $–
Next $700,000 (up to $1,000,000) 2% $–
Over $1,000,000 1.5% $–

Fee Distribution Chart

This chart visualizes the statutory fee percentages across different estate value brackets.

Understanding Florida Probate Attorney Fees

What is a Florida Probate Attorney Fee Calculator?

A Florida probate attorney fee calculator is an online tool designed to provide an estimated cost for legal representation during the probate process in Florida. Probate is the legal process of administering a deceased person's estate, which involves validating their will (if one exists), identifying and inventorying assets, paying debts and taxes, and distributing the remaining assets to beneficiaries. Attorney fees are a significant component of these costs. This calculator helps individuals, executors, and beneficiaries get a preliminary understanding of potential legal expenses, which can vary based on the estate's value, complexity, and the attorney's fee structure.

Who should use it: Anyone involved in a Florida probate case, including personal representatives (executors), beneficiaries, heirs, and individuals planning their own estates who want to understand potential future costs. It's particularly useful for those unfamiliar with the probate process and its associated expenses.

Common misconceptions: A frequent misconception is that attorney fees are fixed or solely determined by the estate's gross value. While Florida Statutes provide a framework for statutory fees based on estate value, actual fees can be higher or lower due to factors like estate complexity, litigation, the attorney's hourly rate, and negotiated agreements. Another misconception is that probate is always expensive and lengthy; simpler estates can sometimes be resolved more efficiently and cost-effectively.

Florida Probate Attorney Fee Calculator Formula and Mathematical Explanation

The calculation of Florida probate attorney fees involves several components, primarily guided by Florida Statute 733.6171, which outlines "reasonable compensation" for personal representatives and attorneys. While the statute provides guidelines, actual fees can be negotiated or determined by the court.

Step-by-step derivation:

  1. Determine Gross Estate Value: This is the starting point – the total value of all assets owned by the deceased at the time of death, before deducting debts, expenses, or taxes.
  2. Calculate Statutory Fee Baseline: Florida Statute 733.6171 provides a tiered percentage structure for reasonable attorney fees based on the gross estate value:
    • 3% on the first $100,000
    • 2.5% on the next $100,000 (up to $200,000)
    • 2% on the next $700,000 (up to $1,000,000)
    • 1.5% on the amount over $1,000,000
    The calculator sums these percentages based on the provided estate value to get a baseline statutory fee.
  3. Apply Complexity Adjustment: The statute allows for adjustments based on the complexity of the estate. This calculator uses a multiplier (e.g., 1.0 for standard, 1.2 for moderate, 1.5 for complex) applied to the statutory baseline to reflect potential increases in attorney time and effort.
  4. Calculate Hourly Fee (If Applicable): If an hourly rate and estimated hours are provided, the calculator computes a separate hourly fee estimate (Hourly Rate * Estimated Hours).
  5. Determine Final Estimated Fee: The calculator presents both the adjusted statutory fee and the hourly fee estimate. The final estimated total fee often defaults to the higher of the two, or a negotiated amount, but for simplicity, this calculator shows the adjusted statutory fee as the primary output, with the hourly estimate as a comparison. The "Total Fee" displayed is the adjusted statutory fee.

Variable Explanations:

Variable Meaning Unit Typical Range
Gross Estate Value Total value of assets owned by the deceased. USD ($) $50,000 – $10,000,000+
Complexity Factor Multiplier reflecting the difficulty of the probate case. Multiplier (e.g., 1.0, 1.2, 1.5) 1.0 – 2.0+
Statutory Fee Baseline Calculated fee based on Florida Statute 733.6171 percentages. USD ($) Varies with estate value
Adjusted Statutory Fee Statutory Fee Baseline * Complexity Factor. USD ($) Varies
Attorney's Hourly Rate The rate charged by the attorney per hour of work. USD ($) per hour $250 – $600+
Estimated Hours The projected number of hours the attorney will spend on the case. Hours 10 – 100+
Hourly Fee Estimate Attorney's Hourly Rate * Estimated Hours. USD ($) Varies
Estimated Total Fee The primary output, typically the Adjusted Statutory Fee. USD ($) Varies

Practical Examples (Real-World Use Cases)

Let's explore how the Florida probate attorney fee calculator works with realistic scenarios:

Example 1: Standard Estate

Scenario: Sarah passes away, leaving a home valued at $400,000, a savings account with $50,000, and personal property worth $10,000. Her will is straightforward, naming her son, Mark, as the executor. The estate is considered standard complexity.

Inputs:

  • Gross Estate Value: $460,000
  • Probate Complexity: Standard (Factor: 1.0)
  • Attorney's Hourly Rate: (Blank – relying on statutory fees)
  • Estimated Hours: (Blank)

Calculation Breakdown:

  • First $100,000 @ 3% = $3,000
  • Next $100,000 (up to $200,000) @ 2.5% = $2,500
  • Next $260,000 (up to $460,000) @ 2% = $5,200
  • Statutory Fee Baseline = $3,000 + $2,500 + $5,200 = $10,700
  • Complexity Adjustment (Standard = 1.0) = $10,700 * 1.0 = $10,700
  • Hourly Fee Estimate: N/A

Outputs:

  • Statutory Fee Estimate: $10,700
  • Hourly Fee Estimate: —
  • Complexity Adjustment: $10,700
  • Estimated Total Fee: $10,700

Interpretation: For a standard probate case with a gross estate value of $460,000, the estimated attorney fee based on Florida statutes is approximately $10,700. This provides Mark with a clear budget expectation for legal costs.

Example 2: Complex Estate with Hourly Consideration

Scenario: David dies owning multiple properties, a large investment portfolio, and several business interests. His estate is valued at $1,500,000. There are potential disputes among beneficiaries regarding asset valuation and distribution, making the probate complex. David's attorney typically charges $400 per hour and estimates 30 hours of work.

Inputs:

  • Gross Estate Value: $1,500,000
  • Probate Complexity: Complex (Factor: 1.5)
  • Attorney's Hourly Rate: $400
  • Estimated Hours: 30

Calculation Breakdown:

  • First $100,000 @ 3% = $3,000
  • Next $100,000 @ 2.5% = $2,500
  • Next $700,000 @ 2% = $14,000
  • Remaining $600,000 ($1.5M – $1M) @ 1.5% = $9,000
  • Statutory Fee Baseline = $3,000 + $2,500 + $14,000 + $9,000 = $28,500
  • Complexity Adjustment (Complex = 1.5) = $28,500 * 1.5 = $42,750
  • Hourly Fee Estimate = $400/hour * 30 hours = $12,000

Outputs:

  • Statutory Fee Estimate: $42,750
  • Hourly Fee Estimate: $12,000
  • Complexity Adjustment: $42,750
  • Estimated Total Fee: $42,750

Interpretation: In this complex case, the adjusted statutory fee ($42,750) is significantly higher than the initial hourly estimate ($12,000). This highlights how complexity can drive up costs beyond a simple hourly projection. The attorney and executor would likely discuss which fee structure is most appropriate, potentially agreeing on a flat fee or a hybrid approach. The calculator's primary output ($42,750) reflects the statutory guideline adjusted for complexity, serving as a key reference point.

How to Use This Florida Probate Attorney Fee Calculator

Using the Florida probate attorney fee calculator is straightforward. Follow these steps to get your estimated fee:

  1. Enter Gross Estate Value: Input the total value of all assets the deceased person owned at the time of their death. This includes real estate, bank accounts, investments, vehicles, and personal property. Do not subtract debts or expenses at this stage.
  2. Select Probate Complexity: Choose the option that best describes the estate's situation: 'Standard' for simple estates with clear assets and beneficiaries, 'Moderate' for estates with some complications like multiple properties or a few beneficiaries, or 'Complex' for estates involving significant assets, potential disputes, business interests, or intricate tax issues.
  3. Input Optional Hourly Rate and Hours: If you know the attorney's hourly rate and have an estimate of the hours they expect to work, enter these values. This provides an alternative fee calculation for comparison. If you are primarily relying on statutory fees, leave these fields blank.
  4. Click 'Calculate Fees': The calculator will instantly process your inputs and display the estimated statutory fee, the hourly fee estimate (if applicable), and the primary estimated total fee.
  5. Review Results: Examine the 'Estimated Total Fee', which is based on the statutory guidelines adjusted for complexity. Compare this with the 'Hourly Fee Estimate' if provided. The statutory fee often serves as a benchmark, especially in less contentious cases.
  6. Use the 'Reset' Button: If you need to start over or adjust your inputs, click 'Reset' to return the fields to their default values.
  7. Copy Results: Use the 'Copy Results' button to save the calculated figures and key assumptions for your records or to share with others involved in the probate process.

Decision-Making Guidance: The results from this calculator are estimates. They provide a valuable starting point for discussions with a Florida probate attorney. Remember that actual fees can vary. Consider the attorney's experience, the specific needs of the estate, and whether the fee structure is hourly, fixed, or contingency-based. Always seek a written fee agreement.

Key Factors That Affect Florida Probate Attorney Fees

While the Florida probate attorney fee calculator provides a baseline, several critical factors can influence the final attorney fees:

  1. Gross Estate Value: As seen in the statutory guidelines, larger estates generally incur higher fees due to the increased value of assets being managed and distributed. The tiered percentage system reflects this.
  2. Complexity of Assets: Estates with diverse and complex assets (e.g., businesses, international property, unique collectibles, cryptocurrency) require more specialized knowledge and time to value, manage, and distribute, increasing fees.
  3. Probate Litigation: If the will is contested, beneficiaries dispute asset valuations, or creditor claims arise, the need for litigation significantly increases attorney time and complexity, often leading to higher fees than initially estimated.
  4. Number of Beneficiaries and Heirs: A large number of beneficiaries can complicate communication, distribution, and require more administrative effort, potentially increasing fees.
  5. Attorney's Fee Structure: Attorneys may charge hourly rates, a flat fee, or, in some specific cases (though less common in standard probate), a contingency fee. The calculator primarily uses statutory guidelines but also allows for hourly rate input for comparison.
  6. Attorney's Experience and Reputation: Highly experienced attorneys or those with specialized expertise in complex probate matters may command higher fees, reflecting their skill and success rate.
  7. Location within Florida: Attorney rates can vary geographically within Florida, with fees potentially being higher in major metropolitan areas compared to smaller towns.
  8. Ancillary Probate: If the deceased owned property in multiple states, additional ancillary probate proceedings will be necessary, increasing the overall legal work and costs.

Frequently Asked Questions (FAQ)

Q1: Are attorney fees in Florida probate always based on the percentages in the statute?

A1: Not necessarily. Florida Statute 733.6171 provides guidelines for "reasonable compensation," often based on these percentages. However, attorneys and personal representatives can agree on different fee arrangements (hourly, flat fee). The court must approve fees, ensuring they are reasonable for the services rendered.

Q2: Can beneficiaries negotiate attorney fees?

A2: Beneficiaries can raise concerns about fees with the personal representative or the court. While direct negotiation might be limited, they have the right to question the reasonableness of fees requested by the personal representative's attorney. Open communication and a clear fee agreement are crucial.

Q3: Does the calculator account for all probate costs?

A3: No, this calculator specifically estimates attorney fees. Probate involves other costs like court filing fees, appraisal fees, publication costs, and potential accounting fees. These are separate from attorney fees.

Q4: What if the estate has significant debts? Do they affect attorney fees?

A4: Attorney fees are typically calculated based on the *gross* estate value, not the net value after debts. However, if managing and settling numerous complex debts requires substantial attorney effort, it could be considered under the "complexity" factor, potentially influencing the final fee.

Q5: How is the "Gross Estate Value" determined for the calculator?

A5: It includes all assets owned solely by the deceased at the time of death. This typically includes real estate, bank accounts, stocks, bonds, vehicles, retirement accounts (if payable to the estate), life insurance proceeds payable to the estate, and personal property. Assets with beneficiary designations or payable-on-death (POD) instructions that go directly to a named beneficiary are generally not part of the probate estate.

Q6: Can an attorney charge both statutory fees and hourly fees?

A6: Generally, an attorney will choose one primary method of compensation. Charging both statutory fees based on estate value *and* hourly fees for the same work would typically be considered unreasonable unless specifically agreed upon and justified by extraordinary circumstances, and approved by the court. The calculator shows them as separate estimates for comparison.

Q7: What happens if the estate cannot afford attorney fees?

A7: In Florida, if an estate is insolvent (has more debts than assets), the court may appoint a Public Administrator or require the personal representative to advance funds for necessary probate costs, including attorney fees. In some limited circumstances, like indigent defense in criminal cases, the court may appoint counsel, but this is rare in standard civil probate matters.

Q8: How long does probate typically take in Florida?

A8: A simple Florida probate can sometimes be completed in 6-9 months. However, more complex estates, especially those involving litigation or significant assets like businesses or real estate, can take a year or much longer. Attorney fees are often influenced by the duration and complexity.

Related Tools and Internal Resources

Disclaimer: This calculator provides an estimate for informational purposes only and does not constitute legal advice. Actual attorney fees may vary. Consult with a qualified Florida probate attorney for advice specific to your situation.

var estateValueInput = document.getElementById('estateValue'); var complexityInput = document.getElementById('complexity'); var hourlyRateInput = document.getElementById('hourlyRate'); var estimatedHoursInput = document.getElementById('estimatedHours'); var statutoryFeeSpan = document.getElementById('statutoryFee'); var hourlyFeeSpan = document.getElementById('hourlyFee'); var complexityAdjustmentSpan = document.getElementById('complexityAdjustment'); var totalFeeSpan = document.getElementById('totalFee'); var tableFee1Span = document.getElementById('tableFee1'); var tableFee2Span = document.getElementById('tableFee2'); var tableFee3Span = document.getElementById('tableFee3'); var tableFee4Span = document.getElementById('tableFee4'); var estateValueErrorSpan = document.getElementById('estateValueError'); var complexityErrorSpan = document.getElementById('complexityError'); var hourlyRateErrorSpan = document.getElementById('hourlyRateError'); var estimatedHoursErrorSpan = document.getElementById('estimatedHoursError'); var feeChart; var chartContext; function formatCurrency(amount) { if (isNaN(amount) || amount === null) return "–"; return "$" + amount.toFixed(2).replace(/\d(?=(\d{3})+\.)/g, '$&,'); } function formatNumber(num) { if (isNaN(num) || num === null) return "–"; return num.toFixed(2); } function validateInput(inputElement, errorElement, minValue, maxValue) { var value = parseFloat(inputElement.value); var isValid = true; errorElement.style.display = 'none'; inputElement.style.borderColor = '#ccc'; if (inputElement.value === "") { errorElement.textContent = "This field is required."; errorElement.style.display = 'block'; inputElement.style.borderColor = 'red'; isValid = false; } else if (isNaN(value)) { errorElement.textContent = "Please enter a valid number."; errorElement.style.display = 'block'; inputElement.style.borderColor = 'red'; isValid = false; } else { if (minValue !== undefined && value maxValue) { errorElement.textContent = "Value exceeds maximum limit."; errorElement.style.display = 'block'; inputElement.style.borderColor = 'red'; isValid = false; } } return isValid; } function calculateFees() { var estateValue = parseFloat(estateValueInput.value); var complexity = complexityInput.value; var hourlyRate = parseFloat(hourlyRateInput.value); var estimatedHours = parseFloat(estimatedHoursInput.value); var isValidEstate = validateInput(estateValueInput, estateValueErrorSpan, 0); var isValidHourly = hourlyRateInput.value === "" || validateInput(hourlyRateInput, hourlyRateErrorSpan, 0); var isValidHours = estimatedHoursInput.value === "" || validateInput(estimatedHoursInput, estimatedHoursErrorSpan, 0); if (!isValidEstate || !isValidHourly || !isValidHours) { return; } var complexityFactor = 1.0; if (complexity === "moderate") { complexityFactor = 1.2; } else if (complexity === "complex") { complexityFactor = 1.5; } var statutoryFeeBaseline = 0; var estateValueForCalc = estateValue; if (estateValueForCalc <= 100000) { statutoryFeeBaseline = estateValueForCalc * 0.03; } else if (estateValueForCalc <= 200000) { statutoryFeeBaseline = (100000 * 0.03) + ((estateValueForCalc – 100000) * 0.025); } else if (estateValueForCalc 0 ? formatCurrency(hourlyFeeEstimate) : "–"; totalFeeSpan.textContent = formatCurrency(totalFee); updateTable(estateValue); updateChart(estateValue); } function updateTable(estateValue) { var bracket1 = Math.min(estateValue, 100000); var bracket2 = Math.max(0, Math.min(estateValue, 200000) – 100000); var bracket3 = Math.max(0, Math.min(estateValue, 1000000) – 200000); var bracket4 = Math.max(0, estateValue – 1000000); tableFee1Span.textContent = formatCurrency(bracket1 * 0.03); tableFee2Span.textContent = formatCurrency(bracket2 * 0.025); tableFee3Span.textContent = formatCurrency(bracket3 * 0.02); tableFee4Span.textContent = formatCurrency(bracket4 * 0.015); } function updateChart(estateValue) { if (!chartContext) { var canvas = document.getElementById('feeChart'); chartContext = canvas.getContext('2d'); } var dataPoints = [ { value: 100000, percentage: 0.03, label: "0-100k" }, { value: 200000, percentage: 0.025, label: "100k-200k" }, { value: 1000000, percentage: 0.02, label: "200k-1M" }, { value: estateValue > 1000000 ? estateValue : 1000000, percentage: 0.015, label: ">1M" } ]; var chartData = { labels: dataPoints.map(dp => dp.label), datasets: [{ label: 'Statutory Fee Percentage', data: dataPoints.map(dp => dp.percentage * 100), backgroundColor: 'rgba(0, 74, 153, 0.6)', borderColor: 'rgba(0, 74, 153, 1)', borderWidth: 1 }] }; var chartOptions = { responsive: true, maintainAspectRatio: false, scales: { y: { beginAtZero: true, title: { display: true, text: 'Percentage (%)' } } }, plugins: { legend: { position: 'top', }, title: { display: true, text: 'Statutory Fee Percentage by Estate Value Bracket' } } }; if (feeChart) { feeChart.destroy(); } // Basic chart implementation using Canvas API directly for simplicity and no external libs // This is a simplified representation. A full chart requires more complex drawing logic. // For a true dynamic chart without libraries, SVG might be more manageable or a simplified canvas drawing. // Given the constraints, we'll simulate a basic bar chart representation. // Clear previous drawing chartContext.clearRect(0, 0, canvas.width, canvas.height); var canvasWidth = canvas.clientWidth; var canvasHeight = canvas.clientHeight; var barWidth = (canvasWidth * 0.8) / dataPoints.length; var chartAreaHeight = canvasHeight * 0.7; var yAxisMax = Math.max(…chartData.datasets[0].data) * 1.1; // Find max percentage for scale var padding = canvasWidth * 0.1; // Draw Y-axis and labels chartContext.strokeStyle = '#ccc'; chartContext.lineWidth = 1; chartContext.beginPath(); chartContext.moveTo(padding, canvasHeight * 0.1); chartContext.lineTo(padding, canvasHeight * 0.8); chartContext.stroke(); chartContext.fillStyle = '#333′; chartContext.font = '10px Arial'; chartContext.textAlign = 'right'; chartContext.fillText(yAxisMax.toFixed(1) + '%', padding – 5, canvasHeight * 0.15); chartContext.fillText((yAxisMax/2).toFixed(1) + '%', padding – 5, canvasHeight * 0.45); chartContext.fillText('0%', padding – 5, canvasHeight * 0.8); // Draw bars var xOffset = padding + barWidth / 2; chartData.datasets[0].data.forEach((value, index) => { var barHeight = (value / yAxisMax) * chartAreaHeight; var barX = padding + index * barWidth; var barY = canvasHeight * 0.8 – barHeight; chartContext.fillStyle = chartData.datasets[0].backgroundColor; chartContext.fillRect(barX, barY, barWidth * 0.8, barHeight); // Draw labels below bars chartContext.fillStyle = '#333'; chartContext.textAlign = 'center'; chartContext.font = '10px Arial'; chartContext.fillText(chartData.labels[index], barX + barWidth * 0.4, canvasHeight * 0.85); // Draw percentage above bars chartContext.fillText(value.toFixed(1) + '%', barX + barWidth * 0.4, barY – 5); }); } function resetForm() { estateValueInput.value = "500000"; complexityInput.value = "standard"; hourlyRateInput.value = ""; estimatedHoursInput.value = ""; statutoryFeeSpan.textContent = "–"; hourlyFeeSpan.textContent = "–"; complexityAdjustmentSpan.textContent = "–"; totalFeeSpan.textContent = "–"; tableFee1Span.textContent = "$–"; tableFee2Span.textContent = "$–"; tableFee3Span.textContent = "$–"; tableFee4Span.textContent = "$–"; estateValueErrorSpan.style.display = 'none'; hourlyRateErrorSpan.style.display = 'none'; estimatedHoursErrorSpan.style.display = 'none'; estateValueInput.style.borderColor = '#ccc'; hourlyRateInput.style.borderColor = '#ccc'; estimatedHoursInput.style.borderColor = '#ccc'; if (chartContext) { chartContext.clearRect(0, 0, document.getElementById('feeChart').width, document.getElementById('feeChart').height); } // Initial calculation after reset calculateFees(); } function copyResults() { var statutoryFee = statutoryFeeSpan.textContent; var hourlyFee = hourlyFeeSpan.textContent; var complexityAdj = complexityAdjustmentSpan.textContent; var totalFee = totalFeeSpan.textContent; var estateValue = estateValueInput.value; var complexity = complexityInput.options[complexityInput.selectedIndex].text; var hourlyRate = hourlyRateInput.value || "N/A"; var estimatedHours = estimatedHoursInput.value || "N/A"; var assumptions = "Key Assumptions:\n" + "- Gross Estate Value: " + formatCurrency(parseFloat(estateValue)) + "\n" + "- Complexity: " + complexity + "\n" + "- Attorney Hourly Rate: " + (hourlyRate !== "N/A" ? formatCurrency(parseFloat(hourlyRate)) : "N/A") + "\n" + "- Estimated Hours: " + estimatedHours + "\n"; var resultsText = "— Florida Probate Attorney Fee Estimate —\n\n" + "Statutory Fee Estimate: " + statutoryFee + "\n" + "Hourly Fee Estimate: " + hourlyFee + "\n" + "Complexity Adjustment: " + complexityAdj + "\n" + "Estimated Total Fee: " + totalFee + "\n\n" + assumptions; // Use a temporary textarea to copy text var textArea = document.createElement("textarea"); textArea.value = resultsText; textArea.style.position = "fixed"; textArea.style.left = "-9999px"; document.body.appendChild(textArea); textArea.focus(); textArea.select(); try { var successful = document.execCommand('copy'); var msg = successful ? 'Results copied to clipboard!' : 'Failed to copy results.'; // Optionally display a temporary message to the user console.log(msg); } catch (err) { console.log('Oops, unable to copy'); } document.body.removeChild(textArea); } // Initial calculation and chart setup on page load window.onload = function() { resetForm(); // Set defaults and calculate var canvas = document.getElementById('feeChart'); canvas.width = canvas.clientWidth; // Set canvas size based on container canvas.height = 300; // Fixed height for the chart chartContext = canvas.getContext('2d'); updateChart(parseFloat(estateValueInput.value)); // Initial chart draw }; // Recalculate on input change estateValueInput.addEventListener('input', calculateFees); complexityInput.addEventListener('change', calculateFees); hourlyRateInput.addEventListener('input', calculateFees); estimatedHoursInput.addEventListener('input', calculateFees);

Leave a Comment