// $Id: functions.js 40 2010-02-16 17:56:42Z hweber $// ==========================================================================// Produkt-Details-Funktionen// ==========================================================================// Variablen für die Produkt-Details definierenvar defaultDetailsContent	= '';var closeDetailsDelay;// Funktion zum Schliessen des Produkt-Details-Kontainersfunction closeDetails() {	// Timer für das automatische Ausblenden löschen	clearTimeout( closeDetailsDelay );	// Overlay und Produkt-Details-Kontainer ausblenden, und den Standard-Inhalt wieder herstellen	$('#overlay').fadeOut(400);	$('#product_details').fadeOut(400, function(){$('#product_details').replaceWith(defaultDetailsContent);$('#product_details').hide();});}// ==========================================================================// 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" class="overlay" />');	// ==========================================================================	//	Hover-Effekt für Navigation im IE6	// ==========================================================================	// CSS-Navigation auch für den IE6 integrieren	$('ul.nav li').hover(		function() {			$(this).addClass('sfhover');		},		function() {			$(this).removeClass('sfhover');		}	);	// ==========================================================================	//	Hauptnavigation	// ==========================================================================	// Hover-Funktion für die Navigation initialisieren	$('ul.nav li').mouseenter(		function(){			$(this).find('ul').stop().height('auto').slideDown(250);	// the height('auto') prevents the menu from memorizing an incorrect height-value forever when leaving the menu while the animation is running		}	);	$('ul.nav li').mouseleave(		function(){			$(this).find('ul').stop().height('auto').slideUp(250);		// the height('auto') prevents the menu from memorizing an incorrect height-value forever when leaving the menu while the animation is running		}	);	// Unteren Rahmen eines letzen Eintrages einer Unternavigation entfernen	$('ul.nav li ul').each(		function() {			$(this).find('li:last').addClass('last');		}	);	// ==========================================================================	// 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');		}	);	// ==========================================================================	// Produkte	// ==========================================================================	// Standard-Inhalt des Produkt-Details-Kontainers speichern	defaultDetailsContent	= $('#product_details');	// Produkt-Details anzeigen	$('a.product_details').click(		function () {			// Produkt-Details per AJAX anzeigen			$.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 die Produkt-Details einblenden					$('#overlay').css('opacity',0).show().fadeTo(400, 0.5);					$('#product_details').css('opacity',0).show().fadeTo(400, 1);				},				success: function( data, textStatus ){					// Inhalt des Kontainers für die Produkt-Details austauschen (steht im JSON-Object "content")					$('#product_details').replaceWith( data.content );					$('#product_details').show();					closeDetailsDelay = setTimeout('closeDetail()', 5000);					// Mauszeiger wieder auf Grundeinstellung umschalten					$('body').css('cursor', 'auto');				},				error: function( XMLHttpRequest, textStatus, errorThrown ){					// Mauszeiger wieder auf Grundeinstellung umschalten					$('body').css('cursor', 'auto');					// Produkt-Details-Dialog wieder schließen					closeDetails();					// Fehlermeldung anzeigen					alert( XMLHttpRequest.responseText );				}			});			// False zurück geben, damit der Link nicht ausgeführt			return false;		}	);	// ==========================================================================	// Warenkorb	// ==========================================================================	// Standard-Inhalt des Warenkorb-Kontainers speichern	defaultBasketContent	= $('#into_basket');	// Produkt in den Warenkorb legen	$('a.into_basket').live( 'click',		function () {			// Produkt-Details-Dialog schließen, wenn dieser eingeblendet ist			if ($('#product_details').css('display') == 'block') {				closeDetails();			}			// Stückzahl aus dem entsprechenden Eingabefeld ermitteln			var prodID	= $(this).attr('href').split('=')[1];			var amount	= ($('#amount_' + prodID).eq(0).val() < 1) ? 1 : $('#amount_' + prodID).eq(0).val();			// Produkt per AJAX in den Warenkorb legen			$.ajax({				url: $(this).attr('href'),				data:	{					ajax_call:		1,					into_basket:	amount				},				cache: false,				dataType: 'json',				beforeSend: function( html ){					// Mauszeiger auf "warten" umschalten					$('body').css('cursor', 'wait');					// Overlay und Kontainer für Warenkorb einblenden					$('#overlay').stop().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 die Warenkorb-Meldung austauschen (steht im JSON-Object "content")					//$('#into_basket').replaceWith( data.content );					//$('#into_basket').show();					//closeBasketDelay = setTimeout('closeBasket()', 7000);										// Warenkorb-Dialog wieder schließen					closeBasket();					// Inhalt des Kontainers für die Weinkiste austauschen (steht im JSON-Object "weinkiste")					$('#weinkiste').replaceWith( data.weinkiste );					// 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>' );						$('input[name=refresh_basket]').remove();						$('input[name=order_basket]').remove();					}					// Inhalt des Kontainers für die Weinkiste austauschen (steht im JSON-Object "weinkiste")					$('#weinkiste').replaceWith( data.weinkiste );					// 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();		}	);});
