ఎలక్షన్ కౌంటింగ్ లైవ్
ELECTION RESULTS
VIP ప్రముఖుల ట్రెండ్స్
const API_PROXY_URL="https://yourwebsite.com/get_eci_data.php";
const USE_DEMO_DATA=!0;
const statesConfig=[{id:'ts',name:'తెలంగాణ (119)',total:119,parties:[{id:'ts_inc',name:'INC',color:'#4caf50'},{id:'ts_brs',name:'BRS',color:'#e91e63'},{id:'ts_bjp',name:'BJP',color:'#ff9800'}]},{id:'ap',name:'ఆంధ్రప్రదేశ్ (175)',total:175,parties:[{id:'ap_tdp',name:'TDP+',color:'#ffeb3b'},{id:'ap_ysrcp',name:'YSRCP',color:'#1976d2'},{id:'ap_inc',name:'INC',color:'#4caf50'}]},{id:'mh',name:'మహారాష్ట్ర (288)',total:288,parties:[{id:'mh_nda',name:'NDA',color:'#ff9800'},{id:'mh_mva',name:'MVA',color:'#f44336'},{id:'mh_oth',name:'#9e9e9e'}]}];
const vipConfig=[{id:'v_naidu',name:'చంద్రబాబు',const:'కుప్పం'},{id:'v_jagan',name:'జగన్',const:'పులివెందుల'},{id:'v_revanth',name:'రేవంత్ రెడ్డి',const:'కొడంగల్'},{id:'v_kcr',name:'కెసిఆర్',const:'గజ్వేల్'}];
function buildUI(){const stateCont=document.getElementById('states-container');statesConfig.forEach(state=>{let pHTML='';state.parties.forEach(p=>{pHTML+=`
`});stateCont.innerHTML+=`
`});
const vipCont=document.getElementById('vip-container');vipConfig.forEach(v=>{vipCont.innerHTML+=`
`})}
async function fetchECIData(){try{let eciData=null;
if(USE_DEMO_DATA){eciData=generateDemoData();document.getElementById('api-status-text').innerText="🟢 Running in Demo Mode"}else{const response=await fetch(API_PROXY_URL);eciData=await response.json();document.getElementById('api-status-text').innerText="🟢 Live Data Synced from ECI at "+new Date().toLocaleTimeString()}
updateUI(eciData);
}catch(error){console.error("API Fetch Error:",error);document.getElementById('api-status-text').innerText="🔴 Connection Error! Retrying...";document.getElementById('api-status-text').style.color="red"}}
function updateUI(data){statesConfig.forEach(state=>{state.parties.forEach(p=>{let seats=data.seats[p.id]||0;document.getElementById(`score_${p.id}`).innerText=seats;let percentage=(seats/state.total)*100;document.getElementById(`bar_${p.id}`).style.width=`${percentage}%`})});
vipConfig.forEach(v=>{let vData=data.vips[v.id]||{margin:0,status:'trailing'};let card=document.getElementById(`card_${v.id}`);let face=document.getElementById(`face_${v.id}`);
document.getElementById(`mar_${v.id}`).innerText=vData.margin.toLocaleString();
if(vData.status==='leading'){card.className="vip-card is-leading";document.getElementById(`stat_${v.id}`).innerText="ఆధిక్యం ⬆";document.getElementById(`stat_${v.id}`).style.color="#4caf50";face.innerHTML="😎"}else{card.className="vip-card is-trailing";document.getElementById(`stat_${v.id}`).innerText="వెనుకంజ ⬇";document.getElementById(`stat_${v.id}`).style.color="#f44336";face.innerHTML="😰"}})}
function generateDemoData(){return{seats:{ts_inc:Math.floor(Math.random()*60)+30,ts_brs:Math.floor(Math.random()*40)+10,ts_bjp:Math.floor(Math.random()*20),ap_tdp:Math.floor(Math.random()*100)+50,ap_ysrcp:Math.floor(Math.random()*50)+20,ap_inc:Math.floor(Math.random()*10),mh_nda:Math.floor(Math.random()*150)+80,mh_mva:Math.floor(Math.random()*100)+50,mh_oth:Math.floor(Math.random()*30)},vips:{v_naidu:{margin:Math.floor(Math.random()*30000),status:Math.random()>0.3?'leading':'trailing'},v_jagan:{margin:Math.floor(Math.random()*20000),status:Math.random()>0.5?'leading':'trailing'},v_revanth:{margin:Math.floor(Math.random()*25000),status:Math.random()>0.4?'leading':'trailing'},v_kcr:{margin:Math.floor(Math.random()*15000),status:Math.random()>0.6?'leading':'trailing'}}}}
function setupTimer(){let target=new Date();target.setDate(target.getDate()+1);target.setHours(6,30,0,0);
let tInt=setInterval(()=>{let diff=target-new Date().getTime();if(diff<=0){clearInterval(tInt);initDashboard();return} document.getElementById('t-hours').innerText=Math.floor((diff/(1000*60*60))%24).toString().padStart(2,'0');document.getElementById('t-mins').innerText=Math.floor((diff/(1000*60))%60).toString().padStart(2,'0');document.getElementById('t-secs').innerText=Math.floor((diff/1000)%60).toString().padStart(2,'0')},1000)} function initDashboard(){document.getElementById('countdown-container').style.display='none';document.getElementById('main-dashboard').style.display='block';buildUI();setInterval(()=>document.getElementById('clock').innerText=new Date().toLocaleTimeString('en-IN'),1000);
fetchECIData();setInterval(fetchECIData,15000)}
window.onload=setupTimer

