// this version has overiden the preloader ypos
var ImageSwapPreloader = "js_images/ani_white.gif";
Event.addEvent(window, "load", prepareImageSwaps);

function prepareImageSwaps(){
	var thumbnails = Document.getElementsByClassMatch("JS:ImageSwap");
	thumbnails.each(ImageSwap);
	// cache preloader
	var preloader = new Image();
	preloader.src = ImageSwapPreloader;
}

function ImageSwap(element){
	Event.addEvent(element, "click", ImageSwap.update);	
}
ImageSwap.update = function(evt){
	Event.preventDefault(evt);
	var element = Event.getTarget(evt);
	element = (element.tagName.toLowerCase() != "a") ? element.parentNode : element;
	var title = element.title;
	var description = element.rel;
	var imageLink = element.href;
	var reference = Document.getArguments(element, "JS:ImageSwap")[0];
	var imageElement = document.getElementById(reference);
	var titleElement = document.getElementById(reference + "_title");
	var descriptionElement = document.getElementById(reference + "_description");
	var fadeout = new Tween(imageElement, "alpha", None.easeNone, 100, 0, 0.5);
	var browser = Browser.getBrowser();
	if(browser == "internet explorer"){
		titleElement.style.visibility = "hidden";
		descriptionElement.style.visibility = "hidden";
	}
	else{
		var fadeout2 = new Tween(titleElement, "alpha", None.easeNone, 100, 0, 0.5);
		var fadeout3 = new Tween(descriptionElement, "alpha", None.easeNone, 100, 0, 0.5);
	}
	fadeout.onMotionFinished = function(){
		ImageSwap.addPreloader(imageElement);
		titleElement.innerHTML = title;
		descriptionElement.innerHTML = description;
		var image = new Image();
		Event.addEvent(image, "load", function(evt){
			ImageSwap.removePreloader(imageElement);
			imageElement.src = image.src;
			imageElement.style.width = image.width + "px";
			imageElement.style.height = image.height + "px";
			var fadein = new Tween(imageElement, "alpha", None.easeNone, 0, 100, 0.5);
			if(browser == "internet explorer"){
				fadein.onMotionFinished = function(){
					titleElement.style.visibility = "visible";
					descriptionElement.style.visibility = "visible";
				}
			}
			else{
				var fadein2 = new Tween(titleElement, "alpha", None.easeNone, 0, 100, 0.5);
				var fadein3 = new Tween(descriptionElement, "alpha", None.easeNone, 0, 100, 0.5);
			}
		});
		image.src = imageLink;
	}
}
ImageSwap.addPreloader = function(element){
	var preloader = document.createElement("img");
	preloader.src = ImageSwapPreloader;
	preloader.style.position = "absolute";
	preloader.style.zindex = 1;
	preloader.setAttribute("id","ImageSwapPreloader");
	document.getElementsByTagName("body")[0].appendChild(preloader);
	var xpos = Document.getX(element) + (element.offsetWidth / 2) - (preloader.offsetWidth / 2);
	//var ypos = Document.getY(element) + (element.offsetHeight / 2) - (preloader.offsetHeight / 2);
	var ypos = Document.getY(element) + 100;
	preloader.style.left = xpos + "px";
	preloader.style.top = ypos + "px";
}
ImageSwap.removePreloader = function(){
	var preloader = document.getElementById("ImageSwapPreloader");
	try{
		preloader.parentNode.removeChild(preloader);	
	}
	catch(e){}
}
