var setHTML = {
	n: 1, /* phase name */
	pof: 1, /* moon fullnes */
	dt: 1, /* date */
	iPth: 'http://daoin.com/i/m/', /* image path */
	iCss: 'vertical-align: middle; border: 0; margin-left: 10px;', /* image style */
	Link: 'http://daoin.com/calendar.php'
}; 

var d = document,
		html = '', 
		MSPD = 24*60*60*1000,
		aDW = ['Нед','Пон','Вт','Ср','Чет','Пет','Съб'],
		aM2 = ['Ян','Фев','Мар','Апр','Май','Юн','Юл','Авг','Сеп','Окт','Ное','Дек'],
		tdy = new Date(),
		ph_i = cmm_gPh(tdy),
		p_o_f = ph_i.ph,
		ph_p = ph_i.a,
		ph_dec = rnd(ph_p,0)/100,
		mimg = rnd((ph_dec*40), 0);
		
	//mimg = (mimg == 40? 0 :(mimg + 1));

	mimg = (mimg == 39 || mimg == 40 || mimg == 0 || mimg == 1)? 'newmoon' 
	: mimg >= 2 && mimg < 10? 'beforefirstquarter' 
	: mimg == 10? 'firstquarter' 
	: mimg >= 11 && mimg < 19? 'afterfirstquarter' 
	: mimg >= 19 && mimg < 22? 'fullmoon' 
	: mimg >= 22 && mimg < 30? 'beforethirdquarter' 
	: mimg == 30? 'thirdquarter' 
	: mimg >= 31 && mimg < 39? 'afterthirdquarter' 
	: 'p';
	
	//alert(mimg)	
		
	html += setHTML.dt? aDW[tdy.getDay()] 
	+ ' ' + (tdy.getDate() < 10? '0' + tdy.getDate() : tdy.getDate()) 
	+ ' ' + aM2[tdy.getMonth()] 
	+ ', ' + tdy.getFullYear() : '';
	
var dsc = (setHTML.n? 'Фаза: ' + phD(ph_p) + '.\n\r' : '')
	+ (setHTML.pof? 'Пълнота: ' + rnd(p_o_f, 0) + '%' : ''),
		css = setHTML.iCss? ' style="' + setHTML.iCss + '"' : '';
	
	html += setHTML.iPth? (setHTML.Link? '<a href="http://daoin.com/calendar.php" target="_blank" title="' + dsc + '">' : '') 
	+ '<img src="' + setHTML.iPth + mimg + '.gif" alt="' + dsc + '"' + css + ' />' + (setHTML.Link? '</a>' : '') : '';



function phD(ph_p){
var p = '';

	if( (ph_p >= 0) && (ph_p <= 2.49) )
		p = 'Новолуние';

	else if( (ph_p >= 2.5) && (ph_p <= 22.49) ) 
		p = 'Преди първа четвърт';

	else if( (ph_p >= 22.5) && (ph_p <= 27.49) )
		p = 'Първа четвърт';

	else if( (ph_p >= 27.5) && (ph_p <= 47.49) )
		p = 'След първа четвърт';

	else if( (ph_p >= 47.5) && (ph_p <= 52.49) )
		p = 'Пълнолуние';

	else if( (ph_p >= 52.5) && (ph_p <= 73.49) )
		p = 'Преди трета четвърт';

	else if( (ph_p >= 73.5) && (ph_p <= 77.49) )
		p = 'Трета четвърт';

	else if( (ph_p >= 77.5) && (ph_p <= 97.49) )
		p = 'След трета четвърт';

	else
		p = 'Новолуние';


	return p;
}

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;
}

function cmm_dAdj(x) 
{
	
	if(x > 360)
	
		while(x > 360) 
		{
			x -= 360;
		}
		
	else if(x < 0)
	
		while(x < 0)
		{
			x += 360;
		}
		
	return x;
}

function cmm_dToR(_d)
{
	return _d*2*Math.PI/360;
}

function cmm_gPh(msdate)
{
	var E = new Date(Date.UTC(1990, 0, 1, 0, 0, 0, 0)),
			dn = (msdate - E.getTime())/MSPD + 1,
			EL_E = 279.403303,
			EL_P = 282.768422,
			N = (360/365.242191)*dn;
			
			N = cmm_dAdj(N);
	
	var M = N + EL_E - EL_P;
			S_M = cmm_dAdj(M);
	
	var E = (360/Math.PI)*0.016713*Math.sin(cmm_dToR(S_M)),
			S_L = N + E + EL_E;
			
			S_L = cmm_dAdj(S_L);
	
	var tmp = 0,
			LO = 318.351648,
			PO = 36.340410,
			NO = 318.510107,
			l = cmm_dAdj(13.1763966*dn + LO),
			Mm = cmm_dAdj(l - 0.1114041*dn - PO),
			N = cmm_dAdj(NO - 0.0529539*dn);
			
			tmp = (2*(l - S_L)) - Mm;
	
	var Ev = 1.2739*Math.sin(cmm_dToR(tmp));
	
			tmp = cmm_dToR(S_M);
	
	var Ae = 0.1858*Math.sin(tmp),
			A3 = 0.37*Math.sin(tmp),
			Mm1 = Mm + Ev - Ae - A3,
			Ec = 6.2886*Math.sin(cmm_dToR(Mm1)),
			A4 = 0.214*Math.sin(2*cmm_dToR(Mm1)),
			l1 = l + Ev + Ec - Ae + A4,
			V = 0.6583*Math.sin(cmm_dToR(2*(l1-S_L))),
			mTL = l1 + V,
			
			D = mTL - S_L;
			D = cmm_dAdj(D);
	
	var F = 0.5*(1-Math.cos(cmm_dToR(D)));
			F = F*100;
	
	var tmp = new Object();
	
			tmp.ph = F;
			tmp.D = D;
			tmp.a = D/360*100;
	
	return tmp;
}


d.write(html);

