var geocoder = null;
var map = null;
var mgr = null;
var baseIcon;
var cities = [];
var areas = [];
var places = [];
var typeIndex = [];
var typeVisibility = 94;
var sizeVisibility = 63;
var timeout = 100;
	
function loadGoogleMap() {
	if (!GBrowserIsCompatible()) {
		document.getElementById("map").innerHTML = '<center><h3>Käyttämäsi selain ei ole yhteensopiva Google Mapsin kanssa.</h3></center>';
	}
	else if(map == null) {
		log('Creating map...');
		map = new GMap2(document.getElementById("map"));

		map.addControl(new CustomZoomControl());
		map.addControl(new CustomMapTypeControl());
		map.enableDoubleClickZoom();
		//map.enableScrollWheelZoom();
		//map.enableContinuousZoom();

		map.setCenter(new GLatLng(62.023678, 24.906048), 6);

		log('Creating geocoder...');
		geocoder = new GClientGeocoder();
		geocoder.setBaseCountryCode('FI');

		log('Creating baseicon...');
		baseIcon =	new GIcon();
		baseIcon.image = "http://www.kokouspaikat.com/pix/kuvakkeet/img_ico_gm_kohde.png"
		baseIcon.iconSize = new GSize(41, 41);
		// baseIcon.shadow = "http://www.google.com/mapfiles/shadow50.png";
		// baseIcon.shadowSize = new GSize(37, 34);
		baseIcon.iconAnchor = new GPoint(9, 34);
		baseIcon.infoWindowAnchor = new GPoint(9, 2);


		var mgrOptions = { borderPadding: 50, maxZoom: 17, trackMarkers: false };

		log('Creating marker manager...');
		mgr = new GMarkerManager(map, mgrOptions);

// mgr.refresh();

		log('Getting markers...');
		GDownloadUrl("/markers.php", function(data, responseCode) {
			if(responseCode != 200) {
				log('Error while trying to get markers. Server returned: ' + responseCode);
				return;
			}

			log('Parsing XML...');
			var xml = GXml.parse(data);
	
			log('Enumerating areas...');
			var areas = xml.documentElement.getElementsByTagName("area");
			for (var i = 0; i < areas.length; i++) {
				var marker = createAreaMarker(
					areas[i].getAttribute("name"),
					parseFloat(areas[i].getAttribute("lat")),
					parseFloat(areas[i].getAttribute("lon")));

				mgr.addMarker(marker, 3, 8);
			}

			log('Enumerating markers...');
			var markers = xml.documentElement.getElementsByTagName("marker");
			for (var i = 0; i < markers.length; i++) {
				var marker = createPlaceMarker(markers[i]);
				places.push(marker);

				mgr.addMarker(marker, 9, 17);
			}

			log('Markers ready.');

			mgr.refresh();

			log('MarkerManager refreshed.');
		});
	}
}

function loadTargetMap(lat, lon) {
	if (!GBrowserIsCompatible()) {
		document.getElementById("map").innerHTML = '<center><h3>Käyttämäsi selain ei ole yhteensopiva Google Mapsin kanssa.</h3></center>';
	}
	else if(map == null) {
		log('Creating map...');
		map = new GMap2(document.getElementById("map"));

		map.addControl(new CustomZoomControl());
		map.addControl(new CustomMapTypeControl());
		map.enableDoubleClickZoom();
		//map.enableScrollWheelZoom();
		//map.enableContinuousZoom();

		map.setCenter(new GLatLng(lat, lon), 11);

		log('Creating baseicon...');
		baseIcon =	new GIcon();
		baseIcon.image = "/pix/kuvakkeet/img_ico_gm_kohde.png"
		baseIcon.iconSize = new GSize(41, 41);
		// baseIcon.shadow = "http://www.google.com/mapfiles/shadow50.png";
		// baseIcon.shadowSize = new GSize(37, 34);
		baseIcon.iconAnchor = new GPoint(9, 34);
		baseIcon.infoWindowAnchor = new GPoint(9, 2);

		var mgrOptions = { borderPadding: 50, maxZoom: 17, trackMarkers: false };

		log('Creating marker manager...');
		mgr = new GMarkerManager(map, mgrOptions);

		log('Getting markers...');

		var point = new GLatLng(lat, lon);
		var marker = new GMarker(point, { icon: baseIcon });				
		places.push(marker);
		mgr.addMarker(marker, 10, 17);
		mgr.refresh();
	}
	
}

/**
 * Creates new place marker
 * @access public
 * @return GMarker
 **/
function createPlaceMarker(node) {
// var content = node.getElementsByTagName("content");
	var lat = parseFloat(node.getAttribute("lat"));
	var lon = parseFloat(node.getAttribute("lon"));
// var types = node.getElementsByTagName("type");
	var point = new GLatLng(lat, lon);
	var marker = new GMarker(point, { icon: baseIcon });				
	var street = node.getAttribute("street");
	var postarea = node.getAttribute("postarea");
	var postcode = node.getAttribute("postcode");
	var area = node.getAttribute("area");

	marker.tabs = [];

	var tabNodes = node.getElementsByTagName("tab");
	for(i = 0; i < tabNodes.length; i++) {
		var tabTitle = tabNodes[i].getAttribute("title");
		var tabContent = GXml.value(tabNodes[i]);
		
		marker.tabs.push(new GInfoWindowTab(tabTitle, tabContent));
	} 

	GEvent.addListener(marker, "click", function() {
		// marker.openInfoWindowHtml('Morjens');
		
		var windowOptions = { selectedTab: 0, maxWidth: 517 };
		marker.openInfoWindowTabsHtml(marker.tabs, windowOptions);
	});

	return marker;
}

/**
 * Creates new area marker
 * @access public
 * @return GMarker
 **/
function createAreaMarker(area, lat, lon){
	log('Creating area marker: ' + area + ' at ' + lat + ', ' + lon);
	var point = new GLatLng(lat,lon);
	var markerOptions = { icon:LabeledMarker.ICON, labelText:area, labelClass:'labelArea', labelOffset:new GSize(-20,-10) };
	var marker = new LabeledMarker(point, markerOptions);
	
	GEvent.addListener(marker, "click", function() {
		map.setCenter(point, 11);
	});
	
	return marker;
}

function log(msg) {
	// GLog.write(msg);
}

function showPlaceTab(show, hide) {
	document.getElementById(show).style.visibility='visible';
	document.getElementById(show).style.display='block';

	switch (show) {
		case "sijainti":
			document.getElementById('kuvaus').style.backgroundImage = "url(../user_data/css/fe_bg/placeTab2.gif)";
			document.getElementById('kuvausLeft').style.backgroundImage = "url(../user_data/css/fe_bg/placeTabLeft2.gif)";
			document.getElementById('kuvaus').style.color = "#ffffff";	

			document.getElementById('kartalla').style.backgroundImage = "url(../user_data/css/fe_bg/placeTab.gif)";
			document.getElementById('kartallaLeft').style.backgroundImage = "url(../user_data/css/fe_bg/placeTabLeft.gif)";
			document.getElementById('kartalla').style.color = "#000000";
			break;
		case "data":
			document.getElementById('kartalla').style.backgroundImage = "url(../user_data/css/fe_bg/placeTab2.gif)";
			document.getElementById('kartallaLeft').style.backgroundImage = "url(../user_data/css/fe_bg/placeTabLeft2.gif)";
			document.getElementById('kartalla').style.color = "#ffffff";			

			document.getElementById('kuvaus').style.backgroundImage = "url(../user_data/css/fe_bg/placeTab.gif)";
			document.getElementById('kuvausLeft').style.backgroundImage = "url(../user_data/css/fe_bg/placeTabLeft.gif)";
			document.getElementById('kuvaus').style.color = "#000000";	
			break;
	}
	
	document.getElementById(hide).style.visibility='hidden';
	document.getElementById(hide).style.display='none';
}
