// source --> https://datenschuetzer.hamburg/wp-content/cache/perfmatters/datenschuetzer.hamburg/minify/41dd04e64e28.iaScript.min.js?ver=6.9.4 
$(document).ready(function(){});function ia_add_class($divID){var element=document.getElementById($divID);element.classList.add("ia_open_app")}
function copyToClipboard(text){var textarea=document.createElement('textarea');textarea.value=text;document.body.appendChild(textarea);textarea.select();document.execCommand('copy');document.body.removeChild(textarea)}
document.addEventListener('DOMContentLoaded',function(){const firmenInput=document.getElementById('ia_firmen');const stundenInput=document.getElementById('ia_stunden');const preisOutput=document.getElementById('ia_preis');const anfragenBtn=document.getElementById('ia_anfragen');const formular=document.getElementById('ia_anfrage_formular');const absendenBtn=document.getElementById('ia_absenden');const datenFeld=document.getElementById('ia_kalkulator_daten');const responseBox=document.getElementById('ia_response');function updatePreis(){let firmen=parseInt(firmenInput.value);let stunden=parseFloat(stundenInput.value);let grundpreis=firmen*199;if(firmen>=5)grundpreis*=0.75;else if(firmen>=3)grundpreis*=0.8;else if(firmen>=2)grundpreis*=0.9;let extraStunden=Math.max(0,stunden-0.5);let stundensatz=149;if(extraStunden>=5)stundensatz*=0.85;else if(extraStunden>=3)stundensatz*=0.9;let stundenpreis=extraStunden*stundensatz;let gesamt=grundpreis+stundenpreis;preisOutput.textContent=gesamt.toFixed(2).replace('.',',')+' €';datenFeld.value=`Anzahl Firmen: ${firmen}, Stunden: ${stunden}, Grundpreis: ${grundpreis.toFixed(2)} €, Extra-Stunden: ${extraStunden} h, Stundenpreis: ${stundenpreis.toFixed(2)} €, Gesamt: ${gesamt.toFixed(2)} €`}
firmenInput.addEventListener('input',updatePreis);stundenInput.addEventListener('input',updatePreis);updatePreis();anfragenBtn.addEventListener('click',()=>{formular.style.display='block';anfragenBtn.style.display='none'});absendenBtn.addEventListener('click',()=>{const privacyChecked=document.getElementById('ia_privacy').checked;const honeypot=document.getElementById('ia_hp')?document.getElementById('ia_hp').value:'';if(!privacyChecked){responseBox.innerHTML='<span style="color:red;">Siehe Datenschutz!</span>';return}
const data={action:'ia_send_kostenrechner_mail',name:document.getElementById('ia_name').value,email:document.getElementById('ia_email').value,telefon:document.getElementById('ia_telefon').value,firma:document.getElementById('ia_firma').value,anschrift:document.getElementById('ia_anschrift').value,website:document.getElementById('ia_website').value,privacy:privacyChecked?1:0,ia_hp:honeypot,daten:datenFeld.value};if(!data.name||!data.email){responseBox.innerHTML='<span style="color:red;">Bitte füllen Sie alle Pflichtfelder aus.</span>';return}
fetch(my_ajax.ajax_url,{method:'POST',headers:{'Content-Type':'application/x-www-form-urlencoded'},body:new URLSearchParams(data)}).then(res=>res.json()).then(res=>{if(res.success){formular.reset?.();formular.style.display='none';let success=document.getElementById('ia_success_msg');if(!success){success=document.createElement('div');success.id='ia_success_msg';success.style.marginTop='10px';success.style.color='white';success.style.fontWeight='bold';formular.insertAdjacentElement('afterend',success)}
success.textContent='-> Ihre Anfrage wurde erfolgreich gesendet! Wir melden uns zeitnah bei Ihnen. Vielen Dank!'}else{responseBox.innerHTML='<span style="color:red;">'+res.data+'</span>'}})})});document.addEventListener('DOMContentLoaded',function(){function ermittleSatz(seiten){if(seiten>=20)return 18;if(seiten>=15)return 25;return 29}
function euro(n){return n.toFixed(2).replace('.',',')+' €'}
const container=document.querySelector('.ia_render_website_check');if(!container)return;const siteTopInput=container.querySelector('#ia_dc_website_top');const pagesInput=container.querySelector('#ia_dc_seiten');const preisOutput=container.querySelector('#ia_dc_preis');const anfragenBtn=container.querySelector('#ia_dc_anfragen');const formular=container.querySelector('#ia_dc_anfrage_formular');const absendenBtn=container.querySelector('#ia_dc_absenden');const datenFeld=container.querySelector('#ia_dc_kalkulator_daten');const responseBox=container.querySelector('#ia_dc_response');const nameInput=container.querySelector('#ia_dc_name');const emailInput=container.querySelector('#ia_dc_email');const telInput=container.querySelector('#ia_dc_telefon');const firmaInput=container.querySelector('#ia_dc_firma');const adrInput=container.querySelector('#ia_dc_anschrift');const webInput=container.querySelector('#ia_dc_website');const privacyCb=container.querySelector('#ia_dc_privacy');function updatePreis(){let seiten=parseInt(pagesInput.value,10);if(!Number.isFinite(seiten)||seiten<1)seiten=1;const grundpreis=149;const satz=ermittleSatz(seiten);const variabel=seiten*satz;const gesamt=grundpreis+variabel;preisOutput.textContent=euro(gesamt);const site=(siteTopInput?.value||'').trim();datenFeld.value=`Website: ${site || '-'}, Unterseiten: ${seiten}, Grundpreis: ${grundpreis.toFixed(2)} €, `+`Satz/Seite: ${satz.toFixed(2)} €, Variabel: ${variabel.toFixed(2)} €, Gesamt: ${gesamt.toFixed(2)} €`}
pagesInput.addEventListener('input',updatePreis);siteTopInput.addEventListener('input',updatePreis);updatePreis();anfragenBtn.addEventListener('click',()=>{formular.style.display='block';anfragenBtn.style.display='none';if(webInput&&!webInput.value){webInput.value=siteTopInput.value||''}});absendenBtn.addEventListener('click',()=>{const privacyChecked=privacyCb.checked;const honeypot=container.querySelector('#ia_dc_hp')?container.querySelector('#ia_dc_hp').value:'';if(!privacyChecked){responseBox.innerHTML='<span style="color:red;">Siehe Datenschutz!</span>';return}
const data={action:'ia_send_kostenrechner_mail',name:nameInput.value,email:emailInput.value,telefon:telInput.value,firma:firmaInput.value,anschrift:adrInput.value,website:(webInput.value||siteTopInput.value||''),privacy:privacyChecked?1:0,ia_hp:honeypot,daten:datenFeld.value};if(!data.name||!data.email){responseBox.innerHTML='<span style="color:red;">Bitte füllen Sie alle Pflichtfelder aus.</span>';return}
fetch(my_ajax.ajax_url,{method:'POST',headers:{'Content-Type':'application/x-www-form-urlencoded'},body:new URLSearchParams(data)}).then(res=>res.json()).then(res=>{if(res.success){if(typeof formular.reset==='function')formular.reset();formular.style.display='none';let success=container.querySelector('#ia_dc_success_msg');if(!success){success=document.createElement('div');success.id='ia_dc_success_msg';success.style.marginTop='10px';success.style.color='white';success.style.fontWeight='bold';formular.insertAdjacentElement('afterend',success)}
success.textContent='-> Ihre Anfrage wurde erfolgreich gesendet! Wir melden uns zeitnah bei Ihnen. Vielen Dank!'}else{responseBox.innerHTML='<span style="color:red;">'+(res.data||'Fehler beim Senden.')+'</span>'}}).catch(()=>{responseBox.innerHTML='<span style="color:red;">Unerwarteter Fehler. Bitte später erneut versuchen.</span>'})})});document.addEventListener('DOMContentLoaded',function(){document.querySelectorAll('.ia_privacy_training').forEach(function(container){const anzahlInput=container.querySelector('#ia_pt_anzahl');const artSelect=container.querySelector('#ia_pt_art');const preisOutput=container.querySelector('#ia_pt_preis');const anfragenBtn=container.querySelector('#ia_pt_anfragen');const formular=container.querySelector('#ia_pt_anfrage_formular');const absendenBtn=container.querySelector('#ia_pt_absenden');const datenFeld=container.querySelector('#ia_pt_kalkulator_daten');const responseBox=container.querySelector('#ia_pt_response');const nameInput=container.querySelector('#ia_pt_name');const emailInput=container.querySelector('#ia_pt_email');const telInput=container.querySelector('#ia_pt_telefon');const firmaInput=container.querySelector('#ia_pt_firma');const adrInput=container.querySelector('#ia_pt_anschrift');const webInput=container.querySelector('#ia_pt_website');const privacyCb=container.querySelector('#ia_pt_privacy');function euro(n){return n.toFixed(2).replace('.',',')+' €'}
function getSatz(anzahl){const opt=artSelect.options[artSelect.selectedIndex];const base=parseFloat(opt.getAttribute('data-preis'))||0;const p15=opt.hasAttribute('data-preis-15')?parseFloat(opt.getAttribute('data-preis-15')):null;const p20=opt.hasAttribute('data-preis-20')?parseFloat(opt.getAttribute('data-preis-20')):null;if(anzahl>=20&&p20!==null&&!Number.isNaN(p20))return p20;if(anzahl>=15&&p15!==null&&!Number.isNaN(p15))return p15;return base}
function getArtLabel(){const opt=artSelect.options[artSelect.selectedIndex];return opt?opt.textContent.trim():''}
function updatePreis(){let anzahl=parseInt(anzahlInput.value,10);if(!Number.isFinite(anzahl)||anzahl<1)anzahl=1;const satz=getSatz(anzahl);let gesamt=anzahl*satz;if(gesamt<149)gesamt=149;preisOutput.textContent=euro(gesamt);datenFeld.value=`Training: Datenschutz-Schulung, Teilnehmer: ${anzahl}, Art: ${getArtLabel()}, `+`Satz/Teilnehmer: ${satz.toFixed(2)} €, Gesamt: ${gesamt.toFixed(2)} € (Mindestpreis 149 €)`}
anzahlInput.addEventListener('input',updatePreis);artSelect.addEventListener('change',updatePreis);updatePreis();anfragenBtn.addEventListener('click',function(){formular.style.display='block';anfragenBtn.style.display='none'});absendenBtn.addEventListener('click',function(){const privacyChecked=privacyCb.checked;const honeypot=container.querySelector('#ia_pt_hp')?container.querySelector('#ia_pt_hp').value:'';if(!privacyChecked){responseBox.innerHTML='<span style="color:red;">Siehe Datenschutz!</span>';return}
const data={action:'ia_send_kostenrechner_mail',name:nameInput.value,email:emailInput.value,telefon:telInput.value,firma:firmaInput.value,anschrift:adrInput.value,website:webInput.value,privacy:privacyChecked?1:0,ia_hp:honeypot,daten:datenFeld.value};if(!data.name||!data.email){responseBox.innerHTML='<span style="color:red;">Bitte füllen Sie alle Pflichtfelder aus.</span>';return}
fetch(my_ajax.ajax_url,{method:'POST',headers:{'Content-Type':'application/x-www-form-urlencoded'},body:new URLSearchParams(data)}).then(function(res){return res.json()}).then(function(res){if(res.success){if(typeof formular.reset==='function')formular.reset();formular.style.display='none';let success=container.querySelector('#ia_pt_success_msg');if(!success){success=document.createElement('div');success.id='ia_pt_success_msg';success.style.marginTop='10px';success.style.color='white';success.style.fontWeight='bold';formular.insertAdjacentElement('afterend',success)}
success.textContent='-> Ihre Anfrage wurde erfolgreich gesendet! Wir melden uns zeitnah bei Ihnen. Vielen Dank!'}else{responseBox.innerHTML='<span style="color:red;">'+(res.data||'Fehler beim Senden.')+'</span>'}}).catch(function(){responseBox.innerHTML='<span style="color:red;">Unerwarteter Fehler. Bitte später erneut versuchen.</span>'})})})});document.addEventListener('DOMContentLoaded',function(){document.querySelectorAll('.ia_dsgvo_bussgeld .ia_hint_toggle').forEach(function(btn){btn.addEventListener('click',function(){const id=btn.getAttribute('aria-controls');const box=id?document.getElementById(id):null;if(!box)return;const expanded=btn.getAttribute('aria-expanded')==='true';btn.setAttribute('aria-expanded',String(!expanded));if(expanded){box.setAttribute('hidden','')}else{box.removeAttribute('hidden')}})})});document.addEventListener('DOMContentLoaded',function(){document.querySelectorAll('.ia_dsgvo_bussgeld').forEach(function(root){const umsatzInput=root.querySelector('#ia_bg_umsatz');const typSelect=root.querySelector('#ia_bg_typ');const schwSelect=root.querySelector('#ia_bg_schwere');const schuldSel=root.querySelector('#ia_bg_verschulden');const wdhSel=root.querySelector('#ia_bg_wiederholung');const tagessatzEl=root.querySelector('#ia_bg_tagessatz');const multiEl=root.querySelector('#ia_bg_multitext');const adjEl=root.querySelector('#ia_bg_adjtext');const summeEl=root.querySelector('#ia_bg_summe');if(!umsatzInput||!typSelect||!schwSelect||!tagessatzEl||!summeEl)return;umsatzInput.type='text';const euro=(n)=>new Intl.NumberFormat('de-DE',{style:'currency',currency:'EUR',minimumFractionDigits:0,maximumFractionDigits:0}).format(Number.isFinite(n)?Math.round(n):0);const FACTOR_MAP={formell:{leicht:1.5,mittel:3,schwer:5,sehr_schwer:6},materiell:{leicht:2.5,mittel:6,schwer:10,sehr_schwer:12}};const GROUPS=[{max:700_000,rep:350_000},{max:1_400_000,rep:1_050_000},{max:2_000_000,rep:1_700_000},{max:5_000_000,rep:3_500_000},{max:10_000_000,rep:7_500_000},{max:25_000_000,rep:17_500_000},{max:50_000_000,rep:37_500_000},{max:125_000_000,rep:87_500_000},{max:250_000_000,rep:187_500_000},{max:500_000_000,rep:375_000_000},{max:750_000_000,rep:625_000_000},{max:1_000_000_000,rep:875_000_000}];const gesetzlicheObergrenze=(umsatz,typ)=>typ==='formell'?Math.max(10_000_000,0.02*umsatz):Math.max(20_000_000,0.04*umsatz);function parseUmsatz(val){return parseFloat(val.replace(/\./g,'').replace(/,/g,'.'))||0}
function formatUmsatz(val){const num=parseUmsatz(val);return num?num.toLocaleString('de-DE'):''}
function getRepRevenue(umsatz){for(const g of GROUPS){if(umsatz<=g.max)return g.rep}
return umsatz}
function calc(){const umsatz=parseUmsatz(umsatzInput.value);const typ=typSelect.value;const schw=schwSelect.value;const f=FACTOR_MAP[typ]?.[schw]??1;const repRevenue=getRepRevenue(umsatz);const tagessatz=repRevenue/360;let summe=tagessatz*f;const schuldPct=(parseFloat(schuldSel?.value)||0)/100;const wdhPct=(parseFloat(wdhSel?.value)||0)/100;summe=summe*(1+schuldPct)*(1+wdhPct);const cap=gesetzlicheObergrenze(umsatz,typ);const gedeckelt=Math.min(summe,cap);tagessatzEl.textContent=euro(tagessatz);multiEl.textContent=`× ${f.toLocaleString('de-DE')} (${typ === 'formell' ? 'formell' : 'materiell'}, ${schw.replace('_',' ')})`;adjEl.textContent=`${(schuldPct*100).toFixed(0)} % Verschulden, ${(wdhPct*100).toFixed(0)} % Wiederholung`;summeEl.textContent=euro(gedeckelt)+(summe>cap?' (auf Cap begrenzt)':'')}
umsatzInput.addEventListener('input',function(){umsatzInput.value=formatUmsatz(umsatzInput.value);calc();umsatzInput.setSelectionRange(umsatzInput.value.length,umsatzInput.value.length)});[typSelect,schwSelect,schuldSel,wdhSel].forEach(el=>{el?.addEventListener('input',calc);el?.addEventListener('change',calc)});umsatzInput.value=formatUmsatz(umsatzInput.value);calc()})});