/* http://andy.bezbozhny.com/webdev/jday/ */

Date.prototype.date2jday = function() {
	var m = this.getMonth() + 1;
	var a = Math.floor((14 - m) / 12);
	var y = Math.floor(this.getFullYear() + 4800 - a);
	var m = Math.floor(m + 12 * a - 3);
	return this.getDate() + Math.floor((153 * m + 2) / 5) + y * 365 + Math.floor(y / 4) - Math.floor(y / 100) + Math.floor(y / 400) - 32045;
}

Date.prototype.jday2date = function(jday) {
	function aint(v) { if (v > 0) return Math.floor(v); else return Math.ceil(v); }
	var l, n, i, j, year, month, day;
	l = jday + 68569;
	n = aint((4 * l) / 146097);
	l = l - aint((146097 * n + 3) / 4);
	i = aint((4000 * (l + 1)) / 1461001);
	l = l - aint((1461 * i) / 4) + 31;
	j = aint((80 * l) / 2447);
	day = l - aint((2447 * j) / 80);
	l = aint(j / 11);
	month = j + 2 - (12 * l) - 1;
	year = 100 * (n - 49) + i + l;
	return new Date(year, month, day);
}