/**
 * JavaScript functionality for the archive map display for Schweizerbauer
 * 
 * @author Christian Studer <christian.studer@meteotest.ch>
 */
// Global variables
var map;
var markers = {};

// Setting up the page
$(document).ready(function () {
	// Load map first
	if (GBrowserIsCompatible()) {
		map = new GMap2($('#mtmap')[0]);
		var center = new GLatLng(46.9502622421856,8.250732421875);
        map.enableScrollWheelZoom();
		map.setCenter(center, 7);
		map.addControl(new GSmallMapControl());
		
		getMarkers(map);
	}

	// Set up toggles
	$('#mtmaptoggle').html('<a href="">Karte ausblenden</a>');
	$('#mtmaptoggle').click(mtmaptoggle);
	
	// Attach live events to the links on the page
	$('.mtpastlink').live('click', loadPast);
	
	// On leaving the page, unload the map to prevent memory leaks
	$(document).unload(GUnload);
});

//Toggle map display
function mtmaptoggle() {
	if($('#mtmap').is(':visible')) {
		$('#mtmap').slideUp();
		$('#mtmaptoggle').html('<a href="">Karte einblenden</a>');
	} else {
		$('#mtmap').slideDown();
		$('#mtmaptoggle').html('<a href="">Karte ausblenden</a>');		
	}
	
	return false;
}

// Load past
function loadPast(e) {
	var pastpage = $(this).attr('href');
	window.scrollTo($('#mtweather').position().left, $('#mtweather').position().top);
	$('#mtpastframe').slideDown().attr('src', pastpage);
	e.preventDefault();
	return false;
}

// Generate markers on the map
function getMarkers(map){ 
	for(var stationNumber in smnstations) {
		if(smnstations.hasOwnProperty(stationNumber)) {
	        // Collect station informations from array
			var station = smnstations[stationNumber];
	        var id = station['wmo'];
	        var name = station['name'];
	        var lat = station['breitengrad'];
	        var lon = station['laengengrad'];
	        var content = '<div class="mtpopup"><p><b>' + name + '</b> ' + station['hoehe'] + ' m &uuml;.M.</p><p>';
	        content += '<a href="' + serviceurl + '/getpastfor/' + id + '/24" class="mtpastlink" target="mtpastframe">Werte der letzten 24 Stunden anzeigen</a><br />';
	        content += '<a href="' + serviceurl + '/getpastfor/' + id + '/5" class="mtpastlink" target="mtpastframe">Werte der letzten 5 Tage anzeigen</a>';
        	content += '</p></div>';
        	
	        // Create marker
	        var point = new GLatLng(lat, lon);                
	        var marker = new GMarker(point, {title:name});
	        markers[name] = id;
	        marker.bindInfoWindowHtml(content);
	        GEvent.addListener(marker, 'click', markerClicked);
	        map.addOverlay(marker);
		}
	}
}

// Handle marker clicked event: Show last values
function markerClicked() {
	var currentvaluespage = serviceurl + '/getpasttable/' + markers[this.getTitle()];
	window.scrollTo($('#mtcontent').position().left, $('#mtcontent').position().top);
	$('#mtpastframe').slideDown().attr('src', currentvaluespage);
}
    
