﻿var map;
var address;
var addresses = [];
var addressesToShow;
var clusterer;


var geocoder = new GClientGeocoder();
geocoder.setBaseCountryCode("se")
var mapOptions = {
googleBarOptions : {
  style : "new"
        }
    }

    function loadMap(mapId, address) {
        $(function () { 
            showMaps(mapId, address);
            if (document.getElementById(mapId)) {
                var t = setTimeout(function () { ClearCopyrightText(mapId); }, 500);
            }
        });
    }

    function ClearCopyrightText(mapId) {
        var children = document.getElementById(mapId).childNodes;
        var copyrightText = '';
        $('#' + mapId + ' span').each(function () {
            if ($(this).html() != null) {
                copyrightText += $(this).html();
                $(this).html('');
            }
        });

        if (copyrightText != '') {
            children[2].innerHTML = copyrightText.replace('-', '') + '<a style="color: rgb(119, 119, 204);" class="gmnoprint terms-of-use-link" target="_blank" href="http://www.google.com/intl/sv_ALL/help/terms_maps.html">Villkor</a>';
        }
    }
    function GKeyboardPatch(map) {

        var button, divs = map.getContainer().getElementsByTagName( 'div' );
        var i = 0;
        while ( divs[i] ) {
            if ( divs[i].getAttribute( 'log' ) || ( divs[i].getAttribute( 'title' ) && divs[i].getAttribute( 'title' ) != '' ) ) {
                button = document.createElement( 'button' );
                button.setAttribute( 'value', divs[i].getAttribute( 'title' ));
                divs[i].appendChild( button );
                    if ( divs[i].getAttribute( 'log' )) { // only control buttons
                    // override the IE opacity filter that Google annoyingly sets
                    divs[i].style.filter = '';
                    // should really set to 'transparent'
                    divs[i].style.background = 'url( http://www.google.com/ intl/en_ALL/mapfiles/transparent.png )';
                }
            }
        i++;
        }
    }
    function showMaps(mapId) {

        if (document.getElementById(mapId)) {
            if (GBrowserIsCompatible()) {
                map = new GMap2(document.getElementById(mapId), mapOptions);
                var zoomControl = new GSmallZoomControl();
                map.addControl(zoomControl);
                GEvent.addDomListener( map, 'load', function() {
				setTimeout(function() { GKeyboardPatch(map)}, 3000 );
			});
                map.setCenter(new GLatLng(59.4180108, 17.9818379), 5);
                map.disableDragging();
                map.disableInfoWindow();
                map.disableDoubleClickZoom();
                map.disableScrollWheelZoom();
                map.disablePinchToZoom();
            }

            showAddress(address, map);
        }
        if (document.getElementById("large_canvas")) {
            if (GBrowserIsCompatible()) {

                var map = new GMap2(document.getElementById("large_canvas"), mapOptions);
                map.setUIToDefault();
                map.setCenter(new GLatLng(59.4180108, 17.9818379), 5);
            }
            showAllAddresses(addressesToShow, map);
            
            
        }
    }
function showAllAddresses(addressesToShow, map) {

    clusterer = new Clusterer(map);

    if (addressesToShow.indexOf('|') == -1)
        addresses = new Array();
    else
        addresses = addressesToShow.split('|');
    
    //Below is just some code to add randomized content to the map for optimization purposes, should be removed once validated. 
    var lngSpan =  19.423828-15.612305 ;
    var latSpan =  66.705169-55.899956 ;
    for (var i = 0; i < 5; i++) {
      addresses.push((55.899956 + latSpan * Math.random() )+ ';' +( 12.612305 + lngSpan * Math.random() ) + ';' + 'Cool Adress, surbrödsv. 234 Bergsjö');

    }
    //End optimization crap
        
    for(var i=0;i< addresses.length;i++) {
        var coords = addresses[i].split(';');
        point = new GLatLng(coords[0].replace(',','.'), coords[1].replace(',','.'));
        marker = new GMarker(point);
        clusterer.AddMarker(marker,'Det finns flera kontor i det här området, zooma in för att se dem.');
        marker.bindInfoWindowHtml(coords[2]);
    }  
}

  
function showAddress(newAddress, map) {
    
    address = newAddress;

    geocoder.getLatLng(
    address,
    function(point) {
        if (!point) {
            alert(address + " hittades inte!");
        } else {
            map.setCenter(point, 15);
            var marker = new GMarker(point);
            map.addOverlay(marker);
            marker.bindInfoWindowHtml(address);
            marker.openInfoWindowHtml(address);
            GEvent.addListener(marker, "click", function () { showModal(newAddress) });
           
        }
    }
  );
}

 
function showModal(newAddress) {
    
    $.modal('<div id="largeMap" style="height:400px; width:600px;"></div>');
    
    var largeMap;
    
    largeMap = new GMap2(document.getElementById("largeMap"), mapOptions);
    largeMap.setUIToDefault();

    geocoder.getLatLng(
    newAddress,
    function(point) {
        if (!point) {
            alert(newAddress + " not found");
        } else {
            largeMap.setCenter(point, 15);
            var marker = new GMarker(point);
            largeMap.addOverlay(marker);
            marker.bindInfoWindowHtml(newAddress);
            marker.openInfoWindowHtml(newAddress);
        }
    }
  );
}

function showModalStatic(newaddress) {

    $.modal('<div id="largeMapStatic" style="height:400px; width:600px;"></div>');

    var largeMap;

    largeMap = new GMap2(document.getElementById("largeMapStatic"), mapOptions);
    largeMap.setUIToDefault();

    geocoder.getLatLng(
    newaddress,
    function(point) {
        if (!point) {
            alert(newaddress + " not found");
        } else {
            largeMap.setCenter(point, 15);
            var marker = new GMarker(point);
            largeMap.addOverlay(marker);
            marker.bindInfoWindowHtml(newaddress);
            marker.openInfoWindowHtml(newaddress);
        }
    }
  );
}      
