nDay=new Date()

tYear=nDay.getYear();
tMonth=nDay.getMonth()+1;
tDay=nDay.getDate();

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 fhour (h)
{
    return (h > 12 ? h - 12 : h);
}

function fmin (m)
{
    if (m <10) {
        return ("0" + m.toString());
    }
    return m;
}

function frm(n)
{
	return Math.round(n*100)/100
}

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;

	}
}

function settoday()
{
	today=new Date()
	thisyear=today.getYear()
	thismonth=today.getMonth()+1
	thisday=today.getDate()
	thishour=today.getHours()
	thisminute=today.getMinutes()
	thiszone=-today.getTimezoneOffset()/60

	document.sunform.year.value=thisyear;
	document.sunform.month.value=thismonth;
	document.sunform.day.value=thisday;
	document.sunform.hour.value=thishour;
	document.sunform.min.value=thisminute;
	document.sunform.zone.value=thiszone;

}

function ShowPrayer(pyear, pmonth, pday)
{
	
	var lg   = 1.0 * "79";
	var lgmi = 1.0 * "23";
	var la   = 1.0 * "43";
	var lami = 1.0 * "39";
	var ye   = 1.0 * pyear;
	var mo   = 1.0 * pmonth;
	var da   = 1.0 * pday;
	var ho   = 1.0 * "12";
	var mi   = 1.0 * "00";

function makeArray()    {
    this[0] = makeArray.arguments.length;
    for (i = 0; i<makeArray.arguments.length; i++)
        this[i+1] = makeArray.arguments[i];
}

var daysofmonth   = new makeArray( 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
var daysofmonthLY = new makeArray( 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);

function LeapYear(year) {
    if ((year/4)   != Math.floor(year/4))   return false;
    if ((year/100) != Math.floor(year/100)) return true;
    if ((year/400) != Math.floor(year/400)) return false;
    return true;
}

function NthDay(nth,weekday,month,year) {
    if (nth > 0) return (nth-1)*7 + 1 + (7 + weekday -
DayOfWeek((nth-1)*7 + 1,month,year))%7;
    if (LeapYear(year)) var days = daysofmonthLY[month];
    else                var days = daysofmonth[month];
    return days - (DayOfWeek(days,month,year) - weekday + 7)%7;
}

function DayOfWeek(day,month,year) {
    var a = Math.floor((14 - month)/12);
    var y = year - a;
    var m = month + 12*a - 2;
    var d = (day + y + Math.floor(y/4) - Math.floor(y/100) +
Math.floor(y/400) + Math.floor((31*m)/12)) % 7;
    return d+1;
}

function y2k(number)    { return (number < 1000) ? number + 1900 : number; }

var today = new Date();
var year = y2k(today.getYear());

var DSTstart = new Date(year,4-1,NthDay(1,1,4,year),2,0,0);
var DSTend   = new Date(year,10-1,NthDay(-1,1,10,year),2,0,0);

function getMS(date) {
    return Date.UTC(y2k(date.getYear()),date.getMonth(),date.getDate(),date.getHours(),date.getMinutes(),date.getSeconds())
}

var todayMS = getMS(today);
var DSTstartMS = getMS(DSTstart);
var DSTendMS = getMS(DSTend);

    
if (todayMS > DSTstartMS && todayMS < DSTendMS){
    var zo   = 1.0 * "-4";
}
else{	
	var zo   = 1.0 * "-5";
}	
	
	
	var twr  = 1.0 * "-16.7";
	var tws  = 1.0 * "-16.7";
	var ewv  = "West";
	var nsv  = "North";
	
	var k=Math.PI/180.0;
	lg=lg+lgmi/60
	la=la+lami/60
	lgo=lg
	lao=la
	aa=180.0
	
	if (ewv=="West") { lg=-1.0*lg }
	if (nsv=="South") { la=-1.0*la }
	
	lgq=lg;
	laq=la;
	
	var alt=altitude(lg,la,ye,mo,da,ho,mi,zo)
	var azm=azimuth(lg,la,ye,mo,da,ho,mi,zo)
	
	// Kible direction
	// tan(C)=sin(A)*sin(c)/(sin(b)*cos(c)-cos(A)*cos(b)*sin(c))
	
	with (Math) {
	var k=PI/180.0;
	var lgk=39.8;
	var lak=21.4;
	var Ak=(lgk-lgq)*k;
	var ck=(90-lak)*k;
	var bk=(90-laq)*k;
	var azmg=azm;
	var azmk=(1/k)*atan2(sin(Ak)*sin(ck),sin(bk)*cos(ck)-cos(Ak)*cos(bk)*sin(ck));
	azmk=(azmk+360) % 360
}


	h1=0
	m=0
	alt1=altitude(lg,la,ye,mo,da,h1,m,zo)
	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
		}
		dfo2=Math.abs(360 - (azmo+360) % 360)
		if (dfo2<=mino) {
		mino=dfo2
		hno=h
		mno=m
		}

		}
	}

	mday="add 5-10 minutes for salat"

	altnoon=altitude(lg,la,ye,mo,da,hno,mno,zo);
	if (altnoon<s){ mday="night" }
	
	hr="does not occur"
	mr=""
	hs="does not occur"
	ms=""
	htwr="does not occur"
	mtwr=""
	htws="does not occur"
	mtws=""
	
	hasrhanefi="does not occur"
	masrhanefi=""
	hasrsafi="does not occur"
	masrsafi=""


	mintwr=0.2;
	minr=0.2;
	
	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)
		
		dftwr=Math.abs(twr-altr)
		if (dftwr<=mintwr) {
			mintwr=dftwr
			htwr=h
			mtwr=m
			}

		if (altnoon > s){
		dfr=Math.abs(s-altr)
			if (dfr<=minr) {
			minr=dfr
			hr=h
			mr=m
			}
		}

}}}


altasrhanefi=(1/k)*Math.atan(1/(2+1/Math.tan(altnoon*k)))
altasrsafi=(1/k)*Math.atan(1/(1+1/Math.tan(altnoon*k)))

mins=0.2;
mintws=0.2;
minasrh=0.2;
minasrs=0.2;

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
}


dfasrh=Math.abs(altasrhanefi-alts)
if (dfasrh<=minasrh) {
minasrh=dfasrh
hasrhanefi=h
masrhanefi=m
}

dfasrs=Math.abs(altasrsafi-alts)
if (dfasrs<=minasrs) {
minasrs=dfasrs
hasrsafi=h
masrsafi=m
}
}

dftws=Math.abs(tws-alts)
if (dftws<=mintws) {
mintws=dftws
htws=h
mtws=m
}




}}}

cikti="<tr><td bgcolor=736EB0 height='3'>&nbsp;</td>";
cikti=cikti+"<td bgcolor=736EB0 class='ptime'>Fajr</td>\r\r";
cikti=cikti+"<td bgcolor=736EB0 class='ptime'>"+ fhour(htwr)+":"+fmin(mtwr) +" am</td></tr>\r\r";
cikti=cikti+"<tr><td bgcolor=DFDDF3 colspan='3' height='1'></td></tr>\r\r";
cikti=cikti+"<tr><td bgcolor=736EB0 height='3'>&nbsp;</td>\r\r";
cikti=cikti+"<td class='ptime' bgcolor=736EB0>Sunrise</td>\r\r";
cikti=cikti+"<td class='ptime' bgcolor=736EB0>"+ fhour (hr)+":"+fmin(mr) +" am</td></tr>\r\r";
cikti=cikti+"<tr><td bgcolor=DFDDF3 colspan='3' height='1'></td></tr>\r\r";
cikti=cikti+"<tr><td bgcolor='736EB0'>&nbsp;</td>\r\r";
cikti=cikti+"<td bgcolor='736EB0' class='ptime'>Duhr</td>\r";
cikti=cikti+"<td bgcolor='736EB0' class='ptime'>"+ fhour (hno)+":"+fmin(mno) +" pm</td></tr>\r";
cikti=cikti+"<tr><td bgcolor=DFDDF3 colspan='3' height='1'></td></tr>\r\r";
cikti=cikti+"<tr><td bgcolor=736EB0>&nbsp;</td><td class='ptime' bgcolor=736EB0>Asr [1]</td>\r";
cikti=cikti+"<td class='ptime' bgcolor=736EB0>" +fhour (hasrsafi)+":"+fmin(masrsafi)+ " pm</td><td></td></tr>\r";
cikti=cikti+"<tr><td bgcolor=DFDDF3 colspan='3' height='1'></td></tr>\r\r";
cikti=cikti+"<tr><td bgcolor='736EB0'>&nbsp;</td>\r";
cikti=cikti+"<td bgcolor='736EB0' class='ptime'>Asr [2]</td>\r";
cikti=cikti+"<td bgcolor='736EB0' class='ptime'>"+fhour (hasrhanefi)+":"+fmin(masrhanefi)+" pm</td></tr>\r";
cikti=cikti+"<tr><td bgcolor=DFDDF3 colspan='3' height='1'></td></tr>\r\r";
cikti=cikti+"<tr><td bgcolor=736EB0>&nbsp;</td><td class='ptime' bgcolor=736EB0>Maghrib</td>\r";
cikti=cikti+"<td class='ptime' bgcolor=736EB0>"+fhour (hs)+":"+fmin(ms) +" pm</td></tr>\r";
cikti=cikti+"<tr><td bgcolor=DFDDF3 colspan='3' height='1'></td></tr>\r\r";
cikti=cikti+"<tr><td bgcolor='736EB0'>&nbsp;</td>\r";
cikti=cikti+"<td bgcolor='736EB0' class='ptime'>Isha</td>\r";
cikti=cikti+"<td bgcolor='736EB0' class='ptime'>"+fhour (htws)+":"+fmin(mtws)+ " pm</td></tr>\r";
document.write (cikti);
}



