var x = new Date();
iMonths = new Array("","Muharram","Safar","Rabi'al-Awwal","Rabi'al-Akhir","Jumada'al-Ula","Jumada'al-Akhirah",
			"Rajab","Sha'baan","Ramadan","Shawwal","Dhul-Qi'dah","Dhul-Hijjah");
day = x.getDate();
month = x.getMonth();
year = x.getYear();
month += 1;
if (year < 1000) {
	year += 1900;
}
thistory = 1;
g = 0;
var dday = g + day * 1;
ayear = year;

	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;}}
    myear = ayear * 1 + cdays / (365 + leap);

//    **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);**

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<cday) 
		{
			Hday +=1;
			HdayF +=1;
			if (Hday>= Monthf) 
			{
				Hday=Hday-Monthf;
				Hmonth +=1
			}
        }
        HDAY=Math.floor(Hday)+1;
		HMONTH=Hmonth;

	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 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;
}

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 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 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 theResult()
{
//	theResult = cmonth;
//	return theResult;
/*	if (thistory==1) 
	{
        WeekDay ();
        if (cyear<0) 
		{
			if (g==0) 
			{
				bora="BH"
			}
			else 
			{
				bora="BC"
			}
		}
		else 
		{
			if (g==0) 
		{
			bora="AH"
		}
		else 
		{
			bora="AD"
		}
	} */
	iMonth = iMonths[cmonth];
	iDate = mday + " " + iMonth + " " + Math.abs(cyear);
    thistory=0;
	//	document.dmy.hResult.value=yfinale+document.dmy.bora.value + DAY + " = " + finale + bora;
	theResult = iDate;
	return theResult;
}

function getIDate()
{
	getIDate = mday;
	return getIDate;
}

function getIMonth()
{
	getIMonth = iMonths[cmonth];
	return getIMonth;
}

function getIYear()
{
	getIYear = Math.abs(cyear);
	return getIYear;
}