// Our global state
var map;
var markers = [];
var infoWindow;
var latlng;
var bounds;
var searchedLocation;
var stopLatLngArray = [];
var stopContentArray = [];
var stopMarkerArray = [];
var stopDistanceArray = [];
var sideInfo;
var routeOrigin;
var routeDestination;
var closestStopGoing;
var closestStopComing;
//var directionDisplay;
//var directionsService;
var routeCoordinates = [];
var poly;
var gRouteCategory;
var gRouteName;
var gRouteFullFare;
var gRouteTransferFee;
var gRouteHalfFare;
var gRouteFareInfo;

function OnLoad()
{
	// Create Route Stops Array
	createRouteStopsArray();

	// Create Google Map
	createGoogleMap(34.185803, -79.838239);

	// Initialize infoWindow from global variable
	infoWindow = new google.maps.InfoWindow();

	// Create all route stop markers
	setMarkers(RouteStops);
}

function createRouteStopsArray()
{
	RouteStops = [
		["Darlington Car Hauler Parade", "PO Box 3093<br />Florence, SC 29502", 34.185639, -79.838832, "1.800.325.9005", "http://darlingtoncarhaulerparade", "DCHP"], 
		["Florence Civic Center", "3300 W. Radio Dr.<br />Florence, SC 29501", 34.185803, -79.838239, "1.843.679.9417", "http://www.florenceciviccenter.com", "CCenter"], 
		["Florence Convention and Visitor's Bureau", "3290 W. Radio Dr.<br />Florence, SC 29501", 34.186266, -79.838455, "1.843.664.0330", "http://www.visitflo.com", "FLO"]
	];
}

function createGoogleMap(Latitude, Longitude)
{
	latlng = new google.maps.LatLng(Latitude, Longitude);
	bounds = new google.maps.LatLngBounds(latlng);
	var settings = {
		zoom: 17,
		center: latlng,
		mapTypeControl: true,
		mapTypeControlOptions: {
			style: google.maps.MapTypeControlStyle.DROPDOWN_MENU,
			position: google.maps.ControlPosition.TOP_RIGHT
		},
		navigationControl: true,
		navigationControlOptions: {
        	style: google.maps.NavigationControlStyle.ZOOM_PAN,
        	position: google.maps.ControlPosition.TOP_LEFT
    	},
		mapTypeId: google.maps.MapTypeId.ROADMAP
	};

	// Initialize Google Map from global variable and using above settings
	map = new google.maps.Map(document.getElementById("map"), settings);
}

function setMarkers(RouteStops)
{
	var stopMarkerShadow = new google.maps.MarkerImage('/image/GoogleIconShadow.png',new google.maps.Size(51,56),new google.maps.Point(0,0),new google.maps.Point(15,50));
	
	// Cycle through all route stops
	for (var i = 0; i < RouteStops.length; i++) {
		var stopLocation = RouteStops[i];
		
		// Set image
		var stopMarkerImage;
		stopMarkerImage = new google.maps.MarkerImage('/image/' + stopLocation[6] + 'GoogleIcon.png',
			new google.maps.Size(51,56),
			new google.maps.Point(0,0),
			new google.maps.Point(15,50)
		);
		
		// Set Lat and Long
		var stopLatLng = new google.maps.LatLng(stopLocation[2], stopLocation[3]);
		stopLatLngArray.push(stopLatLng);
		
		// Widen screen to fit
		bounds.extend(stopLatLng);
		//map.fitBounds(bounds);
		
		// Set infoWindow Content
		var stopContent;
		stopContent = '<div class="info-window">'+
			'<h2><img src="/image/' + stopLocation[6] + 'GoogleIcon.png" alt="' + stopLocation[0] + '" width="51" height="56" align="right" style="padding: 3px 0px 0px 10px;" />' + stopLocation[0] + '</h2>'+
			'<p>' + stopLocation[1] +
			'<br />phone: ' + stopLocation[4] + '<br />' +
			'<a href="' + stopLocation[5] + '" title="' + stopLocation[0] + '">view website</a></p>' + 
			'<h2>Get Directions</h2>' + 
			'<p class="bottom">Start Address:</p>' +
			'<form action="http://maps.google.com/maps" method="get" target="_blank">' + 
			'<input type="text" class="directions" maxlength="40" name="saddr" id="saddr" value="" /><br /><br />' + 
			'<input type="image" alt="Submit" src="/image/GetDirectionsButton.jpg" name="submit" />' + 
			'<input type="hidden" name="daddr" value="' + stopLocation[2] + ',' + stopLocation[3] + '" /></form>' +
			'</div>';

		stopContentArray.push(stopContent);
		
		// Set Marker
		var stopZIndex = i + 1;
		var stopMarker = new google.maps.Marker({
			map: map,
			position: stopLatLng,
			icon: stopMarkerImage,
			shadow: stopMarkerShadow,
			title: stopLocation[0],
			zIndex: stopZIndex
		});
		stopMarkerArray.push(stopMarker);
		
		// Marker Listener
		google.maps.event.addListener(stopMarkerArray[i], 'click', function() { 
			setInfoWindow(this);
		});
	}
}

function setInfoWindow(mark)
{
	for (var m = 0; m < stopMarkerArray.length; ++m) {
		if (stopMarkerArray[m] == mark) {
			infoWindow.setContent(stopContentArray[m]);
			infoWindow.open(map, stopMarkerArray[m]);
			stopMarkerArray[m].setZIndex(RouteStops.length);
			return;
		}
	}
}

function activateMarker(number)
{
	infoWindow.setContent(stopContentArray[number]);
	infoWindow.open(map, stopMarkerArray[number]);
	stopMarkerArray[number].setZIndex(RouteStops.length + 1);
}
