//effemeridi della Terra per il calcolo dei pianeti
//restituisce su variabili globali soltanto Lat_eT, Lon_eT, RvT (per questo si chiama terraminima)
//richiede Aa_base.js
//14/8/2009

//variabili globali
var Lat_eT, Lon_eT, RvT

function terraminima(JD)
{
var vtLO=64
var TAB_LO_A=new Array(175347046,3341656,34894,3497,3418,3136,2676,2343,1324,1273,1199,990,902,857,780,753,505,492,357,317,284,271,243,206,205,202,156,132,126,115,103,102,102,99,98,86,85,85,80,79,75,74,74,70,62,61,57,56,56,52,52,51,49,41,41,39,37,37,36,36,33,30,30,25)
var TAB_LO_B=new Array(0,4.669257,4.6261,2.7441,2.8289,3.6277,4.4181,6.1352,.7425,2.0371,1.1096,5.233,2.045,3.508,1.179,2.533,4.583,4.205,2.92,5.849,1.899,.315,.345,4.806,1.869,2.458,.833,3.411,1.083,.645,.636,.976,4.267,6.21,.68,5.98,1.3,3.67,1.81,3.04,1.76,3.5,4.68,.83,3.98,1.82,2.78,4.39,3.47,.19,1.33,.28,.49,5.37,2.4,6.17,6.04,2.57,1.71,1.78,.59,.44,2.74,3.16)
var TAB_LO_C=new Array(0,6283.07585,12566.1517,5753.3849,3.5231,77713.7715,7860.4194,3930.2097,11506.7698,529.691,1577.3435,5884.927,26.298,398.149,5223.694,5507.553,18849.228,775.523,.067,11790.629,796.298,10977.079,5486.778,2544.314,5573.143,6069.777,213.299,2942.463,20.775,.98,4694.003,15720.839,7.114,2146.17,155.42,161000.69,6275.96,71430.7,17260.15,12036.46,5088.63,3154.69,801.82,9437.76,8827.39,7084.9,6286.6,14143.5,6279.55,12139.55,1748.02,5856.48,1194.45,8429.24,19651.05,10447.39,10213.29,1059.38,2352.87,6812.77,17789.85,83996.85,1349.87,4690.48)

var vtL1=34
var TAB_L1_A=new Array(628331966747,206059,4303,425,119,109,93,72,68,67,59,56,45,36,29,21,19,19,17,16,16,15,12,12,12,12,11,10,10,9,9,8,6,6)
var TAB_L1_B=new Array(0,2.678235,2.6351,1.59,5.796,2.966,2.59,1.14,1.87,4.41,2.89,2.17,.4,.47,2.65,5.34,1.85,4.97,2.99,.03,1.43,1.21,2.83,3.26,5.27,2.08,.77,1.3,4.24,2.7,5.64,5.3,2.65,4.67)
var TAB_L1_C=new Array(0,6283.07585,12566.1517,3.523,26.298,1577.344,18849.23,529.69,398.15,5507.55,5223.69,155.42,796.3,775.52,7.11,.98,5486.78,213.3,6275.96,2544.31,2146.17,10977.08,1748.02,5088.63,1194.45,4694,553.57,6286.6,1349.87,242.73,951.72,2352.87,9437.76,4690.48)

var vtL2=20
var TAB_L2_A=new Array(52919,8720,309,27,16,16,10,9,7,5,4,4,3,3,3,3,3,3,2,2)
var TAB_L2_B=new Array(0,1.0721,.867,.05,5.19,3.68,.76,2.06,.83,4.66,1.03,3.44,5.14,6.05,1.19,6.12,.31,2.28,4.38,3.75)
var TAB_L2_C=new Array(0,6283.0758,12566.152,3.52,26.3,155.42,18849.23,77713.77,775.52,1577.34,7.11,5573.14,796.3,5507.55,242.73,529.69,398.15,553.57,5223.69,.98)

var vtL3=7
var TAB_L3_A=new Array(289,35,17,3,1,1,1)
var TAB_L3_B=new Array(5.844,0,5.49,5.2,4.72,5.3,5.97)
var TAB_L3_C=new Array(6283.076,0,12566.15,155.42,3.52,18849.23,242.73)

var vtL4=3
var TAB_L4_A=new Array(114,8,1)
var TAB_L4_B=new Array(3.142,4.13,3.84)
var TAB_L4_C=new Array(0,6283.08,12566.15)

var vtL5=1
var TAB_L5_A=new Array(1,0)
var TAB_L5_B=new Array(3.14,0) //il secondo membro a zero non serve ma ci va messo senno' da errore ?!? Mistero!
var TAB_L5_C=new Array(0,0)   //come sopra

var vtBO=5
var TAB_BO_A=new Array(280,102,80,44,32)
var TAB_BO_B=new Array(3.199,5.422,3.88,3.7,4)
var TAB_BO_C=new Array(84334.662,5507.553,5223.69,2352.87,1577.34)

var vtB1=2
var TAB_B1_A=new Array(9,6)
var TAB_B1_B=new Array(3.9,1.73)
var TAB_B1_C=new Array(5507.55,5223.69)

var vtRO=40
var TAB_RO_A=new Array(100013989,1670700,13956,3084,1628,1576,925,542,472,346,329,307,243,212,186,175,110,98,86,86,65,63,57,56,49,47,45,43,39,38,37,37,36,35,33,32,32,28,28,26)
var TAB_RO_B=new Array(0,3.098463,3.05525,5.1985,1.1739,2.8469,5.453,4.564,3.661,.964,5.9,.299,4.273,5.847,5.022,3.012,5.055,.89,5.69,1.27,.27,.92,2.01,5.24,3.25,2.58,5.54,6.01,5.36,2.39,.83,4.9,1.67,1.84,.24,.18,1.78,1.21,1.9,4.59)
var TAB_RO_C=new Array(0,6283.07585,12566.1517,77713.7715,5753.3849,7860.4194,11506.77,3930.21,5884.927,5507.553,5223.694,5573.143,11790.629,1577.344,10977.079,18849.228,5486.778,6069.78,15720.84,161000.69,17260.15,529.69,83996.85,71430.7,2544.31,775.52,9437.76,6275.96,4694,8827.39,19651.05,12139.55,12036.46,2942.46,7084.9,5088.63,398.15,6286.6,6279.55,10447.39)

var vtR1=10
var TAB_R1_A=new Array(103019,1721,702,32,31,25,18,10,9,9)
var TAB_R1_B=new Array(1.10749,1.0644,3.142,1.02,2.84,1.32,1.42,5.91,1.42,.27)
var TAB_R1_C=new Array(6283.07585,12566.1517,0,18849.23,5507.55,5223.69,1577.34,10977.08,6275.96,5486.78)

var vtR2=6
var TAB_R2_A=new Array(4539,124,12,9,6,3)
var TAB_R2_B=new Array(5.7846,5.579,3.14,3.63,1.87,5.47)
var TAB_R2_C=new Array(6283.0758,12566.152,0,77713.77,5573.14,18849.23)

var vtR3=2
var TAB_R3_A=new Array(145,7)
var TAB_R3_B=new Array(4.273,3.92)
var TAB_R3_C=new Array(6283.076,12566.15)

var vtR4=1
var TAB_R4_A=new Array(4,0)     //il secondo membro a zero non serve ma ci va messo senno' da errore ?!? Mistero!
var TAB_R4_B=new Array(2.56,0)  //il secondo membro a zero non serve ma ci va messo senno' da errore ?!? Mistero!
var TAB_R4_C=new Array(6283.08,0)   //il secondo membro a zero non serve ma ci va messo senno' da errore ?!? Mistero!


var T, T2, T3, T4, T5
var LO,L1,L2,L3, L4,L5,Lon
var BO, B1, Lat
var RO, R1, R2, R3, R4



// ----------------- calcolo -------------------------------

     T = (JD - 2451545) / 365250
     T2 = T * T
     T3 = T2 * T
     T4 = T3 * T
     T5 = T4 * T

//Calcolo Longitudine eclittica
//Calcoli tabella LO
     var LO = 0
     for( var v = 0; v<=(vtLO-1); v++) {
         LO = LO + TAB_LO_A[v] * Math.cos(TAB_LO_B[v] + TAB_LO_C[v] * T)
   }
//Calcoli Tabella L1
     var L1 = 0
     for(v = 0; v<vtL1-1; v++) {
         L1 = L1 + TAB_L1_A[v] * Math.cos(TAB_L1_B[v] + TAB_L1_C[v] * T)
     }
//Calcoli tabella L2
     var L2 = 0
     for(v = 0; v<vtL2-1; v++) {
         L2 = L2 + TAB_L2_A[v] * Math.cos(TAB_L2_B[v] + TAB_L2_C[v] * T)
     }
//Calcoli tabella L3
     var L3 = 0
     for(v = 0; v<vtL3-1; v++) {
         L3 = L3 + TAB_L3_A[v] * Math.cos(TAB_L3_B[v] + TAB_L3_C[v] * T)
     }
//Calcoli tabella L4
     var L4 = 0
     for(v = 0; v<vtL4-1; v++) {
         L4 = L4 + TAB_L4_A[v] * Math.cos(TAB_L4_B[v] + TAB_L4_C[v] * T)
     }
//Calcoli tabella L5
     var L5 = 0
     for(v = 0; v<vtL5-1; v++) {
         L5 = L5 + TAB_L1_A[v] * Math.cos(TAB_L5_B[v] + TAB_L5_C[v] * T)
     }

     Lon_eT = gradi*(LO + L1 * T + L2 * T2 + L3 * T3 + L4 * T4 + L5 * T5)
     Lon_eT = AngoloGiro(Lon_eT / 100000000)

//Latitudine eclittica
//Calcoli tabella BO
     var BO = 0
     for(v = 0; v<vtBO-1; v++) {
         BO = BO + TAB_BO_A[v] * Math.cos(TAB_BO_B[v] + TAB_BO_C[v] * T)
     }
//Calcoli tabella B1
     var B1 = 0
     for(v = 0; v<vtB1-1; v++) {
         B1 = B1 + TAB_B1_A[v] * Math.cos(TAB_B1_B[v] + TAB_B1_C[v] * T)
     }
     
     Lat_eT = BO + B1 * T
     Lat_eT = gradi*(Lat_eT / 100000000)

//Raggio vettore
//Calcoli tabella RO
     var RO = 0
     for(v = 0; v<vtRO-1; v++) {
         RO = RO + TAB_RO_A[v] * Math.cos(TAB_RO_B[v] + TAB_RO_C[v] * T)
     }
//Calcoli tabella R1
     var R1 = 0
     for(v = 0; v<vtR1-1; v++) {
         R1 = R1 + TAB_R1_A[v] * Math.cos(TAB_R1_B[v] + TAB_R1_C[v] * T)
     }
//Calcoli tabella R2
     var R2 = 0
     for(v = 0; v<vtR2-1; v++) {
         R2 = R2 + TAB_R2_A[v] * Math.cos(TAB_R2_B[v] + TAB_R2_C[v] * T)
     }
//Calcoli tabella R3
     var R3 = 0
     for(v = 0; v<vtR3-1; v++) {
         R3 = R3 + TAB_R3_A[v] * Math.cos(TAB_R3_B[v] + TAB_R3_C[v] * T)
     }
//Calcoli tabella R4
     var R4 = 0
     for(v = 0; v<vtR4-1; v++) {
         R4 = R4 + TAB_R4_A[v] * Math.cos(TAB_R4_B[v] + TAB_R4_C[v] * T)
     }
     
     RvT = RO + R1 * T + R2 * T2 + R3 * T3 + R4 * T4
     RvT = RvT / 100000000

//------ non servono nella Terra minima se si attivassero vanno corretti e controllati
//Correzione per FK5
//     Lb = Rad(Lon_eT - 1.397 * (T * 10) - 0.00031 * ((T * 10) * (T * 10)))
//     CL = -0.09033 / 3600
//     CB = (0.03916 * (Math.cos(Lb) - Math.sin(Lb))) / 3600
//     Lon_eT = Lon_eT + CL
//     Lat_eT = Lat_eT + CB

//Correz per nutazione
 //    Nutazione(JD)
 //    Lon_eT = Lon_eT + Dpsi
//Correz per aberrazione
//     Lon_eT = Lon_eT - ((20.4898 / RvT) / 3600)
//Trasf. coordinate
 //    Ecl_in_Equa_Alfa(Lat_eT, Lon_eT, epsc)
 //    Ecl_in_Equa_Delta(Lat_eT, Lon_eT, epsc)
//    sd = (959.63 / RvT) / 3600 //in gradi
 //    parh = 0.0024 //parallasse del Sole in gradi
}