/** EOTC's Bealat and Atswamat Mawcha
/** 
  *	This program is developed based on EOTC's Bahire Hasb which is used to calculate every year's
  * bealat and atswamat (feasts and fasts). Some of the bealats/aswamat (feasts/fasts) that have 
  *	fixed dates are also incorporated in this program for the sake of completenes. This program also 
  *	has functions that are used to convert Ethiopian date to Gregorian date and Gregorian date to 
  * Ethiopian month and year. Some of the ideas which are used to make the conversion are taken from
  * Siyan Gregorian Ethiopic Date Convertor developed by Ermyas Teshome (Email: ermyt84@yahoo.com).
  *	
  *	This program can give all bealat's and atswamat found between 1990 and 2020 of Ethiopian calendar. 
  * In order to get correct calendar of this month, your computer's date should be set to the correct
  * today's Gregorian date.
  *
  * To use this program, which is fully developed using Java Script, one should include the following 
  *	Java Script code in the body of his/her page and place this file in the same directory as the page
  *	containing the following Java Script code.
  *	
  *		<SCRIPT language=JavaScript src="../../Calendar/bahreHasab.js"></SCRIPT>
  *	    <SCRIPT language=JavaScript>
  *			var today = new Date();
  *			var cal = new displayCalendar ( today.getFullYear(), today.getMonth() + 1,today.getDate() );
  *		</SCRIPT>
  *
  *	Author Email: lsurafel@yahoo.com
  * @author Surafel Lemma
  * 
  *Last Modified March 29th 2006
  */
	
	var AMETE_FEDA = new Number(5500);
	var NIUS_KEMER = 19;
	var TINTE_ABEKTE = 11;
	var TINTE_METIKEA = 19;
	WENGELAWI = [ "×/NS", "¥t&ãS", "¥RöS", "l#”S" ];
	// The following characters represents Amharic equivalents of the seven days.
	ELET = [ "s®", "¥Ks®", "rb#:", "/ÑS", "›RB", "QÄ»", "X/#D" ];
	ELET_ENGLISH = [ "Mon.", "Tue.", "Wed.", "Thu.", "Fri.", "Sat.", "Sun." ];
	ELET_TEWSAK = [ 6, 5, 4, 3, 2, 8, 7 ]
	WOR = [ "Meskerem", "Tikimet", "Hidar", "Tahisas", "Tir", "Yekatit", "Megabit", "Miyaziya", "Ginbot", "Sene", "Hamle", "Nehassie", "Pagumen" ];
	//Amharic versions are shown below.
	//WOR = [ "mSkrM", "_QMT", "~ÄR", "¬~œ|", "_R", "yµtET", "mUb!T", "¸ÃZÃ", "GNïT", "sn@", "/Ml@", "n/s@", "Ôg#»N" ];
	BEALAT_ASWAMAT = [ "Kidus Yohannes", "Meskel", "Lidet", "Timket", "Tsome Nenewe", "Abiy Tsome", "Debre Zeit",
					  "Hosaena", "Seklet", "Tinsae", "Rekebe Kahinat", "Erget","Peraklitos","Tsome Hawariat", "Tsome Dihnet",
					  "Tsome Filseta", "Debre Tabor", "Ye Emebetachin Erget"];
	
	function ameteAlem ( year ) {
		var ameteMeheret = new Number(year);
		return ameteMeheret + AMETE_FEDA;
	}
	
	function wengelawi ( year ) {
		return ( ameteAlem( year ) % 4 );
	}
	
	function tinteKemerElet ( year ) {
		var meteneRabeit =  Math.floor( ameteAlem( year ) / 4 );
		return ( (meteneRabeit + ameteAlem( year ) ) % 7 );
	}
	
	function tinteKemerKen () {
		return 1;
	}
	
	function tinteKemerWor() {
		return 0;
	}
	
	function medeb ( year ) {
		return ameteAlem( year )% NIUS_KEMER;
	}
	
	function wenber ( year ) {
		return ( medeb( year ) - 1 );
	}
	
	function abekte ( year ) {
		return ( ( wenber(year) * TINTE_ABEKTE ) % 30 );
	}
	
	function bealeMetikeaKen ( year ) {
		return 30 - abekte( year );
	}
	
	function bealeMetikeaWor ( year ) {
		if ( bealeMetikeaKen( year ) > 14 )
			return 0;
		else if (bealeMetikeaKen( year ) < 14 )
			return 1;
		else
			alert ("Error in beale metikea wor ");
	}
	
	function bealeMetikeaElet ( year ) {
		var days = bealeMetikeaWor( year ) * 30 + bealeMetikeaKen( year );
		var elet = ( tinteKemerElet( year ) - 1 + days ) % 7;
		return elet;
	}
					
	function daysEskeMebajaHamer ( year ) {
		var daysEskeMetkea =  bealeMetikeaWor( year ) * 30 + bealeMetikeaKen( year );
		var daysMetkeaEskeNenewe = 120 + ELET_TEWSAK [ bealeMetikeaElet( year ) ];
		var days = daysEskeMetkea + daysMetkeaEskeNenewe;
		return days;
	}
	
	function mebajaHamerKen ( year ) {
		var ken = ( bealeMetikeaKen( year ) + ELET_TEWSAK [ bealeMetikeaElet( year ) ] ) % 30;
		if (ken == 0 )
			ken = 30;
		return ken;
	}
	
	function mebajaHamerWor ( year ) {
		var wor = Math.floor(daysEskeMebajaHamer( year ) / 30);
		if ( (daysEskeMebajaHamer( year ) % 30) == 0)
			wor--;
		return wor;
	}
//......................... Yebealat kenat ena worat / functions that return days and months of feasts		
	function neneweKen ( year ) {
		return mebajaHamerKen( year );
	}
	
	function neneweWor ( year ) {
		return mebajaHamerWor( year );
	}

	function abiyTsomeKen( year ) {
		var ken = (daysEskeMebajaHamer( year ) + 14 ) % 30;
		if ( ken == 0)
			ken = 30;
		return ken;
	}
	
	function abiyTsomeWor ( year ) {
		var wor =Math.floor((daysEskeMebajaHamer( year ) + 14 ) / 30);
		if ( ((daysEskeMebajaHamer( year ) + 14 ) % 30) == 0 )
			wor--;
		return wor;
	}
		
	function debreZeitKen ( year ) {
		var ken = (daysEskeMebajaHamer( year ) + 41 ) % 30;
		if ( ken == 0)
			ken = 30;
		return ken;
	}
	
	function debreZeitWor ( year ) {
		var wor =Math.floor((daysEskeMebajaHamer( year ) + 41 ) / 30);
		if ( ((daysEskeMebajaHamer( year ) + 41 ) % 30) == 0 )
			wor--;
		return wor;	
	}
	
	function hosaenaKen ( year ) {
		var ken = (daysEskeMebajaHamer( year ) + 62 ) % 30;
		if ( ken == 0)
			ken = 30;
		return ken;
	}
	
	function hosaenaWor ( year ) {
		var wor =Math.floor((daysEskeMebajaHamer( year ) + 62 ) / 30);
		if ( ((daysEskeMebajaHamer( year ) + 62 ) % 30) == 0 )
			wor--;
		return wor;
	}
	
	function sikletKen ( year ) {
		var ken = (daysEskeMebajaHamer( year ) + 67 ) % 30;
		if ( ken == 0)
			ken = 30;
		return ken;
	}
	
	function sikletWor ( year ) {
		var wor =Math.floor((daysEskeMebajaHamer( year ) + 67 ) / 30);
		if ( ((daysEskeMebajaHamer( year ) + 67 ) % 30) == 0 )
			wor--;
		return wor;
	}
	
	function tinsaeKen ( year ) {
		var ken = (daysEskeMebajaHamer( year ) + 69 ) % 30;
		if ( ken == 0)
			ken = 30;
		return ken;
	}
	
	function tinsaeWor ( year ) {
		var wor =Math.floor((daysEskeMebajaHamer( year ) + 69 ) / 30);
		if ( ((daysEskeMebajaHamer( year ) + 69 ) % 30) == 0 )
			wor--;
		return wor;
	}
	
	function rekebeKahinatKen ( year ) {
		var ken = (daysEskeMebajaHamer( year ) + 93 ) % 30;
		if ( ken == 0)
			ken = 30;
		return ken;
	}
	
	function rekebeKahinatWor ( year ) {
		var wor =Math.floor((daysEskeMebajaHamer( year ) + 93 ) / 30);
		if ( ((daysEskeMebajaHamer( year ) + 93 ) % 30) == 0 )
			wor--;
		return wor;
	}
	
	function ergetKen ( year ) {
		var ken = (daysEskeMebajaHamer( year ) + 108 ) % 30;
		if ( ken == 0)
			ken = 30;
		return ken;
	}
	
	function ergetWor ( year ) {
		var wor =Math.floor((daysEskeMebajaHamer( year ) + 108 ) / 30);
		if ( ((daysEskeMebajaHamer( year ) + 108 ) % 30) == 0 )
			wor--;
		return wor;	
	}
	
	function peraklitosKen ( year ) {
		var ken = (daysEskeMebajaHamer( year ) + 118 ) % 30;
		if ( ken == 0)
			ken = 30;
		return ken;	
	}
	
	function peraklitosWor ( year ) {
		var wor =Math.floor((daysEskeMebajaHamer( year ) + 118 ) / 30);
		if ( ((daysEskeMebajaHamer( year ) + 118 ) % 30) == 0 )
			wor--;
		return wor;	
	}
	
	function tsomeHawariatKen ( year ) {
		var ken = (daysEskeMebajaHamer( year ) + 119 ) % 30;
		if ( ken == 0)
			ken = 30;
		return ken;	
	}
	
	function tsomeHawariatWor ( year ) {
		var wor =Math.floor((daysEskeMebajaHamer( year ) + 119 ) / 30);
		if ( ((daysEskeMebajaHamer( year ) + 119 ) % 30) == 0 )
			wor--;
		return wor;	
	}
	
	function tsomeDihenetKen ( year ) {
		var ken = (daysEskeMebajaHamer( year ) + 121 ) % 30;
		if ( ken == 0)
			ken = 30;
		return ken;	
	}
	
	function tsomeDihenetWor ( year ) {
		var wor =Math.floor((daysEskeMebajaHamer( year ) + 121 ) / 30);
		if ( ((daysEskeMebajaHamer( year ) + 121 ) % 30) == 0 )
			wor--;
		return wor;	
	}
//............................. kenachew yemaylewet bealat/ feasts with fixed dates ...................

	function enqutatashKen ( year ) {
		return 1;	
	}
	
	function enqutatashWor ( year ) {
		return 0;	
	}
	
	function meskelKen ( year ) {
		return 17;	
	}
	
	function meskelWor ( year ) {
		return 0;	
	}
	
	function genaKen ( year ) {
		var ken = 29;
		if ( (ameteAlem( year - 1 ) % 4) == 3 ) 
			ken = 28;
		
		return ken;	
	}
	
	function genaWor ( year ) {
		return 3;	
	}
	
	function timketKen ( year ) {
		return 11;	
	}
	
	function timketWor ( year ) {
		return 4;	
	}
	
	function tsomeFilsetaKen ( year ) {
		return 1;	
	}
	
	function tsomeFilsetaWor ( year ) {
		return 11;	
	}
	
	function filsetaKen ( year ) {
		return 16;	
	}
	
	function filsetaWor ( year ) {
		return 11;	
	}
	
	function debreTaborKen ( year ) {
		return 13;	
	}
	
	function debreTaborWor ( year ) {
		return 11;	
	}
	
//.....................................construct the calendar ..........................................
	function yeLidetaElet ( year, month ) {
		var days = 30 * month;
		var elet = ( tinteKemerElet( year ) + days ) % 7;
		return elet;
	}
	
	function serkeMealtInAmharic( serkee )
	{ var serkeM=serkee;
	  
	  if(serkee == 10) serkeM = "0";
	  else if(serkee > 10 && serkee < 20) serkeM = "0" + (serkee % 10);
	  else if (serkee == 20) serkeM = "!";
	  else if(serkee > 20 && serkee < 30) serkeM = "!" + (serkee % 10);
	  else if (serkee == 30) serkeM = "V";
		return serkeM;
		}
	function displayCalendar ( txtYear, txtMonth, txtDay ){
		var gregYear = new Number(txtYear);
		var gregMonth = new Number (txtMonth);
		var gregDay = new Number (txtDay);
		var month = gregToEthMonth ( gregYear, gregMonth, gregDay );
		var year = gregToEthYear ( gregYear, gregMonth, gregDay );
		
		var strCalTable = "";

		strCalTable = strCalTable + "<form style=\"font-family:Verdana\" style=\"font-size:7\"  name=\"frmEthiopianCalendar\" method=\"post\" action=\"\">";
		strCalTable = strCalTable + "<table  width=\"100%\" height=\"178\" border=\"1\" cellpadding=\"1\" cellspacing=\"1\" bordercolor=\"#F3F3F3\" >";
    	strCalTable = strCalTable + "<tr> <td colspan = \"7\" bgcolor=\"#C5E1F2\">";
      	strCalTable = strCalTable + "<table width=\"100%\" border=\"0\">";
    	strCalTable = strCalTable + "<tr>";
      	strCalTable = strCalTable + "<td id = \"wengelawi\" > <font face=\"VG2 Main\" >zmn " + WENGELAWI[ wengelawi(year) ] +" </font> </td>";
		strCalTable = strCalTable + "</tr>";
		strCalTable = strCalTable + "<tr> <td >";
     	strCalTable = strCalTable + "<select name=\"lstWor\" size=\"1\" id=\"lstWor\" onChange=\"changeCalendarByMonthOrYear(frmEthiopianCalendar.lstYear.value, frmEthiopianCalendar.lstWor.value)\">";
		for (var worCount = 0; worCount < 13; worCount++)
			if ( worCount == month )
				strCalTable = strCalTable + "<option value=\""+ worCount +"\" selected>"+ WOR[ worCount ] +"</option>";
			else
				strCalTable = strCalTable + "<option value=\""+ worCount+"\">"+ WOR[ worCount ] +"</option>";
		strCalTable = strCalTable + "</select>";
      	strCalTable = strCalTable + "<select name=\"lstYear\" size=\"1\" id=\"lstYear\" onChange=\"changeCalendarByMonthOrYear(frmEthiopianCalendar.lstYear.value, frmEthiopianCalendar.lstWor.value)\">";
		for (var count = 1990; count <= 2020; count++)
			if (count == year )
				strCalTable = strCalTable + "<option value=\""+ count +"\" selected>"+ count +"</option>";
			else
				strCalTable = strCalTable + "<option value=\""+count+"\">"+ count +"</option>";
		strCalTable = strCalTable + "</select>"; 
		//Bealat zerzer
      	strCalTable = strCalTable + "<select name=\"lstBealat\" size=\"1\" id=\"lstBealat\" onChange=\"changeCalendarByBeal (frmEthiopianCalendar.lstYear.value, frmEthiopianCalendar.lstBealat.value)\">";
		strCalTable = strCalTable + "<option value=\"_0\" selected> - Select - </option>";	
		for (var bealCount = 0; bealCount < 18; bealCount++ )
			strCalTable = strCalTable + "<option value=\""+bealCount+"\">"+ BEALAT_ASWAMAT[bealCount] +"</option>";
		strCalTable = strCalTable + "</select></td>";
		
		strCalTable = strCalTable + "<td id = \"gregMonthYear\" align=\"right\"> <font size=\"2\">";
		if (month == 12)
			strCalTable = strCalTable + gregMonths[ethMonthToGregMonth ( year, month, 1 )] ;
		else
			strCalTable = strCalTable + gregMonths[ethMonthToGregMonth ( year, month, 1 )] + "/" + gregMonths[ethMonthToGregMonth ( year, month, 30 )];
		
		if (month == 3)
			strCalTable = strCalTable + " " + ethYearToGregYear( year, month, 1 ) + "/" + ethYearToGregYear( year, month, 30 );
		else
			strCalTable = strCalTable + " " + ethYearToGregYear( year, month, 1 ) ;
			
		strCalTable = strCalTable +" </font></td>"
		strCalTable = strCalTable + "</tr> ";
    	strCalTable = strCalTable + "</table>";
		strCalTable = strCalTable + "</td> </tr>";
		strCalTable = strCalTable + "<tr bgcolor=\"#C5E1F2\">";
		for (eletIndex = 0; eletIndex < 7; eletIndex++ )
			if (eletIndex == 6)
				strCalTable = strCalTable + "<td bgColor=\"#C5E1F2\"> <font face=\"VG2 Main\" color=\"#003366\" size=\"2\">" + ELET[eletIndex] + "</font><br><font  color=\"#003366\" size=\"2\">" + ELET_ENGLISH[eletIndex] + "</font> </td>";
			else
				strCalTable = strCalTable + "<td> <font  face=\"VG2 Main\"  color=\"#003366\" size=\"2\">" + ELET[eletIndex] + "</font><br><font  color=\"#003366\" size=\"2\">" + ELET_ENGLISH[eletIndex] + "</font></td>";
		strCalTable = strCalTable + "</tr>";
		
		var serkeMealt = 1;
		var lideta = yeLidetaElet( year, month );
		var maxDays;

		if ( (month == 12) && (wengelawi( year ) == 3) )
			maxDays = 6;
		else if ( (month == 12) && (wengelawi( year ) != 3) )
			maxDays = 5;
		else 
			maxDays = 30;
				
		var desc="";

		for ( var week = 1; week < 7; week++ ){
			strCalTable = strCalTable + "<tr>";
			for (var dayIndex = 0; dayIndex < 7; dayIndex++ ){
				if (dayIndex == 6)
					strCalTable = strCalTable + "<td id = \"td" + week +"_"+ dayIndex + "\" align =\"center\" bgColor=\"#C5E1F2\" ";
				else
					strCalTable = strCalTable + "<td id = \"td" + week +"_"+ dayIndex + "\" align =\"center\" ";
					
				if ( ((lideta == dayIndex) && (serkeMealt <= maxDays)) || ((serkeMealt > 1) && (serkeMealt <= maxDays)) ){
					if ( month == neneweWor( year ) && serkeMealt == neneweKen( year ) ){
						
						strCalTable = strCalTable + "bgColor=\"#C5E1F2\" > <a href=\"#\" >" + "<font face=\"Ge'ez-1 Numbers\">" + serkeMealtInAmharic( serkeMealt ) + "</font>" + "/" + "<font size=\"1\">" + ethDayToGregDay ( year, month, serkeMealt ) + "</font>" + "</a>";
						desc= desc + serkeMealt + " - <font face=\"VG2 Main\">Ûm nnê& <br></font>";
					}
					else if ( month == abiyTsomeWor( year ) && serkeMealt == abiyTsomeKen( year ) ){
						strCalTable = strCalTable + "bgColor=\"#C5E1F2\" > <a href=\"#\" >" + "<font face=\"Ge'ez-1 Numbers\">" + serkeMealtInAmharic( serkeMealt ) + "</font>" + "/" + "<font size=\"1\">" + ethDayToGregDay ( year, month, serkeMealt ) + "</font>" + "</a>";
						desc= desc + serkeMealt + " - <font face=\"VG2 Main\">;b!Y ÛM <br></font>";
					}
					else if ( month == debreZeitWor( year ) && serkeMealt == debreZeitKen( year ) ){
						strCalTable = strCalTable + "bgColor=\"#C5E1F2\" > <a href=\"#\" >" + "<font face=\"Ge'ez-1 Numbers\">" + serkeMealtInAmharic( serkeMealt ) + "</font>" + "/" + "<font size=\"1\">" + ethDayToGregDay ( year, month, serkeMealt ) + "</font>" + "</a>";
						desc= desc + serkeMealt + " - <font face=\"VG2 Main\">dBr zYT <br></font>";
					}
					else if ( month == hosaenaWor( year ) && serkeMealt == hosaenaKen( year ) ){
						strCalTable = strCalTable + "bgColor=\"#C5E1F2\" > <a href=\"#\" >" + "<font face=\"Ge'ez-1 Numbers\">" + serkeMealtInAmharic( serkeMealt ) + "</font>" + "/" + "<font size=\"1\">" + ethDayToGregDay ( year, month, serkeMealt ) + "</font>" + "</a>";
						desc= desc + serkeMealt + " - <font face=\"VG2 Main\">çœ:Â<br></font>";
					}
					else if ( month == sikletWor( year ) && serkeMealt == sikletKen( year ) ){
						strCalTable = strCalTable + "bgColor=\"#C5E1F2\" > <a href=\"#\" >" + "<font face=\"Ge'ez-1 Numbers\">" + serkeMealtInAmharic( serkeMealt ) + "</font>" + "/" + "<font size=\"1\">" + ethDayToGregDay ( year, month, serkeMealt ) + "</font>" + "</a>";
						desc= desc + serkeMealt + " - <font face=\"VG2 Main\">SQlT <br></font>";
					}
					else if ( month == tinsaeWor( year ) && serkeMealt == tinsaeKen( year ) ){
						strCalTable = strCalTable + "bgColor=\"#C5E1F2\" > <a href=\"#\" >" + "<font face=\"Ge'ez-1 Numbers\">" + serkeMealtInAmharic( serkeMealt ) + "</font>" + "/" + "<font size=\"1\">" + ethDayToGregDay ( year, month, serkeMealt ) + "</font>" + "</a>";
						desc= desc + serkeMealt + " - <font face=\"VG2 Main\">TNœx@ <br></font>";
					}
					else if ( month == rekebeKahinatWor( year ) && serkeMealt == rekebeKahinatKen( year ) ){
						strCalTable = strCalTable + "bgColor=\"#C5E1F2\" > <a href=\"#\" >" + "<font face=\"Ge'ez-1 Numbers\">" + serkeMealtInAmharic( serkeMealt ) + "</font>" + "/" + "<font size=\"1\">" + ethDayToGregDay ( year, month, serkeMealt ) + "</font>" + "</a>";
						desc= desc + serkeMealt + " - <font face=\"VG2 Main\">RKb µHÂT <br></font>";
					}
					else if ( month == ergetWor( year ) && serkeMealt == ergetKen( year ) ){
						strCalTable = strCalTable + "bgColor=\"#C5E1F2\" > <a href=\"#\" >" + "<font face=\"Ge'ez-1 Numbers\">" + serkeMealtInAmharic( serkeMealt ) + "</font>" + "/" + "<font size=\"1\">" + ethDayToGregDay ( year, month, serkeMealt ) + "</font>" + "</a>";
						desc= desc + serkeMealt + " - <font face=\"VG2 Main\">:RgT  <br></font>";
					}
					else if ( month == peraklitosWor( year ) && serkeMealt == peraklitosKen( year ) ){
						strCalTable = strCalTable + "bgColor=\"#C5E1F2\" > <a href=\"#\" >" + "<font face=\"Ge'ez-1 Numbers\">" + serkeMealtInAmharic( serkeMealt ) + "</font>" + "/" + "<font size=\"1\">" + ethDayToGregDay ( year, month, serkeMealt ) + "</font>" + "</a>";
						desc= desc + serkeMealt + " - <font face=\"VG2 Main\">’‰Ql!õS  <br></font>";
					}
					else if ( month == tsomeHawariatWor( year ) && serkeMealt == tsomeHawariatKen( year ) ){
						strCalTable = strCalTable + "bgColor=\"#C5E1F2\" > <a href=\"#\" >" + "<font face=\"Ge'ez-1 Numbers\">" + serkeMealtInAmharic( serkeMealt ) + "</font>" + "/" + "<font size=\"1\">" + ethDayToGregDay ( year, month, serkeMealt ) + "</font>" + "</a>";
						desc= desc + serkeMealt + " - <font face=\"VG2 Main\">Ûm /êRÃT <br></font>";
					}
					else if ( month == tsomeDihenetWor( year ) && serkeMealt == tsomeDihenetKen( year ) ){
						strCalTable = strCalTable + "bgColor=\"#C5E1F2\" > <a href=\"#\" >" + "<font face=\"Ge'ez-1 Numbers\">" + serkeMealtInAmharic( serkeMealt ) + "</font>" + "/" + "<font size=\"1\">" + ethDayToGregDay ( year, month, serkeMealt ) + "</font>" + "</a>";
						desc= desc + serkeMealt + " - <font face=\"VG2 Main\">Ûm D~nT <br></font>";
					}
					else if ( month == enqutatashWor( year ) && serkeMealt == enqutatashKen( year ) ){
						strCalTable = strCalTable + "bgColor=\"#C5E1F2\" > <a href=\"#\" >" + "<font face=\"Ge'ez-1 Numbers\">" + serkeMealtInAmharic( serkeMealt ) + "</font>" + "/" + "<font size=\"1\">" + ethDayToGregDay ( year, month, serkeMealt ) + "</font>" + "</a>";
						desc= desc + serkeMealt + " - <font face=\"VG2 Main\">QÇS ×/NS <br>";
					}
					else if ( month == meskelWor( year ) && serkeMealt == meskelKen( year ) ){
						strCalTable = strCalTable + "bgColor=\"#C5E1F2\" > <a href=\"#\" >" + "<font face=\"Ge'ez-1 Numbers\">" + serkeMealtInAmharic( serkeMealt ) + "</font>" + "/" + "<font face=\"verdana\" size=\"1\">" + ethDayToGregDay ( year, month, serkeMealt ) + "</font>" + "</a>";
						 desc= desc + serkeMealt + " - <font face=\"VG2 Main\">mSqL <br></font>";
					}
					else if ( month == genaWor( year ) && serkeMealt == genaKen( year ) ){
						strCalTable = strCalTable + "bgColor=\"#C5E1F2\" > <a href=\"Miscellaneous/Bealat/lidet.htm\" >" + "<font face=\"Ge'ez-1 Numbers\">" + serkeMealtInAmharic( serkeMealt ) + "</font>" + "/" + "<font size=\"1\">" + ethDayToGregDay ( year, month, serkeMealt ) + "</font>" + "</a>";
						desc= desc + serkeMealt + " - <font face=\"VG2 Main\">LdT <br></font>";
					}
					else if ( month == timketWor( year ) && serkeMealt == timketKen( year ) ){
						strCalTable = strCalTable + "bgColor=\"#C5E1F2\" > <a href=\"Miscellaneous/Bealat/Timket.htm\" >" + "<font face=\"Ge'ez-1 Numbers\">" + serkeMealtInAmharic( serkeMealt ) + "</font>" + "/" + "<font size=\"1\">" + ethDayToGregDay ( year, month, serkeMealt ) + "</font>" + "</a>";
						desc= desc + serkeMealt + " - <font face=\"VG2 Main\">_MqT <br></font>";
					}
					else if ( month == tsomeFilsetaWor( year ) && serkeMealt == tsomeFilsetaKen( year ) ){
						strCalTable = strCalTable + "bgColor=\"#C5E1F2\" > <a href=\"#\" >" + "<font face=\"Ge'ez-1 Numbers\">" + serkeMealtInAmharic( serkeMealt ) + "</font>" + "/" + "<font size=\"1\">" + ethDayToGregDay ( year, month, serkeMealt ) + "</font>" + "</a>";
						desc= desc + serkeMealt + " - <font face=\"VG2 Main\">Ûm FLs¬  <br></font>";
					}
					else if ( month == filsetaWor( year ) && serkeMealt == filsetaKen( year ) ){
						strCalTable = strCalTable + "bgColor=\"#C5E1F2\" > <a href=\"#\" >" + "<font face=\"Ge'ez-1 Numbers\">" + serkeMealtInAmharic( serkeMealt ) + "</font>" + "/" + "<font size=\"1\">" + ethDayToGregDay ( year, month, serkeMealt ) + "</font>" + "</a>";
						desc= desc + serkeMealt + " - <font face=\"VG2 Main\">yXmb@CN :RgT<br></font>";
					}
					else if ( month == debreTaborWor( year ) && serkeMealt == debreTaborKen( year ) ){
						strCalTable = strCalTable + "bgColor=\"#C5E1F2\" > <a href=\"#\" >" + "<font face=\"Ge'ez-1 Numbers\">" + serkeMealtInAmharic( serkeMealt ) + "</font>" + "/" + "<font size=\"1\">" + ethDayToGregDay ( year, month, serkeMealt ) + "</font>" + "</a>";
						desc= desc + serkeMealt + " - <font face=\"VG2 Main\">dBr ¬ïR  <br></font>";
					}
					else
						{strCalTable = strCalTable + "bgColor=\"#FFFFFF\" >";
						if (dayIndex == 6) strCalTable = strCalTable + "<a href=\"Miscellaneous/index.htm#" + week +" \" >";
						strCalTable = strCalTable + "<font face=\"Ge'ez-1 Numbers\">" + serkeMealtInAmharic( serkeMealt ) + "</font>" + "/" + "<font size=\"1\">" + ethDayToGregDay ( year, month, serkeMealt ) + "</font>" ;
						if (dayIndex == 6) strCalTable = strCalTable + "</a>";
						}
					serkeMealt++;
				}
				else 
					strCalTable = strCalTable + " > ";
				strCalTable = strCalTable + "</td>";
			}
			strCalTable = strCalTable + "</tr>";
		}
		strCalTable = strCalTable + "<tr bgcolor=\"#ffffff\">";
		if (desc == "")
			desc = "<br>";
		strCalTable = strCalTable + "<td id = \"bealGeletsa\" colspan = \"7\" align = \"left\"><font size=\"2\">" + desc + "</font>";
		strCalTable = strCalTable + "</td>";
		strCalTable = strCalTable + "</tr>";
		strCalTable = strCalTable + "</table> </form>";
		document.writeln (strCalTable);

		document.frmEthiopianCalendar.lstWor.options[month].selected = true;
		document.frmEthiopianCalendar.lstYear.options[year-1990].selected = true;
		document.frmEthiopianCalendar.lstBealat.options[0].selected = true;

	}
	
//..........................manage user inputs- modifies calendar according to user input ...............
	function changeCalendarByMonthOrYear (txtYear, txtMonth){
		document.frmEthiopianCalendar.lstBealat.options[0].selected = true;
		changeCalendar (txtYear, txtMonth);
	}

	function changeCalendarByBeal (txtYear, txtMonth){
		var year = new Number (txtYear);
		
		if (txtMonth == "0" )
			txtMonth = 0; // Kidus Yohannes 
		else if (txtMonth == "1" )
			txtMonth = 0; // Meskel 
		else if (txtMonth == "2" )
			txtMonth = 3; // Ye Chiristos Lidet 
		else if (txtMonth == "3" )
			txtMonth = 4; // Timket 
		else if (txtMonth == "4" )
			txtMonth = neneweWor( year ); // Nenewe Tsome Megbia 
		else if (txtMonth == "5" )
			txtMonth = abiyTsomeWor( year ); // Abiy Tsome Megbia 
		else if (txtMonth == "6" )
			txtMonth = debreZeitWor( year ); // Debre Zeit 
		else if (txtMonth == "7" )
			txtMonth = hosaenaWor( year ); // Hosaena 
		else if (txtMonth == "8" )
			txtMonth = sikletWor( year ); // Sikelet 
		else if (txtMonth == "9" )
			txtMonth = tinsaeWor( year ); // Tinsae
		else if (txtMonth == "10" )
			txtMonth = rekebeKahinatWor( year ); // Rekebe Kahinat 
		else if (txtMonth == "11" )
			txtMonth = ergetWor( year ); // Erget 
		else if (txtMonth == "12" )
			txtMonth = peraklitosWor( year ); // Peraklitos 
		else if (txtMonth == "13" )
			txtMonth = tsomeHawariatWor( year ); // Ye Hawariat Tsome Megbia 
		else if (txtMonth == "14" )
			txtMonth = tsomeDihenetWor( year ); // Tsome Dihenet Megemeria
		else if (txtMonth == "15" )
			txtMonth = tsomeFilsetaWor( year ); // Tsome Filseta Megbia
		else if (txtMonth == "16" )
			txtMonth = debreTaborWor( year ); // Debre Tabor 
		else if (txtMonth == "17" )
			txtMonth = filsetaWor( year ); // Filseta
		else
			txtMonth = frmEthiopianCalendar.lstWor.value;
		
		document.frmEthiopianCalendar.lstWor.options[txtMonth].selected = true;
		changeCalendar (txtYear, txtMonth);
	}
	
	function changeCalendar( txtYear, txtMonth){
		var year = new Number(txtYear);
		var month = new Number (txtMonth);
		var serkeMealt = 1;
		var lideta = yeLidetaElet( year, month );
		var maxDays;

		if ( (month == 12) && (wengelawi( year ) == 3) )
			maxDays = 6;
		else if ( (month == 12) && (wengelawi( year ) != 3) )
			maxDays = 5;
		else 
			maxDays = 30;
		
		var desc="";

		document.getElementById("wengelawi").innerHTML = "<font face=\"VG2 Main\" >zmn " + WENGELAWI[ wengelawi(year) ] +" </font>";
		
		var currentMonthYear = "";
		if (month == 12 )
			currentMonthYear= currentMonthYear + gregMonths[ethMonthToGregMonth ( year, month, 1 )] ;
		else
			currentMonthYear= currentMonthYear + gregMonths[ethMonthToGregMonth ( year, month, 1 )] + "/" + gregMonths[ethMonthToGregMonth ( year, month, 30 )];

		if (month == 3)
			currentMonthYear= currentMonthYear +" " + ethYearToGregYear( year, month, 1 ) + "/" + ethYearToGregYear( year, month, 30 );
		else
			currentMonthYear= currentMonthYear + " " + ethYearToGregYear( year, month, 1 ) ;
		document.getElementById("gregMonthYear").innerHTML = "<font size=\"2\">"+ currentMonthYear + "</font>";
		
		for ( var week = 1; week < 7; week++ ){
			for ( var dayIndex = 0; dayIndex < 7; dayIndex++ ){
				if ( ((lideta == dayIndex) && (serkeMealt <= maxDays)) || ((serkeMealt > 1) && (serkeMealt <= maxDays)) ){	
					if ( month == neneweWor( year ) && serkeMealt == neneweKen( year ) ){
						document.getElementById("td" + week +"_"+ dayIndex).innerHTML ="<a href=\"#\" >" + "<font face=\"Ge'ez-1 Numbers\">" + serkeMealtInAmharic( serkeMealt ) + "</font>" + "/" + "<font size=\"1\">" + ethDayToGregDay ( year, month, serkeMealt ) + "</font>" + "</a>";
						document.getElementById("td" + week +"_"+ dayIndex).bgColor ="#C5E1F2";
						desc= desc + serkeMealt + " - <font face=\"VG2 Main\">Ûm nnê& <br>";
					}
					else if ( month == abiyTsomeWor( year ) && serkeMealt == abiyTsomeKen( year ) ){
						document.getElementById("td" + week +"_"+ dayIndex).innerHTML ="<a href=\"#\" >" + "<font face=\"Ge'ez-1 Numbers\">" + serkeMealtInAmharic( serkeMealt ) + "</font>" + "/" + "<font size=\"1\">" + ethDayToGregDay ( year, month, serkeMealt ) + "</font>" + "</a>";
						document.getElementById("td" + week +"_"+ dayIndex).bgColor ="#C5E1F2";
						desc= desc + serkeMealt + " - <font face=\"VG2 Main\">;b!Y ÛM <br></font>";
					}
					else if ( month == debreZeitWor( year ) && serkeMealt == debreZeitKen( year ) ){
						document.getElementById("td" + week +"_"+ dayIndex).innerHTML ="<a href=\"#\" >" + "<font face=\"Ge'ez-1 Numbers\">" + serkeMealtInAmharic( serkeMealt ) + "</font>" + "/" + "<font size=\"1\">" + ethDayToGregDay ( year, month, serkeMealt ) + "</font>" + "</a>";
						document.getElementById("td" + week +"_"+ dayIndex).bgColor ="#C5E1F2";
						desc= desc + serkeMealt + " - <font face=\"VG2 Main\">dBr zYT <br></font>";
					}
					else if ( month == hosaenaWor( year ) && serkeMealt == hosaenaKen( year ) ){
						document.getElementById("td" + week +"_"+ dayIndex).innerHTML ="<a href=\"#\" >" + "<font face=\"Ge'ez-1 Numbers\">" + serkeMealtInAmharic( serkeMealt ) + "</font>" + "/" + "<font size=\"1\">" + ethDayToGregDay ( year, month, serkeMealt ) + "</font>" + "</a>";
						document.getElementById("td" + week +"_"+ dayIndex).bgColor ="#C5E1F2";
						desc= desc + serkeMealt + " - <font face=\"VG2 Main\">çœ:Â <br></font>";
					}
					else if ( month == sikletWor( year ) && serkeMealt == sikletKen( year ) ){
						document.getElementById("td" + week +"_"+ dayIndex).innerHTML ="<a href=\"#\" >" + "<font face=\"Ge'ez-1 Numbers\">" + serkeMealtInAmharic( serkeMealt ) + "</font>" + "/" + "<font size=\"1\">" + ethDayToGregDay ( year, month, serkeMealt ) + "</font>" + "</a>";
						document.getElementById("td" + week +"_"+ dayIndex).bgColor ="#C5E1F2";
						desc= desc + serkeMealt + " - <font face=\"VG2 Main\">SQlT <br></font>";
					}
					else if ( month == tinsaeWor( year ) && serkeMealt == tinsaeKen( year ) ){
						document.getElementById("td" + week +"_"+ dayIndex).innerHTML ="<a href=\"#\" >" + "<font face=\"Ge'ez-1 Numbers\">" + serkeMealtInAmharic( serkeMealt ) + "</font>" + "/" + "<font size=\"1\">" + ethDayToGregDay ( year, month, serkeMealt ) + "</font>" + "</a>";
						document.getElementById("td" + week +"_"+ dayIndex).bgColor ="#C5E1F2";
						desc= desc + serkeMealt + " - <font face=\"VG2 Main\">TNœx@ <br></font>";
					}
					else if ( month == rekebeKahinatWor( year ) && serkeMealt == rekebeKahinatKen( year ) ){
						document.getElementById("td" + week +"_"+ dayIndex).innerHTML ="<a href=\"#\" >" + "<font face=\"Ge'ez-1 Numbers\">" + serkeMealtInAmharic( serkeMealt ) + "</font>" + "/" + "<font size=\"1\">" + ethDayToGregDay ( year, month, serkeMealt ) + "</font>" + "</a>";
						document.getElementById("td" + week +"_"+ dayIndex).bgColor ="#C5E1F2";
						desc= desc + serkeMealt + " - <font face=\"VG2 Main\">RKb µHÂT <br></font>";
					}
					else if ( month == ergetWor( year ) && serkeMealt == ergetKen( year ) ){
						document.getElementById("td" + week +"_"+ dayIndex).innerHTML ="<a href=\"#\" >" + "<font face=\"Ge'ez-1 Numbers\">" + serkeMealtInAmharic( serkeMealt ) + "</font>" + "/" + "<font size=\"1\">" + ethDayToGregDay ( year, month, serkeMealt ) + "</font>" + "</a>";
						document.getElementById("td" + week +"_"+ dayIndex).bgColor ="#C5E1F2";
						desc= desc + serkeMealt + " - <font face=\"VG2 Main\">:RgT  <br></font>";
					}
					else if ( month == peraklitosWor( year ) && serkeMealt == peraklitosKen( year ) ){
						document.getElementById("td" + week +"_"+ dayIndex).innerHTML ="<a href=\"#\" >" + "<font face=\"Ge'ez-1 Numbers\">" + serkeMealtInAmharic( serkeMealt ) + "</font>" + "/" + "<font size=\"1\">" + ethDayToGregDay ( year, month, serkeMealt ) + "</font>" + "</a>";
						document.getElementById("td" + week +"_"+ dayIndex).bgColor ="#C5E1F2";
						desc= desc + serkeMealt + " - <font face=\"VG2 Main\">’‰Ql!õS  <br></font>";
					}
					else if ( month == tsomeHawariatWor( year ) && serkeMealt == tsomeHawariatKen( year ) ){
						document.getElementById("td" + week +"_"+ dayIndex).innerHTML ="<a href=\"#\" >" + "<font face=\"Ge'ez-1 Numbers\">" + serkeMealtInAmharic( serkeMealt ) + "</font>" + "/" + "<font size=\"1\">" + ethDayToGregDay ( year, month, serkeMealt ) + "</font>" + "</a>";
						document.getElementById("td" + week +"_"+ dayIndex).bgColor ="#C5E1F2";
						desc= desc + serkeMealt + " - <font face=\"VG2 Main\">Ûm /êRÃT <br></font>";
					}
					else if ( month == tsomeDihenetWor( year ) && serkeMealt == tsomeDihenetKen( year ) ){
						document.getElementById("td" + week +"_"+ dayIndex).innerHTML ="<a href=\"#\" >" + "<font face=\"Ge'ez-1 Numbers\">" + serkeMealtInAmharic( serkeMealt ) + "</font>" + "/" + "<font size=\"1\">" + ethDayToGregDay ( year, month, serkeMealt ) + "</font>" + "</a>";
						document.getElementById("td" + week +"_"+ dayIndex).bgColor ="#C5E1F2";
						desc= desc + serkeMealt + " - <font face=\"VG2 Main\">Ûm D~nT <br></font>";
					}
					else if ( month == enqutatashWor( year ) && serkeMealt == enqutatashKen( year ) ){
						document.getElementById("td" + week +"_"+ dayIndex).innerHTML ="<a href=\"#\" >" + "<font face=\"Ge'ez-1 Numbers\">" + serkeMealtInAmharic( serkeMealt ) + "</font>" + "/" + "<font size=\"1\">" + ethDayToGregDay ( year, month, serkeMealt ) + "</font>" + "</a>";
						document.getElementById("td" + week +"_"+ dayIndex).bgColor ="#C5E1F2";
						desc= desc + serkeMealt + " - <font face=\"VG2 Main\">QÇS ×/NS <br>";
					}
					else if ( month == meskelWor( year ) && serkeMealt == meskelKen( year ) ){
						document.getElementById("td" + week +"_"+ dayIndex).innerHTML ="<a href=\"#\" >" + "<font face=\"Ge'ez-1 Numbers\">" + serkeMealtInAmharic( serkeMealt ) + "</font>" + "/" + "<font size=\"1\">" + ethDayToGregDay ( year, month, serkeMealt ) + "</font>" + "</a>";
						document.getElementById("td" + week +"_"+ dayIndex).bgColor ="#C5E1F2";
						desc= desc + serkeMealt + " - <font face=\"VG2 Main\">mSqL <br></font>";
					}
					else if ( month == genaWor( year ) && serkeMealt == genaKen( year ) ){
						document.getElementById("td" + week +"_"+ dayIndex).innerHTML ="<a href=\"Miscellaneous/Bealat/lidet.htm\" >" + "<font face=\"Ge'ez-1 Numbers\">" + serkeMealtInAmharic( serkeMealt ) + "</font>" + "/" + "<font size=\"1\">" + ethDayToGregDay ( year, month, serkeMealt ) + "</font>" + "</a>";
						document.getElementById("td" + week +"_"+ dayIndex).bgColor ="#C5E1F2";
						desc= desc + serkeMealt + " - <font face=\"VG2 Main\">LdT <br></font>";
					}
					else if ( month == timketWor( year ) && serkeMealt == timketKen( year ) ){
						document.getElementById("td" + week +"_"+ dayIndex).innerHTML ="<a href=\"Miscellaneous/Bealat/Timket.htm\" >" + "<font face=\"Ge'ez-1 Numbers\">" + serkeMealtInAmharic( serkeMealt ) + "</font>" + "/" + "<font size=\"1\">" + ethDayToGregDay ( year, month, serkeMealt ) + "</font>" + "</a>";
						document.getElementById("td" + week +"_"+ dayIndex).bgColor ="#C5E1F2";
						desc= desc + serkeMealt + " - <font face=\"VG2 Main\">_MqT <br></font>";
					}
					else if ( month == tsomeFilsetaWor( year ) && serkeMealt == tsomeFilsetaKen( year ) ){
						document.getElementById("td" + week +"_"+ dayIndex).innerHTML ="<a href=\"#\" >" + "<font face=\"Ge'ez-1 Numbers\">" + serkeMealtInAmharic( serkeMealt ) + "</font>" + "/" + "<font size=\"1\">" + ethDayToGregDay ( year, month, serkeMealt ) + "</font>" + "</a>";
						document.getElementById("td" + week +"_"+ dayIndex).bgColor ="#C5E1F2";
						desc= desc + serkeMealt + " - <font face=\"VG2 Main\">Ûm FLs¬  <br></font>";
					}
					else if ( month == filsetaWor( year ) && serkeMealt == filsetaKen( year ) ){
						document.getElementById("td" + week +"_"+ dayIndex).innerHTML ="<a href=\"#\" >" + "<font face=\"Ge'ez-1 Numbers\">" + serkeMealtInAmharic( serkeMealt ) + "</font>" + "/" + "<font size=\"1\">" + ethDayToGregDay ( year, month, serkeMealt ) + "</font>" + "</a>";
						document.getElementById("td" + week +"_"+ dayIndex).bgColor ="#C5E1F2";
						desc= desc + serkeMealt + " - <font face=\"VG2 Main\">yXmb@CN :RgT<br></font>";
					}
					else if ( month == debreTaborWor( year ) && serkeMealt == debreTaborKen( year ) ){
						document.getElementById("td" + week +"_"+ dayIndex).innerHTML ="<a href=\"#\" >" + "<font face=\"Ge'ez-1 Numbers\">" + serkeMealtInAmharic( serkeMealt ) + "</font>" + "/" + "<font size=\"1\">" + ethDayToGregDay ( year, month, serkeMealt ) + "</font>" + "</a>";
						document.getElementById("td" + week +"_"+ dayIndex).bgColor ="#C5E1F2";
						desc= desc + serkeMealt + " - <font face=\"VG2 Main\">dBr ¬ïR  <br></font>";
					}
					else{
						/*var tempString = "";
						document.getElementById("td" + week +"_"+ dayIndex).innerHTML =""+"<font face=\"Ge'ez-1 Numbers\">" + serkeMealtInAmharic( serkeMealt ) + "</font>"+ "/" + "<font size=\"1\">" + ethDayToGregDay ( year, month, serkeMealt ) + "</font>" ;
						if (dayIndex == 6) tempString = tempString + "<a href=\"Miscellaneous/index.htm#" + week +" \" >";
						tempString = tempString + "<font face=\"Ge'ez-1 Numbers\">" + serkeMealtInAmharic( serkeMealt ) + "</font>" + "/" + "<font size=\"1\">" + ethDayToGregDay ( year, month, serkeMealt ) + "</font>" ;
						if (dayIndex == 6) tempString = tempString + "</a>";
						document.getElementById("td" + week +"_"+ dayIndex).innerHTML = tempString;
						document.getElementById("td" + week +"_"+ dayIndex).bgColor ="#FFFFFF";*/

//My (Surafel's) modifications.... 
						
						var today = new Date();
						var gregYear = today.getFullYear();
						var gregMonth  = today.getMonth() + 1;
						var gregDay = today.getDate();
						var newMonth = gregToEthMonth ( gregYear, gregMonth, gregDay );
						var newYear = gregToEthYear ( gregYear, gregMonth, gregDay );
						
						
						var strTextToBeDisplayedInCell = "";
						//Add link to miscellaneous if the day is Sunday (i.e. dayIndex is 6) to string strTextToBeDisplayedInCell
						if ( (dayIndex == 6) && (newMonth ==month) && (newYear == year) ) strTextToBeDisplayedInCell =  "<a href=\"Miscellaneous/index.htm#" + week +" \" >";
						
						//Add the day number (both in Greg and Eth)to string strTextToBeDisplayedInCell, irrespective of the day index
						strTextToBeDisplayedInCell = strTextToBeDisplayedInCell + "" + "<font face=\"Ge'ez-1 Numbers\">" + serkeMealtInAmharic( serkeMealt ) + "</font>" + "/" + "<font size=\"1\">" + ethDayToGregDay ( year, month, serkeMealt ) + "</font>" ;
						
						//Add closing link anchor to miscellaneous if the day is Sunday (i.e. dayIndex is 6) to string strTextToBeDisplayedInCell
						if ( (dayIndex == 6) && (newMonth ==month) && (newYear == year) ) strTextToBeDisplayedInCell = strTextToBeDisplayedInCell + "</a>";
						
						document.getElementById("td" + week +"_"+ dayIndex).innerHTML = strTextToBeDisplayedInCell;
						document.getElementById("td" + week +"_"+ dayIndex).bgColor ="#FFFFFF";
						
//My modifications end here.					
						
/*Older version....						
						document.getElementById("td" + week +"_"+ dayIndex).innerHTML =""+"<font face=\"Ge'ez-1 Numbers\">" + serkeMealtInAmharic( serkeMealt ) + "</font>"+ "/" + "<font size=\"1\">" + ethDayToGregDay ( year, month, serkeMealt ) + "</font>" ;
						document.getElementById("td" + week +"_"+ dayIndex).bgColor ="#FFFFFF";
Older version ends here.
*/
					}
					serkeMealt++;
				}
				else {
					document.getElementById("td" + week +"_"+ dayIndex).innerHTML ="";
					document.getElementById("td" + week +"_"+ dayIndex).bgColor ="#FFFFFF";
				}

				if (dayIndex == 6)
					document.getElementById("td" + week +"_"+ dayIndex).bgColor ="#C5E1F2";
			}
		}
		if (desc == "")
			desc = "<br>";
		document.getElementById("bealGeletsa").innerHTML ="<font size=\"2\">" + desc + "</font>";
		
	}
	
//........................................ Ethiopian to Gregorian .......................................
gregMonths = [ "Sep.", "Oct.", "Nov.", "Dec.", "Jan.", "Feb.", "Mar.", "Apr.", "May", "Jun.", "Jul.", "Aug.", "Sep." ];
gregNumDays = [ 20, 31, 30, 31, 31, 28, 31, 30, 31, 30, 31, 31, 10 ];

function isEthLeapYear ( ethYear ) {
	var ameteAlem = 5500 + ethYear;

	if ( (ameteAlem % 4) == 3 )
		return true;
	else 
		return false;
}

function isGregLeapYear ( gregYear ) {
	if (gregYear % 4 != 0)
		return false;//{use 28 for days in February}
	else if  (gregYear % 400 == 0)
		return true;//{use 29 for days in February}
	else if (gregYear % 100 == 0)
		return false;//{use 28 for days in February}
	else
		return true;//{use 29 for days in February}
}

function ethDaysFromNewYear ( ethMonth, ethDay ){
	return ( (ethMonth * 30) + ethDay ); 
}

function ethMonthToGregMonth ( ethYear, ethMonth, ethDay ){
	var gregMonthIndex = 0;
	var days = ethDaysFromNewYear ( ethMonth, ethDay );
	var dayFound = false;
	
	do{
		var daysToSubtract = gregNumDays [ gregMonthIndex ];	
		//check if the prev Eth year is leap year
		if ( gregMonthIndex == 0 ){
			if ( isEthLeapYear ( ethYear - 1 ) )
				days +=1;//daysToSubtract -= 1;
		}
		else if ( gregMonthIndex == 12 ) //check if this Eth year is leap year; if it is, days of sept 2 is = 11
			if ( isEthLeapYear ( ethYear ) )
				daysToSubtract += 1;
		//check if the this Greg year is leap year if it is, the Feb = 29
		if ( gregMonthIndex == 5 ) //If the month is February
			if ( isGregLeapYear ( ethYear + 8 ) )
				 daysToSubtract += 1;
		
		if ( days > daysToSubtract ){
			days -= daysToSubtract;
			gregMonthIndex++;
		}
		else
			dayFound = true;
	}while ( !dayFound );
	
	return gregMonthIndex;
}

function ethYearToGregYear( ethYear, ethMonth, ethDay ) {
	var gregYear = ethYear + 7;
	if ( (ethMonthToGregMonth ( ethYear, ethMonth, ethDay )) > 3 )
		gregYear +=1;
	return gregYear;
}

function ethDayToGregDay ( ethYear, ethMonth, ethDay ){
	var gregMonthIndex = 0;
	var days = ethDaysFromNewYear ( ethMonth, ethDay );
	var dayFound = false;
	
	do{
		var daysToSubtract = gregNumDays [ gregMonthIndex ];	
		//check if the prev Eth year is leap year
		if ( gregMonthIndex == 0 ){
			if ( isEthLeapYear ( ethYear - 1 ) )
				days +=1;
		}
		else if ( gregMonthIndex == 12 ) //check if this Eth year is leap year; if it is, days of sept 2 is = 12
			if ( isEthLeapYear ( ethYear ) )
				daysToSubtract += 1;
		//check if the this Greg year is leap year if it is, the Feb = 29
		if ( gregMonthIndex == 5 ) //If the month is February
			if ( isGregLeapYear ( ethYear + 8 ) )
				 daysToSubtract += 1;
		
		if ( days > daysToSubtract ){
			days -= daysToSubtract;
			gregMonthIndex++;
		}
		else
			dayFound = true;
	}while ( !dayFound );
	
	if (gregMonthIndex == 0)
		days += 10;
	
	return days;
}

//.........................................Gregorian to Ethiopian........................................

function gregToEthYear ( gregYear, gregMonth, gregDay ) {
	var ethYear;
	
	if ( gregMonth > 9 )
		ethYear = gregYear - 7;
	else if (gregMonth < 9)
		ethYear = gregYear - 8;
	else {  //Gregorian month is September (9)
		ethYear  = gregYear - 8;
		if ( isEthLeapYear ( ethYear ) ) {
			if ( gregDay > 11 )
				ethYear += 1;
		}
		else
			if ( gregDay > 10 )
				ethYear += 1;
	}
	
	return ethYear;
}

function daysFromSept ( gregYear, gregMonth, gregDay ) {
	var ethYear, ethMonth;
	var i, monthIndex, days = 0;

	ethYear = gregToEthYear ( gregYear, gregMonth, gregDay );
	
	//Adjust index of the given month according to the values of gregNumDays - Ethiopian month sequence
	if ( gregMonth < 9 )
		monthIndex = gregMonth + 3;
	else if ( gregMonth > 9 )
		monthIndex = gregMonth % 9;
	else //Month = 9
		if ( gregDay > 11 )
			monthIndex = 0;
		else if ( gregDay < 11 )
			monthIndex = 12;
		else  //gregDay = 11 and month = 9
			if ( isEthLeapYear ( ethYear ) ) //if this year is leap year Sept 11 is in Pagume
				monthIndex = 12;			 //otherwise its in Meskerem 
			else 
				monthIndex = 0;
		
	//Calculate total number of days starting from the Ethiopian New Year (Sept. 11) and make adjustments
	//to incorporate leap years 
	for ( i = 0; i < monthIndex; i++ )
		days += gregNumDays[ i ];
	
	days += gregDay;
	
	if ( isEthLeapYear ( ethYear - 1 ) ) //If last year is leap year, Meskerem 1 is on Sept. 12
		days -= 1;  					 //so subtract 1 from gregNumDays[0]
	
	if ( gregMonth > 2 )					//If Gregorian month is February (2) and this Gregorian 
		if ( isGregLeapYear ( gregYear ) )	//year is leap year then add one
			days += 1;

	return days;
}
			
function gregToEthMonth ( gregYear, gregMonth, gregDay ) {
	var days, ethMonth;
	
	days = daysFromSept ( gregYear, gregMonth, gregDay );
	if ( days <= 360 ) {
		ethMonth = Math.floor( days / 30 );
		if ( days % 30 == 0 )
			ethMonth -= 1;
	}
	else 
		ethMonth = 12;
	
	return ethMonth;
}