(function($) {

	$.fn.MbSlider = function(options) {

		// set default options
		var defaults = {
			speed : 1000,
			pause : 2000,
                        quickTrans : 1000,
			transition : 'fade'
		},

		// Take the options that the user selects, and merge them with defaults.
		options = $.extend(defaults, options);

		// Needed to fix a tiny bug. If the pause is less than speed, it'll cause a flickr.
		// This will check for that, and if it is smaller, it increases it to just about the options.speed.
		if(options.pause <= options.speed) options.pause = options.speed + 100;

		// for each item in the wrapped set
		return this.each(function() {

			// cache "this."
			var $this = $(this);

			// Wrap "this" in a div with a class of "slider-wrap."
			$this.wrap('<div class="slider-wrap" />');

			// Set the width to a really high number. Adjusting the "left" css values, so need to set positioning.
			$this.css({
				'Position' : 'relative',
				'padding' : 0
			});
                        
			// If the user chose the "slide" transition...
			if(options.transition === 'slide') {
				$this.children().css({
					'float' : 'left',
					'list-style' : 'none'
				});

				$('.slider-wrap').css({
					'width' : $this.children().width(),
					'overflow' : 'hidden'
				});
			}

			// If the user chose the "fade" transition, instead pile all of the images on top of each other.
			if(options.transition === 'fade') {
				$this.children().css({
					'width' : $this.children().width(),
					'position' : 'absolute',
					'left' : 0
                                        
				});

				// reorder elements to fix z-index issue.

				for(var i = $this.children().length, y = 0; i > 0; i--, y++) {
					$this.children().eq(y).css('zIndex', i + 99999);
				}

				// Call the fade function.
				fade(5000);
			}

			// If the user instead chose the "slide" transition, call the slide function.
			if(options.transition === 'slide') slide();


			function slide() {
				setInterval(function() {

                                        // Animate to the left the width of the image/div
					$this.animate({'left' : '-' + $this.parent().width()}, options.speed, function() {
						// Return the "left" CSS back to 0, and append the first child to the very end of the list.
						$this
						   .css('left', 0)
						   .children(':first')
						   .appendTo($this).find('h2').slideUp();// move it to the end of the line.
					})
				}, options.pause);
			} // end slide
                       var count = 2;
                       var pause = 8000;
                               
			function fade(transPause) {
                            
                              setTimeout (function(){

                                 $this.children(':first').animate({'opacity' : 0}, options.quickTrans, function() {
                                        $this
                                           .children(':first')
                                           .css('opacity', 1) // Return opacity back to 1 for next time.
                                           .css('zIndex', $this.children(':last').css('zIndex') - 1) // Reduces zIndex by 1 so that it's no longer on top.
                                           .appendTo($this); // move it to the end of the line.

                                });

                                
                                if(count == $this.children().length)
                                {
                                    pause = 5000;
                                    count = 0;
                                //    setTimeout(timer, pause);
                                } else if(count == 1) {
                                    pause = 5000;
                                  //  setTimeout(timer, pause);
                                } else{
                                    pause = 1500;

                                }

                                   //alert(count + "and" + pause);
                                   fade(pause);

                                   count++;
                                   
                               }, transPause);


			} // end fade

		}); // end each

	} // End plugin. Go eat cake.

})(jQuery);
