var currMarkerPos;
// arrays to hold copies of the markers and html used by the side_bar
var gmarkers = [];
var bound = new GLatLngBounds();
var map;
var provinceName = null;
var cityName = null;
var address = null;
var geocoder = null;
var contextPathVal = '/brickb2c';
function initGoogleMaps() {
	if (GBrowserIsCompatible()) {
		var baseIcon = new GIcon();
		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);
		baseIcon.infoShadowAnchor = new GPoint(18, 25);
		function getLanandLatFromGCLient() {
			geocoder = new GClientGeocoder();
			var currStoreIdWithouLatNLong = 0;
			var mWithouLatNLong = 0;
			address = provinceName + cityName;
			if (provinceName != null && cityName != null
					&& provinceName != 'null' && provinceName != ''
					&& cityName != null && cityName != 'null' && cityName != '') {
				if (geocoder) {
					geocoder.getLatLng(address, function(point) {
						bound.extend(point);
						var marker = createMarker(point,
								currStoreIdWithouLatNLong, mWithouLatNLong);
						map.addOverlay(marker);
						map.setZoom(11);
						map.setCenter(bound.getCenter());
					});
				}
			} else {

				if (geocoder) {
					geocoder.getLatLng(provinceName, function(point) {
						bound.extend(point);
						var marker = createMarker(point,
								currStoreIdWithouLatNLong, mWithouLatNLong);
						map.addOverlay(marker);
						map.setZoom(5);
						map.setCenter(bound.getCenter());
					});
				}
			}
		}
		// A function to create the marker and set up the event window
		function createMarker(point, store, index) {
			var letteredIcon = new GIcon(baseIcon);
			if (store != 0) {
				letteredIcon.image = contextPathVal
						+ "/images/en/app/B_Marker_Noshadow.gif";
			}
			//to display dummy GreenMarker
			if (store == 0 && index == 0) {
				letteredIcon.image = "http://labs.google.com/ridefinder/images/mm_20_green.png";
			}
			markerOptions = {
				icon : letteredIcon
			};
			var marker = new GMarker(point, markerOptions);
			GEvent.addListener(marker, "click", function() {
				var storeArray = document.getElementsByName("storeArray");
				var storeIdElem = document.getElementById("storeId");
				var noStoreMessage = document.getElementById("noStoreMessage").value;		
				//display details bubble only if we have latitued,longtitued
				if (cityName == null && provinceName == null) {
					document.googlemap.storeId.value = storeArray[index].value;
					storeIdElem.value = storeArray[index].value;
					document.getElementById("dummyElem").click();
				}else{
				var currMarker = gmarkers[0];				
				currMarker.openInfoWindowHtml('<b>'+noStoreMessage+'</b>');
				}
				currMarkerPos = index;
			});
			GEvent.addListener(marker, "click", function() {
				var storeArray = document.getElementsByName("storeArray");
				var storeIdElem = document.getElementById("storeId");
				var noStoreMessage = document.getElementById("noStoreMessage").value;
				if (cityName == null && provinceName == null) {
					document.googlemap.storeId.value = storeArray[index].value;
					storeIdElem.value = storeArray[index].value;
					document.getElementById("dummyElem").click();
				}else{				
				var currMarker = gmarkers[0];
				currMarker.openInfoWindowHtml('<b>'+noStoreMessage+'</b>');
				}
				currMarkerPos = index;
			});
			//add the markers to the gmarkers array
			gmarkers[index] = marker;
			return marker;
		}

		// create the map
		map = new GMap2(document.getElementById("map"));
		map.addControl(new GLargeMapControl());
		map.addControl(new GMapTypeControl());
		//added for UAT fix not showing CanadaMap
		//center to canada by default
		map.setCenter(new GLatLng(52.707013, -96.240234), 3);
		// map.setCenter(new GLatLng(62.995158,-113.554687), 3);
		var markerMgr = new GMarkerManager(map);
		var longitudeArr = document.getElementsByName("longitude");
		var latitudeArr = document.getElementsByName("latitude");
		var storeArray = document.getElementsByName("storeArray");
		var checkoutDelivery = document.getElementById('checkoutDelivery');
		var longtitudeCount = 0;
		while (longtitudeCount < longitudeArr.length) {
			currStoreId = storeArray[longtitudeCount].value;
			var log = longitudeArr[longtitudeCount].value;
			var lat = latitudeArr[longtitudeCount].value;
			var isMarkerPresent = false;
			if (log != 'null' && lat != 'null' && log != null && log != '') {
				var point = new GLatLng(lat, log);
				//Each time a point is read, extend the bounds to include that point.
				bound.extend(point);
				isMarkerPresent = true;
				var marker = createMarker(point, currStoreId, longtitudeCount);
				map.addOverlay(marker);
				longtitudeCount++;
			}
		}
		//The centre can be obtained by using the bounds.getCenter() method
		var provinceSel = document.getElementById('provinceDD');
		var citySel = document.getElementById('cityDD');
		var checkoutDelivery = document.getElementById('checkoutDelivery');
		//setting Zoom/Center at City level for Store Locator Page
		if (provinceSel != null && citySel != null
				&& provinceSel.selectedIndex > 0 && citySel.selectedIndex > 0) {
			if (isMarkerPresent) {
				map.setZoom(11);
				map.setCenter(bound.getCenter());
			} else {
				provinceName = provinceSel.value;
				cityName = citySel.value;
				getLanandLatFromGCLient();
			}
		}
		//setting Zoom/Center at City level for checkoutDelivery			
		else if (provinceSel != null && citySel != null
				&& checkoutDelivery != null) {
			//added for MapCenter ,it is not working for all,UAT FIX				
			if (isMarkerPresent) {
				map.setZoom(11);
				map.setCenter(bound.getCenter());
			} else {
				provinceName = provinceSel.value;
				cityName = citySel.value;
				getLanandLatFromGCLient();
			}
		}
		//setting Zoom/Center at Province level for Store Locator Page			
		else if (provinceSel != null && provinceSel.selectedIndex > 0) {
			//added for MapCenter ,it is not working for all,UAT FIX
			if (isMarkerPresent) {
				map.setZoom(5);
				map.setCenter(bound.getCenter());
			} else {
				provinceName = provinceSel.value;
				getLanandLatFromGCLient();
			}
		}
		//setting Zoom at Country level for Store Locator Page
		else {
			//increase zoom to 4 As per Jpeg
			map.setZoom(4);
		}
		//commet bcoz it is not showing map.UATFix

		markerMgr.addMarkers(gmarkers, 0, 17);
		markerMgr.refresh();
	} else {
		alert("Sorry, the Google Maps API is not compatible with this browser");
	}

}

// This function picks up the marker click 
function markerClicked(i) {
	GEvent.trigger(gmarkers[i], "click");
}

function getDirFrom(fromLoc) {
	var url = 'http://maps.google.com/maps?f=d' + '&saddr=' + fromLoc
			+ '&hl=en' + '&ie=UTF8' + '&z=10';
	window.open(url);
}

function getDirTo(toLoc) {
	var url = 'http://maps.google.com/maps?f=d' + '&daddr=' + toLoc + '&hl=en'
			+ '&ie=UTF8' + '&z=10';
	window.open(url);
}

function setMarkerImgSrc() {
	var markerImgArr = document.getElementsByName('markerImg');
	var count = markerImgArr.length;
	for (i = 0; i < count; i++) {
		markerImgArr[i].src = contextPathVal
				+ '/images/en/app/B_Marker_Noshadow.gif';
	}
}
