var map;

/*var iconCache = new Array();
for (var i = 0; i < 10; i++)
{
	iconCache[i] = new GSIcon();
	iconCache[i].imageSrc = './images/map-icons/'+(i+1)+'.png';
	iconCache[i].imageSize = new GSDimension(27, 24);
	iconCache[i].iconOffset = new GSPoint(-27, -24);
	iconCache[i].iconInfoWindowOffset = new GSPoint(10, 0);
}*/

var main = {};

main.timer = null;
main.current = '';
main.target = '';
main.centreNZ = new GSPoint(2530000, 5990000);

main.zoomIn = function()
{
	utils.$('bubbleZI').style.display = 'none';
	utils.$('bubbleZO').style.display = 'block';

	var zoomlevel = map.getZoomLevel();
	zoomlevel = zoomlevel > 1 ? 1 : zoomlevel;
	map.zoom(zoomlevel);
}

main.zoomOut = function()
{
	utils.$('bubbleZO').style.display = 'none';
	utils.$('bubbleZI').style.display = 'block';

	map.zoom(11);
}

main.zoomInEx = function(A)
{
	var layer = map.getLayer(main.current);
	if (! layer) return;
	
	map.centerOnLayer(main.current);

	utils.$('bubbleZI_'+A).style.display = 'none';
	utils.$('bubbleZO_'+A).style.display = 'block';

	var zoomlevel = map.getZoomLevel();
	zoomlevel = zoomlevel <= 1 ? 1 : zoomlevel;
	map.zoom(zoomlevel);
}

main.zoomOutEx = function(A)
{
	utils.$('bubbleZO_'+A).style.display = 'none';
	utils.$('bubbleZI_'+A).style.display = 'block';

	map.zoom(11);
}

main.init = function () 
{
	map = new GSMap('map0', {centerOnDblClick: false}); //
	//map.addControl(GSMap.MAP_CONTROL);
	
	var labels = [{level: 9, value: 'Region'}, {level: 3, value: 'Suburb'}, {level: 0, value: 'Street'}];
	map.addControl(new GSZoomControl(labels), {anchor: GSControl.ANCHOR_TOP_LEFT, offset: new GSPoint(7, 7)});

	var coordinate = main.centreNZ;
	map.centerAndZoom(coordinate, 11);

	var lmnts = utils.$$('mo101-listing-row');

	for (var i = 0; i < lmnts.length; i++)
	{
		lmnts[i][Evnt.eType](Evnt.ePref + 'mouseover', function(e)
		{
			if (!e) e = window.event;
			var node = typeof e.target != 'undefined' ? e.target : e.srcElement;

			var parentTR = utils.$(node, 'TR');
			utils.addClass(parentTR, 'mo-highlight');

			if (main.timer) clearTimeout(main.timer);

			if (main.current != parentTR.id)
			{
				map.closeInfoWindow();
				main.target = parentTR.id;
				main.timer = setTimeout(function()
				{ 
					main.symClick();

					//utils.href_append(utils.$$('2nd_nav_rewrite'), '101Id', locDataSet[currentIndex].id);
				}, 300);
			}
		
		}, false);

		lmnts[i][Evnt.eType](Evnt.ePref + 'mouseout', function(e)
		{
			if (!e) e = window.event;
			var node = typeof e.target != 'undefined' ? e.target : e.srcElement;
			var parentTR = utils.$(node, 'TR');

			if (main.timer) clearTimeout(main.timer);

			utils.removeClass(parentTR, 'mo-highlight');
		}, false);
	}
	
	map.addListener(window);
};

function mapDblClicked(map, object) 
{
  if(object instanceof GSPoint) 
  {
    map.zoom( map.getZoomLevel() - 1 );
  }
}

main.symClick = function()
{
	main.current = main.target;

	var currentIndex = 0;
	for (currentIndex = 0; currentIndex < locDataSet.length; currentIndex++) { if (locDataSet[currentIndex].id == main.current) break; }

	var layers = map.getLayers();
	for (var x = 0; x < layers.length; x++) layers[x].clear();

	var layer = map.getLayer(main.current);
	if (layer == null) {
		layer = map.createLayer(main.current);
	}
	layer.clear();

	var features = new Array();
	if (! locDataSet[currentIndex]) return;
	for (var i = 0; i < locDataSet[currentIndex].dataset.length; i++)
	{
		var dsItem = locDataSet[currentIndex].dataset[i];
		if (dsItem.id == 1) //Nationwide MustDo
		{
			label = new GSLabel('This is a NZ wide Must-Do', new GSPoint(main.centreNZ.x, main.centreNZ.y), {displayLevels: '10-11', backgroundColor: 'blue', opacity: 0.3, fontSize: 15});
			label.backgroundEl.style.width = label.textEl.style.width = '190px';
			label.textEl.style.textAlign = 'center';
			label.addEventHandler('click', function() {
				location.href = locDataSet[currentIndex].l;
			});

			var x = label.coordinate.x - 400000; label.coordinate.x = x;

			layer.addFeature(label);
			//map.addFeature(label);
			label.render();
		}
		else
		{
			var script = '<div>'+dsItem.d+'<br/><a href="./'+locDataSet[currentIndex].l+'">view more &raquo;</a><a href="#" id="bubbleZI" onclick="main.zoomIn(); return false;">&nbsp;</a><a href="#" id="bubbleZO" onclick="main.zoomOut(); return false;" style="display:none;">&nbsp;</a></div>';
			var coordinate = new GSPoint(dsItem.x, dsItem.y);
			var params = {"id" : dsItem.id,
						"name" : dsItem.t,
						"coordinate" : coordinate,
						"infoHtml" 	 : script};

			var feature = new GSPointFeature(params);
			//feature.setIcon(new GSIcon(iconCache[i]));
			feature.addEventHandler("click", function(e) {
				this.showInfoWindow();
			});
			//map.addFeature(feature);
			layer.addFeature(feature);
		}
	}
	map.centerAndZoom(main.centreNZ, 11); 
	utils.href_rewrite(utils.$('listing_link_editorial'), locDataSet[currentIndex].l, 'Editorial for \''+dsItem.t+'\'');
	utils.href_rewrite(utils.$('listing_link_stay'), locDataSet[currentIndex].l_s, 'Accommodation near \''+dsItem.t+'\'');
	utils.href_rewrite(utils.$('listing_link_activities'), locDataSet[currentIndex].l_a, 'Activities near \''+dsItem.t+'\'');
	//utils.href_rewrite(utils.$('listing_link_events'), locDataSet[currentIndex].l_e, 'Events near \''+dsItem.t+'\'');
	//if (utils.$('regional_link'))
	//	utils.href_rewrite(utils.$('regional_link'), locDataSet[currentIndex].l_r);
	utils.href_rewrite(utils.$('link_reviews'), locDataSet[currentIndex].l_r, 'Reviews for \''+dsItem.t+'\'');
	utils.href_rewrite(utils.$('travel_deals_link'), locDataSet[currentIndex].l_d);
	
	if (utils.$('inactive-nav2-menu'))
	{
		utils.$('active-nav2-menu').style.display = 'block';
		utils.$('inactive-nav2-menu').style.display = 'none';
	}
}

/*GSMap.prototype.buildTileUrl = function(x, y, mpx) {
	//return "http://tiles2.geosmart.co.nz/nz/v3/" + mpx + "/" + x + "/" + x + "_" + y + ".png"; 
	return "http://tiles.geosmart.co.nz/nz/v4/carto/" + mpx + "/" + x + "/" + x + "_" + y + ".png"; 
};*/

/*GSMap.prototype.addLogo = function() {return;};*/
