﻿var zoomedIn = false;
var optionsselected;
var currentMarker;

//--------------------[ For flash map ]--------------------------------
var locationGalleryArray = new Array(7)
locationGalleryArray[0] = "aberthaw";
locationGalleryArray[1] = "didcot";
locationGalleryArray[2] = "fawley";
locationGalleryArray[3] = "ferrybridge";
locationGalleryArray[4] = "great_yarmouth";
locationGalleryArray[5] = "little_barford";
locationGalleryArray[6] = "littlebrook";

//Use this to test if flash location exists
Array.prototype.has = function(v) {
    for (i = 0; i < this.length; i++) {
        if (this[i] == v) return true;
    }
    return false;
}

//Onload put all of the locations from the xml on to the map
window.onload = function() {
    if (GBrowserIsCompatible()) {
        var map = new GMap2(document.getElementById("map_canvas"));
        var MyOverlay = function(marker, html) {
            this.marker = marker;
            this.html = html;
        }

        //extend googlemaps GOoverlay class to enable us to do custom overlays
        MyOverlay.prototype = new GOverlay();
        MyOverlay.prototype.initialize = function(map) {

            //create a div that will act as our info window
            var div = document.createElement("div");
            div.className = 'mywindow';
            div.innerHTML = this.html;

            // pull the div back in to position so it's sitting in the correct pos in relation to marker
            offsetX = 90;
            offsetY = 230;

            //set the divs position and add it to the map
            div.style.position = 'absolute';
            div.style.top = (map.fromLatLngToDivPixel(this.marker.getPoint()).y - offsetY) + 'px';
            div.style.left = (map.fromLatLngToDivPixel(this.marker.getPoint()).x - offsetX) + 'px';
            div.onclick = closeOverlay;
            this._map = map;
            this._div = div;
            map.getPane(G_MAP_FLOAT_PANE).appendChild(div);
        }

        MyOverlay.prototype.remove = function() {
            this._div.parentNode.removeChild(this._div);
        }

        //GOoverlay errors without this method
        MyOverlay.prototype.redraw = function() {
        }

        //set the center of the map and plumb in all of the markers
        function allMarkers() {
            map.setCenter(new GLatLng(53.787672, -2.39502), 5);
            map.addControl(new GLargeMapControl());
            map.addControl(new GMapTypeControl());
            GDownloadUrl("mapdata.xml", function(data, responseCode) {
                var xml = GXml.parse(data);
                var markers = xml.documentElement.getElementsByTagName("marker");
                //alert(markers.length);
                for (var i = 0; i < markers.length; i++) {
                    addMarkers(markers[i]);
                }

            });
        }
        allMarkers();

        //Now allow the users filter the locations using the select dropdown
        var select = document.getElementById('gmapselect');
        select.onchange = function() {
            map.clearOverlays();
            var options = select.childNodes;
            for (var i = 0; i < options.length; ++i) {
                if (options[i].nodeType == '1') {
                    if (options[i].selected == true) {
                        optionsselected = options[i].text;
                        if (optionsselected == "All") {
                            map.setCenter(new GLatLng(53.787672, -2.39502), 5);
                            map.addControl(new GLargeMapControl());
                            map.addControl(new GMapTypeControl());
                            GDownloadUrl("mapdata.xml", function(data, responseCode) {
                                var xml = GXml.parse(data);
                                var markers = xml.documentElement.getElementsByTagName("marker");
                                //alert(markers.length);
                                for (var i = 0; i < markers.length; i++) {
                                    addMarkers(markers[i]);
                                }

                            });
                        }
                        else {
                            GDownloadUrl("mapdata.xml", function(data, responseCode) {
                                var xml = GXml.parse(data);
                                var markeri = xml.documentElement.getElementsByTagName("businessArea");
                                //alert(markeri.length);
                                for (var r = 0; r < markeri.length; ++r) {
                                    if (markeri[r].getAttribute("name") == optionsselected) {
                                        var children = markeri[r].childNodes;
                                        for (var t = 0; t < children.length; ++t) {
                                            if (children[t].nodeType == 1) {
                                                addMarkers(children[t]);
                                            }
                                        }
                                    }
                                }
                            });
                        }

                    }
                }
            }
        }

        //function to create markers on the map   
        function createMarker(point, html, locationName) {
            var Icon = new GIcon();
            Icon.image = "../imgs/maps/pointer.png";
            Icon.iconSize = new GSize(77, 29);
            Icon.iconAnchor = new GPoint(23, 20);
            Icon.infoWindowAnchor = new GPoint(0, 0);

            var marker = new GMarker(point, Icon);
            GEvent.addListener(marker, "click", function() {

                if (typeof MyOverlay !== 'undefined') {
                    if (currentMarker) {
                        closeOverlay();
                    }
                    if (!this.overlay) {
                        // just recording this for use in the closeOverlay function
                        this.overlay = new MyOverlay(this, html);
                    }
                    currentMarker = this;

                    //Get out info and show flash gallery
                    //Check it exists in array
                    if (locationName) {
                        var locationNameLC = locationName.toLowerCase();
                        var hasLocation = locationGalleryArray.has(locationNameLC);
                        if (hasLocation) {
                            sendToActionScript(locationNameLC);
                        }
                    }

                    map.panTo(new GLatLng(this.getPoint().lat(), this.getPoint().lng()));
                    map.addOverlay(this.overlay);
                } else {
                    marker.openInfoWindowHtml(html);

                }
                var t = document.getElementById('close');
                t.onclick = function() {
                    closeOverlay();
                }
            });
            return marker;
        }

        //Close overlay
        function closeOverlay() {
            if (currentMarker) {
                map.removeOverlay(currentMarker.overlay);
                currentMarker.show();
            }
        }

        //This function breaks address up on the comma and inserts a <br /> tag
        function parseAddress(data) {
            var str = '';
            var parts = data.split(',');
            for (var t = 0; t < parts.length; ++t) {
                str += parts[t] + '<br />';
            }
            return str;
        }

        //function to create markers and add them to the map
        function addMarkers(markerinfo) {
            var point = new GLatLng(parseFloat(markerinfo.getAttribute("lat")),
                parseFloat(markerinfo.getAttribute("lng")));
            var info = parseAddress(markerinfo.getAttribute("info"));
            var imgstring;
            var locationimage = markerinfo.getAttribute("image");
            var locationalt = markerinfo.getAttribute("alt");
            if (locationimage != "") {
                imgstring = '<div class="photo"><img src="' + locationimage + '" height="60" width="80" alt="' + locationalt + '" /></div>'
            }
            else { imgstring = ""; }

            var flash_gallery_name = markerinfo.getAttribute("flash_gallery");

            var marker = createMarker(point, '<div class="bubbleheader"><a href="javascript:void();" id="close"><img src="../imgs/locations/closebutton.gif" alt="close this window" /></a></div><div class="bubblemain">' + imgstring + info + '</div><div class="bubblebottom">&nbsp;</div>', flash_gallery_name);
            map.addOverlay(marker);
        }
    } else {
        alert("Google Maps has been used on this page but is not compatible with your browser.");
    }
}

function hasClass(elt, cls) {
    return ((" " + elt.className + " ").toLowerCase().indexOf(" " + cls.toLowerCase() + " ") != -1);
}

//Photo Gallery Javascript stuff 
function getFlashMovie(movieName) {
    var isIE = navigator.appName.indexOf("Microsoft") != -1;
    return (isIE) ? window[movieName] : document[movieName];
}

function sendToActionScript(value) {
    //alert("Gallery to display: " + value);
    //alert(document["Headerloader]);
    //getFlashMovie("Headerloader").displayGallery(value);
    document["Headerloader"].displayGallery(value);
}

function get_random() {
    var ranNum = Math.floor(Math.random() * 7);
    return ranNum;
}

function showDefaultGallery() {

    var whichGallery = get_random();
    sendToActionScript(locationGalleryArray[whichGallery]);
    //sendToActionScript('aberthaw');

}

//function fixTiles() {
//    var tiles = document.getElementsByTagName('IMG');
//    for (var n = 0; n < tiles.length; n++) {
//        if (tiles[n].src.match(/&src=api/)) {
//            tiles[n].src = tiles[n].src.replace(/&src=api/, '');
//        }
//    }
//    window.setTimeout("fixTiles()", 500);



//}


//fixTiles(); 

