if	(typeof contentFade != 'function') {
	var contentFade = function() {
		this.container = false;
		this.contentdiv = false;
		this.slides = [];
		this.list = false;
		this.timer = false;
		this.animations = [];
		
		this.position = 0; //start position
		this.timeout = 3.5; //seconds
		this.fade = 900; //milliseconds
	}

	contentFade.prototype.init = function(container) {
		var instance = this;
		instance.container = container;
		
		this.timeout += this.fade/1000;
		
		instance.contentdiv = document.createElement('div');
		instance.list = document.createElement('ul');
		
		var i = 0;
		dojo.forEach(dojo.query('>',instance.container),function(node) {
			if (node.nodeName == 'H1') {
				var div = document.createElement('div');
				dojo.style(div,{
					opacity: 0,
					height: '1000px'
				});
				if (i > 0) {
					dojo.style(div,{
						marginTop: '-1000px'
					})
				}
				
				instance.contentdiv.appendChild(div);
				instance.slides.push(div);
				var li = document.createElement('li');
				var classes = dojo.attr(node,'class');
				if (classes) dojo.addClass(node, classes);
				li.appendChild(node);
				li.setAttribute('index',i);
				instance.list.appendChild(li);
				i++;
			} else {
				if (instance.contentdiv.childNodes.length > 0) {
					dojo.style(node,'position','absolute');
					instance.contentdiv.childNodes[instance.contentdiv.childNodes.length-1].appendChild(node);
				}
			}
		});
		dojo.empty(instance.container);
		
		if (instance.slides.length > 0) {		
			var div = document.createElement('div');
			div.appendChild(instance.contentdiv);
			instance.container.appendChild(div);
			instance.container.appendChild(instance.list);
			
			instance.initList();
			instance.setContent();
			instance.startTimer(instance.timeout);
		}
	}

	contentFade.prototype.initList = function() {
		var instance = this;
		dojo.connect(instance.container, 'onmouseenter', instance.container, function(e) {
			clearTimeout(instance.timer);
		});
		dojo.connect(instance.container, 'onmouseleave', instance.container, function(e) {
			instance.startTimer(instance.timeout);
		});
		dojo.forEach(dojo.query('li', instance.list), function(li) {
			dojo.connect(li,'onmouseenter',li,function() {
				instance.setContent(li.getAttribute('index'));
			});
		});
	}

	contentFade.prototype.setContent = function(index) {
		var instance = this;
		if (typeof index != 'undefined') {
			instance.position = parseInt(index);
		}
		if (instance.position >= instance.slides.length) instance.position = 0;
		
		while (instance.animations.length > 0) {
			var ani = instance.animations.pop();
			ani.pause().stop();
			console.log(ani);
			delete ani;
		}
		
		dojo.forEach(instance.slides, function(node) {
			if (dojo.style(node,'opacity') != 0) {
				(function() {
					var fnode = node;
					var fout = dojo.fadeOut({
						node: fnode,
						duration: instance.fade
					});
					instance.animations.push(fout);
					fout.play();
				})();
			}
		});
				
		(function() {
			var fnode = instance.slides[instance.position];
			dojo.place(fnode,fnode.parentNode);
			dojo.style(fnode, 'marginTop', '-1000px');
			dojo.style(dojo.query('div',fnode.parentNode)[0], 'marginTop', '0px');
			var fin = dojo.fadeIn({
				node: fnode,
				duration: instance.fade
			});
			instance.animations.push(fin);
			fin.play();
		})();
		
		dojo.forEach(dojo.query('li',instance.list), function(li) {
			if (li.getAttribute('index') == instance.position) {
				dojo.addClass(li,'active');
			} else {
				dojo.removeClass(li,'active');
			}
		});
	}

	contentFade.prototype.startTimer = function(sec) {
		var instance = this;
		clearTimeout(instance.timer);
		instance.timer = setTimeout(function() {		
			instance.setContent(++instance.position);
			instance.startTimer(sec);			
		},sec*1000);
	}

	dojo.addOnLoad(function() {
		dojo.forEach(dojo.query('.fadeContent'),function(fadeContent) {
			var instance = new contentFade();
			instance.init(fadeContent);
		});
	});
}
