var map;
var bounds = new GLatLngBounds;
var drawn = false;

function loadMap(q) {
	////alert('line10');
	//STYLE
	var canvasWidth = 529;
	var canvasHeight = 429;

	var navWidth = Math.round(canvasWidth / 4);
	var navHeight = Math.round(canvasHeight / 4);	
	
	document.getElementById('map_canvas').style.width = canvasWidth+'px';
	document.getElementById('map_canvas').style.height = canvasHeight+'px';

	var sliderOffset = '0';
	document.getElementById('slider').style.left = sliderOffset+'px';
	document.getElementById('map_list').style.width = canvasWidth+'px';
	//document.getElementById('map_list').style.height = canvasHeight+'px';
	//document.getElementById('map_list_ajax').style.height = (canvasHeight-43)+'px';
	
	map = new GMap2(document.getElementById("map_canvas"));
	var x = 55.801281;
	var y = 10.122656;
	map.setCenter(new GLatLng(x,y), 7);

	//CHECK ZOOM LEVEL
	GEvent.addListener(map, "zoomend", function() { 
		//alert('line30 zoomlevel' + map.getZoom());
		if(map.getZoom() > 6) {
			////alert('line 32');
			if(map.getZoom() == 7) {
				////alert('line 34');
				drawRegionMarkers();
			} else {
				////alert('line 37');
				if(!drawn) {
					////alert('line 39');
					drawMarkers('', q);
				}	
			}
		} else {
			////alert('line 44');
			drawDKZoom();
		} 

	});

	//CONTROL
	//map.addControl(new GMapTypeControl());
	map.addControl(new GLargeMapControl());

	//OVERVIEW MAP
	//var Tsize = new GSize(navWidth, navHeight);
	//map.addControl(new GOverviewMapControl(Tsize));


	//TOGGLE CONTROLS
	//GEvent.addListener(map, "mouseover", function() { 
	//	map.addControl(new GLargeMapControl());
	//});
	
	/*if(q != 0){
		////alert(decodeVars(q));
	}*/
	
	//////alert(q);
	//DRAW?	
	if(q != 0) {
		////alert('line 67');
		drawn = true;
		drawMarkers('', q);
	} else { 
		if(drawn) {
			////alert('line 72');
			drawMarkers('', q);
		} else {
			////alert('line 75');
			drawRegionMarkers();
			//document.getElementById('q-msg').innerHTML = 'S&oslash;g p&aring; <strong>navn</strong>, <strong>vej</strong>, <strong>postnr.</strong> og <strong>by</strong>';
		}

	}
}

function drawMarkers(l, q) {
	////alert('line 86');
	document.getElementById('q-msg').innerHTML = 'Loading...';

	drawn = true;
	map.clearOverlays();

	if (q != 0) {
		////alert('line 93');
		fileXML = "http://www.flush-it.dk/xml/getXMLData.php?q=" + q;	
	}
	else {
		////alert('line 97');
		fileXML = "http://www.flush-it.dk/xml/getXMLData.php";	
	}
	
	GDownloadUrl(fileXML, function(data) {
		
		var xml = GXml.parse(data);
		////alert(typeof xml);
	       var markers = xml.documentElement.getElementsByTagName("marker");
		var html;
		var type = 0;

		if(type == 0) {
			////alert('line 110');
			//draw all from q
			for (var i = 0; i < markers.length; i++) {
				////alert('line 113');
				var active = parseFloat(markers[i].getAttribute("active"));
	
				if(active == 1) {
					////alert('line 117');
					var id = markers[i].getAttribute("id");
					var name = markers[i].getAttribute("name");
					var street = markers[i].getAttribute("street");
					//var no = parseFloat(markers[i].getAttribute("no"));
					var postal = parseFloat(markers[i].getAttribute("postal"));
					var city = markers[i].getAttribute("city");
					var country = markers[i].getAttribute("country");
		
					var cat = parseFloat(markers[i].getAttribute("cat"));
					var partner = markers[i].getAttribute("partner");
					////alert(partner);
					var x = parseFloat(markers[i].getAttribute("lat"));
					var y = parseFloat(markers[i].getAttribute("lng"));
						
					glink = 'http://maps.google.dk/maps?f=q&hl=da&geocode=&q='+street+' danmark&sll='+x+','+y+'&sspn=0.007062,0.017467&ie=ISO-8859-1&z=16&iwloc=addr'
	
					
					html = '<table width="100"><tr><td>';
					html += name + '<br />' + street + '<br />' + postal + ' ' + city;
					html += '<br /><br />' + '<a href="'+glink+'" target="_blank" onfocus="this.blur">K&oslash;rselsvejledning</a>';
					html += '<br />' + '<a href="http://www.flush-it.dk/public/partners.php?action=partner&id='+id+'" onfocus="this.blur">Mere Info</a>';
					html += '</td></tr></table>';
	
					var point = new GLatLng(x,y);
					map.addOverlay(createMarker(point,street,html,cat, partner));
					//////alert('line 142');
					
					bounds.extend(point);
				}
	    	}

		
			if(l) {
				////alert('line 148');
				map.setCenter(l,7);
				document.getElementById('q-msg').innerHTML = 'Viser '+ i +' faciliteter';
			} else {
				////alert('line 153');
				//bound
				if(i > 0) {
					////alert('line 156');
					map.setZoom(map.getBoundsZoomLevel(bounds));
 					map.setCenter(bounds.getCenter());

					if(i == 1) {
						////alert('line 161');
						document.getElementById('q-msg').innerHTML = 'Viser &eacute;n facilitet';
					} else {
						////alert('line 164');
						document.getElementById('q-msg').innerHTML = 'Viser '+ i +' faciliteter';
					}

				} else {
					//no matches
					////alert('line 170');
					drawRegionMarkers();
					document.getElementById('q-msg').innerHTML = '<span style="color: #ffe505">0 matches</span>';
					document.getElementById('q').focus();
				}

			//0 end
			}
		}

	});
	
	drawn = true;
}

function drawRegionMarkers() {
	////alert('line 183');
	//document.getElementById('q-msg').innerHTML = 'S&oslash;g p&aring; <strong>navn</strong>, <strong>vej</strong>, <strong>postnr.</strong> og <strong>by</strong>';

	drawn = false;
	map.clearOverlays();
	
	var x = 55.801281;
	var y = 10.122656;
	map.setCenter(new GLatLng(x,y), 7);
		
	//draw zoomers
	x = 56.752723;
	y = 9.755859;
	var point = new GLatLng(x,y);
	icon = '/images/gmap/icons/zoom.png';
	map.addOverlay(createNormalMarker(point,icon,64,64,1));

	
	//draw zoomers
	x = 55.776573;
	y = 9.431763;
	var point = new GLatLng(x,y);
	icon = '/images/gmap/icons/zoom.png';
	map.addOverlay(createNormalMarker(point,icon,64,64,1));
	
	
	//draw zoomers
	x = 55.541065;
	y = 11.821284;
	var point = new GLatLng(x,y);
	icon = '/images/gmap/icons/zoom.png';
	map.addOverlay(createNormalMarker(point,icon,64,64,1));
}

function drawDKZoom() {
	////alert('line 220');
	drawn = false;
	map.clearOverlays();
	
	//draw zoomers
	x = 56.365250;
	y = 10.195313;
	var point = new GLatLng(x,y);
	icon = '/images/gmap/icons/zoom.png';
	map.addOverlay(createNormalMarker(point,icon,100,100,false));
}

//CREATEMARKER
function createMarker(point, tooltip, html, cat, partner) {
	////alert('line 234');
	var baseIcon = new GIcon();
	baseIcon.iconSize = new GSize(75, 75);
	baseIcon.iconAnchor = new GPoint(9, 34);

	/*var partnerIcon = new GIcon();
	partnerIcon.iconSize = new GSize(75, 75);
	partnerIcon.iconAnchor = new GPoint(9, 34);*/

	iconsPath = '../images/gmap/icons/';
	
	picons = new Array(
		iconsPath + 'zoom.png',
		iconsPath + 'partner_cafe.png', 
		iconsPath + 'partner_restaurant.png', 
		iconsPath + 'partner_bar.png', 
		iconsPath + 'partner_biograf.png',
		iconsPath + 'partner_tankstation.png',
		iconsPath + 'partner_offentligt.png',
		iconsPath + 'partner_restaurant.png', 
		iconsPath + 'partner_offentligt.png'
		//tools
			
		);
	
	icons = new Array(
		iconsPath + 'zoom.png',
		iconsPath + 'cafe.png', 
		iconsPath + 'restaurant.png', 
		iconsPath + 'bar.png', 
		iconsPath + 'biograf.png',
		iconsPath + 'tankstation.png',
		iconsPath + 'offentligt.png',
		iconsPath + 'restaurant.png', 
		iconsPath + 'offentligt.png' 
		//tools
		
		);
	/*////alert(icons[cat]);
	return false;*/
	
   	var markerIcon = new GIcon(baseIcon);
	////alert(partner);
	markerIcon.image = (partner == 1) ? picons[cat] : icons[cat];
	
	markerOptions = { icon:markerIcon, draggable:false}

	marker = new PdMarker(point, markerOptions);
	marker.setTooltip(tooltip);
	marker.setDetailWinHTML(html);

	//marker.setHoverImage(icons[0]);
	
	GEvent.addListener(marker, "dblclick", function() {

		map.setCenter(point,16);

	});

    return marker;
}

function createNormalMarker(point,icon,sizew,sizeh,q) {
	////alert('line 274');
    var baseIcon = new GIcon();
    baseIcon.iconSize = new GSize(sizew, sizeh);
    baseIcon.iconAnchor = new GPoint(9, 34);

    var customIcon = new GIcon(baseIcon);
    customIcon.image = icon;

    markerOptions = { icon:customIcon };
    var marker = new GMarker(point, markerOptions);

	if(q) {
		////alert('line 286');
		GEvent.addListener(marker, "click", function() {

			drawn = true;
			drawMarkers(point, 0);

   		});
	} else {
		////alert('line 296');
		GEvent.addListener(marker, "click", function() {
			drawRegionMarkers();
   		});
	}

    return marker;
}

function setMapList(id){
	var opt_map = document.getElementById('option_map');
	var opt_list = document.getElementById('option_list');
	
	if(id == 'option_map') {
		var src = opt_map.src;
		var img = src.split('/')[5];
		////alert(img);
		
		if(img != 'map_checked.php') {
			////alert('test');
			document.getElementById('slider-container').style.display = "block";
			document.getElementById('map_list').style.display = "none";
			opt_map.src = "../images/gmap/map_checked.png";
			opt_list.src = "../images/gmap/list_not_checked.png";
		}
	} else {
		var src = opt_list.src;
		var img = src.split('/')[5];
		////alert(img);
		
		if(img != 'list_checked.php') {
			////alert('test1');
			document.getElementById('slider-container').style.display = "none";
			document.getElementById('map_list').style.display = "block";
			opt_map.src = "../images/gmap/map_not_checked.png";
			opt_list.src = "../images/gmap/list_checked.png";
		}
	}
}

function decodeVars(x)
{
	x = x.replace(/(%C6)/g, "Æ");
	x = x.replace(/(%E6)/g, "æ");
	x = x.replace(/(%D8)/g, "Ø");
	x = x.replace(/(%F8)/g, "ø");
	x = x.replace(/(%C5)/g, "Å");
	x = x.replace(/(%E5)/g, "å");
	
	return x;
}
