// firebug fuer IE ;)
if (!window.console || !console.firebug) {
    var names = ['log', 'debug', 'info', 'warn', 'error', 'assert', 'dir', 'dirxml', 'group', 'groupEnd', 'time', 'timeEnd', 'count', 'trace', 'profile', 'profileEnd'];
    window.console = {};
    for (var i = 0; i < names.length; ++i) 
        window.console[names[i]] = function(){
        }
}

try {
    loadFirebugConsole(); // Hallejulja!	
} 
catch (e) {
}


google.load("maps", "2.x");

function initialize(){
    var haendlerForm = $('div#haendlersuche');
    var address = $('#search_request').text();
    
    var startAdresse = $('#such_adresse');


    // Position
    $('div#spalte3').css('left', '-30px');
    $('div#spalte3').css('top', '128px');
    
    // Ergebnisse anzeigen?
    if (address.length > 0) {

	address = address + ' ' + $(document).getUrlParam('land');
	console.log('suchstring='+ address);
	$('div#wartezeit').show();
        //haendlerForm.hide();
        //$('div#map_container').css('marginLeft', '211px');
        //$('div#map').css('left', '0px');
        
	var sollLand = '';
        var istLand = 0;
        if ($(document).getUrlParam('land') == 'DE') {
           sollLand = 'Deutschland';
        } else if ($(document).getUrlParam('land') == 'AT') {
           sollLand = 'sterreich';
        } else { // FR
           sollLand = 'Frankreich';
        }

        var numberOfResultList = $('table.sortable:last tr').length - 1;
        
        $('#liste').html($('.sortable').parent().html());
        
        
        var map = new GMap2(document.getElementById("map"));
        map.setCenter(new GLatLng(50, 9), 11);
        
        geocoder = new GClientGeocoder();
        
	geocoder.getLocations(address,function(response){
          if (response) {
            // console.log('hmann:' + response.Placemark[0].address);
             var such_adresse = $('#such_adresse').text();
             such_adresse += response.Placemark[0].address;
             $('#such_adresse').text(such_adresse);
	     // Ist das sollLand nicht im Placemark vom Google-Ergebnis wird istLand auf -1 gesetzt
             istLand = response.Placemark[0].address.search(sollLand);
             //console.log('Soll= ' + sollLand + ' IST= '+ istLand);
          }
        });

        geocoder.getLatLng(address, function(startAddressCoordinates){
            if (!startAddressCoordinates || istLand == -1) {
                console.log(address + " not found");
		$('div#map_container').hide();
                haendlerForm.show();
                setError();
            }
            else {
		removeError();
                prarams = '';
                prarams += '&country=' + $(document).getUrlParam('land');
                prarams += '&plz=' + $(document).getUrlParam('plz');
                prarams += '&plzlength=' + $(document).getUrlParam('plzlength');
                prarams += '&einsatz=' + $(document).getUrlParam('einsatz');
                prarams += '&art=' + $(document).getUrlParam('art');
                prarams += '&produkt=' + $(document).getUrlParam('produkt');
                prarams += '&region=' + $(document).getUrlParam('region');
                
                requestUrl = '/eberspaecher_internet/scripts/getCompaniesHaendler.php?coords=' + startAddressCoordinates.y + ',' + startAddressCoordinates.x + prarams;
                
                // Hier AJAX Call machen und als Ergebniss das JS-Array weiter verarbeiten
                $.getJSON(requestUrl, null, function(nearAddresses){
                    console.log(nearAddresses);
                    
		    // hmann: spaeteres Einblenden der Map, damit Zwischenscreen fuer User nicht sichtbar ist
		    $('div#wartezeit').hide();
        	    haendlerForm.hide();
        	    $('div#map_container').css('marginLeft', '211px');
       	 	    $('div#map').css('left', '0px');

                    var map = new GMap2(document.getElementById("map"));
                    map.addControl(new GSmallMapControl());
                    map.setCenter(new GLatLng(startAddressCoordinates.y, startAddressCoordinates.x), 11);
                    
                    var list = [];
                    
                    // Create our "tiny" marker icon
                    var tinyIcon = new GIcon();
                    tinyIcon.image = "/eberspaecher_internet/images/JE_Logo_white.png";
                    // tinyIcon.shadow = "http://labs.google.com/ridefinder/images/mm_20_shadow.png";
                    tinyIcon.iconSize = new GSize(30, 30);
                    // tinyIcon.shadowSize = new GSize(22, 20);
                    tinyIcon.iconAnchor = new GPoint(10, 50); // setze das icon mittig über den Zielpunkt
                    tinyIcon.infoWindowAnchor = new GPoint(5, 1);
                    
                    // Set up our GMarkerOptions object literal
                    markerOptions = {
                        icon: tinyIcon
                    };
                    
                    var bounds = new GLatLngBounds();

		    // eine zweite Map fuer die Weganzeige, um zurueck zur Uebersicht zu gelangen
                    var map_weg = new GMap2(document.getElementById("map_weg"));
                    map_weg.setCenter(new GLatLng(50, 9), 11);
                    map_weg.addControl(new GSmallMapControl());

                    GEvent.addListener(map_weg, "click", function(){
                        $('#map_weg').hide();
                        $('#map').show();
                        $('#close_text').hide();
                        $('#such_adresse').show();
                    });
                    //var dir = new GDirections(map_weg);
                    dir = new GDirections(map_weg);

                    i = 0;
                    $.each(nearAddresses, function(){
                    
                        console.log(this);
                        
                        if (i++ < numberOfResultList) {
                            latLng = new GLatLng(this.lat, this.lng);
                            
			    // infoFenster bei Klick auf JE-Logo anzeigen
			    var tooltip = this.name+", "+this.street+","+this.zip+" "+this.city;
                            var jeMarker = new GMarker(latLng, {'icon': tinyIcon,'title':tooltip});
                            //var infoText = "<b>"+this.name+"</b></br>"+this.street+"</br>"+this.zip+" "+this.city;
			    // var infoText = "<b>"+this.name+"</b></br>"+this.street+"</br>"+this.zip+" "+this.city+'<form action="http://maps.google.de/maps" method="get" target="_blank"><br/><input type="hidden" name="saddr" id="saddr" value='+address+' style="width: 180px; color:#666;" />&nbsp;&nbsp;<input type="hidden" name="daddr" value="'+this.street+' '+this.zip+' '+this.city+'"></input><input type="submit" class="formbutton" value="Route berechnen" /></form>';
                            var infoText = '<b>'+this.name+'</b></br>'+this.street+'</br>'+this.zip+' '+this.city+'<br/><br/><a href="javascript:draw_infoWindow(\''+this.street+" "+this.zip+" "+this.city+'\','+startAddressCoordinates.y+','+startAddressCoordinates.x+','+this.lng+','+this.lat+');">Route hierher</a>';

                            GEvent.addListener(jeMarker, "click", function() {
                                jeMarker.openInfoWindowHtml(infoText)
                            });

                            map.addOverlay(jeMarker);
                            bounds.extend(latLng);
                            
                            var $td = $('table.sortable tr:eq(' + parseInt(i) + ') td');
                            // $td.eq(0).children().val(this.werkst);
                            $td.eq(0).text(this.name);
                            $td.eq(1).text(this.street);
                            $td.eq(2).text(this.zip + ' ' + this.city);
                            $td.eq(3).text(this.tel);
                            $td.eq(4).text('');
                            // $td.eq(5).text('');
                            
                        }
                    })
                    
                    map.setZoom(map.getBoundsZoomLevel(bounds));
                    map.setCenter(bounds.getCenter());
                    
                    function getDirections(nearAddresses, num){
                        var dirXY = new GDirections();
                        
                        GEvent.addListener(dirXY, "load", function(){

                            // Hier die HTML Table füllen/ersetzen
                            $td = $('table.sortable tr:eq(' + parseInt(num + 1) + ') td');
                            $td.eq(4).text(dirXY.getDistance().html.replace('&nbsp;', ' '));
                            // $td.eq(5).text(dirXY.getDuration().html);
                            
                            
                            // Click event auf Zeile
                            $('table.sortable tr:eq(' + parseInt(num + 1) + ')').css('cursor', 'pointer')
                            $('table.sortable tr:eq(' + parseInt(num + 1) + ')').click(function(){
                                $(this).find('input').trigger('click');
                                draw(nearAddresses[num].street + ' ' + nearAddresses[num].zip + ' ' + nearAddresses[num].city);
                            })
                            
                            if ((num + 1) < nearAddresses.length && (num < numberOfResultList)) {
                                getDirections(nearAddresses, (num + 1));
                            }
                        });
                        
                        GEvent.addListener(dirXY, "error", function(){
                            console.log("Directions Failed: " + dirXY.getStatus().code + ' dirXY: ');
                            console.log(dirXY);
                            
                        });
                        
                        ad1 = $('#search_request').text();
                        ad2 = nearAddresses[num].street + ' ' + nearAddresses[num].zip + ' ' + nearAddresses[num].city;
                        
                        dirXY.load('from: ' + ad1 + '@' + startAddressCoordinates.y + ',' + startAddressCoordinates.x + ' to: ' + ad2 + '@' + nearAddresses[num].lat + ',' + nearAddresses[num].lng);
                    }
                    
                    getDirections(nearAddresses, 0);
                    
                    
                    
                    // zeichne einen Weg
                    function draw(ad2){
                        console.log('adresse: ' + ad2);
                        //map.clearOverlays();
                        //var dir = new GDirections(map);
                        
                        $('#route').html('');
                        dir.load("from: " + $('#search_request').text() + '@' + startAddressCoordinates.y + ',' + startAddressCoordinates.x + " to: " + ad2, {
                            preserveViewport: false
                        });
			$('#map').hide();
                        $('div#map_weg').css('left', '0px');
                        $('#map_weg').show();
                        $('#close_text').show();
                        $('#such_adresse').hide();
                    }

                    // map.setCenter(new GLatLng(50, 9), 13);
		    $('#such_adresse').show();
                    $('#frame_searchResult').show();
                    $('#map').after($('#frame_searchResult').html());
                    
                });
            }
        });
    }
}

// zeichne einen Weg
function draw_infoWindow(ad2,startY,startX,lng,lat){
        //var dir = new GDirections(map_weg);
        GEvent.addListener(dir, "load", function(){
            //console.log('hmann='+dir.getStatus().code);
           $('#route').html('');
           $('#map').hide();
           $('div#map_weg').css('left', '0px');
           $('#map_weg').show();
           $('#close_text').show();
           $('#such_adresse').hide();
        });

        GEvent.addListener(dir, "error", function(){
            console.log("Directions Failed draw_infoWindows: " + dir.getStatus().code + ' dir: ');
            console.log('Parameter:'+$('#search_request').text()+',Y='+startY+',x='+startX+',ad2='+ad2+',lat='+lat+',lng='+lng+'.');
        });

        dir.load("from: " + $('#search_request').text() + '@' + startY + ',' + startX+ " to: " + ad2 + '@' + lat + ',' + lng,{
             preserveViewport: false
        });
}


function setError(){
    removeError();
    $('div#wartezeit').hide();
    $('div#meldung').show();
}

function removeError(){
    $('div#meldung').hide();
}

google.setOnLoadCallback(initialize);
