<!
DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Prime Properties Ethiopia - Homes & Land for Sale</title>
<script src="https://cdn.tailwindcss.com"></script>
<style>
@import
url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap');
body { font-family: 'Inter', sans-serif; }
.hero-gradient { background: linear-gradient(135deg, #0a0a0a 0%, #1a1a1a 50%, #2d1b0e 100%); }
.luxury-gradient { background: linear-gradient(135deg, #8b4513 0%, #a0522d 50%, #654321 100%);
}
.property-card {
transition: all 0.4s cubic-bezier(0.175, 0.885, 0.32, 1.275);
border: 1px solid rgba(139, 69, 19, 0.2);
.property-card:hover {
transform: translateY(-10px) scale(1.02);
box-shadow: 0 25px 50px rgba(139, 69, 19, 0.3), 0 0 30px rgba(160, 82, 45, 0.2);
border-color: #8b4513;
/* Smooth scroll animations */
.fade-in { opacity: 0; transform: translateY(30px); transition: all 0.6s ease; }
.fade-in.visible { opacity: 1; transform: translateY(0); }
.slide-in-left { opacity: 0; transform: translateX(-50px); transition: all 0.8s ease; }
.slide-in-left.visible { opacity: 1; transform: translateX(0); }
.slide-in-right { opacity: 0; transform: translateX(50px); transition: all 0.8s ease; }
.slide-in-right.visible { opacity: 1; transform: translateX(0); }
.scale-in { opacity: 0; transform: scale(0.8); transition: all 0.6s ease; }
.scale-in.visible { opacity: 1; transform: scale(1); }
/* Interactive buttons */
.interactive-btn {
position: relative;
overflow: hidden;
transition: all 0.3s ease;
.interactive-btn:before {
content: '';
position: absolute;
top: 0;
left: -100%;
width: 100%;
height: 100%;
background: linear-gradient(90deg, transparent, rgba(255,255,255,0.2), transparent);
transition: left 0.5s;
.interactive-btn:hover:before {
left: 100%;
/* Floating elements */
.float { animation: float 6s ease-in-out infinite; }
@keyframes float {
0% { transform: translateY(0px); }
50% { transform: translateY(-20px); }
100% { transform: translateY(0px); }
/* Pulse animation */
.pulse { animation: pulse 2s infinite; }
@keyframes pulse {
0% { transform: scale(1); }
50% { transform: scale(1.05); }
100% { transform: scale(1); }
/* Scroll indicator */
.scroll-indicator {
position: fixed;
top: 0;
left: 0;
width: 0%;
height: 6px;
background: linear-gradient(90deg, #8b4513, #a0522d, #654321);
z-index: 1000;
transition: width 0.3s ease;
box-shadow: 0 2px 10px rgba(139, 69, 19, 0.5);
/* Quick action buttons */
.quick-actions {
position: fixed;
right: 20px;
top: 50%;
transform: translateY(-50%);
z-index: 100;
display: flex;
flex-direction: column;
gap: 15px;
.quick-btn {
width: 60px;
height: 60px;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
font-size: 24px;
color: white;
cursor: pointer;
transition: all 0.3s ease;
box-shadow: 0 4px 15px rgba(0,0,0,0.2);
.quick-btn:hover {
transform: scale(1.1);
box-shadow: 0 6px 20px rgba(0,0,0,0.3);
/* Parallax effect */
.parallax {
background-attachment: fixed;
background-position: center;
background-repeat: no-repeat;
background-size: cover;
/* Counter animation */
.counter { font-weight: bold; }
/* Smooth section transitions */
section {
transition: all 0.5s ease;
/* Payment method selection styles */
.payment-option.selected {
border-color: #10b981 !important;
background: linear-gradient(135deg, #ecfdf5, #d1fae5);
transform: scale(1.02);
box-shadow: 0 8px 25px rgba(16, 185, 129, 0.3);
.payment-radio {
transition: all 0.3s ease;
.payment-option.selected .payment-radio {
background-color: #10b981;
border-color: #10b981;
position: relative;
}
.payment-option.selected .payment-radio::after {
content: '';
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
width: 6px;
height: 6px;
background-color: white;
border-radius: 50%;
/* Mobile responsive quick actions */
@media (max-width: 768px) {
.quick-actions {
right: 10px;
gap: 10px;
.quick-btn {
width: 50px;
height: 50px;
font-size: 20px;
</style>
</head>
<body class="bg-gray-50">
<!-- Login/Register Page (Shown by default) -->
<div id="authPage" class="fixed inset-0 bg-gradient-to-br from-blue-600 to-blue-800 flex items-center
justify-center z-50">
<div class="bg-white rounded-xl p-8 max-w-md w-full mx-4 shadow-2xl">
<div class="text-center mb-8">
<div class="text-4xl font-bold text-blue-600 mb-4">Prime Properties</div>
<h1 class="text-3xl font-bold text-gray-900 mb-2">Welcome to Ethiopia's Premier Real Estate
Platform</h1>
<p class="text-gray-600">Please login or create an account to access our premium property
listings and services</p>
</div>
<div class="mb-6">
<div class="flex border-b border-gray-200">
<button onclick="showLoginTab()" id="loginTab" class="flex-1 py-3 px-4 text-center font-
medium text-blue-600 border-b-2 border-blue-600">
Login
</button>
<button onclick="showRegisterTab()" id="registerTab" class="flex-1 py-3 px-4 text-center
font-medium text-gray-500 hover:text-gray-700">
Register
</button>
</div>
</div>
<!-- Login Form -->
<form id="loginForm" class="space-y-4">
<div>
<label class="block text-sm font-medium text-gray-700 mb-2">Email Address</label>
<input type="email" name="loginEmail" required class="w-full px-4 py-3 border border-gray-
300 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-transparent">
</div>
<div>
<label class="block text-sm font-medium text-gray-700 mb-2">Password</label>
<input type="password" name="loginPassword" required class="w-full px-4 py-3 border
border-gray-300 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-transparent">
</div>
<button type="submit" class="w-full bg-blue-600 text-white py-3 rounded-lg font-semibold
hover:bg-blue-700 transition-colors">
Login to Prime Properties
</button>
</form>
<!-- Register Form -->
<form id="registerForm" class="space-y-4 hidden">
<div>
<label class="block text-sm font-medium text-gray-700 mb-2">Full Name</label>
<input type="text" name="registerName" required class="w-full px-4 py-3 border border-
gray-300 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-transparent">
</div>
<div>
<label class="block text-sm font-medium text-gray-700 mb-2">Email Address</label>
<input type="email" name="registerEmail" required class="w-full px-4 py-3 border border-
gray-300 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-transparent">
<p class="text-xs text-gray-500 mt-1">We verify Gmail addresses to ensure they exist</p>
</div>
<div>
<label class="block text-sm font-medium text-gray-700 mb-2">Phone Number</label>
<input type="tel" name="registerPhone" required class="w-full px-4 py-3 border border-gray-
300 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-transparent">
</div>
<div>
<label class="block text-sm font-medium text-gray-700 mb-2">Password</label>
<input type="password" name="registerPassword" required minlength="6" class="w-full px-4
py-3 border border-gray-300 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-transparent">
</div>
<div class="flex items-center">
<input type="checkbox" id="agreeTerms" required class="h-4 w-4 text-blue-600 focus:ring-
blue-500 border-gray-300 rounded">
<label for="agreeTerms" class="ml-2 block text-sm text-gray-700">
I agree to the Terms of Service and Privacy Policy
</label>
</div>
<button type="submit" class="w-full bg-green-600 text-white py-3 rounded-lg font-semibold
hover:bg-green-700 transition-colors">
Create Account & Access Properties
</button>
</form>
<div class="mt-6 text-center">
<div class="bg-blue-50 border border-blue-200 rounded-lg p-4">
<h4 class="font-semibold text-blue-900 mb-2">Why Join Prime Properties?</h4>
<ul class="text-sm text-blue-800 space-y-1">
<li>✓ Access to premium property listings</li>
<li>✓ Only 1.6% commission on sales</li>
<li>✓ 5,000 ETB service fee (lowest in market)</li>
<li>✓ Personal dashboard to track requests</li>
<li>✓ Professional legal support included</li>
</ul>
</div>
</div>
</div>
</div>
<!-- Scroll Progress Indicator -->
<div class="scroll-indicator" id="scrollIndicator"></div>
<!-- Quick Action Buttons -->
<div class="quick-actions" id="quickActions" style="display: none;">
<div class="quick-btn bg-gradient-to-r from-yellow-500 to-yellow-600 hover:from-yellow-600
hover:to-yellow-700 pulse border-2 border-yellow-400" onclick="showSellModal()" title="List Premium
Property">
</div>
<div class="quick-btn bg-gradient-to-r from-gray-800 to-black hover:from-black hover:to-gray-900
border-2 border-yellow-400" onclick="scrollToProperties()" title="Browse Luxury Collection">
</div>
<div class="quick-btn bg-gradient-to-r from-purple-600 to-purple-700 hover:from-purple-700
hover:to-purple-800 border-2 border-yellow-400" onclick="showContactForm()" title="VIP
Consultation">
</div>
<div class="quick-btn bg-gradient-to-r from-gray-700 to-gray-800 hover:from-gray-800 hover:to-
gray-900 border-2 border-yellow-400" onclick="scrollToTop()" title="Back to Top">
</div>
</div>
<!-- Main Website Content (Hidden by default) -->
<div id="mainWebsite" class="hidden">
<!-- Navigation -->
<nav class="bg-gradient-to-r from-gray-900 via-black to-gray-900 shadow-2xl sticky top-0 z-50
border-b-2 border-gold-400">
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
<div class="flex justify-between items-center h-18">
<div class="flex items-center">
<div class="text-3xl font-bold bg-gradient-to-r from-amber-700 via-amber-800 to-amber-
900 bg-clip-text text-transparent">Prime Properties</div>
<span class="ml-3 text-xs bg-gradient-to-r from-amber-700 to-amber-800 text-white px-2
py-1 rounded-full font-bold">LUXURY</span>
</div>
<div class="hidden md:flex space-x-8">
<a href="#home" class="text-gray-300 hover:text-amber-600 font-medium transition-all
duration-300 hover:scale-105">Home</a>
<a href="#properties" class="text-gray-300 hover:text-amber-600 font-medium transition-
all duration-300 hover:scale-105">Properties</a>
<a href="#services" class="text-gray-300 hover:text-amber-600 font-medium transition-all
duration-300 hover:scale-105">Services</a>
<a href="#contact" class="text-gray-300 hover:text-amber-600 font-medium transition-all
duration-300 hover:scale-105">Contact</a>
</div>
<div class="flex items-center space-x-4">
<span id="navWelcomeUser" class="text-amber-600 font-semibold"></span>
<button onclick="showDashboard()" class="bg-gradient-to-r from-amber-700 to-amber-
800 text-white px-6 py-2 rounded-lg hover:from-amber-800 hover:to-amber-900 transition-all duration-
300 font-bold shadow-lg transform hover:scale-105">
Dashboard
</button>
<button onclick="logout()" class="bg-gradient-to-r from-red-600 to-red-700 text-white px-
4 py-2 rounded-lg hover:from-red-700 hover:to-red-800 transition-all duration-300 font-medium
shadow-lg">
Logout
</button>
</div>
</div>
</div>
</nav>
<!-- Hero Section -->
<section id="home" class="relative text-white py-24 overflow-hidden parallax hero-gradient">
<div class="absolute inset-0 bg-gradient-to-br from-black via-transparent to-black opacity-
70"></div>
<!-- Luxury Floating Elements -->
<div class="absolute top-20 left-10 w-16 h-16 bg-amber-700 opacity-20 rounded-full
float"></div>
<div class="absolute top-40 right-20 w-12 h-12 bg-amber-800 opacity-20 rounded-full float"
style="animation-delay: -2s;"></div>
<div class="absolute bottom-20 left-20 w-14 h-14 bg-amber-700 opacity-20 rounded-full float"
style="animation-delay: -4s;"></div>
<div class="absolute top-60 right-40 w-10 h-10 bg-amber-900 opacity-15 rounded-full float"
style="animation-delay: -1s;"></div>
<div class="relative max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 text-center">
<div class="mb-6 fade-in">
<span class="inline-block bg-gradient-to-r from-amber-700 to-amber-800 text-white px-6 py-
2 rounded-full text-sm font-bold mb-4">PREMIUM LUXURY REAL ESTATE</span>
</div>
<h1 class="text-6xl font-bold mb-6 fade-in bg-gradient-to-r from-white via-amber-100 to-white
bg-clip-text text-transparent">Discover Luxury Living in Ethiopia</h1>
<p class="text-2xl mb-8 max-w-4xl mx-auto fade-in text-gray-200" style="animation-delay:
0.2s;">Exclusive premium properties, luxury vehicles, and elite real estate services. Where sophistication
meets excellence.</p>
<div class="flex flex-col sm:flex-row gap-6 justify-center fade-in" style="animation-delay:
0.4s;">
<button onclick="scrollToProperties()" class="interactive-btn bg-gradient-to-r from-amber-
700 to-amber-800 text-white px-10 py-4 rounded-xl font-bold hover:from-amber-800 hover:to-amber-
900 transition-all duration-300 transform hover:scale-105 shadow-2xl">
Browse Luxury Properties
</button>
<button onclick="showSellModal()" class="interactive-btn bg-gradient-to-r from-green-600
to-green-700 text-white px-10 py-4 rounded-xl font-bold hover:from-green-700 hover:to-green-800
transition-all duration-300 transform hover:scale-105 pulse shadow-2xl">
List Your Premium Property
</button>
<button onclick="showContactForm()" class="interactive-btn border-3 border-amber-600 bg-
transparent text-amber-600 px-10 py-4 rounded-xl font-bold hover:bg-amber-600 hover:text-white
transition-all duration-300 transform hover:scale-105 shadow-2xl">
VIP Consultation
</button>
</div>
</div>
</section>
<!-- Properties Section -->
<section id="properties" class="relative py-16 overflow-hidden">
<div class="absolute inset-0 bg-cover bg-center bg-no-repeat" style="background-image:
url('https://images.unsplash.com/photo-1486406146926-c627a92ad1ab?ixlib=rb-
4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop
&w=2000&q=80');"></div>
<div class="absolute inset-0 bg-white bg-opacity-90"></div>
<div class="relative">
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
<div class="text-center mb-12">
<div class="mb-6 fade-in">
<span class="inline-block bg-gradient-to-r from-amber-700 to-amber-800 text-white px-6
py-2 rounded-full text-sm font-bold mb-4">EXCLUSIVE COLLECTION</span>
</div>
<h2 class="text-5xl font-bold bg-gradient-to-r from-gray-900 via-amber-700 to-gray-900 bg-
clip-text text-transparent mb-6 fade-in">Premium Properties & Luxury Assets</h2>
<p class="text-gray-700 text-xl fade-in max-w-3xl mx-auto" style="animation-delay:
0.2s;">Curated selection of Ethiopia's finest properties, luxury vehicles, and exclusive real estate
opportunities</p>
<!-- Interactive Filter Buttons -->
<div class="flex flex-wrap justify-center gap-4 mt-10 fade-in" style="animation-delay: 0.4s;">
<button onclick="filterProperties('all')" class="filter-btn active bg-gradient-to-r from-
amber-700 to-amber-800 text-white px-8 py-3 rounded-full hover:from-amber-800 hover:to-amber-900
transition-all duration-300 font-bold shadow-lg transform hover:scale-105">
All Premium
</button>
<button onclick="filterProperties('residential')" class="filter-btn bg-gradient-to-r from-gray-
200 to-gray-300 text-gray-800 px-6 py-3 rounded-full hover:from-amber-100 hover:to-amber-200
transition-all duration-300 font-medium shadow-md">
Luxury Homes
</button>
<button onclick="filterProperties('commercial')" class="filter-btn bg-gradient-to-r from-
gray-200 to-gray-300 text-gray-800 px-6 py-3 rounded-full hover:from-amber-100 hover:to-amber-200
transition-all duration-300 font-medium shadow-md">
Elite Commercial
</button>
<button onclick="filterProperties('land')" class="filter-btn bg-gradient-to-r from-gray-200
to-gray-300 text-gray-800 px-6 py-3 rounded-full hover:from-amber-100 hover:to-amber-200 transition-
all duration-300 font-medium shadow-md">
Prime Land
</button>
<button onclick="filterProperties('luxury')" class="filter-btn bg-gradient-to-r from-gray-200
to-gray-300 text-gray-800 px-6 py-3 rounded-full hover:from-amber-100 hover:to-amber-200 transition-
all duration-300 font-medium shadow-md">
Ultra Luxury
</button>
</div>
</div>
<div class="grid md:grid-cols-3 gap-8" id="propertyGrid">
<!-- Property 1 -->
<div class="bg-white rounded-xl shadow-lg overflow-hidden property-card relative group
scale-in residential" data-category="residential" style="animation-delay: 0.1s;">
<div class="h-48 overflow-hidden relative">
<img src="https://images.unsplash.com/photo-1613490493576-7fde63acd811?ixlib=rb-
4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop
&w=1000&q=80" alt="Luxury Villa" class="w-full h-full object-cover">
<!-- Hover Description -->
<div class="absolute inset-0 bg-black bg-opacity-80 text-white p-4 opacity-0 group-
hover:opacity-100 transition-opacity duration-300 flex flex-col justify-center">
<h4 class="font-bold text-lg mb-2">Luxury Villa Details</h4>
<ul class="text-sm space-y-1">
<li>• 5 bedrooms, 4 bathrooms</li>
<li>• Swimming pool & garden</li>
<li>• Prime location in Bole</li>
<li>• Modern amenities included</li>
<li>• 24/7 security & parking</li>
</ul>
</div>
</div>
<div class="p-6">
<h3 class="text-xl font-semibold mb-3">Luxury Villa</h3>
<div class="mb-4">
<span class="bg-green-100 text-green-800 px-3 py-1 rounded-full text-
sm">Available</span>
</div>
<div class="space-y-3">
<button onclick="requestProperty('Luxury Villa', 'Contact for pricing')" class="w-full
bg-blue-600 text-white py-3 rounded-lg hover:bg-blue-700 transition-colors font-semibold">
Request Property
</button>
<button onclick="sellSimilarProperty('Luxury Villa')" class="w-full bg-green-600 text-
white py-2 rounded-lg hover:bg-green-700 transition-colors font-medium text-sm">
Sell Your Villa
</button>
</div>
</div>
</div>
<!-- Property 2 -->
<div class="bg-white rounded-xl shadow-lg overflow-hidden property-card relative group
scale-in residential" data-category="residential" style="animation-delay: 0.2s;">
<div class="h-48 overflow-hidden relative">
<img src="https://images.unsplash.com/photo-1545324418-cc1a3fa10c00?ixlib=rb-
4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop
&w=1000&q=80" alt="Modern Apartment" class="w-full h-full object-cover">
<!-- Hover Description -->
<div class="absolute inset-0 bg-black bg-opacity-80 text-white p-4 opacity-0 group-
hover:opacity-100 transition-opacity duration-300 flex flex-col justify-center">
<h4 class="font-bold text-lg mb-2">Modern Apartment Details</h4>
<ul class="text-sm space-y-1">
<li>• 3 bedrooms, 2 bathrooms</li>
<li>• City center location</li>
<li>• Elevator & balcony</li>
<li>• Fully furnished option</li>
<li>• Gym & rooftop access</li>
</ul>
</div>
</div>
<div class="p-6">
<h3 class="text-xl font-semibold mb-3">Modern Apartment</h3>
<div class="mb-4">
<span class="bg-green-100 text-green-800 px-3 py-1 rounded-full text-
sm">Available</span>
</div>
<div class="space-y-3">
<button onclick="requestProperty('Modern Apartment', 'Contact for pricing')"
class="w-full bg-blue-600 text-white py-3 rounded-lg hover:bg-blue-700 transition-colors font-semibold
interactive-btn">
Request Property
</button>
<button onclick="sellSimilarProperty('Modern Apartment')" class="w-full bg-green-600
text-white py-2 rounded-lg hover:bg-green-700 transition-colors font-medium text-sm interactive-btn">
Sell Your Apartment
</button>
</div>
</div>
</div>
<!-- Property 3 -->
<div class="bg-white rounded-xl shadow-lg overflow-hidden property-card relative group
scale-in commercial" data-category="commercial" style="animation-delay: 0.3s;">
<div class="h-48 overflow-hidden relative">
<img src="https://images.unsplash.com/photo-1486406146926-c627a92ad1ab?ixlib=rb-
4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop
&w=1000&q=80" alt="Commercial Building" class="w-full h-full object-cover">
<!-- Hover Description -->
<div class="absolute inset-0 bg-black bg-opacity-80 text-white p-4 opacity-0 group-
hover:opacity-100 transition-opacity duration-300 flex flex-col justify-center">
<h4 class="font-bold text-lg mb-2">Commercial Building Details</h4>
<ul class="text-sm space-y-1">
<li>• 8 floors, 2000 sqm total</li>
<li>• Business district location</li>
<li>• Elevator & conference rooms</li>
<li>• High-speed internet ready</li>
<li>• Parking for 50+ vehicles</li>
</ul>
</div>
</div>
<div class="p-6">
<h3 class="text-xl font-semibold mb-3">Commercial Building</h3>
<div class="mb-4">
<span class="bg-green-100 text-green-800 px-3 py-1 rounded-full text-
sm">Available</span>
</div>
<div class="space-y-3">
<button onclick="requestProperty('Commercial Building', 'Contact for pricing')"
class="w-full bg-blue-600 text-white py-3 rounded-lg hover:bg-blue-700 transition-colors font-semibold
interactive-btn">
Request Property
</button>
<button onclick="sellSimilarProperty('Commercial Building')" class="w-full bg-green-
600 text-white py-2 rounded-lg hover:bg-green-700 transition-colors font-medium text-sm interactive-
btn">
Sell Your Building
</button>
</div>
</div>
</div>
<!-- Property 4 -->
<div class="bg-white rounded-xl shadow-lg overflow-hidden property-card relative group
scale-in land" data-category="land" style="animation-delay: 0.4s;">
<div class="h-48 overflow-hidden relative">
<img src="https://images.unsplash.com/photo-1500382017468-9049fed747ef?ixlib=rb-
4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop
&w=1000&q=80" alt="Commercial Land" class="w-full h-full object-cover">
<!-- Hover Description -->
<div class="absolute inset-0 bg-black bg-opacity-80 text-white p-4 opacity-0 group-
hover:opacity-100 transition-opacity duration-300 flex flex-col justify-center">
<h4 class="font-bold text-lg mb-2">Commercial Land Details</h4>
<ul class="text-sm space-y-1">
<li>• 5000 sqm prime location</li>
<li>• Main road frontage</li>
<li>• All utilities available</li>
<li>• Perfect for shopping mall</li>
<li>• Clear title & documents</li>
</ul>
</div>
</div>
<div class="p-6">
<h3 class="text-xl font-semibold mb-3">Commercial Land</h3>
<div class="mb-4">
<span class="bg-green-100 text-green-800 px-3 py-1 rounded-full text-
sm">Available</span>
</div>
<div class="space-y-3">
<button onclick="requestProperty('Commercial Land', 'Contact for pricing')" class="w-
full bg-blue-600 text-white py-3 rounded-lg hover:bg-blue-700 transition-colors font-semibold
interactive-btn">
Request Property
</button>
<button onclick="sellSimilarProperty('Commercial Land')" class="w-full bg-green-600
text-white py-2 rounded-lg hover:bg-green-700 transition-colors font-medium text-sm interactive-btn">
Sell Your Land
</button>
</div>
</div>
</div>
<!-- Property 5 -->
<div class="bg-white rounded-xl shadow-lg overflow-hidden property-card relative group
scale-in residential" data-category="residential" style="animation-delay: 0.5s;">
<div class="h-48 overflow-hidden relative">
<img src="https://images.unsplash.com/photo-1570129477492-45c003edd2be?ixlib=rb-
4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop
&w=1000&q=80" alt="Family House" class="w-full h-full object-cover">
<!-- Hover Description -->
<div class="absolute inset-0 bg-black bg-opacity-80 text-white p-4 opacity-0 group-
hover:opacity-100 transition-opacity duration-300 flex flex-col justify-center">
<h4 class="font-bold text-lg mb-2">Family House Details</h4>
<ul class="text-sm space-y-1">
<li>• 4 bedrooms, 3 bathrooms</li>
<li>• Large backyard & garage</li>
<li>• Quiet residential area</li>
<li>• Near schools & hospitals</li>
<li>• Move-in ready condition</li>
</ul>
</div>
</div>
<div class="p-6">
<h3 class="text-xl font-semibold mb-3">Family House</h3>
<div class="mb-4">
<span class="bg-green-100 text-green-800 px-3 py-1 rounded-full text-
sm">Available</span>
</div>
<div class="space-y-3">
<button onclick="requestProperty('Family House', 'Contact for pricing')" class="w-full
bg-blue-600 text-white py-3 rounded-lg hover:bg-blue-700 transition-colors font-semibold interactive-
btn">
Request Property
</button>
<button onclick="sellSimilarProperty('Family House')" class="w-full bg-green-600 text-
white py-2 rounded-lg hover:bg-green-700 transition-colors font-medium text-sm interactive-btn">
Sell Your House
</button>
</div>
</div>
</div>
<!-- Property 6 -->
<div class="bg-gradient-to-br from-gray-900 to-black rounded-xl shadow-2xl overflow-hidden
property-card border-2 border-amber-700 relative group scale-in luxury" data-category="luxury"
style="animation-delay: 0.6s;">
<div class="h-48 overflow-hidden relative">
<img src="https://images.unsplash.com/photo-1555215695-3004980ad54e?ixlib=rb-
4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop
&w=1000&q=80" alt="Premium Luxury Car" class="w-full h-full object-cover">
<div class="absolute top-4 right-4">
<span class="bg-amber-700 text-white px-3 py-1 rounded-full text-xs font-
bold">PREMIUM</span>
</div>
<!-- Hover Description -->
<div class="absolute inset-0 bg-black bg-opacity-90 text-white p-4 opacity-0 group-
hover:opacity-100 transition-opacity duration-300 flex flex-col justify-center">
<h4 class="font-bold text-lg mb-2 text-amber-600">Luxury Vehicle Details</h4>
<ul class="text-sm space-y-1">
<li>• Latest model luxury sedan</li>
<li>• Leather interior & sunroof</li>
<li>• Advanced safety features</li>
<li>• Premium sound system</li>
<li>• Full service history</li>
</ul>
</div>
</div>
<div class="p-6 text-white">
<h3 class="text-xl font-bold mb-2 text-amber-600">Premium Luxury Vehicle</h3>
<p class="text-gray-300 text-sm mb-3">High-end luxury automobile with premium
features</p>
<div class="mb-4 flex gap-2">
<span class="bg-amber-700 text-white px-3 py-1 rounded-full text-xs font-
semibold">LUXURY</span>
<span class="bg-gray-700 text-white px-3 py-1 rounded-full text-xs">Vehicle</span>
</div>
<div class="space-y-3">
<button onclick="requestProperty('Premium Luxury Vehicle', 'Contact for exclusive
pricing')" class="w-full bg-gradient-to-r from-amber-700 to-amber-800 text-white py-3 rounded-lg
hover:from-amber-800 hover:to-amber-900 transition-all font-bold shadow-lg">
Request Premium Vehicle
</button>
<button onclick="sellSimilarProperty('Premium Luxury Vehicle')" class="w-full bg-
gradient-to-r from-green-500 to-green-600 text-white py-2 rounded-lg hover:from-green-600 hover:to-
green-700 transition-all font-medium text-sm shadow-lg">
Sell Your Luxury Car
</button>
</div>
</div>
</div>
</div>
</div>
</div>
</section>
<!-- Statistics Section -->
<section class="relative py-20 text-white overflow-hidden">
<div class="absolute inset-0 bg-cover bg-center bg-no-repeat" style="background-image:
url('https://images.unsplash.com/photo-1560472354-b33ff0c44a43?ixlib=rb-
4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop
&w=2000&q=80');"></div>
<div class="absolute inset-0 bg-gradient-to-r from-gray-900 via-black to-gray-900 opacity-
90"></div>
<div class="relative">
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
<div class="text-center mb-12">
<span class="inline-block bg-gradient-to-r from-amber-700 to-amber-800 text-white px-6 py-
2 rounded-full text-sm font-bold mb-4">PROVEN EXCELLENCE</span>
<h2 class="text-4xl font-bold bg-gradient-to-r from-white via-amber-100 to-white bg-clip-text
text-transparent">Our Premium Track Record</h2>
</div>
<div class="grid md:grid-cols-3 gap-8 text-center">
<div class="bg-gradient-to-br from-amber-700/20 to-amber-800/20 backdrop-blur-sm border
border-amber-600/30 rounded-xl p-8 transform hover:scale-105 transition-all duration-300">
<div class="text-5xl font-bold mb-3 bg-gradient-to-r from-amber-600 to-amber-800 bg-clip-
text text-transparent" id="customerCount">1,247</div>
<p class="text-amber-100 text-lg font-medium">Elite Clients Served</p>
</div>
<div class="bg-gradient-to-br from-amber-700/20 to-amber-800/20 backdrop-blur-sm border
border-amber-600/30 rounded-xl p-8 transform hover:scale-105 transition-all duration-300">
<div class="text-5xl font-bold mb-3 bg-gradient-to-r from-amber-600 to-amber-800 bg-clip-
text text-transparent" id="requestCount">3,892</div>
<p class="text-amber-100 text-lg font-medium">Luxury Inquiries</p>
</div>
<div class="bg-gradient-to-br from-amber-700/20 to-amber-800/20 backdrop-blur-sm border
border-amber-600/30 rounded-xl p-8 transform hover:scale-105 transition-all duration-300">
<div class="text-5xl font-bold mb-3 bg-gradient-to-r from-amber-600 to-amber-800 bg-clip-
text text-transparent">156</div>
<p class="text-amber-100 text-lg font-medium">Premium Sales Closed</p>
</div>
</div>
</div>
</div>
</section>
<!-- Services Section -->
<section id="services" class="relative py-16 overflow-hidden">
<div class="absolute inset-0 bg-cover bg-center bg-no-repeat" style="background-image:
url('https://images.unsplash.com/photo-1497366216548-37526070297c?ixlib=rb-
4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop
&w=2000&q=80');"></div>
<div class="absolute inset-0 bg-gray-50 bg-opacity-95"></div>
<div class="relative">
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
<div class="text-center mb-12">
<h2 class="text-4xl font-bold text-gray-900 mb-4">Our Services</h2>
<p class="text-gray-600 text-lg">Complete real estate solutions for your needs</p>
</div>
<div class="grid md:grid-cols-3 gap-8">
<div class="bg-white p-8 rounded-xl shadow-lg text-center relative group hover:shadow-2xl
transition-all duration-300">
<div class="w-16 h-16 mx-auto mb-4 rounded-full overflow-hidden">
<img src="https://images.unsplash.com/photo-1560518883-ce09059eeffa?ixlib=rb-
4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop
&w=1000&q=80" alt="Home Sales" class="w-full h-full object-cover">
</div>
<h3 class="text-xl font-semibold mb-4">Home Sales</h3>
<p class="text-gray-600">Premium residential properties across Addis Ababa and
surrounding areas</p>
<!-- Hover Description -->
<div class="absolute inset-0 bg-blue-600 text-white p-6 rounded-xl opacity-0 group-
hover:opacity-95 transition-opacity duration-300 flex flex-col justify-center">
<h4 class="font-bold text-lg mb-3">Home Sales Services</h4>
<ul class="text-sm space-y-2 text-left">
<li>• Property valuation & market analysis</li>
<li>• Professional photography & listing</li>
<li>• Buyer screening & negotiations</li>
<li>• Home staging consultation</li>
<li>• Only 1.6% commission on successful sales</li>
<li>• Average sale time: 30-45 days</li>
</ul>
</div>
</div>
<div class="bg-white p-8 rounded-xl shadow-lg text-center relative group hover:shadow-2xl
transition-all duration-300">
<div class="w-16 h-16 mx-auto mb-4 rounded-full overflow-hidden">
<img src="https://images.unsplash.com/photo-1441974231531-c6227db76b6e?ixlib=rb-
4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop
&w=1000&q=80" alt="Land Sales" class="w-full h-full object-cover">
</div>
<h3 class="text-xl font-semibold mb-4">Land Sales</h3>
<p class="text-gray-600">Commercial and residential land with proper documentation and
legal support</p>
<!-- Hover Description -->
<div class="absolute inset-0 bg-green-600 text-white p-6 rounded-xl opacity-0 group-
hover:opacity-95 transition-opacity duration-300 flex flex-col justify-center">
<h4 class="font-bold text-lg mb-3">Land Sales Services</h4>
<ul class="text-sm space-y-2 text-left">
<li>• Land surveying & boundary marking</li>
<li>• Soil testing & feasibility studies</li>
<li>• Zoning & permit assistance</li>
<li>• Title verification & transfer</li>
<li>• Investment opportunity analysis</li>
<li>• 2% commission on land sales</li>
</ul>
</div>
</div>
<div class="bg-white p-8 rounded-xl shadow-lg text-center relative group hover:shadow-2xl
transition-all duration-300">
<div class="w-16 h-16 mx-auto mb-4 rounded-full overflow-hidden">
<img src="https://images.unsplash.com/photo-1450101499163-c8848c66ca85?ixlib=rb-
4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop
&w=1000&q=80" alt="Legal Support" class="w-full h-full object-cover">
</div>
<h3 class="text-xl font-semibold mb-4">Legal Support Services</h3>
<p class="text-gray-600">Complete documentation and legal assistance for all
transactions</p>
<!-- Hover Description -->
<div class="absolute inset-0 bg-purple-600 text-white p-6 rounded-xl opacity-0 group-
hover:opacity-95 transition-opacity duration-300 flex flex-col justify-center">
<h4 class="font-bold text-lg mb-3">Legal Support Services</h4>
<ul class="text-sm space-y-2 text-left">
<li>• Contract drafting & review</li>
<li>• Property title searches</li>
<li>• Mortgage & financing assistance</li>
<li>• Tax calculation & planning</li>
<li>• Dispute resolution support</li>
<li>• Free consultation included</li>
</ul>
</div>
</div>
</div>
</div>
</div>
</section>
<!-- Contact Section -->
<section id="contact" class="relative py-16 overflow-hidden">
<div class="absolute inset-0 bg-cover bg-center bg-no-repeat" style="background-image:
url('https://images.unsplash.com/photo-1497366811353-6870744d04b2?ixlib=rb-
4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop
&w=2000&q=80');"></div>
<div class="absolute inset-0 bg-white bg-opacity-92"></div>
<div class="relative">
<div class="max-w-4xl mx-auto px-4 sm:px-6 lg:px-8">
<div class="text-center mb-12">
<h2 class="text-4xl font-bold text-gray-900 mb-4">Contact Us</h2>
<p class="text-gray-600 text-lg">Ready to find your perfect property? Get in touch
today!</p>
</div>
<div class="bg-gray-50 rounded-xl p-8">
<form id="contactForm" class="space-y-6">
<div class="grid md:grid-cols-2 gap-6">
<div>
<label class="block text-sm font-medium text-gray-700 mb-2">Full Name</label>
<input type="text" required class="w-full px-4 py-3 border border-gray-300 rounded-lg
focus:ring-2 focus:ring-blue-500 focus:border-transparent">
</div>
<div>
<label class="block text-sm font-medium text-gray-700 mb-2">Phone Number</label>
<input type="tel" required class="w-full px-4 py-3 border border-gray-300 rounded-lg
focus:ring-2 focus:ring-blue-500 focus:border-transparent">
</div>
</div>
<div>
<label class="block text-sm font-medium text-gray-700 mb-2">Email Address</label>
<input type="email" required class="w-full px-4 py-3 border border-gray-300 rounded-lg
focus:ring-2 focus:ring-blue-500 focus:border-transparent">
</div>
<div>
<label class="block text-sm font-medium text-gray-700 mb-2">Property Interest</label>
<select class="w-full px-4 py-3 border border-gray-300 rounded-lg focus:ring-2
focus:ring-blue-500 focus:border-transparent">
<option>Residential Home</option>
<option>Commercial Land</option>
<option>Residential Land</option>
<option>Investment Property</option>
</select>
</div>
<div>
<label class="block text-sm font-medium text-gray-700 mb-2">Message</label>
<textarea rows="4" class="w-full px-4 py-3 border border-gray-300 rounded-lg
focus:ring-2 focus:ring-blue-500 focus:border-transparent" placeholder="Tell us about your property
needs..."></textarea>
</div>
<button type="submit" class="w-full bg-blue-600 text-white py-3 rounded-lg font-semibold
hover:bg-blue-700 transition-colors">
Send Message
</button>
</form>
</div>
</div>
</div>
</section>
<!-- Footer -->
<footer class="relative text-white py-16 overflow-hidden">
<div class="absolute inset-0 bg-cover bg-center bg-no-repeat" style="background-image:
url('https://images.unsplash.com/photo-1449824913935-59a10b8d2000?ixlib=rb-
4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop
&w=2000&q=80');"></div>
<div class="absolute inset-0 bg-gradient-to-t from-black via-gray-900 to-black opacity-95"></div>
<div class="relative">
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
<div class="grid md:grid-cols-3 gap-12">
<div>
<div class="text-3xl font-bold mb-4 bg-gradient-to-r from-yellow-400 via-yellow-500 to-
yellow-600 bg-clip-text text-transparent">Prime Properties</div>
<span class="inline-block bg-gradient-to-r from-yellow-400 to-yellow-600 text-black px-3
py-1 rounded-full text-xs font-bold mb-4">LUXURY REAL ESTATE</span>
<p class="text-gray-300 leading-relaxed">Ethiopia's premier destination for luxury real
estate, exclusive properties, and elite lifestyle assets. Where sophistication meets excellence.</p>
<div class="flex space-x-4 mt-6">
<div class="w-10 h-10 bg-gradient-to-r from-yellow-500 to-yellow-600 rounded-full flex
items-center justify-center text-black font-bold">◆</div>
<div class="w-10 h-10 bg-gradient-to-r from-yellow-500 to-yellow-600 rounded-full flex
items-center justify-center text-black font-bold">★</div>
<div class="w-10 h-10 bg-gradient-to-r from-yellow-500 to-yellow-600 rounded-full flex
items-center justify-center text-black font-bold">▲</div>
</div>
</div>
<div>
<h3 class="text-xl font-bold mb-6 text-yellow-400">Elite Contact</h3>
<div class="space-y-4 text-gray-300">
<div class="flex items-center space-x-3">
<div class="w-8 h-8 bg-yellow-500 rounded-full flex items-center justify-center text-
black text-sm font-bold">P</div>
<p>+251-911-123456</p>
</div>
<div class="flex items-center space-x-3">
<div class="w-8 h-8 bg-yellow-500 rounded-full flex items-center justify-center text-
black text-sm font-bold">@</div>
<p>luxury@primeproperties.et</p>
</div>
<div class="flex items-center space-x-3">
<div class="w-8 h-8 bg-yellow-500 rounded-full flex items-center justify-center text-
black text-sm font-bold">L</div>
<p>Bole Premium District, Addis Ababa</p>
</div>
</div>
</div>
<div>
<h3 class="text-xl font-bold mb-6 text-yellow-400">VIP Hours</h3>
<div class="space-y-3 text-gray-300">
<div class="flex justify-between">
<span>Monday - Friday:</span>
<span class="text-yellow-400 font-medium">8:00 AM - 8:00 PM</span>
</div>
<div class="flex justify-between">
<span>Saturday:</span>
<span class="text-yellow-400 font-medium">9:00 AM - 6:00 PM</span>
</div>
<div class="flex justify-between">
<span>Sunday:</span>
<span class="text-yellow-400 font-medium">By Appointment</span>
</div>
<div class="mt-4 p-3 bg-gradient-to-r from-yellow-500/20 to-yellow-600/20 border
border-yellow-400/30 rounded-lg">
<p class="text-yellow-300 text-sm font-medium">24/7 VIP Concierge Available</p>
</div>
</div>
</div>
</div>
<div class="border-t border-yellow-400/30 mt-12 pt-8 text-center">
<div class="flex flex-col md:flex-row justify-between items-center">
<p class="text-gray-400">© 2024 Prime Properties Ethiopia. All rights reserved.</p>
<div class="flex space-x-6 mt-4 md:mt-0">
<span class="text-yellow-400 font-medium">Premium</span>
<span class="text-yellow-400 font-medium">Exclusive</span>
<span class="text-yellow-400 font-medium">Elite</span>
</div>
</div>
</div>
</div>
</div>
</footer>
</div>
<!-- Client Dashboard (Hidden by default) -->
<div id="clientDashboard" class="fixed inset-0 bg-gray-100 hidden z-50 overflow-y-auto">
<div class="min-h-screen">
<!-- Dashboard Header -->
<div class="bg-white shadow-sm border-b">
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
<div class="flex justify-between items-center h-16">
<div class="flex items-center">
<div class="text-2xl font-bold text-blue-600">Prime Properties</div>
<span class="ml-4 text-gray-600">Client Dashboard</span>
</div>
<div class="flex items-center space-x-4">
<span id="welcomeUser" class="text-gray-700 font-medium"></span>
<button onclick="backToWebsite()" class="bg-blue-600 text-white px-4 py-2 rounded-lg
hover:bg-blue-700 transition-colors">
Back to Website
</button>
<button onclick="logout()" class="bg-red-600 text-white px-4 py-2 rounded-lg hover:bg-
red-700 transition-colors">
Logout
</button>
</div>
</div>
</div>
</div>
<!-- Dashboard Content -->
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-8">
<div class="grid md:grid-cols-2 gap-8">
<!-- Property Listings -->
<div class="bg-white rounded-xl shadow-lg p-6">
<h3 class="text-xl font-bold text-gray-900 mb-4">Your Property Listings</h3>
<div id="userListings" class="space-y-4">
<p class="text-gray-500">No properties listed yet.</p>
</div>
</div>
<!-- Property Requests -->
<div class="bg-white rounded-xl shadow-lg p-6">
<h3 class="text-xl font-bold text-gray-900 mb-4">Your Property Requests</h3>
<div id="userRequests" class="space-y-4">
<p class="text-gray-500">No property requests yet.</p>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- Modal for Sell Home -->
<div id="sellModal" class="fixed inset-0 bg-black bg-opacity-50 hidden items-center justify-center z-
50">
<div class="bg-white rounded-xl p-8 max-w-md w-full mx-4">
<div class="text-center mb-6">
<h3 class="text-2xl font-bold text-gray-900 mb-2">Sell Your Home</h3>
<div class="bg-green-100 border border-green-400 text-green-800 px-4 py-3 rounded-lg text-
sm">
<strong>Commission:</strong> We charge only 1.6% commission on successful sales. Free
property evaluation included!
</div>
</div>
<form id="sellForm" class="space-y-4">
<div>
<label class="block text-sm font-medium text-gray-700 mb-2">Property Owner
Name</label>
<input type="text" name="ownerName" required class="w-full px-4 py-3 border border-gray-
300 rounded-lg focus:ring-2 focus:ring-green-500">
</div>
<div>
<label class="block text-sm font-medium text-gray-700 mb-2">Phone Number</label>
<input type="tel" name="phone" required class="w-full px-4 py-3 border border-gray-300
rounded-lg focus:ring-2 focus:ring-green-500">
</div>
<div>
<label class="block text-sm font-medium text-gray-700 mb-2">Email</label>
<input type="email" name="email" required class="w-full px-4 py-3 border border-gray-300
rounded-lg focus:ring-2 focus:ring-green-500">
</div>
<div>
<label class="block text-sm font-medium text-gray-700 mb-2">Property Type</label>
<select name="propertyType" class="w-full px-4 py-3 border border-gray-300 rounded-lg
focus:ring-2 focus:ring-green-500">
<option>Residential House</option>
<option>Apartment/Condo</option>
<option>Commercial Building</option>
<option>Land/Plot</option>
<option>Villa</option>
</select>
</div>
<div>
<label class="block text-sm font-medium text-gray-700 mb-2">Property Location</label>
<input type="text" name="location" required placeholder="e.g., Bole, Addis Ababa"
class="w-full px-4 py-3 border border-gray-300 rounded-lg focus:ring-2 focus:ring-green-500">
</div>
<div>
<label class="block text-sm font-medium text-gray-700 mb-2">Expected Price (ETB)</label>
<input type="number" name="price" required placeholder="e.g., 5000000" class="w-full px-4
py-3 border border-gray-300 rounded-lg focus:ring-2 focus:ring-green-500">
</div>
<div>
<label class="block text-sm font-medium text-gray-700 mb-2">Property Video
(Required)</label>
<input type="file" name="video" accept="video/*" required class="w-full px-4 py-3 border
border-gray-300 rounded-lg focus:ring-2 focus:ring-green-500 file:mr-4 file:py-2 file:px-4 file:rounded-lg
file:border-0 file:text-sm file:font-semibold file:bg-green-50 file:text-green-700 hover:file:bg-green-
100">
<p class="text-xs text-gray-500 mt-1">Please upload a video tour of your property (max
100MB)</p>
</div>
<div class="flex gap-4">
<button type="submit" class="flex-1 bg-green-600 text-white py-3 rounded-lg font-semibold
hover:bg-green-700 transition-colors transform hover:scale-105">
Submit Property Listing
</button>
</div>
</form>
<button onclick="closeModal('sellModal')" class="mt-4 w-full bg-gray-200 text-gray-700 py-2
rounded-lg hover:bg-gray-300 transition-colors">
Cancel
</button>
</div>
</div>
<!-- Modal for Property Request -->
<div id="propertyModal" class="fixed inset-0 bg-black bg-opacity-50 hidden items-center justify-
center z-50">
<div class="bg-white rounded-xl p-8 max-w-md w-full mx-4">
<div class="text-center mb-6">
<h3 class="text-2xl font-bold text-gray-900 mb-2">Property Request</h3>
<div id="propertyDetails" class="text-gray-600 mb-4"></div>
<div class="bg-blue-100 border border-blue-400 text-blue-800 px-4 py-3 rounded-lg text-sm">
<strong>Service Fee:</strong> 5,000 ETB processing fee applies for property requests
</div>
</div>
<form id="propertyRequestForm" class="space-y-4">
<div>
<label class="block text-sm font-medium text-gray-700 mb-2">Your Name</label>
<input type="text" name="customerName" required class="w-full px-4 py-3 border border-
gray-300 rounded-lg focus:ring-2 focus:ring-blue-500">
</div>
<div>
<label class="block text-sm font-medium text-gray-700 mb-2">Phone Number</label>
<input type="tel" name="customerPhone" required class="w-full px-4 py-3 border border-
gray-300 rounded-lg focus:ring-2 focus:ring-blue-500">
</div>
<div>
<label class="block text-sm font-medium text-gray-700 mb-2">Email</label>
<input type="email" name="customerEmail" required class="w-full px-4 py-3 border border-
gray-300 rounded-lg focus:ring-2 focus:ring-blue-500">
</div>
<!-- Payment Section (Initially Hidden) -->
<div id="paymentSection" class="hidden bg-gray-50 p-6 rounded-xl border-2 border-dashed
border-gray-300 max-h-96 overflow-y-auto">
<label class="block text-lg font-bold text-gray-900 mb-4 text-center">📸 Payment Proof
Upload (Required)</label>
<!-- Payment Instructions Box -->
<div class="mb-6 p-6 bg-gradient-to-r from-yellow-50 to-orange-50 border-3 border-yellow-
400 rounded-xl shadow-lg">
<h4 class="text-xl font-bold text-yellow-900 mb-6 flex items-center justify-center">
<span class="text-3xl mr-3">📸</span>
Step 2: Choose Your Payment Method
</h4>
<!-- Payment Method Selection -->
<div class="space-y-4 mb-6">
<!-- Bank Transfer Option -->
<div class="payment-option bg-white p-4 rounded-xl border-2 border-blue-300 cursor-
pointer hover:border-blue-500 hover:shadow-lg transition-all duration-300 flex items-center justify-
between" onclick="selectPaymentMethod('bank')" data-method="bank">
<div class="flex items-center space-x-4">
<div class="text-3xl">📸</div>
<div>
<h5 class="font-bold text-blue-900">Bank Transfer</h5>
</div>
</div>
<div>
<span class="inline-block w-4 h-4 border-2 border-blue-500 rounded-full payment-
radio"></span>
</div>
</div>
<!-- Telebirr Option -->
<div class="payment-option bg-white p-4 rounded-xl border-2 border-orange-300
cursor-pointer hover:border-orange-500 hover:shadow-lg transition-all duration-300 flex items-center
justify-between" onclick="selectPaymentMethod('telebirr')" data-method="telebirr">
<div class="flex items-center space-x-4">
<div class="text-3xl">📸</div>
<div>
<h5 class="font-bold text-orange-900">Telebirr</h5>
</div>
</div>
<div>
<span class="inline-block w-4 h-4 border-2 border-orange-500 rounded-full
payment-radio"></span>
</div>
</div>
<!-- CBE Birr Option -->
<div class="payment-option bg-white p-4 rounded-xl border-2 border-blue-300 cursor-
pointer hover:border-blue-500 hover:shadow-lg transition-all duration-300 flex items-center justify-
between" onclick="selectPaymentMethod('cbebirr')" data-method="cbebirr">
<div class="flex items-center space-x-4">
<div class="text-3xl">📸</div>
<div>
<h5 class="font-bold text-blue-900">CBE Birr</h5>
</div>
</div>
<div>
<span class="inline-block w-4 h-4 border-2 border-blue-500 rounded-full payment-
radio"></span>
</div>
</div>
<!-- M-Birr Option -->
<div class="payment-option bg-white p-4 rounded-xl border-2 border-green-300 cursor-
pointer hover:border-green-500 hover:shadow-lg transition-all duration-300 flex items-center justify-
between" onclick="selectPaymentMethod('mbirr')" data-method="mbirr">
<div class="flex items-center space-x-4">
<div class="text-3xl">📸</div>
<div>
<h5 class="font-bold text-green-900">M-Birr</h5>
</div>
</div>
<div>
<span class="inline-block w-4 h-4 border-2 border-green-500 rounded-full payment-
radio"></span>
</div>
</div>
</div>
<!-- Selected Payment Details -->
<div id="selectedPaymentDetails" class="hidden bg-gradient-to-r from-green-50 to-blue-50
p-6 rounded-xl border-2 border-green-400">
<h5 class="text-lg font-bold text-green-900 mb-4 text-center">✅Selected Payment
Method</h5>
<div id="paymentDetailsContent" class="text-center">
<!-- Payment details will be inserted here -->
</div>
<div class="mt-4 p-3 bg-yellow-100 border border-yellow-400 rounded-lg">
<p class="text-sm text-yellow-800 text-center font-semibold">
📸 Please pay exactly 5,000 ETB to the selected account above
</p>
</div>
</div>
<!-- Instructions -->
<div class="mt-4 text-center">
<p class="text-sm text-gray-600">📸 Click on any payment method above to select it</p>
</div>
</div>
<!-- Upload Section -->
<div class="mb-4 p-4 bg-gradient-to-r from-blue-50 to-indigo-50 border-2 border-blue-300
rounded-xl">
<h4 class="text-base font-bold text-blue-900 mb-3 flex items-center">
<span class="text-2xl mr-2">📸</span>
Step 3: Upload Screenshot
</h4>
<div class="space-y-3">
<input type="file" name="paymentProof" accept="image/*" required class="w-full px-4
py-4 border-2 border-blue-300 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-blue-500
file:mr-4 file:py-3 file:px-6 file:rounded-lg file:border-0 file:text-sm file:font-bold file:bg-blue-100
file:text-blue-800 hover:file:bg-blue-200 transition-all">
<!-- Preview Area -->
<div id="imagePreview" class="hidden mt-4 p-4 bg-white border-2 border-green-300
rounded-lg">
<p class="text-green-800 font-semibold mb-2">✅Screenshot Preview:</p>
<img id="previewImg" src="" alt="Payment Screenshot" class="max-w-full h-48 object-
contain border rounded-lg">
<p class="text-xs text-green-600 mt-2">Screenshot uploaded successfully!</p>
</div>
</div>
</div>
<!-- Requirements Checklist -->
<div class="p-4 bg-gray-100 rounded-lg">
<h5 class="font-semibold text-gray-800 mb-2">✅Screenshot Requirements:</h5>
<ul class="text-sm text-gray-700 space-y-1">
<li>• Must show successful payment of exactly 5,000 ETB</li>
<li>• Must show recipient account number (1234567890)</li>
<li>• Must show transaction date and time</li>
<li>• Image must be clear and readable</li>
<li>• Accepted formats: JPG, PNG (max 5MB)</li>
</ul>
</div>
</div>
<!-- Submit Buttons -->
<div id="initialSubmit">
<button type="button" onclick="showPaymentSection()" class="w-full bg-blue-600 text-white
py-3 rounded-lg font-semibold hover:bg-blue-700 transition-colors">
Continue to Payment Details
</button>
</div>
<div id="finalSubmit" class="hidden">
<button type="submit" class="w-full bg-green-600 text-white py-3 rounded-lg font-semibold
hover:bg-green-700 transition-colors">
Submit Request with Payment Proof
</button>
</div>
</form>
<button onclick="closeModal('propertyModal')" class="mt-4 w-full text-gray-600 hover:text-gray-
800">
Cancel
</button>
</div>
</div>
<script>
let currentUser = null;
// Email validation functions
function isValidEmail(email) {
const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
return emailRegex.test(email);
async function checkGmailExists(email) {
// This is a simplified check - in a real application, you would use a proper email validation service
// For demonstration purposes, we'll simulate an API call with enhanced fake detection
try {
// Simulate API delay
await new Promise(resolve => setTimeout(resolve, 1500));
// Basic Gmail format validation
if (!email.toLowerCase().endsWith('@gmail.com')) {
return { exists: false, reason: 'Not a Gmail address' };
const localPart = email.split('@')[0].toLowerCase();
// Enhanced fake Gmail detection patterns
const fakePatterns = [
{ pattern: /^[0-9]+$/, reason: 'Gmail addresses cannot contain only numbers' },
{ pattern: /^.{1,2}$/, reason: 'Gmail address is too short (minimum 3 characters)' },
{ pattern: /^.{31,}$/, reason: 'Gmail address is too long (maximum 30 characters)' },
{ pattern: /[.]{2,}/, reason: 'Gmail addresses cannot have consecutive dots' },
{ pattern: /^[.]|[.]$/, reason: 'Gmail addresses cannot start or end with a dot' },
{ pattern: /[^a-z0-9._]/, reason: 'Gmail addresses can only contain letters, numbers, dots, and
underscores' },
{ pattern: /^(test|fake|dummy|example|sample|temp|temporary)/, reason: 'This appears
to be a test or fake email address' },
{ pattern: /^(admin|root|support|info|contact|noreply|no-reply)$/, reason: 'This appears to
be a system or generic email address' },
{ pattern: /^[a-z]\1{2,}/, reason: 'Gmail addresses cannot have more than 2 consecutive
identical characters' },
{ pattern: /^(qwerty|asdf|zxcv|1234|abcd|password|login)/, reason: 'This appears to be a
fake or test email pattern' }
];
// Check against fake patterns
for (let check of fakePatterns) {
if (check.pattern.test(localPart)) {
return { exists: false, reason: check.reason };
// Simulate checking against a database of known fake/disposable emails
const knownFakeEmails = [
'test123@gmail.com',
'fake@gmail.com',
'dummy@gmail.com',
'example@gmail.com',
'temp@gmail.com',
'123456@gmail.com',
'abc@gmail.com',
'xyz@gmail.com'
];
if (knownFakeEmails.includes(email.toLowerCase())) {
return { exists: false, reason: 'This email address is known to be fake or temporary' };
// Simulate random validation failures for demonstration (10% chance)
// In production, this would be actual email verification
if (Math.random() < 0.1) {
return { exists: false, reason: 'This Gmail address does not exist or is inactive' };
// If all checks pass, consider it valid
return { exists: true, reason: 'Email appears to be valid' };
} catch (error) {
console.error('Email validation error:', error);
// If validation service fails, allow the email (don't block user)
return { exists: true, reason: 'Validation service unavailable, proceeding' };
// Check if user is logged in on page load
window.addEventListener('load', function() {
const savedUser = localStorage.getItem('currentUser');
if (savedUser) {
currentUser = JSON.parse(savedUser);
showMainWebsite();
// Initialize scroll animations
initScrollAnimations();
initScrollProgress();
animateCounters();
});
// Scroll animations
function initScrollAnimations() {
const observerOptions = {
threshold: 0.1,
rootMargin: '0px 0px -50px 0px'
};
const observer = new IntersectionObserver((entries) => {
entries.forEach(entry => {
if (entry.isIntersecting) {
entry.target.classList.add('visible');
});
}, observerOptions);
// Observe all animated elements
document.querySelectorAll('.fade-in, .slide-in-left, .slide-in-right, .scale-in').forEach(el => {
observer.observe(el);
});
// Scroll progress indicator
function initScrollProgress() {
window.addEventListener('scroll', () => {
const scrolled = (window.scrollY / (document.documentElement.scrollHeight -
window.innerHeight)) * 100;
document.getElementById('scrollIndicator').style.width = scrolled + '%';
// Show/hide quick actions based on scroll
const quickActions = document.getElementById('quickActions');
if (window.scrollY > 300) {
quickActions.style.display = 'flex';
} else {
quickActions.style.display = 'none';
});
// Animate counters
function animateCounters() {
const counters = document.querySelectorAll('.counter');
const speed = 200;
counters.forEach(counter => {
const updateCount = () => {
const target = +counter.getAttribute('data-target') || +counter.innerText.replace(/,/g, '');
const count = +counter.innerText.replace(/,/g, '');
const inc = target / speed;
if (count < target) {
counter.innerText = Math.ceil(count + inc).toLocaleString();
setTimeout(updateCount, 1);
} else {
counter.innerText = target.toLocaleString();
};
updateCount();
});
// Property filtering
function filterProperties(category) {
const properties = document.querySelectorAll('[data-category]');
const filterBtns = document.querySelectorAll('.filter-btn');
// Update button states
filterBtns.forEach(btn => {
btn.classList.remove('active', 'bg-blue-600', 'text-white');
btn.classList.add('bg-gray-200', 'text-gray-700');
});
event.target.classList.add('active', 'bg-blue-600', 'text-white');
event.target.classList.remove('bg-gray-200', 'text-gray-700');
// Filter properties with animation
properties.forEach((property, index) => {
property.style.display = 'none';
property.classList.remove('visible');
setTimeout(() => {
if (category === 'all' || property.dataset.category === category) {
property.style.display = 'block';
setTimeout(() => {
property.classList.add('visible');
}, index * 100);
}, 100);
});
}
// Scroll to top
function scrollToTop() {
window.scrollTo({
top: 0,
behavior: 'smooth'
});
// Authentication functions
function showLoginTab() {
document.getElementById('loginForm').classList.remove('hidden');
document.getElementById('registerForm').classList.add('hidden');
document.getElementById('loginTab').classList.add('text-blue-600', 'border-b-2', 'border-blue-
600');
document.getElementById('loginTab').classList.remove('text-gray-500');
document.getElementById('registerTab').classList.add('text-gray-500');
document.getElementById('registerTab').classList.remove('text-blue-600', 'border-b-2', 'border-
blue-600');
function showRegisterTab() {
document.getElementById('registerForm').classList.remove('hidden');
document.getElementById('loginForm').classList.add('hidden');
document.getElementById('registerTab').classList.add('text-blue-600', 'border-b-2', 'border-blue-
600');
document.getElementById('registerTab').classList.remove('text-gray-500');
document.getElementById('loginTab').classList.add('text-gray-500');
document.getElementById('loginTab').classList.remove('text-blue-600', 'border-b-2', 'border-blue-
600');
function showMainWebsite() {
document.getElementById('authPage').classList.add('hidden');
document.getElementById('mainWebsite').classList.remove('hidden');
document.getElementById('navWelcomeUser').textContent = `Welcome, ${currentUser.name}`;
function showDashboard() {
document.getElementById('mainWebsite').classList.add('hidden');
document.getElementById('clientDashboard').classList.remove('hidden');
document.getElementById('welcomeUser').textContent = `Welcome, ${currentUser.name}`;
loadUserListings(currentUser.email);
loadUserRequests(currentUser.email);
function backToWebsite() {
document.getElementById('clientDashboard').classList.add('hidden');
document.getElementById('mainWebsite').classList.remove('hidden');
function logout() {
localStorage.removeItem('currentUser');
currentUser = null;
document.getElementById('mainWebsite').classList.add('hidden');
document.getElementById('clientDashboard').classList.add('hidden');
document.getElementById('authPage').classList.remove('hidden');
// Reset forms
document.getElementById('loginForm').reset();
document.getElementById('registerForm').reset();
showLoginTab();
function loadUserListings(userEmail) {
const listings = JSON.parse(localStorage.getItem('propertyListings') || '[]');
const userListings = listings.filter(listing => listing.email === userEmail);
const container = document.getElementById('userListings');
if (userListings.length === 0) {
container.innerHTML = '<p class="text-gray-500">No properties listed yet.</p>';
} else {
container.innerHTML = userListings.map(listing => `
<div class="border border-gray-200 rounded-lg p-4">
<h4 class="font-semibold text-gray-900">${listing.propertyType}</h4>
<p class="text-sm text-gray-600">Location: ${listing.location}</p>
<p class="text-sm text-gray-600">Price: ${parseInt(listing.price).toLocaleString()} ETB</p>
<p class="text-xs text-gray-500">Listed: ${new Date(listing.date).toLocaleDateString()}</p>
<span class="inline-block mt-2 px-2 py-1 bg-yellow-100 text-yellow-800 text-xs rounded-
full">${listing.status}</span>
</div>
`).join('');
function loadUserRequests(userEmail) {
const requests = JSON.parse(localStorage.getItem('propertyRequests') || '[]');
const userRequests = requests.filter(request => request.customerEmail === userEmail);
const container = document.getElementById('userRequests');
if (userRequests.length === 0) {
container.innerHTML = '<p class="text-gray-500">No property requests yet.</p>';
} else {
container.innerHTML = userRequests.map(request => `
<div class="border border-gray-200 rounded-lg p-4">
<h4 class="font-semibold text-gray-900">${request.propertyName}</h4>
<p class="text-sm text-gray-600">Status: ${request.status}</p>
${request.paymentProofFile ? `<p class="text-xs text-green-600">✓ Payment proof
uploaded: ${request.paymentProofFile}</p>` : ''}
<p class="text-xs text-gray-500">Requested: ${new
Date(request.date).toLocaleDateString()}</p>
<span class="inline-block mt-2 px-2 py-1 ${request.status === 'Payment Verification
Pending' ? 'bg-yellow-100 text-yellow-800' : 'bg-blue-100 text-blue-800'} text-xs rounded-
full">${request.status}</span>
</div>
`).join('');
}
}
// Navigation functions with smooth scrolling
function scrollToProperties() {
document.getElementById('properties').scrollIntoView({
behavior: 'smooth',
block: 'start'
});
function showContactForm() {
document.getElementById('contact').scrollIntoView({
behavior: 'smooth',
block: 'start'
});
// Add smooth scrolling for all navigation links
document.addEventListener('DOMContentLoaded', function() {
// Handle navigation menu clicks
document.querySelectorAll('nav a[href^="#"]').forEach(anchor => {
anchor.addEventListener('click', function (e) {
e.preventDefault();
const targetId = this.getAttribute('href').substring(1);
const targetElement = document.getElementById(targetId);
if (targetElement) {
targetElement.scrollIntoView({
behavior: 'smooth',
block: 'start'
});
});
});
// Enable smooth scrolling for the entire page
document.documentElement.style.scrollBehavior = 'smooth';
});
// Modal functions
function showSellModal() {
document.getElementById('sellModal').classList.remove('hidden');
document.getElementById('sellModal').classList.add('flex');
function requestProperty(propertyName, price) {
document.getElementById('propertyDetails').innerHTML = `
<strong>${propertyName}</strong><br>
Price: ${price}
`;
document.getElementById('propertyModal').classList.remove('hidden');
document.getElementById('propertyModal').classList.add('flex');
function sellSimilarProperty(propertyType) {
const sellModal = document.getElementById('sellModal');
const propertyTypeSelect = sellModal.querySelector('select');
const typeMapping = {
'Luxury Villa': 'Villa',
'Modern Apartment': 'Apartment/Condo',
'Commercial Building': 'Commercial Building',
'Commercial Land': 'Land/Plot',
'Family House': 'Residential House',
'Premium Luxury Vehicle': 'Luxury Vehicle'
};
if (propertyType === 'Premium Luxury Vehicle') {
const existingOption = Array.from(propertyTypeSelect.options).find(option => option.value ===
'Luxury Vehicle');
if (!existingOption) {
const newOption = document.createElement('option');
newOption.value = 'Luxury Vehicle';
newOption.textContent = 'Luxury Vehicle';
propertyTypeSelect.appendChild(newOption);
}
propertyTypeSelect.value = typeMapping[propertyType] || propertyType;
sellModal.classList.remove('hidden');
sellModal.classList.add('flex');
function closeModal(modalId) {
document.getElementById(modalId).classList.add('hidden');
document.getElementById(modalId).classList.remove('flex');
// Form submission handlers
document.getElementById('loginForm').addEventListener('submit', async function(e) {
e.preventDefault();
const formData = new FormData(this);
const email = formData.get('loginEmail');
const password = formData.get('loginPassword');
// Show loading state
const submitBtn = this.querySelector('button[type="submit"]');
const originalText = submitBtn.textContent;
submitBtn.textContent = 'Verifying Email...';
submitBtn.disabled = true;
try {
// Validate email format first
if (!isValidEmail(email)) {
throw new Error('Please enter a valid email address.');
// Check if Gmail exists (for Gmail addresses only)
if (email.toLowerCase().includes('@gmail.com')) {
const validation = await checkGmailExists(email);
if (!validation.exists) {
throw new Error(`Email validation failed: ${validation.reason}`);
// Check user credentials
const users = JSON.parse(localStorage.getItem('registeredUsers') || '[]');
const user = users.find(u => u.email === email && u.password === password);
if (user) {
currentUser = user;
localStorage.setItem('currentUser', JSON.stringify(user));
showMainWebsite();
} else {
throw new Error('Invalid email or password. Please try again or register a new account.');
}
} catch (error) {
alert(error.message);
} finally {
// Reset button state
submitBtn.textContent = originalText;
submitBtn.disabled = false;
});
document.getElementById('registerForm').addEventListener('submit', async function(e) {
e.preventDefault();
const formData = new FormData(this);
const userData = {
name: formData.get('registerName'),
email: formData.get('registerEmail'),
phone: formData.get('registerPhone'),
password: formData.get('registerPassword'),
registeredDate: new Date().toISOString()
};
// Show loading state
const submitBtn = this.querySelector('button[type="submit"]');
const originalText = submitBtn.textContent;
submitBtn.textContent = 'Verifying Email...';
submitBtn.disabled = true;
try {
// Validate email format first
if (!isValidEmail(userData.email)) {
throw new Error('Please enter a valid email address.');
// Check if Gmail exists (for Gmail addresses only)
if (userData.email.toLowerCase().includes('@gmail.com')) {
const validation = await checkGmailExists(userData.email);
if (!validation.exists) {
throw new Error(`Gmail validation failed: ${validation.reason}`);
// Check if account already exists
const users = JSON.parse(localStorage.getItem('registeredUsers') || '[]');
if (users.find(u => u.email === userData.email)) {
throw new Error('An account with this email already exists. Please login instead.');
// Create account
users.push(userData);
localStorage.setItem('registeredUsers', JSON.stringify(users));
currentUser = userData;
localStorage.setItem('currentUser', JSON.stringify(userData));
alert('Account created successfully! Welcome to Prime Properties.');
showMainWebsite();
} catch (error) {
alert(error.message);
} finally {
// Reset button state
submitBtn.textContent = originalText;
submitBtn.disabled = false;
});
document.getElementById('sellForm').addEventListener('submit', function(e) {
e.preventDefault();
const formData = new FormData(this);
const listingData = {
ownerName: formData.get('ownerName'),
phone: formData.get('phone'),
email: formData.get('email'),
propertyType: formData.get('propertyType'),
location: formData.get('location'),
price: formData.get('price'),
videoFile: formData.get('video').name,
date: new Date().toISOString(),
status: 'Pending Review'
};
const listings = JSON.parse(localStorage.getItem('propertyListings') || '[]');
listings.push(listingData);
localStorage.setItem('propertyListings', JSON.stringify(listings));
alert('Property listing submitted successfully! Our team will contact you within 24 hours for a free
property evaluation and to discuss our competitive 1.6% commission structure.');
closeModal('sellModal');
this.reset();
});
// Show payment section after client details
function showPaymentSection() {
const form = document.getElementById('propertyRequestForm');
const formData = new FormData(form);
// Validate required fields first
const customerName = formData.get('customerName');
const customerPhone = formData.get('customerPhone');
const customerEmail = formData.get('customerEmail');
if (!customerName || !customerPhone || !customerEmail) {
alert('Please fill in all your details before proceeding to payment.');
return;
// Validate email format
if (!isValidEmail(customerEmail)) {
alert('Please enter a valid email address.');
return;
// Show payment section and hide initial submit button
document.getElementById('paymentSection').classList.remove('hidden');
document.getElementById('initialSubmit').classList.add('hidden');
document.getElementById('finalSubmit').classList.remove('hidden');
// Scroll to payment section
document.getElementById('paymentSection').scrollIntoView({
behavior: 'smooth',
block: 'start'
});
// Payment method selection function
function selectPaymentMethod(method) {
// Remove selected class from all options
document.querySelectorAll('.payment-option').forEach(option => {
option.classList.remove('selected');
});
// Add selected class to clicked option
document.querySelector(`[data-method="${method}"]`).classList.add('selected');
// Show selected payment details
const detailsSection = document.getElementById('selectedPaymentDetails');
const detailsContent = document.getElementById('paymentDetailsContent');
let paymentDetails = '';
switch(method) {
case 'bank':
paymentDetails = `
<div class="space-y-3">
<div class="text-2xl">📸</div>
<h6 class="text-xl font-bold text-blue-900">Bank Transfer Details</h6>
<div class="bg-white p-4 rounded-lg border-2 border-blue-300">
<div class="space-y-4 text-sm">
<div>
<p class="font-semibold text-gray-700">Bank Name:</p>
<p class="text-lg font-bold text-blue-800">Commercial Bank of Ethiopia</p>
</div>
<div>
<p class="font-semibold text-gray-700">Account Number:</p>
<p class="text-xl font-mono font-bold text-blue-800">1234567890</p>
</div>
<div>
<p class="font-semibold text-gray-700">Account Name:</p>
<p class="text-lg font-bold text-blue-800">Prime Properties Ethiopia</p>
</div>
<div>
<p class="font-semibold text-gray-700">Amount:</p>
<p class="text-xl font-bold text-red-600">5,000 ETB</p>
</div>
</div>
</div>
</div>
`;
break;
case 'telebirr':
paymentDetails = `
<div class="space-y-3">
<div class="text-2xl">📸</div>
<h6 class="text-xl font-bold text-orange-900">Telebirr Payment Details</h6>
<div class="bg-white p-4 rounded-lg border-2 border-orange-300">
<div class="space-y-4 text-sm">
<div>
<p class="font-semibold text-gray-700">Service:</p>
<p class="text-lg font-bold text-orange-800">Telebirr Mobile Payment</p>
</div>
<div>
<p class="font-semibold text-gray-700">Phone Number:</p>
<p class="text-xl font-mono font-bold text-orange-800">+251-911-123456</p>
</div>
<div>
<p class="font-semibold text-gray-700">Recipient Name:</p>
<p class="text-lg font-bold text-orange-800">Prime Properties</p>
</div>
<div>
<p class="font-semibold text-gray-700">Amount:</p>
<p class="text-xl font-bold text-red-600">5,000 ETB</p>
</div>
</div>
</div>
</div>
`;
break;
case 'cbebirr':
paymentDetails = `
<div class="space-y-3">
<div class="text-2xl">📸</div>
<h6 class="text-xl font-bold text-blue-900">CBE Birr Payment Details</h6>
<div class="bg-white p-4 rounded-lg border-2 border-blue-300">
<div class="space-y-4 text-sm">
<div>
<p class="font-semibold text-gray-700">Service:</p>
<p class="text-lg font-bold text-blue-800">CBE Birr Digital Wallet</p>
</div>
<div>
<p class="font-semibold text-gray-700">Phone Number:</p>
<p class="text-xl font-mono font-bold text-blue-800">+251-911-123456</p>
</div>
<div>
<p class="font-semibold text-gray-700">Recipient Name:</p>
<p class="text-lg font-bold text-blue-800">Prime Properties</p>
</div>
<div>
<p class="font-semibold text-gray-700">Amount:</p>
<p class="text-xl font-bold text-red-600">5,000 ETB</p>
</div>
</div>
</div>
</div>
`;
break;
case 'mbirr':
paymentDetails = `
<div class="space-y-3">
<div class="text-2xl">📸</div>
<h6 class="text-xl font-bold text-green-900">M-Birr Payment Details</h6>
<div class="bg-white p-4 rounded-lg border-2 border-green-300">
<div class="space-y-4 text-sm">
<div>
<p class="font-semibold text-gray-700">Service:</p>
<p class="text-lg font-bold text-green-800">M-Birr Mobile Money</p>
</div>
<div>
<p class="font-semibold text-gray-700">Phone Number:</p>
<p class="text-xl font-mono font-bold text-green-800">+251-911-123456</p>
</div>
<div>
<p class="font-semibold text-gray-700">Recipient Name:</p>
<p class="text-lg font-bold text-green-800">Prime Properties</p>
</div>
<div>
<p class="font-semibold text-gray-700">Amount:</p>
<p class="text-xl font-bold text-red-600">5,000 ETB</p>
</div>
</div>
</div>
</div>
`;
break;
}
detailsContent.innerHTML = paymentDetails;
detailsSection.classList.remove('hidden');
// Scroll to selected details
setTimeout(() => {
detailsSection.scrollIntoView({
behavior: 'smooth',
block: 'center'
});
}, 300);
// Image preview functionality
document.addEventListener('change', function(e) {
if (e.target.name === 'paymentProof') {
const file = e.target.files[0];
const preview = document.getElementById('imagePreview');
const previewImg = document.getElementById('previewImg');
if (file) {
// Validate file type
if (!file.type.startsWith('image/')) {
alert('Please upload an image file (JPG, PNG, etc.)');
e.target.value = '';
preview.classList.add('hidden');
return;
// Validate file size (max 5MB)
if (file.size > 5 * 1024 * 1024) {
alert('File is too large. Please upload an image smaller than 5MB.');
e.target.value = '';
preview.classList.add('hidden');
return;
// Show preview
const reader = new FileReader();
reader.onload = function(e) {
previewImg.src = e.target.result;
preview.classList.remove('hidden');
};
reader.readAsDataURL(file);
} else {
preview.classList.add('hidden');
});
document.getElementById('propertyRequestForm').addEventListener('submit', function(e) {
e.preventDefault();
const formData = new FormData(this);
const propertyName =
document.getElementById('propertyDetails').querySelector('strong').textContent;
const paymentProof = formData.get('paymentProof');
// Validate payment proof file
if (!paymentProof || paymentProof.size === 0) {
alert('Please upload a screenshot of your payment proof before submitting.');
return;
// Check file size (max 5MB)
if (paymentProof.size > 5 * 1024 * 1024) {
alert('Payment proof file is too large. Please upload an image smaller than 5MB.');
return;
// Check file type
if (!paymentProof.type.startsWith('image/')) {
alert('Please upload an image file (JPG, PNG, etc.) for payment proof.');
return;
}
const requestData = {
customerName: formData.get('customerName'),
customerPhone: formData.get('customerPhone'),
customerEmail: formData.get('customerEmail'),
propertyName: propertyName,
paymentProofFile: paymentProof.name,
paymentProofSize: paymentProof.size,
date: new Date().toISOString(),
status: 'Payment Verification Pending'
};
const requests = JSON.parse(localStorage.getItem('propertyRequests') || '[]');
requests.push(requestData);
localStorage.setItem('propertyRequests', JSON.stringify(requests));
let requestCount = document.getElementById('requestCount');
let currentCount = parseInt(requestCount.textContent.replace(',', ''));
requestCount.textContent = (currentCount + 1).toLocaleString();
alert('Property request submitted successfully with payment proof! Our team will verify your
payment within 24 hours and then contact you to arrange property viewing. You will receive a
confirmation call once payment is verified.');
closeModal('propertyModal');
this.reset();
// Reset form state - hide payment section and preview
document.getElementById('paymentSection').classList.add('hidden');
document.getElementById('initialSubmit').classList.remove('hidden');
document.getElementById('finalSubmit').classList.add('hidden');
document.getElementById('imagePreview').classList.add('hidden');
});
document.getElementById('contactForm').addEventListener('submit', function(e) {
e.preventDefault();
let customerCount = document.getElementById('customerCount');
let currentCount = parseInt(customerCount.textContent.replace(',', ''));
customerCount.textContent = (currentCount + 1).toLocaleString();
alert('Thank you for your message! We will contact you within 24 hours to discuss your property
needs.');
this.reset();
});
// Close modals when clicking outside
window.addEventListener('click', function(e) {
if (e.target.classList.contains('bg-black')) {
closeModal('propertyModal');
closeModal('sellModal');
});
</script>
<script>(function(){function c(){var b=a.contentDocument||a.contentWindow.document;if(b){var
d=b.createElement('script');d.innerHTML="window.__CF$cv$params={r:'973cd8b6d04ed981',t:'MTc1NT
k3NTU2MS4wMDAwMDA='};var a=document.createElement('script');a.nonce='';a.src='/cdn-
cgi/challenge-
platform/scripts/jsd/main.js';document.getElementsByTagName('head')[0].appendChild(a);";b.getEleme
ntsByTagName('head')[0].appendChild(d)}}if(document.body){var
a=document.createElement('iframe');a.height=1;a.width=1;a.style.position='absolute';a.style.top=0;a.st
yle.left=0;a.style.border='none';a.style.visibility='hidden';document.body.appendChild(a);if('loading'!==d
ocument.readyState)c();else
if(window.addEventListener)document.addEventListener('DOMContentLoaded',c);else{var
e=document.onreadystatechange||function(){};document.onreadystatechange=function(b){e(b);'loadin
g'!==document.readyState&&(document.onreadystatechange=e,c())}}}})();</script></body>
</html>