function monthStrToInt(str)
{
	switch (str)
	{
		case "Jan","JAN" : return 1; break;
		case "Feb","FEB" : return 2; break;
		case "Mar","MAR" : return 3; break;
		case "Apr","APR" : return 4; break;
		case "May","MAY" : return 5; break;
		case "Jun","JUN" : return 6; break;
		case "Jul","JUL" : return 7; break;
		case "Aug","AUG" : return 8; break;
		case "Sep","SEP" : return 9; break;
		case "Oct","OCT" : return 10; break;
		case "Nov","NOV" : return 11; break;
		case "Dec","DEC" : return 12; break;
		default: return 0; break;
	}
}

function addDays(myDate,days) {
	return new Date(myDate.getTime() + days*24*60*60*1000);
}

function date_to_jd (dt)
{
	dt.setHours(0);
	dt.setMinutes(0);	
	dt.setSeconds(0);

	return datetime_to_jd(dt);
}

function datetime_to_jd (dt)
{
	var y = parseInt(dt.getYear(),  10);
	var m = parseInt(dt.getMonth(), 10); // Month must be passes as 1-12 format, not 0-11
	var d = parseInt(dt.getDate(),  10);
	var hh = parseInt(dt.getHours(),  10);
	var mm = parseInt(dt.getMinutes(),  10);
	var ss = parseInt(dt.getSeconds(),  10);
	
	return cal_to_jd(y, m, d, hh, mm, ss);
}

function cal_to_jd( y, m, d, h, mn, s )
{
	var jy, ja, jm;

	if( y == 0 ) {
		alert(msg[50]);
		return 0;
	}
	if( y == 1582 && m == 10 && d > 4 && d < 15) {
		alert(msg[51]);
		return 0;
	}

	//	if( y < 0 )  ++y;
	if( m > 2 ) {
		jy = y;
		jm = m + 1;
	} else {
		jy = y - 1;
		jm = m + 13;
	}

	var intgr = Math.floor( Math.floor(365.25*jy) + Math.floor(30.6001*jm) + d + 1720995 );

    var gregcal = 15 + 31*( 10 + 12*1582 );
	if( d + 31*(m + 12*y) >= gregcal ) {
		ja = Math.floor(0.01*jy);
		intgr += 2 - ja + Math.floor(0.25*ja);
	}

	var dayfrac = h/24.0 - 0.5;
	if( dayfrac < 0.0 ) {
		dayfrac += 1.0;
		--intgr;
	}

		var frac = dayfrac + (((mn + s/60.0)/60.0)/24.0);

	var jd0 = (intgr + frac)*100000;
	var jd  = Math.floor(jd0);
	if( jd0 - jd > 0.5 ) ++jd;
	return jd/100000;
}


