function check(geo) {
thistory=1
day=geo.day.value;
month=geo.month.value;
year=geo.year.value;
//alert(day+" "+month+" "+year);
var dday=g+day*1
if (year<1) {kill();}
if (year>9999) {kill();}
if (year - Math.floor(year) != 0) {kill();}
if (month<1) {kill();}
if (month>12) {kill();}
if (month - Math.floor(month) != 0) {kill();}
if (day<1) {kill();}
if (dday>31) {kill();}
if (day- Math.floor(day) != 0) {kill();}
if (g==0) {if (day == 31) {checkx ();}}
ayear=year
if (geo.bora.value=="BC") {ayear=-year+1}
if (geo.bora.value=="BH") {ayear=-year+1}
convert ()
}
function checkx ()
{
if (month==2) {kill ();}
if (month==4) {kill ();}
if (month==6) {kill ();}
if (month==9) {kill ();}
if (month==11) {kill ();}
}
function convert () {
NOTE=''
var hijri=0; var georgean=0
if(g==1) {hijri=1} else {georgean=1};
if (georgean>0) {
georgean=0
var cdays=day*1;
cdays += (month>11) ? 30: 0 ;
cdays += (month>10) ? 31: 0;
cdays += (month>9) ? 30: 0;
cdays += (month>8) ? 31: 0;
cdays += (month>7) ? 31: 0;
cdays += (month>6) ? 30: 0;
cdays += (month>5) ? 31: 0;
cdays += (month>4) ? 30: 0;
cdays += (month>3) ? 31: 0;
cdays += (month>2) ? 28: 0;
cdays += (month>1) ? 31: 0;
leap=0;cdays +=0
if (ayear/4 == Math.floor(ayear/4)) {leap=1;}
if (ayear/100 == Math.floor(ayear/100)) {if (ayear/400 != Math.floor(ayear/400)) {leap=0;}}
if (leap==1) {if (month>2) {cdays +=1;}}
if (day>28+leap) {if (month==2) {kill ()}}
myear = ayear*1+cdays/(365+leap);
process1 ()}
if (hijri>0) {
cdays=Math.floor((month-1)*29.5)+day*1-2
/* myear=ayear*1+cdays/354 */
/* if (cdays==355) {myear +=ayear*1+1} */
test1 ()
process2 ()
var hijri=0
}
result ()
}
function test1() {
var Monthf=29.53058796;
var Gyear=ayear*0.970224044+621.574981435;
var GyearDf= Gyear-Math.floor(Gyear);
Gyear -= GyearDf;
var l=0;
if (Gyear/4 == Math.floor(Gyear/4)) {l=1;} ;
if (Gyear/100 == Math.floor(Gyear/100)) {if (Gyear/400 != Math.floor(Gyear/400)) {l=0;}};
Gday= Math.floor((365+l)*GyearDf)+1;
Gyear +=Gday/(365+l);
var Hyear=(Gyear-621.574981435)/0.970224044;
var Hdayf=Hyear-Math.floor(Hyear),Hday=Hdayf*10631/30+1;
MONTH=1; if (month>1) {HDAY=1} else {HDAY=0}
while (MONTH<month) {
Hday +=1;HDAY+=1
if (Hday>Monthf) {MONTH +=1; Hday=Hday-Monthf}
}
if (HDAY>0) {YearD=HDAY} else {YearD=1};HDAY +=day*1
if (HDAY==356) {HDAY=355}
while (MONTH<13 && YearD<355) {
Hday +=1;YearD +=1
if (Hday>Monthf) {MONTH +=1; Hday -=Monthf}}
YearD -=1;myear=ayear*1+(HDAY-1)/(YearD+1)
}
function kill () {
if (thistory ==1) {
alert("تأكد من تعبئتك لجميع البيانات");
thistory=0;}
document.dmy.year.focus()
}
function process1 () {
cyear=(myear-621.578082192)/0.97022298;
cyear += Math.floor(Math.abs(cyear)/3000)*30/10631
cday= cyear-Math.floor(cyear);
cyear -= cday;
if ((cday*10631/30)-Math.floor(cday*10631/30)<.5){cday= Math.floor(cday*10631/30) +1} else {cday= Math.floor(cday*10631/30) +2};
test2(cday)
mday=HDAY;cmonth=HMONTH;
if (cmonth==13){cmonth=1;cyear +=1};
var Precise=Pcision(JulianDay(ayear*1,month*1,day*1,19,30,0));
if (mday !=Precise) {if (mday==1 && Precise>28) {cmonth -=1;if (cmonth==0) {cmonth=12;cyear -=1}} else {if (mday>28 && Precise<3) {cmonth +=1;if (cmonth==13) {cmonth=1;cyear +=1}}}}
mday=Precise
if (cyear<1) {cyear -=1}
result();
}
function test2 (HdayN) {
var Monthf=29.53058796;
var Gyear=cyear*0.970224044+621.574981435;
var GyearDf= Gyear-Math.floor(Gyear);
Gyear -= GyearDf;
var l=0;
if (Gyear/4 == Math.floor(Gyear/4)) {l=1;} ;
if (Gyear/100 == Math.floor(Gyear/100)) {if (Gyear/400 != Math.floor(Gyear/400)) {l=0;}};
Gday =Math.floor((365+l)*GyearDf)+1;
Gyear +=Gday/(365+l);
var Hyear=(Gyear-621.574981435)/0.970224044;
var Hdayf=Hyear-Math.floor(Hyear),Hday=Hdayf*10631/30+1;
Hmonth=1;HdayF=1
while (HdayF<HdayN) {
Hday +=1;HdayF +=1
if (Hday>= Monthf) {Hday=Hday-Monthf;Hmonth +=1};
}
HDAY=Math.floor(Hday)+1;HMONTH=Hmonth;
}
function process2 () {
cyear=myear*0.970224044+621.574981435;
var fday= cyear-Math.floor(cyear);
cyear -= fday;
var l=0;
if (cyear/4 == Math.floor(cyear/4)) {l=1;}
if (cyear/100 == Math.floor(cyear/100)) {if (cyear/400 != Math.floor(cyear/400)) {l=0;}}
if ((365+l)*fday-Math.floor((365+l)*fday)<.5){cday= Math.floor((365+l)*fday)} else {cday= Math.floor((365+l)*fday)+1};
cmonth=1;mday=cday
if (cday>31) {cmonth +=1;mday=cday-31;}
if (cday>59+l) {cmonth +=1;mday=cday-59-l;}
if (cday>90+l) {cmonth +=1;mday=cday-90-l;}
if (cday>120+l) {cmonth +=1;mday=cday-120-l;}
if (cday>151+l) {cmonth +=1;mday=cday-151-l;}
if (cday>181+l) {cmonth +=1;mday=cday-181-l;}
if (cday>212+l) {cmonth +=1;mday=cday-212-l;}
if (cday>243+l) {cmonth +=1;mday=cday-243-l;}
if (cday>273+l) {cmonth +=1;mday=cday-273-l;}
if (cday>304+l) {cmonth +=1 ;mday=cday-304-l;}
if (cday>334+1) {cmonth +=1 ;mday=cday-334-l;}
Adjust(l)
if (cyear <1) {cyear -=1;}
}
function Adjust(Leap) {
var Hjdn=JulianDay(cyear*1,cmonth*1,mday*1,19,30,0)*1; var Hdn=Pcision(Hjdn);var Hdnm=Pcision(Hjdn-1);var Hdnp=Pcision(Hjdn+1)
if (Hdn !=day*1) {
if (Hdnp==day*1) {var C=1}
if (Hdnm==day*1) {var C=-1}
if (Hdnp!=day*1 && Hdnm!=day*1) {var C=-1;NOTE=' **'}
mday +=C
if (mday>28) {
if (cmonth==11 || cmonth==9 || cmonth==6 || cmonth==4) {if (mday>30) {mday=1;cmonth +=1}};
if (cmonth==12 || cmonth==10 || cmonth==8 || cmonth==7 || cmonth==5 || cmonth==3 || cmonth==1) {if (mday>31) {mday=1;cmonth +=1}};
if (cmonth==2) {if (mday>28+Leap) {mday=1;cmonth=3}};
if (cmonth==13) {cmonth=1;cyear +=1}
}
if (mday==0) {cmonth -=1;if (cmonth==0) {mday=31;cmonth=12;cyear -=1}
else { if (cmonth==11 || cmonth==9 || cmonth==6 || cmonth==4) {mday=30};
if (cmonth==10 || cmonth==8 || cmonth==7 || cmonth==5 || cmonth==3 || cmonth==1) {mday=31};
if (cmonth==2) {mday=28+Leap} } }
}}
function result () {
if (thistory==1) {
WeekDay ();
if (cyear<0)
{
if (g==0)
{
bora="قبل الهجرة"
}
else
{
bora="قبل الميلاد"
}
}
else
{
if (g==0)
{
bora="هجري"
}
else
{
bora="ميلادي"
}
}
yfinale=day+"/"+month+"/"+year+" ";
finale=mday+"/"+cmonth+"/"+Math.abs(cyear)+" ";
thistory=0;
document.dmy.hResult.value=yfinale+document.dmy.bora.value + DAY + " الموافق " + finale + bora;
}
}
function WeekDay () {
if (g==1) {var Dyear=cyear;var Dmonth=cmonth;var Dday=mday} else {var Dyear=year*1;var Dmonth=month*1;var Dday=day*1}
if (document.dmy.bora.value=="BC" || Dyear<0 ) {Dyear=-Math.abs(Dyear)+1}
var DayCount=0; var L=0
while (Dyear<10000){
if (Dyear/4==Math.floor(Dyear/4)) {L=1} else {L=0};
if (Dyear/100==Math.floor(Dyear/100)) { if (Dyear/400 !=Math.floor(Dyear/400)) {L=0}};
if (Dmonth==14) {DayCount +=365+L} else {
while (Dmonth<13) {
if (Dmonth==1 || Dmonth==3 || Dmonth==5 || Dmonth==7 || Dmonth==8 || Dmonth==10 || Dmonth==12) {var limit=31} else {var limit=30};
if (Dmonth==2) {limit=28+L}
if (Dday==40) {DayCount +=limit} else {while (Dday<limit){
Dday +=1;DayCount +=1;}};
Dmonth +=1;Dday=40}};
Dyear +=1; Dmonth=14};
var Dweek=DayCount%7;
if (Dweek==0) {DAY=" يوم الجمعة "};
if (Dweek==6) {DAY=" يوم السبت "};
if (Dweek==5) {DAY=" يوم الأحد "};
if (Dweek==4) {DAY=" يوم الإثنين "};
if (Dweek==3) {DAY=" يوم الثلاثاء "};
if (Dweek==2) {DAY=" يوم الأربعاء "};
if (Dweek==1) {DAY=" يوم الخميس "};
}
function rad(angle)
{return r(angle)*Math.PI/180}
function sin(angle)
{return Math.sin(rad(angle))}
function cos(angle)
{return Math.cos(rad(angle))}
function r(Input)
{if (Input >=0) {var Output=Input-Math.floor(Input/360)*360} else {var Output=Input-Math.ceil(Input/360)*360+360;}
return Output}
function Moon(jd)
{
var T_ = (jd-EPOCH*1)/ 36525.0;
var mE=297.8502042
+ 445267.1115168*T_
- 0.0016300*(T_*T_)
+ (T_*T_*T_)/545868.0
- (T_*T_*T_*T_)/113065000
var mA=134.9634114
+ 477198.8676313*T_
+ 0.0089970*(T_*T_)
+ (T_*T_*T_)/69699.0
- (T_*T_*T_*T_)/863310000.0
var SmA=357.5291092
+ (35999.0502909*T_)
- (0.0001536 *T_*T_)
+ ((T_*T_*T_)/24490000)
var D = r(mE)*1;
var S = r(SmA)*1;
var M = r(mA)*1;
var phaseAngle=180-D-6.289*sin(M)+2.1*sin(S)-1.274*sin(r(2*D)-M)-0.658*sin(2*D);
phaseAngle +=-0.214*sin(2*M);
phaseAngle +=-0.110*sin(1*D)
/** k (46.1) **/
var iF=(1+cos(phaseAngle))/2*(phaseAngle/Math.abs(phaseAngle))
return iF }
function Pcision(F) {
var Status='ok';var Dn=0;var jDn=F
if (Moon(jDn-1)<=0) {jDn -=1;Dn +=1}
while (Status=='ok') {
var Fn=Moon(jDn);var Fn2=Moon(jDn-1);
if (((Fn/Math.abs(Fn))*(Fn2/Math.abs(Fn2)))==1) {Dn +=1;jDn -=1} else {if (Math.abs(Fn*Fn2)<.2) {Status='End'} else {Dn +=1;jDn -=1}}
}
return Dn}
function JulianDay (gYear,gMonth,gDay,gHour,gMinutes,gSeconds)
{
var calendar='GREGORIAN'
EPOCH = 2451545.0;
if (gMonth <= 2) { --gYear;gMonth += 12;}
var A = Math.floor(gYear/100);
var B=0
if (calendar == 'GREGORIAN') {B =Math.floor( 2 - A + (A / 4))} else {B = 0;}
var dayFraction = (gHour + gMinutes/60.0 + gSeconds/3600.0) / 24.0;
var dayAndTime = gDay + dayFraction;
jd_ =Math.floor(365.25 * (gYear + 4712))
+Math.floor(30.6001 * (gMonth+1))
+ dayAndTime + B -63.5;
return jd_*1
}
var Clock = 0;
function Update() {
var Rdate= new Date();
var Thetime="";
var Thedate="";
var Thehours=Rdate.getHours();
var Theminutes=Rdate.getMinutes();
var Theseconds=Rdate.getSeconds();
var Theyear=Rdate.getYear();
var Themonth=Rdate.getMonth();
var Theday=Rdate.getDate();
var ampm;
if (Thehours < 12) {if (Thehours == 0) {ampm = "M"; Thehours = 12;} else {ampm = "am";}} else { ampm = "pm"; if (Thehours > 12) {Thehours -= 12;}else{}}
if (Thehours <10) {Thehours= "0"+ Thehours;}
if (Theminutes <10) {Theminutes= "0"+ Theminutes;}
if (Theseconds <10) {Theseconds= "0"+ Theseconds;}
Thetime +=Thehours +":"+ Theminutes + ":" + Theseconds +" "+ ampm ;
Themonth +=1 ; Theyear +=1900;
if (Theday <10) {Theday= "0"+ Theday;}
if (Themonth <10) {Themonth= "0"+ Themonth;}
Thedate +=Themonth +"/"+ Theday +"/"+ Theyear +" ";
document.timeForm.datebox.value = Thedate;
document.timeForm.timebox.value = Thetime;
clearTimeout( Clock );
Clock = setTimeout( "Update()", 1000 )}
function Thec (w,t) {
w ? document.dmy.bora.value="ميلادي":document.dmy.bora.value="هجري"
}
function Cbora(c) {
if (c.value=="قبل الميلاد") {var b="ميلادي"}
if (c.value=="ميلادي") {var b="قبل الميلاد"}
if (c.value=="قبل الهجرة") {var b="هجري"}
if (c.value=="هجري") {var b="قبل الهجرة"}
c.value=b
}
