public static int CalcEndDate(GPLocationProvider m_earth, GPGregorianTime vcStart, GPVedicTime vaStart, out GPGregorianTime vcEnd, out GPVedicTime vaEnd, int nType, int nCount) { vcEnd = new GPGregorianTime(vcStart); vaEnd = new GPVedicTime(vaStart); switch (nType) { case 1: //vcEnd = vcStart; if (nCount > 30240) { nCount = 30240; } vcEnd.AddDays(nCount); VCTIMEtoVATIME(vcEnd, out vaEnd, m_earth); break; case 2: //vcEnd = vcStart; if (nCount > 4320) { nCount = 4320; } vcEnd.AddDays(nCount * 7); VCTIMEtoVATIME(vcEnd, out vaEnd, m_earth); break; case 3: //vcEnd = vcStart; if (nCount > 1080) { nCount = 1080; } vcEnd.AddMonths(nCount); VCTIMEtoVATIME(vcEnd, out vaEnd, m_earth); break; case 4: //vcEnd = vcStart; if (nCount > 90) { nCount = 90; } vcEnd.AddYears(nCount); VCTIMEtoVATIME(vcEnd, out vaEnd, m_earth); break; case 5: //vaEnd = vaStart; if (nCount > 30240) { nCount = 30240; } vaEnd.tithi += nCount; while (vaEnd.tithi >= 30) { vaEnd.tithi -= 30; vaEnd.masa++; } while (vaEnd.masa >= 12) { vaEnd.masa -= 12; vaEnd.gyear++; } VATIMEtoVCTIME(vaEnd, out vcEnd, m_earth); break; case 6: //vaEnd = vaStart; if (nCount > 1080) { nCount = 1080; } vaEnd.masa = GPAppHelper.MasaToComboMasa(vaEnd.masa); if (vaEnd.masa == GPMasa.ADHIKA_MASA) { vcEnd = new GPGregorianTime(vcStart); vcEnd.AddMonths(nCount); VCTIMEtoVATIME(vcEnd, out vaEnd, m_earth); vaEnd.tithi = vaStart.tithi; VATIMEtoVCTIME(vaEnd, out vcEnd, m_earth); } else { vaEnd.masa += nCount; while (vaEnd.masa >= 12) { vaEnd.masa -= 12; vaEnd.gyear++; } vaEnd.masa = GPAppHelper.ComboMasaToMasa(vaEnd.masa); VATIMEtoVCTIME(vaEnd, out vcEnd, m_earth); } break; case 7: //vaEnd = vaStart; if (nCount > 90) { nCount = 90; } vaEnd.gyear += nCount; VATIMEtoVCTIME(vaEnd, out vcEnd, m_earth); break; } return(1); }