

//======================
var SZJ={//µ콵,]غ͚≺Ӱ
 L  : 0,  //վc,|y
 fa : 0,  //վc
 dt : 0,  //TD-UT
 E  : 0.409092614, //Sཻ
 getH:function(h,w){ //hƽ,wྕ,ؕr
  var c = ( Math.sin(h) - Math.sin(this.fa)*Math.sin(w) ) / Math.cos(this.fa)/Math.cos(w);
  if(Math.abs(c)>1) return Math.PI;
  return Math.acos(c);
 },
 Mcoord:function(jd,H0,r){ //ͬrӰ푺Ǖrw,ԲӋӡؕrǼཛ
   var z = m_coord( (jd+this.dt)/36525, 40,30,8 ); //;ཛ
   z = llrConv( z, this.E ); //D
   r.H = rad2rrad( pGST(jd,this.dt) + this.L - z[0] ); //õ˿wr
   if(H0) r.H0 = this.getH( 0.7275*cs_rEar/z[2]-34*60/rad, z[1] ); //ĕr
 },
 Mt : function(jd){ //rӋ,jdxcSt()ͬ
  this.dt = dt_T(jd);
  this.E  = hcjj(jd/36525);
  jd -= mod2(0.1726222 + 0.966136808032357*jd - 0.0366*this.dt + this.L/pi2, 1); //,mod2ĵ1鱾ؕrǽֵ
  var r = new Array(), sv = pi2*0.966;
  r.z = r.x = r.s = r.j = r.c = r.h = jd;
  this.Mcoord(jd,1,r); //
  r.s += (-r.H0 - r.H )/sv;
  r.j += ( r.H0 - r.H )/sv;
  r.z += (    0 - r.H )/sv;
  r.x += ( Math.PI - r.H )/sv;
  this.Mcoord(r.s,1,r);  r.s += rad2rrad( -r.H0 - r.H )/sv;
  this.Mcoord(r.j,1,r);  r.j += rad2rrad( +r.H0 - r.H )/sv;
  this.Mcoord(r.z,0,r);  r.z += rad2rrad(     0 - r.H )/sv;
  this.Mcoord(r.x,0,r);  r.x += rad2rrad( Math.PI - r.H )/sv;
  return r;
 },
 Scoord:function(jd,xm,r){ //ͬrӰ푺Ǖrw,ԲӋӡؕrǼཛ
   var z = new Array( XL.E_Lon( (jd+this.dt)/36525, 5 ) + Math.PI - 20.5/rad, 0,1);  //̫(˹в)
   z = llrConv( z, this.E ); //D
   r.H = rad2rrad( pGST(jd,this.dt) + this.L - z[0] ); //õ˿wr
   if(xm==10||xm==1) r.H1 = this.getH(-50*60/rad,  z[1]); //ƽ50
   if(xm==10||xm==2) r.H2 = this.getH(-6*3600/rad, z[1]); //ƽ6
   if(xm==10||xm==3) r.H3 = this.getH(-12*3600/rad,z[1]); //ƽ12
   if(xm==10||xm==4) r.H4 = this.getH(-18*3600/rad,z[1]); //ƽ18
 },
 St : function(jd){ //̫ꖵrӋ,jdǮ12crg2000ĸΕrgUT
  this.dt = dt_T(jd);
  this.E  = hcjj(jd/36525);
  jd -= mod2(jd + this.L/pi2, 1); //,mod2ĵ1鱾ؕrǽֵ
  var r = new Array(), sv = pi2;
  r.z = r.x = r.s = r.j = r.c = r.h = r.c2 = r.h2 = r.c3 = r.h3 = jd; r.sm = '';
  this.Scoord(jd,10,r); //̫
  r.s += (-r.H1 - r.H )/sv; //
  r.j += ( r.H1 - r.H )/sv; //
  r.c += (-r.H2 - r.H )/sv; //ó
  r.h += ( r.H2 - r.H )/sv; //û
  r.c2+= (-r.H3 - r.H )/sv; //
  r.h2+= ( r.H3 - r.H )/sv; //
  r.c3+= (-r.H4 - r.H )/sv; //ĳ
  r.h3+= ( r.H4 - r.H )/sv; //Ļ
  r.z += (    0 - r.H )/sv; //
  r.x += ( Math.PI - r.H )/sv; //
  this.Scoord(r.s,1,r);  r.s += rad2rrad( -r.H1 - r.H )/sv;  if(r.H1==Math.PI) r.sm += 'o.';
  this.Scoord(r.j,1,r);  r.j += rad2rrad( +r.H1 - r.H )/sv;  if(r.H1==Math.PI) r.sm += 'o.';

  this.Scoord(r.c, 2,r); r.c += rad2rrad( -r.H2 - r.H )/sv;  if(r.H2==Math.PI) r.sm += 'oó.';
  this.Scoord(r.h, 2,r); r.h += rad2rrad( +r.H2 - r.H )/sv;  if(r.H2==Math.PI) r.sm += 'oû.';
  this.Scoord(r.c2,3,r); r.c2+= rad2rrad( -r.H3 - r.H )/sv;  if(r.H3==Math.PI) r.sm += 'o.';
  this.Scoord(r.h2,3,r); r.h2+= rad2rrad( +r.H3 - r.H )/sv;  if(r.H3==Math.PI) r.sm += 'o.';
  this.Scoord(r.c3,4,r); r.c3+= rad2rrad( -r.H4 - r.H )/sv;  if(r.H4==Math.PI) r.sm += 'oĳ.';
  this.Scoord(r.h3,4,r); r.h3+= rad2rrad( +r.H4 - r.H )/sv;  if(r.H4==Math.PI) r.sm += 'oĻ.';

  this.Scoord(r.z,0,r);  r.z += (     0 - r.H )/sv;
  this.Scoord(r.x,0,r);  r.x += rad2rrad( Math.PI - r.H )/sv;
  return r;
 },

 rts:new Array(),//н
 calcRTS:function(jd,n,Jdl,Wdl,sq){ //jdǮʼ(r),sqǕr^
  var i,c,r;
   if(!this.rts.length) {for(i=0;i<32;i++) this.rts[i] = new Array(); }
  this.L = Jdl, this.fa = Wdl, sq/=24; //Oվc
  for(i=0;i<=n+1;i++){ r=this.rts[i];  r.Ms=r.Mz=r.Mx=r.Mj="--:--:--"; }
  for(i=-1;i<=n;i++){
   if(i>=0&&i<n){ //̫
    r = SZJ.St(jd+i+sq);this.Scoord(jd,10,r);
    this.rts[i].s = dToStr(tail(r.s-sq+0.5)); //
    this.rts[i].z = dToStr(tail(r.z-sq+0.5)); //
    this.rts[i].x = dToStr(tail(r.x-sq+0.5)); //
    this.rts[i].j = dToStr(tail(r.j-sq+0.5)); //
    this.rts[i].c = dToStr(tail(r.c-sq+0.5)); //
    this.rts[i].h = dToStr(tail(r.h-sq+0.5)); //
    this.rts[i].ch = dToStr(tail(r.h-r.c)); //Օrg
    this.rts[i].sj = dToStr(tail(r.j-r.s)); //L
    this.rts[i].sm =r.sm;}
   r = SZJ.Mt(jd+i+sq); //
   c=floor(r.s-sq+0.5)-jd;  if(c>=0&&c<n) this.rts[c].Ms = dToStr(tail(r.s-sq+0.5));
   c=floor(r.z-sq+0.5)-jd;  if(c>=0&&c<n) this.rts[c].Mz = dToStr(tail(r.z-sq+0.5));
   c=floor(r.x-sq+0.5)-jd; if(c>=0&&c<n) this.rts[c].Mx = dToStr(tail(r.x-sq+0.5));
   c=floor(r.j-sq+0.5)-jd;  if(c>=0&&c<n) this.rts[c].Mj = dToStr(tail(r.j-sq+0.5));
  }
  this.rts.dn = n;
 }
};
function RTS2(jd,vJ,vW,tz){
  SZJ.L  = vJ/radd; //Oվc
  SZJ.fa = vW/radd;
  var sq = SZJ.L/pi2*24;
  var s="",sm="",sn="", r,rm,sqa=vJ/15,c=J2000+sqa/24,sqc=(8-sqa)/24;var sqc2='p';var sqc2a='';if(sqc<0)sqc2='',sqc2a='pȥ';var sqc2b=dToStr((abs(sqc)));
  r=SZJ.St(jd-sq/24);var nbw='';if(vW<0)nbw='Ͼ';if(vW==0)nbw='ϱ=';var dxj='|';if(vJ<0)dxj='';if(vJ==0)dxj='|';
  s +="̫" + dToStr(tail(r.s+c+0.5)) + " ̫ꖽ " + dToStr(tail(r.j+c+0.5))+"<br>";
  sm +=" " + dToStr(tail(r.c2+c+0.5))+ "  " + dToStr(tail(r.h2+c+0.5))+" ";
  sm +=" " + dToStr(tail(r.c3+c+0.5))+ "  " + dToStr(tail(r.h3+c+0.5))+"<br>";
  rm=SZJ.Mt(jd-sq/24);var zhusi="<br>Ӌ㲻]θ߶ȺͿ՚ܶȵӰ푡";
  s +=" " + dToStr(tail(rm.s+c+0.5)) + "  " + dToStr(tail(rm.j+c+0.5))+" ";
  s +=" " + dToStr(tail(rm.z+c+0.5)) + "  " + dToStr(tail(rm.x+c+0.5))+"<br>";
 if(r.sm) s = 'ژOؕҹڣ]ĕҹ<br>Oļ̫ꖡϻڵƽDȦo³rg<br>';
 return dxj+vJ+' '+nbw+vW+'a䣺<br>'+s+sn+sm+'ϱؕrgҪDЇͨõĖ|8^(|120)rgՈ'+sqc2a+sqc2b+zhusi;
}
function RTS1(jd,vJ,vW,tz){
 SZJ.calcRTS(jd, 2, (vJ/180*Math.PI), (vW/180*Math.PI), (tz*-1)); //Ӌ,ʹñrrg,tz=-8ָ|8^,jd+tzڮ(`СrҪo)
 var s, ob = SZJ.rts[0];var sqa=vJ/15,c=J2000+sqa/24,sqc=(8-sqa)/24;var sqc2='p';var sqc2a='';if(sqc<0)sqc2='',sqc2a='pȥ';var sqc2b=dToStr((abs(sqc)));
 s  = 'ճ <font color=red>'+ob.s + '</font>  '+ob.j +'  '+ob.z +'  '+ob.x +'<br>';
 s += '³ '+ob.Ms+ '  '+ob.Mj+'  '+ob.Mz+'  '+ob.Mx+'<br>';
 s += ' '+ob.c + '  '+ob.h +'';
 s += 'Օrg '+ob.sj+ ' L '+ob.ch+'<br>';
 if(ob.sm)s='ژOؕҹڣ]ĕҹ<br>Oļ̫ꖡϻڵƽDȦ<br>o³rgorg<br>';
 var v=s;
 return v;
}
 function zdysi2(y1,m1,d1,h1,mi1,sec,zone){
 var mi2=abs(mi1);var jd=JD(y1,m1,d1,h1,mi2,sec,zone)+0.000000001;var Jw=zone*15;
 var J=Jw/radd;var Jwts=abs(round(Jw*10000)/10000);
 var jda2=jd-2451545;var jda2a=jda2;
 var jd2 = jda2+dt_T(jda2);//Wr
 var jd9 =pty_zty(jd2/36525);var dtu=dt_T(jd2);
 jda2 += jd9+J/Math.PI/2+0.5;
 var jda2a=jd-2451545+J/Math.PI/2+0.5;
 var jd4=tail(jda2); var jd5=dToStr(jd4);var jd6=dToStr(tail(jda2a));
 var dxjm=(Jw>0)?'|':'';if(Jw==0)dxjm='|';var jd7=m2fm(jd9*86400,2,1);
 var zsqc=(zone-8)/24;var sqc4a='p';if(zsqc<0)sqc4a='';var sqc3b=dToStr(abs(zsqc));
 var dxts='<a tips6="a䣺<br>1̫ꖕrcƽ̫ꖕrr'+jd7+'<br>2ЇͨÕrg(|120rg)c'+dxjm+Jwts+'ıؕrg'+sqc4a+sqc3b+'<br>3ҪDЇͨõı˜ʕrg(120rg)Ո'+sqc4a+sqc3b;
 dxts += '<br>4T=' + (dtu*86400).toFixed(2) +'">';
 var vd=dxts+dxjm+Jwts+'rg'+jd6+'(<font color="#FF0000">'+dxts+'̫ꖕr'+jd5+'</a></font>)</a>';
 return vd;
 }

 function zdysi3(jd,zone,faW,kka,jda3){
 var Jw=zone*15;var sqa=Jw/15,c=J2000+sqa/24,sqc=(8-sqa)/24;var sqc2='p';var sqc2a='';if(sqc<0)sqc2='',sqc2a='pȥ';var sqc2b=dToStr((abs(sqc)));
 var jda2=jd-2451545+0.0000000001;var jda2a=jda2;var smsja=(kka==1)?RTS1(jda3,Jw,faW,zone)+'<br>'+RTS2(jda3,Jw,faW,zone):'<a tips8="'+RTS2(jda3,Jw,faW,zone)+'">'+RTS1(jda3,Jw,faW,zone)+'</a>';
 var jd2 = jda2+dt_T(jda2); //Wr
 var L=Jw/180*Math.PI;var fa=faW/180*Math.PI;var high=0;
  this.T=jd2, this.L=L, this.fa=fa;
  this.dt = dt_T(T); //TD-UT
  this.jd = T - this.dt;    //UT
  T/=36525;
  var zd = nutation2(T);
  this.dL = zd[0];   //S
  this.dE = zd[1];   //
  this.E  = hcjj(T) + this.dE; //Sཻ
  this.gst= pGST(this.jd,this.dt) + this.dL*Math.cos(this.E); //Ǖr(]Ƕʽ)
  var z=new Array();
  //===============
  //S
  z=m_coord(T,-1,-1,-1); //
  z[0]  = rad2mrad( z[0]+gxc_moonLon(T)+this.dL );  z[1] += gxc_moonLat(T);  //aв
  this.mHJ = z[0]; this.mHW = z[1]; this.mR  = z[2]; //ҕS,ҕS,|ľ

  //
  z = llrConv( z, this.E ); //D
  this.mCJ = z[0]; this.mCW = z[1]; //ҕཛ,ྕ

  //rӋ
  this.mShiJ = rad2mrad(this.gst + L - z[0]); //õ˿wr
  if( this.mShiJ>Math.PI ) this.mShiJ -= pi2;

  //ҕĳ
  parallax(z, this.mShiJ,fa, high); //ҕ
  this.mCJ2 = z[0], this.mCW2 = z[1], this.mR2=z[2];

  //r
  z[0] += Math.PI/2-this.gst-L;  //D춵ƽcĳ(r)

  //ƽ
  z = llrConv (z, Math.PI/2-fa );    //Dƽ(ֻĽ)
  z[0] = rad2mrad( Math.PI/2-z[0] );
  this.mDJ = z[0]; this.mDW = z[1]; //λ,߶Ƚ
  if(z[1]>0) z[1] += MQC(z[1]); //
  this.mPJ = z[0]; this.mPW = z[1]; //λ,߶Ƚ

  //=======̫========
  //̫S
  z = e_coord(T,-1,-1,-1);   //
  z[0]  = rad2mrad(z[0]+Math.PI+gxc_sunLon(T)+this.dL);  //a̫ꖹв
  z[1]  =-z[1] + gxc_sunLat(T); //zM̫ꖵSҕ
  this.sHJ = z[0]; this.sHW = z[1]; this.sR  = z[2]; //̫ҕS,ҕS,յ|ľ

  //̫ꖳ
  z = llrConv( z, this.E ); //D
  this.sCJ = z[0]; this.sCW = z[1]; //̫ҕཛ,ҕྕ

  //̫ꖕrӋ
  this.sShiJ = rad2mrad(this.gst + L - z[0]); //õ˿wr
  if( this.sShiJ>Math.PI ) this.sShiJ -= pi2;

  //ҕĳ
  parallax(z,this.sShiJ,fa,high); //ҕ
  this.sCJ2=z[0], this.sCW2=z[1], this.sR2=z[2];

  //̫ꖕr
  z[0] += Math.PI/2-this.gst-L;  //D춵ƽcĳ

  //̫ꖵƽ
  z = llrConv( z, Math.PI/2-fa );
  z[0] = rad2mrad( Math.PI/2-z[0] );
  this.sDJ = z[0]; this.sDW = z[1]; //λ,߶Ƚ

  if(z[1]>0) z[1] += MQC(z[1]); //
  this.sPJ = z[0]; this.sPW = z[1]; //λ,߶Ƚ

  //===============
  //rӋ
  var t=T/10, t2=t*t,t3=t2*t,t4=t3*t,t5=t4*t;
  var Lon = ( 1753470142 + 6283319653318*t + 529674*t2 + 432*t3 - 1124*t4 - 9*t5 )/1000000000 + Math.PI - 20.5/rad; //˹в̫ƽS
  Lon = rad2mrad( Lon - (this.sCJ-this.dL*Math.cos(this.E)) ); //(˹вƽS)-(dL*cos(E)ҕཛ)
  if(Lon>Math.PI) Lon-=pi2; //õr,λǻ
  this.sc  = Lon/pi2;   //r(λ:)

  //̫cƽ̫
  this.pty = this.jd+L/pi2;  //ƽ̫ꖕr'+dToStr(tail(this.pty+0.5))+'
  this.zty = this.jd+L/pi2+this.sc; //̫ꖕr
  this.mIll = XL.moonIll(T); //
  //rӋ
  var t=T/10, t2=t*t,t3=t2*t,t4=t3*t,t5=t4*t;
  var Lon = ( 1753470142 + 6283319653318*t + 529674*t2 + 432*t3 - 1124*t4 - 9*t5 )/1000000000 + Math.PI - 20.5/rad; //˹в̫ƽS
  Lon = rad2mrad( Lon - (this.sCJ-this.dL*Math.cos(this.E)) ); //(˹вƽS)-(dL*cos(E)ҕཛ)
  if(Lon>Math.PI) Lon-=pi2; //õr,λǻ
  this.sc  = Lon/pi2;   //r(λ:)

  var rzl='̫ꖣҕS ' + rad2str(this.sHJ,0)+'ҕS ' + rad2str(this.sHW,0) +'ҕཛ ' + rad2str(this.sCJ,1) +'ҕྕ ' + rad2str(this.sCW,0) +'<br>̫ꖣλ '+rad2str(this.sPJ,0)+'߶Ƚ '+rad2str(this.sPW,0)+'r ' +rad2str(this.sShiJ,0)+'<br>ҕS ' + rad2str(this.mHJ,0)+'ҕS ' + rad2str(this.mHW,0) +'ҕཛ ' + rad2str(this.mCJ,1) +'ҕྕ ' + rad2str(this.mCW,0) +'<br>λ '+rad2str(this.mPJ,0)+'߶Ƚ '+rad2str(this.mPW,0)+'r ' +rad2str(this.mShiJ,0);
  var vzl2='±:'+(this.mIll*100).toFixed(3)+'% ¾x'+this.mR.toFixed(2)+'ǧ.յؾx'+(this.sR*149597870).toFixed(2)+'ǧ';

  var vzl=(kka==1)?'<font color=#000080>'+vzl2+'</font><br><font color=#800080>'+rad2str2(L)+''+rad2str2(fa)+'</font>ˣطƽ̫ꖕr'+dToStr(tail(this.pty+0.5))+'(<font color="#FF0000">ط̫ꖕr'+dToStr(tail(this.zty+0.5))+'</font>r'+m2fm(this.sc*86400,2,1)+'T=' + (this.dt*86400).toFixed(2) +')<br><font color=#000040><a tips8="'+Jw+''+faW+'Ӌ<br>'+smsja+'">'+rzl+'</a></font>':'<font color=#500000>'+smsja+'</font><font color=#FF0000><a tips7="<span class=zh12>'+''+Jw+''+faW+'a䣺<br>'+rzl+'</span>">]³Ǯƽ̫ꖕrD|120(ЇͨÕrg)'+sqc2a+sqc2b+'</a></font><br><a tips7="<span class=zh12>'+''+Jw+''+faW+'a䣺<br>'+rzl+'</span>">'+vzl2+'</a>';
 return vzl;
 }
