undefined / index.html
NalyTs's picture
Quero que faça o redesign dessa página https://www8.caixa.gov.br/siopiinternet-web/simulaOperacaoInternet.do?method=inicializarCasoUso
6347db4 verified
<!DOCTYPE html>
<html lang="pt-BR">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>FinSim Pro - Simulador Inteligente de Financiamento Imobiliário</title>
<link rel="icon" type="image/x-icon" href="/static/favicon.ico">
<script src="https://cdn.tailwindcss.com"></script>
<script src="https://unpkg.com/feather-icons"></script>
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
<script>
tailwind.config = {
theme: {
extend: {
colors: {
primary: '#0066b3', // Azul Caixa
secondary: '#ff6600', // Laranja
accent: '#00a859' // Verde
}
}
}
}
</script>
<style>
.progress-step {
width: 2.5rem;
height: 2.5rem;
}
input[type="range"]::-webkit-slider-thumb {
-webkit-appearance: none;
appearance: none;
width: 20px;
height: 20px;
background: #0066b3;
cursor: pointer;
border-radius: 50%;
}
.switch {
position: relative;
display: inline-block;
width: 60px;
height: 34px;
}
.switch input {
opacity: 0;
width: 0;
height: 0;
}
.slider {
position: absolute;
cursor: pointer;
top: 0;
left: 0;
right: 0;
bottom: 0;
background-color: #ccc;
transition: .4s;
border-radius: 34px;
}
.slider:before {
position: absolute;
content: "";
height: 26px;
width: 26px;
left: 4px;
bottom: 4px;
background-color: white;
transition: .4s;
border-radius: 50%;
}
input:checked + .slider {
background-color: #00a859;
}
input:checked + .slider:before {
transform: translateX(26px);
}
.tooltip {
position: relative;
display: inline-block;
}
.tooltip .tooltiptext {
visibility: hidden;
width: 200px;
background-color: #555;
color: #fff;
text-align: center;
border-radius: 6px;
padding: 5px;
position: absolute;
z-index: 1;
bottom: 125%;
left: 50%;
margin-left: -100px;
opacity: 0;
transition: opacity 0.3s;
}
.tooltip:hover .tooltiptext {
visibility: visible;
opacity: 1;
}
</style>
</head>
<body class="bg-gray-50 font-sans">
<!-- Header -->
<header class="bg-primary text-white shadow-md">
<div class="container mx-auto px-4 py-4 flex justify-between items-center">
<div class="flex items-center space-x-2">
<i data-feather="dollar-sign" class="w-8 h-8"></i>
<h1 class="text-2xl font-bold">FinSim Pro</h1>
<span class="text-sm bg-white text-primary px-2 py-1 rounded-full ml-2">Beta</span>
</div>
<div>
<button id="loginBtn" class="bg-white text-primary px-4 py-2 rounded-full font-medium hover:bg-gray-100 transition">
Entrar
</button>
</div>
</div>
</header>
<!-- Main Content -->
<main class="container mx-auto px-4 py-8">
<!-- Progress Steps -->
<div class="max-w-3xl mx-auto mb-8">
<div class="flex justify-between relative">
<div class="absolute top-1/2 left-0 right-0 h-1 bg-gray-200 -z-10"></div>
<div id="progressBar" class="absolute top-1/2 left-0 h-1 bg-accent -z-10" style="width: 25%;"></div>
<div class="flex flex-col items-center">
<div class="progress-step rounded-full bg-accent text-white flex items-center justify-center mb-1">
<span>1</span>
</div>
<span class="text-sm font-medium text-accent">Dados Básicos</span>
</div>
<div class="flex flex-col items-center">
<div class="progress-step rounded-full border-2 border-gray-300 bg-white text-gray-400 flex items-center justify-center mb-1">
<span>2</span>
</div>
<span class="text-sm font-medium text-gray-500">Condições</span>
</div>
<div class="flex flex-col items-center">
<div class="progress-step rounded-full border-2 border-gray-300 bg-white text-gray-400 flex items-center justify-center mb-1">
<span>3</span>
</div>
<span class="text-sm font-medium text-gray-500">Resultado</span>
</div>
<div class="flex flex-col items-center">
<div class="progress-step rounded-full border-2 border-gray-300 bg-white text-gray-400 flex items-center justify-center mb-1">
<span>4</span>
</div>
<span class="text-sm font-medium text-gray-500">Personalizar</span>
</div>
</div>
</div>
<!-- Step 1: Basic Info -->
<div id="step1" class="max-w-3xl mx-auto bg-white rounded-xl shadow-md overflow-hidden p-6 mb-6">
<h2 class="text-xl font-bold text-primary mb-4">Vamos começar sua simulação</h2>
<p class="text-gray-600 mb-6">Preencha os campos abaixo com informações reais para obter uma simulação precisa</p>
<div class="grid grid-cols-1 md:grid-cols-2 gap-4 mb-4">
<div>
<label for="valorImovel" class="block text-sm font-medium text-gray-700 mb-1 flex items-center">
Valor do imóvel desejado
<span class="tooltip ml-1">
<i data-feather="help-circle" class="w-4 h-4 text-gray-400"></i>
<span class="tooltiptext">Informe o valor de mercado do imóvel que deseja financiar</span>
</span>
</label>
<div class="relative">
<div class="absolute inset-y-0 left-0 pl-3 flex items-center pointer-events-none">
<span class="text-gray-500">R$</span>
</div>
<input type="number" id="valorImovel" class="pl-10 block w-full rounded-md border-gray-300 shadow-sm focus:border-primary focus:ring-primary" placeholder="300.000,00">
</div>
</div>
<div>
<label for="rendaMensal" class="block text-sm font-medium text-gray-700 mb-1 flex items-center">
Sua renda mensal bruta
<span class="tooltip ml-1">
<i data-feather="help-circle" class="w-4 h-4 text-gray-400"></i>
<span class="tooltiptext">Soma de todos seus rendimentos antes dos descontos</span>
</span>
</label>
<div class="relative">
<div class="absolute inset-y-0 left-0 pl-3 flex items-center pointer-events-none">
<span class="text-gray-500">R$</span>
</div>
<input type="number" id="rendaMensal" class="pl-10 block w-full rounded-md border-gray-300 shadow-sm focus:border-primary focus:ring-primary" placeholder="8.000,00">
</div>
</div>
</div>
<div class="grid grid-cols-1 md:grid-cols-2 gap-4 mb-4">
<div>
<label for="entrada" class="block text-sm font-medium text-gray-700 mb-1 flex items-center">
Valor disponível para entrada
<span class="tooltip ml-1">
<i data-feather="help-circle" class="w-4 h-4 text-gray-400"></i>
<span class="tooltiptext">Inclua recursos próprios, FGTS e outros valores disponíveis</span>
</span>
</label>
<div class="relative">
<div class="absolute inset-y-0 left-0 pl-3 flex items-center pointer-events-none">
<span class="text-gray-500">R$</span>
</div>
<input type="number" id="entrada" class="pl-10 block w-full rounded-md border-gray-300 shadow-sm focus:border-primary focus:ring-primary" placeholder="60.000,00">
</div>
<p class="mt-1 text-xs text-gray-500">
<i data-feather="info" class="w-3 h-3 inline mr-1"></i>
Entrada mínima: 20% para imóveis usados, 15% para novos
</p>
</div>
<div>
<label for="prazo" class="block text-sm font-medium text-gray-700 mb-1 flex items-center">
Prazo do financiamento (anos)
<span class="tooltip ml-1">
<i data-feather="help-circle" class="w-4 h-4 text-gray-400"></i>
<span class="tooltiptext">Prazo máximo: 35 anos para imóveis novos, 30 anos para usados</span>
</span>
</label>
<input type="range" id="prazo" min="5" max="35" value="20" class="w-full h-2 bg-gray-200 rounded-lg appearance-none cursor-pointer">
<div class="flex justify-between text-xs text-gray-500">
<span>5</span>
<span>10</span>
<span>15</span>
<span>20</span>
<span>25</span>
<span>30</span>
<span>35</span>
</div>
<p class="mt-1 text-center font-medium"><span id="prazoValue">20</span> anos</p>
</div>
</div>
<div class="mt-6 flex justify-end">
<button id="nextToStep2" class="bg-primary text-white px-6 py-2 rounded-full font-medium hover:bg-blue-700 transition">
Continuar <i data-feather="arrow-right" class="w-4 h-4 inline ml-1"></i>
</button>
</div>
</div>
<!-- Step 2: Conditions (hidden initially) -->
<div id="step2" class="max-w-3xl mx-auto bg-white rounded-xl shadow-md overflow-hidden p-6 mb-6 hidden">
<h2 class="text-xl font-bold text-primary mb-4">Melhore suas condições</h2>
<p class="text-gray-600 mb-6">Ative os benefícios que você possui para reduzir sua taxa de juros</p>
<div class="mb-6">
<h3 class="text-lg font-semibold mb-3 flex items-center">
<i data-feather="user-check" class="w-5 h-5 mr-2 text-primary"></i>
Benefícios para clientes Caixa
</h3>
<p class="text-sm text-gray-600 mb-4">Cada produto ativado reduz sua taxa de juros. Quanto mais benefícios, maior a economia!</p>
<div class="space-y-3">
<div class="flex items-center justify-between p-3 border border-gray-200 rounded-lg">
<div>
<h4 class="font-medium">Conta corrente na Caixa</h4>
<p class="text-xs text-gray-500">Redução de 0,2% na taxa</p>
</div>
<label class="switch">
<input type="checkbox" id="contaCaixa">
<span class="slider round"></span>
</label>
</div>
<div class="flex items-center justify-between p-3 border border-gray-200 rounded-lg">
<div>
<h4 class="font-medium">Pix cadastrado com CPF</h4>
<p class="text-xs text-gray-500">Redução de 0,15% na taxa</p>
</div>
<label class="switch">
<input type="checkbox" id="pixCPF">
<span class="slider round"></span>
</label>
</div>
<div class="flex items-center justify-between p-3 border border-gray-200 rounded-lg">
<div>
<h4 class="font-medium">Open Finance ativado</h4>
<p class="text-xs text-gray-500">Redução de 0,1% na taxa</p>
</div>
<label class="switch">
<input type="checkbox" id="openFinance">
<span class="slider round"></span>
</label>
</div>
<div class="flex items-center justify-between p-3 border border-gray-200 rounded-lg">
<div>
<h4 class="font-medium">Cartão de crédito Caixa</h4>
<p class="text-xs text-gray-500">Redução de 0,15% na taxa</p>
</div>
<label class="switch">
<input type="checkbox" id="cartaoCredito">
<span class="slider round"></span>
</label>
</div>
</div>
</div>
<div>
<h3 class="text-lg font-semibold mb-3 flex items-center">
<i data-feather="trending-down" class="w-5 h-5 mr-2 text-primary"></i>
Escolha como pagar seu financiamento
</h3>
<p class="text-sm text-gray-600 mb-4">Selecione o sistema que melhor se adapta ao seu orçamento</p>
<div class="grid grid-cols-1 md:grid-cols-2 gap-4">
<div>
<input type="radio" id="sac" name="amortizacao" value="sac" class="hidden peer" checked>
<label for="sac" class="block p-4 border border-gray-200 rounded-lg cursor-pointer peer-checked:border-primary peer-checked:bg-blue-50">
<div class="flex items-start">
<div class="flex-shrink-0 h-5 w-5 mt-0.5">
<div class="h-4 w-4 border-2 border-gray-300 rounded-full peer-checked:border-primary peer-checked:bg-primary relative">
<div class="absolute top-1/2 left-1/2 transform -translate-x-1/2 -translate-y-1/2 w-2 h-2 bg-white rounded-full hidden peer-checked:block"></div>
</div>
</div>
<div class="ml-3">
<h4 class="font-medium">SAC</h4>
<p class="text-xs text-gray-500">Prestações decrescentes</p>
</div>
</div>
</label>
</div>
<div>
<input type="radio" id="price" name="amortizacao" value="price" class="hidden peer">
<label for="price" class="block p-4 border border-gray-200 rounded-lg cursor-pointer peer-checked:border-primary peer-checked:bg-blue-50">
<div class="flex items-start">
<div class="flex-shrink-0 h-5 w-5 mt-0.5">
<div class="h-4 w-4 border-2 border-gray-300 rounded-full peer-checked:border-primary peer-checked:bg-primary relative">
<div class="absolute top-1/2 left-1/2 transform -translate-x-1/2 -translate-y-1/2 w-2 h-2 bg-white rounded-full hidden peer-checked:block"></div>
</div>
</div>
<div class="ml-3">
<h4 class="font-medium">PRICE</h4>
<p class="text-xs text-gray-500">Prestações fixas</p>
</div>
</div>
</label>
</div>
</div>
</div>
<div class="mt-6 flex justify-between">
<button id="backToStep1" class="text-primary px-6 py-2 rounded-full font-medium hover:bg-gray-100 transition">
<i data-feather="arrow-left" class="w-4 h-4 inline mr-1"></i> Voltar
</button>
<button id="nextToStep3" class="bg-primary text-white px-6 py-2 rounded-full font-medium hover:bg-blue-700 transition">
Simular <i data-feather="arrow-right" class="w-4 h-4 inline ml-1"></i>
</button>
</div>
</div>
<!-- Step 3: Results (hidden initially) -->
<div id="step3" class="max-w-3xl mx-auto bg-white rounded-xl shadow-md overflow-hidden p-6 mb-6 hidden">
<h2 class="text-xl font-bold text-primary mb-4">Sua simulação personalizada</h2>
<p class="text-gray-600 mb-6">Confira os detalhes do seu financiamento e compare com as condições normais</p>
<div class="grid grid-cols-1 md:grid-cols-3 gap-4 mb-6">
<div class="bg-blue-50 p-4 rounded-lg">
<h3 class="text-sm font-medium text-gray-600 mb-1 flex items-center">
<i data-feather="dollar-sign" class="w-3 h-3 mr-1"></i>
Valor financiado
</h3>
<p class="text-xl font-bold" id="valorFinanciado">R$ 240.000,00</p>
</div>
<div class="bg-blue-50 p-4 rounded-lg">
<h3 class="text-sm font-medium text-gray-600 mb-1 flex items-center">
<i data-feather="percent" class="w-3 h-3 mr-1"></i>
Taxa de juros anual
</h3>
<p class="text-xl font-bold" id="taxaJuros">8,5% a.a.</p>
</div>
<div class="bg-blue-50 p-4 rounded-lg">
<h3 class="text-sm font-medium text-gray-600 mb-1">Parcela inicial</h3>
<p class="text-xl font-bold" id="parcelaInicial">R$ 2.045,00</p>
</div>
</div>
<div class="mb-6">
<h3 class="text-lg font-semibold mb-3 flex items-center">
<i data-feather="bar-chart-2" class="w-5 h-5 mr-2 text-primary"></i>
Veja quanto você está economizando
</h3>
<div class="bg-gray-50 p-4 rounded-lg">
<div class="flex justify-between items-center mb-2">
<span class="font-medium">Taxa normal</span>
<span class="text-gray-600">9,0% a.a.</span>
</div>
<div class="flex justify-between items-center text-accent">
<span class="font-medium">Sua taxa</span>
<span id="suaTaxaComparacao">8,5% a.a.</span>
</div>
<div class="mt-4 text-sm text-gray-500">
<p>Com os descontos aplicados, você economiza <span class="font-medium text-accent" id="economiaTaxa">R$ 15.200,00</span> no total do financiamento.</p>
</div>
</div>
</div>
<div class="mb-6">
<h3 class="text-lg font-semibold mb-3 flex items-center">
<i data-feather="calendar" class="w-5 h-5 mr-2 text-primary"></i>
Projeção das suas parcelas ao longo do tempo
</h3>
<div class="h-64">
<canvas id="graficoParcelas"></canvas>
</div>
</div>
<div class="mt-6 flex justify-between">
<button id="backToStep2" class="text-primary px-6 py-2 rounded-full font-medium hover:bg-gray-100 transition">
<i data-feather="arrow-left" class="w-4 h-4 inline mr-1"></i> Voltar
</button>
<div class="space-x-3">
<button class="text-primary px-4 py-2 rounded-full font-medium hover:bg-gray-100 transition border border-primary">
<i data-feather="download" class="w-4 h-4 inline mr-1"></i> Baixar
</button>
<button id="nextToStep4" class="bg-primary text-white px-6 py-2 rounded-full font-medium hover:bg-blue-700 transition">
Personalizar <i data-feather="arrow-right" class="w-4 h-4 inline ml-1"></i>
</button>
</div>
</div>
</div>
<!-- Step 4: Customize (hidden initially) -->
<div id="step4" class="max-w-3xl mx-auto bg-white rounded-xl shadow-md overflow-hidden p-6 mb-6 hidden">
<h2 class="text-xl font-bold text-primary mb-4">Ajuste fino da sua simulação</h2>
<p class="text-gray-600 mb-6">Faça os últimos ajustes para encontrar a proposta ideal para seu bolso</p>
<div class="grid grid-cols-1 md:grid-cols-2 gap-4 mb-6">
<div>
<label for="prazoMaximo" class="block text-sm font-medium text-gray-700 mb-1 flex items-center">
Prazo máximo desejado
<span class="tooltip ml-1">
<i data-feather="help-circle" class="w-4 h-4 text-gray-400"></i>
<span class="tooltiptext">O prazo afeta diretamente o valor das parcelas e o total de juros</span>
</span>
</label>
<input type="range" id="prazoMaximo" min="5" max="35" value="20" class="w-full h-2 bg-gray-200 rounded-lg appearance-none cursor-pointer">
<div class="flex justify-between text-xs text-gray-500">
<span>5</span>
<span>10</span>
<span>15</span>
<span>20</span>
<span>25</span>
<span>30</span>
<span>35</span>
</div>
<p class="mt-1 text-center font-medium"><span id="prazoMaximoValue">20</span> anos</p>
</div>
<div>
<label for="entradaMinima" class="block text-sm font-medium text-gray-700 mb-1 flex items-center">
Percentual de entrada
<span class="tooltip ml-1">
<i data-feather="help-circle" class="w-4 h-4 text-gray-400"></i>
<span class="tooltiptext">Entradas maiores reduzem o valor financiado e os juros totais</span>
</span>
</label>
<input type="range" id="entradaMinima" min="10" max="50" value="20" class="w-full h-2 bg-gray-200 rounded-lg appearance-none cursor-pointer">
<div class="flex justify-between text-xs text-gray-500">
<span>10%</span>
<span>20%</span>
<span>30%</span>
<span>40%</span>
<span>50%</span>
</div>
<p class="mt-1 text-center font-medium"><span id="entradaMinimaValue">20</span>%</p>
</div>
</div>
<div class="mb-6">
<h3 class="text-lg font-semibold mb-3 flex items-center">
<i data-feather="settings" class="w-5 h-5 mr-2 text-primary"></i>
Revisar sistema de amortização
</h3>
<div class="grid grid-cols-1 md:grid-cols-2 gap-4">
<div>
<input type="radio" id="sacPersonalizado" name="amortizacaoPersonalizada" value="sac" class="hidden peer" checked>
<label for="sacPersonalizado" class="block p-4 border border-gray-200 rounded-lg cursor-pointer peer-checked:border-primary peer-checked:bg-blue-50">
<div class="flex items-start">
<div class="flex-shrink-0 h-5 w-5 mt-0.5">
<div class="h-4 w-4 border-2 border-gray-300 rounded-full peer-checked:border-primary peer-checked:bg-primary relative">
<div class="absolute top-1/2 left-1/2 transform -translate-x-1/2 -translate-y-1/2 w-2 h-2 bg-white rounded-full hidden peer-checked:block"></div>
</div>
</div>
<div class="ml-3">
<h4 class="font-medium">SAC</h4>
<p class="text-xs text-gray-500">Prestações decrescentes</p>
</div>
</div>
</label>
</div>
<div>
<input type="radio" id="pricePersonalizado" name="amortizacaoPersonalizada" value="price" class="hidden peer">
<label for="pricePersonalizado" class="block p-4 border border-gray-200 rounded-lg cursor-pointer peer-checked:border-primary peer-checked:bg-blue-50">
<div class="flex items-start">
<div class="flex-shrink-0 h-5 w-5 mt-0.5">
<div class="h-4 w-4 border-2 border-gray-300 rounded-full peer-checked:border-primary peer-checked:bg-primary relative">
<div class="absolute top-1/2 left-1/2 transform -translate-x-1/2 -translate-y-1/2 w-2 h-2 bg-white rounded-full hidden peer-checked:block"></div>
</div>
</div>
<div class="ml-3">
<h4 class="font-medium">PRICE</h4>
<p class="text-xs text-gray-500">Prestações fixas</p>
</div>
</div>
</label>
</div>
</div>
</div>
<div class="mb-6">
<h3 class="text-lg font-semibold mb-3 flex items-center">
<i data-feather="sliders" class="w-5 h-5 mr-2 text-primary"></i>
Ajustes manuais das parcelas
</h3>
<p class="text-sm text-gray-600 mb-4">Edite os valores para simular diferentes cenários</p>
<div class="grid grid-cols-1 md:grid-cols-2 gap-4">
<div>
<label for="primeiraParcela" class="block text-sm font-medium text-gray-700 mb-1">Primeira parcela</label>
<div class="relative">
<div class="absolute inset-y-0 left-0 pl-3 flex items-center pointer-events-none">
<span class="text-gray-500">R$</span>
</div>
<input type="number" id="primeiraParcela" class="pl-10 block w-full rounded-md border-gray-300 shadow-sm focus:border-primary focus:ring-primary" placeholder="2.045,00">
</div>
</div>
<div>
<label for="ultimaParcela" class="block text-sm font-medium text-gray-700 mb-1">Última parcela</label>
<div class="relative">
<div class="absolute inset-y-0 left-0 pl-3 flex items-center pointer-events-none">
<span class="text-gray-500">R$</span>
</div>
<input type="number" id="ultimaParcela" class="pl-10 block w-full rounded-md border-gray-300 shadow-sm focus:border-primary focus:ring-primary" placeholder="1.200,00">
</div>
</div>
</div>
</div>
<div class="mt-6 flex justify-between">
<button id="backToStep3" class="text-primary px-6 py-2 rounded-full font-medium hover:bg-gray-100 transition">
<i data-feather="arrow-left" class="w-4 h-4 inline mr-1"></i> Voltar
</button>
<div class="space-x-3">
<button class="text-primary px-4 py-2 rounded-full font-medium hover:bg-gray-100 transition border border-primary">
<i data-feather="download" class="w-4 h-4 inline mr-1"></i> Baixar
</button>
<button id="contratarBtn" class="bg-accent text-white px-6 py-2 rounded-full font-medium hover:bg-green-600 transition flex items-center justify-center">
<i data-feather="file-text" class="w-4 h-4 mr-2"></i>
Iniciar processo de contratação
</button>
</div>
</div>
</div>
</main>
<!-- Login Modal -->
<div id="loginModal" class="fixed inset-0 bg-black bg-opacity-50 flex items-center justify-center z-50 hidden">
<div class="bg-white rounded-xl p-6 max-w-md w-full mx-4">
<div class="flex justify-between items-center mb-4">
<h3 class="text-xl font-bold text-primary flex items-center">
<i data-feather="lock" class="w-5 h-5 mr-2"></i>
Acesso ao seu financiamento
</h3>
<button id="closeLoginModal" class="text-gray-500 hover:text-gray-700">
<i data-feather="x"></i>
</button>
</div>
<form>
<div class="mb-4">
<label for="loginCPF" class="block text-sm font-medium text-gray-700 mb-1">CPF</label>
<input type="text" id="loginCPF" class="block w-full rounded-md border-gray-300 shadow-sm focus:border-primary focus:ring-primary" placeholder="000.000.000-00">
</div>
<div class="mb-6">
<label for="loginSenha" class="block text-sm font-medium text-gray-700 mb-1">Senha</label>
<input type="password" id="loginSenha" class="block w-full rounded-md border-gray-300 shadow-sm focus:border-primary focus:ring-primary" placeholder="••••••••">
</div>
<button type="button" class="w-full bg-primary text-white py-2 rounded-full font-medium hover:bg-blue-700 transition flex items-center justify-center">
<i data-feather="log-in" class="w-4 h-4 mr-2"></i>
Acessar minha conta
</button>
</form>
<div class="mt-4 text-center">
<a href="#" class="text-sm text-primary hover:underline">Esqueci minha senha</a>
<p class="text-sm text-gray-500 mt-2">
Não tem conta? <a href="#" class="text-primary hover:underline font-medium">Abra sua conta digital agora</a>
</p>
</div>
</div>
</div>
<script src="https://cdn.jsdelivr.net/npm/feather-icons/dist/feather.min.js"></script>
<script>
document.addEventListener('DOMContentLoaded', function() {
feather.replace();
// Initialize Chart
const ctx = document.getElementById('graficoParcelas').getContext('2d');
const parcelasChart = new Chart(ctx, {
type: 'line',
data: {
labels: ['Ano 1', 'Ano 5', 'Ano 10', 'Ano 15', 'Ano 20'],
datasets: [{
label: 'Valor da Parcela',
data: [2045, 1850, 1650, 1450, 1250],
borderColor: '#0066b3',
backgroundColor: 'rgba(0, 102, 179, 0.1)',
tension: 0.1,
fill: true
}]
},
options: {
responsive: true,
plugins: {
legend: {
display: false
}
},
scales: {
y: {
beginAtZero: true
}
}
}
});
// Slider value display
document.getElementById('prazo').addEventListener('input', function() {
document.getElementById('prazoValue').textContent = this.value;
});
document.getElementById('prazoMaximo').addEventListener('input', function() {
document.getElementById('prazoMaximoValue').textContent = this.value;
});
document.getElementById('entradaMinima').addEventListener('input', function() {
document.getElementById('entradaMinimaValue').textContent = this.value;
});
// Step Navigation
document.getElementById('nextToStep2').addEventListener('click', function() {
document.getElementById('step1').classList.add('hidden');
document.getElementById('step2').classList.remove('hidden');
document.getElementById('progressBar').style.width = '50%';
updateProgressSteps(2);
});
document.getElementById('backToStep1').addEventListener('click', function() {
document.getElementById('step2').classList.add('hidden');
document.getElementById('step1').classList.remove('hidden');
document.getElementById('progressBar').style.width = '25%';
updateProgressSteps(1);
});
document.getElementById('nextToStep3').addEventListener('click', function() {
document.getElementById('step2').classList.add('hidden');
document.getElementById('step3').classList.remove('hidden');
document.getElementById('progressBar').style.width = '75%';
updateProgressSteps(3);
// Calculate and update values
const valorImovel = parseFloat(document.getElementById('valorImovel').value) || 300000;
const entrada = parseFloat(document.getElementById('entrada').value) || 60000;
const valorFinanciado = valorImovel - entrada;
document.getElementById('valorFinanciado').textContent = 'R$ ' + valorFinanciado.toLocaleString('pt-BR', {minimumFractionDigits: 2, maximumFractionDigits: 2});
// Calculate tax based on conditions
let taxaBase = 9.0;
let desconto = 0;
if (document.getElementById('contaCaixa').checked) desconto += 0.2;
if (document.getElementById('pixCPF').checked) desconto += 0.15;
if (document.getElementById('openFinance').checked) desconto += 0.1;
if (document.getElementById('cartaoCredito').checked) desconto += 0.15;
const taxaFinal = taxaBase - desconto;
document.getElementById('taxaJuros').textContent = taxaFinal.toFixed(2).replace('.', ',') + '% a.a.';
document.getElementById('suaTaxaComparacao').textContent = taxaFinal.toFixed(2).replace('.', ',') + '% a.a.';
// Calculate savings
const economia = (valorFinanciado * (taxaBase/100) * 20) - (valorFinanciado * (taxaFinal/100) * 20);
document.getElementById('economiaTaxa').textContent = 'R$ ' + economia.toLocaleString('pt-BR', {minimumFractionDigits: 2, maximumFractionDigits: 2});
// Update chart based on amortization system
const isSAC = document.getElementById('sac').checked;
if (isSAC) {
parcelasChart.data.datasets[0].data = [2045, 1850, 1650, 1450, 1250];
} else {
parcelasChart.data.datasets[0].data = [1800, 1800, 1800, 1800, 1800];
}
parcelasChart.update();
// Update first installment
document.getElementById('primeiraParcela').value = isSAC ? '2045.00' : '1800.00';
document.getElementById('ultimaParcela').value = isSAC ? '1250.00' : '1800.00';
});
document.getElementById('backToStep2').addEventListener('click', function() {
document.getElementById('step3').classList.add('hidden');
document.getElementById('step2').classList.remove('hidden');
document.getElementById('progressBar').style.width = '50%';
updateProgressSteps(2);
});
document.getElementById('nextToStep4').addEventListener('click', function() {
document.getElementById('step3').classList.add('hidden');
document.getElementById('step4').classList.remove('hidden');
document.getElementById('progressBar').style.width = '100%';
updateProgressSteps(4);
});
document.getElementById('backToStep3').addEventListener('click', function() {
document.getElementById('step4').classList.add('hidden');
document.getElementById('step3').classList.remove('hidden');
document.getElementById('progressBar').style.width = '75%';
updateProgressSteps(3);
});
// Login Modal
document.getElementById('loginBtn').addEventListener('click', function() {
document.getElementById('loginModal').classList.remove('hidden');
});
document.getElementById('closeLoginModal').addEventListener('click', function() {
document.getElementById('loginModal').classList.add('hidden');
});
// Contratar button
document.getElementById('contratarBtn').addEventListener('click', function() {
document.getElementById('loginModal').classList.remove('hidden');
});
// Function to update progress steps
function updateProgressSteps(currentStep) {
const steps = document.querySelectorAll('.progress-step');
const labels = document.querySelectorAll('.flex-col.items-center span.text-sm');
steps.forEach((step, index) => {
if (index < currentStep) {
step.classList.remove('border-gray-300', 'bg-white', 'text-gray-400');
step.classList.add('bg-accent', 'text-white');
} else if (index === currentStep - 1) {
// Current step
step.classList.remove('border-gray-300', 'bg-white', 'text-gray-400');
step.classList.add('bg-accent', 'text-white');
} else {
step.classList.remove('bg-accent', 'text-white');
step.classList.add('border-gray-300', 'bg-white', 'text-gray-400');
}
});
labels.forEach((label, index) => {
if (index < currentStep) {
label.classList.remove('text-gray-500');
label.classList.add('text-accent');
} else {
label.classList.remove('text-accent');
label.classList.add('text-gray-500');
}
});
}
});
</script>
</body>
</html>