Mahadasha + Antardasha (120 Years)
| Start | End | Mahadasha | Antardasha |
|---|
const order = ["Saturn","Rahu","Ketu","Jupiter","Sun","Moon","Venus","Mars","Mercury"];
const adMap = { Saturn:[["Rahu",24],["Mercury",24],["Saturn",24]], Rahu:[["Mars",24],["Ketu",24],["Rahu",24]], Ketu:[["Saturn",12],["Rahu",12],["Ketu",12]], Jupiter:[["Ketu",24],["Jupiter",24],["Sun",24]], Sun:[["Sun",8],["Moon",8],["Mars",8]], Moon:[["Jupiter",4],["Sun",4],["Moon",4]], Venus:[["Mars",12],["Venus",12],["Mercury",12]], Mars:[["Mars",24],["Saturn",24],["Venus",24]], Mercury:[["Moon",8],["Mars",8],["Jupiter",8]] };
function formatDate(d){ let day = String(d.getDate()).padStart(2,'0'); let month = String(d.getMonth()+1).padStart(2,'0'); let year = d.getFullYear(); return `${day}/${month}/${year}`; }
function addMonthsSafe(date, months){ let d = new Date(date); let day = d.getDate();
d.setMonth(d.getMonth() + months);
if(d.getDate() !== day){ d.setDate(0); }
return d; }
function getPlanet(h,m,ampm){
h=parseInt(h); m=parseInt(m);
if(ampm==="PM" && h!==12) h+=12; if(ampm==="AM" && h===12) h=0;
let t = h*60 + m;
if(t>=361 && t<=480) return "Jupiter"; if(t>=481 && t<=600) return "Sun"; if(t>=601 && t<=660) return "Moon"; if(t>=661 && t<=780) return "Mercury"; if(t>=781 && t<=900) return "Mars"; if(t>=901 && t<=1020) return "Venus"; if(t>=1021 && t<=1140) return "Rahu"; if(t>=241 && t<=360) return "Ketu"; return "Saturn"; } function calculate(){ let dob = document.getElementById("dob").value; let h = document.getElementById("h").value; let m = document.getElementById("m").value; let ampm = document.getElementById("ampm").value; if(!dob) return alert("DOB required"); let start = new Date(dob); let cur = new Date(start); let planet = getPlanet(h,m,ampm); document.getElementById("out").innerText = "Starting Mahadasha: " + planet; let index = order.indexOf(planet); let endLimit = new Date(start); endLimit.setFullYear(endLimit.getFullYear() + 120); let tb = document.getElementById("tb"); tb.innerHTML = ""; let rowCount = 0; while(cur < endLimit){ let md = order[index]; for(let x of adMap[md]){ let next = addMonthsSafe(cur, x[1]); if(next > endLimit) next = endLimit;
let displayStart = new Date(cur); let displayEnd = new Date(next);
displayEnd.setDate(displayEnd.getDate() - 1);
let group = Math.floor(rowCount / 3) % 2; let className = group === 0 ? "group1" : "group2";
tb.insertAdjacentHTML("beforeend", `
` );
rowCount++;
cur = next;
if(cur >= endLimit) break; }
index = (index + 1) % order.length; }
}