<?php

    function GetPageNavigation($DataNumber, $FormName, $ListArray) {

        // Seiten
        $PageMax = PAGEMAXIMUM;
        $PageNumber = ceil($DataNumber / $ListArray["datacount"]);
        $PageAct = ((($ListArray["dataoffset"]) / $ListArray["datacount"]) + 1); 

        if ($PageNumber > $PageMax) {
            
            if ($PageAct < $PageMax) {
                
                $PageStart = 1;
                $PageEnd = $PageMax;
                
                $PageStartWildCard = false;
                $PageEndWildCard = true;
                 
            } elseif ($PageAct > ($PageNumber - $PageMax + 1)) {
                
                $PageStart = $PageNumber - ($PageMax - 1);
                $PageEnd = $PageNumber;
                
                $PageStartWildCard = true;
                $PageEndWildCard = false;
    
            } else {
                
                $PageStart = $PageAct - floor(($PageMax / 2));
                $PageEnd = $PageAct + floor(($PageMax / 2));
                
                $PageStartWildCard = true;
                $PageEndWildCard = true;
    
            }
            
        } else {
            
            $PageStart = 1;
            $PageEnd = $PageNumber;
            
        }
        
        $PageNavigationArray = array();
        
        for ($PageCounter = $PageStart; $PageCounter <= $PageEnd; $PageCounter++) {
        
            if ($PageCounter > $PageStart) {
                $PageNavigationArray[$PageCounter - 1] .= "&nbsp;&nbsp;|&nbsp;&nbsp;";
            }
        
            if ($PageAct == $PageCounter) {
        
                $PageNavigationArray[$PageCounter] .= "<span>";
                $PageNavigationArray[$PageCounter] .= $PageCounter;
                $PageNavigationArray[$PageCounter] .= "</span>";
                
            } else {
                
                $PageNavigationArray[$PageCounter] = "<a href=\"javascript:SubmitForm('" . $FormName . "', '', '', '" . (($PageCounter - 1) * $ListArray["datacount"]) .  "');\">";
                $PageNavigationArray[$PageCounter] .= $PageCounter;
                $PageNavigationArray[$PageCounter] .= "</a>";
    
            }
    
        }
        
        if ($PageStartWildCard) {
    
            $PageNavigationArray[$PageStart - 1] .= "<span>";
            $PageNavigationArray[$PageStart - 1] .= "<a href=\"javascript:SubmitForm('" . $FormName . "', '', '', '" . ($ListArray["dataoffset"] - $ListArray["datacount"]) . "');\">...</a>";
            $PageNavigationArray[$PageStart - 1] .= "</span>";
            $PageNavigationArray[$PageStart - 1] .= "&nbsp;&nbsp;|&nbsp;&nbsp;";
    
        }
    
        if ($PageEndWildCard) {
            
            $PageNavigationArray[$PageEnd] .= "&nbsp;&nbsp;|&nbsp;&nbsp;";
            $PageNavigationArray[$PageEnd + 1] .= "<span>";
            $PageNavigationArray[$PageEnd + 1] .= "<a href=\"javascript:SubmitForm('" . $FormName . "', '', '', '" . ($ListArray["dataoffset"] + $ListArray["datacount"]) . "');\">...</a>";
            $PageNavigationArray[$PageEnd + 1] .= "</span>";
    
        }
    
        ksort($PageNavigationArray);
    
        // Navigationspfeile
        if (($ListArray["dataoffset"] - 1 / $ListArray["datacount"]) >= 1) {
            $tpl_page_first = "<a href=\"javascript:SubmitForm('" . $FormName . "', '', '', '0');\">"; 
            $tpl_page_first .= "<<";
            $tpl_page_first .= "</a>";
        } else {
    
            if ($DataNumber > 0) {
                $tpl_page_first = "<<";
            } else {
                $tpl_page_first = "";
            }
            
        }
        
        if (($PageNumber > 1) && (((($ListArray["dataoffset"]) / $ListArray["datacount"]) + 1) != $PageNumber)) {
            $tpl_page_last = "<a href=\"javascript:SubmitForm('" . $FormName . "', '', '', '" . (($PageNumber - 1) * $ListArray["datacount"]) . "');\">"; 
            $tpl_page_last .= ">>";
            $tpl_page_last .= "</a>";
        } else {
    
            if ($DataNumber > 0) {
                $tpl_page_last = ">>";
            } else {
                $tpl_page_last = "";
            }
            
        }

        $GetPageNavigationResult["tpl_page_navigation_array"] = $PageNavigationArray;
        $GetPageNavigationResult["tpl_page_first"] = $tpl_page_first;
        $GetPageNavigationResult["tpl_page_last"] = $tpl_page_last;
        
        return $GetPageNavigationResult;
        
    
    }

    function ResetListSession($ListPrefix) {
        
        unset($_SESSION[$ListPrefix . "_list"]);
    
    }
    
    function GetListParameter($ListPrefix) {
        
        foreach ($_REQUEST as $RequestKey => $RequestValue) {
            
            if (substr($RequestKey, 0, strlen($ListPrefix) + 1) == $ListPrefix . "_") {
                
                $_SESSION[$ListPrefix . "_list"][substr($RequestKey, strlen($ListPrefix) + 6)] = $RequestValue;
                
            }
            
        }
        
    }
    
    function SetListNewOrder($ListPrefix) {

        if ($_SESSION[$ListPrefix . "_list"]["sortorder"] == "ASC") {
            $_SESSION[$ListPrefix . "_list"]["sortorder"] = "DESC";
        } else {
            $_SESSION[$ListPrefix . "_list"]["sortorder"] = "ASC";
        }

    }
    
    function SetListSearch($ListPrefix) {
        
        $_SESSION[$ListPrefix . "_list"]["dataoffset"] = 0;
    
    }
