/**
 * @title           Casting Crème Gloss : Glossy Blonds
 */
(function(){
    (function() {
        accordion = function(params) {
            var wrapper = $(params.wrapperId);
            var toggler = $(params.wrapperId+' h3');
            var toFold = $(params.wrapperId+' div');
            var unfolded = params.unfolded || 0;
            
            toFold.each(function(index) {
                if (index != unfolded) {
                    $(this).hide();
                } else {
                    $(this).prev(toggler).addClass('on');
                    $(this).addClass('on');
                }
            });
            
            toggler.mouseover(function() {
                $(this).addClass('hover');
            }).mouseout(function() {
                $(this).removeClass('hover');
            });        
            
            toggler.click(function() {
                if ($(this).hasClass('on')) {
                    return false;
                } else {
                    toFold.each(function() {
                        if ($(this).hasClass('on')) {
                            $(this).slideUp(500).removeClass('on');
                            $(this).prev(toggler).removeClass('on');
                        }
                    });
                    $(this).addClass('on');
                    $(this).next(toFold).slideDown(500).addClass('on');
                }
            });
        };
        LOP.accordion = accordion;
    })();
    
    (function() {
        hoverMenu = function(params) {
            var wrapper = $(params.wrapperId);
            var hovered = $(params.wrapperId+' .toggler');
            var hiddenElmt = $(params.wrapperId+' .hidden');
        
            hovered.each(function() {
                $(this).hover(
                    function() {
                        $(this).addClass('hover');
                        $(this).next(hiddenElmt).show();
                    },
                    function() {
                        $(this).removeClass('hover');
                        $(this).next(hiddenElmt).hide();
                    });
            });
        };
        LOP.hoverMenu = hoverMenu;
    })();
    
    (function() {
        rangeHover = function(params) {
            var wrapper = $(params.wrapperId);
            var hovered = $(params.wrapperId+' .toggler img');
            var hiddenElmt = $(params.wrapperId+' .hidden');
        
            hovered.each(function() {
                var toolTipParent = $(this).parent().parent();
                var toolTip = $(this).parent().next(hiddenElmt);
                
                var toolTipWidth = toolTip.width();
                var parentWidth = toolTipParent.width();
                var toolTipLeft = ( parentWidth - toolTipWidth ) / 2;

                $(this).hover(
                    function() {
                        toolTipParent.addClass('hover');
                        toolTip.css('left', toolTipLeft).show();
                    },
                    function() {
                        toolTip.hide();
                        toolTipParent.removeClass('hover');
                    });
            });
        };
        LOP.rangeHover = rangeHover;
    })();
    
    (function(){
        slideshow = {
            init : function(param) {
                slideshow.wrapperId = $(param.wrapperId);
                slideshow.slideWidth = parseInt(param.slideWidth, 10);
                slideshow.movingElmt = slideshow.wrapperId.find('.contentInner');
                slideshow.slides = slideshow.movingElmt.find('.slide');    
                slideshow.movingElmtWidth = 0;
                slideshow.slides.each(function() {
                    slideshow.movingElmtWidth = slideshow.movingElmtWidth + slideshow.slideWidth; 
                });
                slideshow.movingElmt.css('width', slideshow.movingElmtWidth+'px');
                
                /**
                 * creates pagination
                 */
                slideshow.wrapperId.after('<div class="pagination"><ul></ul></div>');
                slideshow.pagination = slideshow.wrapperId.next('.pagination');
                slideshow.slides.each(function(index) {
                    pageNumber = index + 1;
                    if (index === 0) {
                        $(slideshow.pagination).find('ul').append('<li class="page"><a href="#slide'+ pageNumber +'" class="on">'+ pageNumber +'</a></li>');
                    } else {
                        $(slideshow.pagination).find('ul').append('<li class="page"><a href="#slide'+ pageNumber +'">'+ pageNumber +'</a></li>'); 
                    }                   
                });
                slideshow.pagination.prepend('<a href="#prev" class="prev off"><span>'+l10n.pagination.prev+'</span></a>');
                slideshow.pagination.append('<a href="#next" class="next"><span>'+l10n.pagination.next+'</span></a>');
                slideshow.pagination.active = 1;
                slideshow.manageClicks();
            },			
			manageClicks : function() {
                /**
                 * manages pagination
                 * @param {Object} e
                 */
				trigger = slideshow.pagination.find('a');
                trigger.bind(
				    'click', function(e) {
						trigger.unbind();
	                    e.preventDefault();
	                    if ($(this).hasClass('on')) {
	                        return false;
							slideshow.manageClicks();
	                    } else {
	                        slideshow.leftPos = parseInt(slideshow.movingElmt.css('left').replace('px', ''), 10);
	                        slideshow.pagination.target = $(this).attr('href').split('#')[1];
	                        switch (slideshow.pagination.target) {
	                            case 'prev' :
	                                if (slideshow.pagination.active <= 1) {
	                                    return false;
	                                } else {
	                                    slideshow.move(slideshow.slideWidth);
	                                    slideshow.setActive('-1');
	                                }
	                                break;
	                            case 'next' :
	                                if (slideshow.pagination.active >= slideshow.slides.length) {
	                                    return false;
	                                } else {
	                                    slideshow.move(0 - slideshow.slideWidth);
	                                    slideshow.setActive('1');
	                                }                           
	                                break;
	                            default :
	                                var target = parseInt(slideshow.pagination.target.replace('slide', ''), 10);
	                                var delta = parseInt(slideshow.pagination.active, 10) - target;
	                                var distance = parseInt(delta * slideshow.slideWidth, 10);
	                                slideshow.move(distance);
	                                slideshow.pagination.active = target;
	                                slideshow.setActive(0);
	                                break;
	                        }
	                    }
                });
            },
            move : function(distance) {
                slideshow.leftPos = parseInt(slideshow.leftPos, 10) + distance;         
                slideshow.leftPos = slideshow.leftPos + 'px';
                slideshow.movingElmt.animate({
                    'left' : slideshow.leftPos
                }, 600, function(){
					slideshow.manageClicks();
				});
            },
            setActive : function(order) {
                slideshow.pagination.active = parseInt(slideshow.pagination.active, 10) + parseInt(order, 10);
                slideshow.pagination.find('.on').removeClass('on');
                slideshow.pagination.find('li:nth-child('+slideshow.pagination.active+') a').addClass('on');
                
                if (slideshow.pagination.active <= 1) {
                    slideshow.pagination.find('.prev').addClass('off');
                } else {
                    slideshow.pagination.find('.prev').removeClass('off');
                }
                if (slideshow.pagination.active >= slideshow.slides.length) {
                    slideshow.pagination.find('.next').addClass('off');
                } else {
                    slideshow.pagination.find('.next').removeClass('off');
                }
            }
        };
        LOP.slideshow = slideshow;
    })();
    
    $(document).ready(function() {
    /**
     * @workaround      forces hasLayout
     */
    if (LOP.ieOld === true) {
            $('#Minisite_CCG_GB_Home').css('zoom', 1);
        }
    });
})();
