//<script language="javascript" type="text/javascript">



function addLoadEvent(func) {
	if (typeof window.onload != 'function') {
		window.onload = func;
	} else {
		var oldonload = window.onload;
		window.onload = function() {
			oldonload();
			func();
		}
	}
}

function addUnloadEvent(func) {
	if (typeof window.onunload != 'function') {
		window.onunload = func;
	} else {
		var oldonunload = window.onunload;
		window.onunload = function() {
			oldonunload();
			func();
		}
	}
}




// defaults that may be changed by the page
taborder = '123456789'.split('');

groupings = new Array();
groupings[5] = { 'id': 5, 'name': 'ABERDEEN', 'latitude': 57.1475, 'longitude': -2.09538, 'icon_id': 5, 'min_zoomlevel': 7, 'max_zoomlevel': 11, 'click_zoomlevel': 12 };
groupings[6] = { 'id': 6, 'name': 'BATH', 'latitude': 51.3814, 'longitude': -2.35748, 'icon_id': 5, 'min_zoomlevel': 7, 'max_zoomlevel': 11, 'click_zoomlevel': 12 };
groupings[7] = { 'id': 7, 'name': 'BELFAST', 'latitude': 54.596, 'longitude': -5.93003, 'icon_id': 5, 'min_zoomlevel': 7, 'max_zoomlevel': 11, 'click_zoomlevel': 12 };
groupings[8] = { 'id': 8, 'name': 'BIRMINGHAM', 'latitude': 52.4829, 'longitude': -1.89362, 'icon_id': 5, 'min_zoomlevel': 7, 'max_zoomlevel': 11, 'click_zoomlevel': 12 };
groupings[9] = { 'id': 9, 'name': 'BLACKBURN', 'latitude': 53.75, 'longitude': -2.4846, 'icon_id': 5, 'min_zoomlevel': 7, 'max_zoomlevel': 11, 'click_zoomlevel': 12 };
groupings[10] = { 'id': 10, 'name': 'BLACKPOOL', 'latitude': 53.8142, 'longitude': -3.05351, 'icon_id': 5, 'min_zoomlevel': 7, 'max_zoomlevel': 11, 'click_zoomlevel': 12 };
groupings[11] = { 'id': 11, 'name': 'BOLTON', 'latitude': 53.5785, 'longitude': -2.42991, 'icon_id': 5, 'min_zoomlevel': 7, 'max_zoomlevel': 11, 'click_zoomlevel': 12 };
groupings[12] = { 'id': 12, 'name': 'BOURNEMOUTH', 'latitude': 50.7178, 'longitude': -1.87943, 'icon_id': 5, 'min_zoomlevel': 7, 'max_zoomlevel': 11, 'click_zoomlevel': 12 };
groupings[13] = { 'id': 13, 'name': 'BRADFORD', 'latitude': 53.7938, 'longitude': -1.75246, 'icon_id': 5, 'min_zoomlevel': 7, 'max_zoomlevel': 11, 'click_zoomlevel': 12 };
groupings[14] = { 'id': 14, 'name': 'BRIGHTON', 'latitude': 50.8207, 'longitude': -0.139901, 'icon_id': 5, 'min_zoomlevel': 7, 'max_zoomlevel': 11, 'click_zoomlevel': 12 };
groupings[15] = { 'id': 15, 'name': 'BRISTOL', 'latitude': 51.4553, 'longitude': -2.5919, 'icon_id': 5, 'min_zoomlevel': 7, 'max_zoomlevel': 11, 'click_zoomlevel': 12 };
groupings[16] = { 'id': 16, 'name': 'BROMLEY', 'latitude': 51.4057, 'longitude': 0.01435, 'icon_id': 5, 'min_zoomlevel': 7, 'max_zoomlevel': 11, 'click_zoomlevel': 12 };
groupings[17] = { 'id': 17, 'name': 'CAMBRIDGE', 'latitude': 52.2025, 'longitude': 0.131236, 'icon_id': 5, 'min_zoomlevel': 7, 'max_zoomlevel': 11, 'click_zoomlevel': 12 };
groupings[18] = { 'id': 18, 'name': 'CANTERBURY', 'latitude': 51.2773, 'longitude': 1.08052, 'icon_id': 5, 'min_zoomlevel': 7, 'max_zoomlevel': 11, 'click_zoomlevel': 12 };
groupings[19] = { 'id': 19, 'name': 'CARDIFF', 'latitude': 51.4813, 'longitude': -3.18051, 'icon_id': 5, 'min_zoomlevel': 7, 'max_zoomlevel': 11, 'click_zoomlevel': 12 };
groupings[20] = { 'id': 20, 'name': 'CARLISLE', 'latitude': 54.8951, 'longitude': -2.93356, 'icon_id': 5, 'min_zoomlevel': 7, 'max_zoomlevel': 11, 'click_zoomlevel': 12 };
groupings[21] = { 'id': 21, 'name': 'CHELMSFORD', 'latitude': 51.7358, 'longitude': 0.469708, 'icon_id': 5, 'min_zoomlevel': 7, 'max_zoomlevel': 11, 'click_zoomlevel': 12 };
groupings[22] = { 'id': 22, 'name': 'CHESTER', 'latitude': 53.1915, 'longitude': -2.89501, 'icon_id': 5, 'min_zoomlevel': 7, 'max_zoomlevel': 11, 'click_zoomlevel': 12 };
groupings[23] = { 'id': 23, 'name': 'CLEVELAND', 'latitude': 54.3755, 'longitude': -1.24615, 'icon_id': 5, 'min_zoomlevel': 7, 'max_zoomlevel': 11, 'click_zoomlevel': 12 };
groupings[24] = { 'id': 24, 'name': 'COLCHESTER', 'latitude': 51.8898, 'longitude': 0.901236, 'icon_id': 5, 'min_zoomlevel': 7, 'max_zoomlevel': 11, 'click_zoomlevel': 12 };
groupings[25] = { 'id': 25, 'name': 'COVENTRY', 'latitude': 52.4058, 'longitude': -1.51263, 'icon_id': 5, 'min_zoomlevel': 7, 'max_zoomlevel': 11, 'click_zoomlevel': 12 };
groupings[26] = { 'id': 26, 'name': 'CREWE', 'latitude': 53.0951, 'longitude': -2.44177, 'icon_id': 5, 'min_zoomlevel': 7, 'max_zoomlevel': 11, 'click_zoomlevel': 12 };
groupings[27] = { 'id': 27, 'name': 'CROYDON', 'latitude': 51.3724, 'longitude': -0.100402, 'icon_id': 5, 'min_zoomlevel': 7, 'max_zoomlevel': 11, 'click_zoomlevel': 12 };
groupings[28] = { 'id': 28, 'name': 'DARLINGTON', 'latitude': 54.5287, 'longitude': -1.55305, 'icon_id': 5, 'min_zoomlevel': 7, 'max_zoomlevel': 11, 'click_zoomlevel': 12 };
groupings[29] = { 'id': 29, 'name': 'DARTFORD', 'latitude': 51.4439, 'longitude': 0.219727, 'icon_id': 5, 'min_zoomlevel': 7, 'max_zoomlevel': 11, 'click_zoomlevel': 12 };
groupings[30] = { 'id': 30, 'name': 'DERBY', 'latitude': 52.9219, 'longitude': -1.47564, 'icon_id': 5, 'min_zoomlevel': 7, 'max_zoomlevel': 11, 'click_zoomlevel': 12 };
groupings[31] = { 'id': 31, 'name': 'DONCASTER', 'latitude': 53.523, 'longitude': -1.13376, 'icon_id': 5, 'min_zoomlevel': 7, 'max_zoomlevel': 11, 'click_zoomlevel': 12 };
groupings[32] = { 'id': 32, 'name': 'DORCHESTER', 'latitude': 53.0981, 'longitude': -2.4437, 'icon_id': 5, 'min_zoomlevel': 7, 'max_zoomlevel': 11, 'click_zoomlevel': 12 };
groupings[33] = { 'id': 33, 'name': 'DUDLEY', 'latitude': 52.5087, 'longitude': -2.08734, 'icon_id': 5, 'min_zoomlevel': 7, 'max_zoomlevel': 11, 'click_zoomlevel': 12 };
groupings[34] = { 'id': 34, 'name': 'DUMFRIES', 'latitude': 55.0688, 'longitude': -3.60862, 'icon_id': 5, 'min_zoomlevel': 7, 'max_zoomlevel': 11, 'click_zoomlevel': 12 };
groupings[35] = { 'id': 35, 'name': 'DUNDEE', 'latitude': 56.4614, 'longitude': -2.96811, 'icon_id': 5, 'min_zoomlevel': 7, 'max_zoomlevel': 11, 'click_zoomlevel': 12 };
groupings[36] = { 'id': 36, 'name': 'DURHAM', 'latitude': 54.7787, 'longitude': -1.55961, 'icon_id': 5, 'min_zoomlevel': 7, 'max_zoomlevel': 11, 'click_zoomlevel': 12 };
groupings[37] = { 'id': 37, 'name': 'EDINBURGH', 'latitude': 55.9502, 'longitude': -3.18753, 'icon_id': 5, 'min_zoomlevel': 7, 'max_zoomlevel': 11, 'click_zoomlevel': 12 };
groupings[38] = { 'id': 38, 'name': 'ENFIELD', 'latitude': 51.6521, 'longitude': -0.081532, 'icon_id': 5, 'min_zoomlevel': 7, 'max_zoomlevel': 11, 'click_zoomlevel': 12 };
groupings[39] = { 'id': 39, 'name': 'EXETER', 'latitude': 50.7219, 'longitude': -3.53345, 'icon_id': 5, 'min_zoomlevel': 7, 'max_zoomlevel': 11, 'click_zoomlevel': 12 };
groupings[40] = { 'id': 40, 'name': 'FALKIRK', 'latitude': 56.0007, 'longitude': -3.78436, 'icon_id': 5, 'min_zoomlevel': 7, 'max_zoomlevel': 11, 'click_zoomlevel': 12 };
groupings[41] = { 'id': 41, 'name': 'GALASHIELS', 'latitude': 55.6165, 'longitude': -2.80504, 'icon_id': 5, 'min_zoomlevel': 7, 'max_zoomlevel': 11, 'click_zoomlevel': 12 };
groupings[42] = { 'id': 42, 'name': 'GLASGOW', 'latitude': 55.8656, 'longitude': -4.25722, 'icon_id': 5, 'min_zoomlevel': 7, 'max_zoomlevel': 11, 'click_zoomlevel': 12 };
groupings[43] = { 'id': 43, 'name': 'GLOUCESTER', 'latitude': 51.8672, 'longitude': -2.24066, 'icon_id': 5, 'min_zoomlevel': 7, 'max_zoomlevel': 11, 'click_zoomlevel': 12 };
groupings[44] = { 'id': 44, 'name': 'GUERNSEY', 'latitude': 49.4646, 'longitude': -2.58713, 'icon_id': 5, 'min_zoomlevel': 7, 'max_zoomlevel': 11, 'click_zoomlevel': 12 };
groupings[45] = { 'id': 45, 'name': 'GUILDFORD', 'latitude': 51.2365, 'longitude': -0.570305, 'icon_id': 5, 'min_zoomlevel': 7, 'max_zoomlevel': 11, 'click_zoomlevel': 12 };
groupings[46] = { 'id': 46, 'name': 'HALIFAX', 'latitude': 53.7244, 'longitude': -1.86158, 'icon_id': 5, 'min_zoomlevel': 7, 'max_zoomlevel': 11, 'click_zoomlevel': 12 };
groupings[47] = { 'id': 47, 'name': 'HARROGATE', 'latitude': 53.9906, 'longitude': -1.53911, 'icon_id': 5, 'min_zoomlevel': 7, 'max_zoomlevel': 11, 'click_zoomlevel': 12 };
groupings[48] = { 'id': 48, 'name': 'HARROW', 'latitude': 51.5789, 'longitude': -0.333853, 'icon_id': 5, 'min_zoomlevel': 7, 'max_zoomlevel': 11, 'click_zoomlevel': 12 };
groupings[49] = { 'id': 49, 'name': 'HEMEL HEMPSTEAD', 'latitude': 51.7537, 'longitude': -0.474799, 'icon_id': 5, 'min_zoomlevel': 7, 'max_zoomlevel': 11, 'click_zoomlevel': 12 };
groupings[50] = { 'id': 50, 'name': 'HEREFORD', 'latitude': 52.056, 'longitude': -2.71755, 'icon_id': 5, 'min_zoomlevel': 7, 'max_zoomlevel': 11, 'click_zoomlevel': 12 };
groupings[51] = { 'id': 51, 'name': 'HUDDERSFIELD', 'latitude': 53.6451, 'longitude': -1.78488, 'icon_id': 5, 'min_zoomlevel': 7, 'max_zoomlevel': 11, 'click_zoomlevel': 12 };
groupings[52] = { 'id': 52, 'name': 'HULL', 'latitude': 53.7443, 'longitude': -0.332442, 'icon_id': 5, 'min_zoomlevel': 7, 'max_zoomlevel': 11, 'click_zoomlevel': 12 };
groupings[53] = { 'id': 53, 'name': 'ILFORD', 'latitude': 51.5577, 'longitude': 0.070101, 'icon_id': 5, 'min_zoomlevel': 7, 'max_zoomlevel': 11, 'click_zoomlevel': 12 };
groupings[54] = { 'id': 54, 'name': 'INVERNESS', 'latitude': 57.4767, 'longitude': -4.23145, 'icon_id': 5, 'min_zoomlevel': 7, 'max_zoomlevel': 11, 'click_zoomlevel': 12 };
groupings[55] = { 'id': 55, 'name': 'IPSWICH', 'latitude': 52.0582, 'longitude': 1.1563, 'icon_id': 5, 'min_zoomlevel': 7, 'max_zoomlevel': 11, 'click_zoomlevel': 12 };
groupings[56] = { 'id': 56, 'name': 'ISLE OF MAN', 'latitude': 53.0981, 'longitude': -2.4437, 'icon_id': 5, 'min_zoomlevel': 7, 'max_zoomlevel': 11, 'click_zoomlevel': 12 };
groupings[57] = { 'id': 57, 'name': 'JERSEY', 'latitude': 53.0981, 'longitude': -2.4437, 'icon_id': 5, 'min_zoomlevel': 7, 'max_zoomlevel': 11, 'click_zoomlevel': 12 };
groupings[58] = { 'id': 58, 'name': 'KILMARNOCK', 'latitude': 55.61, 'longitude': -4.49922, 'icon_id': 5, 'min_zoomlevel': 7, 'max_zoomlevel': 11, 'click_zoomlevel': 12 };
groupings[59] = { 'id': 59, 'name': 'KINGSTON UPON THAMES', 'latitude': 51.4123, 'longitude': -0.300444, 'icon_id': 5, 'min_zoomlevel': 7, 'max_zoomlevel': 11, 'click_zoomlevel': 12 };
groupings[60] = { 'id': 60, 'name': 'KIRKALDY', 'latitude': 52.5915, 'longitude': 1.73479, 'icon_id': 5, 'min_zoomlevel': 7, 'max_zoomlevel': 11, 'click_zoomlevel': 12 };
groupings[61] = { 'id': 61, 'name': 'KIRKWALL', 'latitude': 53.0981, 'longitude': -2.4437, 'icon_id': 5, 'min_zoomlevel': 7, 'max_zoomlevel': 11, 'click_zoomlevel': 12 };
groupings[62] = { 'id': 62, 'name': 'LANCASTER', 'latitude': 54.0496, 'longitude': -2.79843, 'icon_id': 5, 'min_zoomlevel': 7, 'max_zoomlevel': 11, 'click_zoomlevel': 12 };
groupings[63] = { 'id': 63, 'name': 'LEEDS', 'latitude': 53.7996, 'longitude': -1.54911, 'icon_id': 5, 'min_zoomlevel': 7, 'max_zoomlevel': 11, 'click_zoomlevel': 12 };
groupings[64] = { 'id': 64, 'name': 'LEICESTER', 'latitude': 52.6342, 'longitude': -1.12913, 'icon_id': 5, 'min_zoomlevel': 7, 'max_zoomlevel': 11, 'click_zoomlevel': 12 };
groupings[65] = { 'id': 65, 'name': 'LERWICK', 'latitude': 53.0981, 'longitude': -2.4437, 'icon_id': 5, 'min_zoomlevel': 7, 'max_zoomlevel': 11, 'click_zoomlevel': 12 };
groupings[66] = { 'id': 66, 'name': 'LINCOLN', 'latitude': 53.6635, 'longitude': -1.40601, 'icon_id': 5, 'min_zoomlevel': 7, 'max_zoomlevel': 11, 'click_zoomlevel': 12 };
groupings[67] = { 'id': 67, 'name': 'LIVERPOOL', 'latitude': 53.4109, 'longitude': -2.97747, 'icon_id': 5, 'min_zoomlevel': 7, 'max_zoomlevel': 11, 'click_zoomlevel': 12 };
groupings[68] = { 'id': 68, 'name': 'LLANDRINDOD WELLS', 'latitude': 52.2412, 'longitude': -3.38073, 'icon_id': 5, 'min_zoomlevel': 7, 'max_zoomlevel': 11, 'click_zoomlevel': 12 };
groupings[69] = { 'id': 69, 'name': 'LLANDUDNO', 'latitude': 53.3266, 'longitude': -3.83446, 'icon_id': 5, 'min_zoomlevel': 7, 'max_zoomlevel': 11, 'click_zoomlevel': 12 };
groupings[70] = { 'id': 70, 'name': 'LONDON', 'latitude': 51.5002, 'longitude': -0.126197, 'icon_id': 6, 'min_zoomlevel': 7, 'max_zoomlevel': 11, 'click_zoomlevel': 12 };
groupings[71] = { 'id': 71, 'name': 'LUTON', 'latitude': 51.8797, 'longitude': -0.41756, 'icon_id': 5, 'min_zoomlevel': 7, 'max_zoomlevel': 11, 'click_zoomlevel': 12 };
groupings[72] = { 'id': 72, 'name': 'MANCHESTER', 'latitude': 53.4807, 'longitude': -2.23451, 'icon_id': 5, 'min_zoomlevel': 7, 'max_zoomlevel': 11, 'click_zoomlevel': 12 };
groupings[73] = { 'id': 73, 'name': 'MEDWAY', 'latitude': 53.0981, 'longitude': -2.4437, 'icon_id': 5, 'min_zoomlevel': 7, 'max_zoomlevel': 11, 'click_zoomlevel': 12 };
groupings[74] = { 'id': 74, 'name': 'MILTON KEYNES', 'latitude': 52.0415, 'longitude': -0.760468, 'icon_id': 5, 'min_zoomlevel': 7, 'max_zoomlevel': 11, 'click_zoomlevel': 12 };
groupings[75] = { 'id': 75, 'name': 'MOTHERWELL', 'latitude': 55.7891, 'longitude': -3.99546, 'icon_id': 5, 'min_zoomlevel': 7, 'max_zoomlevel': 11, 'click_zoomlevel': 12 };
groupings[76] = { 'id': 76, 'name': 'NEWCASTLE UPON TYNE', 'latitude': 54.9778, 'longitude': -1.61323, 'icon_id': 5, 'min_zoomlevel': 7, 'max_zoomlevel': 11, 'click_zoomlevel': 12 };
groupings[77] = { 'id': 77, 'name': 'NEWPORT', 'latitude': 51.5877, 'longitude': -2.99834, 'icon_id': 5, 'min_zoomlevel': 7, 'max_zoomlevel': 11, 'click_zoomlevel': 12 };
groupings[78] = { 'id': 78, 'name': 'NORTHAMPTON', 'latitude': 52.2369, 'longitude': -0.897391, 'icon_id': 5, 'min_zoomlevel': 7, 'max_zoomlevel': 11, 'click_zoomlevel': 12 };
groupings[79] = { 'id': 79, 'name': 'NORWICH', 'latitude': 52.6281, 'longitude': 1.29935, 'icon_id': 5, 'min_zoomlevel': 7, 'max_zoomlevel': 11, 'click_zoomlevel': 12 };
groupings[80] = { 'id': 80, 'name': 'NOTTINGHAM', 'latitude': 52.9551, 'longitude': -1.1493, 'icon_id': 5, 'min_zoomlevel': 7, 'max_zoomlevel': 11, 'click_zoomlevel': 12 };
groupings[81] = { 'id': 81, 'name': 'OLDHAM', 'latitude': 53.5413, 'longitude': -2.11766, 'icon_id': 5, 'min_zoomlevel': 7, 'max_zoomlevel': 11, 'click_zoomlevel': 12 };
groupings[82] = { 'id': 82, 'name': 'OXFORD', 'latitude': 51.7523, 'longitude': -1.25586, 'icon_id': 5, 'min_zoomlevel': 7, 'max_zoomlevel': 11, 'click_zoomlevel': 12 };
groupings[83] = { 'id': 83, 'name': 'PAISLEY', 'latitude': 55.8454, 'longitude': -4.4236, 'icon_id': 5, 'min_zoomlevel': 7, 'max_zoomlevel': 11, 'click_zoomlevel': 12 };
groupings[84] = { 'id': 84, 'name': 'PERTH', 'latitude': 56.3953, 'longitude': -3.43466, 'icon_id': 5, 'min_zoomlevel': 7, 'max_zoomlevel': 11, 'click_zoomlevel': 12 };
groupings[85] = { 'id': 85, 'name': 'PETERBOROUGH', 'latitude': 52.5703, 'longitude': -0.243755, 'icon_id': 5, 'min_zoomlevel': 7, 'max_zoomlevel': 11, 'click_zoomlevel': 12 };
groupings[86] = { 'id': 86, 'name': 'PLYMOUTH', 'latitude': 50.3704, 'longitude': -4.14265, 'icon_id': 5, 'min_zoomlevel': 7, 'max_zoomlevel': 11, 'click_zoomlevel': 12 };
groupings[87] = { 'id': 87, 'name': 'PORTSMOUTH', 'latitude': 50.7894, 'longitude': -1.0826, 'icon_id': 5, 'min_zoomlevel': 7, 'max_zoomlevel': 11, 'click_zoomlevel': 12 };
groupings[88] = { 'id': 88, 'name': 'PRESTON', 'latitude': 53.7577, 'longitude': -2.70345, 'icon_id': 5, 'min_zoomlevel': 7, 'max_zoomlevel': 11, 'click_zoomlevel': 12 };
groupings[89] = { 'id': 89, 'name': 'READING', 'latitude': 51.455, 'longitude': -0.969177, 'icon_id': 5, 'min_zoomlevel': 7, 'max_zoomlevel': 11, 'click_zoomlevel': 12 };
groupings[90] = { 'id': 90, 'name': 'REDHILL', 'latitude': 51.2408, 'longitude': -0.170087, 'icon_id': 5, 'min_zoomlevel': 7, 'max_zoomlevel': 11, 'click_zoomlevel': 12 };
groupings[91] = { 'id': 91, 'name': 'ROMFORD', 'latitude': 51.5742, 'longitude': 0.183871, 'icon_id': 5, 'min_zoomlevel': 7, 'max_zoomlevel': 11, 'click_zoomlevel': 12 };
groupings[92] = { 'id': 92, 'name': 'SALISBURY', 'latitude': 51.0674, 'longitude': -1.79771, 'icon_id': 5, 'min_zoomlevel': 7, 'max_zoomlevel': 11, 'click_zoomlevel': 12 };
groupings[93] = { 'id': 93, 'name': 'SHEFFIELD', 'latitude': 53.383, 'longitude': -1.46481, 'icon_id': 5, 'min_zoomlevel': 7, 'max_zoomlevel': 11, 'click_zoomlevel': 12 };
groupings[94] = { 'id': 94, 'name': 'SHREWSBURY', 'latitude': 52.8779, 'longitude': -2.63267, 'icon_id': 5, 'min_zoomlevel': 7, 'max_zoomlevel': 11, 'click_zoomlevel': 12 };
groupings[95] = { 'id': 95, 'name': 'SLOUGH', 'latitude': 51.5093, 'longitude': -0.595448, 'icon_id': 5, 'min_zoomlevel': 7, 'max_zoomlevel': 11, 'click_zoomlevel': 12 };
groupings[96] = { 'id': 96, 'name': 'SOUTHALL', 'latitude': 51.511, 'longitude': -0.37408, 'icon_id': 5, 'min_zoomlevel': 7, 'max_zoomlevel': 11, 'click_zoomlevel': 12 };
groupings[97] = { 'id': 97, 'name': 'SOUTHAMPTON', 'latitude': 50.8997, 'longitude': -1.39506, 'icon_id': 5, 'min_zoomlevel': 7, 'max_zoomlevel': 11, 'click_zoomlevel': 12 };
groupings[98] = { 'id': 98, 'name': 'SOUTHEND-ON-SEA', 'latitude': 51.535, 'longitude': 0.71855, 'icon_id': 5, 'min_zoomlevel': 7, 'max_zoomlevel': 11, 'click_zoomlevel': 12 };
groupings[99] = { 'id': 99, 'name': 'ST. ALBANS', 'latitude': 51.7522, 'longitude': -0.33867, 'icon_id': 5, 'min_zoomlevel': 7, 'max_zoomlevel': 11, 'click_zoomlevel': 12 };
groupings[100] = { 'id': 100, 'name': 'STEVENAGE', 'latitude': 51.8904, 'longitude': -0.108941, 'icon_id': 5, 'min_zoomlevel': 7, 'max_zoomlevel': 11, 'click_zoomlevel': 12 };
groupings[101] = { 'id': 101, 'name': 'STOCKPORT', 'latitude': 53.4085, 'longitude': -2.14929, 'icon_id': 5, 'min_zoomlevel': 7, 'max_zoomlevel': 11, 'click_zoomlevel': 12 };
groupings[102] = { 'id': 102, 'name': 'STOKE ON TRENT', 'latitude': 53.0044, 'longitude': -2.18027, 'icon_id': 5, 'min_zoomlevel': 7, 'max_zoomlevel': 11, 'click_zoomlevel': 12 };
groupings[103] = { 'id': 103, 'name': 'SUNDERLAND', 'latitude': 54.9044, 'longitude': -1.38145, 'icon_id': 5, 'min_zoomlevel': 7, 'max_zoomlevel': 11, 'click_zoomlevel': 12 };
groupings[104] = { 'id': 104, 'name': 'SUTTON', 'latitude': 51.3604, 'longitude': -0.191728, 'icon_id': 5, 'min_zoomlevel': 7, 'max_zoomlevel': 11, 'click_zoomlevel': 12 };
groupings[105] = { 'id': 105, 'name': 'SWINDON', 'latitude': 51.5614, 'longitude': -1.76577, 'icon_id': 5, 'min_zoomlevel': 7, 'max_zoomlevel': 11, 'click_zoomlevel': 12 };
groupings[106] = { 'id': 106, 'name': 'TAUNTON', 'latitude': 51.0147, 'longitude': -3.10345, 'icon_id': 5, 'min_zoomlevel': 7, 'max_zoomlevel': 11, 'click_zoomlevel': 12 };
groupings[107] = { 'id': 107, 'name': 'TELFORD', 'latitude': 52.6777, 'longitude': -2.44929, 'icon_id': 5, 'min_zoomlevel': 7, 'max_zoomlevel': 11, 'click_zoomlevel': 12 };
groupings[108] = { 'id': 108, 'name': 'TORQUAY', 'latitude': 50.4682, 'longitude': -3.53223, 'icon_id': 5, 'min_zoomlevel': 7, 'max_zoomlevel': 11, 'click_zoomlevel': 12 };
groupings[109] = { 'id': 109, 'name': 'TRURO', 'latitude': 50.263, 'longitude': -5.0507, 'icon_id': 5, 'min_zoomlevel': 7, 'max_zoomlevel': 11, 'click_zoomlevel': 12 };
groupings[110] = { 'id': 110, 'name': 'TUNBRIDGE WELLS', 'latitude': 51.1324, 'longitude': 0.263315, 'icon_id': 5, 'min_zoomlevel': 7, 'max_zoomlevel': 11, 'click_zoomlevel': 12 };
groupings[111] = { 'id': 111, 'name': 'TWICKENHAM', 'latitude': 51.4456, 'longitude': -0.329751, 'icon_id': 5, 'min_zoomlevel': 7, 'max_zoomlevel': 11, 'click_zoomlevel': 12 };
groupings[112] = { 'id': 112, 'name': 'WAKEFIELD', 'latitude': 53.683, 'longitude': -1.4991, 'icon_id': 5, 'min_zoomlevel': 7, 'max_zoomlevel': 11, 'click_zoomlevel': 12 };
groupings[113] = { 'id': 113, 'name': 'WALSALL', 'latitude': 52.5859, 'longitude': -1.98228, 'icon_id': 5, 'min_zoomlevel': 7, 'max_zoomlevel': 11, 'click_zoomlevel': 12 };
groupings[114] = { 'id': 114, 'name': 'WARRINGTON', 'latitude': 53.3926, 'longitude': -2.58699, 'icon_id': 5, 'min_zoomlevel': 7, 'max_zoomlevel': 11, 'click_zoomlevel': 12 };
groupings[115] = { 'id': 115, 'name': 'WATFORD', 'latitude': 51.6811, 'longitude': -0.345293, 'icon_id': 5, 'min_zoomlevel': 7, 'max_zoomlevel': 11, 'click_zoomlevel': 12 };
groupings[116] = { 'id': 116, 'name': 'WIGAN', 'latitude': 53.5443, 'longitude': -2.63106, 'icon_id': 5, 'min_zoomlevel': 7, 'max_zoomlevel': 11, 'click_zoomlevel': 12 };
groupings[117] = { 'id': 117, 'name': 'WOLVERHAMPTON', 'latitude': 52.5857, 'longitude': -2.12928, 'icon_id': 5, 'min_zoomlevel': 7, 'max_zoomlevel': 11, 'click_zoomlevel': 12 };
icons = new Array();
icons[1] = { 'id': 1, 'url': '/img/icons/label-colour.png', 'width': 12, 'height': 12, 'shadow_url': null, 'shadow_width': 0, 'shadow_height': 0 };
icons[2] = { 'id': 2, 'url': '/img/icons/label-image.png', 'width': 12, 'height': 12, 'shadow_url': null, 'shadow_width': 0, 'shadow_height': 0 };
icons[3] = { 'id': 3, 'url': '/img/icons/label-portfolio.png', 'width': 12, 'height': 12, 'shadow_url': null, 'shadow_width': 0, 'shadow_height': 0 };
icons[4] = { 'id': 4, 'url': '/img/icons/label-pro.png', 'width': 12, 'height': 12, 'shadow_url': null, 'shadow_width': 0, 'shadow_height': 0 };
icons[5] = { 'id': 5, 'url': '/img/icons/label-town.png', 'width': 12, 'height': 12, 'shadow_url': null, 'shadow_width': 0, 'shadow_height': 0 };
icons[6] = { 'id': 6, 'url': '/img/icons/label-city.png', 'width': 20, 'height': 20, 'shadow_url': null, 'shadow_width': 0, 'shadow_height': 0 };
icons[7] = { 'id': 7, 'url': '/img/icons/label-colourUncovered.png', 'width': 12, 'height': 12, 'shadow_url': null, 'shadow_width': 0, 'shadow_height': 0 };
location_types = new Array();
location_types[1] = { 'id': 1, 'name': 'colour', 'icon_id': 1 };
location_types[2] = { 'id': 2, 'name': 'image', 'icon_id': 2 };
location_types[3] = { 'id': 3, 'name': 'portfolio', 'icon_id': 3 };
location_types[4] = { 'id': 4, 'name': 'pro', 'icon_id': 4 };
location_types[5] = { 'id': 5, 'name': 'colouruncovered', 'icon_id': 7 };

var locations = [];

var showRepair = true;
var showStore = true;

var highlightRepair = false;
var highlightStore = false;

function initialize_map(latitude, longitude, zoom) {
	if (GBrowserIsCompatible()) {
				GM = new GMap2(document.getElementById("map"));
		GM.setCenter(new GLatLng(latitude, longitude), zoom);

				GM.enableDoubleClickZoom();
		
				GM.enableContinuousZoom();
				

				GM.addControl(new GLargeMapControl());
		GM.addControl(new GMapTypeControl());
		GM.addControl(new GScaleControl());

		//GMMgr = new GMarkerManager(GM, { borderPadding : 0 } );
		GMMgr = new SMarkerManager(GM);

		// ====== Restricting the range of Zoom Levels =====
 	    // Get the list of map types      
 	    var mt = GM.getMapTypes();
	    // Overwrite the getMinimumResolution() and getMaximumResolution() methods
	    for (var i=0; i<mt.length; i++) {
	    					mt[i].getMinimumResolution = function() {return 5;}
				    		    }

				for (var iconid in icons) {
			var icon = icons[iconid];
			var gi = new GIcon();
			gi.image = icon.url;
			gi.iconSize = new GSize(icon.width, icon.height);
			if (icon.shadow_url != null) {
				gi.shadow = icon.shadow_url;
				gi.shadowSize = new GSize(icon.shadow_width, icon.shadow_height);
			}
			gi.iconAnchor = new GPoint(icon.width / 2, icon.height / 2);
			gi.infoWindowAnchor = new GPoint(icon.width / 2, 0);
			icon.gicon = gi;
		}

								for (var grpid in groupings) {
				var grp = groupings[grpid];
				grp.glatlng = new GLatLng(grp.latitude, grp.longitude);
				grp.gmarker = new GMarker(grp.glatlng, {
					'icon': icons[grp.icon_id].gicon,
					'title': grp.name });
				GEvent.addListener(grp.gmarker, "click", curryFunction(function(mygrp) {
					GM.setZoom(mygrp.click_zoomlevel);
					GM.panTo(mygrp.glatlng);
				}, grp));
				GMMgr.addMarker(grp.gmarker, grp.min_zoomlevel, grp.max_zoomlevel);
			}
		
		GEvent.addListener(GM, 'moveend', requestLocations);
		
		requestLocations(); 
		addUnloadEvent(GUnload);
		addUnloadEvent(GMMgr.unload);
		
	} else {
        var header = 'Sorry, this map cannot be displayed.';
        var main   = 'Your browser does not support features required to run the map application.';
        if (document.getElementById) {
            var html = '<h1>' + header + '</h1>';
            html +=    '<p>' + main + '</p>';
            document.getElementById('map').innerHTML = html;
        } else {
            alert(header + '\n' + main);
        }
    }
	
}

function curryFunction() {
	var curriedArgs = [];
	var f = arguments[0];
	for (var i = 1; i < arguments.length; i++) {
		curriedArgs[curriedArgs.length] = arguments[i];
	}
	return function() {
		var newArgs = new Array();
		for (var i = 0; i < curriedArgs.length; i++) {
			newArgs[newArgs.length] = curriedArgs[i];
		}
		for (var i = 0; i < arguments.length; i++) {
			newArgs[newArgs.length] = arguments[i];
		}
		return f.apply(null, newArgs);
	}
}

function createTabs(id) {
	GDownloadUrl("data.php?call=getLocationTabs&q=" + Math.random() + "&id=" + id, function(data, responseCode) {
		//alert(data);
		var xml = GXml.parse(data);
		var tabs = xml.documentElement.getElementsByTagName("tab");
		infoTabs = new Array();
		for (i=0;i < tabs.length;i++) {
		    try {
		        sText = tabs[i].childNodes[0].nodeValue;
		    } catch (e) {
		        sText = '';
		    }
		    infoTabs[i] = new GInfoWindowTab(tabs[i].getAttribute("title"), sText);
		}
				var orderedTabs = new Array();
		for (i = 0; i < taborder.length; i++) {
			var tabnumber = taborder[i] - 1; 			if (tabnumber < infoTabs.length) {
				orderedTabs[orderedTabs.length] = infoTabs[tabnumber];
			}
		}
		
		openInfoWindowTabs(locations[id].gmarker, orderedTabs);
    });
}

function openInfoWindowTabs(gmarker, tabs) {
		try {
		gmarker.openInfoWindowTabs(tabs);
	}
	catch (Exception) {
		window.setTimeout(curryFunction(openInfoWindowTabs, gmarker, tabs), 1);
	}
}

function doPan(id) {
	if (id != '') {
		GM.setZoom(14);
		GM.panTo(locations[id].glatlng);
		        setTimeout(curryFunction(createTabs, id), 1);
	}
}

function doPanGrouping(grouping_id) {
	if (grouping_id != '') {
		var g = groupings[grouping_id];
		GM.setZoom(g.click_zoomlevel);
		GM.panTo(g.glatlng);
	}
}

var previous_locations_request = { 'z':0, 'n':0, 'e':0, 's':0, 'w':0 }

function requestLocations() {
	var p = previous_locations_request;
	var bounds = GM.getBounds();
	var ne = bounds.getNorthEast();
	var sw = bounds.getSouthWest();

	var z = GM.getZoom();
	var n = ne.lat();
	var e = ne.lng();
	var s = sw.lat();
	var w = sw.lng();
	
	var url = "data.php?call=getLocations&r=" + Math.random() + 
	 "&z=" + z + "&n=" + n + "&e=" + e + "&s=" + s + "&w=" + w +
	 "&pz=" + p.z + "&pn=" + p.n + "&pe=" + p.e + "&ps=" + p.s + "&pw=" + p.w;
	GDownloadUrl(url, receiveLocations);
	
	p.z = z;
	p.n = n;
	p.e = e;
	p.s = s;
	p.w = w;
}

function receiveLocations(data, responseCode) {
	//alert(data);
	var xml = GXml.parse(data);
	var newLocations = xml.documentElement.getElementsByTagName('l');
	var newMarkers = []; 	for (var i = 0; i < newLocations.length; i++) {
		var l = newLocations[i];
		addLocation(
			l.getAttribute('id'),
			l.getAttribute('n'),
			l.getAttribute('lat'),
			l.getAttribute('lng'),
			l.getAttribute('z'),
			l.getAttribute('t') );
	}
}

function addLocation(id, name, latitude, longitude, zoomlevel, location_type_id) {
	if (typeof(locations[id]) != 'undefined') {
		return; 	}
	var l = {
		'id': id,
		'name': name,
		'latitude': latitude,
		'longitude': longitude,
		'zoomlevel': zoomlevel,
		'location_type_id': location_type_id
	};
	locations[id] = l;
	l.type = location_types[location_type_id];
	l.glatlng = new GLatLng(latitude, longitude);
	l.gmarker = new GMarker(l.glatlng, {
		'icon': icons[l.type.icon_id].gicon,
		'title': l.name });
	GEvent.addListener(l.gmarker, 'click', curryFunction(function(l) {
		createTabs(l.id);
	 }, l));
		GMMgr.addMarker(l.gmarker, zoomlevel);
	
}

function showPrintWindow(id) {
	var center = GM.getCenter();
	var zoom = GM.getZoom();
	// PREVIOUS window.open("map-print.php?printstore=" + id + "&lat=" + center.lat() + "&lng=" + center.lng() + "&zoom=" + zoom, "print");
	window.open("map-print.php?printstore=" + id + "&lat=" + center.lat() + "&lng=" + center.lng() + "&zoom=" + zoom, "print");
}

function waitSearch(path){
	path.value = "searching...";
}

//</script>
