/*  (c) 2000-2001 Thierry Loiseau

	Calculs du Jour Julien pour année [-999 ; 9999] 

	---  18/08/2000 -------
	Intégration calculs perturbations planètes géantes...
	
	---  16/10/2000 -------	
	Calculs des phases lunaires 
	
	---  02/12/2000 -------
	Mise en place carte héliocentrique 
	
	
	---  26/01/2001 -------
	Calculs plus fins des heures de lever et coucher du Soleil ; affichage 
		de l'heure en HL (heure légale) ; reste problème heure d'été
		
	Mise en place du contrôle de l'heure d'été / heure d'hiver

	---  10/03/2001 -------
	Problème quadrant ad (donc altzim)
	ajout liens accès direct aux dates Equisols / Lever&coucher/ Phases Lunaires...
	
	---  29/07/2001 -------
	* Adaptation pour Opera Mac 5b2 ; correction pour iCab (symbol degré)
	
	---  14/08/2001 -------
	* Présentation des azimuts normalisée	
	* Prise en compte du paralaxe pour le calcul des coordonnées de la Lune

*/
var ra_so, de_so; // ligne 689
var ra_me,de_me,ra_ve, de_ve,ra_ma, de_ma,ra_ju, de_ju,ra_sa, de_sa,ra_lu, de_su;
var sdg=(navigator.platform!="MacPPC")?"°":"\u00b0";
if (navigator.userAgent.indexOf("iCab")>=0) sdg="°";
var icab;
var BetaTest=true;
var bbb=0;
var jj03,jj05,jj06,jj07,jj08,jj09,jj10,jj11;
var jourpq,moispq;
var nphase=10;
var position="position.htm?";
var poshelio="helio.htm?";
var aplatissement=0.99664719;
var psin, pcos; // qté nécessaire aux calculs paralaxes diurnes.
var a=0,longitude_vraie,rayon_vecteur,anomalie_vraie,jour_julien,interm;
var long_heliocentrique,lat_heliocentrique,zodiaque,equisol,equisols,apparent;
var long_soleil,long_mercure,long_venus,long_mars,long_jupiter,long_saturne,long_lune;
var lat_soleil,lat_mercure,lat_venus,lat_mars,lat_jupiter,lat_saturne,lat_lune;
var paralaxe_lune;
var lohme,lahme,lohve,lahve,lohma,lahma,lohju,lahju,lohsa,lahsa;
var delta,lat_geocentrique,epsilon,RA,DEC,flag;
var sideral,angle_horaire,azimut,hauteur,Horaire,latobs,lonobs,calhaut;
var datejour=new Date();
var j=datejour.getDate();
var mdj=datejour.getMonth();
var heurejj=datejour.getHours();
var minutejj=datejour.getMinutes();
var jsemaine=0;
var EQT; // Equation du Temps
var L_s, M_s, e_s, epsilon_s;
var winhelio=new Array(5);
var numwin=0;
var gmtv;
var hemisphere="N";
var hemisphereopp="S";
logo=new Image()
logo.src="../logo2.gif"
mdj++
var JJP; // jour_julien d'une phase lunaire
// variables date calculées -----

var jouract;
var moisact;
var anx;
var heurejjx;
var minutejjx;
var Nombre_jour, Fraction_Nombre_jour;
var ann; // était dans function calculs()

// ------------------------------

var an=datejour.getFullYear()
var d2r=Math.PI/180;
var r2d=180/Math.PI;
var bissex;

function Entier(valeur) {
	var a=0
	a=Math.round(valeur)
	if (a<0&&a<valeur) {a++} else {if (a>0&&a>valeur) {a--}};
return a;
}

function psin_pcos() {
	var u,latgeo;
	latgeo=parseFloat(document.forms[1].latobs.value);
	Hauteur_obs=parseFloat(document.forms[1].altitude.value);
	if (document.forms[1].latobs.value.substring(5,6)=="S") latgeo=-latgeo;
	u=Math.atan(aplatissement*Math.tan(latgeo*d2r));
	psin=aplatissement*Math.sin(u)+(Hauteur_obs/6378140)*Math.sin(latgeo*d2r);
	pcos=Math.cos(u)+(Hauteur_obs/6378140)*Math.cos(latgeo*d2r);
}


function format_long() {
	var longitude=document.forms[1].lonobs.value;
	var valeur=parseFloat(longitude);
	var modele="";
	var decal="E";
	valeur=Math.round(valeur*10);
	
	if (valeur>1800) valeur=1800;
	if (valeur<0) valeur=0;
	if (longitude.indexOf("W")>0||longitude.indexOf("w")>0) {decal="W"}
	modele=Entier(valeur/10)+".";
	if (valeur<1000) modele="0"+modele;
	if (valeur<100) modele="0"+modele;
	valeur=valeur-Entier(valeur/10)*10;
	modele+=valeur+decal;
	document.forms[1].lonobs.value=modele;

return true;
}


function format_lat() {
	var latitude=document.forms[1].latobs.value;
	var valeur=parseFloat(latitude);
	var modele="";
	var decal="N";
	valeur=Math.round(valeur*100);
	if (valeur>9000) valeur=9000;
	if (valeur<0) valeur=0;
	if (latitude.indexOf("S")>0||latitude.indexOf("s")>0) {decal="S"}
	modele=Entier(valeur/100)+".";
	if (valeur<1000) modele="0"+modele;
	valeur=valeur-Entier(valeur/100)*100;
	if (valeur<10) modele+="0"+valeur+decal; else modele+=valeur+decal;
	document.forms[1].latobs.value=modele;
return true;
}



function bissextile(anneeb) {

var bi=Entier(anneeb/4)
if (bi*4==anneeb) {bissex=1}
if (bissex&&(Entier(anneeb/100)==anneeb/100)&&(Entier(anneeb/400)!=anneeb/400)) {bissex=0}

}
function gmt_bon() {
var gmtv=parseFloat(document.forms[1].gmt.value);
var lon=parseFloat(document.forms[1].lonobs.value);
var gmt_defaut;
lon=lon/15;
gmt_defaut=Math.round(lon);
if (gmt_defaut<10) gmt_defaut="0"+gmt_defaut;
if (document.forms[1].lonobs.value.substring(5,6)=="W") 
	{lon=-lon;gmt_defaut="-"+gmt_defaut;}
	else gmt_defaut="+"+gmt_defaut;

if (gmtv-lon>4.5||gmtv-lon<-4.5) {alert("GMT incorrect : "+gmt_defaut);document.forms[1].gmt.value=gmt_defaut}
return true;
}

function Paques(annee,format) {

var a,b,c,d,e,f,g,h,i,k,q,m,n,p

// retourne la date de Pâques sous forme mm.jj

var resultat="bonjour"

a=Restediv(annee,19)
b=Quotient(annee,100)
c=Restediv(annee,100)
d=Quotient(b,4)
e=Restediv(b,4)
f=Quotient(b+8,25)
g=Quotient(b-f+1,3)
h=Restediv(19*a+b-d-g+15,30)
i=Quotient(c,4)
k=Restediv(c,4)
q=Restediv(32+2*e+2*i-h-k,7)
m=Quotient(a+11*h+22*q,451)
//
n=Quotient(h+q-7*m+114,31)
p=Restediv(h+q-7*m+114,31)
p++
jourpq=p;
//
moisenclair="avril";moispq=4;
if (n==3) {moisenclair="mars";moispq=3;};
if (format==1) {resultat=p+" "+moisenclair+" "+annee}
if (format==2) {resultat=n+p/100}
if (format==3) {resultat=annee+n/100+p/10000}
resultat=p+" "+moisenclair; //+" "+annee
return resultat;
//return p+" "+moisenclair
//return n+p/100;
}

//
function calculjj(){
//
// Variables locales
// 

//BetaTest=document.forms[2].beta.checked ;
var bhg,bhd,bh,hautg,hautd;
var mjj, ajj;
var bjj=0;
interm=gmt_bon();
hemisphere=document.forms[1].latobs.value.substring(5,6);
if (hemisphere=="N") hemisphereopp="S"; else hemisphereopp="N";
document.plune.src="Lune.jpg";
var jx;
var mdjx,anx;
var compteur;
anx=an
jx=j
mdjx=mdj
flag=false;
//
// Variables calcule date à partir de jj
//
var adj=0
var bdj=0
var cdj=0
var ddj=0
var edj=0
var fdj=0
var jdj=0
var zdj=0
var alpha=0
var alp2=0
var position;
var pos;
var p=0;
var jour_julienx

// récupération des paramètres (s'il y en a)

position=document.URL;
p=position.indexOf("index.htm?")+10;
if (p>10&&a==3) {
	a=0;
	pos=position.substring(p,p+12);

	document.forms[1].annee.value=pos.substring(0,4);
	document.forms[1].mois.value=pos.substring(4,6);
	document.forms[1].jour.value=pos.substring(6,8);
	document.forms[1].heurej.value=parseFloat(pos.substring(8,10))
		+parseFloat(document.forms[1].gmt.value);
	document.forms[1].minutej.value=pos.substring(10,12);
	heurejjx=parseFloat(document.forms[1].heurej.value);
	jouract=parseFloat(document.forms[1].jour.value);
	moisact=parseFloat(document.forms[1].mois.value);
	anx=parseFloat(document.forms[1].annee.value);
	verif_heure_d_ete(jouract,moisact,anx);

	if (document.forms[1].heure_ete.checked) heurejjx=heurejjx+1;
	if (heurejjx>23) {
		heurejjx-=24;
		heurejjx=(heurejjx<10)?("0"+heurejjx.toString()):heurejjx;
		jouract++;
		if (jouract==32&&(moisact==1||moisact==3||moisact==5||moisact==7||moisact==8
			||moisact==10||moisact==12)) {jouract=1;moisact++;}
		if (jouract==31&&(moisact==4||moisact==6||moisact==9||moisact==11)) 
			{jouract=1;moisact++}
		if (moisact==13) {moisact=1;anx++}
		if (moisact==2&&jouract==29&&((anx%4!=0)
			||((anx%100==0)&&(anx%400!=0)))) {moisact=3;jouract=1}
		if (moisact==2&&jouract==30) {moisact=3;jouract=1}
	}
	document.forms[1].annee.value=anx.toString();
	document.forms[1].mois.value=moisact.toString();
	document.forms[1].jour.value=jouract;
	document.forms[1].heurej.value=heurejjx;
}

if (a==3) {if (parseInt(document.forms[1].jj.value)) a=0; else a=4;}

if (a==2) {jour_julienx="";jds="";interm="";jouract="";moisact="";anx="";heurejjx="";minutejjx=""} 

else {

// Calcul date à partir de jj (jj saisi)

if (a==1) {
jdj=parseFloat(document.forms[1].jj.value);

//** jj+gmt
jdj+=parseFloat(document.forms[1].gmt.value)/24;

jdj+=0.5
zdj=Entier(jdj)
fdj=jdj-zdj
// parce que problème si 18h36 19h35...
fdj=Math.round(fdj*10000)/10000
//

adj=zdj
alpha=Entier((zdj-1867216.25)/36524.25)
alp2=Entier(alpha/4)

if (zdj>=2299161) {adj=zdj+1+alpha-alp2}
bdj=adj+1524
cdj=Entier((bdj-122.1)/365.25)
ddj=Entier(365.25*cdj)
edj=Entier((bdj-ddj)/30.6001)
edj2=Entier(30.6001*edj)
jx=bdj-ddj-edj2+fdj
mdjx=(edj<13.5)?edj-1:edj-13;
anx=(mdjx>2.5)?cdj-4716:cdj-4715;



//*A VOIR
//if (fdj==0) {jx++}
//fdj+=0.5
heurejjx=Entier(fdj*24)

minutejjx=Math.floor((fdj*24-heurejjx)*60);
//alert(jx);
jx=Entier(jx);

verif_heure_d_ete(jx,mdjx,anx);
if (document.forms[1].heure_ete.checked) heurejjx=heurejjx+1;
if (heurejjx>23) {
	heurejjx-=24;
	heurejjx=(heurejjx<10)?("0"+heurejjx.toString()):heurejjx;
	jx++;
	if (jx==32&&(mdjx==1||mdjx==3||mdjx==5||mdjx==7||mdjx==8
		||mdjx==10||mdjx==12)) {jx=1;mdjx++;}
	if (jx==31&&(mdjx==4||mdjx==6||mdjx==9||mdjx==11)) 
		{jx=1;mdjx++}
	if (mdjx==13) {mdjx=1;anx++}
	if (mdjx==2&&jx==29&&((anx%4!=0)
		||((anx%100==0)&&(anx%400!=0)))) {mdjx=3;jx=1}
	if (mdjx==2&&jx==30) {mdjx=3;jx=1}
	/*
	document.forms[1].annee.value=anx.toString();
	document.forms[1].mois.value=moisact.toString();
	document.forms[1].jour.value=jouract;
	document.forms[1].heurej.value=heurejjx;
	*/
}
a=8
} // a==1
 
// Affiche date et jj correspondant


if (a==4||a==8) {
if (a==4) {
datejour=new Date();
jx=datejour.getDate();
mdjx=datejour.getMonth();
//** jj-gmt
heurejjx=datejour.getHours(); //-parseFloat(document.forms[1].gmt.value);
minutejjx=datejour.getMinutes()
mdjx++
anx=datejour.getFullYear()
verif_heure_d_ete(jx,mdjx,anx);

//** jj-gmt
//if (document.forms[1].heure_ete.checked) heurejjx=heurejjx-1;

// prise en compte UTC

bissextile(anx);
if (heurejjx<0) {
	heurejjx+=24;
	jx--;
	if (jx<1) {
		mdjx--;
		jx=31;
		if (mdjx==0) {mdjx=12;anx--} 
		else {
			if (mdjx==4||mdjx==6||mdjx==9||mdjx==11) {jx=30}
			if (mdjx==2) {jx=28+bissex}
		}
	}
}
if (heurejjx>=24) {
	heurejjx-=24;
	jx++;
	interm=31; // nbre jour dans le mois
	if (mdjx==4||mdjx==6||mdjx==9||mdjx==11) {interm=30}
	if (mdjx==2) {interm=28+bissex}
	if (jx>interm) {
		jx=1;
		mdjx++;
		if (mdjx==13) {mdjx=1;anx++}
	}
}

} // fin a==4
a=0;
document.forms[1].annee.value=anx;
document.forms[1].jour.value=jx;
document.forms[1].mois.value=mdjx;
document.forms[1].heurej.value=heurejjx;
document.forms[1].minutej.value=minutejjx;

} // fin (a==4||a==8)

ann=parseInt(document.forms[1].annee.value);
if (ann<-999) ann=-999;
if (ann>9999) ann=9999;
bissextile(ann);
jouract=parseFloat(document.forms[1].jour.value);
moisact=parseFloat(document.forms[1].mois.value);
heurejjx=parseFloat(document.forms[1].heurej.value);
minutejjx=parseFloat(document.forms[1].minutej.value);
anx=ann;
if (a==0){
verif_heure_d_ete(jouract,moisact,anx); // *** A VERIFIER
if (moisact>12) moisact=12; else if (moisact<1) moisact=1;
if (jouract<1) {jouract=1}
if (jouract>31) {jouract=31}
if ((moisact==4||moisact==6||moisact==9||moisact==11)&&(jouract==31)) {jouract=30}
if (moisact==2&&jouract>28) {if (bissex) jouract=29; else jouract=28;}
} // fin de if (a==0)


//
// calcul jj
// **

bjj=2-Entier(anx/100)+Entier(Entier(anx/100)/4); 
if ((anx+moisact/100+(jouract+heurejjx/24+minutejjx/1440)/10000)<1582.1015) {bjj=0}
if (moisact<3) {ann--;moisact+=12}
ajj=Entier(365.25*ann)

jour_julien=ajj+(jouract+heurejjx/24+minutejjx/1440)+1720994.5+bjj+Entier(30.6001*(moisact+1))

jour_julien-=parseFloat(document.forms[1].gmt.value)/24;
if (document.forms[1].heure_ete.checked) jour_julien=jour_julien-1/24;
//** jj-gmt

jour_julienx=jour_julien;
//** jj-gmt


if (moisact>12) {moisact-=12}
//
// calcul jour de la semaine
//
ajj=Entier(jour_julien+1.5);
alpha=Entier(ajj/7)

jsemaine=ajj-alpha*7
jds="dimanche"
if (jsemaine==1) {jds="lundi"}
if (jsemaine==2) {jds="mardi"}
if (jsemaine==3) {jds="mercredi"}
if (jsemaine==4) {jds="jeudi"}
if (jsemaine==5) {jds="vendredi"}
if (jsemaine==6) {jds="samedi"}
document.forms[0].jds.value=jds;
} // fin de if (a==2)
if (jouract<10) document.forms[1].jour.value="0"+jouract; else document.forms[1].jour.value=jouract;
if (moisact<10) document.forms[1].mois.value="0"+moisact; else document.forms[1].mois.value=moisact;

document.forms[1].jj.value=Math.floor(jour_julienx*100000000)/100000000;
interm=anx;
if (anx>10000) anx=9999;
if (anx<-999) anx=-999; 
document.forms[1].annee.value=anx;
 
if (heurejjx<10) document.forms[1].heurej.value="0"+heurejjx; else document.forms[1].heurej.value=heurejjx;
if (minutejjx<10) document.forms[1].minutej.value="0"+minutejjx; else document.forms[1].minutej.value=minutejjx;
if (a==2) 
{
	// anciennement : mise à blanc de chaque champ
} 

else {

psin_pcos();

//* jj + gmt

jour_julien=parseFloat(document.forms[1].jj.value); //jour_julienx;

//*************************** 1ere approche

// tps sidéral à Greenwich

sideral=Entier(jour_julien-0.5)+0.5;
sideral=(sideral-2415020)/36525;
sideral=0.276919398+100.0021359*sideral+0.000001075*sideral*sideral;
sideral-=Entier(sideral);
sideral*=24;

latobs=document.forms[1].latobs.value;
if (latobs.substring(5,6)=="N") latobs=parseFloat(latobs); else latobs=-parseFloat(latobs);
lonobs=document.forms[1].lonobs.value;

// Ici, substring() utilisé parce que problème avec Opera
// il attend un nombre exponentiel du style 001.4E01 !!!
// d'où le retrait du 'E' !!!

if (lonobs.substring(5,6)=="E") lonobs=-parseFloat(lonobs.substring(0,5)); else lonobs=parseFloat(lonobs.substring(0,5));
//alert(document.forms[1].lonobs.value+"\n"+lonobs);
interm=sideral-lonobs/15;
if (interm<0) interm+=24;
flag=true;
document.forms[6].paques.value=Paques(document.forms[1].annee.value)
interm=l_app(Entier(jour_julien-0.5)+0.5);
//***************************

/* Calculs dichotomiques heure lever et coucher */
gmtv=parseFloat(document.forms[1].gmt.value);
bhg=0;
bhd=18;
bh=bhg;
angle_horaire=	sideral-lonobs/15+1.002737908*bh-gmtv;
interm=altzim();
haug=calhaut;
bh=bhd;
angle_horaire=	sideral-lonobs/15+1.002737908*bh-gmtv;
interm=altzim();
haud=calhaut;
compteur=0;
do {
	bh=(bhg+bhd)/2;
	angle_horaire=	sideral-lonobs/15+1.002737908*bh-gmtv;
	interm=altzim();
	compteur++;
	if (calhaut>-0.6) {bhd=bh;haud=calhaut} else {bhg=bh;haug=calhaut}
	
} while ((calhaut<-0.9||calhaut>-0.3)&&compteur<20);

bh+=24;
if (bh>=24) bh-=24;

//*************************** 2eme approche LEVER

// tps sidéral à Greenwich

sideral=Entier(jour_julien-0.5)+bh/24;
sideral=(sideral-2415020)/36525;
sideral=0.276919398+100.0021359*sideral+0.000001075*sideral*sideral;
sideral-=Entier(sideral);
sideral*=24;

flag=true;

interm=l_app(Entier(jour_julien-0.5)+0.5+bh/24);

//*************************** 2eme approche LEVER

bhg=0;
bhd=24;
bh=bhg;
angle_horaire=	sideral-lonobs/15+1.002737908*bh-gmtv;
interm=altzim();
haug=calhaut;
bh=bhd;
angle_horaire=	sideral-lonobs/15+1.002737908*bh-gmtv;
interm=altzim();
haud=calhaut;
compteur=0;
do {
	bh=(bhg+bhd)/2;
	angle_horaire=	sideral-lonobs/15+1.002737908*bh-gmtv;
	interm=altzim();
	compteur++;
	if (calhaut>-0.6) {bhd=bh;haud=calhaut} else {bhg=bh;haug=calhaut}
	
} while ((calhaut<-0.9||calhaut>-0.3)&&compteur<20);

bh+=24; //-gmtv;
if (bh>=24) bh-=24;
if (document.forms[1].heure_ete.checked) bh++;
bh=Math.round(bh*60)/60
bh*=15;
if (calhaut<-0.9||calhaut>-0.3)  document.forms[3].d5.value=(calhaut>-0.3)?"     *":"     -";
	else document.forms[3].d5.value=hms(bh).substring(0,8)+" HL";
//*************************** 1ere approche COUCHER

// tps sidéral à Greenwich

sideral=Entier(jour_julien-0.5)+0.5;
sideral=(sideral-2415020)/36525;
sideral=0.276919398+100.0021359*sideral+0.000001075*sideral*sideral;
sideral-=Entier(sideral);
sideral*=24;

flag=true;

interm=l_app(Entier(jour_julien-0.5)+0.5);


//*************************** 1ERE APPROCHE COUCHER
bhg=0;
bhd=24;
bh=bhg;
angle_horaire=	sideral-lonobs/15+1.002737908*bh-gmtv;
interm=altzim();
haug=calhaut;
bh=bhd;
angle_horaire=	sideral-lonobs/15+1.002737908*bh-gmtv;
interm=altzim();
haud=calhaut;
compteur=0;
do {
	bh=(bhg+bhd)/2;
	angle_horaire=	sideral-lonobs/15+1.002737908*bh-gmtv;
	interm=altzim();
	compteur++;
	if (calhaut<=-0.6) {bhd=bh;haud=calhaut} else {bhg=bh;haug=calhaut}
	
} while ((calhaut<-0.9||calhaut>-0.3)&&compteur<40);

flag=false

bh+=24; //-gmtv;
if (bh>=24) bh-=24;

//*************************** 2eme approche coucher

// tps sidéral à Greenwich

sideral=Entier(jour_julien-0.5)+bh/24; 
sideral=(sideral-2415020)/36525;
sideral=0.276919398+100.0021359*sideral+0.000001075*sideral*sideral;
sideral-=Entier(sideral);
sideral*=24;

flag=true;
interm=l_app(Entier(jour_julien-0.5)+0.5+bh/24);
//

//*************************** 2eme approche coucher

bhg=6;
bhd=24;
bh=bhg;
angle_horaire=	sideral-lonobs/15+1.002737908*bh-gmtv;
interm=altzim();
haug=calhaut;
bh=bhd;
angle_horaire=	sideral-lonobs/15+1.002737908*bh-gmtv;
interm=altzim();
haud=calhaut;
compteur=0;
do {
	bh=(bhg+bhd)/2;
	angle_horaire=	sideral-lonobs/15+1.002737908*bh-gmtv;
	interm=altzim();
	compteur++;
	if (calhaut<=-0.6) {bhd=bh;haud=calhaut} else {bhg=bh;haug=calhaut}
	
} while ((calhaut<-0.9||calhaut>-0.3)&&compteur<40);

flag=false

bh+=24;
if (bh>=24) bh-=24;
if (document.forms[1].heure_ete.checked) bh++;
//document.forms[1].heure_ete.checked=false;
bh=Math.round(bh*60)/60
bh*=15;

if (calhaut<-0.9||calhaut>-0.3) {
	document.forms[4].d4.value=(calhaut>-0.3)?"     *":"     -";
	document.forms[3].d5.value=document.forms[4].d4.value;
	}
	else document.forms[4].d4.value=hms(bh).substring(0,8)+" HL";

//***************************

interm=soleil();
interm=l_app(jour_julien);
interm=parseFloat(document.forms[1].heurej.value)-parseFloat(document.forms[1].gmt.value)
	+parseFloat(document.forms[1].minutej.value)/60
	-((document.forms[1].heure_ete.checked)?1:0);
if (interm<0) interm+=24;
angle_horaire=	sideral-lonobs/15+1.002737908*interm;
//alert(angle_horaire+"\n"+sideral+"\n"+lonobs+"\n"+interm);
document.forms[11].lSG.value=dms(0);
flag=true;
interm=altzim();
flag=false;
document.forms[12].dSH.value=azimut;
document.forms[13].lSH.value=hauteur;
document.forms[14].raS.value=hms(RA);
document.forms[15].deS.value=dms(DEC);
ra_so=RA;
de_so=DEC;

interm=mercure();
document.forms[16].d6.value=dms(long_mercure);
document.forms[17].l6.value=dms(lat_mercure);
interm=altzim();
document.forms[18].d7.value=azimut;
etat_mercure="v";
if (ABS(long_heliocentrique-long_soleil)>270||
	ABS(long_heliocentrique-long_soleil)<90) etat_mercure="s";

if (ABS(long_mercure-long_soleil)>-0.25&&
	ABS(long_mercure-long_soleil)<0.25&&(
	ABS(long_heliocentrique-long_soleil)>300||
	ABS(long_heliocentrique-long_soleil)<60)) etat_mercure="i";

document.forms[19].l7.value=hauteur;
document.forms[20].ra1.value=hms(RA);
document.forms[21].de1.value=dms(DEC);
ra_me=RA;
de_me=DEC;

interm=venus();
document.forms[22].d8.value=dms(long_venus);
document.forms[23].l8.value=dms(lat_venus);
interm=altzim();
document.forms[24].d9.value=azimut;

etat_venus="v";
if (ABS(long_heliocentrique-long_soleil)>270||
	ABS(long_heliocentrique-long_soleil)<90) etat_venus="s";

if (ABS(long_venus-long_soleil)>-0.25&&
	ABS(long_venus-long_soleil)<0.25&&(
	ABS(long_heliocentrique-long_soleil)>300||
	ABS(long_heliocentrique-long_soleil)<60)) etat_venus="i";

document.forms[25].l9.value=hauteur;
document.forms[26].ra2.value=hms(RA);
document.forms[27].de2.value=dms(DEC);
ra_ve=RA;
de_ve=DEC;

interm=mars();
document.forms[28].d10.value=dms(long_mars);
document.forms[29].l10.value=dms(lat_mars);
interm=altzim();
document.forms[30].d11.value=azimut;
document.forms[31].l11.value=hauteur;
document.forms[32].ra3.value=hms(RA);
document.forms[33].de3.value=dms(DEC);
ra_ma=RA;
de_ma=DEC;

interm=jupiter();
document.forms[34].d12.value=dms(long_jupiter);
document.forms[35].l12.value=dms(lat_jupiter);
interm=altzim();
document.forms[36].d13.value=azimut;
document.forms[37].l13.value=hauteur;
document.forms[38].ra4.value=hms(RA);
document.forms[39].de4.value=dms(DEC);
ra_ju=RA;
de_ju=DEC;

interm=saturne();
document.forms[40].d14.value=dms(long_saturne);
document.forms[41].l14.value=dms(lat_saturne);
interm=altzim(); 
document.forms[42].d15.value=azimut;
document.forms[43].l15.value=hauteur;
document.forms[44].ra5.value=hms(RA);
document.forms[45].de5.value=dms(DEC);
ra_sa=RA;
de_sa=DEC;

interm=position_lune();
document.forms[46].d16.value=dms(long_lune);
document.forms[47].l16.value=dms(lat_lune);
bbb=1;
interm=altzim();
bbb=0;
document.forms[48].d17.value=azimut;
document.forms[49].l17.value=hauteur;
document.forms[50].ra6.value=hms(RA);
document.forms[51].de6.value=dms(DEC);
ra_lu=RA;
de_lu=DEC;

} // fin else

nphase=10
nphase=long_lune-long_soleil;
if (nphase<0) nphase+=360;
nphase=Math.round(nphase*20/360)+10;
if (nphase>29) nphase=10;
if (hemisphere=="N") document.plune.src="../phases/moon-"+nphase+".gif";
else document.plune.src="../phases/noom-"+nphase+".gif";
interm=urlposition();
interm=urlhelio();

}

// ************************ Fin procédure principale *******************************

function altzim() {
var essai,ca,cb, orien,orient;
	Horaire=angle_horaire*15-RA;
	//if (bbb==1) alert(RA+"\n"+angle_horaire);
	if (hemisphere=="N") {
		azimut=Math.sin(Horaire*d2r);
		essai=(Math.cos(Horaire*d2r)*Math.sin(latobs*d2r)
			-Math.tan(DEC*d2r)*Math.cos(latobs*d2r))
	}
	else
	{
		azimut=Math.sin(-Horaire*d2r);	
		essai=(Math.cos(-Horaire*d2r)*Math.sin(-latobs*d2r)
			-Math.tan(-DEC*d2r)*Math.cos(-latobs*d2r))
	}

	azimut=azimut/essai;
	if (hemisphere=="N") azimut=Math.atan(azimut)*r2d; 
		else azimut=Math.atan(-azimut)*r2d; 
 
	azimut=Restediv(azimut+36000,360);
	Horaire=Restediv(Horaire+36000,360);
	
	azimut=Quadrant(azimut,Horaire);
	
	ca=Math.floor((Restediv(Horaire,360))/90);
	cb=Math.floor((Restediv(azimut,360))/90);

	if (Math.abs(azimut-Horaire)>90) azimut+=180;
	
	hauteur=Math.sin(latobs*d2r)*Math.sin(DEC*d2r)
			+Math.cos(latobs*d2r)*Math.cos(DEC*d2r)*Math.cos(Horaire*d2r);
	hauteur=Math.asin(hauteur)*r2d;
	calhaut=hauteur;

	if (hauteur<-3&&!flag) {azimut="     -     ";hauteur=azimut} 
	else {
			essai=Math.round(azimut);
			ca=" ";
			essai-=180; 							// [+] rmk : modif du 14/08
			essai=Restediv(essai+36000,360); 		// [+] rmk : modif du 14/08
			//if (essai>180) essai=essai-360;		// [-] rmk : modif du 14/08
			//if (essai<0) {essai=-essai;ca="-";}	// [-] rmk : modif du 14/08
			
			azimut=essai;
			
			/*										// [-] rmk : modif du 14/08
			if (ca=="-") 
						essai=essai+sdg+" ("+hemisphereopp+"E)"; 
			else 
						essai=essai+sdg+"("+hemisphereopp+"W)";
			*/
			// portion ajoutée	[+] rmk : modif du 13/08
					
			orien=Math.round(essai/22.5)*22.5;
			if (orien==0) 		orient="N";
			if (orien==22.5) 	orient="NNE";
			if (orien==45)		orient="NE";
			if (orien==67.5)	orient="ENE";
			if (orien==90)		orient="E";
			if (orien==112.5)	orient="ESE";
			if (orien==135)		orient="SE";
			if (orien==157.5)	orient="SSE";
			if (orien==180)		orient="S";
			if (orien==202.5)	orient="SSW";
			if (orien==225)		orient="SW";
			if (orien==247.5)	orient="WSW";
			if (orien==270)		orient="W";
			if (orien==292.5)	orient="WNW";
			if (orien==315)		orient="NW";
			if (orien==337.5) 	orient="NNW";
			if (orien==360) 	orient="N";
			// fin portion ajoutée
			
			if (azimut<100) essai=" "+essai;
			if (azimut<10) essai=" "+essai;
			if (azimut>0) essai=" "+essai;
			
			azimut=ca+essai+sdg+" "+orient; 
			// rmk modif azimut=ca+essai;
			
			hauteur=dms(hauteur)
		}
}

function Restediv(dividende,diviseur) {
return (dividende-Entier(dividende/diviseur)*diviseur);
}

function Quotient(dividende,diviseur) {
return Entier(dividende/diviseur);
}


function mercure() {
var t,L,a,i,w,omega,M,M1,AE,v,r,u,N,D,jj
//jj=parseFloat(document.forms[1].jj.value);
t=(jour_julien-2415020)/36525;
L=Restediv(178.179078+149474.07078*t+0.0003011*t*t+36000,360);
a=0.3870986
e=Restediv(0.20561421+0.00002046*t-0.000000030*t*t+36000,360);
i=Restediv(7.002881+0.0018608*t-0.0000183*t*t+36000,360);
w=Restediv(28.753753+0.3702806*t+0.0001208*t*t+36000,360);
omega=Restediv(47.145944+1.1852083*t+0.0001739*t*t+36000,360);

M1=Restediv(102.27938+149472.51529*t+0.000007*t*t+3600,360);
AE=Kepler(M1,e)
v=Restediv(Math.atan(Math.sqrt((1+e)/(1-e))*Math.tan(AE*Math.PI/360))*2*r2d+36000000,360);
// quadrant 
v=Quadrant(v,AE);
r=a*(1-e*Math.cos(AE*d2r));
u=Restediv(L+v-M1-omega+36000,360);

// longitude héliocentrique = l1

l2=Math.cos(i*d2r)*Math.sin(u*d2r)
l3=Math.cos(u*d2r)
l1=Math.atan(l2/l3)*r2d;
// quadrant
l1=Quadrant(l1,u);
l1+=omega;
l1=Restediv(l1,360);
// longitude géocentrique = long_mercure
// On recalcule à nouveau l_app(jour_julien) pour retrouver rayon_vecteur et longitude_vraie du soleil
// car la fonction Kepler() réutilise cette fonction et fausse la suite des opérations...

b=Math.asin(Math.sin(u*d2r)*Math.sin(i*d2r))*r2d;
N=r*Math.cos(b*d2r)*Math.sin((l1-longitude_vraie)*d2r);
D=r*Math.cos(b*d2r)*Math.cos((l1-longitude_vraie)*d2r)+rayon_vecteur;

delta=Math.sqrt(N*N+D*D+(r*Math.sin(b*d2r))*(r*Math.sin(b*d2r)));
lat_geocentrique=Math.asin(r*Math.sin(b*d2r)/delta)*r2d;
lat_mercure=lat_geocentrique;

long_mercure=Math.atan(N/D)*r2d;
// quadrant
interm=l1-longitude_vraie
long_mercure=Quadrant(long_mercure,interm);
interm=long_mercure+longitude_vraie
long_mercure=Restediv(interm,360);
long_heliocentrique=l1;
lat_heliocentrique=b;
lohme=l1;
lahme=b;
RA=Math.sin(long_mercure*d2r)*Math.cos(epsilon*d2r)-Math.tan(lat_mercure*d2r)*Math.sin(epsilon*d2r);
RA=RA/Math.cos(long_mercure*d2r);
RA=Math.atan(RA)*r2d;
RA=Restediv(RA+36000,360);
//RA=Quadrant(RA,long_mercure);
if ((Math.abs(RA-long_mercure)>90)&&(Math.abs(RA-long_mercure)<270)) RA+=180; //if (Math.abs(RA-long_mercure)>90) RA+=180;
RA=Restediv(RA+36000,360);
DEC=Math.sin(lat_mercure*d2r)*Math.cos(epsilon*d2r)+Math.cos(lat_mercure*d2r)*Math.sin(epsilon*d2r)*Math.sin(long_mercure*d2r);
DEC=Math.asin(DEC)*r2d;
}

function venus() {

var t,L,a,i,w,omega,M,M1,AE,v,r,u,N,D,jj
jj=parseFloat(document.forms[1].jj.value);
t=(jj-2415020)/36525;
L=Restediv(342.767053+58519.21191*t+0.0003097*t*t+36000,360);
a=0.7233316
e=Restediv(0.00682069-0.00004774*t+0.000000091*t*t+36000,360);
i=Restediv(3.393631+0.0010058*t-0.0000010*t*t+36000,360);
w=Restediv(54.384186+0.5081861*t-0.0013864*t*t+36000,360);
omega=Restediv(75.779647+0.89985*t+0.00041*t*t+36000,360);
M1=Restediv(212.60322+58517.80387*t+0.001286*t*t+36000,360);
AE=Kepler(M1,e)
v=Restediv(Math.atan(Math.sqrt((1+e)/(1-e))*Math.tan(AE*Math.PI/360))*2*r2d+36000000,360);
// quadrant 
v=Quadrant(v,AE);
r=a*(1-e*Math.cos(AE*d2r));
u=Restediv(L+v-M1-omega+36000,360);
l2=Math.cos(i*d2r)*Math.sin(u*d2r)
l3=Math.cos(u*d2r)
l1=Math.atan(l2/l3)*r2d;
l1=Quadrant(l1,u);
l1+=omega;
l1=Restediv(l1,360);

b=Math.asin(Math.sin(u*d2r)*Math.sin(i*d2r))*r2d;
N=r*Math.cos(b*d2r)*Math.sin((l1-longitude_vraie)*d2r);
D=r*Math.cos(b*d2r)*Math.cos((l1-longitude_vraie)*d2r)+rayon_vecteur;

delta=Math.sqrt(N*N+D*D+(r*Math.sin(b*d2r))*(r*Math.sin(b*d2r)));
lat_geocentrique=Math.asin(r*Math.sin(b*d2r)/delta)*r2d;
lat_venus=lat_geocentrique;

long_venus=Math.atan(N/D)*r2d;

// quadrant

long_venus=Quadrant(long_venus,l1-longitude_vraie);
long_venus=Restediv(longitude_vraie+long_venus,360);
long_heliocentrique=l1;
lat_heliocentrique=b;
lohve=l1;
lahve=b;
RA=Math.sin(long_venus*d2r)*Math.cos(epsilon*d2r)-Math.tan(lat_venus*d2r)*Math.sin(epsilon*d2r);
RA=RA/Math.cos(long_venus*d2r);
RA=Math.atan(RA)*r2d;
RA=Restediv(RA+36000,360);
//RA=Quadrant(RA,long_venus);
if ((Math.abs(RA-long_venus)>90)&&(Math.abs(RA-long_venus)<270)) RA+=180; //if (Math.abs(RA-long_venus)>90) RA+=180;
RA=Restediv(RA+36000,360);
DEC=Math.sin(lat_venus*d2r)*Math.cos(epsilon*d2r)+Math.cos(lat_venus*d2r)*Math.sin(epsilon*d2r)*Math.sin(long_venus*d2r);
DEC=Math.asin(DEC)*r2d;
}

function mars() {
var t,L,a,i,w,omega,M,M1,AE,v,r,u,N,D,jj
//jj=parseFloat(document.forms[1].jj.value);
t=(jour_julien-2415020)/36525;
L=Restediv(293.737334+19141.69551*t+0.0003107*t*t+36000,360);
a=1.5236883
e=Restediv(0.09331290+0.000092064*t-0.000000077*t*t+36000,360);
i=Restediv(1.850333-0.0006750*t+0.0000126*t*t+36000,360);
w=Restediv(285.431761+1.0697667*t+0.0001313*t*t+0.00000414*t*t*t+36000,360);
omega=Restediv(48.786442+0.7709917*t-0.0000014*t*t-0.00000533*t*t*t+36000,360);

M1=Restediv(319.51913+19139.85475*t+0.000181*t*t+3600,360);
AE=Kepler(M1,e)
v=Restediv(Math.atan(Math.sqrt((1+e)/(1-e))*Math.tan(AE*Math.PI/360))*2*r2d+36000000,360);

// quadrant 

v=Quadrant(v,AE);
r=a*(1-e*Math.cos(AE*d2r));
u=Restediv(L+v-M1-omega+36000,360);

// longitude héliocentrique = l1

l2=Math.cos(i*d2r)*Math.sin(u*d2r)
l3=Math.cos(u*d2r)
l1=Math.atan(l2/l3)*r2d;
// quadrant
l1=Quadrant(l1,u);
l1+=omega;
l1=Restediv(l1,360);

// longitude géocentrique = long_mars
// On recalcule à nouveau l_app(jour_julien) pour retrouver rayon_vecteur et longitude_vraie du soleil
// car la fonction Kepler() réutilise cette fonction et fausse la suite des opérations...


b=Math.asin(Math.sin(u*d2r)*Math.sin(i*d2r))*r2d;
N=r*Math.cos(b*d2r)*Math.sin((l1-longitude_vraie)*d2r);
D=r*Math.cos(b*d2r)*Math.cos((l1-longitude_vraie)*d2r)+rayon_vecteur;

delta=Math.sqrt(N*N+D*D+(r*Math.sin(b*d2r))*(r*Math.sin(b*d2r)));
lat_geocentrique=Math.asin(r*Math.sin(b*d2r)/delta)*r2d;
lat_mars=lat_geocentrique;


long_mars=Math.atan(N/D)*r2d;

// quadrant

long_mars=Quadrant(long_mars,l1-longitude_vraie);
long_mars=Restediv(long_mars+longitude_vraie,360);
long_heliocentrique=l1;
lat_heliocentrique=b;
lohma=l1;
lahma=b;
RA=Math.sin(long_mars*d2r)*Math.cos(epsilon*d2r)-Math.tan(lat_mars*d2r)*Math.sin(epsilon*d2r);
RA=RA/Math.cos(long_mars*d2r);
RA=Math.atan(RA)*r2d;
RA=Restediv(RA+36000,360);
//RA=Quadrant(RA,long_mars);
if ((Math.abs(RA-long_mars)>90)&&(Math.abs(RA-long_mars)<270)) RA+=180; //if (Math.abs(RA-long_mars)>90) RA+=180;
RA=Restediv(RA+36000,360);
DEC=Math.sin(lat_mars*d2r)*Math.cos(epsilon*d2r)+Math.cos(lat_mars*d2r)*Math.sin(epsilon*d2r)*Math.sin(long_mars*d2r);
DEC=Math.asin(DEC)*r2d;

}


function jupiter() {

var t,L,a,i,w,omega,M,M1,AE,v,r,u,N,D,jj;
var up,pp,qp,vp,zeta,ap,bp,cp,dp;
var cor1,cor2,cor3,cor4;

t=(jour_julien-2415020)/36525;
L=Restediv(238.049257+3036.301986*t+0.0003347*t*t-0.00000165*t*t*t+36000,360);
a=5.202561
e=Restediv(0.04833475+0.000164180*t-0.0000004676*t*t-0.0000000017*t*t*t+36000,360);
i=Restediv(1.308736-0.0056961*t+0.0000039*t*t+36000,360);
w=Restediv(273.277558+0.5994317*t+0.00070405*t*t+0.00000508*t*t*t+36000,360);
omega=Restediv(99.443414+1.010530*t+0.00035222*t*t-0.00000851*t*t*t+36000,360);
M1=Restediv(225.32833+3034.69202*t-0.000722*t*t+3600,360);

/*

CALCULS LIES A LA PERTURBATION DES PLANETES GEANTES
(intégrés avant la formule de Kepler)

*/

up=t/5+0.1;
pp=237.475+3034.9061*t;
qp=265.916+1222.1139*t;
vp=5*qp-2*pp;
zeta=qp-pp;

ap=(0.3314-0.0103*up-0.0047*up*up)*Math.sin(vp*d2r);
ap+=(0.0032-0.0644*up+0.0021*up*up)*Math.cos(vp*d2r);
ap+=0.0136*Math.sin(zeta*d2r)+0.0185*Math.sin(2*zeta*d2r)+0.0067*Math.sin(3*zeta*d2r)*Math.sin(qp*d2r);
ap+=(0.0073*Math.sin(zeta*d2r)+0.064*Math.sin(2*zeta*d2r)-0.0338*Math.cos(zeta*d2r))*Math.sin(qp*d2r);
ap-=(0.03357*Math.sin(zeta*d2r)+0.0063*Math.cos(zeta*d2r)+0.0067*Math.cos(2*zeta*d2r))*Math.cos(qp*d2r);

bp=(361+13*up)*Math.sin(vp*d2r)+(129-58*up)*Math.cos(vp*d2r);
bp+=(128*Math.cos(zeta*d2r)-676*Math.sin(zeta*d2r)-111*Math.sin(2*zeta*d2r))*Math.sin(qp*d2r);
bp+=(146*Math.sin(zeta*d2r)-82+607*Math.cos(zeta*d2r)+99*Math.cos(2*zeta*d2r)+51*Math.cos(3*zeta*d2r))*Math.cos(qp*d2r);
bp-=(96*Math.sin(zeta*d2r)+100*Math.cos(zeta*d2r))*Math.sin(2*qp*d2r);
bp-=(96*Math.sin(zeta*d2r)-102*Math.cos(zeta*d2r))*Math.cos(2*qp*d2r);

cp=(0.0072-0.0031*up)*Math.sin(vp*d2r)-0.0204*Math.cos(vp*d2r);
cp+=(0.0073*Math.sin(zeta*d2r)+0.034*Math.cos(zeta*d2r)+0.0056*Math.cos(2*zeta*d2r))*Math.sin(qp*d2r);
cp+=(0.0378*Math.sin(zeta*d2r)+0.0062*Math.sin(2*zeta*d2r)-0.0066*Math.cos(zeta*d2r))*Math.cos(qp*d2r);
cp-=0.0054*Math.sin(zeta*d2r)*Math.sin(2*qp*d2r)+0.0055*Math.cos(zeta*d2r)*Math.cos(2*qp*d2r);

dp=-263*Math.cos(vp*d2r)+205*Math.cos(zeta*d2r)+693*Math.cos(2*zeta*d2r)+312*Math.cos(3*zeta*d2r);
dp+=299*Math.sin(zeta*d2r)*Math.sin(qp*d2r);
dp+=(204*Math.sin(2*zeta*d2r)-337*Math.cos(zeta*d2r))*Math.cos(qp*d2r);

cor1=ap; 			// 	longitude moyenne
cor2=ap-cp/e;		//	anomalie_moyenne
cor3=bp/1000000;	//	excentricité moyenne
cor4=dp/1000000;	//	demi-grand axe

L+=cor1;
M1+=cor2;
e+=cor3;
a+=cor4;
// FIN CALCULS PERTURBATIONS

AE=Kepler(M1,e)
v=Restediv(Math.atan(Math.sqrt((1+e)/(1-e))*Math.tan(AE*Math.PI/360))*2*r2d+36000000,360);
// quadrant 
v=Quadrant(v,AE);
r=a*(1-e*Math.cos(AE*d2r));
u=Restediv(L+v-M1-omega+36000,360);
l2=Math.cos(i*d2r)*Math.sin(u*d2r)
l3=Math.cos(u*d2r)
l1=Math.atan(l2/l3)*r2d;
// quadrant
l1=Quadrant(l1,u);
l1+=omega;
l1=Restediv(l1,360);
// longitude géocentrique = long_jupiter

b=Math.asin(Math.sin(u*d2r)*Math.sin(i*d2r))*r2d;
N=r*Math.cos(b*d2r)*Math.sin((l1-longitude_vraie)*d2r);
D=r*Math.cos(b*d2r)*Math.cos((l1-longitude_vraie)*d2r)+rayon_vecteur;

delta=Math.sqrt(N*N+D*D+(r*Math.sin(b*d2r))*(r*Math.sin(b*d2r)));
lat_geocentrique=Math.asin(r*Math.sin(b*d2r)/delta)*r2d;
lat_jupiter=lat_geocentrique;


long_jupiter=Math.atan(N/D)*r2d;
// quadrant
long_jupiter=Quadrant(long_jupiter,l1-longitude_vraie);
long_jupiter=Restediv(long_jupiter+longitude_vraie,360);
long_heliocentrique=l1;
lat_heliocentrique=b;
lohju=l1;
lahju=b;
RA=Math.sin(long_jupiter*d2r)*Math.cos(epsilon*d2r)-Math.tan(lat_jupiter*d2r)*Math.sin(epsilon*d2r);
RA=RA/Math.cos(long_jupiter*d2r);
RA=Math.atan(RA)*r2d;
RA=Restediv(RA+36000,360);
//RA=Quadrant(RA,long_jupiter);
if ((Math.abs(RA-long_jupiter)>90)&&(Math.abs(RA-long_jupiter)<270)) RA+=180; //if (Math.abs(RA-long_jupiter)>90) RA+=180;
RA=Restediv(RA+36000,360);
DEC=Math.sin(lat_jupiter*d2r)*Math.cos(epsilon*d2r)+Math.cos(lat_jupiter*d2r)*Math.sin(epsilon*d2r)*Math.sin(long_jupiter*d2r);
DEC=Math.asin(DEC)*r2d;


}

function saturne() {
var t,L,a,i,w,omega,M,M1,AE,v,r,u,N,D,jj
var up,pp,qp,vp,zeta,ap,bp,cp,dp;
var cor1,cor2,cor3,cor4;

t=(jour_julien-2415020)/36525;
L=Restediv(266.564377+1223.509884*t+0.0003245*t*t-0.0000058*t*t*t+36000,360);
a=9.554747
e=Restediv(0.05589232-0.00034550*t-0.000000728*t*t+0.00000000074*t*t*t+36000,360);
i=Restediv(2.492519-0.0039189*t-0.00001549*t*t+0.00000004*t*t*t+36000,360);
w=Restediv(338.3078+1.0852207*t+0.00097854*t*t+0.00000992*t*t*t+36000,360);
omega=Restediv(112.790414+0.8731951*t-0.00015218*t*t-0.00000531*t*t*t+36000,360);

M1=Restediv(175.46622+1221.55147*t-0.000502*t*t+3600,360);

/*

CALCULS LIES A LA PERTURBATION DES PLANETES GEANTES
(intégrés avant la formule de Kepler)

*/

up=t/5+0.1;
pp=237.475+3034.9061*t;
qp=265.916+1222.1139*t;
vp=5*qp-2*pp;
zeta=qp-pp;

ap=(-0.8142+0.0181*up+0.0167*up*up)*Math.sin(vp*d2r);
ap+=(-0.0105+0.1609*up-0.0041*up*up)*Math.cos(vp*d2r);
ap+=-0.1488*Math.sin(zeta*d2r)-0.0408*Math.sin(2*zeta*d2r)-0.0152*Math.sin(3*zeta*d2r);
ap+=(0.0089*Math.sin(zeta*d2r)-0.0165*Math.sin(2*zeta*d2r))*Math.sin(qp*d2r);
ap+=(0.0813*Math.cos(zeta*d2r)+0.015*Math.cos(2*zeta*d2r))*Math.sin(qp*d2r);
ap+=(0.0856*Math.sin(zeta*d2r)+0.0253*Math.cos(zeta*d2r)+0.0144*Math.cos(2*zeta*d2r))*Math.cos(qp*d2r);
ap+=0.0092*Math.sin(2*zeta*d2r)*Math.sin(2*qp*d2r);

bp=(-793+255*up)*Math.sin(vp*d2r)+(1338+123*up)*Math.cos(vp*d2r);
bp+=1241*Math.sin(qp*d2r)+(39-62*up)*Math.sin(zeta*d2r)*Math.sin(qp*d2r);
bp+=(2660*Math.cos(zeta*d2r)-469*Math.cos(2*zeta*d2r)-187*Math.cos(3*zeta*d2r)-82*Math.cos(4*zeta*d2r))*Math.sin(qp*d2r);
bp-=(1270*Math.sin(zeta*d2r)+420*Math.sin(2*zeta*d2r)+150*Math.sin(3*zeta*d2r))*Math.cos(qp*d2r);
bp-=62*Math.sin(4*zeta*d2r)*Math.cos(qp*d2r);
bp+=(221*Math.sin(zeta*d2r)-221*Math.sin(2*zeta*d2r)-57*Math.sin(3*zeta*d2r))*Math.sin(2*qp*d2r);
bp-=(278*Math.cos(zeta*d2r)-202*Math.cos(2*zeta*d2r))*Math.sin(2*qp*d2r);
bp-=(284*Math.sin(zeta*d2r)+159*Math.cos(zeta*d2r))*Math.cos(2*qp*d2r);
bp+=(216*Math.cos(2*zeta*d2r)+56*Math.cos(3*zeta*d2r))*Math.cos(2*qp*d2r);

cp=(0.0771+0.0072*up)*Math.sin(vp*d2r);
cp+=(0.0458-0.0148*up)*Math.cos(vp*d2r);
cp-=(0.0758*Math.sin(zeta*d2r)+0.0248*Math.sin(2*zeta*d2r)+0.0086*Math.sin(3*zeta*d2r))*Math.sin(qp*d2r);
cp-=(0.0726+0.1504*Math.cos(zeta*d2r)-0.0269*Math.cos(2*zeta*d2r)-0.0101*Math.cos(3*zeta*d2r))*Math.cos(qp*d2r);
cp-=(0.0136*Math.sin(zeta*d2r)-0.0136*Math.cos(2*zeta*d2r))*Math.sin(2*qp*d2r);
cp-=(0.0137*Math.sin(zeta*d2r)-0.012*Math.sin(2*zeta*d2r))*Math.cos(2*qp*d2r);
cp+=(0.0149*Math.cos(zeta*d2r)-0.0131*Math.cos(2*zeta*d2r))*Math.cos(2*qp*d2r);

dp=2933*Math.cos(vp*d2r)+33629*Math.cos(zeta*d2r)-3081*Math.cos(2*zeta*d2r);
dp+=-1423*Math.cos(3*zeta*d2r)-671*Math.cos(4*zeta*d2r);
dp+=(1098-2812*Math.sin(zeta*d2r)+688*Math.sin(2*zeta*d2r))*Math.sin(qp*d2r);
dp+=(2138*Math.cos(zeta*d2r)-999*Math.cos(2*zeta*d2r)-642*Math.cos(3*zeta*d2r))*Math.sin(qp*d2r);
dp-=890*Math.cos(qp*d2r);
dp+=(2206*Math.sin(zeta*d2r)-1590*Math.sin(2*zeta*d2r)-647*Math.sin(3*zeta*d2r))*Math.cos(qp*d2r);
dp+=(2885*Math.cos(zeta*d2r)+2172*Math.cos(2*zeta*d2r))*Math.cos(qp*d2r);
dp+=-778*Math.cos(zeta*d2r)*Math.sin(2*qp*d2r)-856*Math.sin(zeta*d2r)*Math.cos(2*qp*d2r);


cor1=ap; 			// 	longitude moyenne
cor2=ap-cp/e;		//	anomalie_moyenne
cor3=bp/1000000;	//	excentricité moyenne
cor4=dp/1000000;	//	demi-grand axe

L+=cor1;
M1+=cor2;
e+=cor3;
a+=cor4;

// FIN CALCULS PERTURBATIONS

AE=Kepler(M1,e)
v=Restediv(Math.atan(Math.sqrt((1+e)/(1-e))*Math.tan(AE*Math.PI/360))*2*r2d+36000000,360);
// quadrant 
v=Quadrant(v,AE);
r=a*(1-e*Math.cos(AE*d2r));
u=Restediv(L+v-M1-omega+36000,360);

// longitude héliocentrique = l1

l2=Math.cos(i*d2r)*Math.sin(u*d2r)
l3=Math.cos(u*d2r)
l1=Math.atan(l2/l3)*r2d;
// quadrant
l1=Quadrant(l1,u);
l1+=omega;
l1=Restediv(l1,360);
// longitude géocentrique = long_saturne

b=Math.asin(Math.sin(u*d2r)*Math.sin(i*d2r))*r2d;
N=r*Math.cos(b*d2r)*Math.sin((l1-longitude_vraie)*d2r);
D=r*Math.cos(b*d2r)*Math.cos((l1-longitude_vraie)*d2r)+rayon_vecteur;

delta=Math.sqrt(N*N+D*D+(r*Math.sin(b*d2r))*(r*Math.sin(b*d2r)));
lat_geocentrique=Math.asin(r*Math.sin(b*d2r)/delta)*r2d;
lat_saturne=lat_geocentrique;


long_saturne=Math.atan(N/D)*r2d;
// quadrant
long_saturne=Quadrant(long_saturne,l1-longitude_vraie);
long_saturne=Restediv(long_saturne+longitude_vraie,360);
long_heliocentrique=l1;
lat_heliocentrique=b;
lohsa=l1;
lahsa=b;

RA=Math.sin(long_saturne*d2r)*Math.cos(epsilon*d2r)-Math.tan(lat_saturne*d2r)*Math.sin(epsilon*d2r);
RA=RA/Math.cos(long_saturne*d2r);
RA=Math.atan(RA)*r2d;
RA=Restediv(RA+36000,360);
//RA=Quadrant(RA,long_saturne);
if ((Math.abs(RA-long_saturne)>90)&&(Math.abs(RA-long_saturne)<270)) RA+=180; //if (Math.abs(RA-long_saturne)>90) RA+=180;
RA=Restediv(RA+36000,360);
DEC=Math.sin(lat_saturne*d2r)*Math.cos(epsilon*d2r)+Math.cos(lat_saturne*d2r)*Math.sin(epsilon*d2r)*Math.sin(long_saturne*d2r);
DEC=Math.asin(DEC)*r2d;


}

function soleil() {
var app, year,H0;
	year=parseInt(document.forms[1].annee.value);
	app=l_app(jour_julien);
	interm=eqsols(1,year);
	interm=dateh(equisols);
	document.forms[5].d0.value=equisol;;
	interm=eqsols(2,year);
	interm=dateh(equisols);
	document.forms[7].d1.value=equisol;
	interm=eqsols(3,year);
	interm=dateh(equisols);
	document.forms[8].d2.value=equisol;
	interm=eqsols(4,year);
	interm=dateh(equisols);
	document.forms[9].d3.value=equisol;
	interm=l_app(jour_julien);
	long_soleil=apparent;
	document.forms[10].dSG.value=dms(apparent);
//	interm=zod(apparent);
//	document.forms[3].d5.value=zodiaque;
	anx=parseFloat(document.forms[1].annee.value);
	interm=NbrJour();
	interm=phase_lune_approx(0);
	if (JJP-jour_julien>14) 
		{Fraction_Nombre_jour-=0.0397;jj08=phase_lune(0);interm=dateh(jj08);
		Fraction_Nombre_jour+=0.0397}
		else {jj08=phase_lune(0);interm=dateh(jj08)}
	document.forms[52].NL.value=equisol;

	interm=NbrJour();
	interm=phase_lune_approx(0.25);
	if (JJP-jour_julien>14) 
		{Fraction_Nombre_jour-=0.0397;jj09=phase_lune(0.25);interm=dateh(jj09);
		Fraction_Nombre_jour+=0.0397}
	else {jj09=phase_lune(0.25);interm=dateh(jj09)}
	document.forms[53].PQ.value=equisol;
	
	interm=NbrJour();
	interm=phase_lune_approx(0.5);
	if (JJP-jour_julien>14) 
		{Fraction_Nombre_jour-=0.0397;jj10=phase_lune(0.5);interm=dateh(jj10);
		Fraction_Nombre_jour+=0.0397}
	else {jj10=phase_lune(0.5);interm=dateh(jj10)}
	document.forms[54].PL.value=equisol;
	
	interm=NbrJour();
	interm=phase_lune_approx(0.75);
	if (JJP-jour_julien>14) 
		{Fraction_Nombre_jour-=0.0397;jj11=phase_lune(0.75);interm=dateh(jj11);
		Fraction_Nombre_jour+=0.0397}
	else {jj11=phase_lune(0.75);interm=dateh(jj11)}
	document.forms[55].DQ.value=equisol;
}

function NbrJour() {

if (bissex) 
	{
		Nombre_jour=Entier(275*moisact/9)-Entier((moisact+9)/12)+jouract-30;
		Fraction_Nombre_jour=Nombre_jour/366;
	} 
else 
	{
		Nombre_jour=Entier(275*moisact/9)-2*Entier((moisact+9)/12)+jouract-30;
		Fraction_Nombre_jour=Nombre_jour/365;
	}

}

function phase_lune_approx(phase) {
var T,k;

	k=(anx+Fraction_Nombre_jour-1900)*12.3685;
	k+=0.5;
	k=Math.floor(k);
	k+=phase; 	
	T=(jour_julien-2415020)/36525;
	T=k/1236.85;
	JJP=	2415020.75933+29.53058868*k
			+0.0001178*T*T
			-0.000000155*T*T*T
			+0.00033*Math.sin((166.56+132.87*T-0.009173*T*T)*d2r);
return JJP;
}

function phase_lune(phase) {
var T,k,M,M1,F;
	k=(anx+Fraction_Nombre_jour-1900)*12.3685;
	k+=0.5;
	k=Math.floor(k);
	k+=phase; 
	T=(jour_julien-2415020)/36525;
	T=k/1236.85;
	JJP=	2415020.75933+29.53058868*k
			+0.0001178*T*T
			-0.000000155*T*T*T
			+0.00033*Math.sin((166.56+132.87*T-0.009173*T*T)*d2r);

	M=359.2242+29.10535608*k-0.0000333*T*T-0.00000347*T*T*T;
	M1=306.0253+385.81691806*k+0.0107306*T*T+0.00001236*T*T*T;
	F=21.2964+390.67050646*k-0.0016528*T*T-0.00000239*T*T*T;

	if (phase==0||phase==0.5) {
		JJP+=(0.1734-0.000393*T)*Math.sin(M*d2r);
		JJP+=0.0021*Math.sin(2*M*d2r);
		JJP-=0.4068*Math.sin(M1*d2r);
		JJP+=0.0161*Math.sin(2*M1*d2r);
		JJP-=0.0004*Math.sin(3*M1*d2r);
		JJP+=0.0104*Math.sin(2*F*d2r);
		JJP-=0.0051*Math.sin((M+M1)*d2r);
		JJP-=0.0074*Math.sin((M-M1)*d2r);
		JJP+=0.0004*Math.sin((2*F+M)*d2r);
		JJP-=0.0004*Math.sin((2*F-M)*d2r);
		JJP-=0.0006*Math.sin((2*F+M1)*d2r);
		JJP+=0.0010*Math.sin((2*F-M1)*d2r);
		JJP+=0.0005*Math.sin((M+2*M1)*d2r);
	}
	if (phase==0.25||phase==0.75) {
		JJP+=(0.1721-0.0004*T)*Math.sin(M*d2r);
		JJP+=0.0021*Math.sin(2*M*d2r);
		JJP-=0.6280*Math.sin(M1*d2r);
		JJP+=0.0089*Math.sin(2*M1*d2r);
		JJP-=0.0004*Math.sin(3*M1*d2r);
		JJP+=0.0079*Math.sin(2*F*d2r);
		JJP-=0.0119*Math.sin((M+M1)*d2r);
		JJP-=0.0047*Math.sin((M-M1)*d2r);
		JJP+=0.0003*Math.sin((2*F+M)*d2r);
		JJP-=0.0004*Math.sin((2*F-M)*d2r);
		JJP-=0.0006*Math.sin((2*F+M1)*d2r);
		JJP+=0.0021*Math.sin((2*F-M1)*d2r);
		JJP+=0.0003*Math.sin((M+2*M1)*d2r);
		JJP+=0.0004*Math.sin((M-2*M1)*d2r);
		JJP-=0.0003*Math.sin((2*M+M1)*d2r);
	}
	if (phase==0.25) {
		JJP+=0.0028-0.0004*Math.cos(M*d2r)+0.0003*Math.cos(M1*d2r);
	}
	if (phase==0.75) {
		JJP+=-0.0028+0.0004*Math.cos(M*d2r)-0.0003*Math.cos(M1*d2r);
	}
return JJP;
}

function position_lune() { 
var T,L,M,M1,D,F,OMEGA,e,longi,lati,B,om1,om2;

	T     = (jour_julien-2415020)/36525;
	L     = 270.434164+481267.8831*T-0.001133*T*T+0.0000019*T*T*T;
	M     = 358.475833+35999.0498*T-0.000150*T*T-0.0000033*T*T*T;
	M1    = 296.104608+477198.8491*T+0.009192*T*T+0.0000144*T*T*T;
	D     = 350.737486+445267.1142*T-0.001436*T*T+0.0000019*T*T*T;
	F     = 11.250889+483202.0251*T-0.003211*T*T-0.0000003*T*T*T;
	OMEGA = 259.183275-1934.1420*T+0.002078*T*T+0.0000022*T*T*T;
	
	L= Restediv(L,360);
	M= Restediv(M,360);
	M1= Restediv(M1,360);
	D=Restediv(D,360);
	F=Restediv(F,360);
	OMEGA=Restediv(OMEGA+36000,360);
	
	// corrections avec termes additifs
	
	L += 0.000233*Math.sin((51.2+20.2*T)*d2r);
	M -= 0.001778*Math.sin((51.2+20.2*T)*d2r);
	M1+= 0.000817*Math.sin((51.2+20.2*T)*d2r);
	D += 0.002011*Math.sin((51.2+20.2*T)*d2r);
	L += 0.003964*Math.sin((346.56+132.87*T-0.0091731*T*T)*d2r);
	M1+= 0.003964*Math.sin((346.56+132.87*T-0.0091731*T*T)*d2r);
	D += 0.003964*Math.sin((346.56+132.87*T-0.0091731*T*T)*d2r);
	F += 0.003964*Math.sin((346.56+132.87*T-0.0091731*T*T)*d2r);
	L += 0.001964*Math.sin(OMEGA*d2r);
	M1+= 0.002541*Math.sin(OMEGA*d2r);
	D += 0.001964*Math.sin(OMEGA*d2r);
	F -= 0.024691*Math.sin(OMEGA*d2r);
	F -= 0.004328*Math.sin((OMEGA+275.05-2.3*T)*d2r); 
	
	e=1-0.002495*T-0.00000752*T*T;

	// calculs longitude géocentrique
	
	longi  = L+     6.288750*Math.sin(M1*d2r);
	longi +=        1.274018*Math.sin((2*D-M1)*d2r);
	longi +=        0.658309*Math.sin(2*D*d2r);
	longi +=        0.213616*Math.sin(2*M1*d2r);
	longi -= e* 	0.185596*Math.sin(M*d2r);
	longi -=   	    0.114336*Math.sin(2*F*d2r);
	longi +=      	0.058793*Math.sin((2*D-2*M1)*d2r);
	longi += e*   	0.057212*Math.sin((2*D-M-M1)*d2r);
	longi +=      	0.053320*Math.sin((2*D+M1)*d2r);		
	longi += e*		0.045874*Math.sin((2*D-M)*d2r);
	longi += e*		0.041024*Math.sin((M1-M)*d2r);
	longi -=		0.034718*Math.sin(D*d2r);
	longi -= e*		0.030465*Math.sin((M+M1)*d2r);
	longi += 		0.015326*Math.sin((2*D-2*F)*d2r);
	longi -= 		0.012528*Math.sin((2*F+M1)*d2r);
	longi -=		0.010980*Math.sin((2*F-M1)*d2r);
	longi += 		0.010674*Math.sin((4*D-M1)*d2r);
	longi +=		0.010034*Math.sin(3*M1*d2r);
	longi +=		0.008548*Math.sin((4*D-2*M1)*d2r);
	longi -= e*		0.007910*Math.sin((M-M1+2*D)*d2r);
	longi -= e*		0.006783*Math.sin((2*D+M)*d2r);
	longi +=		0.005162*Math.sin((M1-D)*d2r);
	longi += e*		0.005000*Math.sin((M+D)*d2r);
	longi += e*		0.004049*Math.sin((M1-M+2*D)*d2r);
	longi +=		0.003996*Math.sin((2*M1+2*D)*d2r);
	longi +=		0.003862*Math.sin(4*D*d2r);
	longi += 		0.003665*Math.sin((2*D-3*M1)*d2r);
	longi += e*		0.002695*Math.sin((2*M1-M)*d2r);
	longi +=		0.002602*Math.sin((M1-2*F-2*D)*d2r);
	longi += e*		0.002396*Math.sin((2*D-M-2*M1)*d2r);
	longi -=		0.002349*Math.sin((M1+D)*d2r);
	longi += e*e*	0.002249*Math.sin((2*D-2*M)*d2r);
	longi -= e*		0.002125*Math.sin((2*M1+M)*d2r);
	longi -= e*e*	0.002079*Math.sin(2*M*d2r);
	longi += e*e*	0.002059*Math.sin((2*D-M1-2*M)*d2r);
	longi -=		0.001773*Math.sin((M1+2*D-2*F)*d2r);
	longi -= 		0.001595*Math.sin((2*F+2*D)*d2r);
	longi += e*		0.001220*Math.sin((4*D-M-M1)*d2r);
	longi -=		0.001110*Math.sin((2*M1+2*F)*d2r);
	longi +=		0.000892*Math.sin((M1-3*D)*d2r);
	longi -= e*		0.000811*Math.sin((M+M1+2*D)*d2r);
	longi += e*		0.000761*Math.sin((4*D-M-2*M1)*d2r);
	longi += e*e*	0.000717*Math.sin((M1-2*M)*d2r);
	longi += e*e*	0.000704*Math.sin((M1-2*M-2*D)*d2r);
	longi += e*		0.000693*Math.sin((M-2*M1+2*D)*d2r);
	longi += e*		0.000598*Math.sin((2*D-M-2*F)*d2r);
	longi +=		0.000550*Math.sin((M1+4*D)*d2r);
	longi +=		0.000538*Math.sin(4*M1*d2r);
	longi += e*		0.000521*Math.sin((4*D-M)*d2r);
	longi +=		0.000486*Math.sin((2*M1-D)*d2r);

	// 	
	
	B  =	 5.128189*Math.sin(F*d2r);
	B +=	 0.280606*Math.sin((M1+F)*d2r);
	B +=	 0.277693*Math.sin((M1-F)*d2r);
	B +=	0.173238*Math.sin((D*2-F)*d2r);
	B +=	0.055413*Math.sin((D*2+F-M1)*d2r);
	B +=	0.046272*Math.sin((D*2-F-M1)*d2r);
	B +=	0.032573*Math.sin((D*2+F)*d2r);
	B +=	0.017198*Math.sin((2*M1+F)*d2r);
	B +=	0.009267*Math.sin((2*D+M1-F)*d2r);
	B +=	0.008823*Math.sin((2*M1-F)*d2r);
	B += e*	0.008247*Math.sin((2*D-M-F)*d2r);
	B += 	0.004323*Math.sin((2*D-F-2*M1)*d2r);
	B +=	0.004200*Math.sin((2*D+F+M1)*d2r);
	B += e*	0.003372*Math.sin((F-M-2*D)*d2r);
	B += e*	0.002472*Math.sin((2*D+F-M-M1)*d2r);
	B += e* 0.002222*Math.sin((2*D+F-M)*d2r);
	B += e* 0.002072*Math.sin((2*D-F-M-M1)*d2r);
	B += e* 0.001877*Math.sin((F-M+M1)*d2r);
	B += 	0.001828*Math.sin((4*D-F-M1)*d2r);
	B -= e* 0.001803*Math.sin((F+M)*d2r);
	B -= 	0.001750*Math.sin(3*F*d2r);
	B += e* 0.001570*Math.sin((M1-M-F)*d2r);
	B -=	0.001487*Math.sin((F+D)*d2r);
	B -= e* 0.001481*Math.sin((F+M+M1)*d2r);
	B += e* 0.001417*Math.sin((F-M-M1)*d2r);
	B += e* 0.001350*Math.sin((F-M)*d2r);
	B += 	0.001330*Math.sin((F-D)*d2r);
	B +=	0.001106*Math.sin((F+3*M1)*d2r);
	B +=	0.001020*Math.sin((4*D-F)*d2r);
	B +=	0.000833*Math.sin((F+4*D-M1)*d2r);
	B +=	0.000781*Math.sin((M1-3*F)*d2r);
	B +=	0.000670*Math.sin((F+4*D-2*M1)*d2r);
	B +=	0.000606*Math.sin((2*D-3*F)*d2r);
	B +=	0.000597*Math.sin((2*D+2*M1-F)*d2r);
	B += e*	0.000492*Math.sin((2*D+M1-M-F)*d2r);
	B +=	0.000450*Math.sin((2*M1-F-2*D)*d2r);
	B +=	0.000439*Math.sin((3*M1-F)*d2r);
	B +=	0.000423*Math.sin((F+2*D+2*M1)*d2r);
	B +=	0.000422*Math.sin((2*D-F-3*M1)*d2r);
	B -= e* 0.000367*Math.sin((M+F+2*D-M1)*d2r);
	B -= e* 0.000353*Math.sin((M+F+2*D)*d2r);
	B += 	0.000331*Math.sin((F+4*D)*d2r);
	B += e* 0.000317*Math.sin((2*D+F-M+M1)*d2r);
	B +=e*e*0.000306*Math.sin((2*D-2*M-F)*d2r);
	B -=	0.000283*Math.sin((M1+3*F)*d2r);
	
	om1=0.0004664*Math.cos(OMEGA*d2r);
	om2=0.0000754*Math.cos((OMEGA+275.05-2.3*T)*d2r);
	
	paralaxe_lune=0.950724;
	paralaxe_lune+=	0.051818*Math.cos(M1*d2r);
	paralaxe_lune+=	0.009531*Math.cos((2*D-M1)*d2r);
	paralaxe_lune+=	0.007843*Math.cos(2*D*d2r);
	paralaxe_lune+=	0.002824*Math.cos(2*M1*d2r);
	paralaxe_lune+=	0.000857*Math.cos((2*D+M1)*d2r);
	paralaxe_lune+= e*	0.000533*Math.cos((2*D-M)*d2r);
	paralaxe_lune+= e* 0.000401*Math.cos((2*D-M-M1)*d2r);
	paralaxe_lune+= e* 0.000320*Math.cos((M1-M)*d2r);
	paralaxe_lune-= 	0.000271*Math.cos(D*d2r);
	paralaxe_lune-= e* 0.000264*Math.cos((M+M1)*d2r);
	paralaxe_lune-=    0.000198*Math.cos((2*F-M1)*d2r);
	paralaxe_lune+=	0.000173*Math.cos(3*M1*d2r);
	paralaxe_lune+=	0.000167*Math.cos((4*D-M1)*d2r);
	paralaxe_lune-= e*	0.000111*Math.cos(M*d2r);
	paralaxe_lune+=	0.000103*Math.cos((4*D-2*M1)*d2r);
	paralaxe_lune-=	0.000084*Math.cos((2*M1-2*D)*d2r);
	paralaxe_lune-= e*	0.000083*Math.cos((2*D+M)*d2r);
	paralaxe_lune+=	0.000079*Math.cos((2*D+2*M1)*d2r);
	paralaxe_lune+=	0.000072*Math.cos(4*D*d2r);
	paralaxe_lune+= e*	0.000064*Math.cos((2*D-M+M1)*d2r);
	paralaxe_lune-= e* 0.000063*Math.cos((2*D+M-M1)*d2r);
	paralaxe_lune+= e* 0.000041*Math.cos((M+D)*d2r);
	paralaxe_lune+= e* 0.000035*Math.cos((2*M1-M)*d2r);
	paralaxe_lune-=	0.000033*Math.cos((3*M1-2*D)*d2r);
	paralaxe_lune-=	0.000030*Math.cos((M1+D)*d2r);
	paralaxe_lune-= 	0.000029*Math.cos((2*F-2*D)*d2r);
	paralaxe_lune-= e*	0.000029*Math.cos((2*M1+M)*d2r);
	paralaxe_lune+=e*e*0.000026*Math.cos((2*D-2*M)*d2r);
	paralaxe_lune-=	0.000023*Math.cos((2*F-2*D+M1)*d2r);
	paralaxe_lune+= e*	0.000019*Math.cos((4*D-M-M1)*d2r);

	// Latitude géocentrique de la Lune
		
	lati= B*(1-om1-om2); 
	
	longi=Restediv(longi+360000,360);
	lati=Restediv(lati,360);
	
	RA=Math.sin(longi*d2r)*Math.cos(epsilon*d2r)
		-Math.tan(lati*d2r)*Math.sin(epsilon*d2r);
	RA=RA/Math.cos(longi*d2r);
	RA=Math.atan(RA)*r2d;
	RA=Restediv(RA+36000,360);
	if ((Math.abs(RA-longi)>90)&&(Math.abs(RA-longi)<270)) RA+=180; //if (Math.abs(RA-longi)>90) RA+=180;
	RA=Restediv(RA+36000,360);
	DEC=Math.sin(lati*d2r)*Math.cos(epsilon*d2r)+Math.cos(lati*d2r)
	    *Math.sin(epsilon*d2r)*Math.sin(longi*d2r);
	DEC=Math.asin(DEC)*r2d;

	RA2 = RA/15; 
	DEC2 = DEC ; 
	
	H = (angle_horaire-RA2)*15 ;
	paralaxe= paralaxe_lune; //23.41/3600; // 
	QteAlpha=(-pcos*Math.sin(paralaxe*d2r)*Math.sin(H*d2r));
	QteAlpha=QteAlpha/(Math.cos(DEC2*d2r)-pcos*Math.sin(paralaxe*d2r)*Math.cos(H*d2r));
	QteAlpha=Math.atan(QteAlpha)*r2d;
	
	NewDelta=(Math.sin(DEC2*d2r)-psin*Math.sin(paralaxe*d2r))*Math.cos(QteAlpha*d2r);
	NewDelta=NewDelta/(Math.cos(DEC2*d2r)-pcos*Math.sin(paralaxe*d2r)*Math.cos(H*d2r));
	NewDelta=Math.atan(NewDelta)*r2d;

	// correction *simplifiée* des coordonnées géocentriques
	longi+=QteAlpha;
	lati+=(NewDelta-DEC);	
	
	RA+=QteAlpha;
	DEC=NewDelta;
	RA=Restediv(RA+36000,360);
	//DEC=Restediv(DEC+36000,360);
		
	long_lune=longi;
	lat_lune=lati;

}	

function zod(longitude_soleil) {
var demonstratif="du "
	if (longitude_soleil>=298&&longitude_soleil<325) {zodiaque="Capricorne"}
	if (longitude_soleil>=325&&longitude_soleil<351) {zodiaque="Verseau"}
	if (longitude_soleil>=351||longitude_soleil<29)  {zodiaque="Poissons"}
	if (longitude_soleil>=29&&longitude_soleil<53)   {zodiaque="Belier"}
	if (longitude_soleil>=53&&longitude_soleil<89)   {zodiaque="Taureau"}
	if (longitude_soleil>=89&&longitude_soleil<117)  {zodiaque="Gemeaux"}
	if (longitude_soleil>=117&&longitude_soleil<138) {zodiaque="Cancer"}
	if (longitude_soleil>=138&&longitude_soleil<173) {zodiaque="Lion"}
	if (longitude_soleil>=173&&longitude_soleil<219) {zodiaque="Vierge";demonstratif="de la "}
	if (longitude_soleil>=219&&longitude_soleil<237) {zodiaque="Balance";demonstratif="de la "}
	if (longitude_soleil>=237&&longitude_soleil<269) {zodiaque="Scorpion"}
	if (longitude_soleil>=269&&longitude_soleil<298) {zodiaque="Sagittaire"}
}

function l_app(jjj) {
var T,L,M,e,AE,v,omega,y,A,B,C,D,E,H;
	
	//if (flag)	{if ((jjj-Entier(jjj))<=0.5) jjj=Entier(jjj)-0.5; else jjj=Entier(jjj)+0.5; }
	T=(jjj-2415020)/36525;
	 
	A=153.23+22518.7541*T;
	B=216.57+45037.5082*T;
	C=312.69+32964.3577*T;
	D=350.74+445267.1142*T-0.00144*T*T;
	E=231.19+20.20*T;
	H=353.40+65928.7155*T;
		
	L=279.69668+36000.76892*T+0.0003025*T*T;
	L=Restediv(L,360);
	M=358.47583+35999.04975*T-0.000150*T*T-0.0000033*T*T*T;
	M=Restediv(M,360);
	e=0.01675104-0.0000418*T-0.000000126*T*T;
	AE=Kepler(M,e)
	v=Restediv(Math.atan(Math.sqrt((1+e)/(1-e))*Math.tan(AE*Math.PI/360))*2*r2d+36000000,360);
	v=Quadrant(v,AE);
	longitude_vraie=L+v-M;
	
	longitude_vraie+=	0.00134*Math.cos(A*d2r)
					+	0.00154*Math.cos(B*d2r)
					+	0.00200*Math.cos(C*d2r)
					+	0.00179*Math.sin(D*d2r)
					+	0.00178*Math.sin(E*d2r);
	
	longitude_vraie=Restediv(longitude_vraie+360000,360);
	
	omega=259.18-1934.142*T;
	apparent=longitude_vraie-0.00569-0.00479*Math.sin(omega*d2r);
	rayon_vecteur=1.0000002*(1-e*Math.cos(AE*d2r));
	
	rayon_vecteur+=		0.00000543*Math.sin(A*d2r)
					+	0.00001575*Math.sin(B*d2r)
					+	0.00001657*Math.sin(C*d2r)
					+	0.00003076*Math.cos(D*d2r)
					+	0.00000927*Math.sin(H*d2r);
					
	epsilon=23.452294-0.0130125*T-0.00000164*T*T+0.000000503*T*T*T;
	epsilon+=0.00256*Math.cos(omega*d2r);
	RA=Math.atan(Math.cos(epsilon*d2r)*Math.sin(longitude_vraie*d2r)/Math.cos(longitude_vraie*d2r))*r2d;
	RA=Quadrant(RA,longitude_vraie);
	
	DEC=Math.sin(epsilon*d2r)*Math.sin(longitude_vraie*d2r);
	DEC=Math.asin(DEC)*r2d;
}

function eqsols(kk,year) {
var jjj,cor;
	kk--;
	jjj=(year+kk/4)*365.2422+1721141.3;
	do {
		interm=l_app(jjj);
		cor=58*Math.sin((kk*90-apparent)*d2r);
		jjj+=cor;
	}
	while (Math.abs(cor)>0.0006);
	equisols=jjj;
	if (kk==0) jj03=jjj;
	if (kk==1) jj05=jjj;
	if (kk==2) jj06=jjj;
	if (kk==3) jj07=jjj;
	//equisols=diffT(jjj);
}

function Kepler(anom_moy,excen) {
	anom_excent=anom_moy;
	for (inclin=1;inclin<20;inclin++) {
  		anom_excent=anom_excent+((anom_moy+(excen*r2d)*Math.sin(anom_excent*d2r)-anom_excent))/(1-excen*Math.cos(anom_excent*d2r));
	}
return anom_excent;
}

function dms(deg) {
var d_m_s,d,m,s,signe
	signe=1;
	if (deg<0) signe=-1;
	deg=deg*signe;
	d=Entier(deg);
	m=Entier((deg-d)*60);
	s=Entier(((deg-d)*60-Entier((deg-d)*60))*60);
	d_m_s="";
	if (d<100) {d_m_s=" ";if (signe==-1) d_m_s="-";}
	if (d<10) {d_m_s="  ";if (signe==-1) d_m_s=" -";}
	d_m_s=d_m_s+d+sdg; //"°"; //\u00B0"
	if (m<10) {d_m_s=d_m_s+"0"}
	d_m_s=d_m_s+m+"\'"
	if (s<10) {d_m_s=d_m_s+"0"}
	d_m_s=" "+d_m_s+s+"\""
return d_m_s;
}

function hms(deg) {
var h_m_s,h,m,s
	deg=deg/15;
	d=Entier(deg);
	m=Entier((deg-d)*60);
	s=Entier(((deg-d)*60-Entier((deg-d)*60))*60);
	if (m<0) {m=-m}
	if (s<0) {s=-s}
	h_m_s=""
	if (d<100) {h_m_s=" "}
	if (d<10) {h_m_s="  "}
	h_m_s=h_m_s+d+"h"
	if (m<10) {h_m_s=h_m_s+"0"}
	h_m_s=h_m_s+m+"m"
	if (s<10) {h_m_s=h_m_s+"0"}
	h_m_s=" "+h_m_s+s+"s"
return h_m_s;
}

function date(j) {
var jdj,zdj,fdj,adj,alpha,alp2,bdj,cdj,ddj,edj,jx,mdjx,anx2,jsemaine,jds,ajj,jd;
	jdj=j;
	jdj+=0.5
	zdj=Entier(jdj)
	fdj=jdj-zdj
	fdj=Math.round(fdj*10000)/10000
	adj=zdj
	alpha=Entier((zdj-1867216.25)/36524.25)
	alp2=Entier(alpha/4)
	if (zdj>=2299161) {adj=zdj+1+alpha-alp2}
	bdj=adj+1524
	cdj=Entier((bdj-122.1)/365.25)
	ddj=Entier(365.25*cdj)
	edj=Entier((bdj-ddj)/30.6001)
	edj2=Entier(30.6001*edj)
	jx=bdj-ddj-edj2+fdj
	mdjx=(edj<13.5)?edj-1:edj-13
	anx2=(mdjx>2.5)?cdj-4716:cdj-4715
	if (fdj==0) {jx++}
	ajj=Entier(j+1.5);
	alpha=Entier(ajj/7)
	jsemaine=ajj-alpha*7
	jds="di"
	if (jsemaine==1) {jds="lu"}
	if (jsemaine==2) {jds="ma"}
	if (jsemaine==3) {jds="me"}
	if (jsemaine==4) {jds="je"}
	if (jsemaine==5) {jds="ve"}
	if (jsemaine==6) {jds="sa"}
	mois="jan"
	if (mdjx==2) {mois="fev"}
	if (mdjx==3) {mois="mar"}
	if (mdjx==4) {mois="avr"}
	if (mdjx==5) {mois="mai"}
	if (mdjx==6) {mois="jun"}
	if (mdjx==7) {mois="jul"}
	if (mdjx==8) {mois="aou"}
	if (mdjx==9) {mois="sep"}
	if (mdjx==10) {mois="oct"}
	if (mdjx==11) {mois="nov"}
	if (mdjx==12) {mois="dec"}
	jd=Entier(jx);
	equisol=(jds+" "+((jd<10)?"0"+jd:jd)+"."+((mdjx<10)?"0"+mdjx:mdjx)+"."+anx2);
}
function dateh(j) {
var jdj,zdj,fdj,adj,alpha,alp2,bdj,cdj,ddj,edj,jx,mdjx,anx2,jsemaine,jds,ajj,jd,hh,mm;
	jdj=j;
	jdj+=0.5
	zdj=Entier(jdj)
	fdj=jdj-zdj
	fdj=Math.round(fdj*10000)/10000
	adj=zdj
	alpha=Entier((zdj-1867216.25)/36524.25)
	alp2=Entier(alpha/4)
	if (zdj>=2299161) {adj=zdj+1+alpha-alp2}
	bdj=adj+1524
	cdj=Entier((bdj-122.1)/365.25)
	ddj=Entier(365.25*cdj)
	edj=Entier((bdj-ddj)/30.6001)
	edj2=Entier(30.6001*edj)
	jx=bdj-ddj-edj2+fdj
	mdjx=(edj<13.5)?edj-1:edj-13
	anx2=(mdjx>2.5)?cdj-4716:cdj-4715
	if (fdj==0) {jx++}
	ajj=Entier(j+1.5);
	alpha=Entier(ajj/7)
	jsemaine=ajj-alpha*7
	jds="D"
	if (jsemaine==1) {jds="L"}
	if (jsemaine==2) {jds="M"}
	if (jsemaine==3) {jds="m"}
	if (jsemaine==4) {jds="J"}
	if (jsemaine==5) {jds="V"}
	if (jsemaine==6) {jds="S"}
	jd=Entier(jx);
	hh=(jdj-Entier(jdj))*24;
	mm=Math.floor((hh-Entier(hh))*60);
	hh=Math.floor(hh);
equisol=(((jd<10)?"0"+jd:jd)+"."+((mdjx<10)?"0"+mdjx:mdjx)+" "+((hh<10)?"0"+hh:hh)+"h"+((mm<10)?"0"+mm:mm));
}

// Transformation UT->TE

function diffT(j) {
var t;
var delta=0;

	t=(jour_julien-2415020)/36525;
	delta=0.41+1.2053*t+0.4992*t*t; // temps en minutes
	
return (j+delta/1440);
}

function diffU(j) {
var t;
var delta=0;

	t=(jour_julien-2415020)/36525;
	delta=0.41+1.2053*t+0.4992*t*t; // temps en minutes
	
return (j-delta/1440);
}

function Quadrant(a,b) {
var qa,qb
// permet de mettre dans le même quadrant que b la valeur a
	if (a<0) {a=Restediv(a+3600000,360)}
	if (b<0) {b=Restediv(b+3600000,360)}
	qa=Entier(a/90)
	qb=Entier(b/90)
	if ((qa==3&&qb==1)||(qa==0&&qb==2)) a+=180;
	a=Restediv(a+360000,360);
return a;
}

function transform(n) {
var param2=""
	n=Math.round(n*1000)
	if (n<100000) param2="0";
	if (n<10000) param2+="0";
	if (n<1000) param2+="0";
	if (n<100) param2+="0";
	if (n<10) param2+="0";
	param2+=n;
	
return param2;
}
function transform2(n) {
var param2=""
	n=Math.round(n*10)
	param2+="+";
	if (n<0) {param2="-";n=-n}
	if (n<10) param2+="0";
	param2+=n;
	
return param2;
}
function urlposition() {
param3="";
	position="position.htm?";
	param3=transform(long_soleil);
	param3+=transform(long_mercure);
	param3+=transform2(lat_mercure);
	param3+=transform(long_venus);
	param3+=transform2(lat_venus);
	param3+=transform(long_mars);
	param3+=transform2(lat_mars);
	param3+=transform(long_jupiter);
	param3+=transform2(lat_jupiter);
	param3+=transform(long_saturne);
	param3+=transform2(lat_saturne);
	position+=param3;
	if ((parseFloat(document.forms[1].jj.value)>2451401.9)
		&&(parseFloat(document.forms[1].jj.value)<2451402.1)) position+="S"; 
	else position+="N";
	position+=document.forms[1].annee.value; 
	position+=document.forms[1].mois.value;
	position+=document.forms[1].jour.value;
	position+=document.forms[1].heurej.value;
	interm=document.forms[1].minutej.value;
	position+=interm.substring(0,2);
	position+=jsemaine+etat_mercure+etat_venus;
	position+=transform(long_lune);
	position+=transform2(lat_lune);
	position+=document.forms[1].latobs.value.substring(5,6);
	position+=document.forms[1].gmt.value;
	position+=(document.forms[1].heure_ete.checked)?"1":"0";
	
	position+=document.forms[52].NL.value.substring(0,5);
	position+=document.forms[53].PQ.value.substring(0,5);
	position+=document.forms[54].PL.value.substring(0,5);
	position+=document.forms[55].DQ.value.substring(0,5);

}
function opf() {
var chemin="cartes/index.htm?3144081138428+16162238+14130074+11068289-09060175-21N2000081616083ss";
	petitef=window.open(chemin,"ciel","toolbar=no,status=no,scrollbars=0,resizable=0,width=416,height=366");
	window.petitef.focus();
}
function urlhelio() {
param3="";
	poshelio="helio.htm?";
	param3=transform(360-lohme);
	param3+=transform(360-lohve);
	param3+=transform(360-long_soleil);
	param3+=transform(360-lohma);
	param3+=transform(360-lohju);
	param3+=transform(360-lohsa);
	param3+=transform(long_lune);
	poshelio+=param3;
	poshelio+=document.forms[1].annee.value; 
	poshelio+=document.forms[1].mois.value;
	poshelio+=document.forms[1].jour.value;
	poshelio+=document.forms[1].heurej.value;
	interm=document.forms[1].minutej.value;
	poshelio+=interm.substring(0,2);
	poshelio+=jsemaine;
}

function helio() {
var chemin=poshelio;
	numwin++;
	//
	winhelio[numwin]=window.open(chemin,numwin,"toolbar=no,status=no,scrollbars=0,resizable=0,width=610,height=310");
if (window.winhelio[numwin]) window.winhelio[numwin].focus(); // 27/10/2001, /daniel
}

function geochron() {
var posgeochron="geochron/index.htm?";
posgeochron+=document.forms[1].annee.value;
posgeochron+=document.forms[1].mois.value;
posgeochron+=document.forms[1].jour.value;
posgeochron+=document.forms[1].heurej.value;
posgeochron+=document.forms[1].minutej.value;
posgeochron+=jsemaine;
posgeochron+=document.forms[1].gmt.value;
posgeochron+=(document.forms[1].heure_ete.checked)?"1":"0";
wingeochron=window.open(posgeochron,"geochron","toolbar=no,status=no,scrollbars=0,resizable=0,width=590,height=340");
window.wingeochron.focus();
}

function winjup() {
var chemin=poshelio;
var intermb;
	numwin++;
	chemin="jupiter/index.html?";
	interm=
	chemin+=document.forms[1].annee.value;
	if (document.forms[1].annee.value.length<4) chemin+="a";
	if (document.forms[1].annee.value.length<3) chemin+="a";
	if (document.forms[1].annee.value.length<2) chemin+="a";
	chemin+=document.forms[1].mois.value;
	chemin+=document.forms[1].jour.value;
	chemin+=document.forms[1].heurej.value;
	interm=document.forms[1].minutej.value;
	chemin+=interm.substring(0,2);
	chemin+=jsemaine;
	interm=document.forms[1].jj.value;
	interm=parseFloat(interm);
	intermb=interm-Entier(interm);
	intermb=Entier((1+intermb)*10000000).toString();
	interm =Entier((1+Entier(interm)/10000000)*10000000).toString();
	chemin+=interm.substring(1,8)+intermb.substring(1,8);
	chemin+=document.forms[1].gmt.value;
	chemin+=(document.forms[1].heure_ete.checked)?"1":"0";
	chemin+=document.forms[1].latobs.value.substring(5,6);
	//
	winjupiter=window.open(chemin,"moons","toolbar=no,status=no,scrollbars=0,resizable=0,width=450,height=150");
if (window.winjupiter)	window.winjupiter.focus(); // 27/10/2001, /Daniel
}

function ABS(v) {
if (v<0) v=-v;
return v;
}

function verif_heure_d_ete(vj,vm,va) { 

var j,m,a,test;
var verif=0;
j=vj; //parseFloat(document.forms[1].jour.value);
m=vm; //parseFloat(document.forms[1].mois.value);
a=va; //parseFloat(document.forms[1].annee.value);

test=va+((vm<10)?"0"+vm:vm.toString())+((vj<10)?"0"+vj:vj.toString());

if (a>=1976&&a<=2006) {
	if (m>4&&m<9) verif=-1;
	if (m<3||m>10) verif=1;

	if (verif==0) {
	if (test>"19760327"&&test<"19760926") verif=-1;
	if (test>"19770402"&&test<"19770925") verif=-1;
	if (test>"19780401"&&test<"19781001") verif=-1;
	if (test>"19790331"&&test<"19790930") verif=-1;
	if (test>"19800405"&&test<"19800928") verif=-1;
	if (test>"19810328"&&test<"19810927") verif=-1;
	if (test>"19820327"&&test<"19820926") verif=-1;
	if (test>"19830326"&&test<"19830925") verif=-1;
	if (test>"19840325"&&test<"19840930") verif=-1;
	if (test>"19850330"&&test<"19850929") verif=-1;
	if (test>"19860329"&&test<"19860928") verif=-1;
	if (test>"19870328"&&test<"19870927") verif=-1;
	if (test>"19880326"&&test<"19880925") verif=-1;
	if (test>"19890325"&&test<"19890924") verif=-1;
	if (test>"19900331"&&test<"19900930") verif=-1;
	if (test>"19910330"&&test<"19910929") verif=-1;
	if (test>"19920328"&&test<"19920927") verif=-1;
	if (test>"19930327"&&test<"19930926") verif=-1;
	if (test>"19940326"&&test<"19940925") verif=-1;
	if (test>"19950325"&&test<"19950924") verif=-1;
	if (test>"19960330"&&test<"19961027") verif=-1;
	if (test>"19970329"&&test<"19971026") verif=-1;	
	if (test>"19980328"&&test<"19981025") verif=-1;	
	if (test>"19990327"&&test<"19991031") verif=-1;	
	if (test>"20000325"&&test<"20001029") verif=-1;	
	if (test>"20010324"&&test<"20011028") verif=-1;
	if (test>"20020330"&&test<"20021027") verif=-1;
	if (test>"20030329"&&test<"20031026") verif=-1;
	if (test>"20040327"&&test<"20041031") verif=-1;
	if (test>"20050326"&&test<"20051030") verif=-1;
	if (test>"20060325"&&test<"20061029") verif=-1;
	}
}
if (verif==1||verif==0) {document.forms[1].heure_ete.checked=false}
if (verif==-1)  {document.forms[1].heure_ete.checked=true} 

}
function Direct(v) {
if (v==1) {
	document.forms[1].heurej.value=document.forms[3].d5.value.substring(2,4);
	document.forms[1].minutej.value=document.forms[3].d5.value.substring(5,7);
	a=0;calculjj();
}
if (v==2) {
	document.forms[1].heurej.value=document.forms[4].d4.value.substring(2,4);
	document.forms[1].minutej.value=document.forms[4].d4.value.substring(5,7);
	a=0;calculjj();
}
if (v==3) {document.forms[1].jj.value=jj03;a=1;calculjj()}
if (v==4) {
	document.forms[1].jour.value=jourpq;
	document.forms[1].mois.value=moispq;
	a=0;calculjj();
}
if (v==5) {document.forms[1].jj.value=jj05;a=1;calculjj()}
if (v==6) {document.forms[1].jj.value=jj06;a=1;calculjj()}
if (v==7) {document.forms[1].jj.value=jj07;a=1;calculjj()}
if (v==8) {document.forms[1].jj.value=jj08;a=1;calculjj()}
if (v==9) {document.forms[1].jj.value=jj09;a=1;calculjj()}
if (v==10) {document.forms[1].jj.value=jj10;a=1;calculjj()}
if (v==11) {document.forms[1].jj.value=jj11;a=1;calculjj()}

}

/*
Ce que iCab ne reconnaît pas encore (2.5.1) :

- ?search dans l'url
- bug ? Il n'affiche pas le forms[1] (heure/date) alors que les
  valeurs sont interprétables (alert(document.forms[1].jj.value) par ex)
  => en fait, il ne gère pas l'événement onchange (ou autre) dans les <input ...>

*/

function toto(longi,planete) {
var long1,long2,textevisi,ecart,lat1,lat2;
textevisi="La nuit";
long1=long_soleil;
long2=longi;
lat1=lat_mercure; //(dme/10);
lat2=lat_venus;  //parseFloat(dve/10);
ecart=long2-long1;
if (ecart<0) ecart+=360;
if (ecart>175&&ecart<185) textevisi="A l'Est au crepuscule, a l'Ouest a l'aube . Toute la nuit !";
if (ecart>210&&ecart<265) textevisi="Tard dans la nuit";
if (ecart>265&&ecart<275) textevisi="Plein Sud, a l'aube";
if (ecart>260&&ecart<280&&planete==0) textevisi="Plein Sud, a l'aube (Dernier Quartier)";
if (ecart>274&&ecart<=325) textevisi="A l'aube, a l'Est";
if (ecart>325&&ecart<=343) textevisi="A l'Est, au lever du soleil";
if (ecart>343||ecart<17) textevisi="-";
if (ecart>=17&&ecart<=34) textevisi="A l'Ouest, au coucher du soleil";
if (ecart>34&&ecart<=85) textevisi="Le soir a l'Ouest";
if (ecart>85&&ecart<95) textevisi="Plein Sud, au crepuscule";
if (ecart>81&&ecart<99&&planete==0) textevisi="Plein Sud, au crepuscule (Premier Quartier)";
if (ecart>171&&ecart<189) {
	textevisi="<b>Toute la nuit</b><br>";
	if (planete==0) textevisi+="Pleine Lune !"; else textevisi+="(opposition avec le Soleil)";
	}
if (textevisi=="-"&&(ecart<=9||ecart>=351)&&planete==0) {textevisi="Nouvelle Lune";}
//if (pos.substring(51,52)=="S"&&planete==0) {textevisi="<b>Eclipse totale</b><br>Nouvelle Lune";}
if (textevisi=="-"&&(ecart<=0.25||ecart>=359.75)&&planete==1&&etat_mercure=="v") {
	textevisi="conjonction inferieure";
	if (lat1<0.25&&lat1>-0.25) 
		textevisi="<b>Mercure passe devant le soleil</b><br>"+textevisi 
	else
		textevisi="<b>"+textevisi+"</b><br>(en ascension droite uniquement, donc invisible)";}
if (textevisi=="-"&&(ecart<=0.25||ecart>=359.75)&&planete==2&&etat_venus=="v") {  
	textevisi="conjonction inf&eacute;rieure";
	if (lat2<0.25&&lat2>-0.25) 
		textevisi="<b>Venus passe devant le soleil</b><br>"+textevisi 
	else
		textevisi="<b>"+textevisi+"</b><br>(en ascension droite uniquement, donc invisible)";}

return textevisi;
}
function visi_icab() {
var textAlert="Visibilite:\n \n";
	textAlert+="Mercure : "+toto(long_mercure,1)+"\n";
	textAlert+="Venus   : "+toto(long_venus,2)+"\n";
	textAlert+="Mars    : "+toto(long_mars,3)+"\n";
	textAlert+="Jupiter : "+toto(long_jupiter,4)+"\n";
	textAlert+="Saturne : "+toto(long_saturne,5)+"\n";
	textAlert+="Lune    : "+toto(long_lune,0)+"\n";
/**/
	alert(textAlert);
}
function init_iCab() {
icab=false;
if (document.layers) {icab = false;} else 
if (document.all) {
	icab=document.all["icabdiv"];
	if (icab) { icab = icab.style.left ;icab=(icab==void(0)); } else icab=false;} 
else
if (document.getElementById) {
	icab=document.getElementById("icabdiv");
	if (icab) { icab = icab.style.left ;icab=(icab==void(0)); } else icab=false;}
}
function Sep_angle() {
sepang = window.open("sepang.html","angles","toolbar=no,status=no,menubar=1,scrollbars=0,resizable=1,width=500,height=250") ;
sepang.focus();
}

