var galleries = new Array();
function getGalleries() {
	divElements = document.body.getElementsByTagName('div');
	
	for (i = 0; i < divElements.length; i++) {
		if (divElements[i].className.indexOf('gallery') >= 0) {
			gallery = {
				initialised: false,
				divEle: divElements[i],
				images: new Array(),
				
				imgIndex: 0,
				
				addImage: function(imgEle) {
					gallery.images[gallery.images.length] = imgEle;
				}
			};
			
			imgElements = divElements[i].getElementsByTagName('img');
			for (n = 0; n < imgElements.length; n++) {
				gallery.addImage(imgElements[n]);
			}
			
			galleries.push(gallery);
		}
	}
	
	for (i = 0; i < galleries.length; i++) {
		slideGallery(i);
	}
}

function slideGallery(i) {
	imgs = galleries[i].images;
	maxHeight = 0;
	for (n = 0; n < imgs.length; n++) {
		var img = new Image();
		img.src = imgElements[n].src;
		imgs[n].xOpacity = 0;
		if (n >= 1) {
			imgs[n].style.display = 'none';
		}
		
		if (img.height > maxHeight) {
			maxHeight = img.height;
		}
	}
	
	galleries[i].divEle.style.height = maxHeight + 'px';
	imgs[0].style.display = 'block';
	imgs[0].xOpacity = 0.99;
	
	setTimeout('so_xfade(' + i + ');', 3000);
}

function so_xfade(i) {
	gallery = galleries[i];
	
	imgs = gallery.images;

	cOpacity = imgs[gallery.imgIndex].xOpacity;
	nIndex = imgs[gallery.imgIndex+1] ? gallery.imgIndex+1 : 0;
	nOpacity = imgs[nIndex].xOpacity;
	
	cOpacity-=.05; 
	nOpacity+=.05;
	
	imgs[nIndex].style.display = "block";
	imgs[gallery.imgIndex].xOpacity = cOpacity;
	imgs[nIndex].xOpacity = nOpacity;
	
	setOpacity(imgs[gallery.imgIndex]); 
	setOpacity(imgs[nIndex]);
	
	if(cOpacity <= 0) {
		imgs[gallery.imgIndex].style.display = "none";
		gallery.imgIndex = nIndex;
		setTimeout('so_xfade(' + i + ');', 3000);
	} else {
		setTimeout('so_xfade(' + i + ');', 80);
	}
	
	function setOpacity(obj) {
		if(obj.xOpacity>.99) {
			obj.xOpacity = .99;
			return;
		}
		obj.style.opacity = obj.xOpacity;
		obj.style.MozOpacity = obj.xOpacity;
		obj.style.filter = "alpha(opacity=" + (obj.xOpacity*100) + ")";
	}
}