// $Id: functions.js 127 2010-08-02 15:15:37Z hweber $

// ==========================================================================
// Überblend-Funktion für die Rubrikbilder
// ==========================================================================

// Variablen definieren
var nextImage	= 1;
var slideSpeed	= 4000;
var imageDelay	= 4000;

// Funktion für den Überblend-Effekt
function fadeImage() {
	// Wenn beim letzten Bild angekommen, wieder von vorne beginnen
	if ( nextImage >= $('.rubrikbilder img').length ) {
		nextImage	= 0;
	}

	// Bilder ineinander überblenden
	$('.rubrikbilder img').eq(nextImage).css( {'z-index' : 11} );
	$('.rubrikbilder img').eq(nextImage).fadeIn(slideSpeed, function () {
		$('.rubrikbilder img').hide();
		$('.rubrikbilder img:eq(' + nextImage + ')').show();
		$('.rubrikbilder img').css( {'z-index' : 10} );
		nextImage++;
		window.setTimeout( 'fadeImage()', imageDelay );
	});
}

// ==========================================================================
// JQuery-Funktionen initialisieren
// ==========================================================================

$(document).ready(function(){

	// ==========================================================================
	// Rubrikbilder
	// ==========================================================================

	// Alle Bilder, bis auf das erste, ausblenden
	$('.rubrikbilder img:gt(0)').hide();

	// Überblend-Effekt Zeitabhängig aufrufen
	window.setTimeout( 'fadeImage()', imageDelay );

	// ==========================================================================
	// Hyperlinks
	// ==========================================================================

	// Link in einem neuen Fenster öffnen
	$('a.new_window').click(
		function () {
			window.open( $(this).attr('href') );
			return false;
		}
	);

	// Seite neu laden
	$('a.reload').click(
		function () {
			location.reload();
			return false;
		}
	);

	// Eine Seite zurück
	$('a.back').click(
		function () {
			window.history.back();
			return false;
		}
	);

	// ==========================================================================
	// Suche
	// ==========================================================================

	// Suchfeld bei Fokus ablöschen, wenn Standard-Wert enthalten ist
	$('input.search').focus(
		function () {
			if ($(this).val() == $(this)[0].defaultValue) {
				$(this).val('');
			}
		}
	);

	// ==========================================================================
	// Online Shop
	// ==========================================================================

	// Informationen zu den Versandkosten einblenden
	$('a.show_shipping').click(
		function () {
			// Position des Kontainers für die Versandkosten festlegen
			var boxPositionTop	= $(this).offset().top - 200;
			$('div.information_box').css('top', boxPositionTop + 'px' );
			$('a.information_close').css('top', (boxPositionTop-12) + 'px' );

			// Informationen zu den Versandkosten per AJAX abfragen
			$.ajax({
				url: $(this).attr('href'),
				cache: false,
				dataType: 'html',
				success: function( html ){
					$('div.information_box').html( html );
					$('div.overlay').css('opacity', 0.65).fadeIn(400);
					$('a.information_close').fadeIn(400);
					$('div.information_box').fadeIn(400);
				}
			});

			// False zurück geben, damit der Link nicht ausgeführt
			return false;
		}
	);

	// PopUp-Fenster für Informationen zu den Versandkosten wieder schliessen
	$('a.information_close, div.overlay').click(
		function() {
			$('a.information_close').stop().fadeOut(400);
			$('div.information_box').stop().fadeOut(400);
			$('div.overlay').stop().fadeOut(400);
		}
    );

	// Artikel empfehlen einblenden
	$('a.tell_a_friend').click(
		function () {
			// Position des Kontainers für die Empfehlung festlegen
			var boxPositionTop	= $(this).offset().top - 400;
			$('div.information_box').css('top', boxPositionTop + 'px' );
			$('a.information_close').css('top', (boxPositionTop-12) + 'px' );

			// Empfehlung per AJAX abfragen
			$.ajax({
				url: $(this).attr('href'),
				cache: false,
				dataType: 'html',
				success: function( html ){
					$('div.information_box').html( html );
					$('div.overlay').css('opacity', 0.65).fadeIn(400);
					$('a.information_close').fadeIn(400);
					$('div.information_box').fadeIn(400);
				}
			});

			// False zurück geben, damit der Link nicht ausgeführt
			return false;
		}
	);

	// Artikel empfehlen per AJAX absenden
	$('form.tell_a_friend').live('submit', function() {
		$(this).ajaxSubmit({
			cache: false,
			dataType: 'html',
			success: function( html ){
				$('div.information_box').html( html );
			}
		});

		// False zurück geben, damit das Formular nicht abgesendet wird
		return false;
	});

	// ==========================================================================
	// Abweichende Lieferanschrift
	// ==========================================================================

	// Formularfelder für die "Abweichende lieferanschrift" ein bzw. ausblenden
	if ( $('input[name=abweichende_lieferanschrift]').val() == 1 ) {
		$('#lieferanschrift').show();
		$('a.show_lieferanschrift').removeClass('slide_out');
		$('a.show_lieferanschrift').addClass('slide_in');
	}
	else {
		$('#lieferanschrift').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 ) {
				$('#lieferanschrift').slideDown('normal',function(){
					$('a.show_lieferanschrift').removeClass('slide_out');
					$('a.show_lieferanschrift').addClass('slide_in');
				});
			}
			else {
				$('#lieferanschrift').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;
		}
	);

	// ==========================================================================
	// Service-Bereich
	// ==========================================================================

	if ( $('body.service').length ) {
		// Eingabefelder markieren, wenn Fokus auf dem Element liegt
		$('input:text, textarea').focus(
			function() {
				$(this).addClass('focus');
			}
		);
		$('input:text, textarea').blur(
			function() {
				$(this).removeClass('focus');
			}
		);

		// Überprüfungs-Formular vor dem Absenden validieren
		if ( $('#service_check').length ) {
			$('#service_check').append('<div class="error-message"><p></p></div>');
			$('#service_check').validate({
				invalidHandler: function(e, validator) {
					var errors = validator.numberOfInvalids();
					if (errors) {
						var message = errors == 1
							? 'Bitte füllen Sie das hervorgehobene Pflichtfeld aus!'
							: 'Bitte füllen Sie die ' + errors + ' hervorgehobenen Pflichtfelder aus!';
						$('#service_check div.error-message p').html(message);
						$('#service_check div.error-message').show();
					} else {
						$('#service_check div.error-message').hide();
					}
				},
				onkeyup: false,
				submitHandler: function(form) {
					$('div.error-message').hide();
					// Formular per AJAX absenden
					$(form).ajaxSubmit({
						cache: false,
						dataType: 'html',
						beforeSend: function( html ){
							$(form).find('input[name=fab_nr], input[name=knd_nr]').attr('disabled', 'disabled');
							$(form).find('input[name=pruefen]').css('display', 'none');
							$(form).after('<p style="text-align:center;" id="wait"><img src="/images/wait.gif" /></p>');
						},
						success: function( data, textStatus ){
							$('#wait').remove();
							$(form).after( data );
						},
						error: function( XMLHttpRequest, textStatus, errorThrown ){
							alert( XMLHttpRequest.responseText );
						}
					});
				},
				messages: {
					name: 'FEHLER'
				},
				errorPlacement: function(error, element) {}
			});
		}

		// Absende-Formular vor dem Absenden validieren
		$('#service_send').livequery( function(){
			$(this).validate({
				invalidHandler: function(e, validator) {
					var errors = validator.numberOfInvalids();
					if (errors) {
						var message = errors == 1
							? 'Bitte füllen Sie das hervorgehobene Pflichtfeld aus!'
							: 'Bitte füllen Sie die ' + errors + ' hervorgehobenen Pflichtfelder aus!';
						$('#service_send div.error-message p').html(message);
						$('#service_send div.error-message').show();
					} else {
						$('#service_send div.error-message').hide();
					}
				},
				onkeyup: false,
				submitHandler: function(form) {
					$('div.error-message').hide();
					// Formular per AJAX absenden
					$(form).ajaxSubmit({
						cache: false,
						dataType: 'html',
						beforeSend: function( html ){
							$(form).after('<p style="text-align:center;" id="wait"><img src="/images/wait.gif" /></p>');
						},
						success: function( data, textStatus ){
							$('#wait').remove();
							$(form).replaceWith( data );
						},
						error: function( XMLHttpRequest, textStatus, errorThrown ){
							alert( XMLHttpRequest.responseText );
						}
					});
				},
				messages: {
					name: 'FEHLER'
				},
				errorPlacement: function(error, element) {}
			});
		}); 

		// Neue Überprüfung
		$('input[name=reload]').livequery( 'click', 
			function(){
				// Formularfelder wiederherstellen
				$('#service_check').find('input[name=knd_nr], input[name=fab_nr]').val('').removeAttr('disabled');
				$('#service_check').find('input[name=pruefen]').css('display', 'inline');
	
				// Fokus auf das erste Formularfeld setzen
				$('#service_check').find('input[name=knd_nr]').focus();
	
				// Altes Ergebniss löschen
				$('#check_result').remove();
			}
		);
	}

	// ==========================================================================
	// Slimbox2
	// ==========================================================================

	// Slimbox-Bilder initialisieren
	jQuery(function($) {
		$("a[rel^='lightbox']").slimbox({counterText: 'Bild {x} von {y}'}, null, function(el) {
			return (this == el) || ((this.rel.length > 8) && (this.rel == el.rel));
		});
	});
});