var gregorianMonths = new Array("Monate GC", "Januar", "Februar", "M&auml;rz", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember");
var ethiopianMonths = new Array("Monate EC", "M&auml;sk&auml;r&auml;m", "Tiqimt", "Hidar", "Tahsas", "Tirr", "Y&auml;katit", "M&auml;gabit", "Miyazya", "Ginbot", "S&auml;ne", "Hamle", "N&auml;hase", "Pagume");

function getDay(d, m, y)
{
    m-= 3;
    if(m<0){m+= 12; y--;}
    var tz = Math.floor(y*365.25)+ Math.floor(m*30.6 + 0.5)+ d + 1721117 ;
    return tz>2299170 ? tz - (Math.floor(y/100) - Math.floor(y/400) - 2) : tz;
}

function getGregorianToday()
{
    var td = new Date();
    return getGregorianDate(
        td.getDate(),
        td.getMonth() + 1,
        td.getFullYear()
    );
}

function getEthiopianToday()
{
    var td = new Date();
    return getEthiopianDate(
        td.getDate(),
        td.getMonth() + 1,
        td.getFullYear(),true
    );
}

function getEthiopianTodayShort()
{
    var td = new Date();
    return getEthiopianDate(
        td.getDate(),
        td.getMonth() + 1,
        td.getFullYear(),false
    );
}

function getGregorianDate(d, m, y)
{
    var jd = getDay(d, m, y);
    
    if (jd >= 2299161)
    {
         var hz = jd - 1721119;
         jd += Math.floor(hz / 36524.25) - Math.floor(hz / 146097) - 2;
    }
    
    var tz = jd - 1721117;
    var xy = Math.floor((tz-0.2) / 365.25);
    var r  = tz - Math.floor(xy * 365.25);
    var xm = Math.floor((r - 0.5) / 30.6);
    var xd = r - Math.floor(xm * 30.6 + 0.5);
    xm+= 3;
    if(xm>12) {xm-= 12; xy++}
    
    var a = xd;
    var b = gregorianMonths[xm];
    var c = xy;
    var d = " ";
    if(c<1)
        {c=Math.abs(c) + 1; d = " vor der Zeitrechnung";}
    var x = a + ". " + b + " " + c + d;
    return x;    
}

function getEthiopianDate(d, m, y, s)
{
    var jd = getDay(d, m, y);
    
    var tz = jd - 1825029;
    var xy = Math.floor((tz-0.4) / 365.25);
    var r  = tz - Math.floor(xy * 365.25 + 0.30);
    var xm  = Math.floor((r - 0.5) / 30);
    var xd  = r - xm * 30;
    xm++;
    xy++;
    xy += 276;
    
    var a = xd;
    if (s)
        var b = ethiopianMonths[xm];
    else
        var b = xm;
    var c = xy;
    var d = " ";
    if(c<1)
        {c=Math.abs(c) + 1; d = " vor der Zeitrechnung";}
    if (s) 
        var x = a + ". " + b + " " + c + d;
    else
    {
        if (a < 10) a = '0' + a;
        if (b < 10) b = '0' + b;
        var x = a + "." + b + "." + c + d;
    }
    return x;    
}
