﻿// Helper function for creating a new center point to pan the map to
function createNewCenter(point){
	// Convert the clicked point to pixels		
	p = projection.fromLatLngToPixel(point,map.getZoom());
	px = p.x;
	// Take some extra pixels as space
	// FIXME change value to a calculated value on screen!
	py = p.y - 250;
	newCenter = new GPoint(px, py);		
	// Convert it back to latlng and pan to it
	return projection.fromPixelToLatLng(newCenter,map.getZoom())
}

// Helper function for creating a new center point to pan the map to
function FU_panMap( point ) {
	var map_width = map.getSize().width; // width of map in pixels
	var map_height = map.getSize().height; // height of map in picels
	var map_c_lat = map.getCenter().lat(); // latitude of center in float
	var map_c_lng = map.getCenter().lng(); // longitude of center in float
	var map_ne_lat = map.getBounds().getNorthEast().lat(); //latitude
	var map_ne_lng = map.getBounds().getNorthEast().lng(); // and longitude of upper right corner on float
	var map_sw_lat = map.getBounds().getSouthWest().lat(); // latitude
	var map_sw_lng = map.getBounds().getSouthWest().lng(); // and longitude of bottom left corner on float
	// click point in pixels
	var py = Math.floor( (point.lat() - map_sw_lat) / (map_ne_lat - map_sw_lat) * map_height ); 
	var px = Math.floor( (point.lng() - map_sw_lng) / (map_ne_lng - map_sw_lng) * map_width );
	var dx = 0;
	var dy = 0;
	
	if ((map_height - py) < 560) {
		dy = 560 - map_height + py;
		if ((py - dy) < 20) {
			dy = py - 20;
		}
	}
	else if (py < 60) {
		dy = py - 60;
	}
			
	if ((map_width - px) < 900) {
		dx = 900 - map_width + px;
		if ((px - dx) < 20) {
			dx = px - 20;
		}
	}
	else if (px < 80) {
		dx = px - 80;
	}
	
	if (dx || dy) {
		map.panBy( new GSize( -dx, dy ) );
	}
	//alert( "dx: "+dx+", dy: "+dy+", px: "+px+", py: "+py+", map_width: "+map_width+", map_height: "+map_height );
}
