var map;
var mgr;
var icons = {};
var allmarkers = [];

function load() {
  if (GBrowserIsCompatible()) {
	map = new GMap2(document.getElementById("map"));
	map.setCenter(new GLatLng(0, 0), 3);
	map.addControl(new GLargeMapControl());
	map.addControl(new GOverviewMapControl());
	map.enableDoubleClickZoom();
	mgr = new MarkerManager(map, {trackMarkers:true});
	var bounds = setupOfficeMarkers();
	map.setZoom(map.getBoundsZoomLevel(bounds) - 1);
	map.setCenter(bounds.getCenter());
	return bounds;
  }
}

function getIcon(images) {
  var icon = null;
  if (images) {
	if (icons[images[0]]) {
	  icon = icons[images[0]];
	} else {
	  icon = new GIcon(G_DEFAULT_ICON);
	  icon.image = "Images/" 
		  + images[0] + ".png";
	  var size = iconData[images[0]];
	  icon.iconSize = new GSize(size.width, size.height);
	  icon.iconAnchor = new GPoint(size.width >> 1, size.height >> 1);
	  icon.shadow = "Images/" 
		  + images[1] + ".png";
	  size = iconData[images[1]];
	  icon.shadowSize = new GSize(size.width, size.height);
	  icons[images[0]] = icon;
	}
  }
  return icon;
}

function setupOfficeMarkers() {
  allmarkers.length = 0;
  for (var i in officeLayer) {
	var layer = officeLayer[i];
	var markers = [];
	var bounds = new GLatLngBounds();
	for (var j in layer["places"]) {
	  var place = layer["places"][j];
	  var icon = getIcon(place["icon"]);
	  var title = place["name"];
	  var info = place["info"];
	  var type = place["type"];
	  var posn = new GLatLng(place["posn"][0], place["posn"][1]);
	  bounds.extend(posn);
	  var marker = createMarker(posn,title,icon);
	  marker.disableDragging();
	  marker.bindInfoWindowHtml(info);
	  markers.push(marker);
	  allmarkers.push(marker);
	}
	mgr.addMarkers(markers, layer["zoom"][0], layer["zoom"][1]);
  }
  mgr.refresh();
  return bounds;
}

function createMarker(posn, title, icon) {
  var marker = new GMarker(posn, {title: title, icon: icon, draggable:true });
  return marker;
}

function deleteMarker() {
  var markerNum = parseInt(document.getElementById("markerNum").value);
  mgr.removeMarker(allmarkers[markerNum]);
}

function clearMarkers() {
  mgr.clearMarkers();
}

function reloadMarkers() {
  setupOfficeMarkers();
}

function showMap(coordX, coordY, html) {
	$('.map_holder').show();
	$('.map_holder').css('visibility', 'visible');
	($('.map_holder').css('left') == '-600px') ? $('.map_holder').css('left','250px') :  $('.map_holder').css('left',$('.map_holder').css('left'));
	map.openInfoWindowHtml(new GLatLng(coordX, coordY), html);
}

function centerMap(map, mapBounds) {
	GUnload();
	$('.map_holder').show();
	load();
}

function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}
