var popup = null;

function lonLatToMercator(ll) {
	var lon = ll.lon * 20037508.34 / 180;
	var lat = Math.log(Math.tan((90 + ll.lat) * Math.PI / 360)) / (Math.PI / 180);

	lat = lat * 20037508.34 / 180;

	return new OpenLayers.LonLat(lon, lat);
}

function mercatorToLonLat(merc) {
	var lon = (merc.lon / 20037508.34) * 180;
	var lat = (merc.lat / 20037508.34) * 180;

	lat = 180/Math.PI * (2 * Math.atan(Math.exp(lat * Math.PI / 180)) - Math.PI / 2);

	return new OpenLayers.LonLat(lon, lat);
}



function getTop(bound)
{
  var PI = 3.14159265358979323846;
  return(Math.atan( Math.exp( (bound.top *180 / 20037508.34) / 180 * PI))/PI *360 -90);
}


function getBottom(bound)
{
  var PI = 3.14159265358979323846;
  return(Math.atan( Math.exp( (bound.bottom *180 / 20037508.34) / 180 * PI))/PI *360 -90);
}

function getLeft(bound)
{
   return( bound.left *180 / 20037508.34);
}

function getRight(bound)
{
   return( bound.right *180 / 20037508.34);
}

function addPoiToLayer(layer, position, icon, description, label) {
	var marker = new OpenLayers.Marker(position, icon);
	layer.addMarker(marker);

// 	layer.pins.push(marker);

	if (description) {
		marker.events.register("click", marker, function() { openMapPopup(marker, description) });
		marker.events.register("mouseover", marker, function() { openMapPopup(marker, description) });
		marker.events.register("mouseout", marker, function() { closeMapPopup() });
	}
	if (label) {
		var lblpop = new OpenLayers.Popup.Label("lblpop", marker.lonlat, sizeLabel(label),label, marker.icon,false);
		lblpop.setBackgroundColor("#FFFFC5");
		lblpop.setOpacity(0.7);
		map.addPopup(lblpop);
		markerLabels.push(lblpop);
	}
	return marker;
}



function openMapPopup(marker, description) {
   closeMapPopup();

   popup = new OpenLayers.Popup.FramedCloud("popup", marker.lonlat, new OpenLayers.Size(120, 40),
                                               description, marker.icon, true, null);
   popup.setBackgroundColor("#E3FFC5");
   popup.autoSize = true;
   map.addPopup(popup);


   return popup;
}

function closeMapPopup() {
   if (popup) {
      map.removePopup(popup);
      delete popup;
   }
}

