/*
 	file: jquery.SpriteAccordion.js    
    file usage: Featured Section Accordion
    Author: Speed730
    Author URI: http://themeforest.net/user/Speed730
*/

(function($){
    $.fn.spriteAccordion = function(options){
        var defaults = {
            sliderSlots: '>div', // Sliders
            slideOpenSpeed: 450, //Sliding Speed on slider first placement
            sliderSpeed: 450, //slider  hover Speed
            autoSlider: true, // trigger auto slide
            autoSliderSpeed: 3, // AutoSliding Speed
            firstEasing: 'easeOutExpo', // type of easing used
            show_easing: 'easeInQuint',// easing used in slideOpen
            imgStrip: '.imgPreview img', // Small Image Preview
            imgProject: '.imgProject img', // Featured Image Full Size	
            textBox: '.textBox',
            textBackgroundOpacity: 0.6, // background opacity for TextBox
            preload_img_Attr: 'title', // Attrib Used To Loade Images From
            Alt_Images_Src: 'h3' // Alt Attrib For Images
        }, settings = $.extend({}, defaults, options);
        return this.each(function(){
            var slotsContainer = $(this),
			sliders = slotsContainer.find(settings.sliderSlots).css('display', 'block'),
			slider_Width = sliders.width(),
			slider_Height = sliders.height(),
			slider_Height = sliders.height(),
			slider_Count = sliders.length,
			sliderMin = (slotsContainer.width() / (slider_Count)),
			slider_inactive = (slotsContainer.width() - slider_Width) / (slider_Count - 1),
			textBox = slotsContainer.find(settings.textBox).append('<span></span>').removeClass('textBox')
			.addClass('wrapperText').fadeOut(),
			wrappedBox = slotsContainer.find('.wrapperText').find('span').addClass('textBox').css({
                opacity: settings.textBackgroundOpacity,				
				top:0,
				width:textBox.width() + 10
            }),
			projectImg = slotsContainer.find(settings.imgProject),
			interval = '',
			startInterval = '';									
						            
            sliders.each(function(i){
                var $slider = $(this), slider_alink = $slider.find('a').css({
                    display: 'block',
                    width: slider_Width,
                    height: slider_Height					
                });
                $slider.data('data', {
                    $slider_Position: i * sliderMin,
                    $slider_higerPos: i * slider_inactive,
                    $slider_lowerPos: ((i - 1) * slider_inactive) + slider_Width
                });
				
                var sliderData = $slider.data('data');
                $slider.css({
                    zIndex: i + 1,
                    width: sliderMin,
                    left: sliderData.$slider_Position,
                    top: 0
                });				
            });
						
			$(textBox).each(function(i)
			{
				$this = $(this);				
				var title = $this.find("h3");				
				var $thisHeight = $this.outerHeight();				
				var bgCover = $this.find(settings.textBox).insertBefore(title);								
				bgCover.css({height:$thisHeight});
				$this.css({bottom: -sliders.height()});
				
			});
			
			loadImages();
			
			function loadImages(){
				$(".imgPreview").imgLoader({
					img_Src: settings.preload_img_Attr,
					Alt_Src: settings.Alt_Images_Src,
					readyElem_Count: slider_Count - 1,
					callBackFn: function(){
					
					}
				});
				
				$(".imgProject").imgLoader({
					img_Src: settings.preload_img_Attr,
					Alt_Src: settings.Alt_Images_Src,
					callBackFn: function(){
						clearInterval(startInterval);
						sliderFunction();
					}
				});
			}
            setIntervalFn();
			            
            function sliderFunction(){
								
                sliders.each(function(i){
                    var $slider = $(this), sliderData = $slider.data('data');
                    $(sliders[i]).css({
                        background: 'none'
                    });
                    $($slider).bind('mouseover', function(event, autoSlider)
					{
						if(!autoSlider)
						{
							clearInterval(interval);							
						}																		
						var strip = $slider.find(settings.imgStrip),
						projectImg = $slider.find(settings.imgProject);
                        
                        strip.stop(true, true).fadeOut(350);
						var currentText = $(this).find('.wrapperText');
						var currentTextHeight = currentText.outerHeight();						
						currentText.stop(true, true).fadeIn(350).animate({bottom: -(sliders.height() - currentTextHeight)});
						
                        $slider.stop().animate({
                            width: slider_Width,
                            left: sliderData.$slider_higerPos
                        }, settings.sliderSpeed);
						
                        sliders.each(function(j){
                            if (i !== j) {
                                var $slider = $(this), sliderData = $slider.data('data'), other_position = sliderData.$slider_higerPos;
                                
                                if (i < j) {
                                    other_position = sliderData.$slider_lowerPos;
                                }
                                
                                $slider.stop().animate({
                                    left: other_position,
                                    width: sliderMin
                                }, settings.sliderSpeed, settings.show_easing,function()
								{
									$(this).find('.wrapperText').fadeOut(250);																		
								});
                            }							
                        });
                    });				
                });
                
                slotsContainer.bind('mouseout', function(event, autoSlider)
				{					
                    sliders.each(function(i)
					{												
                        var $slider = $(this)
                        var sliderData = $slider.data('data')										
                        $slider.stop().animate({
                            width: sliderMin,
                            left: sliderData.$slider_Position
                        }, settings.sliderSpeed, settings.show_easing, function()
						{
							if(i == slider_Count-1)
							{
								if(!autoSlider)
								{									
									setIntervalFn();									
								}								
							}
                            $(this).find(settings.imgStrip).stop(true, true).fadeIn(650);                           
							
							var currentText = $(this).find('.wrapperText');
							var currentTextHeight = currentText.outerHeight();						
							currentText.stop(true, true).fadeOut(350).animate({bottom: -sliders.height()});
                        });
                    });
                });				
            }
			
			function setIntervalFn()
			{
				if (settings.autoSlider) 
				{
					interval = setInterval(function()
					{
						autoSlider();
					}, parseInt(settings.autoSliderSpeed * 1700));
				}
			}			
									
			function autoSlider()
			{
			 var k = Math.floor(Math.round(Math.random() * (slider_Count)));
			 
				if(k == slider_Count)
				{
					slotsContainer.trigger('mouseout', true);					
				}
				else
				{				
					$(sliders[k]).trigger('mouseover', true);
				}				
			}			
        });
		return this;
    }
})(jQuery);

/* Images Loader */

(function($){
    $.fn.imgLoader = function(options){
        var defaults = {
            imgLink: '', // image Link container that with the Ajax Icon Loader
            fadeInSpeed: 1600, //show Image Speed,
            callBackFn: null, //CallBack Function if needed
            img_Src: '', //Attrib where is the http:// image location to load,
            Alt_Src: '', // ALT Attrib Text for Current Image Loading,
            readyElem_Count: 0 // function will activate at this point of progress	  
        }, settings = $.extend({}, defaults, options);
		
        
            $(this).each(function(i){
            
                var $this = $(this);
                var img = new Image();
                var imgSrc = $(this).attr(settings.img_Src);
                var altText = ($this.parent("a").find(settings.Alt_Src).text());
                $(img).load(function(){
                    $(img).appendTo($this).css({
                        opacity: 0
                    }).animate({
                        opacity: 1
                    }, settings.fadeInSpeed,function()
					{
						$(this).parent().parent().removeClass('image_preloader');
						
						if(i == settings.readyElem_Count)
						{								
							settings.callBackFn();
						}																		
					});                    
                }).attr("src", imgSrc).attr("alt", altText);
                $(this).attr(settings.img_Src, "");
            });
		return this;
    }
})(jQuery);

