mydate = new Date();
daytoday=mydate.getDate();

// partie select; 
function MP(day){
  day2=new Date();
  day2=day; Date.UTC(day);
  var Y=day2.getFullYear();
  var M=day2.getMonth()+1;
  var D=day2.getDate();
  var YY,MM,K1,K2,K3,J,V,IP,AG;

  YY=Y-Math.floor((12-M)/10);
  MM=M+9;
  if (MM>=12) {MM=MM-12};
  K1=Math.floor(365.25*(YY+4712));
  K2=Math.floor(30.6*MM+.5);
  K3=Math.floor(Math.floor((YY/100)+49)*.75)-38;
  J=K1+K2+D+59;  
  if (J>2299160) {J=J-K3};  
  V=(J-2451550.1)/29.530588853;
  V=V-Math.floor(V);
  if (V<0) {V=V+1};
  IP=V;
  AG=IP*29.53; 
  IP=IP*Math.PI*2  
  return IP;
}

function calceclp(calcmonth,calcyear){
  //Eclipse's
  EC1=0;
  EC2=0;
  EM1="";
  EM2="";
  R1=3.14159265/180;
   U=0;
  Y=calcyear;
  calcmonth++;
  G=1;
  K0=Math.floor((Y-1900)*12.3685);
  T=(Y-1899.5)/100;
  T2=T*T;
   T3=T*T*T;
  J0=2415020+29*K0;
  F0=0.0001178*T2-0.000000155*T3;
  F0=F0+0.75933+0.53058868*K0;
  F0=F0-0.000837*T-0.000335*T2;
  J0=J0+Math.floor(F0);
   F0=F0-Math.floor(F0);
  M0=K0*0.08084821133;
  M0=360*(M0-Math.floor(M0))+359.2242;
  M0=M0-0.0000333*T2;
  M0=M0-0.00000347*T3;
  M1=K0*0.07171366128;
  M1=360*(M1-Math.floor(M1))+306.0253;
  M1=M1+0.0107306*T2;
  M1=M1+0.00001236*T3;
  B1=K0*0.08519585128;
  B1=360*(B1-Math.floor(B1))+21.2964;
  B1=B1-0.0016528*T2;
  B1=B1-0.00000239*T3;
  for (K9=1;K9<=27;K9=K9+2){
    J=J0+14*K9;
    F=F0+0.765294*K9;
    K=K9/2;
    M5=(M0+K*29.10535608)*R1;
    M6=(M1+K*385.81691806)*R1;
    B6=(B1+K*390.67050646)*R1;
    F=F-0.4068*Math.sin(M6);
    F=F+(0.1734-0.000393*T)*Math.sin(M5);
    F=F+0.0161*Math.sin(2*M6);
    F=F-0.0104*Math.sin(2*B6);
    F=F-0.0074*Math.sin(M5-M6);
    F=F-0.0051*Math.sin(M5+M6);
    F=F+0.0021*Math.sin(2*M5);
    F=F+0.5/1440;
    J=J+Math.floor(F);
    F=F-Math.floor(F);
    
    eclipser(calcmonth, calcyear);
    
  }
}

//100 REM  LUNAR ECLIPSE SUBROUTINE
function eclipser(calcmonth, calcyear){
  estr="";
  D7=0;
  if (Math.abs(Math.sin(B6))>0.36){return;} 
  S=5.19595-0.0048*Math.cos(M5);
  S=S+0.0020*Math.cos(2*M5);
  S=S-0.3283*Math.cos(M6);
  S=S-0.0060*Math.cos(M5+M6);
  S=S+0.0041*Math.cos(M5-M6);
  C1=0.2070*Math.sin(M5);
  C1=C1+0.0024*Math.sin(2*M5);
  C1=C1-0.0390*Math.sin(M6);
  C1=C1+0.0115*Math.sin(2*M6);
  C1=C1-0.0073*Math.sin(M5+M6);
  C1=C1-0.0067*Math.sin(M5-M6);
  C1=C1+0.0117*Math.sin(2*B6);
  D9=Math.abs(S*Math.sin(B6)+C1*Math.cos(B6));
  U=0.0059+0.0046*Math.cos(M5);
  U=U-0.0182*Math.cos(M6);
  U=U+0.0004*Math.cos(2*M6);
  U=U-0.0005*Math.cos(M5+M6);
  
  RP=1.2847+U;
  RU=0.7404-U;
  
  MPE=(1.5572+U-D9)/0.545;
  
  if (MPE<0){return;}
  MU=(1.0129-U-D9)/0.545;
  D5=1.5572+U;
  D6=1.0129-U;
  D7=0.4679-U;
  N=(0.5458+0.04*Math.cos(M6))/60;
  D5 = Math.sqrt(D5*D5-D9*D9)/N;
  if (MU > 0) { 
    D6 = Math.sqrt(D6*D6-D9*D9)/N;
    if(MU > 1) {D7 = Math.sqrt(D7*D7-D9*D9)/N; }
  };
  
  Jq=J;
  Fq=F;
  G=1;
  if ( Y<1583){G=0}
  
  Fq=Fq+0.5;
  if (!(Fq<1)){
    Fq=Fq-1;
    Jq=Jq+1;
  }
  if (G==1){ 
    A1=Math.floor((Jq/36524.25)-51.12264);
    A=Jq+1+A1-Math.floor(A1/4);
  } else {
    A=Jq;
  }
  B=A+1524;
  C=Math.floor((B/365.25)-0.3343);
  Dq=Math.floor(365.25*C);
  E=Math.floor((B-Dq)/30.61);
  Dq=B-Dq-Math.floor(30.61*E)+Fq;
  Mq=E-1;
  Yq=C-4716;
  if (E>13.5){Mq=Mq-12};
  if (Mq<2.5) {Yq=Yq+1};
  D1=Math.floor(Dq);
  H=24*(Dq-D1);
  H1=Math.floor(H);
  M9=Math.floor(60*(H-H1));
  if (M9<10){M9="0"+M9};

  if (MU>1){D6=Math.floor(D6+0.5); estr=estr+"+ Eclipse Totale (";}
  if (MU>0 && MU<1 ){estr=estr+"+ Eclipse Partielle (";}
  if (MU<0 ){estr=estr+"+ Eclipse Pénombrale (";}

  if(MU >= 1) {
    D6=Math.floor(D6+0.5);
    D7=Math.floor(D7+0.5);
    estr=estr+"durée : "+D7*2+"min, ";
  }
  if (H1<10){H1="0"+H1};
  estr=estr+"phase Maximum  "+H1+":"+M9+" UTC)";
  if ((Mq == calcmonth) && (Yq == calcyear)){
    if (EC1==0){
      EC1=D1;
      EM1=estr;
    } else {
      EC2=D1;
      EM2=estr;
    }
  }
}

function calc(calcmonth,calcyear){

  calceclp(calcmonth,calcyear);

  //10 REM    NEW AND FULL MOONS
  //12 REM
  //14 REM

  var Y,JJ,K1,K2,K3,D,M,MM,FM1,FM2,NM1,NM2;
  FM1=0;
  FM2=0;
  NM1=0;
  NM2=0;
  Tt1="";
  Tt2="";
  Tt3="";
  Tt4="";

  Y=calcyear;  // year
  M=calcmonth;
  M++;
  D=-1;
  YY=Y-Math.floor((12-M)/10);
  MM=M+9;
  if(MM>=12){MM=MM-12}
  K1=Math.floor(365.25*(YY+4712));
  K2=Math.floor(30.6*MM+.5);
  K3=Math.floor(Math.floor((YY/100)+49)*.75)-38;
  JJ=K1+K2+D+59;
  if (JJ>2299160){JJ=JJ-K3}

  var A,B,C,Dq,E,G,D1,H1,M9,Mq,H,Yq,A1,Fq,Jq;
  var R1,U,K0,T,T2,T3,J0,F0,J,M0,M1,B1,M5,M6,K9,F;
  R1=3.14159265/180;
  U=0;
  K0=Math.floor((Y-1900)*12.3685);
  T=(Y-1899.5)/100;
  T2=T*T;
  T3=T*T*T;
  J0=2415020+29*K0;
  F0=0.0001178*T2-0.000000155*T3;
  F0=F0+0.75933+0.53058868*K0;
  F0=F0-0.000837*T-0.000335*T2;
  J=J+Math.floor(F);
  F=F-Math.floor(F);
  M0=K0*0.08084821133;
  M0=360*(M0-Math.floor(M0))+359.2242;
  M0=M0-0.0000333*T2;
  M0=M0-0.00000347*T3;
  M1=K0*0.07171366128;
  M1=360*(M1-Math.floor(M1))+306.0253;
  M1=M1+0.0107306*T2;
  M1=M1+0.00001236*T3;
  B1=K0*0.08519585128;
  B1=360*(B1-Math.floor(B1))+21.2964;
  B1=B1-0.0016528*T2;
  B1=B1-0.00000239*T3;

  for (K9=0;K9<29;K9++){
    J=J0+14*K9;
    F=F0+0.765294*K9;
    K=K9/2;
    M5=(M0+K*29.10535608)*R1;
    M6=(M1+K*385.81691806)*R1;
    B6=(B1+K*390.67050646)*R1;
    F=F-0.4068*Math.sin(M6);
    F=F+(0.1734-0.000393*T)*Math.sin(M5);
    F=F+0.0161*Math.sin(2*M6);
    F=F+0.0104*Math.sin(2*B6);
    F=F-0.0074*Math.sin(M5-M6);
    F=F-0.0051*Math.sin(M5+M6);
    F=F+0.0021*Math.sin(2*M5);
    F=F+0.0010*Math.sin(2*B6-M6);
    J=J+Math.floor(F);
    F=F-Math.floor(F);
    
    
    Jq=J;
    Fq=F;
    G=1;
    if ( Y<1583){G=0}
    
    Fq=Fq+0.5;
    if (!(Fq<1)){
      Fq=Fq-1;
      Jq=Jq+1;
    }
    if (G==1){
      A1=Math.floor((Jq/36524.25)-51.12264);
      A=Jq+1+A1-Math.floor(A1/4);
    } else {
      A=Jq;
    };
    B=A+1524;
    C=Math.floor((B/365.25)-0.3343);
    Dq=Math.floor(365.25*C);
    E=Math.floor((B-Dq)/30.61);
    Dq=B-Dq-Math.floor(30.61*E)+Fq;
    Mq=E-1;
    Yq=C-4716;
    if (E>13.5){Mq=Mq-12};
    if (Mq<2.5) {Yq=Yq+1};
    D1=Math.floor(Dq);
    H=24*(Dq-D1);
    H1=Math.floor(H);
    M9=Math.floor(60*(H-H1));
    if (M9<10){M9="0"+M9};
    if (H1<10){H1="0"+H1};
    if ((U==0) && (Mq==M) && (Yq==Y)){if (NM1==0){NM1=D1;Tt1=H1+":"+M9} else {if(NM2==0){NM2=D1;Tt2=H1+":"+M9}}};
    if ((U==1) && (Mq==M) && (Yq==Y)){if (FM1==0){FM1=D1;Tt3=H1+":"+M9} else {if(FM2==0){FM2=D1;Tt4=H1+":"+M9}}};
    U=U+1;
    
    if (U==2){U=0};
  }


  var temp,dayoffset,days,i,j,monthnames,todayday;
  today=new Date(Date.UTC(calcyear,calcmonth,10,1,1));

  month=new Date(Date.UTC(calcyear,calcmonth,10,1,1));

  todayday=today.getDate();
  month.setDate(1);
  dayoffset=month.getDay()-1;
  if (dayoffset==-1){dayoffset=6};
  today.setDate(1);
  today.setMonth(today.getMonth()+1);
  days=(today-month)/1000/60/60/24;


  month.setHours(11);
  monthnames=["Janvier","Fevrier","Mars","Avril","Mai","Juin","Juillet","Aout","Septembre","Octobre","Novembre","Decembre"];
  if (CalculPhasesLunePremiereFois == true) {
    parent.output.document.open();
    //document.frame['output'].open();
    CalculPhasesLunePremiereFois = false;
    parent.output.document.write('<html><head><link rel="stylesheet" href="javascript/phaseslune/img/moon.css" type="text/css"><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"></head><body bgcolor="#ffffff" text="#CCCC00" link="#CCCC00" vlink="#CCCC00" alink="#CCCC00">');
  }
  parent.output.document.write('<center><font color="#566E88">Phases de la Lune ', monthnames[month.getMonth()]," ",month.getFullYear(),"</font></center>");
  parent.output.document.write('<table border="1" align="center" cellspacing="0" cellpadding="0" bgcolor="#000000" >  <tr bgcolor="#004F91">     <td width="65">       <div align="center"><b><font color="#FFFFFF" size="1">Lundi</font></b></div>    </td> <td width="65"> <div align="center"><b><font color="#FFFFFF" size="1">Mardi</font></b></div> </td> <td width="65">  <div align="center"><b><font color="#FFFFFF" size="1">Mercredi</font></b></div> </td> <td width="65">   <div align="center"><b><font color="#FFFFFF" size="1">Jeudi</font></b></div>  </td> <td width="65"> <div align="center"><b><font color="#FFFFFF" size="1">Vendredi</font></b></div></td> <td width="65">  <div align="center"><b><font color="#FFFFFF" size="1">Samedi</font></b></div> </td> <td width="65">  <div align="center"><b><font color="#FFFFFF" size="1">Dimanche</font></b></div> </td>  </tr>');

  MD1="Nouvelle Lune "+Tt1;
  MD2="Nouvelle Lune "+Tt2;
  MD3="Pleine Lune "+Tt3;
  MD4="Pleine Lune "+Tt4;
  if (FM1==EC1){MD3=MD3+' '+EM1}
  if (FM2==EC1){MD4=MD4+' '+EM1}
  if (FM2==EC2){MD4=MD4+' '+EM2}

  for (i=0;i<(days+dayoffset)/7;i++){
    parent.output.document.write('<tr>'); 
     
    for (j=1;j<8;j++){
      parent.output.document.write('<td height="7"><div align="center"><b>');
      //alert(mydate.getMonth()+1);
      //alert(month.getMonth()+1);
      if ((i*7)+j-dayoffset==daytoday){
        if(mydate.getMonth() == month.getMonth()){
          if(mydate.getFullYear() == month.getFullYear()){
            parent.output.document.write('<font size="1" color="#000000" style="background-color:#ffe279;">');
          } else {
            parent.output.document.write('<font size="1" face="Verdana" color="#ffe279">');
          }
        } else {
          parent.output.document.write('<font size="1" face="Verdana" color="#ffe279">');
        }
      } else {
        parent.output.document.write('<font size="1" face="Verdana" color="#ffe279">');
      }
      if ((i*7)+j-dayoffset<=0 || (i*7)+j-dayoffset>Math.round(days)){  
        parent.output.document.write("&nbsp");
      } else {
        parent.output.document.write((i*7)+j-dayoffset);    //date ##########
        if ((i*7)+j-dayoffset==FM1){parent.output.document.write('<font size="1" color="#a4cdff"> PL</font>')}
        if ((i*7)+j-dayoffset==NM1){parent.output.document.write('<font size="1" color="#a4cdff"> NL</font>')}
        if ((i*7)+j-dayoffset==FM2){parent.output.document.write('<font size="1" color="#a4cdff"> PL</font>')}
        if ((i*7)+j-dayoffset==NM2){parent.output.document.write('<font size="1" color="#a4cdff"> NL</font>')}
        if ((i*7)+j-dayoffset==EC1){
        	if (EM1.indexOf("otal")!=-1){
            parent.output.document.write('<font size="1" color="#a4cdff"> *T</font>');
          } else {
            parent.output.document.write('<font size="1" color="#a4cdff"> *P</font>')
          }
        }
        if ((i*7)+j-dayoffset==EC2){
        	if (EM2.indexOf("otal")!=-1){
            parent.output.document.write('<font size="1" color="#a4cdff"> *T</font>')
          } else {
            parent.output.document.write('<font size="1" color="#a4cdff"> *P</font>')
          }
        }
        parent.output.document.write('</font></b><br>');
        month.setDate((i*7)+j-dayoffset);
        
        parent.output.document.write('<img src="javascript/phaseslune/img/moon',Math.floor(MP(month)*29/2/Math.PI)+1,'.gif" width="50" height="50" ');
        if ((i*7)+j-dayoffset==FM1){parent.output.document.write(' alt="',MD3,'" title="',MD3,'"')}
        if ((i*7)+j-dayoffset==NM1){parent.output.document.write(' alt="',MD1,'" title="',MD1,'"')}
        if ((i*7)+j-dayoffset==FM2){parent.output.document.write(' alt="',MD4,'" title="',MD4,'"')}
        if ((i*7)+j-dayoffset==NM2){parent.output.document.write(' alt="',MD2,'" title="',MD2,'"')}
        parent.output.document.write('>');
      }
      parent.output.document.write('</div></td>');
    }
  }
  parent.output.document.write('</table><br>');
}

var CalculPhasesLunePremiereFois = true;
function doCalc(month,year){
  CalculPhasesLunePremiereFois = true;
  //alert(month);
  if (month == 12){
    doCalcYear(year);
  } else {
    calc(month,year);
  }
  parent.output.document.write('</body></html>');
  parent.output.document.close();
}

function doCalcYear(year){
var month;
  for (month=0;month<12;month++) {
    calc(month,year);
  }
}




