var fadeDivs             = [];var crossFadeImageHeight = "40mm;";
var crossFadeImageWidth  = "30mm;";
var crossFadeBoxClass    = "photobox";
var crossFadeImageClass  = "photoimage";
var crossFadeTextClass   = "phototext";
var crossFadeImageTop    = "168mm";var crossFadeImageLeft   = "41mm";function addEventToObject(obj, evt, func)
{	var oldhandler = obj[evt];	obj[evt] = (typeof obj[evt] != 'function') ? func : function(){oldhandler();func();};}function bindWithArguments(object)
{	var __method = this;	var args = [];	for (var i=0,len=arguments.length-1; i<len; i++)
		args[i] = arguments[i+1];	return function(){ __method.apply(object, args); }}Object.prototype.bindWithArguments = bindWithArguments;function CrossFade()
{	this.interval = 100; // initial interval	this.setOpacity = function (obj, o)
	{		obj.style.opacity      = (o / 101);		obj.style.MozOpacity   = (o / 100);		obj.style.KhtmlOpacity = (o / 100);		obj.style.filter       = "alpha(opacity=" + o + ")";	}	for (j=0; j<this.length; j++)
	{
// position, top, left and z-index are set via an external stylesheet
//		this[j].style.position = 'absolute';//		this[j].style.top      = crossFadeImageTop;//		this[j].style.left     = crossFadeImageLeft;//		this[j].style.zIndex   = 0;		this.setOpacity(this[j],0);	}

	this.opacity = 100;	this.setOpacity(this[0].parentNode,this.opacity);	this.currentDiv = 0;	this.loadingCF = true;	this.previousDiv = this.length-1;
	this[0].parentNode.style.visibility = 'visible';	this.changeOpacity = function (opac) {		if(opac < 100) {			this.setOpacity(this[this.currentDiv],opac);			this.setOpacity(this[this.previousDiv],100/*-opac*/);			opac += 5;			window.setTimeout(this.changeOpacity.bindWithArguments(this,opac),100);		} else {			this.setOpacity(this[this.currentDiv],100);			this.setOpacity(this[this.previousDiv],0);			this.previousDiv = this.currentDiv;			this.currentDiv = (this.currentDiv>=this.length-1) ? 0 : this.currentDiv + 1;			this[this.previousDiv].style.zIndex = 0;			this[this.currentDiv].style.zIndex = 100;			opac = 0;			window.setTimeout(this.changeOpacity.bindWithArguments(this,opac),(this.interval*40));		}	}	this.olen = this[0].className.length;	this.onum = this[0].className.charAt(this.olen-1);	if(!isNaN(this.onum) && this.onum > 1) {window.setTimeout(this.changeOpacity.bindWithArguments(this,this.opacity),(80*this.interval)/this.onum);	}else {		this.changeOpacity(this.opacity);	}}Object.prototype.CrossFade = CrossFade;function isA(o,klass)
{
	if (!o.className)
		return false; 
	return new RegExp('\\b'+klass+'\\b').test(o.className);
}function $c(c,o,t)
{
	o = o || document;	if (!o.length)
		o = [o];	var elements = [];	for (var i = 0, e; e = o[i]; i++)
	{		if(e.getElementsByTagName)
		{			var children = e.getElementsByTagName(t || '*');			for (var j = 0, child; child = children[j]; j++)
			{				if (isA(child,c)) 
					elements.push(child);			}		}	}	return elements}function InitCrossFade()
{	if(InitCrossFade.arguments)
	{
		var fadeContainer = document.getElementById(InitCrossFade.arguments[0]);		var bodyRegion     = InitCrossFade.arguments[1];
		fadeContainer.innerHTML = "";

		// For each region requested
		for (i=2; i<InitCrossFade.arguments.length; i++)
		{
			var procedure = InitCrossFade.arguments[i];
			if ( typeof crossFadeImages[ bodyRegion ][ procedure ] == "undefined" )
				continue;

			var pairCount = crossFadeImages[ bodyRegion ][ procedure ].length;

			// Loop through all available pairs
			for ( var pairIndex=0; pairIndex<pairCount; pairIndex++ )
			{
				var html = buildCrossFadePairHTML( crossFadeBoxClass, bodyRegion, procedure, pairIndex );
				fadeContainer.innerHTML += html;
			}
		}


//	alert( "outerHTML = \n" + fadeContainer.outerHTML );
		var aImgs = fadeContainer.getElementsByTagName('img');		preloadImgs(aImgs);		var fade = fadeContainer.lastChild;		var fadeClass = fade.className;		fadeDivs = $c(fadeClass,'','*');		window.setTimeout(function() {fadeDivs.CrossFade();},1000);	}}

function buildCrossFadePairHTML( faderClass, bodyRegion, procedure, index )
{
	var html = "";

/***
alert( "buildCrossFadePairHTML( \n"
	+	"faderClass   = " + faderClass + "\n"
	+  "bodyRegion    = " + bodyRegion + "\n" 
	+  "procedure = " + procedure + "\n"
	+  "Pre Image    = " + crossFadeImages[ bodyRegion ][ procedure ][index][ 'pre' ] + "\n"
	+  "Post Image   = " + crossFadeImages[ bodyRegion ][ procedure ][index][ 'post' ] + "\n"
	+  "Image Text   = " + crossFadeImages[ bodyRegion ][ procedure ][index]['alt'] );
***/

	html  = "<div class='" + faderClass + "'>\n";
	html += "<img class='" + crossFadeImageClass + "' "; 
	html += "	id='" + bodyRegion + "_" + procedure + "_" + index + "_Pre" + "' "; 
	html += "	src='" + crossFadeImages[ bodyRegion ][ procedure ][index][ 'pre' ] + "' "; 
	html += "	alt='" + crossFadeImages[ bodyRegion ][ procedure ][index][ 'alt' ] + " ( Pre )'>\n";
	html += "<br>\n";
	html += "<span class='" + crossFadeTextClass + "'>" + crossFadeImages[ bodyRegion ][ procedure ][index][ 'alt' ] + "<BR>PreOp<\/span>\n";
	html += "<\/div>\n";

	html += "\n";

	html += "<div class='" + faderClass + "'>\n";
	html += "<img class='" + crossFadeImageClass + "' "; 
	html += "	id='" + bodyRegion + "_" + procedure + "_" + index + "_Post" + "' "; 
	html += "	src='" + crossFadeImages[ bodyRegion ][ procedure ][index][ 'post' ] + "' "; 
	html += "	alt='" + crossFadeImages[ bodyRegion ][ procedure ][index][ 'alt' ]  + " ( Post )'>\n";
	html += "<br>\n";
	html += "<span class='" + crossFadeTextClass + "'>" + crossFadeImages[ bodyRegion ][ procedure ][index][ 'alt' ] + "<BR>PostOp<\/span>\n";
	html += "<\/div>\n";

 	return html;
}
function preloadImgs(aImgs)
{	var preloadedImgs = new Array();	for(var i=0; i<aImgs.length; i++)
	{		preloadImgs[i] = new Image();		preloadImgs[i].src = aImgs[i].getAttribute('src');
//alert( "img " + i + " = " + preloadImgs[i].src );			}}