
//==================================================================================
//==================================================================================
//
// KALENDER-MODUL Projektbezogene Methoden und Objekte
// OO-PROGRAMMIERUNG
// AUTOR: DF
// ERSTELLT: 05.04.2004
//
//==================================================================================
//==================================================================================

// ============================================================
// Klasse Calendar
// ============================================================

// ------------------------------------------------------------
// Private Klasseneigenschaften
// ------------------------------------------------------------

Calendar._htmlRoot = "/frontend";

// ------------------------------------------------------------
// Private Instanzmethoden
// ------------------------------------------------------------

// -------------------------------------------
// _drawMonthPeriod()
// -------------------------------------------
//
// Beschreibung:
// -------------
// Methode blätter Calendar in die Zukunft
//
// Beispiel:
// ---------
// _drawMonthPeriod();
//

Calendar.prototype._drawMonthPeriod = function() {
  var html = '';
  var heute = Calendar.createSystemDate();
  if (this.viewType() == 'Eyecatcher'){
  // Eyecatcher-Ansicht
    html += '<div id="'+ this.id() +'">';
    html += '<div class="Calendar-Eyecatcher">';
    html += '<div class="CalendarFrame">';
    html += '<div>';
    html += '<table border="0" cellpadding="0" cellspacing="0" class="CalendarNavigation-Eyecatcher">';
    html += '<tr>';
    html += '<td class="CalendarNavigationButtonLeft">';
    html += '<a href="javascript:Calendar.getInstance(\''+ this.id() +'\').backward();" title="Monat zurück"><img src="' + Calendar._htmlRoot + '/resource/calendar/graphic/button_left.gif" border="0"/></a><br />';
    html += '</td>';
    html += '<td class="CalendarNavigationPull-Eyecatcher">';
    html += '<a href="javascript:submitEyecatcherCalenderMonth_'+ this.id() +'(\''+ this.id() + '\', \''+ DateProperties.formatDatum(DateProperties.getMonatAnfangVonDatum(this.date()), "yyyy-mm-dd") +'\', \''+ DateProperties.formatDatum(DateProperties.getMonatEndeVonDatum(this.date()), "yyyy-mm-dd") +'\')" class="CalendarMonth-Eyecatcher" title="Hier finden Sie alle Artikel für diesen Monat.">'+ DateProperties.monatNameKurz(this.date().getMonth()) + '</a> ' + this.date().getFullYear() + '<br/>';
    html += '</td>';
    html += '<td class="CalendarNavigationButtonRight">';
    html += '<a href="javascript:Calendar.getInstance(\''+ this.id() +'\').forward();" title="Monat vor"><img src="' + Calendar._htmlRoot + '/resource/calendar/graphic/button_right.gif" border="0"/></a><br />';
    html += '</td>';
    html += '</tr>';
    html += '</table>';
    html += '</div>';
    html += '<table border="0" cellpadding="0" cellspacing="0" class="CalendarDays-Eyecatcher">';
    html += '<tr>';
    /*
    html += '<td class="CalendarDay"><br /></td>';
    */
      for (var m=1; m<8; m++){
        html += '<td class="CalendarDay-Eyecatcher">';
          html += '<div class="CalendarDayHeadContent">';
            if (m < 7){
              html += DateProperties.wochenTageNameKurz(m) + '<br />';
            } else {
              html += DateProperties.wochenTageNameKurz(0) + '<br />';
            }
          html += '</div>';
        html += '</td>';
      }
    html += '</tr>';

    var kw = this.listTag()[0].properties().kw();
    var kwS = [];
    kwS.push(this.listTag()[0].properties().kw());
    for (var k=0; k<this.listTag().length; k++){
      if (kw != this.listTag()[k].properties().kw()){
        kwS.push(this.listTag()[k].properties().kw());
        kw = this.listTag()[k].properties().kw();
      }
    }

    for (var i=0; i<kwS.length; i++){
      html += '<tr>';
      for (var ii=1; ii<8; ii++){
        /*
        if (ii==1){
          html += '<td class="CalendarKW">';
          html += '<div class="CalendarKW">';
          html += '<a class="CalendarKW" style="color: #ffffff;">';
          html += kwS[i];
          html += '</a>';
          html += '</div>';
          html += '</td>';
        } 
        */
        html += '<td class="CalendarDay-Eyecatcher">';
          if (ii<6){
            html += '<div class="CalendarDayContent">';
          } else {
            html += '<div class="CalendarDayContentWE">';
          }
          var leer = true;
          for (var iii=0; iii<this.listTag().length; iii++){
            if ((this.listTag()[iii].properties().nameKey() == ii || (this.listTag()[iii].properties().nameKey() == 0 && ii==7 )) && (this.listTag()[iii].properties().kw() == kwS[i])){
              //alert(this.listTag()[iii].properties().kw() + ' = ' + i);
              var styleAtt = 'CalendarDay-Eyecatcher';
              var aTitle = DateProperties.formatDatum(this.listTag()[iii].datum(), 'dd.mm.yyyy') + ', '+ this.listTag()[iii].properties().kw() +'.KW';
              if (this.listTag()[iii].datum().toString() == heute.toString()){
                styleAtt = 'CalendarDayNow-Eyecatcher';
              } else if (this.listTag()[iii].properties().feierTag() != undefined){
                if (this.listTag()[iii].properties().feierTag().listBundesland()[this.bundesland().toString()] && this.listTag()[iii].properties().feierTag().statusKey()!=0){
                  styleAtt = 'CalendarDayCeleb-Eyecatcher';
                }  
                aTitle += ', ' + this.listTag()[iii].properties().feierTag().name();
              }
              html += '<a href="javascript:submitEyecatcherCalenderDay_'+ this.id() +'(\''+ this.id() +'\', \''+ DateProperties.formatDatum(this.listTag()[iii].datum(), "yyyy-mm-dd") +'\');" class="'+ styleAtt +'" title="'+ aTitle +'">';
              html += this.listTag()[iii].datum().getDate() + '<br />\n';
              html += '</a>';
              leer = false;
            }
          }
          if (leer){
            html += '<a class="CalendarDay-Eyecatcher"><br /></a>';
          }
        html += '</div>';
        html += '</td>';
      }
      html += '</tr>';
    }
    html += '</table>';
    html += '</div>';
    html += '</div>';
    html += '</div>';
  } else {
  // Standard-Ansicht
    html += '<div id="'+ this.id() +'">';
    html += '<div class="Calendar">';
    html += '<div class="CalendarFrame">';
    html += '<div>';
    html += '<table border="0" cellpadding="0" cellspacing="0" class="CalendarNavigation">';
    html += '<tr>';
    html += '<td class="CalendarNavigationButtonLeft">';
    html += '<a href="javascript:Calendar.getInstance().backward();" title="Monat zurück"><img src="' + Calendar._htmlRoot + '/resource/calendar/graphic/button_left.gif" border="0"/></a><br />';
    html += '</td>';
    html += '<td class="CalendarNavigationPull">';
    html += '<select name="month" class="CalendarNavigationSelector" onchange="Calendar.getInstance().navigationMonth(this.options[this.selectedIndex].value);">';
      for (var o=0; o<12; o++){
        var optSelected = '';
        if (o == this.date().getMonth()){
          optSelected = ' selected="1"';
        }
        html += '<option value="'+ o +'"'+ optSelected +'>' + DateProperties.monatNameKurz(o) +'</option>';
      }
    html += '</select>';
    html += '</td>';
    html += '<td class="CalendarNavigationPull">';
    html += '<select name="year" class="CalendarNavigationSelector" onchange="Calendar.getInstance().navigationYear(this.options[this.selectedIndex].value);">';
      var past = parseFloat(new Date().getFullYear() - 50);
      var future = parseFloat(new Date().getFullYear() + 50);
      for (var y=past; y<future; y++){
        var optSelected = '';
        if (y == this.date().getFullYear()){
          optSelected = ' selected="1"';
        }
        html += '<option value="'+ y +'"'+ optSelected +'>' + y +'</option>';
      }
    html += '</select>';
    html += '</td>';
    html += '<td class="CalendarNavigationButtonRight">';
    html += '<a href="javascript:Calendar.getInstance().forward();" title="Monat vor"><img src="' + Calendar._htmlRoot + '/resource/calendar/graphic/button_right.gif" border="0"/></a><br />';
    html += '</td>';
    html += '</tr>';
    html += '</table>';
    html += '</div>';
    html += '<table border="0" cellpadding="0" cellspacing="0" class="CalendarDays">';
    html += '<tr>';
    html += '<td class="CalendarDay"><br /></td>';
      for (var m=1; m<8; m++){
        html += '<td class="CalendarDay">';
          html += '<div class="CalendarDayHeadContent">';
            if (m < 7){
              html += DateProperties.wochenTageNameKurz(m) + '<br />';
            } else {
              html += DateProperties.wochenTageNameKurz(0) + '<br />';
            }
          html += '</div>';
        html += '</td>';
      }
    html += '</tr>';

    var kw = this.listTag()[0].properties().kw();
    var kwS = [];
    kwS.push(this.listTag()[0].properties().kw());
    for (var k=0; k<this.listTag().length; k++){
      if (kw != this.listTag()[k].properties().kw()){
        kwS.push(this.listTag()[k].properties().kw());
        kw = this.listTag()[k].properties().kw();
      }
    }

    for (var i=0; i<kwS.length; i++){
      html += '<tr>';
      for (var ii=1; ii<8; ii++){
        if (ii==1){
          html += '<td class="CalendarKW">';
          html += '<div class="CalendarKW">';
          html += '<a class="CalendarKW" style="color: #ffffff;">';
          html += kwS[i];
          html += '</a>';
          html += '<div>';
          html += '</td>';
        } 
        html += '<td class="CalendarDay">';
          if (ii<6){
            html += '<div class="CalendarDayContent">';
          } else {
            html += '<div class="CalendarDayContentWE">';
          }
          var leer = true;
          for (var iii=0; iii<this.listTag().length; iii++){
            if ((this.listTag()[iii].properties().nameKey() == ii || (this.listTag()[iii].properties().nameKey() == 0 && ii==7 )) && (this.listTag()[iii].properties().kw() == kwS[i])){
              //alert(this.listTag()[iii].properties().kw() + ' = ' + i);
              var styleAtt = 'CalendarDay';
              var aTitle = DateProperties.formatDatum(this.listTag()[iii].datum(), 'dd.mm.yyyy') + ', '+ this.listTag()[iii].properties().kw() +'.KW';
              if (this.listTag()[iii].datum().toString() == heute.toString()){
                styleAtt = 'CalendarDayNow';
              } else if (this.listTag()[iii].properties().feierTag() != undefined){
                if (this.listTag()[iii].properties().feierTag().listBundesland()[this.bundesland().toString()] && this.listTag()[iii].properties().feierTag().statusKey()!=0){
                  styleAtt = 'CalendarDayCeleb';
                }  
                aTitle += ', ' + this.listTag()[iii].properties().feierTag().name();
              }
              html += '<a href="javascript:dialogContext.callback(\''+ DateProperties.formatDatum(this.listTag()[iii].datum(), "dd.mm.yyyy") +'\');" class="'+ styleAtt +'" title="'+ aTitle +'">';
              html += this.listTag()[iii].datum().getDate() + '<br />\n';
              html += '</a>';
              leer = false;
            }
          }
          if (leer){
            html += '<a class="CalendarDay"><br /></a>';
          }
        html += '</div>';
        html += '</td>';
      }
      html += '</tr>';
    }
    html += '</table>';
    html += '</div>';
    html += '</div>';
  }  
  return html;
}

// ------------------------------------------------------------
// Öffentliche Instanzmethoden
// ------------------------------------------------------------

Calendar.prototype._drawDayPeriod = function() {
  var html = '';
  var heute = Calendar.createSystemDate();
  var day = this.listTag()[0];
  html += '<div id="'+ this.id() +'">';
  html += '<table border="0" cellspacing="0" cellpadding="0">\n';
  html += '<tr>\n';
  html += '<td>\n';
  html += '<table border="0" cellspacing="0" cellpadding="0">\n';
  html += '<tr>\n';
  html += '<td>\n';
  html += '<table border="0" cellspacing="2" cellpadding="0" style="width: 96px;">\n';
  html += '<tr>\n';
  html += '<td class="kalendertabelle">\n';
  html += day.properties().name() + '<br />\n';
  html += '</td>\n';
  html += '</tr>\n';
  html += '<tr>\n';
  html += '<td>\n';
  html += '<table border="0" cellspacing="0" cellpadding="0">\n';
  html += '<tr>\n';
  html += '<td>\n';
  html += '<a href="javascript:Calendar.getInstance(\''+ this.id() +'\').backward();"><img src="' + Calendar._htmlRoot + '/resource/calendar/graphic/button_zurueck_.gif" style="width: .9em; height: 2.8em;" alt="" title="" /></a><br />\n';
  html += '</td>\n';
  html += '<td>\n';
  html += '<img src="' + Calendar._htmlRoot + '/resource/calendar/graphic/trans.gif" style="width:1px; height: 1px;" alt="" title="" /><br />\n';
  html += '</td>\n';
  html += '<td>\n';
  html += '<table border="0" cellspacing="0" cellpadding="0" style="width: 100%; height: 36px;">\n';
  html += '<tr>\n';
  html += '<td>\n';
  html += '<img src="' + Calendar._htmlRoot + '/resource/calendar/graphic/bg_balken_datum.gif" style="width: 70px; height: 1px;" alt="" title="" /><br />\n';
  html += '</td>\n';
  html += '</tr>\n';
  html += '<tr>\n';
  html += '<td class="kalendertabelle-datum">\n';
  html += '<a href="'+ Calendar.getSearchFormURLDay(day.properties().datum()) +'">'+ day.properties().datum().getDate() + '.</a><br />\n';
  html += '</td>\n';
  html += '</tr>\n';
  html += '<tr>\n';
  html += '<td>\n';
  html += '<img src="' + Calendar._htmlRoot + '/resource/calendar/graphic/bg_balken_datum.gif" style="width: 70px; height: 1px;" alt="" title="" /><br />\n';
  html += '</td>\n';
  html += '</tr>\n';
  html += '</table>\n';
  html += '</td>\n';
  html += '<td>\n';
  html += '<img src="' + Calendar._htmlRoot + '/resource/calendar/graphic/trans.gif" style="width:1px; height: 1px;" alt="" title="" /><br />\n';
  html += '</td>\n';
  html += '<td>\n';
  html += '<a href="javascript:Calendar.getInstance(\''+ this.id() +'\').forward();"><img src="' + Calendar._htmlRoot + '/resource/calendar/graphic/button_vor_.gif" style="width: .9em; height: 2.8em;" alt="" title="" /></a><br />\n';
  html += '</td>\n';
  html += '</tr>\n';
  html += '</table>\n';
  html += '</td>\n';
  html += '</tr>\n';
  html += '<tr>\n';
  html += '<td class="kalendertabelle">\n';
  html += '<span class="kalendertabelle-monat">'+ day.properties().month() + '&#160;' + day.properties().year() + '</span><br />\n';
  html += day.properties().kw() + '. KW<br />\n';
  html += '</td>\n';
  html += '</tr>\n';
  html += '</table>\n';
  html += '</td>\n';
  html += '</tr>\n';
  html += '</table>\n';
  html += '</td>\n';
  html += '</tr>\n';
  html += '</table>\n';
  html += '</div>\n';

  return html;
}

Calendar.prototype._drawDayIntervallPeriod = function() {
  var html = '';
  var heute = Calendar.createSystemDate();
  html += '<div id="'+ this.id() +'">';
  
  html += '<div class="kalenderanzeige">\n';
  var anzeige = this.listTag()[0].properties()._getMonth();
  if (this.listTag()[0].properties()._getMonth() != this.listTag()[this.listTag().length - 1].properties()._getMonth()){
    if (this.listTag()[0].properties().datum().getFullYear() != this.listTag()[this.listTag().length - 1].properties().datum().getFullYear()){
      anzeige += ' ' + this.listTag()[0].properties().datum().getFullYear();
    }
    anzeige += ' / ' + this.listTag()[this.listTag().length - 1].properties()._getMonth();
  }
  anzeige += ' ' + this.listTag()[this.listTag().length - 1].properties().datum().getFullYear();
  html += anzeige + '<br/>\n';
  html += '</div>\n';
  html += '<table border="0" cellspacing="0" cellpadding="0">\n';
  html += '<tr>\n';
  html += '<td>\n';

  html += '<table border="0" cellspacing="0" cellpadding="0">\n';
  html += '<tr>\n';
  html += '<td>\n';

  html += '<table border="0" cellspacing="0" cellpadding="0">\n';
  html += '<tr>\n';
  html += '<td>\n';
  html += '<a href="javascript:Calendar.getInstance(\''+ this.id() +'\').backward();"><img src="' + Calendar._htmlRoot + '/resource/calendar/graphic/button_zurueck_.gif" style="width: .9em; height: 2.8em;" alt="" title="" /></a><br />\n';
  html += '</td>\n';
  html += '<td>\n';
  html += '<img src="' + Calendar._htmlRoot + '/resource/calendar/graphic/trans.gif" style="width:1px; height: 1px;" alt="" title="" /><br />\n';
  html += '</td>\n';
  html += '<td>\n';
  html += '<table border="0" cellspacing="0" cellpadding="0">\n';
  html += '<tr>\n';
  html += '<td style="border-top: 1px solid #5F72AE; font-size: 1px; line-height: 1px; height: 1px;">\n';
  //html += '<img src="' + Calendar._htmlRoot + '/resource/calendar/graphic/bg_balken_hor_kalender.gif" style="width: 530px; height: 3px;" alt="" title="" /><br />\n';
  html += '<br/>';
  html += '</td>\n';
  html += '</tr>\n';
  html += '<tr>\n';
  html += '<td>\n';

  html += '<table border="0" cellspacing="0" cellpadding="0">\n';
  html += '<tr>\n';
  
  var row1 = '';
  var row2 = '';
  for (var i=0; i<this.listTag().length; i++){
    var day = this.listTag()[i]; 
    if (i == 0 || day.properties().nameKey() == 1){
      html += '<td>\n';
      html += '<table border="0" cellspacing="0" cellpadding="2">\n';
      html += '<tr>\n';
    }
    
    // Day-Name
    var className = 'kalender-wochentag';
    if (heute.toString() == day.datum().toString()){
      className += '-aktiv';
    }
    row1 += '<td class="'+ className +'">\n';
    className = 'plain';
    if (day.properties().nameKey() == 0){
      className = 'rot';
    }
    var title = ''
    if (day.properties().feierTag() != undefined && day.properties().feierTag().listBundesland()[this.bundesland().toString()]){
      className = 'green';
      title = day.properties().feierTag().name() + ', ';
    }
    title += DateProperties.formatDatum(day.datum(), 'dd.mm.yyyy');
    row1 += '<a href="'+ Calendar.getSearchFormURLDay(day.properties().datum()) +'" class="'+ className +'" title="'+ title +'">'+ DateProperties.wochenTageNameKurz(day.properties().nameKey()) +'</a><br />\n';
    row1 += '</td>\n';
    
    // Date
    className = 'kalender-datum';
    if (heute.toString() == day.datum().toString()){
      className += '-aktiv';
    }
    row2 += '<td class="'+ className +'">\n';
    className = 'plain';
    if (day.properties().nameKey() == 0){
      className = 'rot';
    }
    var title = '';
    if (day.properties().feierTag() != undefined && day.properties().feierTag().listBundesland()[this.bundesland().toString()]){
      className = 'green';
      title = day.properties().feierTag().name() + ', ';
    }
    title += DateProperties.formatDatum(day.datum(), 'dd.mm.yyyy');
    row2 += '<a href="'+ Calendar.getSearchFormURLDay(day.properties().datum()) +'" class="'+ className +'" title="'+ title +'">'+ day.properties().datum().getDate() +'</a><br />\n';
    row2 += '</td>\n';

    if (day.properties().nameKey() == 0 || i==(this.listTag().length -1)){
      html += row1;
      html += '</tr>\n';
      html += '<tr>\n';
      html += row2;
      html += '</tr>\n';
      html += '</table>\n';
      html += '</td>\n';
      row1 = '';
      row2 = '';
    } 
    if (day.properties().nameKey() == 0 && i!=(this.listTag().length -1)){
      html += '<td>\n';
      html += '<img src="' + Calendar._htmlRoot + '/resource/calendar/graphic/bg_balken_ver_kalender.gif" style="width: 5px; height: 34px;" alt="" title="" /><br />\n';
      html += '</td>\n';
    }                             
  }

  html += '</tr>\n';
  html += '</table>\n';

  html += '</td>\n';
  html += '</tr>\n';
  html += '<tr>\n';
  html += '<td style="border-top: 1px solid #5F72AE; font-size: 1px; line-height: 1px; height: 1px;">\n';
  //html += '<img src="' + Calendar._htmlRoot + '/resource/calendar/graphic/bg_balken_hor_kalender.gif" style="width: 530px; height: 3px;" alt="" title="" /><br />\n';
  html += '<br/>';
  html += '</td>\n';
  html += '</tr>\n';
  html += '</table>\n';
  html += '</td>\n';
  html += '<td>\n';
  html += '<img src="' + Calendar._htmlRoot + '/resource/calendar/graphic/trans.gif" style="width:1px; height: 1px;" alt="" title="" /><br />\n';
  html += '</td>\n';
  html += '<td>\n';
  html += '<a href="javascript:Calendar.getInstance(\''+ this.id() +'\').forward();"><img src="' + Calendar._htmlRoot + '/resource/calendar/graphic/button_vor_.gif" style="width: .9em; height: 2.8em;" alt="" title="" /></a><br />\n';
  html += '</td>\n';
  html += '</tr>\n';

  html += '</table>\n';

  html += '</td>\n';
  html += '</tr>\n';
  html += '</table>\n';

  html += '</td>\n';
  html += '</tr>\n';
  html += '</table>\n';
  html += '</div>\n';
  return html;
}

// ------------------------------------------------------------
// Öffentliche Klasseneigenschaften
// ------------------------------------------------------------

// ------------------------------------------------------------
// Private Klassenmethoden
// ------------------------------------------------------------

// ------------------------------------------------------------
// Öffentliche Klassenmethoden
// ------------------------------------------------------------

Calendar.getSearchFormURLDay = function(date){
  var url = Calendar.searchFormURL;
  if(date){
    var dayStart = date;
    var dayEnd = new Date(new Date().setTime(date.getTime() + 86400000));
    url += '&Document.Idx.Ende-von=' + Calendar.getCMSDate(dayStart) + '&Template.Variant=day';
  }
  return url;
}

Calendar.getCMSDate = function(date){
  var _year = date.getFullYear();
  var _month = date.getMonth();
  _month++;
  if (_month < 10){
    _month = '0' + _month;
  }
  var _day = date.getDate();
  if (_day < 10){
    _day = '0' + _day;
  }
  var _str = _year + '-' + _month + '-' + _day + ' 00:00:00';
  return _str;
}


/////////////////////////////////////////////////////////////////////////////////////////////////////////////
