safari = (navigator.userAgent.indexOf('Safari') != -1);

var map;
var myIcon;
var image;
var infoWin;

// Shopping Directory - Store
function showMap(storeClass,lat,lng,iwData) {
	var mapTypes = new Array(google.maps.MapTypeId.ROADMAP, google.maps.MapTypeId.HYBRID);
	var latlng = new google.maps.LatLng(lat,lng);
	var myOptions = {
		zoom: 15,
		center: latlng,
		mapTypeId: google.maps.MapTypeId.ROADMAP,
		mapTypeControl: true,
		mapTypeControlOptions: {style: google.maps.MapTypeControlStyle.DROPDOWN_MENU, mapTypeIds: mapTypes}
	};
	map = new google.maps.Map(document.getElementById("shopMap1"), myOptions);
	myIcon = (storeClass == 1) ? "newsite/media/imgs/maps/mono_store.png" : "newsite/media/imgs/maps/multi_store.png";
	image = new google.maps.MarkerImage(myIcon, new google.maps.Size(45,22));
	var marker = new google.maps.Marker({position:latlng, map:map, icon:image});	
	var contentString = '<div id="content">'+iwData+'</div>';
	infoWin = new google.maps.InfoWindow({content: contentString});
	//infoWin.open(map,marker);
	
	google.maps.event.addListener(marker, 'click', function() {
		infoWin.open(map,marker);
	});
}

/******************************************************************************/

// Home - Store
function showMapHome(storeClass,lat,lng,iwData) {
	var mapTypes = new Array(google.maps.MapTypeId.ROADMAP, google.maps.MapTypeId.HYBRID);
	var latlng = new google.maps.LatLng(lat,lng);
	var myOptions = {
		zoom: 15,
		center: latlng,
		mapTypeId: google.maps.MapTypeId.ROADMAP,
		mapTypeControl: true,
		mapTypeControlOptions: {style: google.maps.MapTypeControlStyle.DROPDOWN_MENU, mapTypeIds: mapTypes}
	};
	map = new google.maps.Map(document.getElementById("shopMapHome"), myOptions);
	myIcon = (storeClass == 1) ? "newsite/media/imgs/maps/mono_store.png" : "newsite/media/imgs/maps/multi_store.png";
	image = new google.maps.MarkerImage(myIcon, new google.maps.Size(45,22));
	var marker = new google.maps.Marker({position:latlng, map:map, icon:image});	
	var contentString = '<div id="content">'+iwData+'</div>';
	infoWin = new google.maps.InfoWindow({content: contentString});
	infoWin.open(map,marker);
	
	google.maps.event.addListener(marker, 'click', function() {
		infoWin.open(map,marker);
	});
}

/******************************************************************************/

// Shopping Guide - City neighborhoods
var neighborhoods = new Array();
var points = new Array();
var fullLatLngBounds;
var nhLatLngBounds = new Array();
var nhCentroid = new Array();
var opacityOut = 0.4;
var opacityOver = 0.2;

function sgCityNHMap(country,state,city,cityName,lat,lng) {
	fullLatLngBounds = new google.maps.LatLngBounds();
	var mapTypes = new Array(google.maps.MapTypeId.ROADMAP, google.maps.MapTypeId.HYBRID);
	var latlng = new google.maps.LatLng(lat,lng);
	var myOptions = {
		zoom: 13,
		center: latlng,
		mapTypeId: google.maps.MapTypeId.ROADMAP,
		mapTypeControl: true,
		mapTypeControlOptions: {style:google.maps.MapTypeControlStyle.DROPDOWN_MENU, mapTypeIds:mapTypes}
	};
	map = new google.maps.Map(document.getElementById("city_canvas"), myOptions);

	function buildOverHandler(i,opacity) {
		return function() {nhOver(i,opacity);};
	}

	function buildOutHandler(i,opacity) {
		return function() {nhOut(i,opacity);};
	}

	function buildClickHandler(i) {
		return function() {showNHStores(i);};
	}
	
	for (i=0; i<nhLoc.length; i++) {
		var points = [];
		nhLatLngBounds[i] = new google.maps.LatLngBounds();
		for (j=0; j<nhLoc[i].length; j+=2) {
			var k = (j>0) ? j/2-1 : 0;
			points[k] = new google.maps.LatLng(nhLoc[i][j],nhLoc[i][j+1]);
			nhLatLngBounds[i].extend(points[k]);
			fullLatLngBounds.extend(points[k]);
		}

		neighborhoods[i] = new google.maps.Polygon({
    	paths: points,
	    strokeColor: nhData[i][2],
  	  strokeOpacity: opacityOut,
    	strokeWeight: 1,
	    fillColor: nhData[i][2],
  	  fillOpacity: opacityOut
	  });
		nhCentroid[i] = nhLatLngBounds[i].getCenter();
		
		google.maps.event.addListener(neighborhoods[i], 'mouseover', buildOverHandler(i,opacityOver));
		google.maps.event.addListener(neighborhoods[i], 'mouseout', buildOutHandler(i,opacityOut));
		google.maps.event.addListener(neighborhoods[i], 'click', buildClickHandler(i));
		neighborhoods[i].setMap(map);
		map.fitBounds(fullLatLngBounds);
	}
		
	function nhOver(i,opacity) {
		neighborhoods[i].setOptions({strokeOpacity:opacity, fillOpacity:opacity});
		openInfoWin(i);
	}

	function nhOut(i,opacity) {
		neighborhoods[i].setOptions({strokeOpacity:opacity, fillOpacity:opacity});
		infoWin.close();
	}
	
	function openInfoWin(i) {
		var contentString = '<div id="content"><strong><span class="VB11435E89">'+cityName+', '+nhData[i][1]+'</span></strong></div>';
		infoWin = new google.maps.InfoWindow({content:contentString, disableAutoPan:false, position:nhCentroid[i]});
		infoWin.open(map);
		//google.maps.event.clearListeners(infoWin, 'mouseover');
		//clearInstanceListeners(infoWin);
	}
	
	function showNHStores(i) {
		location.href=nhData[i][3];
	}
	
	/*	function globalError() {
			document.getElementById("lblJSError").innerText += "\r\n" + arguments[0] + " in " + arguments[1] + " at line " + arguments[2];            
			return true;
		}
		window.onerror = globalError;
	*/
}

/******************************************************************************/

// Shopping Guide - Neighborhood stores
var neighborhood;
var markers = new Array();
var infoWin;

function sgNHMap(nh,lat,lng) {
	var mapTypes = new Array(google.maps.MapTypeId.ROADMAP, google.maps.MapTypeId.HYBRID);
	var latlng = new google.maps.LatLng(lat,lng);
	var myOptions = {
		zoom: 12,
		center: latlng,
		mapTypeId: google.maps.MapTypeId.ROADMAP,
		mapTypeControl: true,
		mapTypeControlOptions: {style:google.maps.MapTypeControlStyle.DROPDOWN_MENU, mapTypeIds:mapTypes}
	};
	map = new google.maps.Map(document.getElementById("nh_canvas"), myOptions);
	
	//google.maps.event.addListener(map, 'click', function() {infoWin.close();});
	
	drawNH();

	for (i in locations) {
		myIcon = (locations[i][0] == 1) ? "newsite/media/imgs/maps/mono_store.png" : "newsite/media/imgs/maps/multi_store.png";
		image = new google.maps.MarkerImage(myIcon, new google.maps.Size(45,22));
		var coord = new google.maps.LatLng(locations[i][2],locations[i][3]);
		markers[i] = new google.maps.Marker({position:coord, map:map, icon:image});
		google.maps.event.addListener(markers[i], 'mouseover', buildOverHandler(i));
		google.maps.event.addListener(markers[i], 'mouseout', function() {infoWin.close();});
		google.maps.event.addListener(markers[i], 'click', buildClickHandler(i));
	}
}

function buildOverHandler(i) {
	return function() {showIW(i);};
}

function buildClickHandler(i) {
	return function() {lnkToStore(i);};
}

function showIW(i) {
	var contentString = '<div id="shopData1Map"><p><span class="VB11435E89">'+locations[i][1]+'</span></p>'+iwData[i]+'</div>';
	var infoWin = new google.maps.InfoWindow({content:contentString});
	infoWin.open(map,markers[i]);
}

function lnkToStore(i) {
	infoWin.close();
	location.href=locations[i][4];
}

function drawNH() {
	var latlngBounds = new google.maps.LatLngBounds();
	for (j=0; j<nhLoc.length; j+=2) {
		var k = (j>0) ? j/2-1 : 0;
		points[k] = new google.maps.LatLng(nhLoc[j],nhLoc[j+1]);
		latlngBounds.extend(points[k]);
	}

	neighborhood = new google.maps.Polygon({
		clickable: false,
		paths: points,
		strokeColor: nhData[2],
		strokeOpacity: 0.0,
		strokeWeight: 1,
		fillColor: nhData[2],
		fillOpacity: 0.0
	});

	//google.maps.event.addListener(neighborhood, 'click', function() {infoWin.close();});
	neighborhood.setMap(map);
	map.fitBounds(latlngBounds);
}

/******************************************************************************/

// Shopping Guide - City stores (w/o NH)
var coords = new Array();

function sgCityMap(lat,lng) {
	var mapTypes = new Array(google.maps.MapTypeId.ROADMAP, google.maps.MapTypeId.HYBRID);
	var latlng = new google.maps.LatLng(lat,lng);
	var myOptions = {
		zoom: 12,
		center: latlng,
		mapTypeId: google.maps.MapTypeId.ROADMAP,
		mapTypeControl: true,
		mapTypeControlOptions: {style: google.maps.MapTypeControlStyle.DROPDOWN_MENU, mapTypeIds: mapTypes}
	};
	map = new google.maps.Map(document.getElementById("city_canvas"), myOptions);

	function buildOverHandler(i) {
		return function() {showIW(i);};
	}

	function buildClickHandler(i) {
		return function() {lnkToStore(i);};
	}

	for (i in locations) {
		myIcon = (locations[i][0] == 1) ? "newsite/media/imgs/maps/mono_store.png" : "newsite/media/imgs/maps/multi_store.png";
		image = new google.maps.MarkerImage(myIcon, new google.maps.Size(45,22));
		coords[i] = new google.maps.LatLng(locations[i][2],locations[i][3]);
		markers[i] = new google.maps.Marker({position:coords[i], map:map, icon:image});
		google.maps.event.addListener(markers[i], 'mouseover', buildOverHandler(i));
		google.maps.event.addListener(markers[i], 'mouseout', function(event) {infoWin.close();});
		google.maps.event.addListener(markers[i], 'click', buildClickHandler(i));
	}
	centerZoomMap();
}
	
function showIW(i) {
	var contentString = '<div id="shopData1Map"><p><span class="VB11435E89">'+locations[i][1]+'</span></p>'+iwData[i]+'</div>';
	infoWin = new google.maps.InfoWindow({content:contentString});
	infoWin.open(map, markers[i]);
}

function lnkToStore(i) {
	infoWin.close();
	location.href=locations[i][4];
}


function centerZoomMap() {
	var latlngBounds = new google.maps.LatLngBounds();

	for (i in coords) {
		latlngBounds.extend(coords[i]);
	}
	map.setCenter(latlngBounds.getCenter());
	map.fitBounds(latlngBounds);
}
