﻿function CiRolloverImage( image, hover, down )
{
	if( typeof( _CiRolloverImage_prototype_called ) == 'undefined' )
	{
		_CiRolloverImage_prototype_called		= true;
		CiRolloverImage.prototype.Over			= Over;
		CiRolloverImage.prototype.Out			= Out;
		CiRolloverImage.prototype.Down			= Down;
		CiRolloverImage.prototype.Up			= Up;
	}
	
	//get the image element
	if( typeof( image ) == 'string' )
		this.m_oImage = document.getElementById( image );
	else
		this.m_oImage = image;
		
	this.m_strNorm = this.m_oImage.src;
	
	//if we have a valid source for the image, then begin setting
	//it up as a rollover image.
	if( this.m_strNorm != undefined && this.m_strNorm != '' )
	{
		this.m_oImage.style.cursor = 'pointer';
		
		if( hover != undefined )
		{
			this.m_strOver = hover;
			this.m_strDown	= down;
		}
		else
		{
			var src		= '';
			var filter	= '';
			
			//if( this.m_oImage.runtimeStyle )
			//	filter = this.m_oImage.runtimeStyle.filter;
			
			filter = this.m_oImage.style.filter;
			
			if( filter != '' && filter != null )
			{
				src = filter.substring( filter.indexOf( "src='" )+5, filter.indexOf( "'," ) );
				this.m_strNorm = src;
			}
			else
				src = this.m_oImage.src;
				
			var index = src.length-4;
							
			this.m_strOver	= src.substring( 0, index )+'_over'+src.substring(index, src.length);
			this.m_strDown	= src.substring( 0, index )+'_down'+src.substring(index, src.length);
		}
		
		//preload the images
		var t1 = new Image();
		t1.src = this.m_strOver;
		
		var t2 = new Image();
		t2.src = this.m_strDown;
		
		var me = this;
		
		this.m_oImage.onmousedown	= function(e){ Down( (e)?e:event, me ); }
		this.m_oImage.onmouseup		= function(e){ Up( (e)?e:event, me ); };
		this.m_oImage.onmouseover	= function(e){ Over( (e)?e:event, me ); }
		this.m_oImage.onmouseout	= function(e){ Out( (e)?e:event, me ); }
	}
	
	function Down( e, obj )
	{
		obj.m_oImage.src = obj.m_strDown;
	}
	
	function Up( e, obj )
	{
		obj.m_oImage.src = obj.m_strNorm;
	}
	
	function Over( e, obj )
	{
		obj.m_oImage.src = obj.m_strOver;
	}
	
	function Out( e, obj )
	{
		obj.m_oImage.src = obj.m_strNorm;
	}
}