<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Circle Automapper</title>
<meta name="viewport" content="width=device-width; initial-scale=0.44; maximum-scale=1.0"/>
<script>

var refresh_rate = '600';
var version=1;
var load = 0;

var classes = [
  "Wizard",
  "Cleric",
  "Thief",
  "Warrior",
  "Social",
  "Knight",
  "Ranger",
  "Berzerker",
  "Rogue",
  "Assassin",
  "Healer",
  "Crusader",
  "Sorcerer",
  "Necromancer",
  "Enchanter"
];

var sector_types = [
  "inside",
  "city",
  "field",
  "forest",
  "hills",
  "mountains",
  "water-swim",
  "water-noswim",
  "underwater",
  "inflight"
];

var road = [
  "road",
  "path",
  "street",
  "avenue",
  "boulevard",
  "alley",
  "trail"
]

var rnum = 0;

function isIn(a, b) { for (var i = 0; i < b.length; i++) if (a.toLowerCase().indexOf(b[i]) != -1) return true; return false }
function removeElement(a) { a = document.getElementById(a); a.parentNode.removeChild(a) }
function getPos(a) { obj = document.getElementById(a); var curleft = curtop = 0; if (obj.offsetParent) { do { curleft += obj.offsetLeft; curtop += obj.offsetTop; } while (obj = obj.offsetParent); } return [curleft,curtop]; }
function id(a) {return document.getElementById(a)};
function getRoomNum(a) { return rooms[a][0].split(':')[1]; }
function getRoomName(a) { return rooms[a][0].split(':')[2]; }
function getRoomSect(a) { return sector_types[parseInt(rooms[a][0].split(':')[3])]; }
function drawPlayer(a) { document.body.innerHTML += '<img class="xp" src="players/'+a+'" onclick="showRoomContents(\'x\');">';}
function drawV(x, y) { document.body.innerHTML += '<img class="vl" src="line.gif" style="top: ' + y + 'px; left:' + x + 'px"/>\n'; }
function drawSV(x, y) { document.body.innerHTML += '<img class="svl" src="line.gif" style="top: ' + y + 'px; left:' + x + 'px"/>\n'; }
function drawH(x, y) { document.body.innerHTML += '<img class="hl" src="line.gif" style="top: ' + y + 'px; left:' + x + 'px"/>\n'; }
function drawSU(x, y) { document.body.innerHTML += '<img class="s" src="stairsup.png" style="top: ' + y + 'px; left:' + x + 'px"/>\n'; }
function drawSD(x, y) { document.body.innerHTML += '<img class="s" src="stairsdown.png" style="top: ' + y + 'px; left:' + x + 'px"/>\n'; }
function drawSR(x, y, z) { document.body.innerHTML += '<img class="s" src="smallroom.png" title="' + z + '" style="top: ' + y + 'px; left:' + x + 'px"/>\n'; }
function connectRooms() {

  if (rooms['nnn']) { drawV(357,76); drawV(357,76+32);}
  if (rooms['nn'])  { drawV(357,76+100); drawV(357,176+32);}
  if (rooms['n'])   { drawV(357,76+200); }

  if (rooms['s'])   { drawV(357,411); }
  if (rooms['ss'])  { drawV(357,411+66); drawV(357,411+66+32); }
  if (rooms['sss']) { drawV(357,411+166); drawV(357,411+166+32); }

  if (rooms['www']) { drawH (76,357);    drawH (76+32,357);}
  if (rooms['ww'])  { drawH (76+100,357); drawH (76+100+32,357); }
  if (rooms['w'])   { drawH  (76+200,357); }

  if (rooms['e']) { drawH(409,357); }
  if (rooms['ee'])  { drawH(409+100,357); drawH(409+100-32,357);}
  if (rooms['eee']) { drawH(409+200,357); drawH(409+200-32,357);}

  if (rooms['ne'])  { drawH(409,357-100); drawH(409-32,357-100);}
  if (rooms['nee'])  { drawH(409+100,357-100); drawH(409+100-32,357-100);}
  if (rooms['nne']) { drawH(409,357-200); drawH(409-32,357-200);}

  if (rooms['se'])  { drawH(409,357+100); drawH(409-32,357+100);}
  if (rooms['see'])  { drawH(409+100,357+100); drawH(409+100-32,357+100);}
  if (rooms['sse']) { drawH(409,357+200); drawH(409-32,357+200);}

  if (rooms['sw'])   { drawH(76+200,357+100); drawH(76+200+32,357+100);}
  if (rooms['sww'])  { drawH(76+100,357+100); drawH(76+100+32,357+100);}
  if (rooms['ssw'])  { drawH(76+200,357+200); drawH(76+200+32,357+200);}

  if (rooms['nw'])   { drawH(76+200,357-100); drawH(76+200+32,357-100);}
  if (rooms['nww'])  { drawH(76+100,357-100); drawH(76+100+32,357-100);}
  if (rooms['nnw'])  { drawH(76+200,357-200); drawH(76+200+32,357-200);}

  if (rooms['u']) { drawSU(373,341); }
  if (rooms['d']) { drawSD(373,371); }

  if (rooms['nu']) { drawSU(372,306-100); }
  if (rooms['nd']) { drawSD(372,372-100); }

  if (rooms['nnu']) { drawSU(372,306-200); }
  if (rooms['nnd']) { drawSD(372,372-200); }

  if (rooms['su']) { drawSU(372,306+100); }
  if (rooms['sd']) { drawSD(372,372+100); }

  if (rooms['ssu']) { drawSU(372,306+200); }
  if (rooms['ssd']) { drawSD(372,372+200); }

  if (rooms['eu']) { drawSU(372+100,306); }
  if (rooms['ed']) { drawSD(372+100,372); }

  if (rooms['eeu']) { drawSU(372+200,306); }
  if (rooms['eed']) { drawSD(372+200,372); }

  if (rooms['wu']) { drawSU(372-100,306); }
  if (rooms['wd']) { drawSD(372-100,372); }

  if (rooms['wwu']) { drawSU(372-200,306); }
  if (rooms['wwd']) { drawSD(372-200,372); }

  if (rooms['ne'] && rooms['en']) {
	if (getRoomNum('ne') == getRoomNum('en'))
	  { drawV(357+100,76+200); drawV(357+100,76+200+32); }
	else { 
		drawSR(357+100-10,76+200+33, getRoomName('en')); drawSV(357+100,76+200+55); 
		  if (rooms['nes'])
			{ drawSR(357+100-10,76+200+10, getRoomName('nes')); drawSV(357+100,76+200); }
	}
  }

  if (rooms['een'] && rooms['nee']) {
	if (getRoomNum('een') == getRoomNum('nee'))
	  { drawV(357+200,76+200); drawV(357+200,76+200+32); }
	else
	  { drawSR(357+200-10,76+200+32, getRoomName('een')); drawSV(357+200,76+200+55); }
  }

  if (rooms['nw'] && rooms['wn']) {
	if (getRoomNum('nw') == getRoomNum('wn'))
	  { drawV(357-100,76+200); drawV(357-100,76+200+32); }
	else { 
		drawSR(357-100-10,76+200+33, getRoomName('wn')); drawSV(357-100,76+200+55); 
		  if (rooms['nws'])
			{ drawSR(357-100-10,76+200+10, getRoomName('nws')); drawSV(357-100,76+200); }
	}
  }

  if (rooms['nww'] && rooms['wwn']) {
	if (getRoomNum('nww') == getRoomNum('wwn'))
	  { drawV(357-200,76+200); drawV(357-200,76+200+32); }
	else
	  { drawSR(357-200-10,76+200+32, getRoomName('wwn')); drawSV(357-200,76+200+55); }
  }

  if (rooms['nne'] && rooms['nen']) {
	if (getRoomNum('nne') == getRoomNum('nen'))
	  { drawV(357+100,76+100); drawV(357+100,76+100+32); }
	else
	  { drawSR(357+100-10,76+100+32, getRoomName('nen')); drawSV(357+100,76+100+54); }
  }

  if (rooms['nnw'] && rooms['nwn']) {
	if (getRoomNum('nnw') == getRoomNum('nwn'))
	  { drawV(357-100,76+100); drawV(357-100,76+100+32); }
	else
	  { drawSR(357-100-10,76+100+32, getRoomName('nwn')); drawSV(357-100,76+100+54); }
  }

  if (rooms['se'] && rooms['es']) {
	if (getRoomNum('se') == getRoomNum('es'))
	  { drawV(357+100,76+300); drawV(357+100,76+300+32); }
	else {
	  drawSR(357+100-10,76+300+10, getRoomName('es')); drawSV(357+100,76+300);
		if (rooms['sen']) 
		  { drawSR(357+100-10,76+300+32, getRoomName('sen')); drawSV(357+100,76+300+55); }
	}
  }

  if (rooms['see'] && rooms['ees']) {
	if (getRoomNum('see') == getRoomNum('ees'))
	  { drawV(357+200,76+300); drawV(357+200,76+300+32); }
	else
	  { drawSR(357+200-10,76+300+10, getRoomName('ees')); drawSV(357+200,76+300); }
  }

  if (rooms['sw'] && rooms['ws']) {
	if (getRoomNum('sw') == getRoomNum('ws'))
	  { drawV(357-100,76+300); drawV(357-100,76+300+32); }
	else { 
	  drawSR(357-100-10,76+300+10, getRoomName('ws')); drawSV(357-100,76+300); 
		if (rooms['swn']) 
		  { drawSR(357-100-10,76+300+32, getRoomName('swn')); drawSV(357-100,76+300+55); }
	}
  }

  if (rooms['sww'] && rooms['wws']) {
	if (getRoomNum('sww') == getRoomNum('wws'))
	  { drawV(357-200,76+300); drawV(357-200,76+300+32); }
	else { 
	  drawSR(357-200-10,76+300+10, getRoomName('wws')); drawSV(357-200,76+300);
		if (rooms['swn'])
		  { drawSR(357-100-10,76+300+32, getRoomName('swn')); drawSV(357-100,76+300+55); }
	}
  }

  if (rooms['ssw'] && rooms['sws']) {
	if (getRoomNum('ssw') == getRoomNum('sws'))
	  { drawV(357-100,76+400); drawV(357-100,76+400+32); }
	else { drawSR(357-100-10,76+400+10, getRoomName('sws')); drawSV(357-100,76+400); }
  }

  if (rooms['sse'] && rooms['ses']) {
	if (getRoomNum('sse') == getRoomNum('ses'))
	  { drawV(357+100,76+400); drawV(357+100,76+400+32); }
	else
	  { drawSR(357+100-10,76+400+10, getRoomName('ses')); drawSV(357+100,76+400); }
  }
}
function drawRooms(room) {

  for (room in rooms) {
	if (id('r'+room)) {
	  if (rooms[room] == 'closed')
		id('r'+room).innerHTML = '<img src="closed.png" title="Closed">';
	  else if (rooms[room] == 'locked')
		id('r'+room).innerHTML = '<img src="locked.png" title="Locked">';
	  else if (rooms[room] == 'death')
		id('r'+room).innerHTML = '<img src="death.png" title="Death Trap">';
	  else if (getRoomName(room) == 'dark')
		id('r'+room).innerHTML = '<img src="dark.png" title="Dark">';
	  else if (isIn(getRoomName(room), road))
		id('r'+room).innerHTML = '<img src="road.png" title="' + getRoomName(room) + '" onclick="showRoomContents(\'' + room + '\');">';
	  else if (room != 'x')
		id('r'+room).innerHTML = '<img src="' + getRoomSect(room) + '.png" title="' + getRoomName(room) + '" onclick="showRoomContents(\'' + room + '\');">';
	}
  }
		for (var i=0; i < rooms.x.length; i++) {
		  var line = rooms.x[i].split(':');
		  if (line[0] == 'xp') {
			  var player = {};
			  player.name = line[1];
			  player.cl = classes[parseInt(line[2])];
			  player.level = parseInt(line[3]);

			if (parseInt(line[4]) == 0)
				player.sex = 'Neutral';
			else if (parseInt(line[4]) == 1)
				player.sex = 'Male';
			else
				player.sex = 'Female';

			//id('player').innerHTML = player.name + '<br>Level ' + player.level + '<br>' + player.sex + ' ' + player.cl ;
			id('room').innerHTML = '<strong>' + getRoomName('x') + '</strong>';
				if (player.sex == 'Male' || player.sex == 'Neutral')
				  sex = '-he';
				else
				  sex = '-she';

				if (player.level > 60) player.cl = 'Immortal';

			  drawPlayer(player.cl.toLowerCase() + sex + '.png');
			}
		}

}

function showRoomContents(a) {
rnum++;
var c = "<strong>" + getRoomName(a) + "</strong><br>";

  for (var i=1; i < rooms[a].length; i++) {
	var line = rooms[a][i].split(':');
	  if (line[0] == 'xp') continue;
		if (line[1]) c += line[1] + '<br>';
  }

  pos = getPos('r'+a);
  document.body.innerHTML += '<div class="co" id="co' + rnum + '" style="left:' + 
  pos[0] + '; top:' + pos[1] + 
  '" onclick="removeElement(\'co' + rnum + '\')">' + c + '</div>';

  return;

}

function getXMLHttp() {
  var xmlHttp;
  try {
	xmlHttp = new XMLHttpRequest();
  }
  catch(e) {
	try {
	  xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
	}
	catch(e) {
	  try {
		xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
	  }
	  catch(e) {
		alert("Your browser does not support AJAX!")
		return false;
	  }
	}
  }
  return xmlHttp;
}

function HandleResponse(response) {

	if (response.length) {
	rnum=0;
		eval(response);
	drawMap();
	drawRooms(room);
		connectRooms();
		load++;
	}
	else if (!load) { document.body.innerHTML = "Tracking <?php echo $_POST['c']?>. Make a move."; load = 1;}

  setTimeout('getData()', refresh_rate);
		//alert(document.body.innerHTML);
}

function getData() {
  var xmlHttp = getXMLHttp();
  xmlHttp.onreadystatechange = function() {
	if(xmlHttp.readyState == 4) {
	  HandleResponse(xmlHttp.responseText);
	}
  }

  if (!load) {
  	<?php $c = $_POST['c']?$_POST['c']:$_GET['c']; $p = $_POST['p']?$_POST['p']:$_GET['p']; ?>
  	xmlHttp.open("GET", "mapper.php?c=<?php echo $c ?>&p=<?php echo $p ?>&v=" + version, true);
  }
  else {
	xmlHttp.open("GET", "mapper.php", true);
  }
	
  xmlHttp.send(null);
}

function drawMap() {
	document.body.innerHTML = "\n<table cellpadding='0' cellspacing='0'>\n" +
	"<tr><td><div id='emp'></div></td>		  <td><div id='player'></div></td>	  <td><div id='emp'></div></td>	  <td><div id='rnnn'></div></td>		<td><div id='emp'></div></td>	  <td><div id='emp'></div></td>	  <td><div id='emp'><!--<a href=\'javascript:history.back(-1)\'>back</a>--></div></td>\n" +
	"</tr><tr><td><div id='emp'></div></td>		<td><div id='room'></div></td>	    <td><div id='rnnw'></div></td>	<td><div id='rnn'></div></td>		  <td><div id='rnne'></div></td>	<td><div id='emp'></div></td>	  <td><div id='emp'></div></td>\n" +
	"</tr><tr><td><div id='emp'></div></td>		<td><div id='rnww'></div></td>	  <td><div id='rnw'></div></td>	  <td><div id='rn'></div></td>		  <td><div id='rne'></div></td>	  <td><div id='rnee'></div></td>	<td><div id='emp'></div></td>\n" +
	"</tr><tr><td><div id='rwww'></div></td>	<td><div id='rww'></div></td>	    <td><div id='rw'></div></td>	  <td><div id='emp'></div></td>		  <td><div id='re'></div></td>	  <td><div id='ree'></td>			    <td><div id='reee'></div></td>\n" +
	"</tr><tr><td><div id='emp'></div></td>		<td><div id='rsww'></div></td>	  <td><div id='rsw'></div></td>	  <td><div id='rs'></div></td>		  <td><div id='rse'></div></td>	  <td><div id='rsee'></div></td>  <td><div id='emp'></div></td>\n" +
	"</tr><tr><td><div id='emp'></div></td>		<td><div id='emp'></div></td>	    <td><div id='rssw'></div></td>	<td><div id='rss'></div></td>		  <td><div id='rsse'></div></td>	<td><div id='emp'></div></td>	  <td><div id='emp'></div></td>\n" +
	"</tr><tr><td><div id='emp'></div></td>		<td><div id='emp'></div></td>	    <td><div id='emp'></div></td>	  <td><div id='rsss'></div></td>		<td><div id='emp'></div></td>	  <td><div id='emp'></div></td>	  <td><div id='emp'></div></td>\n" +
	"</tr></table>\n";
}
</script>
<style>
	body { width: 700px; height: 700px; background: transparent; color: #5e574e; font-family: Helvetica, Tahoma; }
	#emp, #player, #room, #rwww, #reee, #rsss, #rnnn { min-height: 100px; min-width: 100px; max-height: 100px; max-width: 100px; }
  	#player, #room { font-size: 14px; color: #eeeeee; }
	.vl  { position: absolute; z-index: 1; width: 2px; height: 32px; }
  .svl { position: absolute; z-index: 1; width: 2px; height: 10px; }
  .hl { position: absolute; z-index: 1; height: 2px; width: 32px; }
  .s { position: absolute; z-index: 2; }
  .xp { position: absolute; z-index: 1; top: 309px; left: 308px; border: 1px solid #5e574e; }
  .co { position: absolute; z-index: 3; background: #ccc; border: 1px solid #5e574e; width: auto; height: auto; padding: 4px 4px 4px 4px; font-size: 11px; -moz-border-radius: 4px; border-radius: 4px; cursor: default}
</style>
</head>
<body onload="getData(); if(!navigator.userAgent.match(/(iPod|iPhone|iPad)/)) document.body.style.backgroundColor = '#000000'">
</body>
</html>