0% found this document useful (0 votes)
37 views80 pages

Doctype HTML

Uploaded by

Kaleb Mulatu
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
37 views80 pages

Doctype HTML

Uploaded by

Kaleb Mulatu
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

<!

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>[email protected]</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">&copy; 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 = [

'[email protected]',

'[email protected]',

'[email protected]',

'[email protected]',

'[email protected]',

'[email protected]',

'[email protected]',

'[email protected]'
];

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>

You might also like