// $Id: functions.js 35 2010-06-01 16:43:02Z hweber $// ==========================================================================// Bildergalerie-Funktionen// ==========================================================================// Variablen für die Bildergalerie definierenvar intervalTime	= 7500;var fadeTime		= 2000;// Funktion für den Überblend-Effektfunction fadeGallery() {	$('div.gallery_large, div.gallery_small').each(		function() {			if ( $(this).find('img:not(".mask")').length > 1 ) {				// Kontainer für die Bildergalerie speichern				var galleryDiv	= $(this);					// Variable für Bildnummer einrichten				var showImage	=  $(this).data('showImage') || 0;					// Zähler für die Bildnummer inkrementieren				showImage++;					// Wenn das letzte Bild erreicht ist, Zähler zurück setzen				if ( showImage > ($(this).find('img:not(".mask")').length - 1) ) { showImage = 0 };					// Wert für die Bildnummer speichern				$(this).data('showImage', showImage);					// Nächstes Bild der Galerie einblenden				$(this).find('img:not(".mask")').eq(showImage).css( {'z-index' : 11} );				$(this).find('img:not(".mask")').eq(showImage).fadeIn(fadeTime, function () {					$(galleryDiv).find('img:not(".mask")').hide();					$(galleryDiv).find('img:not(".mask")').eq(showImage).show();					$(galleryDiv).find('img:not(".mask")').css( {'z-index' : 10} );					//fadeGallery();					window.setTimeout('fadeGallery()', intervalTime);				});			}		}	);}// ==========================================================================// System-Meldung// ==========================================================================	// Variablen für die System-Meldung definierenvar messageBoxDelay;// Funktion zum Einblenden von System-Meldungenfunction openMessageBox() {	if( $('#message_box').contents('p').length ) {		$('div.overlay').css('opacity', overlayOpacity).fadeIn(400);		$('#message_box').css('opacity',0).show().fadeTo(400, 1, 			function(){				clearTimeout( messageBoxDelay );				messageBoxDelay = setTimeout(function() {					closeMessageBox();				}, 3000);			}		);	};}// Funktion zum Schliessen von System-Meldungenfunction closeMessageBox() {	// Timer für das automatische Ausblenden löschen	clearTimeout( messageBoxDelay );	// Overlay und Warenkorb-Kontainer ausblenden, und den Standard-Inhalt wieder herstellen	$('#overlay').fadeOut(400);	$('#message_box').fadeOut(400);	}// ==========================================================================// Overlay// ==========================================================================var overlayOpacity	= 0.65;// ==========================================================================// JQuery-Funktionen initialisieren// ==========================================================================$(document).ready(function(){	// ==========================================================================	// Hyperlinks	// ==========================================================================	// Link in einem neuen Fenster öffnen	$('a.new_window').click(		function () {			window.open( $(this).attr('href') );			return false;		}	);	// Seite drucken	$('a.print_page').click(		function () {			window.print();			return false;		}	);	// ==========================================================================	// Produktsuche	// ==========================================================================	// Vor dem Absenden der Produktsuche die Benutzereingabe überprüfen	$('#product_search').submit(		function() {			// Lokale Variablen initialisieren und/oder deklarieren			var fieldCounter	= 0;			// Alle Formularfelder abarbeiten			jQuery.each( $(this).serializeArray(), function(i, field){				if ( field.value > 0 ) {					// Wenn Formularfeld ausgewählt wurde, Zähler inkrementieren					fieldCounter++;				}			});			// Es muss mindestens 1 Formularfeld ausgewählt werden			if ( fieldCounter < 1 ) {				alert('Sie müssen mindestens eine Einschränkungen vornehmen!');				return false;			}		}    );	// ==========================================================================	// Navigation "Testverfahren"	// ==========================================================================	// Breite der Testverfahren-Navigation ermitteln	var testNavWidth	= $('ul.test_procedure').width() + 'px';	// Navigation "Testverfahren" ein- bzw. ausblenden	$('div.test_procedure_wrapper').hover(		function () {			$('ul.test_procedure').stop().width(testNavWidth).animate({width: 'show'});		},		function () {			$('ul.test_procedure').stop().width(testNavWidth).animate({width: 'hide'});		}	);	// ==========================================================================	// Bildergalerie	// ==========================================================================	// Das erste Bild einer Bildergalerie einblenden	$('div.gallery_large, div.gallery_small').find('img:not(".mask")').filter(':first').show();	// Funktion für die Bildergalerie aufrufen	if ( $('div.gallery_large, div.gallery_small').length ) {		window.setTimeout('fadeGallery()', intervalTime);	}	// ==========================================================================	// Produkte, News und Ausstellungen mit slide-Effekt wie bei "Mootools"	// ==========================================================================	// Wrapper um den einzublendenen DIV-Kontainer gelegt	$('a.show_product, a.show_news, a.show_exhibition').each(		function() {			// Ausgewähltes Element ausklappen			if ( $(this).hasClass('selected') ) {				// Element einblenden				showElement( $(this) );			}		}	);	// Bei Klick Element ein- bzw. ausblenden	$('a.show_product, a.show_news, a.show_exhibition').click(		function() {			if ( $(this).hasClass('slideup') ) {				// Element ausblenden				hideElement( $(this) );			}			else {				// Element einblenden				showElement( $(this) );			}			// "false" zurückgeben, damit der Browser den Link nicht ausführt			return false;		}    );	// Funktion zum Einblenden eines Eintrages	function showElement( element ) {		// Benötigte Elemente ermitteln		var liElement	= $(element).parents('li').eq(0);		var divElement	= liElement.find('div').eq(0);		// Den Links mit der Klasse "more" die CS-Eigenschaft "font-style" erneut zuweisen (wegen Bug im Internet Explorer)		$('a.more').css('font-style', $('a.more').css('font-style'));		// Gewünschten Kontainer einblenden		divElement.slideDown('slow', function() {			liElement.find('a.show_product, a.show_news, a.show_exhibition').toggleClass('slideup');		});	}	// Funktion zum Ausblenden eines Eintrages	function hideElement( element ) {		// Benötigte Elemente ermitteln		var liElement	= $(element).parents('li').eq(0);		var divElement	= liElement.find('div').eq(0);		// Gewünschten Kontainer ausblenden		divElement.slideUp('slow', function() {			liElement.find('a.show_product, a.show_news, a.show_exhibition').toggleClass('slideup');			liElement.find('a.show_moretext').eq(0).show();			liElement.find('div.moretext').eq(0).hide();		});	}	// ==========================================================================	// Mehr-Text-Funktion	// ==========================================================================	// Bei Klick Element ein- bzw. ausblenden	$('a.show_moretext').click(		function() {			// Mehr-Text einblenden und Link ausblenden			$(this).slideUp('slow');			$(this).parents('li').eq(0).find('div.moretext').eq(0).slideDown('slow');			// "false" zurückgeben, damit der Browser den Link nicht ausführt			return false;		}    );	// ==========================================================================	// Anfragekorb	// ==========================================================================	// Produkt zum Anfragekorb hinzufügen	$('a.add_request').click(		function() {			// Produktbezeichnung ermitteln			var artNr	= $(this).attr('name');			// Produkt per AJAX zum Anfragekorb hinzufügen			$.ajax({				url: $(this).attr('href'),				cache: false,				dataType: 'text',				success: function( text ){					// Meldung einblenden (steht im JSON-Object "message")					$('#message_box').html( '<h1>Anfrage-Korb</h1><p>Das Produkt mit der <strong>Art.-Nr. ' + artNr + '</strong> wurde zu ihrem Anfrage-Korb hinzugefügt.</p><p>Sie können jetzt noch weitere Produkte hinzufügen<br /><strong>oder</strong><br/>Sie können Ihren Anfrage-Korb jetzt<br /><a href="/request.html" class="more">an uns senden</a>.<br />Der Button zum Senden befindet sich<br />auf der linken Seite unten.</p>' );					openMessageBox();					// Anzahl der Produkte im Anfragekorb aktualisieren					$('#request_counter').text( text );				}			});			// "false" zurückgeben, damit der Browser den Link nicht ausführt			return false;		}	);	// ==========================================================================	// Slimbox2-Bildergalerie	// ==========================================================================	// Slimbox-Bildergalerie aufrufen	$('a.show_slimbox').click(		function() {			// Array für alle Galerie-Bilder erstellen			var	galleryImages	= new Array();			// Alle Bilder dieser Galerie bearbeiten			$(this).parent('p').eq(0).siblings('img.slimbox2').each(				function() {					// Informationen des Bildes ermitteln und zum Array hinzufügen					var thisImage = new Array($(this).attr('src'), $(this).attr('alt'));					galleryImages.push(thisImage);				}			);			// Slimbox-Galerie mit den ermittelten Bildern initialisieren			jQuery.slimbox(galleryImages, 0, {'counterText': 'Bild {x} von {y}', 'overlayOpacity': overlayOpacity});			// "false" zurückgeben, damit der Browser den Link nicht ausführt			return false;		}    );	// Slimbox-Funktion für Einzelbilder initialisieren	jQuery(function($) {		$("a[rel^='lightbox']").slimbox({'counterText': 'Bild {x} von {y}', 'overlayOpacity': overlayOpacity}, null, function(el) {			return (this == el) || ((this.rel.length > 8) && (this.rel == el.rel));		});	});	// ==========================================================================	// Testverfahren	// ==========================================================================	// Kontainer für das Einblenden der Testverfahren innerhalb des body-Tags einbinden	$('body').append('<div class="test_procedure_box" />');	$('body').append('<a class="test_procedure_close" />');	// Testverfahrene aufrufen	$('a.show_test_procedure').click(		function() {			// Position des Kontainers für das Testverfahren festlegen			var boxPositionTop	= $(this).offset().top - 400;			$('div.test_procedure_box').css('top', boxPositionTop + 'px' );			$('a.test_procedure_close').css('top', (boxPositionTop-12) + 'px' );						// Testverfahren per AJAX in den dafür vorgesehenen Kontainer laden			$.ajax({				url: $(this).attr('href'),				data:	{					xhttp_request: 1				},				cache: false,				dataType: 'html',				success: function( html ){					$('div.test_procedure_box').html( html );					$('div.overlay').css('opacity', overlayOpacity).fadeIn(400);					$('a.test_procedure_close').fadeIn(400);					$('div.test_procedure_box').fadeIn(400);				}			});			// "false" zurückgeben, damit der Browser den Link nicht ausführt			return false;		}    );	// PopUp-Fenster für das Testverfahren wieder schliessen	$('a.test_procedure_close, div.overlay').live('click',		function() {			closeMessageBox();			$('a.test_procedure_close').stop().fadeOut(400);			$('div.test_procedure_box').stop().fadeOut(400);		}    );	// ==========================================================================	// System-Meldung	// ==========================================================================	// System-Meldung einblenden, und nach einer Wartezeit automatisch wieder ausblenden	openMessageBox();	// Wenn Mauszeiger auf der System-Meldung, dann Timer für das Ausblenden löschen	$('#message_box').mouseenter(		function(){			clearTimeout( messageBoxDelay );		}	);	// System-Meldung ausblenden, wenn der Mauszeiger diese wieder verlässt.	$('#message_box').mouseleave(		function(){			closeMessageBox();		}	);});