var treeHouseLocation = new google.maps.LatLng(50.720609326547006, -3.533657491207123);

var infoWindow = new google.maps.InfoWindow();

var greenPushPin = new google.maps.MarkerImage(
        "http://maps.google.com/mapfiles/ms/micons/grn-pushpin.png",
        new google.maps.Size(32,32),
        new google.maps.Point(0,0),
        new google.maps.Point(9,31));
var pushPinShadow = new google.maps.MarkerImage(
        "http://maps.google.com/mapfiles/ms/micons/pushpin_shadow.png",
        new google.maps.Size(59,32),
        new google.maps.Point(0,0),
        new google.maps.Point(9,31));

function makeGroupIcon(name)
{
    return new google.maps.MarkerImage(
            "http://www.devonfhs.org.uk/images/bullet/group_" + name + ".gif",
            google.maps.Size(26,26),
            google.maps.Point(0,0), // origin
            google.maps.Point(0,26) // anchor
            );
}
var groupIconExeter = makeGroupIcon("e");
var groupIconPlymouth = makeGroupIcon("p");
var groupIconNorth = makeGroupIcon("n");
var groupIconSouth = makeGroupIcon("s");
var groupIconTreeHouse = makeGroupIcon("th");
var groupIconShadow = new google.maps.MarkerImage(
        "http://www.devonfhs.org.uk/images/marker/group_shadow.png",
        google.maps.Size(40,26),
        google.maps.Point(0,0), // origin
        google.maps.Point(0,0) // anchor
        );

function StreetViewButton(panorama,map,caption,location)
{
    var button = document.createElement("div");
    button.style.backgroundColor = 'white';
    button.style.borderStyle = 'solid';
    button.style.borderWidth = '1px';
    button.style.borderColor = 'black';
    button.style.width = '100px';
    button.style.height = '17px';
    button.style.textAlign = 'center';
    button.style.marginTop = '5px';
    button.style.marginRight = '0px';
    button.style.cursor = 'pointer';

    var text = document.createElement("div");
    text.style.borderStyle = 'solid';
    text.style.borderWidth = '1px';
    text.style.borderTopColor = text.style.borderLeftColor = 'lightgray';
    text.style.borderBottomColor = text.style.borderRightColor = 'darkgray';
    text.style.height = '15px';
    text.style.margin = '0px';
    text.style.color = 'black';
    text.style.fontFamily = 'Trebuchet MS,sans-serif';
    text.style.fontSize = '12px';
    text.style.paddingLeft = '4px';
    text.style.paddingRight = '4px';
    text.appendChild(document.createTextNode(caption));

    button.appendChild(text);

    google.maps.event.addDomListener(
            button,
            "click",
            function()
            {
                if (!panorama.getVisible())
                {
                    panorama.setPosition(location);
                    panorama.setVisible(true);
                }
            }
            );

    return button;
}

function showmap(sMap,x,y,type)
{
	var theDiv = document.getElementById("map" + sMap);
	theDiv.className = "mapvisible";

	//<![CDATA[

    var nZoom;
    var mapType;
    if (type == 'p')
    {
        nZoom = 8;
        mapType = google.maps.MapTypeId.TERRAIN;
    }
    else
    {
        nZoom = 15;
        mapType = google.maps.MapTypeId.ROADMAP;
    }
    var typeContOptions =
    {
        mapTypeIds:[google.maps.MapTypeId.ROADMAP,google.maps.MapTypeId.SATELLITE,google.maps.MapTypeId.TERRAIN]
    };
    var location = new google.maps.LatLng(y, x);
    var mapOptions =
    {
        mapTypeControl:true,
        mapTypeControlOptions:typeContOptions,
        navigationControl:true,
        streetViewControl:true,
        center:location,
        mapTypeId:mapType,
        zoom:nZoom
    };
	var map1 = new google.maps.Map(document.getElementById("map" + sMap),mapOptions);

    map1.controls[google.maps.ControlPosition.TOP_RIGHT].push(new StreetViewButton(map1.getStreetView(), map1, 'Venue', location));

    google.maps.event.addListener(
            map1,
            "click",
            function()
            {
                infoWindow.close();
            }
            );
                                                      
    markerOptions =
    {
        map:map1,
        position:map1.getCenter(),
        icon:greenPushPin,
        shadow:pushPinShadow,
        clickable:false
    };
    var marker = new google.maps.Marker(markerOptions);
    //]]>
}

function addGroupIcon(map,groupIcon,latlng,group,address,times)
{
    markerOptions =
    {
        map:map,
        icon:groupIcon,
        shadow:groupIconShadow,
        position:latlng,
        clickable:true
    };

    var marker = new google.maps.Marker(markerOptions);

    google.maps.event.addListener(
            marker,
            "click",
            function()
            {
                if (map.getZoom() == 16)
                {
                    map.setCenter(new google.maps.LatLng(50.708634400828224, -3.84521484375), 8); // todo Define a constant coordinate for the centre of Devon
                    infoWindow.close();
                }
                else
                {
                    infoWindow.close();
                    map.setCenter(marker.getPosition(), 16);
                    var html = '<div align="left"><span class="emph">' + group + '</span><br><strong>' + address  + '</strong><br>' + times + '</div>';
                    var windowOptions =
                    {
                        content:html,
                        maxWidth:200
                    };
                    infoWindow.setOptions(windowOptions);
                    infoWindow.open(map, marker);
                }
            }
            );
}

var hotel = new google.maps.MarkerImage(
        "http://www.devonfhs.org.uk/images/marker/hotel.png",
        new google.maps.Size(16,16),
        new google.maps.Point(0,0),
        new google.maps.Point(7,7));

var busStop = new google.maps.MarkerImage(
        "http://www.devonfhs.org.uk/images/marker/busstop.png",
        new google.maps.Size(15,15),
        new google.maps.Point(0,0),
        new google.maps.Point(7,7));

var carPark = new google.maps.MarkerImage(
        "http://www.devonfhs.org.uk/images/marker/carpark.png",
        new google.maps.Size(16,16),
        new google.maps.Point(0,0),
        new google.maps.Point(8,8));

var TIC = new google.maps.MarkerImage(
        "http://www.devonfhs.org.uk/images/marker/info.png",
        new google.maps.Size(16,16),
        new google.maps.Point(0,0),
        new google.maps.Point(8,8));

var railwayStn = new google.maps.MarkerImage(
        "http://www.devonfhs.org.uk/images/marker/rail.gif",
        new google.maps.Size(14,11),
        new google.maps.Point(0,0),
        new google.maps.Point(7,6));

function addHotel(map,latlng,hotelName,URL)
{
    var markerOptions =
    {
        map:map,
        icon:hotel,
        shadow:null,
        position:latlng,
        clickable:true
    };

	var hotelMarker = new google.maps.Marker(markerOptions);

    google.maps.event.addListener(
            hotelMarker,
            "click",
            function()
            {
                infoWindow.close();
                var hotelHtml =
                        '<strong>' + hotelName + '</strong>' +
                        '<br>' +
                        '<a target="_blank" href="' + URL + '">' + URL + '</a>';
                var windowOptions =
                {
                    maxWidth:400,
                    content:hotelHtml
                };
                infoWindow.setOptions(windowOptions);
                infoWindow.open(map, hotelMarker);
            }
            );
}
function addBusStop(map,latlng,busStopName,buses)
{
    var markerOptions =
    {
        map:map,
        icon:busStop,
        position:latlng,
        shadow:null,
        clickable:(arguments.length > 2)
    };

	var busStopMarker = new google.maps.Marker(markerOptions);

	if (arguments.length > 2)
	{
		var busHtml = '';
		var b;
		for (b = 0; b < buses.length; b++)
		{
			busHtml += '<br>';
			busHtml += '<img src=\"images/marker/bus_' + buses[b].split(":")[0] + '.gif">';
			busHtml += ' ' + buses[b].split(":")[1];
		}
        google.maps.event.addListener(
                busStopMarker,
                "click",
                function()
                {
                    infoWindow.close();
                    var html = '<strong>Buses to &amp; from ' + busStopName + '</strong>' +
                            busHtml +
                            '<div style="text-align:center;font-size:small;font-style:italic">' +
                            'Please visit <a href="http://www.stagecoachbus.com/southwest">Stagecoach South West</a> for up to date information' +
                            '</div>' +
                            '</div>';
                    var windowOptions =
                    {
                        maxWidth:300,
                        content:html
                    };
                    infoWindow.setOptions(windowOptions);
                    infoWindow.open(map, busStopMarker);
                }
                );
    }
}

function addCarPark(map,latlng,parkID,parkName,eccmarker)
{
    var markerOptions =
    {
        map:map,
        icon:carPark,
        position:latlng,
        shadow:null,
        clickable:(arguments.length > 2) 
    };

	var parkMarker = new google.maps.Marker(markerOptions);

	if (arguments.length > 2)
	{
        google.maps.event.addListener(
                parkMarker,
                "click",
                function()
                {
                    infoWindow.close();
                    var carParkHtml = '<div align="center">' +
                            '<a href="http://www.exeter.gov.uk/index.aspx?articleid=' +
                            parkID +
                            '">' +
                            '<img src="http://www.devonfhs.org.uk/images/marker/ecclogo.gif" border="0">' +
                            '<br>' +
                            '<img align="middle" style="margin-right:6px;" src="http://www.devonfhs.org.uk/images/marker/eccmarker_' + eccmarker + '.gif" border="0">' +
                            parkName +
                            ' Car Park</a>' +
                            '</div>';
                    var windowOptions =
                    {
                        content:carParkHtml,
                        maxWidth:300
                    };
                    infoWindow.setOptions(windowOptions);
                    infoWindow.open(map, parkMarker);
                }
                );
    }
}

function addCathedral(map)
{
    var cathedral = new google.maps.MarkerImage(
            "http://www.devonfhs.org.uk/images/marker/cathedral.png",
            new google.maps.Size(57,44),
            new google.maps.Point(0,0),
            new google.maps.Point(28,22));

    var markerOptions =
    {
        map:map,
        icon:cathedral,
        position:new google.maps.LatLng(50.72251287276055, -3.529958724975586),
        shadow:null,
        clickable:false
    };

    var cathedralMarker = new google.maps.Marker(markerOptions);
}

function addExeterTIC(map)
{
    var markerOptions =
    {
        map:map,
        icon:TIC,
        position:new google.maps.LatLng(50.724642,-3.525785),
        shadow:null,
        clickable:true
    };

    var TICmarker = new google.maps.Marker(markerOptions);

    google.maps.event.addListener(
            TICmarker,
            "click",
            function()
            {
                infoWindow.close();
                var TIChtml = '<div align="left">' +
                        '<a href="http://www.exeter.gov.uk/index.aspx?articleid=9786">' +
                        'Exeter Visitor Information</a><br>' +
                        'Dix&rsquo;s Field<br>' +
                        'Exeter<br>' +
                        'Devon<br>' +
                        'EX1 1GF<br>' +
                        '01392 665700<br>' +
                        '<img src="http://www.devonfhs.org.uk/images/bullet/postal.gif" border="0" alt="email"> ' +
                        '<a href="mailto:evit@exeter.gov.uk">evit@exeter.gov.uk</a>' +
                        '</div>';
                var windowOptions =
                {
                    content:TIChtml,
                    maxWidth:200
                };
                infoWindow.setOptions(windowOptions);
                infoWindow.open(map, TICmarker);
            });
}