
var map;

var stores = new Array();
stores[0] = { name: 'tReds Barnstaple', address: '64 High Street, Barnstaple, Devon', postcode: 'EX31 1HX', telno: '01271 322858', lat: '51.0808537', lng: '-4.0607142' };
stores[1] = { name: 'tReds Bath', address: '6 Southgate Street, Southgate Park, Bath', postcode: 'BA1 1AQ', telno: '01225 480474', lat: '51.3790449', lng: '-2.3597583' };
stores[2] = { name: 'tReds Bournemouth', address: '58 Old Christchurch Rd, Bournemouth, Dorset', postcode: 'BH1 1LL', telno: '01202 780022', lat: '50.721324', lng: '-1.876259' };
stores[3] = { name: 'tReds Bristol', address: '16 Broadmead, Bristol, Avon', postcode: 'BS1 3HH,', telno: '01179 293129', lat: '51.458593', lng: '-2.587323' };
stores[4] = { name: 'tReds Canterbury', address: '37 High Street, Canterbury', postcode: 'CT1 2RY', telno: '01227 781031', lat: '51.2792790', lng: '1.0795676' };
stores[5] = { name: 'tReds Cardiff', address: '89 Queen Street, Cardiff', postcode: 'CF10 2BG', telno: '02920 231117', lat: '51.4822140', lng: '-3.1748034' };
stores[6] = { name: 'tReds Eastbourne', address: '71/73 Terminus Road, Eastbourne, E.Sussex', postcode: 'BN21 3NJ', telno: '01323 721897', lat: '50.768680', lng: '0.285210' };
stores[7] = { name: 'tReds Exeter', address: 'Unit 4, The Guild Hall Shopping Ctr, Exeter', postcode: 'EX4 3HP,', telno: '01392 277778', lat: '50.721338', lng: '-3.532662' };
stores[8] = { name: 'tReds Gloucester', address: 'Unit 2-4a, Kings Walk, Gloucester', postcode: 'GL1 2DH', telno: '01452 300415', lat: '51.864606', lng: '-2.243179' };
stores[9] = { name: 'tReds Head Office', address: 'tReds LTD, 48 Lynch Lane, Weymouth, Dorset', postcode: 'DT4 9DN', telno: '0845 0521249<br /> Fax: 01305 770554', lat: '50.607142', lng: '-2.489648' };
stores[10] = { name: 'tReds Hereford', address: '61 Commercial Street, Hereford', postcode: 'HR1 2DJ', telno: '01432 270348', lat: '52.057135', lng: '-2.713559' };
stores[11] = { name: 'tReds Maidstone', address: '9 Week Street, Maidstone, Kent', postcode: 'ME14 1QW', telno: '01622 763115', lat: '51.2742271', lng: '0.5230413' };
stores[12] = { name: 'tReds Poole', address: 'Unit 3 Store 11, The Dolphin Centre, Poole, Dorset', postcode: 'BH15 1SP', telno: '01202 666661', lat: '50.718077', lng: '-1.978054' };
stores[13] = { name: 'tReds Portsmouth', address: '199 Commercial Rd, Portsmouth, Hampshire', postcode: 'PO1 1EA', telno: '02392 833283', lat: '50.802029', lng: '-1.088848' };
stores[14] = { name: 'tReds Salisbury', address: '29 Butchers Row, Salisbury, Wiltshire', postcode: 'SP1 1EP', telno: '01722 321320', lat: '51.068909', lng: '-1.795406' };
stores[15] = { name: 'tReds Swindon', address: 'Unit 3a, 55-61 Regent Street, Swindon', postcode: 'SN1 1JS', telno: '01793 431449', lat: '51.559700', lng: '-1.783304' };
stores[16] = { name: 'tReds Taunton', address: '17 East Street, Taunton, Somerset', postcode: 'TA1 3LP', telno: '01823 324477', lat: '51.015037', lng: '-3.099754' };
stores[17] = { name: 'tReds Torquay', address: 'Unit 69, Fleet Walk Shopping Ctr, Fleet Street, Torquay, Devon', postcode: 'TQ2 5EN', telno: '01803 215997', lat: '50.4629', lng: '-3.526354' };
stores[18] = { name: 'tReds Truro', address: '24 King Street, Truro, Cornwall', postcode: 'TR1 2RQ', telno: '01872 274990', lat: '50.263792', lng: '-5.052466' };
stores[19] = { name: 'tReds Weymouth', address: '8-9 Bond Street, Weymouth, Dorset', postcode: 'DT4 8HT', telno: '01305 789223', lat: '50.61007', lng: '-2.454543' };
stores[20] = { name: 'tReds Weston Super Mare', address: '48 High Street, Weston Super Mare', postcode: 'BS23 1JA', telno: '01934 425002', lat: '51.348234', lng: '-2.978325' };
stores[21] = { name: 'tReds Worcester', address: '93 High Street, Worcester, Worcestershire', postcode: 'WR1 2HL', telno: '01905 330028', lat: '52.190628', lng: '-2.219539' };
stores[22] = { name: 'tReds Worthing', address: '76 Montague Street, Worthing, W.Sussex', postcode: 'BN11 3HE', telno: '01903 234414', lat: '50.810464', lng: '-0.373921' };



/* ######################## */
/*  SETUP FUNCTIONS
/* ######################## */

function setMarkers()
{
	if (GBrowserIsCompatible())
	{

		for( i=0; i < stores.length; i++ )
		{
			var store = stores[i];

			var point = new GLatLng( store['lat'], store['lng'] );
			var add = store['name'] + '<br />' + store['address'] + '<br />' + store['postcode'] + '<br />' + store['telno'];

			map.addOverlay(createMarker(point, add));
		}
	}
}

function createMarker(point, add)
{
	var marker = new GMarker(point);
	GEvent.addListener(marker, "click", function() {
	marker.openInfoWindowHtml(add);
	});
	return marker;
}

function getDirections()
{
	var from = document.getElementById('directions_from').value;
	var to   = document.getElementById('directions_to').value;

	var directionsPanel = document.getElementById('directions_panel');

	var directions = new GDirections(map, directionsPanel);

	// Clear previous directions
	directions.clear();
	directionsPanel.innerHTML = "";
	map.clearOverlays();

	// Load directions from postcodes that were entered
  directions.load( from + ", UK to " + to + ", UK");

  document.getElementById('directions_panel').innerHTML = directions.getStatus();

  setMarkers();
}

function validateUKPostcode(id)
{
	var txtPC = document.getElementById(id);
	if(!(isEmpty(txtPC.value.toUpperCase(),'please enter postcode',txtPC)))
	{
		var regex = /(((^[BEGLMNS][1-9]\d?)|(^W[2-9])|(^(A[BL]|B[ABDHLNRST]|C[ABFHMORTVW]|D[ADEGHLNTY]|E[HNX]|F[KY]|G[LUY]|H[ADGPRSUX]|I[GMPV]|JE|K[ATWY]|L[ADELNSU]|M[EKL]|N[EGNPRW]|O[LX]|P[AEHLOR]|R[GHM]|S[AEGKL-PRSTWY]|T[ADFNQRSW]|UB|W[ADFNRSV]|YO|ZE)\d\d?)|(^W1[A-HJKSTUW0-9])|(((^WC[1-2])|(^EC[1-4])|(^SW1))[ABEHMNPRVWXY]))(\s*)?([0-9][ABD-HJLNP-UW-Z]{2}))$|(^GIR\s?0AA$)/;

		if(regex.test(txtPC.value))
		{
			return true;
		}
		else
		{
			alert('please enter a valid postcode');
			return false;
		}
	}
	else
	{
		return false;
	}

}

function usePointFromPostcode(postcode, callbackFunction) {

  var localSearch = new GlocalSearch();

	localSearch.setSearchCompleteCallback(null,
		function() {

			if (localSearch.results[0])
			{
				var resultLat = localSearch.results[0].lat;
				var resultLng = localSearch.results[0].lng;
				var point = new GLatLng(resultLat,resultLng);
				callbackFunction(map, point);
			}else{
				alert("Postcode not found!");
			}
		});

	localSearch.execute(postcode + ", UK");
}

/* ######################## */
/*  LOADING STUFF
/* ######################## */

function mapLoad() {
	if (GBrowserIsCompatible()) {

    map = new GMap2(document.getElementById("map"));

    map.addMapType(G_PHYSICAL_MAP);

    map.setCenter(new GLatLng(51.55, -2.5), 6);

    var mapControl = new GHierarchicalMapTypeControl();
    // Set up map type menu relationships
    mapControl.clearRelationships();
    mapControl.addRelationship(G_SATELLITE_MAP, G_HYBRID_MAP, "Roads & Labels", true);
    // Add control after you've specified the relationships
    map.addControl(mapControl);

    map.addControl(new GLargeMapControl());
    map.addControl(new GOverviewMapControl());

    setMarkers();

	}
}

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

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

addLoadEvent(mapLoad);
addUnLoadEvent(GUnload);


/*
var localSearch = new GlocalSearch();

var icon = new GIcon();
icon.image = "http://www.google.com/mapfiles/marker.png";
icon.shadow = "http://www.google.com/mapfiles/shadow50.png";
icon.iconSize = new GSize(20, 34);
icon.shadowSize = new GSize(37, 34);
icon.iconAnchor = new GPoint(10, 34);

function setupMap(mapvar, point) {

  var marker = new GMarker(point, icon);
  mapvar.setCenter(point, 13);
  mapvar.addOverlay(marker);

}

function usePointFromPostcode(map_var, postcode, callbackFunction) {

  var localSearch = new GlocalSearch();

	localSearch.setSearchCompleteCallback(null,
		function() {

			if (localSearch.results[0])
			{
				var resultLat = localSearch.results[0].lat;
				var resultLng = localSearch.results[0].lng;
				var point = new GLatLng(resultLat,resultLng);
				callbackFunction(map_var, point);
			}else{
				alert("Postcode not found!");
			}
		});

	localSearch.execute(postcode + ", UK");
}

function showPointLatLng(mapvar, point)
{
	alert("Map: " + mapvar + "\nLatitude: " + point.lat() + "\nLongitude: " + point.lng());
}

function mapLoad() {
	if (GBrowserIsCompatible()) {

	  map1 = new GMap2(document.getElementById("map_1"));
    map1.addControl(new GSmallMapControl());
    map1.addControl(new GMapTypeControl());
    usePointFromPostcode(map1, 'RG30 1JS', setupMap);

    map2 = new GMap2(document.getElementById("map_2"));
    map2.addControl(new GSmallMapControl());
    map2.addControl(new GMapTypeControl());
    usePointFromPostcode(map2, 'OX10 9DD', setupMap);

	}
}

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

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

addLoadEvent(mapLoad);
addUnLoadEvent(GUnload);
*/