var osMap;
var markers;
var centerMarker;
var newmarker;
var mgr;
var blueIcon = new GIcon(G_DEFAULT_ICON);

var streetViewWindow;
var streetViewClient;
				
blueIcon.image = "digital_camera_icon_small_2.png";
blueIcon.shadow= "";
blueIcon.iconSize = new GSize(25, 20);

// Set up our GMarkerOptions object
markerOptions = { icon:blueIcon };

function addTabLocation(lat, lon, pictureTabs, minZoom)
{
	var point  = new GLatLng(lat, lon);
	var marker = new GMarker(point, markerOptions);
	GEvent.addListener(marker, "click", function() 
	{
		marker.openInfoWindowTabsHtml(pictureTabs);
	});
	
	mgr.addMarker(marker, 1);
}

function addLocation(lat, lon, loc, minZoom)
{
	var point  = new GLatLng(lat, lon);
	var marker = new GMarker(point);
	GEvent.addListener(marker, "click", function() 
	{
		marker.openInfoWindowHtml(loc);
	});
	
	mgr.addMarker(marker, minZoom);	
}

function addAllPictures()
{
	for ( i = 0; i < pictureInfo.length; i++)
	{
		var pictureTabs = new Array();
		for ( j = 0;j < pictureInfo[i][2].length; j++ )
		{
			pictureTabs.push(new GInfoWindowTab(pictureInfo[i][2][j][0], pictureInfo[i][2][j][1]));
		}
		addTabLocation(pictureInfo[i][0], pictureInfo[i][1], pictureTabs, 1);
	}
}

function init_omaps()
{
	osMap = new OpenSpace.Map('omap');
	if ( trackPoints.length != 0 )
	{
		var lonlat = new OpenLayers.LonLat(trackPoints[0][0], trackPoints[0][1]);
	}
	else
	{
		var lonlat = new OpenLayers.LonLat(-1.7584730, 53.0514260);
	}
	
	var gridProjection = new OpenSpace.GridProjection();
	var pos = gridProjection.getMapPointFromLonLat(lonlat);
	osMap.setCenter(pos, 8);
	markers = new OpenLayers.Layer.Markers("Markers");
	osMap.addLayer(markers);
	var vectorLayer = new OpenLayers.Layer.Vector("Vector Layer"); 
	osMap.addLayer(vectorLayer); 
	
	//var dragHandler = new OpenLayers. Handler.Drag(osMap, function(e) {alert("here");});
	//osMap.addControl(new OpenLayer.Control.ScaleLine());	
	//osMap.events.register("moveend", osMap, function(e) {alert("here");});
	//osMap.events.register("dragend", osMap, function(e) {
	//		alert("here!");
	//	});
	//dragHandler.activate();
	var points = [];
	var style_green = 
	{ 
		strokeColor: "#0000FF", 
		strokeOpacity: 0.7, 
		strokeWidth: 3, 
		pointRadius: 3, 
		pointerEvents: "visiblePainted" 
	}; 
	if ( trackPoints.length > 0 )
	{
		for ( i = 0; i < trackPoints.length; i++)
		{
			var pos = gridProjection.getMapPointFromLonLat(new OpenLayers.LonLat(trackPoints[i][0], trackPoints[i][1]));
			points.push(new OpenLayers.Geometry.Point(pos.getEasting(), pos.getNorthing()));
		}

		/*
		* Define the line style
		*/
		// create a line feature from a list of points 
		var lineString = new OpenLayers.Geometry.LineString(points); 
		var lineFeature = new OpenLayers.Feature.Vector(lineString, null, style_green); 

		vectorLayer.addFeatures([lineFeature]); 
	}
}
function init_gmaps()
{
	if (GBrowserIsCompatible()) {
		var point;
		var marker;
		var pictureTabs;
		var map = new GMap2(document.getElementById("map"));
		map.addMapType(G_PHYSICAL_MAP);
		var bounds = new GLatLngBounds(sw, ne);
		var mapZoomLevel = map.getBoundsZoomLevel(bounds);
		map.addControl(new GLargeMapControl());
		map.addControl(new GMapTypeControl());
		map.addControl(new GScaleControl());
		var mapCenter = new GLatLng(mapCenterLat,mapCenterLon);
		
		map.setCenter(mapCenter, mapZoomLevel);
		map.setMapType(G_PHYSICAL_MAP);
		var mgrOptions = { trackMarkers: true };

		mgr = new MarkerManager(map, mgrOptions);
		var tinyIcon = new GIcon();
		tinyIcon.image = "http://labs.google.com/ridefinder/images/mm_20_red.png";
		tinyIcon.shadow = "http://labs.google.com/ridefinder/images/mm_20_shadow.png";
		tinyIcon.iconSize = new GSize(12, 20);
		tinyIcon.shadowSize = new GSize(22, 20);
		tinyIcon.iconAnchor = new GPoint(6, 20);
		tinyIcon.infoWindowAnchor = new GPoint(5, 1);
		//markerOptions = { icon:blueIcon };
		if ( trackPoints.length != 0 )
		{
			var markerCenter = new GLatLng(trackPoints[0][1], trackPoints[0][0]);

			panoramaOptions = { latlng:markerCenter };
			streetViewClient = new GStreetviewClient();
			streetViewWindow = new GStreetviewPanorama(document.getElementById("streetview"), panoramaOptions);

			GEvent.addListener(streetViewWindow, "initialized", function(location) {
				var lonlat = new OpenLayers.LonLat(location.latlng.lng(), location.latlng.lat() );
				var gridProjection = new OpenSpace.GridProjection();
				var pos = gridProjection.getMapPointFromLonLat(lonlat);
				osMap.setCenter(pos, 8);
				osMap.clearMarkers();
				newmarker = new OpenLayers.Marker(pos);
				osMap.getMarkerLayer().addMarker(newmarker);	
			}
			);
			GEvent.addListener(streetViewWindow, "error", function(errorCode) {
				 if (errorCode == FLASH_UNAVAILABLE) {
					alert("Error: Flash doesn't appear to be supported by your browser");
					return;
				}
				 if (errorCode == NO_NEARBY_PANO) {
					alert("Sorry: No Streetview available");
					return;
				}
			}  
			);
		}
		else
		{
			var markerCenter = new GLatLng(53.0514260, -1.7584730);
		}
		centerMarker = new GMarker(markerCenter, {draggable: true, icon:tinyIcon});

		GEvent.addListener(centerMarker, "dragend", function() {     
			
			var lonlat = new OpenLayers.LonLat(centerMarker.getLatLng().lng(), centerMarker.getLatLng().lat() );
			var gridProjection = new OpenSpace.GridProjection();
			var pos = gridProjection.getMapPointFromLonLat(lonlat);
			osMap.setCenter(pos, 8);
			osMap.clearMarkers();
			newmarker = new OpenLayers.Marker(pos);
			//markers.addMarker( newmarker);	
			osMap.getMarkerLayer().addMarker(newmarker);	
			
			streetViewWindow.setLocationAndPOV(centerMarker.getLatLng());
			//GEvent.addListener(myPano, "error", handleNoFlash);
				
				//function handleNoFlash(errorCode) {
				 // if (errorCode == FLASH_UNAVAILABLE) {
				//	alert("Error: Flash doesn't appear to be supported by your browser");
					//return;
				  //}
				//}  
						
		}
		);
		mgr.addMarker(centerMarker, 0);	
		var polyline1_1 = new GPolyline.fromEncoded({
			color: "#0000ff",
			weight: 4,
			opacity: 0.8,
			points: pointsString,
			levels: levelString,
			zoomFactor: 2, 
			numLevels: 18
		});
		map.addOverlay(polyline1_1);
		addAllPictures();
		initLocations();
	}
}

function load() 
{
	init_gmaps();
	init_omaps();
}

