﻿var gallery_flag = new Img("images/markerAnim.gif", 16, 16, false);
var gallery_icon = new Icon(gallery_flag);
var all_images = [gallery_icon, gallery_icon, gallery_icon, gallery_icon, gallery_icon, gallery_icon];
var mapInstance;
var markerCount;

function hookEvent(element, eventName, callback) //cross-browser event hook
{
	if (typeof (element) == "string")
		element = document.getElementById(element);
	if (element == null)
		return;
	if (element.addEventListener)
	{
		if (eventName == 'mousewheel')
		{
			element.addEventListener('DOMMouseScroll',
				callback, false);
		}
		element.addEventListener(eventName, callback, false);
	}
	else if (element.attachEvent)
		element.attachEvent("on" + eventName, callback);
}

function cancelEvent(e) //cross-browser
{
	e = e ? e : window.event;
	if (e.stopPropagation)
		e.stopPropagation();
	if (e.preventDefault)
		e.preventDefault();
	e.cancelBubble = true;
	e.cancel = true;
	e.returnValue = false;
	return false;
}

function myMouseWheel(e)
{
	e = e ? e : window.event;
	var raw = e.detail ? e.detail : e.wheelDelta;
	var normal = e.detail ? e.detail * -1 : e.wheelDelta / 40;
	if (normal > 0)
		mapInstance.zoomIn();
	else if (normal < 0)
		mapInstance.zoomOut();
	cancelEvent(e);
}

function init(element)
{
	hookEvent(element, 'mousewheel', myMouseWheel); //cross-browser mousewheel hook
	loadmap();
}
function loadmap()
{
	// creates the map
	if (mapInstance == null)
	{
		//mapInstance = new SLMap(document.getElementById('map-element'), {singleClickHandler: mapClickHandler, doubleClickHandler: doubleClickHandlerFunction, zoomMin: "7"});
		mapInstance = new SLMap(document.getElementById('map-element'));
	}
	mapInstance.centerAndZoomAtSLCoord(new XYPoint(1000, 1000), 6);
	var grid = document.getElementById('GridView1');
	markerCount = 0;
	for (i = 1; i < grid.rows.length; i++)
	{
		params = grid.rows[i].cells; //pass in whole row of data. SLURL MUST be first parameter, others are optional.
		SLPoint(params, SLPointCallback); //SLPointCallback implemented in aspx file
	}
}

function Button1_onclick()
{
	loadmap();
}

function mapClickHandler(x, y)
{
	mapInstance.centerAndZoomAtSLCoord(new XYPoint(x, y), mapInstance.getCurrentZoomLevel());
}

//var doubleClickHandlerFunction = function(x,y)
function doubleClickHandlerFunction(x, y)
{
	gotoSLURL(x, y);
};

function doMarkerAction(marker)
{
	mapInstance.clickMarker(marker);
};

function mousewheel()
{
	//window.event.cancelBubble = true; //stop mouse from scrolling window
	if (event.wheelDelta >= 120)
		mapInstance.zoomIn();
	else if (event.wheelDelta <= -120)
		mapInstance.zoomOut();
}

//param is the row of data from the table. Callback will be called with each result. SLURL is 1st parameter
function SLPoint(params, callback)
{
	var s = params[0].innerHTML.split("/");
	//region/x/y/z
	var regionName = s[0];
	var localX = s[1];
	var localY = s[2];
	var varName = "slRegionPos_result";
	var scriptURL = "https://cap.secondlife.com/cap/0/d661249b-2b5a-4436-966a-3d3b8d7a574f?var=" + varName + "&sim_name=" + encodeURIComponent(regionName);
	var onLoadHandler = function()
	{
		if (slRegionPos_result.error)
		{
			//alert("The region name '" + regionName + "' was not recognised.");
		}
		else
		{
			callback(params, regionName, slRegionPos_result.x + (localX / slTileSize), slRegionPos_result.y + (localY / slTileSize));
		}
	};
	slAddDynamicScript(scriptURL, onLoadHandler);
}
