/**
 * @copyright Copyright (c) 2008 cron IT GmbH, All rights reserved
 * @author  Ernesto Baschny <ernst@cron-it.de>
 * @version $Id: crossfade.js,v 1.3 2008/10/17 15:56:47 ernst Exp $
 * @package cron_dpsa
 *
 * requires jquery
 */
 
var browseableCurrent = 0;
var isFading = 0;

function crossFade(src, dst, repeatTime) {
	if (src[0].tagName=='IMG') {
		isFading = 1;
		src.fadeOut(1200);
		dst.fadeIn(1200, function() {
			isFading = 0;
			if (repeatTime>0) {
				setTimeout(function() { autoFadeElements(repeatTime); }, repeatTime);
			}
		});	
	} else {
		src.removeClass('current').addClass('hidden');
		dst.removeClass('hidden').addClass('current');
	}
}

function autoFadeElements(repeatTime) {
	if (isFading) { return; }
	var isLast = 0;
	if (browseableCurrent == 0) { browseableCurrent = 1; }
	$(".browseable").each(function(i) {
		var fadeOut = $(this).find(".item-" + browseableCurrent);
		// Check if there is one more, or if we need to start from beginning
		var fadeIn = $(this).find(".item-" + (browseableCurrent+1));
		browseableCurrent = browseableCurrent+1;
		if (!fadeIn[0]) {
			fadeIn = $(this).find(".item-1");
			browseableCurrent = 1;
		}
		if (fadeIn) {
			crossFade(fadeOut, fadeIn, repeatTime);
		}
	});
}

function browseElement(direction) {
	if (isFading) { return; }
	var hasBrowsed = 0;
	var isLast = 0;
	if (browseableCurrent == 0) { browseableCurrent = 1; }
	$(".browseable").each(function(i) {
		var fadeOut = $(this).find(".item-" + browseableCurrent);
		var fadeIn = $(this).find(".item-" + (browseableCurrent+direction));
		if (fadeIn) {
			hasBrowsed = 1;
			crossFade(fadeOut, fadeIn, 0);
		}
		if (direction>0) {
			// Check if we can browse once more to "next"
			var test = $(this).find(".item-" + (browseableCurrent+2));
			if (!test[0]) {
				isLast = 1;
			}
		}
	});
	if (hasBrowsed) {
		browseableCurrent += direction;
		if (browseableCurrent > 1) {
			$(".browser > a.browse-previous img").show();
		} else if (browseableCurrent == 1) {
			$(".browser > a.browse-previous img").hide();
		}
		if (isLast) {
			$(".browser > a.browse-next img").hide();
		} else {
			$(".browser > a.browse-next img").show();
		}
	}
}
