// Globale Parameter definieren
var globalVars=new Array();
var selector=new String();

$(document).ready(function() {
	
	//
	// DOM-Manipulationen Anfang
	//
	
		
	//
	// jQuery-Tools Anfang
	//
		
	globalVars['ajaxLoaderImage']='assets/site/images/ajax-loader.gif';

	// Overlay-Initialisierung für Galerien
	selector='div.content div.galerie';
	// Overlays anlegen
	$(selector).each(function(index) {
		
		// ID für die Image-List-Boxen setzen
		$(this).attr('id', 'img_list_box_'+index);

		// Overlay-Container anlegen
		$('body').append('<div id="overlay_gallery_'+index+'" class="overlay"> <div class="image"><img src="'+globalVars['ajaxLoaderImage']+'"></div> <div class="info"><p class="caption"></p> <p class="position">Bild <span class="index"></span> von '+$('#img_list_box_'+index+' a').length+'</p> </div> <a class="prev">&nbsp;</a> <a class="next">&nbsp;</a> </div>');
		
		// Overlay-Bild laden
		$('#img_list_box_'+index+' a').click(function() {
			loadOverlayImage('#overlay_gallery_'+index+' img', $(this).attr('href'), '#overlay_gallery_'+index);
			
			// Titel des Overlays setzen
			$('#overlay_gallery_'+index+' p.caption').html($(this).attr('title'));
			
			// Aktuelle Position bestimmen
			globalVars['activeGalleryImage']=$('#img_list_box_'+index+' a').index($(this));
			
			// Position in der Bildunterschrift setzen
			$('#overlay_gallery_'+index+' span.index').html(globalVars['activeGalleryImage']+1);
			
			// Prev-Button prüfen
			if(globalVars['activeGalleryImage']==0) $('#overlay_gallery_'+index+' a.prev').addClass('disabled');
			else $('#overlay_gallery_'+index+' a.prev').removeClass('disabled');
			
			// Next-Button prüfen
			if(globalVars['activeGalleryImage']==$(selector+' a').length-1) $('#overlay_gallery_'+index+' a.next').addClass('disabled');
			else $('#overlay_gallery_'+index+' a.next').removeClass('disabled');
		});
		
		// Overlay aktivieren
		$('#img_list_box_'+index+' a').overlay({
			target: '#overlay_gallery_'+index,
			mask: {
				color: 'black',
				loadSpeed: 200,
				opacity: 0.7
			},
			onClose: function() {
				$('#overlay_gallery_'+index+' img').hide();
			},
			speed: 400,
			closeOnClick: true
		});
		
		// Funktion Next-Button
		$('#overlay_gallery_'+index+' a.next').click(function() {
			
			// Falls es ein weiteres Bild gibt
			if($('#img_list_box_'+index+' a').eq(globalVars['activeGalleryImage']+1).length)
			{
				// Bild laden
				loadOverlayImage('#overlay_gallery_'+index+' img', $('#img_list_box_'+index+' a').eq(globalVars['activeGalleryImage']+1).attr('href'), '#overlay_gallery_'+index);
				
				// Titel des Overlays setzen
				$('#overlay_gallery_'+index+' p.caption').html($('#img_list_box_'+index+' a').eq(globalVars['activeGalleryImage']+1).attr('title'));
				
				// Position in der Bildunterschrift setzen
				$('#overlay_gallery_'+index+' span.index').html(globalVars['activeGalleryImage']+2);
				
				// Prev-Button aktivieren
				$('#overlay_gallery_'+index+' a.prev').removeClass('disabled');
				
				globalVars['activeGalleryImage']++;
			}
			
			// Falls es keine weiteren Bilder mehr gibt, Next-Button deaktivieren
			if($('#img_list_box_'+index+' a').eq(globalVars['activeGalleryImage']+1).length==0)
			{
				$(this).addClass('disabled');
			}				
		});
		
		// Funktion Prev-Button
		$('#overlay_gallery_'+index+' a.prev').click(function() {
			
			// Falls es ein weiteres Bild gibt
			if($('#img_list_box_'+index+' a').eq(globalVars['activeGalleryImage']-1).length)
			{
				// Bild laden
				loadOverlayImage('#overlay_gallery_'+index+' img', $('#img_list_box_'+index+' a').eq(globalVars['activeGalleryImage']-1).attr('href'), '#overlay_gallery_'+index);
				
				// Titel des Overlays setzen
				$('#overlay_gallery_'+index+' p.caption').html($('#img_list_box_'+index+' a').eq(globalVars['activeGalleryImage']-1).attr('title'));
				
				// Position in der Bildunterschrift setzen
				$('#overlay_gallery_'+index+' span.index').html(globalVars['activeGalleryImage']);
				
				// Next-Button aktivieren
				$('#overlay_gallery_'+index+' a.next').removeClass('disabled');
				
				globalVars['activeGalleryImage']--;
			}
			
			// Falls es keine weiteren Bilder mehr gibt, Prev-Button deaktivieren
			if(globalVars['activeGalleryImage']==0)
			{
				$(this).addClass('disabled');
			}				
		});
	});
	
	// Overlay-Funktion: Bild laden
	function loadOverlayImage(overlayImage, bigImage, overlay)
	{
		// Altes Bild ausblenden
		$(overlayImage).fadeOut(200, function() {
			var loadEventCounter=1;
			
			// Neues Bild laden
			$(overlayImage).attr('src', bigImage).load(function() {
				// Mehrfach-Animationen verhindern
				if(loadEventCounter>1) return;
				
				// Größe und Position des Overlay-Containers anpassen
				$(overlay).animate({
					width: $(overlayImage).width(),
					height: $(overlayImage).height(),
					left: $(document).width()/2-$(overlayImage).width()/2
				}, 200, function() {
					// Neues Bild einblenden
					$(overlayImage).fadeIn(200);
					
					// Größe und Position des Overlay-Containers sichern
					$(overlay).css('left', $(document).width()/2-$(this).width()/2);
				});
				
				loadEventCounter++;
			});
		});
	}
	
	
	//
	// Galerie
	//
	
	// Scrollable-Vorbereitung: Thumbnails gruppieren und aktivieren
	var counter=1;
	var page=1;
	$('#scrollable a').each(function(index) {
		
		// ID des aktuellen Slides festlegen
		var currentSlide='slide_'+page;
		
		// Slide-Container anlegen
		if(counter==1) $('#slides').append('<div class="slide" id="'+currentSlide+'"></div>');
		
		// Thumbnail zum Slide-Container hinzufügen
		$('#'+currentSlide).append($(this));
		
		// Thumbnail aktivieren: Galerie anzeigen
		$(this).click(function(event) {
			event.preventDefault();
			galerieAnzeigen(index);
		})

		// Bei fünf Einträgen und falls es weitere Einträge gibt
		if(counter>=5 && $('#scrollable a').length>index+1)
		{
			// Zähler turüclsetzen
			counter=0;
			page++;
			
			// Navigation erweitern
			$('#slidebox_navigation').append('<li><a href="'+page+'"></a></li>');
		}
		
		counter++;
	});
	
	// Scrollable-Initialisierung
	var scrollable=$('#scrollable').scrollable({
		items: '#slides',
		clickable: false,
		circular: false
	}).navigator({
		navi: '#slidebox_navigation'
	});
	
	// Scrollable-API-Initialisierung
	var scrollableAPI=$('#scrollable').data('scrollable');
	
	// Position des Galerie-Pagers setzen
	$('#slidebox_navigation').css('margin-left', ($('#slidebox_navigation').width()-10)/2*-1).fadeIn('slow');
	
	// Funktion zur Anzeige der aktiven Galerie
	function galerieAnzeigen(index)
	{
		// Falls die gleiche Galerie bereits aktiv ist, abbrechen
		if(index==globalVars['aktiveGalerie']) return;
		
		// Bilder der Galerie laden
		$('#galerie_'+index+' .galerie_bild img').each(function(no) {

			// Bildquelle setzen
			$(this).attr('src', $(this).attr('rel'));
			
			// Bilder einblenden
			if(no==0) $(this).delay(1000).fadeIn('slow');
			else $(this).show();
		});
		
		// Aktives Thumbnail zurücksetzen
		$('#slides a').eq(globalVars['aktiveGalerie']).removeClass('active');
		
		// Neues Thumbnail markieren
		$('#slides a').eq(index).addClass('active');
		
		// Aktive Galerie ausblenden
		$('#galerie_'+globalVars['aktiveGalerie']).fadeOut('fast');

		// Neue Galerie einblenden
		$('#galerie_'+index).fadeIn('slow');
		
		// Next-Button prüfen
		if($('#galerie_'+index+' .galerie_bild img').length==1) $('#galerie_'+index+' .next').hide();

		// Neue aktive Galerie sichern
		globalVars['aktiveGalerie']=index;
	}
	
	// Erste Galerie laden
	$(window).load(function() {
		
		// Standard-Projektgalerie setzen
		var projekt=0;
		
		// Prüfen ob ein bestimmtes Projekt mittles eines Ankers übermittelt wurde
		if(window.location.hash.substr(1, 7)=='projekt')
		{
			// Projekt-ID entnehmen
			var hashArray=window.location.hash.split('=');
			projektID=hashArray[1];
			
			// Projektnummer anhand der Projekt-ID bestimmen
			$('#slides a').each(function(index) {
				if(this.id.substr(8)==projektID)
				{
					// Projekt-Nummer setzen
					projekt=index;
					
					// Erstes Projekt zum Ausblenden vormerken
					globalVars['aktiveGalerie']=0;
				}
			});
		}

		// Scrollable-Seite zum Projekt berechnen und setzen
		if(projekt>4) scrollableAPI.seekTo(Math.floor(projekt/5));
		
		// Projektgalerie aktivieren
		galerieAnzeigen(projekt);
	});
	
	// Galerie-Bildwechsel
	$('.galerie_container .galerie_bild .prev, .galerie_container .galerie_bild .next').click(function() {
		if($(this).hasClass('next'))
		{
			// Aktuelles Bild ausblenden
			$(this).parent().fadeOut('fast');
			
			// Neues Bild einblenden
			$(this).parent().next().fadeIn('slow');
			
			// Next-Button ausblenden, falls es kein weiteres Bild mehr gibt
			if($(this).parent().next().next().length==0) $(this).parent().next().find('a.next').hide();
		}
		else if($(this).hasClass('prev'))
		{
			// Aktuelles Bild ausblenden
			$(this).parent().fadeOut();
			
			// Neues Bild einblenden
			$(this).parent().prev().fadeIn();
		}
	});
	
	
	//
	// E-Mails entschlüsseln
	//
	
	// Expression erweitern
	$.extend($.expr[':'], {
		mailToLink: function (obj) {
			return obj.href.match(/^mailto\:/);
		}
	});
	
	// Mailto-Links anpassen
	$('a:mailToLink').each(function() {
		this.href=this.href.split("?")[0].replace("ANTI[at]SPAMBOT", "@");
		$(this).html($(this).html().replace("TOBMAPS]ta[ITNA", "@"));
	});
	

	//
	// SmoothScroll
	//

	$('a[href*=#]').click(function() {
		
		// skip SmoothScroll on links inside sliders or scroll boxes also using anchors or if there is a javascript call
		if($(this).parent().attr('class')=='slide' || $(this).attr('href').indexOf('javascript')>-1) return;

		// duration in ms
		var duration=1000;

		// easing values: swing | linear
		var easing='swing';

		// get / set parameters
		var newHash=this.hash;
		var oldLocation=window.location.href.replace(window.location.hash, '');
		var newLocation=this;

		// make sure it's the same location		
		if(oldLocation+newHash==newLocation)
		{
			// get target
			var target=$(this.hash+', a[name='+this.hash.slice(1)+']').offset().top;

			// adjust target for anchors near the bottom of the page
			if(target > $(document).height()-$(window).height()) target=$(document).height()-$(window).height();			

			// set selector
			if($.browser.safari) var animationSelector='body:not(:animated)';
			else var animationSelector='html:not(:animated)';

			// animate to target and set the hash to the window.location after the animation
			$(animationSelector).animate({ scrollTop: target }, duration, easing, function() {

				// add new hash to the browser location
				window.location.href=newLocation;
			});

			// cancel default click action
			return false;
		}
	});
	
});
