function Navigator ()
{
	this.elements 	= Array();
	this.current	= null;
	this.timer		= null;
	
	this.close		= false;
	
}

	Navigator.prototype.SetCurrent = function (elementid)
	{
		if (elementid)
		{
			this.current 				= new NavigationItem(elementid, 0, 99, 99, 10, 4);		// nieuw item aan maken en direct toevoegen aan de elementen lijst
			this.elements[elementid] 	= this.current;											// currentiem toevoegen aan de elementen lijst
		}
	}
	
	Navigator.prototype.ShowCurrent = function ()
	{
		var self 	= this;
		this.close	= true;
		
		if (this.elements.length > 0 && self.current)
		{
			this.timer	= setTimeout(function(){self.FadeCurrent(self.current.id)}, 1500);
		}
		else
		{
			this.timer	= setTimeout(function(){self.FadeAll()}, 1500);
		}
	}
	
	Navigator.prototype.FadeCurrent = function (elementid)
	{
		if (this.close)
		{
			this.SwapItem(this.current.id);
		}
	}
	
	Navigator.prototype.FadeAll = function ()
	{
		if (this.close)
		{
			for (id in this.elements)
			{
				if (document.getElementById('item_' + this.elements[id].id))
				{
					//setClassName(document.getElementById('item_' + this.elements[id].id), '');
				}
				if(typeof this.elements[id].Fade == 'function') 
				{
					this.elements[id].Fade(false);
				}
			}
		}
	}
	
	Navigator.prototype.SwapItem = function (elementid)
	{
		// elementen registreren (als er natuurlijk een element voorhande is)
		
		if (elementid && !this.elements[elementid])
		{
			this.elements[elementid] = new NavigationItem(elementid, 0, 90, 0, 10, 4);
		}
		
		// alle elementen sluiten
		
		for (id in this.elements)
		{
			if (document.getElementById('item_' + this.elements[id].id))
			{
				//setClassName(document.getElementById('item_' + this.elements[id].id), '');
				
			}
			if (this.elements[id])
			{
				if(typeof this.elements[id].Fade == 'function') 
				{
					this.elements[id].Fade(false);
				}
			}
		}
		
		// geactiveerde element laten zien
		
		if (elementid)
		{
			this.close = false;
			
			if (document.getElementById('item_' + this.elements[elementid].id))
			{
				//setClassName(document.getElementById('item_' + this.elements[elementid].id), 'active');
				
				
			}
			
			this.elements[elementid].Fade(true);
		}
	}
	
	
function NavigationItem (id, opacitystart, opacityend, opacity, opacityspeed, opacitystep)
{
	this.id				= id;
	
	this.opacityspeed	= opacityspeed;
	this.opacitystep	= opacitystep;
	
	this.opacitystart	= opacitystart;
	this.opacityend		= opacityend;
	this.opacity		= opacity;
	
	this.timer			= null;
}

	NavigationItem.prototype.Fade = function (state)
	{
		if (document.getElementById('list_' + this.id))
		{
			var element 	= document.getElementById('list_' + this.id);
			var self		= this;
			Navigator.close	= false;
			
			clearTimeout (this.timer);
			
			switch (state)
			{
				// fade in
				case true:
					document.getElementById('item_' + this.id).className = 'active';
					this.opacity = this.opacity + this.opacitystep
					
					element.style.display = 'block';
					
					if (isie)
					{
						element.filters.alpha.opacity = this.opacity;
					}
					else
					{
						element.style.MozOpacity = this.opacity/100;
						element.style.KhtmlOpacity = this.opacity/100;
					}
					
					if (this.opacity < this.opacityend)
					{
						this.timer = setTimeout(function(){self.Fade(state)}, this.opacityspeed);
					}
					else
					{
						this.opacity = this.opacityend;
					}
					
					break;
				
				// fade out
				case false:
					document.getElementById('item_' + this.id).className = '';
					this.opacity = this.opacity - this.opacitystep
					
					if (isie)
					{
						element.filters.alpha.opacity = this.opacity;
					}
					else
					{
						element.style.MozOpacity = this.opacity/100;
						element.style.KhtmlOpacity = this.opacity/100;
					}
					
					if (this.opacity > this.opacitystart)
					{
						this.timer = setTimeout(function(){self.Fade(state)}, this.opacityspeed);
					}
					else
					{
						element.style.display = 'none';
						this.opacity = this.opacitystart;
					}
					
					break;
			}
		}
	}
	
var Navigator = new Navigator();
