/**
 * @author Pascal Brewing
 * @email pascal.brewing@internetstores.de
 * @version 0.2 
 * @change 0.1 - 0.2 Refactoring der Arrow Funktion
 */
jQuery(document).ready(
    function()
    {
        if(jQuery('.produkt_detail_scroller')){
            var scrollContainer = jQuery('.produkt_detail_box_holder .tx-nfcshop-pi1');
            var productBoxContainer = jQuery('.box');
            var produktBoxLength = 0;
            var productBoxWidth = 0;
            var productBoxHeight = 0;
            var selectedIndex = 1;
            var marginNow = 0;
            var maxScrollIndex = 0;
            var boxAbstand = 50;
            var rightArrow = jQuery('.produkt_detail_scroller_arrowRight .arrow');
            var leftArrow = jQuery('.produkt_detail_scroller_arrowLeft .arrow');
            var rightArrowInvisible= false;
            var leftArrowInvisible = false;

            jQuery(scrollContainer).each(
                function() {
                    produktBoxLength = jQuery(this).children(productBoxContainer).length;

                    maxScrollIndex = (produktBoxLength - 3);

                    productBoxWidth = productBoxContainer.outerWidth()+boxAbstand;
                    productBoxHeight = 	productBoxContainer.outerHeight();

                    if(produktBoxLength >= 0 && produktBoxLength >= maxScrollIndex){
//                        console.info(productBoxWidth);
//                        console.info(produktBoxLength);

                        jQuery(scrollContainer).css('width',(productBoxWidth*produktBoxLength)+'px').css('height',productBoxHeight+'px');
                    }

                    if(produktBoxLength < 5){
                        leftArrow.toggle();
                        rightArrow.toggle();
                    }
                }
            );

            rightArrow.click(function(){
                if (selectedIndex > 0 && selectedIndex < maxScrollIndex) {
                    rightArrowInvisible = false;
                    leftArrowInvisible = false;

                    marginNow = '-'+(((selectedIndex*productBoxWidth)))+'px';
                    animateContainer(marginNow);

                    if(selectedIndex == maxScrollIndex){
                        selectedIndex = selectedIndex;
                    }else{
                        selectedIndex = selectedIndex+1;
                    }

                }

                if(selectedIndex == 0){
                    marginNow = '-'+productBoxWidth+'px';
                    animateContainer(marginNow);
                    selectedIndex = selectedIndex+1;
                }
                checkArrowVisible(selectedIndex);
//                console.log('rightAfter',selectedIndex);
            });

            leftArrow.click(
                function(){

                    if(selectedIndex > 1 && selectedIndex <= maxScrollIndex) {
                        selectedIndex = selectedIndex - 1;
                        marginNow = '-'+(((selectedIndex*productBoxWidth)-productBoxWidth))+'px';
                        animateContainer(marginNow);

                    } else if(selectedIndex == 1){
                        selectedIndex = 0;
                        animateContainer('0px');

                    }else{
                        selectedIndex = 0;
                        animateContainer('0px');
                    }

                    checkArrowVisible(selectedIndex);
//                    console.log('leftAfter',selectedIndex);
                }
            );

            function animateContainer(marginLeft) {
                scrollContainer.animate({
                    marginLeft: marginLeft
                }, 400 );
            }


            function checkArrowVisible(selectedIndex) {
                if(selectedIndex == maxScrollIndex){
                    hideArrow(rightArrow);
                    showArrow(leftArrow);
                }else if(selectedIndex == 1 ){
                    hideArrow(leftArrow);
                    showArrow(rightArrow);
                }else{
                    showArrow(rightArrow);
                    showArrow(leftArrow);
                }
            }

            function hideArrow(arrowCont){
                arrowCont.fadeOut(200);
            }

            function showArrow(arrowCont){
                arrowCont.fadeIn(200);
            }
        }
    }
);
