var rotateElements = 
function _obj(container, delay, element, autoplay, fadespeed) {

	if (!delay) delay = 5000;
	if (!element) element = 'ul li';
	if (!fadespeed) fadespeed = 'fast';
	if (autoplay) autoplay = true;
	intCurrent = 0;
	intTotal = 0;
	strClass = container.substring(1,container.length);
	rotator = '';

	this.init = function() {

		$(container+' '+element).hide();
		$(container+' '+element).each(
			function (intIndex) {
				$(this).addClass('ElEm'+intIndex);
				if ($(this).hasClass('on')) {
					intCurrent = intIndex;
				}
				$(this).hover(
					function () { 
						if (rotator) {
							pause();
						} else {
							rotator = 'paused';
						}
					}, 
					function () {
						if (rotator) {
							pause();
						} else {
							play();
						}
					});
				intTotal = intIndex;
			});
		caption();
		$(container+' '+element+'.ElEm'+intCurrent).fadeIn(fadespeed);
		intCurrent = (intCurrent+1);
		if (autoplay)
        	play();
	}
	
	this.caption = function () {
		$('a.caption').each(
		function (intIndex) {
			if ($(this).hasClass(strClass) ||
			$(this).parent().parent().hasClass(strClass)) {
				$(this).addClass('CaP'+intIndex);
				if (intCurrent == intIndex)
					$(this).parent().addClass('on');
				$(this).hover(function () {
					if (rotator) {
						pause();
					} else {
						rotator = 'paused';
					}
					intCurrent = intIndex;
					$(container+' '+element).hide();
					$(container+' '+element+'.ElEm'+intCurrent).fadeIn('fast');
					$('a.caption').parent().removeClass('on');
					$(this).parent().addClass('on');
				  }, 
				  function () {
					intCurrent = (intCurrent+1);
					if (rotator) {
						pause();
					} else {
						play();
					}
				});
			}
		});
	}

	this.rotate = function() {
		if (!$(container+' '+element+'.ElEm'+intCurrent).attr('class'))
			intCurrent = 0;
		$('a.caption').parent().removeClass('on');
		$(container+' '+element).hide();
		$('a.CaP'+intCurrent).parent().addClass('on');
		$(container+' '+element+'.ElEm'+intCurrent).fadeIn(fadespeed);
		intCurrent = (intCurrent+1);
	}

	this.previous = function() {
		intCurrent = (intCurrent-2);
		if (intCurrent == -1)
			intCurrent = intTotal;
		$('a.caption').parent().removeClass('on');
		$('a.CaP'+intCurrent).parent().addClass('on');
		$(container+' '+element).hide();
		$(container+' '+element+'.ElEm'+intCurrent).fadeIn(fadespeed);
		intCurrent = (intCurrent+1);
	}

	this.pause = function() {
		clearInterval(rotator);
		$('a.play').parent().removeClass('on');
		$('a.pause').parent().addClass('on');
		$('a.toggle').parent().removeClass('on');
		rotator = null;
	}

	this.play = function() {
		rotator = setInterval('this.rotate()', delay);
		$('a.play').parent().addClass('on');
		$('a.pause').parent().removeClass('on');
		$('a.toggle').parent().addClass('on');
		return false;
	}

	$('a.pause').click(function(){
		if ($(this).hasClass(strClass) ||
			$(this).parent().parent().hasClass(strClass)) {
			if (rotator)
				pause();
			return false;
		}
	});

	$('a.play').click(function(){
		if ($(this).hasClass(strClass) ||
			$(this).parent().parent().hasClass(strClass)) {
			if (!rotator)
				play();
			return false;
		}
	});

	$('a.toggle').click(function(){
		if ($(this).hasClass(strClass) ||
			$(this).parent().parent().hasClass(strClass)) {
			if (!rotator) {
				play();
				$(this).parent().addClass('on');
			} else {
				pause();
				$(this).parent().removeClass('on');
			}
			return false;
		}
	});

	$('a.next').click(function(){
		if ($(this).hasClass(strClass) ||
			$(this).parent().parent().hasClass(strClass)) {
			if (rotator) {
				pause();
			} else {
				rotator = 'paused';
			}
			rotate();
			if (rotator) {
				pause();
			} else {
				play();
			}
			return false;
		}
	});

	$('a.previous').click(function(){
		if ($(this).hasClass(strClass) ||
			$(this).parent().parent().hasClass(strClass)) {
			if (rotator) {
				pause();
			} else {
				rotator = 'paused';
			}
			previous();
			if (rotator) {
				pause();
			} else {
				play();
			}
			return false;
		}
	});

	this.init();

}