jQuery.fn.simpleCarousel = function(options) {
    
    var defaults = {
        iID:                'simpleCarousel',
        controlsClass:      'controls',
        btnPrevHtml:        'Previous',
        btnNextHtml:        'Next',
        btnPrevClass:       'prevItem',
        btnNextClass:       'nextItem',
		btnPlayClass:		'playCarousel',
		btnPauseClass:		'pauseCarousel',
		btnPauseText:		'Pause',
        activeSlideClass:   'active',
        activeControlClass: 'active',
		controlItemWidth:	20,
        animSpeed:          500,
		pauseTime:			3000,
        topZ:               3,
		autoPlay:			true
    };
    
    if (arguments.length) {
        var o = jQuery.extend(defaults, options);
    }
    else {
        var o = defaults;
    }
	var SC = this;
    var slidesLength = jQuery('div.slideItem', SC).length;
	
    function initSC() {
        var tempContent = SC.html();
        var newContent = '<div class="'+o.iID+'">';
        newContent += tempContent;
        newContent += '<div class="'+o.controlsClass+'Wrap" style="z-index:'+(o.topZ+1)+'; width:'+((+slidesLength+2)*o.controlItemWidth)+'px"><div class="'+o.controlsClass+'WrapContent"><div class="'+o.controlsClass+'WrapContentInner" style="width:'+(((+slidesLength+2)*o.controlItemWidth)-5)+'px">&nbsp;</div></div>';
		newContent += '<ul class="'+o.controlsClass+'" style="position:relative; z-index:'+(o.topZ+2)+'">';
        if (!o.autoPlay) {
			newContent += '<li class="'+o.btnPrevClass+'"><a href="javascript:void(0);"><span>'+o.btnPrevHtml+'</span></a></li>';
		}
        for (var x = 0; x < slidesLength; x++) {
            if (x === 0) {
                newContent += '<li class="'+o.activeControlClass+'"><a rel="'+x+'" href="javascript:void(0);"><span>'+(x+1)+'</span></a></li>';
            }
            else {
                newContent += '<li><a rel="'+x+'" href="javascript:void(0);"><span>'+(x+1)+'</span></a></li>';
            }
        }
		if (o.autoPlay) {
			newContent += '<li class="'+o.btnPauseClass+'"><a href="javascript:void(0);"><span>'+o.btnPauseText+'</span></a></li>';
		}
        newContent += '<li class="'+o.btnNextClass+'"><a href="javascript:void(0);"><span>'+o.btnNextHtml+'</span></a></li>';
        newContent += '</ul></div></div>';
        SC.html(newContent);
        jQuery('.slideItem:first', SC).addClass(o.activeSlideClass).css('z-index', o.topZ);
    }

    function bindSC() {
        jQuery('ul.'+o.controlsClass+' li', SC).unbind().bind('mousedown', function() {
            if (!jQuery(this).hasClass(o.activeControlClass)) {
                var n = jQuery('a', this).attr('rel') || 0;
                if (jQuery(this).hasClass(o.btnPrevClass)) {
                    if (jQuery('.slideItem.'+o.activeSlideClass, SC).prevAll('.slideItem').length > 0) {
                        n = jQuery('.slideItem.'+o.activeSlideClass, SC).prevAll('.slideItem').length-1;
                    }
                    else {
                        n = slidesLength-1;
                    }
                }
                if (jQuery(this).hasClass(o.btnNextClass)) {
                    if (jQuery('.slideItem.'+o.activeSlideClass, SC).nextAll('.slideItem').length > 0) {
                        n = Math.abs(jQuery('.slideItem.'+o.activeSlideClass, SC).nextAll('.slideItem').length-slidesLength);
                    }
                    else {
                        n = 0;
                    }
                }
				if (jQuery(this).hasClass(o.btnPauseClass)) {
					// stuff here
				}
				if (jQuery(this).hasClass(o.btnPlayClass)) {
					// stuff here
				}
                jQuery('.slideItem:nth('+n+')', SC).css('z-index', o.topZ-1);
                jQuery('.slideItem.'+o.activeSlideClass, SC).fadeOut(o.animSpeed, function() {
                    jQuery(this).css({'display': 'block', 'z-index': o.topZ-2}).removeClass(o.activeSlideClass);
                    jQuery('.slideItem:nth('+n+')', SC).css('z-index', o.topZ).addClass(o.activeSlideClass);
                    jQuery('ul.'+o.controlsClass+' li.'+o.activeControlClass, SC).removeClass(o.activeControlClass);
                    jQuery('ul.'+o.controlsClass+' a[rel='+n+']', SC).parents('li').addClass(o.activeControlClass);
                });
            }
        });
    }
	var p = '';
    function init() {
		if (slidesLength > 1) {
			initSC();
			bindSC();
			if (o.autoPlay) {
				p = setInterval(function() { jQuery('li.'+o.btnNextClass, SC).mousedown() }, o.pauseTime);
				jQuery('ul.'+o.controlsClass+' li.'+o.btnPauseClass, SC).unbind().bind('mousedown', function() {
					clearInterval(p);
				});
				jQuery('ul.'+o.controlsClass+' li.'+o.btnNextClass, SC).unbind('mouseup').bind('mouseup', function() {
					clearInterval(p);
					p = setInterval(function() { jQuery('li.'+o.btnNextClass, SC).mousedown() }, o.pauseTime);
				});
			}
		}
	}
	
	init();
}
