// GOOGLE MAP SETUP
// used on FEATURED landing pages
// 		by TJH (01/26/2010)

/* expects --
		mapW - 		int: map width
		mapH - 		int: map height
		MIDpoint -	GLatLng
		MIDzoom - 	int
		pointzoom -	int
		markers - 	embty array (populated with marker objects by MapInitialize)
		places - 	array of arrays: [ int:index of points, str:map marker label, str:place name, str:website url ]
		points - 	array of arrays: [ GLatLng: marker location, int:index of places, str:point name (if different than place), str:page url, str:trail map image ]
*/


var map;

// Center-zoom function for links
function mapCenter() { 
	map.setCenter(MIDpoint, MIDzoom);
	map.closeInfoWindow();
}

function Pzoom(pnum) { 
	var pnt = points[pnum][0];
	var Cpnt = new GLatLng(pnt.lat()+latoff, pnt.lng()+lngoff);
	map.setCenter(Cpnt, pointzoom);
}

// Map Type functions
function MapNorm() { map.setMapType(G_NORMAL_MAP) }
function MapTopo() { map.setMapType(G_PHYSICAL_MAP) }
function MapSat() { map.setMapType(G_SATELLITE_MAP) }
function MapSat2() { map.setMapType(G_HYBRID_MAP ) }

// POINT POP - Pzoom & POP balloon
function P_pop0(marker, pnum) {
	Pzoom(pnum);
	//var mkr = markers[pnum];
	marker.pop();
}


// Create Marker point Info Balloon
function createBalloon(marker,pnum) {
	//window.location = dourl;
	var marktxt;
	var pname = places[points[pnum][1]][2];
	if (points[pnum][2].length) {
		marktxt = '<strong>'+points[pnum][2]+'</strong><br />';
		marktxt += '('+pname+')<br />';
	} else {
		marktxt = '<strong>'+pname+'</strong><br />';
	};
	marktxt += '<a href="'+points[pnum][3]+'">CLICK for more information</a><br />';
	marktxt += '<a href="http://'+places[points[pnum][1]][3]+'" target="_blank">CLICK for website</a>';
	if (points[pnum][4].length) 
		marktxt += '<br /><a href="/images/interior/snow/'+points[pnum][4]+'" onclick="popupPic(this.href);return false;">CLICK for Trail Map</a>';
	marker.openInfoWindowHtml(marktxt);
}


function mapInitialize() {

    if (GBrowserIsCompatible()) {
/*
        var mapOptions = {
          size: new GSize(648,300),
          googleBarOptions : 
            style : "new",
            adsOptions : {
              client: "partner-pub-5336182344499240",
              channel: "2162955980",
              adsafe: "high",
              language: "en"
            }
          }
        };
*/
// MAKE MAP
	map = new google.maps.Map2(document.getElementById("map0"), { size: new GSize(mapW, mapH) });
    //var map = new google.maps.Map2(document.getElementById("map0"), mapOptions);

	map.setCenter(MIDpoint, MIDzoom);
    //map.setCenter(new google.maps.LatLng(37.4419, -122.1419), 13);
	//map.setCenter(new GLatLng( 45.817659, -110.8958), 13);
    //map.setCenter(new GLatLng(45.1875, -109.2485), 13);
	//map.setCenter(new GLatLng(45.35214, -110.2478), 8);
	//map.openInfoWindow(map.getCenter(),document.createTextNode("Bridger Bowl ski area"));

	//map.setUIToDefault();
	map.setMapType(G_PHYSICAL_MAP);
	map.addControl(new GSmallMapControl());

	//map.addControl(new GMapTypeControl());

	//map.setMapType(G_NORMAL_MAP);
	//map.addControl(new GLargeMapControl());
	//map.addControl(new MapTypeControl());
	//map.addControl(new GScaleControl());
	//map.enableScrollWheelZoom();
	//map.disableDoubleClickZoom();

        //map.setUIToDefault();
        //map.enableGoogleBar();

		
// Create Marker point
		function xxcreateMarker(point,name,xyoff,dourl) {
          var marker = new GMarker(point, { title: name });
          //marker.openInfoWindowHtml(name);
          marker.openInfoWindowHtml(name, { pixelOffset:xyoff, noCloseOnClick:true });
          GEvent.addListener(marker, "click", function() {
            window.location = dourl;
            //marker.openInfoWindowHtml(name);
          });
          return marker;
        }

        function xxxcreateMarker(point,name,xyoff,dourl) {
          var marker = new GMarker(point);
          //marker.openInfoWindowHtml(name, { pixelOffset:xyoff, noCloseOnClick:true });
          GEvent.addListener(marker, "click", function() {
            //window.location = dourl;
            //marker.openInfoWindowHtml(name);
            marker.openInfoWindowHtml(name, { pixelOffset:xyoff, noCloseOnClick:true, maxWidth:125 });
          });
          return marker;
        }

        // Create a base icon for all of our markers that specifies the
        // shadow, icon dimensions, etc.
        var baseIcon = new GIcon(G_DEFAULT_ICON);
        baseIcon.shadow = "http://www.google.com/mapfiles/shadow50.png";
        baseIcon.iconSize = new GSize(20, 34);
        baseIcon.shadowSize = new GSize(37, 34);
        baseIcon.iconAnchor = new GPoint(9, 34);
        baseIcon.infoWindowAnchor = new GPoint(9, 2);

        // Creates a marker whose info window displays the letter corresponding
        // to the given index.
//        function createMarker(point, Pchar, name, dourl) {
        function createMarker(pnum) {
          // Create a lettered icon for this point using our icon class
		  var pname = places[points[pnum][1]][2];
          var pname0 = (points[pnum][2].length)?points[pnum][2]:pname;
		  var letter = String.fromCharCode(places[points[pnum][1]][1].charCodeAt(0));
          var letteredIcon = new GIcon(baseIcon);
          letteredIcon.image = "http://www.google.com/mapfiles/marker" + letter + ".png";
          // Set up our GMarkerOptions object
          //markerOptions = { icon:letteredIcon };
          var marker = new GMarker(points[pnum][0], { title:pname0, icon:letteredIcon });
          GEvent.addListener(marker, "click", function() {
            //window.location = dourl;
            //marker.openInfoWindowHtml("Marker <b>" + letter + "</b>");
            //map.setCenter(points[pnum][0], pointzoom);
			P_pop0(marker, pnum);
          });
          marker.pop = function() {
            //window.location = dourl;
            var marktxt;
			if (points[pnum][2].length) {
				marktxt = '<strong>'+points[pnum][2]+'</strong><br />';
				marktxt += '('+pname+')<br />';
			} else {
				marktxt = '<strong>'+pname+'</strong><br />';
			};
			marktxt += '<a href="'+points[pnum][3]+'">CLICK for more information</a><br />';
			marktxt += '<a href="http://'+places[points[pnum][1]][3]+'" target="_blank">CLICK for website</a>';
			if (points[pnum][4].length) 
				marktxt += '<br /><a href="/images/interior/snow/'+points[pnum][4]+'" onclick="popupPic(this.href);return false;">CLICK for Trail Map</a>';
			marker.openInfoWindowHtml(marktxt);
		  };
		  GEvent.addListener(marker, "mouseover", function() {
            //createBalloon(marker, pnum);
			//marker.pop()
          });
          return marker;
        }

// Set up markers with info windows 
	var marker;
	
	for (var i=0;i<points.length;i++) {
        marker = createMarker(i);
        map.addOverlay(marker);
		markers.push(marker);
	};


// POINT POP - Pzoom & POP balloon
//	function P_pop(pnum) {
//		Pzoom(pnum);
//		//var mkr = markers[pnum];
//		//mkr.pop();
//	}

    };
}

// MISC functions

function P_pop(pnum) {
	var mkr = markers[pnum];
	P_pop0(mkr, pnum);
}

function popupPic(picURL) {
	window.open( "/js/popup.html?"+picURL, "",  
	"resizable=1,scrollbars=1,HEIGHT=200,WIDTH=200");
}


