
var gmarkers = [];

var markerCount=0;
var infoWindow = new google.maps.InfoWindow;

var addMapOnLoad = function(options){
	window.addEvent('domready',function(){
		tx_dsckzvzahnarzt_googlemap(options);
	});
};

var tx_dsckzvzahnarzt_googlemap = function(options) {
        var myLatLngBounds;
	
	var icons = options['marker']['icons'] || {
		icon : '/fileadmin/_img/googlemarker.png',
		shadow : '/fileadmin/_img/googlemarker_schatten.png'
	};

	var setMapOptions = function (options,mapOptions) {
		var optValue;
		var localObj;
		for(var optKey in options) {
			optValue = options[optKey];
			if(optKey == 'center') {
				mapOptions[optKey] = new google.maps.LatLng(options[optKey]['lat'],options[optKey]['lng']);
			} else if(optKey == 'zoom') {
				mapOptions[optKey] = parseInt(optValue);
			} else {
				
				if(typeof optValue == 'object'){
					mapOptions[optKey] = {};
					mapOptions[optKey] = setMapOptions(options[optKey],mapOptions[optKey]);
				} else {
					mapOptions[optKey] = optValue;
				}
			}
		}
		return mapOptions;
	};	
	
        
        
	var createMarker = function(opts){
              var marker = new google.maps.Marker(opts);
              gmarkers[markerCount]=marker;
              markerCount++;
		return 	marker;	
	}
	
	var bindMarker = function (localMarker,tooltip,markerKey){
		google.maps.event.addListener(localMarker, 'click', function() {
			infoWindow.setContent(tooltip);
                        
			infoWindow.open(map, localMarker);
		});
                var scroll = new Fx.Scroll(window);
                if(document.getElementById('marker'+markerKey))
                    {
                $('marker'+markerKey).addEvents({
                    click : function () {
                        infoWindow.setContent(tooltip);                        
                        infoWindow.open(map, localMarker);
                        
                        scroll.toElement('fe_map');                        
                    }
                });}
                /*
                if($('marker'+markerKey).addEventListener)
                {
                    $('marker'+markerKey).addEventListener("click",function() {
                        infoWindow.setContent(tooltip);
                        infoWindow.open(map, localMarker);
                        scroll.toElement('fe_map');
                    },false);
                } else if($('marker'+markerKey).attachEvent)
                {
                    $('marker'+markerKey).attachEvent("click",function() {
                        infoWindow.setContent(tooltip);
                        infoWindow.open(map, localMarker);
                        scroll.toElement('fe_map');
                    });
                }
                */
                
	}
	
        
	var addMarker = function (markerData,markerKey) {
            bindMarker(createMarker({
                    map : map,
                    position : new google.maps.LatLng(markerData['lat'], markerData['lng']),
                    icon : markerData['icon'] ? markerData['icon'] : icons.icon,
                    shadow : markerData['shadow'] ? markerData['shadow'] : icons.shadow
            }),markerData['tooltip'],markerKey);

            var latlng = new google.maps.LatLng(markerData['lat'], markerData['lng']);

            if(!myLatLngBounds) {
               myLatLngBounds = new google.maps.LatLngBounds(latlng,latlng);
            } else {
                  myLatLngBounds.extend(latlng);
            }
	};
	
	//map options
	var mapOptions = setMapOptions(options['mapOptions'],{});
	
	//map
	var map = new google.maps.Map(document.getElementById(options['mapId']), mapOptions);
        //myLatLngBounds = map.getBounds();
                
	//marker
	for(var markerKey in options['markers']) {
            
            if(markerKey == parseInt(markerKey)){
                
                addMarker(options['markers'][markerKey],markerKey);
            }
        }
	
        if(myLatLngBounds&&options['markers'].length>1) map.fitBounds(myLatLngBounds); 
	
	return map;
};

