<!--
//Various variables used in the construction of the page
SMShipTable = "";
SMShipNum   = -1;
VanaDayColor  = new Array("<font color=#DD0000>Firesday</font>", "<font color=#AAAA00>Earthsday</font>", "<font color=#0000DD>Watersday</font>", "<font color=#00AA22>Windsday</font>", "<font color=#7799FF>Iceday</font>", "<font color=#AA00AA>Lightningday</font>", "<font color=#AAAAAA>Lightsday</font>", "<font color=#333333>Darksday</font>");
JeunoTavern   = new Array("Ninjas", "Dragoons", "Summoners", "Humes", "Elvaan", "Tarutaru", "Mithra", "Galka", "Gentlemen", "Ladies", "San d'Oria", "Bastok", "Windurst", "Warriors", "Monks", "White Mages", "Black Mages", "Red Mages", "Thieves", "Paladins", "Dark Knights", "Beastmasters", "Bards", "Rangers", "Samurai");

function MoonAndTimeSelect(){
	document.getElementById("menu").innerHTML = "1";
	MoonAndTime();
}

function MoonAndTime(){

    if(document.getElementById("menu").innerHTML=="1"){    
    
        // The current Earth time
        Now = new Date();

        // Calculates the current Earth time in milliseconds and the Vana'diel time in seconds
        eTime = Now.getTime();
        vTime = (eTime + Diff) * VanaToEarth;
          
        VanaTime  = CalculateVanaTime(vTime);
        
        var vTempTime  = Math.floor(vTime / (SecPMin * MinPHour * HourPDay)) * (SecPMin * MinPHour * HourPDay);
        var Moon = MyCalculateMoonPhase(vTempTime);
        
        var outPut = "<div width=100% class='timerbox'>Vana'diel Time: " + VanaTime + " " +
                    Moon + "</div>";

        document.getElementById("VanaTimer").innerHTML = outPut;
        
        setTimeout("MoonAndTime()", 10000);
    }
}

function FerrySelect(){	
	document.getElementById("menu").innerHTML = "2";
    Ferry();
}

function Ferry(){
    
    if(document.getElementById("menu").innerHTML=="2"){

        // Calculates the current Earth time in milliseconds and the Vana'diel time in seconds
        Now = new Date();
        eTime = Now.getTime();
        vTime = (eTime + Diff) * VanaToEarth;
        
        vTempTime1 = (Math.floor( vTime            / SelbinaMhaura) * SelbinaMhaura) + SelbinaMhaura;
        vTempTime2 = (Math.floor((vTime - SecPMin) / SelbinaMhaura) * SelbinaMhaura) + SelbinaMhaura;
        
        vTempTimeA = (Math.floor(vTime / SelbinaMhaura) * SelbinaMhaura) + SelbinaMhaura;
        vTempTimeB = vTempTimeA + (SMShipNum * SelbinaMhaura);

        SMShipNum   = 5;
        SMShipTable = "";

        SMShipTable  = "<br><table border=0 cellpadding=2 cellspacing=0 width=100%>";
        SMShipTable += "<tr><td>Vana'Diel Time</td><td>Earth Time</td><td>Delay</td></tr>";

        for (i = 0; i < SMShipNum; i++) {
          
            SMShipTable  += "<tr>"
            SMShipTable  += "<td><small>" + CalculateVanaTime2(vTempTimeA) + "</td>";
            SMShipTable  += "<td><small>" + CalculateEarthTime2(new Date(Math.floor(vTempTimeA / VanaToEarth) - Diff)) + "</td>";
            SMShipTable  += "<td><small><span id=" + '"' + "SMShipTable" + (i + 1) + "Box" + '"' + ">&nbsp;</span></td>";
            SMShipTable  += "</tr>"
            vTempTimeA   += SelbinaMhaura;
        }
        SMShipTable += "</table>";

        document.getElementById("VanaTimer").innerHTML = "<div class='timerbox'><p class=timertext>" + SMShipTable + "</p></div>" +
        "<div class='menu'>" + MakeMenu(2) + "</div>";
        
        switch (SMShipNum)
        {
            case  5: {
            vTempTimeB -= SelbinaMhaura;
            document.getElementById("SMShipTable5Box" ).innerHTML = CalculateDelay(vTempTimeB - vTime);
            }
            case  4: {
            vTempTimeB -= SelbinaMhaura;
            document.getElementById("SMShipTable4Box" ).innerHTML = CalculateDelay(vTempTimeB - vTime);
            }
            case  3: {
            vTempTimeB -= SelbinaMhaura;
            document.getElementById("SMShipTable3Box" ).innerHTML = CalculateDelay(vTempTimeB - vTime);
            }
            case  2: {
            vTempTimeB -= SelbinaMhaura;
            document.getElementById("SMShipTable2Box" ).innerHTML = CalculateDelay(vTempTimeB - vTime);
            }
            case  1: {
            vTempTimeB -= SelbinaMhaura;
            document.getElementById("SMShipTable1Box" ).innerHTML = CalculateDelay(vTempTimeB - vTime);
            }
            default: {
            break;
            }
        }
        setTimeout("Ferry()", 1000);   
    }
}

function GuildsSelect(){
	document.getElementById("menu").innerHTML = "3";
	Guilds()
}

function Guilds(){

    if(document.getElementById("menu").innerHTML=="3"){
    
        Now = new Date();
        eTime = Now.getTime();
        vTime = (eTime + Diff) * VanaToEarth;
    
        // # of Vana'diel seconds into the new Vana'diel day  
        VDSiD  = (vTime - ((Math.floor(vTime / (HourPDay * MinPHour * SecPMin))) * HourPDay * MinPHour * SecPMin));
        Alc = "<font class=holiday>Guild Holiday</font> <font class=closed>(CLOSED)</font>";
        Bla = "<font class=holiday>Guild Holiday</font> <font class=closed>(CLOSED)</font>";
        Bon = "<font class=holiday>Guild Holiday</font> <font class=closed>(CLOSED)</font>";
        Gol = "<font class=holiday>Guild Holiday</font> <font class=closed>(CLOSED)</font>";
        Wea = "<font class=holiday>Guild Holiday</font> <font class=closed>(CLOSED)</font>";
        Car = "<font class=holiday>Guild Holiday</font> <font class=closed>(CLOSED)</font>";
        Tan = "<font class=holiday>Guild Holiday</font> <font class=closed>(CLOSED)</font>";
        Cul = "<font class=holiday>Guild Holiday</font> <font class=closed>(CLOSED)</font>";
        Fis = "<font class=holiday>Guild Holiday</font> <font class=closed>(CLOSED)</font>";
    
        Alc = CalculateGuildOpen("6", "480", "1380", "1920", Alc, VDSiD);  // Alchemy
        Bla = CalculateGuildOpen("2", "480", "1380", "1920", Bla, VDSiD);  // BlackSmith
        Bon = CalculateGuildOpen("3", "480", "1380", "1920", Bon, VDSiD);  // Bonework
        Gol = CalculateGuildOpen("4", "480", "1380", "1920", Gol, VDSiD);  // GoldSmith
        Wea = CalculateGuildOpen("0", "360", "1260", "1800", Wea, VDSiD);  // Weaver
        Car = CalculateGuildOpen("0", "360", "1260", "1800", Car, VDSiD);  // Carpentry
        Tan = CalculateGuildOpen("4", "180", "1080", "1620", Tan, VDSiD);  // Leatherwork
        Cul = CalculateGuildOpen("7", "300", "1200", "1740", Cul, VDSiD);  // Culinary
        Fis = CalculateGuildOpen("5", "180", "1080", "1620", Fis, VDSiD);  // Fishing
        
        guildOpeningHours = "<table><tr><td align=left>Guild</td><td>Opening hours</td></tr>" +
                            "<tr><td align=left>Alchemy: </td><td>" + Alc + "</td></tr>" +
                            "<tr><td align=left>Blacksmith: </td><td>" + Bla + "</td></tr>" +
                            "<tr><td align=left>Bonework: </td><td>" + Bon + "</td></tr>" +
                            "<tr><td align=left>Goldsmith: </td><td>" + Gol + "</td></tr>" +
                            "<tr><td align=left>Weaver: </td><td>" + Wea + "</td></tr>" +
                            "<tr><td align=left>Carpenter: </td><td>" + Car + "</td></tr>" +
                            "<tr><td align=left>Leatherwork: </td><td>" + Tan + "</td></tr>" +
                            "<tr><td align=left>Cooking: </td><td>" + Cul + "</td></tr>" +
                            "<tr><td align=left>Fishing: </td><td>" + Fis + "</td></tr></table>";
                            
        document.getElementById("VanaTimer").innerHTML = "<div class='timerbox'><p class=timertext><br>" + guildOpeningHours + "</p></div>" +
        "<div class='menu'>" + MakeMenu(3) + "</div>";
        setTimeout("Guilds()", 1000); 
    }
}

function DayTableSelect(){
	document.getElementById("menu").innerHTML = "4";
	MakeDayTable(9);
}

function MakeDayTable(DayType){
    if(document.getElementById("menu").innerHTML=="4"){
        DayNum = 5;
        DayTable = "";
        DayTable = DayTimeTable(DayNum, DayTable, DayType);
        document.getElementById("VanaTimer").innerHTML = "<div class='timerboxsmall'><p class=timertext>" + DayTable+"</p></div>" +
        "<div class='menu'>" + MakeDayTableMenu() + "</div>" +
        "<div class='menu'>" + MakeMenu(4) + "</div>";
    }
}

function MakeDayTableMenu(){
    DTmenu =  "<input type=button onclick='MakeDayTable(0)' value='Fire' class='timerButton'/>" + 
		    "<input type=button onclick='MakeDayTable(1)' value='Earth' class='timerButton'/>" + 
		    "<input type=button onclick='MakeDayTable(2)' value='Water' class='timerButton'/>" +
		    "<input type=button onclick='MakeDayTable(3)' value='Wind' class='timerButton'/>" +
            "<input type=button onclick='MakeDayTable(4)' value='Ice' class='timerButton'/>" + 
		    "<input type=button onclick='MakeDayTable(5)' value='Lig' class='timerButton'/>" + 
		    "<input type=button onclick='MakeDayTable(6)' value='Light' class='timerButton'/>" +
		    "<input type=button onclick='MakeDayTable(7)' value='Dark' class='timerButton'/>" +
            "<input type=button onclick='MakeDayTable(11)' value='New' class='timerButton'/>" + 
            "<input type=button onclick='MakeDayTable(12)' value='Full' class='timerButton'/>" + 
		    "<input type=button onclick='MakeDayTable(9)' value='Now' class='timerButton'/>";
    return DTmenu;
}

function MakeMenu(selected){
    if(selected == "1"){
	    var menu = "<input type=button onclick='MoonAndTimeSelect()' value='Moon and Clock' class='timerButtonSelected'/>" + 
				    "<input type=button onclick='FerrySelect()' value='FerrySchedules'  class='timerButton'/>" + 
				    "<input type=button onclick='GuildsSelect()' value='Guilds'  class='timerButton'/>" +
				    "<input type=button onclick='DayTableSelect()' value='DayTable'  class='timerButton'/>";
    }
    if(selected == "2"){
	    var menu = "<input type=button onclick='MoonAndTimeSelect()' value='Moon and Clock' class='timerButton'/>" + 
				    "<input type=button onclick='FerrySelect()' value='FerrySchedules'  class='timerButtonSelected'/>" + 
				    "<input type=button onclick='GuildsSelect()' value='Guilds'  class='timerButton'/>" +
				    "<input type=button onclick='DayTableSelect()' value='DayTable'  class='timerButton'/>";
    }
    if(selected == "3"){
	    var menu = "<input type=button onclick='MoonAndTimeSelect()' value='Moon and Clock' class='timerButton'/>" + 
				    "<input type=button onclick='FerrySelect()' value='FerrySchedules'  class='timerButton'/>" + 
				    "<input type=button onclick='GuildsSelect()' value='Guilds'  class='timerButtonSelected'/>" +
				    "<input type=button onclick='DayTableSelect()' value='DayTable'  class='timerButton'/>";
    }
    if(selected == "4"){
	    var menu = "<input type=button onclick='MoonAndTimeSelect()' value='Moon and Clock' class='timerButton'/>" + 
				    "<input type=button onclick='FerrySelect()' value='FerrySchedules'  class='timerButton'/>" + 
				    "<input type=button onclick='GuildsSelect()' value='Guilds'  class='timerButton'/>" +
				    "<input type=button onclick='DayTableSelect()' value='DayTable'  class='timerButtonSelected'/>";
    }
				
	return menu;
}

function MyCalculateMoonPhase(CurrentTime) {
  var vMoon = Math.round(((((Math.floor(CurrentTime / (HourPDay * MinPHour * SecPMin)) + 26) % MoonPhaseMod) - (MoonPhaseMod / 2)) / (MoonPhaseMod / 2)) * 100);
  
  if (vMoon >= -100 && vMoon <= -94)        {vMoon = Math.abs(vMoon) + "% (Full Moon)"; }
  else if (vMoon >= -93 && vMoon <= -88)    {vMoon = Math.abs(vMoon) + "% (Waning Gibbous)";}
  else if (vMoon >= -87 && vMoon <= -80)    {vMoon = Math.abs(vMoon) + "% (Waning Gibbous)";}  
  else if (vMoon >= -79 && vMoon <= -68)    {vMoon = Math.abs(vMoon) + "% (Waning Gibbous)";}
  else if (vMoon >= -67 && vMoon <= -62)    {vMoon = Math.abs(vMoon) + "% (Waning Gibbous)";}  
  else if (vMoon >= -61 && vMoon <= -52)    {vMoon = Math.abs(vMoon) + "% (Last Quarter Moon)";}
  else if (vMoon >= -51 && vMoon <= -45)    {vMoon = Math.abs(vMoon) + "% (Last Quarter Moon)";}  
  else if (vMoon >= -44 && vMoon <= -36)    {vMoon = Math.abs(vMoon) + "% (Waning Crescent)";}
  else if (vMoon >= -35 && vMoon <= -27)    {vMoon = Math.abs(vMoon) + "% (Waning Crescent)";}
  else if (vMoon >= -26 && vMoon <= -17)    {vMoon = Math.abs(vMoon) + "% (Waning Crescent)";}
  else if (vMoon >= -16 && vMoon <= -7)     {vMoon = Math.abs(vMoon) + "% (Waning Crescent)";}  
  else if (vMoon >= -6 && vMoon <= 6)       {vMoon = Math.abs(vMoon) + "% (New Moon)";}
  else if (vMoon >= 7 && vMoon <= 13)       {vMoon = Math.abs(vMoon) + "% (Waxing Crescent)";}  
  else if (vMoon >= 14 && vMoon <= 21)      {vMoon = Math.abs(vMoon) + "% (Waxing Crescent)";}
  else if (vMoon >= 22 && vMoon <= 29)      {vMoon = Math.abs(vMoon) + "% (Waxing Crescent)";}
  else if (vMoon >= 30 && vMoon <= 38)      {vMoon = Math.abs(vMoon) + "% (Waxing Crescent)";}  
  else if (vMoon >= 39 && vMoon <= 44)      {vMoon = Math.abs(vMoon) + "% (First Quarter Moon)";}
  else if (vMoon >= 45 && vMoon <= 49)      {vMoon = Math.abs(vMoon) + "% (First Quarter Moon)";}
  else if (vMoon >= 50 && vMoon <= 55)      {vMoon = Math.abs(vMoon) + "% (First Quarter Moon)";}
  else if (vMoon >= 56 && vMoon <= 63)      {vMoon = Math.abs(vMoon) + "% (Waxing Gibbous)";}
  else if (vMoon >= 64 && vMoon <= 70)      {vMoon = Math.abs(vMoon) + "% (Waxing Gibbous)";}
  else if (vMoon >= 71 && vMoon <= 77)      {vMoon = Math.abs(vMoon) + "% (Waxing Gibbous)";}
  else if (vMoon >= 78 && vMoon <= 83)      {vMoon = Math.abs(vMoon) + "% (Waxing Gibbous)";}
  else if (vMoon >= 84 && vMoon <= 88)      {vMoon = Math.abs(vMoon) + "% (Waxing Gibbous)";}
  else if (vMoon >= 88 && vMoon <= 100)     {vMoon = Math.abs(vMoon) + "% (Full Moon)";}
  else                                      {vMoon = Math.abs(vMoon) + "% (New Moon)";}
  return vMoon;
}

function CalculateGuildOpen(ClosedDay, OpenTime, ClosedTime, NewOpenTime, GuildStatus, VDSiD) {
  var vDay = Math.floor((vTime / (HourPDay * MinPHour * SecPMin)) % DayPVWeek);

  if (vDay != eval(ClosedDay)) {
    if ((VDSiD / SecPMin) > eval(ClosedTime)) {
      if (((vDay + 1) % DayPVWeek) != eval(ClosedDay)) {
        GuildStatus = "<font class=closed>CLOSED</font> (Opening in " + CalculateDelay((eval(NewOpenTime) * SecPMin) - VDSiD) + ")";
      }
      else {
        GuildStatus = "<font class=closed>CLOSED</font> (Guild Holiday Tomorrow)";
      }
    }
    else if ((VDSiD / SecPMin) > eval(OpenTime)) {
      GuildStatus = "<font class=open>Open</font> (Closing in " + CalculateDelay((eval(ClosedTime) * SecPMin) - VDSiD) + ")";
    }
    else if ((VDSiD / SecPMin) < eval(OpenTime)) {
      GuildStatus = "<font class=closed>CLOSED</font> (Opening in " + CalculateDelay((eval(OpenTime) * SecPMin) - VDSiD) + ")";
    }
  }
  return GuildStatus;
}

function CalculateMoonPhase(CurrentTime) {
  var vMoon = Math.round(((((Math.floor(CurrentTime / (HourPDay * MinPHour * SecPMin)) + 26) % MoonPhaseMod) - (MoonPhaseMod / 2)) / (MoonPhaseMod / 2)) * 100);

  if (vMoon >= -93 && vMoon <= -62) {vMoon = Math.abs(vMoon) + "%";}
  else if (vMoon >= -43 && vMoon <= -12)    {vMoon = Math.abs(vMoon) + "%";}
  else if (vMoon >= 7 && vMoon <= 38)       {vMoon = Math.abs(vMoon) + "%";}
  else if (vMoon >= 57 && vMoon <= 88)      {vMoon = Math.abs(vMoon) + "%";}
  else if (vMoon >= 90 || vMoon <= -95)     {vMoon = Math.abs(vMoon) + "%";}
  else if (vMoon >= -60 && vMoon <= -45)    {vMoon = Math.abs(vMoon) + "%";}
  else if (vMoon >= 40 && vMoon <= 55)      {vMoon = Math.abs(vMoon) + "%";}
  else                                      {vMoon = Math.abs(vMoon) + "%";}
  return vMoon;
}

function DayTimeTable(DayNum, DayTable, DayType) {
  var i          = 0;
  var DayMod     = 0;
  var vMoonCheck = 0;
  var vMoonTemp  = 0;
  var MoonMod    = 0;
  var vTempTime  = Math.floor(vTime / (SecPMin * MinPHour * HourPDay)) * (SecPMin * MinPHour * HourPDay);
  var vTempDay   = 0;
  var vTavern    = 0;
  var vMoon      = 0;

  DayTable  = "<table border=0 cellpadding=2 cellspacing=0 width=100%>";
  DayTable += "<tr><td valign=bottom>Starting</td><td valign=bottom>Ending</td><td valign=bottom>Day Type</td><td valign=bottom>Moon Phase</td><td valign=bottom>Marble Bridge</td></tr>";

  if (DayType < 8) {
    if (DayType < Math.floor((vTempTime / (HourPDay * MinPHour * SecPMin)) % DayPVWeek)) {
      vTempTime = vTempTime + (SecPMin * MinPHour * HourPDay * (DayPVWeek - 1));
    }
    vTempTime  = vTempTime - (Math.floor((vTempTime / (HourPDay * MinPHour * SecPMin)) % DayPVWeek) * (SecPMin * MinPHour * HourPDay));
    vTempTime  = vTempTime + (DayType * (SecPMin * MinPHour * HourPDay));
    DayMod     = DayPVWeek - 1;
    vMoonCheck = 0;
  }
  else if (DayType == 11) {
    vMoonTemp  = (((Math.floor(vTempTime / (HourPDay * MinPHour * SecPMin)) + 26) % MoonPhaseMod) - (MoonPhaseMod / 2));
    DayMod     = 0;
    vMoonCheck = 7;
    if (vMoonTemp < -4 || vMoonTemp > 2) {
      MoonMod = (MoonPhaseMod) - (vMoonTemp + 4);
      if (vMoonTemp < -4) {
        MoonMod -= MoonPhaseMod;
      }
      vTempTime = vTempTime + (MoonMod * HourPDay * MinPHour * SecPMin);
    }
    else {
      vMoonCheck = 3 - vMoonTemp;
    }
  }
  else if (DayType == 12) {
    vMoonTemp  = (((Math.floor(vTempTime / (HourPDay * MinPHour * SecPMin)) + 26) % MoonPhaseMod) - (MoonPhaseMod / 2));
    DayMod     = 0;
    vMoonCheck = 7;
    if (vMoonTemp > -40 && vMoonTemp < 38) {
      MoonMod = (MoonPhaseMod) - (vMoonTemp + 46);
      vTempTime = vTempTime + (MoonMod * HourPDay * MinPHour * SecPMin);
    }
    else {
      vMoonCheck = Math.abs((((vMoonTemp - 38) + MoonPhaseMod) % MoonPhaseMod) - 7);
    }
  }
  else {
    DayMod     = 0;
    vMoonCheck = 0;
  }

  do {
    do {
      vTempDay  = Math.floor(vTempTime / (HourPDay * MinPHour * SecPMin)) % DayPVWeek;
      vTavern   = Math.floor(vTempTime / (HourPDay * MinPHour * SecPMin)) % TavernMod;
      vMoon     = CalculateMoonPhase(vTempTime);

      DayTable += "<tr>"
      DayTable += "<td><small>" + CalculateEarthTime3(new Date(Math.floor(vTempTime / VanaToEarth) - Diff)) + "</td>";

      vTempTime = vTempTime + (SecPMin * MinPHour * HourPDay);
      DayTable += "<td><small>" + CalculateEarthTime3(new Date(Math.floor(vTempTime / VanaToEarth) - Diff)) + "</td>";
      DayTable += "<td><small>" + VanaDayColor[vTempDay] + "</td>";
      DayTable += "<td><small>" + vMoon + "</td>";
      DayTable += "<td><small>" + JeunoTavern[vTavern] + "</td>";
      DayTable += "</tr>"
      vTempTime = vTempTime + (SecPMin * MinPHour * HourPDay * DayMod);

      i++;
      vMoonCheck--;
    } while (i < DayNum && vMoonCheck != 0);
    vMoonCheck = 7;
    vTempTime = vTempTime + (77 * HourPDay * MinPHour * SecPMin);
  } while (i < DayNum);

  DayTable += "</table>";

  return DayTable;
}
// -->

