// scope of contentarea
var maps = new Array();

(function($)
{
    var gmap = new Object;
    gmap.map;
    gmap.options;
    gmap.latlng;
    
    var firstElement;
	var lastElement;
	var content;
    
    $(document).ready(function() {
        if (maps != undefined && maps.length >= 1) {
            
            var html_code = "";
            html_code += "<h2>Interaktive Karte</h2>";
            html_code += "<div style=\"padding:0.3em; background-color:#F7F6F3; width:100%;\"><div id=\"map_canvas\" style=\"height:10em\"></div></div>";
            html_code += "<ul class=\"links\"><li><a id=\"bigmap\" href=\"#\">Karte anzeigen</a></li></ul><br class=\"fixfloat\" />";
            $("div .contact:last-child").append(html_code);
            
            before_initialization(maps);
            
            for (var objekt in maps) {
                initialize(maps[objekt]);
            }
            
            after_initialization(maps);
        }
        
        initialize_to();
    });
    
    function initialize_to() {
    	
    	$("#bigmap").click(function() {
        	
        	firstElement = $("h1");
        	lastElement = $(".block").last();
        	
        	content = firstElement.nextAll();
        	
        	firstElement.nextAll().remove();
        	
        	firstElement.text("Interaktive Karte");
        	firstElement.after(lastElement);
        	firstElement.after("<ul class=\"links\"><li><a id=\"gmapBackToContentArea\" href=\"#\">zurück zum Inhalt</a></li></ul>");
        	firstElement.after("<h3 style=\"margin:0 1.55em 0.3em 0; background-color:#F7F6F3; padding:0.5em;\">Kartenansicht</h3><div style=\"padding:1.25em; margin:0 1.25em 1em 0; background-color:#F7F6F3;\"><div id= \"map_canvas\" style=\"height:30em\"></div></div>");

        	firstElement.show();
        	
        	before_initialization(maps);
            
            for (var objekt in maps) {
                initialize(maps[objekt]);
            }
            
            initialize_back();
        });
    }
    
    function initialize_back() {
    	
    	$("#gmapBackToContentArea").click(function() {
        	firstElement.nextAll().remove();
        	firstElement.after(content);
        	initialize_to();
        });
    }
    
    function initialize(tmp) {
        
        tmp.latlng = new google.maps.LatLng(tmp.lat, tmp.lng);
      
        google.maps.event.addListener(tmp.latlng, 'zoom_changed', function() {
            setTimeout("moToPOI(gmap.lng, gmap.lat, gmap.map)", 500);
        });
      
        tmp.marker = new google.maps.Marker({
            position: tmp.latlng,
            map: gmap.map
        });
      
        google.maps.event.addListener(tmp.marker, 'click', function() {
            tmp.map.setZoom(8);
        });
    }
    
    
    function before_initialization(tmp) {
        
        // locate center
        var lat = 0;
        var lng = 0;
        var i = 0;
        
        for (var objekt in tmp) {
            lat = parseFloat(tmp[objekt].lat) +  parseFloat(lat);
            lng = parseFloat(tmp[objekt].lng) +  parseFloat(lng);
            i++;
        }
        lat = parseFloat(lat) / i;
        lng = parseFloat(lng) / i;

        gmap.latlng = new google.maps.LatLng(lat, lng);
        
        gmap.options = {
                zoom: 12,
                center: gmap.latlng,
                mapTypeId: google.maps.MapTypeId.ROADMAP
        }
        
        gmap.map = new google.maps.Map(document.getElementById("map_canvas"), gmap.options);
    }
    
    
    function after_initialization(tmp) {

    }

    function moToPOI(la, lo, mapi) {
        var myPOI = new google.maps.LatLng(la, lo);
        mapi.setCenter(myPOI);
    }
    
})(jQuery);
