﻿// polygon get bounds extension //
if (!google.maps.Polygon.prototype.getBounds) {

    google.maps.Polygon.prototype.getBounds = function (latLng) {

        var bounds = new google.maps.LatLngBounds();
        var paths = this.getPaths();
        var path;

        for (var p = 0; p < paths.getLength(); p++) {
            path = paths.getAt(p);
            for (var i = 0; i < path.getLength(); i++) {
                bounds.extend(path.getAt(i));
            }
        }

        return bounds;
    };
}

// Market Polygon Functions //
function DrawMarketPolygons(mc) {
    jQuery.each(MarketPolygons, function (i, v) { CreateMarketPolygons(i, v, mc[i]); });
}

function CreateMarketPolygons(key, polygons, content) {
    jQuery.each(polygons, function (i, val) { CreatePolygon(polygons[i], PolygonSettings, content); });
}

function CreatePolygon(polyPath, settings, contents) {
    var polygon = new google.maps.Polygon(jQuery.extend(settings, { paths: polyPath, map: map }));

        google.maps.event.addListener(polygon, 'click', function (e) {

        infoWindow.setPosition(polygon.getBounds().getCenter());
        infoWindow.setContent("<div class = 'infoWindow'>" + contents+"<br/><br/></div>");
        infoWindow.open(map);

        jQuery('.infoWindow').parent().parent().css('overflow-y', 'visible');
        jQuery('.infoWindow').parent().css('overflow-y', 'visible');
    });
}

// Search Result functions //
function DrawShopResults(shops) {
    jQuery.each(shops, function () {

        var lat = this.lat;
        var lng = this.lng;
        var name = this.name;
        var html = this.html;
        var icon = this.icon;

        if (icon.length == 0) {
            google.maps.event.addListener(
                new google.maps.Marker({ position: new google.maps.LatLng(lat, lng), map: map, title: this.name })
                , 'click', function () {
                    var shopWindow2 = new google.maps.InfoWindow();
                    shopWindow2.setPosition(new google.maps.LatLng(lat, lng));
                    shopWindow2.setContent(html);
                    shopWindow2.width = 300;
                    shopWindow2.open(map);
                });
        } else {
            google.maps.event.addListener(
                new google.maps.Marker({ position: new google.maps.LatLng(lat, lng), map: map, title: this.name, icon: new google.maps.MarkerImage(this.icon) })
                , 'click', function () {
                    var shopWindow2 = new google.maps.InfoWindow();
                    shopWindow2.setPosition(new google.maps.LatLng(lat, lng));
                    shopWindow2.setContent(html);
                    shopWindow2.width = 300;
                    shopWindow2.open(map);
                });
        }
    });
}

function DrawMarketResults(results) {
    jQuery.each(results, function (key, content) {
        var position = new google.maps.Polygon({ paths: MarketPolygons[key][0] }).getBounds().getCenter();
        new google.maps.InfoWindow({ map: map, position: position, content: content });
    });
}

// Shop Sidebar Functions //
function DrawShop(shop) {
    if (shop.icon.length == 0) {
        new google.maps.Marker({ position: new google.maps.LatLng(shop.lat, shop.lng), map: map, title: shop.name, clickable: false });
    } else {
        new google.maps.Marker({ position: new google.maps.LatLng(shop.lat, shop.lng), map: map, title: shop.name, clickable: false, icon: new google.maps.MarkerImage(shop.icon) });
    }
}

// Shop Sidebar Functions //
function DrawShop(shop) {
    if (shop.icon.length == 0) {
        new google.maps.Marker({ position: new google.maps.LatLng(shop.lat, shop.lng), map: map, title: shop.name, clickable: false });
    } else {
        new google.maps.Marker({ position: new google.maps.LatLng(shop.lat, shop.lng), map: map, title: shop.name, clickable: false, icon: new google.maps.MarkerImage(shop.icon) });    
    }
}

// Pan Map //
function PanTo(la, lo) {
    var l = new google.maps.LatLng(la, lo)
    map.panTo(l);
}

// Zoom Map //
function ZoomTo(level) {
    map.setZoom(level);
}
 

function setPopupPosition() {
    var overlayWidth = jQuery('.overlay-map').width();
    var popupWidth = jQuery('.popup-map').width();
    var overlayHeight = jQuery('.overlay-map').height();
    var popupHeight = jQuery('.popup-map').height();
    
    var leftPos = (jQuery(window).width() - popupWidth) / 2;
    var topPos = (jQuery(window).height() - popupHeight) / 2;

    jQuery('.popup-map').attr('style', 'left:' + leftPos + 'px;top:' + topPos + 'px;');
}

function showPopup(marktTitle, marktUrl, marktSummary, marktThumbnail) {
    jQuery('.overlay-map').removeAttr('style');
    jQuery('.popup-map').removeAttr('style');

    jQuery('#spanMarktTitle').text(marktTitle);
    jQuery('#aMarktUrl').attr('href', marktUrl);
    jQuery('#imgMarktThumbnail').attr('src', marktThumbnail);
    jQuery('#imgMarktThumbnail').attr('alt', marktTitle);
    jQuery('#imgMarktThumbnail').attr('title', marktTitle);
    jQuery('#divMarktSummary').html(marktSummary);
}

function hidePopup() {
    jQuery('.overlay-map').attr('style', 'display:none;');
    jQuery('.popup-map').attr('style', 'display:none;');
}



