var BrowserDetect = {
	init: function () {
		this.browser = this.searchString(this.dataBrowser) || "An unknown browser";
		this.version = this.searchVersion(navigator.userAgent)
			|| this.searchVersion(navigator.appVersion)
			|| "an unknown version";
		this.OS = this.searchString(this.dataOS) || "an unknown OS";
	},
	searchString: function (data) {
		for (var i=0;i<data.length;i++)	{
			var dataString = data[i].string;
			var dataProp = data[i].prop;
			this.versionSearchString = data[i].versionSearch || data[i].identity;
			if (dataString) {
				if (dataString.indexOf(data[i].subString) != -1)
					return data[i].identity;
			}
			else if (dataProp)
				return data[i].identity;
		}
	},
	searchVersion: function (dataString) {
		var index = dataString.indexOf(this.versionSearchString);
		if (index == -1) return;
		return parseFloat(dataString.substring(index+this.versionSearchString.length+1));
	},
	dataBrowser: [
		{ 	string: navigator.userAgent,
			subString: "OmniWeb",
			versionSearch: "OmniWeb/",
			identity: "OmniWeb"
		},
		{
			string: navigator.vendor,
			subString: "Apple",
			identity: "Safari"
		},
		{
			prop: window.opera,
			identity: "Opera"
		},
		{
			string: navigator.vendor,
			subString: "iCab",
			identity: "iCab"
		},
		{
			string: navigator.vendor,
			subString: "KDE",
			identity: "Konqueror"
		},
		{
			string: navigator.userAgent,
			subString: "Firefox",
			identity: "Firefox"
		},
		{
			string: navigator.vendor,
			subString: "Camino",
			identity: "Camino"
		},
		{		// for newer Netscapes (6+)
			string: navigator.userAgent,
			subString: "Netscape",
			identity: "Netscape"
		},
		{
			string: navigator.userAgent,
			subString: "MSIE",
			identity: "Explorer",
			versionSearch: "MSIE"
		},
		{
			string: navigator.userAgent,
			subString: "Gecko",
			identity: "Mozilla",
			versionSearch: "rv"
		},
		{ 		// for older Netscapes (4-)
			string: navigator.userAgent,
			subString: "Mozilla",
			identity: "Netscape",
			versionSearch: "Mozilla"
		}
	],
	dataOS : [
		{
			string: navigator.platform,
			subString: "Win",
			identity: "Windows"
		},
		{
			string: navigator.platform,
			subString: "Mac",
			identity: "Mac"
		},
		{
			string: navigator.platform,
			subString: "Linux",
			identity: "Linux"
		}
	]

};
BrowserDetect.init();


  	  //Insert javascript here
	  function intPart(floatNum){
if (floatNum< -0.0000001){
	 return Math.ceil(floatNum-0.0000001);
	}
return Math.floor(floatNum+0.0000001);

}

function weekDay(wdn){
					if(wdn==0){
						return "Senin";
						}
					if(wdn==1){
						return "Selasa";
						}
					if(wdn==2){
						return "Rabu";
						}
					if(wdn==3){
						return "Kamis";
						}
					if(wdn==4){
						return "Jumat";
						}
					if(wdn==5){
						return "Sabtu";
						}
					if(wdn==6){
						return "Ahad";
						}
	return "";

}

function HijMonth(hm){
					if(hm==1){
						return "Muharam";
						}
					if(hm==2){
						return "Safar";
						}
					if(hm==3){
						return "Rabiulawal";
						}
					if(hm==4){
						return "Rabiulakhir";
						}
					if(hm==5){
						return "Jamadilawal";
						}
					if(hm==6){
						return "Jamadilakhir";
						}
					if(hm==7){
						return "Rejab";
						}
					if(hm==8){
						return "Syaaban";
						}
					if(hm==9){
						return "Ramadan";
						}
					if(hm==10){
						return "Syawal";
						}
					if(hm==11){
						return "Zulkaedah";
						}
					if(hm==12){
						return "Zulhijjah";
						}
	return ""

}

function TheConversion() {
  this.Info=Info;
}


function Info() {
        TheDate = new Date();       
        d = (TheDate.getDate());
        m = (TheDate.getMonth()+1);
        y = (TheDate.getYear());
        
	if ((y>1582)||((y==1582)&&(m>10))||((y==1582)&&(m==10)&&(d>14))) 
	{
		jd=intPart((1461*(y+4800+intPart((m-14)/12)))/4)+intPart((367*(m-2-12*(intPart((m-14)/12))))/12)-intPart( (3* (intPart(  (y+4900+    intPart( (m-14)/12)     )/100)    )   ) /4)+d-32075;
	}
	else
	{
		jd = 367*y-intPart((7*(y+5001+intPart((m-9)/7)))/4)+intPart((275*m)/9)+d+1729777;
	}
	l=jd-1948440+10632;
	n=intPart((l-1)/10631);
	l=l-10631*n+354;
	j=(intPart((10985-l)/5316))*(intPart((50*l)/17719))+(intPart(l/5670))*(intPart((43*l)/15238));
	l=l-(intPart((30-j)/15))*(intPart((17719*j)/50))-(intPart(j/16))*(intPart((15238*j)/43))+29;
	m=intPart((24*l)/709);
	d=l-intPart((709*m)/24);
	y=30*n+j-30;
	       
}


// Developed by Hazrul Azhar Jamari
// hazrul@reqa.com
// Source code from Wikicodia.com
// 28 Jan 2008


/*
double longitude
double latitude
double timeZone
double seaHeight
double gd
double gn
int yearDay;
*/
function calculatePrayerTimes( longitude, latitude, timeZone, seaHeight, gd, gn, J )
{
  //double d, t, r, g, beta, z, u, vd, vn, w;
  //int
  var Sh = 1;
  //int J = day.getYearDay();
 
  var beta = 2 * Math.PI * J / 365;
  var d = ( 180 / Math.PI ) * ( 0.006918 - 0.399912 * Math.cos( beta ) + 0.070257 * 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 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.056 * timeZone; // Originally 15
  var g = 18;
  var z = 12 + ( r - longitude ) / 15 - t / 60;
  var u = 180 / ( 15 * Math.PI ) * Math.acos( ( Math.sin( ( -0.833 - 0.0347 * sign( seaHeight ) * Math.sqrt( seaHeight * sign( seaHeight ) ) ) * Math.PI / 180 ) - Math.sin( d * Math.PI / 180 ) * Math.sin( latitude * Math.PI / 180 ) ) / ( Math.cos( d * Math.PI / 180 ) * Math.cos( latitude * Math.PI / 180 ) ) );
  var vd = 180 / ( 15 * Math.PI ) * Math.acos( ( -1 * Math.sin( gd * Math.PI / 180 ) - Math.sin( d * Math.PI / 180 ) * Math.sin( latitude * Math.PI / 180 ) ) / ( Math.cos( d * Math.PI / 180 ) * Math.cos( latitude * Math.PI / 180 ) ) );
  var vn = 180 / ( 15 * Math.PI ) * Math.acos( ( -1 * Math.sin( gn * Math.PI / 180 ) - Math.sin( d * Math.PI / 180 ) * Math.sin( latitude * Math.PI / 180 ) ) / ( Math.cos( d * Math.PI / 180 ) * Math.cos( latitude * Math.PI / 180 ) ) );
  var w = 180 / ( 15 * Math.PI ) * Math.acos( ( Math.sin( Math.atan( 1 / ( Sh + Math.tan( Math.abs( latitude - d ) * Math.PI / 180 ) ) ) ) - Math.sin( d * Math.PI / 180 ) * Math.sin( latitude * Math.PI / 180 ) ) / ( Math.cos( d * Math.PI / 180 ) * Math.cos( latitude * Math.PI / 180 ) ) );
 
  var prayerTimes = new Array( 6 );
  prayerTimes[0] = z - vd;
  prayerTimes[1] = z - u;
  prayerTimes[2] = z;
  prayerTimes[3] = z + w;
  prayerTimes[4] = z + u;
  prayerTimes[5] = z + vn;
  return prayerTimes;
}

function sign( number )
{
	if( number < 0 )
  		return -1;
  //if( number > 0 )
  	return 1;
}

/*
Convert from
1.5 to 1:30
*/
function hourToString( doubleHour )
{
  // Get the hour integer part
  var hour = Math.floor( doubleHour );
  doubleHour -= hour;
 
  // Get minutes
  doubleHour *= 60;
  var minute = Math.floor( doubleHour );
 
  var ap = "am";
  if( hour > 11 ) { ap = "pm";             }
  if( hour > 12 ) { hour = hour - 12;      }
  if( hour == 0 ) { hour = 12;             }
  if( hour < 10 ) { hour   = "0" + hour;   }
  if( minute < 10 ) { minute = "0" + minute; }
 
  // Get seconds
  // doubleHour -= minute;
  // doubleHour *= 60;
  // this.second = Math.abs( hour );
  var timeString = hour + ":" + minute + ap;
 
  return timeString;
}

var MONTH_DAYS = new Array( 12 );
MONTH_DAYS[0] = 31;
MONTH_DAYS[1] = 28;
MONTH_DAYS[2] = 31;
MONTH_DAYS[3] = 30;
MONTH_DAYS[4] = 31;
MONTH_DAYS[5] = 30;
MONTH_DAYS[6] = 31;
MONTH_DAYS[7] = 31;
MONTH_DAYS[8] = 30;
MONTH_DAYS[9] = 31;
MONTH_DAYS[10] = 30;
MONTH_DAYS[11] = 31;
 
function getYearDay( day )
{
  days = 0;
  for( i=0 ; i<day.getMonth() ; ++i )
  {
    if( i != 2 )
    	days += MONTH_DAYS[i];
    else
    {
      // Special check for February
      if( day.getYear() % 4 == 0 )
      	days = days + 29;
      else
      	days = days + 28;
      }
    }
    days += day.getDate();
    return days;
}



function initializePrayerTimes()
{
  var longitude = 103.8502;
  var latitude = 1.356718;
  var timezone = 8;
  var seaHeight = 1;
  var gd = 20.2; // Originally 19.5
  var gn = 17.8; // Originally 17.5
  
  theday = new Date(); // for testing use => new Date("January 28, 2008");
  var prayerTimesArray = calculatePrayerTimes( longitude, latitude, timezone, seaHeight, gd, gn, getYearDay( theday ) );
  
var dv_today=document.getElementById("today");
var dv_subuh =document.getElementById("dv_subuh");
var dv_zuhur=document.getElementById("dv_zuhur");
var dv_asar=document.getElementById("dv_asar");
var dv_maghrib=document.getElementById("dv_maghrib");
var dv_isyak=  document.getElementById("dv_isyak");

 if (dv_today) 
dv_today.innerHTML = theday;
   if (dv_subuh) 
dv_subuh.innerHTML = hourToString( prayerTimesArray[0] );
 if (dv_zuhur) 
  dv_zuhur.innerHTML = hourToString( prayerTimesArray[2] );
 if (dv_asar) 
 dv_asar.innerHTML = hourToString( prayerTimesArray[3] )
 if (dv_maghrib) 
  dv_maghrib.innerHTML = hourToString( prayerTimesArray[4] ); 
if (dv_isyak) 
  dv_isyak.innerHTML = hourToString( prayerTimesArray[5] );
}

window.onload=initializePrayerTimes;


