﻿window.onload = function() {
init();
}

function main()
{
	var i = document.getElementById("cities").selectedIndex;
	if(i==0)
		return

	var m=document.getElementById("month").selectedIndex+1;
	
	if (document.getElementById("day").value>31) document.getElementById("day").value = 31;  
	var d=eval(document.getElementById("day").value);
	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("so").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("to").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("gor").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("ma").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 init()
{
		lgs= [48.280,52.670,47.470,50.530,45.970,55.160,48.850,49.980,50.010,49.830,54.450,52.400,49.220,49.700,48.300,52.370,54.010,45.010,48.960,49.900,54.040,57.500,51.200,45.100,51.680,51.540,52.710,48.250,49.160,49.720,49.710,52.710,48.350,47.060,48.720,60.700,46.430,52.700,52.640,56.600,55.400,45.920,57.320,51.200,56.560,48.800,51.290,58.350,46.050,49.450,54.070,54.900,49.080,56.250,50.520,49.220,48.430,50.270,53.550,50.830,46.200,47.600,59.220,51.700,46.370,45.130,51.730,49.700,48.920,60.770,46.300,60.620,59.220,54.220,50.020,47.100,50.880,51.270,51.430,48.440,57.520,53.570,46.520,52.900,57.730,60.630,51.410,59.100,49.180,48.180,51.370,48.520,50.050,51.470,50.310,51.750,44.970,54.540,54.350,51.550,59.100,47.400,48.470,51.370,50.680,52.070,50.550,47.260,49.050,50.780,51.850,50.670,49.410,49.620,56.810,51.080,49.630,56.020,51.600,49.420,50.300,61.480,60.830,56.580,51.590,48.500,53.100,50.330,57.630,52.020,45.850,47.570,62.580,49.420,61.170,45.530,46.280,44.750,53.380,51.570,47.020,53.050,48.170,47.600,55.730,48.670,54,970,46.550,51.540,55.150,51.870,50.850,51.060,48.240,48.830,52.570,57.920,47.690,49.320,56.920,45.910,50.570,50.980,58.170,50.370,50.120,52.530,59.880,53.680,51.490,51.380,49.290,52.870,59.180,59.200,51.180,51.580,45.030,47.800,50.010,56.200,50.950,51.450,58.500,51.670,51.580,58.450,46.940,50.970,54.120,57.080,47.060,55.500,51.550,52.070,47.950,50.500,57.700,47.600,61.230,54.100,54.480,52.330,48.050,51.440,50.280,58.680,55.170,45.920,54.280,50.010,50.150,44.500,46.530,50.820,51.660,50.500,51.550,46.220,45.770,52.830,46.200,49.300,47.680,59.570,50.990,48.850,45.720,46.170,54.450,46.100,47.700,54.010,57.070,55.370,53.080,51.900,45.370,53.290,48.370,52.030,51.550,54.330,58.820,45.630,47.600,47.060,50.660,48.580,49.720,51.650,51.680,54.370];
		lats=[30.330,31.180,32.940,36.050,37.760,37.090,38.430,37.270,34.550,30.700,37.020,36.430,36.150,34.080,38.250,33.380,32.320,37.530,33.600,31.800,29.120,37.100,35.540,37.050,32.680,35.300,31.010,33.870,36.320,33.370,30.750,36.620,33.450,38.470,31.280,27.200,33.630,36.530,36.710,29.280,31.580,35.980,37.470,29.270,29.930,33.920,31.970,29.080,37.330,37.470,36.880,26.550,30.430,27.250,29.570,30.650,34.900,30.580,36.720,28.920,36.530,35.870,32.880,35.470,35.050,36.700,35.300,36.070,37.800,34.740,38.080,35.220,35.280,31.730,34.680,36.410,36.820,28.880,35.670,34.550,25.750,28.550,34.800,36.640,28.670,25.300,36.660,36.650,36.200,30.430,28.660,37.630,33.630,32.700,33.220,32.650,38.530,28.750,36.170,32.620,37.450,33.150,32.380,28.650,33.980,35.720,30.790,32.690,33.490,30.360,27.830,36.900,30.900,31.270,31.270,35.480,37.300,30.420,32.690,36.850,37.130,31.020,29.500,30.800,32.450,36.670,36.550,35.020,36.220,30.270,34.470,37.950,27.400,33.930,36.540,36.150,36.230,38.180,35.550,31.420,35.300,36.120,31.550,34.780,29.470,30.650,36,.420,36.670,32.810,30.130,32.020,32.320,35.660,32.190,32.050,29.630,37.450,34.480,37.280,33.600,37.480,32.270,32.270,34.020,32.950,32.930,36.680,35.720,28.970,32.570,32.430,37.230,36.470,33.730,33.720,35.730,35.420,38.880,35.170,36.270,26.950,34.650,32.570,37.120,29.600,33.980,35.180,34.800,35.800,36.800,30.300,34.380,37.390,32.540,27.830,34.500,30.870,27.870,33.530,28.220,27.670,36.830,35.220,39.020,32.630,33.450,34.350,37.250,34.130,27.680,37.200,37.180,39.300,38.070,35.720,32.490,33.880,35.290,37.420,38.430,29.800,35.450,31.980,38.380,36.270,35.670,34.320,36.770,33.120,31.580,36.970,37.330,32.230,27.150,37.220,32.870,33.520,36.950,36.660,34.200,36.630,36.650,29.200,36.220,38.870,34.260,37.470,35.970,34.770,30.240,35.320,30.820,31.920];
}
function coord()
{
document.getElementById("ma").innerHTML="";
document.getElementById("so").innerHTML="";
document.getElementById("zr").innerHTML="";
document.getElementById("gor").innerHTML="";
document.getElementById("ma").innerHTML="";
document.getElementById("to").innerHTML="";

	var c=document.getElementById("cities");

//	 var sValue = oList.options[oList.selectedIndex].value;
	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);
	h=Math.floor(x/3600);
	mp=x-3600*h;
	m=Math.floor(mp/60);
	s=Math.floor(mp-60*m);
	var M_MAH = document.getElementById("month").selectedIndex+1;
	if (M_MAH < 7) {h = h + 1}
	return(((h<10)? "0" : "")+h.toString()+":"+((m<10)? "0" : "")+m.toString()+":"+((s<10)? "0" : "")+s.toString())
}


