(function($) {
    $.fn.extend
	(
		{
		    ElectricSlide: function(options) {
		        var defaults =
				{
				    itemsSelector: "li",
				    slideWidth: 350,
				    previousToggleSelector: ".previous",
				    nextToggleSelector: ".next",
				    hideTogglesForOneSlide: false,
				    hideTogglesStyle: null,
				    slideSpeedMilliseconds: 1000,
				    rewindFastForward: true,
				    toggleSelectorOffClass: null,
				    autoSlide: false,
				    autoSlideInterval: 0
				};

		        var options = $.extend(defaults, options);

		        return this.each
				(
					function() {
					    var electric_slide = jQuery(this);
					    electric_slide.css("position", "relative");

					    var o = options;

					    var aryItems = electric_slide.children(o.itemsSelector);

					    for (var i = 0; i < aryItems.length; i++) {
					        var item = jQuery(aryItems.get(i));
					        item.css("float", "left");
					        item.css("position", "absolute");
					        item.css("left", i * o.slideWidth);
					    }

					    var prev = jQuery(o.previousToggleSelector);
					    var next = jQuery(o.nextToggleSelector);

					    prev.click
						(
							function() {
							    var toggle = jQuery(this);
							    var iFirstLeft = parseInt(jQuery(aryItems.get(0)).css("left").replace("px", ""));
							    var iLastLeft = parseInt(jQuery(aryItems.get(aryItems.length - 1)).css("left").replace("px", ""));

							    if (o.rewindFastForward && iFirstLeft >= 0)
							        aryItems.animate
									(
										{ left: '-=' + iLastLeft },
										o.slideSpeedMilliseconds,
										function() {
										    if (!o.rewindFastForward && o.toggleSelectorOffClass)
										        next.removeClass(o.toggleSelectorOffClass);
										}
									);
							    else if (iFirstLeft < 0)
							        aryItems.animate
									(
										{ left: '+=' + o.slideWidth },
										o.slideSpeedMilliseconds,
										function() {
										    if (!o.rewindFastForward && o.toggleSelectorOffClass)
										        prev.addClass(o.toggleSelectorOffClass);
										}
									);
							}
						);

					    next.click
						(
							function() {
							    var toggle = jQuery(this);
							    var iFirstLeft = parseInt(jQuery(aryItems.get(0)).css("left").replace("px", ""));
							    var iLastLeft = parseInt(jQuery(aryItems.get(aryItems.length - 1)).css("left").replace("px", ""));

							    if (o.rewindFastForward && iLastLeft < 1)
							        aryItems.animate
									(
										{ left: '+=' + (-1 * iFirstLeft) },
										o.slideSpeedMilliseconds,
										function() {
										    if (!o.rewindFastForward && o.toggleSelectorOffClass)
										        prev.removeClass(o.toggleSelectorOffClass);
										}
									);
							    else if (iLastLeft > 0)
							        aryItems.animate
									(
										{ left: '-=' + o.slideWidth },
										o.slideSpeedMilliseconds,
										function() {
										    if (!o.rewindFastForward && o.toggleSelectorOffClass)
										        next.addClass(o.toggleSelectorOffClass);
										}
									);
							}
						);

					    if (o.hideTogglesForOneSlide && aryItems.length < 2) {
					        if (o.hideTogglesStyle) {
					            prev.css(o.hideTogglesStyle);
					            next.css(o.hideTogglesStyle);
					        }
					        else {
					            prev.css({ "display": "none" });
					            next.css({ "display": "none" });
					        }
					    }

					    if (o.autoSlide && o.autoSlideInterval > 0)
					        setInterval(function() { next.click() }, o.autoSlideInterval);
					}
				);
		    }
		}
	);
}
)(jQuery);  
