// Effekte der Website initialisieren, sobald das Dokument fertig geladen ist
$(document).ready(function(){

	/*
	 *	Globale Variablen deklarieren
	 */

	var SECTION	= '';

	// IE6 erkennen
	var IE6	= (jQuery.browser.msie && (parseInt(jQuery.browser.version) == 6)) ? 1 : 0;

	/*
	 *	Hauptnavigation
	 */

	// Aktiven Navigationspunkt aufklappen
	$('ul.slidemenue li').each(
		function() {
			if ( $(this).find('a').hasClass('active') ) {
				$(this).find('ul').slideDown();
			}
			else {
				$(this).find('ul').hide();
			}

			// Beim Online-Katalog die Höhe der Navigationspunkte nachträglich anpassen
			if ( $(this).parents('ul').eq(0).hasClass('online-katalog') ) {
				var minHeight	= 39;
				var paddingTop	= parseInt((minHeight - $(this).find('a').height()) / 2);
				if ( IE6 ) {
					$(this).find('a').css('height', minHeight );
				}
				else {
					$(this).find('a').css('height', minHeight-paddingTop );
				}
				$(this).find('a').css('padding-top', paddingTop);
			}
		}
	);

	// Hover-Funktion für die Navigation initialisieren
	$('ul.slidemenue li').hoverIntent({
		over: function(){
			$(this).find('ul').slideDown(750);
		},
		out: function(){
			if (!$(this).find('a').hasClass('active')) {
				$(this).find('ul').slideUp(750);
			}
		},
		timeout: 750
	});

	// Hover-Funktion für die Hauptnavigation initialisieren
	$('ul.mainnav li').hover(
		function () {
			if ( !$(this).find('a').hasClass('active') ) {
				$(this).css( 'background-position', '-196px 0' );		// Hover
			}
		}, 
		function () {
			if ( $(this).find('a').hasClass('active') ) {
				$(this).css( 'background-position', '-392px 0' );	// Active
			}
			else {
				$(this).css( 'background-position', '0 0' );		// Out
			}
		}
	);

	// Ausgabe-Sprache der Website ermitteln (steht als Klasse in der Sprach-Navigation)
	var language	= 'de';
	if ( $('ul.language').length ) {
		language	= $('ul.language').attr('class').split(' ');
		language	= language[1] ? language[1] : 'de';
	}

	// Hintergrund-Grafiken der Hauptnavigation einbinden
	$('ul.mainnav li').each(
		function() {
			// Bezeichnung der Navigations-Grafik anhand der URL ermitteln
			var linkUrl				= $(this).find('a').attr('href');

			// Wenn Unternavigation, dann Bereich der Hauptnavigation herausfinden
			var sectionURL			= linkUrl;
			if ( $(this).parents().eq(1).is('li') ) {
				sectionURL			= $(this).parents().eq(1).children('a').eq(0).attr('href');
			}

			// Navigations-Bereich aus der URL herausfiltern
			SECTION	= sectionURL.split('/');
			switch ( SECTION[1] ) {
				case 'communications':
				    SECTION	= 'comm';
					break;
				case 'automotive':
				    SECTION	= 'auto';
					break;
				default:
					SECTION	= 'wisi';
					break;
			}

			// Pfad zu den Navigationsbildern ermitteln
			var filePath	= ( language == 'de') ? '/file_db/' : '/file_db/' + language + '/';

			// Navigations-Bild für den Navigationspunkt ermitteln
			var lastIndexOfSlash	= linkUrl.lastIndexOf('/');
			var lastIndexOfDot		= linkUrl.lastIndexOf('.');
			var linkName			= linkUrl.substr( lastIndexOfSlash+1, lastIndexOfDot-lastIndexOfSlash-1 );
			var backgroundImage		= filePath + 'nav_' + SECTION + '_' + linkName + '.png';

			// Lerren Navigationspunkt einbinden, wenn keine URL gefunden wurde
			if ( linkUrl == '#' ) { backgroundImage = '/images/subnav_' + SECTION + '_blank.png' }

			// Hintergrundbild nicht ändern, wenn dies ein Navigationspunkt des Online-Kataloges ist
			if ( !$(this).parents('ul').eq(0).hasClass('online-katalog') ) {
				// Hintergrund-Grafiken des Navigationspunktes einbinden
				$(this).css( 'background-image', 'url("' + backgroundImage + '")' );

				// Preoloading der Hintergrund-Grafik
				jQuery('<img>').attr('src', backgroundImage);

				// Klassen für die Unternavigation der Bereiche vergeben
				$(this).find('a').addClass(SECTION + 'nav')
			}

			// Aktiven Navigationspunkt markieren
			if ( $(this).find('a').hasClass('active') ) {
				$(this).css( 'background-position', '-392px 0' );	// Active
			}
		}
	);

	/*
	 *	Suche
	 */

	// Bei Fokus auf das Suchfeld, dieses Leeren, wenn der Anfangswert darin enthalten ist
	$('input.search').focus(
		function () {
			$(this).addClass('search-focus');
			if ($(this).val() == $(this)[0].defaultValue) {
				$(this).val('');
			}
		}
	);

	// Bei verlassen des Fokuses den Ursprungszustand wieder herstellen
	$('input.search').blur(
		function () {
			$(this).removeClass('search-focus');
			if ($(this).val() == '') {
				$(this).val($(this)[0].defaultValue);
			}
		}
	);

	/*
	 *	Artikel mit viel Text auf Rasterhöhe (40 Pixel) bringen
	 */

	$('div.large > div').each(
		function() {
			$(this).height( Math.ceil($(this).height()/40)*40-1 )
		}
	);

	/*
	 *	Template: Aufklapplisten
	 */ 

	// Aufklapplisten initialisieren und die Funktion für auf- bzw. zuklappen integrieren
	$('h2.list-subtitle a').hover(
		function() {
			$(this).css( {'cursor' : 'pointer'} );
			if( $(this).parent().eq(0).next('.list-text').hasClass('active') ) {
				$(this).css( {'background-image' : 'url(/images/slide_in_hover.png)'} );
			}
			else {
				$(this).css( {'background-image' : 'url(/images/slide_out_hover.png)'} );
			}
		},
		function() {
			$(this).css( {'cursor' : 'auto'} );
			if( $(this).parent().eq(0).next('.list-text').hasClass('active') ) {
				$(this).css( {'background-image' : 'url(/images/slide_in.png)'} );
			}
			else {
				$(this).css( {'background-image' : 'url(/images/slide_out.png)'} );
			}
		}
	);
	$('h2.list-subtitle a').each(
		function() {
			if( $(this).parent().eq(0).next('.list-text').hasClass('active') ) {
				$(this).css( {'background-image' : 'url(/images/slide_in.png)'} );
			}
		}
	);
	$('h2.list-subtitle a').click(
		function () {
			var subtitleLink = $(this);
			subtitleLink.parent().eq(0).next('.list-text').slideToggle('normal',function(){
				$(this).toggleClass('active');
				if( $(this).hasClass('active') ) {
					subtitleLink.css( {'background-image' : 'url(/images/slide_in_hover.png)'} );
				}
				else {
					subtitleLink.css( {'background-image' : 'url(/images/slide_out_hover.png)'} );
				}
			});
		}
	);

	/*
	 *	Template: "normale" Listen
	 */ 

	$('div.more-click').hover(
		function() {
			$(this).css( {'cursor' : 'pointer'} );
			if( $(this).parents('div.list-row').next('div.more-text').hasClass('text-active') ) {
				$(this).css( {'background-image' : 'url(/images/slide_in_hover.png)'} );
			}
			else {
				$(this).css( {'background-image' : 'url(/images/slide_out_hover.png)'} );
			}
		},
		function() {
			$(this).css( {'cursor' : 'auto'} );
			if( $(this).parents('div.list-row').next('div.more-text').hasClass('text-active') ) {
				$(this).css( {'background-image' : 'url(/images/slide_in.png)'} );
			}
			else {
				$(this).css( {'background-image' : 'url(/images/slide_out.png)'} );
			}
		}
	);
	$('div.more-text').each(
		function() {
			$(this).height( Math.ceil($(this).height()/40)*40-1 );
			if( $(this).hasClass('text-active') ) {
				$(this).slideToggle('normal');
				$(this).prev('div.list-row').find('.more-click').css( {'background-image' : 'url(/images/slide_in.png)'} );
			}
		}
	);
	$('div.more-click').click(
		function () {
			var moreClick = $(this);
			moreClick.parents('div.list-row').next('div.more-text').slideToggle('normal',function(){
				$(this).toggleClass('text-active');
				if( $(this).hasClass('text-active') ) {
					moreClick.css( {'background-image' : 'url(/images/slide_in_hover.png)'} );
				}
				else {
					moreClick.css( {'background-image' : 'url(/images/slide_out_hover.png)'} );
				}
			});
		}
	);


	/*
	 *	Bildergalerie
	 */ 

	// Alle Artikel der Bildergalerie initialisieren
	$('div.gallery-column').each(
		function(index,element) {
			// Klasse für Überschrift definieren
			$(this).find('h1').addClass('gallery-' + SECTION);

			// Das aktivierte Bild ermitteln
			if ( $(this).find('img').hasClass('active') ) {
				$('div.textchange-images').data('activeImage', index);
				showTextbox( index );
			}
		}
	);

	// Wenn kein aktives Bild vorhanden, dann das erste Bild aktivieren
	if ( !$('div.textchange-images').data('activeImage') ) {
		showTextbox( 0 );
	}

	// Hover-Funktion für die Bilder
	$('div.gallery-column').hover(
		function() {
			$(this).css( {'cursor' : 'pointer'} );
			if( !$(this).find('img').hasClass('active') ) {
				$(this).find('img').fadeTo('normal', 0.5);
				$(this).find('h1').fadeTo('normal', 0.5);
			}
		},
		function() {
			$(this).css( {'cursor' : 'auto'} );
			if (!$(this).find('img').hasClass('active')) {
				$(this).find('img').fadeTo('normal', 0.25);
				$(this).find('h1').fadeTo('normal', 0.25);
			}
		}
	);

	// Klick-Funktion für die Bilder
	$('div.gallery-column').click(
		function() {
			// Animation der Bildergalerie stoppen
			$('div.gallery').data('position-x', 0);

			// Text-Box des Bildes anzeigen
			var imageIndex = $('div.gallery-column').index(this);
			showTextbox( imageIndex );
		}
	);

	// Mausposition speichern, wenn Maus innerhalb der Bildergalerie ist
	$('div.gallery').mousemove(function(e){
		$('div.gallery').data('position-x', e.pageX - $('div.gallery').offset().left - ($('div.gallery').width()/2));
	});
	$('div.gallery').mouseout(function(e){
		if ( e.relatedTarget.nodeName != 'IMG' ) {	// Animation nur stoppen, wenn sich der Mauszeiger außerhalb der Bildergalerie befindet
			$('div.gallery').data('position-x', 0);
		}
	});

	// Bildergalerie initialisieren
	var galleryCount	= $('div.gallery-column').find('img').length;
	var imageWidth		= $('div.gallery-column').find('img').width()+1;
	if (galleryCount) {
		$('div.gallery-wrapper').css( {'width': (galleryCount*imageWidth) + 'px' } );
		$('div.gallery').data('min-x', 0);
		$('div.gallery').data('max-x', ((galleryCount-4)*imageWidth));
		$('div.gallery-column p img').each(
			function(index,element) {
				if ( $(this).hasClass('active') ) {
					var newPosition = index*imageWidth;
					if ( newPosition > $('div.gallery').data('max-x') ) {
						newPosition = $('div.gallery').data('max-x');
					}
					$('div.gallery-wrapper').css({'right' : newPosition + 'px'});
					showTextbox( index );
				}
			}
		);
	}

	/*
	 *	Weitere Funktionen 
	 */ 

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

	// Textboxen ein- bzw. ausblenden
	function showTextbox( imageIndex ) {
		// Bilder- und Textboxen ermitteln
		var showImage	= $('div.textchange-images div p img').eq(imageIndex);
		var textBoxes	= $('div.textchange-wrapper').children('div');
		var showText	= textBoxes.eq(imageIndex);

		// Alle nicht aktive Bilder ausblenden
		$('div.textchange-images div p img').each(
			function(index, element) {
				if ( index != imageIndex ) {
					$(this).removeClass('active');
					$(this).fadeTo('fast', 0.25);
					$(this).parents().eq(0).next().fadeTo('fast', 0.25);
				}
			}
		);

		// Aktives Bild einblenden
		showImage.addClass('active');
		showImage.fadeTo('normal', 1.0);
		showImage.parents().eq(0).next().fadeTo('normal', 1.0);

		// Aktive Textbox einblenden
		showText.css( {'z-index': '2'} );
		if (IE6) {
			// Beim IE6 die textbox "einfach" einblenden
			textBoxes.each(function(index, element){
				$(element).css( {'z-index': '1'} );
			});
			showText.show();
			showText.css( {'z-index': '2'} );
		}
		else {
			// Bei allen anderen Browsern die Textbox aufklappen
			showText.show('slide', { direction: 'up' }, 1000, function(){
				textBoxes.each(function(index, element){
					if (index != imageIndex) {
						$(element).hide();
					}
				});
				showText.css( {'z-index': '1'} );
			});
		}
	}

	// Wiederholendes Script für die Bildergalerie
	$(document).everyTime(100, "moveGallery", function(i) {
		// Wenn Mauszeiger in der Mitte ist, die aktuelle Position mit "0" überschreiben
		var checkValue	= $('div.gallery').data('position-x') || 0;
		if ( checkValue < 0 ) { checkValue = checkValue * -1 }
		if ( checkValue < 75 ) { $('div.gallery').data('position-x', 0) }

		// Neue Position der Bildergalerie berechnen
		var newPosition = parseInt($('div.gallery-wrapper').css('right')) + $('div.gallery').data('position-x')/10;
		if ( isNaN(newPosition) ) { newPosition = 0 }

		// Wenn Bildergalerie am Anfang oder am Ende steht, Werte auf max. bzw. min. setzen
		if ( newPosition < $('div.gallery').data('min-x') ) {
			newPosition = $('div.gallery').data('min-x');
		}
		if ( newPosition > $('div.gallery').data('max-x') ) {
			newPosition = $('div.gallery').data('max-x');
		}

		// Bildergalerie auf die neue Position bewegen
		$('div.gallery-wrapper').css({'right' : newPosition + 'px'});
	});
	
	// ==========================================================================
	// Slimbox2-Bildergalerie
	// ==========================================================================

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