﻿/// google maps
function log(s) {
   // if (typeof console !== 'undefined')
     // console.log(s);
}

// static coordinates
var llEmpty = new google.maps.LatLng(-1, -1);
var llKoelstra = new google.maps.LatLng(53.006469, 6.060247);
var ownLocationMarker = undefined;      // als de gebruiker zoekt komt deze marker op de plek terrecht
var ownLocationCountry = undefined;     // wordt geset op dezelfde locatie als de marker
var fluster;
var flusterReady = false;
var dealersInitializedCount = 0;
function initialize(dealers, searchFieldId) {

    myOptions = { zoom: 8, center: llKoelstra, mapTypeId: google.maps.MapTypeId.ROADMAP, scaleControl: true };
    map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
    fluster = new Fluster2(map);
    geocoder = new google.maps.Geocoder();

    // Set styles
    fluster.styles = {
    // This style will be used for clusters with more than 0 markers
        /*0: {
            image: 'http://www.koelstra.com/img/googlemaps_marker.gif', //'http://gmaps-utility-library.googlecode.com/svn/trunk/markerclusterer/1.0/images/m1.png',
            textColor: '#FFFFFF',
            width: 53,
            height: 52
        },*/
    0: {
            image: 'http://www.koelstra.com/img/googlemaps/meerDealers.png',
            textColor: '#FF6800',
            //width: 50, height: 29
            width: 46,height: 54,
            textOffset: '8px'
            /*
            image: 'http://www.koelstra.com/img/googlemaps_marker.gif',
            textColor: '#000000',
            //width: 50, height: 29
            width: 25,height: 31,
            textOffset: '-5px'*/
        }  
    };


    //create markers
    for (var i = 0; i < dealers.length; i++) {
        var d = dealers[i];
        createMarkers(d);
    }
    //wait untill all dealers have coordinates/markers
    function checkReady() {
        if (dealersInitializedCount < dealers.length) {
            setTimeout(checkReady, 50);
            return;
        }
        //add the markers to the cluster
        for (var i = 0; i < dealers.length; i++) {
            if (dealers[i].marker) {
                fluster.addMarker(dealers[i].marker);
            }
        }
        //initialize
        fluster.initialize();
        flusterReady = true;
        renderdealers = true;

        //initial zoom:
        if (typeof geoip_city === 'function') {
            var addr = geoip_city();
            if (addr != undefined && addr != '') {
                addr += ', ' + geoip_country_name();
                gotoLocationAndZoom(addr, 9, true);
                try {
                    //temporary,
                    if (searchFieldId != undefined) {
                        var txtInput = document.getElementById('' + searchFieldId);
                        if (txtInput) {
                            txtInput.value = geoip_city();
                        }
                    }
                } catch (e) { }
                gotoLocationAndZoom(document.getElementById('tbZoeken').value, 9, true)
                return;
            }
        }
    }
    checkReady();
    
    
    
    
	/*

    if (typeof geoip_city === 'function') {
        var addr = geoip_city();
        if (addr != undefined && addr != '') {
            addr += ', ' + geoip_country_name();
            gotoLocationAndZoom(addr, 9, true);
            try {
                //temporary,
                if (searchFieldId != undefined) {
                    var txtInput = document.getElementById(''+searchFieldId);
                    if (txtInput) {
                        txtInput.value = geoip_city();
                    }
                }
            } catch (e) { }
            gotoLocationAndZoom(document.getElementById('tbZoeken').value, 9, true)
            return;
        }
    }
//    gotoLocationAndZoom(country, 6, false);
*/
}

var activeInfoWindow = null;
var markerImage = new Image();
markerImage.src = 'http://www.koelstra.com/img/googlemaps/dealer.png';  //'http://www.koelstra.com/img/googlemaps_marker.gif';
function markerOnClick() {
    if (activeInfoWindow) {
        activeInfoWindow.close();
    }
    if (!this.disableAutoZoom) {
        map.setCenter(this.position);
        map.setZoom(15);
    }
    if (this.infoHtmlMulti) {
        activeInfoWindow = new google.maps.InfoWindow({ content: this.infoHtmlMulti });
    } else {
        activeInfoWindow = new google.maps.InfoWindow({ content: this.infoHtml });
    }
    activeInfoWindow.open(map, this);
}
function createMarkerForDealer(dealer) {
	var marker = new google.maps.Marker({ position: dealer.llObject, title: dealer.name, icon: markerImage.src });
    dealer.marker = marker;
    var dealerCountry = dealer.country;
    var address = '' + dealer.streetAndNumber + ', ' + dealer.city;
    var adressString = '';//translate('Adres', language) + ': ';
	//city: STA CRUZ DE TENERIFE
	if(dealerCountry=='España') {
		marker.country = dealer.city=='STA CRUZ DE TENERIFE'?'ESPANA2':'ESPANA';
	} else if (dealerCountry == 'Belgique') {
		marker.country = 'Belgie';
	
	} else {
		marker.country = dealerCountry;
	}
	//dealer.marker.country = dealer.country=='España'?'ESPANA':dealer.country;
	marker.infoHtml = '<h1 class=\'googleMarker\'>' + dealer.name + '</h1>' + adressString + address + '<br/>';
	marker.infoHtml2 = '<h1 class=\'googleMarker\' style=\'margin-bottom:0px;\'>' + dealer.name + '</h1>' + adressString + address + '<br/>';
	if (dealer.website != "") {
	    marker.infoHtml += "<a href=\"" + dealer.website + "\" target=\"blanc\">" + dealer.website + "</a><br />";
	    marker.infoHtml2 += "<a href=\"" + dealer.website + "\" target=\"blanc\">" + dealer.website + "</a><br />";
	}
    google.maps.event.addListener(marker, 'click', markerOnClick);
}

function createMarkers(dealer) {
    if (dealer.lat && dealer.lng) {
        dealer.llObject = new google.maps.LatLng(dealer.lat, dealer.lng);
        createMarkerForDealer(dealer);
        dealersInitializedCount++;
        return true;
    } else {
        var address = '' + dealer.streetAndNumber + ', ' + dealer.city + ', ' + dealer.country;
        geocoder.geocode({ 'address': address }, (function(dealer) {
            return function(results, status) {
                if (status == google.maps.GeocoderStatus.OK) {
                    if (status != google.maps.GeocoderStatus.ZERO_RESULTS) {
                        dealer.llObject = results[0].geometry.location;
                        createMarkerForDealer(dealer);
                    } else {
                        dealer.llObject = llEmpty;
                    }
                } else {
                    dealers.llObject = llEmpty;
                }
                dealersInitializedCount++;
            }
        })(dealer));
    }
}
 

function getGoogleMultipleReturnsHtml(googleResults) {
	var html = multipleDealersReturnsHtml+"<br />"; // dealerzoeken.aspx
    for (var i = 1; i < googleResults.length + 1; i++)
        html += "&nbsp;" + i + ": " + getGoogleClientLink(googleResults[i - 1])+"<br/>";
    return html;
}

function getGoogleClientLink(googleResult) {
    return "<a class=\"googleMapsLink\" href=\"javascript:gotoLocationAndZoom(\'" + googleResult.formatted_address + "\', 9, true);\">" + googleResult.formatted_address + "</a>";
}

function gotoLocationAndZoom(location, zoom, renderdealers) {
    if (!flusterReady) {
        return;
    }
    jQuery("#googleMapFeedback").html("");
    if (ownLocationMarker !== undefined)
        ownLocationMarker.setMap(null);

    var locAlt = NietDeLocatie;
    locAlt = locAlt.replace("MYLOCATION", "'" + location + "'");
    
    $('.searchAltFeedback').text("");
    $('.searchAltFeedback').text(locAlt);
    
    
    ownLocationCountry = undefined;
    delete ownLocationMarker;

    if (geocoder) {
        geocoder.geocode({ 'address': location }, (function(results, status) {
            log("GoogleStatus: " + status);
            if (status == google.maps.GeocoderStatus.OK) {
                if (status != google.maps.GeocoderStatus.ZERO_RESULTS) {
                    if (results.length > 1) {
                        var html = getGoogleMultipleReturnsHtml(results);
                        jQuery("#googleMapFeedback").html(html);
                    }
                    else {
                        map.setCenter(results[0].geometry.location);
                    }
                    ownLocationMarker = new google.maps.Marker({ position: results[0].geometry.location, map: map, icon: 'http://www.koelstra.com/img/googlemaps_ownpositionmarker.gif', title: 'Eigen locatie' });
                    if (renderdealers == true && results[0].address_components[4] != undefined) {
                        ownLocationCountry = results[0].address_components[4].long_name;
                        log("4:" + results[0].address_components[4].long_name);
                    }
                    else if (renderdealers == true && results[0].address_components[3] != undefined) {
                        ownLocationCountry = results[0].address_components[3].long_name;
                        log("3:" + results[0].address_components[3].long_name);
                    }
                    else if (renderdealers == true && results[0].address_components[2] != undefined) {
                        ownLocationCountry = results[0].address_components[2].long_name;
                        log("2:" + results[0].address_components[2].long_name);
                    }
                    else {
                        ownLocationCountry = -1;
                    }
                    ownLocationMarker.visible = false;
                    map.setZoom(zoom);
                } else {
                    //alert('Er is een fout opgetreden. Probeer een andere zoekopdracht .'+status);
                }
            } else {
                //alert('Er is een fout opgetreden. Probeer een andere zoekopdracht.' +status);
            }
            if (renderdealers == true) {
                //renderMarkers(ownLocationMarker, 50, ownLocationCountry);
                
            }
        }
        ));
    }
}
 

//var marker = new google.maps.MarkerImage("http://www.koelstra.com/img/googlemaps_marker.gif", new google.maps.Size(25, 31));
function translate(text, language) {
    //log(text + ': ' + language);
    if (text == 'Adres' && language == 'de') return 'Addresse'; // duits
    else if (text == 'Adres' && language == 'nl') return 'Adres';  // nederlands
    else if (text == 'Adres' && language == 'fr') return 'Adres'; // frans
    else if (text == 'Adres' && language == 'en') return 'Adress'; // engels
    else if (text == 'Adres' && language == 'es') return 'Adres'; // spaans
    else return 'Adres';  // nederlands
}

