ÎN CURÂND CURSURI, TEHNICI ȘI STRATEGII FOLOSITE PENTRU A CREA VIDEOCLIPURI CARE SE REMARCĂ.

Calculator Buget Producție Video

Calculează costul exact pentru producția video. Alege tipul de proiect pentru a deschide calculatorul potrivit.

Spot Comercial
Reels & Social
'; group.items.forEach(function (item) { var total = item.checked ? item.price * item.qty : 0; rowsHtml += '
' + '' + '' + item.name + '' + '' + '
' + '' + '
' + '×€' + '€' + total.toLocaleString() + '
'; flatIdx++; }); }); html += '
' + '' + '
' + '
' + (cat.note ? '
' + cat.note + '
' : '') + rowsHtml + '
'; }); body.innerHTML = html; bindEvents(); recalcAll(); } function findRow(rowEl) { var catId = rowEl.getAttribute('data-cat'); var idx = parseInt(rowEl.getAttribute('data-idx'), 10); for (var c = 0; c < data.length; c++) { if (data[c].id === catId) { var fi = 0; for (var g = 0; g < data[c].groups.length; g++) { for (var i = 0; i < data[c].groups[g].items.length; i++) { if (fi === idx) return data[c].groups[g].items[i]; fi++; } } } } return null; } function bindEvents() { var heads = body.querySelectorAll('.ir-calc__cat-head'); for (var h = 0; h < heads.length; h++) { heads[h].addEventListener('click', function (e) { var catEl = e.currentTarget.closest('.ir-calc__cat'); var wrap = catEl.querySelector('.ir-calc__cat-wrap'); if (catEl.classList.contains('is-open')) { catEl.classList.remove('is-open'); wrap.style.maxHeight = '0'; } else { catEl.classList.add('is-open'); wrap.style.maxHeight = wrap.scrollHeight + 'px'; } }); } var rows = body.querySelectorAll('.ir-calc__row'); for (var r = 0; r < rows.length; r++) { (function (row) { row.querySelector('.ir-calc__row-check').addEventListener('change', function () { var item = findRow(row); if (!item) return; item.checked = this.checked; if (item.checked && item.qty === 0) { item.qty = 1; row.querySelector('.ir-calc__row-qty input').value = 1; } updateRow(row, item); recalcAll(); }); row.querySelector('.ir-calc__row-price-input').addEventListener('input', function () { var item = findRow(row); if (!item) return; item.price = parseInt(this.value) || 0; updateRow(row, item); recalcAll(); }); row.querySelector('.ir-calc__qty-minus').addEventListener('click', function () { var item = findRow(row); if (!item) return; item.qty = Math.max(0, item.qty - 1); row.querySelector('.ir-calc__row-qty input').value = item.qty; if (item.qty === 0) { item.checked = false; row.querySelector('.ir-calc__row-check').checked = false; } else if (!item.checked) { item.checked = true; row.querySelector('.ir-calc__row-check').checked = true; } updateRow(row, item); recalcAll(); }); row.querySelector('.ir-calc__qty-plus').addEventListener('click', function () { var item = findRow(row); if (!item) return; item.qty++; row.querySelector('.ir-calc__row-qty input').value = item.qty; if (!item.checked) { item.checked = true; row.querySelector('.ir-calc__row-check').checked = true; } updateRow(row, item); recalcAll(); }); row.querySelector('.ir-calc__row-qty input').addEventListener('input', function () { var item = findRow(row); if (!item) return; var val = Math.max(0, parseInt(this.value) || 0); item.qty = val; if (val === 0 && item.checked) { item.checked = false; row.querySelector('.ir-calc__row-check').checked = false; } else if (val > 0 && !item.checked) { item.checked = true; row.querySelector('.ir-calc__row-check').checked = true; } updateRow(row, item); recalcAll(); }); })(rows[r]); } } function updateRow(row, item) { var total = item.checked ? item.price * item.qty : 0; var el = row.querySelector('.ir-calc__row-total'); el.textContent = '€' + total.toLocaleString(); el.classList.toggle('is-active', item.checked); row.classList.toggle('is-checked', item.checked); } function recalcAll() { var prod = 0; data.forEach(function (cat) { var s = 0; cat.groups.forEach(function (g) { g.items.forEach(function (it) { s += it.checked ? it.price * it.qty : 0; }); }); prod += s; var el = body.querySelector('.ir-calc__cat[data-cat="' + cat.id + '"] .ir-calc__cat-sum'); if (el) el.textContent = '€' + s.toLocaleString(); }); var sv = surpriseOn ? Math.round(prod * surprisePct / 100) : 0; var fv = feeOn ? Math.round(prod * feePct / 100) : 0; elProd.textContent = '€' + prod.toLocaleString(); elSurpriseVal.textContent = '€' + sv.toLocaleString(); elFeeVal.textContent = '€' + fv.toLocaleString(); elTotal.textContent = '€' + (prod + sv + fv).toLocaleString(); surpriseRow.classList.toggle('is-off', !surpriseOn); surprisePctInput.classList.toggle('is-off', !surpriseOn); surprisePctInput.disabled = !surpriseOn; feeRow.classList.toggle('is-off', !feeOn); feePctInput.classList.toggle('is-off', !feeOn); feePctInput.disabled = !feeOn; } surpriseCheck.addEventListener('change', function () { surpriseOn = this.checked; recalcAll(); }); surprisePctInput.addEventListener('input', function () { surprisePct = Math.max(0, Math.min(100, parseInt(this.value) || 0)); recalcAll(); }); feeCheck.addEventListener('change', function () { feeOn = this.checked; recalcAll(); }); feePctInput.addEventListener('input', function () { feePct = Math.max(0, Math.min(100, parseInt(this.value) || 0)); recalcAll(); }); function openModal() { modal.classList.add('is-open'); document.body.style.overflow = 'hidden'; } function closeModal() { modal.classList.remove('is-open'); document.body.style.overflow = ''; } closeBtn.addEventListener('click', closeModal); jsClose.addEventListener('click', closeModal); overlay.addEventListener('click', closeModal); document.addEventListener('keydown', function (e) { if (e.key === 'Escape' && modal.classList.contains('is-open')) closeModal(); }); resetBtn.addEventListener('click', function () { data = JSON.parse(JSON.stringify(defaultCategories)); surpriseOn = true; surprisePct = 5; feeOn = true; feePct = 18; surpriseCheck.checked = true; surprisePctInput.value = 5; feeCheck.checked = true; feePctInput.value = 18; companyInput.value = ''; render(); }); /* ═══ PDF ═══ */ downloadBtn.addEventListener('click', function () { var now = new Date(); var dateStr = now.toLocaleDateString('ro-RO', { year: 'numeric', month: 'long', day: 'numeric' }); var timeStr = now.toLocaleTimeString('ro-RO', { hour: '2-digit', minute: '2-digit' }); var companyName = companyInput.value.trim(); var prod = 0; var sections = ''; data.forEach(function (cat) { var items = []; cat.groups.forEach(function (group) { group.items.forEach(function (item) { if (item.checked && item.qty > 0) items.push({ name: item.name.replace(/<[^>]*>/g, ''), price: item.price, qty: item.qty, total: item.price * item.qty, subtitle: group.subtitle || null }); }); }); if (items.length === 0) return; var catTotal = 0; var rows = ''; var lastSub = ''; items.forEach(function (it) { if (it.subtitle && it.subtitle !== lastSub) { lastSub = it.subtitle; rows += '' + it.subtitle + ''; } catTotal += it.total; rows += '' + it.name + '' + it.qty + '€' + it.price.toLocaleString() + '€' + it.total.toLocaleString() + ''; }); prod += catTotal; sections += '
' + cat.name + '€' + catTotal.toLocaleString() + '
' + rows + '
ArticolCant.PrețTotal
'; }); var sv = surpriseOn ? Math.round(prod * surprisePct / 100) : 0; var fv = feeOn ? Math.round(prod * feePct / 100) : 0; var total = prod + sv + fv; var extra = ''; if (surpriseOn && sv > 0) extra += '
Cheltuieli neprevăzute (' + surprisePct + '%)€' + sv.toLocaleString() + '
'; if (feeOn && fv > 0) extra += '
Taxa Casei de Producție (' + feePct + '%)€' + fv.toLocaleString() + '
'; var companyBlock = companyName ? '
Companie' + companyName + '
' : ''; var doc = '' + defaultTitle + '' + '

' + defaultTitle + '

' + (companyName ? '

' + companyName + '

' : '') + '

Generat pe ' + dateStr + ' la ' + timeStr + '

' + '
' + companyBlock + sections + '
Costuri de Producție€' + prod.toLocaleString() + '
' + extra + '
TOTAL PRODUCTION€' + total.toLocaleString() + '
' + '

Apasă butonul → alege „Salvează ca PDF" → Salvează

'; var win = window.open('', '_blank'); if (win) { win.document.write(doc); win.document.close(); } else { var blob = new Blob([doc], { type: 'text/html;charset=utf-8' }); var url = URL.createObjectURL(blob); var a = document.createElement('a'); a.href = url; a.download = defaultTitle.replace(/\s+/g, '-') + (companyName ? '-' + companyName.replace(/\s+/g, '-') : '') + '-' + now.toISOString().slice(0, 10) + '.html'; document.body.appendChild(a); a.click(); document.body.removeChild(a); URL.revokeObjectURL(url); } }); render(); return { open: openModal, close: closeModal }; } /* ═══════════════════════════════════════ ═══ CREATE BOTH CALCULATORS ═══ ═══════════════════════════════════════ */ var calculators = { spot: createCalc('modal-spot', spotDefault, 'Buget Spot Comercial'), reels: createCalc('modal-reels', reelsDefault, 'Buget Reels & Social Media') }; /* ═══ OPEN BUTTONS ═══ */ var openBtns = document.querySelectorAll('[data-calc-open]'); for (var i = 0; i < openBtns.length; i++) { openBtns[i].addEventListener('click', function () { var type = this.getAttribute('data-calc-open'); if (calculators[type]) calculators[type].open(); }); } })();
AI-powered analysis

Analyze
My Portfolio 1.1

Paste a YouTube or Vimeo link and get an instant detailed score with actionable recommendations for every category.

1
Add your project link
YouTube or Vimeo
2
Automatic analysis
We evaluate 4 performance keys
3
Get your score & recommendations
Concrete actions for improvement
Portfolio Analyzer
Paste a link to analyze
YouTube
Vimeo
Paste a YouTube or Vimeo link
Analyzing your video
Overall Score
0/100
Storytelling
0
Editing
0
Color Grading
0
Sound Design
0