//<![CDATA[
//määrätään ja alustetaan kartta ja geokooderi
var map;
var geocoder = null;
// päivittää tähtäysristikon keskelle kartan liikkumisen aikana
function updateDuringMove() { if (centreMarker != null) { centreMarker.setPoint(map.getCenter()); } }
 
// nuppineulan ominaisuuksien määrittäminen
function createMarker(point,html) {
	//var marker = new GMarker(point);
	var kamera = new GIcon();
	// standardi-nuppineulan tilalle kameran kuva
	kamera.image = "punainenkamera.gif";
	// ei käytetä varjoa
	kamera.shadow = "";
	kamera.iconSize = new GSize(18, 18);
	kamera.shadowSize = new GSize(0, 0);
	kamera.iconAnchor = new GPoint(9, 18);
	kamera.infoWindowAnchor = new GPoint(5, 1);
	
	var marker = new GMarker(point, {clickable: true, icon:kamera});
	var opts = {pixelOffset:new GSize(0,-10), maxWidth:500}; 
 	GEvent.addListener(marker, "click", function() { marker.openInfoWindowHtml(html, opts); });
	return marker;  	
}

// Nuppineulojen hakeminen
function getMarks(url) {       /* välitetään url kutsun aikana */
	map.closeInfoWindow();
	// tyhjennetään kartan tasot
	map.clearOverlays();
	// haetaan kartan koillis-ja lounaiskulmien koordinaatit
	mapbounds=map.getBounds();
	var mapne=mapbounds.getNorthEast();
	var mapsw=mapbounds.getSouthWest();
	var mapSWLat=mapsw.lat();
	var mapSWLng=mapsw.lng();
	var mapNELat=mapne.lat();
	var mapNELng=mapne.lng();
	//var center = map.getCenter();
	//var keskipiste = center.toString();
	
	// tähtäysristikon määrittäminen
	var centreIcon = new GIcon();
	centreIcon.image = "musta_ruksi.gif";
	centreIcon.shadow = "";
	centreIcon.iconSize = new GSize(17, 17);
	centreIcon.shadowSize = new GSize(0, 0);
	centreIcon.iconAnchor = new GPoint(8.5, 8.5);
	centreIcon.infoWindowAnchor = new GPoint(5, 1);
	centreMarker = new GMarker(map.getCenter(), centreIcon);
	map.addOverlay(centreMarker);
	GEvent.addListener(map, 'move', updateDuringMove);
	
	url = url+"&nelat="+mapNELat+"&nelng="+mapNELng+"&swlat="+mapSWLat+"&swlng="+mapSWLng;
	
  	// tehdään XMLHttpRequest GXmlHttp.create() metodilla
	var request = GXmlHttp.create();
    	// Viileä XML:n pyyntö PHP:ltä AJAX-kutsulla
	request.open("GET", url, true);
    	request.onreadystatechange = function() {
     	 // Jos pyynnön tila =4 (sai vastauksen eli on valmis)
	if (request.readyState == 4) {	   
		// PHP palauttaa XML:n
		var xmlDoc = request.responseXML;
		// haetaan listaan kaikki marker-tagit
		var markers = xmlDoc.documentElement.getElementsByTagName("marker");
		// luupataan markers
		for (var loop1=0;loop1<markers.length;loop1++){
			var lat = parseFloat(markers[loop1].getAttribute("lat")); 
			var lng = parseFloat(markers[loop1].getAttribute("lng")); 
			var point = new GLatLng(lat,lng);
			var html = markers[loop1].getAttribute("html");
			var label = markers[loop1].getAttribute("label");
			var marker = createMarker(point,label,html);
			map.addOverlay(marker);
			}
		}
		};
	request.send(null);
}

// Käytetään googlen geokooderin osoitehakua
function showAddress(address) {
     map.clearOverlays();
     // clearOverlays ei osaa tyhjentää yhtä overlayta esim map.clearOverlays(merkki);
     // määrätään sininen osoiteikoni kuvaksi
     var osoiteicon = new GIcon();
     osoiteicon.image = "marker_osoite.png";
     osoiteicon.shadow = "";
     osoiteicon.iconSize = new GSize(14, 24);
     osoiteicon.shadowSize = new GSize(0, 0);
     osoiteicon.iconAnchor = new GPoint(7, 24);
	
	if (geocoder) {
        
	geocoder.getLatLng(
          address,
          function(point) {
            if (!point) {
              alert(address + " ei löytynyt");
            } else {
              map.setCenter(point, 13);
              var merkki = new GMarker(point, osoiteicon);
              map.addOverlay(merkki);
              //map.addOverlay(new GMarker(point, osoiteicon));
	      //marker.openInfoWindowHtml(address);
            }
          }
        );
}
    }


// Nuppineulojen hakeminen kokokuvaus-sivuun
function haeMerkit(url) {       /* välitetään url kutsun aikana */
	map.closeInfoWindow();
	map.clearOverlays();
	
	//var kuvaid = <?php $kuva_id = $_GET['kuva_id']; echo "$kuva_id";?>;
	
	// tähtäysristikon määrittäminen
	var centreIcon = new GIcon();
	centreIcon.image = "musta_ruksi.gif";
	centreIcon.shadow = "";
	centreIcon.iconSize = new GSize(17, 17);
	centreIcon.shadowSize = new GSize(0, 0);
	centreIcon.iconAnchor = new GPoint(8.5, 8.5);
	centreIcon.infoWindowAnchor = new GPoint(5, 1);
	centreMarker = new GMarker(map.getCenter(), centreIcon);
	map.addOverlay(centreMarker);
	GEvent.addListener(map, 'move', updateDuringMove);
	
	//url = url+"&nelat="+mapNELat+"&nelng="+mapNELng+"&swlat="+mapSWLat+"&swlng="+mapSWLng;
	//url = url+"&kuva_id="+kuvaid;
	url = url;
  	var request = GXmlHttp.create();  /* tehdään XMLHttpRequest GXmlHttp.create() metodilla   */
    	request.open("GET", url, true);  /* Viileä XML:n pyyntö PHP:ltä AJAX-kutsulla */
    	request.onreadystatechange = function() {
     	if (request.readyState == 4) {	    /* 4 tarkoittaa sai vastauksen eli on valmis */
		var xmlDoc = request.responseXML;   /* PHP palauttaa XML:n */
		var markers = xmlDoc.documentElement.getElementsByTagName("marker"); /* haetaan listaan kaikki marker-tagit */
		// luupataan markers
		for (var loop1=0;loop1<markers.length;loop1++){
			var lat = parseFloat(markers[loop1].getAttribute("lat")); 
			var lng = parseFloat(markers[loop1].getAttribute("lng")); 
			var point = new GLatLng(lat,lng);
			var html = markers[loop1].getAttribute("html");
			var label = markers[loop1].getAttribute("label");
			var marker = createMarker(point,label,html);
			map.addOverlay(marker);
			}
		}
		};
	request.send(null);
}



/* function lataa() {

	//var map = new GMap2(document.getElementById("map"));
	var map = new GMap2(document.getElementById("map"), {draggableCursor:"crosshair"});
	//container = document.getElementById("map");	
	//map = new GMap2(container, {draggableCursor:"crosshair"});
	//container.firstChild.nextSibling.firstChild.nextSibling.target = '_blank';
	
	map.addControl(new GLargeMapControl());
	map.addControl(new GMapTypeControl());
	map.addControl(new GScaleControl());
	map.enableDoubleClickZoom(); 
	map.enableContinuousZoom();
	
	var centerpoint = new GLatLng('61.413331','23.6062825');
	var zoomlevel=<?php if ($longi) echo "14"; else echo "6"; ?>;
	map.setCenter(centerpoint, zoomlevel);
	  
	
	 // taukoa=window.setTimeout("alert('')",500);
	 // window.clearTimeout(taukoa);
	var ovcontrol = new GOverviewMapControl(new GSize(155,155));
	map.addControl(ovcontrol);
	var ov_map = ovcontrol.getOverviewMap();
	GEvent.addListener(map, 'maptypechanged', function(){ov_map.setMapType(G_NORMAL_MAP);
		});

		//updateStatusBar();
	  
	 GEvent.addListener(map, 'click' , function(overlay,point) {
   	if (point) { alert( point ); } 
	});
*/	
	
//GEvent.addListener(marker, "click", function() { marker.openInfoWindowHtml(html, opts);});
	
	// Firefox
	//GEvent.addDomListener(container, "DOMMouseScroll", wheelZoom);
	//GEvent.addDomListener(container, "mousewheel", wheelZoom);
	
// Mikäli kuvaan löytyy koordinaatit niin asetetaan lähempi karttataso esim.14
 /*    try { 
	  var centerpoint = new GLatLng('<?php echo "$lat";?>','<?php echo "$longi";?>');
	  var zoomlevel=14;
	  map.setCenter(centerpoint, zoomlevel);
	 
	  
	  var point = new GLatLng('<?php echo "$lat";?>','<?php echo "$longi";?>');
	  var label = '<?php echo "<a href=\"naytekuva.php?kuva_id=$kuva_id\" target=\"uusi\" > <IMG src=\"$thumbpolku\"  </a><br>";  ?> ';
	  var marker = createMarker(point, label);
	  map.addOverlay(marker);
	  
	
	  
	}
     catch(e) {
	   alert(e); 
	   }
     finally {
	  var centerpoint = new GLatLng(<?php if ($longi) echo "$lat , $longi"; else echo "61.413331 , 23.6062825"; ?>);
	  var zoomlevel=<?php if ($longi) echo "14"; else echo "6"; ?>;
	  map.setCenter(centerpoint, zoomlevel);	   
	 }

}
*/

/* A lot of the code is taken from other tutorials:). */

// --------------------------------------------------------------
// Icon for the red square displayed with the mouse wheel zoom
/*var baseIcon = new GIcon();
baseIcon.iconSize=new GSize(100,100);
baseIcon.iconAnchor=new GPoint(50,50);
var rectIcon = new GIcon(baseIcon, "../pics/zoom-world-mini.png", null);
*/

// Global variables used with the mouse wheel zoom
/*var mouseLatLng;
var zoomRect;
*/
// --------------------------------------------------------------


//var center = map.getCenter();
//var keskipiste = center.toString();
//var map = new GMap2(document.getElementById("map"));

//var centerPoint = new GLatLng('61.413331','23.6062825');


/*
function moveEnd() {
	updateStatusBar();
}

function zoomEnd(oldZ,zoom) {
	updateStatusBar();
}


function updateStatusBar() {
	var center = map.getCenter();
	var zoom = map.getZoom();

	var bounds = map.getBounds();
	var SW = bounds.getSouthWest();
	var NE = bounds.getNorthEast();

	var oCoords = document.getElementById("coords");
	oCoords.innerHTML = 'Map center: (' + center.y.toFixed(6) + ',' + center.x.toFixed(6) + ') - zoom: ' + zoom;
	oCoords.innerHTML += '<br> ';
	oCoords.innerHTML += 'SW: ' + SW.y.toFixed(6) + ', ' + SW.x.toFixed(6);
	oCoords.innerHTML += '<br> ';
	oCoords.innerHTML += 'NE: ' + NE.y.toFixed(6) + ', ' + NE.x.toFixed(6);

}
*/
/*function resizeMap() {
	container.style.width = document.body.clientWidth - 180 + 'px';
	container.style.height = document.body.clientHeight - 100 + 'px';
	if (map) {
		map.checkResize();
	}
}
*/
/*function mouseMove(mousePt) {
	mouseLatLng = mousePt;
	var zoom = map.getZoom();
	var oStatusDiv = document.getElementById("mouseTrack")	
	var mousePx = normalProj.fromLatLngToPixel(mousePt, zoom);
	oStatusDiv.innerHTML = 'Mouse LatLng: ' + mousePt.y.toFixed(6) + ', ' + mousePt.x.toFixed(6) ;
	oStatusDiv.innerHTML += '<br> ';
	oStatusDiv.innerHTML += 'Mouse Px: ' + mousePx.x + ', ' + mousePx.y;
	oStatusDiv.innerHTML += '<br>';
	oStatusDiv.innerHTML += 'Tile: ' + Math.floor(mousePx.x / 256) + ', ' + Math.floor(mousePx.y / 256);
}
*/


//]]>

