var map;

function SawdaysMap(mapContainer, area_id) 
{
	var me = this;
	me.container = mapContainer;
	me.gmap = null;
	me.mgr = null;
	if (GBrowserIsCompatible()) 
	{	
		me.status("Map setup", 10);
		me.gmap = new GMap2(document.getElementById(this.container));
		me.gmap.addControl(new GLargeMapControl());
		me.gmap.addControl(new GMapTypeControl());
		me.gmap.addControl(new GScaleControl());
		me.gmap.addControl(new GOverviewMapControl());        

		var mapState = new Cookie("mapstate");// read cookies
		if(area_id) // if initial position set from URL
		{
			var location= locations[area_id];
			if(!location){
				location={lat:0, lng:0, zoom:1 };
			}
			this.gmap.setCenter(new GLatLng(location.lat, location.lng), location.zoom);			
		}
		else if(mapState.lat && mapState.lng && mapState.zoom){ //if previous visit this session		
			me.gmap.setCenter(new GLatLng(mapState.lat, mapState.lng), parseInt(mapState.zoom));
		}
		else{ // default to world view
			me.gmap.setCenter(new GLatLng(0, 0), 1);
		}


		if(mapState.andfilter != undefined && mapState.orfilter != undefined){
			me.setFilters(mapState.andfilter, mapState.orfilter);
		    me.markerManager = new FilteredMarkerManager(me.gmap, {andFilter:mapState.andfilter, orFilter:mapState.orfilter});
		}else{
			me.setFilters(0, 127);
			me.markerManager = new FilteredMarkerManager(me.gmap, {andFilter:0, orFilter:127});
		}

		GEvent.addListener(this.gmap, 'moveend', function()
			{
				me.mapMoved(me.gmap.getBounds(), me.gmap.getZoom());
			});
	}
}

SawdaysMap.prototype.changeLocation = function(area_id)
{
	var location= locations[area_id];
	if(!location){
		location={lat:0, lng:0, zoom:1 };
	}
	this.gmap.setCenter(new GLatLng(location.lat, location.lng), location.zoom);
}

SawdaysMap.prototype.filterChange = function(element)
{
	var filters = this.calcFilter();
	this.markerManager.filterChanged(filters.andFilter, filters.orFilter);
}

SawdaysMap.prototype.status = function(message, barPercent)
{
	var messageElement = document.getElementById('statusMessage');
	var barElement = document.getElementById('progress_cover');
	messageElement.innerHTML = message;
	barElement.style.width = Math.floor(barPercent*152/100)+'px';
}

SawdaysMap.prototype.calcFilter = function()
{
	var priceElement = document.filter.maxprice;
	var andFilter = Math.pow(2, 6);
	if(priceElement.value)
	{
		andFilter = Math.pow(2, priceElement.value-1);
	}	

	var facilitiesElement = document.filter.facilities;
	for(var i=0; i<facilitiesElement.length; i++)
	{
		if(facilitiesElement[i].checked)
		{
			andFilter += Math.pow(2, 7+i);
		}	
	}
	
	var orFilter = 0;
	var propTypeElement = document.filter.proptype;
	for(var i=0; i<propTypeElement.length; i++)
	{
		if(propTypeElement[i].checked)
		{
			elementValue = parseInt(propTypeElement[i].value)-1;
			orFilter += Math.pow(2, elementValue);
		}	
	}
	filters = {andFilter:andFilter, orFilter:orFilter};
	return filters;
}


SawdaysMap.prototype.setFilters = function(andFilter, orFilter)
{
	var priceFilter = andFilter & 127;
	var pricePos = Math.round(Math.LOG2E * Math.log(priceFilter));
	var priceElement = document.filter.maxprice;
	priceElement.selectedIndex = pricePos+1;
	
	andFilter = (andFilter-priceFilter)/128;
	var facilitiesElement = document.filter.facilities;
	for(var i=0; i<facilitiesElement.length; i++)
	{
		if(andFilter & 1 == 1)
		{
			facilitiesElement[i].checked = true;
		}
		else
		{
			facilitiesElement[i].checked = false;
		}
		andFilter /= 2;
	}
	
	var propTypeElement = document.filter.proptype;
	for(var i=0; i<propTypeElement.length; i++)
	{
		if(orFilter & 1 == 1)
		{
			propTypeElement[i].checked = true;
		}
		else
		{
			propTypeElement[i].checked = false;
		}
		orFilter /= 2;
	}
}


SawdaysMap.prototype.mapMoved = function(bounds, zoom)
{
	map.status("Requesting information", 0);
	var params = '?' + "action=location";
	var centre = map.gmap.getCenter();
	params += '&lat='+centre.lat() + '&lng='+centre.lng();
	params += '&zoom='+zoom;
	var request = GXmlHttp.create();
	request.open('GET', '/maps/php/mapajax.php'+params, true);

	//tell the request what to do when the state changes.
	request.onreadystatechange = function() 
	{
		if (request.readyState == 4) 
		{
			map.status("Updating information", 30);
			var xmlDoc = request.responseXML;
			var mapdata = xmlDoc.documentElement;
			var aboutElements = mapdata.getElementsByTagName('about');
			if(aboutElements[0] && aboutElements[0].firstChild)
			{
				var aboutElement = document.getElementById('locationInfo');
				var about = aboutElements[0].firstChild.nodeValue;
				aboutElement.innerHTML = about;
			}
			
			map.status("Updating information", 50);
			var menuElements = mapdata.getElementsByTagName('menu');
			if(menuElements[0] && menuElements[0].firstChild)
			{
					var menuElement = document.getElementById('vertmenu');
					var menu_html = menuElements[0].firstChild.nodeValue;
					menuElement.innerHTML = menu_html;
			}

			map.status("Updating information", 80);
			var crumbElements = mapdata.getElementsByTagName('crumb');
			if(crumbElements[0] && crumbElements[0].firstChild)
			{
					var crumbElement = document.getElementById('crumbtrail');
					var crumb_html = crumbElements[0].firstChild.nodeValue;
					crumbElement.innerHTML = crumb_html;
			}
			map.status("Done", 100);
		}	
	} //function	
	request.send(null);
}


var locations = new Array()
locations[1] = {lat:34.0472, lng:-4.99559, zoom:9};
locations[2] = {lat:33.9661, lng:-5.28271, zoom:9};
locations[3] = {lat:33.8932, lng:-5.56507, zoom:9};
locations[4] = {lat:31.6299, lng:-7.9944, zoom:9};
locations[5] = {lat:31.6309, lng:-7.99671, zoom:9};
locations[6] = {lat:31.3536, lng:-7.99805, zoom:9};
locations[7] = {lat:31.6723, lng:-7.83961, zoom:9};
locations[8] = {lat:30.1845, lng:-9.58832, zoom:9};
locations[9] = {lat:33.0658, lng:-8.68156, zoom:9};
locations[10] = {lat:31.486, lng:-9.76752, zoom:9};
locations[11] = {lat:35.5983, lng:-5.90085, zoom:9};
locations[12] = {lat:35.5762, lng:-5.36844, zoom:9};
locations[13] = {lat:29.6322, lng:-9.89372, zoom:9};
locations[14] = {lat:35.5762, lng:-5.36844, zoom:9};
locations[15] = {lat:31.1156, lng:-4.01568, zoom:9};
locations[16] = {lat:31.1229, lng:-7.3198, zoom:9};
locations[17] = {lat:30.4739, lng:-8.8664, zoom:9};
locations[18] = {lat:30.4516, lng:-8.88451, zoom:9};
locations[19] = {lat:30.2729, lng:-5.74726, zoom:9};
locations[20] = {lat:49.7206, lng:-2.19226, zoom:9};
locations[21] = {lat:49.4426, lng:-2.50909, zoom:9};
locations[22] = {lat:49.4304, lng:-2.36172, zoom:9};
locations[23] = {lat:51.3634, lng:-2.37926, zoom:9};
locations[24] = {lat:52.119, lng:-0.243759, zoom:9};
locations[25] = {lat:51.4592, lng:-1.05349, zoom:9};
locations[26] = {lat:52.4312, lng:-1.94814, zoom:9};
locations[27] = {lat:50.823, lng:-0.144999, zoom:9};
locations[28] = {lat:51.4312, lng:-2.59968, zoom:9};
locations[29] = {lat:51.7657, lng:-0.776026, zoom:9};
locations[30] = {lat:52.2858, lng:0.146462, zoom:9};
locations[31] = {lat:53.1883, lng:-2.62181, zoom:9};
locations[32] = {lat:54.4961, lng:-1.34063, zoom:9};
locations[33] = {lat:50.318, lng:-4.97585, zoom:9};
locations[34] = {lat:54.5077, lng:-2.8805, zoom:9};
locations[35] = {lat:52.8716, lng:-3.54105, zoom:9};
locations[36] = {lat:50.6632, lng:-3.73434, zoom:9};
locations[37] = {lat:50.8283, lng:-2.39145, zoom:9};
locations[38] = {lat:54.5796, lng:-1.83208, zoom:9};
locations[39] = {lat:51.8637, lng:0.853579, zoom:9};
locations[40] = {lat:51.8359, lng:-2.00712, zoom:9};
locations[41] = {lat:50.9827, lng:-1.31014, zoom:9};
locations[42] = {lat:52.0543, lng:-2.88475, zoom:9};
locations[43] = {lat:51.8667, lng:-0.116178, zoom:9};
locations[44] = {lat:50.6435, lng:-1.23208, zoom:9};
locations[45] = {lat:51.2053, lng:0.910244, zoom:9};
locations[46] = {lat:53.8873, lng:-2.60499, zoom:9};
locations[47] = {lat:52.6055, lng:-1.07684, zoom:9};
locations[48] = {lat:53.0501, lng:-0.479208, zoom:9};
locations[49] = {lat:53.4193, lng:-2.97262, zoom:9};
locations[50] = {lat:51.4962, lng:-0.164124, zoom:9};
locations[51] = {lat:51.4204, lng:-0.339255, zoom:9};
locations[52] = {lat:51.9976, lng:-1.99927, zoom:9};
locations[53] = {lat:52.7822, lng:1.02167, zoom:9};
locations[54] = {lat:52.3291, lng:-0.907632, zoom:9};
locations[55] = {lat:55.3113, lng:-1.93696, zoom:9};
locations[56] = {lat:53.0709, lng:-0.99834, zoom:9};
locations[57] = {lat:51.7974, lng:-1.4051, zoom:9};
locations[58] = {lat:52.6774, lng:-0.592332, zoom:9};
locations[59] = {lat:52.5327, lng:-2.81243, zoom:9};
locations[60] = {lat:51.1252, lng:-2.82817, zoom:9};
locations[61] = {lat:53.0588, lng:-1.89805, zoom:9};
locations[62] = {lat:52.1721, lng:1.1908, zoom:9};
locations[63] = {lat:51.2005, lng:-0.523031, zoom:9};
locations[64] = {lat:50.9351, lng:0.0229274, zoom:9};
locations[65] = {lat:52.1879, lng:-1.63746, zoom:9};
locations[66] = {lat:51.3369, lng:-2.045, zoom:9};
locations[67] = {lat:52.171, lng:-2.27675, zoom:9};
locations[68] = {lat:54.1428, lng:-1.38921, zoom:9};
locations[69] = {lat:57.3097, lng:-2.62648, zoom:9};
locations[70] = {lat:56.7581, lng:-2.81655, zoom:9};
locations[71] = {lat:56.6476, lng:-5.87663, zoom:9};
locations[72] = {lat:56.3513, lng:-5.63595, zoom:9};
locations[73] = {lat:55.5265, lng:-4.67765, zoom:9};
locations[74] = {lat:57.4898, lng:-3.18477, zoom:9};
locations[75] = {lat:55.827, lng:-2.16627, zoom:9};
locations[76] = {lat:56.1494, lng:-3.64734, zoom:9};
locations[77] = {lat:54.9668, lng:-3.9199, zoom:9};
locations[78] = {lat:56.0024, lng:-4.39701, zoom:9};
locations[79] = {lat:55.9698, lng:-2.63254, zoom:9};
locations[80] = {lat:55.9542, lng:-3.20301, zoom:9};
locations[81] = {lat:56.2885, lng:-2.90851, zoom:9};
locations[82] = {lat:55.8713, lng:-4.29179, zoom:9};
locations[83] = {lat:57.3684, lng:-5.1707, zoom:9};
locations[84] = {lat:57.1787, lng:-2.65282, zoom:9};
locations[85] = {lat:55.6946, lng:-5.32585, zoom:9};
locations[86] = {lat:57.7727, lng:-7.02809, zoom:9};
locations[87] = {lat:56.5756, lng:-6.047, zoom:9};
locations[88] = {lat:57.4367, lng:-6.31279, zoom:9};
locations[89] = {lat:55.873, lng:-3.28228, zoom:9};
locations[90] = {lat:57.5427, lng:-3.45652, zoom:9};
locations[91] = {lat:56.5204, lng:-3.86622, zoom:9};
locations[92] = {lat:56.5275, lng:-3.84128, zoom:9};
locations[93] = {lat:57.605, lng:-4.25816, zoom:9};
locations[94] = {lat:55.6016, lng:-2.76566, zoom:9};
locations[95] = {lat:55.6194, lng:-3.57382, zoom:9};
locations[96] = {lat:56.1206, lng:-4.22598, zoom:9};
locations[97] = {lat:56.7123, lng:-5.30515, zoom:9};
locations[98] = {lat:55.8881, lng:-3.42871, zoom:9};
locations[99] = {lat:57.7427, lng:-7.02297, zoom:9};
locations[100] = {lat:53.2877, lng:-4.26591, zoom:9};
locations[101] = {lat:51.4852, lng:-3.19473, zoom:9};
locations[102] = {lat:51.8973, lng:-4.14506, zoom:9};
locations[103] = {lat:52.1948, lng:-4.24905, zoom:9};
locations[104] = {lat:53.1613, lng:-3.76495, zoom:9};
locations[105] = {lat:53.0663, lng:-3.28095, zoom:9};
locations[106] = {lat:52.082, lng:-3.79749, zoom:9};
locations[107] = {lat:53.2219, lng:-3.28134, zoom:9};
locations[108] = {lat:51.5954, lng:-4.21151, zoom:9};
locations[109] = {lat:52.8824, lng:-4.0732, zoom:9};
locations[110] = {lat:51.784, lng:-2.88925, zoom:9};
locations[111] = {lat:51.8131, lng:-4.95217, zoom:9};
locations[112] = {lat:52.2296, lng:-3.33971, zoom:9};
locations[113] = {lat:51.5906, lng:-4.16246, zoom:9};
locations[114] = {lat:51.4765, lng:-3.47879, zoom:9};
locations[115] = {lat:52.966, lng:-3.04634, zoom:9};
locations[116] = {lat:48.4744, lng:7.56005, zoom:9};
locations[117] = {lat:48.0373, lng:7.25375, zoom:9};
locations[118] = {lat:45.0041, lng:0.739808, zoom:9};
locations[119] = {lat:44.8665, lng:-0.324675, zoom:9};
locations[120] = {lat:43.8111, lng:-0.802515, zoom:9};
locations[121] = {lat:44.4344, lng:0.511493, zoom:9};
locations[122] = {lat:43.3622, lng:-0.998967, zoom:9};
locations[123] = {lat:46.5188, lng:3.13123, zoom:9};
locations[124] = {lat:45.0677, lng:2.72476, zoom:9};
locations[125] = {lat:45.2655, lng:3.76368, zoom:9};
locations[126] = {lat:45.6426, lng:3.35523, zoom:9};
locations[127] = {lat:48.5527, lng:-2.8378, zoom:9};
locations[128] = {lat:48.2863, lng:-3.94194, zoom:9};
locations[129] = {lat:48.3082, lng:-1.65245, zoom:9};
locations[130] = {lat:47.7583, lng:-2.95575, zoom:9};
locations[131] = {lat:47.1716, lng:4.79818, zoom:9};
locations[132] = {lat:47.1704, lng:3.6227, zoom:9};
locations[133] = {lat:46.5467, lng:4.75061, zoom:9};
locations[134] = {lat:47.7077, lng:3.78826, zoom:9};
locations[135] = {lat:49.3399, lng:4.86557, zoom:9};
locations[136] = {lat:48.2983, lng:4.16658, zoom:9};
locations[137] = {lat:48.1011, lng:5.15806, zoom:9};
locations[138] = {lat:48.9866, lng:3.90922, zoom:9};
locations[139] = {lat:47.4288, lng:5.81139, zoom:9};
locations[140] = {lat:46.8269, lng:5.61635, zoom:9};
locations[141] = {lat:43.1752, lng:2.31617, zoom:9};
locations[142] = {lat:44.0149, lng:4.31527, zoom:9};
locations[143] = {lat:43.5427, lng:3.40794, zoom:9};
locations[144] = {lat:44.323, lng:3.68525, zoom:9};
locations[145] = {lat:42.5609, lng:2.66821, zoom:9};
locations[146] = {lat:45.0936, lng:1.83035, zoom:9};
locations[147] = {lat:46.0185, lng:1.80608, zoom:9};
locations[148] = {lat:45.8552, lng:1.29349, zoom:9};
locations[149] = {lat:47.1103, lng:2.45909, zoom:9};
locations[150] = {lat:48.5033, lng:1.46833, zoom:9};
locations[151] = {lat:46.7518, lng:1.57426, zoom:9};
locations[152] = {lat:47.2658, lng:0.709255, zoom:9};
locations[153] = {lat:47.5213, lng:1.29136, zoom:9};
locations[154] = {lat:47.7677, lng:2.19933, zoom:9};
locations[155] = {lat:49.2076, lng:5.74599, zoom:9};
locations[156] = {lat:49.0844, lng:5.19937, zoom:9};
locations[157] = {lat:49.1309, lng:6.44397, zoom:9};
locations[158] = {lat:48.0437, lng:6.87075, zoom:9};
locations[159] = {lat:43.0413, lng:1.5615, zoom:9};
locations[160] = {lat:44.4259, lng:2.47666, zoom:9};
locations[161] = {lat:43.7226, lng:0.404236, zoom:9};
locations[162] = {lat:43.3683, lng:1.29773, zoom:9};
locations[163] = {lat:43.0977, lng:0.21329, zoom:9};
locations[164] = {lat:44.6383, lng:1.46476, zoom:9};
locations[165] = {lat:43.8543, lng:2.04802, zoom:9};
locations[166] = {lat:44.1255, lng:1.27462, zoom:9};
locations[167] = {lat:49.21, lng:-0.286646, zoom:9};
locations[168] = {lat:49.1793, lng:1.02766, zoom:9};
locations[169] = {lat:49.1525, lng:-1.42803, zoom:9};
locations[170] = {lat:48.5633, lng:0.27024, zoom:9};
locations[171] = {lat:49.7024, lng:1.10264, zoom:9};
locations[172] = {lat:48.5668, lng:2.03432, zoom:9};
locations[173] = {lat:48.8255, lng:2.26379, zoom:9};
locations[174] = {lat:48.8573, lng:2.33344, zoom:9};
locations[175] = {lat:48.6773, lng:2.90736, zoom:9};
locations[176] = {lat:49.0746, lng:2.02678, zoom:9};
locations[177] = {lat:48.8137, lng:2.44986, zoom:9};
locations[178] = {lat:48.8138, lng:1.95044, zoom:9};
locations[179] = {lat:49.5248, lng:3.51744, zoom:9};
locations[180] = {lat:49.3017, lng:2.2928, zoom:9};
locations[181] = {lat:50.0118, lng:2.11146, zoom:9};
locations[182] = {lat:45.6993, lng:0.0846274, zoom:9};
locations[183] = {lat:45.8915, lng:-0.757714, zoom:9};
locations[184] = {lat:46.3992, lng:-0.308322, zoom:9};
locations[185] = {lat:46.7213, lng:0.507515, zoom:9};
locations[186] = {lat:44.001, lng:5.9996, zoom:9};
locations[187] = {lat:43.6843, lng:7.14899, zoom:9};
locations[188] = {lat:43.6688, lng:4.98393, zoom:9};
locations[189] = {lat:44.7935, lng:6.45365, zoom:9};
locations[190] = {lat:43.5588, lng:6.1068, zoom:9};
locations[191] = {lat:43.9957, lng:5.11497, zoom:9};
locations[192] = {lat:46.2226, lng:5.01526, zoom:9};
locations[193] = {lat:44.7166, lng:4.39419, zoom:9};
locations[194] = {lat:44.5878, lng:5.01928, zoom:9};
locations[195] = {lat:45.9949, lng:6.6378, zoom:9};
locations[196] = {lat:45.3703, lng:5.45515, zoom:9};
locations[197] = {lat:45.9157, lng:4.00713, zoom:9};
locations[198] = {lat:46.0041, lng:4.63867, zoom:9};
locations[199] = {lat:45.5749, lng:6.60815, zoom:9};
locations[200] = {lat:50.579, lng:3.26482, zoom:9};
locations[201] = {lat:50.5884, lng:2.05504, zoom:9};
locations[202] = {lat:47.2746, lng:-1.70488, zoom:9};
locations[203] = {lat:47.3788, lng:-0.340913, zoom:9};
locations[204] = {lat:48.0199, lng:-0.63118, zoom:9};
locations[205] = {lat:47.9067, lng:0.217864, zoom:9};
locations[206] = {lat:46.6793, lng:-1.18067, zoom:9};
locations[207] = {lat:53.3588, lng:-9.58176, zoom:9};
locations[208] = {lat:54.4306, lng:-8.23402, zoom:9};
locations[209] = {lat:53.8077, lng:-9.51765, zoom:9};
locations[210] = {lat:53.87, lng:-8.39421, zoom:9};
locations[211] = {lat:54.1141, lng:-8.47116, zoom:9};
locations[212] = {lat:52.8808, lng:-6.69503, zoom:9};
locations[213] = {lat:53.3491, lng:-6.17796, zoom:9};
locations[214] = {lat:53.2161, lng:-6.82383, zoom:9};
locations[215] = {lat:52.5507, lng:-7.19913, zoom:9};
locations[216] = {lat:53.0008, lng:-7.4764, zoom:9};
locations[217] = {lat:53.7233, lng:-7.77675, zoom:9};
locations[218] = {lat:54.0395, lng:-6.18419, zoom:9};
locations[219] = {lat:53.672, lng:-6.58991, zoom:9};
locations[220] = {lat:53.5572, lng:-7.45849, zoom:9};
locations[221] = {lat:52.3321, lng:-6.64639, zoom:9};
locations[222] = {lat:52.9484, lng:-6.21074, zoom:9};
locations[223] = {lat:52.9558, lng:-9.109, zoom:9};
locations[224] = {lat:51.6938, lng:-9.02373, zoom:9};
locations[225] = {lat:51.9964, lng:-9.86962, zoom:9};
locations[226] = {lat:52.553, lng:-8.7428, zoom:9};
locations[227] = {lat:52.886, lng:-8.07796, zoom:9};
locations[228] = {lat:52.1558, lng:-7.49445, zoom:9};
locations[229] = {lat:55.0702, lng:-6.22078, zoom:9};
locations[230] = {lat:54.4615, lng:-6.26018, zoom:9};
locations[231] = {lat:54.8172, lng:-7.92631, zoom:9};
locations[232] = {lat:54.465, lng:-5.80246, zoom:9};
locations[233] = {lat:54.2873, lng:-7.77983, zoom:9};
locations[234] = {lat:54.8956, lng:-7.00928, zoom:9};
locations[235] = {lat:54.1428, lng:-7.23793, zoom:9};
locations[236] = {lat:54.4683, lng:-6.71904, zoom:9};
locations[237] = {lat:45.815, lng:6.96155, zoom:9};
locations[238] = {lat:40.4544, lng:16.6705, zoom:9};
locations[239] = {lat:40.0012, lng:15.7, zoom:9};
locations[240] = {lat:39.6796, lng:16.4139, zoom:9};
locations[241] = {lat:41.1505, lng:14.5046, zoom:9};
locations[242] = {lat:41.1087, lng:14.206, zoom:9};
locations[243] = {lat:40.7743, lng:14.3808, zoom:9};
locations[244] = {lat:40.4852, lng:14.8429, zoom:9};
locations[245] = {lat:44.3529, lng:11.2139, zoom:9};
locations[246] = {lat:44.0406, lng:12.3001, zoom:9};
locations[247] = {lat:44.8647, lng:9.92573, zoom:9};
locations[248] = {lat:44.7955, lng:9.99546, zoom:9};
locations[249] = {lat:44.2627, lng:11.7772, zoom:9};
locations[250] = {lat:44.4255, lng:10.4418, zoom:9};
locations[251] = {lat:45.9414, lng:13.6266, zoom:9};
locations[252] = {lat:45.8338, lng:12.5741, zoom:9};
locations[253] = {lat:46.0197, lng:13.253, zoom:9};
locations[254] = {lat:41.37, lng:13.2282, zoom:9};
locations[255] = {lat:42.3479, lng:12.6334, zoom:9};
locations[256] = {lat:41.9149, lng:12.4849, zoom:9};
locations[257] = {lat:42.6573, lng:12.0389, zoom:9};
locations[258] = {lat:44.2964, lng:9.3407, zoom:9};
locations[259] = {lat:43.8502, lng:7.74605, zoom:9};
locations[260] = {lat:44.1742, lng:9.63288, zoom:9};
locations[261] = {lat:44.1657, lng:8.26712, zoom:9};
locations[262] = {lat:45.7113, lng:9.49522, zoom:9};
locations[263] = {lat:45.6299, lng:10.5982, zoom:9};
locations[264] = {lat:46.0102, lng:9.22686, zoom:9};
locations[265] = {lat:45.9287, lng:9.32679, zoom:9};
locations[266] = {lat:45.4673, lng:9.18487, zoom:9};
locations[267] = {lat:45.2495, lng:10.7096, zoom:9};
locations[268] = {lat:45.8931, lng:8.59551, zoom:9};
locations[269] = {lat:43.6997, lng:13.0918, zoom:9};
locations[270] = {lat:42.9986, lng:13.6623, zoom:9};
locations[271] = {lat:43.1148, lng:13.5783, zoom:9};
locations[272] = {lat:43.142, lng:13.3128, zoom:9};
locations[273] = {lat:43.7669, lng:12.8819, zoom:9};
locations[274] = {lat:43.6497, lng:12.7563, zoom:9};
locations[275] = {lat:41.4859, lng:14.0436, zoom:9};
locations[276] = {lat:44.7483, lng:8.63767, zoom:9};
locations[277] = {lat:44.8199, lng:8.26736, zoom:9};
locations[278] = {lat:45.5808, lng:8.00704, zoom:9};
locations[279] = {lat:44.5799, lng:7.97333, zoom:9};
locations[280] = {lat:45.6574, lng:8.60366, zoom:9};
locations[281] = {lat:45.1061, lng:7.82425, zoom:9};
locations[282] = {lat:41.0797, lng:16.6276, zoom:9};
locations[283] = {lat:40.7263, lng:17.5144, zoom:9};
locations[284] = {lat:41.9404, lng:16.0065, zoom:9};
locations[285] = {lat:39.9967, lng:18.3083, zoom:9};
locations[286] = {lat:40.5863, lng:17.0647, zoom:9};
locations[287] = {lat:40.2735, lng:9.40407, zoom:9};
locations[288] = {lat:40.2966, lng:8.50197, zoom:9};
locations[289] = {lat:40.9101, lng:9.0724, zoom:9};
locations[290] = {lat:37.2797, lng:13.6224, zoom:9};
locations[291] = {lat:37.4216, lng:13.941, zoom:9};
locations[292] = {lat:37.6323, lng:15.0889, zoom:9};
locations[293] = {lat:38.0988, lng:15.1599, zoom:9};
locations[294] = {lat:38.0512, lng:13.5286, zoom:9};
locations[295] = {lat:36.8383, lng:14.7927, zoom:9};
locations[296] = {lat:36.9274, lng:15.1376, zoom:9};
locations[297] = {lat:37.9586, lng:12.6753, zoom:9};
locations[298] = {lat:46.4614, lng:11.407, zoom:9};
locations[299] = {lat:46.2245, lng:10.8262, zoom:9};
locations[300] = {lat:43.441, lng:11.8761, zoom:9};
locations[301] = {lat:43.7455, lng:11.269, zoom:9};
locations[302] = {lat:42.8176, lng:11.1813, zoom:9};
locations[303] = {lat:43.214, lng:10.598, zoom:9};
locations[304] = {lat:43.8876, lng:10.4804, zoom:9};
locations[305] = {lat:44.2525, lng:10.0281, zoom:9};
locations[306] = {lat:43.5513, lng:10.6099, zoom:9};
locations[307] = {lat:43.9206, lng:10.7906, zoom:9};
locations[308] = {lat:43.2891, lng:11.4335, zoom:9};
locations[309] = {lat:43.4404, lng:12.129, zoom:9};
locations[310] = {lat:43.0759, lng:12.4335, zoom:9};
locations[311] = {lat:42.6703, lng:12.261, zoom:9};
locations[312] = {lat:45.4489, lng:11.9016, zoom:9};
locations[313] = {lat:45.0433, lng:11.9879, zoom:9};
locations[314] = {lat:45.7826, lng:12.2494, zoom:9};
locations[315] = {lat:45.4816, lng:12.2842, zoom:9};
locations[316] = {lat:45.5763, lng:11.5961, zoom:9};
locations[317] = {lat:45.422, lng:11.0308, zoom:9};
locations[318] = {lat:43.7365, lng:7.41592, zoom:9};
locations[319] = {lat:38.8686, lng:-7.5327, zoom:9};
locations[320] = {lat:40.3202, lng:-7.96101, zoom:9};
locations[321] = {lat:38.8151, lng:-9.16265, zoom:9};
locations[322] = {lat:32.6698, lng:-16.9941, zoom:9};
locations[323] = {lat:41.1481, lng:-7.93012, zoom:9};
locations[324] = {lat:41.6334, lng:-8.56084, zoom:9};
locations[325] = {lat:38.0335, lng:-8.18956, zoom:9};
locations[326] = {lat:37.1673, lng:-8.2302, zoom:9};
locations[327] = {lat:37.1706, lng:-2.02031, zoom:9};
locations[328] = {lat:36.3782, lng:-5.77104, zoom:9};
locations[329] = {lat:37.3678, lng:-4.36725, zoom:9};
locations[330] = {lat:37.0271, lng:-3.46986, zoom:9};
locations[331] = {lat:37.8857, lng:-6.63278, zoom:9};
locations[332] = {lat:38.0586, lng:-3.282, zoom:9};
locations[333] = {lat:36.7375, lng:-4.79603, zoom:9};
locations[334] = {lat:37.4262, lng:-5.8979, zoom:9};
locations[335] = {lat:42.5212, lng:-0.211985, zoom:9};
locations[336] = {lat:40.8185, lng:0.0736184, zoom:9};
locations[337] = {lat:42.0086, lng:-1.16124, zoom:9};
locations[338] = {lat:43.3979, lng:-5.46745, zoom:9};
locations[339] = {lat:38.987, lng:1.39057, zoom:9};
locations[340] = {lat:39.6662, lng:2.90918, zoom:9};
locations[341] = {lat:39.8581, lng:4.27509, zoom:9};
locations[342] = {lat:42.5487, lng:-2.66546, zoom:9};
locations[343] = {lat:43.2942, lng:-2.21468, zoom:9};
locations[344] = {lat:43.304, lng:-2.6917, zoom:9};
locations[345] = {lat:27.9993, lng:-15.5816, zoom:9};
locations[346] = {lat:29.0422, lng:-13.6185, zoom:9};
locations[347] = {lat:28.3659, lng:-16.6715, zoom:9};
locations[348] = {lat:43.228, lng:-4.1639, zoom:9};
locations[349] = {lat:40.2261, lng:-5.20379, zoom:9};
locations[350] = {lat:42.9785, lng:-3.63996, zoom:9};
locations[351] = {lat:42.5598, lng:-6.04871, zoom:9};
locations[352] = {lat:40.8111, lng:-5.8086, zoom:9};
locations[353] = {lat:41.0694, lng:-3.83879, zoom:9};
locations[354] = {lat:38.9318, lng:-2.83477, zoom:9};
locations[355] = {lat:38.945, lng:-3.54589, zoom:9};
locations[356] = {lat:40.0793, lng:-2.12919, zoom:9};
locations[357] = {lat:41.1343, lng:-2.66979, zoom:9};
locations[358] = {lat:39.6452, lng:-4.0776, zoom:9};
locations[359] = {lat:41.5361, lng:2.11661, zoom:9};
locations[360] = {lat:42.0966, lng:2.83259, zoom:9};
locations[361] = {lat:41.8988, lng:1.16393, zoom:9};
locations[362] = {lat:41.0713, lng:0.596722, zoom:9};
locations[363] = {lat:39.6386, lng:-6.02774, zoom:9};
locations[364] = {lat:43.138, lng:-8.47589, zoom:9};
locations[365] = {lat:42.6334, lng:-7.55522, zoom:9};
locations[366] = {lat:42.359, lng:-7.44844, zoom:9};
locations[367] = {lat:42.4529, lng:-8.68812, zoom:9};
locations[368] = {lat:42.299, lng:-2.85963, zoom:9};
locations[369] = {lat:40.6337, lng:-3.58843, zoom:9};
locations[370] = {lat:37.6754, lng:-0.733466, zoom:9};
locations[371] = {lat:42.9564, lng:-1.77173, zoom:9};
locations[372] = {lat:38.6857, lng:-0.137858, zoom:9};
locations[373] = {lat:40.0225, lng:-0.299313, zoom:9};
locations[374] = {lat:38.9, lng:-0.65955, zoom:9};
locations[375] = {lat:34.0472, lng:-4.99559, zoom:7};
locations[376] = {lat:33.9661, lng:-5.28271, zoom:7};
locations[377] = {lat:32.3847, lng:-7.18539, zoom:7};
locations[378] = {lat:31.5129, lng:-7.91883, zoom:7};
locations[379] = {lat:32.5905, lng:-8.20007, zoom:7};
locations[380] = {lat:35.5762, lng:-5.36844, zoom:7};
locations[381] = {lat:30.6874, lng:-6.96673, zoom:7};
locations[382] = {lat:49.5312, lng:-2.35436, zoom:7};
locations[383] = {lat:52.2237, lng:-1.45118, zoom:7};
locations[384] = {lat:56.4804, lng:-4.17898, zoom:7};
locations[385] = {lat:52.2959, lng:-3.75831, zoom:7};
locations[386] = {lat:48.2559, lng:7.4069, zoom:7};
locations[387] = {lat:44.2957, lng:-0.174971, zoom:7};
locations[388] = {lat:45.6236, lng:3.24373, zoom:7};
locations[389] = {lat:48.2264, lng:-2.84699, zoom:7};
locations[390] = {lat:47.1491, lng:4.23994, zoom:7};
locations[391] = {lat:48.6815, lng:4.52486, zoom:7};
locations[392] = {lat:47.1279, lng:5.71387, zoom:7};
locations[393] = {lat:43.5233, lng:3.27857, zoom:7};
locations[394] = {lat:45.6558, lng:1.6433, zoom:7};
locations[395] = {lat:47.4867, lng:1.61694, zoom:7};
locations[396] = {lat:48.8667, lng:6.06502, zoom:7};
locations[397] = {lat:43.7842, lng:1.3426, zoom:7};
locations[398] = {lat:49.1615, lng:0.137173, zoom:7};
locations[399] = {lat:48.8041, lng:2.28085, zoom:7};
locations[400] = {lat:49.6128, lng:2.64057, zoom:7};
locations[401] = {lat:46.1778, lng:-0.118473, zoom:7};
locations[402] = {lat:43.9504, lng:5.96799, zoom:7};
locations[403] = {lat:45.5484, lng:5.22195, zoom:7};
locations[404] = {lat:50.5837, lng:2.65993, zoom:7};
locations[405] = {lat:47.4518, lng:-0.727955, zoom:7};
locations[406] = {lat:53.9162, lng:-8.83976, zoom:7};
locations[407] = {lat:53.2064, lng:-6.83989, zoom:7};
locations[408] = {lat:52.3735, lng:-8.71959, zoom:7};
locations[409] = {lat:54.576, lng:-6.86948, zoom:7};
locations[410] = {lat:45.815, lng:6.96155, zoom:7};
locations[411] = {lat:40.2278, lng:16.1853, zoom:7};
locations[412] = {lat:39.6796, lng:16.4139, zoom:7};
locations[413] = {lat:40.8797, lng:14.4836, zoom:7};
locations[414] = {lat:44.457, lng:10.9424, zoom:7};
locations[415] = {lat:45.9316, lng:13.1512, zoom:7};
locations[416] = {lat:42.0725, lng:12.5963, zoom:7};
locations[417] = {lat:44.1216, lng:8.74669, zoom:7};
locations[418] = {lat:45.6986, lng:9.59101, zoom:7};
locations[419] = {lat:43.3953, lng:13.2139, zoom:7};
locations[420] = {lat:41.4859, lng:14.0436, zoom:7};
locations[421] = {lat:45.0821, lng:8.21888, zoom:7};
locations[422] = {lat:40.8659, lng:17.1043, zoom:7};
locations[423] = {lat:40.4934, lng:8.99281, zoom:7};
locations[424] = {lat:37.526, lng:14.2433, zoom:7};
locations[425] = {lat:46.3429, lng:11.1166, zoom:7};
locations[426] = {lat:43.556, lng:11.0396, zoom:7};
locations[427] = {lat:42.8731, lng:12.3472, zoom:7};
locations[428] = {lat:45.4591, lng:11.8417, zoom:7};
locations[429] = {lat:43.7365, lng:7.41592, zoom:7};
locations[430] = {lat:39.3346, lng:-8.21878, zoom:7};
locations[431] = {lat:32.6698, lng:-16.9941, zoom:7};
locations[432] = {lat:41.3908, lng:-8.24548, zoom:7};
locations[433] = {lat:37.6004, lng:-8.20988, zoom:7};
locations[434] = {lat:37.2565, lng:-4.52965, zoom:7};
locations[435] = {lat:41.7828, lng:-0.433203, zoom:7};
locations[436] = {lat:43.3979, lng:-5.46745, zoom:7};
locations[437] = {lat:39.5038, lng:2.85828, zoom:7};
locations[438] = {lat:43.049, lng:-2.52395, zoom:7};
locations[439] = {lat:28.4691, lng:-15.2905, zoom:7};
locations[440] = {lat:43.228, lng:-4.1639, zoom:7};
locations[441] = {lat:41.529, lng:-4.90797, zoom:7};
locations[442] = {lat:39.7471, lng:-3.05145, zoom:7};
locations[443] = {lat:41.6507, lng:1.67746, zoom:7};
locations[444] = {lat:39.6386, lng:-6.02774, zoom:7};
locations[445] = {lat:42.6458, lng:-8.04192, zoom:7};
locations[446] = {lat:42.299, lng:-2.85963, zoom:7};
locations[447] = {lat:40.6337, lng:-3.58843, zoom:7};
locations[448] = {lat:37.6754, lng:-0.733466, zoom:7};
locations[449] = {lat:42.9564, lng:-1.77173, zoom:7};
locations[450] = {lat:39.2028, lng:-0.365574, zoom:7};
locations[451] = {lat:32.9664, lng:-6.55968, zoom:5};
locations[452] = {lat:52.6328, lng:-2.93571, zoom:5};
locations[453] = {lat:46.9984, lng:2.70579, zoom:5};
locations[454] = {lat:53.518, lng:-7.81718, zoom:5};
locations[455] = {lat:42.9454, lng:12.1702, zoom:5};
locations[456] = {lat:43.7365, lng:7.41592, zoom:5};
locations[457] = {lat:37.7489, lng:-10.4171, zoom:5};
locations[458] = {lat:40.2745, lng:-3.48358, zoom:5};
locations[459] = {lat:32.9664, lng:-6.55968, zoom:3};
locations[460] = {lat:45.4078, lng:-0.337373, zoom:3};

