// $Id: functions.js 284 2011-04-20 11:12:17Z mlambert $// ==========================================================================// JQuery-Funktionen initialisieren// ==========================================================================$(document).ready(function(){	// ==========================================================================	// Allgemeine Funktionen	// ==========================================================================	// Body-Tag markieren, wenn JavaScript aktiviert ist	$('body').addClass('js_active');	// ==========================================================================	// Hyperlinks	// ==========================================================================	// Link in einem neuen Fenster öffnen	$('a.new_window').click(		function () {			event.preventDefault();			window.open( $(this).attr('href') );		}	);	// Eine Seite zurück	$('a.back').click(		function (event) {			event.preventDefault();			window.history.back();		}	);	// ==========================================================================	// Arbeitsproben	// ==========================================================================	// Variablen deklarieren	var stageWidth		= 515;	var stageHeight		= 540;	var stageMargin		= 80;	var thumbWidth		= 22;	var thumbHeight		= 22;	var thumbMargin		= 10;	var thumbOffsetX	= 15;	var thumbOffsetY	= 14;	// Karte und Bühne für Arbeitsproben erzeugen	if ( $('#work') ) {		// Ersten Navigationspunkt als "active" markieren		$('#work li').first().addClass('active');		// Karte für Arbeitsproben erzeugen		var map = $('<ul id="map"></ul>');		$('#work').before(map);		// Offset der X-Achse für die Karte errechnen (nur bei zentrierter Ausrichtung)		//thumbOffsetX	= thumbOffsetX-((thumbWidth+thumbMargin)/2*(Math.max(1,Math.min(Math.round($('#work li').length/2),4))));		// Alternativ-Inhalt der Bühne für Arbeitsproben überschreiben		$('#stage_viewport').html('<div id="stage"></div>');		stageWidth	= $('#stage_viewport').width();		stageHeight	= $('#stage_viewport').height();		// Seitennavigation aufbauen		var pagina = $('<ul id="pagina"></ul>');		$('.content').append(pagina);		// Kontainer für Beschreibung erstellen		var description	= $('<div id="description"></div');		$('.aside').append(description);	}	// Erweiterte Funktionalität der Arbeitsproben hinzufügen	$('#work li').each(function(index) {		// Arbeitsproben zur Karte hinzufügen und positionieren		var list = $('<li><a href="#" title="'+$(this).find('a').first().text().replace(/^\s+/g, '').replace(/\s+$/g, '')+'">&nbsp;</a></li>');		if ( $(this).hasClass('active') ) { $(list).addClass('active'); }		if ( index < $('#work li').length/2 ) {			(list).css('left', index*(thumbWidth+thumbMargin)+thumbOffsetX);			(list).css('top', 0+thumbOffsetY);		}		else {			(list).css('left', ((Math.round($('#work li').length/2)*2)-index-1)*(thumbWidth+thumbMargin)+thumbOffsetX);			(list).css('top', thumbHeight+thumbMargin+thumbOffsetY);		}		$('#map').append(list);		// Arbeitsproben zur Bühne hinzufügen und positionieren		var work		= $(this).children('div').first();		$(work).children('img').first().addClass('active');		$(work).children('img:not(:first)').hide();		if ( index < $('#work li').length/2 ) {			(work).css('left', index*(stageWidth+stageMargin));			(work).css('top', 0);		}		else {			(work).css('left', ((Math.round($('#work li').length/2)*2)-index-1)*(stageWidth+stageMargin));			(work).css('top', stageHeight+stageMargin);		}		$('#stage').append(work);		// Bei Klick auf Navigationspunkt zur entsprechenden Arbeitsprobe navigieren		$(this).children('a').click( function() {			stageMove(index);			return false;		});		$('#map li').eq(index).children('a').first().click( function() {			stageMove(index);			return false;		});	});	// Markierungs-Rahmen an das Ende der Liste setzen und positionieren	if ( $('#work') ) {		var mapMarker = $('<li id="map_marker"></li>');		(mapMarker).css('left', 0+thumbOffsetX-1);		(mapMarker).css('top', 0+thumbOffsetY-1);		$('#map').append(mapMarker)	}	// Wenn erste Arbeitsprobe mehr als ein Bild hat, Seitennavigation einblenden	if ( $('#work') ) {		var stage = $('#stage').children('div').first();		if (stage.children('img').length > 1) {			buildPagina(stage);			$('#pagina').fadeIn();		}	}	// Beschreibung der ersten Arbeitsprobe einblenden	var description = $('#work').children('li').eq(0).children('div').first().html() || '';	$('#description').html(description).fadeIn();	// Funktion um den Darstellungsbereich zur gewünschten Arbeitsprobe zu navigieren	function stageMove(index) {		// Parameter in Variablen definieren		var moveLeft	= parseInt($('#stage div').eq(index).css('left'));		var moveTop		= parseInt($('#stage div').eq(index).css('top'));		var thumbLeft	= parseInt($('#map li').eq(index).css('left'))-1;		var thumbTop	= parseInt($('#map li').eq(index).css('top'))-1;		var speed		= 1500;		var effect		= 'swing'; // Alternativer Effekt: 'easeOutBounce'		// Keine die gleiche Arbeitsprobe ausgewählt wurde, keine Bewegung durchführen		if ( (moveLeft == parseInt($('#stage').css('left'))*-1) && (moveTop == parseInt($('#stage').css('top'))*-1) ) {			return;		}		// Seitennavigation und Beschreibung ausblenden		$('#pagina').fadeOut();		$('#description').fadeOut();		// Darstellungsbereich und Markierungs-Rahmen zur gewünschten Arbeitsprobe bewegen		$('#map_marker').stop().animate({left: thumbLeft+'px', top: thumbTop+'px'}, speed, effect)		$('#stage').stop().animate({left: '-'+moveLeft+'px', top: '-'+moveTop+'px'}, speed, effect, function() {			// Aktiven Navigationspunkt hervorheben			$('#work li, #map li').removeClass('active');			$('#work li').eq(index).addClass('active');			$('#map li').eq(index).addClass('active');			// Wenn Arbeitsprobe mehr als ein Bild hat, Seitennavigation einblenden			var stage = $('#stage').children('div').eq(index);			if (stage.children('img').length > 1) {				buildPagina(stage);				$('#pagina').fadeIn();			}			// Wenn Arbeitsprobe eine Beschreibung hat, diese einblenden			var description = $('#work').children('li').eq(index).children('div').first().html() || '';			$('#description').html(description).fadeIn();		});	}	// Funktion zum Aufbauen der Seitennavigation	function buildPagina(stage) {		// Arbeitsprobe ermitteln und zum Element speichern		var index = $('#stage div').index(stage);		$('#pagina').data('index', index);		// Seitennavigation aufbauen		$('#pagina').html('');		stage.children('img').each( function(index) {			var list = $('<li><a href="#">'+(index+1)+'</a></li>');			if ( $(this).hasClass('active') ) { $(list).addClass('active'); }			$('#pagina').append(list);		});		// Klick-Event für Seitennavigation erstellen		$('#pagina li a').click( function() {			// Parameter in Variablen definieren			var delay	= 400;			// Gespeicherte Arbeitsprobe und gewähltes Bild ermitteln			stage	= $('#stage div').eq($('#pagina').data('index'));			var index = $('#pagina li a').index(this);			// Alle Bilder ausblenden und Klassen entsprechend setzen			$(stage).children('img').fadeOut(delay).removeClass('active');			$('#pagina li').removeClass('active');			// Gewähltes Bild einblenden und Klassen entsprechend setzen			setTimeout(function(){ $(stage).children('img').eq(index).fadeIn(delay).addClass('active'); }, delay);			$(this).parent('li').first().addClass('active');			// False zurückgeben, damit der Link nicht ausgeführt wird			return false;		});	}	// ==========================================================================	// Alternativer Horizontaler Scrollbalken	// ==========================================================================	// Alternativer Horizontaler Scrollbalken einfügen	$('.tinyscrollbar').tinyscrollbar({ sizethumb: 18, axis: 'x', size: '595' });	$('.tinyscrollbar-y').tinyscrollbar({ sizethumb: 18, axis: 'y', size: '465' });	$('.tinyscrollbar-reference').tinyscrollbar({ sizethumb: 18, axis: 'y', size: '335' });	// ==========================================================================	// Video über JQuery-Plugin jPlayer einbinden	// ==========================================================================	if ( $('#jp_video').length ) {		$('#jp_video').jPlayer({			ready: function () {				$(this).jPlayer('setMedia', {					m4v: $(this).data('flv'),					poster: $(this).data('poster')				}).jPlayer('play');			},			ended: function (event) {				window.history.back();			},			preload: 'auto',			solution: 'flash',			supplied: 'm4v',			backgroundColor: '#FFFFFF',			swfPath: '/scripts/jquery'		});	}});
