/* Gallery Slide */
jQuery.fn.gallerySlide = function(options){
	var slides = $(this);
	/* default variables */
	var defaults = {
		delaytime : 3000,
		animation : true,
		showthumb : 0
	};
	/* assign options */
	var options = $.extend(defaults, options);	
	/* assign variables */
	var delaytime = options.delaytime;
	var animation = options.animation;
	var showthumb = options.showthumb;
	/* class indexing */
	$('.slide-content',this).each(function(index){
		$(this).addClass('slide-'+(index+1));
	});
	/* how many slide contents? */
	var totalslides = $('.slide-content',this).length;
	if(showthumb==0){
    	/* Begin The Show */
    	    var i=1; //Index of slide
    	    /* slide animation */
    	    var galleryslide = function galleryslide() {
    	        clearTimeout(gallerytimeout);
    	        /* end of slides */
    	        if(i==totalslides){
    	            i = 1;
    	        } else {
    	            i = ++i;
    	        }
    	        /* animate and assign classes */
    	        $('.slide-nav li a', slides).removeClass('selected').eq(i).addClass('selected');
    	        $('.slide-content', slides).hide().addClass('hidden').filter('.slide-'+i).fadeIn().removeClass('hidden');
    	        gallerytimeout = setTimeout(galleryslide,delaytime);
    	    };
    	/* animate or not? */   							       
    	if(animation==true){
    		gallerytimeout = setTimeout(galleryslide,delaytime);
    	}
    	/* Navigation */
    	$('.slide-nav li a', this).each(function(index){
    		/* exclude previous and next button from content index */
    		if($(this).hasClass('prev') || $(this).hasClass('next')) {
    			/* in case it is previous or next: */											
    			switch($(this).attr('class')){
    				case 'prev':
    					$(this).click(function(){
    						/* cancel out the show */
    						clearTimeout(gallerytimeout);
    						/* find which content is active, grab their index*/
    						var theclass = $('.slide-content:not(.hidden)', slides).attr('class').split(' ');
    						var y = parseInt(theclass[1].slice('2'));
    						if(y==1){
    							$('.slide-content', slides).hide().addClass('hidden').filter('.slide-'+totalslides).fadeIn().removeClass('hidden');
    							$('.slide-nav li a', slides).removeClass('selected').eq(totalslides).addClass('selected');
    						} else {
    							$('.slide-content', slides).hide().addClass('hidden').filter('.slide-'+(y-1)).fadeIn().removeClass('hidden');
    							$('.slide-nav li a', slides).removeClass('selected').eq(y-1).addClass('selected');
    						}					
    						return false;
    					});
    				break;
    				case 'next':
    					$(this).click(function(){
    						/* cancel out the show */
    						clearTimeout(gallerytimeout);
    						/* find which content is active, grab their index*/
    						var theclass = $('.slide-content:not(.hidden)', slides).attr('class').split(' ');
    						var x = parseInt(theclass[1].slice('2'));
    						if(x==totalslides){
    							$('.slide-content', slides).hide().addClass('hidden').filter('.slide-'+1).fadeIn().removeClass('hidden');
    							$('.slide-nav li a', slides).removeClass('selected').eq(1).addClass('selected');
    						} else {
    							$('.slide-content', slides).hide().addClass('hidden').filter('.slide-'+(x+1)).fadeIn().removeClass('hidden');
    							$('.slide-nav li a', slides).removeClass('selected').eq(x+1).addClass('selected');
    						}						
    						return false;
    					});
    					
    				break;
    			}; // end of cases
    				
    		} else { // if it is slide index, do the following:									
    			$(this).addClass('slide-'+index);
    			$(this).click(function(){
    				clearTimeout(gallerytimeout);
    				$(this).addClass('selected').parent().siblings().children().removeClass('selected');
    				$('.slide-content', slides).hide().addClass('hidden').filter('.slide-'+index).fadeIn().removeClass('hidden');				
    				return false;
    			});
    		};																		
    	}); // end of navigation
	} else {
    	$('.slide-nav li a:gt('+showthumb+'):not(.next)', slides).hide();
    	/* Navigation */
    	var z = 0;
    	var floor;
    	var ceiling;
    	$('.slide-nav li a', this).each(function(index){
    		/* exclude previous and next button from content index */
    		if($(this).hasClass('prev') || $(this).hasClass('next')) {
    			/* in case it is previous or next: */											
    			switch($(this).attr('class')){
    				case 'prev':
    					$(this).click(function(){
    						if(z==0){
        						z = Math.floor(totalslides / showthumb)-1;       						
    						} else {
        						z = --z;
        						
    						}
    						floor = z*showthumb;
    						ceiling = z*showthumb+showthumb;
    						$('.slide-nav li a:not(.next, .prev)', slides).hide();
    						$('.slide-nav li a', slides).filter(':gt('+floor+'):lt('+ceiling+')').show();
    						return false;
    					});
    				break;
    				case 'next':
    					$(this).click(function(){
    						if(z==Math.floor(totalslides / showthumb)-1){
        						z = 0;       						
    						} else {
        						z = ++z;
        						
    						}			    						    						
    						floor = z*showthumb;
    						ceiling = z*showthumb+showthumb;
    						$('.slide-nav li a:not(.next, .prev)', slides).hide();
    						$('.slide-nav li a', slides).filter(':gt('+floor+'):lt('+ceiling+')').show();
    						return false;
    					});
    					
    				break;
    			}; // end of cases
    				
    		} else { // if it is slide index, do the following:									
    			$(this).addClass('slide-'+index);
    			$(this).click(function(){
    				$(this).addClass('selected').parent().siblings().children().removeClass('selected');
    				$('.slide-content', slides).hide().addClass('hidden').filter('.slide-'+index).fadeIn().removeClass('hidden');				
    				return false;
    			});
    		};																		
    	}); // end of navigation
	} // end showthumb
};


/* Initiate */
jQuery(document).ready(function(){	
	$('.contentgalleryslides').gallerySlide({showthumb:4});
});