📋 Boligtype
Ny bolig – ikke påbegynt
Ny bolig – ferdig
Brukt bolig
📈 Lånerente (%)
📅 Nedbetalingstid (år)
📊 Konsekvens av dine valg:
Fyll ut tallene for å se konsekvensen
🏷️ Beregn boligpris fra egenkapital og låneprosent
💰 Beregn egenkapital fra boligpris og låneprosent
📊 Beregn låneprosent fra boligpris og egenkapital
📊 Grunnleggende beregninger
💰 Nødvendig egenkapital (30 % av boligpris):
0 €
🏦 Maksimalt lånebeløp (70 % av boligpris):
0 €
💡 Tips: Nødvendig egenkapital beregnes ut fra din valgte låneprosent. Spanske banker tilbyr vanligvis 60-80% finansiering for utenlandske kjøpere.
🧾 Totalkostnad med avgifter
📌 Totalkostnad (inkl. IVA/stempelavgift, notarius, tinglysning, advokat m.m.):
0 €
*La Vida tar ingen % eller beløp for vår bistand!
🏗️ Ny bolig under bygging – betalingsplan
⚠️ VIKTIG OM FINANSIERING
Egenkapitalen overskrides med 0 € under byggeperioden.
Står "Resterende egenkapital" under i minus, betyr dette at den må finaniseres via ny egenkapital, eller via banklån som delfinaniserer under byggeprossess.
Har du satt inn din maksimale egenkapital, og velger bank som kun gir lån på 100% ferdigstilt bolig bør du vurdere en rimeligere bolig .
ℹ️ Dette er kun en informativ advarsel – ta alltid kontakt med bank eller LaVida for individuell vurdering.
Umiddelbart – Depositum: 4 000 €
30 dager – Kontraktinngåelse (10%): 0 €
3-6 måneder – Halvferdig bygging (30%): 0 €
💰 Totalt å betale før overtagelse (depositum + 10% + 30%):
0 €
🏦 Resterende egenkapital til overtagelse (inkl. avgifter):
0 €
💰 Resterende lånebeløp: 0 €
Månedlig lånekostnad (etter overtakelse)
0 €/mnd
🏡 Brukt bolig – innflyttingsklar
🔑 Brukt bolig
Betalingen skjer ved kontraktsinngåelse og overtakelse.
Umiddelbart – Depositum: 4 000 €
Ved overtagelse (inkl. avgifter): 0 €
💰 Resterende lånebeløp: 0 €
Månedlig lånekostnad
0 €/mnd
🏢 Ny bolig – innflyttingsklar
✨ Ny bolig, ferdig bygget
Betalingen skjer ved kontraktsinngåelse og overtakelse.
Umiddelbart – Depositum: 4 000 €
Ved overtagelse (inkl. avgifter): 0 €
💰 Resterende lånebeløp: 0 €
Månedlig lånekostnad
0 €/mnd
* Kalkulatoren er veiledende. Vi i La Vida Eiendom hjelper deg ikke bare med å finne riktig bolig, men også med finansiering. Gjennom våre samarbeidspartnere kan du enkelt få tilbud fra flere banker i Spania – vi fyller søknaden sammen med deg for å sikre best mulig betingelser.
Som en tommelfingerregel setter spanske banker vanligvis maks boliglån til 35 % av netto månedslønn. Eks.: 25 000 kr/mnd → ca. 8 750 kr i månedlige avdrag.
Nybygg: 10 % IVA. Bruktbolig: ingen IVA, men 6–10 % ITP (overføringsavgift).
Depositum er typisk 3 000–6 000 € og trekkes fra ved overtakelse.
// DOM-elementer
const boligtypeSelect = document.getElementById('boligtype');
const egenkapitalInput = document.getElementById('egenkapital');
const boligprisInput = document.getElementById('boligpris');
const renteInput = document.getElementById('rente');
const laneprosentInput = document.getElementById('laneprosent');
const lengdeInput = document.getElementById('lengde');
const nodvendigEgenkapitalSpan = document.getElementById('nodvendigEgenkapital');
const nodvendigEgenkapitalNok = document.getElementById('nodvendigEgenkapitalNok');
const maksLanSpan = document.getElementById('maksLan');
const maksLanNok = document.getElementById('maksLanNok');
const totalKostnadSpan = document.getElementById('totalKostnad');
const totalKostnadNok = document.getElementById('totalKostnadNok');
const consequenceText = document.getElementById('consequenceText');
// Nybygg ikke påbegynt
const depositumSpan = document.getElementById('depositum');
const depositumNok = document.getElementById('depositumNok');
const kontrakt30dSpan = document.getElementById('kontrakt30d');
const kontrakt30dNok = document.getElementById('kontrakt30dNok');
const halvferdigSpan = document.getElementById('halvferdig');
const halvferdigNok = document.getElementById('halvferdigNok');
const totalForOvertagelseSpan = document.getElementById('totalForOvertagelse');
const totalForOvertagelseNok = document.getElementById('totalForOvertagelseNok');
const resterendeTilOvertagelseSpan = document.getElementById('resterendeTilOvertagelse');
const resterendeTilOvertagelseNok = document.getElementById('resterendeTilOvertagelseNok');
const resLanNybyggIkkeSpan = document.getElementById('resLanNybyggIkke');
const resLanNybyggIkkeNok = document.getElementById('resLanNybyggIkkeNok');
const mndLanNybyggIkkeSpan = document.getElementById('mndLanNybyggIkke');
const mndLanNybyggIkkeNok = document.getElementById('mndLanNybyggIkkeNok');
const finansieringsadvarsel = document.getElementById('finansieringsadvarsel');
const manglerBelopSpan = document.getElementById('manglerBelop');
// Brukt
const depositumBruktSpan = document.getElementById('depositumBrukt');
const depositumBruktNok = document.getElementById('depositumBruktNok');
const overtagelseBruktSpan = document.getElementById('overtagelseBrukt');
const overtagelseBruktNok = document.getElementById('overtagelseBruktNok');
const resLanBruktSpan = document.getElementById('resLanBrukt');
const resLanBruktNok = document.getElementById('resLanBruktNok');
const mndLanBruktSpan = document.getElementById('mndLanBrukt');
const mndLanBruktNok = document.getElementById('mndLanBruktNok');
// Nybygg ferdig
const depositumNyFerdigSpan = document.getElementById('depositumNyFerdig');
const depositumNyFerdigNok = document.getElementById('depositumNyFerdigNok');
const overtagelseNyFerdigSpan = document.getElementById('overtagelseNyFerdig');
const overtagelseNyFerdigNok = document.getElementById('overtagelseNyFerdigNok');
const resLanNyFerdigSpan = document.getElementById('resLanNyFerdig');
const resLanNyFerdigNok = document.getElementById('resLanNyFerdigNok');
const mndLanNyFerdigSpan = document.getElementById('mndLanNyFerdig');
const mndLanNyFerdigNok = document.getElementById('mndLanNyFerdigNok');
const seksjonNybyggIkke = document.getElementById('seksjon-nybygg-ikke-pabegynt');
const seksjonBrukt = document.getElementById('seksjon-brukt');
const seksjonNybyggFerdig = document.getElementById('seksjon-nybygg-ferdig');
const kursInfo = document.getElementById('kursInfo');
let euroToNok = 11.30;
let kursHentet = false;
async function hentValutakurs() {
try {
const response = await fetch('https://open.er-api.com/v6/latest/EUR');
const data = await response.json();
if (data.result === 'success' && data.rates && data.rates.NOK) {
euroToNok = data.rates.NOK;
kursHentet = true;
kursInfo.innerHTML = `💱 Dagens kurs: 1 EUR = ${euroToNok.toFixed(4)} NOK (oppdatert daglig)`;
} else {
throw new Error('Kunne ikke hente kurs');
}
} catch (error) {
console.error('Feil ved henting av kurs:', error);
kursInfo.innerHTML = `⚠️ Kunne ikke hente dagens kurs. Bruker estimert kurs: 1 EUR = ${euroToNok.toFixed(2)} NOK.`;
}
oppdaterAlleBeregninger();
}
function formaterNok(euroBelop) {
if (!kursHentet && euroToNok === 11.30) {
return `ca. ${Math.round(euroBelop * euroToNok).toLocaleString('no-NO')} kr*`;
}
return `${Math.round(euroBelop * euroToNok).toLocaleString('no-NO')} kr`;
}
function oppdaterNok(verdi, nokElement) {
if (nokElement) {
nokElement.innerHTML = formaterNok(verdi);
}
}
function beregnManedligLan(lanebelop, arsRente, ar) {
if (lanebelop 0) {
konsekvensHtml += `✅ Du har
${Math.abs(egenkapitalDifferanse).toLocaleString('no-NO')} € mer egenkapital enn nødvendig. `;
} else if (egenkapitalDifferanse < 0) {
konsekvensHtml += `⚠️ Du mangler
${Math.abs(egenkapitalDifferanse).toLocaleString('no-NO')} € i egenkapital. `;
} else {
konsekvensHtml += `✅ Egenkapitalen er nøyaktig det som kreves (${egenkapital.toLocaleString('no-NO')} €). `;
}
// 2. Byggeperiode-konsekvens (kun for nybygg under bygging)
if (boligtype === 'nybygg-ikke-pabegynt') {
const depositum = 4000;
const kontraktBelop = boligpris * 0.10;
const halvferdigBelop = boligpris * 0.30;
const totalFoerOvertagelse = depositum + kontraktBelop + halvferdigBelop;
const byggeperiodeDifferanse = egenkapital - totalFoerOvertagelse;
if (byggeperiodeDifferanse < 0) {
konsekvensHtml += `
⚠️
UNDER BYGGEPERIODEN: Du mangler
${Math.abs(byggeperiodeDifferanse).toLocaleString('no-NO')} € . `;
konsekvensHtml += `Depositum (4.000 €) + 10% (${kontraktBelop.toLocaleString('no-NO')} €) + 30% (${halvferdigBelop.toLocaleString('no-NO')} €) = ${totalFoerOvertagelse.toLocaleString('no-NO')} € må betales før overtakelse. Velg bank som delfinaniserer under byggeprossess!
`;
konsekvensHtml += `
ℹ️ MERK: De fleste Spanske banker tilbyr
delfinansiering under byggeperioden . `;
konsekvensHtml += `Velg riktig bank som besørger dette. Dette vil da dekke hele underskuddet på ${Math.abs(byggeperiodeDifferanse).toLocaleString('no-NO')} €.`;
} else if (byggeperiodeDifferanse > 0) {
konsekvensHtml += `
✅
UNDER BYGGEPERIODEN: Du har
${byggeperiodeDifferanse.toLocaleString('no-NO')} € til overs etter depositum og delbetalinger.`;
} else {
konsekvensHtml += `
✅
UNDER BYGGEPERIODEN: Egenkapitalen dekker nøyaktig depositum og delbetalinger.`;
}
}
consequenceText.innerHTML = konsekvensHtml;
}
function oppdaterAlleBeregninger() {
let egenkapital = parseFloat(egenkapitalInput.value) || 0;
let boligpris = parseFloat(boligprisInput.value) || 0;
let laneprosent = parseFloat(laneprosentInput.value) || 70;
const boligtype = boligtypeSelect.value;
const rente = parseFloat(renteInput.value) || 3.5;
const lanetidAr = parseFloat(lengdeInput.value) || 20;
// Oppdater prosenttekster
const egenkapitalProsent = 100 - laneprosent;
document.getElementById('egenkapitalProsent').textContent = egenkapitalProsent;
document.getElementById('lanProsentVisning').textContent = laneprosent;
// Beregninger
const nodvendigEgenkapital = boligpris * (1 - laneprosent / 100);
const maksLanBelop = boligpris * (laneprosent / 100);
const totalKostnadMedAvgifter = getTotalPrisMedAvgifter(boligpris, boligtype);
nodvendigEgenkapitalSpan.textContent = Math.round(nodvendigEgenkapital).toLocaleString('no-NO') + ' €';
oppdaterNok(nodvendigEgenkapital, nodvendigEgenkapitalNok);
maksLanSpan.textContent = Math.round(maksLanBelop).toLocaleString('no-NO') + ' €';
oppdaterNok(maksLanBelop, maksLanNok);
totalKostnadSpan.textContent = Math.round(totalKostnadMedAvgifter).toLocaleString('no-NO') + ' €';
oppdaterNok(totalKostnadMedAvgifter, totalKostnadNok);
// Oppdater konsekvens
oppdaterKonsekvens(egenkapital, boligpris, laneprosent, boligtype);
const depositum = 4000;
const kontraktProsent = 10;
const halvferdigProsent = 30;
if (boligtype === 'nybygg-ikke-pabegynt') {
seksjonNybyggIkke.style.display = 'block';
seksjonBrukt.style.display = 'none';
seksjonNybyggFerdig.style.display = 'none';
const kontraktBelop = boligpris * (kontraktProsent / 100);
const halvferdigBelop = boligpris * (halvferdigProsent / 100);
const totalForOvertagelse = depositum + kontraktBelop + halvferdigBelop;
const resterendeTilOvertagelse = egenkapital - totalForOvertagelse;
const resLan = totalKostnadMedAvgifter - egenkapital;
const manedligLan = beregnManedligLan(Math.max(0, resLan), rente, lanetidAr);
depositumSpan.textContent = Math.round(depositum).toLocaleString('no-NO') + ' €';
oppdaterNok(depositum, depositumNok);
kontrakt30dSpan.textContent = Math.round(kontraktBelop).toLocaleString('no-NO') + ' €';
oppdaterNok(kontraktBelop, kontrakt30dNok);
halvferdigSpan.textContent = Math.round(halvferdigBelop).toLocaleString('no-NO') + ' €';
oppdaterNok(halvferdigBelop, halvferdigNok);
totalForOvertagelseSpan.textContent = Math.round(totalForOvertagelse).toLocaleString('no-NO') + ' €';
oppdaterNok(totalForOvertagelse, totalForOvertagelseNok);
const erNegativ = resterendeTilOvertagelse < 0;
resterendeTilOvertagelseSpan.textContent = (erNegativ ? '− ' : '') + Math.abs(Math.round(resterendeTilOvertagelse)).toLocaleString('no-NO') + ' €';
resterendeTilOvertagelseSpan.style.color = erNegativ ? '#c62828' : '#2a5298';
oppdaterNok(Math.abs(resterendeTilOvertagelse), resterendeTilOvertagelseNok);
if (resterendeTilOvertagelseNok) {
resterendeTilOvertagelseNok.style.color = erNegativ ? '#c62828' : '#888';
}
if (resterendeTilOvertagelse {
const egenkapital = parseFloat(egenkapitalInput.value) || 0;
const laneprosent = parseFloat(laneprosentInput.value) || 70;
if (egenkapital > 0 && laneprosent > 0) {
const boligpris = egenkapital / (1 - laneprosent / 100);
boligprisInput.value = Math.round(boligpris);
oppdaterAlleBeregninger();
}
});
document.getElementById('btnBeregnEgenkapital').addEventListener('click', () => {
const boligpris = parseFloat(boligprisInput.value) || 0;
const laneprosent = parseFloat(laneprosentInput.value) || 70;
if (boligpris > 0 && laneprosent > 0) {
const egenkapital = boligpris * (1 - laneprosent / 100);
egenkapitalInput.value = Math.round(egenkapital);
oppdaterAlleBeregninger();
}
});
document.getElementById('btnBeregnLaneprosent').addEventListener('click', () => {
const boligpris = parseFloat(boligprisInput.value) || 0;
const egenkapital = parseFloat(egenkapitalInput.value) || 0;
if (boligpris > 0 && egenkapital > 0) {
const laneprosent = (1 - egenkapital / boligpris) * 100;
if (laneprosent >= 50 && laneprosent <= 90) {
laneprosentInput.value = Math.round(laneprosent);
oppdaterAlleBeregninger();
}
}
});
// Event listeners
egenkapitalInput.addEventListener('input', oppdaterAlleBeregninger);
boligprisInput.addEventListener('input', oppdaterAlleBeregninger);
laneprosentInput.addEventListener('input', oppdaterAlleBeregninger);
renteInput.addEventListener('input', oppdaterAlleBeregninger);
lengdeInput.addEventListener('input', oppdaterAlleBeregninger);
boligtypeSelect.addEventListener('change', oppdaterAlleBeregninger);
hentValutakurs();