function getPrayerTimes(latitude,longitude,dawnAngle,sunsetAngle,shafi,timezone) {
	

	var day = getDayOfYear();

	var beta = (2 * Math.PI * day) / 365.0;
	
	var rad_lat = deg2rad(latitude);
	
	var d = (180.0 / Math.PI) * 
		(0.006918 - (0.399912 * Math.cos(beta))
			+ (0.07057 * Math.sin(beta))
			- (0.006758 * Math.cos(2*beta))
			+ (0.000907 * Math.sin(2*beta))
			- (0.002697 * Math.cos(3*beta))
			+ (0.001480 * Math.sin(3*beta))
		);
		
	var rad_d = deg2rad(d);
	
	var t = 229.18 * 
		(0.000075 + (0.001868 * Math.cos(beta))
			- (0.032077 * Math.sin(beta))
			- (0.014615 * Math.cos(2*beta))
			- (0.040849 * Math.sin(2*beta))
		);
		
	var r = 15.0 * timezone;	
	
	var z = 12.0 + ((r - longitude) / 15.0) - (t / 60.0);
	
	var altitude = 1;
	
	var xu = Math.sin(deg2rad(-0.8333 - 0.0347
				* (sign(altitude))
				* Math.sqrt(Math.abs(altitude)))
				- Math.sin(deg2rad(d))
				* Math.sin(deg2rad(latitude)))
				/ (Math.cos(deg2rad(d))
				* Math.cos(deg2rad(latitude)));

	var u = 0.0;
	if (xu >= -1 && xu <= 1){u = rad2deg(1/15.0 * Math.acos(xu));}

	var xvd = (-Math.sin(deg2rad(dawnAngle)) - Math.sin(deg2rad(d)) * Math.sin(deg2rad(latitude)))
				/ (Math.cos(deg2rad(d)) * Math.cos(deg2rad(latitude)));
	
	var vd = rad2deg(1/15.0 * Math.acos(xvd));
	
	var xvn = (-Math.sin(deg2rad(sunsetAngle)) - Math.sin(deg2rad(d)) * Math.sin(deg2rad(latitude)))
				/ (Math.cos(deg2rad(d)) * Math.cos(deg2rad(latitude)));
	
	
	var vn = rad2deg(1/15.0 * Math.acos(xvn));
	
	
	var w = rad2deg(
		1/15.0 * Math.acos(
			(
				Math.sin(
					acot(
						shafi + Math.tan(
							Math.abs(rad_lat - rad_d)
						)
					)
				) - Math.sin(rad_d) * Math.sin(rad_lat)
			) /	
			( Math.cos(rad_d) * Math.cos(rad_lat) ) 
		)
	);
	
	
	var fajrTime = z - vd;
	var shuruqTime = z - u;
	var dhuhurTime = z;
	var asrTime = z + w;
	var maghribTime = z + u;
	var ishaTime = z + vn;

	var prayers = new Array(6);	
	prayers[0] = fajrTime;
	prayers[1] = shuruqTime;
	prayers[2] = dhuhurTime;
	prayers[3] = asrTime;
	prayers[4] = maghribTime;
	prayers[5] = ishaTime;
	return prayers;
}

function formatTime(n) {
	var ampm = " AM";
    var hours = Math.floor(n);
    var mins = Math.floor((n - hours) * 60);
    if (hours >= 12) ampm = " PM";
    if (hours > 12) hours -= 12;
    if (mins < 10) mins = "0" + mins;

    return hours + ":" + mins+ampm;
}

function getDayOfYear() {
    var dat = new Date();
    var leapyear = false;
    if((dat.getFullYear() % 4 == 0 && dat.getFullYear() % 100 != 0) || (dat.getFullYear() % 400 == 0))
        leapyear = true;
    
    var days = 0;
    
    for(var i = 0; i < dat.getMonth(); i++) {
        switch(i) {
            case 0:
            case 2:
            case 4:
            case 6:
            case 7:
            case 9:
            case 11:
                days += 31;
                break;
            case 3:
            case 5:
            case 8:
            case 10:
                days += 30;
                break;
            case 1:
                if (leapyear)
                    days += 29;
                else
                    days += 28;
                break;
        }
    }

	return days + dat.getDate();
}

function deg2rad(n) {
	return ((n * Math.PI)/180);
}

function rad2deg(n) {
	return (n * (180/Math.PI));
}

function sign(n) {
	return (Math.abs(n)/n);
}

function acot(n) {
    return (Math.atan(1.0 / n));
}