function avatar_get_all_images($race, $gender, $selset, $button)
{
    $setnames = array();
    $setdirs = array();
    $dir = "modules/avatar";
    $d = opendir($dir);
    while (($file = readdir($d)) !== false) {
        if ($file[0] == '.') {
            continue;
        }
        if (is_dir($dir . "/" . $file)) {
            // okay, this is a possible set
            $f = $dir . "/" . $file . "/" . "setinfo.php";
            if (file_exists($f)) {
                require $f;
                $setnames[$setindex] = $setname;
                $setdirs[$setindex] = $file;
            }
        }
    }
    closedir($d);
    // Now display the sets in order.
    ksort($setnames);
    ksort($setdirs);
    reset($setdirs);
    $str = "<table border=0>";
    while (list($key, $val) = each($setdirs)) {
        $str .= "<tr>";
        // We are going to do three per row here
        $str .= "<td>" . $setnames[$key] . "<br /><input type='radio' name='set' value='" . $setdirs[$key] . "'";
        if ($setdirs[$key] == $selset) {
            $str .= " checked";
        }
        $str .= "></td><td>";
        $str .= avatar_getimage($race, $gender, $setdirs[$key]);
        $str .= "</td>";
        // second
        if (list($key, $val) = each($setdirs)) {
            $str .= "<td>" . $setnames[$key] . "<br /><input type='radio' name='set' value='" . $setdirs[$key] . "'";
            if ($setdirs[$key] == $selset) {
                $str .= " checked";
            }
            $str .= "></td><td>";
            $str .= avatar_getimage($race, $gender, $setdirs[$key]);
            $str .= "</td>";
        } else {
            $str .= "<td>&nbsp;</td><td>&nbsp;</td>";
        }
        // third
        if (list($key, $val) = each($setdirs)) {
            $str .= "<td>" . $setnames[$key] . "<br /><input type='radio' name='set' value='" . $setdirs[$key] . "'";
            if ($setdirs[$key] == $selset) {
                $str .= " checked";
            }
            $str .= "></td><td>";
            $str .= avatar_getimage($race, $gender, $setdirs[$key]);
            $str .= "</td>";
        } else {
            $str .= "<td>&nbsp;</td><td>&nbsp;</td>";
        }
        $str .= "</tr>";
    }
    if ($button !== false) {
        $str .= "<tr><td colspan=6 align=center>";
        $str .= "<input type='submit' class='button' value='{$button}'>";
        $str .= "</td></tr>";
    }
    $str .= "</table>";
    return $str;
}
        $race = strtolower($args['race']);
        if ($args['sex'] == SEX_MALE) {
            $gender = "male";
        } else {
            $gender = "female";
        }
        $image = avatar_getimage($race, $gender, $set, true, $args['acctid']);
        // Make the avatar image collapsible away.  Some people view the
        // game from work and having the avatar image makes it VERY
        // obviously a non-work site even in work-friendly skins
        // addnavheader("Avatar", false);
        addnavheader("Avatar");
        global $templatename;
        if ($templatename == "Classic.htm") {
            $image = "<tr><td>{$image}</td></tr>";
        }
        addnav("{$image}", "!!!addraw!!!", true);
    }
} elseif (get_module_setting("bioheaddisplay")) {
    if (get_module_pref("user_seeavatar") && get_module_pref("bought", "avatar", $args['acctid']) && get_module_pref("user_seeotheravatars")) {
        $set = get_module_pref("setname", "avatar", $args['acctid']);
        $race = strtolower($args['race']);
        if ($args['sex'] == SEX_MALE) {
            $gender = "male";
        } else {
            $gender = "female";
        }
        $image = avatar_getimage($race, $gender, $set, true, $args['acctid']);
        rawoutput($image);
    }
}