//document.onclick = checkclick;
document.onkeydown = checktaste;

function checktaste(e) {
if (!e)
    e = window.event;
  if (e.which) {
    Tastencode = e.which;
  } else if (e.keyCode) {
    Tastencode = e.keyCode;
  }
  if (Tastencode == 27 || Tastencode == 9) { closejskal(); }
}

function checkclick(e) {
if (!e)
    e = window.event;

 if (typeof boxopen == 'undefined') { return; 
 } else { 
	if (boxopen == '1') { alert(boxopen); }
 }

}

function closejskal() {
 document.getElementsByTagName('body')[0].removeChild(r);
 boxopen=0;
 feld.focus();
}

function jskal(modus,anzmonat,spalten,startmonat,startjahr,f1,f2) {

 if (typeof f1 == 'undefined') { alert('Parameteruebergabe Rueckgabefeld 1 fehlt.'); } else { feld1 = f1; }
 if (typeof f2 == 'undefined' && modus == '1') { alert('Parameteruebergabe Rueckgabefeld 2 fehlt.'); } else { feld2 = f2; }


 boxopen=1;
 feld=document.getElementsByName(f1)[0];
 feld.blur();
 boxO=findeO(feld)+feld.clientHeight+5;
 boxL=findeL(feld);

 if (typeof jsr == 'undefined') {
  delete klick1; delete klick2;
  jsr = document.createElement('div'); jsr.className='rahmen';
  c = document.createElement('div'); c.className='cont';
  sh = document.createElement('div'); sh.className='schatten';
 }

  jsr.appendChild(c);
  jsr.appendChild(sh);

  jsr.style.left = boxL;
  jsr.style.top  = boxO;
  document.getElementsByTagName('body')[0].appendChild(jsr);

 if (anzmonat < spalten) { spalten = anzmonat; }
 zeilen = Math.ceil(anzmonat/spalten);

 monat=startmonat;
 jahr=startjahr;
 mod=modus;

 dat_liste = new Array('');
 monatsname = new Array('Januar','Februar','M&auml;rz','April','Mai','Juni','Juli','August','September','Oktober','November','Dezember');
 tagname = new Array('Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa', 'So');

  qc = "<table width='100%' cellspacing='1' style='font-size:11; font-weight:bold; font-family:Arial;'><tr>";
   vm = vormonat(monat,jahr);
   nm = nachmonat(monat,jahr);
  if (modus == 0) { zu="Kalender";
  } else { zu="<b><a class='hand' onclick='closejskal();'>Kalender schlie&szlig;en</a></b>"; }
  qc = qc + "<td align='left' ><a href=\"Javascript:jskal("+modus+","+anzmonat+","+spalten+","+vm[0]+","+vm[1]+",'"+f1+"','"+f2+"');\">";
  qc = qc + "<img src='http://www.dormino.de/images/back.gif' border='0'></a></td>";
  qc = qc + "<td align='center' style='font-size:12;'>"+zu+"</td>";
  qc = qc + "<td align='right'><a href=\"Javascript:jskal("+modus+","+anzmonat+","+spalten+","+nm[0]+","+nm[1]+",'"+f1+"','"+f2+"');\">";
  qc = qc + "<img src='http://www.dormino.de/images/forw.gif' border='0'></a></td>";
  qc = qc + "</tr></table>";
  qc = qc + "<table cellspacing='6' cellpadding='0' id='kaltab' style='margin-left:auto; margin-right:auto;'>";

  z=1;
  for (var k = 1; k <= zeilen; k++) {
    qc = qc + "<tr valign='top'>";
   for (var l = 1; l <= spalten; l++) {
     if (z > anzmonat) { continue; }

     ret = write_kalender(monat,jahr);
     qc = qc + "<td class='mzelle' colspan='7'>" + ret + "</td>";
     query = nachmonat(monat,jahr); monat=query[0]; jahr=query[1];
     z++;
   }
    qc = qc + "</tr>";
  }

  qc = qc + "</table>";

  c.innerHTML=qc;
  c.style.width=document.getElementById('kaltab').clientWidth + 3;
  c.style.height=document.getElementById('kaltab').clientHeight + 23;
  sh.style.width=document.getElementById('kaltab').clientWidth + 3;
  sh.style.height=document.getElementById('kaltab').clientHeight + 23;
  neusetz();

}

function findeL(obj) {
 var lPos = 0;
 if (obj.offsetParent) { while (obj.offsetParent){ lPos += obj.offsetLeft; obj = obj.offsetParent; }
 } else if (obj.x) { lPos += obj.x; }
 return lPos;
}

function findeO(obj) {
 var oPos = 0;
 if (obj.offsetParent) { while (obj.offsetParent){ oPos += obj.offsetTop; obj = obj.offsetParent; }
 } else if (obj.y) { oPos += obj.y; }
 return oPos;
}


function close_kalender() {
 document.getElementsByTagName('body')[0].removeChild(jsr);
boxopen=0;
 delete klick1;
 delete klick2;
}

function neusetz() {
    for (d=0; d< dat_liste.length; d++) {
       if (typeof klick1 != 'undefined' && dat_liste[d] == klick1) { document.getElementById(dat_liste[d]).className = "aktiv"; }
       if (typeof klick2 != 'undefined' && dat_liste[d] == klick2) { document.getElementById(dat_liste[d]).className = "aktiv"; }
       if (typeof klick1 != 'undefined' && typeof klick2 !='undefined') { 
	  if (dat_liste[d] != "" && (dat_liste[d] <= klick2 && dat_liste[d] >= klick1)) { document.getElementById(dat_liste[d]).className = "aktiv"; }
        }
      }
}


function write_kalender(mo,ja) {

  var jetzt = new Date();
  var DieserMonat = jetzt.getMonth() + 1;
  var DiesesJahr = jetzt.getYear();
  if (DiesesJahr < 999)
    DiesesJahr += 1900;
  var DieserTag = jetzt.getDate();
  var arrl = "http://www.dormino.de/images/back.gif";
  var arrr = "http://www.dormino.de/images/forw.gif";



  var Zeit = new Date(ja, mo - 1, 1);
  var Start = Zeit.getDay();
  if (Start > 0) { Start--; } else { Start = 6; }

  var Stop = 31;
  if (mo == 4 || mo == 6 || mo == 9 || mo == 11)
    --Stop;
  if (mo == 2) {
    Stop = Stop - 3;
    if (ja % 4 == 0)
      Stop++;
    if (ja % 100 == 0)
      Stop--;
    if (ja % 400 == 0)
      Stop++;
  }

  qc_kal = "";
  qc_kal = qc_kal + "<table border='0' class='kal' cellspacing='0' cellpadding='1'>\n";
  qc_kal = qc_kal + "<tr><td colspan='7' class='monat'>" +  monatsname[mo - 1]+" "+ja+"</td></tr>\n<tr>"; 
  for (var i = 0; i <= 6; i++)
    wochentag(tagname[i]);
  qc_kal = qc_kal + "</tr><tr><td colspan='7' height='5px'></td></tr>\n";
  
  var Tageszahl = 1;
  for (var i = 0; i <= 5; i++) {
    qc_kal = qc_kal + "<tr>";
    for (var j = 0; j <= 5; j++) {
      if ((i == 0) && (j < Start)) {
        zelle("","","zelle");
      } else {
        if (Tageszahl > Stop) {
          zelle("","","zelle");
        } else {
	idx = write_idx(ja,mo,Tageszahl);
          if ((ja == DiesesJahr) && (mo == DieserMonat) && (Tageszahl == DieserTag)) {
            zelle(Tageszahl,idx,"today");
          } else {
            zelle(Tageszahl,idx, "tag");
          }
          Tageszahl++;
        }
      }
    }

    if (Tageszahl > Stop) {
      zelle("","", "zelle");
    } else {
	idx = write_idx(ja,mo,Tageszahl);
      if ((ja == DiesesJahr) && (mo == DieserMonat) && (Tageszahl == DieserTag)) {
        zelle(Tageszahl,idx,"we");
      } else {
        zelle(Tageszahl,idx,"we");
      }
      Tageszahl++;
    }
    qc_kal = qc_kal + "</tr>\n";
  }
  qc_kal = qc_kal + "</table>\n";
  return qc_kal;

}


function write_idx(j,m,t) {
  var tm = (m > 9) ? m : "0" + m;
  var tt = (t > 9) ? t : "0" + t;
  idx = ''+j+tm+tt;
  dat_liste.push(idx);
  return idx;
}

function vormonat(m,j) {
 if (m == 1) { vm=12; vj=j-1; } else { vm=m-1; vj=j; }
 vmvj = new Array(vm,vj);
 return vmvj;
}

function nachmonat(m,j) {
 if (m == 12) { nm=1; nj=j+1; } else { nm=m+1; nj=j; }
 nmnj = new Array(nm,nj);
 return nmnj;
}




function setzen(tdid) {
  
 if (mod == 0) {
   for (d=0; d< dat_liste.length; d++) { if (dat_liste[d] != "") { document.getElementById(dat_liste[d]).className = "tag"; } }
   document.getElementsByName(feld1)[0].value = tdid.substr(6,2)+"."+tdid.substr(4,2)+"."+tdid.substr(0,4);
   document.getElementById(tdid).className = "aktiv";
 document.getElementsByTagName('body')[0].removeChild(jsr);
 boxopen=0;
   return;
 } else {
   if (typeof klick1 == 'undefined' && typeof klick2 == 'undefined') { 
    klick1 = tdid; 
    document.getElementsByName(feld1)[0].value = klick1.substr(6,2)+"."+klick1.substr(4,2)+"."+klick1.substr(0,4);
    document.getElementById(klick1).className = "aktiv";
    return false;
   }
   if (typeof klick1 != 'undefined' && typeof klick2 == 'undefined') {
    klick2 = tdid;

    if (klick1 < klick2) { 
      document.getElementsByName(feld2)[0].value = klick2.substr(6,2)+"."+klick2.substr(4,2)+"."+klick2.substr(0,4);
      for (d=0; d< dat_liste.length; d++) { 
	if (dat_liste[d] != "" && (dat_liste[d] >= klick1 && dat_liste[d] <= klick2)) { 
	  document.getElementById(dat_liste[d]).className = "aktiv";  
	}
      }
    } else { 
      document.getElementsByName(feld2)[0].value = document.getElementsByName(feld1)[0].value;
      document.getElementsByName(feld1)[0].value = klick2.substr(6,2)+"."+klick2.substr(4,2)+"."+klick2.substr(0,4);
      for (d=0; d< dat_liste.length; d++) { 
	if (dat_liste[d] != "" && (dat_liste[d] >= klick2 && dat_liste[d] <= klick1)) { 
	  document.getElementById(dat_liste[d]).className = "aktiv";  
	}
      }
    }
    return false;

   }
   if (typeof klick1 != 'undefined' && typeof klick2 != 'undefined') {
    klick1 = klick2;
    klick2 = tdid;

    for (d=0; d< dat_liste.length; d++) { if (dat_liste[d] != "") { document.getElementById(dat_liste[d]).className = "tag"; } }
    if (klick1 < klick2) {
      document.getElementsByName(feld1)[0].value = klick1.substr(6,2)+"."+klick1.substr(4,2)+"."+klick1.substr(0,4);
      document.getElementsByName(feld2)[0].value = klick2.substr(6,2)+"."+klick2.substr(4,2)+"."+klick2.substr(0,4);
      for (d=0; d< dat_liste.length; d++) {
        if (dat_liste[d] != "" && (dat_liste[d] >= klick1 && dat_liste[d] <= klick2)) {
          document.getElementById(dat_liste[d]).className = "aktiv";
        }
      }
    } else {
      document.getElementsByName(feld2)[0].value = klick1.substr(6,2)+"."+klick1.substr(4,2)+"."+klick1.substr(0,4);
      document.getElementsByName(feld1)[0].value = klick2.substr(6,2)+"."+klick2.substr(4,2)+"."+klick2.substr(0,4);
      for (d=0; d< dat_liste.length; d++) {
        if (dat_liste[d] != "" && (dat_liste[d] >= klick2 && dat_liste[d] <= klick1)) {
          document.getElementById(dat_liste[d]).className = "aktiv";
        }
      }
    }
    return false;
   }

 }

}



function wochentag (inhalt) {
  qc_kal = qc_kal + "<td class='wt'>"+inhalt+"</td>\n";
}

function zelle(inhalt,idx,css) {
  if (inhalt != "") { 
     qc_kal = qc_kal + "<td class='"+css+"' id='"+idx+"' onclick=\"setzen('"+idx+"');\" onmouseover=\"this.className='"+css+"1';\" onmouseout=\"this.className=this.className.replace(/1/g, '');\">"+inhalt+"</td>\n"; 
  } else {
     qc_kal = qc_kal + "<td class='td' id='"+idx+"'>"+inhalt+"</td>\n"; 
  }
}

function write_monat(m,j) {
  return  monatsname[m - 1]+" "+j;
}





