//#############################################
// Hamsters universeller Kartengenerator
//
// 2003 by Hamster
//#############################################

var MAP_LEFT = "";
var MAP_TOP = "";
var MAP_WIDTH = 800;
var MAP_HEIGHT = 600;

var IMARK_WIDTH = 300;
var IMARK_HEIGHT = 240;
var IMARK_SUBTITLE_HEIGHT = 50;

var LOGO_WIDTH = 64;
var LOGO_HEIGHT = 64;

var HEADER_WIDTH = 800;

var SUBTITLE_LEFT = MAP_LEFT;
var SUBTITLE_TOP = MAP_TOP + MAP_HEIGHT + 2;

var gParam;
var gHideMark;

var gFM;
var gFMC;

var gCountFiles;

var gIsGecko = (navigator.userAgent.toLowerCase().match(/gecko/) != null);
var gIsNetscape = (!gIsGecko && (navigator.appName.toLowerCase().match(/netscape/) != null));

var goLegende = new Object();

function ParseString(key)
{
	val = PARAM['_' + key];
	if (!val) return "";
	else return val;
/*
	reg_exp = new RegExp('&_' + key + '=([^&]*)&', 'i');
	arr = reg_exp.exec(s);
	if (arr != null)
	{
		return arr[1];
	}
	return '';
*/
}

function EscapeString(s)
{
	s = escape(s);
	s = s.replace(/%20/g, ' ');
	return s;
}

function UnEscapeString(s)
{
	s = unescape(s);
	return s;
}

function Parse()
{
	gParam = new Object();
	
	gParam.MapUrl = UnEscapeString(ParseString('url'));
	if (gParam.MapUrl == '') gParam.MapUrl = 'mapimg/map_ow.jpg';
	
	gParam.X = ParseString('x') - 0;
	gParam.Y = ParseString('y') - 0;
	gParam.Logo = UnEscapeString(ParseString('lo'));
	if (gParam.Logo == '') gParam.Logo = 'mapimg/logo_wind.gif';
	
	gParam.IMark = UnEscapeString(ParseString('im'));
	gParam.Files = UnEscapeString(ParseString('fi'));
	
	gHideMark = ((gParam.IMark == '') && (gParam.Files != ''));

	gParam.Title = UnEscapeString(ParseString('ti'));
	if (gParam.Title == '') gParam.Title = 'Hamsters universeller Kartengenerator';

	gParam.SubTitle = UnEscapeString(ParseString('sti'));
}

function BuildString()
{
	var s = '&_url=' + EscapeString(gParam.MapUrl);
	s = s + '&_x=' + gParam.X;
	s = s + '&_y=' + gParam.Y;
	s = s + '&_im=' + EscapeString(gParam.IMark);
	s = s + '&_lo=' + EscapeString(gParam.Logo);
	s = s + '&_ti=' + EscapeString(gParam.Title);
	s = s + '&_sti=' + EscapeString(gParam.SubTitle);
	s = s + '&_fi=' + EscapeString(gParam.Files);
	s = s + '&'
	
	return s;
}

function BuildUrlComplete()
{
	var s = location.href;
	i = s.indexOf('?');
	if (i >= 0)	s = s.substring(0, i+1);
	else s = s + '?';
	
	s = s + BuildString();
	return s;
}

function IncludeFiles()
{
	gFM = new Array();
	gFMC = 0;
	gCountFiles = 0;
	
	files = gParam.Files;
	reg_exp = new RegExp('([^,]*),', 'i');
	
	while (files != "")
	{
		arr = reg_exp.exec(files); 
		if (arr != null) file = arr[1];
		else file = files;
		while (file.charAt(0) == ' ') file = file.substr(1);
		
		document.write('<sc' + 'ript src="' + file + '"></sc' + 'ript>');
		
		files = files.substr(file.length + 1);
	}	
	
	document.write('<sc' + 'ript src="amap_finish.js"></sc' + 'ript>');
	
}

function ShowHeader()
{
	document.write('<table border=0 cellspacing=0 cellpadding=0 width=' + HEADER_WIDTH + '>' );
	document.write('<tr><td rowspan=2 width=64><img border=0 align="left" src="' + gParam.Logo + '" width=' + LOGO_WIDTH + ' height=' + LOGO_HEIGHT + '></td>');
	document.write('<td width=' + HEADER_WIDTH + ' align=center id=id_title>&nbsp;' + gParam.Title + '&nbsp;</td></tr>');
	document.write('<tr><td align=center id=id_subtitle><b>&nbsp;' + gParam.SubTitle + '&nbsp;</b></td></tr>');
	document.write('</table>');
}

function ShowMark()
{
	if (gHideMark) return;
	
	if (gParam.IMark == '')
	{
		if (gIsNetscape)
		{
			document.write('<layer left=' + (gParam.X-15) + ' top=' + (gParam.Y-15) + '><img border=0 src="mapimg/mark.gif"></layer>');
		}
		else
		{
			document.write('<img border=0 src="mapimg/mark.gif" style="position:absolute;left:' + (gParam.X-15) + 'px;top:' + (gParam.Y-15) + 'px;">');
		}
	}
	else
	{
		if (gParam.X < MAP_WIDTH / 2)
		{
			pfeilx = gParam.X;
			iborderx = gParam.X + 75;
			imarkx = iborderx + 2;

			if (gParam.Y < MAP_HEIGHT / 2) pfeilurl = '11';
			else pfeilurl = '10';
		}
		else
		{
			pfeilx = gParam.X - 75;
			iborderx = gParam.X - 75 - IMARK_WIDTH - 4;
			imarkx = iborderx + 2;

			if (gParam.Y < MAP_HEIGHT / 2) pfeilurl = '01';
			else pfeilurl = '00';
		}
		
		if (gParam.Y < MAP_HEIGHT / 2)
		{
			pfeily = gParam.Y;
			ibordery = gParam.Y + 37;
			imarky = ibordery + 2;
		}
		else
		{
			pfeily = gParam.Y - 75;
			ibordery = gParam.Y - 38 - IMARK_HEIGHT - 4;
			imarky = ibordery + 2;
		}
		
		subtitlex = imarkx;
		subtitley = imarky + IMARK_HEIGHT - IMARK_SUBTITLE_HEIGHT;
		
		
		if (gIsNetscape)
		{
			document.write('<layer left=' + pfeilx + ' top=' + pfeily + '><img border=0 src="mapimg/imark' + pfeilurl + '.gif"></layer>');
			document.write('<layer left=' + iborderx + ' top=' + ibordery + '><img border=0 src="mapimg/iborder.gif"  width=' + (IMARK_WIDTH+4) + ' height=' + (IMARK_HEIGHT+4) + '></layer>');
			document.write('<layer left=' + imarkx + ' top=' + imarky + '><img border=0 src="' + gParam.IMark + '" width=' + IMARK_WIDTH + ' height=' + IMARK_HEIGHT + '></layer>');
		}
		else
		{
			document.write('<img border=0 src="mapimg/imark' + pfeilurl + '.gif" style="position:absolute;left:' + pfeilx + 'px;top:' + pfeily + 'px;">');
			document.write('<img border=0 src="mapimg/iborder.gif" style="position:absolute;left:' + iborderx + 'px;top:' + ibordery + 'px;width:' + (IMARK_WIDTH+4) + 'px;height:' + (IMARK_HEIGHT+4) + 'px;">');
			document.write('<img border=0 src="' + gParam.IMark + '" style="position:absolute;left:' + imarkx + 'px;top:' + imarky + 'px;width:' + IMARK_WIDTH + 'px;height:' + IMARK_HEIGHT + 'px;">');
			document.write('<span style="position: absolute;left:' + subtitlex + 'px; top:' + subtitley + 'px;width:' + IMARK_WIDTH + 'px;height:' + IMARK_SUBTITLE_HEIGHT + 'px;"><table border=0 cellspacing=0 cellpadding=0 width=100% height=100% ><tr><td align=middle valign=bottom><p id=map_title>' + gParam.Title + '</p><p id=map_subtitle>' + gParam.SubTitle + '</p></td></tr></table></span>');
		}
	}
}

function ShowFiles()
{
	goLegende = new Object();

	document.write('<img id=id_select_marker src="mapimg/select_marker.gif" border=0 style="position:absolute; z-index:10000000; visibility: hidden;">');

	for (i=0; i < gFMC; ++i)
	{
		var mark = gFM[i];
		if (mark.legende)
		{
			var s = '';
			if (mark.p)
			{
				s += '<img border=0 align=absmiddle src="' + mark.p + '" '
				if (mark.r) s = s + 'title="' + mark.r + '" ';
				s += '>';
			}
			if (mark.t)
			{
				s = s + '<b style="' + mark.s + '">' + mark.t + '</b>';
			}
			if (s != '')
			{
				goLegende[mark.legende] = s;
			}
		}
		else
		{
			document.write('<span class=filemark border=0 style="position:absolute;left:' + mark.x + 'px;top:' + mark.y + 'px;" ');
			if (mark.v) idp = mark.v; 
			else idp = mark.p;
			if (idp) document.write('id="img_' + GetPicID(idp) + '" name="img_' + GetPicID(idp) + '" ');
			document.write('>');

//			if (mark.p) document.write('<a id="mark_' + i + '"></a>');
			if (mark.u)	document.write('<a href="' + mark.u + '">');
			
			if (mark.p)
			{
				document.write('<img border=0 align=absmiddle src="' + mark.p + '" ')
				if (mark.r) document.write('title="' + mark.r + '" ');
				document.write('>');
			}
			if (mark.t) document.write('<b id="markertext" name="markertext" style="' + mark.s + '"><nobr>' + mark.t + '</nobr></b>');
			
			if (mark.u)	document.write('</a>');

			document.write('</span>'); 
		}
	}
}


function ShowMap()
{
	if (gIsNetscape)
	{
		document.write('<layer left=' + MAP_LEFT + ' top=' + MAP_TOP + '>');
		document.write('<img border=0 src="' + gParam.MapUrl + '">');
		ShowFiles();
		ShowMark();
		ShowLegende();
		document.write('</layer>');
	}
	else
	{
		document.write('<div style="position:absolute;left:' + MAP_LEFT + 'px;top:' + MAP_TOP + 'px;">');
		document.write('<img border=0 src="' + gParam.MapUrl + '" style="position:absolute;left:0px;top:0px;">');
		ShowFiles();
		ShowMark();
		ShowLegende();
		document.write('</div>');
	}
}

function ShowNote()
{
	if (gIsNetscape)
	{
		document.write('<layer left=' + SUBTITLE_LEFT + ' top=' + SUBTITLE_TOP + '>');
	}
	else
	{
		document.write('<div style="position:absolute;left:' + SUBTITLE_LEFT + 'px;top:' + SUBTITLE_TOP + 'px;">');
	}
	
	s = BuildUrlComplete();
	s = s.replace(/amap.htm/, 'amap_editor.htm');

//	document.write('<table cellspacing=0 cellpadding=0 border=0 width=' + MAP_WIDTH + '>');
//	document.write('<tr><td align=center id=id_note name=id_note>Hamsters interaktiver Kartengenerator - online und offline verwendbar - die Karte kann <a href="' + s + '">hier</a> editiert werden - &copy;2003 by Hamster</td></tr>');
//	document.write('</table>');
	
	if (gIsNetscape)
	{
		document.write('</layer>');
	}
	else
	{
		document.write('</div>');
	}
}

function ShowLegende()
{
	document.write('<div class=filelegende>');
	for (key in goLegende)
	{
		document.write(goLegende[key] + '&nbsp;&nbsp; ');
	}
	document.writeln('</div>');
}

function Main()
{
	Parse();
	
	IncludeFiles(); //Kontrolle an Included Files uebergeben
	
}

function body_onload()
{
	document.title = gParam.Title;
}
