<?php
/**
 * pragmaMx  Content Management System
 * Copyright (c) 2006 pragmaMx Dev Team - http://pragmaMx.org
 * 
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 * 
 * $Source: /home/www/dps3311/home/cvsroot/pragmamx/pragmamx_01/themes/mx-rainbow/functions.php,v $
 * $Revision: 1.25 $
 * $Author: tora60 $
 * $Date: 2007/03/06 17:53:55 $
 */
if (!defined("mxMainFileLoaded")) die ("You can't access this file directly...");

/**
 * Themesettingsdatei includen
 */
include(MX_THEME_DIR . '/themesettings.php');

/**
 * Dateiname des templates
 */
define("MX_THIS_THEMEFILE", "theme.html");

/**
 * definieren ob die Templates des Themes gecached werden koennen
 */
define("MX_THEME_CACHABLE", true);

/**
 * Standardfarben die im System und den Modulen verwendet werden
 */
global $bgcolor1;
$bgcolor1 = "#ffffff";
global $bgcolor2;
$bgcolor2 = "#f2f2f2";
global $bgcolor3;
$bgcolor3 = "#f9f9f9";
global $bgcolor4;
$bgcolor4 = "#f0fff0";
global $textcolor1;
$textcolor1 = "#333333";
global $textcolor2;
$textcolor2 = "#666666";

/**
 * Standardfarben der PopupFenster
 */
define("_ol_fgcolor", $bgcolor1); # Main background color (the large area). Usually a bright color (white, yellow etc)
define("_ol_textcolor", $textcolor1); # Text color. Usually a dark color
define("_ol_bgcolor", $bgcolor2); # Border color and color of caption. Usually a dark color (black, brown etc)
define("_ol_capcolor", $textcolor2); # Color of the caption text. Usually a bright color
define("_ol_closecolor", $textcolor2); # Color of "Close" when using Sticky. Usually a semi-bright color

/**
 * Definition der jeweiligen Platzhalter und deren Ersetzungen
 */
function theme_define_placeholders()
{
    global $sitename; 
    // mxDebugFuncVars($GLOBALS['navimpath']);
    $part[] = array("{VIEWBENCH}", mxViewBench());
    $part[] = array("{FOOTMESSAGE}", footmsg(1, 0));
    $part[] = array("{CURRENTPATH}", mx_theme_currentpath());
    $part[] = array("{SEARCHFORM}", mx_theme_searchform());
    $part[] = array("{LOGINFORM}", mx_theme_loginform());
    $part[] = array("{SHOWDATE}", mx_show_date());
    $part[] = array("{SHOWTIME}", mx_show_time());
    $part[] = array("{SHOWTOTALUSER}", mx_total_user_online()); 
    // Banner anzeigen
    $part[] = array("{BANNER1}", mx_themebanner(1)); #HeaderBanner
    $part[] = array("{BANNER2}", mx_themebanner(2)); #FooterBanner
    $part[] = array("{BANNER7}", mx_themebanner(7)); # Skyscraper
    $part[] = array("{BANNER6}", mx_themebanner(6)); # rechter Banner     
    // weitere Beispiele dazu
    // $part[] = array("{VIEWMXCOPY}",                  mxViewCopyright());
    $part[] = array("{VIEW_DATE}", mxThemeShowDate());
    $part[] = array("{NAVBUTTONPATH}", change_navbuttons());
    $part[] = array("{LINK1}", nav_link1($GLOBALS['linka']));
    $part[] = array("{LINK2}", nav_link2($GLOBALS['linkb']));
    $part[] = array("{LINK3}", nav_link3($GLOBALS['linkc']));
    $part[] = array("{LINK4}", nav_link4($GLOBALS['linkd']));
    $part[] = array("{LINK5}", nav_link5($GLOBALS['linke']));
    $part[] = array("{PHOTOS}", photos($GLOBALS['im'], $GLOBALS['imcontent']));
    $part[] = array("{TCOLOR}", themecolor($GLOBALS['themecolor'], $GLOBALS['themecolorcontent']));
    $part[] = array("{UNAV}", unav($GLOBALS['unav'], $GLOBALS['unavcontent']));
    $part[] = array("{PSLOGAN}", photoslogan ($GLOBALS['photoslogan'], $GLOBALS['statps'], $GLOBALS['photoslogancontent']));
    $part[] = array("{PSLOGANCOLOR}", photoslogancolor ($GLOBALS['photoslogancolor'], $GLOBALS['statps'], $GLOBALS['photoslogancolorcontent']));
    $part[] = array("{PHEIGHT}", photoheight ($GLOBALS['photoheight']));
    return $part;
} 

/**
 * Definition der einzelnen Blockbereiche
 */
function theme_define_blocks()
{
    static $var;
    if (isset($var)) return $var; 
    // linke Bloecke
    $name = 'block_left';
    $var[$name]['container'] = 'blocks_left_loop';
    $var[$name]['function'] = 'themesidebox';
    $var[$name]['position'] = 'l'; 
    // provisorische Möglichkeit, die linken Blöcke bei bestimmten Modulen zu entfernen
    // weiter unten nochmal ändern!!!
    // // if (MX_MODULE == 'Forum' || MX_MODULE == 'Gallery') {
    // unset($var[$name]);
    // }
    // obere Center-Bloecke
    $name = 'block_center_top';
    $var[$name]['container'] = 'blocks_center_top_loop';
    $var[$name]['function'] = 'thememiddlebox';
    $var[$name]['position'] = 'c'; 
    // untere Center-Bloecke
    $name = 'block_center_down';
    $var[$name]['container'] = 'blocks_center_down_loop';
    $var[$name]['function'] = 'thememiddlebox';
    $var[$name]['position'] = 'd'; 
    // rechte Bloecke
    $name = 'block_right';
    $var[$name]['container'] = 'blocks_right_loop';
    $var[$name]['function'] = 'themesidebox';
    $var[$name]['position'] = 'r';
    return $var;
} 

/**
 * Definition des Contentbereiches inkl. der open/close-Table Funktionen
 */
function theme_define_content()
{
    static $var;
    if (isset($var)) return $var; 
    // die Funktion OpenTable()
    $var['opentabs']['OpenTable']['templatevar'] = 'opentable';
    $var['opentabs']['OpenTable']['innerreplace'] = '{OPENCLOSE_TABLE}'; // hier kann irgendwas stehen, es muss aber mit dem entsprechenden Text innerhalb der template-Datei uebereinstimmen...        
    // die Funktion OpenTable2()
    $var['opentabs']['OpenTable2']['templatevar'] = 'opentable2';
    $var['opentabs']['OpenTable2']['innerreplace'] = '{OPENCLOSE_TABLE_2}'; 
    // die Funktion OpenTableAl()
    $var['opentabs']['OpenTableAl']['templatevar'] = 'opentableal';
    $var['opentabs']['OpenTableAl']['innerreplace'] = '{OPENCLOSE_TABLE_AL}'; 
    // die Funktion themeindex() / News Modul
    $var['themeindex'][1] = 'themeindex_1';
    $var['themeindex'][2] = 'themeindex_2'; // die Funktion themearticle() beim 2ten Aufruf / News Modul        
    // die Funktion themearticle() / News Modul
    $var['themearticle'] = 'themearticle'; 
    // der Name (output_container) darf nicht veraendert werden !!
    $var['output_container'] = 'script_output'; 
    // der Name (index_on_container) darf nicht veraendert werden !!
    $var['index_on_container'] = 'index_on';
    $var['index_on_block_container'] = 'blocks_right_loop'; 
    // der Name (more_header) darf nicht veraendert werden !!
    $var['add_header'] = 'more_header';

    return $var;
} 

/**
 * ersetzen von eigenen Theme-Elementen, kann veraendert und ergaenzt werden
 * diese Teile werden gleich zu Beginn des scriptes, beim einlesen des templates, ersetzt
 * Vorsicht, wenn das Theme gecached werden soll!!!
 */
function theme_replace_start($template)
{
    /**
     * bestimmte Texte, vor allem Image-Pfade, die ersetzt werden sollen, definieren (suche/ersetze)
     */
    $part[] = array('"images/', '"' . MX_BASE_URL . MX_THEME_DIR . '/images/'); // normale images im theme
    $part[] = array('"style', '"' . MX_BASE_URL . MX_THEME_DIR . '/style/');
    $part[] = array('"js', '"' . MX_BASE_URL . MX_THEME_DIR . '/js/');
    $part[] = array('url(images/', 'url(' . MX_BASE_URL . MX_THEME_DIR . '/images/'); 
    // weitere Beispiele dazu
    // $part[] = array("\"http://themes.pragmamx.org/", "\"".MX_BASE_URL);
    return theme_replace_parts($template, $part);
} 

/**
 * ersetzen von eigenen Theme-Elementen, kann veraendert und ergaenzt werden
 * diese Teile werden vor der Ausgabe des headers im Headbereich ersetzt
 */
function theme_replace_header($newheader)
{ 
    // bestimmte Texte, vor allem Image-Pfade, die ersetzt werden sollen, definieren (suche/ersetze)
    // $part[] = array("'images/", "'" . MX_BASE_URL . MX_THEME_DIR . '/images/'); // Plockpopup images (einfaches Anfuehrungszeichen ! in javascript
    // doppelte Zeilenumbrüche und andere Steuerzeichen durch einfachen Zeilenumbruch ersetzen
    $part['preg'][] = array('#[[:cntrl:]]{2,}#i', "\n"); 
    // $part['preg'][] = array('#<html>#i', '<html style="height: 100%; margin: 0px;">');
    // alles ersetzen und Rückgabe...
    return theme_replace_parts($newheader, $part);
} 

/**
 * ersetzen in jedem einzelnen Block
 */
function theme_replace_blocks($template, $block)
{
    switch ($block['position']) {
        case 'l':
            $part[] = array(' bgcolor="' . $GLOBALS['bgcolor1'] . '"', ' bgcolor="' . $GLOBALS['bgcolor3'] . '"');
            break;
        case 'c': 
            // die Farben vom Tutorial Theme ersetzen
            // $part[] = array(' bgcolor="#ffffff"', ' bgcolor="' . $GLOBALS['bgcolor1'] . '"');
            // $part[] = array(' bgcolor="#ffffff"', ' bgcolor="' . $GLOBALS['bgcolor2'] . '"');
            // $part[] = array(' bgcolor="#CADCF2"', ' bgcolor="' . $GLOBALS['bgcolor3'] . '"');
            // $part[] = array(' bgcolor="#6A92D4"', ' bgcolor="' . $GLOBALS['bgcolor4'] . '"');
            break;
        case 'd':
            break;
        case 'r':
            $part[] = array(' bgcolor="' . $GLOBALS['bgcolor1'] . '"', ' bgcolor="' . $GLOBALS['bgcolor3'] . '"');
            break;
    } 
    // Teil fuer alle Bloecke
    $part['preg'][] = array('#<(?:strong|b)><big>&middot;</big></(?:strong|b)>#i', '<img src="' . MX_THEME_DIR . '/images/dot.gif" alt="" border="0" style="vertical-align: middle; height: 9px; width: 5px; border: none;">'); 
    // alle Bilder aus dem Onlineblock holen
    $part['preg'][] = array('#<IMG\s+([^>]+)images/maaxon/([^>]+)\.gif([^>]+)>#i', '');

    $part[] = array("{BTCOLOR}", blocktitlecolor($GLOBALS['blocktitlecolor'], $GLOBALS['blocktitlecolorcontent']));

    if (isset($part)) {
        return theme_replace_parts($template, $part);
    } else {
        return $template;
    } 
} 

/**
 * ersetzen von eigenen Theme-Elementen, kann veraendert und ergaenzt werden
 * diese Teile werden am Ende des scriptes, in der Funktion themefooter() ersetzt
 */
function theme_replace_end($template)
{ 
    // $part[] = array('url(images/', 'url(' . MX_BASE_URL . MX_THEME_DIR . '/images/');
    // Phototabelle entfernen über die Themesettings
    global $statpt;
    if ($statpt) {
        theme_extract_part($template, 'no_photo_table');
    } 
    // Skyscraper Banner entfernen über Themesettings
    global $statbt;
    if ($statbt) {
        theme_extract_part($template, 'no_banner_table');
    } 
    // provisorische Möglichkeit, die linken Blöcke bei bestimmten Modulen zu entfernen
    if (MX_MODULE == 'Forum' || MX_MODULE == 'Gallery') {
        theme_extract_part($template, 'left_noblocks');
    } 
    // die haesslichen Rahmen um Checkboxen und Radio-Feldern entfernen, über style-sheet Klasse
    $pattern = '#(<input[^>]*type\s*=\s*[\"\'](?:radio|checkbox)[\"\']*?[^>]*?)>#iU';
    preg_match_all($pattern, $template, $matches);
    if (isset($matches[1])) {
        foreach($matches[1] as $search) {
            if (!preg_match('#class\s*=\s*["\'][^"\']*["\']#i', $search)) {
                $part[] = array($search, $search . ' class="formcheckbox"');
            } 
        } 
    } 
    // die haesslichen Rahmen um Checkboxen und Radio-Feldern entfernen, über style-sheet Klasse
    $pattern = '#(<input.*[^>]type\s*=\s*[\"\'](?:submit|button|reset)[\"\']*?[^>]*?)>#iU';
    preg_match_all($pattern, $template, $matches);
    if (isset($matches[1])) {
        foreach($matches[1] as $search) {
            if (!preg_match('#class\s*=\s*["\'][^"\']*["\']#i', $search)) {
                $part[] = array($search, $search . ' class="formbutton"');
            } 
        } 
    } 
    // falls xHTML-Tags zerstoert wurden, diese hier wieder reparieren
    $part['preg'][] = array('#/[[:space:]]?class="(formcheckbox|formbutton)">#', ' class="$1" />'); 
    // falls die eben hinzugefügten Tageigenschaften doppelt gesetzt wurden, diese wieder vereinzeln
    $part['preg'][] = array('#( class="(?:formbutton|formcheckbox)"){2,}#si', '$1'); 
    // das ist der komische rollover-effekt in den Menuebloecken:
    // $part['preg'][] = array('#<tr\s*style="background:\s*.*;"\s*onMouseOver="this.style.background=.*"\s*onMouseOut="this.style.background=.*">#siU', "<tr>");
    // leere Tabellen Tags entfernen, wenn kein Inhalt von Modul angezeigt wird (blank_home)
    $part['preg'][] = array('#<table[^>]*>\s*<tbody>\s*<tr>\s*<td>\s*</td>\s*</tr>\s*</tbody>\s*</table>\s*<br>#si', '');
    $template = theme_replace_parts($template, $part);
    return $template;
} 

/**
 * Beschreibung
 */
function theme_html_validate($html)
{
    return $html;
    $html = preg_replace('#(?:<((?:img|input|link|meta)(?:[^>]*[^/]))>)|(?:<(br)>)#i', '<$1$2 />', $html);
    $html = preg_replace('~&(?![a-zA-Z]{2,6};|#[0-9]{2,3};)~', '&amp;', $html); 
    // TODO: muss verbessert werden, weil doppeltgemoppelt
    // nicht glücklich....aber nötig für die Ersetzung innerhalb von Javascripten
    $html = str_replace('&amp;&amp;', '&&', $html);
    return $html;
} 
/**
 * Beschreibung
 */
function getThemeAdminname($story)
{
    global $theme_template;
    if (!empty($story['url'])) {
        $story['aid'] = "<a href='" . $story['url'] . "' target='new'>" . $story['aid'] . "</a>";
    } else if (!empty($story['email'])) {
        $story['aid'] = "<a href='mailto:" . mxPrepareToDisplay($story['email']) . "'>" . $story['aid'] . "</a>";
    } 
    return $story['aid'];
} 
/**
 * Beschreibung
 */
function getThemeIndexButtons($story)
{
    global $theme_template;
    static $img, $isnewsadmin;
    if (!isset($isnewsadmin)) {
        $isnewsadmin = mxGetAdminPref('radminarticle');
    } 
    if (empty($img)) {
        // die images werden in einen statischen Variable gehalten um die Bildgroessen nicht bei jedem Artikel zu ermitteln
        // xx als alttext wird weiter unten dynamisch ersetzt
        $img[1] = mxCreateImage(MX_THEME_DIR . "/images/buttons/informant.gif", "xx", 0);
        $img[2] = mxCreateImage(MX_THEME_DIR . "/images/buttons/print.gif", _BMXPRINTER, 0);
        $img[3] = mxCreateImage(MX_THEME_DIR . "/images/buttons/friend.gif", _BMXFRIEND, 0);
        $img[4] = mxCreateImage(MX_THEME_DIR . "/images/buttons/counter.gif", "xx", 0);
        $img[6] = mxCreateImage(MX_THEME_DIR . "/images/buttons/bytesmore.gif", "xx", 0);
        if ($GLOBALS['articlecomm']) $img[5] = mxCreateImage(MX_THEME_DIR . "/images/buttons/comments.gif", "xx", 0); 
        // mxdebugfuncvars($story['allmorelink']); // zum ansehen der morelink-Parameter einkommentieren
        // mxdebugfuncvars($story);                // zum ansehen der story-Parameter der ersten story einkommentieren
    } 
    // mxdebugfuncvars($story);                  // zum ansehen der story-Parameter aller stories einkommentieren
    $bmore = ($story['allmorelink']['bodycount']) ? _READMORE . " (" . $story['allmorelink']['bodycount'] . " " . _BYTESMORE . ")" : _READMORE;
    $adminlink = ($isnewsadmin) ? " href='admin.php?op=EditStory&amp;sid=" . $story['sid'] . "' " : "";
    $link[] = $story['allmorelink']['storylink'] . str_replace("xx", $bmore, $img[6]) . "</a>";
    if ($story['informant'] != $GLOBALS['anonymous'] && (MX_IS_USER || MX_IS_ADMIN)) {
        $link[] = $story['allmorelink']['informantlink'] . str_replace("xx", _USERINFO . ": " . $story['informant'], $img[1]) . "</a>";
    } 
    $link[] = $story['allmorelink']['printerlink'] . $img[2] . "</a>";
    if (mxModuleAllowed('Recommend_Us')) {
        $link[] = $story['allmorelink']['friendlink'] . $img[3] . "</a>";
    } 
    if (empty($story['acomm']) && $GLOBALS['articlecomm']) { // // Achtung!!! acomm: 0 = Ja , 1 = Nein
        $link[] = $story['allmorelink']['commentslink'] . str_replace("xx", _COMMENTS . " (" . $story['comments'] . ")", $img[5]) . "</a>";
    } 
    $link[] = "<a title='" . $story['allmorelink']['counter'] . ", " . $story['allmorelink']['score'] . "' " . $adminlink . ">" . str_replace("xx", $story['counter'] . " " . _READS, $img[4]) . "</a>";
    return $link;
} 

/**
 * erstellt den Navigationspfad zum aktuellen Modul
 */
function mx_theme_currentpath($spacer = '&nbsp;>&nbsp;')
{
    global $prefix;
    $maxwordlen = 18;

    $link[] = '<a href="./" title="' . _HOME . '">' . _HOME . '</a>'; 
    // Module
    if (isset($_REQUEST['name']) && mxModuleAllowed(MX_MODULE)) {
        $result = sql_query("select custom_title from ${prefix}_modules WHERE title='" . mxAddSlashesForSQL(MX_MODULE) . "'");
        list($custom_title) = sql_fetch_row($result);
        $custom_title = str_replace("_", " ", ((empty($custom_title)) ? MX_MODULE : $custom_title));
        $short_title = mxCutString($custom_title, $maxwordlen, "..", "");
        $link[] = "<a href=\"modules.php?name=" . urlencode(MX_MODULE) . "\" title=\"" . $custom_title . "\">" . $short_title . "</a>";
    } 
    // Administration
    else if (defined('mxAdminFileLoaded')) {
        $link[] = "<a href=\"admin.php\" title=\"" . _ADMINMENU . "\">" . _ADMINMENU . "</a>";
    } 
    return implode($spacer, $link);
} 
/**
 * Beschreibung
 */
function mx_theme_searchform()
{
    $out = '';
    if (mxModuleAllowed('Search')) {
        $out = '
<form action="modules.php" method="get" title="' . _SEARCH . '">
<input type="hidden" name="name" value="Search">
<input type="text" name="query" size="20" title="' . _SEARCH . '">
<input type="submit" value="' . _SEARCH . '" title="' . _SEARCH . '">
</form>
';
    } 
    return $out;
} 
/**
 * Beschreibung
 */
function mx_theme_loginform()
{
    global $prefix, $user_prefix, $JPCACHE_ON;
    $imagedir = MX_THEME_DIR . '/images';
    if ($JPCACHE_ON) {
        return;
    } 
    $out = "";
    if (!MX_IS_USER) {
        if (!defined("mxloginblockviewed")) define("mxloginblockviewed", true);
        $nickname = _NICKNAME;
        $password = _PASSWORD;
        $login = _LOGIN;
        $check = mxGetUserLoginCheckField();
        $out .= <<<logform
        <form action="modules.php?name=Your_Account" method="post">
        $check
        <fieldset style="border: 1px solid #cc0000; width: 200px;">
        <legend style="color: #CC0000;"><strong>Login</strong></legend>
        <table border="0" cellpadding="0" cellspacing="0">
        <tr> 
        <td style="color: #3370A0;"><strong>Nick:</strong></td>
        <td style="color: #3370A0;"><strong>Pass:</strong></td>
        <td>&nbsp;</td>
        </tr>
        <tr> 
        <td><input name="uname" type="text" title="$nickname"  size="8" maxlength="25"></td>
        <td><input  name="pass" type="password" title="$password" size="8" maxlength="20"></td>
        <td><input name="submit"  src="$imagedir/login/submit.gif" style="border:0;width:52px; height:17px;" type="image"></td>
        </tr>
        </table>
        <br>
        </fieldset>
        </form>
logform;
    } else {
        $hallo = _HELLO;
        $logout = _AB_LOGOUT;
        $account = _YACCOUNT;
        $privatemessages = "";
        $cookie = mxgetusersession();
        $username = $cookie[1]; 
        // private Nachrichten
        if (mxModuleAllowed('Private_Messages')) { // falls pm-modul aktiv ist
            $qry = "SELECT Count(msg_id) FROM ${prefix}_priv_msgs WHERE to_userid=" . $cookie[0] . " AND read_msg=0;";
            $result = sql_query($qry);
            list($countpmunread) = sql_fetch_row($result);
            if ($countpmunread) { // wenn angemeldeter User
                $privatemessages = "<div style=\"text-align: left;\">" . _YOUHAVE . " <a href=\"modules.php?name=Private_Messages\" title=\"" . _PRIVATEMSG . "\"><b style=\"font-weight: normal;\">" . intval($countpmunread) . "</b>&nbsp;Nachricht(en)</a></div>";
            } 
        } 
        // Usergaestebuch
        $guestbook = "";
        /*
    if (mxModuleAllowed("UserGuest")){    # falls gaestebuch vorhanden
    $qry="SELECT Count(gid) FROM ${prefix}_userguest WHERE touserid='".$cookie[0]."' AND touser = '".$username."' AND dummy=0;";
    $result = sql_query($qry);
    list($gbnewentries) = sql_fetch_row($result);
    if($gbnewentries){
    $msg2 = ($GLOBALS['currentlang']=='english') ? 'new guestbookentries' : 'neue G&auml;stebucheintr&auml;ge';
    $guestbook = "<div style=\"text-align: left; font-size: 9px;\">"._YOUHAVE." <a href=\"modules.php?name=UserGuest\" title=\""._GUESTBOOKVIEW."\"><b style=\"color: Yellow; font-weight: bold;\">".intval($gbnewentries)."</b> ".$msg2."</a></div>";
    }
    }
    */
        $arrowpic = mxCreateImage(MX_THEME_DIR . '/images/arrow.gif', '');
        $out .= <<<logform
        <fieldset style="border: 1px solid #cc0000; width: 200px;">
        <legend style="color: #666666;"><strong>$hallo</strong> 
        <span style="color: #CC0000; background-color: transparent;">$username</span></legend>
        <table border="0" cellpadding="0" cellspacing="0">
        <tr> 
        <td>$privatemessages $guestbook </td>
        </tr>
        <tr>
        <td align="center"><a href="modules.php?name=Your_Account" title="$account">[Account] </a><a href="modules.php?name=Your_Account&amp;op=logout" title="$logout">[Logout]</a></td>
        </tr>
        </table>
        <br>
        </fieldset>
logform;
    } 
    // $out .= "<input type='checkbox' value='1' name='rememberme'>&nbsp;"._REMEMBERLOGIN."<br>";
    return $out;
} 
/**
 * Beschreibung
 */
function mx_show_date()
{ 
    // mehrsprachig ;-)
    $stamp = time(); 
    // initalise String:
    // Gettting the months set up...
    $monate = array(1 => _JANUARY, 2 => _FEBRUARY, 3 => _MARCH, 4 => _APRIL, 5 => _MAY, 6 => _JUNE, 7 => _JULY, 8 => _AUGUST, 9 => _SEPTEMBER, 10 => _OCTOBER, 11 => _NOVEMBER, 12 => _DECEMBER); 
    // Getting our Month
    $monat = date("n", $stamp); 
    // Getting the Days set up....
    $tage = array(_WEEKFIRSTDAY, _WEEKSECONDDAY, _WEEKTHIRDDAY, _WEEKFOURTHDAY, _WEEKFIFTHDAY, _WEEKSIXTHDAY, _WEEKSEVENTHDAY); 
    // Getting Day....
    $tag = date("w", $stamp);
    $out = $tage[$tag] . ", " . date("d", $stamp) . ". " . $monate[$monat] . " " . date("Y", $stamp);
    return $out;
} 
/**
 * Beschreibung
 */
function mx_show_time ()
{
    $timestamp = time();
    $uhrzeit = date("H:i", $timestamp);
    $out = $uhrzeit;
    return $out;
} 
/**
 * Beschreibung
 */
function mx_total_user_online ()
{
    global $prefix, $user_prefix, $bgcolor1, $bgcolor2, $bgcolor3, $txtcolor1, $txtcolor2;
    $past = time() - MX_SETINACTIVE_MINS ; 
    // Alle Gaeste ermitteln
    $guest_online_num = 0;
    $result = sql_query("SELECT Count(ip) FROM ${prefix}_visitors WHERE time>" . $past . " AND uid=0;");
    list($guest_online_num) = sql_fetch_row($result); 
    // alle Online-User ermitteln
    $member_online_num = 0;
    $result = sql_query("SELECT COUNT(uid) FROM ${user_prefix}_users WHERE (user_lastvisit >= " . $past . " AND user_stat=1 AND user_lastmod<>'logout')");
    list($member_online_num) = sql_fetch_row($result);
    $out = ($guest_online_num + $member_online_num);
    return $out;
} 
/**
 * Banner anzeigen
 */
function mx_themebanner($pos)
{
    if ($GLOBALS['banners']) {
        if (!function_exists('viewbanner')) {
            @include_once('includes/mx_bannerfunctions.php');
        } 
        if (function_exists('viewbanner')) {
            $pos = intval($pos);
            if (empty($pos)) $pos = 1;
            return viewbanner($pos);
        } 
    } 
    return '&nbsp;';
} 

/**
 * wechselnde Navigation
 */
function change_navbuttons ()
{
    global $navimpath, $navimpathcontent;

    if (isset($GLOBALS['home'])) {
        return MX_THEME_DIR . '/' . $navimpath['Home'];
    } else if (defined('MX_MODULE') && isset($navimpath[MX_MODULE])) {
        if (MX_MODULE == "Content") {
            if (!empty($_GET['pid']) && isset ($navimpathcontent[$_GET['pid']])) {
                return MX_THEME_DIR . '/' . $navimpathcontent[$_GET['pid']];
            } else {
                return MX_THEME_DIR . '/' . $navimpath[MX_MODULE];
            } 
        } else {
            return MX_THEME_DIR . '/' . $navimpath[MX_MODULE];
        } 
    } else {
        return MX_THEME_DIR . '/' . $navimpath['Default'];
    } 
} 

/**
 * wechselnde Photos
 */
function photos ($im, $imcontent)
{
    if (isset($GLOBALS['home'])) {
        return $im['Home'];
    } else if (defined('MX_MODULE') && isset($im[MX_MODULE])) {
        if (MX_MODULE == "Content") {
            if (!empty($_GET['pid']) && isset ($imcontent[$_GET['pid']])) {
                return $imcontent[$_GET['pid']];
            } else {
                return $im[MX_MODULE];
            } 
        } else {
            return $im[MX_MODULE];
        } 
    } else {
        return $im['Default'];
    } 
} 

/**
 * wechselnde Farben
 */
function themecolor ($themecolor, $themecolorcontent)
{
    if (isset($GLOBALS['home'])) {
        return $themecolor['Home'];
    } else if (defined('MX_MODULE') && isset($themecolor[MX_MODULE])) {
        if (MX_MODULE == "Content") {
            if (!empty($_GET['pid']) && isset ($themecolorcontent[$_GET['pid']])) {
                return $themecolorcontent[$_GET['pid']];
            } else {
                return $themecolor[MX_MODULE];
            } 
        } else {
            return $themecolor[MX_MODULE];
        } 
    } else {
        return $themecolor['Default'];
    } 
} 

/**
 * wechselnde Farben Blocktitel
 */
function blocktitlecolor ($blocktitlecolor, $blocktitlecolorcontent)
{
    if (isset($GLOBALS['home'])) {
        return $blocktitlecolor['Home'];
    } else if (defined('MX_MODULE') && isset($blocktitlecolor[MX_MODULE])) {
        if (MX_MODULE == "Content") {
            if (!empty($_GET['pid']) && isset ($blocktitlecolorcontent[$_GET['pid']])) {
                return $blocktitlecolorcontent[$_GET['pid']];
            } else {
                return $blocktitlecolor[MX_MODULE];
            } 
        } else {
            return $blocktitlecolor[MX_MODULE];
        } 
    } else {
        return $blocktitlecolor['Default'];
    } 
} 

/**
 * Unternavigation
 */
function unav ($unav, $unavcontent)
{
    if (isset($GLOBALS['home'])) {
        return $unav['Home'];
    } else if (defined('MX_MODULE') && isset($unav[MX_MODULE])) {
        if (MX_MODULE == "Content") {
            if (!empty($_GET['pid']) && isset ($unavcontent[$_GET['pid']])) {
                return $unavcontent[$_GET['pid']];
            } else {
                return $unav[MX_MODULE];
            } 
        } else {
            return $unav[MX_MODULE];
        } 
    } else {
        return $unav['Default'];
    } 
} 

/**
 * Slogan auf dem Photo
 */
function photoslogan ($photoslogan, $statps, $photoslogancontent)
{
    if ($statps) {
        if (isset($GLOBALS['home'])) {
            return $photoslogan['Home'];
        } else if (defined('MX_MODULE') && isset($photoslogan[MX_MODULE])) {
            if (MX_MODULE == "Content") {
                if (!empty($_GET['pid']) && isset ($photoslogancontent[$_GET['pid']])) {
                    return $photoslogancontent[$_GET['pid']];
                } else {
                    return $photoslogan[MX_MODULE];
                } 
            } else {
                return $photoslogan[MX_MODULE];
            } 
        } else {
            return $photoslogan['Default'];
        } 
    } 
} 

/**
 * Farbe des Slogan auf dem Photo
 */
function photoslogancolor ($photoslogancolor, $statps, $photoslogancolorcontent)
{
    if ($statps) {
        if (isset($GLOBALS['home'])) {
            return $photoslogancolor['Home'];
        } else if (defined('MX_MODULE') && isset($photoslogancolor[MX_MODULE])) {
            if (MX_MODULE == "Content") {
                if (!empty($_GET['pid']) && isset ($photoslogancolorcontent[$_GET['pid']])) {
                    return $photoslogancolorcontent[$_GET['pid']];
                } else {
                    return $photoslogancolor[MX_MODULE];
                } 
            } else {
                return $photoslogancolor[MX_MODULE];
            } 
        } else {
            return $photoslogancolor['Default'];
        } 
    } 
} 

/**
 * Beschreibung
 */
function nav_link1 ($linka)
{
    return $linka;
} 
/**
 * Beschreibung
 */
function nav_link2 ($linkb)
{
    return $linkb;
} 
/**
 * Beschreibung
 */
function nav_link3 ($linkc)
{
    return $linkc;
} 
/**
 * Beschreibung
 */
function nav_link4 ($linkd)
{
    return $linkd;
} 
/**
 * Beschreibung
 */
function nav_link5 ($linke)
{
    return $linke;
} 

/**
 * Beschreibung
 */
function photoheight($photoheight)
{
    return $photoheight;
} 

/**
 * diese Funktion wird im Mx nirgends verwendet !!!
 * bleibt aber drin, falls fremd-Module das Ding benoetigen
 */
function FormatStory($thetext, $notes, $aid, $informant)
{
    global $theme_template;
    $notes = (empty($notes)) ? "" : "<br><br><b>" . _NOTE . "</b> <i>" . $notes . "</i>\n";
    if ($aid == $informant) {
        echo "<span class='content'>" . $thetext . " " . $notes . "</span>\n";
    } else {
        $boxstuff = (empty($informant)) ? "" : "<i><a href='modules.php?name=Userinfo&amp;uname=" . $informant . "'>" . $informant . "</a> " . _WRITES . ":</i><br><br>";
        $boxstuff .= $thetext . " " . $notes . "\n";
        echo "<span class='content'>" . $boxstuff . "</span>\n";
    } 
} 

?>