function TNGHighlights(objSettings)
{
	//set default values
	this.strId="";
	this.strObjectName="";
	this.intLinkCount=0;
	this.intPlaySpeed=5000; //milliseconds
	this.intCurrentLink=1;
	this.objInterval=null;
	
	this.initialize=function()
	{
		//set to passed values
		if(objSettings.strId)
			this.strId=objSettings.strId.toString();
		if(objSettings.strObjectName)
			this.strObjectName=objSettings.strObjectName.toString();
		
		//count links
		var i=1;
		while(true)
		{
			if(document.getElementById("HLink"+this.getId()+i.toString()) && document.getElementById("HContent"+this.getId()+i.toString()))
				this.setLinkCount((this.getLinkCount()+1));
			else
				break;
			i++;
		}
		
		this.play();
	};

	//getters
	this.getId=function()
	{
		return this.strId;
	};
	this.getObjectName=function()
	{
		return this.strObjectName;
	};
	this.getLinkCount=function()
	{
		return this.intLinkCount;
	};
	this.getPlaySpeed=function()
	{
		return this.intPlaySpeed;
	};
	this.getCurrentLink=function()
	{
		return this.intCurrentLink;
	};
	
	//setters
	this.strId=function(strId)
	{
		this.strId=strId;
	};
	this.setObjectName=function(strObjectName)
	{
		this.strObjectName=strObjectName;
	};
	this.setLinkCount=function(intLinkCount)
	{
		this.intLinkCount=Number(intLinkCount);
	};
	this.setPlaySpeed=function(intPlaySpeed)
	{
		this.intPlaySpeed=Number(intPlaySpeed);
	};
	this.setCurrentLink=function(intCurrentLink)
	{
		this.intCurrentLink=Number(intCurrentLink);
	}
	
	this.onLinkClick=function(intLink)
	{
		this.setCurrentLink(intLink);
		
		//reset timer
		this.stop();
		this.play();
		
		this.setActive(intLink);
		return false; //cancel link
	};
	
	this.play=function()
	{
		this.objInterval=window.setInterval(this.getObjectName()+".next();",this.getPlaySpeed());
	};
	
	this.stop=function()
	{
		window.clearInterval(this.objInterval);
	};
	
	this.next=function()
	{
		this.setCurrentLink((this.getCurrentLink()+1));
		if(this.getCurrentLink()>this.getLinkCount())
			this.setCurrentLink(1);
		
		this.setActive(this.getCurrentLink());
	};
	
	this.setActive=function(intLink)
	{
		//clear active class names
		for(var i=0;i<this.getLinkCount();i++)
		{
			if(document.getElementById("HLink"+this.getId()+(i+1).toString()))
				if(document.getElementById("HLink"+this.getId()+(i+1).toString()).className.indexOf("HActive")>-1)
					document.getElementById("HLink"+this.getId()+(i+1).toString()).className=document.getElementById("HLink"+this.getId()+(i+1).toString()).className.replace("HActive","");
			if(document.getElementById("HContent"+this.getId()+(i+1).toString()))
				if(document.getElementById("HContent"+this.getId()+(i+1).toString()).className.indexOf("HActive")>-1)
					document.getElementById("HContent"+this.getId()+(i+1).toString()).className=document.getElementById("HContent"+this.getId()+(i+1).toString()).className.replace("HActive","");
		}
		
		//set active class names
		if(document.getElementById("HLink"+this.getId()+intLink.toString()) && document.getElementById("HContent"+this.getId()+intLink.toString()))
		{
			document.getElementById("HLink"+this.getId()+intLink.toString()).className+=" HActive";
			document.getElementById("HContent"+this.getId()+intLink.toString()).className+=" HActive";
		}
	};
	
	//utility methods
	this.addListener=function(objObject,strEventName,fnHandler)
	{
		//add event listener
		if(objObject.addEventListener)
			objObject.addEventListener(strEventName, fnHandler, false); //DOM-compliant
		else if(objObject.attachEvent) //IE
			objObject.attachEvent("on"+strEventName, fnHandler);
	};
	
	this.getEventSrc=function(e)
	{
		if(!e)
			e=window.event; //IE
		
		//return event source element
		if(e.target)
			return e.target; //DOM-compliant
		else if(e.srcElement)
			return e.srcElement; //IE
	};

	this.initialize();
}
