    
(function($) {
    $.fn.slide = function(options) {
        var defaults = {
            slideWidth: 770,
            autoplay: true,
            duration: 500,
            showNavigator: true,
            showSlideIndex: true
        };    
        
        var slideshow_control_icons = new Array();  
	// Note: you can download the .png locally and edit the urls below to reflect your path
    slideshow_control_icons['play']  	= 'images/slideshow/Control_play.png';  
    slideshow_control_icons['pause'] 	= 'images/slideshow/Control_pause.png';     
    var display_slideshow_control_panel = true;  

        var options = $.extend(defaults, options);
        return this.each(function() {
            var slideshow = $(this);
            var o = options;
            var currentPosition = 0;
            var slides = $('.slide');
            var numberOfSlides = slides.length;
            var t;

            // Remove scrollbar in JS
            $('#slidesContainer').css('overflow', 'hidden');

		//Uncomment to Add hover pause
		
		/*
$('#slideshowContainer').mouseover(function(e){
			if($(this).is(':animate')) {

		        $('#slideInner').stop();
				//$('#slideshow_control_panel').attr('src',slideshow_control_icons['play']);  
			     $('#slideshow_control_panel').attr('src',slideshow_control_icons['pause']);  

		    } });
		    
		    $('#slideshowContainer').mouseout(function(e){
			       slideTo(currentPosition, false);
				  $('#slideshow_control_panel').attr('src',slideshow_control_icons['play']);  
		 });
*/
		

            // Wrap all .slides with #slideInner div
            slides.wrapAll('<div id="slideInner"></div>')

            // Float left to display horizontally, readjust .slides width
			.css({
			    'float': 'left',
			    'width': o.slideWidth
			});

            // Insert a clone of first slide 
            $('.slide:first').clone().appendTo('#slideInner');

            // Set #slideInner width equal to total width of all slides
            $('#slideInner').css('width', o.slideWidth * (numberOfSlides + 1));

            // Insert controls in the DOM
            if (o.showNavigator) {
                slideshow
				    //.prepend('<span class="control" id="leftControl">Clicking moves left</span>')
				    //.append('<span class="control" id="rightControl">Clicking moves right</span>');
					.prepend('<span class="control" id="leftControl">&nbsp;</span>')
				    .append('<span class="control" id="rightControl">&nbsp;</span>');
                // Create event listeners for .controls clicks
                $('#leftControl').click(function() { prev(); return false; });
                $('#rightControl').click(function() { next(); return false; });
            }
            // Insert slides index
            if (o.showSlideIndex == true) {
                slideshow.append('<div id="slideIndex" class="span-6 push-2"></div>');
                for (var i = 1; i <= numberOfSlides; i++) {
                    $('#slideIndex').append('<span id="slide-' + i + '" class="numbers">' + i + '</span>');
                    //$('#slideIndex').append('<span id="slide-' + i + '" class="numbers"></span>');
                }
                $('.numbers').click(function() { goto(($(this).attr('id')).replace('slide-', '') - 1, false); return false; });
            }

            // Start
            init();

            //Init function
            function init() {
                manageControls(currentPosition);
                if (o.autoplay == true) setNextTimeOut(o.duration);
            }

            // Next
            function next() {
                currentPosition++;
                if (currentPosition >= numberOfSlides) currentPosition = 0;
                slideTo(currentPosition, true);
            }

            // Previous
            function prev() {
                currentPosition--;
                if (currentPosition < 0) currentPosition = numberOfSlides - 1;
                slideTo(currentPosition, false);
            }

            // Go to a slide 
            function goto(position) {
                currentPosition = position;
                slideTo(currentPosition, false);
            }

            // Set time out for next slide
            function setNextTimeOut() {
                t = setTimeout(function() { next(); }, o.duration);
            }

            function clearNextTimeOut()
            { 
                clearTimeout(t);
            }
            // Slide
            function slideTo(position, continuously) {
                $('#slideInner').stop();
                clearNextTimeOut();
                // usual cases
                if (continuously == false || o.autoplay == false || position != 0) {
                    $('#slideInner').animate({ 'marginLeft': o.slideWidth * (-position) }, '', '',
						function() {
						    manageControls(position);
						    if (o.autoplay == true) setNextTimeOut();
						}
					)
                }
                // autoplay: slide from last to first one continuously
                else {
                    // slide to the 'fake' first slide (actually at the last)
                    $('#slideInner').animate({ 'marginLeft': o.slideWidth * (-numberOfSlides) }, '', '',
						function() {
						    //immediately change to the 'true' first slide
						    $('#slideInner').css('marginLeft', 0);
						    manageControls(position)
						    if (o.autoplay == true) setNextTimeOut();
						}
					)
                }
            }

	function setup_control_panel() 
	{
		$('#slideIndex').append('<img id="slideshow_control_panel" src="" alt="" />');  
		
		var control_panel = $('#slideshow_control_panel');

		if(o.autoplay == true)
			control_panel.attr('src',slideshow_control_icons['pause']);  
		else
			control_panel.attr('src',slideshow_control_icons['play']);    
			
		control_panel.bind('click', handle_control_panel_click);
	}
	
	function handle_control_panel_click()
	{
	    if(o.autoplay == true)
	    {
	        $(this).attr('src',slideshow_control_icons['play']);
	       o.autoplay = false;
	       currentPosition--;
	        //pause_slideshow();
	    }
	    else
	    {
	        $(this).attr('src',slideshow_control_icons['pause']);
	        	        o.autoplay = true;
	        	         slideTo(currentPosition, false);
		//start_slideshow();
	    }
	}


	
	// Conditionally setup the control panel if needed
    if(display_slideshow_control_panel == true)
		setup_control_panel();



            // manageControls: Hides and Shows controls depending on currentPosition
            function manageControls(position) {
                if (o.showNavigator) {
                    // Hide left arrow if position is first slide
                    if (position == 0) { $('#leftControl').hide() } else { $('#leftControl').show() };
                    // Hide right arrow if position is last slide
                    if (position == (numberOfSlides - 1)) { $('#rightControl').hide() } else { $('#rightControl').show() };
                }

                // Hilight the current page
                if (o.showSlideIndex == true) {
                    // remove active class from all pages
                    $('.numbers').removeClass("active");
                    // add only to the current page
                    $('#slide-' + (position + 1)).addClass("active");
                }
            }
        });
    };
})(jQuery);
