jQuery(function($)
{
    jQuery('a.lightbox').fancybox(
    {
        zoomSpeedIn:   300,
        zoomSpeedOut:  300,
        overlayShow:   true,
        titlePosition: 'inside' // alternativen: 'over' (transparent), 'outside' (achtung: nur einzeiliger text moeglich)
    });

    // NAvi soll nicht ruckeln beim Hovern
    if(!($.browser.msie)){
        $('#navimain').addClass('js-nomargin');
        $('#navimain > li').not('.last0').each
        (
            function()
            {
                var liWidth = $(this).width() + 33 + 'px';
                liWidth = liWidth;
                $(this).css('width',liWidth);
            }
        );
    };

    // list icons red
    $('.portfolio div > ul').each(function(el){
        $(this).find('li').addClass('js-li').wrapInner('<span></span>')
    });


    // Link zum Seitenanfang
    $('#content-text .department h1').addClass('js-toplink').prepend('<a href="#main" title="zum Seitenanfang" class="js"></a>');

    // Whoson Link
    var $whosonImage = $('a#whosonlink img');
    var $whosonLink = $('a#whosonlink');
    var $whosonHover = $('div#whoson-hover');

    if ($whosonImage.height()>1) {
        $whosonLink.mouseenter(function (e)
        {
            $whosonHover.show()
        });
        $whosonLink.mouseleave(function ()
        {
            $whosonHover.hide();
        });
    }
    if ($whosonImage.height()==1) {
        $whosonLink.remove();
    }

/*
    // add clearer before splitted line in contact form in IE
    if($.browser.msie){
        $('#content .tx-pilmailform-pi1 li.p20').before("<br class='clear' />");
    }
*/

    // callback: hide labels, set text as value
    // add to empty-on-click-list below
    //var labelText = $('#footer form label').text();
    //$('#footer form label').attr('style','position: absolute; left: -99em').next('input').attr('value',labelText);

    // empty input fields on click
    $('#search-input, .tx-indexedsearch-searchbox-sword, #footer input.text').focus(function () {
        $(this).attr('value','');
    });

    // transform Labels to placeholder values
    formLabelToValue($('#search-form, .tx-indexedsearch-searchbox-sword, #footer form li'));

    // Slideshow
    $('#theme').cycle({ slideExpr: 'img' });

    // Pagebrowser News List
    $('.browselinks li:first, .browselinks li:last').remove();

    $('.browselinks li:first').addClass('prev');
    $('.browselinks li:last').addClass('next');

    // adapt height of sideimage
    if($('.hintergrundbild').length == 1){
        var headerHeight = $('#content-text .csc-header-n1').height();
        var contentHeight = $('#content-text').height();
        var sideHeight = contentHeight - headerHeight + 45;
        var imageHeigth = $('#content-side .hintergrundbild img').height();

        headerHeight = headerHeight - 1 + 'px';
        $('#content-side .hintergrundbild').css({ top: headerHeight });

        $('#content-side').addClass('js-content-side').height(sideHeight + 'px');

        if (imageHeigth < sideHeight) {
            $('.js-content-side').css('border-bottom','none');
        }

    };

    // Hello McFly? Anybody home?
    if($.browser.msie){
        $('#header, #fade, #theme').css({zoom: "1"});
    }

    // Browser targeting
    if($.browser.mozilla){
        $('body').addClass('moz');
    };

    // Kontaktformular
    $('.tx-pilmailform-pi1 #an').prepend('<option value="leer" selected="selected">Bitte wählen Sie.</option>');

    // Lupe Klickvergrößerung
    $('a.lightbox').each( function()
    {
        $(this).append('<div class="lupe"></div>').wrapAll('<div class="lupe-outer"></div>');
    });

    // Pagebrowser dynamische Positionierung
    var PbBreite = 0;
    $(".browselinks li").each(function ()
    {
        PbBreite +=  $(this).width()+5;
    });

    $(".browselinks").css("margin-left", 475-(PbBreite/2+2.5)+"px");

    // Referenzliste: Ausrichtung der Bilder
    $(".refs-list-image").each( function ()
    {
        var ImageHoehe= 0;
        var ImageBreite= 0;
        var ImageAbstandOben= 0;
        var ImageAbstandLinks= 0;

        ImageHoehe = $(this).height();
        ImageBreite = $(this).width();

        ImageAbstandOben = (110-ImageHoehe)/2;
        ImageAbstandLinks = (220-ImageBreite)/2;

        $(this)
            .css("top",ImageAbstandOben + "px")
            .css("left",ImageAbstandLinks + "px");
    });

    //******************* Referenzen Detailansicht **********************************
    ($('.refs-single-detail-button')) && $('.refs-single-detail-button').addClass("no");

    // Höhe der Beschreibung auslesen und Abstand abhängig von Bildergalerie setzen
    var detailheight = 0;
    var abstand = 0;

    if ($('.refs-single-details-gallery').length == 1)
    {
        abstand = 230;
    }
    else
    {
        abstand = 20;
    }

    // Höhe der Beschreibung + Abstand
    detailheight = $(".refs-single-details").height() + abstand;

    // Beschreibung verstecken
    $(".refs-single-details").css("height","0px");

    // Animator.js Objekt für Referenzen Detailansicht Aufklappeffekt
    var aniRef = null;

    ($('.refs-single-detail-button')) && $('.refs-single-detail-button').click(function ()
    {
        // alte animation vorher stoppen
        // required HACK since Animator doesn't support a stop() method
        if (aniRef)
        {
            window.clearInterval(aniRef.intervalId);
            //aniObj.intervalId = null;
        }

        aniRef = new Animator(
        {
            duration: 800,
            transition: Animator.tx.linear
        });

        $(".refs-single-details").each(function ()
        {
            var zielhoehe;

            if ($(".refs-single-detail-button").hasClass("act"))
            {
                zielhoehe = 0;
                $(".refs-single-detail-button").removeClass("act").addClass("no");
            }else
            {
                zielhoehe = detailheight;
                $(".refs-single-detail-button").removeClass("no").addClass("act");
            }

            // Subjects zum Animator hinzufügen
            aniRef.addSubject(
                new NumericalStyleSubject(
                    this,
                    'height',
                    $(this).height(),
                    zielhoehe
                )
            )
        });
        aniRef.seekTo(1);
    });

    //**************************** Akkordion Startseite ****************************
    if ($('.accordion-item').length)
    {
        // <div> um die einzelnen Elemente wrappen
        var zaehler = 0;
        $('.accordion-item').each(function ()
        {
            zaehler = zaehler + 1;
            $(this).wrapInner(function()
            {
               return '<div id="accordion-link-' + zaehler +'" class="accordion-link"></div>';
            });
        });

        // <div> um alle Elemente wrappen
        $('.accordion-item').wrapAll('<div id="accordion-list"></div>');


        // Allen Einträgen die Klasse no geben, dem ersten Eintrag die Klasse act geben
        // den umschliessenden <div>s accordion-item auch Klassen geben
        $('.accordion-link').not('.accordion-link:first').addClass('no');
        $('.accordion-link:first').addClass('act');
        $('.accordion-item').not('.accordion-item:first').addClass('min');
        $('.accordion-item:first').addClass('max');

        // z-index für die einzelnen Karten
        $('#accordion-link-1').parent().css('z-index','30');
        $('#accordion-link-2').parent().css('z-index','20');
        $('#accordion-link-3').parent().css('z-index','10');


        // top gfx + arrow einfügen
        $('#accordion-link-1').parent().prepend('<div class="test"><div class="accordion-topgfx-1"></div><div class="arrow"></div></div>');
        $('#accordion-link-2').parent().prepend('<div class="test"><div class="accordion-topgfx-2"></div><div class="arrow"></div></div>');
        $('#accordion-link-3').parent().prepend('<div class="test"><div class="accordion-topgfx-3"></div><div class="arrow"></div></div>');

        // arrow einfügen
        //$('.accordion-link').append('<div class="arrow"></div>');

        // Animator.js Objekt Akkordion Animation
        var aniObj = null;

        $('.accordion-link').mouseenter(function()
        {
            // Variablen anlegen
            var clickedItem = this;

            // alte animation vorher stoppen
            // required HACK since Animator doesn't support a stop() method
            if (aniObj)
            {
                window.clearInterval(aniObj.intervalId);
                //aniObj.intervalId = null;
            }

            aniObj = new Animator(
            {
                duration: 400,
                /* transition: Animator.tx.linear, */
                onComplete: function()
                    {
                        //console.log(aniObj.inspect());
                        $('.accordion-link').each(function ()
                        {
                            if(!(this == clickedItem))
                            {
                                if ($(this).hasClass('act'))
                                {
                                    $(this).removeClass('act').addClass('no');
                                    $(this).parent().removeClass('max').addClass('min');
                                }
                            }
                        });
                    }
            });

            $('.accordion-link').each(function ()
                {
                    var zielbreite;
                    var zielpadding;

                    // Variablen und Klassen setzen für alle Elemente
                    if(this == clickedItem)
                    {
                        zielbreite = 584;
                        zielpadding = 0;
                        if ($(this).hasClass('no'))
                        {
                            $(this).removeClass('no').addClass('act');
                            $(this).parent().removeClass('min').addClass('max');
                        }
                    } else
                    {
                        zielbreite = 1;
                        zielpadding = 89;
                        if ($(this).hasClass('act'))
                        {

                        }
                    }

                    // Subjects zum Animator hinzufügen
                    aniObj.addSubject(
                        new NumericalStyleSubject(
                            this,
                            'width',
                            $(this).width(),
                            zielbreite
                        )
                    )

                    .addSubject(
                        new NumericalStyleSubject(
                            this,
                            'padding-left',
                            $(this).css('padding-left'),
                            zielpadding
                        )
                    )
                });
            aniObj.seekTo(1);
        });

        // include absolute positioned div
        $('.accordion-topgfx-1').mouseenter(function ()
        {
            $('#accordion-link-1').trigger('mouseenter');
        });
        $('.accordion-topgfx-2').mouseenter(function ()
        {
            $('#accordion-link-2').trigger('mouseenter');
        });
        $('.accordion-topgfx-3').mouseenter(function ()
        {
            $('#accordion-link-3').trigger('mouseenter');
        });

        // fancybox ajax content
/*
        $('#accordion-link-1 a.internal-link').click(function() {
            sliderSettings1();
            return false;
        });

        $('#accordion-link-2 a.internal-link').click(function() {
            sliderSettings2();
            return false;
        });
        $('#accordion-link-3 a.internal-link').click(function() {
            sliderSettings3();
            return false;
        });
*/
        // href der links ändern
        $('#accordion-link-1 a').attr({'href':'#medien'});
        $('#accordion-link-2 a').attr({'href':'#kommunikation'});
        $('#accordion-link-3 a').attr({'href':'#social'});
        $('.profil-link a').attr({'href':'#antwort'});

        $('.accordion-link a').fancybox({
            zoomSpeedIn:   300,
            zoomSpeedOut:  300,
            overlayShow:   true,
            'autoDimensions': true,
            'scrolling'     : 'yes',
            'titleShow'     : false,
        });

        $('.profil-link a').fancybox({
            zoomSpeedIn:   300,
            zoomSpeedOut:  300,
            overlayShow:   false,
            'autoDimensions': true,
            'scrolling'     : 'yes',
            'titleShow'     : false,
        });

    }
});

function formLabelToValue(elem) {
    elem.each(function(){

        var labelText = $(this).find('label').text();
        labelText = labelText + ' ...'
        $(this).find('label').css({
            position: 'absolute',
            left: '-9999px'
        });
        $(this).find('label').next('input').attr('value',labelText);
    });
}
