today = new Date();
mes=today.getMonth()+1;
//year=today.getYear();
year=today.getFullYear();
den=today.getDate();
if (mes<10){mes="0"+mes;}
if (den<10){den="0"+den;}
function vosh_zahod()
{
var lg=1.0*42; <!-- долгота градусы->
var lgmi=1.0*07; <!-- долгота минуты->
var la=1.0*45; <!-- широта градусы->
var lami=1.0*07; <!-- широта минуты->
var ye=1.0*year;     <!-- год->
var mo=1.0*mes;    <!-- месяц->
var da=1.0*den;      <!-- день->
var zo=1.0*3;     <!-- зона->
var k=Math.PI/180.0;
lg=lg+lgmi/60
la=la+lami/60
lgo=lg
lao=la
aa=180.0
h1=0
m=0
azm1=azimuth(lg,la,ye,mo,da,h1,m,zo)
s=-0.8333
// find midday interval
for (var h=0; h<24; h++){
h2=h
azm2=azimuth(lg,la,ye,mo,da,h2,m,zo)
if ((azm1<=180)&&(azm2>=180)){
ha1=h1
ha2=h2
}
h1=h2
azm1=azm2
}
// find exact midday time
mino=1.0;
for (h=ha1; h<ha2; h++){
for (m=0; m<60; m++){
azmo=azimuth(lg,la,ye,mo,da,h,m,zo)
dfo=Math.abs(aa-azmo)
if (dfo<=mino) {
mino=dfo
hno=h
mno=m
}}}
mday=""
altnoon=altitude(lg,la,ye,mo,da,hno,mno,zo);
if (altnoon<s){ mday="nigth" }
hr="не происходят"
mr=""
hs="не происходят"
ms=""
mintwr=0.1;
minr=0.1
for (h=0; h<=hno; h++){
for (m=0; m<60; m++){
if (60*h+m< 60*hno+mno){
altr=altitude(lg,la,ye,mo,da,h,m,zo)
if (altnoon > s){
dfr=Math.abs(s-altr)
if (dfr<=minr) {
minr=dfr
hr=h
mr=m
}}}}}
mins=0.1;
mintws=0.1;
for (h=hno; h<24; h++){
for (m=0; m<60; m++){
if (60*h+m >= 60*hno+mno){
alts=altitude(lg,la,ye,mo,da,h,m,zo)
if(altnoon>s){
dfs=Math.abs(s-alts)
if (dfs<=mins) {
mins=dfs
hs=h
ms=m
}}
}}}

// переход на летнее время

if (mes==3) {
for (i=1;i<=7;i++){
 np=32-i;
 dd1=new Date(3+"/"+np+"/"+year);
   if (dd1.getDay()==0){
      den1=dd1.getDate();
      }
                  }
              }
// переход на зимнее время
if (mes==9) {
for (i=1;i<=7;i++){
     np=31-i;
     dd1=new Date(9+"/"+np+"/"+year);
       if (dd1.getDay()==0){
          den2=dd1.getDate();
                           }
                  }
             }

if ((mes==3 && den>=den1)||(mes>=4 && mes<=8)||(mes==9 && den<=den2)){
hr=hr+1; // hr час восхода mr мин.восхода
hs=hs+1; // hs час захода  ms мин.захода
     }
dr=hs-hr;
 if (ms-mr<0){dm=60-(mr-ms);dr=dr-1;}
 if (ms-mr>=0){dm=ms-mr;}
if (mr<9){mr="0"+mr;}
if (ms<9){ms="0"+ms;}
if (dm<9){dm="0"+dm;}

if (hr<9){hr="0"+hr;}
if (hs<9){hs="0"+hs;}
if (dr<9){dr="0"+dr;}

cikti='<table border="0" width=105 style="margin-right:25px;margin-top:5px;font-weight:bold;FONT-FAMILY: Helvetica, Arial, sans-serif;FONT-SIZE: 11px; line-height:95%;color:#FFFFFF">'+
'<tr><td valign="top">'+"&nbsp;&nbsp;Восход:<br>&nbsp;&nbsp;Заход:<br>&nbsp;&nbsp;Долгота<br>&nbsp;&nbsp;дня"+
'</td><td valign="top">'+hr+":"+mr+'<br>'+hs+":"+ms+'<br><br>'+dr+":"+dm+'</td></tr></table>'
document.write(cikti);
} 
function ut(h,m,z)
{ return (h-z+m/60); }
function jd(y,m,d,u)
{ return (367*y)-Math.floor((7/4)*(Math.floor((m+9)/12)+y))+Math.floor(275*m/9)+d-730531.5+(u/24) }
function azimuth(lg,la,ye,mo,da,ho,mi,zo)
{ with (Math) {
var uu=ut(ho,mi,zo);
var jj=jd(ye,mo,da,uu);
var T=jj/36525;
var k=PI/180.0;
var M=357.5291+35999.0503*T-0.0001559*T*T-0.00000045*T*T*T
M=M % 360
var Lo=280.46645+36000.76983*T+0.0003032*T*T
Lo=Lo % 360
var DL=(1.9146-0.004817*T-0.000014*T*T)*sin(k*M)+(0.019993-0.000101*T)*sin(k*2*M)+0.00029*sin(k*3*M)
var L=Lo+DL
var eps=23.43999-0.013*T
var delta=(1/k)*asin(sin(L*k)*sin(eps*k))
var RA=(1/k)*atan2(cos(eps*k)*sin(L*k),cos(L*k))
RA=(RA+360) % 360
var GMST=280.46061837+360.98564736629*jj+0.000387933*T*T-T*T*T/38710000
GMST=(GMST+360) % 360
var LMST=GMST+lg
var H=LMST-RA
var eqt=(Lo-RA)*4
var azm=(1/k)*atan2(-sin(H*k),cos(la*k)*tan(delta*k)-sin(la*k)*cos(H*k))
azm=(azm+360) % 360
return azm
}}
function altitude(lg,la,ye,mo,da,ho,mi,zo)
{with (Math) {
var uu=ut(ho,mi,zo);
var jj=jd(ye,mo,da,uu);
var T=jj/36525;
var k=PI/180.0;
var M=357.5291+35999.0503*T-0.0001559*T*T-0.00000045*T*T*T
M=M % 360
var Lo=280.46645+36000.76983*T+0.0003032*T*T
Lo=Lo % 360
var DL=(1.9146-0.004817*T-0.000014*T*T)*sin(k*M)+(0.019993-0.000101*T)*sin(k*2*M)+0.00029*sin(k*3*M)
L=Lo+DL
var eps=23.43999-0.013*T
var delta=(1/k)*asin(sin(L*k)*sin(eps*k))
var RA=(1/k)*atan2(cos(eps*k)*sin(L*k),cos(L*k))
RA=(RA+360) % 360
var GMST=280.46061837+360.98564736629*jj+0.000387933*T*T-T*T*T/38710000
GMST=(GMST+360) % 360
var LMST=GMST+lg
var H=LMST-RA
var eqt=(Lo-RA)*4
var alt=(1/k)*asin(sin(la*k)*sin(delta*k)+cos(la*k)*cos(delta*k)*cos(H*k))
return alt;
}}

