/**
 *
 *
 * Some Comments here
 *
 */
(function($) {
    $.fn.reverse = [].reverse;
    $.configurableSlider = {};
    $.fn.configurableSlider = function(options){
        /*
         * Let's define some settings
         */
        var settings = {
            selector : this.selector,
            startPos : 0,
            infiniteMode : true,
            fillAfter : false,
            elementParent : 'ul',
            speed : 600,
            easing : 'linear',
            naviMarkup : '<div class="slider-navi"><a class="foward"></a><a class="back"></a></div>',
			naviContainer: false,
            activeItemClass : 'slider-current-active-element',
            slideCallback : function(){
                return false
            },
            whileSlideCallback : function(){
                return false
            }
        };
        var options = $.extend(settings, options);
        this.each(function(){
            var self = this;
            var elParent = $(options.elementParent, self).eq(0);
            var elements = elParent.children();
            elements.eq(0).addClass(options.activeItemClass);
            var elW = elements.outerWidth(true);
            var obj = {actualPos : options.startPos};
            elParent.css({
                left : obj.actualPos
            });
			
			var time_me;
			
            if(options.infiniteMode){
				
				$('#slider-container').hover(function(){
					clearTimeout(time_me);
					options.infiniteMode = false;
				
				},function(){
					options.infiniteMode = true;
					time_me = setTimeout(function(){slide('foward')},5000);
				})
			
                time_me = setTimeout(function(){slide('foward')},5000);
            }
            
            var slide = function(direction){
				
				
                slideUnbind();
                if(options.infiniteMode){
					if(direction == 'back'){
						$("> :last", elParent).prependTo(elParent);
                    	obj.actualPos-=elW;
	                    elParent.css({
	                        left : obj.actualPos
	                    });
					};
				};
                var animateTo = obj.actualPos-(elW);
                if(direction == 'back'){
                    animateTo = obj.actualPos+(elW);
                    $('.'+options.activeItemClass).removeClass(options.activeItemClass).prev().addClass(options.activeItemClass);
                }else{
                    $('.'+options.activeItemClass).removeClass(options.activeItemClass).next().addClass(options.activeItemClass);
                }
                obj.actualPos = animateTo;
                elParent.animate({
                    left : animateTo
                }, options.speed, options.easing, function(){
                    if(options.infiniteMode && direction == 'foward'){
                        $("> :first", elParent).appendTo(elParent).css({opacity : 0}).animate({opacity : 1}, 400);
                    	obj.actualPos+=elW;
	                    elParent.css({
	                        left : obj.actualPos
	                    });
                    };
                    options.slideCallback(direction);
                    slideBind();
                });
                options.whileSlideCallback(direction);
				
				if(options.infiniteMode){
					time_me = setTimeout(function(){slide('foward')},5000);
				}
				
            };
           	if(!options.naviContainer){
				options.naviContainer = self;
			}else{
				options.naviContainer = $(options.naviContainer);
			}
			var slideUnbind = function(){
				$(".foward, .back", options.naviContainer).unbind();
            }
            var slideBind = function(){
                $(".foward", options.naviContainer).click(function(){
                    slide('foward');
                    return false;
                });
                $(".back", options.naviContainer).click(function(){
                    slide('back');
                    return false;
                });
            };
            elParent.width(elW*elements.length);
            // Init object
            $.configurableSlider[options.selector] = {};
            $.configurableSlider[options.selector] = {options : options, obj : obj};
            slideBind();
        });
        
        /*
         * Return jquery object with selection
         */
        return this;
    };
})(jQuery);






//Gestione PNG con JS
//Attivazione CufOn
//OnFocus input

















