Alıntı
<!DOCTYPE html>
<html lang="tr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Harika Aşk Ölçer</title>
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;700&display=swap" >
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0-beta3/css/all.min.css">
<style>
body {
font-family: 'Poppins', sans-serif;
background: linear-gradient(135deg, #FF6F61 0%, #FFB65F 100%);
display: flex;
justify-content: center;
align-items: center;
min-height: 100vh;
margin: 0;
color: #333;
overflow: hidden;
}
.container {
background-color: rgba(255, 255, 255, 0.95);
padding: 50px;
border-radius: 20px;
box-shadow: 0 10px 30px rgba(0, 0, 0, 0.15);
text-align: center;
max-width: 600px;
width: 90%;
}
h1 {
color: #FF6F61;
margin-bottom: 20px;
font-size: 2.5em;
font-weight: 700;
}
.input-grid {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 20px;
margin-bottom: 20px;
}
.input-group label {
display: block;
margin-bottom: 8px;
font-weight: 400;
color: #555;
text-align: left;
}
.input-group input {
width: 100%;
padding: 12px;
border: 2px solid #ddd;
border-radius: 8px;
font-size: 1em;
outline: none;
transition: border-color 0.3s;
box-sizing: border-box;
}
.input-group input:focus {
border-color: #FF6F61;
}
button {
background-color: #FF6F61;
color: white;
border: none;
padding: 15px 30px;
border-radius: 25px;
font-size: 1.1em;
cursor: pointer;
transition: background-color 0.3s, transform 0.2s;
font-weight: 700;
text-transform: uppercase;
box-shadow: 0 4px 15px rgba(255, 111, 97, 0.4);
margin-top: 10px;
}
button:hover {
background-color: #e56254;
transform: translateY(-2px);
}
#loader-container {
margin-top: 30px;
display: none;
align-items: center;
justify-content: center;
flex-direction: column;
}
.spinner {
border: 8px solid #f3f3f3;
border-top: 8px solid #FF6F61;
border-radius: 50%;
width: 80px;
height: 80px;
animation: spin 1.5s linear infinite;
}
@keyframes spin {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}
#result-container {
margin-top: 30px;
display: none;
opacity: 0;
transform: translateY(20px);
transition: opacity 0.5s ease-in-out, transform 0.5s ease-in-out;
}
#result-container.show {
display: block;
opacity: 1;
transform: translateY(0);
}
#percentage-display {
font-size: 4em;
font-weight: 700;
color: #FF6F61;
text-shadow: 2px 2px 5px rgba(0,0,0,0.1);
}
#emoji {
font-size: 2em;
}
#analysis {
margin-top: 20px;
font-size: 1.1em;
color: #555;
line-height: 1.6;
text-align: justify;
}
.share-buttons {
margin-top: 30px;
}
.share-buttons a {
color: white;
padding: 10px 20px;
border-radius: 20px;
margin: 0 5px;
text-decoration: none;
font-weight: 700;
transition: transform 0.2s;
display: inline-block;
}
.share-buttons a:hover {
transform: translateY(-2px);
}
.share-buttons .whatsapp { background-color: #25D366; }
.share-buttons .twitter { background-color: #1DA1F2; }
</style>
</head>
<body>
<div class="container">
<h1>Harika Aşk Ölçer</h1>
<div class="input-grid">
<div class="input-group">
<label for="maleName">Erkek İsmi:</label>
<input type="text" id="maleName" placeholder="Örn: Mehmet" oninput="resetResult()">
</div>
<div class="input-group">
<label for="femaleName">Kadın İsmi:</label>
<input type="text" id="femaleName" placeholder="Örn: Ayşe" oninput="resetResult()">
</div>
<div class="input-group">
<label for="maleDob">Erkek Doğum Tarihi:</label>
<input type="date" id="maleDob" oninput="resetResult()">
</div>
<div class="input-group">
<label for="femaleDob">Kadın Doğum Tarihi:</label>
<input type="date" id="femaleDob" oninput="resetResult()">
</div>
</div>
<button onclick="calculateLove()">Ölç</button>
<div id="loader-container">
<h3>Aşkınız hesaplanıyor...</h3>
<div class="spinner"></div>
</div>
<div id="result-container">
<div id="percentage-display">
<span id="percentage"></span> <span id="emoji"></span>
</div>
<p id="analysis"></p>
<div class="share-buttons">
<a href="#" id="whatsapp-share" class="whatsapp" target="_blank">
<i class="fab fa-whatsapp"></i> WhatsApp'ta Paylaş
</a>
<a href="#" id="twitter-share" class="twitter" target="_blank">
<i class="fab fa-twitter"></i> X'te Paylaş
</a>
</div>
</div>
</div>
<script>
const zodiacSigns = {
'koç': [3, 21, 4, 19], 'boğa': [4, 20, 5, 20], 'ikizler': [5, 21, 6, 20],
'yengeç': [6, 21, 7, 22], 'aslan': [7, 23, 8, 22], 'başak': [8, 23, 9, 22],
'terazi': [9, 23, 10, 22], 'akrep': [10, 23, 11, 21], 'yay': [11, 22, 12, 21],
'oğlak': [12, 22, 1, 19], 'kova': [1, 20, 2, 18], 'balık': [2, 19, 3, 20]
};
const numerologyMap = {
'a': 1, 'b': 2, 'c': 3, 'ç': 3, 'd': 4, 'e': 5, 'f': 8, 'g': 3, 'ğ': 3, 'h': 5,
'ı': 1, 'i': 9, 'j': 1, 'k': 2, 'l': 3, 'm': 4, 'n': 5, 'o': 7, 'ö': 7, 'p': 8,
'r': 9, 's': 3, 'ş': 3, 't': 4, 'u': 6, 'ü': 6, 'v': 6, 'y': 1, 'z': 7
};
const zodiacCompatibility = {
'koç': { 'koç': 80, 'boğa': 50, 'ikizler': 75, 'yengeç': 40, 'aslan': 90, 'başak': 45, 'terazi': 70, 'akrep': 60, 'yay': 85, 'oğlak': 30, 'kova': 70, 'balık': 55 },
'boğa': { 'koç': 50, 'boğa': 85, 'ikizler': 60, 'yengeç': 90, 'aslan': 70, 'başak': 80, 'terazi': 55, 'akrep': 80, 'yay': 45, 'oğlak': 95, 'kova': 40, 'balık': 75 },
'ikizler': { 'koç': 75, 'boğa': 60, 'ikizler': 85, 'yengeç': 50, 'aslan': 80, 'başak': 65, 'terazi': 90, 'akrep': 45, 'yay': 70, 'oğlak': 55, 'kova': 80, 'balık': 60 },
'yengeç': { 'koç': 40, 'boğa': 90, 'ikizler': 50, 'yengeç': 85, 'aslan': 60, 'başak': 80, 'terazi': 75, 'akrep': 95, 'yay': 40, 'oğlak': 80, 'kova': 50, 'balık': 90 },
'aslan': { 'koç': 90, 'boğa': 70, 'ikizler': 80, 'yengeç': 60, 'aslan': 85, 'başak': 50, 'terazi': 75, 'akrep': 55, 'yay': 90, 'oğlak': 40, 'kova': 80, 'balık': 65 },
'başak': { 'koç': 45, 'boğa': 80, 'ikizler': 65, 'yengeç': 80, 'aslan': 50, 'başak': 85, 'terazi': 70, 'akrep': 75, 'yay': 55, 'oğlak': 90, 'kova': 60, 'balık': 80 },
'terazi': { 'koç': 70, 'boğa': 55, 'ikizler': 90, 'yengeç': 75, 'aslan': 75, 'başak': 70, 'terazi': 85, 'akrep': 50, 'yay': 80, 'oğlak': 60, 'kova': 90, 'balık': 70 },
'akrep': { 'koç': 60, 'boğa': 80, 'ikizler': 45, 'yengeç': 95, 'aslan': 55, 'başak': 75, 'terazi': 50, 'akrep': 85, 'yay': 65, 'oğlak': 80, 'kova': 55, 'balık': 90 },
'yay': { 'koç': 85, 'boğa': 45, 'ikizler': 70, 'yengeç': 40, 'aslan': 90, 'başak': 55, 'terazi': 80, 'akrep': 65, 'yay': 85, 'oğlak': 50, 'kova': 75, 'balık': 60 },
'oğlak': { 'koç': 30, 'boğa': 95, 'ikizler': 55, 'yengeç': 80, 'aslan': 40, 'başak': 90, 'terazi': 60, 'akrep': 80, 'yay': 50, 'oğlak': 85, 'kova': 45, 'balık': 70 },
'kova': { 'koç': 70, 'boğa': 40, 'ikizler': 80, 'yengeç': 50, 'aslan': 80, 'başak': 60, 'terazi': 90, 'akrep': 55, 'yay': 75, 'oğlak': 45, 'kova': 85, 'balık': 65 },
'balık': { 'koç': 55, 'boğa': 75, 'ikizler': 60, 'yengeç': 90, 'aslan': 65, 'başak': 80, 'terazi': 70, 'akrep': 90, 'yay': 60, 'oğlak': 70, 'kova': 65, 'balık': 85 }
};
function getZodiacSign(date) {
if (!date) return null;
const d = new Date(date);
const month = d.getMonth() + 1;
const day = d.getDate();
for (let sign in zodiacSigns) {
const [startMonth, startDay, endMonth, endDay] = zodiacSigns[sign];
if ((month === startMonth && day >= startDay) || (month === endMonth && day <= endDay)) {
return sign;
}
}
return null;
}
function getNumerologyScore(name) {
let sum = 0;
for (let char of name) {
if (numerologyMap[char]) {
sum += numerologyMap[char];
}
}
while (sum > 9 && sum !== 11 && sum !== 22 && sum !== 33) {
sum = sum.toString().split('').reduce((a, b) => a + parseInt(b), 0);
}
return sum;
}
function getZodiacCompatibilityScore(sign1, sign2) {
return zodiacCompatibility[sign1]?.[sign2] || 50;
}
function getNumerologyCompatibilityScore(num1, num2) {
if (num1 === num2) return 90;
if (Math.abs(num1 - num2) === 1 || Math.abs(num1 - num2) === 8) return 75;
if (Math.abs(num1 - num2) === 2 || Math.abs(num1 - num2) === 7) return 60;
return 40;
}
function calculateLove() {
const maleName = document.getElementById('maleName').value.trim().t oLocaleLowerCase('tr');
const femaleName = document.getElementById('femaleName').value.trim() .toLocaleLowerCase('tr');
const maleDob = document.getElementById('maleDob').value;
const femaleDob = document.getElementById('femaleDob').value;
if (maleName === '' || femaleName === '' || maleDob === '' || femaleDob === '') {
alert('Lütfen isimleri ve doğum tarihlerini boş bırakmayın!');
// Eğer alanlar boşsa, fonksiyonu burada sonlandır.
return;
}
document.getElementById('loader-container').style.display = 'flex';
document.getElementById('result-container').classList.remove('show');
setTimeout(() => {
const nameScore = calculateNameScore(maleName, femaleName);
const numerologyScore = getNumerologyCompatibilityScore(getNumerologyScore (maleName), getNumerologyScore(femaleName));
const zodiacScore = getZodiacCompatibilityScore(getZodiacSign(maleDob) , getZodiacSign(femaleDob));
const finalScore = (nameScore * 0.4 + numerologyScore * 0.3 + zodiacScore * 0.3);
let percentage = Math.round(finalScore);
const randomFactor = Math.floor(Math.random() * 11) - 5;
percentage = Math.max(0, Math.min(100, percentage + randomFactor));
document.getElementById('percentage').textContent = `${percentage}%`;
document.getElementById('emoji').textContent = getEmoji(percentage);
document.getElementById('analysis').innerHTML = getAnalysis(maleName, femaleName, percentage, nameScore, numerologyScore, zodiacScore, maleDob, femaleDob);
document.getElementById('loader-container').style.display = 'none';
document.getElementById('result-container').classList.add('show');
updateShareButtons(maleName, femaleName, percentage);
}, 2500);
}
function calculateNameScore(name1, name2) {
const commonChars = name1.split('').filter(char => name2.includes(char));
const uniqueCommonChars = new Set(commonChars);
let score = uniqueCommonChars.size * 12;
const lengthDiff = Math.abs(name1.length - name2.length);
if (lengthDiff <= 2) score += 30; else if (lengthDiff <= 4) score += 15;
return Math.min(100, score / 1.5);
}
function getEmoji(percentage) {
if (percentage >= 85) return '❤️*🔥';
if (percentage >= 65) return '🥰';
if (percentage >= 40) return '😊';
return '🤷';
}
function getAnalysis(name1, name2, percentage, nameScore, numScore, zodiacScore, dob1, dob2) {
let analysisText = "";
let capitalizedName1 = name1.charAt(0).toUpperCase() + name1.slice(1);
let capitalizedName2 = name2.charAt(0).toUpperCase() + name2.slice(1);
const commonCharsCount = new Set(name1.split('').filter(char => name2.includes(char))).size;
if (commonCharsCount === 0) {
analysisText += `<p>Hmm, **${capitalizedName1}** ve **${capitalizedName2}**'nin isimlerinde hiç ortak harf bulunamadı. Bu, ya çok zıt kutuplar olduğunuzun ya da birbirinizi tamamladığınızın bir işareti. Veya sadece isimleriniz kesişmiyor, o da olabilir! 😂</p>`;
} else {
analysisText += `<p>İsimlerinizde tam **${commonCharsCount}** adet ortak harf bulundu. İsimlerinizdeki bu uyum, aranızdaki çekimin güçlü olduğunu gösteriyor.</p>`;
}
const zodiac1 = getZodiacSign(dob1);
const zodiac2 = getZodiacSign(dob2);
if (zodiac1 && zodiac2) {
analysisText += `<p>Burçlarınız (**${zodiac1.toUpperCase()}** ve **${zodiac2.toUpperCase()}**) arasındaki uyum da hesaplamaya dahil edildi. Burçlarınızın uyum puanı **%${Math.round(zodiacScore)}**.</p>`;
}
const num1 = getNumerologyScore(name1);
const num2 = getNumerologyScore(name2);
analysisText += `<p>Numerolojiye göre isimlerinizin titreşimleri (**${num1}** ve **${num2}**) arasındaki uyum puanı ise **%${Math.round(numScore)}**.</p>`;
analysisText += `<hr style="margin:20px 0; border:0; border-top:1px solid #eee;">`;
if (percentage >= 85) {
analysisText += `<h3>Büyük Aşk!</h3><p>Hesaplamalarımıza göre **${capitalizedName1}** ve **${capitalizedName2}** arasında müthiş bir uyum var. İsimlerinizin, burçlarınızın ve numerolojinizin ahengi, bu ilişkinin yıldızlara yazıldığını gösteriyor! Tebrikler! 💖</p>`;
} else if (percentage >= 65) {
analysisText += `<h3>Güçlü Potansiyel!</h3><p>**${capitalizedName1}** ve **${capitalizedName2}** iyi bir ikili! Çoğu alanda uyumunuz yüksek. Minik farklılıklar ilişkinize renk katacaktır. Unutmayın, önemli olan uyumu korumak! 😉</p>`;
} else if (percentage >= 40) {
analysisText += `<h3>Ortalama Uyum</h3><p>**${capitalizedName1}** ve **${capitalizedName2}** arasındaki uyum, geliştirilebilir bir seviyede. İsimleriniz ve burçlarınız bazı zıtlıklar gösterse de, aşk her engeli aşar. İlişkinizin dinamik olacağı kesin! 😄</p>`;
} else {
analysisText += `<h3>Zıt Kutuplar</h3><p>Aşk ölçerimiz, **${capitalizedName1}** ve **${capitalizedName2}** arasında pek bir uyum bulamadı. Ama dert etmeyin! Belki de bu, "zıt kutuplar birbirini çeker" sözünün kanıtıdır. Mantığı bir kenara bırakıp kalbinize kulak verin! 🤷*♀️</p>`;
}
return analysisText;
}
function updateShareButtons(name1, name2, percentage) {
const text = `Aşk ölçer, ${name1.toUpperCase()} ve ${name2.toUpperCase()} arasındaki uyumu %${percentage} olarak hesapladı! Sen de kendi aşkını ölçmek ister misin?`;
const url = window.location.href;
const whatsappUrl = `https://wa.me/?text=${encodeURIComponent(text + " " + url)}`;
document.getElementById('whatsapp-share').href = whatsappUrl;
const twitterUrl = `https://twitter.com/intent/tweet?text=${encodeURIComponent(text)}&url=${encod eURIComponent(url)}`;
document.getElementById('twitter-share').href = twitterUrl;
}
function resetResult() {
document.getElementById('loader-container').style.display = 'none';
document.getElementById('result-container').classList.remove('show');
}
</script>
</body>
</html>
<html lang="tr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Harika Aşk Ölçer</title>
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;700&display=swap" >
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0-beta3/css/all.min.css">
<style>
body {
font-family: 'Poppins', sans-serif;
background: linear-gradient(135deg, #FF6F61 0%, #FFB65F 100%);
display: flex;
justify-content: center;
align-items: center;
min-height: 100vh;
margin: 0;
color: #333;
overflow: hidden;
}
.container {
background-color: rgba(255, 255, 255, 0.95);
padding: 50px;
border-radius: 20px;
box-shadow: 0 10px 30px rgba(0, 0, 0, 0.15);
text-align: center;
max-width: 600px;
width: 90%;
}
h1 {
color: #FF6F61;
margin-bottom: 20px;
font-size: 2.5em;
font-weight: 700;
}
.input-grid {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 20px;
margin-bottom: 20px;
}
.input-group label {
display: block;
margin-bottom: 8px;
font-weight: 400;
color: #555;
text-align: left;
}
.input-group input {
width: 100%;
padding: 12px;
border: 2px solid #ddd;
border-radius: 8px;
font-size: 1em;
outline: none;
transition: border-color 0.3s;
box-sizing: border-box;
}
.input-group input:focus {
border-color: #FF6F61;
}
button {
background-color: #FF6F61;
color: white;
border: none;
padding: 15px 30px;
border-radius: 25px;
font-size: 1.1em;
cursor: pointer;
transition: background-color 0.3s, transform 0.2s;
font-weight: 700;
text-transform: uppercase;
box-shadow: 0 4px 15px rgba(255, 111, 97, 0.4);
margin-top: 10px;
}
button:hover {
background-color: #e56254;
transform: translateY(-2px);
}
#loader-container {
margin-top: 30px;
display: none;
align-items: center;
justify-content: center;
flex-direction: column;
}
.spinner {
border: 8px solid #f3f3f3;
border-top: 8px solid #FF6F61;
border-radius: 50%;
width: 80px;
height: 80px;
animation: spin 1.5s linear infinite;
}
@keyframes spin {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}
#result-container {
margin-top: 30px;
display: none;
opacity: 0;
transform: translateY(20px);
transition: opacity 0.5s ease-in-out, transform 0.5s ease-in-out;
}
#result-container.show {
display: block;
opacity: 1;
transform: translateY(0);
}
#percentage-display {
font-size: 4em;
font-weight: 700;
color: #FF6F61;
text-shadow: 2px 2px 5px rgba(0,0,0,0.1);
}
#emoji {
font-size: 2em;
}
#analysis {
margin-top: 20px;
font-size: 1.1em;
color: #555;
line-height: 1.6;
text-align: justify;
}
.share-buttons {
margin-top: 30px;
}
.share-buttons a {
color: white;
padding: 10px 20px;
border-radius: 20px;
margin: 0 5px;
text-decoration: none;
font-weight: 700;
transition: transform 0.2s;
display: inline-block;
}
.share-buttons a:hover {
transform: translateY(-2px);
}
.share-buttons .whatsapp { background-color: #25D366; }
.share-buttons .twitter { background-color: #1DA1F2; }
</style>
</head>
<body>
<div class="container">
<h1>Harika Aşk Ölçer</h1>
<div class="input-grid">
<div class="input-group">
<label for="maleName">Erkek İsmi:</label>
<input type="text" id="maleName" placeholder="Örn: Mehmet" oninput="resetResult()">
</div>
<div class="input-group">
<label for="femaleName">Kadın İsmi:</label>
<input type="text" id="femaleName" placeholder="Örn: Ayşe" oninput="resetResult()">
</div>
<div class="input-group">
<label for="maleDob">Erkek Doğum Tarihi:</label>
<input type="date" id="maleDob" oninput="resetResult()">
</div>
<div class="input-group">
<label for="femaleDob">Kadın Doğum Tarihi:</label>
<input type="date" id="femaleDob" oninput="resetResult()">
</div>
</div>
<button onclick="calculateLove()">Ölç</button>
<div id="loader-container">
<h3>Aşkınız hesaplanıyor...</h3>
<div class="spinner"></div>
</div>
<div id="result-container">
<div id="percentage-display">
<span id="percentage"></span> <span id="emoji"></span>
</div>
<p id="analysis"></p>
<div class="share-buttons">
<a href="#" id="whatsapp-share" class="whatsapp" target="_blank">
<i class="fab fa-whatsapp"></i> WhatsApp'ta Paylaş
</a>
<a href="#" id="twitter-share" class="twitter" target="_blank">
<i class="fab fa-twitter"></i> X'te Paylaş
</a>
</div>
</div>
</div>
<script>
const zodiacSigns = {
'koç': [3, 21, 4, 19], 'boğa': [4, 20, 5, 20], 'ikizler': [5, 21, 6, 20],
'yengeç': [6, 21, 7, 22], 'aslan': [7, 23, 8, 22], 'başak': [8, 23, 9, 22],
'terazi': [9, 23, 10, 22], 'akrep': [10, 23, 11, 21], 'yay': [11, 22, 12, 21],
'oğlak': [12, 22, 1, 19], 'kova': [1, 20, 2, 18], 'balık': [2, 19, 3, 20]
};
const numerologyMap = {
'a': 1, 'b': 2, 'c': 3, 'ç': 3, 'd': 4, 'e': 5, 'f': 8, 'g': 3, 'ğ': 3, 'h': 5,
'ı': 1, 'i': 9, 'j': 1, 'k': 2, 'l': 3, 'm': 4, 'n': 5, 'o': 7, 'ö': 7, 'p': 8,
'r': 9, 's': 3, 'ş': 3, 't': 4, 'u': 6, 'ü': 6, 'v': 6, 'y': 1, 'z': 7
};
const zodiacCompatibility = {
'koç': { 'koç': 80, 'boğa': 50, 'ikizler': 75, 'yengeç': 40, 'aslan': 90, 'başak': 45, 'terazi': 70, 'akrep': 60, 'yay': 85, 'oğlak': 30, 'kova': 70, 'balık': 55 },
'boğa': { 'koç': 50, 'boğa': 85, 'ikizler': 60, 'yengeç': 90, 'aslan': 70, 'başak': 80, 'terazi': 55, 'akrep': 80, 'yay': 45, 'oğlak': 95, 'kova': 40, 'balık': 75 },
'ikizler': { 'koç': 75, 'boğa': 60, 'ikizler': 85, 'yengeç': 50, 'aslan': 80, 'başak': 65, 'terazi': 90, 'akrep': 45, 'yay': 70, 'oğlak': 55, 'kova': 80, 'balık': 60 },
'yengeç': { 'koç': 40, 'boğa': 90, 'ikizler': 50, 'yengeç': 85, 'aslan': 60, 'başak': 80, 'terazi': 75, 'akrep': 95, 'yay': 40, 'oğlak': 80, 'kova': 50, 'balık': 90 },
'aslan': { 'koç': 90, 'boğa': 70, 'ikizler': 80, 'yengeç': 60, 'aslan': 85, 'başak': 50, 'terazi': 75, 'akrep': 55, 'yay': 90, 'oğlak': 40, 'kova': 80, 'balık': 65 },
'başak': { 'koç': 45, 'boğa': 80, 'ikizler': 65, 'yengeç': 80, 'aslan': 50, 'başak': 85, 'terazi': 70, 'akrep': 75, 'yay': 55, 'oğlak': 90, 'kova': 60, 'balık': 80 },
'terazi': { 'koç': 70, 'boğa': 55, 'ikizler': 90, 'yengeç': 75, 'aslan': 75, 'başak': 70, 'terazi': 85, 'akrep': 50, 'yay': 80, 'oğlak': 60, 'kova': 90, 'balık': 70 },
'akrep': { 'koç': 60, 'boğa': 80, 'ikizler': 45, 'yengeç': 95, 'aslan': 55, 'başak': 75, 'terazi': 50, 'akrep': 85, 'yay': 65, 'oğlak': 80, 'kova': 55, 'balık': 90 },
'yay': { 'koç': 85, 'boğa': 45, 'ikizler': 70, 'yengeç': 40, 'aslan': 90, 'başak': 55, 'terazi': 80, 'akrep': 65, 'yay': 85, 'oğlak': 50, 'kova': 75, 'balık': 60 },
'oğlak': { 'koç': 30, 'boğa': 95, 'ikizler': 55, 'yengeç': 80, 'aslan': 40, 'başak': 90, 'terazi': 60, 'akrep': 80, 'yay': 50, 'oğlak': 85, 'kova': 45, 'balık': 70 },
'kova': { 'koç': 70, 'boğa': 40, 'ikizler': 80, 'yengeç': 50, 'aslan': 80, 'başak': 60, 'terazi': 90, 'akrep': 55, 'yay': 75, 'oğlak': 45, 'kova': 85, 'balık': 65 },
'balık': { 'koç': 55, 'boğa': 75, 'ikizler': 60, 'yengeç': 90, 'aslan': 65, 'başak': 80, 'terazi': 70, 'akrep': 90, 'yay': 60, 'oğlak': 70, 'kova': 65, 'balık': 85 }
};
function getZodiacSign(date) {
if (!date) return null;
const d = new Date(date);
const month = d.getMonth() + 1;
const day = d.getDate();
for (let sign in zodiacSigns) {
const [startMonth, startDay, endMonth, endDay] = zodiacSigns[sign];
if ((month === startMonth && day >= startDay) || (month === endMonth && day <= endDay)) {
return sign;
}
}
return null;
}
function getNumerologyScore(name) {
let sum = 0;
for (let char of name) {
if (numerologyMap[char]) {
sum += numerologyMap[char];
}
}
while (sum > 9 && sum !== 11 && sum !== 22 && sum !== 33) {
sum = sum.toString().split('').reduce((a, b) => a + parseInt(b), 0);
}
return sum;
}
function getZodiacCompatibilityScore(sign1, sign2) {
return zodiacCompatibility[sign1]?.[sign2] || 50;
}
function getNumerologyCompatibilityScore(num1, num2) {
if (num1 === num2) return 90;
if (Math.abs(num1 - num2) === 1 || Math.abs(num1 - num2) === 8) return 75;
if (Math.abs(num1 - num2) === 2 || Math.abs(num1 - num2) === 7) return 60;
return 40;
}
function calculateLove() {
const maleName = document.getElementById('maleName').value.trim().t oLocaleLowerCase('tr');
const femaleName = document.getElementById('femaleName').value.trim() .toLocaleLowerCase('tr');
const maleDob = document.getElementById('maleDob').value;
const femaleDob = document.getElementById('femaleDob').value;
if (maleName === '' || femaleName === '' || maleDob === '' || femaleDob === '') {
alert('Lütfen isimleri ve doğum tarihlerini boş bırakmayın!');
// Eğer alanlar boşsa, fonksiyonu burada sonlandır.
return;
}
document.getElementById('loader-container').style.display = 'flex';
document.getElementById('result-container').classList.remove('show');
setTimeout(() => {
const nameScore = calculateNameScore(maleName, femaleName);
const numerologyScore = getNumerologyCompatibilityScore(getNumerologyScore (maleName), getNumerologyScore(femaleName));
const zodiacScore = getZodiacCompatibilityScore(getZodiacSign(maleDob) , getZodiacSign(femaleDob));
const finalScore = (nameScore * 0.4 + numerologyScore * 0.3 + zodiacScore * 0.3);
let percentage = Math.round(finalScore);
const randomFactor = Math.floor(Math.random() * 11) - 5;
percentage = Math.max(0, Math.min(100, percentage + randomFactor));
document.getElementById('percentage').textContent = `${percentage}%`;
document.getElementById('emoji').textContent = getEmoji(percentage);
document.getElementById('analysis').innerHTML = getAnalysis(maleName, femaleName, percentage, nameScore, numerologyScore, zodiacScore, maleDob, femaleDob);
document.getElementById('loader-container').style.display = 'none';
document.getElementById('result-container').classList.add('show');
updateShareButtons(maleName, femaleName, percentage);
}, 2500);
}
function calculateNameScore(name1, name2) {
const commonChars = name1.split('').filter(char => name2.includes(char));
const uniqueCommonChars = new Set(commonChars);
let score = uniqueCommonChars.size * 12;
const lengthDiff = Math.abs(name1.length - name2.length);
if (lengthDiff <= 2) score += 30; else if (lengthDiff <= 4) score += 15;
return Math.min(100, score / 1.5);
}
function getEmoji(percentage) {
if (percentage >= 85) return '❤️*🔥';
if (percentage >= 65) return '🥰';
if (percentage >= 40) return '😊';
return '🤷';
}
function getAnalysis(name1, name2, percentage, nameScore, numScore, zodiacScore, dob1, dob2) {
let analysisText = "";
let capitalizedName1 = name1.charAt(0).toUpperCase() + name1.slice(1);
let capitalizedName2 = name2.charAt(0).toUpperCase() + name2.slice(1);
const commonCharsCount = new Set(name1.split('').filter(char => name2.includes(char))).size;
if (commonCharsCount === 0) {
analysisText += `<p>Hmm, **${capitalizedName1}** ve **${capitalizedName2}**'nin isimlerinde hiç ortak harf bulunamadı. Bu, ya çok zıt kutuplar olduğunuzun ya da birbirinizi tamamladığınızın bir işareti. Veya sadece isimleriniz kesişmiyor, o da olabilir! 😂</p>`;
} else {
analysisText += `<p>İsimlerinizde tam **${commonCharsCount}** adet ortak harf bulundu. İsimlerinizdeki bu uyum, aranızdaki çekimin güçlü olduğunu gösteriyor.</p>`;
}
const zodiac1 = getZodiacSign(dob1);
const zodiac2 = getZodiacSign(dob2);
if (zodiac1 && zodiac2) {
analysisText += `<p>Burçlarınız (**${zodiac1.toUpperCase()}** ve **${zodiac2.toUpperCase()}**) arasındaki uyum da hesaplamaya dahil edildi. Burçlarınızın uyum puanı **%${Math.round(zodiacScore)}**.</p>`;
}
const num1 = getNumerologyScore(name1);
const num2 = getNumerologyScore(name2);
analysisText += `<p>Numerolojiye göre isimlerinizin titreşimleri (**${num1}** ve **${num2}**) arasındaki uyum puanı ise **%${Math.round(numScore)}**.</p>`;
analysisText += `<hr style="margin:20px 0; border:0; border-top:1px solid #eee;">`;
if (percentage >= 85) {
analysisText += `<h3>Büyük Aşk!</h3><p>Hesaplamalarımıza göre **${capitalizedName1}** ve **${capitalizedName2}** arasında müthiş bir uyum var. İsimlerinizin, burçlarınızın ve numerolojinizin ahengi, bu ilişkinin yıldızlara yazıldığını gösteriyor! Tebrikler! 💖</p>`;
} else if (percentage >= 65) {
analysisText += `<h3>Güçlü Potansiyel!</h3><p>**${capitalizedName1}** ve **${capitalizedName2}** iyi bir ikili! Çoğu alanda uyumunuz yüksek. Minik farklılıklar ilişkinize renk katacaktır. Unutmayın, önemli olan uyumu korumak! 😉</p>`;
} else if (percentage >= 40) {
analysisText += `<h3>Ortalama Uyum</h3><p>**${capitalizedName1}** ve **${capitalizedName2}** arasındaki uyum, geliştirilebilir bir seviyede. İsimleriniz ve burçlarınız bazı zıtlıklar gösterse de, aşk her engeli aşar. İlişkinizin dinamik olacağı kesin! 😄</p>`;
} else {
analysisText += `<h3>Zıt Kutuplar</h3><p>Aşk ölçerimiz, **${capitalizedName1}** ve **${capitalizedName2}** arasında pek bir uyum bulamadı. Ama dert etmeyin! Belki de bu, "zıt kutuplar birbirini çeker" sözünün kanıtıdır. Mantığı bir kenara bırakıp kalbinize kulak verin! 🤷*♀️</p>`;
}
return analysisText;
}
function updateShareButtons(name1, name2, percentage) {
const text = `Aşk ölçer, ${name1.toUpperCase()} ve ${name2.toUpperCase()} arasındaki uyumu %${percentage} olarak hesapladı! Sen de kendi aşkını ölçmek ister misin?`;
const url = window.location.href;
const whatsappUrl = `https://wa.me/?text=${encodeURIComponent(text + " " + url)}`;
document.getElementById('whatsapp-share').href = whatsappUrl;
const twitterUrl = `https://twitter.com/intent/tweet?text=${encodeURIComponent(text)}&url=${encod eURIComponent(url)}`;
document.getElementById('twitter-share').href = twitterUrl;
}
function resetResult() {
document.getElementById('loader-container').style.display = 'none';
document.getElementById('result-container').classList.remove('show');
}
</script>
</body>
</html>