var map;

$j(document).ready(function() {
    if (map == null) {			
	    initializeMap();
    }
});

$j(document).unload(function() {
    GUnload();
});

// Constants introduced in js-constants.jsp

function initializeMap() {
    if (GBrowserIsCompatible()) {

        if(!typeof(options) == 'undefined') {
            var options = new Object();
        }

        map = new GMap2(document.getElementById('map_canvas'), options);
        point = new GLatLng(initialLat, initialLng);
        map.setCenter(point, 8);
        var radius = 10; // km.
        drawCircle(point, radius, "#ff0000", "#ff0000");
        
        map.setUIToDefault();

        if(!maximized) {
            var listener = GEvent.addListener(map, "click", openMapWindow);
            map.disableScrollWheelZoom();
        }
    }
}

function openMapWindow() {
	var newWindow = window.open(mapUrl, 'kartta', 'location=no,width=600,height=600');	
}


function drawCircle(center, radius, borderColour, fillColour) {
    var normalProj = map.getCurrentMapType().getProjection();
    var zoom = map.getZoom();
    radius = radius * 0.000157; // Degrees lat.
  
    with(Math) {
    
        var lat1 = (PI/180)* center.lat();
        var lng1 = (PI/180)* center.lng();
        
        var circlePoints = Array();

        for (var a = 0 ; a < 361 ; a = a + 15) {
            var tc = (PI/180)*a;
            var y = asin(sin(lat1)*cos(radius)+cos(lat1)*sin(radius)*cos(tc));
            var dlng = atan2(sin(tc)*sin(radius)*cos(lat1),cos(radius)-sin(lat1)*sin(y));
            var x = ((lng1-dlng+PI) % (2*PI)) - PI ; // MOD function
            var point = new GLatLng(parseFloat(y*(180/PI)),parseFloat(x*(180/PI)));
            circlePoints.push(point);
        }
    }

    circleLine = new GPolygon(circlePoints,borderColour,0, 0,fillColour,0.5);
    map.addOverlay(circleLine);
}
