/* 
 @author Marco Pohl
 */
	window.overlay = null;
    window.sedd_bs = new Array();
    window.sedd_bw = new Array();
    window.sedd = new Array();
    window.arr_links_bs = new Array();
    window.arr_links_bw = new Array();
    window.arr_links = new Array();
    var con = document.getElementById('container');
    var divHash = new Hash();
	
// Baustellen Icons werden hier definiert
    var iconbs = new GIcon();
    iconbs.image = "/media/images/elements/building_sites/investitionen.png";
    iconbs.iconSize = new GSize(43, 61);
    iconbs.iconAnchor = new GPoint(9, 20);
    iconbs.infoWindowAnchor = new GPoint(21, 5);
    iconbs.infoShadowAnchor = new GPoint(18,25);

// Bauwerke Icons werden hier definiert
    var iconbw = new GIcon();
    iconbw.image = "/media/images/elements/building_sites/bauwerke.png";
    iconbw.iconSize = new GSize(43, 61);
    iconbw.iconAnchor = new GPoint(9, 20);
    iconbw.infoWindowAnchor = new GPoint(21, 5);
    iconbw.infoShadowAnchor = new GPoint(18, 25);

// Erstellt Marker samt InfoWindow bei Click
    function createMarkerBs(point,icon, html) {
        var marker = new GMarker(point,icon);
        GEvent.addListener(marker, "click", function() {
            marker.openInfoWindow(html,{'maxWidth':'286'});
            showContainer(html);
        });
        return marker;
    }

    function createMarkerBw(point,icon, html) {
        var marker = new GMarker(point,icon);
        GEvent.addListener(marker, "click", function() {
            marker.openInfoWindow(html,{'maxWidth':'286'});
            showContainer(html);
        });
        return marker;
    }
	 
 // Event an Button-Click hängen im div 'buttons'
    function initEvent(){
        $('buttons').getElements('a').each(function(lk){
			lk.addEvent('click',function(a){
//				alert($type($('closeBtn')));
				if($type($('closeBtn'))){
					$('closeBtn').fireEvent('click', $('closeBtn'));
				}
				var investitionenaktiv = '/media/images/elements/building_sites/investitionenaktiv.png';
				var investitioneninaktiv  = '/media/images/elements/building_sites/investitioneninaktiv.png';
				var bauwerkeaktiv = '/media/images/elements/building_sites/bauwerkeaktiv.png';
				var bauwerkeinaktiv  = '/media/images/elements/building_sites/bauwerkeinaktiv.png';
				var a = new Event(a);
				a.stop();
				if(a.target){
					var p = a.target.getParent().getParent();
					var t = a.target.getParent();
				}else{
					var p = a.event.getParent();
					var t = a.event;
				}
				if(t.hasClass('investitionen')){
					runMarkers(window.sedd_bw,'hide');
					runMarkers(window.sedd_bs,'show');
					hideContainerFirst();
					hideBauwerke();
					showInvestitionen();
					p.getElement('.investitionen').getElement('img').set('src',investitionenaktiv);
					p.getElement('.bauwerke').getElement('img').set('src',bauwerkeinaktiv);
					map.setCenter(window.bounds_bs.getCenter(), map.getBoundsZoomLevel(window.bounds_bs)-1);
					map.closeInfoWindow();
					if($('buttons').getElement('.listenansicht').hasClass('ansicht_active')){
						$('list_container').getElement('.link_active').removeClass('link_active').addClass('link_inactive');
					}
				}
				if(t.hasClass('bauwerke')){
					runMarkers(window.sedd_bs,'hide');
					runMarkers(window.sedd_bw,'show');
					hideContainerFirst();
					hideInvestitionen();
					showBauwerke();
					p.getElement('.bauwerke').getElement('img').set('src',bauwerkeaktiv);
					p.getElement('.investitionen').getElement('img').set('src',investitioneninaktiv);
					map.setCenter(window.bounds_bw.getCenter(), map.getBoundsZoomLevel(window.bounds_bw)-1);
					map.closeInfoWindow();
					if($('buttons').getElement('.listenansicht').hasClass('ansicht_active')){
						if($('list_container').getElement('.link_active')){
							$('list_container').getElement('.link_active').removeClass('link_active').addClass('link_inactive');
						}
					}
				}
            })
        });
     }

// Blendet Marker ein, bzw. aus
	function showMarker(m){m.show();}
	function hideMarker(m){m.hide();}
		 
// Zusatzfunktion für Marker-HIDE oder Marker-SHOW
function runMarkers(arr, todo){
     switch(todo){
       case 'show':
         arr.each(showMarker);
         break;
       case 'hide':
         arr.each(hideMarker);
         break;
    }
}


// Erst im DOM des Infofensters geladen
	function showContainer(html){
		var lk = html.getElement('a.details');
			lk.addEvent('click',function(c){
			var c = new Event(c);
			c.stop();
			var tar = lk.get('href').replace(/.*#/,'');
			hideDivs(tar);
			document.location.hash = tar;
			if($type($('closeBtn'))){
				$('closeBtn').fireEvent('click', $('closeBtn'));
			}
//			window.overlay.position.delay(1500);
		});
	}


		
// Befüllt divHash mit den Content-Containern

// FÜR LISTENANSICHT :
// befüllt ein array mit allen links der class 'investition'
// und ein zweites arry mit allen links der class 'bauwerk'
// Die Hintergrundfarben sind abwechselnd blau und weiß

	function fillArrLinks(){
            var el = $('list_container').getElement('ul').getElements('li');
            el.each(function(b){
                window.arr_links.push(b);

                if(b.hasClass('investition')){
                    window.arr_links_bs.push(b);}else{
                    window.arr_links_bw.push(b);
                }
            });
	}
// Blendet Links mit class 'investition' aus
function hideInvestitionen(){
    window.arr_links_bs.each(function(a){
        a.setStyle('display','none');
    });
}

// Blendet Links mit class 'investition' ein
function showInvestitionen(){
    window.arr_links_bs.each(function(a){
        a.setStyle('display','block');
    });
}

// Blendet Links mit class 'bauwerk' aus
function hideBauwerke(){
    window.arr_links_bw.each(function(a){
        a.setStyle('display','none');
    });
}

// Blendet Links mit class 'bauwerk' ein
function showBauwerke(){
    window.arr_links_bw.each(function(a){
        a.setStyle('display','block');
    });
}

// Erst im DOM des Infofensters geladen
function hideDivs(container_id){
    divHash.each(function(item){
        item.setStyle('display','none');
    });
    if ($('container').getStyle('display') == 'none'){
        $('container').setStyle('display','block');
    }
    $(container_id).setStyle('display','block');
    document.location.hash = container_id;
}

// Blendet kompletten Div 'container' aus
function hideContainerFirst(){
    $('container').setStyle('display','none');
}

// Springt zu den Detail-Informationen
//function toggleInfo(container_id){
//    $(container_id).getElement('.toggle_info').getElement('a').addEvent('click', function(a){
//        var b = new Event (a);
//        b.stop();
//        document.location.hash=('gen_info_'+container_id.replace(/content/,''));
//    });
//}

	// Steuert Ansichtenwechsel
	function changeView(){
            var karte = $('buttons').getElement('.ansicht').getElement('.kartenansicht');
            var liste = $('buttons').getElement('.ansicht').getElement('.listenansicht');
            var icon1 = $('buttons').getElement('.ansicht').getElement('.icon1');
            var icon2 = $('buttons').getElement('.ansicht').getElement('.icon2');

            karte.addEvent('click', function(g){
				if($type($('closeBtn'))){
					$('closeBtn').fireEvent('click', $('closeBtn'));
				}
                hideContainerFirst();
                var h = new Event(g);
                h.stop();
                $('map_container').setStyle('display','block');
                $('list_container').setStyle('display','none');
                if(karte.hasClass('ansicht_active')){
                    karte.addClass('ansicht_active');
                    icon1.addClass('ansicht_active');
                    icon2.removeClass('ansicht_active');
                    liste.removeClass('ansicht_active');
                }else{
                    icon1.toggleClass('ansicht_active');
                    karte.toggleClass('ansicht_active');
                    icon2.removeClass('ansicht_active');
                    liste.removeClass('ansicht_active');
                }
				window.setTimeout('map.setCenter(window.bounds.getCenter(), map.getBoundsZoomLevel(window.bounds)-1)',50);
            });

            liste.addEvent('click', function(i){
				if($type($('closeBtn'))){
					$('closeBtn').fireEvent('click', $('closeBtn'));
				}
                hideContainerFirst();
                var j = new Event(i);
                j.stop();
                $('map_container').setStyle('display','none');
                $('list_container').setStyle('display','block');
                if(liste.hasClass('ansicht_active')){
                    liste.addClass('ansicht_active');
                    icon2.addClass('ansicht_active');
                    icon1.removeClass('ansicht_active');
                    karte.removeClass('ansicht_active');
                }else{
                    icon2.toggleClass('ansicht_active');
                    liste.toggleClass('ansicht_active');
                    icon1.removeClass('ansicht_active');
                    karte.removeClass('ansicht_active');
                }
            });

            icon1.addEvent('click', function(k){
				if($type($('closeBtn'))){
					$('closeBtn').fireEvent('click', $('closeBtn'));
				}
                hideContainerFirst();
                var l = new Event(k);
                l.stop();
                $('map_container').setStyle('display','block');
                $('list_container').setStyle('display','none');
                if(icon1.hasClass('ansicht_active')){
                    icon1.addClass('ansicht_active');
                    karte.addClass('ansicht_active');
                    icon2.removeClass('ansicht_active');
                    liste.removeClass('ansicht_active');
                }else{
                    icon1.toggleClass('ansicht_active');
                    karte.toggleClass('ansicht_active');
                    icon2.removeClass('ansicht_active');
                    liste.removeClass('ansicht_active');
                }
            });

            icon2.addEvent('click', function(m){
				if($type($('closeBtn'))){
					$('closeBtn').fireEvent('click', $('closeBtn'));
				}
                hideContainerFirst();
                var n = new Event(m);
                n.stop();
                $('map_container').setStyle('display','none');
                $('list_container').setStyle('display','block');
                if(icon2.hasClass('ansicht_active')){
                    icon2.addClass('ansicht_active');
                    liste.addClass('ansicht_active');
                    icon1.removeClass('ansicht_active');
                    karte.removeClass('ansicht_active');
                }else{
                    icon2.toggleClass('ansicht_active');
                    liste.toggleClass('ansicht_active');
                    icon1.removeClass('ansicht_active');
                    karte.removeClass('ansicht_active');
                }
				window.setTimeout('map.setCenter(window.bounds.getCenter(), map.getBoundsZoomLevel(window.bounds)-1)',50);
            });
	}

// Hier wird die Linkliste der Listenansicht geladen
    function loadList(){
        var list_el = $('list_container').getElement('ul').getElements('li');
        list_el.each(function(a){
            a.getElement('a').addEvent('click',function(b){
                var c = new Event (b);
                c.stop();
                var list_id = a.getElement('a').get('href').replace(/.*#/,'');
                hideDivs(list_id);
				if($type($('closeBtn'))){
					$('closeBtn').fireEvent('click', $('closeBtn'));
				}
//                toggleInfo(list_id);
            });
        });
    }

	function setInactive(){
            window.arr_links.each(function(a){
                var lk = a.getElement('a');
                if(lk.hasClass('link_active')){
                    lk.removeClass('link_active');
                    lk.addClass('link_inactive');
                }
            });
	}

	function changeLink(){
            setInactive();
            window.arr_links.each(function(a){
                var lk = a.getElement('a');
                lk.addEvent('click', function(b){
                    var c = new Event(b);
                    c.stop();
                    setInactive();
                    c.target.removeClass('link_inactive');
                    c.target.addClass('link_active');
					if($type($('closeBtn'))){
						$('closeBtn').fireEvent('click', $('closeBtn'));
					}
                });
            });
	}
	
// Map laden:
		
	function loadMap() {

		window.overlay = new Overlay({
			colour: '#fff',
			opacity: 0.8,
			zIndex: 5
		});
		$('OverlayContainer').setStyle('display','none');
		createAllGalleries();
		hideContainerFirst();
		map = new GMap2(document.getElementById("map_canvas"));
		map.enableScrollWheelZoom();
		map.addControl(new GLargeMapControl());
		//map.setCenter(new GLatLng(51.046689, 13.765177),13);
		GEvent.addListener(map, "click", function() {
			divHash.each(function(item){
				item.setStyle('display','none');
			});
		});
		fillHash();
		fillArrLinks();
		initEvent();
		$('list_container').setStyle('display','none');
		changeView();
		loadList();
		changeLink();

		window.bounds = new GLatLngBounds();
		window.bounds_bs = new GLatLngBounds();
		window.bounds_bw = new GLatLngBounds();
		createAllMarkers();

		window.sedd.each(function(m){
			map.addOverlay(m);
			window.bounds.extend(m.getLatLng());
		});
		map.setCenter(window.bounds.getCenter(), map.getBoundsZoomLevel(window.bounds)-1);
		$('buttons').getElement('.investitionen').fireEvent('click', $('buttons').getElement('.investitionen'));
		$('buttons').getElement('.ansicht').getElement('.kartenansicht').fireEvent('click',$('buttons').getElement('.ansicht').getElement('.kartenansicht'));

		$('loading').set('tween', {duration: 'long'});
		$('loading').tween.delay(300,$('loading'),['opacity',0]);
	}



