(function() {

var $j = jQuery.noConflict();

// CSS für <body> und <html> damit höhe von dunklem korrekt berechnet werden kann.
//$j('html').css('overflow-y', 'scroll');
//$j('body').css('overflow', 'hidden');

/* Lightbox
 ***********************************/
    // Links nummerieren pro Inhalts-Element
    $j('#MainContent .csc-textpic').each(function(){
        $j(this).find('a[rel]').each(function(i){
            $j(this).attr('class', i);
            i++;
        });
    });
    // .not('[target="_blank"]') verhindert die aktivierung von lighbox in verlinkten Bilder bsp. für id 358
    $j('#MainContent').find('a[href$=".jpg"], a[href$=".png"], a[href$=".gif"], a[href$=".JPG"], a[href$=".JPEG"], a[href$=".jpeg"], a[href$=".PNG"], a[href$=".GIF"]').not('[target="_blank"]').each(function(i){
        // Bilder vorladen
        var theHref = $j(this).attr('href');
        $j(this).css({
            'background': 'transparent url(' + theHref + ') no-repeat scroll -99999px -99999px'
		});
		
		// Layer generieren mit Bild.
		$j(this).click(function(e){
			var cur_height = $j(window).height();
			var real_height = $j('body').height();
			var html_height = $j('html').height();
			var ultimate_height = real_height > html_height ? real_height : html_height;
			var cur_width = $j(window).width();
			var bigPicture = $j(this).attr('href');
			var altText = $j(this).find('img').attr('alt');
			$j('#container').before('<div id="lightbox"></div>');
			$j('#lightbox').css({
				'position': 'fixed',
				'z-index': 1000,
				'width': cur_width,
				'height': ultimate_height,
				'background': 'black',
				'left': 0,
				'opacity': 0
			}).after('<img id="bigPicture" src="' + bigPicture + '" alt="' + altText + '" />').bind('click', function() {
				$j('#bigPicture').animate({
                    opacity: 0
                    }, 250, function() {
                        $j(this).remove();
                });
				$j(this).delay(150).animate({
                    opacity: 0
                    }, 250, function() {
                        $j(this).remove();
                });
                $j('#backward, #forward').remove();
                $j('a').removeAttr('id');
			});
			
			$j('#bigPicture').css({
				'z-index': 1500,
				'position': 'fixed',
				'left': '9999px',
				'-moz-border-radius': '5px',
				'-webkit-border-radius': '5px',
				'border-radius': '5px',
				'border': '10px solid white',
				'opacity': 0,
				'cursor': 'pointer'
			}).bind('click', function() {
				$j(this).animate({
                    opacity: 0
                    }, 250, function() {
                        $j(this).remove();
                });
				$j('#lightbox').delay(200).animate({
                    opacity: 0
                    }, 250, function() {
                        $j(this).remove();
                });
                $j('#backward, #forward').remove();
                $j('a').removeAttr('id');
			});
			
			// Grosses Bild nach klick auf Thumbnail positionieren
			function positioner(animate){
                // Horizontale Position berechnen
                var BigPicture_width = $j('#bigPicture').width();
                var halfBodyWidth = cur_width/2;
                var halfPictureWidth = BigPicture_width/2;
                var leftPosition = halfBodyWidth - halfPictureWidth;
                
                $j('#bigPicture').css('left', leftPosition);
                
                // Vertikale Position berechnen
                var BigPicture_height = $j('#bigPicture').height();
                var halfBodyHeight = cur_height/2;
                var halfPictureHeight = BigPicture_height/2;
                var topPosition = halfBodyHeight - halfPictureHeight - 25;

                // Prüfen ob höhe negativen Wert hat
                // wenn ja auf 0px setzen.
                if(topPosition < 0) var topPosition = 0;
                $j('#bigPicture').css('top', topPosition);
			}
			positioner();
            
            // fadeIn generieren
            $j('#lightbox').animate({
                opacity: 0.8
            }, 250 );
            $j('#bigPicture').delay(200).animate({
                opacity: 1
            }, 450 );
            
			e.preventDefault();
			
			/* ImageSets-Handler
			 *************************************************************/
			if( $j(this).attr('rel') == 'lightbox' ){
                // console.log(' -------- lightbox without sets');
			} else {
                // Falls Lightbox ein imageSet hat
                // console.log(' -------- lightbox WITH sets');
                var currentSetNumber = $j(this).attr('rel');
                
                var anzahlBilder = $j('a[rel="' + currentSetNumber + '"]').length - 1;
                // console.log('Anzahl Bilder beginnend bei 0: ' + anzahlBilder);
                
                $j('a[rel="' + currentSetNumber + '"]').each(function(i){
                    $j(this).data('imageNumber' + i, i);
                    // console.log('imageNumber' + i);
                    
                    var imageSource = $j(this).attr('href');
                    // console.log('ImageSource: ' + imageSource);
                    $j('#bigPicture').data('imageSet' + i, imageSource);
                    // console.log( 'loggedData : ' + $j('#bigPicture').data('imageSet' + i ) );
                });
                
                // Buttons generieren
                $j('#bigPicture').after('<div id="backward"></div>').after('<div id="forward"></div>');
                
                // Buttons positionieren
                function buttonPositioner(){
                    // Horizontale Position berechnen
                    var imageBreite = $j('#bigPicture').innerWidth();
                    var leftMargin = imageBreite/2;
                    $j('#backward').css('margin-left', -leftMargin + 9);
                    $j('#forward').css('margin-left', leftMargin - 34 );
                    
                    // Vertikale Position berechnen
                    var imageHeight = $j('#bigPicture').innerHeight();
                    var topPosition = $j('#bigPicture').css('top');
                    $j('#backward, #forward').css({
                        'height': imageHeight,
                        'top': topPosition
                    });
                }
                buttonPositioner();
                
                $j(this).attr('id', 'selectedImage');
                var selectedImageNr = $j('#selectedImage').attr('class');
                // console.log('selected image: ' + selectedImageNr);
                
                var i = selectedImageNr;
                // Next-Button-Handling
                $j('#forward').click(function(){
                    // console.log(selectedImageNr);
                    if( i >= anzahlBilder ){
                        // console.log('letztes bild');
                        i = 0;
                    } else {
                        // console.log('nicht das letzte Bild');
                        i++;
                    }
                    // console.log( $j('#bigPicture').data('imageSet' + i ) );
                    var imageSrc = $j('#bigPicture').data('imageSet' + i );
                    // Neues Bild nach klick auf forward-Button anzeigen und positionieren.
                    $j('#bigPicture').attr('src', imageSrc);
                    positioner();
                    buttonPositioner();
                });
                
                // Previous-Button-Handling
                $j('#backward').click(function(){
                    // console.log(selectedImageNr);
                    if( i > 0 ){
                        // console.log('letztes bild');
                        i--;
                    } else {
                        // console.log('nicht das letzte Bild');
                        i = anzahlBilder;
                    }
                    // console.log( $j('#bigPicture').data('imageSet' + i ) );
                    var imageSrc = $j('#bigPicture').data('imageSet' + i );
                    // Neues Bild nach klick auf forward-Button anzeigen und positionieren.
                    $j('#bigPicture').attr('src', imageSrc);
                    positioner();
                    buttonPositioner();
                });
			}
		});
		// Verhindern von border-bottom bei mouseover von Lightbox-Link
		$j(this).css('border-bottom', 'none');
    });
})();

