/**********************************************************************
 * Generic Rollover class object for dynamically creating image and/or CSS based rollovers
 * Created by SightWorks Inc. for InFocus Corporation
 *
 * 2005/11/04 - Created by Mark R. Johnson (mj@sightworks.com)
 **********************************************************************/
 
var g_sCurOver = "";
var g_oRollovers = new Object();
/**
 * Rollover defines a Rollover button object
 *
 * @param id String Required unique identifier of the button element (this is the entity whose image and/or CSS class is set upon rollover/rollout
 * @param sAtImgUrl Optional String URL of the image for the At state
 * @param sAtClass Optional String CSS Class to be applied for At state
 * @param sOffImgUrl Optional String URL of the image for the off state
 * @param sOffClass Optional String CSS Class to be applied for Off state 
 * @param sActivatorID Optional String ID of the element that activates the Rollover 
									(defaults to 'id' if not provided, which is 
										usually the case for normal rollover buttons)
 **/
function Rollover(id, sAtImgUrl, sAtClass, sOffImgUrl, sOffClass, sActivatorID)
{
	this.id = id;
	this.sAtImgUrl = sAtImgUrl;
	this.sAtClass = sAtClass;
	this.sOffImgUrl = sOffImgUrl;
	this.sOffClass = sOffClass;
	
	
	this.oImgs = new Object();
	this.oImgs['at'] = new Image();
	this.oImgs['off'] = new Image();
	if(String(sAtImgUrl).length > 0)
	{
		this.oImgs['at'].src = sAtImgUrl;
	}
	if(String(sOffImgUrl).length > 0)
	{
		this.oImgs['off'].src = sOffImgUrl;
	}
		
	if(String(sActivatorID).length == 0 )
	{
		sActivatorID = id;
	}
	
	this.oActivator = getObject(sActivatorID);
	//alert(this.oActivator);
	AttachEvent(this.oActivator, 'mouseover' ,setAt,false);
	AttachEvent(this.oActivator, 'mouseout' ,setOff,false);
	AttachEvent(getObject(this.id), 'focus' ,setAt,false);

	function setAt()
	{
		rollOver(id,'at');
	}
	function setOff()
	{
		rollOut(id,'off');
	}
}

function addRollover(id, sAtImgUrl, sAtClass, sOffImgUrl, sOffClass, sActivatorID)
{
	var oRollover = new Rollover(id, sAtImgUrl, sAtClass, sOffImgUrl, sOffClass, sActivatorID);
	g_oRollovers[id] = oRollover;
	return oRollover;
}





function rollOver(sRollName,state)
{
	try {
		resetrollOvers();
	//	if(!state) state="at";
		
		var obj = getObject(g_oRollovers[sRollName].id );
		//alert(obj);
		obj.src = g_oRollovers[sRollName].oImgs[state].src;
		g_sCurOver = sRollName;
		
		if(String(g_oRollovers[sRollName].sAtClass).length > 0)
		{
			obj.className=g_oRollovers[sRollName].sAtClass;
		}
	}
	catch (e) {}
}

function rollOut(sRollName,state)
{
	try {
	//	resetrollOvers();
	//	if(!state) state="off";
		var obj = getObject(g_oRollovers[sRollName].id);
		//alert(obj);
		obj.src = g_oRollovers[sRollName].oImgs[state].src;
		if(String(g_oRollovers[sRollName].sOffClass).length > 0)
		{
			obj.className=g_oRollovers[sRollName].sOffClass;
		}
	}
	catch (e) {}
}


function resetrollOvers()
{
	try{
	
		for(rolloverID in g_oRollovers)
		{
		

			//only reset the rollovers that are not currently 'at'
			if('' != g_oRollovers[rolloverID].id)
			{
				rollOut(g_oRollovers[rolloverID].id,'off')
			}
		}
	}
	catch (e) {}
	
}
