// JavaScript Document
/* jQuery Plug-in created by Steady Vision*/
(function($) {
	
	$.fn.slipSlide = function (time, settings) {
		time = time || 1000;
		settings = $.extend({
			container: "<ul></ul>",
            childContainer: "li",
			currentClass: "selected",
            controlContainer: "<ol />",
            controlContainerClass: ['seriesLinks', 'buttons'],
            fadeTime: 900
		}, settings);
		var p, timeout, full_count, cur, control, playpause;
		function getFullCount(el) {
			full_count = $(el).children(settings.childContainer).length;
		}
		
		function makeControls() {
        	var c = $(settings.controlContainer);
            $.each(settings.controlContainerClass, function(a,b){
            	c.addClass(b);
            });
        	for (x=1;x<=full_count;x++)
            {
				var ic = $('<li></li>');
                var ica = $('<a />');
                var n = $('<span />');
                var ol = $('<span />');
                n.addClass('num');
                ol.addClass('oL');
                ica.attr('href', '#');
                n.text(x);
                ol.html('&nbsp;');
                ica.append(n).append(ol);
                ic.append(ica);
                c.append(ic);

            }
            $('a', c).click(function(){
            	showSlide($('a', c).index($(this)));
            	$('a', c).removeClass(settings.currentClass);
                $(this).addClass(settings.currentClass);
                return false;
            });
            control = c;
            return c;
        }
		
        function showSlide(num) {
        	clearTimeout(timeout);
            $('a', playpause).removeClass(settings.currentClass);
            $('a#stop', playpause).addClass(settings.currentClass);
            $(this).addClass(settings.currentClass);
            if (num == cur) return;
            cur = num;
            $(settings.childContainer, p).fadeOut(settings.fadeTime);
            $(settings.childContainer, p).eq(num).fadeIn(settings.fadeTime);
        }
        
        function startSlide(me) {
        	clearTimeout(timeout);
            $('a', control).removeClass(settings.currentClass);
            $(settings.childContainer, me).fadeOut(settings.fadeTime);
            if (cur < (full_count - 1)) {
            	cur = cur+1;
            } else {
            	cur = 0;
            }
             $('a', control).eq(cur).addClass(settings.currentClass);
            $(settings.childContainer, me).eq(cur).fadeIn(settings.fadeTime);
            timeout = setTimeout(function(){ startSlide(me); }, time);
            
        }
        
        function makeAdditionalControls()
        {
        	var c = $('<ul class="playControls" />');
				var ic = $('<li></li>');
                var ica = $('<a />');
                var n = $('<span />');
                var ol = $('<span />');
                n.addClass('num');
                ol.addClass('oL');
                ica.attr('href', '#');
                ica.attr('id', 'stop');
                n.text('Pause');
                ol.html('&nbsp;');
                ica.append(n).append(ol);
                ic.append(ica);
                c.append(ic);
                
				var ic = $('<li></li>');
                var ica = $('<a />');
                var n = $('<span />');
                var ol = $('<span />');
                n.addClass('num');
                ol.addClass('oL');
                ica.attr('href', '#');
                ica.attr('id', 'play');
                n.text('Play');
                ol.html('&nbsp;');
                ica.addClass('selected');
                ica.append(n).append(ol);
                ic.append(ica);
                c.append(ic);
                

            $('a#play', c).click(function(){
            	startSlide(p);
                $('a', c).removeClass(settings.currentClass);
                $(this).addClass(settings.currentClass);
                return false;
            });
             $('a#stop', c).click(function(){
            	clearTimeout(timeout);
                $('a', c).removeClass(settings.currentClass);
                $(this).addClass(settings.currentClass);
                return false;
            });
            playpause = c;
            return c;
        }
        
		return this.each(function () {
			var container = $(this);
            p = container;
			getFullCount(container);
			cur = 0;
            container.after(makeAdditionalControls());
            container.after(makeControls());
            $('a', control).eq(cur).addClass(settings.currentClass);
            $(settings.childContainer, container).hide();
      		$(settings.childContainer, container).eq(cur).show();
            timout = setTimeout(function () {startSlide(container); }, time);
		});
	};

})(jQuery);

