// Moon Phase Widget javascript by Jon Wiley ported to jQuery by Istvan Csiszar
// 1.0 - 	initial release 2005-07-26
// 1.0.1 -	fix for onshow handler
// 1.0.2 -	fix for times very close to new moon
// 1.0.3 -	changed to Julian date method for phase calculation and made accuracy adjustments

function julian(now) {
	var HR = now.getUTCHours();
	var MN = now.getUTCMinutes();
	var SC = now.getUTCSeconds()
	var MM = now.getUTCMonth() + 1;
	var DD = now.getUTCDate();
	var YY = now.getUTCFullYear();
    with (Math) {  
      HR = HR + (MN / 60) + (SC/3600);
      GGG = 1;
      if (YY <= 1585) GGG = 0;
      JD = -1 * floor(7 * (floor((MM + 9) / 12) + YY) / 4);
      S = 1;
      if ((MM - 9)<0) S=-1;
      A = abs(MM - 9);
      J1 = floor(YY + S * floor(A / 7));
      J1 = -1 * floor((floor(J1 / 100) + 1) * 3 / 4);
      JD = JD + floor(275 * MM / 9) + DD + (GGG * J1);
      JD = JD + 1721027 + 2 * GGG + 367 * YY - 0.5;
      JD = JD + (HR / 24);
    }
    return JD;
}


function updatePhase() {
	var currentDate  = new Date();
	var julianDate = julian(currentDate);
	var synodic = 29.530588861;
	var shadow = $('#shadow');
	var shadowb = $('#shadowb');
	
	// Compute age of moon and corresponding phase value
	// Some minor adjustments for accuracy are made
	var ageOfMoon  = (julianDate - 2453587.62847) % synodic;
	var phaseVal = Math.round(60 * (ageOfMoon / synodic));
	if (phaseVal < 29 && phaseVal != 0) {
		phaseVal -= 1;
	} else if (phaseVal > 30 && phaseVal != 60) {
		phaseVal += 1;
	}
	
	if (jQuery.support.opacity)
	{
		// Figure out which phase image to overlay
		if (phaseVal == 30) {
			shadow.css('background-image', 'none');
			shadowb.css('background-image', 'url('+moonphase_images_path+'/0.png)');
		} else if (phaseVal == 60) {
			shadow.css('background-image', 'url('+moonphase_images_path+'/0.png)');
			shadowb.css('background-image', 'none');
		} else if (phaseVal > 30) {
			shadow.css('background-image', 'url('+moonphase_images_path+'/' + phaseVal + '.png)');
			shadow.css('padding-top', '2px');
			shadow.css('padding-left', '2px');
			shadowb.css('background-image', 'url('+moonphase_images_path+'/' + (phaseVal - 30) + '.png)');
		} else {
			shadow.css('background-image', 'url('+moonphase_images_path+'/' + phaseVal + '.png)');
			shadow.css('padding-top', '0px');
			shadow.css('padding-left', '0px');
			shadowb.css('background-image', 'url('+moonphase_images_path+'/' + (phaseVal + 30) + '.png)');
		}
	}
}

