var map = null;
var customMap = null;
var centreLat=0,centreLon=0,initialZoom=2; //initial settings
var map; //the GMap2 itself

function customGetTileURL(a,b) {
	var total = a.x + a.y;
	var servernum = (total % 3) + 1;
	var server = "t" + servernum + ".hillcountrytexas.com";
	
	var pagedir = magpage.substring(0, 1);
	if (pagedir == "F" || pagedir == "B") {
		pagedir = "C";
	}
	
	//server = "rockyti.local/~admin/tiles";
	var serverstr = "http://" + server + "/";
	serverstr += magedition + "/";
	serverstr += pagedir + "/";
	serverstr += "BDB" + magpage + "_x" + a.x + "_y" + a.y + "_z" + b + ".jpg";
	
	return serverstr;
}

function updateLink() {
    var center = map.getCenter();
    var zoom = map.getZoom();

    var latLngStr = center.x + ', ' + center.y + ', ' + zoom;
    document.getElementById("message").innerHTML = latLngStr;
}

function load() {
	if (GBrowserIsCompatible()) {
		resizeMapDiv();
		
		for (var x = 0; x < pagesel.length ; x++) {
			if (pagesel.options[x].value == magpage) {
				pagesel.options[x].selected = true;
				break;
			}
		}
		
		var copyright = new GCopyright(1,
		new GLatLngBounds(new GLatLng(-90, -180),
			new GLatLng(90, 180)),
			0,
			"&copy; Horseshoe Bay Beacon");
		var copyrightCollection = new GCopyrightCollection("Billion Dollar Bay Magazine");
		copyrightCollection.addCopyright(copyright);

		//create a custom picture layer
		var pic_tileLayers = [ new GTileLayer(copyrightCollection , 0, 17) ];
		pic_tileLayers[0].getTileUrl = customGetTileURL;
		pic_tileLayers[0].isPng = function() { return false; };
		pic_tileLayers[0].getOpacity = function() { return 1.0; };
		
		var proj = new GMercatorProjection(18);
		proj.tileCheckRange = function(a,b,c) {
			var tileBounds = Math.pow(2,b);
			if (a.y<0 || a.y >= tileBounds) {return false;}
			if (a.x<0 || a.x >= tileBounds) {return false;}
			return true;
		};

		proj.getWrapWidth=function(zoom) {
			return 99999999999999;
		};
		
		var customMap = new GMapType(pic_tileLayers, proj, "Pic",
			{maxResolution:4, minResolution:1, errorMessage:"Data not available"});

		//Now create the custom map. Would normally be G_NORMAL_MAP,G_SATELLITE_MAP,G_HYBRID_MAP
		map = new GMap2(document.getElementById("map"),{mapTypes:[customMap]});
		map.addControl(new GLargeMapControl());
		map.addControl(new GMapTypeControl());
		//map.addControl(new GOverviewMapControl());
		map.enableDoubleClickZoom();
		map.enableContinuousZoom();
		map.enableScrollWheelZoom();
		goToCenter();
		//GEvent.addListener(map, "moveend", function() { updateLink(); });
		//map.setCenter(map.getCenter(), initialZoom, pic_customMap);
	}
}

function goToCenter() {
	map.setCenter(new GLatLng(centreLat, centreLon), initialZoom, customMap);
}

function flipPage(page) {
	magpage = page;

	for (var x = 0; x < pagesel.length ; x++) {
		if (pagesel.options[x].value == page) {
			pagesel.options[x].selected = true;
			break;
		}
	}
	
	map.setMapType(customMap);
	goToCenter();
	return false;
}

function turnPage(direction) {
	var newIndex = pagesel.selectedIndex + direction;
	if (newIndex < 0 || newIndex > (pagesel.length - 1)) {
		return false;
	}
	flipPage(pagesel.options[newIndex].value);
	return false;
}
