//(c) http://akbari.ws 2009
function main() { t2 = setTimeout(function(){akbari()}, 300); }
function akbari()
{
	var i = document.getElementById("cities").selectedIndex;
    if(i==0) return
    var m=document.getElementById("month").selectedIndex+1;
    var d=eval(document.getElementById("day").value);
    var lg=eval(document.getElementById("longitude").value);
    var lat=eval(document.getElementById("latitude").value);
//    var lg=52.5125;
//    var lat=29.635;
    var ep=sun(m,d,4,lg)
    var zr=ep[0];
    delta=ep[1];
    ha=loc2hor(108.0,delta,lat)
    var t1=Round(zr-ha,24)
    ep=sun(m,d,t1,lg)
    zr=ep[0];
    delta=ep[1];
    ha=loc2hor(108.0,delta,lat)
    var t1=Round(zr-ha,24)
    document.getElementById("t1").innerHTML=hms(t1);
//
//   t2= Sun rise
//
    ep=sun(m,d,6,lg)
    zr=ep[0];
    delta=ep[1];
    ha=loc2hor(90.833,delta,lat)
    var t2=Round(zr-ha,24)
    ep=sun(m,d,t2,lg)
    zr=ep[0];
    delta=ep[1];
    ha=loc2hor(90.833,delta,lat)
    t2=Round(zr-ha,24)
    document.getElementById("t2").innerHTML=hms(t2);
//   
//    zr=Zohr
//
    ep=sun(m,d,12,lg)
    ep=sun(m,d,ep[0],lg)
    zr=ep[0];
    document.getElementById("zr").innerHTML=hms(zr);
//
//   t2= Sun set
//
    ep=sun(m,d,18,lg)
    zr=ep[0];
    delta=ep[1];
    ha=loc2hor(90.833,delta,lat)
    var t3=Round(zr+ha,24)
    ep=sun(m,d,t3,lg)
    zr=ep[0];
    delta=ep[1];
    ha=loc2hor(90.833,delta,lat)
    t3=Round(zr+ha,24)
    document.getElementById("t3").innerHTML=hms(t3);
//
//   t2= Maghreb
//
    ep=sun(m,d,18.5,lg)
    zr=ep[0];
    delta=ep[1];
    ha=loc2hor(94.3,delta,lat)
    var t4=Round(zr+ha,24)
    ep=sun(m,d,t4,lg)
    zr=ep[0];
    delta=ep[1];
    ha=loc2hor(94.3,delta,lat)
    t4=Round(zr+ha,24)
    document.getElementById("t4").innerHTML=hms(t4);
}
function sun(m,d,h,lg)
{
    if(m<7) d= 31*(m-1)+d+h/24; else d=6+30*(m-1)+d+h/24;
    var M=74.2023+0.98560026*d;
    var L=-2.75043+0.98564735*d;
    var lst=8.3162159+0.065709824*Math.floor(d)+1.00273791*24*(d%1)+lg/15;   
    var e=0.0167065;
    var omega=4.85131-0.052954*d;
    var ep=23.4384717+0.00256*cosd(omega);
    var ed=180.0/Math.PI*e;
    var u=M;
    for(var i=1;i<5;i++) { u=u-(u-ed*sind(u)-M)/(1-e*cosd(u)); }
    var v=2*atand(tand(u/2)*Math.sqrt((1+e)/(1-e)));
    var theta=L+v-M-0.00569-0.00479*sind(omega);
    var delta=asind(sind(ep)*sind(theta));
    var alpha=180.0/Math.PI*Math.atan2(cosd(ep)*sind(theta),cosd(theta));
    if(alpha>=360) alpha-=360;
    var ha=lst-alpha/15;
    var zr=Round(h-ha,24);
    return ([zr,delta])
}
function initOwghat()
{
        lgs= [0,49.70,48.30,45.07,51.64,48.68,46.42,57.33,56.29,50.84,59.21,46.28,51.41,48.34,49.59,60.86,48.50,53.06,53.39,47.00,50.86,52.52,50.00,50.88,57.06,47.09,54.44,59.58,48.52,51.59,54.35,39.49,39.42,44.05,44.20];
        lats=[0,34.09,38.25,37.55,32.68,31.32,33.64,37.47,27.19,28.97,32.86,38.08,35.70,33.46,37.28,29.50,36.68,36.57,35.58,35.31,32.33,29.62,36.28,34.64,30.29,34.34,36.84,36.31,34.80,30.67,31.89,21.26,24.28,32.37,31.59];
		main();
}
function coord()
{
    var c=document.getElementById("cities");
    var i = c.selectedIndex;
    if(i==0)
    {
        document.getElementById("longitude").value="";
        document.getElementById("latitude").value="";
    }
    else
    {
        document.getElementById("longitude").value=lgs[i].toString()
        document.getElementById("latitude").value=lats[i].toString()
    }
}
function sind(x){return(Math.sin(Math.PI/180.0*x));}
function cosd(x){return(Math.cos(Math.PI/180.0*x));}
function tand(x){return(Math.tan(Math.PI/180.0*x));}
function atand(x){return(Math.atan(x)*180.0/Math.PI);}
function asind(x){return(Math.asin(x)*180.0/Math.PI);}
function acosd(x){return(Math.acos(x)*180.0/Math.PI);}
function sqrt(x){return(Math.sqrt(x));}
function frac(x){return(x%1);}
function floor(x){return(Math.floor(x));}
function ceil(x){return(Math.ceil(x));}
function loc2hor(z,d,p){ return(acosd((cosd(z)-sind(d)*sind(p))/cosd(d)/cosd(p))/15); }
function Round(x,a){
    var tmp = x%a;
    if(tmp < 0) tmp+=a;
    return(tmp)
}
function hms(x)
{
    x = Math.floor(3600*x);
	akbar = document.getElementById("month").selectedIndex+1;
	if(akbar < 7) x = x + 3600;
    h=Math.floor(x/3600);
    mp=x-3600*h;
    m=Math.ceil(mp/60);
    //s=Math.floor(mp-60*m);
    return(((h<10)? "0" : "")+h.toString()+":"+((m<10)? "0" : "")+m.toString())
}
//-->