﻿$(document).ready(function() {

    var map;
    var data;
    var focusPoints;
    var locationsArray = [];
    var markers = [];

    var circleJpgs = [];

    var preloader = $('#preloader');
    var wholeMap = $('#map');
    var listeners = [];
    var listenerIndex = 0;


    var firstTime = true;

    /*= [
    { name: "Overview", lng: 52.492941, lat: -1.895256, zoom: 5 },    
    { name: "Birmingham", lng: 52.492941, lat: -1.895256, zoom: 14 },
    { name: "London", lng: 51.501279, lat: -0.126014, zoom: 13 }
    ]*/


    //invisibleIcon1.image = "http://www.wispagoldmessages.com/googlemaps/transp.gif";
    //invisibleIcon1.shadow = "http://www.wispagoldmessages.com/googlemaps/transp.gif";
    //invisibleIcon1.printImage = "http://www.wispagoldmessages.com/googlemaps/transp.gif";
    //invisibleIcon1.printShadow = "http://www.wispagoldmessages.com/googlemaps/transp.gif";
    //invisibleIcon1.transparent = "http://www.wispagoldmessages.com/googlemaps/transp.gif";

    var invisibleIcon1 = new GIcon();
    invisibleIcon1.image = "http://www.wispagoldmessages.com/images/locbutton.gif";
    invisibleIcon1.shadow = "http://www.wispagoldmessages.com/images/locbutton.gif";
    invisibleIcon1.printImage = "http://www.wispagoldmessages.com/images/locbutton.gif";
    invisibleIcon1.printShadow = "http://www.wispagoldmessages.com/images/locbutton.gif";
    invisibleIcon1.transparent = "http://www.wispagoldmessages.com/images/locbutton.gif";
    invisibleIcon1.iconSize = new GSize(100, 30);
    invisibleIcon1.shadowSize = new GSize(100, 30);
    invisibleIcon1.iconAnchor = new GPoint(65, 75);
    invisibleIcon1.infoWindowAnchor = new GPoint(7, 8);
    invisibleIcon1.imageMap = [0, 0, 100, 0, 100, 30, 0, 30];

    var invisibleIcon2 = new GIcon();
    invisibleIcon2.image = "http://www.wispagoldmessages.com/images/locbutton.gif";
    invisibleIcon2.shadow = "http://www.wispagoldmessages.com/images/locbutton.gif";
    invisibleIcon2.printImage = "http://www.wispagoldmessages.com/images/locbutton.gif";
    invisibleIcon2.printShadow = "http://www.wispagoldmessages.com/images/locbutton.gif";
    invisibleIcon2.transparent = "http://www.wispagoldmessages.com/images/locbutton.gif";
    invisibleIcon2.iconSize = new GSize(100, 30);
    invisibleIcon2.shadowSize = new GSize(100, 30);
    invisibleIcon2.iconAnchor = new GPoint(-75, 75);
    invisibleIcon2.infoWindowAnchor = new GPoint(7, 8);
    invisibleIcon1.imageMap = [0, 0, 100, 0, 100, 30, 0, 30];


    markers[0] = createCustomMarker("http://www.wispagoldmessages.com/images/Spot_Red.png");
    markers[1] = createCustomMarker("http://www.wispagoldmessages.com/images/Spot_Yellow.png");
    markers[2] = createCustomMarker("http://www.wispagoldmessages.com/images/Spot_Blue.png");
    markers[3] = createCustomMarker("http://www.wispagoldmessages.com/images/Spot_Purple.png");


    circleJpgs[0] = "http://www.wispagoldmessages.com/images/red_bigone_spot.jpg";
    circleJpgs[1] = "http://www.wispagoldmessages.com/images/yellow_billboard_spot.jpg";
    circleJpgs[2] = "http://www.wispagoldmessages.com/images/blue_busshelter_spot.jpg";
    circleJpgs[3] = "http://www.wispagoldmessages.com/images/purple_projection_spot.jpg";

    $('.prev, .next').css('visibility', 'visible');
    $('#pageCount').css('visibility', 'hidden');

    $('#ctl00_mainContent_DropDownList1').change(function() {
        setDisplayType();
    });

    $('#ctl00_mainContent_DropDownList2').change(function() {
        setZoomAndFocus();
        getLocationJSON(focusPoints[$('#ctl00_mainContent_DropDownList2').val()].name);
    });

    //the type of items to display -- if -1 then show all
    var currentlyDisplayingType = -1;

    if (GBrowserIsCompatible()) {


        var bo = querySt("bo");
        if (bo == "1") {
            $('#ctl00_mainContent_DropDownList1').val(0);
        }

        //IF QUERYSTRING IS PASSED IN
        var lid = querySt("lid");
        var sid = querySt("sid");

        if (querySt("b") != null) {
            $('#back').show();
        }

        map = new GMap2(document.getElementById("map"));



        var mt = map.getMapTypes();
        for (var i = 0; i < mt.length; i++) {
            mt[i].getMinimumResolution = function() {
                return 5;
            }
            //mt[i].getMaximumResolution = function() {return 20;}
        }
        map.addControl(new GLargeMapControl3D());
        GEvent.addListener(map, "zoomend", function(oldLevel, newLevel) {
            updateDisplay();
        });

        if (lid != null) {
            $('#filters').hide();
            $('#reload').show();
            $('#gallery').hide();
            getItemJSON(lid);
            //alert("!!");
            //updateDisplay();
            //setZoomAndFocus();
            //select.append("<option value='' selected='true'>Please Select</option>");
        } else if (sid != null) {
            $('#filters').hide();
            $('#reload').show();
            $('#ctl00_mainContent_Gallery1_SearchPanel').hide();
            /*$('#gallery').hide();*/
            getItemJSONBySub(sid);

        } else {
            //alert("!");
            getMapFocusPoints();
        }


    } // display a warning if the browser was not compatible
    else {
        alert("Sorry, the Google Maps API is not compatible with this browser");
    }

    function getMapFocusPoints() {

        var displayType = $('#ctl00_mainContent_DropDownList1').val();
        //alert(displayType);
        //first get dropdown city options
        $.getJSON("GetMapFocusPointsJSON.aspx?t=" + displayType, function(d) {



            focusPoints = d;
            $('#ctl00_mainContent_DropDownList2 >option').remove();
            var select = $('#ctl00_mainContent_DropDownList2');




            var selectIndex = 0;




            /*if (lid == null) {
            getLocationJSON("All");
            }*/

            //if THE BIG ONE - SELECT ALL
            if (displayType == 0) {

                for (var i = 0; i < focusPoints.length; i++) {
                    var name = focusPoints[i].name;
                    select.append("<option value='" + i + "'>" + name + "</option>");
                }

                //alert(displayType);
                //select.val(0);
                //setZoomAndFocus();
                getLocationJSON("All");
                //getLocationJSON(focusPoints[$('#ctl00_mainContent_DropDownList2').val()].name);



            }
            //ROADSIDE BILLBOARD
            else if (displayType == 1) {

                for (var i = 0; i < focusPoints.length; i++) {

                    var name = focusPoints[i].name;

                    if (lid == null && name == "Antrim") {
                        selectIndex = i;
                        select.append("<option value='" + i + "' selected='true'>" + name + "</option>");
                    } else {
                        select.append("<option value='" + i + "'>" + name + "</option>");
                    }
                }

                //alert(displayType);
                //select.val(0);
                //setZoomAndFocus();
                getLocationJSON("Antrim");
                //getLocationJSON(focusPoints[$('#ctl00_mainContent_DropDownList2').val()].name);



            } else {

                for (var i = 0; i < focusPoints.length; i++) {

                    var name = focusPoints[i].name;

                    if (lid == null && name == "London") {
                        selectIndex = i;


                        select.append("<option value='" + i + "' selected='true'>" + name + "</option>");
                    } else {
                        select.append("<option value='" + i + "'>" + name + "</option>");
                    }
                }

                getLocationJSON("London");

            }

            if (lid != null) {
                getItemJSON(lid);
            }





        });
    }

    // Centres point i in the window
    function myclick(i) {
        map.panTo(locationsArray[i].largeIMarker.getLatLng());
    }

    function setDisplayType() {

        //wholeMap.hide();
        //preloader.show();

        //currentlyDisplayingType = $('#displayTypeDropDown').val();
        //currentlyDisplayingType = ref.val();
        currentlyDisplayingType = $('#ctl00_mainContent_DropDownList1').val()
        //$('#ctl00_mainContent_DropDownList2').val('0');

        getMapFocusPoints();

        setZoomAndFocus();
        updateDisplay();
    }

    function setZoomAndFocus() {
        //var pnt = focusPoints[$('#cityDropDown').val()];
        //var pnt = focusPoints[ref.val()];
        var pnt = focusPoints[$('#ctl00_mainContent_DropDownList2').val()];
        //var pnt = focusPoints[selectIndex];
        map.setCenter(new GLatLng(pnt.longitude, pnt.latitude), pnt.zoom);

    }

    function updateDisplay() {
        if (map.getZoom() > 14) {
            showLargeIcons();
        } else {
            showSmallIcons();
        }
    }

    function createCustomMarker(img) {
        var marker = new GIcon();
        marker.image = img;
        marker.shadow = img;
        marker.printImage = img;
        marker.printShadow = img;
        marker.transparent = img;
        marker.iconSize = new GSize(30, 30);
        marker.shadowSize = new GSize(30, 30);
        marker.iconAnchor = new GPoint(15, 15);
        marker.infoWindowAnchor = new GPoint(0, 0);
        marker.imageMap = [0, 0, 30, 0, 30, 30, 0, 30];
        return marker;
    }

    function zoomToLocation(ind) {
        var pos = locationsArray[ind]
        map.setCenter(pos.point, 15);
    }

    function showLargeIcons() {
        for (var i = 0; i < locationsArray.length; ++i) {
            var loc = locationsArray[i];

            if (loc.placement_key == 3) {
                loc.smallMarker.hide();
                loc.largeElabel.hide();

                if (loc.largeIMarker != null) loc.largeIMarker.hide();
            } else

                if (currentlyDisplayingType != -1 && currentlyDisplayingType != loc.placement_key) {
                //only displaying a certain type of placement and this is not it
                loc.smallMarker.hide();
                loc.largeElabel.hide();

                if (loc.largeIMarker1 != null) loc.largeIMarker1.hide();
                if (loc.largeIMarker2 != null) loc.largeIMarker2.hide();

            } else {
                loc.smallMarker.hide();
                loc.largeElabel.show();

                if (loc.largeIMarker1 != null) loc.largeIMarker1.show();
                if (loc.largeIMarker2 != null) loc.largeIMarker2.show();
            }
        }
    }

    function showSmallIcons() {
        for (var i = 0; i < locationsArray.length; ++i) {
            var loc = locationsArray[i];

            if (loc.placement_key == 3) {
                loc.smallMarker.hide();
                loc.largeElabel.hide();

                if (loc.largeIMarker != null) loc.largeIMarker.hide();
            } else


                if (currentlyDisplayingType != -1 && currentlyDisplayingType != loc.placement_key) {
                //only displaying a certain type of placement and this is not it
                loc.smallMarker.hide();
                loc.largeElabel.hide();

                //if (loc.largeIMarker != null) loc.largeIMarker.hide();

                if (loc.largeIMarker1 != null) loc.largeIMarker1.hide();
                if (loc.largeIMarker2 != null) loc.largeIMarker2.hide();

            } else {
                loc.smallMarker.show();
                loc.largeElabel.hide();

                //if (loc.largeIMarker != null) loc.largeIMarker.hide();

                if (loc.largeIMarker1 != null) loc.largeIMarker1.hide();
                if (loc.largeIMarker2 != null) loc.largeIMarker2.hide();
            }
        }
    }

    function querySt(ji) {
        hu = window.location.search.substring(1);
        gy = hu.split("&");
        for (i = 0; i < gy.length; i++) {
            ft = gy[i].split("=");
            if (ft[0] == ji) {
                return ft[1];
            }
        }
    }

    function smallMarkerClick() {
        zoomToLocation(ind);
    }

    function markerClick() {

        var title = $(this).attr('title');
        var url = $(this).attr('href');

        if (ie6) {

            alert("5");

            $('#filters').hide();
            $("html").scrollTop(0);
            $("html").css("overflow", "hidden");

        }

        $.nyroModalManual({
            title: obj.title,
            type: 'image',
            url: obj.imageUrl.substr(2),
            endRemove: nyroClosed
        });
    }

    function nyroClosed() {
        if (ie6) {
            var lid = querySt("lid");
            if (lid == null) {
                $('#filters').show();
            }
            $("html").css("overflow", "auto");

        }
    }

    function createLocation(ind, obj) {

        var point = new GLatLng(obj.latitude, obj.longitude);
        var smallMarker = new GMarker(point, markers[obj.placement_key]);
        var marker1;
        var marker2;

        listeners[listenerIndex] = GEvent.addListener(smallMarker, "click", function() {
            zoomToLocation(ind);
        });
        listenerIndex++;

        map.addOverlay(smallMarker);


        if (firstTime) {



            firstTime = false;
            var show = querySt("show");
            if (show == "1") {

                if (ie6) {

                    //alert("4");

                    $('#filters').hide();
                    $("html").scrollTop(0);
                    $("html").css("overflow", "hidden");
                }


                $.nyroModalManual({
                    title: obj.title,
                    type: 'image',
                    url: obj.imageUrl1.substr(2),
                    endRemove: nyroClosed
                });
            } else {

                if (show == "2") {
                    if (ie6) {
                        //alert("3");

                        $('#filters').hide();
                        $("html").scrollTop(0);
                        $("html").css("overflow", "hidden");
                    }

                    $.nyroModalManual({
                        title: obj.title,
                        type: 'image',
                        url: obj.imageUrl2.substr(2),
                        endRemove: nyroClosed
                    });
                }
            }
        }

        var label;


        if ((obj.imageUrl1 == null || obj.imageUrl1 == "") && (obj.imageUrl2 == null || obj.imageUrl2 == "")) {
            //no click

            var contents = "<span class='markerText'>" + truncate(obj.locationName.toLowerCase(), 18) + "</span>" + "<span class='markerCircle'><img src='" + circleJpgs[obj.placement_key] + "' /></span>" + "<span class='markerText'>" + truncate(obj.city, 30) + "</span>";


            contents = contents + "<span class='markerText'><b>Available (#" + obj.locationID + ") </b></span>";

            label = new ELabel(point, contents, "availableMarker", new GSize(-75, 0), 100, 1);

        } else {

            var contents = "<span class='markerText'>#" + obj.locationID + ") " + truncate(obj.locationName.toLowerCase(), 30) + "</span>" + "<span class='markerCircle'><img src='" + circleJpgs[obj.placement_key] + "' /></span>" + "<span class='markerText'>" + truncate(obj.city, 30) + "</span>";


            if (obj.imageUrl1 == null || obj.imageUrl1 == '') {
                contents = contents + "<span class='markerTextLeft'>Coming Soon</span>";
            } else {
                contents = contents + "<span class='markerTextLeft'>By " + truncate(obj.assignedTo1.toLowerCase(), 15) + "</span>";

            }

            if (obj.imageUrl2 == null || obj.imageUrl2 == '') {
                contents = contents + "<span class='markerTextRight'>Coming Soon</span>";
            } else {
                contents = contents + "<span class='markerTextRight'>By " + truncate(obj.assignedTo2.toLowerCase(), 15) + "</span>";
            }

            if (obj.imageUrl1 != null && obj.imageUrl1 != '') {

                // Create an invisible GMarker
                marker1 = new GMarker(point, invisibleIcon1);


                listeners[listenerIndex] = GEvent.addListener(marker1, "click", function() {
                    var title = $(this).attr('title');
                    var url = $(this).attr('href');


                    if (ie6) {

                        //alert("2");

                        $('#filters').hide();
                        $("html").scrollTop(0);
                        $("html").css("overflow", "hidden");
                    }


                    $.nyroModalManual({
                        title: obj.title,
                        type: 'image',
                        url: obj.imageUrl1.substr(2),
                        endRemove: nyroClosed
                    });
                    //alert("Show Phase 1 Image");

                });
                listenerIndex++;
                map.addOverlay(marker1);
            }
            

            if (obj.imageUrl2 != null && obj.imageUrl2 != '') {

                marker2 = new GMarker(point, invisibleIcon2);
                listeners[listenerIndex] = GEvent.addListener(marker2, "click", function() {
                    var title = $(this).attr('title');
                    var url = $(this).attr('href');


                    if (ie6) {

                        // alert("1")

                        $('#filters').hide();
                        $("html").scrollTop(0);
                        $("html").css("overflow", "hidden");
                    }

                    $.nyroModalManual({
                        title: obj.title,
                        type: 'image',
                        url: obj.imageUrl2.substr(2),
                        endRemove: nyroClosed
                    });
                    //alert("Show Phase 2 Image");

                });
                listenerIndex++;
                map.addOverlay(marker2);
            }

            label = new ELabel(point, contents, "marker", new GSize(-75, 0), 100, 1);
        }

        map.addOverlay(label);


        locationsArray[ind] = {
            smallMarker: smallMarker,
            largeElabel: label,
            largeIMarker1: marker1,
            largeIMarker2: marker2,
            placement_key: obj.placement_key,
            point: point
        }
    }

    function getItemJSON(itemToFind) {

        //wholeMap.hide();
        //preloader.show();

        $.getJSON("getItemJSON.aspx?lid=" + itemToFind, function(d) {

            wholeMap.show();
            preloader.hide();

            data = d;

            //UNLOAD
            for (var i = 0; i < listenerIndex; i++) {
                GEvent.removeListener(listeners[i]);
            }
            listeners = [];
            listenerIndex = 0;

            map.clearOverlays();

            for (var i = 0; i < data.length; ++i) {
                createLocation(i, data[i]);
            }

            zoomToLocation(0);

            updateDisplay();



            /*var sidebar_html = '';
            
            sidebar_html += '<a href="javascript:myclick(' + i + ')"> LOCATION' + (i + 1) + '<\/a><br>';
            }
            document.getElementById("linkbar").innerHTML = sidebar_html;*/
            //$(".markerText").truncate(15);
        });
    }


    function getItemJSONBySub(itemToFind) {

        //wholeMap.hide();
        //preloader.show();

        $.getJSON("getItemJSON.aspx?sid=" + itemToFind, function(d) {

            wholeMap.show();
            preloader.hide();

            data = d;

            //UNLOAD
            for (var i = 0; i < listenerIndex; i++) {
                GEvent.removeListener(listeners[i]);
            }
            listeners = [];
            listenerIndex = 0;

            map.clearOverlays();

            for (var i = 0; i < data.length; ++i) {
                createLocation(i, data[i]);
            }

            //zoomToLocation(0);
            map.setCenter(new GLatLng(52.492941, -1.895256), 5);

            updateDisplay();
        });
    }


    //var locToFind = "London";
    function getLocationJSON(locToFind) {



        var displayType = $('#ctl00_mainContent_DropDownList1').val();

        $.getJSON("getLocationsJSON.aspx?l=" + locToFind + "&t=" + displayType, function(d) {

            wholeMap.show();
            preloader.hide();

            //UNLOAD
            for (var i = 0; i < listenerIndex; i++) {
                GEvent.removeListener(listeners[i]);
            }
            listeners = [];
            listenerIndex = 0;


            data = d;

            map.clearOverlays();

            setZoomAndFocus();

            for (var i = 0; i < data.length; ++i) { createLocation(i, data[i]); }

            updateDisplay();

            /*var sidebar_html = '';
            
            sidebar_html += '<a href="javascript:myclick(' + i + ')"> LOCATION' + (i + 1) + '<\/a><br>';
            }
            document.getElementById("linkbar").innerHTML = sidebar_html;*/
            //$(".markerText").truncate(15);




        });
    }

    function truncate(str, length) {
        if (str.length > length) {
            return (str.substr(0, length - 3) + "...");
        } else {
            return str;
        }
    }

    function getLocationIndexByID(lid) {
        for (i = 0; i < data.length; i++) {
            var obj = data[i];
            if (obj.locationID == lid) {
                return i;
            }
        }
    }
});