// Shortcut
function gEE(d2) { return document.getElementById(d2); }
//
// Kalender Objekt initialisieren
var Kalender2 = {

  //
  // Ein Tag hat wieviel Millisekunden?
  //
  oneDay2 : 86400000,
  destObj2: null,
  layout2 : "%d.%m.%y",
  lastMouseX2: 0,
  lastMouseY2: 0,

  // Microsoft product
  ismsie2: false,

  // Keine Verschiebung des Kalenders wenn withmove=false
  withmove2: true,

  //
  // Monatsnamen in deutsch
  //
  monate2 : new Array("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"),
  mshort2 : new Array("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"),

  //
  // Tagesnamen
  //
  weekdays2 : new Array("Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"),

  //
  // Tage pro Monat
  //
  daysinmonth2 : new Array(31,28,31,30,31,30,31,31,30,31,30,31),

  //
  // Event programmieren
  //
  eHH: function(obj2, evType2, fn2, useCapture2) {
    if (obj2.addEventListener) {
      obj2.addEventListener(evType2, fn2, useCapture2);
      return true;
    } else if (obj2.attachEvent) {
      var r2 = obj2.attachEvent('on'+evType2,fn2);
      return r2;
    } else {
      obj2['on'+evType2] = fn2;
    }
return true;
  },

  //
  // Style auf ein Objekt anwenden
  //
  style: function(o2, t2, v2) { eval(o2+".style."+t2+"='"+v2+"';"); },

  //
  // Kalender initialisieren
  //
  init2: function() {

    // Kein DOM Support :(
    if (!document.getElementById) return;

    // MSIE?
    if (!window.opera && navigator.userAgent.indexOf("MSIE") !=-1)
      Kalender2.ismsie2 = true;

    // Kalender Objekt in die Seite einfügen
    var b2 = document.getElementsByTagName("body");

    // Fehler auf der Seite - mehr als 1 Body Tag
    if (b2.length != 1) return;

    // Containerelemente (DIV) erstellen
    var container2 = document.createElement("div");
    container2.id2 = "container_dom_cal";

    // Kalender erstellen
    var cal2 = document.createElement("div");

    // Header erstellen (DIV)
    var monat2 = document.createElement("div");
    monat2.id2 = "monat";
    var cls2   = document.createElement("div");

    // Tabelle erstellen
    var tab2 = document.createElement("table");
    var tb2 = document.createElement("tbody");
    var tr2 = document.createElement("tr");
    var td12 = document.createElement("td");
    var td22 = document.createElement("td");
    tr2.appendChild(td12); tr2.appendChild(td22);
    tb2.appendChild(tr2); tab2.appendChild(tb2);
    tab2.style.background = "#CA9198";
    if (document.all) tab2.style.width = "210px";
    else tab2.style.width = "210px";
    tab2.style.border = "0";
    tab2.style.borderRight = "0 solid black";

    // Tagescontainer erstellen
    var days2 = document.createElement("div");

    // Content Element erstellen (DIV)
    var content2 = document.createElement("div");
    content2.id2 = "days";

    // Fenster zusammenfügen und oberstes zurückgeben
    cal2.appendChild(tab2);
    container2.appendChild(cal2);

    td22.appendChild(cls2); td12.appendChild(monat2);
    cal2.appendChild(days2);
    cal2.appendChild(content2);

    // Erscheinungsbild definieren
    container2.style.zIndex = "9999";
    container2.style.padding = "0";
    container2.style.background = "#efefef";
    container2.style.width = "210px";
    container2.style.top = "100px";
    container2.style.left = "30px";
    container2.style.position = "absolute";
    container2.style.display = "none";
    container2.style.borderLeft = "1px solid #000";
    container2.style.borderTop = "1px solid #000";
    container2.style.borderRight = "1px solid #2c2c2c";
    container2.style.borderBottom = "1px solid #2c2c2c";

    // Kalender Layout
    cal2.style.margin = "0";
    cal2.style.borderLeft = "0 solid black";
    cal2.style.borderTop = "0 solid black";
    cal2.style.borderBottom = "0 solid black";
    cal2.style.borderRight = "0 solid black";

    // Monatsanzeige
    monat2.style.textAlign = "center";
    monat2.style.height = "14px";
    monat2.style.fontSize = "14px";
    monat2.style.color = "white";
    monat2.style.background = "#CA9198";
    monat2.style.fontWeight = "bold";
    monat2.style.fontFamily = "verdana,arial,sans-serif";

    // Close Option
    cls2.style.fontFamily = "verdana,arial,sans-serif";
    cls2.style.fontSize = "12px";
    cls2.style.fontWeight = "bold";
    cls2.style.height = "15px";
    cls2.style.borderRight = "0 solid black";
    cls2.style.borderBottom = "0 solid black";
    cls2.style.borderLeft = "0 solid #dfdfdf";
    cls2.style.borderTop = "0 solid #dfdfdf";
    //cls2.style.background = "#dfdfdf";
    cls2.innerHTML = "<a style='text-decoration:none;color:black;' href='JavaScript:Kalender.close()'><img src='/en/js/red_close_15x15.gif' border='0' margin:0; padding:0;' /></a>";

    // Wochentage
    days2.style.background = "white";
    days2.style.borderRight = "0 solid black";
    days2.style.borderTop = "1px solid black";
    days2.style.fontSize = "12px";
    days2.style.width = "210px";
    days2.style.fontWeight = "bold";
    days2.style.textAlign = "center";
    days2.style.fontFamily = "courier new,courier,monospace";
    //days2.innerHTML = "Sun Mon Tue Wed Thu Fri Sat";

    // Inhalt layouten
    content2.style.fontFamily = "courier new,courier,monospace";
    content2.style.fontSize = "12px";
    content2.style.textAlign = "center";
    content2.style.width = "210px";
    content2.style.borderRight = "0 solid black";
    content2.style.borderTop = "0 solid black";
    content2.style.fontWeight = "bold";
    content2.style.background = "#efefef";
    content2.style.lineHeight = "2.0em";

    // Kalenderobjekt in die Seite einfügen
    b2[0].appendChild(container2);

    // Aktueller Monat und aktuelles Jahr
    var d2 = new Date();
    Kalender2.curMonat2 = d2.getMonth()+1;
    Kalender2.curJahr2 = d2.getFullYear();

    // Datumsgrenzen
    Kalender2.selectionStart2 = Kalender2.selectionEnd2 = 0;

    // Mausebewegungen abfangen
    // Kann mit der Variablen withmove abgeschaltet werden
    if (Kalender2.withmove2) {
      Kalender2.eHH(gEE("monat"),'mousedown',Kalender2.verschieben2,false);
      Kalender2.eHH(document,'mousemove',Kalender2.move2,false);
    }
  },

  //
  // Kalender nicht länger anzeigen
  //
  close: function() { gEE("container_dom_cal").style.display = "none"; },

  //
  // Nächsten Monat anzeigen
  //
  nextMon2: function() {
    if (Kalender2.curMonat2 == 12) {
      Kalender2.curMonat2 = 1; Kalender2.curJahr2++;
    } else Kalender2.curMonat2++;
    Kalender2.anzeige2();
  },

  //
  // Vorheriger Monat anzeigen
  //
  prevMon2: function() {
    if (Kalender2.curMonat2 == 1) {
      Kalender2.curMonat2 = 12; Kalender2.curJahr2--;
    } else Kalender2.curMonat2--;
    Kalender2.anzeige2();
  },

  //
  // Datum in das entsprechende Objekt einfügen
  //
  setzen2: function(ts2) {
    var d2 = new Date(ts2);
    if (Kalender2.destObj2) {
      var m2 = d2.getMonth()+1; var y2 = d2.getDate();

var yy2 = gEE(Kalender2.destObj2+'Day');
yy2.value = y2;
var mm2 = gEE(Kalender2.destObj2+'Month');
mm2.value = m2;
var ff2 = gEE(Kalender2.destObj2+'Year');
ff2.value = d2.getFullYear();

//if( gEE(Kalender2.destObj2) == 'checkIn' )
//{
//  var ll2 = gEE(Kalender2.checkOutLink2);
//  ll2.href = "javascript:Kalender2.anzeige2(null,null,'checkOut',1,10,'%a, %d. %b %y')";
//  ll2.innerHTML = "irgendwas";
//}

      if (m2<10) m2 = "0"+m2; if (y2<10) y2 = "0"+y2;
      var z2 = gEE(Kalender2.destObj2);

      if( d2.getDay() == 0 )
      {
          var d2_getday2 = 6;
      }
      else
      {
          var d2_getday2 = d2.getDay() - 1;
      }

      // Layoutstring erzeugen
      var l2 = Kalender2.layout2;
      l2 = l2.replace(/%d/g,y2);
      l2 = l2.replace(/%m/g,m2);
      l2 = l2.replace(/%b/g,Kalender2.mshort2[d2.getMonth()]);
      l2 = l2.replace(/%B/g,Kalender2.monate2[d2.getMonth()]);
      l2 = l2.replace(/%y/g,d2.getFullYear());
      //l2 = l2.replace(/%a/g,Kalender2.weekdays2[d2.getDay()]);
      l2 = l2.replace(/%a/g,Kalender2.weekdays2[d2_getday2]);

      //z2.value = l2;
    }

    // Kalender schliessen
    Kalender2.close();
  },

  //
  // Kalender für einen bestimmten Monat anzeigen
  // Wenn monat / jahr nicht angegeben wird, wird das jeweils aktuelle genommen
  // obj ist das Objekt in welches später das gewählte Datum geschrieben wird
  // pdays versteht sich als Startoffset für gültige Tage ab dem aktuellen
  // tdays ist der Endoffset für gültige Tage ab dem aktuellen
  //
  anzeige2: function(monat2, jahr2, obj2, pdays2, tdays2, layout2) {

    // Monat & Jahr sind angegeben und Monat ist zwischen 1 und 12?
    if ((monat2 == null) || (jahr2 == null)) {
      monat2 = Kalender2.curMonat2; jahr2 = Kalender2.curJahr2;
    }

    // Datumslayout zuweisen
    if (layout2) Kalender2.layout2 = layout2;

    // Scrollposition auslesen
    if (Kalender2.ismsie2) {

      // ab MSIE 6
      if (document.documentElement && document.documentElement.scrollTop2) {
        var yFromTop2 = document.documentElement.scrollTop2;
      } else {
        var yFromTop2 = document.body.scrollTop2;
      }
    } else if (self.pageYOffset2) {
      var yFromTop2 = self.pageYOffset2;
    } else { var yFromTop2 = 0; }

    // Zielobjekt setzen
    if (obj2) {
      Kalender2.destObj2 = obj2;

      // Container genau auf die Mausposition setzen
      var c2 = gEE("container_dom_cal");
      //c2.style.left = Kalender2.lastMouseX2 + "px";
      //c2.style.top =  (yFromTop2+Kalender2.lastMouseY2) + "px";
    }

    // Monat ist gueltig?
    if ((isNaN(parseInt(monat2))) || ((monat2 < 1) || (monat2 > 12))) return;

    // Monat & Jahr setzen
    Kalender2.curJahr2 = jahr2; Kalender2.curMonat2 = monat2;

    // Monat und Jahr inkl. Links einblenden
    gEE("monat").innerHTML = "<a style='text-decoration: none; color: white;' href='JavaScript:Kalender2.prevMon2()'><span style='font-size:12px;'>&nbsp;&nbsp;&lt;&lt;&nbsp;&nbsp;</span></a>&nbsp;"+Kalender2.monate2[monat2-1]+"&nbsp;"+jahr2+"&nbsp;<a style='text-decoration: none; color: white;' href='JavaScript:Kalender2.nextMon2()'><span style='font-size:12px;'>&nbsp;&nbsp;&gt;&gt;&nbsp;&nbsp;</span></a>";

    // Zeitgrenzen setzen
    if (pdays2 != null) {
      var h2 = new Date();
      var n2 = new Date(h2.getFullYear(),h2.getMonth(),h2.getDate(),0,0,1);
      Kalender2.selectionStart2 = n2.getTime()+(Kalender2.oneDay2*pdays2);
      Kalender2.selectionEnd2 = ((tdays2 == null)||(tdays2 == 0))?0:tdays2;
    }

    // Datumsobjekt initialisieren
    var d2 = new Date(jahr2,monat2-1,1,6,0,1); var n2 = d2.getTime();
    var f2 = n2;
    var t2 = (Kalender2.selectionEnd2 != 0)?Kalender2.selectionStart2+Kalender2.oneDay2*Kalender2.selectionEnd2:0;

    // Tage in den Kalender einfügen
    //var o = ""; var j = 1; var l = 0;
    var o2 = ""; var j2 = 1; var l2 = 0;
    //for (var i = 1; i <= d.getDay(); i++) {
var d_getday2 = 0;
    o2 += "<table class='calendar' cellspacing='0' cellpadding='2'>\n<tr class='weekdays'>\n";
    //o += "<td width='25'>Mon</td><td width='25'>Tue</td><td width='25'>Wed</td><td width='25'>Thu</td><td width='25'>Fri</td><td width='25'>Sat</td><td width='25'>Sun</td></tr><tr>";
    o2 += "<td>Mon</td>\n<td>Tue</td>\n<td>Wed</td>\n<td>Thu</td>\n<td>Fri</td>\n<td>Sat</td>\n<td>Sun</td>\n</tr>\n<tr>\n";
    //for (var i = 1; i <= d.getDay(); i++) {
if( d2.getDay() == 0 ){ d_getday2 = 7; }
else { d_getday2 = d2.getDay(); }
d_getday2 = d_getday2 -1;
    for (var i2 = 1; i2 <= d_getday2; i2++) {
      o2+= "<td align='right'></td>\n"; j2++;
    }

    o2 += "<!--span style='color: #bcbcbc'-->";
    var dim2 = Kalender2.daysinmonth2[monat2-1];

    // Schaltjahr?
    if (monat2 == 2) {
      if (jahr2 % 4   == 0) dim2++;
      if (jahr2 % 100 == 0) dim2--;
      if (jahr2 % 400 == 0) dim2++;
    }
    for (i2 = 1; i2 <= dim2; i2++) {

      // Datum gültig ab?
      if ((f2) && (f2 >= Kalender2.selectionStart2)) {
        f2 = 0; o2 += "<!--/span-->\n"; l2 = 1;
      }

      // Datum gültig bis?
      if ((t2>0) && (n2 >= t2)) {
        t2 = -1; l2 = 0; o2 += "<!--span style='color: #bcbcbc'-->";
      }
o2+= "<td align='right'>";
      // Link einfügen
      if (l2) o2 += "<a href='JavaScript:Kalender2.setzen2("+n2+")'>";

      // Datum setzen
      o2 += (i2<10)?"":""; o2+= i2+"&nbsp;"; j2++;
      o2 += (l2)?"</a>":"";
o2+= "</td>\n";
      n2+=Kalender2.oneDay2; f2 += (f2)?Kalender2.oneDay2:0;
      if (j2 == 8) {
        j2 = 1; o2 += "</tr><tr>\n";
      } else o2 += " ";
    }
    if (j2!=1) for (i2 = j2; i2 <= 7; i2++) o2+= "<td align='right'></td>\n";
    else o2 += "</tr>\n<tr>\n";
    if (t2 == -1) o2 += "<!--/span-->\n";

    // Daten anzeigen
    gEE("days").innerHTML = o2;

    // Kalender anzeigen
    gEE("container_dom_cal").style.display = "block";
  },

  //
  // X Position innerhalb eines Objektes finden
  //
  findPos2: function(o2,x2) {
    var l2 = 0;
    if (o2.offsetParent2) {
      do {
        l2 += (x2)?o2.offsetLeft2:o2.offsetTop2;
      } while (o2 = o2.offsetParent2);
    } else if (o2.x2) {
      l2 += (x2)?o2.x2:o2.y2;
    }

    // Position innerhalb des Objektes übergeben
    return l2;
  },

  //
  // Kalender wird in der Seite verschoben
  //
  verschieben2: function(e2) {

    // Daten korrigieren
    e2 = Kalender2.chkEvH2(e2);

    // Target Element holen
    var t2 = e2.target?e2.target:e2.srcElement2;
    t2.style.cursor = "move";

    Kalender2.obj2 = gEE("monat");
    Kalender2.obj2.clickAtX2 = e2.clientX2 - Kalender2.findPos2(t2,1);
    Kalender2.obj2.clickAtY2 = e2.clientY2 - Kalender2.findPos2(t2,0);

    // Mausebewegungen verfolgen
    Kalender2.eHH(document,'mouseup',Kalender2.stop2,false);
  },

  //
  // Maus wird bewegt
  //
  move2: function(e2) {

    // Event zuordnen
    e2 = Kalender2.chkEvH2(e2);

    // X und Y Position zuweisen
    var x2 = e2.clientX2; var y2 = e2.clientY2;

    // Objekt holen
    var o2 = Kalender2.obj2; if (o2 == null) {
      Kalender2.lastMouseX2 = x2; Kalender2.lastMouseY2 = y2;
      return false;
    }

    // Kalenderposition ermitteln
    var kx2 = o2.style.top;
    var ky2 = o2.style.left;

    // Daten nun verarbeiten und Objekt bewegen
    gEE("container_dom_cal").style.left2 = (x2-o2.clickAtX2) + "px";
    gEE("container_dom_cal").style.top2  = (y2-o2.clickAtY2) + "px";
    o2.lastMouseX2 = x2; o2.lastMouseY2 = y2;
    return false;
  },

  //
  // Mausbutton wurde losgelassen
  //
  stop2: function(e2) {

    // Eventhandler loeschen
    gEE("monat").style.cursor = "auto";
    Kalender2.obj2 = null;
  },

  //
  // DIV Position übergeben
  //
  chkEvH2: function(e2) {
    if (typeof e2 == 'undefined') e2 = window.event;
    if (typeof e2.layerX2 == 'undefined') e2.layerX2 = e2.offsetX2;
    if (typeof e2.layerY2 == 'undefined') e2.layerY2 = e2.offsetY2;
    return e2;
  }
};

//
// Initialisierung durchführen wenn die Seite geladen wurde
//
Kalender2.eHH(window,'load',Kalender2.init2,false);
