<!-- CROtec feb 2007 -->


var sVersion = "2.0.0";
var xmlns = "http://www.bentley.com/FlexiMap"
var xmlns_xsi = "http://www.w3.org/2001/XMLSchema-instance";
var xsi_schemaLocation = "http://www.bentley.com/FlexiMap FMRequest.xsd";

function createRootElement(frag,elementName) { 

  if (typeof frag.createElementNS != 'undefined') { 
  
     var fragRequest = frag.createElementNS(xmlns, elementName); 

     fragRequest.setAttribute("version", sVersion); 

     fragRequest.setAttribute("xmlns:xsi", xmlns_xsi); 

     fragRequest.setAttribute("xsi:schemaLocation", xsi_schemaLocation); 

     return fragRequest; 

  } 

  if (typeof frag.createElement != 'undefined') { 
      
     var fragRequest = frag.createElement(elementName); 

     fragRequest.setAttribute("version", sVersion); 

     fragRequest.setAttribute("xmlns", xmlns); 

     fragRequest.setAttribute("xmlns:xsi", xmlns_xsi); 

     fragRequest.setAttribute("xsi:schemaLocation", xsi_schemaLocation); 

     return fragRequest; 

  } 

  return false; 

} 

function createElement(frag,elementName) { 

  

  if (typeof frag.createElementNS != 'undefined') { 

    return frag.createElementNS(xmlns, elementName); 

  } 

  if (typeof frag.createElement != 'undefined') { 

    return frag.createElement(elementName); 

  } 

  return false; 

} 

function print_content()
{

 var  disp_setting="toolbar=yes,location=no,directories=yes,menubar=yes,";
 
 disp_setting+="scrollbars=yes,width=650, height=600, left=100, top=25"; 
 
 var content_vlue = document.getElementById("frame_veel_data").src
 
 var docprint=window.open(content_vlue,"",disp_setting); 

 //docprint.focus(); 
 //docprint.print(); 


}
function stopInfoListener(){

 GEvent.clearListeners(map, "click" );

}

function startInfoListener() {

stopInfoListener();
GEvent.addListener(map, "click", function(marker, point) {
    if (marker) {
       // alert( ' marker geklikt ' );
       } else {
       
       //var info_html;
       
       //info_html = show_info( point );
       
       //  alert( sHTML );
       
        map.removeOverlay(INFO_marker);
              // INFO_marker = new GMarker(point, icon);
             INFO_marker = new GMarker(point, {icon: new GIcon(G_DEFAULT_ICON, "images/info_crotec.png"), draggable: true});
       			
               
               map.addOverlay(INFO_marker);
               
               var info_html;
	              	
	        info_html = show_info( INFO_marker.getPoint() );
	        if( info_html.length > 0 )
	        {
          	  INFO_marker.openInfoWindowHtml( info_html );
          	}  
       	
               GEvent.addListener(INFO_marker, "dragstart", function() {
       	  //INFO_marker.openInfoWindowHtml( 'dragstart' );				
       		});
       		
       	//Draggen van de marker, end event
       	GEvent.addListener(INFO_marker, "dragend", function() {			
       //	map.panTo(INFO_marker.getPoint());
       	var info_html;
       	
       	info_html = show_info( INFO_marker.getPoint() );
       	
       	if( info_html.length > 0 )
       	{
       	  INFO_marker.openInfoWindowHtml( info_html );
       	}  
       	
       							
	});
	
     }  
     });  
}

function show_info( point )
{
    
   if ( map.getZoom() < 16 )
   {
      var  project_record_value;
      project_record_value = get_project_by_point( point );
      var project_record = project_record_value.split(';');
    
      if( project_naam == project_record[0] )
      {
        //if( ( sServiceName !=  '0241') && ( sServiceName !=  '') )   // dit zijn niet klikbare plannen !!
        if( ( sServiceName !=  '') )   // dit zijn niet klikbare plannen !!
        {
          var dns_name = show_info_detail( point ) ;
          
          var replacement = '212.178.203.23';
	       
	  return( dns_name.replace( new RegExp(replacement, 'g'), 'data.ropubliceer.nl')  );
    
	  // return( show_info_detail( point ) );
        }
        else
        {
          return( 'Dit plan is niet klikbaar! Voor de plankaart klik linksboven op PLANINFO.' );
        }
      }
      else
      {
     	 
     	return( show_info_overzicht( point ) );
     	
       }
    
   }
   else
   {
   
     
     var return_value;
      
     var  project_record_value;
     project_record_value = get_project_by_point( point );
      var project_record = project_record_value.split(';');
    
       if( project_naam == project_record[0] )
       {
         if( ( sServiceName !=  '0241') && ( sServiceName !=  '') )   // dit zijn niet klikbare plannen !!
         {
          var dns_name = show_info_detail( point ) ;
	  var replacement = '212.178.203.23';
	  	       
	  return( dns_name.replace( new RegExp(replacement, 'g'), 'data.ropubliceer.nl')  );
    
	  // return( show_info_detail( point ) );
	 }
	 else
	 {
	   return( '<div style="width: 24em;background-color:#DDDDDD;border-color: #003366;">Dit plan is niet klikbaar!<BR><BR> Voor de plankaart klik linksboven op PLANINFO.</div>' );
        }
       }
       else
       {
	 
	return( show_info_overzicht( point ) );
	
       }
     
   } 
  
}

function show_info_detail( point )
{

var new_y;
var new_x;

new_y = eval(point.y) + eval(correctie_lat);
new_x = eval(point.x) + eval(correctie_lon);

//alert( new_y );

x = wgs842rd_x(new_y, new_x);
y = wgs842rd_y(new_y, new_x);


var frag;
var sendXML;

var sVersion = "2.0.0";
var xmlns = "http://www.bentley.com/FlexiMap"
var xmlns_xsi = "http://www.w3.org/2001/XMLSchema-instance";
var xsi_schemaLocation = "http://www.bentley.com/FlexiMap FMRequest.xsd";


var sHTML = "";

if( null != sServiceName  )
{

if(isIE)
{
	frag = new ActiveXObject("Microsoft.XMLDOM");
}
else
{
	frag = document.implementation.createDocument("", "", null);
}


//functions added to create xmlelements in a browserproof way.... 
 
var fragRoot = frag.createElement("fragroot");
frag.appendChild(fragRoot);

var fragRequest = createRootElement(frag, "FMGetInfo"); 
fragRoot.appendChild(fragRequest);

var fragService = createElement(frag,"Service"); 
fragServiceText = frag.createTextNode(sServiceName);
fragService.appendChild(fragServiceText);
fragRequest.appendChild(fragService);

var fragClickPnt = createElement(frag,"ClickPoint"); 
fragRequest.appendChild(fragClickPnt);
fragClickPnt.appendChild(frag.createTextNode(x + " " + y));

var mapRes = "0.2";
var fragMapRes = createElement(frag,"MapResolution"); 
fragRequest.appendChild(fragMapRes);
fragMapRes.appendChild(frag.createTextNode(mapRes));


if(isIE)
{
	sendXML = fragRequest.xml;
}
else
{
	ser = new XMLSerializer();
	sendXML = ser.serializeToString(fragRequest);
}


 //alert( sendXML );

responseXML = retrieveXML(sendXML);
responseTag = responseXML.documentElement.tagName;

if(responseTag == "FMServiceExceptionReport")
{
	alert("An error has occurred:\nReason: " +
		responseXML.getElementsByTagName("Reason")[0].childNodes[0].nodeValue + "\nDescription: " +
		responseXML.getElementsByTagName("Description")[0].childNodes[0].nodeValue);
	return false;
}

var frame_data;

frame_data = "";
sHTML = "";

//     var xsl = new ActiveXObject("Microsoft.XMLDOM");
//     xsl.async = false

//     xsl.load("report.xsl");

//     sHTML = responseXML.documentElement.transformNode(xsl.documentElement);



//////////////////////////////////////////

// Loop through document, searching for specific elements
	var root = responseXML.documentElement;

var infomessage = "";

var plus_info;

plus_info = 0;

	var RepNode = root.getElementsByTagName("Report");

	for (var i = 0;i < RepNode.length ;i++)
	{
	  reportname = new String(RepNode[i].getAttribute("name"));

	
//alert( reportname);

                 var sReportTbl ='';

		//for FF
		var Header = RepNode[i].getElementsByTagName("Header").item(0);
		var HNode = Header.getElementsByTagName("Item");

		//var HNode = root.getElementsByTagName("Report["+ i +"]/Header/Item");

		var sHeader= '<tr>';
		for (var j = 0;j < HNode.length ;j++)
		{
			if (HNode[j].getAttribute("alias")) {
				sHeader +=  '<th>' + HNode[j].getAttribute("alias") + '</th>';
			}
			else
			{
				sHeader +=  '<th>' + HNode[j].firstChild.nodeValue + '</th>';
			}
		}


		//sReportTbl += sHeader + '</tr>';

    //For FF
    var Records = RepNode[i].getElementsByTagName("Records").item(0);
		var RecNode = Records.getElementsByTagName("Record");

  	//var RecNode = root.getElementsByTagName("Report["+ i +"]/Records/Record");

		var sRecord='';

		for (var j = 0;j < RecNode.length ;j++)
		{
	  

      // for FF
      var itmNode = RecNode[j].getElementsByTagName("Item");


              	for (var k = 0;k < itmNode.length ;k++)
			{
				if (itmNode[k].firstChild) {

 var correct_value;

          correct_value = itmNode[k].firstChild.nodeValue;
          
 
 
     //     correct_value = correct_value.replace( /"/g, '`' );
     //     correct_value = correct_value.replace( /\//g, '|' );

      if( k == 0 )
          {
          
            if( reportname.indexOf( "aplus" ) == 0 )
	               {
	                 plus_info = 1;
	                 sRecord += '<font style="font-size: 10px;font:Arial;width:240px;">Hier is tevens een <B>herziening</B> van kracht!</font><BR><li>';
	               }
	               else
	               {
	                  if( reportname.indexOf( "overig" ) == 0 )
	   		{
	   		  //plus_info = 1;
	   		  sRecord += '<BR><font style="font-size: 10px;font:Arial;width:240px;">Hier geldt ook:</font><BR><li>';
	           	}
	   	        else
	                   {
	   		  if( reportname.indexOf( "dubbel" ) == 0 )
	   		  {
	   		    //plus_info = 1;
	   		     sRecord += '<BR><font style="font-size: 10px;font:Arial;width:240px;">Hier geldt ook een <B>Dubbelbestemming</B>!</font><BR><li>';
	   		  }
	   		  else
	   		  {
	                         sRecord += '<li>';
	                     }      
	                   }  
            }
            
            
            if( (correct_value.indexOf( ".htm" ) > 0) || (correct_value.indexOf( ".asp" ) > 0) || (correct_value.indexOf( ".pdf" ) > 0))
            {
              if( correct_value.indexOf( "http:" ) == 0 )
              {
                sRecord += '<a href="#" onclick="javascript:toon_veel_data(\'' + correct_value + '\');">';
              }
              else
              {
                 if( correct_value.indexOf( "." ) == 0 )
                 {
                   sRecord += '<font style="width:180px;font:small Arial; textDecoration:underline;font-size: 10px;" onclick="javascript:toon_veel_data(\'' + correct_value + '\');">';
                 }
                 else
                 {
                   sRecord += '<a href="' + 'data\\' + project_naam + '\\' + correct_value + '" target=_new>';
                   
                 }
              }
            }
            var correct_html;
            if( j == 0 )
            {
              correct_html = correct_value;
            }

          }
          else
          {
            infomessage = infomessage + correct_value;

            if( reportname.indexOf( "aplus" ) == 0 )
            {
              sRecord += 'herziening ->' + correct_value + '</a>';
            }
            else
            {
              if( plus_info == 1 )
              {
                 sRecord += 'moederplan ->' + correct_value + '</a>';
               }
               else
               {
                 sRecord += correct_value + '</a>';
               }
            }
          }

        }
				else {
					sRecord += '';
				}
				
				
				
		
			}

		}
		
		if( reportname.indexOf( "aplus" ) == 0 )
		{
		  sRecord += ' <BR> ';
		}
		
		sReportTbl += sRecord + '';

		sReportTbl += '';
		
		
		
		
		 if( i == 0 )
		 {
		     if( correct_value.indexOf( "." ) == 0 )
				      {
		      frame_data = '<iframe src="'+ correct_html + '" name=htmldoc width="99%" height="150">';

		      }
		      else
		      {
		      
		      if( correct_html.indexOf( "ttp:" ) > 0 )
		      {
		        frame_data = '<iframe src="' + correct_html + '" name=htmldoc width="99%" height="250">';
                      }
                      else 
                      {
                      frame_data = '<iframe src="'+ 'data\\' + project_naam + '\\' + correct_html + '" name=htmldoc width="99%" height="250">';
                   
                      }
                    }  
		 }  


		
		 sHTML+=sReportTbl;


		}

                if (frame_data.length > 0)
                {
                 // sHTML+=frame_data;
                } 

		       //////////////////////////////////////////////////////////////////////////////////////


         

          var oInfo = document.getElementById("divInfo")

		  	if (null == oInfo )
		  	{
		  	  alert ('result1 niet gevonden');
		  	}
		  	else
		  	{
		 	oInfo.innerHTML = sHTML;
		 	oInfo.style.display = 'none';
		  	oInfo.style.overflow = 'auto';
             }



}

   // alert( sHTML );

     //
     var realHTML;
     
    // delete Infomarker;
     if( sHTML.length  == 0 )
     {
        realHTML = '<div style="width: 24em;background-color:#DDDDDD;border-color: #003366;"><font style="font:small Arial; font-size: 10px;"><BR>(Nog) geen data beschikbaar op deze locatie.</font></div>';   // + new_x + ',' + new_y +  '</font>';
     } 
     else
     {
	  realHTML= '<div style="width: 24em;background-color:#DDDDDD;border-color: #003366;"><B>Op deze locatie is van toepassing:</B><BR><ul id="css_thema" class="cfix">' + sHTML ;
	  realHTML= realHTML + '</ul><BR>';
	  
	  if( plus_info == 1 )
	  {
	    realHTML= realHTML + '<BR><BR><font class="cfix"><center><a href=# onclick="javascript:toon_veel_data(\'documents_plus.asp?project=' + MAIN_project_naam + '&plancode='+ project_naam + '\')"><small>Volledige Plan Informatie</small> <B>' + correct_naam + ' herziening</B></a></center></font>';
          }
          
          
          if( (project_naam == '0762_001') || (project_naam == '0282_002') )
           {
	    realHTML= realHTML + '<BR><center><a href=# onclick="javascript:toon_veel_data(\'documents.asp?project=' + MAIN_project_naam + '&plancode='+ project_naam + '&x=' +  new_x + '&y=' +  new_y + '&kaart=2\')"><small>Volledige Plan Informatie</small> <B>' + correct_naam + '</B></a></center>';
	  }  
	  else
	  {
	    realHTML= realHTML + '<BR><center><a href=# onclick="javascript:toon_veel_data(\'documents.asp?project=' + MAIN_project_naam + '&plancode='+ project_naam + '&x=' +  new_x + '&y=' +  new_y + '\')"><small>Volledige Plan Informatie</small> <B>' + correct_naam + '</B></a></center>';
	  }
	  
	  
	  realHTML= realHTML + '</div>';
     }
     
     return( realHTML );
     
    

}
   
function show_info_overzicht( point )
{

var new_y;
var new_x;


new_y = eval(point.y) + eval(correctie_lat);
new_x = eval(point.x) + eval(correctie_lon);


x = wgs842rd_x(new_y, new_x).toFixed(2);
y = wgs842rd_y(new_y, new_x).toFixed(2);


var frag;
var sendXML;

var sVersion = "2.0.0";
var xmlns = "http://www.bentley.com/FlexiMap"
var xmlns_xsi = "http://www.w3.org/2001/XMLSchema-instance";
var xsi_schemaLocation = "http://www.bentley.com/FlexiMap FMRequest.xsd";


var sHTML = "";

if( null != sServiceName  )
{

if(isIE)
{
	frag = new ActiveXObject("Microsoft.XMLDOM");
}
else
{
	frag = document.implementation.createDocument("", "", null);
}


//functions added to create xmlelements in a browserproof way.... 
 
var fragRoot = frag.createElement("fragroot");
frag.appendChild(fragRoot);

var fragRequest = createRootElement(frag, "FMGetInfo"); 
fragRoot.appendChild(fragRequest);

var fragService = createElement(frag,"Service"); 
fragServiceText = frag.createTextNode(MAIN_sServiceName);
fragService.appendChild(fragServiceText);
fragRequest.appendChild(fragService);

var fragClickPnt = createElement(frag,"ClickPoint"); 
fragRequest.appendChild(fragClickPnt);
fragClickPnt.appendChild(frag.createTextNode(x + " " + y));

var mapRes = "0.2";
var fragMapRes = createElement(frag,"MapResolution"); 
fragRequest.appendChild(fragMapRes);
fragMapRes.appendChild(frag.createTextNode(mapRes));



if(isIE)
{
	sendXML = fragRequest.xml;
}
else
{
	ser = new XMLSerializer();
	sendXML = ser.serializeToString(fragRequest);
}


 //alert( sendXML );

responseXML = retrieveXML(sendXML);
responseTag = responseXML.documentElement.tagName;

if(responseTag == "FMServiceExceptionReport")
{
	alert("An error has occurred:\nReason: " +
		responseXML.getElementsByTagName("Reason")[0].childNodes[0].nodeValue + "\nDescription: " +
		responseXML.getElementsByTagName("Description")[0].childNodes[0].nodeValue);
	return false;
}

var frame_data;

frame_data = "";
sHTML = "";

//     var xsl = new ActiveXObject("Microsoft.XMLDOM");
//     xsl.async = false

//     xsl.load("report.xsl");

//     sHTML = responseXML.documentElement.transformNode(xsl.documentElement);


//////////////////////////////////////////

var root = responseXML.documentElement;
var RepNode = root.getElementsByTagName("Report");

var sHeader= '';
var sRecord='';
 
for (var i = 0;i < RepNode.length ;i++)
{
  var reportname = new String(RepNode[i].getAttribute("name"));
  var Header = RepNode[i].getElementsByTagName("Header").item(0);
  var HNode = Header.getElementsByTagName("Item");

  
	for (var j = 0;j < HNode.length ;j++)
	{
		if (HNode[j].getAttribute("alias"))
		{
			sHeader +=  HNode[j].getAttribute("alias") + ';';
		}
		else
		{
			sHeader +=  HNode[j].firstChild.nodeValue + ';';
		}
	}

    var Records = RepNode[i].getElementsByTagName("Records").item(0);
    var RecNode = Records.getElementsByTagName("Record");

   

	for (var j = 0;j < RecNode.length ;j++)
	{
	      var itmNode = RecNode[j].getElementsByTagName("Item");
       
              for (var k = 0;k < itmNode.length ;k++)
	      {
	 	if (itmNode[k].firstChild)
	 	{
                   sRecord += itmNode[k].firstChild.nodeValue + ";";
                }
                else
                {
		  sRecord += ';';
		}
              }
        }
}

/////////sHeader en sRecord zijn nu gevuld//////////////////////////////////////////////////////////////

  sHTML = sRecord;
 
  
}


//alert( sHTML );

     //
     var realHTML;
     
    // delete Infomarker;
     if( sHTML.length  == 0 )
     {
        realHTML = '<font style="font:small Arial; font-size: 10px;"><BR>geen data beschikbaar op deze locatie.</font>';
     } 
     else
     {
         realHTML= '<html><body><div style="width: 28em;background-color:#DDDDDD;border-color: #003366;"><table width=300 height=80 colpadding=1 colspacing=1><tr><td colspan=2>Op deze locatie is van toepassing:</td></tr>';
         
         var html_value = sHTML.split(';');
         var header_value = sHeader.split(';');
	 for(var j = 1; j < 3; j++)
	 {
           realHTML += '<tr><td>' + header_value[j] + '</td><td><B>' + html_value[j] + '</B></td></tr>';
	 }
	 realHTML +=  '</table>';
	 
	 realHTML +=  '<center><a href="gmaps.asp?project='+ MAIN_project_naam + '&x=' + eval(point.x).toFixed(5) + '&y=' + eval(point.y).toFixed(5) + '"><img src="images/ganunaar.png"></a></center>';
	
	 realHTML +=  '</div></body></html>';
	 
	 
     }
     
     return( realHTML );
     
    

}
   

function get_project_by_point( point )
{

var new_y;
var new_x;

new_y = eval(point.y) + eval(correctie_lat);
new_x = eval(point.x) + eval(correctie_lon);

//alert( new_y );

x = wgs842rd_x(new_y, new_x).toFixed(2);
y = wgs842rd_y(new_y, new_x).toFixed(2);

var frag;
var sendXML;

var sVersion = "2.0.0";
var xmlns = "http://www.bentley.com/FlexiMap"
var xmlns_xsi = "http://www.w3.org/2001/XMLSchema-instance";
var xsi_schemaLocation = "http://www.bentley.com/FlexiMap FMRequest.xsd";


var sHTML = "";

var sRecord='';

if( null != MAIN_sServiceName  )
{

if(isIE)
{
	frag = new ActiveXObject("Microsoft.XMLDOM");
}
else
{
	frag = document.implementation.createDocument("", "", null);
}


//functions added to create xmlelements in a browserproof way.... 
 
var fragRoot = frag.createElement("fragroot");
frag.appendChild(fragRoot);

var fragRequest = createRootElement(frag, "FMGetInfo"); 
fragRoot.appendChild(fragRequest);

var fragService = createElement(frag,"Service"); 
fragServiceText = frag.createTextNode(MAIN_sServiceName);
fragService.appendChild(fragServiceText);
fragRequest.appendChild(fragService);

var fragClickPnt = createElement(frag,"ClickPoint"); 
fragRequest.appendChild(fragClickPnt);
fragClickPnt.appendChild(frag.createTextNode(x + " " + y));

var mapRes = "0.2";
var fragMapRes = createElement(frag,"MapResolution"); 
fragRequest.appendChild(fragMapRes);
fragMapRes.appendChild(frag.createTextNode(mapRes));



if(isIE)
{
	sendXML = fragRequest.xml;
}
else
{
	ser = new XMLSerializer();
	sendXML = ser.serializeToString(fragRequest);
}


 //alert( sendXML );

responseXML = retrieveXML(sendXML);
responseTag = responseXML.documentElement.tagName;

if(responseTag == "FMServiceExceptionReport")
{
	alert("An error has occurred:\nReason: " +
		responseXML.getElementsByTagName("Reason")[0].childNodes[0].nodeValue + "\nDescription: " +
		responseXML.getElementsByTagName("Description")[0].childNodes[0].nodeValue);
	return false;
}

var frame_data;

frame_data = "";
sHTML = "";

//     var xsl = new ActiveXObject("Microsoft.XMLDOM");
//     xsl.async = false

//     xsl.load("report.xsl");

//     sHTML = responseXML.documentElement.transformNode(xsl.documentElement);


//////////////////////////////////////////

var root = responseXML.documentElement;
var RepNode = root.getElementsByTagName("Report");

var sHeader= '';
 
for (var i = 0;i < RepNode.length ;i++)
{
  var reportname = new String(RepNode[i].getAttribute("name"));
  var Header = RepNode[i].getElementsByTagName("Header").item(0);
  var HNode = Header.getElementsByTagName("Item");

  
	for (var j = 0;j < HNode.length ;j++)
	{
		if (HNode[j].getAttribute("alias"))
		{
			sHeader +=  HNode[j].getAttribute("alias") + ';';
		}
		else
		{
			sHeader +=  HNode[j].firstChild.nodeValue + ';';
		}
	}

    var Records = RepNode[i].getElementsByTagName("Records").item(0);
    var RecNode = Records.getElementsByTagName("Record");

   

	for (var j = 0;j < RecNode.length ;j++)
	{
	      var itmNode = RecNode[j].getElementsByTagName("Item");
       
              for (var k = 0;k < itmNode.length ;k++)
	      {
	 	if (itmNode[k].firstChild)
	 	{
                   sRecord += itmNode[k].firstChild.nodeValue + ";";
                }
                else
                {
		  sRecord += ';';
		}
              }
        }
}

/////////sHeader en sRecord zijn nu gevuld//////////////////////////////////////////////////////////////

  
}

    
   return( sRecord );

}


function CreateLogoControl() {
}
CreateLogoControl.prototype = new GControl();

CreateLogoControl.prototype.initialize = function(map) {

 var container = document.createElement("div");
container.style.border = "1px solid black";
 container.style.marginBottom = "1px";
//container.style.padding = "2px";
//container.style.paddingRight = "5px";
container.style.backgroundColor = "whitesmoke";

var Button1 = document.createElement("div");
this.setButtonStyle_(Button1);
container.appendChild(Button1);
Button1.innerHTML = '<img src="' + img_file_on_gm + '">';

map.getContainer().appendChild(container);
return container;
}

CreateLogoControl.prototype.getDefaultPosition = function() {
return new GControlPosition(G_ANCHOR_BOTTOM_LEFT, new GSize(65, 0));
}

CreateLogoControl.prototype.setButtonStyle_ = function(button) {
//button.style.textDecoration = 'none';
//button.style.color = '#000000';
//button.style.backgroundColor = '#ffffff';
//button.style.font = 'small Arial';
 //button.style.border = '1px solid #000000';
 //button.style.padding = '2px';
 //button.style.marginBottom = '3px';
//button.style.textAlign = 'center';
button.style.width = '4.5em';
button.style.cursor = 'pointer';
}
// ---------------------------------------------------


function CreateProjectControl() {
}
CreateProjectControl.prototype = new GControl();

CreateProjectControl.prototype.initialize = function(map) {

 var container = document.createElement("div");
container.style.border = "1px solid black";
 container.style.marginBottom = "1px";
//container.style.padding = "2px";
//container.style.paddingRight = "5px";
container.style.backgroundColor = "whitesmoke";

var Button1 = document.createElement("div");
this.setButtonStyle_(Button1);
container.appendChild(Button1);

var project_html;

project_html = '<table width=230><tr></td></tr><tr valign=top><td align=left><font style="font:small Arial; font-size: 11px;"><B>' + correct_naam + '</B></font></td><td align=right><img alt="Klik hier om de Legenda te openen of te sluiten" src="images/legenda_icon.gif" onclick="toggle_form_legenda()" border=1></td></tr></table>';

Button1.innerHTML = project_html ;

map.getContainer().appendChild(container);
return container;
}

function wijzig_kaart()
{

	if ( OVERLAY_STAAT_AAN == 50)
	{
	  GLog.write ( 'wijzig kaart naar: ' + project_naam );

	//  legenda_png.src =  maps_directory + project_naam +  "/" + legenda_filenaam;
	  map.removeOverlay( imageOverlay50 );

	  imageOverlay50 = get_tile_layerA( project_naam, project_max, 0.9 );
	  map.addOverlay( imageOverlay50 );
	  
	  var div_wijzig_kaart = document.getElementById("div_wijzig_kaart");
	  
	  GLog.write ( 'tekst was: ' + div_wijzig_kaart.innerHtml );
	  div_wijzig_kaart.innerHtml = '<center><button onclick=wijzig_kaart();>Terug naar Kaart 1</button></center>';
 
	}  



} 

CreateProjectControl.prototype.getDefaultPosition = function() {
return new GControlPosition(G_ANCHOR_TOP_RIGHT, new GSize(7, 28));
}

CreateProjectControl.prototype.setButtonStyle_ = function(button) {
 button.style.textDecoration = 'none';
 button.style.color = '#000000';
 button.style.backgroundColor = '#ffffff';
 button.style.font = 'small Arial';
  button.style.border = '0px solid #000000';
 button.style.padding = '1px';
  button.style.marginBottom = '1px';
 button.style.width = '15.9em';
button.style.height = '1.65em';
button.style.cursor = 'pointer';
}
// ---------------------------------------------------


function CreateLegendaControl() {
}
CreateLegendaControl.prototype = new GControl();

CreateLegendaControl.prototype.initialize = function(map) {

 var container = document.createElement("div");
 container.id= "legenda";
container.style.border = "0px solid black";
container.style.marginTop = "0px";
 container.style.marginBottom = "0px";
 container.style.padding = "1px";
//container.style.paddingRight = "5px";
container.style.backgroundColor = "transparent";
container.style.display = "none";
container.style.overflow = "auto";
container.style.width = "250px";
container.style.height = "390px";

//width:500px; height:865px; overflow:auto;

var Button1 = document.createElement("div");
this.setButtonStyle_(Button1);
container.appendChild(Button1);
Button1.innerHTML = '<img id="legenda_png" src="' + maps_directory + project_naam + '/legenda_050.png" border=1>';

map.getContainer().appendChild(container);
return container;
}

CreateLegendaControl.prototype.getDefaultPosition = function() {
return new GControlPosition(G_ANCHOR_TOP_RIGHT, new GSize(7, 70));
}

CreateLegendaControl.prototype.setButtonStyle_ = function(button) {
button.style.textDecoration = 'none';
button.style.color = '#000000';
button.style.backgroundColor = 'transparent';
button.style.font = 'small Arial';
button.style.border = '0px solid #000000';
button.style.padding = '0px';
button.style.marginTop = '0px';
button.style.marginBottom = '0px';
button.style.textAlign = 'center';
button.style.width = '17em';
button.style.height = '0em';
button.style.cursor = 'pointer';
}

// ---------------------------------------------------

function CreateLinkControl() {
}
CreateLinkControl.prototype = new GControl();

CreateLinkControl.prototype.initialize = function(map) {


var container = document.createElement("div");
container.style.border = "0px solid black";
 container.style.marginBottom = "1px";
//container.style.padding = "2px";
//container.style.paddingRight = "5px";
container.style.backgroundColor = "whitesmoke";

var Button1 = document.createElement("div");


Button1.style.border = "0px solid black";
 Button1.style.marginBottom = "1px";
 Button1.style.padding = "1px";
//  Button1.style.width = "34em";
 Button1.style.paddingRight = "1px";
Button1.style.backgroundColor = "whitesmoke";

Button1.style.font = "small Arial";
container.appendChild(Button1);


 var button_content;
 
 button_content = '<table width=300 colspacing=1 colpadding=1 bgcolor=#555555><tr STYLE="cursor: pointer;">';
 
 if( project_toelichting == 1 )
  {
  button_content += '<td valign=top align=center bgcolor=#FFFFFF><a onclick="toonToelichting()"><img title="Algemene Plan Informatie opvragen" src="images/cwm_planinfo.gif"></a></td>';
  }
 
 
 button_content += '<td valign=top align=center bgcolor=#FFFFFF><a onclick="startZoeken()"><img title="Locatie zoeken via adres" src="images/cwm_adres.gif"></a></td>';
 
 if( project_info == 1 )
 {
 button_content += '<td valign=top align=center bgcolor=#FFFFFF><a onclick="startInfo()"><img title="Gegevens opvragen door klikken in de kaart" src="images/cwm_info.gif"></a></td>';
 }
 
 //button_content += '<tdv align=top align=center bgcolor=#FFFFFF><a onclick="toon_form_reageren();">Reageren</a></td>';
 
 if( project_inspreken == 1 )
 {
   button_content += '<td valign=top align=center bgcolor=#FFFFFF><a onclick="startInspreken();"><img title="Digitaal Inspreken door te tekenen" src="images/cwm_reageren.gif"></a></td> ';
 }
 
 if( project_meten == 1 )
  {
    button_content += '<td valign=top align=center bgcolor=#FFFFFF><a onclick="startMeten();"><img title="Meten in de kaart" src="images/cwm_meten.gif"></a></td> ';
  }
 
 button_content += '<td valign=top align=center bgcolor=#FFFFFF><a onclick="toggleThema000()"><img title="Plankaart onzichtbaar maken" src="images/cwm_000.png"></a></td>';
 
 if( project_transparency == 2 )
 {
 button_content += '<td valign=top align=center bgcolor=#FFFFFF><a onclick="toggleThema050()"><img title="Plankaart transparant maken" src="images/cwm_050.png"></a></td>';
 }
 button_content += '<td valign=top align=center bgcolor=#FFFFFF><a onclick="toggleThema100()"><img title="Plankaart volledig zichtbaar maken" src="images/cwm_100.png"></a></td>';
  
 button_content += '<td width=10 bgcolor=#FFFFFF></td><td valign=center align=center bgcolor=#FFDDDD><font style="font: Arial; font-size: 11px;"<a onclick="toon_uitleg()"><U>Uitleg</U></a></font></td><td valign=center align=center bgcolor=#FFDDDD><font style="font: Arial; font-size: 11px;"<a onclick="toon_print()"><U>Afdrukken</U></a></font></td><td height=20 bgcolor=white><iframe border="no" scrolling="no" src="" id=frame_scalebar name=frame_scalebar width=152 height=20></td>';

 button_content += '</tr></table>';

 Button1.innerHTML = button_content;

  
// var Button2 = document.createElement("div");
// this.setButtonStyle_(Button2);
// container.appendChild(Button2);
// Button2.innerHTML = '';


map.getContainer().appendChild(container);
return container;
}

CreateLinkControl.prototype.getDefaultPosition = function() {
return new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(60, 2));
}

CreateLinkControl.prototype.setButtonStyle_ = function(button) {
  button.style.textDecoration = "underline";
   button.style.color = "#0000cc";
   button.style.backgroundColor = "white";
   button.style.font = "small Arial";
   button.style.border = "1px solid black";
   button.style.padding = "1px";
   button.style.marginBottom = "1px";
   button.style.textAlign = "left";
   button.style.width = "40em";
   button.style.cursor = "pointer";

}


// ---------------------------------------------------

function moveBy( x, y)
{
var div_veel_data = document.getElementById("div_veel_data");
if (div_veel_data)
{
var left=parseInt(div_veel_data.style.left)
var top=parseInt(div_veel_data.style.top)
div_veel_data.style.left = left + x
div_veel_data.style.top = top + y
}
}

function moveveeldata(e )
{

if (!e)
{ 
  var e = window.event;
}

if (e)
{
var div_veel_data = document.getElementById("div_veel_data");

if( div_veel_data.style.display == "block")
{
	var direction =e.keyCode;
	
	switch(direction){
	case 39:
	moveBy(15, 0);
	moveBy(0, 0);
	break
	case 37:
	moveBy(-15, 0);
	moveBy(0, 0);
	break
	case 38:
	moveBy(0, 0);
	moveBy(0, -15);
	break
	case 40:
	moveBy(0, 0);
	moveBy(0, 15);
	break
	default:
	break
	}
   }	
  }
  else
  {
  var div_veel_data = document.getElementById("div_veel_data");
  if( div_veel_data.style.display == "block")
  {

    alert( '(nog) niet mogelijk in FF...');
  }  
  }
}

function remove_veel_data()
{
  var div_veel_data = document.getElementById("div_veel_data");
  div_veel_data.style.display = "none";
}

function toon_veel_data(correct_value)
{
  
  var div_veel_data = document.getElementById("div_veel_data");
  div_veel_data.style.display = "block";
 // div_veel_data.innerHtml = '<html><body><table> <tr><td align=right><img src="images/gmaps_wegklik.gif" onclick="remove_veel_data();"></td></tr><tr><td><iframe scrolling="yes" src="' + correct_value + '" name=frame_veel_data width=790 height=490></iframe></td></tr> </table></body></html>';
  //alert( div_veel_data.innerHtml) ;
  
  var frame_veel_data = document.getElementById("frame_veel_data");
  
  //parent.frames.frame_veel_data.src = correct_value;
  
  //alert( correct_value );
  
   
  frame_veel_data.src = correct_value;
 
}

function toon_scalebalk()
{
 
  var frame_scalebar = document.getElementById("frame_scalebar");
      
  frame_scalebar.src = "images/scalebar.asp?scale=" + map.getZoom();
}


function toon_uitleg()
{
  var help_html;
  
help_html = '<iframe scrolling="yes" src="cwm_help.html" name=info width=400 height=230>';
		       	
map.openInfoWindowHtml(map.getCenter(),help_html);

}

function toon_print()
{
  
var cpoint;
cpoint = map.getCenter();

  var xtile;
  var ytile;
  var active_zoom;
  
  active_zoom =  map.getZoom();
  var p = new GMercatorProjection(20);
  var mousePx = p.fromLatLngToPixel(cpoint, active_zoom );
  var infoPx;
  
   if( null == INFO_marker )
   {
     infoPx = p.fromLatLngToPixel( map.getCenter(), active_zoom);
   }
   else
   {
     infoPx = p.fromLatLngToPixel( INFO_marker.getPoint(), active_zoom);
   }
   
  
  var tile = new GPoint(Math.floor(mousePx.x / 256),
  Math.floor(mousePx.y / 256));
  var url = G_NORMAL_MAP.getTileLayers()[0].getTileUrl(tile,active_zoom);
  
  var arrURL = url.split('&');
  for(var j = 0; j < arrURL.length; j++)
  {
    if( arrURL[j].indexOf( "=" ) > 0 )
    {
	var arrARG = arrURL[j].split('=');

	if( arrARG[0] == 'x' )
	{
	  xtile = arrARG[1];
	}
	if( arrARG[0] == 'y' )
	{
	  ytile = arrARG[1];
	} 
    } 
  }
  
//  GLog.write( xtile + ' en ' + ytile + ' en ' + active_zoom );
  
//  GLog.write( (mousePx.x-infoPx.x) + ' en ' + (mousePx.y-infoPx.y ) );

// GLog.write( 'tile='+ SHOWTileToQuadKey(   eval(xtile), eval(ytile), active_zoom ) );

var pdf_html;
  
pdf_html = '<iframe scrolling="no" src="http://data.ropubliceer.nl/htmldoc/print2pdf.asp?xtile=' + xtile + '&ytile=' + ytile + '&zoom=' + active_zoom + '&project=' + project_naam +'&gemeente=' + MAIN_project_naam + '" name=pdf width=380 height=120>';

map.openInfoWindow(map.getCenter(),pdf_html);

}


function toonToelichting()
{
  var toelichting_html;

  if( sServiceName == MAIN_sServiceName  )
  {
     toelichting_html = '<iframe scrolling="yes" src="' + maps_directory + project_naam + '/extra.html" name=info width=570 height=350>';
  }
  else
  {
     toelichting_html = '<iframe scrolling="yes" src="' + maps_directory + project_naam + '/extra.html" name=info width=400 height=200>';
  
  }
 
 if( (project_naam == '0762_001') || (project_naam == '0282_002') )
 {
    var cpoint;
    cpoint = map.getCenter();
    toon_veel_data( maps_directory + project_naam + '/extra.asp?x=' + cpoint.x + '&y='+ cpoint.y );
 }
 else
 {
   toon_veel_data( maps_directory + project_naam + '/extra.html' );
 }
		       	
//map.openInfoWindowHtml(map.getCenter(),toelichting_html);

}


function changeLegenda() {
	var legenda_png= document.getElementById("legenda_png");


	if ( OVERLAY_STAAT_AAN == 50)
	{

	legenda_png.src = maps_directory + project_naam +  "/" + legenda_filenaam;


	}
	else
	{ 
	legenda_png.src = maps_directory + project_naam +  "/" + legenda_filenaam;

	}	

}


function startZoeken() {
//var zoeken= document.getElementById("zoeken");
//zoeken.style.display = "block";

//var q_input= document.getElementById("q");
//q_input.focus();

   var welkom_html;
   welkom_html = '<iframe scrolling="yes" src="adres.asp?project='+ MAIN_project_naam + '" name=welkom width=520 height=250>';

   map.openInfoWindowHtml(map.getCenter(),welkom_html);
   
}

function stopZoeken() {
var zoeken= document.getElementById("zoeken");
zoeken.style.display = "none";
}


function startInfo() {

stopZoeken();
verwijder_form_start_inspreken();

startInfoListener();

var info= document.getElementById("info");

 var divInfo = document.getElementById("divInfo")

if (null == divInfo )
{

}
else
{

divInfo.style.display = 'none';
		 	
            }
info.style.display = "block";
}

function stopInfo() {
var info= document.getElementById("info");
info.style.display = "none";
}

function toon_form_start_inspreken() {
var form_start_inspreken= document.getElementById("form_start_inspreken");
form_start_inspreken.style.display = "block";
}

function verwijder_form_start_inspreken() {
var form_start_inspreken= document.getElementById("form_start_inspreken");
form_start_inspreken.style.display = "none";
}


function verwijder_form_inspreken() {
var form_inspreken= document.getElementById("form_inspreken");
form_inspreken.style.display = "none";
}

function toon_form_inspreken() {
var form_inspreken= document.getElementById("form_inspreken");
form_inspreken.style.display = "block";
}


function verwijder_form_reageren() {
var form_reageren= document.getElementById("form_reageren");
form_reageren.style.display = "none";
}

function toon_form_reageren() {

var form_reageren = document.getElementById("form_reageren");
form_reageren.style.display = "block";
}


function toggle_form_legenda()
{
if ( LEGENDA_STAAT_AAN == 1)
{	 
  var form_legenda = document.getElementById("legenda");
  form_legenda.style.display = "none";
  LEGENDA_STAAT_AAN = 0;

}
else
{		
var form_legenda = document.getElementById("legenda");
form_legenda.style.display = "block";
LEGENDA_STAAT_AAN = 1;

}

if( OVERLAY_STAAT_AAN == 0 ) 
{
 var legenda_png= document.getElementById("legenda_png");  

 legenda_png.src = "images/cwm_blank.gif";

}

if( OVERLAY_STAAT_AAN == 50 ) 
{
 var legenda_png= document.getElementById("legenda_png");  

 legenda_png.src =  maps_directory + project_naam +  "/" + legenda_filenaam;
}

if( OVERLAY_STAAT_AAN == 100 ) 
{
 var legenda_png= document.getElementById("legenda_png");  

 legenda_png.src =  maps_directory + project_naam +  "/" + legenda_filenaam;

}


}


function toggleThema000() {

if( OVERLAY_STAAT_AAN == 0 ) 
 {
    return;
 }

var legenda_png= document.getElementById("legenda_png");  

 legenda_png.src = "images/cwm_blank.gif";
 
 if( OVERLAY_STAAT_AAN == 50 ) 
 {
   map.removeOverlay( imageOverlay50 );
 }  
 
 if( OVERLAY_STAAT_AAN == 100 ) 
  {
    map.removeOverlay( imageOverlay100 );
 } 
	
  OVERLAY_STAAT_AAN = 0;
}

function toggleThema050() {

if( transparency_working == '1' )
{
  alert( 'Uw browser is Internet Explorer 6. Deze ondersteunt geen Transparantheid. Installeer IE 7 of Firefox 2.0');
  return;
}

if( OVERLAY_STAAT_AAN == 50 ) 
 {
    return;
 }
 
var legenda_png= document.getElementById("legenda_png");  

 legenda_png.src =  maps_directory + project_naam +  "/" + legenda_filenaam;
  
 
 if( OVERLAY_STAAT_AAN == 100 ) 
  {
    map.removeOverlay( imageOverlay100 );
 } 
	
  OVERLAY_STAAT_AAN = 50;
  map.addOverlay( imageOverlay50 );
}

function toggleThema100() {

if( OVERLAY_STAAT_AAN == 100 ) 
 {
    return;
 }

var legenda_png= document.getElementById("legenda_png");  

 legenda_png.src =  maps_directory + project_naam +  "/" + legenda_filenaam;
 
 if( OVERLAY_STAAT_AAN == 50 ) 
  {
    map.removeOverlay( imageOverlay50 );
 } 

  map.addOverlay( imageOverlay100 );
  
  OVERLAY_STAAT_AAN = 100;
}

function toggleThema() {

var legenda_png= document.getElementById("legenda_png");

    
        
	if ( OVERLAY_STAAT_AAN == 50)
	{
	  OVERLAY_STAAT_AAN = 100;
	  legenda_png.src =  maps_directory + project_naam + "/legenda_100.png";
	  
	  map.removeOverlay( imageOverlay50 );
	  map.addOverlay( imageOverlay100 );
	  
	  
	}
	else
	{ if( OVERLAY_STAAT_AAN == 100)
		{	
		 OVERLAY_STAAT_AAN = 0;

                 legenda_png.src = "";
		 map.removeOverlay( imageOverlay100 );	

		}
		else 
		{	
		OVERLAY_STAAT_AAN = 50;
		 legenda_png.src =  maps_directory + project_naam +  "/" + legenda_filenaam;
	  
		 map.addOverlay( imageOverlay50 );	


		}
	}	
}


function startReageren()
{

  toon_form_reageren();

}



function point_in_polygon(p, poly)
{

var j;
var result;

 result = false;
 j = poly.length-1;
 
  for(var i = 0; i < poly.length-1; i++)
  {	
	if (
	( ((poly[i].y <= p.y) && (p.y < poly[j].y)) || ((poly[j].y <= p.y) && (p.y < poly[i].y)) ) &&
	(p.x < ((poly[j].x - poly[i].x) * (p.y - poly[i].y) / (poly[j].y - poly[i].y) + poly[i].x))
	)
	{
	result= !result;

	}

	j= i;
  }
  
return result

}
 function byte2Hex(n)
   {
    var nybHexString = "0123456789ABCDEF";
    return String(nybHexString.substr((n >> 4) & 0x0F,1)) + nybHexString.substr(n & 0x0F,1);
   }
   
 function RGB2Color(r,g,b)
   {
    return '#' + byte2Hex(r) + byte2Hex(g) + byte2Hex(b);
   }

function startInspreken() {

stopInfo();

// Create our "tiny" marker icon
var tinyicon = new GIcon();
tinyicon.image = "rondje.png";
tinyicon.iconSize = new GSize(10, 10);
tinyicon.shadowSize = new GSize(0, 0);
tinyicon.iconAnchor = new GPoint(5, 5);
tinyicon.infoWindowAnchor = new GPoint(1, 1);


var total_distance = 0;
var div_measure= document.getElementById("div_measure");
div_measure.innerHTML =  '(' + map.getZoom() + ') Gemeten Lengte: &plusmn; ' + total_distance.toFixed(0) + ' m.';
div_measure.style.display = 'block';

//map.removeOverlay(Infomarker);
stopInfoListener();
toon_form_start_inspreken();

  GEvent.addListener(map, "click", function(overlay, point) {
  
        if( overlay )
        {
       //   map.clearOverlays();
          var lastpoint;
          var testpoint;
          
            var num_points;
	    num_points = routePoints.length;
	 
          lastpoint = overlay.getPoint();
          testpoint= routePoints[num_points-1];      
          
          
       //    alert( point_in_polygon(lastpoint, routePoints) );
        
        
		
	 if( lastpoint.equals(testpoint) )
	 {	   	
	   map.addOverlay(new GPolyline(routePoints,colour));
	   if ( routePoints.length > 1 ) {
	   		var lastLeg = distance_between_points(routePoints[routePoints.length - 2], routePoints[routePoints.length - 1]);
	   		total_distance += lastLeg;
	   		var div_measure= document.getElementById("div_measure");
	   		div_measure.innerHTML = 'Gemeten Lengte: &plusmn; ' + total_distance.toFixed(0) + ' m.';
	   		div_measure.style.display = 'block';
		}
	 }
	 else
	 {
	    routePoints.push(overlay.getPoint());
	    num_points = routePoints.length;
		var fillColor;
		fillColor = RGB2Color(0,0,0);
		var lineColor;
		lineColor = colour;

		var polygon = new GPolygon(routePoints,lineColor,5,.5,fillColor,.2);
	    map.addOverlay(polygon);
	    if ( routePoints.length > 1 ) {
			var lastLeg = distance_between_points(routePoints[routePoints.length - 2], routePoints[routePoints.length - 1]);
			total_distance += lastLeg;
			var div_measure= document.getElementById("div_measure");
			div_measure.innerHTML = 'Gemeten Omtrek: &plusmn; ' + total_distance.toFixed(0) + ' m.';
			div_measure.style.display = 'block';

		    //alert( 'opp=' + PlanarPolygonAreaMeters2(routePoints) );
		    var div_measure= document.getElementById("div_measure");
		    div_measure.innerHTML = div_measure.innerHTML + ' - Oppervlakte: &plusmn; ' + PlanarPolygonAreaMeters2(routePoints).toFixed(0) + ' m2.';
		    div_measure.style.display = 'block';
            }
	    
	 }
       
	
	//toon_form_inspreken();
         
         var service;
	 var  zoom;
	  zoom = map.getZoom().toFixed(0);
	  service = project_naam;
	  var val;
        
        //  
         val = "";
        for(var idx = 0; idx < num_points; idx++)
	{	  
	  val += 'X' + routePoints[idx].x.toFixed(6) + 'Y' + routePoints[idx].y.toFixed(6);
	}  
	var Inspraakmarker;
	var inspraak_window;
	
	inspraak_window = "http://webservice.crotec.nl/gmaps_Inspraak/inspraak_menu.asp?redline=" + val + "&service=" + service + "&xcoord="+routePoints[0].x.toFixed(6)+"&ycoord="+routePoints[0].y.toFixed(6) +"&mapresolution="+zoom;
	inspraak_frame_window = '<iframe scrolling="no" src="'+ inspraak_window + '" name=inspraak width=315 height=230>';
	//Inspraakmarker = new GMarker(lastpoint);
	
	//var marker = new GMarker(routePoints[0]);
	var marker = new GMarker(routePoints[0], tinyicon );
			
	map.addOverlay(marker);
			
	//Inspraakmarker = createInspraakMarker(lastpoint);
	
	//Inspraakmarker = createInfoMarker(lastpoint, inspraak_window);
	
	marker.openInfoWindowHtml(inspraak_frame_window);
	   
	 GEvent.clearListeners(map, "click" );
	 
         routePoints.splice(0,num_points);
          
          
        }
        if (point) {
			//map.clearOverlays();
			routePoints.push(point);
			map.addOverlay(new GPolyline(routePoints,colour));
			// Add a marker at the beginning and the end
	
	               var marker = new GMarker(routePoints[0], tinyicon);
			
			map.addOverlay(marker);
			
			//GEvent.addListener(marker, "click", function() {
			//map.clearOverlays();
			//routePoints.push(routePoints[0]);
			//map.addOverlay(new GPolyline(routePoints,colour, 5));
			// Add a marker at the beginning and the end
			//var lastLeg = distance_between_points(routePoints[routePoints.length - 2], routePoints[routePoints.length - 1]);
			//total_distance += lastLeg;	
			//document.getElementById("rjour").checked=false;
			//document.getElementById("rjour").disabled=true;
			//updateDisplay();	
			//});
			
			if ( routePoints.length > 1 ) {
				map.addOverlay(new GMarker(routePoints[routePoints.length - 1], tinyicon));
			
			// Re-calculate the distance so far
				var lastLeg = distance_between_points(routePoints[routePoints.length - 2], routePoints[routePoints.length - 1]);
				total_distance += lastLeg;
				var div_measure= document.getElementById("div_measure");
				div_measure.innerHTML = 'Gemeten Lengte: &plusmn; ' + total_distance.toFixed(0) + ' m.';
				div_measure.style.display = 'block';
		  	
			}	
				//updateDisplay();
		}
	  });


}


function startMeten() {

stopInfo();

// Create our "tiny" marker icon
var tinyicon = new GIcon();
tinyicon.image = "images/rondje.png";
tinyicon.iconSize = new GSize(8, 8);
tinyicon.shadowSize = new GSize(0, 0);
tinyicon.iconAnchor = new GPoint(5, 5);
tinyicon.infoWindowAnchor = new GPoint(1, 1);


var total_distance = 0;
var div_measure= document.getElementById("div_measure");
div_measure.innerHTML =  '(' + map.getZoom() + ') Gemeten Lengte: &plusmn; ' + total_distance.toFixed(0) + ' m.';
div_measure.style.display = 'block';

//map.removeOverlay(Infomarker);
stopInfoListener();
toon_form_start_inspreken();

  GEvent.addListener(map, "click", function(overlay, point) {
  
        if( overlay )
        {
       //   map.clearOverlays();
          var lastpoint;
          var testpoint;
          
            var num_points;
	    num_points = routePoints.length;
	 
          lastpoint = overlay.getPoint();
          testpoint= routePoints[num_points-1];      
          
          
       //    alert( point_in_polygon(lastpoint, routePoints) );
        
        
		
	 if( lastpoint.equals(testpoint) )
	 {	   	
	   map.addOverlay(new GPolyline(routePoints,colour,1));
	   if ( routePoints.length > 1 ) {
	   		var lastLeg = distance_between_points(routePoints[routePoints.length - 2], routePoints[routePoints.length - 1]);
	   		//total_distance += lastLeg;
	   		var div_measure= document.getElementById("div_measure");
	   		div_measure.innerHTML = 'Gemeten Lengte: &plusmn; ' + total_distance.toFixed(0) + ' m. (<font style="cursor:pointer" onclick=startMeten();><U>Opnieuw</U></font>)';
	   		div_measure.style.display = 'block';
		}
	 }
	 else
	 {
	    routePoints.push(overlay.getPoint());
	    num_points = routePoints.length;
		var fillColor;
		fillColor = RGB2Color(0,0,0);
		var lineColor;
		lineColor = colour;

		var polygon = new GPolygon(routePoints,lineColor,2,.5,fillColor,.2);
	    map.addOverlay(polygon);
	    if ( routePoints.length > 1 ) {
			var lastLeg = distance_between_points(routePoints[routePoints.length - 2], routePoints[routePoints.length - 1]);
			total_distance += lastLeg;
			var div_measure= document.getElementById("div_measure");
			div_measure.innerHTML = 'Gemeten Omtrek: &plusmn; ' + total_distance.toFixed(0) + ' m.';
			div_measure.style.display = 'block';

		    //alert( 'opp=' + PlanarPolygonAreaMeters2(routePoints) );
		    var div_measure= document.getElementById("div_measure");
		    div_measure.innerHTML = div_measure.innerHTML + ' - Oppervlakte: &plusmn; ' + PlanarPolygonAreaMeters2(routePoints).toFixed(0) + ' m2. (<font style="cursor:pointer" onclick=startMeten();><U>Opnieuw</U></font>)';
		    div_measure.style.display = 'block';
            }
	    
	 }
       
	
	
	   
	 GEvent.clearListeners(map, "click" );
	 
         routePoints.splice(0,num_points);
         
          
        }
        if (point) {
			//map.clearOverlays();
			routePoints.push(point);
			map.addOverlay(new GPolyline(routePoints,colour));
			// Add a marker at the beginning and the end
	
	               var marker = new GMarker(routePoints[0], tinyicon);
			
			map.addOverlay(marker);
			
			
			if ( routePoints.length > 1 ) {
				map.addOverlay(new GMarker(routePoints[routePoints.length - 1], tinyicon));
			
			// Re-calculate the distance so far
				var lastLeg = distance_between_points(routePoints[routePoints.length - 2], routePoints[routePoints.length - 1]);
				total_distance += lastLeg;
				var div_measure= document.getElementById("div_measure");
				
				var len_lat = routePoints[routePoints.length - 2].y - routePoints[routePoints.length - 1].y;
				var len_lon = routePoints[routePoints.length - 2].x - routePoints[routePoints.length - 1].x;
				div_measure.innerHTML = 'Gemeten Lengte: &plusmn; ' + total_distance.toFixed(0) + ' m.';
				div_measure.style.display = 'block';
		  	
			}	
				//updateDisplay();
		}
	  });


}

// Utility function for converting degrees to radians
Math.deg2rad = function ( x ) {
        return x * (Math.PI / 180.0); 
}

function PlanarPolygonAreaMeters2(points)
{
var earthRadiusMeters=6367460.0;
var radiansPerDegree=Math.PI/180.0;
var metersPerDegree=2.0*Math.PI*earthRadiusMeters/360.0;


var a=0.0;for(var i=0;i<points.length;++i)
{var j=(i+1)%points.length;var xi=points[i].lng()*metersPerDegree*Math.cos(points[i].lat()*radiansPerDegree);var yi=points[i].lat()*metersPerDegree;var xj=points[j].lng()*metersPerDegree*Math.cos(points[j].lat()*radiansPerDegree);var yj=points[j].lat()*metersPerDegree;a+=xi*yj-xj*yi;}
return Math.abs(a/2.0);
}

// Calculates the distance (in km's) between 2 points. 
function distance_between_points ( p1, p2 ) {
var EARTH_RADIUS = 6367;

        var a = Math.deg2rad( 90 - p1.y);
        var b = Math.deg2rad( 90 - p2.y);
        var theta = Math.deg2rad( p2.x - p1.x);
        var c = Math.acos( Math.cos(a) * Math.cos(b) + Math.sin(a) * Math.sin(b) * Math
.cos(theta));

        return c * EARTH_RADIUS * 1000; 
}

function startInspreken_v000() {
 stopInfoListener();
// map.removeOverlay(Infomarker);
 
clicknumber = 0;
 
toon_form_start_inspreken();

GEvent.addListener(map, "click", function(marker, point) {
		if (marker) {
			if (clicknumber > 0){
				  linepoints[clicknumber]  = marker.point;
				   //clicknumber = clicknumber + 1;
					var service;
					 var  zoom;
					  zoom = map.getZoom();
					  
					  
					  
					  service = project_naam;
					  
		var polyline = new GPolyline([ linepoints[clicknumber-1], linepoints[0] ] , "#0000FF", 8);
		map.addOverlay(polyline);
								   val = "";
								   for(var idx = 0; idx < clicknumber; idx++)
									  {
										val += 'X' + Left( CStr(linepoints[idx].x),8) + 'Y' + Left( CStr(linepoints[idx].y),9) + '-' ;
									 }
				  clicknumber = 0;

				 
				  toon_form_inspreken();
				  window.open( "http://webservice.crotec.nl/gmaps_Inspraak/inspraak_menu.asp?redline=" + val + "&service=" + service + "&xcoord="+linepoints[0].x+"&ycoord="+linepoints[0].y+"&mapresolution="+zoom, "iframe_form_inspreken" );
				  GEvent.clearListeners(map, "click" );

			  }
		   } else {

                                  var icon_nr=clicknumber+1;
				  map.addOverlay(createMarker(point, icon_nr));

				  linepoints[clicknumber]  = point;



				  clicknumber = clicknumber + 1;
				  }

		if (clicknumber > 1){

		 verwijder_form_start_inspreken();
		//alert( linepoints[0].x );
		//alert( linepoints[1].x );

		 //alert( clicknumber );
		 
		 var lijntje = new Array(2);
		 
		 lijntje[0] = linepoints[clicknumber-2];
		 lijntje[1] = linepoints[clicknumber-1];
		 
		 var polyline = new GPolyline([ lijntje[0], lijntje[1] ] , "#0000FF", 8);
		 map.addOverlay(polyline);
		}



		});
}

function Left(STRING,CHARACTER_COUNT){
return STRING.substring(0,CHARACTER_COUNT);
}

function CStr(VALUE){
return VALUE.toString();
}
// Creates a marker whose info window displays the letter corresponding
// to the given index.

function createMarker(point, index) {
  // Create a lettered icon for this point using our icon class
  var letter = String.fromCharCode("A".charCodeAt(0) + index);
  var icon = new GIcon(baseIcon);
  icon.image = "http://flexiweb.crotec.nl/gmaps/icons/geel/marker" + index + ".png";

 // icon.image = "http://webservice.crotec.nl/gmaps/icons/crotec_gevestigd.gif";
  var marker = new GMarker(point, icon);


  return marker;
}

function createInfoMarker(point, infomessage) {
 
 var icon = new GIcon();
 icon.image = "http://webservice.crotec.nl/gmaps/icons/kruisje.png";
// icon.iconSize = new GSize(203, 141);
 icon.shadowSize = new GSize(0, 0);
 icon.iconAnchor = new GPoint(8,8);
 icon.infoWindowAnchor = new GPoint(20,0);

  var Infomarker = new GMarker(point, icon);
  
 Infomarker.event = GEvent.addListener(Infomarker, "click", function() 
  {
 Infomarker.openInfoWindowHtml(infomessage);
 Infomarker.title = "TITEL";
	}
	);
   return Infomarker;
}

function createInspraakMarker(point) {
 
 var icon = new GIcon();
 icon.image = "http://webservice.crotec.nl/gmaps/icons/kruisje.png";
// icon.iconSize = new GSize(203, 141);
 icon.shadowSize = new GSize(0, 0);
 icon.iconAnchor = new GPoint(8,8);
 icon.infoWindowAnchor = new GPoint(20,0);

  var Inspraakmarker = new GMarker(point, icon);
 
  return Inspraakmarker;
}


 // addAddressToMap() is called when the geocoder returns an
    // answer.  It adds a marker to the map with an open info window
    // showing the nicely formatted version of the address and the country code.

   function addAddressToMap(response) {
      //map.clearOverlays();

      if (!response || response.Status.code != 200) {
        alert("Sorry, adres niet gevonden");
      } else {
        place = response.Placemark[0];
        point = new GLatLng(place.Point.coordinates[1],
                            place.Point.coordinates[0]);
        var icon = new GIcon();
		icon.image = "http://webservice.crotec.nl/gmaps/icons/ADRES.png";
		icon.iconSize = new GSize(15, 15);
		icon.shadowSize = new GSize(22, 20);
		icon.iconAnchor = new GPoint(6,16);
		icon.infoWindowAnchor = new GPoint(20,0);
		icon.draggable = true; 
		
        map.removeOverlay(INFO_marker);
       // INFO_marker = new GMarker(point, icon);
       
        if( project_info == 1 )
        {
      INFO_marker = new GMarker(point, {icon: new GIcon(G_DEFAULT_ICON, "images/info_crotec.png"), draggable: true});
	}
	else
	{
	 INFO_marker = new GMarker(point, {icon: new GIcon(G_DEFAULT_ICON, "images/info_crotec.png"), draggable: false});
	
	}
        
        map.addOverlay(INFO_marker);
        
        
        if( project_info == 1 )
        {
		GEvent.addListener(INFO_marker, "dragstart", function() {
		  //INFO_marker.openInfoWindowHtml( 'dragstart' );				
			});

		//Draggen van de marker, end event
		GEvent.addListener(INFO_marker, "dragend", function() {			
		//map.panTo(INFO_marker.getPoint());
		var info_html;

		info_html = show_info( INFO_marker.getPoint() );
		INFO_marker.openInfoWindowHtml( info_html );


		});

		var info_html;

		info_html = show_info( point );
		INFO_marker.openInfoWindowHtml( info_html );
	}	
	else	
	{
         INFO_marker.openInfoWindowHtml('<B>Adres gevonden:</B> <br>' + place.address );

        //  '<b>Country code:</b> ' + place.AddressDetails.Country.CountryNameCode+'<br>1:'+place.Point.coordinates[1] +'<br>0:'+place.Point.coordinates[0]);
        }
        map.setCenter(point, 17);

      }
    }

    // showLocation() is called when you click on the Search button
    // in the form.  It geocodes the address entered into the form
    // and adds a marker to the map at that location.


function showLocation() {
      var address = document.forms[0].q.value;
      geocoder.getLocations(address, addAddressToMap);
      stopZoeken();

    }

 function addMarker(point,map)
			 {
			 var icon = new GIcon();
			 icon.image = "http://webservice.crotec.nl/gmaps/icons/crotec_gevestigd.gif";
			 icon.iconSize = new GSize(203, 141);
			 icon.shadowSize = new GSize(22, 20);
			 icon.iconAnchor = new GPoint(6,16);
			 icon.infoWindowAnchor = new GPoint(20,0);

			     myMarker = new GMarker(point, icon);
			     map.addOverlay(myMarker);

         }
         
                  
function TileToQuadKey ( tx,  ty,  zl){
		var quad;
		quad = "";
		for (var i = zl; i > 0; i--){
			var mask = 1 << (i - 1);
			var cell = 0;
			if ((tx & mask) != 0)
				cell++;
			if ((ty & mask) != 0)
				cell += 2;
			quad += cell;
		}
		return quad;
}




// A TextualZoomControl is a GControl that displays textual "Zoom In"
// and "Zoom Out" buttons (as opposed to the iconic buttons used in
// Google Maps).
function TextualZoomControl() {
}
TextualZoomControl.prototype = new GControl();

// Creates a one DIV for each of the buttons and places them in a container
// DIV which is returned as our control element. We add the control to
// to the map container and return the element for the map class to
// position properly.
TextualZoomControl.prototype.initialize = function(map) {
  var container = document.createElement("div");

  var zoomInDiv = document.createElement("div");
  this.setButtonStyle_(zoomInDiv);
  container.appendChild(zoomInDiv);
  zoomInDiv.appendChild(document.createTextNode("Zoom In"));
  GEvent.addDomListener(zoomInDiv, "click", function() {
    map.zoomIn();
  });

  var zoomOutDiv = document.createElement("div");
  this.setButtonStyle_(zoomOutDiv);
  container.appendChild(zoomOutDiv);
  zoomOutDiv.appendChild(document.createTextNode("Zoom Uit"));
  GEvent.addDomListener(zoomOutDiv, "click", function() {
    map.zoomOut();
  });

  map.getContainer().appendChild(container);
  return container;
}

// By default, the control will appear in the top left corner of the
// map with 7 pixels of padding.
TextualZoomControl.prototype.getDefaultPosition = function() {
  return new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(1, 36));
}

// Sets the proper CSS for the given button element.
TextualZoomControl.prototype.setButtonStyle_ = function(button) {
  button.style.textDecoration = "none";
  button.style.color = "#000000";
  button.style.backgroundColor = "white";
  button.style.font = "small Arial 9px";
  button.style.border = "1px solid black";
  button.style.padding = "1px";
  button.style.marginBottom = "1px";
  button.style.textAlign = "center";
  button.style.width = "5em";
  button.style.cursor = "pointer";  
}

function hookMouseWheelToZoom(mapelement, map)
{
	function wheelZoom(a) { (a.detail || -a.wheelDelta) < 0 ? map.zoomIn() : map.zoomOut(); }
	GEvent.addDomListener(mapelement, "DOMMouseScroll", wheelZoom); 
	GEvent.addDomListener(mapelement, "mousewheel", wheelZoom); 
}

function bessel_x(lat1, lon1, h1)
{
bessela = 6377397.155
besselb = 6356078.963
bessele2 = (bessela * bessela - besselb * besselb ) / (bessela * bessela)
besseln = bessela / Math.sqrt(1 - bessele2 * Math.pow(Math.sin(rad(lat1)),2))
if (eval(h1) == NaN) h1=0

return (besseln + h1) * Math.cos(rad(lat1)) * Math.cos(rad(lon1))
}

function bessel_y(lat1, lon1, h1)
{
bessela = 6377397.155
besselb = 6356078.963
bessele2 = (bessela * bessela - besselb * besselb ) / (bessela * bessela)
besseln = bessela / Math.sqrt(1 - bessele2 * Math.pow(Math.sin(rad(lat1)),2))
if (eval(h1) == NaN) h1=0

return (besseln + h1) * Math.cos(rad(lat1)) * Math.sin(rad(lon1))
}


function bessel_z(lat1, lon1, h1)
{
bessela = 6377397.155
besselb = 6356078.963
bessele2 = (bessela * bessela - besselb * besselb ) / (bessela * bessela)
besseln = bessela / Math.sqrt(1 - bessele2 * Math.pow(Math.sin(rad(lat1)),2))
if (eval(h1) == NaN) h1=0

return (besseln * (1 - bessele2) + h1) * Math.sin(rad(lat1))
}

function bessel_lat(x1, y1, z1)
{
bessela = 6377397.155
besselb = 6356078.963
bessele2 = (bessela * bessela - besselb * besselb) / (bessela * bessela)
besseleps2 = (bessela * bessela - besselb * besselb) / (besselb * besselb)

r1 = Math.sqrt(x1 * x1 + y1 * y1)
theta1 = Math.atan((z1 * bessela) / (r1 * besselb))

tanlat = (z1 + besseleps2 * besselb * Math.pow(Math.sin(theta1),3)) / (r1 - bessele2 * bessela * Math.pow(Math.cos(theta1),3))
return deg(Math.atan(tanlat))
}


function bessel_lon(x1, y1, z1)
{
return deg(Math.atan(y1 / x1))
}


function bessel_h(x1, y1, z1)
{
bessela = 6377397.155
besselb = 6356078.963
bessele2 = (bessela * bessela - besselb * besselb) / (bessela * bessela)
besseleps2 = (bessela * bessela - besselb * besselb) / (besselb * besselb)

r1 = Math.sqrt(x1 * x1 + y1 * y1)
theta1 = Math.atan((z1 * bessela) / (r1 * besselb))

tanlat = (z1 + besseleps2 * besselb * Math.pow(Math.sin(theta1),3)) / (r1 - bessele2 * bessela * Math.pow(Math.cos(theta1),3))

coslat = 1 / Math.sqrt(1 + tanlat * tanlat)
Sinlat = tanlat / Math.sqrt(1 + tanlat * tanlat)

besseln = bessela / Math.sqrt(1 - bessele2 * Sinlat * Sinlat)

return r1 / coslat - besseln
}


function wgs84_x(lat1, lon1, h1)
{
wgs84a = 6378137
wgs84b = 6356752.314
wgs84e2 = (wgs84a * wgs84a - wgs84b * wgs84b) / (wgs84a * wgs84a)
wgs84n = wgs84a / Math.sqrt(1 - wgs84e2 * Math.pow(Math.sin(rad(lat1)),2))
if (eval(h1) == NaN) h1=0

return (wgs84n + h1) * Math.cos(rad(lat1)) * Math.cos(rad(lon1))
}


function wgs84_y(lat1, lon1, h1)
{
wgs84a = 6378137
wgs84b = 6356752.314
wgs84e2 = (wgs84a * wgs84a - wgs84b * wgs84b) / (wgs84a * wgs84a)
wgs84n = wgs84a / Math.sqrt(1 - wgs84e2 * Math.pow(Math.sin(rad(lat1)),2))
if (eval(h1) == NaN) h1=0

return (wgs84n + h1) * Math.cos(rad(lat1)) * Math.sin(rad(lon1))
}

function wgs84_z(lat1, lon1, h1)
{
wgs84a = 6378137
wgs84b = 6356752.314
wgs84e2 = (wgs84a * wgs84a - wgs84b * wgs84b) / (wgs84a * wgs84a)
wgs84n = wgs84a / Math.sqrt(1 - wgs84e2 * Math.pow(Math.sin(rad(lat1)),2))
if (eval(h1) == NaN) h1=0

return (wgs84n * (1 - wgs84e2) + h1) * Math.sin(rad(lat1))
}

function wgs84_lat(x1, y1, z1)
{
wgs84a = 6378137
wgs84b = 6356752.314
wgs84e2 = (wgs84a * wgs84a - wgs84b * wgs84b) / (wgs84a * wgs84a)
wgs84eps2 = (wgs84a * wgs84a - wgs84b * wgs84b) / (wgs84b * wgs84b)

r1 = Math.sqrt(x1 * x1 + y1 * y1)
theta1 = Math.atan((z1 * wgs84a) / (r1 * wgs84b))

tanlat = (z1 + wgs84eps2 * wgs84b * Math.pow(Math.sin(theta1) ,3)) / (r1 - wgs84e2 * wgs84a * Math.pow(Math.cos(theta1),3))
return deg(Math.atan(tanlat))
}


function wgs84_lon(x1, y1, z1)
{
return deg(Math.atan(y1 / x1))
}


function wgs84_h(x1, y1, z1)
{
wgs84a = 6378137
wgs84b = 6356752.314
wgs84e2 = (wgs84a * wgs84a - wgs84b * wgs84b) / (wgs84a * wgs84a)
wgs84eps2 = (wgs84a * wgs84a - wgs84b * wgs84b) / (wgs84b * wgs84b)

r1 = Math.sqrt(x1 * x1 + y1 * y1)
theta1 = Math.atan((z1 * wgs84a) / (r1 * wgs84b))

tanlat = (z1 + wgs84eps2 * wgs84b * Math.pow(Math.sin(theta1),3)) / (r1 - wgs84e2 * wgs84a * Math.pow(Math.cos(theta1),3))

coslat = 1 / Math.sqrt(1 + tanlat * tanlat)
Sinlat = tanlat / Math.sqrt(1 + tanlat * tanlat)

wgs84n = wgs84a / Math.sqrt(1 - wgs84e2 * Sinlat * Sinlat)

return r1 / coslat - wgs84n
}


function bessel2wgs84_x(x1, y1, z1)

{
tx = 565.04
ty = 49.91
tz = 465.84
ra = -0.0000019848
rb = 0.0000017439
rc = -0.0000090587
sd = 0.0000040772

return x1 + tx + sd * x1 - rc * y1 + rb * z1
}

function bessel2wgs84_y(x1, y1, z1)
{
tx = 565.04
ty = 49.91
tz = 465.84
ra = -0.0000019848
rb = 0.0000017439
rc = -0.0000090587
sd = 0.0000040772

return y1 + ty + rc * x1 + sd * y1 - ra * z1
}

function bessel2wgs84_z(x1, y1, z1)
{
tx = 565.04
ty = 49.91
tz = 465.84
ra = -0.0000019848
rb = 0.0000017439
rc = -0.0000090587
sd = 0.0000040772

return z1 + tz - rb * x1 + ra * y1 + sd * z1
}


function bessel2wgs84_lat(lat1, lon1, h1)
{
x1 = bessel_x(lat1, lon1, h1)
y1 = bessel_y(lat1, lon1, h1)
z1 = bessel_z(lat1, lon1, h1)

x2 = bessel2wgs84_x(x1, y1, z1)
y2 = bessel2wgs84_y(x1, y1, z1)
z2 = bessel2wgs84_z(x1, y1, z1)

return wgs84_lat(x2, y2, z2)
}

function bessel2wgs84_lon(lat1, lon1, h1)
{
x1 = bessel_x(lat1, lon1, h1)
y1 = bessel_y(lat1, lon1, h1)
z1 = bessel_z(lat1, lon1, h1)

x2 = bessel2wgs84_x(x1, y1, z1)
y2 = bessel2wgs84_y(x1, y1, z1)
z2 = bessel2wgs84_z(x1, y1, z1)

return wgs84_lon(x2, y2, z2)
}

function bessel2wgs84_h(lat1, lon1, h1)
{
x1 = bessel_x(lat1, lon1, h1)
y1 = bessel_y(lat1, lon1, h1)
z1 = bessel_z(lat1, lon1, h1)

x2 = bessel2wgs84_x(x1, y1, z1)
y2 = bessel2wgs84_y(x1, y1, z1)
z2 = bessel2wgs84_z(x1, y1, z1)

return wgs84_h(x2, y2, z2)
}


function wgs842bessel_x(x1, y1, z1)
{
tx = -565.04
ty = -49.91
tz = -465.84
ra = 0.0000019848
rb = -0.0000017439
rc = 0.0000090587
sd = -0.0000040772

return x1 + tx + sd * x1 - rc * y1 + rb * z1
}

function wgs842bessel_y(x1, y1, z1)

{
tx = -565.04
ty = -49.91
tz = -465.84
ra = 0.0000019848
rb = -0.0000017439
rc = 0.0000090587
sd = -0.0000040772

return y1 + ty + rc * x1 + sd * y1 - ra * z1
}

function wgs842bessel_z(x1, y1, z1)

{
tx = -565.04
ty = -49.91
tz = -465.84
ra = 0.0000019848
rb = -0.0000017439
rc = 0.0000090587
sd = -0.0000040772

return z1 + tz - rb * x1 + ra * y1 + sd * z1
}

function wgs842bessel_lat(lat1, lon1, h1)
{
x1 = wgs84_x(lat1, lon1, h1)
y1 = wgs84_y(lat1, lon1, h1)
z1 = wgs84_z(lat1, lon1, h1)

x2 = wgs842bessel_x(x1, y1, z1)
y2 = wgs842bessel_y(x1, y1, z1)
z2 = wgs842bessel_z(x1, y1, z1)

return bessel_lat(x2, y2, z2)
}

function wgs842bessel_lon(lat1, lon1, h1)
{
x1 = wgs84_x(lat1, lon1, h1)
y1 = wgs84_y(lat1, lon1, h1)
z1 = wgs84_z(lat1, lon1, h1)

x2 = wgs842bessel_x(x1, y1, z1)
y2 = wgs842bessel_y(x1, y1, z1)
z2 = wgs842bessel_z(x1, y1, z1)

return bessel_lon(x2, y2, z2)
}

function wgs842bessel_h(lat1, lon1, h1)
{
x1 = wgs84_x(lat1, lon1, h1)
y1 = wgs84_y(lat1, lon1, h1)
z1 = wgs84_z(lat1, lon1, h1)

x2 = wgs842bessel_x(x1, y1, z1)
y2 = wgs842bessel_y(x1, y1, z1)
z2 = wgs842bessel_z(x1, y1, z1)

return bessel_h(x2, y2, z2)
}

function bessel2rd_x(lat1, lon1)
{
dlat = (lat1 * 3600 - 187762.178) * 0.0001
dlon = (lon1 * 3600 - 19395.5) * 0.0001

c01 = 190066.98903
c11 = -11830.85831
c21 = -114.19754
c03 = -32.3836
c31 = -2.34078
c13 = -0.60639
c23 = 0.15774
c41 = -0.04158
c05 = -0.00661

dx = c01 * dlon + c11 * dlat * dlon + c21 * dlat * dlat * dlon
dx = dx + c03 * Math.pow(dlon,3) + c31 * Math.pow(dlat,3) * dlon + c13 * dlat * Math.pow(dlon,3)
dx = dx + c23 * Math.pow(dlat,2) * Math.pow(dlon,3) + c41 * Math.pow(dlat,4) * dlon + c05 * Math.pow(dlon,5)

return 155000 + dx
}

function bessel2rd_y(lat1, lon1)
{
dlat = (lat1 * 3600 - 187762.178) * 0.0001
dlon = (lon1 * 3600 - 19395.5) * 0.0001

d10 = 309020.3181
d02 = 3638.36193
d12 = -157.95222
d20 = 72.97141
d30 = 59.79734
d22 = -6.43481
d04 = 0.09351
d32 = -0.07379
d14 = -0.05419
d40 = -0.03444

dy = d10 * dlat + d02 * Math.pow(dlon,2) + d12 * dlat * Math.pow(dlon,2)
dy = dy + d20 * Math.pow(dlat,2) + d30 * Math.pow(dlat,3) + d22 * Math.pow(dlat,2) * Math.pow(dlon,2)
dy = dy + d04 * Math.pow(dlon,4) + d32 * Math.pow(dlat,3) * Math.pow(dlon,2) + d14 * dlat * Math.pow(dlon,4)
dy = dy + d40 * Math.pow(dlat,4)

return 463000 + dy
}

function rd2bessel_lat(x1, y1)
{

dx = (x1 - 155000) * 0.00001
dy = (y1 - 463000) * 0.00001

a01 = 3236.0331637
a20 = -32.5915821
a02 = -0.2472814
a21 = -0.8501341
a03 = -0.0655238
a22 = -0.0171137
a40 = 0.0052771
a23 = -0.0003859
a41 = 0.0003314
a04 = 0.0000371
a42 = 0.0000143
a24 = -0.000009

dlat = a01 * dy + a20 * Math.pow(dx,2) + a02 * Math.pow(dy,2)
dlat = dlat + a21 * Math.pow(dx,2) * dy + a03 * Math.pow(dy,3) + a22 * Math.pow(dx,2)* Math.pow(dy,2)
dlat = dlat + a40 * Math.pow(dx,4) + a23 * Math.pow(dx,2) * Math.pow(dy,3) + a41 * Math.pow(dx,4) * dy
dlat = dlat + a04 * Math.pow(dy,4) + a42 * Math.pow(dx,4) * Math.pow(dy,2) + a24 * Math.pow(dx,2) * Math.pow(dy,4)

return (187762.178 + dlat) / 3600
}

function rd2bessel_lon(x1, y1)
{
dx = (x1 - 155000) * 0.00001
dy = (y1 - 463000) * 0.00001

b10 = 5261.3028966
b11 = 105.9780241
b12 = 2.4576469
b30 = -0.8192156
b31 = -0.0560092
b13 = 0.0560089
b32 = -0.0025614
b14 = 0.001277
b50 = 0.0002574
b33 = -0.0000973
b51 = 0.0000293
b15 = 0.0000291

dlon = b10 * dx + b11 * dx * dy + b12 * dx * Math.pow(dy,2)
dlon = dlon + b30 * Math.pow(dx,3) + b31 * Math.pow(dx,3) * dy + b13 * dx * Math.pow(dy,3)
dlon = dlon + b32 * Math.pow(dx,3) * Math.pow(dy,2) + b14 * dx * Math.pow(dy,4) + b50 * Math.pow(dx,5)
dlon = dlon + b33 * Math.pow(dx,3) * Math.pow(dy,3) + b51 * Math.pow(dx,5) * dy + b15 * dx * Math.pow(dy,5)

return (19395.5 + dlon) / 3600
}


function wgs842rd_x(lat1, lon1)
{
lat2 = wgs842bessel_lat(lat1, lon1, 0)
lon2 = wgs842bessel_lon(lat1, lon1, 0)

return bessel2rd_x(lat2, lon2)
}

function wgs842rd_y(lat1, lon1)
{
lat2 = wgs842bessel_lat(lat1, lon1, 0)
lon2 = wgs842bessel_lon(lat1, lon1, 0)

return bessel2rd_y(lat2, lon2)
}

function rd2wgs84_lat(x1, y1)
{
lat1 = rd2bessel_lat(x1, y1)
lon1 = rd2bessel_lon(x1, y1)

return bessel2wgs84_lat(lat1, lon1, 0)
}

function rd2wgs84_lon(x1, y1)
{
lat1 = rd2bessel_lat(x1, y1)
lon1 = rd2bessel_lon(x1, y1)

return bessel2wgs84_lon(lat1, lon1, 0)
}


function rad(x)
{ return (x * Math.PI) / 180 }

function deg(x)
{ return (x / Math.PI) * 180 }


//HTTPREQUEST naar mapserver
var xmlhttp;

//###########################################################################################	
function loadXMLDocByMarker(url) {			
	xmlhttp=null;
	// code for Mozilla, etc.
	if (window.XMLHttpRequest) {
	  xmlhttp=new XMLHttpRequest();
	}
	// code for IE
	else if (window.ActiveXObject) {
	  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
	}
	if (xmlhttp!=null)
	  {
	  xmlhttp.onreadystatechange=state_ChangeByMarker;
	  xmlhttp.open("GET",url,true);
	  xmlhttp.send(null);
	  }
	else
	  {
	  alert("Uw brouwser ondersteunt geen XMLHTTP.");
	  }
}

//###########################################################################################	
function loadXMLDoc(url) {			
	xmlhttp=null;
	// code for Mozilla, etc.
	if (window.XMLHttpRequest) {
	  xmlhttp=new XMLHttpRequest();
	}
	// code for IE
	else if (window.ActiveXObject) {
	  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
	}
	if (xmlhttp!=null)
	  {
	  xmlhttp.onreadystatechange=state_Change;
	  xmlhttp.open("GET",url,true);
	  xmlhttp.send(null);
	  }
	else
	  {
	  alert("Uw brouwser ondersteunt geen XMLHTTP.");
	  }
}

//###########################################################################################
function state_Change() {
	// if xmlhttp shows "loaded"
	if (xmlhttp.readyState==4)
	  {
	  // if "OK"
	  if (xmlhttp.status==200) {
		  //zet responseText van middenlaag om naar Hash, om de waarden eruit te kunnen halen
		  var StringHash = setResponseTextToHash(xmlhttp.responseText); 
		  //alert(xmlhttp.responseText);
		  
		  //Als responseText leeg is geef dan een foutmelding en zet koopsominfo off en spring er dan uit
		  if (!StringHash) {
			  
			  return false;
		  }
		  //toon de gegevens die je terugkrijgt
		  else {
		     			  
			  var lat = StringHash.lat;													//lat waarde
			  var lng = StringHash.lng;													//lng waarde
			  var zoom = StringHash.zoom;												//zoom waarde
			  var gebied = StringHash.gebied;											//gebied
			  
			  //als lat or lng = null geef dan een foutmelding.
			  if ((lat=='null') || (lng=='null')) {
				
				return false;
			  }					  
						  
			  //maak van lat en lng Center
			  var center = new GLatLng(lat, lng);
			  //zet de marker en infowindow
			  //setMarkerAndInfoWindow(center);					  
			  //zet de map op het juiste lat, lng met het zoomlevel, en laat de customlayer zien		  
			  map.setCenter(center,parseInt(zoom), custommap3);				  
		 }				  
	  }
	  else {
		  alert("Er is een probleem opgetreden met het ontvangen van de XML data:" + xmlhttp.statusText);
	  }
	}
}

