/*
    ============== (C) Copyright Relate.IT - All rights reserved ===============

    The copyright to the contents herein is the property of Relate.IT. The 
    contents may be used and/or copied only with the written permission of
    Relate.IT, or in accordance with the terms and conditions stipulated in 
    the agreement/contract under which the contents have been supplied.

    Internet:           			http://www.relate-it.eu
    
    ============================================================================
    $Id: map.js,v 1.4 2009/01/02 12:35:12 cvs Exp $ 
    ============================================================================
*/

var map;
var airportPoint;
var airportMarker;

function load(iataCode, lat, lon) {
    if (GBrowserIsCompatible()) {
		map = new GMap2(document.getElementById("airportLocatorMap"));
        airportPoint = new GLatLng(lat, lon);		
		
        var apIcon = new GIcon();
        apIcon.image = "img/markerAirport.png";
        apIcon.shadow = "img/markerAirportShadow.png";
        apIcon.iconSize = new GSize(48, 42);
        apIcon.shadowSize = new GSize(70, 52);
        apIcon.iconAnchor = new GPoint(24, 42);
        apIcon.infoWindowAnchor = new GPoint(38, 18);
    	markerOptions = { icon:apIcon, draggable: true };
        airportMarker = new GMarker(airportPoint, markerOptions);

        var overviewControl = new GOverviewMapControl();
		var mapControl = new GLargeMapControl();

        map.setMapType(G_HYBRID_MAP);
		map.setCenter(airportPoint, 13);

        map.addMapType(G_SATELLITE_3D_MAP);
//        map.addControl(new GHierarchicalMapTypeControl());      
      	map.addControl(mapControl);
        map.addControl(new GScaleControl());
//    	map.addControl(overviewControl);
      	map.addControl(new google.maps.LocalSearch(), new GControlPosition(G_ANCHOR_BOTTOM_RIGHT, new GSize(10,20)));
		map.addOverlay(airportMarker);
		
		// ----------- Traffic -------------------------------------------------
		
		var trafficOptions = {incidents:true};
        trafficInfo = new GTrafficOverlay(trafficOptions);
        map.addOverlay(trafficInfo);

		// ----------- Panoramio -----------------------------------------------

		var panoControl = new PanoMapTypeControl();
	    map.addControl(panoControl);

		// ----------- Event listeners -----------------------------------------
		
		GMap2.prototype.wheelZoom = function(event) {
			if(event.cancelable) event.preventDefault();
			(event.detail || -event.wheelDelta) < 0 ?
				map.zoomIn():
				map.zoomOut();
				return false;
			}
		GEvent.addDomListener(document.getElementById("airportLocatorMap"), "DOMMouseScroll", map.wheelZoom);
		GEvent.addDomListener(document.getElementById("airportLocatorMap"), "mousewheel", map.wheelZoom); 

        GEvent.addListener(airportMarker, "dragstart", function() {
          map.closeInfoWindow();
        });

        GEvent.addListener(airportMarker, "dragend", function() {        	
        	airportMarker.openInfoWindowHtml("<div id=\"newAirportLocationPopup\"><p>Ah, you know the <b>correct location</b> of this airport, don&acute;t ya?</p>"
    		  + "<p>Make sure the AirportLinger plane is exactly above the airport. Then "
    		  + "<a href=\"mailto:contact@airportlinger.com?subject=Please%20correct%20airport%20" + iataCode + "&amp;body=The%20correct%20location%20is:%20" + airportMarker.getLatLng() + "\">e-mail us</a> the correct location!</p></div>");
        });
        
// DISABLED:
//        GEvent.addListener(map, 'click', mapClick);
        
//        GEvent.addListener(map, "maptypechanged", function() {
////    		map.removeControl(overviewControl);
//    		map.removeControl(mapControl);
//        	if(map.getCurrentMapType() != G_SATELLITE_3D_MAP) {
////        		map.addControl(overviewControl);
//		      	map.addControl(mapControl);
//    		}
//        });
    }
}

function mapClick(marker, point) {
	if (!marker) {
		oLat = document.getElementById("latitude");
		oLat.value = point.lat().toFixed(6);
		oLon = document.getElementById("longitude");
		oLon.value = point.lng().toFixed(6);
		theDiv = document.getElementById("poiSelected");
		theDiv.style.visibility = "visible";
	}
}
