Loading property details...
';
getPropertyHtml(absoluteUrl)
.then(function(text){
var doc=new DOMParser().parseFromString(text,'text/html');
renderProperty(absoluteUrl,doc,fallback);
})
.catch(function(){
delete propertyFetchCache[absoluteUrl];
renderError(absoluteUrl,fallback);
});
}
function init(){
if(!document.body) return;
if(document.body.getAttribute('data-ezman-card-popup-v126')==='1') return;
document.body.setAttribute('data-ezman-card-popup-v126','1');
document.addEventListener('pointerover',function(e){
var a=e.target.closest ? e.target.closest('.blog-posts.hfeed .post-summary a[href]') : null;
if(!a) return;
var href=a.getAttribute('href')||'';
if(!href || href.charAt(0)==='#' || /^javascript:/i.test(href)) return;
try{
var u=abs(href);
if(new URL(u).origin===window.location.origin) prefetchProperty(u);
}catch(err){}
},{passive:true});
document.addEventListener('touchstart',function(e){
var a=e.target.closest ? e.target.closest('.blog-posts.hfeed .post-summary a[href]') : null;
if(!a) return;
var href=a.getAttribute('href')||'';
if(!href || href.charAt(0)==='#' || /^javascript:/i.test(href)) return;
try{
var u=abs(href);
if(new URL(u).origin===window.location.origin) prefetchProperty(u);
}catch(err){}
},{passive:true});
document.addEventListener('click',function(e){
var galleryLink=e.target.closest ? e.target.closest('.ezman-card-gallery-item') : null;
if(galleryLink){
e.preventDefault();
e.stopPropagation();
var gallery=galleryLink.closest('.ezman-card-gallery');
var links=gallery ? gallery.querySelectorAll('.ezman-card-gallery-item') : [];
galleryState.items=[];
for(var gi=0;giDouble Storey Terrace, Bandar Tasik Puteri, Rawang
function getPropertyHtml(url){
url=abs(url);
if(propertyFetchCache[url]) return propertyFetchCache[url];
propertyFetchCache[url]=fetch(url,{credentials:'same-origin',cache:'default',redirect:'follow'})
.then(function(r){if(!r.ok) throw new Error('HTTP '+r.status);return r.text();});
return propertyFetchCache[url];
}
function prefetchProperty(url){
url=abs(url);
if(!url || propertyFetchCache[url]) return;
getPropertyHtml(url).catch(function(){
delete propertyFetchCache[url];
});
}
function loadProperty(url,fallback){
/* V128 - update floating WhatsApp immediately to the card being opened. */
if(window.ezmanSetWhatsAppProperty){
window.ezmanSetWhatsAppProperty(fallback.title||'',fallback.location||'',fallback.price||'');
}
var absoluteUrl=abs(url);
var modal=openModal(), box=modal.querySelector('#ezmanCardModalContent');
box.innerHTML='