

GMap2.prototype.centerAndZoomOnBounds = function(bounds) {
    var center_lat = (bounds.getNorthEast().lat() + bounds.getSouthWest().lat()) / 2.0;
    var center_lng = (bounds.getNorthEast().lng() + bounds.getSouthWest().lng()) / 2.0;
    if(bounds.getNorthEast().lng() < bounds.getSouthWest().lng()){
        center_lng += 180;
    }
    var center = new GLatLng(center_lat,center_lng)
    zoom = map.getBoundsZoomLevel(bounds);

    //if(zoom > 14) zoom = 13;
    //if(!zoom || zoom < 10) zoom = 10;

    map.setCenter(center, zoom);

}

var map = null;
var manager = null;
var bounds = new GLatLngBounds();
var geocoder = null;

function wheelZoom(event)
{
    if (event.detail) // Firefox
    {
        if (event.detail < 0)    map.zoomIn();
        if (event.detail > 0) map.zoomOut();
    }
    else if (event.wheelDelta) // IE
    {
        if (event.wheelDelta > 0)    map.zoomIn();
        if (event.wheelDelta < 0)    map.zoomOut();
    }

    if (event.preventDefault) // Firefox
    {
        event.preventDefault();
        event.stopPropagation();
    }
    else // IE
    {
        event.returnValue = false;
        event.cancelBubble = true;
    }
}

function unload()
{
    if (window.navigator.cookieEnabled)
    {
        var cval = ""+map.getZoom()+'|'+map.getCenter().lat()+'|'+map.getCenter().lng();
        pageCCont = getPageCC ();
        setCookie(pageCCont, cval, '', '', '', '');
    }
    GUnload();
}

function load()
{
    if (GBrowserIsCompatible())
    {
        var element = document.getElementById('map');
        //GEvent.addDomListener(element, 'DOMMouseScroll', wheelZoom); // Firefox
        //GEvent.addDomListener(element, 'mousewheel', wheelZoom); // IE

        map = new GMap2(element);
        map.enableContinuousZoom();
        map.enableDoubleClickZoom();

        map.addControl(new GSmallMapControl());
        if(!_noMapNavigator) {

            map.addControl(new GScaleControl());
            map.addControl(new GMapTypeControl());
        }

        var noFromCookie = positionMap();
		
		if(markers) {
			var markerCluster = new MarkerClusterer(map, markers);
		} else {
	        manager = new GMarkerManager(map);
	        addMarkers();
		}

        if(!noFromCookie) {
            pageCCont = getPageCC ();
            var cval = getCookie(pageCCont);
            if(cval) {
                cva = cval.split('|');
                zoom = parseInt(cva[0]);
                center = new GLatLng(cva[1], cva[2]);
                map.setCenter(center, zoom);
            }
        } else {
            if(noFromCookie == 2) {
                map.centerAndZoomOnBounds(bounds);
            }
        }
    }
}

var normalIcon = new GIcon();
normalIcon.image = "http://labs.google.com/ridefinder/images/mm_20_red.png";
normalIcon.shadow = "http://labs.google.com/ridefinder/images/mm_20_shadow.png";
normalIcon.iconSize = new GSize(12, 20);
normalIcon.shadowSize = new GSize(22, 20);
normalIcon.iconAnchor = new GPoint(6, 20);
normalIcon.infoWindowAnchor = new GPoint(5, 1);

var placeIcon = new GIcon();
placeIcon.image = "http://labs.google.com/ridefinder/images/mm_20_yellow.png";
placeIcon.shadow = "http://labs.google.com/ridefinder/images/mm_20_shadow.png";
placeIcon.iconSize = new GSize(12, 20);
placeIcon.shadowSize = new GSize(22, 20);
placeIcon.iconAnchor = new GPoint(6, 20);
placeIcon.infoWindowAnchor = new GPoint(5, 1);

var yellowIcon = new GIcon();
yellowIcon.image = "http://labs.google.com/ridefinder/images/mm_20_yellow.png";
yellowIcon.shadow = "http://labs.google.com/ridefinder/images/mm_20_shadow.png";
yellowIcon.iconSize = new GSize(12, 20);
yellowIcon.shadowSize = new GSize(22, 20);
yellowIcon.iconAnchor = new GPoint(6, 20);
yellowIcon.infoWindowAnchor = new GPoint(5, 1);

var bigIcon = new GIcon();
bigIcon.image = "http://www.google.com/intl/pl_ALL/mapfiles/markerTransparent.png";
bigIcon.shadow = "http://labs.google.com/ridefinder/images/mm_20_shadow.png";
bigIcon.iconSize = new GSize(18, 28);
bigIcon.shadowSize = new GSize(22, 20);
bigIcon.iconAnchor = new GPoint(6, 28);
bigIcon.infoWindowAnchor = new GPoint(5, 1);

var silverIcon = new GIcon();
silverIcon.image = "http://labs.google.com/ridefinder/images/mm_20_gray.png";
silverIcon.shadow = "http://labs.google.com/ridefinder/images/mm_20_shadow.png";
silverIcon.iconSize = new GSize(12, 20);
silverIcon.shadowSize = new GSize(22, 20);
silverIcon.iconAnchor = new GPoint(6, 20);
silverIcon.infoWindowAnchor = new GPoint(5, 1);



function finishMarker(marker, id, title, zoom)
{
    //GEvent.addListener(marker, "mouseover", function() {window.status = title});
    //GEvent.addListener(marker, "mouseout", function() {window.status = ""});
    //GEvent.addListener(marker, "click", function() {window.location.href = "index.php?gallery=" + id});
    manager.addMarker(marker, zoom);
}

function addMarker(marker, zoom)
{
    manager.addMarker(marker, zoom);
}

function createMarkerPlace(point, title, l) {
  var marker = new GMarker(point, {title:title, icon:placeIcon});
  bounds.extend(point);
  GEvent.addListener(marker, "click", function() {
    window.location.href = ""+l;
  });
  return marker;
}
function createMarker(point, title, info, mzoom, l) {
  return createMarkerTM(point, title, info, mzoom, l, normalIcon);
}
function createMarkerBig(point, title, info, mzoom, l) {
  return createMarkerTM(point, title, info, mzoom, l, '');
}
function createMarkerSilver(point, title, info, mzoom, l) {
  return createMarkerTM(point, title, info, mzoom, l, silverIcon);
}
function createMarkerYellow(point, title, info, mzoom, l) {
  return createMarkerTM(point, title, info, mzoom, l, yellowIcon);
}

function createMarkerTM(point, title, info, mzoom, l, icon) {
    var marker = '';
    if(icon)
      marker = new GMarker(point, {title:title, icon:icon});
    else
      marker = new GMarker(point, {title:title});
  bounds.extend(point);
  if(l) {
      GEvent.addListener(marker, "click", function() {
        window.location.href = ""+l;
      });
  } else {
      GEvent.addListener(marker, "click", function() {
          //alert(map.getCenter());//.setCenter(center, zoom);
        var zoom = map.getZoom() < mzoom ? mzoom : map.getZoom();
        map.setCenter(map.getCenter(), zoom);
         marker.openInfoWindowHtml(info);
      });
    }
  return marker;
}

