function renderMap($mapId, $outSizeX = 0, $pointsList = 0, $render = 'defaultMapRenderCallback')
{
    global $gMapCoord, $gmapName, $lang;
    $mapName = '<a href=?instance=' . $mapId . '>' . getMapName($mapId) . '</a>';
    if (empty($mapName)) {
        echo "{$lang['map_no_found']}&nbsp;{$mapId}<br>";
        return;
    }
    $map = getRenderMapData($mapId);
    if (empty($map)) {
        echo "{$lang['no_image']}&nbsp;{$mapName}&nbsp;({$mapId})<br>";
        return;
    }
    // Данные карты
    $areaX1 = $map[0];
    $areaX2 = $map[1];
    $areaY1 = $map[2];
    $areaY2 = $map[3];
    $imageY = $outSizeX == 0 ? $map[5] : $outSizeX;
    $imageX = $outSizeX == 0 ? $map[4] : intval($map[4] * $outSizeX / $map[5]);
    $image = "images/map_image/maps/" . $map[6];
    $sizeX = $imageX + 4;
    $sizeY = $imageY;
    $tableBorder = 1;
    $tableWidth = $sizeY + $tableBorder * 2 + 8;
    echo "<table class=map border={$tableBorder} width={$tableWidth}px>";
    echo "<tbody><tr><td id=mappername class=mapname>{$mapName}</td></tr>";
    echo "<tr><td width={$sizeY}px height={$sizeX}px align=left valign=top>";
    echo "<div id=mapperarea style=\"position: relative; border: 0px; left: 0px; top: 0px;\">";
    echo "<img src={$image} width={$imageY}px height={$imageX}px>\n";
    if ($pointsList) {
        foreach ($pointsList as $point) {
            $posMap = $point['map'];
            $posX = $point['position_x'];
            $posY = $point['position_y'];
            $posZ = $point['position_z'];
            transformWorldCoordinates($posMap, $posX, $posY, $posZ);
            if ($mapId == $posMap and $areaY1 >= $posY and $areaY2 <= $posY and $areaX1 >= $posX and $areaX2 <= $posX) {
                $x = $imageX * ($posX - $areaX1) / ($areaX2 - $areaX1);
                $y = $imageY * ($posY - $areaY1) / ($areaY2 - $areaY1);
                echo $render($point, $y, $x);
            }
        }
    }
    echo "</div>";
    echo "</td></tr></tbody>";
    echo "</table>";
}
if ($mapId == -1) {
    // Вывод таблицы со списком инстансов
    include "inst_list.php";
} else {
    $dungeon = isDungeon($mapId);
    // Вывод карты, мобов и ГО инстанса
    $baseLink = "?instance={$mapId}";
    // Если это не ajax подгрузка данных
    if ($ajaxmode == 0) {
        //$config['lang']
        $desc_file = 'lang/map_' . 'ru' . '/' . $mapId . '.html';
        if (file_exists($desc_file)) {
            include $desc_file;
        }
        // Выводим карту если есть дляэтого данные
        if ($map = getRenderMapData($mapId)) {
            // Вывод карты делаетсяс помощью java script
            // Необходимо только записать данные для него в $mapdata
            echo "<script type=\"text/javascript\" src=\"js/mapper.js\"></script>";
            $mapdata = array();
            $mapdata['header'] = getMapName($mapId);
            $mapdata['imageX'] = $map[5];
            $mapdata['imageY'] = $map[4];
            $mapdata['image'] = "images/map_image/maps/" . $map[6];
            $mapdata['defImg'] = "images/map_points/green.gif";
            $mapdata['defImgX'] = 2;
            $mapdata['defImgY'] = 2;
            $mapdata['selImg'] = "images/map_points/gps_icon.png";
            $mapdata['selImgX'] = 7;
            $mapdata['selImgY'] = 7;
            // Вспомогательные переменные