/* Author: */ 

$(document).ready(function() {
    
    if ($.browser.msie) {
        if($.browser.version.substr(0,1) < 8) { 
            initIE();
        };
    }
    if($("html.ie7 body").is(".meyerCat, .w_wegenerCat, .stock-serviceCat")) { initCollectionHoverIE() };
    if($("html:not(.ie7) body").is(".meyerCat, .w_wegenerCat, .stock-serviceCat")) { initCollectionHover() };
    
});

/**
 * Integrates nivo slider if the collection teaser is available
 */
yepnope([{
    test: $('body').hasClass('homeCat'),
    yep: ['/_js/libs/heartcode-canvasloader-min.js', '/_js/mylibs/homeSlider.js','/_js/libs/jquery.imagesloaded.js', '/_js/libs/jquery.nivo.slider.pack.js'],
    callback: function(url, result, key) {
            if(url === '/_js/libs/jquery.nivo.slider.pack.js') {
                initSlider();
            }
        }
    }]);


/**
 * Integrates nivo slider if the collection teaser is available
 */
yepnope([{
    test: $('body').hasClass('detailCat'),
    yep: '/_js/libs/jquery.nivo.slider.pack.js',
    callback: function(url, result, key) {
        
        var total = $('#collectionView img').length;
        var rand = Math.floor(Math.random()*total);
        $(document).ready(function() {
            $('#collectionView').nivoSlider({
                effect:'fade', // Specify sets like: 'fold,fade,sliceDown'
                slices:1, // For slice animations
                boxCols: 1, // For box animations
                boxRows: 1, // For box animations
                animSpeed:500, // Slide transition speed
                pauseTime:5000, // How long each slide will show
                startSlide: 0, // Set starting Slide (0 index)
                directionNav:false, // Next & Prev navigation
                directionNavHide:false, // Only show on hover
                controlNav:true, // 1,2,3... navigation
                controlNavThumbs:false, // Use thumbnails for Control Nav
                controlNavThumbsFromRel:false, // Use image rel for thumbs
                controlNavThumbsSearch: '.jpg', // Replace this with...
                controlNavThumbsReplace: '.jpg', // ...this in thumb Image src
                keyboardNav:false, // Use left & right arrows
                pauseOnHover:true, // Stop animation while hovering
                manualAdvance:false, // Force manual transitions
                captionOpacity:0.8, // Universal caption opacity
                prevText: 'Prev', // Prev directionNav text
                nextText: 'Next', // Next directionNav text
                beforeChange: function(){}, // Triggers before a slide transition
                afterChange: function(){}, // Triggers after a slide transition
                slideshowEnd: function(){}, // Triggers after all slides have been shown
                lastSlide: function(){}, // Triggers when last slide is shown
                afterLoad: function(){} // Triggers when slider has loaded
            });
        
            $('#collectionView').data('nivoslider').stop();
        
            $('#collectionThumbs .slider img').click(function() {
                var button = $(this).index();
                $('#collectionView .nivo-controlNav a[rel='+button+']').click();
                $(this).parent().find('.active').removeClass("active");
                $(this).addClass("active");
            });
        
            $('#collectionThumbs .slider img:first-child').click();
        
        });
    }
    }]);
    
    
/**
 * Integrates slide deck if the slide teaser is available
 */
yepnope([{
    test: $('div').hasClass('slideTeaser'),
    yep: ['/_js/libs/jquery.mousewheel.min.js','/_js/libs/slidedeck.jquery.js'],
    callback: function(url, result, key) {
        
        if (url === '/_js/libs/slidedeck.jquery.js') {

            // Navigation
            $('.slideTeaser').each(function(index) {
                
                var slideDeck = $(this).find(".slides");
                
                // Title navigation
                if ($(this).find('.slideNav').is("dl")) {
                
                    // Generate accordion navigation
                    $(this).find('.slideNav dd:gt(0)').hide();
                    $(this).find('.slideNav dt').click(function() {
                        var slidedeck = $(this).parents(".slideTeaser").find(".slides").slidedeck();
                        var slideNumber = $(this).index("dt");
                        var verticalSlide = slidedeck.verticalSlides[slideNumber-1].current;
                        
                        checkButtonStatus(slidedeck, verticalSlide);
                        $(this).parents(".slideTeaser").find(".slides").slidedeck().goTo(slideNumber);
                        $(this).parent().find('dd').slideToggle('.7');
                    });
             
                    // Activate slidedeck control
                    $(this).find('.slideNav a').click(function(){
                        var slideNumber = $(this).parents("dd").prev().index("dt");
                        var verticalSlideNumber = $(this).parent().index();
                        $(this).parents(".slideTeaser").find(".slides").slidedeck().vertical().goTo(verticalSlideNumber+1)
                        checkButtonStatus(slideDeck, verticalSlideNumber);
                        return false;
                    });

                    $(this).find('.slideNav li:first-child a').addClass('active');
                    $(this).find('.slides').each(function(index) {
                        if($(this).children('dt').length > 0) {
                            $(this).parent().find('.slideNavButtons .next a').addClass('active');
                        }
                    });
                
                } else {
                    // Activate slidedeck control
                    $(this).find('.slideNav a').click(function(){
                        var slideNumber = $(this).parent().index();
                        $(this).parents(".slideTeaser").find(".slides").slidedeck().vertical().goTo(slideNumber+1);
                        checkButtonStatus(slideDeck, slideNumber);
                        return false;
                    });

                    $(this).find('.slideNav li:first-child a').addClass('active');

                    // Slidedeck navigation button init
                    var isVertical = $(this).has('.slidesVertical').length;

                    if(isVertical) 
                    {
                        $(this).find('.slideNav').each(function(index) {
                            if($(this).find('li').children().length > 0) {
                                $(this).parent().find('.slideNavButtons .next a').addClass('active');
                            }
                        });
                    } else {
                                                
                        $(this).find('.slides').each(function(index) {
                            if($(this).children('dt').length > 0) {
                                $(this).parent().find('.slideNavButtons .next a').addClass('active');
                            }
                        });
                    }
                }
                
                // Slidedeck prev next navigation buttons
                if($(this).find(".slideNavButtons").is("nav")) {
                    
                    var isVerticalNav = $(this).find('.slides dd>ul').children().length != 0;
                    
                    if (isVerticalNav) {

                            $(this).find(".previous").click(function() {
                                var currentSlide = slideDeck.slidedeck().vertical().current - 1;
                                checkButtonStatus(slideDeck, currentSlide);
                                slideDeck.slidedeck().vertical().prev();
                                return false;
                            });
                
                            $(this).find(".next").click(function() {
                                var currentSlide = slideDeck.slidedeck().vertical().current + 1;
                                checkButtonStatus(slideDeck, currentSlide);
                                slideDeck.slidedeck().vertical().next();
                                return false;
                            });

                        } else {

                            $(this).find(".previous").click(function() {
                                var currentSlide = slideDeck.slidedeck().current - 1;
                                checkButtonStatus(slideDeck, currentSlide);
                                slideDeck.slidedeck().prev();
                                return false;
                            });

                            $(this).find(".next").click(function() {
                                var currentSlide = slideDeck.slidedeck().current + 1;
                                checkButtonStatus(slideDeck, currentSlide);
                                slideDeck.slidedeck().next();
                                return false;
                            });                         
                        }

                    function checkButtonStatus(slideDeck, currentSlide) {

                        if(slideDeck.current == undefined) {
                            if(slideDeck.parent().find('ul').hasClass('slidesVertical')) {
                                var lastSlide = slideDeck.slidedeck().verticalSlides[slideDeck.slidedeck().current-1].navChildren.length-2;
                                if(currentSlide == 0) {
                                    slideDeck.parent().find('.slideNavButtons .next a').addClass('active');
                                    slideDeck.parent().find('.slideNavButtons .previous a').removeClass('active');
                                }
                                if(currentSlide > 0 && currentSlide != lastSlide) {
                                    slideDeck.parent().find('.slideNavButtons .previous a').addClass('active');
                                    slideDeck.parent().find('.slideNavButtons .next a').addClass('active');
                                }
                                if(currentSlide == lastSlide) {
                                    slideDeck.parent().find('.slideNavButtons .next a').removeClass('active');
                                    slideDeck.parent().find('.slideNavButtons .previous a').addClass('active');
                                }   
                            } else {                        
                                if(currentSlide == 1) {
                                    slideDeck.parent().find('.slideNavButtons .previous a').removeClass('active');
                                }
                                if(currentSlide == 2) {
                                    slideDeck.parent().find('.slideNavButtons .previous a').addClass('active');
                                }
                                if(currentSlide == slideDeck.slidedeck().slides.length-1) {
                                    slideDeck.parent().find('.slideNavButtons .next a').addClass('active');                     
                                }
                                if(currentSlide == slideDeck.slidedeck().slides.length) {
                                    slideDeck.parent().find('.slideNavButtons .next a').removeClass('active');
                                }
                            }
                        } else {
                            var lastSlide = slideDeck.verticalSlides[slideDeck.current-1].navChildren.length-2;
                            
                            if(currentSlide > 0 && currentSlide != lastSlide) {
                                slideDeck.deck.parent().find('.slideNavButtons .previous a').addClass('active');
                            }
                            if(currentSlide == 0) {
                                slideDeck.deck.parent().find('.slideNavButtons .previous a').removeClass('active');
                                slideDeck.deck.parent().find('.slideNavButtons .next a').addClass('active');
                            }
                            if(currentSlide == lastSlide ) {
                                slideDeck.deck.parent().find('.slideNavButtons .next a').removeClass('active');
                                slideDeck.deck.parent().find('.slideNavButtons .previous a').addClass('active');
                            }
                        }
                    }
                
                }
                
                // Deck
                $(this).find('.slides').slidedeck({
                    index: false,
                    hideSpines: true,
                    scroll: false
                }).vertical({
                    scroll: false
                }); 
                
            });
        }
    }
    }]);


/**
* Integrates formalizer if a form is available
*/
yepnope([{
    test: $('section').hasClass('searchBox'),
    yep: ['/_js/libs/jquery.formalize.min.js'],
    callback: function(url, result, key){
        }
}]);


/**
* Integrates formalizer if a form is available
*/
yepnope([{
    test: $('#noResult').hasClass('reveal-modal'),
    yep: ['/_js/libs/jquery.reveal.js'],
    callback: function(url, result, key){
        $('#noResult').reveal();
        }
}]);


/**
 * MouseOver effects
 */
function initCollectionHover () 
{
    var button = $("#collectionOverview a");
   
    button.prepend('<span class="mouseOver"></span>').find('.mouseOver').hide();
   
    button.bind("mouseenter",function() {
            $(this).find('.mouseOver').stop(true, true).fadeIn(100);
        }).bind("mouseleave",function() {
            $(this).find('.mouseOver').stop(true, true).fadeOut(600);
        });
}

function initCollectionHoverIE () 
{
    var button = $("#collectionOverview a");
   
    button.prepend('<span class="mouseOver"></span>').find('.mouseOver').hide();
   
    button.bind("mouseenter",function() {
            $(this).find('.mouseOver').show();
        }).bind("mouseleave",function() {
            $(this).find('.mouseOver').hide();
        });
}

/**
 * Init IE7
 */
function initIE () 
{
    // Footer
    $("footer *:first-child").css('border','none');
    $(".ie7 footer .footerNav:first-child").css('margin-top','0px');
    $(".ie7 .sizeTable tr:first-child td").css('border','none');
}
