/**
 * Brings all the output elements together and terminates the rendering of the page.  Saves the current user info and updates the rendering statistics
 * Hooks provided:
 *	footer-{$script name}
 *	everyfooter
 *
 */
function page_footer($saveuser = true)
{
    global $output, $nestedtags, $header, $nav, $session, $REMOTE_ADDR, $REQUEST_URI, $pagestarttime, $quickkeys, $template, $y2, $z2, $logd_version, $copyright, $SCRIPT_NAME, $nopopups, $footer, $dbinfo;
    $z = $y2 ^ $z2;
    $footer = $template['footer'];
    //page footer module hooks
    $script = substr($SCRIPT_NAME, 0, strpos($SCRIPT_NAME, "."));
    $replacementbits = array();
    $replacementbits = modulehook("footer-{$script}", $replacementbits);
    if ($script == "runmodule" && ($module = httpget('module')) > "") {
        // This modulehook allows you to hook directly into any module without
        // the need to hook into footer-runmodule and then checking for the
        // required module.
        modulehook("footer-{$module}", $replacementbits);
    }
    // Pass the script file down into the footer so we can do something if
    // we need to on certain pages (much like we do on the header.
    // Problem is 'script' is a valid replacement token, so.. use an
    // invalid one which we can then blow away.
    $replacementbits['__scriptfile__'] = $script;
    $replacementbits = modulehook("everyfooter", $replacementbits);
    if ($session['user']['loggedin']) {
        $replacementbits = modulehook("everyfooter-loggedin", $replacementbits);
    }
    unset($replacementbits['__scriptfile__']);
    //output any template part replacements that above hooks need (eg,
    //advertising)
    reset($replacementbits);
    while (list($key, $val) = each($replacementbits)) {
        $header = str_replace("{" . $key . "}", "{" . $key . "}" . join($val, ""), $header);
        $footer = str_replace("{" . $key . "}", "{" . $key . "}" . join($val, ""), $footer);
    }
    $builtnavs = buildnavs();
    restore_buff_fields();
    calculate_buff_fields();
    tlschema("common");
    $charstats = charstats();
    restore_buff_fields();
    $sql = "SELECT motddate FROM " . db_prefix("motd") . " ORDER BY motditem DESC LIMIT 1";
    $result = db_query_cached($sql, "motd-dates");
    $row = db_fetch_assoc($result);
    db_free_result($result);
    $headscript = "";
    if (isset($session['user']['lastmotd']) && $row['motddate'] > $session['user']['lastmotd'] && (!isset($nopopup[$SCRIPT_NAME]) || $nopopups[$SCRIPT_NAME] != 1) && $session['user']['loggedin']) {
        // $headscript.=popup("motd.php");
        $session['needtoviewmotd'] = true;
    } else {
        $session['needtoviewmotd'] = false;
    }
    $pre_headscript = "<LINK REL=\"shortcut icon\" HREF=\"favicon.ico\" TYPE=\"image/x-icon\"/>";
    if ($headscript > "") {
        $header = str_replace("{headscript}", $pre_headscript . "<script language='JavaScript'>" . $headscript . "</script>", $header);
    } else {
        $header = str_replace("{headscript}", $pre_headscript, $header);
    }
    $script = "";
    if (!isset($session['user']['name'])) {
        $session['user']['name'] = "";
    }
    if (!isset($session['user']['login'])) {
        $session['user']['login'] = "";
    }
    //clean up unclosed output tags.
    while (list($key, $val) = each($nestedtags)) {
        if ($nestedtags[$key] === true) {
            $output .= "</{$key}>";
        }
        unset($nestedtags[$key]);
    }
    //output keypress script
    $script .= "<script language='JavaScript'>\r\n\t<!--\r\n\tdocument.onkeypress=keyevent;\r\n\tfunction keyevent(e){\r\n\t\tvar c;\r\n\t\tvar target;\r\n\t\tvar altKey;\r\n\t\tvar ctrlKey;\r\n\t\tif (window.event != null) {\r\n\t\t\tc=String.fromCharCode(window.event.keyCode).toUpperCase();\r\n\t\t\taltKey=window.event.altKey;\r\n\t\t\tctrlKey=window.event.ctrlKey;\r\n\t\t}else{\r\n\t\t\tc=String.fromCharCode(e.charCode).toUpperCase();\r\n\t\t\taltKey=e.altKey;\r\n\t\t\tctrlKey=e.ctrlKey;\r\n\t\t}\r\n\t\tif (window.event != null)\r\n\t\t\ttarget=window.event.srcElement;\r\n\t\telse\r\n\t\t\ttarget=e.originalTarget;\r\n\t\tif (target.nodeName.toUpperCase()=='INPUT' || target.nodeName.toUpperCase()=='TEXTAREA' || altKey || ctrlKey){\r\n\t\t}else{";
    reset($quickkeys);
    while (list($key, $val) = each($quickkeys)) {
        $script .= "\n\t\t\tif (c == '" . strtoupper($key) . "') { {$val}; return false; }";
    }
    $script .= "\r\n\t\t}\r\n\t}\r\n\t//-->\r\n\t</script>";
    //handle paypal
    if (strpos($footer, "{paypal}") || strpos($header, "{paypal}")) {
        $palreplace = "{paypal}";
    } else {
        $palreplace = "{stats}";
    }
    //NOTICE |
    //NOTICE | Although under the license, you're not required to keep this
    //NOTICE | paypal link, I do request, as the author of this software
    //NOTICE | which I have made freely available to you, that you leave it in.
    //NOTICE |
    $paypalstr = '<table align="center"><tr><td>';
    $currency = getsetting("paypalcurrency", "USD");
    if (!isset($_SESSION['logdnet']) || !isset($_SESSION['logdnet']['']) || $_SESSION['logdnet'][''] == "" || !isset($session['user']['laston']) || date("Y-m-d H:i:s", strtotime("-1 hour")) > $session['user']['laston']) {
        $already_registered_logdnet = false;
    } else {
        $already_registered_logdnet = true;
    }
    if (getsetting("logdnet", 0) && $session['user']['loggedin'] && !$already_registered_logdnet) {
        //account counting, just for my own records, I don't use this in the calculation for server order.
        $sql = "SELECT count(*) AS c FROM " . db_prefix("accounts");
        $result = db_query_cached($sql, "acctcount", 600);
        $row = db_fetch_assoc($result);
        $c = $row['c'];
        $a = getsetting("serverurl", "http://" . $_SERVER['SERVER_NAME'] . ($_SERVER['SERVER_PORT'] == 80 ? "" : ":" . $_SERVER['SERVER_PORT']) . dirname($_SERVER['REQUEST_URI']));
        if (!preg_match("/\\/\$/", $a)) {
            $a = $a . "/";
            savesetting("serverurl", $a);
        }
        $l = getsetting("defaultlanguage", "en");
        $d = getsetting("serverdesc", "Another LoGD Server");
        $e = getsetting("gameadminemail", "*****@*****.**");
        $u = getsetting("logdnetserver", "http://logdnet.logd.com/");
        if (!preg_match("/\\/\$/", $u)) {
            $u = $u . "/";
            savesetting("logdnetserver", $u);
        }
        global $logd_version;
        $v = $logd_version;
        $c = rawurlencode($c);
        $a = rawurlencode($a);
        $l = rawurlencode($l);
        $d = rawurlencode($d);
        $e = rawurlencode($e);
        $v = rawurlencode($v);
        $u = rawurlencode($u);
        $paypalstr .= "<script language='JavaScript' src='images/logdnet.php?op=register&c={$c}&l={$l}&v={$v}&a={$a}&d={$d}&e={$e}&u={$u}'></script>";
    } else {
        $paypalstr .= '<form action="https://www.paypal.com/cgi-bin/webscr" method="post" target="_blank">
<input type="hidden" name="cmd" value="_xclick">
<input type="hidden" name="business" value="*****@*****.**">
<input type="hidden" name="item_name" value="Legend of the Green Dragon Author Donation from ' . full_sanitize($session['user']['name']) . '">
<input type="hidden" name="item_number" value="' . htmlentities($session['user']['login'] . ":" . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], ENT_COMPAT, getsetting("charset", "ISO-8859-1")) . '">
<input type="hidden" name="no_shipping" value="1">
<input type="hidden" name="notify_url" value="http://lotgd.net/payment.php">
<input type="hidden" name="cn" value="Your Character Name">
<input type="hidden" name="cs" value="1">
<input type="hidden" name="currency_code" value="USD">
<input type="hidden" name="tax" value="0">
<input type="image" src="images/paypal1.gif" border="0" name="submit" alt="Donate!">
</form>';
    }
    $paysite = getsetting("paypalemail", "");
    if ($paysite != "") {
        $paypalstr .= '</td></tr><tr><td colspan=\'2\' align=\'center\'>';
        $paypalstr .= '<form action="https://www.paypal.com/cgi-bin/webscr" method="post" target="_blank">
<input type="hidden" name="cmd" value="_xclick">
<input type="hidden" name="business" value="' . $paysite . '">
<input type="hidden" name="item_name" value="' . getsetting("paypaltext", "Legend of the Green Dragon Site Donation from") . ' ' . full_sanitize($session['user']['name']) . '">
<input type="hidden" name="item_number" value="' . htmlentities($session['user']['login'] . ":" . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], ENT_COMPAT, getsetting("charset", "ISO-8859-1")) . '">
<input type="hidden" name="no_shipping" value="1">';
        if (file_exists("payment.php")) {
            $paypalstr .= '<input type="hidden" name="notify_url" value="http://' . $_SERVER["HTTP_HOST"] . dirname($_SERVER['REQUEST_URI']) . '/payment.php">';
        }
        $paypalstr .= '<input type="hidden" name="cn" value="Your Character Name">
<input type="hidden" name="cs" value="1">
<input type="hidden" name="currency_code" value="' . $currency . '">
<input type="hidden" name="lc" value="' . getsetting("paypalcountry-code", "US") . '">
<input type="hidden" name="bn" value="PP-DonationsBF">
<input type="hidden" name="tax" value="0">
<input type="image" src="images/paypal2.gif" border="0" name="submit" alt="Donate!">
</form>';
    }
    $paypalstr .= '</td></tr></table>';
    $footer = str_replace($palreplace, (strpos($palreplace, "paypal") ? "" : "{stats}") . $paypalstr, $footer);
    $header = str_replace($palreplace, (strpos($palreplace, "paypal") ? "" : "{stats}") . $paypalstr, $header);
    //NOTICE |
    //NOTICE | Although I will not deny you the ability to remove the above
    //NOTICE | paypal link, I do request, as the author of this software
    //NOTICE | which I made available for free to you that you leave it in.
    //NOTICE |
    //output the nav
    $footer = str_replace("{" . $z . "}", ${$z}, $footer);
    $header = str_replace("{nav}", $builtnavs, $header);
    $footer = str_replace("{nav}", $builtnavs, $footer);
    //output the motd
    $header = str_replace("{motd}", motdlink(), $header);
    $footer = str_replace("{motd}", motdlink(), $footer);
    //output the mail link
    if (isset($session['user']['acctid']) && $session['user']['acctid'] > 0 && $session['user']['loggedin']) {
        $header = str_replace("{mail}", maillink(), $header);
        $footer = str_replace("{mail}", maillink(), $footer);
    } else {
        $header = str_replace("{mail}", "", $header);
        $footer = str_replace("{mail}", "", $footer);
    }
    //output petition count
    $header = str_replace("{petition}", "<a href='petition.php' onClick=\"" . popup("petition.php") . ";return false;\" target='_blank' align='right' class='motd'>" . translate_inline("Petition for Help") . "</a>", $header);
    $footer = str_replace("{petition}", "<a href='petition.php' onClick=\"" . popup("petition.php") . ";return false;\" target='_blank' align='right' class='motd'>" . translate_inline("Petition for Help") . "</a>", $footer);
    if ($session['user']['superuser'] & SU_EDIT_PETITIONS) {
        $sql = "SELECT count(petitionid) AS c,status FROM " . db_prefix("petitions") . " GROUP BY status";
        $result = db_query_cached($sql, "petition_counts");
        $petitions = array(0 => 0, 1 => 0, 2 => 0, 3 => 0, 4 => 0, 5 => 0, 6 => 0, 7 => 0);
        while ($row = db_fetch_assoc($result)) {
            $petitions[(int) $row['status']] = $row['c'];
        }
        $pet = translate_inline("`0`bPetitions:`b");
        $ued = translate_inline("`0`bUser Editor`b");
        db_free_result($result);
        if ($session['user']['superuser'] & SU_EDIT_USERS) {
            $p = "<a href='user.php'>{$ued}</a>|<a href='viewpetition.php'>{$pet}</a>";
            addnav("", "user.php");
            addnav("", "viewpetition.php");
        } else {
            $p = "<a href='viewpetition.php'>{$pet}</a>";
            addnav("", "viewpetition.php");
        }
        $p .= " `\${$petitions[5]}`0|`^{$petitions[4]}`0|`b{$petitions[0]}`b|{$petitions[1]}|`!{$petitions[3]}`0|`#{$petitions[7]}`0|`%{$petitions[6]}`0|`i{$petitions[2]}`i";
        $pcount = templatereplace("petitioncount", array("petitioncount" => appoencode($p, true)));
        $footer = str_replace("{petitiondisplay}", $pcount, $footer);
        $header = str_replace("{petitiondisplay}", $pcount, $header);
    } else {
        $footer = str_replace("{petitiondisplay}", "", $footer);
        $header = str_replace("{petitiondisplay}", "", $header);
    }
    //output character stats
    $footer = str_replace("{stats}", $charstats, $footer);
    $header = str_replace("{stats}", $charstats, $header);
    //do something -- I don't know what
    $header = str_replace("{script}", $script, $header);
    //output view PHP source link
    $sourcelink = "source.php?url=" . preg_replace("/[?].*/", "", $_SERVER['REQUEST_URI']);
    $footer = str_replace("{source}", "<a href='{$sourcelink}' onclick=\"" . popup($sourcelink) . ";return false;\" target='_blank'>" . translate_inline("View PHP Source") . "</a>", $footer);
    $header = str_replace("{source}", "<a href='{$sourcelink}' onclick=\"" . popup($sourcelink) . ";return false;\" target='_blank'>" . translate_inline("View PHP Source") . "</a>", $header);
    //output version
    $footer = str_replace("{version}", "Version: {$logd_version}", $footer);
    //output page generation time
    $gentime = getmicrotime() - $pagestarttime;
    $session['user']['gentime'] += $gentime;
    $session['user']['gentimecount']++;
    $load = exec("uptime");
    $load = split("load average:", $load);
    $load = split(", ", $load[1]);
    $perfhook = array("gentime" => $gentime, "dbinfo" => $dbinfo, "cpu" => $load, "script" => $SCRIPT_NAME, "request" => $REQUEST_URI);
    $perfhook = modulehook("footer-performance", $perfhook);
    $l1 = $load[0];
    $l5 = $load[1];
    $l15 = $load[2];
    $mem = memory_get_usage(true);
    if ($mem < 1024) {
        $memdisp = $mem . " bytes";
    } else {
        if ($mem < 1048576) {
            $memdisp = round($mem / 1024, 6) . " kilobytes";
        } else {
            $memdisp = round($mem / 1048576, 6) . " megabytes";
        }
    }
    if (!isset($dbinfo['cache_fail'])) {
        $dbinfo['cache_fail'] = 0;
    }
    global $output_time;
    $footer = str_replace("{pagegen}", "Page gen: " . round($gentime, 3) . "s / " . $dbinfo['queriesthishit'] . " queries (" . round($dbinfo['querytime'], 3) . "s), cache " . $dbinfo['cache_success'] . " successful (" . round($dbinfo['cachetime'], 3) . "s) / " . $dbinfo['cache_fail'] . " failed.  Average for this account: " . round($session['user']['gentime'] / $session['user']['gentimecount'], 3) . "s - " . round($session['user']['gentime'], 3) . "/" . round($session['user']['gentimecount'], 3) . "<br />Current CPU Load: {$l1} | {$l5} | {$l15}<br />Memory usage for this page: {$memdisp}", $footer);
    tlschema();
    // global $allqueries;
    // debug($allqueries);
    // global $cachedqueries;
    // debug($cachedqueries);
    // global $module_prefs;
    // debug($module_prefs);
    // global $moduleperformance;
    // debug($moduleperformance);
    // global $allqueriesbyfile;
    // debug($allqueriesbyfile);
    //clean up spare {fields}s from header and footer (in case they're not used)
    $footer = preg_replace("/{[^} \t\n\r]*}/i", "", $footer);
    $header = preg_replace("/{[^} \t\n\r]*}/i", "", $header);
    //finalize output
    $output = $header . $output . $footer;
    $session['user']['gensize'] += strlen($output);
    $session['output'] = $output;
    if ($saveuser === true) {
        saveuser();
    }
    unset($session['output']);
    //this somehow allows some frames to load before the user's navs say it can
    //session_write_close();
    echo $output;
    $session['badnav'] = 0;
    exit;
}
function page_footer()
{
    global $output, $nestedtags, $header, $nav, $session, $REMOTE_ADDR, $REQUEST_URI, $pagestarttime, $quickkeys, $template, $logd_version;
    while (list($key, $val) = each($nestedtags)) {
        $output .= "</{$key}>";
        unset($nestedtags[$key]);
    }
    $script .= "<script type='text/javascript'>\n\t<!--\n\tdocument.onkeypress=keyevent;\n\tfunction keyevent(e){\n\t\tvar c;\n\t\tvar target;\n\t\tvar altKey;\n\t\tvar ctrlKey;\n\t\tif (window.event != null) {\n\t\t\tc=String.fromCharCode(window.event.keyCode).toUpperCase(); \n\t\t\taltKey=window.event.altKey;\n\t\t\tctrlKey=window.event.ctrlKey;\n\t\t}else{\n\t\t\tc=String.fromCharCode(e.charCode).toUpperCase();\n\t\t\taltKey=e.altKey;\n\t\t\tctrlKey=e.ctrlKey;\n\t\t}\n\t\tif (window.event != null)\n\t\t\ttarget=window.event.srcElement;\n\t\telse\n\t\t\ttarget=e.originalTarget;\n\t\tif (target.nodeName.toUpperCase()=='INPUT' || target.nodeName.toUpperCase()=='TEXTAREA' || altKey || ctrlKey){\n\t\t}else{";
    reset($quickkeys);
    while (list($key, $val) = each($quickkeys)) {
        $script .= "\n\t\t\tif (c == '" . strtoupper($key) . "') { {$val}; return false; }";
    }
    $script .= "\n\t\t}\n\t}\n\t//-->\n\t</script>";
    $footer = $template['footer'];
    $header = str_replace("{nav}", $nav, $header);
    $footer = str_replace("{nav}", $nav, $footer);
    $header = str_replace("{motd}", motdlink(), $header);
    $footer = str_replace("{motd}", motdlink(), $footer);
    if ($session['user']['acctid'] > 0) {
        $header = str_replace("{mail}", maillink(), $header);
        $footer = str_replace("{mail}", maillink(), $footer);
    } else {
        $header = str_replace("{mail}", "", $header);
        $footer = str_replace("{mail}", "", $footer);
    }
    $header = str_replace("{petition}", "<a href='petition.php' onClick=\"" . popup("petition.php") . ";return false;\" target='_blank' class='motd'>Petition for Help</a>", $header);
    $footer = str_replace("{petition}", "<a href='petition.php' onClick=\"" . popup("petition.php") . ";return false;\" target='_blank' class='motd'>Petition for Help</a>", $footer);
    if ($session['user']['superuser'] > 1) {
        $sql = "SELECT count(petitionid) AS c,status FROM petitions GROUP BY status";
        $result = db_query($sql);
        $petitions = array(0 => 0, 1 => 0, 2 => 0);
        for ($i = 0; $i < db_num_rows($result); $i++) {
            $row = db_fetch_assoc($result);
            $petitions[(int) $row['status']] = $row['c'];
        }
        db_free_result($result);
        $footer = "<table border='0' cellpadding='5' cellspacing='0' align='right'><tr><td><b>Petitions:</b> {$petitions['0']} Unseen, {$petitions['1']} Seen, {$petitions['2']} Closed.</td></tr></table>" . $footer;
    }
    $footer = str_replace("{stats}", charstats(), $footer);
    $header = str_replace("{stats}", charstats(), $header);
    //$footer=str_replace("{onlinechars}", onlinechars(), $footer);
    //$header=str_replace("{onlinechars}", onlinechars(), $header);
    $header = str_replace("{script}", $script, $header);
    $footer = str_replace("{source}", "<a href='source.php?url=" . preg_replace("/[?].*/", "", $_SERVER['REQUEST_URI']) . "' target='_blank'>View PHP Source</a>", $footer);
    $header = str_replace("{source}", "<a href='source.php?url=" . preg_replace("/[?].*/", "", $_SERVER['REQUEST_URI']) . "' target='_blank'>View PHP Source</a>", $header);
    $footer = str_replace("{copyright}", "Copyright 2002-2003, Game: Eric Stevens", $footer);
    $footer = str_replace("{version}", "Version: {$logd_version}", $footer);
    $gentime = getmicrotime() - $pagestarttime;
    $session['user']['gentime'] += $gentime;
    $session['user']['gentimecount']++;
    $footer = str_replace("{pagegen}", "Page gen: " . round($gentime, 2) . "s, Ave: " . round($session['user']['gentime'] / $session['user']['gentimecount'], 2) . "s - " . round($session['user']['gentime'], 2) . "/" . round($session['user']['gentimecount'], 2) . "", $footer);
    $output = $header . $output . $footer;
    $session['user']['gensize'] += strlen($output);
    $session['output'] = $output;
    saveuser();
    session_write_close();
    //`mpg123 -g 100 -q hit.mp3 2>&1 > /dev/null`;
    echo $output;
    exit;
}
function page_footer(){
	global $output,$nestedtags,$header,$nav,$session,$REMOTE_ADDR,$REQUEST_URI,$pagestarttime,$quickkeys,$template,$logd_version;
	while (list($key,$val)=each($nestedtags)){
		$output.="</$key>";

		unset($nestedtags[$key]);
	}
	$script.="<script language='JavaScript'>
	<!--
	document.onkeypress=keyevent;
	function keyevent(e){
		var c;
		var target;
		var altKey;
		var ctrlKey;
		if (window.event != null) {
			c=String.fromCharCode(window.event.keyCode).toUpperCase(); 
			altKey=window.event.altKey;
			ctrlKey=window.event.ctrlKey;
		}else{
			c=String.fromCharCode(e.charCode).toUpperCase();
			altKey=e.altKey;
			ctrlKey=e.ctrlKey;
		}
		if (window.event != null)
			target=window.event.srcElement;
		else
			target=e.originalTarget;
		if (target.nodeName.toUpperCase()=='INPUT' || target.nodeName.toUpperCase()=='TEXTAREA' || altKey || ctrlKey){
		}else{";
	reset($quickkeys);
	while (list($key,$val)=each($quickkeys)){
		$script.="\n			if (c == '".strtoupper($key)."') { $val; return false; }";
	}
	$script.="
		}
	}
	//-->
	</script>";
	

	$footer = $template['footer'];
	if (strpos($footer,"{paypal}") || strpos($header,"{paypal}")){ $palreplace="{paypal}"; }else{ $palreplace="{stats}"; }
	
	//NOTICE
	//NOTICE Although I will not deny you the ability to remove the below paypal link, I do request, as the author of this software
	//NOTICE that you leave it in.
	//NOTICE
	$paypalstr = '<table align="center"><tr><td>';
	$paypalstr .= '<form action="https://www.paypal.com/cgi-bin/webscr" method="post" target="_blank">
<input type="hidden" name="cmd" value="_xclick">
<input type="hidden" name="business" value="*****@*****.**">
<input type="hidden" name="item_name" value="Legend of the Green Dragon Author Donation from '.preg_replace("/[`]./","",$session['user']['name']).'">
<input type="hidden" name="item_number" value="'.htmlentities($session['user']['login']).":".$_SERVER['HTTP_HOST']."/".$_SERVER['REQUEST_URI'].'">
<input type="hidden" name="no_shipping" value="1">
<input type="hidden" name="cn" value="Your Character Name">
<input type="hidden" name="cs" value="1">
<input type="hidden" name="currency_code" value="USD">
<input type="hidden" name="tax" value="0">
<input type="image" src="images/paypal1.gif" border="0" name="submit" alt="Donate!">
</form>';
	$paysite = getsetting("paypalemail", "");
	if ($paysite != "") {
		$paypalstr .= '</td><td>';
		$paypalstr .= '<form action="https://www.paypal.com/cgi-bin/webscr" method="post" target="_blank">
		<input type="hidden" name="cmd" value="_xclick">
		<input type="hidden" name="business" value="'.$paysite.'">
<input type="hidden" name="item_name" value="Legend of the Green Dragon Site Donation from '.preg_replace("/[`]./","",$session['user']['name']).'">
<input type="hidden" name="item_number" value="'.htmlentities($session['user']['login']).":".$_SERVER['HTTP_HOST']."/".$_SERVER['REQUEST_URI'].'">
<input type="hidden" name="no_shipping" value="1">
<input type="hidden" name="cn" value="Your Character Name">
<input type="hidden" name="cs" value="1">
<input type="hidden" name="currency_code" value="USD">
<input type="hidden" name="tax" value="0">
<input type="image" src="images/paypal2.gif" border="0" name="submit" alt="Donate!">
</form>';
	}
    $paypalstr .= '</td></tr></table>';
	$footer=str_replace($palreplace,(strpos($palreplace,"paypal")?"":"{stats}").$paypalstr,$footer);
	$header=str_replace($palreplace,(strpos($palreplace,"paypal")?"":"{stats}").$paypalstr,$header);
	//NOTICE
	//NOTICE Although I will not deny you the ability to remove the above paypal link, I do request, as the author of this software
	//NOTICE that you leave it in.
	//NOTICE
	$header=str_replace("{nav}",$nav,$header);
	$footer=str_replace("{nav}",$nav,$footer);

	$header = str_replace("{motd}", motdlink(), $header);
	$footer = str_replace("{motd}", motdlink(), $footer);

	if ($session[user][acctid]>0) {
		$header=str_replace("{mail}",maillink(),$header);
		$footer=str_replace("{mail}",maillink(),$footer);
	}else{
		$header=str_replace("{mail}","",$header);
		$footer=str_replace("{mail}","",$footer);
	}
	$header=str_replace("{petition}","<a href='petition.php' onClick=\"".popup("petition.php").";return false;\" target='_blank' align='right' class='motd'>Petition for Help</a>",$header);
	$footer=str_replace("{petition}","<a href='petition.php' onClick=\"".popup("petition.php").";return false;\" target='_blank' align='right' class='motd'>Petition for Help</a>",$footer);
	if ($session['user']['superuser']>1){
		$sql = "SELECT count(petitionid) AS c,status FROM petitions GROUP BY status";
		$result = db_query($sql);
		$petitions=array(0=>0,1=>0,2=>0);
		for ($i=0;$i<db_num_rows($result);$i++){
			$row = db_fetch_assoc($result);
			$petitions[(int)$row['status']] = $row['c'];
		}
		db_free_result($result);
		$footer = "<table border='0' cellpadding='5' cellspacing='0' align='right'><tr><td><b>Petitions:</b> $petitions[0] Unseen, $petitions[1] Seen, $petitions[2] Closed.</td></tr></table>".$footer;
	}
	$footer=str_replace("{stats}",charstats(),$footer);
	$header=str_replace("{stats}",charstats(),$header);
	$header=str_replace("{script}",$script,$header);
	$footer=str_replace("{source}","<a href='source.php?url=".preg_replace("/[?].*/","",($_SERVER['REQUEST_URI']))."' target='_blank'>View PHP Source</a>",$footer);
	$header=str_replace("{source}","<a href='source.php?url=".preg_replace("/[?].*/","",($_SERVER['REQUEST_URI']))."' target='_blank'>View PHP Source</a>",$header);
	$footer=str_replace("{copyright}","Copyright 2002-2003, Game: Eric Stevens",$footer);
	$footer=str_replace("{version}", "Version: $logd_version", $footer);
	$gentime = getmicrotime()-$pagestarttime;
	$session[user][gentime]+=$gentime;
	$session[user][gentimecount]++;
	$footer=str_replace("{pagegen}","Page gen: ".round($gentime,2)."s, Ave: ".round($session[user][gentime]/$session[user][gentimecount],2)."s - ".round($session[user][gentime],2)."/".round($session[user][gentimecount],2)."",$footer);
	if (strpos($_SERVER['HTTP_HOST'],"lotgd.net")!==false){
		$footer=str_replace(
			"</html>",
			'<script language="JavaScript" type="text/JavaScript" src="http://www.reinvigorate.net/archive/app.bin/jsinclude.php?5193"></script></html>',
			$footer
			);
	}

	$output=$header.$output.$footer;
	$session['user']['gensize']+=strlen($output);
	$session[output]=$output;
	saveuser();

	session_write_close();
	//`mpg123 -g 100 -q hit.mp3 2>&1 > /dev/null`;
	echo $output;
	exit();
}