- Deprecated function: implode(): Passing glue string after array is deprecated. Swap the parameters in element_gva_column->render_content() (line 462 of themes/gavias_kunco/gva_content_builder/gva_column.php).
element_gva_column->render_content(Array, '
The Third Pillar of Islam
Smart Zakat CalculatorAccurate Calculation.. Great Impact
A comprehensive calculator to compute your Zakat according to the latest prices and soundest religious rulings, designed to help you fulfill your duty with precision and confidence.
Today's Nisab (Gold)
85 grams
Equivalent to $6,502.50 based on current gold price
') (Line: 110)
gavias_content_builder_render_element('gva_column', Array, '
The Third Pillar of Islam
Smart Zakat CalculatorAccurate Calculation.. Great Impact
A comprehensive calculator to compute your Zakat according to the latest prices and soundest religious rulings, designed to help you fulfill your duty with precision and confidence.
Today's Nisab (Gold)
85 grams
Equivalent to $6,502.50 based on current gold price
') (Line: 58)
gavias_content_builder_render_el(Array) (Line: 22)
gavias_content_builder_frontend('[{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","padding_top":"0","padding_bottom":"0","margin_top":"0","margin_bottom":"0","layout":"container-fw","class":"aboutus"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"content":"\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n The Third Pillar of Islam\r\n Smart Zakat CalculatorAccurate Calculation.. Great Impact\r\n \r\n \r\n A comprehensive calculator to compute your Zakat according to the latest prices and soundest religious rulings, designed to help you fulfill your duty with precision and confidence.\r\n \r\n \r\n \r\n \r\n \r\n Today's Nisab (Gold)\r\n 85 grams\r\n \r\n \r\n \r\n \r\n Equivalent to $6,502.50 based on current gold price\r\n \r\n \r\n \r\n \r\n ","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"},{"settings":{"element":"gva_column","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","class":"zakatt"},"col_lg":12,"elements":[{"settings":{"content":"\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n Cash & Deposits\r\n \r\n \r\n \r\n Gold & Silver\r\n \r\n \r\n \r\n Stocks & Trade\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n Cash & Bank Deposits\r\n \r\n \r\n \r\n \r\n Cash on hand\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Bank deposits & balances\r\n \r\n \r\n \r\n \r\n \r\n \r\n Receivables (debts owed to you)\r\n \r\n \r\n \r\n \r\n Debts you expect to recover\r\n \r\n \r\n Payables (debts you owe)\r\n \r\n \r\n \r\n \r\n Deducted from total wealth\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n Gold, Silver & Jewelry\r\n \r\n \r\n \r\n Gold weight (grams)\r\n \r\n \r\n \r\n \r\n Exceeding personal use\r\n \r\n \r\n Gold karat\r\n \r\n \r\n 24 Karat (Pure)\r\n 22 Karat\r\n 21 Karat\r\n 18 Karat\r\n \r\n \r\n \r\n \r\n \r\n Silver weight (grams)\r\n \r\n \r\n \r\n \r\n \r\n \r\n Today's gold price\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Price per gram in USD\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Nisab Calculator\r\n \r\n \r\n \r\n Nisab (Gold)\r\n 85 grams\r\n \r\n \r\n Nisab (Silver)\r\n 595 grams\r\n \r\n \r\n Value in USD\r\n $6,502.50\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n Business & Investment Assets\r\n \r\n \r\n \r\n Current stock value\r\n \r\n \r\n \r\n \r\n \r\n \r\n Trade goods\r\n \r\n \r\n \r\n \r\n Merchandise intended for sale\r\n \r\n \r\n Investment properties\r\n \r\n \r\n \r\n \r\n \r\n \r\n Other assets\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n Choose Your Charity Projects\r\n \r\n You can distribute your Zakat across multiple charity projects as you wish\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Donation Basket\r\n \r\n \r\n No projects added yet\r\n \r\n \r\n \r\n Total allocated amount\r\n 0.00 $\r\n \r\n \r\n Proceed to Donate\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n Conditions for Zakat Obligation\r\n \r\n <ul>\r\n <li>\r\n \r\n Reaching the Nisab (equivalent to 85 grams of 24k gold)\r\n </li>\r\n <li>\r\n \r\n Passage of one lunar year (Hawl) over the wealth\r\n </li>\r\n <li>\r\n \r\n Full ownership and ability to dispose of the wealth\r\n </li>\r\n </ul>\r\n \r\n \r\n \r\n \r\n Wijdan's Trust\r\n \r\n \r\n At Wijdan Charity, we are committed to disbursing Zakat to its eight legitimate channels under the supervision of specialized Sharia committees, ensuring the highest standards of transparency and traceability.\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n Calculation Summary\r\n \r\n\r\n \r\n \r\n Total Zakatable Wealth\r\n 0.00 $\r\n \r\n \r\n Current Nisab\r\n 6,502.50 $\r\n \r\n \r\n\r\n \r\n Obligatory Zakat (2.5%)\r\n 0.00 $\r\n \r\n \r\n Enter amount to verify\r\n \r\n \r\n\r\n \r\n <a>\r\n \r\n Contact us on WhatsApp for consultation and donation\r\n </a>\r\n \r\n\r\n \r\n All calculations are based on global gold prices and the latest Sharia rulings. We recommend consulting scholars for precise jurisprudential matters.\r\n \r\n \r\n \r\n \r\n \r\n Reset\r\n \r\n \r\n Save Calculation\r\n \r\n \r\n \r\n \r\n \r\n \r\n ","animate_delay":"0","el_class":"zakatt"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"},{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"content":"\r\n // Initialize charity projects\r\n const charityProjects = [\r\n {\r\n id: 1,\r\n title: \"Iftar for Fasting Person\",\r\n description: \"Providing Ramadan Iftar meals for needy families\",\r\n icon: \"fa-utensils\",\r\n cost: 500,\r\n selected: false\r\n },\r\n {\r\n id: 2,\r\n title: \"Winter Clothing\",\r\n description: \"Distributing winter clothes for children and needy families\",\r\n icon: \"fa-shirt\",\r\n cost: 300,\r\n selected: false\r\n },\r\n {\r\n id: 3,\r\n title: \"Water Supply\",\r\n description: \"Digging wells and providing clean drinking water\",\r\n icon: \"fa-droplet\",\r\n cost: 1000,\r\n selected: false\r\n },\r\n {\r\n id: 4,\r\n title: \"Orphan Education\",\r\n description: \"Educational support for orphans and school supplies\",\r\n icon: \"fa-graduation-cap\",\r\n cost: 400,\r\n selected: false\r\n },\r\n {\r\n id: 5,\r\n title: \"Patient Treatment\",\r\n description: \"Covering treatment expenses for unable families\",\r\n icon: \"fa-heart-pulse\",\r\n cost: 800,\r\n selected: false\r\n },\r\n {\r\n id: 6,\r\n title: \"Widow Care\",\r\n description: \"Monthly support for widows and their children\",\r\n icon: \"fa-hand-holding-heart\",\r\n cost: 600,\r\n selected: false\r\n }\r\n ];\r\n\r\n // Donation basket\r\n let donationBasket = [];\r\n \r\n // Tab system\r\n function zakatSwitchTab(tab) {\r\n // Update tabs\r\n document.querySelectorAll('.zakat-tab-btn').forEach(btn => btn.classList.remove('active'));\r\n document.querySelectorAll('.zakat-calc-section').forEach(sec => sec.classList.add('zakat-hidden'));\r\n \r\n // Activate selected tab\r\n document.getElementById('zakat-tab-' + tab).classList.add('active');\r\n document.getElementById('zakat-section-' + tab).classList.remove('zakat-hidden');\r\n \r\n // Load charity projects if on charity tab\r\n if (tab === 'charity') {\r\n loadCharityProjects();\r\n }\r\n \r\n // Add animation\r\n const activeSection = document.getElementById('zakat-section-' + tab);\r\n activeSection.classList.add('zakat-fade-in');\r\n }\r\n \r\n // Load charity projects\r\n function loadCharityProjects() {\r\n const container = document.getElementById('charity-projects-container');\r\n container.innerHTML = '';\r\n \r\n charityProjects.forEach(project => {\r\n const projectElement = document.createElement('div');\r\n projectElement.className = `zakat-charity-card ${project.selected ? 'border-brand-secondary' : ''}`;\r\n projectElement.innerHTML = `\r\n \r\n \r\n \r\n ${project.title}\r\n ${project.description}\r\n \r\n ${project.cost.toLocaleString()} $\r\n \r\n ${project.selected ? 'Added' : 'Add'}\r\n \r\n \r\n `;\r\n container.appendChild(projectElement);\r\n });\r\n \r\n updateBasketDisplay();\r\n }\r\n \r\n // Toggle charity project selection\r\n function toggleCharityProject(projectId) {\r\n const project = charityProjects.find(p => p.id === projectId);\r\n project.selected = !project.selected;\r\n \r\n if (project.selected) {\r\n donationBasket.push(project);\r\n } else {\r\n donationBasket = donationBasket.filter(p => p.id !== projectId);\r\n }\r\n \r\n loadCharityProjects();\r\n updateBasketDisplay();\r\n }\r\n \r\n // Update donation basket display\r\n function updateBasketDisplay() {\r\n const container = document.getElementById('donation-basket-items');\r\n const totalElement = document.getElementById('basket-total');\r\n \r\n if (donationBasket.length === 0) {\r\n container.innerHTML = 'No projects added yet';\r\n totalElement.textContent = '0.00 $';\r\n return;\r\n }\r\n \r\n let total = 0;\r\n let itemsHTML = '';\r\n \r\n donationBasket.forEach(project => {\r\n total += project.cost;\r\n itemsHTML += `\r\n \r\n \r\n ${project.title}\r\n ${project.description}\r\n \r\n \r\n ${project.cost.toLocaleString()} $\r\n \r\n \r\n \r\n \r\n \r\n `;\r\n });\r\n \r\n container.innerHTML = itemsHTML;\r\n totalElement.textContent = total.toLocaleString(undefined, { minimumFractionDigits: 2 }) + ' $';\r\n }\r\n \r\n // Remove from basket\r\n function removeFromBasket(projectId) {\r\n const project = charityProjects.find(p => p.id === projectId);\r\n if (project) {\r\n project.selected = false;\r\n }\r\n donationBasket = donationBasket.filter(p => p.id !== projectId);\r\n loadCharityProjects();\r\n }\r\n \r\n // Enhanced Calculation\r\n function zakatCalculate() {\r\n // Money\r\n const cash = parseFloat(document.getElementById('zakat-cash-money').value) || 0;\r\n const bank = parseFloat(document.getElementById('zakat-bank-money').value) || 0;\r\n const debtsToMe = parseFloat(document.getElementById('zakat-debts-to-me').value) || 0;\r\n const debtsFromMe = parseFloat(document.getElementById('zakat-debts-from-me').value) || 0;\r\n \r\n // Gold/Silver\r\n const goldW = parseFloat(document.getElementById('zakat-gold-weight').value) || 0;\r\n const carat = parseFloat(document.getElementById('zakat-gold-carat').value) || 0;\r\n const goldRate = parseFloat(document.getElementById('zakat-gold-rate').value) || 0;\r\n const silverW = parseFloat(document.getElementById('zakat-silver-weight').value) || 0;\r\n const silverRate = 0.95;\r\n \r\n // Stocks & Business\r\n const stocks = parseFloat(document.getElementById('zakat-stocks-value').value) || 0;\r\n const trade = parseFloat(document.getElementById('zakat-trade-goods').value) || 0;\r\n const realEstate = parseFloat(document.getElementById('zakat-real-estate')?.value) || 0;\r\n const otherAssets = parseFloat(document.getElementById('zakat-other-assets')?.value) || 0;\r\n \r\n // Calculations\r\n const gold24Equivalent = goldW * (carat / 24);\r\n const moneyAssets = Math.max(0, (cash + bank + debtsToMe) - debtsFromMe);\r\n const metalAssets = (gold24Equivalent * goldRate) + (silverW * silverRate);\r\n const businessAssets = stocks + trade + realEstate + otherAssets;\r\n const total = Math.max(0, moneyAssets + metalAssets + businessAssets);\r\n \r\n // UI Update - Total\r\n document.getElementById('zakat-total-assets').textContent = \r\n total.toLocaleString(undefined, { minimumFractionDigits: 2 }) + ' $';\r\n \r\n // Nisab Logic (85g Gold 24k)\r\n const nisab = 85 * goldRate;\r\n document.getElementById('zakat-nisab-value').textContent = \r\n nisab.toLocaleString(undefined, { minimumFractionDigits: 2 }) + ' $';\r\n \r\n // Update nisab displays\r\n document.getElementById('nisab-value-display').textContent = \r\n nisab.toLocaleString(undefined, { minimumFractionDigits: 2 }) + ' $';\r\n document.getElementById('current-nisab').textContent = '85 grams';\r\n document.getElementById('nisab-value').textContent = nisab.toLocaleString(undefined, { minimumFractionDigits: 2 }) + ' $';\r\n \r\n // Update progress bar\r\n const nisabProgress = Math.min(100, (total / nisab) * 100);\r\n document.getElementById('nisab-progress').style.width = `${nisabProgress}%`;\r\n \r\n const zakatAmountEl = document.getElementById('zakat-amount');\r\n const statusBadge = document.getElementById('zakat-status-badge');\r\n \r\n if (total >= nisab && total > 0) {\r\n const zakat = total * 0.025;\r\n zakatAmountEl.textContent = zakat.toLocaleString(undefined, { minimumFractionDigits: 2 }) + ' $';\r\n \r\n statusBadge.innerHTML = ' Zakat is obligatory (nisab reached)';\r\n statusBadge.className = \"inline-flex items-center gap-2 px-6 py-3 rounded-full bg-green-500/20 border border-green-500/30 text-green-300 mt-4\";\r\n } else {\r\n zakatAmountEl.textContent = '0.00 $';\r\n \r\n if (total > 0) {\r\n statusBadge.innerHTML = ' Nisab not yet reached';\r\n statusBadge.className = \"inline-flex items-center gap-2 px-6 py-3 rounded-full bg-yellow-500/20 border border-yellow-500/30 text-yellow-300 mt-4\";\r\n } else {\r\n statusBadge.innerHTML = ' Enter amount to verify';\r\n statusBadge.className = \"inline-flex items-center gap-2 px-6 py-3 rounded-full bg-white/10 border border-white/20 text-white mt-4\";\r\n }\r\n }\r\n }\r\n \r\n // Fetch live rates\r\n async function zakatFetchRates() {\r\n const icon = document.getElementById('zakat-refresh-icon');\r\n icon.classList.add('fa-spin');\r\n \r\n // Simulate API call\r\n await new Promise(r => setTimeout(r, 1000));\r\n \r\n // Dynamic change for effect (simulated rate change)\r\n const current = parseFloat(document.getElementById('zakat-gold-rate').value);\r\n const newRate = current + (Math.random() - 0.5);\r\n document.getElementById('zakat-gold-rate').value = newRate.toFixed(2);\r\n \r\n icon.classList.remove('fa-spin');\r\n zakatCalculate();\r\n }\r\n \r\n // Reset form\r\n function zakatResetForm() {\r\n document.querySelectorAll('input[type=\"number\"]').forEach(input => input.value = '');\r\n donationBasket = [];\r\n charityProjects.forEach(p => p.selected = false);\r\n loadCharityProjects();\r\n zakatCalculate();\r\n }\r\n \r\n // Save calculation\r\n function zakatSaveCalculation() {\r\n const total = document.getElementById('zakat-total-assets').textContent;\r\n const zakat = document.getElementById('zakat-amount').textContent;\r\n \r\n alert(`Calculation saved:\\nTotal wealth: ${total}\\nObligatory Zakat: ${zakat}`);\r\n }\r\n \r\n // Checkout\r\n function zakatCheckout() {\r\n const total = donationBasket.reduce((sum, p) => sum + p.cost, 0);\r\n if (total === 0) {\r\n alert('Please add projects to the donation basket first');\r\n return;\r\n }\r\n \r\n alert(`You will be redirected to the payment page to complete your donation of ${total.toLocaleString()} $`);\r\n // In production: window.location.href = 'payment.html';\r\n }\r\n \r\n // Redirect to payment\r\n function zakatRedirectToPayment() {\r\n const zakatAmount = document.getElementById('zakat-amount').textContent;\r\n if (zakatAmount === '0.00 $') {\r\n alert('Please enter the amount first to calculate Zakat');\r\n return;\r\n }\r\n \r\n alert(`You will be redirected to the payment page to complete your donation of ${zakatAmount}`);\r\n // In production: window.location.href = 'payment.html?amount=' + encodeURIComponent(zakatAmount);\r\n }\r\n \r\n // Intersection Observer for animations\r\n document.addEventListener('DOMContentLoaded', () => {\r\n // Initialize animations\r\n const reveals = document.querySelectorAll('.zakat-reveal');\r\n const obs = new IntersectionObserver((entries) => {\r\n entries.forEach(e => {\r\n if (e.isIntersecting) e.target.classList.add('active');\r\n });\r\n }, { threshold: 0.1 });\r\n reveals.forEach(r => obs.observe(r));\r\n \r\n // Initialize calculation\r\n zakatCalculate();\r\n \r\n // Load initial nisab value\r\n const goldRate = parseFloat(document.getElementById('zakat-gold-rate').value) || 0;\r\n const nisab = 85 * goldRate;\r\n document.getElementById('zakat-nisab-value').textContent = \r\n nisab.toLocaleString(undefined, { minimumFractionDigits: 2 }) + ' $';\r\n });\r\n \r\n ","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"}]') (Line: 47)
Drupal\gavias_content_builder\Plugin\Field\FieldFormatter\GaviasContentBuilderFormatter->viewElements(Object, 'en') (Line: 89)
Drupal\Core\Field\FormatterBase->view(Object, 'en') (Line: 263)
Drupal\Core\Entity\Entity\EntityViewDisplay->buildMultiple(Array) (Line: 351)
Drupal\Core\Entity\EntityViewBuilder->buildComponents(Array, Array, Array, 'full') (Line: 24)
Drupal\node\NodeViewBuilder->buildComponents(Array, Array, Array, 'full') (Line: 293)
Drupal\Core\Entity\EntityViewBuilder->buildMultiple(Array) (Line: 250)
Drupal\Core\Entity\EntityViewBuilder->build(Array)
call_user_func_array(Array, Array) (Line: 100)
Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. Support for this callback implementation is deprecated in 8.8.0 and will be removed in Drupal 9.0.0. See https://www.drupal.org/node/2966725', 'silenced_deprecation', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 781)
Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 372)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 200)
Drupal\Core\Render\Renderer->render(Array, ) (Line: 226)
Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 573)
Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 227)
Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 117)
Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90)
Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object)
call_user_func(Array, Object, 'kernel.view', Object) (Line: 111)
Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch('kernel.view', Object) (Line: 156)
Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 68)
Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 57)
Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 47)
Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191)
Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128)
Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82)
Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 47)
Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 52)
Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23)
Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 708)
Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Deprecated function: implode(): Passing glue string after array is deprecated. Swap the parameters in element_gva_column->render_content() (line 463 of themes/gavias_kunco/gva_content_builder/gva_column.php).
element_gva_column->render_content(Array, '
The Third Pillar of Islam
Smart Zakat CalculatorAccurate Calculation.. Great Impact
A comprehensive calculator to compute your Zakat according to the latest prices and soundest religious rulings, designed to help you fulfill your duty with precision and confidence.
Today's Nisab (Gold)
85 grams
Equivalent to $6,502.50 based on current gold price
') (Line: 110)
gavias_content_builder_render_element('gva_column', Array, '
The Third Pillar of Islam
Smart Zakat CalculatorAccurate Calculation.. Great Impact
A comprehensive calculator to compute your Zakat according to the latest prices and soundest religious rulings, designed to help you fulfill your duty with precision and confidence.
Today's Nisab (Gold)
85 grams
Equivalent to $6,502.50 based on current gold price
') (Line: 58)
gavias_content_builder_render_el(Array) (Line: 22)
gavias_content_builder_frontend('[{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","padding_top":"0","padding_bottom":"0","margin_top":"0","margin_bottom":"0","layout":"container-fw","class":"aboutus"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"content":"\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n The Third Pillar of Islam\r\n Smart Zakat CalculatorAccurate Calculation.. Great Impact\r\n \r\n \r\n A comprehensive calculator to compute your Zakat according to the latest prices and soundest religious rulings, designed to help you fulfill your duty with precision and confidence.\r\n \r\n \r\n \r\n \r\n \r\n Today's Nisab (Gold)\r\n 85 grams\r\n \r\n \r\n \r\n \r\n Equivalent to $6,502.50 based on current gold price\r\n \r\n \r\n \r\n \r\n ","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"},{"settings":{"element":"gva_column","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","class":"zakatt"},"col_lg":12,"elements":[{"settings":{"content":"\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n Cash & Deposits\r\n \r\n \r\n \r\n Gold & Silver\r\n \r\n \r\n \r\n Stocks & Trade\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n Cash & Bank Deposits\r\n \r\n \r\n \r\n \r\n Cash on hand\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Bank deposits & balances\r\n \r\n \r\n \r\n \r\n \r\n \r\n Receivables (debts owed to you)\r\n \r\n \r\n \r\n \r\n Debts you expect to recover\r\n \r\n \r\n Payables (debts you owe)\r\n \r\n \r\n \r\n \r\n Deducted from total wealth\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n Gold, Silver & Jewelry\r\n \r\n \r\n \r\n Gold weight (grams)\r\n \r\n \r\n \r\n \r\n Exceeding personal use\r\n \r\n \r\n Gold karat\r\n \r\n \r\n 24 Karat (Pure)\r\n 22 Karat\r\n 21 Karat\r\n 18 Karat\r\n \r\n \r\n \r\n \r\n \r\n Silver weight (grams)\r\n \r\n \r\n \r\n \r\n \r\n \r\n Today's gold price\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Price per gram in USD\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Nisab Calculator\r\n \r\n \r\n \r\n Nisab (Gold)\r\n 85 grams\r\n \r\n \r\n Nisab (Silver)\r\n 595 grams\r\n \r\n \r\n Value in USD\r\n $6,502.50\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n Business & Investment Assets\r\n \r\n \r\n \r\n Current stock value\r\n \r\n \r\n \r\n \r\n \r\n \r\n Trade goods\r\n \r\n \r\n \r\n \r\n Merchandise intended for sale\r\n \r\n \r\n Investment properties\r\n \r\n \r\n \r\n \r\n \r\n \r\n Other assets\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n Choose Your Charity Projects\r\n \r\n You can distribute your Zakat across multiple charity projects as you wish\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Donation Basket\r\n \r\n \r\n No projects added yet\r\n \r\n \r\n \r\n Total allocated amount\r\n 0.00 $\r\n \r\n \r\n Proceed to Donate\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n Conditions for Zakat Obligation\r\n \r\n <ul>\r\n <li>\r\n \r\n Reaching the Nisab (equivalent to 85 grams of 24k gold)\r\n </li>\r\n <li>\r\n \r\n Passage of one lunar year (Hawl) over the wealth\r\n </li>\r\n <li>\r\n \r\n Full ownership and ability to dispose of the wealth\r\n </li>\r\n </ul>\r\n \r\n \r\n \r\n \r\n Wijdan's Trust\r\n \r\n \r\n At Wijdan Charity, we are committed to disbursing Zakat to its eight legitimate channels under the supervision of specialized Sharia committees, ensuring the highest standards of transparency and traceability.\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n Calculation Summary\r\n \r\n\r\n \r\n \r\n Total Zakatable Wealth\r\n 0.00 $\r\n \r\n \r\n Current Nisab\r\n 6,502.50 $\r\n \r\n \r\n\r\n \r\n Obligatory Zakat (2.5%)\r\n 0.00 $\r\n \r\n \r\n Enter amount to verify\r\n \r\n \r\n\r\n \r\n <a>\r\n \r\n Contact us on WhatsApp for consultation and donation\r\n </a>\r\n \r\n\r\n \r\n All calculations are based on global gold prices and the latest Sharia rulings. We recommend consulting scholars for precise jurisprudential matters.\r\n \r\n \r\n \r\n \r\n \r\n Reset\r\n \r\n \r\n Save Calculation\r\n \r\n \r\n \r\n \r\n \r\n \r\n ","animate_delay":"0","el_class":"zakatt"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"},{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"content":"\r\n // Initialize charity projects\r\n const charityProjects = [\r\n {\r\n id: 1,\r\n title: \"Iftar for Fasting Person\",\r\n description: \"Providing Ramadan Iftar meals for needy families\",\r\n icon: \"fa-utensils\",\r\n cost: 500,\r\n selected: false\r\n },\r\n {\r\n id: 2,\r\n title: \"Winter Clothing\",\r\n description: \"Distributing winter clothes for children and needy families\",\r\n icon: \"fa-shirt\",\r\n cost: 300,\r\n selected: false\r\n },\r\n {\r\n id: 3,\r\n title: \"Water Supply\",\r\n description: \"Digging wells and providing clean drinking water\",\r\n icon: \"fa-droplet\",\r\n cost: 1000,\r\n selected: false\r\n },\r\n {\r\n id: 4,\r\n title: \"Orphan Education\",\r\n description: \"Educational support for orphans and school supplies\",\r\n icon: \"fa-graduation-cap\",\r\n cost: 400,\r\n selected: false\r\n },\r\n {\r\n id: 5,\r\n title: \"Patient Treatment\",\r\n description: \"Covering treatment expenses for unable families\",\r\n icon: \"fa-heart-pulse\",\r\n cost: 800,\r\n selected: false\r\n },\r\n {\r\n id: 6,\r\n title: \"Widow Care\",\r\n description: \"Monthly support for widows and their children\",\r\n icon: \"fa-hand-holding-heart\",\r\n cost: 600,\r\n selected: false\r\n }\r\n ];\r\n\r\n // Donation basket\r\n let donationBasket = [];\r\n \r\n // Tab system\r\n function zakatSwitchTab(tab) {\r\n // Update tabs\r\n document.querySelectorAll('.zakat-tab-btn').forEach(btn => btn.classList.remove('active'));\r\n document.querySelectorAll('.zakat-calc-section').forEach(sec => sec.classList.add('zakat-hidden'));\r\n \r\n // Activate selected tab\r\n document.getElementById('zakat-tab-' + tab).classList.add('active');\r\n document.getElementById('zakat-section-' + tab).classList.remove('zakat-hidden');\r\n \r\n // Load charity projects if on charity tab\r\n if (tab === 'charity') {\r\n loadCharityProjects();\r\n }\r\n \r\n // Add animation\r\n const activeSection = document.getElementById('zakat-section-' + tab);\r\n activeSection.classList.add('zakat-fade-in');\r\n }\r\n \r\n // Load charity projects\r\n function loadCharityProjects() {\r\n const container = document.getElementById('charity-projects-container');\r\n container.innerHTML = '';\r\n \r\n charityProjects.forEach(project => {\r\n const projectElement = document.createElement('div');\r\n projectElement.className = `zakat-charity-card ${project.selected ? 'border-brand-secondary' : ''}`;\r\n projectElement.innerHTML = `\r\n \r\n \r\n \r\n ${project.title}\r\n ${project.description}\r\n \r\n ${project.cost.toLocaleString()} $\r\n \r\n ${project.selected ? 'Added' : 'Add'}\r\n \r\n \r\n `;\r\n container.appendChild(projectElement);\r\n });\r\n \r\n updateBasketDisplay();\r\n }\r\n \r\n // Toggle charity project selection\r\n function toggleCharityProject(projectId) {\r\n const project = charityProjects.find(p => p.id === projectId);\r\n project.selected = !project.selected;\r\n \r\n if (project.selected) {\r\n donationBasket.push(project);\r\n } else {\r\n donationBasket = donationBasket.filter(p => p.id !== projectId);\r\n }\r\n \r\n loadCharityProjects();\r\n updateBasketDisplay();\r\n }\r\n \r\n // Update donation basket display\r\n function updateBasketDisplay() {\r\n const container = document.getElementById('donation-basket-items');\r\n const totalElement = document.getElementById('basket-total');\r\n \r\n if (donationBasket.length === 0) {\r\n container.innerHTML = 'No projects added yet';\r\n totalElement.textContent = '0.00 $';\r\n return;\r\n }\r\n \r\n let total = 0;\r\n let itemsHTML = '';\r\n \r\n donationBasket.forEach(project => {\r\n total += project.cost;\r\n itemsHTML += `\r\n \r\n \r\n ${project.title}\r\n ${project.description}\r\n \r\n \r\n ${project.cost.toLocaleString()} $\r\n \r\n \r\n \r\n \r\n \r\n `;\r\n });\r\n \r\n container.innerHTML = itemsHTML;\r\n totalElement.textContent = total.toLocaleString(undefined, { minimumFractionDigits: 2 }) + ' $';\r\n }\r\n \r\n // Remove from basket\r\n function removeFromBasket(projectId) {\r\n const project = charityProjects.find(p => p.id === projectId);\r\n if (project) {\r\n project.selected = false;\r\n }\r\n donationBasket = donationBasket.filter(p => p.id !== projectId);\r\n loadCharityProjects();\r\n }\r\n \r\n // Enhanced Calculation\r\n function zakatCalculate() {\r\n // Money\r\n const cash = parseFloat(document.getElementById('zakat-cash-money').value) || 0;\r\n const bank = parseFloat(document.getElementById('zakat-bank-money').value) || 0;\r\n const debtsToMe = parseFloat(document.getElementById('zakat-debts-to-me').value) || 0;\r\n const debtsFromMe = parseFloat(document.getElementById('zakat-debts-from-me').value) || 0;\r\n \r\n // Gold/Silver\r\n const goldW = parseFloat(document.getElementById('zakat-gold-weight').value) || 0;\r\n const carat = parseFloat(document.getElementById('zakat-gold-carat').value) || 0;\r\n const goldRate = parseFloat(document.getElementById('zakat-gold-rate').value) || 0;\r\n const silverW = parseFloat(document.getElementById('zakat-silver-weight').value) || 0;\r\n const silverRate = 0.95;\r\n \r\n // Stocks & Business\r\n const stocks = parseFloat(document.getElementById('zakat-stocks-value').value) || 0;\r\n const trade = parseFloat(document.getElementById('zakat-trade-goods').value) || 0;\r\n const realEstate = parseFloat(document.getElementById('zakat-real-estate')?.value) || 0;\r\n const otherAssets = parseFloat(document.getElementById('zakat-other-assets')?.value) || 0;\r\n \r\n // Calculations\r\n const gold24Equivalent = goldW * (carat / 24);\r\n const moneyAssets = Math.max(0, (cash + bank + debtsToMe) - debtsFromMe);\r\n const metalAssets = (gold24Equivalent * goldRate) + (silverW * silverRate);\r\n const businessAssets = stocks + trade + realEstate + otherAssets;\r\n const total = Math.max(0, moneyAssets + metalAssets + businessAssets);\r\n \r\n // UI Update - Total\r\n document.getElementById('zakat-total-assets').textContent = \r\n total.toLocaleString(undefined, { minimumFractionDigits: 2 }) + ' $';\r\n \r\n // Nisab Logic (85g Gold 24k)\r\n const nisab = 85 * goldRate;\r\n document.getElementById('zakat-nisab-value').textContent = \r\n nisab.toLocaleString(undefined, { minimumFractionDigits: 2 }) + ' $';\r\n \r\n // Update nisab displays\r\n document.getElementById('nisab-value-display').textContent = \r\n nisab.toLocaleString(undefined, { minimumFractionDigits: 2 }) + ' $';\r\n document.getElementById('current-nisab').textContent = '85 grams';\r\n document.getElementById('nisab-value').textContent = nisab.toLocaleString(undefined, { minimumFractionDigits: 2 }) + ' $';\r\n \r\n // Update progress bar\r\n const nisabProgress = Math.min(100, (total / nisab) * 100);\r\n document.getElementById('nisab-progress').style.width = `${nisabProgress}%`;\r\n \r\n const zakatAmountEl = document.getElementById('zakat-amount');\r\n const statusBadge = document.getElementById('zakat-status-badge');\r\n \r\n if (total >= nisab && total > 0) {\r\n const zakat = total * 0.025;\r\n zakatAmountEl.textContent = zakat.toLocaleString(undefined, { minimumFractionDigits: 2 }) + ' $';\r\n \r\n statusBadge.innerHTML = ' Zakat is obligatory (nisab reached)';\r\n statusBadge.className = \"inline-flex items-center gap-2 px-6 py-3 rounded-full bg-green-500/20 border border-green-500/30 text-green-300 mt-4\";\r\n } else {\r\n zakatAmountEl.textContent = '0.00 $';\r\n \r\n if (total > 0) {\r\n statusBadge.innerHTML = ' Nisab not yet reached';\r\n statusBadge.className = \"inline-flex items-center gap-2 px-6 py-3 rounded-full bg-yellow-500/20 border border-yellow-500/30 text-yellow-300 mt-4\";\r\n } else {\r\n statusBadge.innerHTML = ' Enter amount to verify';\r\n statusBadge.className = \"inline-flex items-center gap-2 px-6 py-3 rounded-full bg-white/10 border border-white/20 text-white mt-4\";\r\n }\r\n }\r\n }\r\n \r\n // Fetch live rates\r\n async function zakatFetchRates() {\r\n const icon = document.getElementById('zakat-refresh-icon');\r\n icon.classList.add('fa-spin');\r\n \r\n // Simulate API call\r\n await new Promise(r => setTimeout(r, 1000));\r\n \r\n // Dynamic change for effect (simulated rate change)\r\n const current = parseFloat(document.getElementById('zakat-gold-rate').value);\r\n const newRate = current + (Math.random() - 0.5);\r\n document.getElementById('zakat-gold-rate').value = newRate.toFixed(2);\r\n \r\n icon.classList.remove('fa-spin');\r\n zakatCalculate();\r\n }\r\n \r\n // Reset form\r\n function zakatResetForm() {\r\n document.querySelectorAll('input[type=\"number\"]').forEach(input => input.value = '');\r\n donationBasket = [];\r\n charityProjects.forEach(p => p.selected = false);\r\n loadCharityProjects();\r\n zakatCalculate();\r\n }\r\n \r\n // Save calculation\r\n function zakatSaveCalculation() {\r\n const total = document.getElementById('zakat-total-assets').textContent;\r\n const zakat = document.getElementById('zakat-amount').textContent;\r\n \r\n alert(`Calculation saved:\\nTotal wealth: ${total}\\nObligatory Zakat: ${zakat}`);\r\n }\r\n \r\n // Checkout\r\n function zakatCheckout() {\r\n const total = donationBasket.reduce((sum, p) => sum + p.cost, 0);\r\n if (total === 0) {\r\n alert('Please add projects to the donation basket first');\r\n return;\r\n }\r\n \r\n alert(`You will be redirected to the payment page to complete your donation of ${total.toLocaleString()} $`);\r\n // In production: window.location.href = 'payment.html';\r\n }\r\n \r\n // Redirect to payment\r\n function zakatRedirectToPayment() {\r\n const zakatAmount = document.getElementById('zakat-amount').textContent;\r\n if (zakatAmount === '0.00 $') {\r\n alert('Please enter the amount first to calculate Zakat');\r\n return;\r\n }\r\n \r\n alert(`You will be redirected to the payment page to complete your donation of ${zakatAmount}`);\r\n // In production: window.location.href = 'payment.html?amount=' + encodeURIComponent(zakatAmount);\r\n }\r\n \r\n // Intersection Observer for animations\r\n document.addEventListener('DOMContentLoaded', () => {\r\n // Initialize animations\r\n const reveals = document.querySelectorAll('.zakat-reveal');\r\n const obs = new IntersectionObserver((entries) => {\r\n entries.forEach(e => {\r\n if (e.isIntersecting) e.target.classList.add('active');\r\n });\r\n }, { threshold: 0.1 });\r\n reveals.forEach(r => obs.observe(r));\r\n \r\n // Initialize calculation\r\n zakatCalculate();\r\n \r\n // Load initial nisab value\r\n const goldRate = parseFloat(document.getElementById('zakat-gold-rate').value) || 0;\r\n const nisab = 85 * goldRate;\r\n document.getElementById('zakat-nisab-value').textContent = \r\n nisab.toLocaleString(undefined, { minimumFractionDigits: 2 }) + ' $';\r\n });\r\n \r\n ","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"}]') (Line: 47)
Drupal\gavias_content_builder\Plugin\Field\FieldFormatter\GaviasContentBuilderFormatter->viewElements(Object, 'en') (Line: 89)
Drupal\Core\Field\FormatterBase->view(Object, 'en') (Line: 263)
Drupal\Core\Entity\Entity\EntityViewDisplay->buildMultiple(Array) (Line: 351)
Drupal\Core\Entity\EntityViewBuilder->buildComponents(Array, Array, Array, 'full') (Line: 24)
Drupal\node\NodeViewBuilder->buildComponents(Array, Array, Array, 'full') (Line: 293)
Drupal\Core\Entity\EntityViewBuilder->buildMultiple(Array) (Line: 250)
Drupal\Core\Entity\EntityViewBuilder->build(Array)
call_user_func_array(Array, Array) (Line: 100)
Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. Support for this callback implementation is deprecated in 8.8.0 and will be removed in Drupal 9.0.0. See https://www.drupal.org/node/2966725', 'silenced_deprecation', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 781)
Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 372)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 200)
Drupal\Core\Render\Renderer->render(Array, ) (Line: 226)
Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 573)
Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 227)
Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 117)
Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90)
Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object)
call_user_func(Array, Object, 'kernel.view', Object) (Line: 111)
Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch('kernel.view', Object) (Line: 156)
Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 68)
Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 57)
Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 47)
Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191)
Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128)
Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82)
Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 47)
Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 52)
Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23)
Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 708)
Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Deprecated function: implode(): Passing glue string after array is deprecated. Swap the parameters in element_gva_column->render_content() (line 462 of themes/gavias_kunco/gva_content_builder/gva_column.php).
element_gva_column->render_content(Array, '
Cash & Deposits
Gold & Silver
Stocks & Trade
Charity Projects
-->
Cash & Bank Deposits
Cash on hand
Bank deposits & balances
Receivables (debts owed to you)
Debts you expect to recover
Payables (debts you owe)
Deducted from total wealth
Gold, Silver & Jewelry
Gold weight (grams)
Exceeding personal use
Gold karat
24 Karat (Pure)
22 Karat
21 Karat
18 Karat
Silver weight (grams)
Today's gold price
Price per gram in USD
Nisab Calculator
Nisab (Gold)
85 grams
Nisab (Silver)
595 grams
Value in USD
$6,502.50
Business & Investment Assets
Current stock value
Trade goods
Merchandise intended for sale
Investment properties
Other assets
Choose Your Charity Projects
You can distribute your Zakat across multiple charity projects as you wish
Donation Basket
No projects added yet
Total allocated amount
0.00 $
Proceed to Donate
Conditions for Zakat Obligation
<ul class="space-y-3 text-gray-600">
<li class="flex items-start gap-3">
Reaching the Nisab (equivalent to 85 grams of 24k gold)
</li>
<li class="flex items-start gap-3">
Passage of one lunar year (Hawl) over the wealth
</li>
<li class="flex items-start gap-3">
Full ownership and ability to dispose of the wealth
</li>
</ul>
Wijdan's Trust
At Wijdan Charity, we are committed to disbursing Zakat to its eight legitimate channels under the supervision of specialized Sharia committees, ensuring the highest standards of transparency and traceability.
Calculation Summary
Total Zakatable Wealth
0.00 $
Current Nisab
6,502.50 $
Obligatory Zakat (2.5%)
0.00 $
Enter amount to verify
<a href="https://wa.me/905057763103" class="sponsorships-btn-secondary sponsorships-btn-full mt-4" target="_blank">
Contact us on WhatsApp for consultation and donation
</a>
All calculations are based on global gold prices and the latest Sharia rulings. We recommend consulting scholars for precise jurisprudential matters.
Reset
Save Calculation
') (Line: 110)
gavias_content_builder_render_element('gva_column', Array, '
Cash & Deposits
Gold & Silver
Stocks & Trade
Charity Projects
-->
Cash & Bank Deposits
Cash on hand
Bank deposits & balances
Receivables (debts owed to you)
Debts you expect to recover
Payables (debts you owe)
Deducted from total wealth
Gold, Silver & Jewelry
Gold weight (grams)
Exceeding personal use
Gold karat
24 Karat (Pure)
22 Karat
21 Karat
18 Karat
Silver weight (grams)
Today's gold price
Price per gram in USD
Nisab Calculator
Nisab (Gold)
85 grams
Nisab (Silver)
595 grams
Value in USD
$6,502.50
Business & Investment Assets
Current stock value
Trade goods
Merchandise intended for sale
Investment properties
Other assets
Choose Your Charity Projects
You can distribute your Zakat across multiple charity projects as you wish
Donation Basket
No projects added yet
Total allocated amount
0.00 $
Proceed to Donate
Conditions for Zakat Obligation
<ul class="space-y-3 text-gray-600">
<li class="flex items-start gap-3">
Reaching the Nisab (equivalent to 85 grams of 24k gold)
</li>
<li class="flex items-start gap-3">
Passage of one lunar year (Hawl) over the wealth
</li>
<li class="flex items-start gap-3">
Full ownership and ability to dispose of the wealth
</li>
</ul>
Wijdan's Trust
At Wijdan Charity, we are committed to disbursing Zakat to its eight legitimate channels under the supervision of specialized Sharia committees, ensuring the highest standards of transparency and traceability.
Calculation Summary
Total Zakatable Wealth
0.00 $
Current Nisab
6,502.50 $
Obligatory Zakat (2.5%)
0.00 $
Enter amount to verify
<a href="https://wa.me/905057763103" class="sponsorships-btn-secondary sponsorships-btn-full mt-4" target="_blank">
Contact us on WhatsApp for consultation and donation
</a>
All calculations are based on global gold prices and the latest Sharia rulings. We recommend consulting scholars for precise jurisprudential matters.
Reset
Save Calculation
') (Line: 58)
gavias_content_builder_render_el(Array) (Line: 22)
gavias_content_builder_frontend('[{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","padding_top":"0","padding_bottom":"0","margin_top":"0","margin_bottom":"0","layout":"container-fw","class":"aboutus"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"content":"\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n The Third Pillar of Islam\r\n Smart Zakat CalculatorAccurate Calculation.. Great Impact\r\n \r\n \r\n A comprehensive calculator to compute your Zakat according to the latest prices and soundest religious rulings, designed to help you fulfill your duty with precision and confidence.\r\n \r\n \r\n \r\n \r\n \r\n Today's Nisab (Gold)\r\n 85 grams\r\n \r\n \r\n \r\n \r\n Equivalent to $6,502.50 based on current gold price\r\n \r\n \r\n \r\n \r\n ","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"},{"settings":{"element":"gva_column","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","class":"zakatt"},"col_lg":12,"elements":[{"settings":{"content":"\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n Cash & Deposits\r\n \r\n \r\n \r\n Gold & Silver\r\n \r\n \r\n \r\n Stocks & Trade\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n Cash & Bank Deposits\r\n \r\n \r\n \r\n \r\n Cash on hand\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Bank deposits & balances\r\n \r\n \r\n \r\n \r\n \r\n \r\n Receivables (debts owed to you)\r\n \r\n \r\n \r\n \r\n Debts you expect to recover\r\n \r\n \r\n Payables (debts you owe)\r\n \r\n \r\n \r\n \r\n Deducted from total wealth\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n Gold, Silver & Jewelry\r\n \r\n \r\n \r\n Gold weight (grams)\r\n \r\n \r\n \r\n \r\n Exceeding personal use\r\n \r\n \r\n Gold karat\r\n \r\n \r\n 24 Karat (Pure)\r\n 22 Karat\r\n 21 Karat\r\n 18 Karat\r\n \r\n \r\n \r\n \r\n \r\n Silver weight (grams)\r\n \r\n \r\n \r\n \r\n \r\n \r\n Today's gold price\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Price per gram in USD\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Nisab Calculator\r\n \r\n \r\n \r\n Nisab (Gold)\r\n 85 grams\r\n \r\n \r\n Nisab (Silver)\r\n 595 grams\r\n \r\n \r\n Value in USD\r\n $6,502.50\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n Business & Investment Assets\r\n \r\n \r\n \r\n Current stock value\r\n \r\n \r\n \r\n \r\n \r\n \r\n Trade goods\r\n \r\n \r\n \r\n \r\n Merchandise intended for sale\r\n \r\n \r\n Investment properties\r\n \r\n \r\n \r\n \r\n \r\n \r\n Other assets\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n Choose Your Charity Projects\r\n \r\n You can distribute your Zakat across multiple charity projects as you wish\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Donation Basket\r\n \r\n \r\n No projects added yet\r\n \r\n \r\n \r\n Total allocated amount\r\n 0.00 $\r\n \r\n \r\n Proceed to Donate\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n Conditions for Zakat Obligation\r\n \r\n <ul>\r\n <li>\r\n \r\n Reaching the Nisab (equivalent to 85 grams of 24k gold)\r\n </li>\r\n <li>\r\n \r\n Passage of one lunar year (Hawl) over the wealth\r\n </li>\r\n <li>\r\n \r\n Full ownership and ability to dispose of the wealth\r\n </li>\r\n </ul>\r\n \r\n \r\n \r\n \r\n Wijdan's Trust\r\n \r\n \r\n At Wijdan Charity, we are committed to disbursing Zakat to its eight legitimate channels under the supervision of specialized Sharia committees, ensuring the highest standards of transparency and traceability.\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n Calculation Summary\r\n \r\n\r\n \r\n \r\n Total Zakatable Wealth\r\n 0.00 $\r\n \r\n \r\n Current Nisab\r\n 6,502.50 $\r\n \r\n \r\n\r\n \r\n Obligatory Zakat (2.5%)\r\n 0.00 $\r\n \r\n \r\n Enter amount to verify\r\n \r\n \r\n\r\n \r\n <a>\r\n \r\n Contact us on WhatsApp for consultation and donation\r\n </a>\r\n \r\n\r\n \r\n All calculations are based on global gold prices and the latest Sharia rulings. We recommend consulting scholars for precise jurisprudential matters.\r\n \r\n \r\n \r\n \r\n \r\n Reset\r\n \r\n \r\n Save Calculation\r\n \r\n \r\n \r\n \r\n \r\n \r\n ","animate_delay":"0","el_class":"zakatt"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"},{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"content":"\r\n // Initialize charity projects\r\n const charityProjects = [\r\n {\r\n id: 1,\r\n title: \"Iftar for Fasting Person\",\r\n description: \"Providing Ramadan Iftar meals for needy families\",\r\n icon: \"fa-utensils\",\r\n cost: 500,\r\n selected: false\r\n },\r\n {\r\n id: 2,\r\n title: \"Winter Clothing\",\r\n description: \"Distributing winter clothes for children and needy families\",\r\n icon: \"fa-shirt\",\r\n cost: 300,\r\n selected: false\r\n },\r\n {\r\n id: 3,\r\n title: \"Water Supply\",\r\n description: \"Digging wells and providing clean drinking water\",\r\n icon: \"fa-droplet\",\r\n cost: 1000,\r\n selected: false\r\n },\r\n {\r\n id: 4,\r\n title: \"Orphan Education\",\r\n description: \"Educational support for orphans and school supplies\",\r\n icon: \"fa-graduation-cap\",\r\n cost: 400,\r\n selected: false\r\n },\r\n {\r\n id: 5,\r\n title: \"Patient Treatment\",\r\n description: \"Covering treatment expenses for unable families\",\r\n icon: \"fa-heart-pulse\",\r\n cost: 800,\r\n selected: false\r\n },\r\n {\r\n id: 6,\r\n title: \"Widow Care\",\r\n description: \"Monthly support for widows and their children\",\r\n icon: \"fa-hand-holding-heart\",\r\n cost: 600,\r\n selected: false\r\n }\r\n ];\r\n\r\n // Donation basket\r\n let donationBasket = [];\r\n \r\n // Tab system\r\n function zakatSwitchTab(tab) {\r\n // Update tabs\r\n document.querySelectorAll('.zakat-tab-btn').forEach(btn => btn.classList.remove('active'));\r\n document.querySelectorAll('.zakat-calc-section').forEach(sec => sec.classList.add('zakat-hidden'));\r\n \r\n // Activate selected tab\r\n document.getElementById('zakat-tab-' + tab).classList.add('active');\r\n document.getElementById('zakat-section-' + tab).classList.remove('zakat-hidden');\r\n \r\n // Load charity projects if on charity tab\r\n if (tab === 'charity') {\r\n loadCharityProjects();\r\n }\r\n \r\n // Add animation\r\n const activeSection = document.getElementById('zakat-section-' + tab);\r\n activeSection.classList.add('zakat-fade-in');\r\n }\r\n \r\n // Load charity projects\r\n function loadCharityProjects() {\r\n const container = document.getElementById('charity-projects-container');\r\n container.innerHTML = '';\r\n \r\n charityProjects.forEach(project => {\r\n const projectElement = document.createElement('div');\r\n projectElement.className = `zakat-charity-card ${project.selected ? 'border-brand-secondary' : ''}`;\r\n projectElement.innerHTML = `\r\n \r\n \r\n \r\n ${project.title}\r\n ${project.description}\r\n \r\n ${project.cost.toLocaleString()} $\r\n \r\n ${project.selected ? 'Added' : 'Add'}\r\n \r\n \r\n `;\r\n container.appendChild(projectElement);\r\n });\r\n \r\n updateBasketDisplay();\r\n }\r\n \r\n // Toggle charity project selection\r\n function toggleCharityProject(projectId) {\r\n const project = charityProjects.find(p => p.id === projectId);\r\n project.selected = !project.selected;\r\n \r\n if (project.selected) {\r\n donationBasket.push(project);\r\n } else {\r\n donationBasket = donationBasket.filter(p => p.id !== projectId);\r\n }\r\n \r\n loadCharityProjects();\r\n updateBasketDisplay();\r\n }\r\n \r\n // Update donation basket display\r\n function updateBasketDisplay() {\r\n const container = document.getElementById('donation-basket-items');\r\n const totalElement = document.getElementById('basket-total');\r\n \r\n if (donationBasket.length === 0) {\r\n container.innerHTML = 'No projects added yet';\r\n totalElement.textContent = '0.00 $';\r\n return;\r\n }\r\n \r\n let total = 0;\r\n let itemsHTML = '';\r\n \r\n donationBasket.forEach(project => {\r\n total += project.cost;\r\n itemsHTML += `\r\n \r\n \r\n ${project.title}\r\n ${project.description}\r\n \r\n \r\n ${project.cost.toLocaleString()} $\r\n \r\n \r\n \r\n \r\n \r\n `;\r\n });\r\n \r\n container.innerHTML = itemsHTML;\r\n totalElement.textContent = total.toLocaleString(undefined, { minimumFractionDigits: 2 }) + ' $';\r\n }\r\n \r\n // Remove from basket\r\n function removeFromBasket(projectId) {\r\n const project = charityProjects.find(p => p.id === projectId);\r\n if (project) {\r\n project.selected = false;\r\n }\r\n donationBasket = donationBasket.filter(p => p.id !== projectId);\r\n loadCharityProjects();\r\n }\r\n \r\n // Enhanced Calculation\r\n function zakatCalculate() {\r\n // Money\r\n const cash = parseFloat(document.getElementById('zakat-cash-money').value) || 0;\r\n const bank = parseFloat(document.getElementById('zakat-bank-money').value) || 0;\r\n const debtsToMe = parseFloat(document.getElementById('zakat-debts-to-me').value) || 0;\r\n const debtsFromMe = parseFloat(document.getElementById('zakat-debts-from-me').value) || 0;\r\n \r\n // Gold/Silver\r\n const goldW = parseFloat(document.getElementById('zakat-gold-weight').value) || 0;\r\n const carat = parseFloat(document.getElementById('zakat-gold-carat').value) || 0;\r\n const goldRate = parseFloat(document.getElementById('zakat-gold-rate').value) || 0;\r\n const silverW = parseFloat(document.getElementById('zakat-silver-weight').value) || 0;\r\n const silverRate = 0.95;\r\n \r\n // Stocks & Business\r\n const stocks = parseFloat(document.getElementById('zakat-stocks-value').value) || 0;\r\n const trade = parseFloat(document.getElementById('zakat-trade-goods').value) || 0;\r\n const realEstate = parseFloat(document.getElementById('zakat-real-estate')?.value) || 0;\r\n const otherAssets = parseFloat(document.getElementById('zakat-other-assets')?.value) || 0;\r\n \r\n // Calculations\r\n const gold24Equivalent = goldW * (carat / 24);\r\n const moneyAssets = Math.max(0, (cash + bank + debtsToMe) - debtsFromMe);\r\n const metalAssets = (gold24Equivalent * goldRate) + (silverW * silverRate);\r\n const businessAssets = stocks + trade + realEstate + otherAssets;\r\n const total = Math.max(0, moneyAssets + metalAssets + businessAssets);\r\n \r\n // UI Update - Total\r\n document.getElementById('zakat-total-assets').textContent = \r\n total.toLocaleString(undefined, { minimumFractionDigits: 2 }) + ' $';\r\n \r\n // Nisab Logic (85g Gold 24k)\r\n const nisab = 85 * goldRate;\r\n document.getElementById('zakat-nisab-value').textContent = \r\n nisab.toLocaleString(undefined, { minimumFractionDigits: 2 }) + ' $';\r\n \r\n // Update nisab displays\r\n document.getElementById('nisab-value-display').textContent = \r\n nisab.toLocaleString(undefined, { minimumFractionDigits: 2 }) + ' $';\r\n document.getElementById('current-nisab').textContent = '85 grams';\r\n document.getElementById('nisab-value').textContent = nisab.toLocaleString(undefined, { minimumFractionDigits: 2 }) + ' $';\r\n \r\n // Update progress bar\r\n const nisabProgress = Math.min(100, (total / nisab) * 100);\r\n document.getElementById('nisab-progress').style.width = `${nisabProgress}%`;\r\n \r\n const zakatAmountEl = document.getElementById('zakat-amount');\r\n const statusBadge = document.getElementById('zakat-status-badge');\r\n \r\n if (total >= nisab && total > 0) {\r\n const zakat = total * 0.025;\r\n zakatAmountEl.textContent = zakat.toLocaleString(undefined, { minimumFractionDigits: 2 }) + ' $';\r\n \r\n statusBadge.innerHTML = ' Zakat is obligatory (nisab reached)';\r\n statusBadge.className = \"inline-flex items-center gap-2 px-6 py-3 rounded-full bg-green-500/20 border border-green-500/30 text-green-300 mt-4\";\r\n } else {\r\n zakatAmountEl.textContent = '0.00 $';\r\n \r\n if (total > 0) {\r\n statusBadge.innerHTML = ' Nisab not yet reached';\r\n statusBadge.className = \"inline-flex items-center gap-2 px-6 py-3 rounded-full bg-yellow-500/20 border border-yellow-500/30 text-yellow-300 mt-4\";\r\n } else {\r\n statusBadge.innerHTML = ' Enter amount to verify';\r\n statusBadge.className = \"inline-flex items-center gap-2 px-6 py-3 rounded-full bg-white/10 border border-white/20 text-white mt-4\";\r\n }\r\n }\r\n }\r\n \r\n // Fetch live rates\r\n async function zakatFetchRates() {\r\n const icon = document.getElementById('zakat-refresh-icon');\r\n icon.classList.add('fa-spin');\r\n \r\n // Simulate API call\r\n await new Promise(r => setTimeout(r, 1000));\r\n \r\n // Dynamic change for effect (simulated rate change)\r\n const current = parseFloat(document.getElementById('zakat-gold-rate').value);\r\n const newRate = current + (Math.random() - 0.5);\r\n document.getElementById('zakat-gold-rate').value = newRate.toFixed(2);\r\n \r\n icon.classList.remove('fa-spin');\r\n zakatCalculate();\r\n }\r\n \r\n // Reset form\r\n function zakatResetForm() {\r\n document.querySelectorAll('input[type=\"number\"]').forEach(input => input.value = '');\r\n donationBasket = [];\r\n charityProjects.forEach(p => p.selected = false);\r\n loadCharityProjects();\r\n zakatCalculate();\r\n }\r\n \r\n // Save calculation\r\n function zakatSaveCalculation() {\r\n const total = document.getElementById('zakat-total-assets').textContent;\r\n const zakat = document.getElementById('zakat-amount').textContent;\r\n \r\n alert(`Calculation saved:\\nTotal wealth: ${total}\\nObligatory Zakat: ${zakat}`);\r\n }\r\n \r\n // Checkout\r\n function zakatCheckout() {\r\n const total = donationBasket.reduce((sum, p) => sum + p.cost, 0);\r\n if (total === 0) {\r\n alert('Please add projects to the donation basket first');\r\n return;\r\n }\r\n \r\n alert(`You will be redirected to the payment page to complete your donation of ${total.toLocaleString()} $`);\r\n // In production: window.location.href = 'payment.html';\r\n }\r\n \r\n // Redirect to payment\r\n function zakatRedirectToPayment() {\r\n const zakatAmount = document.getElementById('zakat-amount').textContent;\r\n if (zakatAmount === '0.00 $') {\r\n alert('Please enter the amount first to calculate Zakat');\r\n return;\r\n }\r\n \r\n alert(`You will be redirected to the payment page to complete your donation of ${zakatAmount}`);\r\n // In production: window.location.href = 'payment.html?amount=' + encodeURIComponent(zakatAmount);\r\n }\r\n \r\n // Intersection Observer for animations\r\n document.addEventListener('DOMContentLoaded', () => {\r\n // Initialize animations\r\n const reveals = document.querySelectorAll('.zakat-reveal');\r\n const obs = new IntersectionObserver((entries) => {\r\n entries.forEach(e => {\r\n if (e.isIntersecting) e.target.classList.add('active');\r\n });\r\n }, { threshold: 0.1 });\r\n reveals.forEach(r => obs.observe(r));\r\n \r\n // Initialize calculation\r\n zakatCalculate();\r\n \r\n // Load initial nisab value\r\n const goldRate = parseFloat(document.getElementById('zakat-gold-rate').value) || 0;\r\n const nisab = 85 * goldRate;\r\n document.getElementById('zakat-nisab-value').textContent = \r\n nisab.toLocaleString(undefined, { minimumFractionDigits: 2 }) + ' $';\r\n });\r\n \r\n ","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"}]') (Line: 47)
Drupal\gavias_content_builder\Plugin\Field\FieldFormatter\GaviasContentBuilderFormatter->viewElements(Object, 'en') (Line: 89)
Drupal\Core\Field\FormatterBase->view(Object, 'en') (Line: 263)
Drupal\Core\Entity\Entity\EntityViewDisplay->buildMultiple(Array) (Line: 351)
Drupal\Core\Entity\EntityViewBuilder->buildComponents(Array, Array, Array, 'full') (Line: 24)
Drupal\node\NodeViewBuilder->buildComponents(Array, Array, Array, 'full') (Line: 293)
Drupal\Core\Entity\EntityViewBuilder->buildMultiple(Array) (Line: 250)
Drupal\Core\Entity\EntityViewBuilder->build(Array)
call_user_func_array(Array, Array) (Line: 100)
Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. Support for this callback implementation is deprecated in 8.8.0 and will be removed in Drupal 9.0.0. See https://www.drupal.org/node/2966725', 'silenced_deprecation', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 781)
Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 372)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 200)
Drupal\Core\Render\Renderer->render(Array, ) (Line: 226)
Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 573)
Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 227)
Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 117)
Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90)
Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object)
call_user_func(Array, Object, 'kernel.view', Object) (Line: 111)
Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch('kernel.view', Object) (Line: 156)
Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 68)
Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 57)
Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 47)
Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191)
Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128)
Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82)
Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 47)
Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 52)
Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23)
Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 708)
Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Deprecated function: implode(): Passing glue string after array is deprecated. Swap the parameters in element_gva_column->render_content() (line 463 of themes/gavias_kunco/gva_content_builder/gva_column.php).
element_gva_column->render_content(Array, '
Cash & Deposits
Gold & Silver
Stocks & Trade
Charity Projects
-->
Cash & Bank Deposits
Cash on hand
Bank deposits & balances
Receivables (debts owed to you)
Debts you expect to recover
Payables (debts you owe)
Deducted from total wealth
Gold, Silver & Jewelry
Gold weight (grams)
Exceeding personal use
Gold karat
24 Karat (Pure)
22 Karat
21 Karat
18 Karat
Silver weight (grams)
Today's gold price
Price per gram in USD
Nisab Calculator
Nisab (Gold)
85 grams
Nisab (Silver)
595 grams
Value in USD
$6,502.50
Business & Investment Assets
Current stock value
Trade goods
Merchandise intended for sale
Investment properties
Other assets
Choose Your Charity Projects
You can distribute your Zakat across multiple charity projects as you wish
Donation Basket
No projects added yet
Total allocated amount
0.00 $
Proceed to Donate
Conditions for Zakat Obligation
<ul class="space-y-3 text-gray-600">
<li class="flex items-start gap-3">
Reaching the Nisab (equivalent to 85 grams of 24k gold)
</li>
<li class="flex items-start gap-3">
Passage of one lunar year (Hawl) over the wealth
</li>
<li class="flex items-start gap-3">
Full ownership and ability to dispose of the wealth
</li>
</ul>
Wijdan's Trust
At Wijdan Charity, we are committed to disbursing Zakat to its eight legitimate channels under the supervision of specialized Sharia committees, ensuring the highest standards of transparency and traceability.
Calculation Summary
Total Zakatable Wealth
0.00 $
Current Nisab
6,502.50 $
Obligatory Zakat (2.5%)
0.00 $
Enter amount to verify
<a href="https://wa.me/905057763103" class="sponsorships-btn-secondary sponsorships-btn-full mt-4" target="_blank">
Contact us on WhatsApp for consultation and donation
</a>
All calculations are based on global gold prices and the latest Sharia rulings. We recommend consulting scholars for precise jurisprudential matters.
Reset
Save Calculation
') (Line: 110)
gavias_content_builder_render_element('gva_column', Array, '
Cash & Deposits
Gold & Silver
Stocks & Trade
Charity Projects
-->
Cash & Bank Deposits
Cash on hand
Bank deposits & balances
Receivables (debts owed to you)
Debts you expect to recover
Payables (debts you owe)
Deducted from total wealth
Gold, Silver & Jewelry
Gold weight (grams)
Exceeding personal use
Gold karat
24 Karat (Pure)
22 Karat
21 Karat
18 Karat
Silver weight (grams)
Today's gold price
Price per gram in USD
Nisab Calculator
Nisab (Gold)
85 grams
Nisab (Silver)
595 grams
Value in USD
$6,502.50
Business & Investment Assets
Current stock value
Trade goods
Merchandise intended for sale
Investment properties
Other assets
Choose Your Charity Projects
You can distribute your Zakat across multiple charity projects as you wish
Donation Basket
No projects added yet
Total allocated amount
0.00 $
Proceed to Donate
Conditions for Zakat Obligation
<ul class="space-y-3 text-gray-600">
<li class="flex items-start gap-3">
Reaching the Nisab (equivalent to 85 grams of 24k gold)
</li>
<li class="flex items-start gap-3">
Passage of one lunar year (Hawl) over the wealth
</li>
<li class="flex items-start gap-3">
Full ownership and ability to dispose of the wealth
</li>
</ul>
Wijdan's Trust
At Wijdan Charity, we are committed to disbursing Zakat to its eight legitimate channels under the supervision of specialized Sharia committees, ensuring the highest standards of transparency and traceability.
Calculation Summary
Total Zakatable Wealth
0.00 $
Current Nisab
6,502.50 $
Obligatory Zakat (2.5%)
0.00 $
Enter amount to verify
<a href="https://wa.me/905057763103" class="sponsorships-btn-secondary sponsorships-btn-full mt-4" target="_blank">
Contact us on WhatsApp for consultation and donation
</a>
All calculations are based on global gold prices and the latest Sharia rulings. We recommend consulting scholars for precise jurisprudential matters.
Reset
Save Calculation
') (Line: 58)
gavias_content_builder_render_el(Array) (Line: 22)
gavias_content_builder_frontend('[{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","padding_top":"0","padding_bottom":"0","margin_top":"0","margin_bottom":"0","layout":"container-fw","class":"aboutus"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"content":"\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n The Third Pillar of Islam\r\n Smart Zakat CalculatorAccurate Calculation.. Great Impact\r\n \r\n \r\n A comprehensive calculator to compute your Zakat according to the latest prices and soundest religious rulings, designed to help you fulfill your duty with precision and confidence.\r\n \r\n \r\n \r\n \r\n \r\n Today's Nisab (Gold)\r\n 85 grams\r\n \r\n \r\n \r\n \r\n Equivalent to $6,502.50 based on current gold price\r\n \r\n \r\n \r\n \r\n ","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"},{"settings":{"element":"gva_column","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","class":"zakatt"},"col_lg":12,"elements":[{"settings":{"content":"\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n Cash & Deposits\r\n \r\n \r\n \r\n Gold & Silver\r\n \r\n \r\n \r\n Stocks & Trade\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n Cash & Bank Deposits\r\n \r\n \r\n \r\n \r\n Cash on hand\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Bank deposits & balances\r\n \r\n \r\n \r\n \r\n \r\n \r\n Receivables (debts owed to you)\r\n \r\n \r\n \r\n \r\n Debts you expect to recover\r\n \r\n \r\n Payables (debts you owe)\r\n \r\n \r\n \r\n \r\n Deducted from total wealth\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n Gold, Silver & Jewelry\r\n \r\n \r\n \r\n Gold weight (grams)\r\n \r\n \r\n \r\n \r\n Exceeding personal use\r\n \r\n \r\n Gold karat\r\n \r\n \r\n 24 Karat (Pure)\r\n 22 Karat\r\n 21 Karat\r\n 18 Karat\r\n \r\n \r\n \r\n \r\n \r\n Silver weight (grams)\r\n \r\n \r\n \r\n \r\n \r\n \r\n Today's gold price\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Price per gram in USD\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Nisab Calculator\r\n \r\n \r\n \r\n Nisab (Gold)\r\n 85 grams\r\n \r\n \r\n Nisab (Silver)\r\n 595 grams\r\n \r\n \r\n Value in USD\r\n $6,502.50\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n Business & Investment Assets\r\n \r\n \r\n \r\n Current stock value\r\n \r\n \r\n \r\n \r\n \r\n \r\n Trade goods\r\n \r\n \r\n \r\n \r\n Merchandise intended for sale\r\n \r\n \r\n Investment properties\r\n \r\n \r\n \r\n \r\n \r\n \r\n Other assets\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n Choose Your Charity Projects\r\n \r\n You can distribute your Zakat across multiple charity projects as you wish\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Donation Basket\r\n \r\n \r\n No projects added yet\r\n \r\n \r\n \r\n Total allocated amount\r\n 0.00 $\r\n \r\n \r\n Proceed to Donate\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n Conditions for Zakat Obligation\r\n \r\n <ul>\r\n <li>\r\n \r\n Reaching the Nisab (equivalent to 85 grams of 24k gold)\r\n </li>\r\n <li>\r\n \r\n Passage of one lunar year (Hawl) over the wealth\r\n </li>\r\n <li>\r\n \r\n Full ownership and ability to dispose of the wealth\r\n </li>\r\n </ul>\r\n \r\n \r\n \r\n \r\n Wijdan's Trust\r\n \r\n \r\n At Wijdan Charity, we are committed to disbursing Zakat to its eight legitimate channels under the supervision of specialized Sharia committees, ensuring the highest standards of transparency and traceability.\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n Calculation Summary\r\n \r\n\r\n \r\n \r\n Total Zakatable Wealth\r\n 0.00 $\r\n \r\n \r\n Current Nisab\r\n 6,502.50 $\r\n \r\n \r\n\r\n \r\n Obligatory Zakat (2.5%)\r\n 0.00 $\r\n \r\n \r\n Enter amount to verify\r\n \r\n \r\n\r\n \r\n <a>\r\n \r\n Contact us on WhatsApp for consultation and donation\r\n </a>\r\n \r\n\r\n \r\n All calculations are based on global gold prices and the latest Sharia rulings. We recommend consulting scholars for precise jurisprudential matters.\r\n \r\n \r\n \r\n \r\n \r\n Reset\r\n \r\n \r\n Save Calculation\r\n \r\n \r\n \r\n \r\n \r\n \r\n ","animate_delay":"0","el_class":"zakatt"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"},{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"content":"\r\n // Initialize charity projects\r\n const charityProjects = [\r\n {\r\n id: 1,\r\n title: \"Iftar for Fasting Person\",\r\n description: \"Providing Ramadan Iftar meals for needy families\",\r\n icon: \"fa-utensils\",\r\n cost: 500,\r\n selected: false\r\n },\r\n {\r\n id: 2,\r\n title: \"Winter Clothing\",\r\n description: \"Distributing winter clothes for children and needy families\",\r\n icon: \"fa-shirt\",\r\n cost: 300,\r\n selected: false\r\n },\r\n {\r\n id: 3,\r\n title: \"Water Supply\",\r\n description: \"Digging wells and providing clean drinking water\",\r\n icon: \"fa-droplet\",\r\n cost: 1000,\r\n selected: false\r\n },\r\n {\r\n id: 4,\r\n title: \"Orphan Education\",\r\n description: \"Educational support for orphans and school supplies\",\r\n icon: \"fa-graduation-cap\",\r\n cost: 400,\r\n selected: false\r\n },\r\n {\r\n id: 5,\r\n title: \"Patient Treatment\",\r\n description: \"Covering treatment expenses for unable families\",\r\n icon: \"fa-heart-pulse\",\r\n cost: 800,\r\n selected: false\r\n },\r\n {\r\n id: 6,\r\n title: \"Widow Care\",\r\n description: \"Monthly support for widows and their children\",\r\n icon: \"fa-hand-holding-heart\",\r\n cost: 600,\r\n selected: false\r\n }\r\n ];\r\n\r\n // Donation basket\r\n let donationBasket = [];\r\n \r\n // Tab system\r\n function zakatSwitchTab(tab) {\r\n // Update tabs\r\n document.querySelectorAll('.zakat-tab-btn').forEach(btn => btn.classList.remove('active'));\r\n document.querySelectorAll('.zakat-calc-section').forEach(sec => sec.classList.add('zakat-hidden'));\r\n \r\n // Activate selected tab\r\n document.getElementById('zakat-tab-' + tab).classList.add('active');\r\n document.getElementById('zakat-section-' + tab).classList.remove('zakat-hidden');\r\n \r\n // Load charity projects if on charity tab\r\n if (tab === 'charity') {\r\n loadCharityProjects();\r\n }\r\n \r\n // Add animation\r\n const activeSection = document.getElementById('zakat-section-' + tab);\r\n activeSection.classList.add('zakat-fade-in');\r\n }\r\n \r\n // Load charity projects\r\n function loadCharityProjects() {\r\n const container = document.getElementById('charity-projects-container');\r\n container.innerHTML = '';\r\n \r\n charityProjects.forEach(project => {\r\n const projectElement = document.createElement('div');\r\n projectElement.className = `zakat-charity-card ${project.selected ? 'border-brand-secondary' : ''}`;\r\n projectElement.innerHTML = `\r\n \r\n \r\n \r\n ${project.title}\r\n ${project.description}\r\n \r\n ${project.cost.toLocaleString()} $\r\n \r\n ${project.selected ? 'Added' : 'Add'}\r\n \r\n \r\n `;\r\n container.appendChild(projectElement);\r\n });\r\n \r\n updateBasketDisplay();\r\n }\r\n \r\n // Toggle charity project selection\r\n function toggleCharityProject(projectId) {\r\n const project = charityProjects.find(p => p.id === projectId);\r\n project.selected = !project.selected;\r\n \r\n if (project.selected) {\r\n donationBasket.push(project);\r\n } else {\r\n donationBasket = donationBasket.filter(p => p.id !== projectId);\r\n }\r\n \r\n loadCharityProjects();\r\n updateBasketDisplay();\r\n }\r\n \r\n // Update donation basket display\r\n function updateBasketDisplay() {\r\n const container = document.getElementById('donation-basket-items');\r\n const totalElement = document.getElementById('basket-total');\r\n \r\n if (donationBasket.length === 0) {\r\n container.innerHTML = 'No projects added yet';\r\n totalElement.textContent = '0.00 $';\r\n return;\r\n }\r\n \r\n let total = 0;\r\n let itemsHTML = '';\r\n \r\n donationBasket.forEach(project => {\r\n total += project.cost;\r\n itemsHTML += `\r\n \r\n \r\n ${project.title}\r\n ${project.description}\r\n \r\n \r\n ${project.cost.toLocaleString()} $\r\n \r\n \r\n \r\n \r\n \r\n `;\r\n });\r\n \r\n container.innerHTML = itemsHTML;\r\n totalElement.textContent = total.toLocaleString(undefined, { minimumFractionDigits: 2 }) + ' $';\r\n }\r\n \r\n // Remove from basket\r\n function removeFromBasket(projectId) {\r\n const project = charityProjects.find(p => p.id === projectId);\r\n if (project) {\r\n project.selected = false;\r\n }\r\n donationBasket = donationBasket.filter(p => p.id !== projectId);\r\n loadCharityProjects();\r\n }\r\n \r\n // Enhanced Calculation\r\n function zakatCalculate() {\r\n // Money\r\n const cash = parseFloat(document.getElementById('zakat-cash-money').value) || 0;\r\n const bank = parseFloat(document.getElementById('zakat-bank-money').value) || 0;\r\n const debtsToMe = parseFloat(document.getElementById('zakat-debts-to-me').value) || 0;\r\n const debtsFromMe = parseFloat(document.getElementById('zakat-debts-from-me').value) || 0;\r\n \r\n // Gold/Silver\r\n const goldW = parseFloat(document.getElementById('zakat-gold-weight').value) || 0;\r\n const carat = parseFloat(document.getElementById('zakat-gold-carat').value) || 0;\r\n const goldRate = parseFloat(document.getElementById('zakat-gold-rate').value) || 0;\r\n const silverW = parseFloat(document.getElementById('zakat-silver-weight').value) || 0;\r\n const silverRate = 0.95;\r\n \r\n // Stocks & Business\r\n const stocks = parseFloat(document.getElementById('zakat-stocks-value').value) || 0;\r\n const trade = parseFloat(document.getElementById('zakat-trade-goods').value) || 0;\r\n const realEstate = parseFloat(document.getElementById('zakat-real-estate')?.value) || 0;\r\n const otherAssets = parseFloat(document.getElementById('zakat-other-assets')?.value) || 0;\r\n \r\n // Calculations\r\n const gold24Equivalent = goldW * (carat / 24);\r\n const moneyAssets = Math.max(0, (cash + bank + debtsToMe) - debtsFromMe);\r\n const metalAssets = (gold24Equivalent * goldRate) + (silverW * silverRate);\r\n const businessAssets = stocks + trade + realEstate + otherAssets;\r\n const total = Math.max(0, moneyAssets + metalAssets + businessAssets);\r\n \r\n // UI Update - Total\r\n document.getElementById('zakat-total-assets').textContent = \r\n total.toLocaleString(undefined, { minimumFractionDigits: 2 }) + ' $';\r\n \r\n // Nisab Logic (85g Gold 24k)\r\n const nisab = 85 * goldRate;\r\n document.getElementById('zakat-nisab-value').textContent = \r\n nisab.toLocaleString(undefined, { minimumFractionDigits: 2 }) + ' $';\r\n \r\n // Update nisab displays\r\n document.getElementById('nisab-value-display').textContent = \r\n nisab.toLocaleString(undefined, { minimumFractionDigits: 2 }) + ' $';\r\n document.getElementById('current-nisab').textContent = '85 grams';\r\n document.getElementById('nisab-value').textContent = nisab.toLocaleString(undefined, { minimumFractionDigits: 2 }) + ' $';\r\n \r\n // Update progress bar\r\n const nisabProgress = Math.min(100, (total / nisab) * 100);\r\n document.getElementById('nisab-progress').style.width = `${nisabProgress}%`;\r\n \r\n const zakatAmountEl = document.getElementById('zakat-amount');\r\n const statusBadge = document.getElementById('zakat-status-badge');\r\n \r\n if (total >= nisab && total > 0) {\r\n const zakat = total * 0.025;\r\n zakatAmountEl.textContent = zakat.toLocaleString(undefined, { minimumFractionDigits: 2 }) + ' $';\r\n \r\n statusBadge.innerHTML = ' Zakat is obligatory (nisab reached)';\r\n statusBadge.className = \"inline-flex items-center gap-2 px-6 py-3 rounded-full bg-green-500/20 border border-green-500/30 text-green-300 mt-4\";\r\n } else {\r\n zakatAmountEl.textContent = '0.00 $';\r\n \r\n if (total > 0) {\r\n statusBadge.innerHTML = ' Nisab not yet reached';\r\n statusBadge.className = \"inline-flex items-center gap-2 px-6 py-3 rounded-full bg-yellow-500/20 border border-yellow-500/30 text-yellow-300 mt-4\";\r\n } else {\r\n statusBadge.innerHTML = ' Enter amount to verify';\r\n statusBadge.className = \"inline-flex items-center gap-2 px-6 py-3 rounded-full bg-white/10 border border-white/20 text-white mt-4\";\r\n }\r\n }\r\n }\r\n \r\n // Fetch live rates\r\n async function zakatFetchRates() {\r\n const icon = document.getElementById('zakat-refresh-icon');\r\n icon.classList.add('fa-spin');\r\n \r\n // Simulate API call\r\n await new Promise(r => setTimeout(r, 1000));\r\n \r\n // Dynamic change for effect (simulated rate change)\r\n const current = parseFloat(document.getElementById('zakat-gold-rate').value);\r\n const newRate = current + (Math.random() - 0.5);\r\n document.getElementById('zakat-gold-rate').value = newRate.toFixed(2);\r\n \r\n icon.classList.remove('fa-spin');\r\n zakatCalculate();\r\n }\r\n \r\n // Reset form\r\n function zakatResetForm() {\r\n document.querySelectorAll('input[type=\"number\"]').forEach(input => input.value = '');\r\n donationBasket = [];\r\n charityProjects.forEach(p => p.selected = false);\r\n loadCharityProjects();\r\n zakatCalculate();\r\n }\r\n \r\n // Save calculation\r\n function zakatSaveCalculation() {\r\n const total = document.getElementById('zakat-total-assets').textContent;\r\n const zakat = document.getElementById('zakat-amount').textContent;\r\n \r\n alert(`Calculation saved:\\nTotal wealth: ${total}\\nObligatory Zakat: ${zakat}`);\r\n }\r\n \r\n // Checkout\r\n function zakatCheckout() {\r\n const total = donationBasket.reduce((sum, p) => sum + p.cost, 0);\r\n if (total === 0) {\r\n alert('Please add projects to the donation basket first');\r\n return;\r\n }\r\n \r\n alert(`You will be redirected to the payment page to complete your donation of ${total.toLocaleString()} $`);\r\n // In production: window.location.href = 'payment.html';\r\n }\r\n \r\n // Redirect to payment\r\n function zakatRedirectToPayment() {\r\n const zakatAmount = document.getElementById('zakat-amount').textContent;\r\n if (zakatAmount === '0.00 $') {\r\n alert('Please enter the amount first to calculate Zakat');\r\n return;\r\n }\r\n \r\n alert(`You will be redirected to the payment page to complete your donation of ${zakatAmount}`);\r\n // In production: window.location.href = 'payment.html?amount=' + encodeURIComponent(zakatAmount);\r\n }\r\n \r\n // Intersection Observer for animations\r\n document.addEventListener('DOMContentLoaded', () => {\r\n // Initialize animations\r\n const reveals = document.querySelectorAll('.zakat-reveal');\r\n const obs = new IntersectionObserver((entries) => {\r\n entries.forEach(e => {\r\n if (e.isIntersecting) e.target.classList.add('active');\r\n });\r\n }, { threshold: 0.1 });\r\n reveals.forEach(r => obs.observe(r));\r\n \r\n // Initialize calculation\r\n zakatCalculate();\r\n \r\n // Load initial nisab value\r\n const goldRate = parseFloat(document.getElementById('zakat-gold-rate').value) || 0;\r\n const nisab = 85 * goldRate;\r\n document.getElementById('zakat-nisab-value').textContent = \r\n nisab.toLocaleString(undefined, { minimumFractionDigits: 2 }) + ' $';\r\n });\r\n \r\n ","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"}]') (Line: 47)
Drupal\gavias_content_builder\Plugin\Field\FieldFormatter\GaviasContentBuilderFormatter->viewElements(Object, 'en') (Line: 89)
Drupal\Core\Field\FormatterBase->view(Object, 'en') (Line: 263)
Drupal\Core\Entity\Entity\EntityViewDisplay->buildMultiple(Array) (Line: 351)
Drupal\Core\Entity\EntityViewBuilder->buildComponents(Array, Array, Array, 'full') (Line: 24)
Drupal\node\NodeViewBuilder->buildComponents(Array, Array, Array, 'full') (Line: 293)
Drupal\Core\Entity\EntityViewBuilder->buildMultiple(Array) (Line: 250)
Drupal\Core\Entity\EntityViewBuilder->build(Array)
call_user_func_array(Array, Array) (Line: 100)
Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. Support for this callback implementation is deprecated in 8.8.0 and will be removed in Drupal 9.0.0. See https://www.drupal.org/node/2966725', 'silenced_deprecation', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 781)
Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 372)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 200)
Drupal\Core\Render\Renderer->render(Array, ) (Line: 226)
Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 573)
Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 227)
Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 117)
Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90)
Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object)
call_user_func(Array, Object, 'kernel.view', Object) (Line: 111)
Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch('kernel.view', Object) (Line: 156)
Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 68)
Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 57)
Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 47)
Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191)
Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128)
Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82)
Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 47)
Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 52)
Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23)
Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 708)
Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Deprecated function: implode(): Passing glue string after array is deprecated. Swap the parameters in element_gva_column->render_content() (line 462 of themes/gavias_kunco/gva_content_builder/gva_column.php).
element_gva_column->render_content(Array, '
// Initialize charity projects
const charityProjects = [
{
id: 1,
title: "Iftar for Fasting Person",
description: "Providing Ramadan Iftar meals for needy families",
icon: "fa-utensils",
cost: 500,
selected: false
},
{
id: 2,
title: "Winter Clothing",
description: "Distributing winter clothes for children and needy families",
icon: "fa-shirt",
cost: 300,
selected: false
},
{
id: 3,
title: "Water Supply",
description: "Digging wells and providing clean drinking water",
icon: "fa-droplet",
cost: 1000,
selected: false
},
{
id: 4,
title: "Orphan Education",
description: "Educational support for orphans and school supplies",
icon: "fa-graduation-cap",
cost: 400,
selected: false
},
{
id: 5,
title: "Patient Treatment",
description: "Covering treatment expenses for unable families",
icon: "fa-heart-pulse",
cost: 800,
selected: false
},
{
id: 6,
title: "Widow Care",
description: "Monthly support for widows and their children",
icon: "fa-hand-holding-heart",
cost: 600,
selected: false
}
];
// Donation basket
let donationBasket = [];
// Tab system
function zakatSwitchTab(tab) {
// Update tabs
document.querySelectorAll('.zakat-tab-btn').forEach(btn => btn.classList.remove('active'));
document.querySelectorAll('.zakat-calc-section').forEach(sec => sec.classList.add('zakat-hidden'));
// Activate selected tab
document.getElementById('zakat-tab-' + tab).classList.add('active');
document.getElementById('zakat-section-' + tab).classList.remove('zakat-hidden');
// Load charity projects if on charity tab
if (tab === 'charity') {
loadCharityProjects();
}
// Add animation
const activeSection = document.getElementById('zakat-section-' + tab);
activeSection.classList.add('zakat-fade-in');
}
// Load charity projects
function loadCharityProjects() {
const container = document.getElementById('charity-projects-container');
container.innerHTML = '';
charityProjects.forEach(project => {
const projectElement = document.createElement('div');
projectElement.className = `zakat-charity-card ${project.selected ? 'border-brand-secondary' : ''}`;
projectElement.innerHTML = `
${project.title}
${project.description}
${project.cost.toLocaleString()} $
${project.selected ? 'Added' : 'Add'}
`;
container.appendChild(projectElement);
});
updateBasketDisplay();
}
// Toggle charity project selection
function toggleCharityProject(projectId) {
const project = charityProjects.find(p => p.id === projectId);
project.selected = !project.selected;
if (project.selected) {
donationBasket.push(project);
} else {
donationBasket = donationBasket.filter(p => p.id !== projectId);
}
loadCharityProjects();
updateBasketDisplay();
}
// Update donation basket display
function updateBasketDisplay() {
const container = document.getElementById('donation-basket-items');
const totalElement = document.getElementById('basket-total');
if (donationBasket.length === 0) {
container.innerHTML = 'No projects added yet';
totalElement.textContent = '0.00 $';
return;
}
let total = 0;
let itemsHTML = '';
donationBasket.forEach(project => {
total += project.cost;
itemsHTML += `
${project.title}
${project.description}
${project.cost.toLocaleString()} $
`;
});
container.innerHTML = itemsHTML;
totalElement.textContent = total.toLocaleString(undefined, { minimumFractionDigits: 2 }) + ' $';
}
// Remove from basket
function removeFromBasket(projectId) {
const project = charityProjects.find(p => p.id === projectId);
if (project) {
project.selected = false;
}
donationBasket = donationBasket.filter(p => p.id !== projectId);
loadCharityProjects();
}
// Enhanced Calculation
function zakatCalculate() {
// Money
const cash = parseFloat(document.getElementById('zakat-cash-money').value) || 0;
const bank = parseFloat(document.getElementById('zakat-bank-money').value) || 0;
const debtsToMe = parseFloat(document.getElementById('zakat-debts-to-me').value) || 0;
const debtsFromMe = parseFloat(document.getElementById('zakat-debts-from-me').value) || 0;
// Gold/Silver
const goldW = parseFloat(document.getElementById('zakat-gold-weight').value) || 0;
const carat = parseFloat(document.getElementById('zakat-gold-carat').value) || 0;
const goldRate = parseFloat(document.getElementById('zakat-gold-rate').value) || 0;
const silverW = parseFloat(document.getElementById('zakat-silver-weight').value) || 0;
const silverRate = 0.95;
// Stocks & Business
const stocks = parseFloat(document.getElementById('zakat-stocks-value').value) || 0;
const trade = parseFloat(document.getElementById('zakat-trade-goods').value) || 0;
const realEstate = parseFloat(document.getElementById('zakat-real-estate')?.value) || 0;
const otherAssets = parseFloat(document.getElementById('zakat-other-assets')?.value) || 0;
// Calculations
const gold24Equivalent = goldW * (carat / 24);
const moneyAssets = Math.max(0, (cash + bank + debtsToMe) - debtsFromMe);
const metalAssets = (gold24Equivalent * goldRate) + (silverW * silverRate);
const businessAssets = stocks + trade + realEstate + otherAssets;
const total = Math.max(0, moneyAssets + metalAssets + businessAssets);
// UI Update - Total
document.getElementById('zakat-total-assets').textContent =
total.toLocaleString(undefined, { minimumFractionDigits: 2 }) + ' $';
// Nisab Logic (85g Gold 24k)
const nisab = 85 * goldRate;
document.getElementById('zakat-nisab-value').textContent =
nisab.toLocaleString(undefined, { minimumFractionDigits: 2 }) + ' $';
// Update nisab displays
document.getElementById('nisab-value-display').textContent =
nisab.toLocaleString(undefined, { minimumFractionDigits: 2 }) + ' $';
document.getElementById('current-nisab').textContent = '85 grams';
document.getElementById('nisab-value').textContent = nisab.toLocaleString(undefined, { minimumFractionDigits: 2 }) + ' $';
// Update progress bar
const nisabProgress = Math.min(100, (total / nisab) * 100);
document.getElementById('nisab-progress').style.width = `${nisabProgress}%`;
const zakatAmountEl = document.getElementById('zakat-amount');
const statusBadge = document.getElementById('zakat-status-badge');
if (total >= nisab && total > 0) {
const zakat = total * 0.025;
zakatAmountEl.textContent = zakat.toLocaleString(undefined, { minimumFractionDigits: 2 }) + ' $';
statusBadge.innerHTML = ' Zakat is obligatory (nisab reached)';
statusBadge.className = "inline-flex items-center gap-2 px-6 py-3 rounded-full bg-green-500/20 border border-green-500/30 text-green-300 mt-4";
} else {
zakatAmountEl.textContent = '0.00 $';
if (total > 0) {
statusBadge.innerHTML = ' Nisab not yet reached';
statusBadge.className = "inline-flex items-center gap-2 px-6 py-3 rounded-full bg-yellow-500/20 border border-yellow-500/30 text-yellow-300 mt-4";
} else {
statusBadge.innerHTML = ' Enter amount to verify';
statusBadge.className = "inline-flex items-center gap-2 px-6 py-3 rounded-full bg-white/10 border border-white/20 text-white mt-4";
}
}
}
// Fetch live rates
async function zakatFetchRates() {
const icon = document.getElementById('zakat-refresh-icon');
icon.classList.add('fa-spin');
// Simulate API call
await new Promise(r => setTimeout(r, 1000));
// Dynamic change for effect (simulated rate change)
const current = parseFloat(document.getElementById('zakat-gold-rate').value);
const newRate = current + (Math.random() - 0.5);
document.getElementById('zakat-gold-rate').value = newRate.toFixed(2);
icon.classList.remove('fa-spin');
zakatCalculate();
}
// Reset form
function zakatResetForm() {
document.querySelectorAll('input[type="number"]').forEach(input => input.value = '');
donationBasket = [];
charityProjects.forEach(p => p.selected = false);
loadCharityProjects();
zakatCalculate();
}
// Save calculation
function zakatSaveCalculation() {
const total = document.getElementById('zakat-total-assets').textContent;
const zakat = document.getElementById('zakat-amount').textContent;
alert(`Calculation saved:\nTotal wealth: ${total}\nObligatory Zakat: ${zakat}`);
}
// Checkout
function zakatCheckout() {
const total = donationBasket.reduce((sum, p) => sum + p.cost, 0);
if (total === 0) {
alert('Please add projects to the donation basket first');
return;
}
alert(`You will be redirected to the payment page to complete your donation of ${total.toLocaleString()} $`);
// In production: window.location.href = 'payment.html';
}
// Redirect to payment
function zakatRedirectToPayment() {
const zakatAmount = document.getElementById('zakat-amount').textContent;
if (zakatAmount === '0.00 $') {
alert('Please enter the amount first to calculate Zakat');
return;
}
alert(`You will be redirected to the payment page to complete your donation of ${zakatAmount}`);
// In production: window.location.href = 'payment.html?amount=' + encodeURIComponent(zakatAmount);
}
// Intersection Observer for animations
document.addEventListener('DOMContentLoaded', () => {
// Initialize animations
const reveals = document.querySelectorAll('.zakat-reveal');
const obs = new IntersectionObserver((entries) => {
entries.forEach(e => {
if (e.isIntersecting) e.target.classList.add('active');
});
}, { threshold: 0.1 });
reveals.forEach(r => obs.observe(r));
// Initialize calculation
zakatCalculate();
// Load initial nisab value
const goldRate = parseFloat(document.getElementById('zakat-gold-rate').value) || 0;
const nisab = 85 * goldRate;
document.getElementById('zakat-nisab-value').textContent =
nisab.toLocaleString(undefined, { minimumFractionDigits: 2 }) + ' $';
});
') (Line: 110)
gavias_content_builder_render_element('gva_column', Array, '
// Initialize charity projects
const charityProjects = [
{
id: 1,
title: "Iftar for Fasting Person",
description: "Providing Ramadan Iftar meals for needy families",
icon: "fa-utensils",
cost: 500,
selected: false
},
{
id: 2,
title: "Winter Clothing",
description: "Distributing winter clothes for children and needy families",
icon: "fa-shirt",
cost: 300,
selected: false
},
{
id: 3,
title: "Water Supply",
description: "Digging wells and providing clean drinking water",
icon: "fa-droplet",
cost: 1000,
selected: false
},
{
id: 4,
title: "Orphan Education",
description: "Educational support for orphans and school supplies",
icon: "fa-graduation-cap",
cost: 400,
selected: false
},
{
id: 5,
title: "Patient Treatment",
description: "Covering treatment expenses for unable families",
icon: "fa-heart-pulse",
cost: 800,
selected: false
},
{
id: 6,
title: "Widow Care",
description: "Monthly support for widows and their children",
icon: "fa-hand-holding-heart",
cost: 600,
selected: false
}
];
// Donation basket
let donationBasket = [];
// Tab system
function zakatSwitchTab(tab) {
// Update tabs
document.querySelectorAll('.zakat-tab-btn').forEach(btn => btn.classList.remove('active'));
document.querySelectorAll('.zakat-calc-section').forEach(sec => sec.classList.add('zakat-hidden'));
// Activate selected tab
document.getElementById('zakat-tab-' + tab).classList.add('active');
document.getElementById('zakat-section-' + tab).classList.remove('zakat-hidden');
// Load charity projects if on charity tab
if (tab === 'charity') {
loadCharityProjects();
}
// Add animation
const activeSection = document.getElementById('zakat-section-' + tab);
activeSection.classList.add('zakat-fade-in');
}
// Load charity projects
function loadCharityProjects() {
const container = document.getElementById('charity-projects-container');
container.innerHTML = '';
charityProjects.forEach(project => {
const projectElement = document.createElement('div');
projectElement.className = `zakat-charity-card ${project.selected ? 'border-brand-secondary' : ''}`;
projectElement.innerHTML = `
${project.title}
${project.description}
${project.cost.toLocaleString()} $
${project.selected ? 'Added' : 'Add'}
`;
container.appendChild(projectElement);
});
updateBasketDisplay();
}
// Toggle charity project selection
function toggleCharityProject(projectId) {
const project = charityProjects.find(p => p.id === projectId);
project.selected = !project.selected;
if (project.selected) {
donationBasket.push(project);
} else {
donationBasket = donationBasket.filter(p => p.id !== projectId);
}
loadCharityProjects();
updateBasketDisplay();
}
// Update donation basket display
function updateBasketDisplay() {
const container = document.getElementById('donation-basket-items');
const totalElement = document.getElementById('basket-total');
if (donationBasket.length === 0) {
container.innerHTML = 'No projects added yet';
totalElement.textContent = '0.00 $';
return;
}
let total = 0;
let itemsHTML = '';
donationBasket.forEach(project => {
total += project.cost;
itemsHTML += `
${project.title}
${project.description}
${project.cost.toLocaleString()} $
`;
});
container.innerHTML = itemsHTML;
totalElement.textContent = total.toLocaleString(undefined, { minimumFractionDigits: 2 }) + ' $';
}
// Remove from basket
function removeFromBasket(projectId) {
const project = charityProjects.find(p => p.id === projectId);
if (project) {
project.selected = false;
}
donationBasket = donationBasket.filter(p => p.id !== projectId);
loadCharityProjects();
}
// Enhanced Calculation
function zakatCalculate() {
// Money
const cash = parseFloat(document.getElementById('zakat-cash-money').value) || 0;
const bank = parseFloat(document.getElementById('zakat-bank-money').value) || 0;
const debtsToMe = parseFloat(document.getElementById('zakat-debts-to-me').value) || 0;
const debtsFromMe = parseFloat(document.getElementById('zakat-debts-from-me').value) || 0;
// Gold/Silver
const goldW = parseFloat(document.getElementById('zakat-gold-weight').value) || 0;
const carat = parseFloat(document.getElementById('zakat-gold-carat').value) || 0;
const goldRate = parseFloat(document.getElementById('zakat-gold-rate').value) || 0;
const silverW = parseFloat(document.getElementById('zakat-silver-weight').value) || 0;
const silverRate = 0.95;
// Stocks & Business
const stocks = parseFloat(document.getElementById('zakat-stocks-value').value) || 0;
const trade = parseFloat(document.getElementById('zakat-trade-goods').value) || 0;
const realEstate = parseFloat(document.getElementById('zakat-real-estate')?.value) || 0;
const otherAssets = parseFloat(document.getElementById('zakat-other-assets')?.value) || 0;
// Calculations
const gold24Equivalent = goldW * (carat / 24);
const moneyAssets = Math.max(0, (cash + bank + debtsToMe) - debtsFromMe);
const metalAssets = (gold24Equivalent * goldRate) + (silverW * silverRate);
const businessAssets = stocks + trade + realEstate + otherAssets;
const total = Math.max(0, moneyAssets + metalAssets + businessAssets);
// UI Update - Total
document.getElementById('zakat-total-assets').textContent =
total.toLocaleString(undefined, { minimumFractionDigits: 2 }) + ' $';
// Nisab Logic (85g Gold 24k)
const nisab = 85 * goldRate;
document.getElementById('zakat-nisab-value').textContent =
nisab.toLocaleString(undefined, { minimumFractionDigits: 2 }) + ' $';
// Update nisab displays
document.getElementById('nisab-value-display').textContent =
nisab.toLocaleString(undefined, { minimumFractionDigits: 2 }) + ' $';
document.getElementById('current-nisab').textContent = '85 grams';
document.getElementById('nisab-value').textContent = nisab.toLocaleString(undefined, { minimumFractionDigits: 2 }) + ' $';
// Update progress bar
const nisabProgress = Math.min(100, (total / nisab) * 100);
document.getElementById('nisab-progress').style.width = `${nisabProgress}%`;
const zakatAmountEl = document.getElementById('zakat-amount');
const statusBadge = document.getElementById('zakat-status-badge');
if (total >= nisab && total > 0) {
const zakat = total * 0.025;
zakatAmountEl.textContent = zakat.toLocaleString(undefined, { minimumFractionDigits: 2 }) + ' $';
statusBadge.innerHTML = ' Zakat is obligatory (nisab reached)';
statusBadge.className = "inline-flex items-center gap-2 px-6 py-3 rounded-full bg-green-500/20 border border-green-500/30 text-green-300 mt-4";
} else {
zakatAmountEl.textContent = '0.00 $';
if (total > 0) {
statusBadge.innerHTML = ' Nisab not yet reached';
statusBadge.className = "inline-flex items-center gap-2 px-6 py-3 rounded-full bg-yellow-500/20 border border-yellow-500/30 text-yellow-300 mt-4";
} else {
statusBadge.innerHTML = ' Enter amount to verify';
statusBadge.className = "inline-flex items-center gap-2 px-6 py-3 rounded-full bg-white/10 border border-white/20 text-white mt-4";
}
}
}
// Fetch live rates
async function zakatFetchRates() {
const icon = document.getElementById('zakat-refresh-icon');
icon.classList.add('fa-spin');
// Simulate API call
await new Promise(r => setTimeout(r, 1000));
// Dynamic change for effect (simulated rate change)
const current = parseFloat(document.getElementById('zakat-gold-rate').value);
const newRate = current + (Math.random() - 0.5);
document.getElementById('zakat-gold-rate').value = newRate.toFixed(2);
icon.classList.remove('fa-spin');
zakatCalculate();
}
// Reset form
function zakatResetForm() {
document.querySelectorAll('input[type="number"]').forEach(input => input.value = '');
donationBasket = [];
charityProjects.forEach(p => p.selected = false);
loadCharityProjects();
zakatCalculate();
}
// Save calculation
function zakatSaveCalculation() {
const total = document.getElementById('zakat-total-assets').textContent;
const zakat = document.getElementById('zakat-amount').textContent;
alert(`Calculation saved:\nTotal wealth: ${total}\nObligatory Zakat: ${zakat}`);
}
// Checkout
function zakatCheckout() {
const total = donationBasket.reduce((sum, p) => sum + p.cost, 0);
if (total === 0) {
alert('Please add projects to the donation basket first');
return;
}
alert(`You will be redirected to the payment page to complete your donation of ${total.toLocaleString()} $`);
// In production: window.location.href = 'payment.html';
}
// Redirect to payment
function zakatRedirectToPayment() {
const zakatAmount = document.getElementById('zakat-amount').textContent;
if (zakatAmount === '0.00 $') {
alert('Please enter the amount first to calculate Zakat');
return;
}
alert(`You will be redirected to the payment page to complete your donation of ${zakatAmount}`);
// In production: window.location.href = 'payment.html?amount=' + encodeURIComponent(zakatAmount);
}
// Intersection Observer for animations
document.addEventListener('DOMContentLoaded', () => {
// Initialize animations
const reveals = document.querySelectorAll('.zakat-reveal');
const obs = new IntersectionObserver((entries) => {
entries.forEach(e => {
if (e.isIntersecting) e.target.classList.add('active');
});
}, { threshold: 0.1 });
reveals.forEach(r => obs.observe(r));
// Initialize calculation
zakatCalculate();
// Load initial nisab value
const goldRate = parseFloat(document.getElementById('zakat-gold-rate').value) || 0;
const nisab = 85 * goldRate;
document.getElementById('zakat-nisab-value').textContent =
nisab.toLocaleString(undefined, { minimumFractionDigits: 2 }) + ' $';
});
') (Line: 58)
gavias_content_builder_render_el(Array) (Line: 22)
gavias_content_builder_frontend('[{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","padding_top":"0","padding_bottom":"0","margin_top":"0","margin_bottom":"0","layout":"container-fw","class":"aboutus"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"content":"\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n The Third Pillar of Islam\r\n Smart Zakat CalculatorAccurate Calculation.. Great Impact\r\n \r\n \r\n A comprehensive calculator to compute your Zakat according to the latest prices and soundest religious rulings, designed to help you fulfill your duty with precision and confidence.\r\n \r\n \r\n \r\n \r\n \r\n Today's Nisab (Gold)\r\n 85 grams\r\n \r\n \r\n \r\n \r\n Equivalent to $6,502.50 based on current gold price\r\n \r\n \r\n \r\n \r\n ","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"},{"settings":{"element":"gva_column","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","class":"zakatt"},"col_lg":12,"elements":[{"settings":{"content":"\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n Cash & Deposits\r\n \r\n \r\n \r\n Gold & Silver\r\n \r\n \r\n \r\n Stocks & Trade\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n Cash & Bank Deposits\r\n \r\n \r\n \r\n \r\n Cash on hand\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Bank deposits & balances\r\n \r\n \r\n \r\n \r\n \r\n \r\n Receivables (debts owed to you)\r\n \r\n \r\n \r\n \r\n Debts you expect to recover\r\n \r\n \r\n Payables (debts you owe)\r\n \r\n \r\n \r\n \r\n Deducted from total wealth\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n Gold, Silver & Jewelry\r\n \r\n \r\n \r\n Gold weight (grams)\r\n \r\n \r\n \r\n \r\n Exceeding personal use\r\n \r\n \r\n Gold karat\r\n \r\n \r\n 24 Karat (Pure)\r\n 22 Karat\r\n 21 Karat\r\n 18 Karat\r\n \r\n \r\n \r\n \r\n \r\n Silver weight (grams)\r\n \r\n \r\n \r\n \r\n \r\n \r\n Today's gold price\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Price per gram in USD\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Nisab Calculator\r\n \r\n \r\n \r\n Nisab (Gold)\r\n 85 grams\r\n \r\n \r\n Nisab (Silver)\r\n 595 grams\r\n \r\n \r\n Value in USD\r\n $6,502.50\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n Business & Investment Assets\r\n \r\n \r\n \r\n Current stock value\r\n \r\n \r\n \r\n \r\n \r\n \r\n Trade goods\r\n \r\n \r\n \r\n \r\n Merchandise intended for sale\r\n \r\n \r\n Investment properties\r\n \r\n \r\n \r\n \r\n \r\n \r\n Other assets\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n Choose Your Charity Projects\r\n \r\n You can distribute your Zakat across multiple charity projects as you wish\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Donation Basket\r\n \r\n \r\n No projects added yet\r\n \r\n \r\n \r\n Total allocated amount\r\n 0.00 $\r\n \r\n \r\n Proceed to Donate\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n Conditions for Zakat Obligation\r\n \r\n <ul>\r\n <li>\r\n \r\n Reaching the Nisab (equivalent to 85 grams of 24k gold)\r\n </li>\r\n <li>\r\n \r\n Passage of one lunar year (Hawl) over the wealth\r\n </li>\r\n <li>\r\n \r\n Full ownership and ability to dispose of the wealth\r\n </li>\r\n </ul>\r\n \r\n \r\n \r\n \r\n Wijdan's Trust\r\n \r\n \r\n At Wijdan Charity, we are committed to disbursing Zakat to its eight legitimate channels under the supervision of specialized Sharia committees, ensuring the highest standards of transparency and traceability.\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n Calculation Summary\r\n \r\n\r\n \r\n \r\n Total Zakatable Wealth\r\n 0.00 $\r\n \r\n \r\n Current Nisab\r\n 6,502.50 $\r\n \r\n \r\n\r\n \r\n Obligatory Zakat (2.5%)\r\n 0.00 $\r\n \r\n \r\n Enter amount to verify\r\n \r\n \r\n\r\n \r\n <a>\r\n \r\n Contact us on WhatsApp for consultation and donation\r\n </a>\r\n \r\n\r\n \r\n All calculations are based on global gold prices and the latest Sharia rulings. We recommend consulting scholars for precise jurisprudential matters.\r\n \r\n \r\n \r\n \r\n \r\n Reset\r\n \r\n \r\n Save Calculation\r\n \r\n \r\n \r\n \r\n \r\n \r\n ","animate_delay":"0","el_class":"zakatt"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"},{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"content":"\r\n // Initialize charity projects\r\n const charityProjects = [\r\n {\r\n id: 1,\r\n title: \"Iftar for Fasting Person\",\r\n description: \"Providing Ramadan Iftar meals for needy families\",\r\n icon: \"fa-utensils\",\r\n cost: 500,\r\n selected: false\r\n },\r\n {\r\n id: 2,\r\n title: \"Winter Clothing\",\r\n description: \"Distributing winter clothes for children and needy families\",\r\n icon: \"fa-shirt\",\r\n cost: 300,\r\n selected: false\r\n },\r\n {\r\n id: 3,\r\n title: \"Water Supply\",\r\n description: \"Digging wells and providing clean drinking water\",\r\n icon: \"fa-droplet\",\r\n cost: 1000,\r\n selected: false\r\n },\r\n {\r\n id: 4,\r\n title: \"Orphan Education\",\r\n description: \"Educational support for orphans and school supplies\",\r\n icon: \"fa-graduation-cap\",\r\n cost: 400,\r\n selected: false\r\n },\r\n {\r\n id: 5,\r\n title: \"Patient Treatment\",\r\n description: \"Covering treatment expenses for unable families\",\r\n icon: \"fa-heart-pulse\",\r\n cost: 800,\r\n selected: false\r\n },\r\n {\r\n id: 6,\r\n title: \"Widow Care\",\r\n description: \"Monthly support for widows and their children\",\r\n icon: \"fa-hand-holding-heart\",\r\n cost: 600,\r\n selected: false\r\n }\r\n ];\r\n\r\n // Donation basket\r\n let donationBasket = [];\r\n \r\n // Tab system\r\n function zakatSwitchTab(tab) {\r\n // Update tabs\r\n document.querySelectorAll('.zakat-tab-btn').forEach(btn => btn.classList.remove('active'));\r\n document.querySelectorAll('.zakat-calc-section').forEach(sec => sec.classList.add('zakat-hidden'));\r\n \r\n // Activate selected tab\r\n document.getElementById('zakat-tab-' + tab).classList.add('active');\r\n document.getElementById('zakat-section-' + tab).classList.remove('zakat-hidden');\r\n \r\n // Load charity projects if on charity tab\r\n if (tab === 'charity') {\r\n loadCharityProjects();\r\n }\r\n \r\n // Add animation\r\n const activeSection = document.getElementById('zakat-section-' + tab);\r\n activeSection.classList.add('zakat-fade-in');\r\n }\r\n \r\n // Load charity projects\r\n function loadCharityProjects() {\r\n const container = document.getElementById('charity-projects-container');\r\n container.innerHTML = '';\r\n \r\n charityProjects.forEach(project => {\r\n const projectElement = document.createElement('div');\r\n projectElement.className = `zakat-charity-card ${project.selected ? 'border-brand-secondary' : ''}`;\r\n projectElement.innerHTML = `\r\n \r\n \r\n \r\n ${project.title}\r\n ${project.description}\r\n \r\n ${project.cost.toLocaleString()} $\r\n \r\n ${project.selected ? 'Added' : 'Add'}\r\n \r\n \r\n `;\r\n container.appendChild(projectElement);\r\n });\r\n \r\n updateBasketDisplay();\r\n }\r\n \r\n // Toggle charity project selection\r\n function toggleCharityProject(projectId) {\r\n const project = charityProjects.find(p => p.id === projectId);\r\n project.selected = !project.selected;\r\n \r\n if (project.selected) {\r\n donationBasket.push(project);\r\n } else {\r\n donationBasket = donationBasket.filter(p => p.id !== projectId);\r\n }\r\n \r\n loadCharityProjects();\r\n updateBasketDisplay();\r\n }\r\n \r\n // Update donation basket display\r\n function updateBasketDisplay() {\r\n const container = document.getElementById('donation-basket-items');\r\n const totalElement = document.getElementById('basket-total');\r\n \r\n if (donationBasket.length === 0) {\r\n container.innerHTML = 'No projects added yet';\r\n totalElement.textContent = '0.00 $';\r\n return;\r\n }\r\n \r\n let total = 0;\r\n let itemsHTML = '';\r\n \r\n donationBasket.forEach(project => {\r\n total += project.cost;\r\n itemsHTML += `\r\n \r\n \r\n ${project.title}\r\n ${project.description}\r\n \r\n \r\n ${project.cost.toLocaleString()} $\r\n \r\n \r\n \r\n \r\n \r\n `;\r\n });\r\n \r\n container.innerHTML = itemsHTML;\r\n totalElement.textContent = total.toLocaleString(undefined, { minimumFractionDigits: 2 }) + ' $';\r\n }\r\n \r\n // Remove from basket\r\n function removeFromBasket(projectId) {\r\n const project = charityProjects.find(p => p.id === projectId);\r\n if (project) {\r\n project.selected = false;\r\n }\r\n donationBasket = donationBasket.filter(p => p.id !== projectId);\r\n loadCharityProjects();\r\n }\r\n \r\n // Enhanced Calculation\r\n function zakatCalculate() {\r\n // Money\r\n const cash = parseFloat(document.getElementById('zakat-cash-money').value) || 0;\r\n const bank = parseFloat(document.getElementById('zakat-bank-money').value) || 0;\r\n const debtsToMe = parseFloat(document.getElementById('zakat-debts-to-me').value) || 0;\r\n const debtsFromMe = parseFloat(document.getElementById('zakat-debts-from-me').value) || 0;\r\n \r\n // Gold/Silver\r\n const goldW = parseFloat(document.getElementById('zakat-gold-weight').value) || 0;\r\n const carat = parseFloat(document.getElementById('zakat-gold-carat').value) || 0;\r\n const goldRate = parseFloat(document.getElementById('zakat-gold-rate').value) || 0;\r\n const silverW = parseFloat(document.getElementById('zakat-silver-weight').value) || 0;\r\n const silverRate = 0.95;\r\n \r\n // Stocks & Business\r\n const stocks = parseFloat(document.getElementById('zakat-stocks-value').value) || 0;\r\n const trade = parseFloat(document.getElementById('zakat-trade-goods').value) || 0;\r\n const realEstate = parseFloat(document.getElementById('zakat-real-estate')?.value) || 0;\r\n const otherAssets = parseFloat(document.getElementById('zakat-other-assets')?.value) || 0;\r\n \r\n // Calculations\r\n const gold24Equivalent = goldW * (carat / 24);\r\n const moneyAssets = Math.max(0, (cash + bank + debtsToMe) - debtsFromMe);\r\n const metalAssets = (gold24Equivalent * goldRate) + (silverW * silverRate);\r\n const businessAssets = stocks + trade + realEstate + otherAssets;\r\n const total = Math.max(0, moneyAssets + metalAssets + businessAssets);\r\n \r\n // UI Update - Total\r\n document.getElementById('zakat-total-assets').textContent = \r\n total.toLocaleString(undefined, { minimumFractionDigits: 2 }) + ' $';\r\n \r\n // Nisab Logic (85g Gold 24k)\r\n const nisab = 85 * goldRate;\r\n document.getElementById('zakat-nisab-value').textContent = \r\n nisab.toLocaleString(undefined, { minimumFractionDigits: 2 }) + ' $';\r\n \r\n // Update nisab displays\r\n document.getElementById('nisab-value-display').textContent = \r\n nisab.toLocaleString(undefined, { minimumFractionDigits: 2 }) + ' $';\r\n document.getElementById('current-nisab').textContent = '85 grams';\r\n document.getElementById('nisab-value').textContent = nisab.toLocaleString(undefined, { minimumFractionDigits: 2 }) + ' $';\r\n \r\n // Update progress bar\r\n const nisabProgress = Math.min(100, (total / nisab) * 100);\r\n document.getElementById('nisab-progress').style.width = `${nisabProgress}%`;\r\n \r\n const zakatAmountEl = document.getElementById('zakat-amount');\r\n const statusBadge = document.getElementById('zakat-status-badge');\r\n \r\n if (total >= nisab && total > 0) {\r\n const zakat = total * 0.025;\r\n zakatAmountEl.textContent = zakat.toLocaleString(undefined, { minimumFractionDigits: 2 }) + ' $';\r\n \r\n statusBadge.innerHTML = ' Zakat is obligatory (nisab reached)';\r\n statusBadge.className = \"inline-flex items-center gap-2 px-6 py-3 rounded-full bg-green-500/20 border border-green-500/30 text-green-300 mt-4\";\r\n } else {\r\n zakatAmountEl.textContent = '0.00 $';\r\n \r\n if (total > 0) {\r\n statusBadge.innerHTML = ' Nisab not yet reached';\r\n statusBadge.className = \"inline-flex items-center gap-2 px-6 py-3 rounded-full bg-yellow-500/20 border border-yellow-500/30 text-yellow-300 mt-4\";\r\n } else {\r\n statusBadge.innerHTML = ' Enter amount to verify';\r\n statusBadge.className = \"inline-flex items-center gap-2 px-6 py-3 rounded-full bg-white/10 border border-white/20 text-white mt-4\";\r\n }\r\n }\r\n }\r\n \r\n // Fetch live rates\r\n async function zakatFetchRates() {\r\n const icon = document.getElementById('zakat-refresh-icon');\r\n icon.classList.add('fa-spin');\r\n \r\n // Simulate API call\r\n await new Promise(r => setTimeout(r, 1000));\r\n \r\n // Dynamic change for effect (simulated rate change)\r\n const current = parseFloat(document.getElementById('zakat-gold-rate').value);\r\n const newRate = current + (Math.random() - 0.5);\r\n document.getElementById('zakat-gold-rate').value = newRate.toFixed(2);\r\n \r\n icon.classList.remove('fa-spin');\r\n zakatCalculate();\r\n }\r\n \r\n // Reset form\r\n function zakatResetForm() {\r\n document.querySelectorAll('input[type=\"number\"]').forEach(input => input.value = '');\r\n donationBasket = [];\r\n charityProjects.forEach(p => p.selected = false);\r\n loadCharityProjects();\r\n zakatCalculate();\r\n }\r\n \r\n // Save calculation\r\n function zakatSaveCalculation() {\r\n const total = document.getElementById('zakat-total-assets').textContent;\r\n const zakat = document.getElementById('zakat-amount').textContent;\r\n \r\n alert(`Calculation saved:\\nTotal wealth: ${total}\\nObligatory Zakat: ${zakat}`);\r\n }\r\n \r\n // Checkout\r\n function zakatCheckout() {\r\n const total = donationBasket.reduce((sum, p) => sum + p.cost, 0);\r\n if (total === 0) {\r\n alert('Please add projects to the donation basket first');\r\n return;\r\n }\r\n \r\n alert(`You will be redirected to the payment page to complete your donation of ${total.toLocaleString()} $`);\r\n // In production: window.location.href = 'payment.html';\r\n }\r\n \r\n // Redirect to payment\r\n function zakatRedirectToPayment() {\r\n const zakatAmount = document.getElementById('zakat-amount').textContent;\r\n if (zakatAmount === '0.00 $') {\r\n alert('Please enter the amount first to calculate Zakat');\r\n return;\r\n }\r\n \r\n alert(`You will be redirected to the payment page to complete your donation of ${zakatAmount}`);\r\n // In production: window.location.href = 'payment.html?amount=' + encodeURIComponent(zakatAmount);\r\n }\r\n \r\n // Intersection Observer for animations\r\n document.addEventListener('DOMContentLoaded', () => {\r\n // Initialize animations\r\n const reveals = document.querySelectorAll('.zakat-reveal');\r\n const obs = new IntersectionObserver((entries) => {\r\n entries.forEach(e => {\r\n if (e.isIntersecting) e.target.classList.add('active');\r\n });\r\n }, { threshold: 0.1 });\r\n reveals.forEach(r => obs.observe(r));\r\n \r\n // Initialize calculation\r\n zakatCalculate();\r\n \r\n // Load initial nisab value\r\n const goldRate = parseFloat(document.getElementById('zakat-gold-rate').value) || 0;\r\n const nisab = 85 * goldRate;\r\n document.getElementById('zakat-nisab-value').textContent = \r\n nisab.toLocaleString(undefined, { minimumFractionDigits: 2 }) + ' $';\r\n });\r\n \r\n ","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"}]') (Line: 47)
Drupal\gavias_content_builder\Plugin\Field\FieldFormatter\GaviasContentBuilderFormatter->viewElements(Object, 'en') (Line: 89)
Drupal\Core\Field\FormatterBase->view(Object, 'en') (Line: 263)
Drupal\Core\Entity\Entity\EntityViewDisplay->buildMultiple(Array) (Line: 351)
Drupal\Core\Entity\EntityViewBuilder->buildComponents(Array, Array, Array, 'full') (Line: 24)
Drupal\node\NodeViewBuilder->buildComponents(Array, Array, Array, 'full') (Line: 293)
Drupal\Core\Entity\EntityViewBuilder->buildMultiple(Array) (Line: 250)
Drupal\Core\Entity\EntityViewBuilder->build(Array)
call_user_func_array(Array, Array) (Line: 100)
Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. Support for this callback implementation is deprecated in 8.8.0 and will be removed in Drupal 9.0.0. See https://www.drupal.org/node/2966725', 'silenced_deprecation', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 781)
Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 372)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 200)
Drupal\Core\Render\Renderer->render(Array, ) (Line: 226)
Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 573)
Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 227)
Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 117)
Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90)
Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object)
call_user_func(Array, Object, 'kernel.view', Object) (Line: 111)
Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch('kernel.view', Object) (Line: 156)
Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 68)
Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 57)
Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 47)
Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191)
Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128)
Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82)
Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 47)
Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 52)
Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23)
Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 708)
Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Deprecated function: implode(): Passing glue string after array is deprecated. Swap the parameters in element_gva_column->render_content() (line 463 of themes/gavias_kunco/gva_content_builder/gva_column.php).
element_gva_column->render_content(Array, '
// Initialize charity projects
const charityProjects = [
{
id: 1,
title: "Iftar for Fasting Person",
description: "Providing Ramadan Iftar meals for needy families",
icon: "fa-utensils",
cost: 500,
selected: false
},
{
id: 2,
title: "Winter Clothing",
description: "Distributing winter clothes for children and needy families",
icon: "fa-shirt",
cost: 300,
selected: false
},
{
id: 3,
title: "Water Supply",
description: "Digging wells and providing clean drinking water",
icon: "fa-droplet",
cost: 1000,
selected: false
},
{
id: 4,
title: "Orphan Education",
description: "Educational support for orphans and school supplies",
icon: "fa-graduation-cap",
cost: 400,
selected: false
},
{
id: 5,
title: "Patient Treatment",
description: "Covering treatment expenses for unable families",
icon: "fa-heart-pulse",
cost: 800,
selected: false
},
{
id: 6,
title: "Widow Care",
description: "Monthly support for widows and their children",
icon: "fa-hand-holding-heart",
cost: 600,
selected: false
}
];
// Donation basket
let donationBasket = [];
// Tab system
function zakatSwitchTab(tab) {
// Update tabs
document.querySelectorAll('.zakat-tab-btn').forEach(btn => btn.classList.remove('active'));
document.querySelectorAll('.zakat-calc-section').forEach(sec => sec.classList.add('zakat-hidden'));
// Activate selected tab
document.getElementById('zakat-tab-' + tab).classList.add('active');
document.getElementById('zakat-section-' + tab).classList.remove('zakat-hidden');
// Load charity projects if on charity tab
if (tab === 'charity') {
loadCharityProjects();
}
// Add animation
const activeSection = document.getElementById('zakat-section-' + tab);
activeSection.classList.add('zakat-fade-in');
}
// Load charity projects
function loadCharityProjects() {
const container = document.getElementById('charity-projects-container');
container.innerHTML = '';
charityProjects.forEach(project => {
const projectElement = document.createElement('div');
projectElement.className = `zakat-charity-card ${project.selected ? 'border-brand-secondary' : ''}`;
projectElement.innerHTML = `
${project.title}
${project.description}
${project.cost.toLocaleString()} $
${project.selected ? 'Added' : 'Add'}
`;
container.appendChild(projectElement);
});
updateBasketDisplay();
}
// Toggle charity project selection
function toggleCharityProject(projectId) {
const project = charityProjects.find(p => p.id === projectId);
project.selected = !project.selected;
if (project.selected) {
donationBasket.push(project);
} else {
donationBasket = donationBasket.filter(p => p.id !== projectId);
}
loadCharityProjects();
updateBasketDisplay();
}
// Update donation basket display
function updateBasketDisplay() {
const container = document.getElementById('donation-basket-items');
const totalElement = document.getElementById('basket-total');
if (donationBasket.length === 0) {
container.innerHTML = 'No projects added yet';
totalElement.textContent = '0.00 $';
return;
}
let total = 0;
let itemsHTML = '';
donationBasket.forEach(project => {
total += project.cost;
itemsHTML += `
${project.title}
${project.description}
${project.cost.toLocaleString()} $
`;
});
container.innerHTML = itemsHTML;
totalElement.textContent = total.toLocaleString(undefined, { minimumFractionDigits: 2 }) + ' $';
}
// Remove from basket
function removeFromBasket(projectId) {
const project = charityProjects.find(p => p.id === projectId);
if (project) {
project.selected = false;
}
donationBasket = donationBasket.filter(p => p.id !== projectId);
loadCharityProjects();
}
// Enhanced Calculation
function zakatCalculate() {
// Money
const cash = parseFloat(document.getElementById('zakat-cash-money').value) || 0;
const bank = parseFloat(document.getElementById('zakat-bank-money').value) || 0;
const debtsToMe = parseFloat(document.getElementById('zakat-debts-to-me').value) || 0;
const debtsFromMe = parseFloat(document.getElementById('zakat-debts-from-me').value) || 0;
// Gold/Silver
const goldW = parseFloat(document.getElementById('zakat-gold-weight').value) || 0;
const carat = parseFloat(document.getElementById('zakat-gold-carat').value) || 0;
const goldRate = parseFloat(document.getElementById('zakat-gold-rate').value) || 0;
const silverW = parseFloat(document.getElementById('zakat-silver-weight').value) || 0;
const silverRate = 0.95;
// Stocks & Business
const stocks = parseFloat(document.getElementById('zakat-stocks-value').value) || 0;
const trade = parseFloat(document.getElementById('zakat-trade-goods').value) || 0;
const realEstate = parseFloat(document.getElementById('zakat-real-estate')?.value) || 0;
const otherAssets = parseFloat(document.getElementById('zakat-other-assets')?.value) || 0;
// Calculations
const gold24Equivalent = goldW * (carat / 24);
const moneyAssets = Math.max(0, (cash + bank + debtsToMe) - debtsFromMe);
const metalAssets = (gold24Equivalent * goldRate) + (silverW * silverRate);
const businessAssets = stocks + trade + realEstate + otherAssets;
const total = Math.max(0, moneyAssets + metalAssets + businessAssets);
// UI Update - Total
document.getElementById('zakat-total-assets').textContent =
total.toLocaleString(undefined, { minimumFractionDigits: 2 }) + ' $';
// Nisab Logic (85g Gold 24k)
const nisab = 85 * goldRate;
document.getElementById('zakat-nisab-value').textContent =
nisab.toLocaleString(undefined, { minimumFractionDigits: 2 }) + ' $';
// Update nisab displays
document.getElementById('nisab-value-display').textContent =
nisab.toLocaleString(undefined, { minimumFractionDigits: 2 }) + ' $';
document.getElementById('current-nisab').textContent = '85 grams';
document.getElementById('nisab-value').textContent = nisab.toLocaleString(undefined, { minimumFractionDigits: 2 }) + ' $';
// Update progress bar
const nisabProgress = Math.min(100, (total / nisab) * 100);
document.getElementById('nisab-progress').style.width = `${nisabProgress}%`;
const zakatAmountEl = document.getElementById('zakat-amount');
const statusBadge = document.getElementById('zakat-status-badge');
if (total >= nisab && total > 0) {
const zakat = total * 0.025;
zakatAmountEl.textContent = zakat.toLocaleString(undefined, { minimumFractionDigits: 2 }) + ' $';
statusBadge.innerHTML = ' Zakat is obligatory (nisab reached)';
statusBadge.className = "inline-flex items-center gap-2 px-6 py-3 rounded-full bg-green-500/20 border border-green-500/30 text-green-300 mt-4";
} else {
zakatAmountEl.textContent = '0.00 $';
if (total > 0) {
statusBadge.innerHTML = ' Nisab not yet reached';
statusBadge.className = "inline-flex items-center gap-2 px-6 py-3 rounded-full bg-yellow-500/20 border border-yellow-500/30 text-yellow-300 mt-4";
} else {
statusBadge.innerHTML = ' Enter amount to verify';
statusBadge.className = "inline-flex items-center gap-2 px-6 py-3 rounded-full bg-white/10 border border-white/20 text-white mt-4";
}
}
}
// Fetch live rates
async function zakatFetchRates() {
const icon = document.getElementById('zakat-refresh-icon');
icon.classList.add('fa-spin');
// Simulate API call
await new Promise(r => setTimeout(r, 1000));
// Dynamic change for effect (simulated rate change)
const current = parseFloat(document.getElementById('zakat-gold-rate').value);
const newRate = current + (Math.random() - 0.5);
document.getElementById('zakat-gold-rate').value = newRate.toFixed(2);
icon.classList.remove('fa-spin');
zakatCalculate();
}
// Reset form
function zakatResetForm() {
document.querySelectorAll('input[type="number"]').forEach(input => input.value = '');
donationBasket = [];
charityProjects.forEach(p => p.selected = false);
loadCharityProjects();
zakatCalculate();
}
// Save calculation
function zakatSaveCalculation() {
const total = document.getElementById('zakat-total-assets').textContent;
const zakat = document.getElementById('zakat-amount').textContent;
alert(`Calculation saved:\nTotal wealth: ${total}\nObligatory Zakat: ${zakat}`);
}
// Checkout
function zakatCheckout() {
const total = donationBasket.reduce((sum, p) => sum + p.cost, 0);
if (total === 0) {
alert('Please add projects to the donation basket first');
return;
}
alert(`You will be redirected to the payment page to complete your donation of ${total.toLocaleString()} $`);
// In production: window.location.href = 'payment.html';
}
// Redirect to payment
function zakatRedirectToPayment() {
const zakatAmount = document.getElementById('zakat-amount').textContent;
if (zakatAmount === '0.00 $') {
alert('Please enter the amount first to calculate Zakat');
return;
}
alert(`You will be redirected to the payment page to complete your donation of ${zakatAmount}`);
// In production: window.location.href = 'payment.html?amount=' + encodeURIComponent(zakatAmount);
}
// Intersection Observer for animations
document.addEventListener('DOMContentLoaded', () => {
// Initialize animations
const reveals = document.querySelectorAll('.zakat-reveal');
const obs = new IntersectionObserver((entries) => {
entries.forEach(e => {
if (e.isIntersecting) e.target.classList.add('active');
});
}, { threshold: 0.1 });
reveals.forEach(r => obs.observe(r));
// Initialize calculation
zakatCalculate();
// Load initial nisab value
const goldRate = parseFloat(document.getElementById('zakat-gold-rate').value) || 0;
const nisab = 85 * goldRate;
document.getElementById('zakat-nisab-value').textContent =
nisab.toLocaleString(undefined, { minimumFractionDigits: 2 }) + ' $';
});
') (Line: 110)
gavias_content_builder_render_element('gva_column', Array, '
// Initialize charity projects
const charityProjects = [
{
id: 1,
title: "Iftar for Fasting Person",
description: "Providing Ramadan Iftar meals for needy families",
icon: "fa-utensils",
cost: 500,
selected: false
},
{
id: 2,
title: "Winter Clothing",
description: "Distributing winter clothes for children and needy families",
icon: "fa-shirt",
cost: 300,
selected: false
},
{
id: 3,
title: "Water Supply",
description: "Digging wells and providing clean drinking water",
icon: "fa-droplet",
cost: 1000,
selected: false
},
{
id: 4,
title: "Orphan Education",
description: "Educational support for orphans and school supplies",
icon: "fa-graduation-cap",
cost: 400,
selected: false
},
{
id: 5,
title: "Patient Treatment",
description: "Covering treatment expenses for unable families",
icon: "fa-heart-pulse",
cost: 800,
selected: false
},
{
id: 6,
title: "Widow Care",
description: "Monthly support for widows and their children",
icon: "fa-hand-holding-heart",
cost: 600,
selected: false
}
];
// Donation basket
let donationBasket = [];
// Tab system
function zakatSwitchTab(tab) {
// Update tabs
document.querySelectorAll('.zakat-tab-btn').forEach(btn => btn.classList.remove('active'));
document.querySelectorAll('.zakat-calc-section').forEach(sec => sec.classList.add('zakat-hidden'));
// Activate selected tab
document.getElementById('zakat-tab-' + tab).classList.add('active');
document.getElementById('zakat-section-' + tab).classList.remove('zakat-hidden');
// Load charity projects if on charity tab
if (tab === 'charity') {
loadCharityProjects();
}
// Add animation
const activeSection = document.getElementById('zakat-section-' + tab);
activeSection.classList.add('zakat-fade-in');
}
// Load charity projects
function loadCharityProjects() {
const container = document.getElementById('charity-projects-container');
container.innerHTML = '';
charityProjects.forEach(project => {
const projectElement = document.createElement('div');
projectElement.className = `zakat-charity-card ${project.selected ? 'border-brand-secondary' : ''}`;
projectElement.innerHTML = `
${project.title}
${project.description}
${project.cost.toLocaleString()} $
${project.selected ? 'Added' : 'Add'}
`;
container.appendChild(projectElement);
});
updateBasketDisplay();
}
// Toggle charity project selection
function toggleCharityProject(projectId) {
const project = charityProjects.find(p => p.id === projectId);
project.selected = !project.selected;
if (project.selected) {
donationBasket.push(project);
} else {
donationBasket = donationBasket.filter(p => p.id !== projectId);
}
loadCharityProjects();
updateBasketDisplay();
}
// Update donation basket display
function updateBasketDisplay() {
const container = document.getElementById('donation-basket-items');
const totalElement = document.getElementById('basket-total');
if (donationBasket.length === 0) {
container.innerHTML = 'No projects added yet';
totalElement.textContent = '0.00 $';
return;
}
let total = 0;
let itemsHTML = '';
donationBasket.forEach(project => {
total += project.cost;
itemsHTML += `
${project.title}
${project.description}
${project.cost.toLocaleString()} $
`;
});
container.innerHTML = itemsHTML;
totalElement.textContent = total.toLocaleString(undefined, { minimumFractionDigits: 2 }) + ' $';
}
// Remove from basket
function removeFromBasket(projectId) {
const project = charityProjects.find(p => p.id === projectId);
if (project) {
project.selected = false;
}
donationBasket = donationBasket.filter(p => p.id !== projectId);
loadCharityProjects();
}
// Enhanced Calculation
function zakatCalculate() {
// Money
const cash = parseFloat(document.getElementById('zakat-cash-money').value) || 0;
const bank = parseFloat(document.getElementById('zakat-bank-money').value) || 0;
const debtsToMe = parseFloat(document.getElementById('zakat-debts-to-me').value) || 0;
const debtsFromMe = parseFloat(document.getElementById('zakat-debts-from-me').value) || 0;
// Gold/Silver
const goldW = parseFloat(document.getElementById('zakat-gold-weight').value) || 0;
const carat = parseFloat(document.getElementById('zakat-gold-carat').value) || 0;
const goldRate = parseFloat(document.getElementById('zakat-gold-rate').value) || 0;
const silverW = parseFloat(document.getElementById('zakat-silver-weight').value) || 0;
const silverRate = 0.95;
// Stocks & Business
const stocks = parseFloat(document.getElementById('zakat-stocks-value').value) || 0;
const trade = parseFloat(document.getElementById('zakat-trade-goods').value) || 0;
const realEstate = parseFloat(document.getElementById('zakat-real-estate')?.value) || 0;
const otherAssets = parseFloat(document.getElementById('zakat-other-assets')?.value) || 0;
// Calculations
const gold24Equivalent = goldW * (carat / 24);
const moneyAssets = Math.max(0, (cash + bank + debtsToMe) - debtsFromMe);
const metalAssets = (gold24Equivalent * goldRate) + (silverW * silverRate);
const businessAssets = stocks + trade + realEstate + otherAssets;
const total = Math.max(0, moneyAssets + metalAssets + businessAssets);
// UI Update - Total
document.getElementById('zakat-total-assets').textContent =
total.toLocaleString(undefined, { minimumFractionDigits: 2 }) + ' $';
// Nisab Logic (85g Gold 24k)
const nisab = 85 * goldRate;
document.getElementById('zakat-nisab-value').textContent =
nisab.toLocaleString(undefined, { minimumFractionDigits: 2 }) + ' $';
// Update nisab displays
document.getElementById('nisab-value-display').textContent =
nisab.toLocaleString(undefined, { minimumFractionDigits: 2 }) + ' $';
document.getElementById('current-nisab').textContent = '85 grams';
document.getElementById('nisab-value').textContent = nisab.toLocaleString(undefined, { minimumFractionDigits: 2 }) + ' $';
// Update progress bar
const nisabProgress = Math.min(100, (total / nisab) * 100);
document.getElementById('nisab-progress').style.width = `${nisabProgress}%`;
const zakatAmountEl = document.getElementById('zakat-amount');
const statusBadge = document.getElementById('zakat-status-badge');
if (total >= nisab && total > 0) {
const zakat = total * 0.025;
zakatAmountEl.textContent = zakat.toLocaleString(undefined, { minimumFractionDigits: 2 }) + ' $';
statusBadge.innerHTML = ' Zakat is obligatory (nisab reached)';
statusBadge.className = "inline-flex items-center gap-2 px-6 py-3 rounded-full bg-green-500/20 border border-green-500/30 text-green-300 mt-4";
} else {
zakatAmountEl.textContent = '0.00 $';
if (total > 0) {
statusBadge.innerHTML = ' Nisab not yet reached';
statusBadge.className = "inline-flex items-center gap-2 px-6 py-3 rounded-full bg-yellow-500/20 border border-yellow-500/30 text-yellow-300 mt-4";
} else {
statusBadge.innerHTML = ' Enter amount to verify';
statusBadge.className = "inline-flex items-center gap-2 px-6 py-3 rounded-full bg-white/10 border border-white/20 text-white mt-4";
}
}
}
// Fetch live rates
async function zakatFetchRates() {
const icon = document.getElementById('zakat-refresh-icon');
icon.classList.add('fa-spin');
// Simulate API call
await new Promise(r => setTimeout(r, 1000));
// Dynamic change for effect (simulated rate change)
const current = parseFloat(document.getElementById('zakat-gold-rate').value);
const newRate = current + (Math.random() - 0.5);
document.getElementById('zakat-gold-rate').value = newRate.toFixed(2);
icon.classList.remove('fa-spin');
zakatCalculate();
}
// Reset form
function zakatResetForm() {
document.querySelectorAll('input[type="number"]').forEach(input => input.value = '');
donationBasket = [];
charityProjects.forEach(p => p.selected = false);
loadCharityProjects();
zakatCalculate();
}
// Save calculation
function zakatSaveCalculation() {
const total = document.getElementById('zakat-total-assets').textContent;
const zakat = document.getElementById('zakat-amount').textContent;
alert(`Calculation saved:\nTotal wealth: ${total}\nObligatory Zakat: ${zakat}`);
}
// Checkout
function zakatCheckout() {
const total = donationBasket.reduce((sum, p) => sum + p.cost, 0);
if (total === 0) {
alert('Please add projects to the donation basket first');
return;
}
alert(`You will be redirected to the payment page to complete your donation of ${total.toLocaleString()} $`);
// In production: window.location.href = 'payment.html';
}
// Redirect to payment
function zakatRedirectToPayment() {
const zakatAmount = document.getElementById('zakat-amount').textContent;
if (zakatAmount === '0.00 $') {
alert('Please enter the amount first to calculate Zakat');
return;
}
alert(`You will be redirected to the payment page to complete your donation of ${zakatAmount}`);
// In production: window.location.href = 'payment.html?amount=' + encodeURIComponent(zakatAmount);
}
// Intersection Observer for animations
document.addEventListener('DOMContentLoaded', () => {
// Initialize animations
const reveals = document.querySelectorAll('.zakat-reveal');
const obs = new IntersectionObserver((entries) => {
entries.forEach(e => {
if (e.isIntersecting) e.target.classList.add('active');
});
}, { threshold: 0.1 });
reveals.forEach(r => obs.observe(r));
// Initialize calculation
zakatCalculate();
// Load initial nisab value
const goldRate = parseFloat(document.getElementById('zakat-gold-rate').value) || 0;
const nisab = 85 * goldRate;
document.getElementById('zakat-nisab-value').textContent =
nisab.toLocaleString(undefined, { minimumFractionDigits: 2 }) + ' $';
});
') (Line: 58)
gavias_content_builder_render_el(Array) (Line: 22)
gavias_content_builder_frontend('[{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","padding_top":"0","padding_bottom":"0","margin_top":"0","margin_bottom":"0","layout":"container-fw","class":"aboutus"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"content":"\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n The Third Pillar of Islam\r\n Smart Zakat CalculatorAccurate Calculation.. Great Impact\r\n \r\n \r\n A comprehensive calculator to compute your Zakat according to the latest prices and soundest religious rulings, designed to help you fulfill your duty with precision and confidence.\r\n \r\n \r\n \r\n \r\n \r\n Today's Nisab (Gold)\r\n 85 grams\r\n \r\n \r\n \r\n \r\n Equivalent to $6,502.50 based on current gold price\r\n \r\n \r\n \r\n \r\n ","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"},{"settings":{"element":"gva_column","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","class":"zakatt"},"col_lg":12,"elements":[{"settings":{"content":"\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n Cash & Deposits\r\n \r\n \r\n \r\n Gold & Silver\r\n \r\n \r\n \r\n Stocks & Trade\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n Cash & Bank Deposits\r\n \r\n \r\n \r\n \r\n Cash on hand\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Bank deposits & balances\r\n \r\n \r\n \r\n \r\n \r\n \r\n Receivables (debts owed to you)\r\n \r\n \r\n \r\n \r\n Debts you expect to recover\r\n \r\n \r\n Payables (debts you owe)\r\n \r\n \r\n \r\n \r\n Deducted from total wealth\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n Gold, Silver & Jewelry\r\n \r\n \r\n \r\n Gold weight (grams)\r\n \r\n \r\n \r\n \r\n Exceeding personal use\r\n \r\n \r\n Gold karat\r\n \r\n \r\n 24 Karat (Pure)\r\n 22 Karat\r\n 21 Karat\r\n 18 Karat\r\n \r\n \r\n \r\n \r\n \r\n Silver weight (grams)\r\n \r\n \r\n \r\n \r\n \r\n \r\n Today's gold price\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Price per gram in USD\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Nisab Calculator\r\n \r\n \r\n \r\n Nisab (Gold)\r\n 85 grams\r\n \r\n \r\n Nisab (Silver)\r\n 595 grams\r\n \r\n \r\n Value in USD\r\n $6,502.50\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n Business & Investment Assets\r\n \r\n \r\n \r\n Current stock value\r\n \r\n \r\n \r\n \r\n \r\n \r\n Trade goods\r\n \r\n \r\n \r\n \r\n Merchandise intended for sale\r\n \r\n \r\n Investment properties\r\n \r\n \r\n \r\n \r\n \r\n \r\n Other assets\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n Choose Your Charity Projects\r\n \r\n You can distribute your Zakat across multiple charity projects as you wish\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Donation Basket\r\n \r\n \r\n No projects added yet\r\n \r\n \r\n \r\n Total allocated amount\r\n 0.00 $\r\n \r\n \r\n Proceed to Donate\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n Conditions for Zakat Obligation\r\n \r\n <ul>\r\n <li>\r\n \r\n Reaching the Nisab (equivalent to 85 grams of 24k gold)\r\n </li>\r\n <li>\r\n \r\n Passage of one lunar year (Hawl) over the wealth\r\n </li>\r\n <li>\r\n \r\n Full ownership and ability to dispose of the wealth\r\n </li>\r\n </ul>\r\n \r\n \r\n \r\n \r\n Wijdan's Trust\r\n \r\n \r\n At Wijdan Charity, we are committed to disbursing Zakat to its eight legitimate channels under the supervision of specialized Sharia committees, ensuring the highest standards of transparency and traceability.\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n Calculation Summary\r\n \r\n\r\n \r\n \r\n Total Zakatable Wealth\r\n 0.00 $\r\n \r\n \r\n Current Nisab\r\n 6,502.50 $\r\n \r\n \r\n\r\n \r\n Obligatory Zakat (2.5%)\r\n 0.00 $\r\n \r\n \r\n Enter amount to verify\r\n \r\n \r\n\r\n \r\n <a>\r\n \r\n Contact us on WhatsApp for consultation and donation\r\n </a>\r\n \r\n\r\n \r\n All calculations are based on global gold prices and the latest Sharia rulings. We recommend consulting scholars for precise jurisprudential matters.\r\n \r\n \r\n \r\n \r\n \r\n Reset\r\n \r\n \r\n Save Calculation\r\n \r\n \r\n \r\n \r\n \r\n \r\n ","animate_delay":"0","el_class":"zakatt"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"},{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"content":"\r\n // Initialize charity projects\r\n const charityProjects = [\r\n {\r\n id: 1,\r\n title: \"Iftar for Fasting Person\",\r\n description: \"Providing Ramadan Iftar meals for needy families\",\r\n icon: \"fa-utensils\",\r\n cost: 500,\r\n selected: false\r\n },\r\n {\r\n id: 2,\r\n title: \"Winter Clothing\",\r\n description: \"Distributing winter clothes for children and needy families\",\r\n icon: \"fa-shirt\",\r\n cost: 300,\r\n selected: false\r\n },\r\n {\r\n id: 3,\r\n title: \"Water Supply\",\r\n description: \"Digging wells and providing clean drinking water\",\r\n icon: \"fa-droplet\",\r\n cost: 1000,\r\n selected: false\r\n },\r\n {\r\n id: 4,\r\n title: \"Orphan Education\",\r\n description: \"Educational support for orphans and school supplies\",\r\n icon: \"fa-graduation-cap\",\r\n cost: 400,\r\n selected: false\r\n },\r\n {\r\n id: 5,\r\n title: \"Patient Treatment\",\r\n description: \"Covering treatment expenses for unable families\",\r\n icon: \"fa-heart-pulse\",\r\n cost: 800,\r\n selected: false\r\n },\r\n {\r\n id: 6,\r\n title: \"Widow Care\",\r\n description: \"Monthly support for widows and their children\",\r\n icon: \"fa-hand-holding-heart\",\r\n cost: 600,\r\n selected: false\r\n }\r\n ];\r\n\r\n // Donation basket\r\n let donationBasket = [];\r\n \r\n // Tab system\r\n function zakatSwitchTab(tab) {\r\n // Update tabs\r\n document.querySelectorAll('.zakat-tab-btn').forEach(btn => btn.classList.remove('active'));\r\n document.querySelectorAll('.zakat-calc-section').forEach(sec => sec.classList.add('zakat-hidden'));\r\n \r\n // Activate selected tab\r\n document.getElementById('zakat-tab-' + tab).classList.add('active');\r\n document.getElementById('zakat-section-' + tab).classList.remove('zakat-hidden');\r\n \r\n // Load charity projects if on charity tab\r\n if (tab === 'charity') {\r\n loadCharityProjects();\r\n }\r\n \r\n // Add animation\r\n const activeSection = document.getElementById('zakat-section-' + tab);\r\n activeSection.classList.add('zakat-fade-in');\r\n }\r\n \r\n // Load charity projects\r\n function loadCharityProjects() {\r\n const container = document.getElementById('charity-projects-container');\r\n container.innerHTML = '';\r\n \r\n charityProjects.forEach(project => {\r\n const projectElement = document.createElement('div');\r\n projectElement.className = `zakat-charity-card ${project.selected ? 'border-brand-secondary' : ''}`;\r\n projectElement.innerHTML = `\r\n \r\n \r\n \r\n ${project.title}\r\n ${project.description}\r\n \r\n ${project.cost.toLocaleString()} $\r\n \r\n ${project.selected ? 'Added' : 'Add'}\r\n \r\n \r\n `;\r\n container.appendChild(projectElement);\r\n });\r\n \r\n updateBasketDisplay();\r\n }\r\n \r\n // Toggle charity project selection\r\n function toggleCharityProject(projectId) {\r\n const project = charityProjects.find(p => p.id === projectId);\r\n project.selected = !project.selected;\r\n \r\n if (project.selected) {\r\n donationBasket.push(project);\r\n } else {\r\n donationBasket = donationBasket.filter(p => p.id !== projectId);\r\n }\r\n \r\n loadCharityProjects();\r\n updateBasketDisplay();\r\n }\r\n \r\n // Update donation basket display\r\n function updateBasketDisplay() {\r\n const container = document.getElementById('donation-basket-items');\r\n const totalElement = document.getElementById('basket-total');\r\n \r\n if (donationBasket.length === 0) {\r\n container.innerHTML = 'No projects added yet';\r\n totalElement.textContent = '0.00 $';\r\n return;\r\n }\r\n \r\n let total = 0;\r\n let itemsHTML = '';\r\n \r\n donationBasket.forEach(project => {\r\n total += project.cost;\r\n itemsHTML += `\r\n \r\n \r\n ${project.title}\r\n ${project.description}\r\n \r\n \r\n ${project.cost.toLocaleString()} $\r\n \r\n \r\n \r\n \r\n \r\n `;\r\n });\r\n \r\n container.innerHTML = itemsHTML;\r\n totalElement.textContent = total.toLocaleString(undefined, { minimumFractionDigits: 2 }) + ' $';\r\n }\r\n \r\n // Remove from basket\r\n function removeFromBasket(projectId) {\r\n const project = charityProjects.find(p => p.id === projectId);\r\n if (project) {\r\n project.selected = false;\r\n }\r\n donationBasket = donationBasket.filter(p => p.id !== projectId);\r\n loadCharityProjects();\r\n }\r\n \r\n // Enhanced Calculation\r\n function zakatCalculate() {\r\n // Money\r\n const cash = parseFloat(document.getElementById('zakat-cash-money').value) || 0;\r\n const bank = parseFloat(document.getElementById('zakat-bank-money').value) || 0;\r\n const debtsToMe = parseFloat(document.getElementById('zakat-debts-to-me').value) || 0;\r\n const debtsFromMe = parseFloat(document.getElementById('zakat-debts-from-me').value) || 0;\r\n \r\n // Gold/Silver\r\n const goldW = parseFloat(document.getElementById('zakat-gold-weight').value) || 0;\r\n const carat = parseFloat(document.getElementById('zakat-gold-carat').value) || 0;\r\n const goldRate = parseFloat(document.getElementById('zakat-gold-rate').value) || 0;\r\n const silverW = parseFloat(document.getElementById('zakat-silver-weight').value) || 0;\r\n const silverRate = 0.95;\r\n \r\n // Stocks & Business\r\n const stocks = parseFloat(document.getElementById('zakat-stocks-value').value) || 0;\r\n const trade = parseFloat(document.getElementById('zakat-trade-goods').value) || 0;\r\n const realEstate = parseFloat(document.getElementById('zakat-real-estate')?.value) || 0;\r\n const otherAssets = parseFloat(document.getElementById('zakat-other-assets')?.value) || 0;\r\n \r\n // Calculations\r\n const gold24Equivalent = goldW * (carat / 24);\r\n const moneyAssets = Math.max(0, (cash + bank + debtsToMe) - debtsFromMe);\r\n const metalAssets = (gold24Equivalent * goldRate) + (silverW * silverRate);\r\n const businessAssets = stocks + trade + realEstate + otherAssets;\r\n const total = Math.max(0, moneyAssets + metalAssets + businessAssets);\r\n \r\n // UI Update - Total\r\n document.getElementById('zakat-total-assets').textContent = \r\n total.toLocaleString(undefined, { minimumFractionDigits: 2 }) + ' $';\r\n \r\n // Nisab Logic (85g Gold 24k)\r\n const nisab = 85 * goldRate;\r\n document.getElementById('zakat-nisab-value').textContent = \r\n nisab.toLocaleString(undefined, { minimumFractionDigits: 2 }) + ' $';\r\n \r\n // Update nisab displays\r\n document.getElementById('nisab-value-display').textContent = \r\n nisab.toLocaleString(undefined, { minimumFractionDigits: 2 }) + ' $';\r\n document.getElementById('current-nisab').textContent = '85 grams';\r\n document.getElementById('nisab-value').textContent = nisab.toLocaleString(undefined, { minimumFractionDigits: 2 }) + ' $';\r\n \r\n // Update progress bar\r\n const nisabProgress = Math.min(100, (total / nisab) * 100);\r\n document.getElementById('nisab-progress').style.width = `${nisabProgress}%`;\r\n \r\n const zakatAmountEl = document.getElementById('zakat-amount');\r\n const statusBadge = document.getElementById('zakat-status-badge');\r\n \r\n if (total >= nisab && total > 0) {\r\n const zakat = total * 0.025;\r\n zakatAmountEl.textContent = zakat.toLocaleString(undefined, { minimumFractionDigits: 2 }) + ' $';\r\n \r\n statusBadge.innerHTML = ' Zakat is obligatory (nisab reached)';\r\n statusBadge.className = \"inline-flex items-center gap-2 px-6 py-3 rounded-full bg-green-500/20 border border-green-500/30 text-green-300 mt-4\";\r\n } else {\r\n zakatAmountEl.textContent = '0.00 $';\r\n \r\n if (total > 0) {\r\n statusBadge.innerHTML = ' Nisab not yet reached';\r\n statusBadge.className = \"inline-flex items-center gap-2 px-6 py-3 rounded-full bg-yellow-500/20 border border-yellow-500/30 text-yellow-300 mt-4\";\r\n } else {\r\n statusBadge.innerHTML = ' Enter amount to verify';\r\n statusBadge.className = \"inline-flex items-center gap-2 px-6 py-3 rounded-full bg-white/10 border border-white/20 text-white mt-4\";\r\n }\r\n }\r\n }\r\n \r\n // Fetch live rates\r\n async function zakatFetchRates() {\r\n const icon = document.getElementById('zakat-refresh-icon');\r\n icon.classList.add('fa-spin');\r\n \r\n // Simulate API call\r\n await new Promise(r => setTimeout(r, 1000));\r\n \r\n // Dynamic change for effect (simulated rate change)\r\n const current = parseFloat(document.getElementById('zakat-gold-rate').value);\r\n const newRate = current + (Math.random() - 0.5);\r\n document.getElementById('zakat-gold-rate').value = newRate.toFixed(2);\r\n \r\n icon.classList.remove('fa-spin');\r\n zakatCalculate();\r\n }\r\n \r\n // Reset form\r\n function zakatResetForm() {\r\n document.querySelectorAll('input[type=\"number\"]').forEach(input => input.value = '');\r\n donationBasket = [];\r\n charityProjects.forEach(p => p.selected = false);\r\n loadCharityProjects();\r\n zakatCalculate();\r\n }\r\n \r\n // Save calculation\r\n function zakatSaveCalculation() {\r\n const total = document.getElementById('zakat-total-assets').textContent;\r\n const zakat = document.getElementById('zakat-amount').textContent;\r\n \r\n alert(`Calculation saved:\\nTotal wealth: ${total}\\nObligatory Zakat: ${zakat}`);\r\n }\r\n \r\n // Checkout\r\n function zakatCheckout() {\r\n const total = donationBasket.reduce((sum, p) => sum + p.cost, 0);\r\n if (total === 0) {\r\n alert('Please add projects to the donation basket first');\r\n return;\r\n }\r\n \r\n alert(`You will be redirected to the payment page to complete your donation of ${total.toLocaleString()} $`);\r\n // In production: window.location.href = 'payment.html';\r\n }\r\n \r\n // Redirect to payment\r\n function zakatRedirectToPayment() {\r\n const zakatAmount = document.getElementById('zakat-amount').textContent;\r\n if (zakatAmount === '0.00 $') {\r\n alert('Please enter the amount first to calculate Zakat');\r\n return;\r\n }\r\n \r\n alert(`You will be redirected to the payment page to complete your donation of ${zakatAmount}`);\r\n // In production: window.location.href = 'payment.html?amount=' + encodeURIComponent(zakatAmount);\r\n }\r\n \r\n // Intersection Observer for animations\r\n document.addEventListener('DOMContentLoaded', () => {\r\n // Initialize animations\r\n const reveals = document.querySelectorAll('.zakat-reveal');\r\n const obs = new IntersectionObserver((entries) => {\r\n entries.forEach(e => {\r\n if (e.isIntersecting) e.target.classList.add('active');\r\n });\r\n }, { threshold: 0.1 });\r\n reveals.forEach(r => obs.observe(r));\r\n \r\n // Initialize calculation\r\n zakatCalculate();\r\n \r\n // Load initial nisab value\r\n const goldRate = parseFloat(document.getElementById('zakat-gold-rate').value) || 0;\r\n const nisab = 85 * goldRate;\r\n document.getElementById('zakat-nisab-value').textContent = \r\n nisab.toLocaleString(undefined, { minimumFractionDigits: 2 }) + ' $';\r\n });\r\n \r\n ","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"}]') (Line: 47)
Drupal\gavias_content_builder\Plugin\Field\FieldFormatter\GaviasContentBuilderFormatter->viewElements(Object, 'en') (Line: 89)
Drupal\Core\Field\FormatterBase->view(Object, 'en') (Line: 263)
Drupal\Core\Entity\Entity\EntityViewDisplay->buildMultiple(Array) (Line: 351)
Drupal\Core\Entity\EntityViewBuilder->buildComponents(Array, Array, Array, 'full') (Line: 24)
Drupal\node\NodeViewBuilder->buildComponents(Array, Array, Array, 'full') (Line: 293)
Drupal\Core\Entity\EntityViewBuilder->buildMultiple(Array) (Line: 250)
Drupal\Core\Entity\EntityViewBuilder->build(Array)
call_user_func_array(Array, Array) (Line: 100)
Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. Support for this callback implementation is deprecated in 8.8.0 and will be removed in Drupal 9.0.0. See https://www.drupal.org/node/2966725', 'silenced_deprecation', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 781)
Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 372)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 200)
Drupal\Core\Render\Renderer->render(Array, ) (Line: 226)
Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 573)
Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 227)
Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 117)
Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90)
Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object)
call_user_func(Array, Object, 'kernel.view', Object) (Line: 111)
Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch('kernel.view', Object) (Line: 156)
Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 68)
Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 57)
Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 47)
Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191)
Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128)
Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82)
Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 47)
Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 52)
Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23)
Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 708)
Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Deprecated function: implode(): Passing glue string after array is deprecated. Swap the parameters in element_gva_row->render_content() (line 317 of themes/gavias_kunco/gva_content_builder/gva_row.php).
element_gva_row->render_content(Array, '
The Third Pillar of Islam
Smart Zakat CalculatorAccurate Calculation.. Great Impact
A comprehensive calculator to compute your Zakat according to the latest prices and soundest religious rulings, designed to help you fulfill your duty with precision and confidence.
Today's Nisab (Gold)
85 grams
Equivalent to $6,502.50 based on current gold price
Cash & Deposits
Gold & Silver
Stocks & Trade
Charity Projects
-->
Cash & Bank Deposits
Cash on hand
Bank deposits & balances
Receivables (debts owed to you)
Debts you expect to recover
Payables (debts you owe)
Deducted from total wealth
Gold, Silver & Jewelry
Gold weight (grams)
Exceeding personal use
Gold karat
24 Karat (Pure)
22 Karat
21 Karat
18 Karat
Silver weight (grams)
Today's gold price
Price per gram in USD
Nisab Calculator
Nisab (Gold)
85 grams
Nisab (Silver)
595 grams
Value in USD
$6,502.50
Business & Investment Assets
Current stock value
Trade goods
Merchandise intended for sale
Investment properties
Other assets
Choose Your Charity Projects
You can distribute your Zakat across multiple charity projects as you wish
Donation Basket
No projects added yet
Total allocated amount
0.00 $
Proceed to Donate
Conditions for Zakat Obligation
<ul class="space-y-3 text-gray-600">
<li class="flex items-start gap-3">
Reaching the Nisab (equivalent to 85 grams of 24k gold)
</li>
<li class="flex items-start gap-3">
Passage of one lunar year (Hawl) over the wealth
</li>
<li class="flex items-start gap-3">
Full ownership and ability to dispose of the wealth
</li>
</ul>
Wijdan's Trust
At Wijdan Charity, we are committed to disbursing Zakat to its eight legitimate channels under the supervision of specialized Sharia committees, ensuring the highest standards of transparency and traceability.
Calculation Summary
Total Zakatable Wealth
0.00 $
Current Nisab
6,502.50 $
Obligatory Zakat (2.5%)
0.00 $
Enter amount to verify
<a href="https://wa.me/905057763103" class="sponsorships-btn-secondary sponsorships-btn-full mt-4" target="_blank">
Contact us on WhatsApp for consultation and donation
</a>
All calculations are based on global gold prices and the latest Sharia rulings. We recommend consulting scholars for precise jurisprudential matters.
Reset
Save Calculation
// Initialize charity projects
const charityProjects = [
{
id: 1,
title: "Iftar for Fasting Person",
description: "Providing Ramadan Iftar meals for needy families",
icon: "fa-utensils",
cost: 500,
selected: false
},
{
id: 2,
title: "Winter Clothing",
description: "Distributing winter clothes for children and needy families",
icon: "fa-shirt",
cost: 300,
selected: false
},
{
id: 3,
title: "Water Supply",
description: "Digging wells and providing clean drinking water",
icon: "fa-droplet",
cost: 1000,
selected: false
},
{
id: 4,
title: "Orphan Education",
description: "Educational support for orphans and school supplies",
icon: "fa-graduation-cap",
cost: 400,
selected: false
},
{
id: 5,
title: "Patient Treatment",
description: "Covering treatment expenses for unable families",
icon: "fa-heart-pulse",
cost: 800,
selected: false
},
{
id: 6,
title: "Widow Care",
description: "Monthly support for widows and their children",
icon: "fa-hand-holding-heart",
cost: 600,
selected: false
}
];
// Donation basket
let donationBasket = [];
// Tab system
function zakatSwitchTab(tab) {
// Update tabs
document.querySelectorAll('.zakat-tab-btn').forEach(btn => btn.classList.remove('active'));
document.querySelectorAll('.zakat-calc-section').forEach(sec => sec.classList.add('zakat-hidden'));
// Activate selected tab
document.getElementById('zakat-tab-' + tab).classList.add('active');
document.getElementById('zakat-section-' + tab).classList.remove('zakat-hidden');
// Load charity projects if on charity tab
if (tab === 'charity') {
loadCharityProjects();
}
// Add animation
const activeSection = document.getElementById('zakat-section-' + tab);
activeSection.classList.add('zakat-fade-in');
}
// Load charity projects
function loadCharityProjects() {
const container = document.getElementById('charity-projects-container');
container.innerHTML = '';
charityProjects.forEach(project => {
const projectElement = document.createElement('div');
projectElement.className = `zakat-charity-card ${project.selected ? 'border-brand-secondary' : ''}`;
projectElement.innerHTML = `
${project.title}
${project.description}
${project.cost.toLocaleString()} $
${project.selected ? 'Added' : 'Add'}
`;
container.appendChild(projectElement);
});
updateBasketDisplay();
}
// Toggle charity project selection
function toggleCharityProject(projectId) {
const project = charityProjects.find(p => p.id === projectId);
project.selected = !project.selected;
if (project.selected) {
donationBasket.push(project);
} else {
donationBasket = donationBasket.filter(p => p.id !== projectId);
}
loadCharityProjects();
updateBasketDisplay();
}
// Update donation basket display
function updateBasketDisplay() {
const container = document.getElementById('donation-basket-items');
const totalElement = document.getElementById('basket-total');
if (donationBasket.length === 0) {
container.innerHTML = 'No projects added yet';
totalElement.textContent = '0.00 $';
return;
}
let total = 0;
let itemsHTML = '';
donationBasket.forEach(project => {
total += project.cost;
itemsHTML += `
${project.title}
${project.description}
${project.cost.toLocaleString()} $
`;
});
container.innerHTML = itemsHTML;
totalElement.textContent = total.toLocaleString(undefined, { minimumFractionDigits: 2 }) + ' $';
}
// Remove from basket
function removeFromBasket(projectId) {
const project = charityProjects.find(p => p.id === projectId);
if (project) {
project.selected = false;
}
donationBasket = donationBasket.filter(p => p.id !== projectId);
loadCharityProjects();
}
// Enhanced Calculation
function zakatCalculate() {
// Money
const cash = parseFloat(document.getElementById('zakat-cash-money').value) || 0;
const bank = parseFloat(document.getElementById('zakat-bank-money').value) || 0;
const debtsToMe = parseFloat(document.getElementById('zakat-debts-to-me').value) || 0;
const debtsFromMe = parseFloat(document.getElementById('zakat-debts-from-me').value) || 0;
// Gold/Silver
const goldW = parseFloat(document.getElementById('zakat-gold-weight').value) || 0;
const carat = parseFloat(document.getElementById('zakat-gold-carat').value) || 0;
const goldRate = parseFloat(document.getElementById('zakat-gold-rate').value) || 0;
const silverW = parseFloat(document.getElementById('zakat-silver-weight').value) || 0;
const silverRate = 0.95;
// Stocks & Business
const stocks = parseFloat(document.getElementById('zakat-stocks-value').value) || 0;
const trade = parseFloat(document.getElementById('zakat-trade-goods').value) || 0;
const realEstate = parseFloat(document.getElementById('zakat-real-estate')?.value) || 0;
const otherAssets = parseFloat(document.getElementById('zakat-other-assets')?.value) || 0;
// Calculations
const gold24Equivalent = goldW * (carat / 24);
const moneyAssets = Math.max(0, (cash + bank + debtsToMe) - debtsFromMe);
const metalAssets = (gold24Equivalent * goldRate) + (silverW * silverRate);
const businessAssets = stocks + trade + realEstate + otherAssets;
const total = Math.max(0, moneyAssets + metalAssets + businessAssets);
// UI Update - Total
document.getElementById('zakat-total-assets').textContent =
total.toLocaleString(undefined, { minimumFractionDigits: 2 }) + ' $';
// Nisab Logic (85g Gold 24k)
const nisab = 85 * goldRate;
document.getElementById('zakat-nisab-value').textContent =
nisab.toLocaleString(undefined, { minimumFractionDigits: 2 }) + ' $';
// Update nisab displays
document.getElementById('nisab-value-display').textContent =
nisab.toLocaleString(undefined, { minimumFractionDigits: 2 }) + ' $';
document.getElementById('current-nisab').textContent = '85 grams';
document.getElementById('nisab-value').textContent = nisab.toLocaleString(undefined, { minimumFractionDigits: 2 }) + ' $';
// Update progress bar
const nisabProgress = Math.min(100, (total / nisab) * 100);
document.getElementById('nisab-progress').style.width = `${nisabProgress}%`;
const zakatAmountEl = document.getElementById('zakat-amount');
const statusBadge = document.getElementById('zakat-status-badge');
if (total >= nisab && total > 0) {
const zakat = total * 0.025;
zakatAmountEl.textContent = zakat.toLocaleString(undefined, { minimumFractionDigits: 2 }) + ' $';
statusBadge.innerHTML = ' Zakat is obligatory (nisab reached)';
statusBadge.className = "inline-flex items-center gap-2 px-6 py-3 rounded-full bg-green-500/20 border border-green-500/30 text-green-300 mt-4";
} else {
zakatAmountEl.textContent = '0.00 $';
if (total > 0) {
statusBadge.innerHTML = ' Nisab not yet reached';
statusBadge.className = "inline-flex items-center gap-2 px-6 py-3 rounded-full bg-yellow-500/20 border border-yellow-500/30 text-yellow-300 mt-4";
} else {
statusBadge.innerHTML = ' Enter amount to verify';
statusBadge.className = "inline-flex items-center gap-2 px-6 py-3 rounded-full bg-white/10 border border-white/20 text-white mt-4";
}
}
}
// Fetch live rates
async function zakatFetchRates() {
const icon = document.getElementById('zakat-refresh-icon');
icon.classList.add('fa-spin');
// Simulate API call
await new Promise(r => setTimeout(r, 1000));
// Dynamic change for effect (simulated rate change)
const current = parseFloat(document.getElementById('zakat-gold-rate').value);
const newRate = current + (Math.random() - 0.5);
document.getElementById('zakat-gold-rate').value = newRate.toFixed(2);
icon.classList.remove('fa-spin');
zakatCalculate();
}
// Reset form
function zakatResetForm() {
document.querySelectorAll('input[type="number"]').forEach(input => input.value = '');
donationBasket = [];
charityProjects.forEach(p => p.selected = false);
loadCharityProjects();
zakatCalculate();
}
// Save calculation
function zakatSaveCalculation() {
const total = document.getElementById('zakat-total-assets').textContent;
const zakat = document.getElementById('zakat-amount').textContent;
alert(`Calculation saved:\nTotal wealth: ${total}\nObligatory Zakat: ${zakat}`);
}
// Checkout
function zakatCheckout() {
const total = donationBasket.reduce((sum, p) => sum + p.cost, 0);
if (total === 0) {
alert('Please add projects to the donation basket first');
return;
}
alert(`You will be redirected to the payment page to complete your donation of ${total.toLocaleString()} $`);
// In production: window.location.href = 'payment.html';
}
// Redirect to payment
function zakatRedirectToPayment() {
const zakatAmount = document.getElementById('zakat-amount').textContent;
if (zakatAmount === '0.00 $') {
alert('Please enter the amount first to calculate Zakat');
return;
}
alert(`You will be redirected to the payment page to complete your donation of ${zakatAmount}`);
// In production: window.location.href = 'payment.html?amount=' + encodeURIComponent(zakatAmount);
}
// Intersection Observer for animations
document.addEventListener('DOMContentLoaded', () => {
// Initialize animations
const reveals = document.querySelectorAll('.zakat-reveal');
const obs = new IntersectionObserver((entries) => {
entries.forEach(e => {
if (e.isIntersecting) e.target.classList.add('active');
});
}, { threshold: 0.1 });
reveals.forEach(r => obs.observe(r));
// Initialize calculation
zakatCalculate();
// Load initial nisab value
const goldRate = parseFloat(document.getElementById('zakat-gold-rate').value) || 0;
const nisab = 85 * goldRate;
document.getElementById('zakat-nisab-value').textContent =
nisab.toLocaleString(undefined, { minimumFractionDigits: 2 }) + ' $';
});
') (Line: 110)
gavias_content_builder_render_element('gva_row', Array, '
The Third Pillar of Islam
Smart Zakat CalculatorAccurate Calculation.. Great Impact
A comprehensive calculator to compute your Zakat according to the latest prices and soundest religious rulings, designed to help you fulfill your duty with precision and confidence.
Today's Nisab (Gold)
85 grams
Equivalent to $6,502.50 based on current gold price
Cash & Deposits
Gold & Silver
Stocks & Trade
Charity Projects
-->
Cash & Bank Deposits
Cash on hand
Bank deposits & balances
Receivables (debts owed to you)
Debts you expect to recover
Payables (debts you owe)
Deducted from total wealth
Gold, Silver & Jewelry
Gold weight (grams)
Exceeding personal use
Gold karat
24 Karat (Pure)
22 Karat
21 Karat
18 Karat
Silver weight (grams)
Today's gold price
Price per gram in USD
Nisab Calculator
Nisab (Gold)
85 grams
Nisab (Silver)
595 grams
Value in USD
$6,502.50
Business & Investment Assets
Current stock value
Trade goods
Merchandise intended for sale
Investment properties
Other assets
Choose Your Charity Projects
You can distribute your Zakat across multiple charity projects as you wish
Donation Basket
No projects added yet
Total allocated amount
0.00 $
Proceed to Donate
Conditions for Zakat Obligation
<ul class="space-y-3 text-gray-600">
<li class="flex items-start gap-3">
Reaching the Nisab (equivalent to 85 grams of 24k gold)
</li>
<li class="flex items-start gap-3">
Passage of one lunar year (Hawl) over the wealth
</li>
<li class="flex items-start gap-3">
Full ownership and ability to dispose of the wealth
</li>
</ul>
Wijdan's Trust
At Wijdan Charity, we are committed to disbursing Zakat to its eight legitimate channels under the supervision of specialized Sharia committees, ensuring the highest standards of transparency and traceability.
Calculation Summary
Total Zakatable Wealth
0.00 $
Current Nisab
6,502.50 $
Obligatory Zakat (2.5%)
0.00 $
Enter amount to verify
<a href="https://wa.me/905057763103" class="sponsorships-btn-secondary sponsorships-btn-full mt-4" target="_blank">
Contact us on WhatsApp for consultation and donation
</a>
All calculations are based on global gold prices and the latest Sharia rulings. We recommend consulting scholars for precise jurisprudential matters.
Reset
Save Calculation
// Initialize charity projects
const charityProjects = [
{
id: 1,
title: "Iftar for Fasting Person",
description: "Providing Ramadan Iftar meals for needy families",
icon: "fa-utensils",
cost: 500,
selected: false
},
{
id: 2,
title: "Winter Clothing",
description: "Distributing winter clothes for children and needy families",
icon: "fa-shirt",
cost: 300,
selected: false
},
{
id: 3,
title: "Water Supply",
description: "Digging wells and providing clean drinking water",
icon: "fa-droplet",
cost: 1000,
selected: false
},
{
id: 4,
title: "Orphan Education",
description: "Educational support for orphans and school supplies",
icon: "fa-graduation-cap",
cost: 400,
selected: false
},
{
id: 5,
title: "Patient Treatment",
description: "Covering treatment expenses for unable families",
icon: "fa-heart-pulse",
cost: 800,
selected: false
},
{
id: 6,
title: "Widow Care",
description: "Monthly support for widows and their children",
icon: "fa-hand-holding-heart",
cost: 600,
selected: false
}
];
// Donation basket
let donationBasket = [];
// Tab system
function zakatSwitchTab(tab) {
// Update tabs
document.querySelectorAll('.zakat-tab-btn').forEach(btn => btn.classList.remove('active'));
document.querySelectorAll('.zakat-calc-section').forEach(sec => sec.classList.add('zakat-hidden'));
// Activate selected tab
document.getElementById('zakat-tab-' + tab).classList.add('active');
document.getElementById('zakat-section-' + tab).classList.remove('zakat-hidden');
// Load charity projects if on charity tab
if (tab === 'charity') {
loadCharityProjects();
}
// Add animation
const activeSection = document.getElementById('zakat-section-' + tab);
activeSection.classList.add('zakat-fade-in');
}
// Load charity projects
function loadCharityProjects() {
const container = document.getElementById('charity-projects-container');
container.innerHTML = '';
charityProjects.forEach(project => {
const projectElement = document.createElement('div');
projectElement.className = `zakat-charity-card ${project.selected ? 'border-brand-secondary' : ''}`;
projectElement.innerHTML = `
${project.title}
${project.description}
${project.cost.toLocaleString()} $
${project.selected ? 'Added' : 'Add'}
`;
container.appendChild(projectElement);
});
updateBasketDisplay();
}
// Toggle charity project selection
function toggleCharityProject(projectId) {
const project = charityProjects.find(p => p.id === projectId);
project.selected = !project.selected;
if (project.selected) {
donationBasket.push(project);
} else {
donationBasket = donationBasket.filter(p => p.id !== projectId);
}
loadCharityProjects();
updateBasketDisplay();
}
// Update donation basket display
function updateBasketDisplay() {
const container = document.getElementById('donation-basket-items');
const totalElement = document.getElementById('basket-total');
if (donationBasket.length === 0) {
container.innerHTML = 'No projects added yet';
totalElement.textContent = '0.00 $';
return;
}
let total = 0;
let itemsHTML = '';
donationBasket.forEach(project => {
total += project.cost;
itemsHTML += `
${project.title}
${project.description}
${project.cost.toLocaleString()} $
`;
});
container.innerHTML = itemsHTML;
totalElement.textContent = total.toLocaleString(undefined, { minimumFractionDigits: 2 }) + ' $';
}
// Remove from basket
function removeFromBasket(projectId) {
const project = charityProjects.find(p => p.id === projectId);
if (project) {
project.selected = false;
}
donationBasket = donationBasket.filter(p => p.id !== projectId);
loadCharityProjects();
}
// Enhanced Calculation
function zakatCalculate() {
// Money
const cash = parseFloat(document.getElementById('zakat-cash-money').value) || 0;
const bank = parseFloat(document.getElementById('zakat-bank-money').value) || 0;
const debtsToMe = parseFloat(document.getElementById('zakat-debts-to-me').value) || 0;
const debtsFromMe = parseFloat(document.getElementById('zakat-debts-from-me').value) || 0;
// Gold/Silver
const goldW = parseFloat(document.getElementById('zakat-gold-weight').value) || 0;
const carat = parseFloat(document.getElementById('zakat-gold-carat').value) || 0;
const goldRate = parseFloat(document.getElementById('zakat-gold-rate').value) || 0;
const silverW = parseFloat(document.getElementById('zakat-silver-weight').value) || 0;
const silverRate = 0.95;
// Stocks & Business
const stocks = parseFloat(document.getElementById('zakat-stocks-value').value) || 0;
const trade = parseFloat(document.getElementById('zakat-trade-goods').value) || 0;
const realEstate = parseFloat(document.getElementById('zakat-real-estate')?.value) || 0;
const otherAssets = parseFloat(document.getElementById('zakat-other-assets')?.value) || 0;
// Calculations
const gold24Equivalent = goldW * (carat / 24);
const moneyAssets = Math.max(0, (cash + bank + debtsToMe) - debtsFromMe);
const metalAssets = (gold24Equivalent * goldRate) + (silverW * silverRate);
const businessAssets = stocks + trade + realEstate + otherAssets;
const total = Math.max(0, moneyAssets + metalAssets + businessAssets);
// UI Update - Total
document.getElementById('zakat-total-assets').textContent =
total.toLocaleString(undefined, { minimumFractionDigits: 2 }) + ' $';
// Nisab Logic (85g Gold 24k)
const nisab = 85 * goldRate;
document.getElementById('zakat-nisab-value').textContent =
nisab.toLocaleString(undefined, { minimumFractionDigits: 2 }) + ' $';
// Update nisab displays
document.getElementById('nisab-value-display').textContent =
nisab.toLocaleString(undefined, { minimumFractionDigits: 2 }) + ' $';
document.getElementById('current-nisab').textContent = '85 grams';
document.getElementById('nisab-value').textContent = nisab.toLocaleString(undefined, { minimumFractionDigits: 2 }) + ' $';
// Update progress bar
const nisabProgress = Math.min(100, (total / nisab) * 100);
document.getElementById('nisab-progress').style.width = `${nisabProgress}%`;
const zakatAmountEl = document.getElementById('zakat-amount');
const statusBadge = document.getElementById('zakat-status-badge');
if (total >= nisab && total > 0) {
const zakat = total * 0.025;
zakatAmountEl.textContent = zakat.toLocaleString(undefined, { minimumFractionDigits: 2 }) + ' $';
statusBadge.innerHTML = ' Zakat is obligatory (nisab reached)';
statusBadge.className = "inline-flex items-center gap-2 px-6 py-3 rounded-full bg-green-500/20 border border-green-500/30 text-green-300 mt-4";
} else {
zakatAmountEl.textContent = '0.00 $';
if (total > 0) {
statusBadge.innerHTML = ' Nisab not yet reached';
statusBadge.className = "inline-flex items-center gap-2 px-6 py-3 rounded-full bg-yellow-500/20 border border-yellow-500/30 text-yellow-300 mt-4";
} else {
statusBadge.innerHTML = ' Enter amount to verify';
statusBadge.className = "inline-flex items-center gap-2 px-6 py-3 rounded-full bg-white/10 border border-white/20 text-white mt-4";
}
}
}
// Fetch live rates
async function zakatFetchRates() {
const icon = document.getElementById('zakat-refresh-icon');
icon.classList.add('fa-spin');
// Simulate API call
await new Promise(r => setTimeout(r, 1000));
// Dynamic change for effect (simulated rate change)
const current = parseFloat(document.getElementById('zakat-gold-rate').value);
const newRate = current + (Math.random() - 0.5);
document.getElementById('zakat-gold-rate').value = newRate.toFixed(2);
icon.classList.remove('fa-spin');
zakatCalculate();
}
// Reset form
function zakatResetForm() {
document.querySelectorAll('input[type="number"]').forEach(input => input.value = '');
donationBasket = [];
charityProjects.forEach(p => p.selected = false);
loadCharityProjects();
zakatCalculate();
}
// Save calculation
function zakatSaveCalculation() {
const total = document.getElementById('zakat-total-assets').textContent;
const zakat = document.getElementById('zakat-amount').textContent;
alert(`Calculation saved:\nTotal wealth: ${total}\nObligatory Zakat: ${zakat}`);
}
// Checkout
function zakatCheckout() {
const total = donationBasket.reduce((sum, p) => sum + p.cost, 0);
if (total === 0) {
alert('Please add projects to the donation basket first');
return;
}
alert(`You will be redirected to the payment page to complete your donation of ${total.toLocaleString()} $`);
// In production: window.location.href = 'payment.html';
}
// Redirect to payment
function zakatRedirectToPayment() {
const zakatAmount = document.getElementById('zakat-amount').textContent;
if (zakatAmount === '0.00 $') {
alert('Please enter the amount first to calculate Zakat');
return;
}
alert(`You will be redirected to the payment page to complete your donation of ${zakatAmount}`);
// In production: window.location.href = 'payment.html?amount=' + encodeURIComponent(zakatAmount);
}
// Intersection Observer for animations
document.addEventListener('DOMContentLoaded', () => {
// Initialize animations
const reveals = document.querySelectorAll('.zakat-reveal');
const obs = new IntersectionObserver((entries) => {
entries.forEach(e => {
if (e.isIntersecting) e.target.classList.add('active');
});
}, { threshold: 0.1 });
reveals.forEach(r => obs.observe(r));
// Initialize calculation
zakatCalculate();
// Load initial nisab value
const goldRate = parseFloat(document.getElementById('zakat-gold-rate').value) || 0;
const nisab = 85 * goldRate;
document.getElementById('zakat-nisab-value').textContent =
nisab.toLocaleString(undefined, { minimumFractionDigits: 2 }) + ' $';
});
') (Line: 62)
gavias_content_builder_render_el(Array) (Line: 22)
gavias_content_builder_frontend('[{"settings":{"element":"gva_row","bg_particles":"off","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","style_space":"remove_margin remove_padding remove_padding_col","padding_top":"0","padding_bottom":"0","margin_top":"0","margin_bottom":"0","layout":"container-fw","class":"aboutus"},"columns":[{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"content":"\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n The Third Pillar of Islam\r\n Smart Zakat CalculatorAccurate Calculation.. Great Impact\r\n \r\n \r\n A comprehensive calculator to compute your Zakat according to the latest prices and soundest religious rulings, designed to help you fulfill your duty with precision and confidence.\r\n \r\n \r\n \r\n \r\n \r\n Today's Nisab (Gold)\r\n 85 grams\r\n \r\n \r\n \r\n \r\n Equivalent to $6,502.50 based on current gold price\r\n \r\n \r\n \r\n \r\n ","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"},{"settings":{"element":"gva_column","bg_position":"center top","bg_repeat":"no-repeat","bg_attachment":"scroll","bg_size":"cover","class":"zakatt"},"col_lg":12,"elements":[{"settings":{"content":"\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n Cash & Deposits\r\n \r\n \r\n \r\n Gold & Silver\r\n \r\n \r\n \r\n Stocks & Trade\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n Cash & Bank Deposits\r\n \r\n \r\n \r\n \r\n Cash on hand\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Bank deposits & balances\r\n \r\n \r\n \r\n \r\n \r\n \r\n Receivables (debts owed to you)\r\n \r\n \r\n \r\n \r\n Debts you expect to recover\r\n \r\n \r\n Payables (debts you owe)\r\n \r\n \r\n \r\n \r\n Deducted from total wealth\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n Gold, Silver & Jewelry\r\n \r\n \r\n \r\n Gold weight (grams)\r\n \r\n \r\n \r\n \r\n Exceeding personal use\r\n \r\n \r\n Gold karat\r\n \r\n \r\n 24 Karat (Pure)\r\n 22 Karat\r\n 21 Karat\r\n 18 Karat\r\n \r\n \r\n \r\n \r\n \r\n Silver weight (grams)\r\n \r\n \r\n \r\n \r\n \r\n \r\n Today's gold price\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Price per gram in USD\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Nisab Calculator\r\n \r\n \r\n \r\n Nisab (Gold)\r\n 85 grams\r\n \r\n \r\n Nisab (Silver)\r\n 595 grams\r\n \r\n \r\n Value in USD\r\n $6,502.50\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n Business & Investment Assets\r\n \r\n \r\n \r\n Current stock value\r\n \r\n \r\n \r\n \r\n \r\n \r\n Trade goods\r\n \r\n \r\n \r\n \r\n Merchandise intended for sale\r\n \r\n \r\n Investment properties\r\n \r\n \r\n \r\n \r\n \r\n \r\n Other assets\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n Choose Your Charity Projects\r\n \r\n You can distribute your Zakat across multiple charity projects as you wish\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Donation Basket\r\n \r\n \r\n No projects added yet\r\n \r\n \r\n \r\n Total allocated amount\r\n 0.00 $\r\n \r\n \r\n Proceed to Donate\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n Conditions for Zakat Obligation\r\n \r\n <ul>\r\n <li>\r\n \r\n Reaching the Nisab (equivalent to 85 grams of 24k gold)\r\n </li>\r\n <li>\r\n \r\n Passage of one lunar year (Hawl) over the wealth\r\n </li>\r\n <li>\r\n \r\n Full ownership and ability to dispose of the wealth\r\n </li>\r\n </ul>\r\n \r\n \r\n \r\n \r\n Wijdan's Trust\r\n \r\n \r\n At Wijdan Charity, we are committed to disbursing Zakat to its eight legitimate channels under the supervision of specialized Sharia committees, ensuring the highest standards of transparency and traceability.\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n Calculation Summary\r\n \r\n\r\n \r\n \r\n Total Zakatable Wealth\r\n 0.00 $\r\n \r\n \r\n Current Nisab\r\n 6,502.50 $\r\n \r\n \r\n\r\n \r\n Obligatory Zakat (2.5%)\r\n 0.00 $\r\n \r\n \r\n Enter amount to verify\r\n \r\n \r\n\r\n \r\n <a>\r\n \r\n Contact us on WhatsApp for consultation and donation\r\n </a>\r\n \r\n\r\n \r\n All calculations are based on global gold prices and the latest Sharia rulings. We recommend consulting scholars for precise jurisprudential matters.\r\n \r\n \r\n \r\n \r\n \r\n Reset\r\n \r\n \r\n Save Calculation\r\n \r\n \r\n \r\n \r\n \r\n \r\n ","animate_delay":"0","el_class":"zakatt"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"},{"settings":{"element":"gva_column"},"col_lg":12,"elements":[{"settings":{"content":"\r\n // Initialize charity projects\r\n const charityProjects = [\r\n {\r\n id: 1,\r\n title: \"Iftar for Fasting Person\",\r\n description: \"Providing Ramadan Iftar meals for needy families\",\r\n icon: \"fa-utensils\",\r\n cost: 500,\r\n selected: false\r\n },\r\n {\r\n id: 2,\r\n title: \"Winter Clothing\",\r\n description: \"Distributing winter clothes for children and needy families\",\r\n icon: \"fa-shirt\",\r\n cost: 300,\r\n selected: false\r\n },\r\n {\r\n id: 3,\r\n title: \"Water Supply\",\r\n description: \"Digging wells and providing clean drinking water\",\r\n icon: \"fa-droplet\",\r\n cost: 1000,\r\n selected: false\r\n },\r\n {\r\n id: 4,\r\n title: \"Orphan Education\",\r\n description: \"Educational support for orphans and school supplies\",\r\n icon: \"fa-graduation-cap\",\r\n cost: 400,\r\n selected: false\r\n },\r\n {\r\n id: 5,\r\n title: \"Patient Treatment\",\r\n description: \"Covering treatment expenses for unable families\",\r\n icon: \"fa-heart-pulse\",\r\n cost: 800,\r\n selected: false\r\n },\r\n {\r\n id: 6,\r\n title: \"Widow Care\",\r\n description: \"Monthly support for widows and their children\",\r\n icon: \"fa-hand-holding-heart\",\r\n cost: 600,\r\n selected: false\r\n }\r\n ];\r\n\r\n // Donation basket\r\n let donationBasket = [];\r\n \r\n // Tab system\r\n function zakatSwitchTab(tab) {\r\n // Update tabs\r\n document.querySelectorAll('.zakat-tab-btn').forEach(btn => btn.classList.remove('active'));\r\n document.querySelectorAll('.zakat-calc-section').forEach(sec => sec.classList.add('zakat-hidden'));\r\n \r\n // Activate selected tab\r\n document.getElementById('zakat-tab-' + tab).classList.add('active');\r\n document.getElementById('zakat-section-' + tab).classList.remove('zakat-hidden');\r\n \r\n // Load charity projects if on charity tab\r\n if (tab === 'charity') {\r\n loadCharityProjects();\r\n }\r\n \r\n // Add animation\r\n const activeSection = document.getElementById('zakat-section-' + tab);\r\n activeSection.classList.add('zakat-fade-in');\r\n }\r\n \r\n // Load charity projects\r\n function loadCharityProjects() {\r\n const container = document.getElementById('charity-projects-container');\r\n container.innerHTML = '';\r\n \r\n charityProjects.forEach(project => {\r\n const projectElement = document.createElement('div');\r\n projectElement.className = `zakat-charity-card ${project.selected ? 'border-brand-secondary' : ''}`;\r\n projectElement.innerHTML = `\r\n \r\n \r\n \r\n ${project.title}\r\n ${project.description}\r\n \r\n ${project.cost.toLocaleString()} $\r\n \r\n ${project.selected ? 'Added' : 'Add'}\r\n \r\n \r\n `;\r\n container.appendChild(projectElement);\r\n });\r\n \r\n updateBasketDisplay();\r\n }\r\n \r\n // Toggle charity project selection\r\n function toggleCharityProject(projectId) {\r\n const project = charityProjects.find(p => p.id === projectId);\r\n project.selected = !project.selected;\r\n \r\n if (project.selected) {\r\n donationBasket.push(project);\r\n } else {\r\n donationBasket = donationBasket.filter(p => p.id !== projectId);\r\n }\r\n \r\n loadCharityProjects();\r\n updateBasketDisplay();\r\n }\r\n \r\n // Update donation basket display\r\n function updateBasketDisplay() {\r\n const container = document.getElementById('donation-basket-items');\r\n const totalElement = document.getElementById('basket-total');\r\n \r\n if (donationBasket.length === 0) {\r\n container.innerHTML = 'No projects added yet';\r\n totalElement.textContent = '0.00 $';\r\n return;\r\n }\r\n \r\n let total = 0;\r\n let itemsHTML = '';\r\n \r\n donationBasket.forEach(project => {\r\n total += project.cost;\r\n itemsHTML += `\r\n \r\n \r\n ${project.title}\r\n ${project.description}\r\n \r\n \r\n ${project.cost.toLocaleString()} $\r\n \r\n \r\n \r\n \r\n \r\n `;\r\n });\r\n \r\n container.innerHTML = itemsHTML;\r\n totalElement.textContent = total.toLocaleString(undefined, { minimumFractionDigits: 2 }) + ' $';\r\n }\r\n \r\n // Remove from basket\r\n function removeFromBasket(projectId) {\r\n const project = charityProjects.find(p => p.id === projectId);\r\n if (project) {\r\n project.selected = false;\r\n }\r\n donationBasket = donationBasket.filter(p => p.id !== projectId);\r\n loadCharityProjects();\r\n }\r\n \r\n // Enhanced Calculation\r\n function zakatCalculate() {\r\n // Money\r\n const cash = parseFloat(document.getElementById('zakat-cash-money').value) || 0;\r\n const bank = parseFloat(document.getElementById('zakat-bank-money').value) || 0;\r\n const debtsToMe = parseFloat(document.getElementById('zakat-debts-to-me').value) || 0;\r\n const debtsFromMe = parseFloat(document.getElementById('zakat-debts-from-me').value) || 0;\r\n \r\n // Gold/Silver\r\n const goldW = parseFloat(document.getElementById('zakat-gold-weight').value) || 0;\r\n const carat = parseFloat(document.getElementById('zakat-gold-carat').value) || 0;\r\n const goldRate = parseFloat(document.getElementById('zakat-gold-rate').value) || 0;\r\n const silverW = parseFloat(document.getElementById('zakat-silver-weight').value) || 0;\r\n const silverRate = 0.95;\r\n \r\n // Stocks & Business\r\n const stocks = parseFloat(document.getElementById('zakat-stocks-value').value) || 0;\r\n const trade = parseFloat(document.getElementById('zakat-trade-goods').value) || 0;\r\n const realEstate = parseFloat(document.getElementById('zakat-real-estate')?.value) || 0;\r\n const otherAssets = parseFloat(document.getElementById('zakat-other-assets')?.value) || 0;\r\n \r\n // Calculations\r\n const gold24Equivalent = goldW * (carat / 24);\r\n const moneyAssets = Math.max(0, (cash + bank + debtsToMe) - debtsFromMe);\r\n const metalAssets = (gold24Equivalent * goldRate) + (silverW * silverRate);\r\n const businessAssets = stocks + trade + realEstate + otherAssets;\r\n const total = Math.max(0, moneyAssets + metalAssets + businessAssets);\r\n \r\n // UI Update - Total\r\n document.getElementById('zakat-total-assets').textContent = \r\n total.toLocaleString(undefined, { minimumFractionDigits: 2 }) + ' $';\r\n \r\n // Nisab Logic (85g Gold 24k)\r\n const nisab = 85 * goldRate;\r\n document.getElementById('zakat-nisab-value').textContent = \r\n nisab.toLocaleString(undefined, { minimumFractionDigits: 2 }) + ' $';\r\n \r\n // Update nisab displays\r\n document.getElementById('nisab-value-display').textContent = \r\n nisab.toLocaleString(undefined, { minimumFractionDigits: 2 }) + ' $';\r\n document.getElementById('current-nisab').textContent = '85 grams';\r\n document.getElementById('nisab-value').textContent = nisab.toLocaleString(undefined, { minimumFractionDigits: 2 }) + ' $';\r\n \r\n // Update progress bar\r\n const nisabProgress = Math.min(100, (total / nisab) * 100);\r\n document.getElementById('nisab-progress').style.width = `${nisabProgress}%`;\r\n \r\n const zakatAmountEl = document.getElementById('zakat-amount');\r\n const statusBadge = document.getElementById('zakat-status-badge');\r\n \r\n if (total >= nisab && total > 0) {\r\n const zakat = total * 0.025;\r\n zakatAmountEl.textContent = zakat.toLocaleString(undefined, { minimumFractionDigits: 2 }) + ' $';\r\n \r\n statusBadge.innerHTML = ' Zakat is obligatory (nisab reached)';\r\n statusBadge.className = \"inline-flex items-center gap-2 px-6 py-3 rounded-full bg-green-500/20 border border-green-500/30 text-green-300 mt-4\";\r\n } else {\r\n zakatAmountEl.textContent = '0.00 $';\r\n \r\n if (total > 0) {\r\n statusBadge.innerHTML = ' Nisab not yet reached';\r\n statusBadge.className = \"inline-flex items-center gap-2 px-6 py-3 rounded-full bg-yellow-500/20 border border-yellow-500/30 text-yellow-300 mt-4\";\r\n } else {\r\n statusBadge.innerHTML = ' Enter amount to verify';\r\n statusBadge.className = \"inline-flex items-center gap-2 px-6 py-3 rounded-full bg-white/10 border border-white/20 text-white mt-4\";\r\n }\r\n }\r\n }\r\n \r\n // Fetch live rates\r\n async function zakatFetchRates() {\r\n const icon = document.getElementById('zakat-refresh-icon');\r\n icon.classList.add('fa-spin');\r\n \r\n // Simulate API call\r\n await new Promise(r => setTimeout(r, 1000));\r\n \r\n // Dynamic change for effect (simulated rate change)\r\n const current = parseFloat(document.getElementById('zakat-gold-rate').value);\r\n const newRate = current + (Math.random() - 0.5);\r\n document.getElementById('zakat-gold-rate').value = newRate.toFixed(2);\r\n \r\n icon.classList.remove('fa-spin');\r\n zakatCalculate();\r\n }\r\n \r\n // Reset form\r\n function zakatResetForm() {\r\n document.querySelectorAll('input[type=\"number\"]').forEach(input => input.value = '');\r\n donationBasket = [];\r\n charityProjects.forEach(p => p.selected = false);\r\n loadCharityProjects();\r\n zakatCalculate();\r\n }\r\n \r\n // Save calculation\r\n function zakatSaveCalculation() {\r\n const total = document.getElementById('zakat-total-assets').textContent;\r\n const zakat = document.getElementById('zakat-amount').textContent;\r\n \r\n alert(`Calculation saved:\\nTotal wealth: ${total}\\nObligatory Zakat: ${zakat}`);\r\n }\r\n \r\n // Checkout\r\n function zakatCheckout() {\r\n const total = donationBasket.reduce((sum, p) => sum + p.cost, 0);\r\n if (total === 0) {\r\n alert('Please add projects to the donation basket first');\r\n return;\r\n }\r\n \r\n alert(`You will be redirected to the payment page to complete your donation of ${total.toLocaleString()} $`);\r\n // In production: window.location.href = 'payment.html';\r\n }\r\n \r\n // Redirect to payment\r\n function zakatRedirectToPayment() {\r\n const zakatAmount = document.getElementById('zakat-amount').textContent;\r\n if (zakatAmount === '0.00 $') {\r\n alert('Please enter the amount first to calculate Zakat');\r\n return;\r\n }\r\n \r\n alert(`You will be redirected to the payment page to complete your donation of ${zakatAmount}`);\r\n // In production: window.location.href = 'payment.html?amount=' + encodeURIComponent(zakatAmount);\r\n }\r\n \r\n // Intersection Observer for animations\r\n document.addEventListener('DOMContentLoaded', () => {\r\n // Initialize animations\r\n const reveals = document.querySelectorAll('.zakat-reveal');\r\n const obs = new IntersectionObserver((entries) => {\r\n entries.forEach(e => {\r\n if (e.isIntersecting) e.target.classList.add('active');\r\n });\r\n }, { threshold: 0.1 });\r\n reveals.forEach(r => obs.observe(r));\r\n \r\n // Initialize calculation\r\n zakatCalculate();\r\n \r\n // Load initial nisab value\r\n const goldRate = parseFloat(document.getElementById('zakat-gold-rate').value) || 0;\r\n const nisab = 85 * goldRate;\r\n document.getElementById('zakat-nisab-value').textContent = \r\n nisab.toLocaleString(undefined, { minimumFractionDigits: 2 }) + ' $';\r\n });\r\n \r\n ","animate_delay":"0"},"editing":false,"element_name":"gva_text_noeditor"}],"editing":false,"element_name":"gva_column"}],"editing":false,"element_name":"gva_row"}]') (Line: 47)
Drupal\gavias_content_builder\Plugin\Field\FieldFormatter\GaviasContentBuilderFormatter->viewElements(Object, 'en') (Line: 89)
Drupal\Core\Field\FormatterBase->view(Object, 'en') (Line: 263)
Drupal\Core\Entity\Entity\EntityViewDisplay->buildMultiple(Array) (Line: 351)
Drupal\Core\Entity\EntityViewBuilder->buildComponents(Array, Array, Array, 'full') (Line: 24)
Drupal\node\NodeViewBuilder->buildComponents(Array, Array, Array, 'full') (Line: 293)
Drupal\Core\Entity\EntityViewBuilder->buildMultiple(Array) (Line: 250)
Drupal\Core\Entity\EntityViewBuilder->build(Array)
call_user_func_array(Array, Array) (Line: 100)
Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. Support for this callback implementation is deprecated in 8.8.0 and will be removed in Drupal 9.0.0. See https://www.drupal.org/node/2966725', 'silenced_deprecation', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 781)
Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 372)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 200)
Drupal\Core\Render\Renderer->render(Array, ) (Line: 226)
Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 573)
Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 227)
Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 117)
Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90)
Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object)
call_user_func(Array, Object, 'kernel.view', Object) (Line: 111)
Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch('kernel.view', Object) (Line: 156)
Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 68)
Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 57)
Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 47)
Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191)
Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128)
Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82)
Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 47)
Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 52)
Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23)
Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 708)
Drupal\Core\DrupalKernel->handle(Object) (Line: 19)