// alias floor
function floor(x)
{
        return Math.floor(x);
}

//  MOD  --  Modulus function which works for non-integers.
function mod(a, b)
{
    return a - (b * floor(a / b));
}

//  AMOD  --  Modulus function which returns numerator if modulus is zero
function amod(a, b)
{
    return mod(a - 1, b) + 1;
}

function leap_gregorian(year)
{
    return ((year % 4) == 0) &&
(!(((year % 100) == 0) && ((year % 400) != 0)));
}

var GREGORIAN_EPOCH = 1721425.5;

function gregorian_to_jd(year, month, day)
{
    return (GREGORIAN_EPOCH - 1) +
           (365 * (year - 1)) +
           floor((year - 1) / 4) +
           (-floor((year - 1) / 100)) +
           floor((year - 1) / 400) +
           floor((((367 * month) - 362) / 12) +
           ((month <= 2) ? 0 :
                               (leap_gregorian(year) ? -1 : -2)
           ) +
           day);
}

function jd_to_gregorian(jd) {
    var wjd, depoch, quadricent, dqc, cent, dcent, quad, dquad,
        yindex, dyindex, year, yearday, leapadj;

    wjd = Math.floor(jd - 0.5) + 0.5;
    depoch = wjd - GREGORIAN_EPOCH;
    quadricent = Math.floor(depoch / 146097);
    dqc = mod(depoch, 146097);
    cent = Math.floor(dqc / 36524);
    dcent = mod(dqc, 36524);
    quad = Math.floor(dcent / 1461);
    dquad = mod(dcent, 1461);
    yindex = Math.floor(dquad / 365);
    year = (quadricent * 400) + (cent * 100) + (quad * 4) + yindex;
    if (!((cent == 4) || (yindex == 4))) {
        year++;
    }
    yearday = wjd - gregorian_to_jd(year, 1, 1);
    leapadj = ((wjd < gregorian_to_jd(year, 3, 1)) ? 0
                                                  :
                  (leap_gregorian(year) ? 1 : 2)
              );
    month = Math.floor((((yearday + leapadj) * 12) + 373) / 367);
    day = (wjd - gregorian_to_jd(year, month, 1)) + 1;

    return new Array(year, month, day);
}

//  JD_TO_MAYAN_COUNT  --  Calculate Mayan long count from Julian day
var MAYAN_COUNT_EPOCH = 584282.5;

function jd_to_mayan_count(jd)
{
    var d, baktun, katun, tun, uinal, kin;

    d = jd - MAYAN_COUNT_EPOCH;
    baktun = floor(d / 144000);
    d = mod(d, 144000);
    katun = floor(d / 7200);
    d = mod(d, 7200);
    tun = floor(d / 360);
    d = mod(d, 360);
    uinal = floor(d / 20);
    kin = mod(d, 20);

    return new Array(baktun, katun, tun, uinal, kin);
}


function return_glyph(x) {
	a = x;
	b = a / 5;
	b_1 = Math.floor(b);
	c = a % 5;
	c_1 = Math.floor(c);
        ret_string = "";
	if((b_1 == 0) && (c_1 == 0)) {
		ret_string = "<img src=\"images/cal/mzero.png\">";
	} else {
		if(c_1 != 0) {
			ret_string =  "<img src=\"images/cal/" + c_1 + ".png\">";
		}
		if (b_1 != 0) {
			for (zz = 1; zz <= b_1; zz++) {
				ret_string = ret_string + "<img src=\"images/cal/5.png\">";
			}
		}
	}
	return ret_string;
}

function print_maya_date()
{
        var today=new Date();
        var sec=today.getSeconds();
        var min=today.getMinutes();
        var hour=today.getHours();
        var mday=today.getDate();
        var mon=today.getMonth();
        var year=today.getFullYear();
    var j = gregorian_to_jd(year, mon + 1, mday) +
           ((sec + 60 * (min + 60 * hour)) / 86400.0);
        mayadate=jd_to_mayan_count(j);
        document.write(
        "&nbsp;&nbsp;" + mayadate[0] + " baktun " +
        mayadate[1] + " katun " +
        mayadate[2] + " tun " +
        mayadate[3] + " uinal " +
        floor(mayadate[4]) + " kin ");

}


function print_maya_glyph_date()
{
        var today=new Date();
        var sec=today.getSeconds();
        var min=today.getMinutes();
        var hour=today.getHours();
        var mday=today.getDate();
        var mon=today.getMonth();
        var year=today.getFullYear();
    var j = gregorian_to_jd(year, mon + 1, mday) +
           ((sec + 60 * (min + 60 * hour)) / 86400.0);
        mayadate=jd_to_mayan_count(j);

        document.write(
        return_glyph(mayadate[0]) +  " <img src=\"images/cal/baktunax.png\"> " +
        return_glyph(mayadate[1]) + " <img src=\"images/cal/katunax.png\"> " +
        return_glyph(mayadate[2]) + " <img src=\"images/cal/tunax.png\"> " + 
        return_glyph(mayadate[3]) + " <img src=\"images/cal/uinalax.png\"> " +
        return_glyph(mayadate[4]) + " <img src=\"images/cal/kinax.png\"><br>");

}




