//
// Convert TJD to/from Year, Month, Day
//
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *


// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
function TJDtoYMD (TJD_in)
{
    var year;
    var month;
    var day;
    var hour;
    var jd;
    var jdi;
    var jdf
    var l;
    var n;
    
    
    // Julian day
    jd = Math.floor (TJD_in) + 2440000.5;

    // Integer Julian day
    jdi = Math.floor (jd);
    
    // Fractional part of day
    jdf = jd - jdi + 0.5;
    
    // Really the next calendar day?
    if (jdf >= 1.0) {
       jdf = jdf - 1.0;
       jdi  = jdi + 1;
    }


    hour = jdf * 24.0;    
    l = jdi + 68569;
    n = Math.floor (4 * l / 146097);
   
    l = Math.floor (l) - Math.floor ((146097 * n + 3) / 4);
    year = Math.floor (4000 * (l + 1) / 1461001);
    
    l = l - (Math.floor (1461 * year / 4)) + 31;
    month = Math.floor (80 * l / 2447);
    
    day = l - Math.floor (2447 * month / 80);
    
    l = Math.floor (month / 11);
    
    month = Math.floor (month + 2 - 12 * l);
    year = Math.floor (100 * (n - 49) + year + l);

    if (month < 10)
       month = "0" + month;
       
    if (day < 10)
       day = "0" + day;
    
    //year = year - 1900;
    
    return (new Array (year, month, day));

}


// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
function YMDtoTJD (year, month, day)
{    

    var yr  = Math.floor (year); 
    var mn  = Math.floor (month);
    var day = Math.floor (day);          
    var hr  = 0.0;                    // Hours are not handled
    var L;
    var julian;    
    var tjd;
        
        
    // In leap years, -1 for Jan, Feb, else 0
    L = Math.ceil ((mn - 14) / 12);
             
    var p1 = day - 32075 + Math.floor (1461 * (yr + 4800 + L) / 4);
    
    var p2 = Math.floor (367 * (mn - 2 - L * 12) / 12);
    var p3 = 3 * Math.floor (Math.floor ((yr + 4900 + L) / 100) / 4);
    
    julian = p1 + p2 - p3;        
    julian = julian + (hr / 24.0) - 0.5;
  
    tjd = julian - 2440000.5;
    
    
    return (tjd);

}

