Transform Your Property Into An Energy Asset

From Luxury Hotels to Residential Homes

Versatile Implementation

Proven success across all property types

Luxury Hotel Integration

Premium Hotel Solutions

Power Generating Roofs

Commercial Estate Development

Property Development Solutions

Power Generating Roofs

Residential & Private Property Development

Single Home

Residential Development

Calculate Your Solar Investment Returns

See your potential savings and ROI

Your ISRS Investment Analysis

Based on your input parameters

Initial Investment

Calculate to see results

Total installation cost

Annual Savings

Calculate to see results

Yearly energy cost reduction

Payback Period

Calculate to see results

Time to return on investment

25-Year ROI

Calculate to see results

Long-term return percentage

Annual Energy Generation

Calculate to see results

Yearly power production

These calculations are estimates based on current market rates and typical solar performance in your region

Initial Investment

Calculate to see results

Annual Savings

Calculate to see results

Payback Period

Calculate to see results

25-Year ROI

Calculate to see results

Annual Energy Generation

Calculate to see results

// Add ARIA labels and keyboard support document.addEventListener('DOMContentLoaded', function() { const backToTop = document.getElementById('back-to-top'); // Add ARIA label backToTop.setAttribute('aria-label', 'Scroll to top of page'); backToTop.setAttribute('role', 'button'); // Add keyboard support backToTop.addEventListener('keypress', function(e) { if (e.key === 'Enter') { e.preventDefault(); window.scrollTo({ top: 0, behavior: 'smooth' }); } }); }); // Throttle scroll event for better performance function throttle(func, limit) { let inThrottle; return function() { const args = arguments; const context = this; if (!inThrottle) { func.apply(context, args); inThrottle = true; setTimeout(() => inThrottle = false, limit); } } } window.addEventListener('scroll', throttle(function() { // Scroll handler code here }, 100)); document.addEventListener('DOMContentLoaded', function() { const calculatorForm = document.querySelector('.melanized-calculator-form'); if (!calculatorForm) return; calculatorForm.addEventListener('submit', function(e) { e.preventDefault(); const formData = { roofArea: parseFloat(document.getElementById('roof-area').value), energyUsage: parseFloat(document.getElementById('energy-usage').value), electricityRate: parseFloat(document.getElementById('electricity-rate').value), propertyType: document.getElementById('property-type').value }; calculateROI(formData); }); }); function calculateROI(data) { const propertyEfficiency = { hotel: 0.95, commercial: 0.90, residential: 0.85 }; const efficiency = propertyEfficiency[data.propertyType]; const results = { installationCost: data.roofArea * 150, annualGeneration: data.roofArea * 0.15 * efficiency * 1000, annualSavings: (data.roofArea * 0.15 * efficiency * 1000) * data.electricityRate, paybackPeriod: (data.roofArea * 150) / ((data.roofArea * 0.15 * efficiency * 1000) * data.electricityRate), roi25Year: (((data.roofArea * 0.15 * efficiency * 1000) * data.electricityRate * 25) - (data.roofArea * 150)) / (data.roofArea * 150) * 100 }; displayResults(results); } function displayResults(results) { const elements = { 'investment-amount': `£${Math.round(results.installationCost).toLocaleString()}`, 'annual-savings': `£${Math.round(results.annualSavings).toLocaleString()}`, 'payback-period': `${results.paybackPeriod.toFixed(1)} years`, 'total-roi': `${results.roi25Year.toFixed(1)}%`, 'energy-generation': `${Math.round(results.annualGeneration).toLocaleString()} kWh` }; for (const [id, value] of Object.entries(elements)) { const element = document.getElementById(id); if (element) { element.textContent = value; } } } document.addEventListener('DOMContentLoaded', function() { // Check if we're on the calculator page if (document.querySelector('.melanized-calculator-page')) { // Initialize calculator functionality initializeCalculator(); } }); function initializeCalculator() { // Updated selectors to target separate sections const calculatorForm = document.querySelector('.melanized-calculator-form'); const resultsSection = document.querySelector('.melanized-calculator-results'); // Now targeting the separate section if (!calculatorForm || !resultsSection) { console.log('Calculator or results elements not found'); return; } calculatorForm.addEventListener('submit', function(e) { e.preventDefault(); // Show loading state const submitButton = calculatorForm.querySelector('button[type="submit"]'); submitButton.textContent = 'Calculating...'; submitButton.disabled = true; const formData = { roofArea: parseFloat(calculatorForm.querySelector('#roof-area').value), energyUsage: parseFloat(calculatorForm.querySelector('#energy-usage').value), electricityRate: parseFloat(calculatorForm.querySelector('#electricity-rate').value), propertyType: calculatorForm.querySelector('#property-type').value }; if (!validateInputs(formData)) { submitButton.textContent = 'Calculate ROI'; submitButton.disabled = false; return; } const results = calculateROI(formData); // Now passing the separate results section displayResults(results, resultsSection); submitButton.textContent = 'Calculate ROI'; submitButton.disabled = false; }); } function displayResults(results, resultsSection) { // No need to handle display:none since section is always visible const elements = { 'investment-amount': `£${Math.round(results.installationCost).toLocaleString()}`, 'annual-savings': `£${Math.round(results.annualSavings).toLocaleString()}`, 'payback-period': `${results.paybackPeriod.toFixed(1)} years`, 'total-roi': `${results.roi25Year.toFixed(1)}%`, 'energy-generation': `${Math.round(results.annualGeneration).toLocaleString()} kWh` }; // Update each result in the separate section for (const [id, value] of Object.entries(elements)) { const element = resultsSection.querySelector(`#${id}`); if (element) { element.style.opacity = '0'; element.textContent = value; fadeIn(element); } } } document.addEventListener('DOMContentLoaded', function() { // Check if the 'back-to-top' button already exists, if not, create it if (!document.getElementById('back-to-top')) { const button = document.createElement('button'); button.id = 'back-to-top'; button.innerHTML = '↑'; button.setAttribute('aria-label', 'Scroll to top of page'); button.setAttribute('role', 'button'); document.body.appendChild(button); } const backToTopButton = document.getElementById('back-to-top'); // Show/hide button based on scroll position function toggleBackToTopButton() { if (window.pageYOffset >e 300) { backToTopButton.classList.add('visible'); } else { backToTopButton.classList.remove('visible'); } } // Throttle scroll event for better performance let isScrolling = false; window.addEventListener('scroll', function() { if (!isScrolling) { window.requestAnimationFrame(function() { toggleBackToTopButton(); isScrolling = false; }); isScrolling = true; } }); // Smooth scroll to top backToTopButton.addEventListener('click', function(e) { e.preventDefault(); window.scrollTo({ top: 0, behavior: 'smooth' }); }); // Add keyboard support for 'Enter' key to trigger scroll to top backToTopButton.addEventListener('keypress', function(e) { if (e.key === 'Enter') { e.preventDefault(); window.scrollTo({ top: 0, behavior: 'smooth' }); } }); // ARIA support for accessibility backToTopButton.setAttribute('aria-hidden', 'true'); backToTopButton.addEventListener('focus', function() { backToTopButton.setAttribute('aria-hidden', 'false'); }); backToTopButton.addEventListener('blur', function() { backToTopButton.setAttribute('aria-hidden', 'true'); }); });