calformat=0; // 0: 2005-01-15  1: 15.01.2005

function calendarStr(d, caldiv) {
  var s = d.split("-");
  createCalendar(s[0], s[1], s[2], caldiv);
  // Aktuellen Monat speichern
  document._calendardate=d;
}

function createCalendar(year, month, day, caldiv) {

  var monthnameslong = new Array ( "Januar","Februar","M&auml;rz","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember");
  var daynames = new Array( "", "Mo", "Di", "Mi", "Do", "Fr", "Sa", "So" );
  var monthdays = new Array( 31,28,31,30,31,30,31,31,30,31,30,31 );
  if (year%4==0 && !(year%100==0)) { monthdays[1]=29; } // Schaltjahr


  var jan1 = new Date(year, 0, 1);
  var wt=jan1.getDay();
  if (wt==0) { wt=7; }

  var days=0;
  for (i=1; i<month; i++) {
    days+=monthdays[i-1];
  }
  days+=1;

  var kw=1;
  for (i=1; i<days; i++) {
    wt+=1;
    if (wt==8) {
      wt=1;
      kw++;
    }
  }

  //alert(year + " " + daynames[wt] + " " + kw);

  var t=1;
  var dim=monthdays[month-1];

  t-=(wt-1);
  wt=1;

  var next_m=month;
  var next_y=year;
  next_m++;
  if (next_m==13) { next_m=1; next_y++; }
  var prev_m=month;
  var prev_y=year;
  prev_m--;
  if (prev_m==0) { prev_m=12; prev_y--; }

  var nd=0;
  if (monthdays[next_m]<=nd) { nd=monthdays[next_m]; }
  var next_date=next_y + "-" + next_m + "-" + nd;
  var pd=day;
  if (monthdays[prev_m]<=pd) { pd=monthdays[prev_m]; }
  var prev_date=prev_y + "-" + prev_m + "-" + pd;


  var cal="<table class=\"calendar\" cellspacing=0 cellpadding=0 border=0>";
  cal+="<tr>";
  cal+="<td align=center class=\"month\"><a href=\"JavaScript:calendarStr('"+prev_date+"','"+caldiv+"');\">&lt;&lt;</a></td>";
  cal+="<td colspan=6 align=center class=\"month\"> " + monthnameslong[month-1] + " " + year + " </td>";
  cal+="<td align=center class=\"month\"><a href=\"JavaScript:calendarStr('"+next_date+"','"+caldiv+"');\">&gt;&gt;</a></td>";
  cal+="</tr><tr>";
  cal+="<td class=\"hlkw\">KW</td><td class=\"hlwt\">Mo</td><td class=\"hlwt\">Di</td><td class=\"hlwt\">Mi</td><td class=\"hlwt\">Do</td><td class=\"hlwt\">Fr</td><td class=\"hlsa\">Sa</td><td class=\"hlso\">So</td>";
  cal+="</tr>";

 // if ($year==(localtime)[5] + 1900 && $month==(localtime)[4] + 1) {
 //   $today=(localtime)[3];
 // } else {
 //   $today=-100;
 // }

 var today=5;


  while (true) {
    var trclass="ungerade";
    if (kw%2==0) { trclass="gerade"; }
    cal+="<tr class=\"$trclass\"><td class=\"kw\">"+kw+"</td>";
    for (;wt<=7; wt++) {
      var cssclass="wt";
      var t2=t;
      if (t<1 || t>dim) { t2="&nbsp;"; cssclass="empty"; }
      if (t==day) { cssclass="active"; }
      if (wt==6) { cssclass="sa"; }
      if (wt==7) { cssclass="so"; }
      if (t==day && wt==6) { cssclass="activesa"; }
      if (t==day && wt==7) { cssclass="activeso"; }
      if (t2 != t && wt==6) { cssclass="emptysa"; }
      if (t2 != t && wt==7) { cssclass="emptyso"; }
      var link="&nbsp;";
      var showmonth=month;
      var $showday=t;
      var showdate=year + "-" + (month<10?"0":"") + month + "-" + (t<10?"0":"") + t;
      if (t2 != "&nbsp;") {
        link="<a href=\"JavaScript:setDate('"+showdate+"','"+caldiv+"')\" >"+t2+"</a>";
      }
      cal+="<td class=\""+cssclass+"\">"+ link +"</td>";
      t+=1;
    }
    cal+="</tr>\n";
    kw++;
    wt=1;
    if (t>dim) { break; }
  }

  cal+="</table>";


  //document.write(cal);
  document.getElementById('cal_' + caldiv).innerHTML = cal;
}

function showCalendar(caldiv,btn) {
  //document.getElementById('cal_' + caldiv).style.left = btn.offsetLeft + 20;
  //document.getElementById('cal_' + caldiv).style.top  = btn.offsetTop;
  if(document.getElementById('cal_' + caldiv).style.display == 'block')
    document.getElementById('cal_' + caldiv).style.display = 'none';
  else document.getElementById('cal_' + caldiv).style.display = 'block';
}

function setDate(dat, caldiv) {
  if (calformat==1) {
    var a=dat.split("-");
    dat=a[2]+"."+a[1]+"."+a[0];
  }
  document.getElementById('date_' + caldiv).value = dat;
  //document.FORM.date.value = dat;
  document.getElementById('cal_' + caldiv).style.display = 'none';

}

function displayCalendar(caldiv) {
 var calvalue=document.getElementById("date_"+caldiv).value;
 var a;
 if (calvalue.indexOf("-")>0)
   a=calvalue.split("-");
 else
   a=calvalue.split("\.");

 if (a[0]==0) {
   if (document._calendardate!=null && document._calendardate.length>3) {
     // gespeicherten Monat aufrufen
     var s = document._calendardate.split("-");
     createCalendar(s[0], s[1], s[2], caldiv);     
   } else {
     // aktuellen Monat aufrufen
     var d=new Date();
     createCalendar(d.getFullYear(), d.getMonth()+1, d.getDate(), caldiv);
   }
 } else {
   var jahr=parseInt(a[0],10)
   var monat=parseInt(a[1],10);
   var tag=parseInt(a[2],10);

   if (jahr<2000) {
     var d=tag;
     tag=jahr;
     jahr=d;
     calformat=1;
   }
   createCalendar(jahr, monat, tag, caldiv);
 }

 showCalendar(caldiv);
 return false;
}

