// JavaScript Document

var istwo = false;

function Initialize()
{
  if ((navigator.appName == "Netscape") &&
      (navigator.appVersion.substring(0,1) == "2"))
  {
      alert("Requires browser later than Netscape 2.X\nValues displayed in this browser may be incorrect.");
      istwo = true;
  }

  if (self != top)
  {
      top.location.href = self.location.href;
  }

  SetToday(document.ThisForm);
}

function SetToday(form)
{
  var now   = new Date();
  var day   = now.getDate();
  var month = now.getMonth()+1;
  var year  = now.getYear();

  if (year < 199)
  {
    year += 1900;
  }

  if (year < 2000)
  {
    year += 100;
  }

  form.G2_MonthList.selectedIndex = month-1;
  form.G2_DayList.selectedIndex = day-1;
  if (istwo == true)
  {
    form.G2_MonthList.selectedIndex = 0;
    form.G2_DayList.selectedIndex = 0;
  }
  form.G2_YearBox.value = year;
  form.G2_ADBC.selectedIndex = 0;

  form.JDN.value = "not set";

  UpdateGregorian(form);
}

function incJDN(form)
{
  form.JDN.value = (form.JDN.value / 1) + 1;
  UpdateJDN(form);
}

function decJDN(form)
{
  form.JDN.value -= 1;
  UpdateJDN(form);
}

function JDN1(form)
{
  form.JDN.value = 1;
  UpdateJDN(form);
}

function JDN1721424(form)
{
  form.JDN.value = 1721424;
  UpdateJDN(form);
}

function JDN1732110(form)
{
  form.JDN.value = 1732110;
  UpdateJDN(form);
}

function crucifixion(form)
{
  form.JDN.value = 1732465;
  UpdateJDN(form);
}

function JDN1733204(form)
{
  form.JDN.value = 1733204;
  UpdateJDN(form);
}

//////////////////////////////////

function UpdateCA(form)
{
  var cycle = 1;
  form.JDN.value = CalendarAToJDN(form.CA_DayList.selectedIndex+1,
  					              form.CA_SeasonList.selectedIndex+1,
                                  form.CA_YearList.selectedIndex+1,
                                  form.CA_StageList.selectedIndex+1,
                                  form.CA_GenerationList.selectedIndex+1,
                                  form.CA_CollapseList.selectedIndex+1,
                                  cycle);
  UpdateJDN(form);
}

function UpdateGregorian(form)
{
  var day    = form.G2_DayList.selectedIndex+1;
  var month  = form.G2_MonthList.selectedIndex+1;
  var y      = trunc(form.G2_YearBox.value);
  var year   = form.G2_ADBC.selectedIndex ? 1-y : y;

  form.JDN.value = GregorianToJDN(year,month,day);
  UpdateJDN(form);
}


function UpdateJulian(form)
{
  var day    = form.J_DayList.selectedIndex+1;
  var month  = form.J_MonthList.selectedIndex+1;
  var y      = trunc(form.J_YearBox.value);
  var year   = form.J_ADBC.selectedIndex ? 1-y : y;

  form.JDN.value = JulianToJDN(year,month,day);
  UpdateJDN(form);
}

function UpdateHijra(form)
{
  var d    = form.I_DayList.selectedIndex+1;
  var m    = form.I_MonthList.selectedIndex+1;
  var y    = trunc(form.I_YearBox.value);

  form.JDN.value = HijraToJDN(d,m,y);

  UpdateJDN(form);
}

function UpdateFrench(form)
{
  var d    = form.FR_DayList.selectedIndex+1;
  var m    = form.FR_MonthList.selectedIndex+1;
  var y    = trunc(form.FR_YearBox.value);

  if (y < 1)
  {
    alert("Enter positive year")
  }
  else
  {
    form.JDN.value = FrenchToJDN(d,m,y);
  }

  UpdateJDN(form);
}

function UpdateHebrew(form)
{
  var d    = form.H_DayList.selectedIndex+1;
  var m    = form.H_MonthList.selectedIndex+1;
  var y    = trunc(form.H_YearBox.value);
  form.JDN.value = HebrewToJDN(d,m,y);
  UpdateJDN(form);
}

function UpdateDeeCecil(form)
{
  var day    = form.CD_DayList.selectedIndex+1;
  var month  = form.CD_MonthList.selectedIndex+1;
  var year   = trunc(form.CD_YearBox.value);

  form.JDN.value = CDToJDN(year,month,day,CECIL_DEE);
  UpdateJDN(form);
}

function UpdateDee(form)
{
  var day    = form.DEE_DayList.selectedIndex+1;
  var month  = form.DEE_MonthList.selectedIndex+1;
  var year   = trunc(form.DEE_YearBox.value);

  form.JDN.value = CDToJDN(year,month,day,DEE_ONLY);
  UpdateJDN(form);
}

function UpdateYerm(form)
{
  var d    = form.Y_Day.selectedIndex+1;
  var m    = form.Y_Month.selectedIndex+1;
  var y    = form.Y_Yerm.selectedIndex+1;
  var c    = trunc(form.Y_Cycle.value);
  form.JDN.value = YermToJDN(c,y,m,d);
  UpdateJDN(form);
}

function UpdateIndianCivil(form)
{
  var year        = trunc(form.IC_Year.value);
  var month       = form.IC_Month.selectedIndex+1;
  var day         = form.IC_Day.selectedIndex+1;
  form.JDN.value = IndianCivilToJDN(year,month,day);
  UpdateJDN(form);
}

function UpdateBahai(form)
{
  var kull_i_shay = trunc(form.B_Kull_I_Shay.value);
  var vahid       = trunc(form.B_Vahid.value);
  var year        = form.B_Year.selectedIndex+1;
  var month       = form.B_Month.selectedIndex+1;
  var day         = form.B_Day.selectedIndex+1;
  form.JDN.value = BahaiToJDN(kull_i_shay,vahid,year,month,day);
  UpdateJDN(form);
}

function UpdateMayan(form)
{
  form.JDN.value = MayanToJDN(form.M_Kin.selectedIndex,
                              form.M_Unial.selectedIndex,
                              form.M_Tun.selectedIndex,
                              form.M_Katun.selectedIndex,
                              form.M_Baktun.selectedIndex,
                              true);
  UpdateJDN(form);
}

function UpdateMayan2(form)
{
  form.JDN.value = MayanToJDN(form.M2_Kin.selectedIndex,
                              form.M2_Unial.selectedIndex,
                              form.M2_Tun.selectedIndex,
                              form.M2_Katun.selectedIndex,
                              form.M2_Baktun.selectedIndex,
                              false);
  UpdateJDN(form);
}

function UpdateJDN(form)
{
  jdn = trunc(form.JDN.value);
  form.JDN.value = jdn;

  var cadate = JDNToCalendarA(jdn);
  form.CA_CollapseList.selectedIndex   = cadate.collapse-1;
  form.CA_GenerationList.selectedIndex = cadate.generation-1;
  form.CA_StageList.selectedIndex      = cadate.stage-1;
  form.CA_YearList.selectedIndex       = cadate.year-1;
  form.CA_SeasonList.selectedIndex     = cadate.season-1;
  form.CA_DayList.selectedIndex        = cadate.day-1;
  form.CA_DayOfWeek.value              = cadate.dstr;
//  form.CA_DayOfWeek.value              = cadate.lcstr;

  var gdate = JDNToGregorian(jdn);
  form.G2_MonthList.selectedIndex  = gdate.month-1;
  form.G2_DayList.selectedIndex    = gdate.day-1;
  form.G2_DayOfWeek.value          = gdate.dayStr;
  form.G2_YearBox.value  		   = (gdate.year < 1) ? (1-gdate.year) : gdate.year;
  form.G2_ADBC.selectedIndex 	   = (gdate.year < 1) ? 1 : 0;

  var jdate = JDNToJulian(jdn);
  form.J_MonthList.selectedIndex  = jdate.month-1;
  form.J_DayList.selectedIndex    = jdate.day-1;
  form.J_DayOfWeek.value          = jdate.dayStr;
  form.J_YearBox.value  		  = (jdate.year < 1) ? (1-jdate.year) : jdate.year;
  form.J_ADBC.selectedIndex 	  = (jdate.year < 1) ? 1 : 0;

  var cddate = JDNToCD(jdn,CECIL_DEE);
  form.CD_MonthList.selectedIndex  = cddate.month-1;
  form.CD_DayList.selectedIndex    = cddate.day-1;
  form.CD_DayOfWeek.value          = cddate.dayStr;
  form.CD_YearBox.value  		   = cddate.year;

  var deedate = JDNToCD(jdn,DEE_ONLY);
  form.DEE_MonthList.selectedIndex  = deedate.month-1;
  form.DEE_DayList.selectedIndex    = deedate.day-1;
  form.DEE_DayOfWeek.value          = deedate.dayStr;
  form.DEE_YearBox.value  		    = deedate.year;

  var idate = GregorianToIso8601(gdate.day,gdate.month,gdate.year);
  form.ISO_WeekList.value 		  = idate.wstr;
  form.ISO_DayList.value   		  = idate.d;
  form.ISO_YearBox.value          = idate.y;

  var pcdate = GregorianToPositivist(gdate.day,gdate.month,gdate.year);
  form.PC_MonthList.value 		  = pcdate.mstr;
  form.PC_DayList.value   		  = pcdate.d;
  form.PC_DayOfWeek.value         = pcdate.dstr;
  form.PC_Saint.value             = pcdate.sstr;
  form.PC_YearBox.value           = pcdate.y;

  var idate = GregorianToIFC(gdate.day,gdate.month,gdate.year);
  form.IFC_MonthList.value        = idate.mstr;
  form.IFC_DayList.value   		  = idate.d;
  form.IFC_DayOfWeek.value        = idate.dstr;
  form.IFC_YearBox.value          = idate.y;

  var wdate = GregorianToWC(gdate.day,gdate.month,gdate.year);
  form.WC_MonthList.value 		  = wdate.mstr;
  form.WC_DayList.value   		  = wdate.d;
  form.WC_DayOfWeek.value         = wdate.dstr;
  form.WC_YearBox.value           = wdate.y;

  var ravdate = GregorianToRaventos(gdate.day,gdate.month,gdate.year);
  form.Rav_MonthList.value 		  = ravdate.mstr;
  form.Rav_DayList.value   		  = ravdate.d;
  form.Rav_DayOfWeek.value        = ravdate.dstr;
  form.Rav_YearBox.value          = ravdate.y;

  var hjdate = JDNToHijra(jdn);
  form.I_MonthList.selectedIndex  = hjdate.m-1;
  form.I_DayList.selectedIndex	  = hjdate.d-1;
  form.I_DayOfWeek.value          = hjdate.dstr;
  form.I_YearBox.value            = hjdate.y;

  var fdate = JDNToFrench(jdn);
  form.FR_MonthList.selectedIndex = fdate.m-1;
  form.FR_DayList.selectedIndex   = fdate.d-1;
  form.FR_YearBox.value           = fdate.y;
  form.FR_DayOfWeek.value 		  = fdate.dstr;

  var hdate = JDNToHebrew(jdn);
  form.H_MonthList.selectedIndex = hdate.m-1;
  form.H_DayList.selectedIndex   = hdate.d-1;
  form.H_YearBox.value           = hdate.y;

  var jaldate = JDNToJalali(jdn);
  form.JAL_DayList.value   = jaldate.d;
  form.JAL_MonthList.value = jaldate.mstr;
  form.JAL_Year.value      = jaldate.y;

  var icdate = JDNToIndianCivil(jdn);
  form.IC_Year.value               = icdate.year;
  form.IC_Month.selectedIndex      = icdate.month-1;
  form.IC_Day.selectedIndex        = icdate.day-1;
  form.IC_Weekday.value            = icdate.weekdayStr;

  var bdate = JDNToBahai(jdn);
  form.B_Kull_I_Shay.value        = bdate.kull_i_shay;
  form.B_Vahid.value              = bdate.vahid;
  form.B_Year.selectedIndex       = bdate.year-1;
  form.B_Month.selectedIndex      = bdate.month-1;
  form.B_Day.selectedIndex        = bdate.day-1;
  form.B_Weekday.value            = bdate.weekdayStr;

  var ydate = JDNToYerm(jdn);
  form.Y_Day.selectedIndex    = ydate.day-1;
  form.Y_Month.selectedIndex  = ydate.month-1;
  form.Y_Yerm.selectedIndex   = ydate.yerm-1;
  form.Y_Cycle.value  		  = ydate.cycle;

  var rdate = JDNJulianToRoman(jdn,jdate.day,jdate.month,jdate.year);
//  form.R_Latin.value             = rdate.lstr;
//  form.R_Roman.value             = rdate.rstr;
  form.L_MonthList.value         = rdate.lmstr;
  form.L_DayList.value           = rdate.ld;
  form.L_YearBox.value           = rdate.ly;
  form.L_DayOfWeek.value 		 = rdate.ldstr;
  form.R_DayList.value           = rdate.rd;
  form.R_YearBox.value           = rdate.ry;
  form.R_DayOfWeek.value 		 = rdate.rdstr;

  var lc = JDNToMayan(jdn,true);
  form.M_Baktun.selectedIndex = lc.baktun;
  form.M_Katun.selectedIndex  = lc.katun;
  form.M_Tun.selectedIndex    = lc.tun;
  form.M_Unial.selectedIndex  = lc.unial;
  form.M_Kin.selectedIndex    = lc.kin;
  form.MRCDtd.value           = lc.tzolkinDay;
  form.MRCDtw.value           = lc.tzolkinWeek;
  form.MVSYDhd.value          = lc.haabDay;
  form.MVSYDhm.value          = lc.haabMonth;

  var lc2 = JDNToMayan(jdn,false);
  form.M2_Baktun.selectedIndex = lc2.baktun;
  form.M2_Katun.selectedIndex  = lc2.katun;
  form.M2_Tun.selectedIndex    = lc2.tun;
  form.M2_Unial.selectedIndex  = lc2.unial;
  form.M2_Kin.selectedIndex    = lc2.kin;
  form.M2RCDtd.value           = lc2.tzolkinDay;
  form.M2RCDtw.value           = lc2.tzolkinWeek;
  form.M2VSYDhd.value          = lc2.haabDay;
  form.M2VSYDhm.value          = lc2.haabMonth;
}
