var MacIE = false;
var DownloadInProgress = true;
var ActiveXInstallLocation = "";
// var MapToDo = "";	definitie in parent
var digitizeFunction = 0;
var zoomscale;

function getMap()
{
	if (navigator.appName == "Netscape")
		return parent.Kaart.document.map;
	else
		return parent.Kaart.map;
}

// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// ResizeViewerApplet: enkel voor IE4 Mac
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
function ResizeViewerApplet() 
{
	if (MacIE)
	{
		var	width = null;
		var	height = null; 
		if (document.layers) { 
			width = window.innerWidth;
			height = window.innerHeight; }
		else if (document.all) { 
			width = document.body.clientWidth;
			height = document.body.clientHeight; }
		if (width != null)
			SendToJavaViewer("setSize " + width +" " + height);
	}
}

// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// SendToJavaViewer: writes html to the block container <DIV> 
// the block container is loaded with the senderapplet with a new parameter
// that is send to the JavaViewerApplet.
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
function SendToJavaViewer(methodstr)
{
//alert("SendToJavaViewer: "+methodstr);
	var AppletTag =  '<APPLET NAME="Sender" CODE="MOViewer/Sender.class" ARCHIVE="/Classes/MOViewer.jar" WIDTH="0" HEIGHT="0"> '
					+'<PARAM NAME="method" VALUE=\"' + methodstr + '\"> </APPLET>';
	if(document.layers)
	{ // if ns4 
		parent.Kaart.document.SenderDiv.document.open ('text/html', "replace");
    	parent.Kaart.document.SenderDiv.document.write(AppletTag);
	    parent.Kaart.document.SenderDiv.document.close();
	}
	if(document.all)
	{ // if ie4
     	parent.Kaart.SenderDiv.innerHTML=AppletTag;
	}
}


function ShowProgressBar()
{
	if (DownloadInProgress == true) {
//		alert("Downloading the Mapguide ActiveX Viewer (1MB)");
		ActiveXInstallLocation=parent.Info.document.location.href;
		parent.Info.document.location="../Install/ActiveXInstall.htm"
	}
}


function init()
{
	DownloadInProgress=false;
	if (WindowsPC == "TRUE")
	{
		//var v5 = false;
		var v6 = false;
		var version = getMap().getVersion();
		//if (version >= "5.0.0.0")
		if (version >= "6.0.0.0")
		{
//	    	getMap().enablePrintingEvents();
			//v5 = true;
			v6 = true;
		}
		if ((Explorer == "TRUE") && (MapGuideControl == "TRUE")) 
		{
			clearTimeout(timerID);
			if (ActiveXInstallLocation != "") {
				parent.Info.document.location=ActiveXInstallLocation; }
			CheckVersion();
		}
		if ((Netscape == "TRUE") && (MapGuidePlugin == "TRUE"))
			if (CheckVersion() == "TRUE")
				//setObservers(v5);
				setObservers(v6);
				//alert('test init');
	}
	else		
	{	
		if (Macintosh == "FALSE")
			//setObservers(v5);			
			setObservers(v6);
	}
}


function CheckVersion()
{
	if (getMap() == null)
		var ver = 1.4;        //installatie is bezig
	else 
		var ver = parseFloat(getMap().getApiVersion());
    if (ver < 1.2)
    {
	    msg =  "You need Autodesk MapGuide Release 5.0 to view this map.\n"
	         + "Do you want to download the latest Autodesk MapGuide viewer now?\n"
	         + "Click OK to go to the Mapguide site.\n"
	         + "Otherwise, click Cancel to proceed with your current viewer.\n"
	         + "If you click Cancel, some features may not work properly."
	
	    if (confirm(msg))
	       top.window.location = "http://www.autodesk.com/products/mapguide/vdwnload.htm";
		return ("FALSE");   		   
    }
	else
		return ("TRUE");
}	


//  Sets the Java object for observing events from the Plugin.
//function setObservers(v5)
function setObservers(v6)
{
	getMap().setDoubleClickObserver(document.obs);
	getMap().setViewDistanceObserver(document.obs);
	getMap().setViewChangedObserver(document.obs);
	getMap().setViewChangingObserver(document.obs);	
	if (v6) getMap().setPrintingObserver(document.obs);	
//	getMap().setSelectionChangedObserver(document.obs);		
//	getMap().setBusyStateChangedObserver (document.obs)
//	getMap().setMapLoadedObserver(document.obs);	
}


//  The following VBScript functions handle events from the ActiveX Control and
//  pass them on to the JavaScript functions defined below.
function initVB()
{
	if (navigator.appName == "Microsoft Internet Explorer")
	{
		document.write('<SCRIPT LANGUAGE="VBScript">\n');

		document.write('Sub map_onDoubleClickObject(mapObj)\n');
		document.write('    mapObj.DoubleClickHandled = onDoubleClickObject(mapObj)\n');
		document.write('End Sub\n\n');

		document.write('Sub map_onDigitizedPoint(map, point)\n');
		document.write('    onDigitizedPoint map, point\n');
		document.write('End Sub\n\n');

		document.write('Sub map_onViewedDistance (map, totalDistance, distances, units)\n');
		document.write('    onViewedDistance map, totalDistance, distances, units\n');
		document.write('End Sub\n\n');
		
		document.write('Sub map_onViewChanging (map)\n');
		document.write('    onViewChanging map\n');
		document.write('End Sub\n\n');
		
		document.write('Sub map_onViewChanged (map)\n');
		document.write('    onViewChanged map\n');
		document.write('End Sub\n\n');
		
		document.write('Sub map_onBeginLayout (pgSetup, info)\n');
		document.write('    onBeginLayout pgSetup, info\n');
		document.write('End Sub\n\n');

		document.write('Sub map_onEndLayout (prLayout, info)\n');
		document.write('    onEndLayout prLayout, info\n');
		document.write('End Sub\n\n');

//		document.write('Sub map_onSelectionChanged (map)\n');
//		document.write('    onSelectionChanged map\n');
//		document.write('End Sub\n\n');
		
//		document.write('Sub map_onBusyStateChanged(map, busyState)\n');
//		document.write('    onBusyStateChanged map, busyState\n');
//		document.write('End Sub\n\n');
	   		
		document.write('Sub map_onMapLoaded(map)\n');
		document.write('    onMapLoaded map\n');
		document.write('End Sub\n\n');
		
		document.write('<\/SCRIPT>\n');
	}
}

// The following JavaScript functions process events from both the ActiveX
// Control and the Netscape Plug-in. The ActiveX events are forwarded to these
// functions via VBScript, and the Plug-in events are forwarded to these
// functions via the MapGuideObserver Java applet.

function onMapLoaded(mapObj)
{
	if (getMap().getMapLayer("Logo"))
	{
		if (parent.cms)
			getMap().getMapLayer("Logo").setVisibility(false);
		else
			getMap().getMapLayer("Logo").setVisibility(true);
	}
}

function onDoubleClickObject(mapObj)
{
		var key=mapObj.getKey();
		getMap().getSelection().clear();
		parent.Info.document.location=("../Common/info.asp?key=" + key + "&name=" + mapObj.getName() + "&layer=" + mapObj.getMapLayer().getName());
}


function onViewChanging (map)
{
	// PICC: Data spread over two maps, only once in legend, ensure both have same visibility
	// PICC: If zooming under scale 1/1.000 give warning
	var NewScale = getMap().getScale();
	var mapURL = getMap().getUrl();
	if (mapURL.indexOf("PICC") > 0) 
	{
		LayersByMap = new Array("w4016_92_axe_arc_1","w4016_1992_arc_arc","w4016_92_axe_arc","w4016_92_pol","w4016_92_txt","w4016_1992_arc_arc_2","w4016_1992_pt_pnt");
		LayersByMapC = new Array("w4018_92_axe_arc_1","w4018_1992_arc_arc","w4018_92_axe_arc","w4018_92_pol","w4018_92_txt","w4018_1992_arc_arc_2","w4018_1992_pt_pnt");
		//var msg = "";
		for(var i =0;i < LayersByMap.length; i++) 
		{
			getMap().getMapLayer(LayersByMap[i]).setVisibility(getMap().getMapLayer(LayersByMapC[i]).getVisibility());
			//msg = msg + LayersByMapC[i] + " --> " + getMap().getMapLayer(LayersByMapC[i]).getVisibility() + "\n";
		}		
		//alert(msg);
		
		if (NewScale < 1000)
		{
			alert("L'échelle maximale de visualisation est de 1/1000");
			getMap().setScale(1000);
		}
	}
	//alert('onViewChanging');
}


function onViewChanged (map)
{	
//alert(parent.MapToDo);
	if (parent.MapToDo != "")
	{
		setTimeout(parent.MapToDo,1);	//setTimeout does not stall the script (eval stalls the script)
		parent.MapToDo = "";		
	}

	var mapURL = getMap().getUrl();
	if (mapURL.indexOf("PICC") > 0)
		addLabel("© MET - D.432, License n°: D.432/0302/001/RealDolmen",true);
	else
		addLabel("© Tele Atlas, RealDolmen",true);
}

function onViewedDistance (map, totalDistance, distances, units)
{
	var numObjs = distances.size();
	var dist = "";
	for (var i = 0; i < numObjs; i++)
	{
		if (i == 0)
			dist = Math.round(distances.item(i)*1000)/1000;
		else
			dist = dist + "," + Math.round(distances.item(i)*1000)/1000;
	}
		
	parent.Info.document.location="../Common/ToonAfstand.asp?totalDistance=" + Math.round(totalDistance*1000)/1000 + "&distances=" + dist + "&units=" + units;	
}


function onBeginLayout (pgSetup, info)
{
	pgSetup.setInclude("mg_legend", false);
	pgSetup.setInclude("mg_northarrow", true);
	pgSetup.setInclude("mg_scalebar", false);
	pgSetup.setInclude("mg_title", false);
	pgSetup.setInclude("mg_timestamp", false);
	pgSetup.setInclude("mg_url", false);
}


function onEndLayout(prLayout, info)
{
    // retrieve arrow and map elements
    var el_arrow = prLayout.getPageElement("mg_northarrow");
    var el_map = prLayout.getPageElement("mg_map");
    // force arrow to have higher print priority than map
    el_arrow.setPrintPriority(el_map.getPrintPriority() + 1);
	
	var ext = el_arrow.getExtent();
    ext.set(1000, 4000, 2000, 5000);
    el_arrow.setExtent(ext);
 
	// rotate symbol
	var attr = el_arrow.getSymbolAttr();
	if (attr != null) 
		attr.setRotation(-90.0);
}

function addLabel(label,onscreen)
{
	getMap().setAutoRefresh(false);		

	var RedLayer = getMap().getMapLayer("Label");
	if (RedLayer == null)
		var RedLayer = getMap().createLayer("redline", "Label");
	RedLayer.setShowInLegend(false);

	var RedlineSetup = getMap().getRedlineSetup();
	var TextAttr = RedlineSetup.getTextAttr();
	if (TextAttr != null)
		TextAttr.setBackMode(0);

	var ext = getMap().getMapExtent(true,true);
	var hoogte = ext.getMaxY() - ext.getMinY();
	
	var	width = null;
	var	height = null;
	if (document.layers) { 
		width = window.innerWidth;
		height = window.innerHeight; }
	else if (document.all) { 
		width = document.body.clientWidth;
		height = document.body.clientHeight; }
	if (height != null)
	{
		MetersPerPixel = hoogte/height;
		TextAttr.setHeight(MetersPerPixel*10,"");
		var x = ext.getMaxX() - ((MetersPerPixel*7)*label.length);
		var y = ext.getMinY() + (MetersPerPixel*10);
	}
	else	
	{
		TextAttr.setHeight(hoogte/40,"");
		var x = ext.getMaxX() - ((hoogte/60)*label.length);
		var y = ext.getMinY() + (hoogte/40);
	}

	RedLayer.removeAllObjects();

//	RedLayer.setRebuild(true);
//	alert(getMap().getLastError().getCode());
//	alert(RedLayer.getRebuild());

	var mapObj = RedLayer.createMapObject("", "", "");
	var mapPoint = getMap().createObject("MGPoint");

	mapPoint.setX(x);
	mapPoint.setY(y);


	if (onscreen) getMap().setAutoRefresh(true);
	var reply = mapObj.addTextPrimitive(mapPoint, true, label);

	getMap().setAutoRefresh(true);
}

function RemoveObject(layername, key)
{
	var layer=getMap().getMapLayer(layername); 
	var obj = layer.getMapObject(key);
	layer.removeObject(obj);
}