/*konstansok*/

msPerNap = 24*60*60*1000;     // millisec/nap
synodic  = 29.5305888531;       // Szinodikus keringésidő (két azonos fázis közti időtartam)
                              // -hibája: +-6óra



function kerekit(ertek, dec) 
{
  ertek = ertek * Math.pow(10,dec);
  ertek = Math.round(ertek);
  ertek = ertek / Math.pow(10,dec);
  return ertek;
}


function HoldFazisSz(datum)    // Holdfázis meghatározása százalékban
{                              // A számítások alapját képező Újhold időpontja: 2005.05.08 08:46:13

  alapDatum = new Date();
  alapDatum.setFullYear(2005);
  alapDatum.setMonth(4);       // jan:0. - dec:11. hónap !!!
  alapDatum.setDate(8);
  alapDatum.setHours(20);
  alapDatum.setMinutes(46);
  alapDatum.setSeconds(13);

  diff  = datum - alapDatum;
  fazis = diff / (synodic * msPerNap) * 100;   // holdfázis százalékban
  fazis = fazis % 100;
  if (fazis<0) fazis += 100;

  return fazis;
}


function hf_szamol(hf_ev,hf_ho)
{
  vho = new Date();

  vho.setFullYear(hf_ev);
  vho.setMonth(hf_ho-1);              // jan:0. - dec:11. hónap !!!
  vho.setDate(1);
  vho.setHours(0);
  vho.setMinutes(0);
  vho.setSeconds(0);


  fazisSzazalek = HoldFazisSz(vho);

  if (fazisSzazalek<=50)  telitettseg = fazisSzazalek*2;
                   else   telitettseg = (100-fazisSzazalek)*2;

  HanyadikNegyedbenKezd = Math.floor(fazisSzazalek/25) +1 ;


  hf  = new Array();

  hf[1] = new Date(vho.valueOf() + (HanyadikNegyedbenKezd/4 - fazisSzazalek/100) * synodic * msPerNap);
  hf[2] = new Date(hf[1].valueOf() + synodic * 0.25 * msPerNap);
  hf[3] = new Date(hf[1].valueOf() + synodic * 0.50 * msPerNap);
  hf[4] = new Date(hf[1].valueOf() + synodic * 0.75 * msPerNap);
  hf[5] = new Date(hf[1].valueOf() + synodic * 1.00 * msPerNap);
}
