
	

	
	function O3_ImageSwap(xi_Image, xi_AltImage_name, xi_Capture, xi_TranID)
	{
		var	O3_TranSets;
		var	O3_Tran;
		var	Image_obj;
		
		//	Check either a name or object has been passed and locate object if required
		if(typeof(xi_Image) == 'string')
		{
			Image_obj = ALTFP_getObjectByID(xi_Image);
		}
		else if(typeof(xi_Image) == 'object')
		{
			Image_obj = xi_Image;
		}
		else
		{
			alert('O3_ImageSwap : Called with Image of type ' + typeof(xi_Image));
		}
		
		
		//	Check we have an object
		if(Image_obj == null)
		{
			return;
		}
		
		if(xi_Capture)
		{
			if(!(O3_TranSets = document.O3_TranSets))
			{
				O3_TranSets = document.O3_TranSets = new Array(new Array(null));
			}

			if(xi_TranID)
			{
				if(!(O3_Tran = O3_TranFind(O3_TranSets, xi_TranID)))
				{
					O3_Tran = O3_TranSets[O3_TranSets.length] = new Array(xi_TranID);
				}
			}
			else
			{
				O3_Tran = O3_TranSets[0];
			}

			O3_Tran[O3_Tran.length] = new Array('IMG', Image_obj, Image_obj.src);
		}
		Image_obj.src = xi_AltImage_name;
		return true;
	}
	
	function O3_TranFind(xc_TranSets, xi_TranID, xi_Clear)
	{
		var	O3_Tran;
		for(i = 1; i < xc_TranSets.length; i++)
		{
			O3_Tran = xc_TranSets[i];
			if(O3_Tran[0] == xi_TranID)
			{
				if(xi_Clear)
				{
					xc_TranSets.splice(i, 1);
				}
				return O3_Tran;
			}
		}
		return null;
	}
	
	
	function O3_Revert(xi_TranID)
	{
		var	O3_TranSets = document.O3_TranSets;
		var O3_Tran;
		if(O3_TranSets)
		{
			if(xi_TranID)
			{
				O3_Tran = O3_TranFind(O3_TranSets, xi_TranID, 1);
			}
			else
			{
				O3_Tran = O3_TranSets[0];
			}
			if(O3_Tran)
			{
				for(i = O3_Tran.length - 1; i > 0; i--)
				{
					if(O3_Tran[i][0] == 'IMG') O3_Tran[i][1].src = O3_Tran[i][2];
				}
			}
		}
		return true;
	}
	function O3_SetOpacity(xi_Item, xi_Opacity)
	{
		var Item_obj; 

		//	Check either a name or object has been passed and locate object if required
		if(typeof(xi_Item) == 'string')
			Item_obj = ALTFP_getObjectByID(xi_Item);
		else if(typeof(xi_Item) == 'object')
			Item_obj = xi_Item;
		else
			alert('O3_SetOpacity : Called with Item of type ' + typeof(xi_Item));
		
		
		//	Check we have an object
		if(Item_obj == null)
			return;
			
	    if(Item_obj.style.opacity != null)				Item_obj.style.opacity = (xi_Opacity); 
	    else if(Item_obj.style.filter != null)			Item_obj.style.filter = "alpha(opacity=" + xi_Opacity*100 + ")"; 
	    else if(Item_obj.style.MozOpacity != null)		Item_obj.style.MozOpacity = (xi_Opacity);
	    else if(Item_obj.style.KhtmlOpacity != null)	Item_obj.style.KhtmlOpacity = (xi_Opacity); 
	    return true;
	}
	
	function O3_FadeOpacity(xi_Item, xi_To, xi_millisec, xi_From)
	{ 
	    //speed for each frame 
	    var interval = Math.round(xi_millisec / 100); 
	    var step = 0;
	    var	To_Perc = xi_To * 100; 
		var	From_Perc;
	    
		var	Item_obj;
		
		if(typeof(xi_Item) == 'string')
			Item_obj = ALTFP_getObjectByID(xi_Item);
		else if(typeof(xi_Item) == 'object')
			Item_obj = xi_Item;
		else
			alert('O3_SetOpacity : Called with Item of type ' + typeof(xi_Item));

		
		if(Item_obj == null)
		{
			return;
		}

		if(!Item_obj.id)
		{
			alert('O3_SetOpacity : Object must have an ID ');
			return;
		}
		
		// Get current opacity as start if none supplied
		if(xi_From == null)
			From_Perc = O3_GetOpacity(Item_obj) * 100;
		else
			From_Perc = xi_From * 100;
			
	    //determine the direction for the blending, if start and end are the same nothing happens 
	    if(From_Perc > To_Perc)
	    { 
	        for(Curr_Perc = From_Perc; Curr_Perc >= To_Perc; Curr_Perc--)
	        { 
	            setTimeout("O3_SetOpacity('" +  Item_obj.id + "'," + Curr_Perc/100 + ")",(step * interval)); 
	            step++; 
	        } 
	    }
	    else if(From_Perc < To_Perc)
	    { 
	        for(Curr_Perc = From_Perc; Curr_Perc <= To_Perc; Curr_Perc++) 
	        { 
	            setTimeout("O3_SetOpacity('" +  Item_obj.id + "'," + Curr_Perc/100 + ")",(step * interval)); 
	            step++; 
	        } 
	    } 
	} 
	
	function O3_GetOpacity(xi_Item)
	{
		var	Item_obj = xi_Item;
		var	Opacity;
		// alert("in GetOpacity");
	    if((Opacity = Item_obj.style.opacity) != null) ;
		else if((filter = Item_obj.style.filter) != null)
	    {
	    	var	regex = /opacity=(\d+)/;
	    	var	extract = regex.exec(filter);
	    	// alert("filter " + filter);
	    	if(extract)
	    		Opacity = extract[1] / 100;
	    	// alert("extracted " + Opacity);
	    }
	    else if((Opacity = Item_obj.style.MozOpacity) != null); 
	    else if((Opacity = Item_obj.style.KhtmlOpacity) != null) ;

	    if((Opacity == null) || (Opacity + "" == ""))
	    {
	    	Opacity = 1;
		}
		
	    return Opacity; 
	}


function ALTFP_getObjectByID(id,o) {//v1.0
 var c,el,els,f,m,n; if(!o)o=document; if(o.getElementById) el=o.getElementById(id);
 else if(o.layers) c=o.layers; else if(o.all) el=o.all[id]; if(el) return el;
 if(o.id==id || o.name==id) return o; if(o.childNodes) c=o.childNodes; if(c)
 for(n=0; n<c.length; n++) { el=ALTFP_getObjectByID(id,c[n]); if(el) return el; }
 f=o.forms; if(f) for(n=0; n<f.length; n++) { els=f[n].elements;
 for(m=0; m<els.length; m++){ el=ALTFP_getObjectByID(id,els[n]); if(el) return el; } }
 return null;
}

function ALTFP_preloadImgs() {//v1.0
 var d=document,a=arguments; if(!d.FP_imgs) d.FP_imgs=new Array();
 for(var i=0; i<a.length; i++) { d.FP_imgs[i]=new Image; d.FP_imgs[i].src=a[i]; }
}

function ALTFP_changeProp() {//v1.0
 var args=arguments,d=document,i,j,id=args[0],o=ALTFP_getObjectByID(id),s,ao,v,x;
 d.$cpe=new Array(); if(o) for(i=2; i<args.length; i+=2) { v=args[i+1]; s="o"; 
 ao=args[i].split("."); for(j=0; j<ao.length; j++) { s+="."+ao[j]; if(null==eval(s)) { 
  s=null; break; } } x=new Object; x.o=o; x.n=new Array(); x.v=new Array();
 x.n[x.n.length]=s; eval("x.v[x.v.length]="+s); d.$cpe[d.$cpe.length]=x;
 if(s) eval(s+"=v"); }
}

function ALTFP_changePropRestore() {//v1.0
 var d=document,x; if(d.$cpe) { for(i=0; i<d.$cpe.length; i++) { x=d.$cpe[i];
 if(x.v=="") x.v=""; eval("x."+x.n+"=x.v"); } d.$cpe=null; }
}


function ALTFP_swapImg()
{//v1.0
 var doc=document,args=arguments,elm,n;
 doc.$imgSwaps=new Array();
 for(n=2; n<args.length; n+=2)
 {
 	elm=ALTFP_getObjectByID(args[n]);
 	if(elm)
 	{
 		doc.$imgSwaps[doc.$imgSwaps.length]=elm;
 		elm.$src=elm.src; elm.src=args[n+1];
 	}
 }
}

function ALTFP_swapImgRestore()
{//v1.0
	 var doc=document,i;
	 if(doc.$imgSwaps)
	 {
	 	for(i=0;i<doc.$imgSwaps.length;i++)
	 	{
  			var elm=doc.$imgSwaps[i];
  			if(elm)
  			{
  				elm.src=elm.$src;
  				elm.$src=null;
  			}
  		} 
  		doc.$imgSwaps=null;
  	}
}



