/**
 *
 */
 function fancyboxInit() {
    $('a[rel=gallery]').fancybox({
        transitionIn:   'none',
        transitionOut:  'none',
        titlePosition:  'inside',
        overlayColor:   '#000',
        overlayOpacity: 0.75,
        transitionIn:   'fade',
        transitionOut:  'fast',
        changeSpeed:     0,
        changeFade:      325,
        centerOnScroll:  true,
        titleFormat:     fancyboxTitleFormat,
        onComplete:      fancyboxOnComplete,
        onClosed:        function() {
            cycleInitKeypress();
        }
    });
}


/**
 *
 */
function initGallery() {
	var isIe = ($.browser.msie && (($.browser.version == '6.0') || ($.browser.version == '7.0')));

    $('.thumb > a.thumbnailLink').bind('click', function() {
        matches = $(this).attr('class').match('(image[0-9]+)');
        if (matches) {
            pauseSlideshow('#slideshowImageContainer');
            imageData = eval('globalImageData.' + matches[0]);
            $('#slideshowImageContainer').cycle(imageData.paginatorPosition - 1);
        }
    });


    $('div.thumb > a.thumbnailLink').bind('mouseenter', function(pEvent) {
        matches = $(this).attr('class').match('(image[0-9]+)');
        if (matches) {
            imageData      = eval('globalImageData.' + matches[0]);
            if (isIe) {
	            position       = $(this).offset();
	            position.left -= (191 * 1.5)- (85 / 2) - 15;
	            position.top  -= 600;
            } else {
            	position       = $(this).position();
            	position.left -= 191 - (85 / 2) - 85;
            	position.top  -= 65;
            }
            
            matchesImageId = $(this).attr('class').match('image([0-9]+)');
            container = $('<div>').attr('class', 'thumbZoom thumbZoom' + matchesImageId[1])
                .css('top', position.top + 'px')
                .css('left', position.left + 'px')
                .css('cursor', 'pointer');

            $('<img />').attr('src', imageData.previewSource)
                .attr('alt', imageData.title)
                .appendTo(
                    $('<div>').attr('class', 'preload')
                    .appendTo(container)
                );
            $('<div>').attr('class', 'title')
                .html(imageData.title)
                .appendTo(container);
            $('<div>').attr('class', 'copyright')
                .html(imageData.copyright)
                .appendTo(container);

            container.bind('click', function() {
                matchesImageId = $(this).attr('class').match('thumbZoom([0-9]+)');

                $('a.thumbnailLink.image' + matchesImageId[1]).trigger('click');
            });


            if (isIe) {
            	container.appendTo($(this).parents('#lower-content-thumbs'));
            } else {
                container.appendTo($(this).parents('div.thumb'));
            }
            
            isPreviewOpen = true;
        }
    });

    var isPreviewOpen = false;
    $(document).bind('mousemove', function(pEvent) {
        if (isPreviewOpen) {
            $('div.thumbZoom').each(function() {
                offset = $(this).offset();
                
                if (
                    !(
                        (
                            (offset.left < pEvent.pageX)
                            && ((offset.left + $(this).innerWidth()) > pEvent.pageX)
                        )
                        && (
                            (offset.top < pEvent.pageY)
                            && ((offset.top + $(this).innerHeight()) > pEvent.pageY)
                        )
                    )
                ) {
                    $(this).remove();
                }
            });
            
            isPreviewOpen = ($('div.thumbZoom').length > 0);
        }
    });
}


/**
 *
 */
function initServices() {
    if (!(jQuery.browser.msie && (jQuery.browser.version == '6.0'))) {
        $('#schliessen > a, .close').live('click', function() {
            $('.funktionen').fadeOut(1000);
            $('.funktionen').html('');
            return false;
        });

        $('a.fancyAjax.recommend').bind('click', function() {
            serviceUrl = '/content' + $(this).attr('href');
            $('.funktionen').load(serviceUrl)
                            .fadeIn(1000);
            return false;
        });
        
        $('a.fancyAjax.bookmark').bind('click', function() {
            serviceUrl = '/content' + $(this).attr('href');
            $('.funktionen').load(serviceUrl)
                            .fadeIn(1000);
            return false;
        });
    }


/*
    $('a.fancyAjax.bookmark').fancybox({
        transitionIn:   'none',
        transitionOut:  'none',
        titlePosition:  'inside',
        overlayColor:   '#000',
        overlayOpacity: 0.75,
        transitionIn:   'fade',
        transitionOut:  'fast',
        changeSpeed:     0,
        changeFade:      325,
        centerOnScroll:  true,
        width:           250,
        autoDimensions:  false
    });
    
    
    $('a.fancyAjax.recommend').fancybox({
        transitionIn:   'none',
        transitionOut:  'none',
        titlePosition:  'inside',
        overlayColor:   '#000',
        overlayOpacity: 0.75,
        transitionIn:   'fade',
        transitionOut:  'fast',
        changeSpeed:     0,
        changeFade:      325,
        centerOnScroll:  true,
        width:           600,
        autoDimensions:  false
    });
*/
}


/**
 *
 */
function cycleInit() {
	/* Image Hover */
	$('.image-hover').addClass('hidden');
	$('#main-image').hover(
		function() {
			$('.image-hover').removeClass('hidden');
		}, function () {
			$('.image-hover').addClass('hidden');
		}
	);
	
    /* Navigation leeren */
    $('.slideshowNavigation').html(
        "<li><span><a href='#' class='slideshowPrevious slide-control'></a></span></li>"
        + "<li><a href='#' class='slideshowJumpPrevious'>...</a><span><span class='hidden'>&nbsp;</span>|</span></li>"
        + "<li><span><a href='#' class='slideshowNext slide-control'></a></span></li>"
        + "<li><a href='#' class='slideshowJumpNext'>...</a></li>"
    );

    /* Slideshow initialisieren */
    $.fn.cycle.updateActivePagerLink = function(pPager, pCurrSlideIndex) {
        updateNavigation(pCurrSlideIndex);
    };
    $('div#slideshowImageContainer').cycle({
        fx:                 'fade',
        speed:              750,
        timeout:            5000,
        startingSlide:      (currentPage - 1),
        pager:              '.slideshowNavigation',
        next:               '.slideshowNext',
        prev:               '.slideshowPrevious',
        before:             onBefore,
        after:              onAfter,
        pagerAnchorBuilder: cyclePagerAnchorBuilder,
        requeueOnImageNotLoaded: false
    });
    $('.slideshowStatus').html('Pause')
        .addClass('pause')
        .removeClass('start hidden');

    /* Slideshow bei manuellem Wechsel pausieren */
    $('.slideshowNavigation > li > a, .slideshowNavigation > li > span > a').bind('click', function() {
        pauseSlideshow('#slideshowImageContainer');
    });

    /* Pause-/Start-Button initialisieren */
    $('.slideshowStatus').bind('click', function() {
        if ($('.slideshowStatus').html() == 'Start') {
            resumeSlideshow('#slideshowImageContainer');
        } else {
            pauseSlideshow('#slideshowImageContainer');
        }
    });
    

    /* Navigation initialisieren */
    updateNavigation(currentPage - 1);

    cycleInitKeypress();
    
    /*
    $('#slideshowImageContainer > img').each(function() {
        imageData = eval('globalImageData.' + $(this).attr('id'));
        
        $(this).attr('src', imageData.source);
    });
    */
}


/**
 *
 */
function cycleInitKeypress() {
    $(document).keypress(function(event) {
        if (event.keyCode == 37) {
            if (!$('.slideshowPrevious').parents('ul > li').hasClass('hidden')) {
                $('.slideshowPrevious').trigger('click');
            }
        } else if (event.keyCode == 39) {
            if (!$('.slideshowNext').parents('ul > li').hasClass('hidden')) {
                $('.slideshowNext').trigger('click');
            }
        }
    });
}


/**
 *
 */
function scrollPaneInit() {
    $('.inner-details').jScrollPane({
        showArrows:               true,
        verticalArrowPositions:   'split',
        horizontalArrowPositions: 'split'
    });
}


/**
 *
 */
function fancyboxOnComplete() {
    imageData = eval('globalImageData.' + this.orig.attr('class'));

    $('#slideshowImageContainer').cycle(imageData.paginatorPosition - 1);
}


/**
 *
 */
function fancyboxTitleFormat(title, currentArray, currentIndex, currentOpts) {
    imageData = eval('globalImageData.' + $(currentArray[currentIndex]).attr('class'));

    return (imageData.showFacebook && (imageData.facebookUrl != '')
        ? '<iframe src="http://www.facebook.com/plugins/like.php?href=' + imageData.facebookUrl + '&amp;layout=button_count&amp;show_faces=false&amp;width=49&amp;action=like&amp;colorscheme=light&amp;height=21&amp;locale=en_US" scrolling="no" frameborder="0" style="float: right; border:none; overflow:hidden; width:49px; height:21px;"></iframe>'
        : ''
    )
    + '<div style=\'text-align: left;\' class=\'small\'>Bild ' + (currentIndex + 1) + ' von ' + countImages + ((imageData.title.length || (imageData.copyright != '')) ? '<br />' : '') + (imageData.title.length ? '' + '<strong>' + imageData.title + '</strong>' : '') + ((imageData.copyright != '') ? ((imageData.title.length) ? '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ' : '') + imageData.copyright : '') + '</div>';
}


/**
 *
 */
function cyclePagerAnchorBuilder(pIndex, pDomElement) {
    return '<li class=\'slideshowNavigation' + (pIndex + 1) + '\'><a href="#">' + (pIndex + 1) + '</a>' + ((pIndex < (countImages - 1)) ? "<span><span class='hidden'>&nbsp;</span>|</span>" : '') + '</li>'
        + '<li class=\'slideshowNavigationActive' + (pIndex + 1) + '\' class=\'hidden\'>' + (pIndex + 1) + ((pIndex < (countImages - 1)) ? "<span><span class='hidden'>&nbsp;</span>|</span>" : '') + '</li>';
}


/**
 *
 */
function updateNavigation(pCurrentIndex) {
    $('.slideshowNavigation').append(
        $('a.slideshowJumpNext').parents('ul.horizontal-list > li').detach()
    );
    $('.slideshowNavigation').append(
        $('a.slideshowNext').parents('ul.horizontal-list > li').detach()
    );

    /* Alle Elements ausblenden */
    $('.slideshowNavigation > li').addClass('hidden');

    /* Sprungmark fuer rueckswaerts pruefen */
    if (pCurrentIndex == 0) {
        $('.slideshowNavigation > li > span > a.slideshowPrevious').parents('.slideshowNavigation > li').addClass('hidden');
    } else {
        $('.slideshowNavigation > li > span > a.slideshowPrevious').parents('.slideshowNavigation > li').removeClass('hidden');
    }
    /* Sprungmark fuer vorswaerts pruefen */
    if (pCurrentIndex == (countImages - 1)) {
        $('.slideshowNavigation > li > span > a.slideshowNext').parents('.slideshowNavigation > li').addClass('hidden');
    } else {
        $('.slideshowNavigation > li > span > a.slideshowNext').parents('.slideshowNavigation > li').removeClass('hidden');
    }

    /* Multisprungmarke fuer rueckwaerts pruefen */
    if ((pCurrentIndex - 3) < 1) {
        $('.slideshowNavigation > li > a.slideshowJumpPrevious').parents('.slideshowNavigation > li').addClass('hidden');
    } else {
        $('.slideshowNavigation > li > a.slideshowJumpPrevious')
            .unbind('click')
            .bind('click', function() {
                $('#slideshowImageContainer').cycle(Math.max(0, pCurrentIndex - 7));
            })
            .parents('.slideshowNavigation > li').removeClass('hidden');
    }
    /* Multisprungmarke fuer vorwaerts pruefen */
    if ((pCurrentIndex + 5) > countImages) {
        $('.slideshowNavigation > li > a.slideshowJumpNext').parents('.slideshowNavigation > li').addClass('hidden');
    } else {
        $('.slideshowNavigation > li > a.slideshowJumpNext')
            .unbind('click')
            .bind('click', function() {
                $('#slideshowImageContainer').cycle(Math.min(countImages - 1, pCurrentIndex + 7));
            })
            .parents('.slideshowNavigation > li').removeClass('hidden');
    }

    /* Relevante Elemente aktivieren */
    start = Math.max(0, pCurrentIndex - 3);
    if ((start + pageRange) > (countImages - 1)) {
        start = countImages - pageRange;
    }
    
    for (i = start; i < (start + pageRange); ++i) {
        /* Ueberpruefen ob es sich um das Navigationselement des aktiven Bildes handelt */
        if (i != pCurrentIndex) {
            $('.slideshowNavigation > li.slideshowNavigation' + (i + 1)).removeClass('hidden');
        }
    }

    /* Navigationselement des aktiven Bildes aktivieren */
    $('.slideshowNavigation > li.slideshowNavigationActive' + (pCurrentIndex + 1)).removeClass('hidden');

    /* Zoomziel setzen */
    $('#zoom')
        .unbind('click')    
        .bind('click', function() {
            pauseSlideshow('#slideshowImageContainer');
            $(document).unbind('keypress');
            $('.' + $('#slideshowImageContainer > img:eq(' + pCurrentIndex + ')').attr('id')).trigger('click');
            return false;
        });

    /* Downloadlink setzen */
    imageData = eval('globalImageData.' + $('#slideshowImageContainer > img:eq(' + pCurrentIndex + ')').attr('id'));
    $('.slideshowDownload').attr('href', imageData.downloadUrl);
}


/**
 * @param string
 */
function resumeSlideshow(pIdentifier) {
    $(pIdentifier).cycle('resume');
    $('.slideshowStatus').html('Pause')
        .addClass('pause')
        .removeClass('start');
}


/**
 * @param string
 */
function pauseSlideshow(pIdentifier) {
    $(pIdentifier).cycle('pause');
    $('.slideshowStatus').html('Start')
        .addClass('start')
        .removeClass('pause');
}


/**
 *
 */
function onBefore(pCurrSlideElement, pNextSlideElement, pOptions, pForwardFlag) {
    imageData = eval('globalImageData.' + $(pNextSlideElement).attr('id'));

    /* Loader anzeigen */
    /*
    $('.image-loader').removeClass('hidden');
    */
    $(pNextSlideElement).attr('src', imageData.source);
    /*
    $('.image-loader').addClass('hidden');
    */
    
    /* Meta-Daten aktualisieren */
    $('.slideshowTitle').html(imageData.title);
    
    $('.image-details .slideshowCopyright').html(imageData.copyright);
    if (imageData.copyright != '') {
        $('#main-image .slideshowCopyright').html('&copy; ' + imageData.copyright);
    } else {
        $('#main-image .slideshowCopyright').html();
    }
    
    if (imageData.content) {
        $('.slideshowContent').html(imageData.content);
        scrollPaneInit();
    }
    if (imageData.showFacebook) {
        $('.slideshowFacebook').html(
            '<iframe src="http://www.facebook.com/plugins/like.php?href=' + imageData.facebookUrl + '&amp;layout=button_count&amp;show_faces=false&amp;width=49&amp;action=like&amp;colorscheme=light&amp;height=21&amp;locale=en_US" scrolling="no" frameborder="0" style="float: right; border:none; overflow:hidden; width:49px; height:21px;"></iframe>'
        );
    } else {
        $('.slideshowFacebook').html('');
    }

    /* Element einblenden */
    $(pNextSlideElement).removeClass('hidden');
        
    /* Aktive-Element in der Uebersicht setzen */
    $('.thumb.active').removeClass('active');
    $('.' + $(pNextSlideElement).attr('id')).parents('div.thumb').addClass('active');
}


/**
 *
 */
function onAfter(pCurrSlideElement, pNextSlideElement, pOptions, pForwardFlag) {
    if ((previousElement = $(pNextSlideElement).prev()).length > 0) {
        imageData = eval('globalImageData.' + previousElement.attr('id'));

        previousElement.attr('src', imageData.source);
    }
    if ((nextElement = $(pNextSlideElement).next()).length > 0) {
        imageData = eval('globalImageData.' + nextElement.attr('id'));

        nextElement.attr('src', imageData.source);
    }
}
