Web Hosting   Windows Hosting   Reseller Hosting   VPS Hosting   Dedicated Servers   Domain Name   Blog   ORDER


JavaScript : Waktu Shalat Umum (dgn kalkulasi tanpa tabel)

Diskusi tentang beragam script, php, perl, cgi and Javascript. Tadulako tidak memberikan dukungan atas script pihak ketiga yang di install. Bila membutuhkan bantuan instalasi kami kenakan biaya tergantung tingkat kesulitan. Alternatif, Anda dapat meminta bantuan pengunjung :) Jika Anda memiliki keahlian di bidang programming atau hanya ingin jualan script karya Anda, silahkan posting disini.

JavaScript : Waktu Shalat Umum (dgn kalkulasi tanpa tabel)

Postby boo [episode II] » Tue Sep 26, 2006 11:29 pm

Code: Select all
<SCRIPT type=text/javascript>
<!--
var shafii = 0; var hanafi = 1;

var twilight_angle = new Array();
twilight_angle[none=0]=new Array (0.0,0.0);
twilight_angle[egypt_survey=1]=new Array (19.5,17.5);
twilight_angle[karachi_shafii=2]=new Array (18,18);
twilight_angle[karachi_hanafi=3]=new Array (18,18);
twilight_angle[north_america=4]=new Array (15,15);
twilight_angle[muslim_league=5]=new Array (18,17);
twilight_angle[umm_alqurra=6]=new Array (19,0.0);
twilight_angle[fixed_ishaa=7]=new Array (19.5,0.0);


//========================================================
// Modifikasi bagian ini jika diperlukan,
// informasi mengenai garis bujur, lintang dan ketinggian kota yg ingin ditampilkan
var aLokal = new Array();
// aLokal[ _kota_ = _kode_area_telp_wo_0_ ] =
// new Array ( City, Country, TimeZone, Latitude, Longitude, Altitude );
aLokal[Jakarta=21]=new Array ('Jakarta','Indonesia',7,-6.1744,106.8294,1);
aLokal[Bandung=22]=new Array ('Bandung','Indonesia',7,-6.3253,106.4914,300);
aLokal[Semarang=24]=new Array ('Semarang','Indonesia',7,-7.0114,110.4111,70);
aLokal[Surabaya=31]=new Array ('Surabaya','Indonesia',7,-7.2492,112.7508,80);

// Modifikasi seting di bawah ini sesuai mahzab, metode dan lokasi yg diinginkan
var _mahzab = shafii;
var _method = karachi_shafii;
var _local = Jakarta;
//========================================================


var imsak = 0; var shubuh = 0; var syuruq = 0; var dhuhur = 0; var ashar = 0; var maghrib = 0; var isya = 0;

if(_method==karachi_hanafi) _mahzab = hanafi;
if(_method==karachi_shafii) _mahzab = shafii;

function degree(num) {
  hour = Math.floor(num); min = Math.floor((num-hour)*60); sec = Math.floor(((num-hour)*3600)-(min*60));
  hour = hour<10?'0'+hour:hour; min = min<10?'0'+min:min; sec = sec<10?'0'+sec:sec;
  return hour+':'+min+':'+sec;
}

function ShalatTime() {
  var iTanggalM = 0; var iBulanM = 0; var iTahunM = 0;
  now = new Date();
  iTanggalM = now.getDate();
  iBulanM = now.getMonth();
  iTahunM = now.getYear();
  if(iTahunM<1900) { iTahunM += 1900; } // Y2K
  hr = (Date.UTC(iTahunM,iBulanM,iTanggalM,0,0,0)-Date.UTC(iTahunM,0,1,0,0,0))/1000/60/60/24;
  year_angle = ((2*Math.PI)*hr)/365;
  solar_declination = (180/Math.PI)*(0.006918-(0.399912*Math.cos(year_angle))+
                      (0.070257*Math.sin(year_angle))-(0.006758*Math.cos(2*year_angle))+
                      (0.000907*Math.sin(2*year_angle))-(0.002697*Math.cos(3*year_angle))+
                      (0.001480*Math.sin(3*year_angle)));
  equation_time = 229.18*(0.000075+(0.001868*Math.cos(year_angle))-(0.032077*Math.sin(year_angle))-
                  (0.014615*Math.cos(2*year_angle))-(0.040849*Math.sin(2*year_angle)));
  Z = 12+(((aLokal[_local][2]*15)-aLokal[_local][4])/15)-(equation_time/60);
  U = (180/(15*Math.PI))*Math.acos((Math.sin((-0.8333-0.0347*(aLokal[_local][5]/
      Math.abs(aLokal[_local][5]))*Math.pow(Math.abs(aLokal[_local][5]),0.5))*(Math.PI/180))-
      Math.sin(solar_declination*(Math.PI/180))*Math.sin(aLokal[_local][3]*(Math.PI/180)))/
      (Math.cos(solar_declination*(Math.PI/180))*Math.cos(aLokal[_local][3]*(Math.PI/180))));
  Vd = (180/(15*Math.PI))*Math.acos((-Math.sin(twilight_angle[_method][0]*(Math.PI/180))-
       Math.sin(solar_declination*(Math.PI/180))*Math.sin(aLokal[_local][3]*(Math.PI/180)))/
       (Math.cos(solar_declination*(Math.PI/180))*Math.cos(aLokal[_local][3]*(Math.PI/180))));
  Vn = (180/(15*Math.PI))*Math.acos((-Math.sin(twilight_angle[_method][1]*(Math.PI/180))-
       Math.sin(solar_declination*(Math.PI/180))*Math.sin(aLokal[_local][3]*(Math.PI/180)))/
       (Math.cos(solar_declination*(Math.PI/180))*Math.cos(aLokal[_local][3]*(Math.PI/180))));
  W = (180/(15*Math.PI))*Math.acos((Math.sin(Math.atan(1/
      (_mahzab+1+Math.tan(Math.abs(aLokal[_local][3]-solar_declination)*(Math.PI/180)))))-
      Math.sin(solar_declination*(Math.PI/180))*Math.sin(aLokal[_local][3]*(Math.PI/180)))/
      (Math.cos(solar_declination*(Math.PI/180))*Math.cos(aLokal[_local][3]*(Math.PI/180))));

  imsak = degree(Z-Vd-(1/6));
  shubuh = degree(Z-Vd);
  syuruq = degree(Z-U);
  dhuhur = degree(Z);
  ashar = degree(Z+W);
  maghrib = degree(Z+U);

  if(_method==umm_alqurra||_method==fixed_ishaa) { isya = degree(Z+U+1.5); }
  else { isya = degree(Z+Vn); }

  document.write(imsak+' - '+shubuh+' - '+syuruq+' - '+dhuhur+' - '+ashar+' - '+maghrib+' - '+isya);
}
//-->
</SCRIPT>

<BODY>
<script>ShalatTime();</script>
</BODY></HTML>


Test dong... :D
kayanya waktunya geser terlalu jauh :( (5-25 menit)
apa saya yg salah seting posisi lintang-bujur-nya yah?
ada info dimana bisa dapet info posisi lintang-bujur + ketinggian kota2 besar di Indonesia yg akurat?
masih uji coba, kalo kira2 itungannya beres, langsung di-format kaya model jadwal shalat yg bulan Ramadhan... (biar kompak sekalian :D)

Ayo Pak Azza.... bantuin pleaseeee..... :D :D :D

-edit-
ketemu satu kesalahan, perhitungan variabel hr, lupa gak dijadiin hari :P
kesalahan turun jadi 2-6 menit
Image
Image
User avatar
boo [episode II]
Pembina ****
 
Posts: 463
Joined: Sun Oct 02, 2005 6:49 am
Location: Atas Awan

Postby boo [episode II] » Wed Sep 27, 2006 4:22 pm

ini tabel jadwal shalat spt yg di
http://www.tadulako.co.id/forum/viewtopic.php?t=492
bbrp seting tetap, bbrp lainnya saya rubah dikit

kode menurut pertimbangan saya sdh gak layak, kepanjangan :D
tapi kalo mo tau, buka ini :
http://boo.dosinta.com/demo/shalat.html
kode-nya silakan di view-source / save-as html

seting yg perlu diubah cukup yg ini :
//=== SCRIPT SETTINGS ====================================
// Modifikasi bagian ini jika diperlukan,
// informasi mengenai garis bujur, lintang dan ketinggian kota yg ingin ditampilkan
var map = new Array();
// map[ _kota_ = _kode_area_telp_wo_0_ ] =
// new Array ( City, Country, TimeZone, Latitude, Longitude, Altitude );
map[Jakarta=21]=new Array ('Jakarta','Indonesia',7,-6.1744,106.8294,1);
map[Bandung=22]=new Array ('Bandung','Indonesia',7,-6.3253,106.4914,300);
map[Semarang=24]=new Array ('Semarang','Indonesia',7,-7.0114,110.4111,70);
map[Surabaya=31]=new Array ('Surabaya','Indonesia',7,-7.2492,112.7508,80);

// Modifikasi seting di bawah ini sesuai mahzab, metode dan lokasi yg diinginkan
var _mahzab = shafii;
var _method = karachi_shafii;
var _map = Jakarta;
var _shift_time = 0;
var _hijri_date_correction = 0;

// Modifikasi seting di bawah ini utk bentuk default tampilan tabel shalat
var _expand_collapse = true;
var _time_passed = true;
var _full_month_list = true;
var _hijri_table = true;
var _only_imsak_maghrib = false;
//========================================================

array map[] utk menyimpan lokasi timezone,lintang,bujur,ketinggian kota yg dimaksud,
tambahkan sendiri jk perlu, misal :
map[Medan=61]=new Array ('Medan','Indonesia',7,3.5833,98.6667,1);

variabel _shift_time masih saya sediakan jk map kota tidak diketahui,
jd bisa menggunakan referensi kota terdekat,
misal Cirebon, cukup ganti :
map[Jakarta=21]=new Array ('Jakarta','Indonesia',7,-6.1744,106.8294,1);
jadi :
map[Jakarta=21]=new Array ('Cirebon','Indonesia',7,-6.1744,106.8294,1);
set variabel _shift_time = -7;

_mahzab, bisa di-set dgn pilihan : shafii atau hanafi (pilih salah satu)

_method, bisa di-set dgn pilihan (pilih salah satu) :
none, egypt_survey, karachi_shafii, karachi_hanafi, north_america,
muslim_league, umm_alqurra, fixed_ishaa

_map, nama kota yg dipakai sbg referensi

_hijri_date_correction, koreksi kesalahan perhitungan tanggal hijriah

utk seting yg ini :

_expand_collapse = true; //true : enable fungsi expand/collapse tabel
_time_passed = true; //true : waktu yg sudah dilewati ditandai
_full_month_list = true; //true : tabel utk satu bulan
_hijri_table = true; //true : bulan yg ditampilkan berdasar penanggalan hijriah
_only_imsak_maghrib = false; //true : yg ditampilkan hanya jadwal imsak & maghrib

hanya berhubungan ke tampilan, silakan di ubah2 antara true atau false,
tdk mempengaruhi perhitungan
Image
Image
User avatar
boo [episode II]
Pembina ****
 
Posts: 463
Joined: Sun Oct 02, 2005 6:49 am
Location: Atas Awan

Postby azza » Thu Sep 28, 2006 2:14 am

Ayo Pak Azza.... bantuin pleaseeee.


Waduh berat ah :D

Itungannya berat :P

Dan itu bisa dipertanggungjawabkan nggak itungannya? Kalau salah kan malah jadi masalah :D Dapet darimana sih itungannya?

---

Disclaimer: Nggak ada maksud untuk menghalangi berkreasi, ayo bikin terus sampe solid, ntar saya kan tinggal pake :))
azza
Moderator
 
Posts: 329
Joined: Fri Apr 09, 2004 9:20 pm
Location: Bintaro

Postby boo [episode II] » Thu Sep 28, 2006 4:05 am

asalnya dr sini :
http://firmanw.dotgeek.org/snippets/Isl ... Times.phps

kalo itungannya saya gak terlalu ngeh :P,
tapi saya plototin, dibandingkan ama yg punya depag, ada selisih antara 2-6 menit,
ya maklumlah, kayanya method di atas mungkin cuma "itungan kasar",
kalo method yg bener2 bisa dijagain kan mbulet bin ruwet... :D

kalo method itungannya cukup pake post yg pertama,
itu intinya, bisa expand kemana2,
sedang contoh yg kedua, iseng, cuma maen2 doang, tapi malah jd kepanjangan :D
Image
Image
User avatar
boo [episode II]
Pembina ****
 
Posts: 463
Joined: Sun Oct 02, 2005 6:49 am
Location: Atas Awan


Return to Programming / Scripting / Coding

Who is online

Users browsing this forum: No registered users and 0 guests