(function($){

	$.fn.bizzukaSlider = function(options){
	
		// This holds the custom settings
		var settings = $.extend({}, $.fn.bizzukaSlider.defaults, options);

		// Global Variables
		var element = $(this);
		var slider =  $(element);		
		var sliderItem = slider.find('ul li');
		
		var imageWidth = sliderItem.eq(0).find('img').width();
		var imageHeight = sliderItem.eq(0).find('img').height();
		
		var rotationWidth = 0;
		var rotationHeight = 0;
		
		
		var imageCount = -1;
		var curImage = 0;
		var interval = 5;
		var duration = 3;
		var time;
		var toLeft;
		var goUp;
		
        slider.css('position','relative');
        slider.addClass('bizzukaSlider');
        
        
        
		slider.find('ul').addClass('mainUL'); //This was created to be able to use insertAfter api for the un-ordered list for the nav
		
		// This Starts the plugin
		initialize();

		function initialize(){
			sliderItem.each(function(){
				imageCount++;
				
				if(settings.thumbnails == 'true'){
					jQuery('#rotation_thumbs').find('ul').append('<li class="thumbOff"><a href="#" ></a></li>');
				}
				else{
					
				}
			});
			
			
				
			
			// Checks to see what Effect to use
			
			// Setting for Fade Effect
			if(settings.effect == 'fade'){
				jQuery('#slider ul li').css('position', 'absolute');
				sliderItem.hide();
				sliderItem.eq(curImage).show();
				sliderItem.eq(curImage).addClass('curImg');
				
				if(settings.thumbnails == 'true'){
					jQuery('#rotation_thumbs ul li').bind("click",thumbClick);
					jQuery('#rotation_thumbs ul li').eq(curImage).removeClass('thumbOff');
					jQuery('#rotation_thumbs ul li').eq(curImage).addClass('thumbOn');
					//sliderItem.eq(curImage).addClass('thumb_ON');
				}else{
					
				}
				
				
				time = setTimeout(fade,settings.interval*750); 
				
				// Checks to see if Nav was selected. If True it creates the arrows
				if(settings.nav == 'true'){
					jQuery('<div id="bizzukaSliderNav" style="position:relative; display:inline;"><a href="#" id="prev">prev</a> <a href="#" id="next">next</a></div>').insertAfter('.mainUL');
					
					jQuery('#next').bind('click',nextClickFade);
					jQuery('#prev').bind('click',prevClickFade);
				}
				
				else{
					
				}
			}

			// Setting for Slide Left to Right Effect
			else if(settings.effect == 'slideLeft'){
				
				if(settings.thumbnails == 'true'){
					jQuery('#rotation_thumbs ul li').eq(curImage).removeClass('thumbOff');
					jQuery('#rotation_thumbs ul li').eq(curImage).addClass('thumbOn');
					//sliderItem.eq(curImage).addClass('thumb_ON');
				}else{
					
				}
			
			
					// Wraps the un-ordered list to animate left and right
					jQuery('.mainUL').wrap('<div id="rotation_images" />');

					
					jQuery('#rotation_images ul.mainUL li').eq(curImage-1).show();
					
					jQuery('#rotation_images ul li').each(function(){
						imageWidth = jQuery(this).width();
						rotationWidth += jQuery(this).width();	
					});
					
					var originalWidth = rotationWidth;
					
					rotationWidth+=jQuery('#rotation_images ul li:last').width()+jQuery('#rotation_images ul li:first').width()+jQuery('#rotation_images ul li:first').width()+jQuery('#rotation_images ul li').eq(imageCount-2).width()+jQuery('#rotation_images ul li').eq(imageCount-2).width();
					jQuery('#rotation_images').width(rotationWidth);
					
					var lastClone = jQuery('#rotation_images ul li:last').clone();
					var firstClone = jQuery('#rotation_images ul li:first').clone();
					var secondClone = jQuery('#rotation_images ul li').eq(imageCount-2).clone();
					jQuery('#rotation_images ul').append(firstClone);
					jQuery('#rotation_images ul').prepend(lastClone);
					secondClone.prependTo('#rotation_images ul').clone().appendTo('#rotation_images ul');
					
					toLeft = imageWidth*2;
					jQuery('#rotation_images').css({'left':'-'+toLeft+'px'});
					jQuery('#rotation_images li').css({'visibility':'visible'});
					
					if(settings.nav == 'false'){
						time = window.setTimeout(slideRight,settings.interval*750);
					}
					
					
					// Checks to see if Nav was selected
					if(settings.nav == 'true'){
						jQuery('<div id="bizzukaSliderNav" style="position:absolute; z-index:999; display:inline;"><a href="#" id="prev">prev</a> <a href="#" id="next">next</a></div>').insertBefore('#rotation_images');
						jQuery('#next').bind('click',slideRight);
						jQuery('#prev').bind('click',slideLeft);
					}

			}	
			
			// Setting for Slide Up and Down Effect
			else if(settings.effect == 'slideUp'){
				
				if(settings.thumbnails == 'true'){
					jQuery('#rotation_thumbs ul li').eq(curImage).removeClass('thumbOff');
					jQuery('#rotation_thumbs ul li').eq(curImage).addClass('thumbOn');
					//sliderItem.eq(curImage).addClass('thumb_ON');
				}else{
					
				}
				
				jQuery('.mainUL').wrap('<div id="rotation_images" />');
				jQuery('#rotation_images ul.mainUL li').eq(curImage).show();
				jQuery('#rotation_images li').css({'visibility':'visible'});
				
				
				
				
				if(settings.nav == 'true'){
						jQuery('<div id="bizzukaSliderNav" style="position:absolute; z-index:999; display:inline;"><a href="#" id="prev">prev</a> <a href="#" id="next">next</a></div>').insertBefore('#rotation_images');
						jQuery('#next').bind('click',slideUp);
						jQuery('#prev').bind('click',slideDown);
					}
				
				else{
					
				}
				
				
				
				
			}
			
			
			
			else{
			//	alert("default is fade");
				sliderItem.hide();
				sliderItem.eq(curImage).show();
				sliderItem.eq(curImage).addClass('curImg');
				time = setTimeout(fade,settings.interval*1000); 	
			}
                                    
		};
		
		

		function thumbClick(){
			window.clearTimeout(time);
			if ( curImage == jQuery('#rotation_thumbs ul li').index(this) ) { return false; };
			sliderItem.eq(curImage).fadeOut(settings.duration*1000);
			jQuery('#rotation_thumbs ul li').eq(curImage).removeClass('thumbOn');
			jQuery('#rotation_thumbs ul li').eq(curImage).addClass('thumbOff');
			curImage = jQuery('#rotation_thumbs ul li').index(this);
			sliderItem.eq(curImage).fadeIn(settings.duration*1000);
			jQuery('#rotation_thumbs ul li').eq(curImage).addClass('thumbOn');
			time = setTimeout(fade,settings.interval*1000);
		};

		
		// Basic Fade Rotation
		function fade(){

			sliderItem.eq(curImage).fadeOut(settings.duration*1000);
			sliderItem.eq(curImage).removeClass('curImg');
			
			if(settings.thumbnails == 'true'){
				jQuery('#rotation_thumbs ul li').eq(curImage).removeClass('thumbOn');
				jQuery('#rotation_thumbs ul li').eq(curImage).addClass('thumbOff');
				//sliderItem.eq(curImage).removeClass('thumbOn');
			}else{
				
			}
			
			
			if ( curImage < imageCount ) {
				curImage++;
			} else {
				curImage = 0;
			};
			sliderItem.eq(curImage).fadeIn(settings.duration*1000);
			
			if(settings.thumbnails == 'true'){
				jQuery('#rotation_thumbs ul li').eq(curImage).addClass('thumbOn');
				//sliderItem.eq(curImage).addClass('thumbOn');
			}else{
				
			}
			
			
			sliderItem.eq(curImage).addClass('curImg');
			time = setTimeout(fade,settings.interval*1000);
		};
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		function prevClickFade(){
			window.clearTimeout(time);
			sliderItem.eq(curImage).fadeOut(1000);
			if(settings.thumbnails == 'true'){
				jQuery('#rotation_thumbs ul li').eq(curImage).removeClass('thumbOn');
				jQuery('#rotation_thumbs ul li').eq(curImage).addClass('thumbOff');
				//sliderItem.eq(curImage).removeClass('thumbOn');
			}
			else{
				
			}
			if ( curImage > 0 ) {
				curImage = curImage - 1;
			} else {
				curImage = imageCount;
			};
			sliderItem.eq(curImage).fadeIn(1000);
			if(settings.thumbnails == 'true'){
				jQuery('#rotation_thumbs ul li').eq(curImage).addClass('thumbOn');
				//sliderItem.eq(curImage).addClass('thumbOn');
			}
			
			else{
				
			}
			time = setTimeout(fade,settings.interval*2000);
			return false;
		};
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		function nextClickFade(){
			window.clearTimeout(time);
			sliderItem.eq(curImage).fadeOut(1000);
			if(settings.thumbnails == 'true'){
				jQuery('#rotation_thumbs ul li').eq(curImage).removeClass('thumbOn');
				jQuery('#rotation_thumbs ul li').eq(curImage).addClass('thumbOff');
				//sliderItem.eq(curImage).removeClass('thumbOn');
			}
			else{
				
			}
			if ( curImage < imageCount ) {
				curImage++;
			} else {
				curImage = 0;
			};
			sliderItem.eq(curImage).fadeIn(1000);
			if(settings.thumbnails == 'true'){
				jQuery('#rotation_thumbs ul li').eq(curImage).addClass('thumbOn');
				//sliderItem.eq(curImage).addClass('thumbOn');
			}
			
			else{
				
			}
			time = setTimeout(fade,settings.interval*2000);
			return false;
		};
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
	function slideRight(){
		
		jQuery('#next').unbind("click",slideRight);
		jQuery('#prev').unbind("click",slideLeft);
		
		if ( curImage == imageCount ) {
			toLeft = imageWidth;
			
			jQuery('#rotation_images').css({'left': '-'+imageWidth+'px'});
			
			toLeft = toLeft+jQuery('#rotation_images ul li').eq(imageCount).width();
			
				jQuery('#rotation_images').animate({ 'left':'-'+toLeft+'px'},500,function(){
				jQuery('#next').bind("click",slideRight);
				jQuery('#prev').bind("click",slideLeft);
			});
			
			curImage = 0;
			
		} else {
			
			toLeft = toLeft+jQuery('#rotation_images ul li').eq(curImage).width();	
		
			if ( curImage == imageCount ) {
				
				jQuery('#rotation_images').animate({ 'left':'-'+toLeft+'px'},500,function(){
					toLeft = imageWidth;
					jQuery('#rotation_images').css({ 'left':'-'+toLeft+'px'});
					jQuery('#next').bind("click",slideRight);
					jQuery('#prev').bind("click",slideLeft);
				});
			} else {
				jQuery('#rotation_images').animate({ 'left':'-'+toLeft+'px'},500,function(){
					jQuery('#next').bind("click",slideRight);
					jQuery('#prev').bind("click",slideLeft);
				});
			};
			curImage++;	
			
		};
		
		if(settings.nav == 'false'){
			time = window.setTimeout(slideRight,settings.interval*750);
		}
	};
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	function slideLeft(){
	
		jQuery('#next').unbind("click",slideRight);
		jQuery('#prev').unbind("click",slideLeft);
		
		toLeft = toLeft-jQuery('#rotation_images ul li').eq(imageCount-1).width();
		
		if ( curImage == 0 ) {


			
			jQuery('#rotation_images').animate({ 'left':'-'+toLeft+'px'},500,function(){
				curImage = imageCount;
				
				
				jQuery('#rotation_images').css({'left':'-'+toLeft+'px'});
				jQuery('#next').bind("click",slideRight);
				jQuery('#prev').bind("click",slideLeft);
				
			});
			
			curImage = imageCount;

			
		} else {

		
			if ( curImage == imageCount ) {
		
				
				toLeft=5538;
			
				jQuery('#rotation_images').css({'left':'-'+toLeft+'px'});
				
			};
		
			curImage = curImage-1;	

			
				jQuery('#rotation_images').animate({ 'left':'-'+toLeft+'px'},500,function(){
				jQuery('#next').bind("click",slideRight);
				jQuery('#prev').bind("click",slideLeft);
			});
		};

	};
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	function slideUp(){

	var goUp = imageHeight+6;
	
					if(settings.thumbnails == 'true'){
						jQuery('#rotation_thumbs ul li').eq(curImage).removeClass('thumbOn');
						jQuery('#rotation_thumbs ul li').eq(curImage).addClass('thumbOff');
						//sliderItem.eq(curImage).removeClass('thumbOn');
					}
					else{
				
					}	
		
		if ( curImage == imageCount ) {
			
			return;

		} else {	
		
			if(curImage == 0){
				
				
				
				goUp = imageHeight+6;
				jQuery('#rotation_images').animate({ 'top':'-='+goUp+'px'},500,function(){
																						
																					
																						
					jQuery('#next').bind("click",slideUp);
					jQuery('#prev').bind("click",slideDown);
				});
			}
			
			else{
				jQuery('#rotation_images').animate({ 'top':'-='+goUp+'px'},500,function(){
					jQuery('#next').bind("click",slideUp);
					jQuery('#prev').bind("click",slideDown);
				});
			};

				curImage++
						
		};
		
		if(settings.thumbnails == 'true'){
				jQuery('#rotation_thumbs ul li').eq(curImage).addClass('thumbOn');
				//sliderItem.eq(curImage).addClass('thumbOn');
			}
			
			else{
				
			}
		
		jQuery('#next').unbind("click",slideUp);
		jQuery('#prev').unbind("click",slideDown);
		
		return;
	};
	
	
	

	function slideDown(){
		
			if(settings.thumbnails == 'true'){
						jQuery('#rotation_thumbs ul li').eq(curImage).removeClass('thumbOn');
						jQuery('#rotation_thumbs ul li').eq(curImage).addClass('thumbOff');
						//sliderItem.eq(curImage).removeClass('thumbOn');
					}
					else{
				
					}	
	
	var goDown = imageHeight+6;

		if ( curImage == 0 ) {
			
			return;

		} else {	

			jQuery('#rotation_images').animate({ 'top':'+='+goDown},500,function(){
				jQuery('#next').bind("click",slideUp);
				jQuery('#prev').bind("click",slideDown);
			});
				
			
				curImage--;
		};
		
		if(settings.thumbnails == 'true'){
				jQuery('#rotation_thumbs ul li').eq(curImage).addClass('thumbOn');
				//sliderItem.eq(curImage).addClass('thumbOn');
			}
			
			else{
				
			}
		
		jQuery('#next').unbind("click",slideUp);
		jQuery('#prev').unbind("click",slideDown);
		
	};



		
		
		//Default settings
		$.fn.bizzukaSlider.defaults = {
			effect: 'fade', // fade, slideLeft, slideUp
			nav: 'true',
			duration: 3,
			interval: 5,
			thumbnails: 'true'
		};
		
	};
	
	

})(jQuery);

