// ===========================================================================
// Name:  calender.js
// Autor: Werner A. Wolf
// Datum: 7. Mai 2003
// ===========================================================================
       
// ------------------------------------------------------------------------
// public void UpdateCalender()
// ------------------------------------------------------------------------
function UpdateCalender()
{
   var Calender;
   
   var Monate = new Array("Jänner", "Feber", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember");

   Calender = '<table cellpadding="3" cellspacing="0" class="Kalender">                     '+
      '<tr class="Kalender">                                                                '+            
      '   <td colspan="7" class="Header">                                                   '+
      '      <table border="0" cellpadding="0" cellspacing="0" width="100%" class="hidden"> '+
      '      <tr>                                                                           '+
      '         <td class="Header" align="left" width="*">&nbsp;' + Monate[ShownDay.getMonth()] + ' ' + ShownDay.getFullYear() +                
      '         </td>                                                                       '+
      '         <td class="Header" align="right" valign="middle" width="34">                '+
                  '<a onclick="JavaScript:CalenderPrevious()"><img src="previous.gif" width="9" height="13" alt="Einen Monat zurück"></a>'+
                  '<a onclick="JavaScript:CalenderHome()"><img src="home.gif" width="13" height="13" alt="Zum heutigen Tag springen"></a>'+
                  '<a onclick="JavaScript:CalenderNext()"><img src="next.gif" width="9" height="13" alt="Einen Monat weiter"></a>'+
      '         </td>                                                                       '+
      '      </tr>                                                                          '+
      '      </table>                                                                       '+
      '   </td>                                                                             '+
      '</tr>                                                                                '+
      '<tr class="Kalender">                                                                '+
      '   <td class="Header">Mo</td><td class="Header">Di</td><td class="Header">Mi</td>    '+
      '   <td class="Header">Do</td><td class="Header">Fr</td><td class="Header">Sa</td>    '+
      '   <td class="Header">So</td>                                                        '+
      '</tr>' + UpdateCalenderBody()+ '</table>';
      
   document.getElementById('Calender').innerHTML = Calender;
}

// ------------------------------------------------------------------------
// public void CalenderPrevious()
// ------------------------------------------------------------------------
function CalenderPrevious()
{
   ShownDay.setMonth(ShownDay.getMonth()-1);
   UpdateCalender();
   return false;   
} 

// ------------------------------------------------------------------------
// public void CalenderHome()
// ------------------------------------------------------------------------
function CalenderHome()
{
   ShownDay = new Date();
   CalenderKlick(ShownDay.getDate(), ShownDay.getMonth(), ShownDay.getFullYear());
   return false;   
}

// ------------------------------------------------------------------------
// public void CalenderNext()
// ------------------------------------------------------------------------
function CalenderNext()
{
   ShownDay.setMonth(ShownDay.getMonth()+1);
   UpdateCalender();
   return false;   
}

// ------------------------------------------------------------------------
// public void CalenderKlick()
// ------------------------------------------------------------------------
function CalenderKlick(parTag, parMonat, parJahr)
{
  var Arten = "5";
  
  if (document.Einstellungen.Art_4.checked == true)
  {
    Arten = Arten + ",4";
  }
  if (document.Einstellungen.Art_6.checked == true)
  {
    Arten = Arten + ",6";
  }
  if (document.Einstellungen.Art_7.checked == true)
  {
    Arten = Arten + ",7";
  }
  
  document.location = "index.php?Tag=" + parTag + "&Monat=" + parMonat + "&Jahr=" + parJahr + 
    "&Geburtstage=" + document.Einstellungen.Geb.value + 
    "&Veranstaltungen=" + document.Einstellungen.Ver.value +
    "&Arten=" + Arten;
      
}

// ------------------------------------------------------------------------
// public void CalenderOptions()
// ------------------------------------------------------------------------
function CalenderOptions(parTag, parMonat, parJahr)
{
   var OpenUrl = "options.php?Geb=" + document.Einstellungen.Geb.value + "&Ver=" + document.Einstellungen.Ver.value;
   var Fenster = window.open(OpenUrl, "Einstellungen","width=500,height=400,menubar=no,status=yes,toolbar=no,dependent=yes,location=no,resizable=yes");
   Fenster.focus();
}

// ------------------------------------------------------------------------
// private String UpdateCalenderBody()
// ------------------------------------------------------------------------
function UpdateCalenderBody()
{
   var Body = '<tr>';
   
   // erster dieses Monats
   var Datum = new Date(ShownDay);
   Datum.setDate(1);
   
   if(Datum.getDay() != 1)   // nicht Montag - Resttage des letzten Monats anzeigen
   {
      if (Datum.getDay() == 0)
      {
         Von = 6;
      }
      else
      {
         Von = Datum.getDay() - 1;
      }
      for (i=Von; i>0; i--)
      {
         Body = Body + CalenderInactive(Datum, -i);
      }  
   }
   
   // Diesen Monat ausgeben
   i = 0;
   while(CalenderIsThisMonth(Datum, i))
   {
      Body = Body + CalenderActive(Datum, i);
      i++;
   }
   
   // Erste Tage des nächsten Monats ausgeben
   var Temp = new Date(ShownDay);
   Temp.setDate(1);
   Temp.setMonth(Temp.getMonth() + 1);
   if(Temp.getDay() != 1)   // nicht Montag - Erste Tage des nächsten Monats ausgeben
   {
      if (Temp.getDay() == 0)
      {
         Bis = 1;
      }
      else
      {
         Bis = 8 - Temp.getDay();
      }
      for (j=0; j<Bis; j++)
      {
         Body = Body + CalenderInactive(Datum, i+j);
      }  
   }
   
   return Body;
}

// ------------------------------------------------------------------------
// private String CalenderInactive(Date, int)
// ------------------------------------------------------------------------
function CalenderInactive(parDatum, parValue)
{
   var Ret = '';
   var Temp = new Date(parDatum);
   Temp.setDate(Temp.getDate() + parValue);

   Ret = '<td class="Inaktiv">' + CalenderDay(Temp, "darkgray") + '</td>';
   
   if (Temp.getDay() == 0)
   {
      Ret = Ret + '</tr>';
   }      
   
   return Ret;
}

// private String CalenderActive(Date, int)
function CalenderActive(parDatum, parValue)
{
   var Ret = '';
   var Temp = new Date(parDatum);
   Temp.setDate(Temp.getDate() + parValue);
   
   if (Temp.getDate() == Selected.getDate() && Temp.getMonth() == Selected.getMonth() && Temp.getFullYear() == Selected.getFullYear()) // heute
   {
      Ret = '<td class="Heute">' + CalenderDay(Temp, "red") + '</td>';
   }
   else
   {
      Ret = '<td class="Normal">' + CalenderDay(Temp, "black") + '</td>';
   }
   
   if (Temp.getDay() == 0)
   {
      Ret = Ret + '</tr>';
   }      
   
   return Ret;
}

// private bool CalenderIsThisMonth(Date, int)
function CalenderIsThisMonth(parDatum, parValue)
{
   var Temp = new Date(parDatum);
   Temp.setDate(Temp.getDate() + parValue);
   
   if (Temp.getMonth() == parDatum.getMonth())
   {
      return true;
   }
   else
   {
      return false;
   }      
}      
 
// private String CalenderDay(Date)
function CalenderDay(parDatum, parColor)
{
   return '<a href="javascript:CalenderKlick(' + parDatum.getDate() + ',' + parDatum.getMonth() + ',' + parDatum.getFullYear() +
          ')" style="text-decoration:none;color:' + parColor + ';">' + parDatum.getDate() + '</a>';
}



