//Liefert die Anzahl der Tage seit dem letzten Vollmond.
//Gültig bis Ende 2008
function tageSeitLetztemVollmond() {
  var i; // Hilfsvariable
  var jetzt = new Date(); //aktuelles Datum
  //Tabelle mit den Vollmonddaten      
  var vollmond = new Array(new Date(2007, 8, 26), new Date(2007,9, 26),
      new Date(2007, 10, 24),new Date(2007, 11, 24),new Date(2008, 0, 22),
      new Date(2008, 1, 21),new Date(2008, 2, 21),new Date(2008, 3, 20),
      new Date(2008, 4, 20),new Date(2008, 5, 18),new Date(2008, 6, 18),
      new Date(2008, 7, 16),new Date(2008, 8, 15), new Date(2008,9,14), new Date(2008, 10,13),
      new Date(2008,11,12), new Date(2009,0, 11), new Date(2009, 1, 9), new Date(2009, 2, 11),
      new Date(2009, 3, 9), new Date(2009,4, 9), new Date(2009,5, 7), new Date(2009,6,7),
      new Date(2009, 7, 6), new Date(2009,8, 4), new Date(2009,9, 4),
      new Date(2009, 10, 2), new Date(2009,11, 2), new Date(2009,11, 31),
      new Date(2010, 0, 30), new Date(2010,1, 28), new Date(2010,2, 30),
      new Date(2010, 3, 28), new Date(2010,4, 28), new Date(2010,5, 26),
		new Date(2010, 6, 26), new Date(2010,7, 24), new Date(2010,8, 24),
		new Date(2010, 9, 24), new Date(2010,10, 21), new Date(2010,11, 21));
      
  //Nächsten Vollmond bestimmen
  i = 0;
   while ((i<vollmond.length)&&(jetzt.getTime()>=vollmond[i].getTime())) ++i;
	
  //Abbruch mit Rückgabe 0, falls die Systemzeit des Nutzers nicht 
  //innerhalb der Zeiten in vollmond[] liegt
  if ((i == 0) || (i>=vollmond.length)) return 0;
 
  //Abstand zum letzten Vollmond (vollmond[i-1])  
  return Math.min(29,Math.floor((jetzt.getTime()-vollmond[i-1].getTime())/(1000*60*60*24)));
 }

//liefert die aktuelle Mondphase mit Werten zwischen 0 und skalierung-1 
//zurück, wobei 0 = Vollmond, 1 = leicht abnehmend, ... 
//skalierung-1 = zunehmend und fast voll 
function getMondphase(skalierung) {
 return Math.floor((tageSeitLetztemVollmond() / 30) * skalierung);
}