//-------------------------------------------------------------------------------------
//   Script Name:			googlecompatiblemap.js
//   Description:			drills the user down to a zoomed in area on the google map when clicking on the home page map
//   Revision History:	
//	 Initial Development:	 08.22.07 - RReeves/BKnapp
//-------------------------------------------------------------------------------------

reliance.load('googleMapsForEnterprise');
reliance.load('domUtilities');

function createCompatibleMap(id, polygon, projectionZoom, nLat, sLat, eLng, wLng, targetZoom, siteDirectory, accountId, selected, criteria) {
	var accQs = accountId ? '&acc=' + accountId : '';
	var criteria = criteria ? '&criteria=' + criteria : '';
	var image = document.getElementById(id);
	var area = document.createElement('area');
	area.shape = 'poly';
		
	if (!selected || selected.length == 0) {
		selected='qck';
	}
	
	area.coords = polygon.join(',');
	area.href = 'javascript:void(0)';
	area.onmouseover = function() {image.style.cursor = 'url(\'http://media.reliancenetwork.com/media/global/cursors/magnifier.cur\'), default;'};
	area.onmouseout = function() {image.style.cursor = 'default'};
	var map = document.createElement('map');
	map.name = 'map_' + id;
	map.id = map.name;
	map.appendChild(area);
	image.useMap = '#' + map.name;
	reliance.event.addDomListener(map, 'click', function(evnt) {
		return function(evnt, image, area, projectionZoom, nLat, sLat, eLng, wLng, targetZoom) {
			evnt = reliance.domUtilities.fixEvent(evnt);
			if (evnt.target.tagName.toLowerCase() != 'area') 
				return;

			var bounds = new GLatLngBounds(new GLatLng(sLat, wLng), new GLatLng(nLat, eLng));
			var offset = reliance.domUtilities.getOffset(image);
			var scrollLeft = document.documentElement && document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft;
			var scrollTop = document.documentElement && document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop;
			var mouseX = (evnt.clientX + 6) - offset.x + scrollLeft;
			var mouseY = (evnt.clientY + 6) - offset.y + scrollTop;
			var projection = G_NORMAL_MAP.getProjection();
			var centerLatLng = bounds.getCenter();
			var centerPoint = projection.fromLatLngToPixel(centerLatLng, projectionZoom);
			var latlngNE = bounds.getNorthEast();
			var latlngSW = bounds.getSouthWest();
			var pointNE = projection.fromLatLngToPixel(latlngNE, projectionZoom);
			var pointSW = projection.fromLatLngToPixel(latlngSW, projectionZoom);
			var projectionWidth = pointNE.x - pointSW.x;
			var projectionHeight = pointSW.y - pointNE.y;
			var deltaXRatio = image.offsetWidth / projectionWidth;
			var deltaYRatio = image.offsetHeight / projectionHeight;
			var deltaX = (mouseX - (image.offsetWidth / 2)) / deltaXRatio;
			var deltaY = (mouseY - (image.offsetHeight / 2)) / deltaYRatio;
			var mousePoint = new GPoint(centerPoint.x + deltaX, centerPoint.y + deltaY);
			var mouseLatLng = projection.fromPixelToLatLng(mousePoint, projectionZoom);
			area.href = '/' + siteDirectory + '/index.asp?p=findahome.asp&selected=' + selected + '&point=' + mouseLatLng.lat() + '|' + mouseLatLng.lng() + '|' + targetZoom + accQs + criteria;
		}.apply(this, [evnt, image, area, projectionZoom, nLat, sLat, eLng, wLng, targetZoom]);
	});
	document.body.appendChild(map);
}