// $Id: functions.js 41 2009-10-14 20:10: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.article_image').each(		function() {			if ( $(this).find('img').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').length - 1) ) { showImage = 0 };					// Wert für die Bildnummer speichern				$(this).data('showImage', showImage);					// Nächstes Bild der Galerie einblenden				$(this).find('img').eq(showImage).css( {'z-index' : 11} );				$(this).find('img').eq(showImage).fadeIn(fadeTime, function () {					$(galleryDiv).find('img').hide();					$(galleryDiv).find('img').eq(showImage).show();					$(galleryDiv).find('img').css( {'z-index' : 10} );					//fadeGallery();					window.setTimeout('fadeGallery()', intervalTime);				});			}		}	);}// Variablen für die Bildergalerie der Startseite definierenvar indexIntervalTime	= 6000;var indexFadeTime		= 4000;var posX				= new Array(0, 310, 620);var randPosX			= 0;var lastRandPosX		= 0;var imageLength			= 1;var randImage			= 0;var lastRandImage		= new Array(0, 1, 2);// Funktion für den Überblend-Effektfunction fadeIndexGallery() {	// Zufäliges Bild ermitteln, und erkennen, ob diese sich von den letzten drei Bildern unterscheidet	var	numTries	= 0;	var maxTries	= 10;	while ( (numTries < maxTries) && ((randImage == lastRandImage[0]) || (randImage == lastRandImage[1]) || (randImage == lastRandImage[2]) || !$('#gallery_index img').eq(randImage).hasClass('loaded')) ) {		randImage	= Math.round(imageLength*(Math.random()));		numTries++;	}	lastRandImage.shift();	lastRandImage.push(randImage);	// Zufälige Position ermitteln, und erkennen, ob diese sich von letzter Position unterscheidet	while ( randPosX == lastRandPosX ) {		randPosX	= posX[Math.round(2*(Math.random()))];	}	lastRandPosX	= randPosX;	// Die Anzahl der geklonten Bilder begrenzen (auf doppelte Anzahl der Ursprungsbilder)	while ( $('#gallery_index img').length > (imageLength*2) ) {		$('#gallery_index img').eq(imageLength+1).remove();	}	// Ermitteltes Bild klonen, und an ermittelter Stelle einblenden	$('#gallery_index img').eq(randImage).clone().appendTo('#gallery_index div').css('left', randPosX).fadeIn(indexFadeTime, function(){ fadeIndexGallery();} );}// ==========================================================================// Warenkorb-Funktionen// ==========================================================================// Variablen für den Warenkorb definierenvar defaultBasketContent	= '';var closeBasketDelay;// Funktion zum Schliessen des Warenkorb-Kontainersfunction closeBasket() {	// Timer für das automatische Ausblenden löschen	clearTimeout( closeBasketDelay );	// Overlay und Warenkorb-Kontainer ausblenden, und den Standard-Inhalt wieder herstellen	$('#overlay').fadeOut(400);	$('#into_basket').fadeOut(400, function(){$('#into_basket').replaceWith(defaultBasketContent);$('#into_basket').hide();});	}// ==========================================================================// System-Meldung// ==========================================================================	// Variablen für die System-Meldung definierenvar messageBoxDelay;// Funktion zum Einblenden von System-Meldungenfunction openMessageBox() {	if( $('#message_box').contents('ul').length ) {		$('#overlay').css('opacity',0).show().fadeTo(400, 0.5);		$('#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);	}// ==========================================================================// JQuery-Funktionen initialisieren// ==========================================================================$(document).ready(function(){	// ==========================================================================	// Allgemeines	// ==========================================================================	// IE6 erkennen	var ie6	= (jQuery.browser.msie && (parseInt(jQuery.browser.version) == 6) ) ? 1 : 0;	// Mozilla Firefox auf MAC erkennen	var agent	= navigator.userAgent.toLowerCase();  	var macff	= ( (agent.indexOf('macintosh') > -1) && (jQuery.browser.mozilla) ) ? 1 : 0;	// Kontainer für den Dialog-Overlay in das Dokument einbinden	$('body').append('<div id="overlay" />');	// ==========================================================================	// Hyperlinks	// ==========================================================================	// Link in einem neuen Fenster öffnen	$('a.new_window').click(		function () {			window.open( $(this).attr('href') );			return false;		}	);	// Zurück-Link	$('a.history_back').click(		function () {			history.back();			return false;		}	);	// ==========================================================================	// Formulare	// ==========================================================================	/* Eingabefelder -- Allgemein */ 	$('input.text').focus(		function() {			$(this).addClass('focus');		}	);	$('input.text').blur(		function() {			$(this).removeClass('focus');		}	);	// ==========================================================================	// Zebra-Listen	// ==========================================================================	// Zebra-Liste innerhalb markierten Tabellen erstellen	$('table.zebra_list').each(function() {		$(this).find('tr:even').addClass('even');	});	// Hover-Funktion für die Zebra-Liste	$('table.zebra_list tr').hover(		function () {			$(this).addClass('active');		}, 		function () {			$(this).removeClass('active');		}	);	// ==========================================================================	// Bildergalerie	// ==========================================================================	// Höchstes Bild einer Bildergalerie ermitteln und dem umliegenden DIV-Kontainer zuordnen	$('div.article_image').each(		function() {			var divContainer	= this;			$(divContainer).find('img').each(				function() {					if ( $(this).height() > $(divContainer).height() ) {						$(divContainer).height( $(this).height() );					}				}			);		}	);	// Das erste Bild einer Bildergalerie einblenden	$('div.article_image').each(		function() {			$(this).find('img').filter(':first').show();		}	);	// Funktion für die Bildergalerie aufrufen	if ( $('div.article_image').length ) {		window.setTimeout('fadeGallery()', intervalTime);	}	// ==========================================================================	// Bildergalerie auf der Startseite	// ==========================================================================	// Variablen für die Bildergalerie definieren	imageLength	= $('#gallery_index img').length-1;	// Die ersten 3 Bilder der Bildergalerie einblenden	$('#gallery_index img').eq(0).css('left', posX[0]).fadeIn(indexFadeTime/2);	$('#gallery_index img').eq(1).css('left', posX[2]).fadeIn(indexFadeTime/2);	$('#gallery_index img').eq(2).css('left', posX[1]).fadeIn(indexFadeTime);	// Bilder markieren, wenn diese fertig geladen wurden	$('#gallery_index img').load(		function() {			$(this).addClass('loaded');		}	);	// Funktion für die Bildergalerie aufrufen	if ( imageLength > 2 ) {		window.setTimeout('fadeIndexGallery()', indexIntervalTime);	}	// ==========================================================================	// Warenkrob	// ==========================================================================	// Standard-Inhalt des Warenkorb-Kontainers speichern	defaultBasketContent	= $('#into_basket');	// Produkt in den Warenkorb legen	$('a.into_basket').click(		function () {			// Produkt per AJAX in den Warenkorb legen			$.ajax({				url: $(this).attr('href'),				data:	{					ajax_call:	1				},				cache: false,				dataType: 'json',				beforeSend: function( html ){					// Mauszeiger auf "warten" umschalten					$('body').css('cursor', 'wait');					// Overlay und Kontainer für Warenkorb einblenden					$('#overlay').css('opacity',0).show().fadeTo(400, 0.5);					$('#into_basket').css('opacity',0).show().fadeTo(400, 1);				},				success: function( data, textStatus ){					// Inhalt des Kontainers für den Warenkorb austauschen (steht im JSON-Object "content")					$('#into_basket').replaceWith( data.content );					$('#into_basket').show();					closeBasketDelay = setTimeout('closeBasket()', 5000);					// Mauszeiger wieder auf Grundeinstellung umschalten					$('body').css('cursor', 'auto');				},				error: function( XMLHttpRequest, textStatus, errorThrown ){					// Mauszeiger wieder auf Grundeinstellung umschalten					$('body').css('cursor', 'auto');					// Warenkorb-Dialog wieder schließen					closeBasket();					// Fehlermeldung anzeigen					alert( XMLHttpRequest.responseText );				}			});			// False zurück geben, damit der Link nicht ausgeführt			return false;		}	);	// Artikel aus Warenkorb löschen	$('a.delete_from_basket').click(		function () {			// Objekt für das gesamte Element in Variable speichern			var container	= $(this).parents('tr');			// Titel des Elements ermitteln			var title	= $(container).find('span.title').text() || '';			// Sicherheitsabfrage vor dem Löschen des Artikels			var checkConf	= confirm('Sicherheitsabfrage:\n\nWollen Sie den Artikel "' + title + '" wirklich aus dem Warenkorb löschen?');			if ( checkConf == false ) {	return false; };			// Produkt per AJAX aus dem Warenkorb löschen			$.ajax({				url: $(this).attr('href'),				data:	{					ajax_call:	1,					title:		title				},				cache: false,				dataType: 'json',				beforeSend: function( html ){					// Mauszeiger auf "warten" umschalten					$('body').css('cursor', 'wait');				},				success: function( data, textStatus ){					// Feststellen, ob der letzte Artikel gelöscht wird					var tableContainer	= $(container).parents('table');					// Element aus dem DOM löschen					$(container).remove();					// Gesamtsumme und Steuersätze des Warenkorbs neu ausgeben (stehen im JSON-Object "content")					$(tableContainer).find('tfoot').replaceWith( data.content );					// Wein kein Artikel mehr im Warenkorb vorhanden, dan passenden Text anzeigen					if ( $(tableContainer).find('tbody tr').length < 1 ) {						$(tableContainer).replaceWith( '<p>Es befinden sich keine Artikel in ihrem Warenkorb.</p>' );					}					// Meldung einblenden (steht im JSON-Object "message")					$('#message_box').replaceWith( data.message );					openMessageBox();					// Mauszeiger wieder auf Grundeinstellung umschalten					$('body').css('cursor', 'auto');				},				error: function( XMLHttpRequest, textStatus, errorThrown ){					$('body').css('cursor', 'auto');					alert( XMLHttpRequest.responseText );				}			});			// False zurück geben, damit der Link nicht ausgeführt			return false;		}	);	// ==========================================================================	// Abweichende Lieferanschrift	// ==========================================================================	// Formularfelder für die "Abweichende lieferanschrift" ein bzw. ausblenden	if ( $('input[name=abweichende_lieferanschrift]').val() == 1 ) {		$('a.show_lieferanschrift').parents('div').eq(0).find('div').show();		$('a.show_lieferanschrift').removeClass('slide_out');		$('a.show_lieferanschrift').addClass('slide_in');	}	else {		$('a.show_lieferanschrift').parents('div').eq(0).find('div').hide();		$('a.show_lieferanschrift').removeClass('slide_in');		$('a.show_lieferanschrift').addClass('slide_out');	}	// Abweichende Lieferanschrift einblenden	$('a.show_lieferanschrift').click(		function () {			// Wert für "Abweichende lieferanschrift" invertieren			var $myValue	= ( $('input[name=abweichende_lieferanschrift]').val() == 1 )	? 0 : 1;			$('input[name=abweichende_lieferanschrift]').val( $myValue );			// Formularfelder für die "Abweichende lieferanschrift" ein bzw. ausblenden			if ( $('input[name=abweichende_lieferanschrift]').val() == 1 ) {				$(this).parents('div').eq(0).find('div').slideDown('normal',function(){					$('a.show_lieferanschrift').removeClass('slide_out');					$('a.show_lieferanschrift').addClass('slide_in');				});			}			else {				$(this).parents('div').eq(0).find('div').slideUp('normal',function(){					$('a.show_lieferanschrift').removeClass('slide_in');					$('a.show_lieferanschrift').addClass('slide_out');				});			}			// False zurück geben, damit der Link nicht ausgeführt			return false;		}	);	// ==========================================================================	// 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();		}	);});