var SYN = 29.5305882; 
var MSPD = 24*60*60*1000; 
var NM = new Date(Date.UTC(2000,0,6,18,14,0)); 
var FM = new Date(NM.getTime(NM)-(SYN/2*MSPD)); 
var GC = new Date(1582,9,15,0,0,0); 
var aDW = new Array('Sun','Mon','Tue','Wed','Thu','Fri','Sat'); 
var aDW2 = new Array('Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'); 
var aM = new Array('January','February','March','April','May','June','July','August','September','October','November','December'); 
var aM2 = new Array('Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'); 

function gPh(a_date,full) 
	{ 
		var base=NM; 
		if(gPh.arguments.length==2) base=FM; 
			var diff = a_date - base + MSPD; 
			var pre_base=false; 
		if(diff < 0 ) { diff = -diff; pre_base=true; 
	} 
	var phase = diff / (SYN * MSPD); 
	phase *=100; 
	while(phase>100) 
		{ 
			phase -= 100; 
		} 
		if(pre_base) 
		{ 
			phase=100-phase; 
		} 
		return phase; 
		} 

function phD(ph_p) 
	{ 
		var d; 
		if( (ph_p>=0) && (ph_p<=2.49) ) 
			{ 
				d="New Moon"; 
			} 
		else if( (ph_p>=2.5) && (ph_p<=22.49) ) 
			{ 
				d="Waxing Crescent"; 
			} 
		else if( (ph_p>=22.5) && (ph_p<=27.49) ) 
			{ 
				d="First Quarter Moon"; 
			} 
		else if( (ph_p>=27.5) && (ph_p<=47.49) ) 
			{ 
				d="Waxing Gibbous"; 
			} 
		else if( (ph_p>=47.5) && (ph_p<=52.49) ) 
			{ 
				d="Full Moon"; 
			} 
		else if( (ph_p>=52.5) && (ph_p<=73.49) ) 
			{ 
				d="Waning Gibbous"; 
			} 
		else if( (ph_p>=73.5) && (ph_p<=77.49) ) 
			{ 
				d="Third Quarter Moon"; 
			} 
		else if( (ph_p>=77.5) && (ph_p <= 97.49) ) 
			{ 
				d="Waning Crescent"; 
			} 
		else 
			{ 
				d="New Moon"; 
			} 
		return d; 
	} 

function rnd(val, prec) 
	{ 
		if(rnd.arguments.length==1) prec=0; 
			val = val * Math.pow(10,prec); 
			val = Math.round(val); 
			val = val / Math.pow(10,prec); 
		return val; 
	} 

var tdy=new Date(); 
var ph_p=gPh(tdy); 
var FM_ph_p = gPh(tdy,1); 
var ph_name=phD(ph_p); 
var ph_dec=rnd(ph_p,0)/100; 
var mimg=rnd((ph_dec*40),0); 
if(ph_p<=50.0) 
	{ 
		var p_o_f=ph_p*2; 
	} 
else 
	{ 
		var p_o_f = (100-ph_p)*2; 
	} 
var d_t_n = (1-ph_p/100)*SYN; 
var d_t_f = (1-FM_ph_p/100)*SYN; 
var n_NM = new Date(tdy.valueOf() + (d_t_n * MSPD)); 
var n_FM = new Date(tdy.valueOf() + (d_t_f * MSPD));


var data="";
var font2='<font color="#000000" face="verdana,arial,sans-serif" size="1" style="font-size:10px">';
var path=(!path)?"http://www.angelfire.com/moon2/magickalhaven/images/moon/":path;

data+='<table border="3" width="142" cellpadding="2" cellspacing="0" bgcolor="#FFCCFF">';
data+='<tr>';
data+='<td align="center">';
data+='<img src="'+path+'m'+mimg+'.gif" width="100" height="100" border="0" alt="Current Moon Phase"><br>';
data+='</td>';
data+='</tr>';
data+='<tr>';
data+='<td>';
data+=font2+'<b>Today is:</b> ' + tdy.toLocaleString() + '<BR>';
data+='<b>Phase percent:</b> ' + rnd(ph_p) + '%<BR>';
data+='<b>Percent of full:</b> ' + rnd(p_o_f,1) + '%<BR>';
data+='<b>Phase name:</b> ' + phD(ph_p) + '<BR>';
data+='<b>Next new moon in ' + rnd(d_t_n) + ' days</b> (on ' + n_NM + ')<BR>';
data+='<b>Next full moon in ' + rnd(d_t_f) + ' days</b> (on ' + n_FM + ')<br><br>';
data+='</td>';
data+='</tr>';
data+='</table>';

document.write(data);

