<?php
/**
 * @copyright (c) Kufer Software GmbH, Loisachstrasse 4, D-84453 Mühldorf
 */






class NormalPartialSight extends NormalSight
{
  public $addparamsforward;  
  public $addparamsbackward; 
  public $firstid;           
  
  
  public $previousid;
  
  
  public $rowcount;
  public $forward;           
  
  public $seitenBlaetternzahl = 9;
  
  public $seitenind_anfary;
  public $seitenind_endary;
  public $aktSeite;          
  public $anzSeiten;         
  
  
  public $backlink;
  
  public $printwahl = false;
  
  public $printcount;
  public $printproseite; 
  
  public $druckvon;
  public $druckbis;
  
  public $searchkurslink;
  
  public $searchraumlink;

  
  public function initiate()
  {
    parent::initiate();
    $this->firstid = '';
    
    
    
    $this->searchkurslink = '';
    if ($this->isSearchKursNeeded()) {
      $this->searchkurslink = '&searchkurs=1';
    }
    
    $this->searchraumlink = '';
    if ($this->isSearchRaumNeeded()) {
      $this->searchraumlink = '&searchraum=1';
    }
  }

  
  public function setNoSeitenBuild()
  {
    
  }

  
  public function createSight()
  {
    if ($this->printmodus) {
      
      
      if (!empty($this->printcount) && !empty($this->printproseite)) {
        if (($this->printcount > $this->printproseite) && ($this->printwahl == false)) {
          $this->clear();
          $this->sight = $this->getDruckseitenAuswahl();
        } else {
          if ($this->printwahl) {
            
            
            
            switch (SessionOperations::getVarValueWTIntern('druckseiten_modus')) {
                      case 'aktuell':
                        
                        $this->setNoSeitenBuild();
                      NormalSight::createSight();
                        break;
                      case 'alle':
                        
                        $this->firstid = '';
                        $this->forward = true;
                        $this->rowcount = $this->printcount;
                        $this->setNoSeitenBuild();
                          NormalSight::createSight();
                        break;
                      case 'anzahl':
                        $this->druckvon = PostOperations::getVarvalue('druck_von');
                        $this->druckbis = PostOperations::getVarvalue('druck_bis');
                        $druckparams = $this->getDruckseitenParams($this->druckvon, $this->druckbis);
                        
                        
                        if (isset($druckparams)) {
                          
                          
                          
                          
                          $this->firstid = $druckparams['firstid'];
                          $this->forward = $druckparams['forward'];
                          $this->rowcount = $druckparams['printcount'];
                          $this->setNoSeitenBuild();
                          NormalSight::createSight();
                        }
                      break;
            } 
          } 
          else { 
                
                
            $this->firstid = '';
            $this->forward = true;
            $this->rowcount = $this->printcount;
            $this->setNoSeitenBuild();
            NormalSight::createSight();
          }
        } 
      }
      else { 
      
      
        NormalSight::createSight();
      } 
    } 
    else {
      NormalSight::createSight();
    }
  }

  
  public function getDruckseitenAuswahl()
  {
    $str = "<p class='druckwahl'> Auswahl der Anzahl der Druckseiten </p>";
    $str .= "<form class = 'druckseiten_wahl' action='" . CleanOperations::cleanStringForHtml($this->backlink) . "' onSubmit='return checkPrintInput(" . CleanOperations::cleanStringForJs(SessionOperations::getVarValueSuche('seitenanzahl')) . ")' name='Druckseitenform' method = 'POST'>";
    
    
    $druckseite = array('', '', '');
    if (SessionOperations::getVarValueWTIntern('druckseiten_modus') == 'aktuell') {
      $druckseite[0] = 'checked';
    } elseif (SessionOperations::getVarValueWTIntern('druckseiten_modus') == 'alle') {
      $druckseite[1] = 'checked';
    } elseif (SessionOperations::getVarValueWTIntern('druckseiten_modus') == 'anzahl') {
      $druckseite[2] = 'checked';
    }

    $str .= " <ul class='druckwahl'>" . BR
               . " <li class='druckwahl'><input type='radio'  name='druckseiten_modus'  value='aktuell' " . $druckseite[0] . ' />'
               . " <label for='druck_akt'>aktuelle Seite drucken</label></li>"
               . " <li class='druckwahl'><input type='radio'  name='druckseiten_modus'  value='alle' " . $druckseite[1] . ' />'
               . " <label for='druck_akt'>alle Seiten drucken</label></li>"
               . " <li class='druckwahl'><input type='radio'  name='druckseiten_modus'  value='anzahl' " . $druckseite[2] . ' />'
               . " <label for='druck_akt'>Seiten von "
               . " <input type='text'  id = 'druckseite' name='druck_von'  value='" . CleanOperations::cleanStringForHtml($this->druckvon) . "' maxlength = '4' /> bis "
               . " <input type='text'  id = 'druckseite' name='druck_bis'  value='" . CleanOperations::cleanStringForHtml($this->druckbis) . "' maxlength = '4' /> drucken</label></li>" . BR . BR
               . '</ul>';
    
    $str .= "<input type='image' title='Eingabe abschließen' src='layout/button_next.gif'>"
             . '</form>';

    return $str;
  }

  
  public function getDruckseitenParams($pDruckVon, $pDruckBis)
  {
    $druckseiten = array('firstid' => '', 'forward' => '', 'printcount' => '');
    
    
    
    
    
    if (($pDruckVon == 1) && ($pDruckBis == SessionOperations::getVarValueSuche('seitenanzahl'))) {
      $druckseiten['firstid'] = '';
      $druckseiten['forward'] = true;
      $druckseiten['printcount'] = $this->printcount;
    } elseif ($pDruckVon == 1) {
      
      
      $seitenindary = SessionOperations::getVarValueSuche('seitenindary');
      $druckseiten['firstid'] = $seitenindary['anf'][$pDruckBis]->value;
      $druckseiten['forward'] = false;
      $druckseiten['printcount'] = ($pDruckBis - $pDruckVon + 1) * $this->rowcount;
    } elseif ($pDruckBis == SessionOperations::getVarValueSuche('seitenanzahl')) {
      $seitenindary = SessionOperations::getVarValueSuche('seitenindary');
      $druckseiten['firstid'] = $seitenindary['end'][$pDruckVon - 2]->value;
      $druckseiten['forward'] = true;
      $druckseiten['printcount'] = $this->printcount - ($pDruckVon - 1) * $this->rowcount;
    } else { 
      $seitenindary = SessionOperations::getVarValueSuche('seitenindary');
      $druckseiten['firstid'] = $seitenindary['end'][$pDruckVon - 2]->value;
      $druckseiten['forward'] = true;
      $druckseiten['printcount'] = ($pDruckBis - $pDruckVon + 1) * $this->rowcount;
    }

    
    
    if (empty($druckseiten['firstid']) && empty($druckseiten['printcount'])) {
      return null;
    } else {
      return $druckseiten;
    }
  }

  
  public function getCount()
  {
    return 0;
  }

  
  public function getTableRow($rowindex = -1)
  {
    return NormalSight::getTableRow($rowindex);
  }

  
  public function isSearchKursNeeded()
  {
    return false;
  }

  
  public function isSearchRaumNeeded()
  {
    return false;
  }

  
  public function getFooterLink($beforeCount, $behindCount, $tmplastid)
  {
    
    
    $strLink = '';
    if ($beforeCount > 0) {
      $strLink .= "   <a href='" . CleanOperations::cleanStringForHtml($this->editformselfstr) . '?toolsection_id=' . CleanOperations::cleanInt($this->sightid) . '&tool_id=' . CleanOperations::cleanInt($this->toolid) . '&action=back&nr=' . CleanOperations::cleanStringForHtml($this->firstid) . CleanOperations::cleanStringForHtml($this->addparamsforward) . CleanOperations::cleanStringForHtml($this->searchkurslink) . "'><img src='layout/button_backward.gif' border='0' title='Zurückblättern'></a>\n";
    } else {
      $strLink .= "   <img src='layout/button_backw_transp.gif' border='0' title='Zurückblättern'>\n";
    }
    if ($behindCount > 0) {
      $strLink .= "   <a href='" . CleanOperations::cleanStringForHtml($this->editformselfstr) . '?toolsection_id=' . CleanOperations::cleanInt($this->sightid) . '&tool_id=' . CleanOperations::cleanInt($this->toolid) . '&action=vor&nr=' . CleanOperations::cleanStringForHtml($tmplastid) . CleanOperations::cleanStringForHtml($this->addparamsbackward) . CleanOperations::cleanStringForHtml($this->searchkurslink) . "'><img src='layout/button_forward.gif' border='0' title='Weiterblättern'></a>\n";
    } else {
      $strLink .= "  <img src='layout/button_forw_transp.gif' border='0' title='Weiterblättern'>\n";
    }

    return $strLink;
  }

  public function getFooter()
  {
    
    if ($this->printmodus) {
      return '';
    }
    $str = '';

    
    
    if ($this->firstid != '' && isset($this->dataary[0])) {
      
      
      
      $this->previousid = $this->firstid;
      $this->firstid = $this->dataary[0]->id;
    }
    
    if (($this->rowcount >= 1) && (count($this->dataary) >= 1)) {
      $tmplastid = $this->dataary[min($this->rowcount - 1, count($this->dataary) - 1)]->id;
    } else {
      $tmplastid = '';
    }

    
    
    $countBefore = $this->getBackwardAllowed($this->firstid);
    if ($countBefore == -1) {
      $countBefore = 0;
    }
    $countActual = count($this->dataary);
    $countBehind = $this->getForwardAllowed($tmplastid);
    $tablewidth = 0;
    
    
    if ($this->rowcount > 0) {
      $this->aktSeite = floor($countBefore / $this->rowcount) + 1;
    } else {
      $this->aktSeite = 0;
    }
    
    if ($this->rowcount > 0) {
      $this->anzSeiten = ceil(($countBefore + $countBehind) / $this->rowcount) + 1;
    } else {
      $this->anzSeiten = 0;
    }

    for ($i = 0; $i < count($this->columnsary); $i++) {
      $tablewidth += $this->columnsary[$i]->width;
    }


    
    
    $str .= "<div class = 'leisteunten'>";
    
    $str .= $this->getDivSuchClass();
    $str .= $this->getSeitenSuchForm();
    $str .= "<div class='auswahlleiste'>";
    $str .= NormalSight::getFooter();
    
    $str .= $this->getFooterLink($countBefore, $countBehind, $tmplastid);
    if (($countBefore > 0 || $countBehind > 0) && $this->rowcount > 0) {
      $str
      .= "&nbsp;&nbsp;&nbsp;<span class='anzahl'>Seite " . CleanOperations::cleanInt(floor($countBefore / $this->rowcount) + 1) . ' von '
      . CleanOperations::cleanInt(ceil(($countBefore + $countActual + $countBehind) / $this->rowcount)) . "</span>\n";
    }
    $str .= $this->getSeitenauswahl();
    
    if (!empty($this->backlink)) {
      $str .= $this->backlink;
    }
    $str .= '</div>';
    
    
    SessionOperations::setVarValueWTIntern('aktseite', $this->aktSeite);
    
    
    $str .= '</div>';
    $str .= '</div>';
    
    $str .= $this->getClosingForm();

    return $str;
  }

  
  public function getClosingForm()
  {
    return '';
  }

  
  public function getDivSuchClass()
  {
    return "<div class='suchleiste'>";
  }

  
  public function getSeitenauswahl()
  {
    
    
    if (!isset($this->seitenind_anfary) || !isset($this->seitenind_endary)) {
      return '';
    }
    
    if ($this->anzSeiten > 1) {
      
      
      if ($this->seitenBlaetternzahl % 2 == 0) {
        $seitenvor = floor($this->seitenBlaetternzahl / 2);
        $seitennach = floor($this->seitenBlaetternzahl / 2) - 1;
      } else {
        $seitenvor = floor(($this->seitenBlaetternzahl - 1) / 2);
        $seitennach = floor(($this->seitenBlaetternzahl - 1) / 2);
      }
      
      
      
      
      
      
      if (($seitenvor >= $this->aktSeite) && ($seitennach >= $this->anzSeiten - $this->aktSeite + 1)) {
        $seitenvor = $this->aktSeite - 1;
        $seitennach = $this->anzSeiten - $this->aktSeite;
      } elseif ($seitenvor >= $this->aktSeite) {
        $diff = $seitenvor - $this->aktSeite + 1;
        $seitenvor = $this->aktSeite - 1;
        $seitennach = min($seitennach + $diff, $this->anzSeiten - $this->aktSeite);
      } elseif ($seitennach >= $this->anzSeiten - $this->aktSeite + 1) {
        $diff = $seitennach - $this->anzSeiten + $this->aktSeite;
        $seitennach = $this->anzSeiten - $this->aktSeite;
        $seitenvor = min($seitenvor + $diff, $this->aktSeite - 1);
      }
      
      
      
      
      
      
      
      
      

      $strLink = "<span class='seiteblaettern'>Seiten:";
      for ($k = 0;$k <= $seitenvor + $seitennach;$k++) {
        
        $ausg_seite = $this->aktSeite - $seitenvor + $k;
        if ($ausg_seite < 1) {
          $strLink .= '';
        } elseif (($ausg_seite == 1) && ($ausg_seite != $this->aktSeite)) {
          $strLink .= $this->getSeitenBlaetternLink($ausg_seite, 'back', $seitennach);
        }
        elseif ($ausg_seite == $this->aktSeite) {
          $strLink .= "<span class='blaetternindex'>" . CleanOperations::cleanInt($ausg_seite) . '</span>' . ($ausg_seite
                           != ($this->aktSeite + $seitennach) ? CleanOperations::cleanStringForHtml(SEITEN_BLAETTERN_DELIMITER) : '');
        } else {
          $strLink .= $this->getSeitenBlaetternLink($ausg_seite, 'vor', $seitennach);
        }
      }
      $strLink .= "</span>\n";
    }
    
    else { 
      $strLink = '';
    }

    return $strLink;
  }

  
  public function getSeitenBlaetternLink($pSeitind, $pAction, $pAdd)
  {
    return "<a class='blaetternindex' href='" . CleanOperations::cleanStringForHtml($this->editformselfstr) . '?toolsection_id=' . CleanOperations::cleanInt($this->sightid)
         . '&tool_id=' . CleanOperations::cleanInt($this->toolid) . '&action=' . CleanOperations::cleanStringForHtml($pAction) . '&nr=' . (($pAction === 'back')
         ? CleanOperations::cleanStringForHtml($this->seitenind_anfary[$pSeitind]->value) : CleanOperations::cleanStringForHtml($this->seitenind_endary[$pSeitind - 2]->value))
         . CleanOperations::cleanStringForHtml($this->addparamsforward) . CleanOperations::cleanStringForHtml($this->searchkurslink) . "'>"
         . CleanOperations::cleanStringForHtml($pSeitind) . '</a>' . ($pSeitind != ($this->aktSeite + $pAdd) ? CleanOperations::cleanStringForHtml(SEITEN_BLAETTERN_DELIMITER) : '');
  }

  
  public function getSeitenSuchForm()
  {
    $str = '';
    if ($this->anzSeiten > 1) {
      if (isset($_REQUEST['seitenr']) && ($_REQUEST['seitenr'] != 0)) {
        $value = $_REQUEST['seitenr'];
      } else {
        $value = '';
      }
      $str = "<div class = 'suchseite'>"
              . "<form class = 'seiteform' action = '" . CleanOperations::cleanStringForHtml($this->getSeitenSuchAction()) . "' method = 'POST'>"
              . "<div class ='suchlabel'>Gehe zu Seite:</div>"
              
              . "<input class = 'suchseite' type = 'text' name = 'seitenr' value = '" . $value . "'>"
              
              . "<input class ='suchsubmit' type = 'submit' value = 'Los'>"
              . '</form></div>';
    }

    return $str;
  }

  
  public function getSeitenSuchAction()
  {
    
    
    
    if ($this->aktSeite == 1) {
      $action = 'back';
    } else {
      $action = 'vor';
    }

    return $this->editformselfstr . '?tool_id=' . $this->toolid . '&toolsection_id=' . $this->sightid
            . ((!empty($this->previousid)) ? '&nr=' . $this->previousid : '')
            . ((!empty($this->previousid)) ? '&action=' . $action : '') . $this->addparamsforward . $this->searchkurslink;
  }

  
  public function getObject($id)
  {
  }

  
  public function getBackwardAllowed($id)
  {
    return 1;
  }

  
  public function getForwardAllowed($id)
  {
    return 1;
  }
}