///overschrijven van parameters voor specifieke selecties
// voorlopig hier in zetten, totdat deze in managelogisarcims kunnen worden ingebracht en bewaard
// dan worden die in logisparam.js overgenomen.
//drawTargetLayer = true;
//bufferTargetLayer = "KAD. PERCELEN ZONNEBEKE";
//bufferTargetLayerIndex = -1;
//bufferDistance = 100;
//bufferSmoothEdges = 1/100;
//var logisgetBufferedData = true;  //getBufferedData wordt herschreven tijdens verwerking, daarom eigen var.
//var logisCanChangeTargetLayer = true;

//eigen toegevoegde
//var askbufferDistance=true;
//// als <> 0 : wordt steeds voor het uitvoeren van gelijk welke tool in aimsClick deze layer
//// actief gezet , dus gebruiker hoeft geen lagen actief te zetten.
//var logisselectionlayerid = 2; 
//var logisIdentifyLayer = "KAD. PERCELEN ZONNEBEKE";
//var logisQueryLayer = "";
//var logisSelectLayer =  "KAD. PERCELEN ZONNEBEKE";



//volgende is om (later) nog mogelijkheid van dynamisch geladen
// shapes te voorzien. Hierbij moet dan wel aanpassing gebeuren in
// aimsCustom.js : functie addCustomToMap1()


/*
var addXML='<WORKSPACES><SHAPEWORKSPACE name="edit_ws-0" directory="C:/GIS/Data/Zonnebeke" shared="true" /></WORKSPACES>'
var    addXM='<LAYER type="featureclass" name="svedit" visible="true" id="20">\n' +
                   '<DATASET name="editpoint" type="point" workspace="shp_ws-0" />\n' +
                   '<SIMPLERENDERER>\n' +
                   '<SIMPLEMARKERSYMBOL color="2,159,77" type="square" width="5" />\n' +
                   '</SIMPLERENDERER>\n' +
                   '</LAYER>\n';
*/

//variabelen voor logis :
//om identify resultaat mee te kunnen afdrukken.
var LogisPrintText = ""
var lgiHeight;
var lgiWidth;
var lgeLeft;
var lgeRight;
var lgeBottomm;
var lgeTop;
var logisPrintScaleFactor=false;
var logisDynFile="";
var logisEditWindow;
var logiscurrentscale=""; // versie 1.6

// versie 1.6 : bijkomende parameter die gebruikt wordt in aimPrint.js_writePrintPage()
var logisbPrintOVMap = true;
// versie 1.6 : bijkomende parameter in deze module om bij te houden ofdat er op al één van de knoppen
// is geklikt  waarbij er automatisch geswitched wordt naar een opgegeven actieve laag.
//  als dat het geval is wordt deze parameter op false gezet.
//  dit wordt gebruikt met de parameter die in ManageLogisArcIMS (en dus LogisParams.js) wordt gezet : 
//  logisbsetAutomaticActiveLayer. Indien die op false staat mag er, na de eerste keer automatisch zetten
//  niet meer automatisch geswitched worden.
var logisbFirstsetAutomaticActiveLayer = true; //eerste keer dat we hierin komen, dus ook zetten actief thema
                                               //als het maar één keer mag uitgevoerd worden.

///////////////////////////////////
////Functies van Logis :
///////////////////////////////////

function ZoomAdres(logismode,queryString,eleft,ebottom,eright,etop) {
	// alert("querystring:" + queryString);
        setQueryString=  queryString;
        aimsSelectPresent = true;
        hideRetrieveData();
        //zet active layer op straten, zodat getdbenvelope de juiste id meegeeft
        
if (logismode == 9001) {
           SetActiveLayerLogis(LogisAdresThema);
 
       } else {
           SetActiveLayerLogis(LogisStraatThema);
 
        }
	var theString = getLogisAdresEnvelope(queryString);
        // alert("te zenden XML:" + theString);
	var theFunction = "parent.MapFrame.processLogisXML";
        selectCount = 10;
        // save extent,zoals doorgegeven door de logisarcims, for later use in processLogisXML
        logisLeft = parseFloat(eleft);
        logisBottom = parseFloat(ebottom);
        logisRight = parseFloat(eright);
        logisTop = parseFloat(etop);
 //	alert("Zoomadres extent:" + logisLeft + "," + logisBottom + " " + logisRight + "," + logisTop)
	sendCustomToServer(theString,theFunction, logismode)
}

function LogisZoom (logismode,queryString,eleft,ebottom,eright,etop,theme) {
	// alert("querystring:" + queryString);
        setQueryString=  queryString;
        aimsSelectPresent = true;
        hideRetrieveData();
        //zet active layer op straten, zodat getdbenvelope de juiste id meegeeft
        switch (logismode) {
          case 9001:
           SetActiveLayerLogis(LogisAdresThema);
           break;
          case 9002:
           SetActiveLayerLogis(LogisStraatThema);
           break;
          case 9003:
           SetActiveLayerLogis(LogisPercThema);
           break;
          case 9004:
           SetActiveLayerLogis(theme);
        }
        var theString = getLogisAdresEnvelope(queryString);
        // alert("te zenden XML:" + theString);
	var theFunction = "parent.MapFrame.processLogisXML";
        selectCount = 10;
        // save extent,zoals doorgegeven door de logisarcims, for later use in processLogisXML
        logisLeft = parseFloat(eleft);
        logisBottom = parseFloat(ebottom);
        logisRight = parseFloat(eright);
        logisTop = parseFloat(etop);
 	//alert("Zoomadres extent:" + logisLeft + "," + logisBottom + " " + logisRight + "," + logisTop)
	//alert("sendCustomToServer("+theString+","+theFunction+","+ logismode)
        sendCustomToServer(theString,theFunction, logismode)
}

// Custom XML processor for db access
function processLogisXML(theReplyIn) {
//alert('in processlogisxml');
	theReplyIn = replacePlus(theReplyIn);
	var theReply = unescape(theReplyIn);
	//alert("in processLogisXML" + theReply);
	okToSend = true;
	if (debugOn>2) alert("XMLResponse:\n " + theReply);
        //alert("XMLResponse:\n " + theReply);
        switch (XMLMode) {
          case 9001:
		// parse out envelope and send zoom to envelope request.
		// parseStreetEnvelope(theReply);
		parseAdresEnvelope(theReply);
                break;
          case 9002:
            //alert("mode9002");
		parseAdresEnvelope(theReply);
                break;
          case 9003:
		parseAdresEnvelope(theReply);
                break;
          case 9004:
		parseAdresEnvelope(theReply);
                break;
          case 9005:
                LogisgetPrintMap(theReply);
                break;
        }

//	if (XMLMode == 9001) {
////		alert("XMLMode=9001");
//		// parse out envelope and send zoom to envelope request.
//		// parseStreetEnvelope(theReply);
//		parseAdresEnvelope(theReply)
//
//	}
//	if (XMLMode == 9002) {
//	//	 alert("XMLMode=9002");
//		parseAdresEnvelope(theReply)
//
//	}
}



function parseAdresEnvelope(theReply) {
	var theError = getXMLErrorMessage(theReply);
	var featureCount = justGetFeatureCount(theReply);
	//endpos = xmlEndPos;
        endpos = 1;
	var inData = parseRecordString(theReply, endpos);
	endpos = xmlEndPos;
	var selectedData = clearLeadingSpace(inData);
       // alert("selectedData:" + selectedData)
	var fName1 = getFieldNames(selectedData);
	var fValue1 = getFieldValues(selectedData);
        selectPoints[0] = getIdValue(fName1, fValue1);

        var fWidth = logisRight - logisLeft;
	var fHeight = logisTop - logisBottom;
	var mWMargin = 0;
	var mHMargin = 0;
	mWMargin = fWidth * selectMargin;
	mHMargin = fHeight * selectMargin; 
   	saveLastExtent();
	eLeft = logisLeft; // - mWMargin;
	eRight = logisRight; // + mWMargin;
	eTop = logisTop; // + mHMargin;
	eBottom = logisBottom; // - mHMargin;
	startLeft = eLeft;
	startTop = eTop;
	startRight = eRight;
	startBottom = eBottom; 

       //alert("extent:" + left + "," + bottom + " " + right + "," + top);
	legendTemp=legendVisible;
	legendVisible=false;
        selectCount = 10;
        sendMapXML();

}

// set the active layer parameters to the Layer
function SetActiveLayerLogis(layerName) {
	var j = -1;
	for (var i=0;i<layerCount;i++) {
		if (LayerName[i]==layerName) j = i;
	}
	if (j>-1) {
		// dbLinkLayerIndex = j
		// dbLinkLayerID = LayerID[dbLinkLayerIndex];
		// dbLinkLayer = LayerName[dbLinkLayerIndex];
		// ActiveLayerIndex = dbLinkLayerIndex;
		// ActiveLayer = dbLinkLayerID;
                // ActiveLayerType = LayerType[dbLinkLayerIndex];
	        ActiveLayerIndex = j;
		ActiveLayer = LayerID[j];
                ActiveLayerType = LayerType[j];
  // alert("layer index,naam,type:" + ActiveLayerIndex + "/" + ActiveLayer + "/" + ActiveLayerType);
	}
  
}

// openen zoekadres formulier
// opent html-paginas in de logisarcims - directory
// dus algemene, die over de verschillende mapservice projecten gelden
function OpenForm(inputhtml,titel) {
		if (useTextFrame) {
			parent.TextFrame.document.location= appDir + "../logisarcims/" + inputhtml;
		} else {
			Win1 = open(appDir + "../logisarcims/" + inputhtml,titel,"width=575,height=" + TextPopupSize + ",scrollbars=yes,resizable=yes");
		}
}
function ZoomAdresForm() {
   OpenForm(LogisAdresHTML,"QueryWindow");
}


function ZoomPercForm() {
   OpenForm(LogisPercHTML,"QueryWindow");
}	

function ZoomSelectBySQLForm() {
   		if (useTextFrame) {
			parent.TextFrame.document.location= appDir + "/" + LogisSelectBySQLForm;
		} else {
			Win1 = open(appDir + "/" + LogisSelectBySQLForm,"QueryWindow","width=575,height=" + TextPopupSize + ",scrollbars=yes,resizable=yes");
		}
}

// create the ArcXML query request 
// 	envelope will parsed from response

function getLogisAdresEnvelope(queryString) {
//	var theFields = LayerIDField[dbLinkLayerIndex] + " " + LayerShapeField[dbLinkLayerIndex];
        var theFields = "#ALL#";	
	var theString = '<ARCXML VERSION="1.0.1">\n<REQUEST>\n<GET_FEATURES outputmode="xml" geometry="false" envelope="true"';
	theString += ' compact="true" featurelimit="' + "1" + '" beginrecord="' + "0" + '">\n';
//        theString += ' compact="true" featurelimit="' + maxFeaturesReturned + '" beginrecord="' + queryStartRecord + '">\n';
	theString += '<LAYER id="' + ActiveLayer + '" ftype="' + ActiveLayerType + '" />';
	if (useLimitExtent) {
		// keep this within the limitExtent
		theString += '<SPATIALQUERY subfields="' + theFields + '" where="' + queryString + '" />';
		theString += '<SPATIALFILTER relation="area_intersection">\n';
		theString += '<ENVELOPE maxx="' + limitRight + '" maxy="' + limitTop + '" minx="' + limitLeft + '" miny="' + limitBottom + '" />\n';
		theString += '</SPATIALFILTER>\n';
		theString += '</SPATIALQUERY>\n';
	} else {
	theString += '<QUERY subfields="' + theFields + '" where="' + queryString + '" />';
	}
	theString += '</GET_FEATURES>';
	theString += '</REQUEST>';
	theString += '</ARCXML>';
	//alert("writeQueryXML()\nQuery XML Request:\n" + theString);
	selectLayer=ActiveLayer;
	selectType=ActiveLayerType;
	selectCount=0;
	hightlightedOne="";
	selectPoints.length=1;
	selectLeft.length=1;
	selectRight.length=1;
	selectTop.length=1;
	selectBottom.length=1;
	return theString;

}

// identify feature
function LogisIdentify(e) {
	highlightedOne="";
	var theX = mouseX;
	var theY = mouseY;
	getMapXY(theX,theY);
	searchTolerance = (xDistance/iWidth) * pixelTolerance;

        // LogisWeb versie 1.6 EJ : mogelijkheid om niet standaardnaam van servlet te gebruiken.
        if (typeof servletURL != 'undefined') {
             var theString = servletURL + "?";
        } else { //zoals voorheen
             var theString = "http://" + hostName + "/servlet/com.esri.esrimap.Esrimap?";
        }
        theString += "name=" + LogisService + "&Cmd=Identify&X1=" + mapX;
        theString += "&Y1=" + mapY;
        theString += "&tolerance=" + searchTolerance;
        theString += "&Projectname=" + LogisProjectName;
        theString += "&Projectpath=" + LogisProjectPath; 
        theString += "&lan=" + LogisLanguage; 
     
        // GISWest aanpassingen
        // als dynamische laag, identifydynamic is waar en het is GEEN image
        // dan extra parameters naar Logis sturen

        if(typeof useIdentifyDynamic != 'undefined' && useIdentifyDynamic && parent.parent.frmHidden.blnImg=="false"){  
            
            // vervang spatie door %20 en \\ door |
            var strLayerName = ReplaceCharsInString(parent.parent.frmHidden.strLaagnaam, " ", "%20");
            var strDatasetName = ReplaceCharsInString(parent.parent.frmHidden.strDataset, " ", "%20");
            var pathDataset = ReplaceCharsInString(g_ShapeWorkspaceDynLagen, "\\", "|");

            if (typeof parent.parent.frmHidden.strKaartBib != 'undefined') {
                var strKaartBibName = parent.parent.frmHidden.strKaartBib;
            } else {
                var strKaartBibName = "";
            }
            if (strKaartBibName != "") {
               theString += "&infoTheme=" + strKaartBibName;
               theString += "&infohtml=" + pathInfoHtml + "info_" + strKaartBibName + ".htm";
            } else {
               theString += "&infoTheme=" + strLayerName + "," + pathDataset + strDatasetName;
               theString += "&infohtml=" + pathInfoHtml + "info_" + strLayerName + "_project.htm";
            }
        }

       //  alert("The string:" + theString);       
//nu het window opvullen met referentie naar textframe en logisarcims
	var Win1 = parent.TextFrame;
	var theFrame = "parent.MapFrame";
	if ((useExternalWindow) || (!useTextFrame)) {
		Win1 = window.open("","QueryWindow","width=575,height=" + TextPopupSize + ",scrollbars=yes,resizable=yes");
		theFrame = "opener";
		if (parent.MapFrame!=null) theFrame = "opener.parent.MapFrame";
	} else {
		Win1 = parent.TextFrame;
		Win1.document.open();
	}
	Win1.document.open();
        // alert(theString);
        Win1.document.location = theString;
	
        //alert(theString);
	//showRetrieveData();
	//var theFunction = "parent.MapFrame.processLogisXML";
	//sendCustomToServer(theString,theFunction, 9003)	
        ///sendToServer(imsQueryURL,theString,identifyXMLMode);
}

// vervang chars1 door chars2 in InString
function ReplaceCharsInString(InString, chars1, chars2) {
   var pos = InString.indexOf(chars1,1);
   while (pos !=-1) {
      InString = InString.replace(chars1, chars2)
      pos = InString.indexOf(chars1,1);
   }
   // alert('InString:' + InString);
   return InString;
}

function LogisSelectByGraphicOpenForm() {
        if (typeof LogisSelectByGraphicForm != 'undefined') {
            var strHelp= appDir + "../logisarcims/select/" + LogisSelectByGraphicForm;
        } else {
            var strHelp=appDir + "logisselectbygraphicform.htm";
        }

	if (useTextFrame) {
			parent.TextFrame.document.location= strHelp;
                        logisSelectByGraphicWindow = parent.TextFrame;
	} else {
//opgelet : titel niet invullen, want dan gebeurt er om duistere redenen niets

			logisSelectByGraphicWindow = open(strHelp,"","width=575,height=" + TextPopupSize + ",scrollbars=yes,resizable=yes");
                       //  logisSelectByGraphicWindow.focus(); helpt blijkbaar toch niet
	}
   //verbergen van layer, die punt ingave weergeeft.
                hideLayer("zoomBoxTop");
		hideLayer("zoomBoxLeft");
		hideLayer("zoomBoxRight");
		hideLayer("zoomBoxBottom");
}

function LogisSelectByGraphic(e) {
	highlightedOne="";
	var theX = mouseX;
	var theY = mouseY;
         
        var strHelp = logisSelectByGraphicWindow.document.selectbygraphicform.shapetype.value;
       if (strHelp == "point") {
           getMapXY(theX,theY);
           boxIt(theX,theY,theX+1,theY+1);
           logisSelectByGraphicWindow.document.selectbygraphicform.x.value = mapX;
   	   logisSelectByGraphicWindow.document.selectbygraphicform.y.value = mapY; 
           searchTolerance = (xDistance/iWidth) * pixelTolerance;
           logisSelectByGraphicWindow.document.selectbygraphicform.tolerance.value=searchTolerance;
        } else if (strHelp == "line") {
          clickType = 2;
           clickAddPoint();
        } else {
           clickType = 3;
           clickAddPoint();
        } 

        if (!useTextFrame) {
             logisSelectByGraphicWindow.focus();
        }  

//        logisEditWindow.document.editform.x.value = mapX;
//	 logisEditWindow.document.editform.y.value = mapY;


}

function LogisEditOpenForm() {
        if (typeof editHTML != 'undefined') {
            var strHelp= appDir + "../logisarcims/edit/" + editHTML;
        } else {
            var strHelp=appDir + "editeer.htm";
        }

	if (useTextFrame) {
			parent.TextFrame.document.location= strHelp;
                        logisEditWindow = parent.TextFrame;
	} else {
			logisEditWindow = open(strHelp,"Editeren","width=575,height=" + TextPopupSize + ",scrollbars=yes,resizable=yes");
	}
   //verbergen van layer, die punt ingave weergeeft.
                hideLayer("zoomBoxTop");
		hideLayer("zoomBoxLeft");
		hideLayer("zoomBoxRight");
		hideLayer("zoomBoxBottom");
  
}

function LogisEdit(e) {
	highlightedOne="";
	var theX = mouseX;
	var theY = mouseY;
         
        var strHelp = logisEditWindow.document.editform.shapetype.value;
       if (strHelp == "point") {
           getMapXY(theX,theY);
           boxIt(theX,theY,theX+1,theY+1);
           logisEditWindow.document.editform.x.value = mapX;
   	   logisEditWindow.document.editform.y.value = mapY; 
//alert('mapX:'+mapX);
        } else if (strHelp == "line") {
           //logisEditWindow.document.editform.x.value = logisEditWindow.document.editform.x.value + ';' + mapX;
   	   //logisEditWindow.document.editform.y.value = logisEditWindow.document.editform.y.value + ';' + mapY;
// alert('x:'+logisEditWindow.document.editform.x.value);
          clickType = 2;
           clickAddPoint();
        } else {
//           logisEditWindow.document.editform.x.value = logisEditWindow.document.editform.x.value + ';' + mapX;
//   	   logisEditWindow.document.editform.y.value = logisEditWindow.document.editform.y.value + ';' + mapY;
// alert('x:'+logisEditWindow.document.editform.x.value);
           clickType = 3;
           clickAddPoint();
        } 
          
// 	var Win1 = parent.TextFrame;
//	var theFrame = "parent.MapFrame";
//	if (useTextFrame) {
//			parent.TextFrame.document.location= appDir + "editeer.htm";
//                        Win1 = parent.TextFrame;
//	} else {
//			Win1 = open(appDir + "editeer.htm","Editeren","width=575,height=" + TextPopupSize + ",scrollbars=yes,resizable=yes");
//	}
	// Win1.document.open();
        // alert(theString);
        // alert ('mapX:'+mapX);
        logisEditWindow.document.editform.x.value = mapX;
	logisEditWindow.document.editform.y.value = mapY;
        if (!useTextFrame) {
             logisEditWindow.focus();
        }  
 //       alert('logisEditWindow.document.editform.x.value:'+logisEditWindow.document.editform.x.value);
}

//aanpassing LOGIS : zoeken naar commando's in WebParams
function getLogisCMD(cmdString) {
	var cmdString2 = cmdString.toUpperCase();
	var startpos = 0;
	var endpos = 0;
        var zoekstraat = '';
        var nwURL = '';

// ofdat het een logis commando is dat via javascript kan worden afgehandeld.
	var pos = cmdString2.indexOf("JCMD=");
	if (pos!=-1) {
          // URL opgestuurd met vooraf ingevuld commando
		startpos = pos + 5;
		endpos = cmdString2.indexOf("&",startpos);
		if (endpos==-1) endpos = cmdString2.length;
                var cmdstr = cmdString2.substring(startpos,endpos);
                return LogisJavaScriptCMD(cmdstr,cmdString2);
        }
        else {
    	   var pos = cmdString2.indexOf("CMD=");
	   if (pos!=-1) {
           // URL opgestuurd met vooraf ingevuld commando voor logisarcims
		startpos = pos + 4;
		endpos = cmdString2.indexOf("&",startpos);
		if (endpos==-1) endpos = cmdString2.length;

        // LogisWeb versie 1.6 EJ : mogelijkheid om niet standaardnaam van servlet te gebruiken.
                if (typeof servletURL != 'undefined') {
   		    nwURL  = servletURL + "?Name=LogisArcIMS&" + cmdString.substring(1,cmdString.length); 
                } else { //zoals voorheen
             	    nwURL  = "http://" + hostName + "/servlet/com.esri.esrimap.Esrimap?Name=LogisArcIMS&" + cmdString.substring(1,cmdString.length);
                }

                nwURL += "&Projectname=" + LogisProjectName;
                nwURL += "&Projectpath=" + LogisProjectPath; 
                //nwURL = makeXMLsafe(nwURL)
                //       alert("Logis commando:" + nwURL);
                //alert("LogisCMD:" + LOGISCMD);
                // window.open(nwURL);
                // parent.TextFrame.location = nwURL;
                //herzetten eventuele opstartparameters
                StartWithMap = true;
                StartWithJpeg = "";
                return nwURL;           
	   }
           else {
              return "";
           }
        } 
        
}
// einde aanpassing LOGIS

function LogisJavaScriptCMD(cmdstr,cmdString2) {
// speciale functies.
   if (cmdstr == 'TOONBPAWVL') {
       //speciaal voor prov. West-Vlaanderen : gescande niet-gegeorefereerd BPA's tonen
        pos = cmdString2.indexOf("FILE=");
        startpos = pos + 5;
        endpos = cmdString2.indexOf("&",startpos);
        if (endpos==-1) endpos = cmdString2.length;
        var strHelp = cmdString2.substring(startpos,endpos);
        pos = cmdString2.indexOf("DIR=");
        startpos = pos + 4;
        endpos = cmdString2.indexOf("&",startpos);
        if (endpos==-1) endpos = cmdString2.length;
        var strDir = cmdString2.substring(startpos,endpos);
	logisDynFile=  '<WORKSPACES>\n';
	logisDynFile+=  '<IMAGEWORKSPACE name="jai_cs-0" directory="' + strDir + '" />\n';
       logisDynFile+=  '</WORKSPACES>\n';
       logisDynFile+=  '<LAYER type="image" name="' + strHelp + '" visible="true" id="99">\n';
        logisDynFile+=  '     <DATASET name="' + strHelp + '" type="image" workspace="jai_cs-0" />\n';
        logisDynFile+=  '</LAYER>\n';
//	logisDynFile+=  '<SHAPEWORKSPACE name="shp_ws-0" directory="C:\\gis\\data\\Zonnebeke" />\n';
//       logisDynFile+=  '</WORKSPACES>\n';
//      logisDynFile+=  '<LAYER type="featureclass" name="grondgebied zonnebeke" visible="true" id="0">\n';
//	logisDynFile+=  '<DATASET name="grondgebied zonnebeke" type="polygon" workspace="shp_ws-0" />\n';
//	logisDynFile+=  '<SIMPLERENDERER>\n';
//	  logisDynFile+=  '<SIMPLEPOLYGONSYMBOL boundarytransparency="1,0" filltransparency="1,0" fillcolor="27,127,227" boundarycaptype="round" />\n';
//	logisDynFile+=  '</SIMPLERENDERER>\n';
//      logisDynFile+=  '</LAYER>\n';
        //nwURL = '';
//alert(logisDynFile);
        return "";
   }
   else if (cmdstr == 'TOONDYNWVL') {
      
      // als GIS dan is workspace gedefineerd in parameterfile, anders in axl
      if ((typeof useGISWest != 'undefined') && (useGISWest)) { 
         logisDynFile =  '<WORKSPACES>\n';
         logisDynFile+=  '<SHAPEWORKSPACE name="shp_ws-dynamic" directory="' + g_ShapeWorkspaceDynLagen + '" />\n';
         logisDynFile+=  '<IMAGEWORKSPACE name="img_ws-dynamic" directory="' + g_ImageWorkspaceDynLagen + '" />\n';
         logisDynFile+=  '</WORKSPACES>\n';
      }
      
      logisDynFile+= parent.parent.frmHidden.strAXL; // parent.parent, omdat parent de frameset van de HTML viewer is en je wil er eentje hoger hebben.
      return "";
   }
   else {
       return "";
   }

}

function writeLogisBufferForm() {
        if (bufferTargetLayerIndex == -1) { //index nog niet geinitialiseerd
            bufferTargetLayerIndex = LogisGetLayerIndexByName(bufferTargetLayer);
        }

 	if (useTextFrame) {
		//if ((is5up) && (isNav)) parent.TextFrame.document.location= appDir + "text.htm";
		var Win1 = parent.TextFrame;
		Win1.document.open();
		var t = "parent.MapFrame";
		
	} else {
		var Win1 = open(appDir + "text.htm","QueryWindow","width=575,height=150,scrollbars=yes,resizable=yes");
			var t = "opener";
			if (parent.MapFrame!=null) t = "opener.parent.MapFrame";
	}
	
	Win1.document.writeln('<html><meta http-equiv="Content-Type" content="text/html; charset=' + charSet + '"><HEAD>');
	Win1.document.writeln('			<script language="javascript">');
	Win1.document.writeln('var t = ' + t);
	Win1.document.writeln('function doLogisBuffer() {');
	Win1.document.writeln('	var f = document.forms[0];');		
	Win1.document.writeln('	t.bufferDistance = f.theDistance.value;');
        Win1.document.writeln('	t.getBufferedData = t.logisgetBufferedData;');
        if (logisCanChangeTargetLayer) {
	 Win1.document.writeln('	theIndex = f.theTarget.selectedIndex;');
	 Win1.document.writeln('	if (theIndex>0) {');
	 Win1.document.writeln('		t.bufferTargetLayer = f.theTarget.options[theIndex].text;');
	 Win1.document.writeln('		t.bufferTargetLayerIndex = parseInt(f.theTarget.options[theIndex].value);');
	 Win1.document.writeln('	} else {');
	 Win1.document.writeln('		t.drawTargetLayer=false;');
	 Win1.document.writeln('		t.getBufferedData = false;');
	 Win1.document.writeln('	}');
       }

 

	// /*

	// */
	Win1.document.writeln('	if (parseFloat(f.theDistance.value)>=0) {');
	Win1.document.writeln('		t.bufferIt();');
	Win1.document.writeln('	} else {');
	Win1.document.writeln('		alert("' + msgList[81] + '");');
	Win1.document.writeln('	}');
	Win1.document.writeln('}');
// nieuw voor setfocus bij popup
	Win1.document.writeln('function doSetFocus() {');
        Win1.document.writeln('setTimeout("self.focus()",250);');
	Win1.document.writeln('}');
// einde
	Win1.document.writeln('</script>');
	Win1.document.writeln('</head>');
	Win1.document.writeln('<body bgcolor="' + textFrameBackColor + '" text="white" leftmargin=0 topmargin=0 onload="doSetFocus()">');
	Win1.document.writeln('<div align="center"><form onsubmit="doLogisBuffer(); return false;">');
	Win1.document.writeln('<table cellspacing="2" cellpadding="0" bgcolor="' + textFrameFormColor + '" width=100%>');
	Win1.document.writeln('<tr><td align="CENTER"><FONT face=Arial><STRONG>Buffer</STRONG></FONT></td></tr>');
	// /*
	Win1.document.writeln('<tr><td align="CENTER"><font face="Arial" size="-2">' + msgList[82]);
      if (logisCanChangeTargetLayer) {
	Win1.document.writeln('<SELECT  name=theTarget>');
	Win1.document.writeln('<option value=-1>' + msgList[87]);
	for (var i=0;i<layerCount;i++) {
		if (LayerType[i]!="image") {
                   if (i == bufferTargetLayerIndex) {
			Win1.document.writeln('<option value=' + i + ' selected>' + LayerName[i]);
                   } else {
                        Win1.document.writeln('<option value=' + i + '>' + LayerName[i]);
                   }
		}
	}
	Win1.document.writeln('</SELECT>');
      }

      if (askbufferDistance) {
 	Win1.document.writeln(msgList[83] + '<input type="Text" name="theDistance" value="' + bufferDistance + '" size="5"> ');
      } else {
	Win1.document.writeln(msgList[83] + '<input type="hidden" name="theDistance" value="' + bufferDistance + '"> ');
      }
	var j = 1;
	for (var i=0;i<sUnitList.length;i++) {
		if (ScaleBarUnits==sUnitList[i]) j=i;
	}

	Win1.document.writeln(sUnitList[j]);

	
	Win1.document.writeln(msgList[84]);
	Win1.document.writeln(LayerName[ActiveLayerIndex]);
	Win1.document.writeln('</font></td></tr>');
	Win1.document.writeln('<tr><td align="CENTER">');
	Win1.document.writeln('<input type="Button" name="theButton" value="' + buttonList[9] + '" onclick="doLogisBuffer()">');

	//Win1.document.writeln('><font face="Arial" size="-2">' + msgList[85] + '</font>');
	Win1.document.writeln('</td></tr>');
	Win1.document.writeln('</table></form></div></body></html>');
	Win1.document.close();
}

function LogisGetLayerIndexByName(inpName) {
    var j=-1;
    //alert('in logisgetlayer voor '+inpName);
    
    for (var i=0;i<LayerName.length;i++) {
        if (LayerName[i]==inpName) {
             j=i;
        } 
   }
   return j;
}

function LogisSetActiveLayerByName(inpName,bOnlyFirstTime) {
// aanpassing LogisWeb 1.6 EJ 17/1/2005
// bijkomende parameter die aangeeft ofdat het actief zetten maar één keer mag gebeuren
// ofwel steeds bij aanklikken van een tool (=default werkwijze logis)

   if ((!bOnlyFirstTime) || (logisbFirstsetAutomaticActiveLayer)) { //als eerste keer is of als het er niet toe doet

            if (inpName != '') {
                j=LogisGetLayerIndexByName(inpName);
                if (j > -1) {
                   setActiveLayer(j);
                   //dit ook tonen in toc.htm indien geladen
                     if (aimsLegendPresent) {
			if ((imsURL!="") && (hasTOC)) {
				if (!legendVisible) {
		  			   parent.TOCFrame.document.location=appDir+"toc.htm";
				} 
			}
 		    }

                }
            }
    }
    if (bOnlyFirstTime) {
         logisbFirstsetAutomaticActiveLayer=false;
    }
}



//Volgende routine wordt opgeroepen vanuit de logistoolbar.html bij klikken op een tool
// deze voorziet in de mogelijkheid dat de activelayer al gezet wordt voor bepaalde acties,
// zodat het knopje "actief zetten layer" niet moet voorzien worden en dat de beheerder al direct
// kan voorzien welke acties op welke lagen worden uitgevoerd.


function LogisclickFunction (toolName) {
// aanpassing LogisWeb 1.6 EJ 17/1/2005
// bijkomende parameter die aangeeft ofdat het actief zetten maar één keer mag gebeuren
// ofwel steeds bij aanklikken van een tool (=default werkwijze logis)


   if (typeof logisbsetAutomaticActiveLayer == 'undefined') {
        bsetAutomaticActiveLayer = true; //defaultwaarde
   } else {
        bsetAutomaticActiveLayer = logisbsetAutomaticActiveLayer;
   } 


  var j=-1;	
	switch(toolName) {
	
        // Identify-Hyperlink functions
	case "identify":
//          alert("Identifylayer:" + logisIdentifyLayer);
            LogisSetActiveLayerByName(logisIdentifyLayer,!bsetAutomaticActiveLayer);
	    break
 
	case "query":
// alert("querylayer:" + logisQueryLayer);
            LogisSetActiveLayerByName(logisQueryLayer,!bsetAutomaticActiveLayer);
 	    break

      	case "selectbox": 
            LogisSetActiveLayerByName(logisSelectLayer,!bsetAutomaticActiveLayer);
 	    break

      	case "selectshape": 
            LogisSetActiveLayerByName(logisSelectLayer,!bsetAutomaticActiveLayer);
 	    break   

      	case "selectline": 
            LogisSetActiveLayerByName(logisSelectLayer,!bsetAutomaticActiveLayer);
 	    break

      	case "selectpoint": 
            LogisSetActiveLayerByName(logisSelectLayer,!bsetAutomaticActiveLayer);
 	    break

      	case "selectpoly": 
            LogisSetActiveLayerByName(logisSelectLayer,!bsetAutomaticActiveLayer);
 	    break

      	case "selectcircle": 
            LogisSetActiveLayerByName(logisSelectLayer,!bsetAutomaticActiveLayer);
 	    break


        case "buffer":
          if ((typeof useLogisBuffer != 'undefined') && (useLogisBuffer)) { 
               toolName = "logisbuffer"
           }
           break
      
    //    case "logissetscale":
  //	    var screenDPI = 96;
    //        alert('schaal 1:'+ Math.round(mapScaleFactor/(0.0254/screenDPI)));
      //     	    
        //    break
 
       }   //einde switch
         // nu gewone clickFunction oproepen
         clickFunction (toolName);
}         


//print to specified scale
// de kaart wordt eerst heropgevraagd met extent ingesteld volgens gewenste schaal
// Daarna wordt controle overgedragen naar LogisGetPrintMap die dan op zijn beurt
// de standaard verwerking in getPrintMap oproept.

// versie 1.6 : bijkomende parameter die gebruikt wordt in aimPrint.js_writePrintPage()
function LogisScalePrintMap2(title,vScale,bPrintOVMap) {
     logisbPrintOVMap = bPrintOVMap;
     LogisScalePrintMap(title,vScale)
}

function LogisScalePrintMap(title,vScale) 
{
  // (MB - afdruksjablonen) - logging
  logisAddLog('<br><b>LogisScalePrintMap</b>');
  if (!logisPrintExtent)
  {
    logisAddLog(' (op SCHAAL - sjabloon: ' + logisPrintTemplateURL + ')<br>');
  }
  else
  {
    logisAddLog(' (op EXTENT - sjabloon: ' + logisPrintTemplateURL + ')<br>');
  };

  logisPrintScaleFactor=true;
	printTitle=title;
	//getMapXY(mouseX,mouseY);
        
  var screenDPI = 96;

  // bewaar instellingen om , na printen terug te zetten, zodat de gewone kaart
  // nog juiste instellingen bevat.
  lgiHeight=iHeight;
  lgiWidth=iWidth;
  lgeLeft=eLeft;
  lgeRight=eRight;
  lgeBottom=eBottom;
  lgeTop=eTop;

	var tempLeft=lastLeft;
	var tempRight=lastRight;
	var tempTop=lastTop;
	var tempBottom=lastBottom;

  var midX = lastLeft + ((lastRight - lastLeft) / 2);
  var midY = lastBottom + ((lastTop - lastBottom) / 2);
	saveLastExtent();
  var mFactor;

	MapUnits = MapUnits.toUpperCase();
	if (MapUnits == "FEET") {
		mFactor = 0.083312;
	} else if (MapUnits == "METERS") {
		mFactor = 0.0254;
	} else if (MapUnits == "DEGREES") {
		mFactor = 0.000000228428;
	}	

	muFactor = mFactor/screenDPI;
  // als schaal 0 is meegestuurd : dan huidige schaal van kaart nemen
  if (vScale == 0) 
  {
    vScale = Math.round(((eRight-eLeft)/iWidth)/(0.0254/screenDPI));
  }

  //var hschaal = Math.round(((eRight-eLeft)/iWidth)/(0.0254/screenDPI));
  //var vScale = prompt("Zet schaal 1:",hschaal); 

  // aanpassing MapX-Y vervangen door x-yMid (midden kaart)
  var xMid = eLeft + ((eRight-eLeft)/2);
  var yMid = eBottom + ((eTop-eBottom)/2);

  // (MB - afdruksjablonen)
  // - grootte van de afdruk aanpassen aan instellingen van sjabloon
  if ((logisPrintWidth != 0) && (logisPrintHeight != 0))
  {
    var tmpWidth = getLogisPWidth();
    var tmpHeight = getLogisPHeight();
    iWidth = tmpWidth;
    iHeight = tmpHeight;
  };

  if (!logisPrintExtent)
  {
    eLeft = xMid - ((vScale * muFactor * iWidth) / 2);
    eRight = xMid + ((vScale * muFactor * iWidth) / 2);
    eTop = yMid + ((vScale * muFactor * iHeight) / 2);
    eBottom = yMid - ((vScale * muFactor * iHeight) / 2);
  };
  
  // alert(eLeft + " : " + mapX + " : " + vScale + " : " + muFactor + " : " + iWidth);


/*******************************
  LogisWEb versie 1.6 6/1/2004
  bug in ArcIMS  beforeMapRefresh() en afterMapRefresh() worden
  gedefinieerd in MapFrame.htm en in aimsMap.js
  wij hebben deze in aimsMap.js hernoemd naar beforeMapRefresh2 en 
  afterMapRefresh2 en daar wordt de code gestopt die uitgevoerd dient te worden
  vandaar dat hier de oproep aangepast is naar beforeMapRefresh2 en afterMapRefresh2
*******************************
*/

  beforeMapRefresh2();
	showRetrieveMap();
	var theText = writeXML();
	if (debugOn==2) alert(msgList[12] + theText);
// alert('theText:' + theText);
	var lastLeft=tempLeft;
	var lastRight=tempRight;
	var lastTop=tempTop;
	var lastBottom=tempBottom;
	sendToServer(imsURL,theText,9005);
}


//start eigenlijke opmaak
function LogisgetPrintMap(theReply) {
	getPrintMap(printTitle);
}

function LogisResetPrintVar() {
  iHeight=lgiHeight;
  iWidth=lgiWidth;
  eLeft=lgeLeft;
  eRight=lgeRight;
  eBottom=lgeBottom;
  eTop=lgeTop;
  logisPrintScaleFactor=false;

//alert('breedte=' + (eRight - eLeft));
}

// zoom to specified scale
// is vervangen , zodat geen klik in de kaart meer nodig is.
//function LogisSetScale(e) {
//	getMapXY(mouseX,mouseY);
//	var tempLeft=lastLeft;
//	var tempRight=lastRight;
//	var tempTop=lastTop;
//	var tempBottom=lastBottom;
//	saveLastExtent();
//	
//	//var vScale = parent.ToolFrame.document.theScaleBox.value;
  //     
//	//var vScale=10000;
//        var mFactor;
//	MapUnits = MapUnits.toUpperCase();
//
//	if (MapUnits == "FEET") {
//		mFactor = 0.083312;
//	} else if (MapUnits == "METERS") {
//		mFactor = 0.0254;
//	} else if (MapUnits == "DEGREES") {
//		mFactor = 0.000000228428;
//	}	
//
//	//var screenDPI = 72;
//	//if (navigator.OS == "win" || ((navigator.org == "microsoft") && (navigator.version >= 5)) ) {
//		screenDPI = 96;
//	//}
//
//	muFactor = mFactor/screenDPI;
//
  //    // var hschaal = Math.round(mapScaleFactor/(0.0254/screenDPI));
//var hschaal = Math.round(((eRight-eLeft)/iWidth)/(0.0254/screenDPI));
//        var vScale = prompt("Zet schaal 1:",hschaal); 

//	eLeft = mapX - ((vScale*muFactor*iWidth)/2);
//	eRight = mapX + ((vScale*muFactor*iWidth)/2);
//	eTop = mapY + ((vScale*muFactor*iHeight)/2);
//	eBottom = mapY - ((vScale*muFactor*iHeight)/2);
//	
//	sendMapXML();
//}


// bereken huidige schaal :
function LogisGetScale() {
       var screenDPI=96;
       var hscal=Math.round(((eRight-eLeft)/iWidth)/(0.0254/screenDPI));
       return hscal;
}

function LogisGetFormattedScale() {
  return FormatNumber(LogisGetScale(),0,false,",",".");
}


// zoom to specified scale
function LogisSetScale(newScale,bRefreshMap) {
  if (IsNumeric(newScale)) {
        while (newScale.indexOf(".") != -1) {
            bpos=newScale.indexOf(".");           
            newScale = newScale.substring(0, bpos) + newScale.substring(bpos+1, newScale.length);
        }
//alert("lastLeft=" + lastLeft + "  LastRight=" + lastRight + "  LastTop=" + lastTop + "  lastBottom=" + lastBottom);
//alert("mapX=" + mapX + "  mapY=" + mapY);
	var tempLeft=lastLeft;
	var tempRight=lastRight;
	var tempTop=lastTop;
	var tempBottom=lastBottom;
	saveLastExtent();

        var mFactor;
	MapUnits = MapUnits.toUpperCase();

	if (MapUnits == "FEET") {
		mFactor = 0.083312;
	} else if (MapUnits == "METERS") {
		mFactor = 0.0254;
	} else if (MapUnits == "DEGREES") {
		mFactor = 0.000000228428;
	}	

	//var screenDPI = 72;
	//if (navigator.OS == "win" || ((navigator.org == "microsoft") && (navigator.version >= 5)) ) {
		screenDPI = 96;
	//}

	muFactor = mFactor/screenDPI;
  
 // aanpassing MapX-Y vervangen door x-yMid (midden kaart)
   var xMid = eLeft + ((eRight-eLeft)/2);
   var yMid = eBottom + ((eTop-eBottom)/2);

	//eLeft = mapX - ((newScale*muFactor*iWidth)/2);
	//eRight = mapX + ((newScale*muFactor*iWidth)/2);
	//eTop = mapY + ((newScale*muFactor*iHeight)/2);
	//eBottom = mapY - ((newScale*muFactor*iHeight)/2);


	eLeft = xMid - ((newScale*muFactor*iWidth)/2);
	eRight = xMid + ((newScale*muFactor*iWidth)/2);
	eTop = yMid + ((newScale*muFactor*iHeight)/2);
	eBottom = yMid - ((newScale*muFactor*iHeight)/2);

  
    if (bRefreshMap) {
        sendMapXML();
     }

   } //end if not valid scale
}




function IsNumeric(strString) {
   //  check for valid numeric strings	

   var strValidChars = "0123456789.";
   var strChar;
   var blnResult = true;

   if (strString.length == 0) return false;

   //  test strString consists of valid characters listed above
   for (i = 0; i < strString.length && blnResult == true; i++)
      {
      strChar = strString.charAt(i);
      if (strValidChars.indexOf(strChar) == -1)
         {
         blnResult = false;
         }
      }
   return blnResult;
}




function FormatNumber(num,decimalNum,bolLeadingZero,strDecimalPoint,strSeparator)
/**********************************************************************
	IN:
		NUM - the number to format
		decimalNum - the number of decimal places to format the number to
		bolLeadingZero - true / false - display a leading zero for
										numbers between -1 and 1
                strDecimalPoint - string to use as decimal (point or comma)
		strSeparator - put this as number separator (point or comma)
 
	RETVAL:
		The formatted number!
 **********************************************************************/
{ 
        if (isNaN(parseInt(num))) return "NaN";

	var tmpNum = num;
	var iSign = num < 0 ? -1 : 1;		// Get sign of number
	
	// Adjust number so only the specified number of numbers after
	// the decimal point are shown.
	tmpNum *= Math.pow(10,decimalNum);
	tmpNum = Math.round(Math.abs(tmpNum))
	tmpNum /= Math.pow(10,decimalNum);
	tmpNum *= iSign;					// Readjust for sign
	
	
	// Create a string object to do our formatting on
	var tmpNumStr = new String(tmpNum);

	// See if we need to strip out the leading zero or not.
	if (!bolLeadingZero && num < 1 && num > -1 && num != 0)
		if (num > 0)
			tmpNumStr = tmpNumStr.substring(1,tmpNumStr.length);
		else
			tmpNumStr = "-" + tmpNumStr.substring(2,tmpNumStr.length);
		
	// See if we need to put in the commas
	if ((num >= 1000 || num <= -1000)) {
		var iStart = tmpNumStr.indexOf(strDecimalPoint);
		if (iStart < 0)
			iStart = tmpNumStr.length;

		iStart -= 3;
		while (iStart >= 1) {
			tmpNumStr = tmpNumStr.substring(0,iStart) + strSeparator + tmpNumStr.substring(iStart,tmpNumStr.length)
			iStart -= 3;
		}		
	}

	return tmpNumStr;		// Return our formatted string!
}


/* 
****************************************************
LOGIS Logisweb versie 1.6 6/01/2005 EJ
   functie met acties die uitgevoerd moeten worden bij een Map Refresh
   de aangeroepen functies staan in logisExtra.js
   initieel: dko 28072004
***************************************************
*/
function TriggeredByMapRefresh(){
   // tonen van de schaal in een frame
   if ((typeof useShowScale != 'undefined') && useShowScale){
      setShowScale();
   }
   // versie 1.6 : variabele opvullen met huidige schaal (oa om op statusbalk te tonen)
   logiscurrentscale=LogisGetFormattedScale(); //LogisGetScale();
   return true;
}


/* 
*************************************************************************************
LOGIS Logisweb versie 1.6 6/01/2005 EJ
controle maximale zoomin
   functie die regelt dat er niet verder kan worden ingezoomd dan een bepaald schaal
*************************************************************************************
*/
function setMaxZoomInScale(){
   // bepaal schaal
   var screenDPI=96;
   var hscal=Math.round(((eRight-eLeft)/iWidth)/(0.0254/screenDPI));
   if (hscal < intMaxZoomInToScale) {
      alert (strMaxZoomMelding);
     // oproepen via functie en zowel eRight,eLeft, eTop en eBottom herberekenen.
     // want als een extent wordt doorgestuurd naar ArcIMS, behoudt die eBottom en eTop en
     // eRight en eLeft worden herberekend volgens de ratio van het mapframe.
      LogisRecalcExtent(intMaxZoomInToScale);
/*
      // mimimale breedte kaart
      var intMinWidthMap = intMaxZoomInToScale*(0.0254/screenDPI)*iWidth;
      // bepaal huidige midden
      var intMidMap = eLeft + ((eRight-eLeft)/2);
      // pas links en rechts aan (hoogte schaalt dan mee
      eRight = intMidMap + (intMinWidthMap/2); 
      eLeft = intMidMap - (intMinWidthMap/2);
*/
   }
}

function setMaxZoomOutScale(){
   // bepaal schaal
   var screenDPI=96;
   var hscal=Math.round(((eRight-eLeft)/iWidth)/(0.0254/screenDPI));
   var vscal=Math.round(((eTop-eBottom)/iHeight)/(0.0254/screenDPI));
//   var hscal=((eRight-eLeft)/iWidth)/(0.0254/screenDPI);
//alert("hscal:" + hscal + "  max:" + intMaxZoomOutToScale);
// daar bij uitzoomen het kan voorkomen dat de door zoomout berekende extent aangepast wordt naar de
// limits van de mapservice (omdat de berekende extent buiten de limits ligt) dienen zowel hscal en vscal
// berekend te worden. Want het kan zijn dat , bij een verticaal langgerekte kaart de hscal nog binnen de
// schaalgrens valt en de vscal niet meer.
// Daar ArcIMS werkt met eTop en eBottom om zich op te baseren om eLeft en eRight te berekenen, kan het zo
// gebeuren dat er toch buiten de schaalgrenzen wordt uitgezoomed.
// 
   if ((vscal > intMaxZoomOutToScale) || (hscal > intMaxZoomOutToScale)) {
      alert (strMaxZoomMelding);
     // oproepen via functie en zowel eRight,eLeft, eTop en eBottom herberekenen.
      LogisRecalcExtent(intMaxZoomOutToScale);
   }
}




function LogisRecalcExtent(newScale) {
  if (IsNumeric(newScale)) {
//onderstaande eruit want newScale is geen string, en dan vliegt de browser buiten bij volgende
     //   while (newScale.indexOf(".") != -1) {
     //       bpos=newScale.indexOf(".");           
     //       newScale = newScale.substring(0, bpos) + newScale.substring(bpos+1, newScale.length);
     //   }
	var tempLeft=lastLeft;
	var tempRight=lastRight;
	var tempTop=lastTop;
	var tempBottom=lastBottom;
        var mFactor;
	MapUnits = MapUnits.toUpperCase();
	if (MapUnits == "FEET") {
		mFactor = 0.083312;
	} else if (MapUnits == "METERS") {
		mFactor = 0.0254;
	} else if (MapUnits == "DEGREES") {
		mFactor = 0.000000228428;
	}	
	//var screenDPI = 72;
	//if (navigator.OS == "win" || ((navigator.org == "microsoft") && (navigator.version >= 5)) ) {
		screenDPI = 96;
	//}

	muFactor = mFactor/screenDPI;
  
 // aanpassing MapX-Y vervangen door x-yMid (midden kaart)
   var xMid = eLeft + ((eRight-eLeft)/2);
   var yMid = eBottom + ((eTop-eBottom)/2);
	eLeft = xMid - ((newScale*muFactor*iWidth)/2);
	eRight = xMid + ((newScale*muFactor*iWidth)/2);
	eTop = yMid + ((newScale*muFactor*iHeight)/2);
	eBottom = yMid - ((newScale*muFactor*iHeight)/2);
 

   } //end if not valid scale

}

// (MB - afdruksjablonen)
// - functies om de groote van de kaarten te berekenen rekening houdend met de
//   gekozen eenheid (cm of pixels) en de keuze om de extend te behouden

function getLogisPScale(aiWidth)
{
  var tmpScale = Math.round(((eRight - eLeft) / aiWidth) / (0.0254 / logisPrintDPI));
  
  return tmpScale;
}

function getLogisPSize(asType)
{
  logisAddLog('<br><b>getLogisPSize(' + asType + ')</b></br>');

  // omzettingsfactir instellen indien de afmetingen in centimeter zijn
  if (logisPrintSizeInCm)
  {
    var logisPrintFact = (logisPrintDPI / 2.54);  // (DPI / inch_per_cm)
  }
  else
  {
    var logisPrintFact = 1;
  }

  logisAddLog('w-kaart: ' + iWidth + ' h-kaart: ' + iHeight + ' w-temp: ' + logisPrintWidth + ' (' + logisPrintWidth * logisPrintFact + ') h-temp: ' + logisPrintHeight + ' (' + logisPrintHeight * logisPrintFact + ')<BR>');

  // kaart of overview verwerken
  if ((asType == "W") || (asType == "H"))
  {
    // berekenen van de afdrukgrootte in pixels, rekening houdend met een 
    // eventuele beperking op de huidige extent
    if ((logisPrintWidth != 0) && (logisPrintHeight != 0))
    {
      // grootte in omzetten in pixels afhankelijk van tmpCm
      var tmpWidth = logisPrintWidth * logisPrintFact;
      var tmpHeight = logisPrintHeight * logisPrintFact;
    
      // aanpassen grootte indien beperking op extent
      if (logisPrintExtent)
      {
        var tmpFW = (tmpWidth / iWidth);
        var tmpFH = (tmpHeight / iHeight);
        
        if (tmpFW < tmpFH)
        {
          // nieuwe hoogte berekenen om de extend juist te houden
          tmpHeight = (iHeight * tmpFW);
          logisAddLog('aanpassen height: ' + iHeight + ' * ' + tmpFW + ' = ' + tmpHeight + ' (tmpHeight)<BR>');
        } 
        else
        {
          // nieuwe breedte berekenen om de extend juist te houden
          tmpWidth = (iWidth * tmpFH);
          logisAddLog('aanpassen width: ' + iWidth + ' * ' + tmpFH + ' = ' + tmpWidth + ' (tmpWidth)<BR>');
        }
      }
    }
    else
    {
      var tmpWidth = iWidth;
      var tmpHeight = iHeight;
    }
  }    
  else
  {
    if ((logisPrintOVWidth != 0) && (logisPrintOVHeight != 0))
    {
      // grootte in omzetten in pixels afhankelijk van tmpCm
      var tmpWidth = logisPrintOVWidth * logisPrintFact;
      var tmpHeight = logisPrintOVHeight * logisPrintFact;
    }
    else
    {
      var tmpWidth = i2Width;
      var tmpHeight = i2Height;
    }
  }

  if ((asType == 'W') || (asType == 'OVW')) var tmpWaarde = tmpWidth;
  if ((asType == 'H') || (asType == 'OVH')) var tmpWaarde = tmpHeight;
  tmpWaarde = Math.round(tmpWaarde);

  logisAddLog('resultaat = ' + tmpWaarde + ' (FW= ' + tmpFW + ' - FH= ' + tmpFH + ')<br>');
    
  return tmpWaarde;
}

function getLogisPWidth()
{
  return getLogisPSize('W');
}

function getLogisPHeight()
{
  return getLogisPSize('H');
}

function getLogisPOVWidth()
{
  return getLogisPSize('OVW');
}

function getLogisPOVHeight()
{
  return getLogisPSize('OVH');
}

function logisAddLog(asText)
{
  // logging enkel tonen indien gewenst
  if (logisWinLogOn)
  {
    if (logisWinLog == null)
    {
      logisWinLog = open("", "logisLoggingWindow");
      logisWinLog.document.writeln('<HTML><HEAD><TITLE>Logis Logging Window</TITLE></HEAD>');
      logisWinLog.document.writeln('<SCRIPT LANGUAGE="JavaScript">');
      logisWinLog.document.writeln('var t;');
      logisWinLog.document.writeln('if (opener.name=="MapFrame")');
      logisWinLog.document.writeln('{');
      logisWinLog.document.writeln('  t = opener.parent.MapFrame;');
      logisWinLog.document.writeln('}');
      logisWinLog.document.writeln('else');
      logisWinLog.document.writeln('{');
      logisWinLog.document.writeln('  t = opener;');
      logisWinLog.document.writeln('}');
      logisWinLog.document.writeln('function resetLogisWinLog(){t.logisWinLog = null;}');
      logisWinLog.document.writeln('</SCRIPT>');
      logisWinLog.document.writeln('<BODY onUnload="resetLogisWinLog();"><DIV ID="LOGTEXT"></DIV></BODY></HTML>');
      logisWinLog.document.close();
    }
    
    var tmpLogText = logisWinLog.document.getElementById("LOGTEXT").innerHTML;
    logisWinLog.document.getElementById("LOGTEXT").innerHTML = tmpLogText + asText;
  };
};
