function previewfield_countup($name, $maxchars = false, $default = "")
{
    global $session;
    $id = $name;
    $exclude = array("J");
    $colors = getcolors($exclude);
    rawoutput("<script language='JavaScript'>\r\n\t\t\t\tfunction previewtext{$id}(t){\r\n\t\t\t\t\tvar out = '';\r\n\t\t\t\t\tvar end = '';\r\n\t\t\t\t\tvar x=0;\r\n\t\t\t\t\tvar y='';\r\n\t\t\t\t\tvar z='';\r\n\t\t\t\t\tvar charsleft = (t.length)+' Characters';\r\n\t\t\t\t\titalics=0;\r\n\t\t\t\t\tbold=0;\r\n\t\t\t\t\tdocument.getElementById('charsleft{$id}').innerHTML=charsleft;\r\n\t\t\t\t\tif (t.length==0){\r\n\t\t\t\t\t\tout = '&nbsp';\r\n\t\t\t\t\t}\r\n\t\t\t\t\tfor (; x < t.length; x++){\r\n\t\t\t\t\t\ty = t.substr(x,1);\r\n\t\t\t\t\t\tteststring = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890!@#\$%^&*()-=_+;:,./?`~ \\'\"[]{}\\\\|<>£';\r\n\t\t\t\t\t\ttestpos = teststring.indexOf(y);\r\n\t\t\t\t\t\tif (y=='<'){\r\n\t\t\t\t\t\t\tout += '&lt;';\r\n\t\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t\t}else if(y=='>'){\r\n\t\t\t\t\t\t\tout += '&gt;';\r\n\t\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t\t}else if(y=='\\n'){\r\n\t\t\t\t\t\t\tout = '<span class=\\'colLtRed\\'><strong>Use `n rather than Enter to drop down a line</strong></span>';\r\n\t\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t\t}else if (y=='`'){\r\n\t\t\t\t\t\t\tif (x < t.length-1){\r\n\t\t\t\t\t\t\t\tz = t.substr(x+1,1);\r\n\t\t\t\t\t\t\t\tif (z=='0'){\r\n\t\t\t\t\t\t\t\t\tout += '</span>';");
    foreach ($colors as $code => $class) {
        rawoutput("\t\t\t\t}else if (z=='" . $code . "'){\r\n\t\t\t\t\t\t\t\t\tout += '</span><span class=\\'" . $class . "\\'>';");
    }
    rawoutput("\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\telse if (z=='i'){\r\n\t\t\t\t\t\t\t\t\titalics += 1;\r\n\t\t\t\t\t\t\t\t\tinum = italics;\r\n\t\t\t\t\t\t\t\t\tif (inum%2){\r\n\t\t\t\t\t\t\t\t\t\tout += '<em>';\r\n\t\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\t\tout += '</em>';\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t} else if (z=='n'){\r\n\t\t\t\t\t\t\t\t\tout += '<br />';\r\n\t\t\t\t\t\t\t\t} else if (z=='b'){\r\n\t\t\t\t\t\t\t\t\tbold += 1;\r\n\t\t\t\t\t\t\t\t\tbnum = bold;\r\n\t\t\t\t\t\t\t\t\tif (bnum%2){\r\n\t\t\t\t\t\t\t\t\t\tout += '<strong>';\r\n\t\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\t\tout += '</strong>';\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t} else if (z=='`'){\r\n\t\t\t\t\t\t\t\t\tout += '`';\r\n\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\tout = '<span class=\\'colLtRed\\'><strong>That\\'s not a colour code you can use here!</strong></span>';\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\tx++;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t} else if (testpos==-1){\r\n\t\t\t\t\t\t\tout = '<span class=\\'colLtRed\\'><strong>Did you type this in a word processor?  There\\'s a character in there that\\'s going to cause problems.  It could be a smart quote, or a single-character ellipsis, or some wacky hyphen.  You can only use characters that you can see on your keyboard.  Please check and try again.</strong></span>';\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tout += y;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tdocument.getElementById(\"previewtext{$id}\").innerHTML=out;\r\n\t\t\t\t}</script>\r\n\t\t\t\t");
    rawoutput("<div id='previewtext{$id}'>&nbsp;</div>");
    rawoutput("<span id='charsleft{$id}'>0 Characters</span><br />");
    rawoutput("<textarea name='{$name}' id='input{$id}' cols='60' rows='6' onKeyUp='previewtext{$id}(document.getElementById(\"input{$id}\").value);'>" . $default . "</textarea>");
}
function appoencode($data, $priv = false)
{
    global $nestedtags, $session;
    $start = 0;
    $out = "";
    if (($pos = strpos($data, "`")) !== false) {
        global $nestedtags;
        if (!isset($nestedtags['font'])) {
            $nestedtags['font'] = false;
        }
        if (!isset($nestedtags['typeface'])) {
            $nestedtags['typeface'] = false;
        }
        if (!isset($nestedtags['div'])) {
            $nestedtags['div'] = false;
        }
        if (!isset($nestedtags['i'])) {
            $nestedtags['i'] = false;
        }
        if (!isset($nestedtags['b'])) {
            $nestedtags['b'] = false;
        }
        if (!isset($nestedtags['<'])) {
            $nestedtags['<'] = false;
        }
        if (!isset($nestedtags['>'])) {
            $nestedtags['>'] = false;
        }
        if (!isset($nestedtags['h'])) {
            $nestedtags['h'] = false;
        }
        $colors = getcolors();
        do {
            ++$pos;
            if ($priv === false) {
                $out .= HTMLEntities(substr($data, $start, $pos - $start - 1), ENT_COMPAT, getsetting("charset", "ISO-8859-1"));
            } else {
                $out .= substr($data, $start, $pos - $start - 1);
            }
            $start = $pos + 1;
            if (isset($colors[$data[$pos]])) {
                if ($nestedtags['font']) {
                    $out .= "</span>";
                } else {
                    $nestedtags['font'] = true;
                }
                $out .= "<span class='" . $colors[$data[$pos]] . "'>";
            } else {
                if (isset($typefaces[$data[$pos]])) {
                    if ($nestedtags['typeface']) {
                        $out .= "</span>";
                    } else {
                        $nestedtags['typeface'] = true;
                    }
                    $out .= "<span class='" . $typefaces[$data[$pos]] . "'>";
                } else {
                    switch ($data[$pos]) {
                        case "n":
                            $out .= "<br>\n";
                            break;
                        case "0":
                            if ($nestedtags['font']) {
                                $out .= "</span>";
                            }
                            $nestedtags['font'] = false;
                            break;
                        case "b":
                            if ($nestedtags['b']) {
                                $out .= "</b>";
                                $nestedtags['b'] = false;
                            } else {
                                $nestedtags['b'] = true;
                                $out .= "<b>";
                            }
                            break;
                        case "i":
                            if ($nestedtags['i']) {
                                $out .= "</i>";
                                $nestedtags['i'] = false;
                            } else {
                                $nestedtags['i'] = true;
                                $out .= "<i>";
                            }
                            break;
                        case "c":
                            if ($nestedtags['div']) {
                                $out .= "</div>";
                                $nestedtags['div'] = false;
                            } else {
                                $nestedtags['div'] = true;
                                $out .= "<div align='center'>";
                            }
                            break;
                        case "h":
                            if ($nestedtags['h']) {
                                $out .= "</em>";
                                $nestedtags['h'] = false;
                            } else {
                                $nestedtags['h'] = true;
                                $out .= "<em>";
                            }
                            break;
                        case ">":
                            if ($nestedtags['>']) {
                                $nestedtags['>'] = false;
                                $out .= "</div>";
                            } else {
                                $nestedtags['>'] = true;
                                $out .= "<div style='float: right; clear: right;'>";
                            }
                            break;
                        case "<":
                            if ($nestedtags['<']) {
                                $nestedtags['<'] = false;
                                $out .= "</div>";
                            } else {
                                $nestedtags['<'] = true;
                                $out .= "<div style='float: left; clear: left;'>";
                            }
                            break;
                        case "H":
                            if ($nestedtags['div']) {
                                $out .= "</span>";
                                $nestedtags['div'] = false;
                            } else {
                                $nestedtags['div'] = true;
                                $out .= "<span class='navhi'>";
                            }
                            break;
                        case "w":
                            global $session;
                            if (!isset($session['user']['weapon'])) {
                                $session['user']['weapon'] = "";
                            }
                            $out .= $session['user']['weapon'];
                            break;
                        case "`":
                            $out .= "`";
                            ++$pos;
                            break;
                        default:
                            $out .= "`" . $data[$pos];
                    }
                }
            }
        } while (($pos = strpos($data, "`", $pos)) !== false);
    }
    if ($priv === false) {
        $out .= HTMLEntities(substr($data, $start), ENT_COMPAT, getsetting("charset", "ISO-8859-1"));
    } else {
        $out .= substr($data, $start);
    }
    //add closing italics tag, so that players don't screw things up
    $out .= "</i>";
    return $out;
}