var plaatsen;
var lastsearch = "";
var markers;
var permalinkcontrol = new OpenLayers.Control.Permalink();;
OpenLayers.ImgPath = "images/ol/";

Proj4js.defs["EPSG:900913"] = "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +no_defs";
Proj4js.defs["EPSG:28992"] = "+proj=sterea +lat_0=52.15616055555555 +lon_0=5.38763888888889 +k=0.999908 +x_0=155000 +y_0=463000 +ellps=bessel +units=m +towgs84=565.2369,50.0087, 465.658,-0.406857330322398,0.350732676542563,-1.8703473836068,4.0812 +no_defs";

OpenLayers.Control.Click = OpenLayers.Class(OpenLayers.Control, {                
	defaultHandlerOptions: {
		'single': true,
		'double': false,
		'pixelTolerance': 0,
		'stopSingle': false,
		'stopDouble': false
	},
	initialize: function(options) {
		this.handlerOptions = OpenLayers.Util.extend(
			{}, this.defaultHandlerOptions
		);
		OpenLayers.Control.prototype.initialize.apply(
			this, arguments
		); 
		this.handler = new OpenLayers.Handler.Click(
			this, {
					'click': this.onClick
					}, this.handlerOptions
		);
	}, 

	onClick: function(evt) {
		var lonlat = map.getLonLatFromViewPortPx(evt.xy);
		var ll = map.getLonLatFromPixel(evt.xy).transform(new OpenLayers.Projection('EPSG:900913'), new OpenLayers.Projection('EPSG:28992'));
		var out = ll.lon.toFixed(0) + ", " + ll.lat.toFixed(0); // no more detail than meters.
		document.getElementById("x-tekstvak").value = ll.lon.toFixed(0); // no more detail than meters.
		document.getElementById("y-tekstvak").value = ll.lat.toFixed(0); // no more detail than meters.
		copy_to_clipboard(ll.lon.toFixed(0) + "," + ll.lat.toFixed(0));
		document.getElementById("tekstvak").innerHTML = "Geklikt op " + ll.lon.toFixed(0) + "," + ll.lat.toFixed(0);
		markers.clearMarkers();
		var size = new OpenLayers.Size(21,25);
		var offset = new OpenLayers.Pixel(-(size.w/2), -size.h);
		var icon = new OpenLayers.Icon('images/ol/marker.png',size,offset);
		markers.addMarker(new OpenLayers.Marker(lonlat,icon));
	}
 });

function init() {
   map = new OpenLayers.Map('map', {
	theme: "theme/gee/style.css",
	projection: "EPSG:900913",
	controls: [new OpenLayers.Control.ArgParser(),
        	new OpenLayers.Control.LayerSwitcher(),
	        new OpenLayers.Control.Navigation(),
		permalinkcontrol,
        	new OpenLayers.Control.PanZoom()],
      units: "m",
      maxResolution: 156543.0339,
      numZoomLevels: 20
   });

   var mapnik = new OpenLayers.Layer.OSM.Mapnik("mapnik", {
      keyid: "mapnik",
      displayOutsideMaxExtent: true,
      wrapDateLine: true,
      layerCode: "M"
   });
   map.addLayer(mapnik);
   var numZoomLevels = Math.max(mapnik.numZoomLevels);
   markers = new OpenLayers.Layer.Markers("Markers");
	map.addLayer(markers);
	var singleClickControl = new OpenLayers.Control.Click({
		handlerOptions: {
			"single": true
		}});
	map.addControl(singleClickControl);
	singleClickControl.activate();
	if (!map.getCenter()) map.setCenter(new OpenLayers.LonLat(544482.56799,6867736.16208),11);
	var args = OpenLayers.Util.getParameters();
	if(typeof(args.q) != 'undefined'){
		searchrun(args.q);
		o=document.getElementById('invoer');
		o.value = args.q.replace(/\+/g,' ')

	}
}


function searchclick() {
	jQuery('#tekstvak').html("Bezig met zoeken");
	jQuery("#searchresult").html("");

	var str = "";
	o=document.getElementById('invoer');

	if (o.length === 0) {
		str="dam+1+amsterdam";
	} else {
		raw = o.value;
		str = raw.replace(/\s/g,'+')
		str = str.replace(/,/g,'+')
	}
	searchrun(str);
}

function searchrun(str){	
	var proxy = "proxy.php?u=";
	var url = "http://nominatim.openstreetmap.org/search?";
	url = proxy + url + 'q='+str+'&format=json&polygon=0&addressdetails=1&email=nominatim@dogomaps.net'; 
	lastsearch = str ;
	permalinkcontrol.base = permalinkcontrol.base + '?q=' + lastsearch;
	permalinkcontrol.draw();
	markers.clearMarkers();
	jQuery.getJSON(url, function(data) {
		for (i=0,data.length;i < data.length; i++){
			if(typeof(data[i].icon) != 'undefined'){
			icon_url = data[i].icon;
			} else {
			icon_url = 'images/ol/marker.png';
			}
			var result_string = '';
			var result_label ='';
			if (data[i].class == 'building'){
				var temp_type = 'building';
				if(typeof(data[i].address[temp_type]) != 'undefined'){result_label = data[i].address[temp_type] + ' '}				
			}
			if (data[i].type != 'address'){
				var temp_type = data[i].type;
				if(typeof(data[i].address[temp_type]) != 'undefined'){result_label = data[i].address[temp_type] + ' '}				
			}
			if(typeof(data[i].address.road) != 'undefined'){result_string += data[i].address.road + ' '}
			if(typeof(data[i].address.house_number) != 'undefined'){result_string += data[i].address.house_number + ' '}
			if(typeof(data[i].address.city) != 'undefined'){result_string += data[i].address.city + ' '}
			if(typeof(data[i].address.postcode) != 'undefined'){result_string += data[i].address.postcode + ' '}

			jQuery("#searchresult").append('<p class="search_results_entry"><img src="'+ 
				icon_url + '" title="' + 
				data[i].type + '">'+ 
				result_label + '<a href="javascript:void(0);" onclick="setPosition('+ 
				data[i].lon +', '+ 
				data[i].lat +', 17); return false;">' + result_string + '</a>' + '</p>');
		}
		jQuery('#tekstvak').html("Klaar met zoeken");
	});
}

function setPosition(lon,lat,zoom){
	var lonlat = new OpenLayers.LonLat(lon,lat);
	var ll = lonlat.transform(new OpenLayers.Projection('EPSG:4326'), new OpenLayers.Projection('EPSG:28992'));
	var out = ll.lon.toFixed(0) + ", " + ll.lat.toFixed(0); // no more detail than meters.
	document.getElementById("x-tekstvak").value = ll.lon.toFixed(0); // no more detail than meters.
	document.getElementById("y-tekstvak").value = ll.lat.toFixed(0); // no more detail than meters.
	copy_to_clipboard(ll.lon.toFixed(0) + "," + ll.lat.toFixed(0));
	document.getElementById("tekstvak").innerHTML = "Adres geselecteerd: " + ll.lon.toFixed(0) + "," + ll.lat.toFixed(0);

	markers.clearMarkers();
	var lonlat2 = new OpenLayers.LonLat(lon,lat);
	var ll2 = lonlat2.transform(new OpenLayers.Projection('EPSG:4326'), new OpenLayers.Projection('EPSG:900913'));
	map.setCenter(ll2,zoom);
	var size = new OpenLayers.Size(21,25);
	var offset = new OpenLayers.Pixel(-(size.w/2), -size.h);
	icon_url = 'images/ol/marker.png';
	var icon = new OpenLayers.Icon(icon_url,size,offset);
	markers.addMarker(new OpenLayers.Marker(ll2,icon));
}

function copy_to_clipboard(text){
	if(window.clipboardData) {
		//IE
		window.clipboardData.setData('text',text);
	} else {
		//Firefox, requires flash!
		var clipboarddiv=document.getElementById('divclipboardswf');
		if (clipboarddiv===null) {
			clipboarddiv=document.createElement('div');
			clipboarddiv.setAttribute("name","divclipboardswf");
			clipboarddiv.setAttribute("id","divclipboardswf");
			document.body.appendChild(clipboarddiv);
		}
		clipboarddiv.innerHTML='<embed src="clipboard.swf" FlashVars="clipboard="' +
		encodeURIComponent(text) + '" width="0" height="0" type="application/x-schockwave-flash"></embed>';
		return false;
	}
}

