(function($) {

	$.fn.ntv_bilder_detail_rollover = function( options ) {
		var settings = $.extend({
			details: ".details",
			speed: "fast",
			z_index: this.size()*3
		}, options);

		return this.each( function() {
			var $details = $( this ).find( settings.details );
			var $img = $( this ).find( "img" );

			$( this ).css( "zIndex", settings.z_index-- );
			$img.css( "zIndex", settings.z_index-- );
			$details.css( "zIndex", settings.z_index-- );

			$img.hover(
					function() {
						$details.fadeIn( settings.speed );
					},
					function() {
						$details.hide();
					}
			);
		});

	};

	$.fn.ntv_bilder_slideshow = function( options ) {
		var settings = $.extend({
			backward: "#wrapper_nav a.backward",
			forward: "#wrapper_nav a.forward",
			images: null,
			imageContainer: "#wrapper_img",
			layer: "#layer",
			loadImageSrc: relat_prefix + "bilderserie/img/loader.gif",
			showLayer: false,
			speed: "slow",
			textContainer: "#wrapper_nav p"
		}, options);

		var $backward = $( settings.backward );
		var $forward = $( settings.forward );
		var $layer = $( settings.layer );
		var $imageContainer = $( settings.imageContainer );
		var imageContainerHeight = $imageContainer.height();
		var $textContainer = $( settings.textContainer );

		var $loadingImg = $( "<img />" ).load( function () {
			$( this ).css( "marginTop", (imageContainerHeight - this.height)/2 );
			$imageContainer.append( this );
		}).attr({
			alt: "Bild wird geladen",
			src: settings.loadImageSrc
		});

		var $slideImg = $( "<img />" ).addClass( "slide" );
		$imageContainer.append( $slideImg );

		var imgCount = settings.images.length;
		var index = settings.showLayer ? imgCount-1 : 0;

		var switchImage = function( i, preload, getIVW ) {
			var $nextImg = $( "<img />" ).load(
					function() {
						var marginTop = ( imageContainerHeight - this.height ) / 2;
						$( this ).
							css({
								cursor: "pointer",
								display: "none",
								marginTop: marginTop
							})
							.addClass( "slide" );
						$loadingImg.hide();
						$imageContainer.find( "img.slide" ).replaceWith( this );
						$( this ).fadeIn( settings.speed, function(){

							if( options.showLayer ) {
								$layer.fadeIn( settings.speed );
								options.showLayer = null;
							}
						});
						$textContainer.html( settings.images[i].caption );


						if( getIVW ){
							var ivwImage = $( "<img />" );
							var src = "http://ntv.ivwbox.de/cgi-bin/ivw/CP/"+ivw_code+";"+ntv_location+"/"+ntv_navipath+"?r="+escape(document.referrer)+"&d="+(Math.random()*100000);
							ivwImage.attr({
								src: src
							});
						}
					}
			).attr( {
				src: settings.images[i].src,
				alt: "",
				title: settings.images[i].credit != "" ? "(Foto: " + settings.images[i].credit + ")" : ""
				}
			);

			if( preload && i < imgCount-1 ) {
				var $preloadImage = $( "<img />" );
				$preloadImage.attr( "src", settings.images[i+1].src );
			}

		};

		// get the first image and show it
		switchImage( index, true, false );

		// register click events
		return this.each( function() {
			var forward = function() {
				if ( index == imgCount-1 ) {
					index = -1;
					$layer.fadeIn( settings.speed );
				} else {
					index++;
					$layer.hide();
					switchImage( index, true, true );
				}
				return false;
			}

			$imageContainer.find( "img.slide" ).live( "click", forward );
			$forward.click( forward );

			$backward.click(function() {
				index == 0 ? index = imgCount-1 : index--;
				switchImage( index );
				return false;
			});
		});
	};


	var log = function( msg ) {
		if( $.browser.mozilla && "console" in window && "firebug" in window.console ) {
			console.debug( msg );
		}
	};

	$( document ).ready( function() {
		$( "ul#slide li" ).ntv_bilder_detail_rollover();
	});

})(jQuery);
