var centreLat=0.0;
var centreLon=0.0;
var initialZoom=1;
var imageWraps=false;
var image_root = "images/tiles";
var map;
var pic_customMap;
var new_win;

function CustomProjection(a,b) {
	
	this.imageDimension=65536;
	this.pixelsPerLonDegree=[];
	this.pixelOrigin=[];
	this.tileBounds=[];
	this.tileSize=256;
	this.isWrapped=b;
	var b=this.tileSize;
	var c=1;
	
	for(var d=0;d<a;d++) {
	
		var e=b/2;
		this.pixelsPerLonDegree.push(b/360);
		this.pixelOrigin.push(new GPoint(e,e));
		this.tileBounds.push(c);
		b*=2;
		c*=2
		
	}
	
}

CustomProjection.prototype=new GProjection();

CustomProjection.prototype.fromLatLngToPixel=function(latlng,zoom) {
	
	var c=Math.round(this.pixelOrigin[zoom].x+latlng.lng()*this.pixelsPerLonDegree[zoom]);
	var d=Math.round(this.pixelOrigin[zoom].y+(-2*latlng.lat())*this.pixelsPerLonDegree[zoom]);
	return new GPoint(c,d)
	
};

CustomProjection.prototype.fromPixelToLatLng=function(pixel,zoom,unbounded) {
	
	var d=(pixel.x-this.pixelOrigin[zoom].x)/this.pixelsPerLonDegree[zoom];
	var e=-0.5*(pixel.y-this.pixelOrigin[zoom].y)/this.pixelsPerLonDegree[zoom];
	return new GLatLng(e,d,unbounded)
	
};

CustomProjection.prototype.tileCheckRange=function(tile,zoom,tilesize) {
	var tileBounds=this.tileBounds[zoom];
	
	if (tile.y<0 || tile.y >= tileBounds) { return false; }
	
	if (this.isWrapped) {
		
		if (tile.x<0 || tile.x>=tileBounds) { 
			tile.x = tile.x%tileBounds; 
			if (tile.x < 0) {tile.x+=tileBounds} 
		}
		
	}
	else { 
		if (tile.x<0 || tile.x>=tileBounds) {return false;}
	}  
	
	return true;
}
  
CustomProjection.prototype.getWrapWidth=function(zoom) {
	return this.tileBounds[zoom]*this.tileSize;
}

function customGetTileURL(a,b) {

	var c=Math.pow(2,b);
	var d=a.x;
	var e=a.y;
	var f="t";
	
	for(var g=0;g<b;g++){
		
		c=c/2;
		
		if(e<c) {
			if(d<c){f+="q"}
			else{f+="r";d-=c}
		}
		else{
			if(d<c){f+="t";e-=c}
			else{f+="s";d-=c;e-=c}
		}
		
	}
	
	return image_root + "/" + f + ".jpg"
}


function getWindowHeight() {

	if (window.self&&self.innerHeight) {
		return self.innerHeight;
	}
	
	if (document.documentElement&&document.documentElement.clientHeight) {
		return document.documentElement.clientHeight;
	}
	
	return 0;
}

function getPageScrollTop(){
	var yScrolltop;
	
	if (self.pageYOffset) {
		yScrolltop = self.pageYOffset;
	} else if (document.documentElement && document.documentElement.scrollTop){ // Explorer 6 Strict
		yScrolltop = document.documentElement.scrollTop;
	} else if (document.body) {// all other Explorers
		yScrolltop = document.body.scrollTop;
	}
	
	return yScrolltop;
}


function resizeMapDiv() {

	var d=document.getElementById("map");
	var offsetTop=0;
	
	for (var elem=d; elem!=null; elem=elem.offsetParent) {
		offsetTop+=elem.offsetTop;
	}
	
	var height=getWindowHeight()-offsetTop-16;
	
	if (height>=0) {
		d.style.height="650px";
	}
	
}

function Launch(page, width, height) { 
    
}

function addIcon(id, type, lat, lng, marked) {
	
	var icon = new GIcon();
	icon.image = "images/icons/"+type+".png";
	icon.iconSize = new GSize(29, 29);
	icon.iconAnchor = new GPoint(14, 14);
	
	if(marked) {
		icon.image = "images/icons/"+type+"_marked.png";
	}

	var marker = new GMarker(new GLatLng(lat, lng), { icon:icon });

	GEvent.addListener(marker, "click", function(latlng) {
		
		var content_string = "div#content-" + id;
		
		map.setCenter(latlng, 3, pic_customMap);
		
		//$("div#overlay").show();
		// set content position
		//$(content_string).css('top',getPageScrollTop()+20);
		//$(content_string).slideDown("slow");				

		// load the content into the div.
		
		//$(content_string).load("map_window.php", {id: id});
		
		// open popup to info.php
		
		//window.open(,left=100,top=100,resizable=no,scrollbars=yes,toolbar=no,status=yes,location=no');
        //Launch(,700,820);
        var page = 'info.php?id='+id;
        var width = '820';
        var height = '700';
        new_win = window.open(page, "", "resizable=no,scrollbars=yes,toolbar=no,status=yes,location=no, width=" + width + ", height=" + height + ", top=" + (screen.height/2 - height/2) + ", left=" + (screen.width/2 - width/2) + "\""); 
		new_win.focus();



	});
	
	return marker;
}

		function AddIcons(id) {
		switch(id) {
			case "cc1":
				map.addOverlay(addIcon(31, 1, -4.207763671875, 37.177734375, 0));
				map.addOverlay(addIcon(32, 1, -3.900146484375, 18.369140625, 0));
				map.addOverlay(addIcon(33, 1, -48.0322265625, -3.1640625, 0));
				map.addOverlay(addIcon(34, 1, -63.2373046875, 10.6787109375, 0));
				map.addOverlay(addIcon(35, 1, -14.996337890625, 37.85888671875, 0));
				map.addOverlay(addIcon(36, 1, -43.08837890625, 35.68359375, 0));
				map.addOverlay(addIcon(37, 1, -77.662353515625, -66.99462890625, 0));
				map.addOverlay(addIcon(38, 1, -66.368408203125, -68.1591796875, 0));
				map.addOverlay(addIcon(39, 1, -69.36767578125, -50.2294921875, 0));
				map.addOverlay(addIcon(40, 1, -50.921630859375, -38.38623046875, 0));
				map.addOverlay(addIcon(41, 1, -35.343017578125, -26.630859375, 0));
				map.addOverlay(addIcon(42, 1, -26.3671875, -68.97216796875, 0));
				map.addOverlay(addIcon(43, 1, 23.0712890625, -86.59423828125, 0));
				map.addOverlay(addIcon(44, 1, -13.348388671875, -53.4814453125, 0));
				map.addOverlay(addIcon(45, 1, -63.028564453125, 63.87451171875, 0));
				map.addOverlay(addIcon(46, 1, -17.611083984375, 21.97265625, 0));
				map.addOverlay(addIcon(47, 1, 23.31298828125, 13.46923828125, 0));
				map.addOverlay(addIcon(48, 1, 17.38037109375, 30.1904296875, 0));
				map.addOverlay(addIcon(49, 1, -3.955078125, -36.71630859375, 0));
				map.addOverlay(addIcon(50, 1, -3.93310546875, -3.1640625, 0));
				map.addOverlay(addIcon(51, 1, 41.363525390625, 90.85693359375, 0));
				map.addOverlay(addIcon(52, 1, 36.1669921875, 28.388671875, 0));
				map.addOverlay(addIcon(53, 1, 51.536865234375, -24.49951171875, 0));
				map.addOverlay(addIcon(54, 1, 72.1142578125, -32.71728515625, 0));
				map.addOverlay(addIcon(55, 1, 59.688720703125, 34.189453125, 0));
				map.addOverlay(addIcon(56, 1, 52.2509765625, 58.53515625, 0));
				map.addOverlay(addIcon(57, 1, -41.715087890625, 37.44140625, 0));
				map.addOverlay(addIcon(58, 1, -41.473388671875, -0.28564453125, 0));
				map.addOverlay(addIcon(60, 1, -36.10107421875, 79.82666015625, 0));
				map.addOverlay(addIcon(59, 1, -29.50927734375, 84.52880859375, 0));
				map.addOverlay(addIcon(61, 1, -23.203125, -78.15673828125, 0));
				map.addOverlay(addIcon(62, 1, -38.089599609375, 21.8408203125, 0));
				map.addOverlay(addIcon(63, 1, -22.39013671875, -15.7763671875, 0));
				map.addOverlay(addIcon(64, 1, -7.5146484375, -38.16650390625, 0));
				map.addOverlay(addIcon(65, 1, -13.392333984375, -27.48779296875, 0));
				map.addOverlay(addIcon(66, 1, 54.0966796875, 17.0068359375, 0));
				map.addOverlay(addIcon(67, 1, 58.106689453125, -4.3505859375, 0));
				map.addOverlay(addIcon(68, 1, 42.56103515625, 28.05908203125, 0));
				map.addOverlay(addIcon(69, 1, -29.696044921875, 24.71923828125, 0));
				map.addOverlay(addIcon(70, 1, -21.02783203125, -29.5751953125, 0));
				map.addOverlay(addIcon(71, 1, 62.786865234375, 63.91845703125, 0));
				map.addOverlay(addIcon(72, 1, 35.760498046875, 96.21826171875, 0));
				map.addOverlay(addIcon(73, 1, 39.35302734375, 25.3564453125, 0));
				map.addOverlay(addIcon(74, 1, -46.329345703125, 51.26220703125, 0));
				map.addOverlay(addIcon(75, 1, 53.06396484375, 41.572265625, 0));
				map.addOverlay(addIcon(76, 1, 4.41650390625, -69.0380859375, 0));
				map.addOverlay(addIcon(77, 1, -14.83154296875, 10.34912109375, 0));
				map.addOverlay(addIcon(78, 1, -14.1943359375, 3.49365234375, 0));
				map.addOverlay(addIcon(79, 1, 12.117919921875, -16.10595703125, 0));
				map.addOverlay(addIcon(80, 1, -43.76953125, 50.47119140625, 0));
				map.addOverlay(addIcon(81, 1, -28.93798828125, -59.7216796875, 0));
				map.addOverlay(addIcon(82, 1, -22.30224609375, 2.83447265625, 0));
				map.addOverlay(addIcon(83, 1, -14.91943359375, 70.3564453125, 0));
				map.addOverlay(addIcon(84, 1, -27.103271484375, -50.33935546875, 0));
				map.addOverlay(addIcon(85, 1, 62.46826171875, 2.65869140625, 0));
				map.addOverlay(addIcon(86, 1, 48.240966796875, -45.68115234375, 0));
				map.addOverlay(addIcon(87, 1, 58.24951171875, 6.2841796875, 0));
				map.addOverlay(addIcon(88, 1, -48.614501953125, 73.98193359375, 0));
				map.addOverlay(addIcon(89, 1, -25.29052734375, -29.3115234375, 0));
				map.addOverlay(addIcon(90, 1, -33.02490234375, 44.6923828125, 0));
			break;
			case "cc2":
				map.addOverlay(addIcon(91, 2, -59.61181640625, 108.21533203125, 0));
				map.addOverlay(addIcon(92, 2, -78.4423828125, 57.94189453125, 0));
				map.addOverlay(addIcon(93, 2, -70.51025390625, 33.837890625, 0));
				map.addOverlay(addIcon(94, 2, -65.599365234375, 14.7216796875, 0));
				map.addOverlay(addIcon(95, 2, -63.116455078125, 46.69189453125, 0));
				map.addOverlay(addIcon(96, 2, -59.996337890625, 42.03369140625, 0));
				map.addOverlay(addIcon(97, 2, -59.161376953125, 63.52294921875, 0));
				map.addOverlay(addIcon(98, 2, -55.931396484375, 56.57958984375, 0));
				map.addOverlay(addIcon(99, 2, -55.162353515625, 3.1640625, 0));
				map.addOverlay(addIcon(100, 2, -54.42626953125, 16.083984375, 0));
				map.addOverlay(addIcon(101, 2, -48.66943359375, -13.86474609375, 0));
				map.addOverlay(addIcon(102, 2, -41.396484375, 3.62548828125, 0));
				map.addOverlay(addIcon(103, 2, -33.782958984375, -1.8896484375, 0));
				map.addOverlay(addIcon(104, 2, -35.606689453125, 11.57958984375, 0));
				map.addOverlay(addIcon(105, 2, -46.373291015625, 100.70068359375, 0));
				map.addOverlay(addIcon(106, 2, -45.626220703125, 77.84912109375, 0));
				map.addOverlay(addIcon(107, 2, -40.880126953125, 75.47607421875, 0));
				map.addOverlay(addIcon(108, 2, -40.748291015625, 66.357421875, 0));
				map.addOverlay(addIcon(109, 2, -34.156494140625, 56.00830078125, 0));
				map.addOverlay(addIcon(110, 2, -30.728759765625, 72.9931640625, 0));
				map.addOverlay(addIcon(111, 2, -30.6298828125, 90.703125, 0));
				map.addOverlay(addIcon(112, 2, -36.397705078125, 36.14501953125, 0));
				map.addOverlay(addIcon(113, 2, -45.06591796875, 45.9228515625, 0));
				map.addOverlay(addIcon(114, 2, -42.440185546875, 23.66455078125, 0));
				map.addOverlay(addIcon(115, 2, -51.96533203125, 38.56201171875, 0));
				map.addOverlay(addIcon(116, 2, -21.4013671875, 21.62109375, 0));
				map.addOverlay(addIcon(117, 2, -32.01416015625, 26.16943359375, 0));
				map.addOverlay(addIcon(118, 2, -28.14697265625, 13.9306640625, 0));
				map.addOverlay(addIcon(119, 2, -22.7197265625, -3.427734375, 0));
				map.addOverlay(addIcon(120, 2, -20.93994140625, -22.69775390625, 0));
				map.addOverlay(addIcon(121, 2, -30.487060546875, -32.0361328125, 0));
				map.addOverlay(addIcon(122, 2, -39.627685546875, -30.47607421875, 0));
				map.addOverlay(addIcon(123, 2, -26.8505859375, -51.6357421875, 0));
				map.addOverlay(addIcon(124, 2, -32.4755859375, -66.9287109375, 0));
				map.addOverlay(addIcon(125, 2, -28.1689453125, -89.384765625, 0));
				map.addOverlay(addIcon(126, 2, -23.04931640625, -74.4873046875, 0));
				map.addOverlay(addIcon(127, 2, -19.918212890625, -45.50537109375, 0));
				map.addOverlay(addIcon(128, 2, -16.072998046875, -54.931640625, 0));
				map.addOverlay(addIcon(129, 2, -9.0966796875, -47.6806640625, 0));
				map.addOverlay(addIcon(130, 2, -8.37158203125, -60.5126953125, 0));
				map.addOverlay(addIcon(131, 2, -1.73583984375, -51.9873046875, 0));
				map.addOverlay(addIcon(132, 2, 12.48046875, -53.96484375, 0));
				map.addOverlay(addIcon(133, 2, 3.22998046875, -81.123046875, 0));
				map.addOverlay(addIcon(134, 2, 12.7001953125, -91.8017578125, 0));
				map.addOverlay(addIcon(135, 2, 51.756591796875, -52.66845703125, 0));
				map.addOverlay(addIcon(136, 2, 47.076416015625, -30.47607421875, 0));
				map.addOverlay(addIcon(137, 2, 55.579833984375, -13.20556640625, 0));
				map.addOverlay(addIcon(138, 2, 56.93115234375, -31.83837890625, 0));
				map.addOverlay(addIcon(139, 2, 66.55517578125, -15.05126953125, 0));
				map.addOverlay(addIcon(140, 2, 65.885009765625, -35.83740234375, 0));
				map.addOverlay(addIcon(141, 2, -15.369873046875, -27.26806640625, 0));
				map.addOverlay(addIcon(142, 2, -3.44970703125, -37.37548828125, 0));
				map.addOverlay(addIcon(143, 2, -5.635986328125, -26.52099609375, 0));
				map.addOverlay(addIcon(144, 2, -15.809326171875, -8.02001953125, 0));
				map.addOverlay(addIcon(145, 2, -15.787353515625, 16.3037109375, 0));
				map.addOverlay(addIcon(146, 2, -5.51513671875, 12.72216796875, 0));
				map.addOverlay(addIcon(147, 2, -9.33837890625, 2.35107421875, 0));
				map.addOverlay(addIcon(148, 2, -2.823486328125, -7.646484375, 0));
				map.addOverlay(addIcon(149, 2, 4.669189453125, -8.63525390625, 0));
				map.addOverlay(addIcon(150, 2, 9.898681640625, -24.45556640625, 0));
				map.addOverlay(addIcon(151, 2, 22.203369140625, 22.0166015625, 0));
				map.addOverlay(addIcon(152, 2, 28.67431640625, 6.6796875, 0));
				map.addOverlay(addIcon(153, 2, 28.828125, 23.97216796875, 0));
				map.addOverlay(addIcon(154, 2, 27.79541015625, 38.1884765625, 0));
				map.addOverlay(addIcon(155, 2, 25.224609375, 71.455078125, 0));
				map.addOverlay(addIcon(156, 2, 29.81689453125, 87.6708984375, 0));
				map.addOverlay(addIcon(157, 2, 32.4755859375, 76.97021484375, 0));
				map.addOverlay(addIcon(158, 2, 36.903076171875, 61.34765625, 0));
				map.addOverlay(addIcon(159, 2, 45.340576171875, 85.6494140625, 0));
				map.addOverlay(addIcon(160, 2, 54.7119140625, 65.93994140625, 0));
				map.addOverlay(addIcon(161, 2, 47.021484375, 53.7890625, 0));
				map.addOverlay(addIcon(162, 2, 38.287353515625, 42.0556640625, 0));
				map.addOverlay(addIcon(163, 2, 54.86572265625, 18.4130859375, 0));
				map.addOverlay(addIcon(164, 2, 41.63818359375, 25.1806640625, 0));
				map.addOverlay(addIcon(165, 2, 39.6826171875, -6.87744140625, 0));
			break;
			case "cc5":
			break;
			case "cc6":
				map.addOverlay(addIcon(13, 6, 41.627197265625, -2.63671875, 0));
				map.addOverlay(addIcon(14, 6, -21.884765625, -22.17041015625, 0));
				map.addOverlay(addIcon(15, 6, -43.70361328125, 59.150390625, 0));
			break;
			case "cc8":
				map.addOverlay(addIcon(23, 8, 3.856201171875, -64.599609375, 0));
			break;
			case "cc9":
				map.addOverlay(addIcon(1, 9, 63.45703125, -23.90625, 0));
				map.addOverlay(addIcon(2, 9, 39.056396484375, 94.10888671875, 0));
				map.addOverlay(addIcon(3, 9, -32.58544921875, 58.24951171875, 0));
			break;
			case "cc10":
				map.addOverlay(addIcon(4, 10, 58.524169921875, -32.93701171875, 0));
				map.addOverlay(addIcon(5, 10, -1.285400390625, 5.1416015625, 0));
				map.addOverlay(addIcon(6, 10, -60.029296875, -32.54150390625, 0));
			break;
			case "cc12":
				map.addOverlay(addIcon(10, 12, 51.7236328125, -16.5234375, 0));
				map.addOverlay(addIcon(11, 12, -24.071044921875, 11.689453125, 0));
				map.addOverlay(addIcon(12, 12, -62.90771484375, -46.142578125, 0));
			break;
			case "cc13":
				map.addOverlay(addIcon(24, 13, -3.80126953125, -27.0703125, 0));
				map.addOverlay(addIcon(25, 13, -23.895263671875, -27.9931640625, 0));
				map.addOverlay(addIcon(26, 13, -58.919677734375, -17.42431640625, 0));
			break;
			case "cc14":
				map.addOverlay(addIcon(16, 14, 34.8046875, 54.5361328125, 0));
				map.addOverlay(addIcon(17, 14, -36.002197265625, -36.97998046875, 0));
				map.addOverlay(addIcon(18, 14, -31.102294921875, 10.87646484375, 0));
			break;
			case "cc15":
				map.addOverlay(addIcon(22, 15, 21.90673828125, 36.6064453125, 0));
			break;
			case "cc16":
				map.addOverlay(addIcon(7, 16, 57.425537109375, -45.87890625, 0));
				map.addOverlay(addIcon(8, 16, 51.734619140625, 24.45556640625, 0));
				map.addOverlay(addIcon(9, 16, -31.014404296875, -10.34912109375, 0));
			break;
			case "cc17":
				map.addOverlay(addIcon(19, 17, 35.57373046875, 88.76953125, 0));
				map.addOverlay(addIcon(20, 17, 14.227294921875, -71.34521484375, 0));
				map.addOverlay(addIcon(21, 17, -30.5419921875, 70.1806640625, 0));
			break;
			case "cc19":
				map.addOverlay(addIcon(27, 19, 2.197265625, -1.0107421875, 0));
				map.addOverlay(addIcon(28, 19, -12.48046875, -72.92724609375, 0));
				map.addOverlay(addIcon(29, 19, -12.48046875, -72.92724609375, 0));
				map.addOverlay(addIcon(30, 19, -22.39013671875, 39.814453125, 0));
			break;
		}
		}

function load() {

	if (GBrowserIsCompatible()) {
	
		resizeMapDiv();
		
		// add copy right
		var copyright = new GCopyright(1,new GLatLngBounds(new GLatLng(-90, -180),new GLatLng(90, 180)),0,"");
		var copyrightCollection = new GCopyrightCollection("");
		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 CustomProjection(7,imageWraps);
		var pic_customMap = new GMapType(pic_tileLayers, proj, "Pic",{maxResolution:6, minResolution:0, errorMessage:"Data not available"});
		
		// startup the map
		map = new GMap2(document.getElementById("map"),{mapTypes:[pic_customMap]});
		map.addControl(new GLargeMapControl());
		map.addControl(new GMapTypeControl());
		map.addControl(new GOverviewMapControl());
		map.enableDoubleClickZoom();
		map.enableContinuousZoom();
		map.enableScrollWheelZoom();
		map.setCenter(new GLatLng(centreLat, centreLon), initialZoom, pic_customMap);
		
		//console.log("adding icons");
		// add start icons

				
	}
}