function TileToQuadKey ( x, y, zoom){ 
    var quad = ""; 
    for (var i = zoom; i > 0; i--){
    var mask = 1 << (i - 1); 
    var cell = 0; 
    if ((x & mask) != 0) 
    cell++; 
    if ((y & mask) != 0) 
    cell += 2; 
    quad += cell; 
    } 
return quad; 
}
	
function w_resize() {
	//window.location.reload();
	
	if (debug) GLog.write('windows resized ' + window.innerWidth + ',' + window.innerHeight);
	var urlparms=location.href.split("?");
	if (debug)	GLog.write("URL=" + urlparms[0] );
	window.location.href=urlparms[0] + "?" + map.getCenter().lat() + "," + map.getCenter().lng() + ";" + map.getZoom();
	// 52.176879271687774,4.530487060546875;11
	}
	
function viewPort() {
var h = window.innerHeight || document.documentElement.clientHeight || document.getElementsByTagName('body')[0].clientHeight;
var w = window.innerWidth || document.documentElement.clientWidth || document.getElementsByTagName('body')[0].clientWidth;
return { width : w , height : h }
}


function Adjust(X,Y,x,y,z,w)
{
	var offset=268435456;
	var radius=offset/Math.PI;

	function LToX(x)
	{
		return Math.round(offset+radius*x*Math.PI/180);
	}

	function LToY(y)
	{
		return Math.round(offset-radius*Math.log((1+Math.sin(y*Math.PI/180))/(1-Math.sin(y*Math.PI/180)))/2);
	}

	function XToL(x)
	{
		return ((Math.round(x)-offset)/radius)*180/Math.PI;
	}

	function YToL(y)
	{
		return (Math.PI/2-2*Math.atan(Math.exp((Math.round(y)-offset)/radius)))*180/Math.PI;
	}

	if (w)
	{
		return {x:(LToX(X)-LToX(x))>>(21-z),y:(LToY(Y)-LToY(y))>>(21-z)};
	}

	else
	{
		return {x:XToL(LToX(x)+(X<<(21-z))),y:YToL(LToY(y)+(Y<<(21-z)))};
	}
}

function XYToLL(X,Y,x,y,z){return Adjust(X,Y,x,y,z,0)}

//	X = X pixel offset of new map center from old map center
//	Y = Y pixel offset of new map center from old map center
//	x = Longitude of map center
//	y = Latitude  of map center
//	z = Zoom level

//	result.x = Longitude of adjusted map center
//	result.y = Latitude  of adjusted map center

function LLToXY(X,Y,x,y,z){return Adjust(X,Y,x,y,z,1)}

//	X = Longitude of marker center
//	Y = Latitude  of marker center
//	x = Longitude of map center
//	y = Latitude  of map center
//	z = Zoom level

//	result.x = X pixel offset of marker center from map center
//	result.y = Y pixel offset of marker center from map center
				
function detectBrowser() {
  var useragent = navigator.userAgent;
    var mapdiv = document.getElementById("map");
        
      if (useragent.indexOf('iPhone') != -1 || useragent.indexOf('Android') != -1 ) {
          mapdiv.style.width = '100%';
	      mapdiv.style.height = '100%';
	        } else {
	        alert('h: ' + viewPort().height + '\r\nw: ' + viewPort().width);
			mapdiv.style.width = viewPort().width;
			mapdiv.style.height = viewPort().height;			
		    }
		}
			  
					
function load() {
    if (GBrowserIsCompatible()) {

 	var positie=position;
	var zoom=zoomlevel;
	
	//window.moveTo(0, 0);
  	//window.resizeTo(screen.width, screen.height);
	//window.location.href=window.location.href
	this.div1 = document.createElement("div");
	this.div1.id = "map";  
	this.div1.style.position = "absolute";
	this.div1.top=1;
	this.div1.left=1;
    this.div1.style.width = viewPort().width-20 + 'px';    
	this.div1.style.height = viewPort().height-20 + 'px';
    document.body.appendChild(this.div1);
    if (debug)	GLog.write('h: ' + viewPort().height + ' nw: ' + viewPort().width);
    if (debug)	GLog.write('href:' + window.location.href);
		
		       
	var lsc = new google.maps.LocalSearch(); 
	
	var urlparms=location.href.split("?");
	if (debug)	GLog.write("URL=" + urlparms[0] );

	if (urlparms.length > 1 ) {
		var parms=urlparms[1].split(";");
		if (parms.length > 2 ) {
			if (debug) GLog.write("2e parameter:" + parms[2] );
			zoeklokatie=parms[2];
			}
		var pos=parms[0].split(",");
		var posx=pos[0];
		var posy=pos[1];
		positie= new GLatLng.fromUrlValue(parms[0]);
		zoom=parseFloat(parms[1]);
		if (debug)	GLog.write("position,zoomlevel=" + positie.lat() + " , " + positie.lng() + " ;" + zoom);
	}
	
	
	map = new GMap2(document.getElementById('map'));
	om = new OverlayMessage(document.getElementById('map'));
	polyline = new GPolyline(positie,new GLatLng(52.14261,5.05),"000000",0.1); 		
	map.setCenter(positie, zoom, G_PHYSICAL_MAP );
	map.enableScrollWheelZoom();
	GEvent.addListener(map, "zoomstart", function() { om.Set('Ogenblik geduld a.u.b..'); });
	GEvent.addListener(map, "zoomend", function() { 
		if (debug)	GLog.write("zoomend pos X,Y,zoomlevel=" + map.getCenter().lat() + "," + map.getCenter().lng() + "," + map.getZoom());
	    om.Clear();
	    });

	GEvent.addListener(map, "movestart", function() { om.Set('Ogenblik geduld a.u.b....');mm.refresh(); });
		
	//GEvent.addListener(map, "moveend", function() { om.Clear(); });
	if (debug) GLog.write("log started");

	var RLTiles = function (a,b) {			    
	var f = "http://www.hosting.niebeek.nl/rijnland/lagen/alles/" + TileToQuadKey(a.x,a.y,b) + ".png";
	    return f;
	    }

if (debug)	GLog.write("RL Tiles defined");


	RLHybridLayer = new Array();
	RLHybridLayer[0] = G_SATELLITE_MAP.getTileLayers()[0];
	RLHybridLayer[1] = new GTileLayer(new GCopyrightCollection('') , 12, 19);
	RLHybridLayer[1].getTileUrl = RLTiles;
	RLHybridLayer[1].isPng = function() {return true;};	//transparent PNG in IE

	RLHybridLayer[1].getCopyright = function(a,b) {return "Niebeek milieumanagement bv 2008";}; 
	RLSatMap = new GMapType(RLHybridLayer, 
	G_SATELLITE_MAP.getProjection(), 'Satelliet',{errorMessage:"", alt:"Satelliet met Rijnland"}); 
	RLSatMap.getTextColor = function() {return "#FFFFFF";};
	map.addMapType(RLSatMap);
	
	RLNormalLayer = new Array();
	RLNormalLayer[0] = G_NORMAL_MAP.getTileLayers()[0];
	RLNormalLayer[1] = new GTileLayer(new GCopyrightCollection('') , 12, 19);
	RLNormalLayer[1].getTileUrl = RLTiles;
	RLNormalLayer[1].isPng = function() {return true;};	//transparent PNG in IE

	RLNormalLayer[1].getCopyright = function(a,b) {return "Niebeek milieumanagement bv 2008";}; 
	RLNormalMap = new GMapType(RLNormalLayer, 
	G_NORMAL_MAP.getProjection(), 'Kaart',{errorMessage:"", alt:"Normale met Rijnland"}); 
	RLNormalMap.getTextColor = function() {return "#FFFFFF";};
	map.addMapType(RLNormalMap);
	map.setUIToDefault();

	map.removeMapType(G_HYBRID_MAP);	
	map.removeMapType(G_SATELLITE_MAP);
	map.removeMapType(G_NORMAL_MAP);	
	
	 
	map.setCenter(positie, zoom, RLSatMap );
	//map.addControl(new GOverviewMapControl());
	map.addControl(new GScaleControl());
	map.addControl(new GMapTypeControl());
	map.addControl(new TextualZoomControl());
	map.enableDoubleClickZoom();
	map.enableRotation();
	mm = new MarkerManager(map, {maxZoom:19}); 


	GEvent.addListener(map, "moveend", function() {  
		 if (map.getZoom() > 12  || zoeklokatie != "" ) {  	
		 	if (debug) GLog.write("swn=" + map.getBounds().getSouthWest().lat() + ",swe=" + map.getBounds().getSouthWest().lng() + ",nen=" + map.getBounds().getNorthEast().lat() + ",nee=" + map.getBounds().getNorthEast().lng());
		KMLparser("pinpoint.php?swn=" + map.getBounds().getSouthWest().lat() + "&swe=" + map.getBounds().getSouthWest().lng() + "&nen=" + map.getBounds().getNorthEast().lat() + "&nee=" + map.getBounds().getNorthEast().lng(),map);
		 };
		 //map.setCenter(coord_zl, 16 );
		  om.Clear();
	});
	var geocoder = new GClientGeocoder();

	};
    };
