////////////////// AUTO SCROLL ////////////
autoScrolling = false;
function initAutoScroll() {
	// find scrolling items
	if (asEl = document.getElementById('autoScroll')) {
		prevBtn = document.getElementById('autoScrollPrev');
		nextBtn = document.getElementById('autoScrollNext');
		scrollTargetEl = document.getElementById(asEl.getAttribute('scrollTarget'));
		scrollTargetContentsEl = document.getElementById(asEl.getAttribute('scrollTarget')+'Content');
		nextBtn.onclick = scrollNextFunction = function() {
			if (this.className!='inactive' && !autoScrolling) {
				prevBtn.className = '';
				leftDestination = (parseInt(scrollTargetContentsEl.style.left) - parseInt(scrollTargetEl.getAttribute('scrollJump')));
				if (scrollTargetEl.getAttribute('scrollType')=='fade') {
					fadeTargetTo(scrollTargetContentsEl,leftDestination);
				} else {
					scrollTargetTo(scrollTargetContentsEl,leftDestination,-1*(scrollTargetEl.getAttribute('scrollSpeed')),scrollTargetEl.getAttribute('smooth'));
				}
				if ((leftDestination + parseInt(scrollTargetContentsEl.style.width)) - parseInt(scrollTargetEl.getAttribute('scrollJump')) < parseInt(scrollTargetEl.style.width)) {
					this.className = 'inactive';
				}
			}
		}
		if ((parseInt(scrollTargetContentsEl.style.left) + parseInt(scrollTargetContentsEl.style.width)) - parseInt(scrollTargetEl.getAttribute('scrollJump')) < parseInt(scrollTargetEl.style.width)) {
			nextBtn.className = 'inactive';
		}
		prevBtn.onclick = function() {
			if (this.className!='inactive' && !autoScrolling) {
				nextBtn.className = '';
				leftDestination = (parseInt(scrollTargetContentsEl.style.left) + parseInt(scrollTargetEl.getAttribute('scrollJump')));
				if (scrollTargetEl.getAttribute('scrollType')=='fade') {
					fadeTargetTo(scrollTargetContentsEl,leftDestination);
				} else {
					scrollTargetTo(scrollTargetContentsEl,leftDestination,scrollTargetEl.getAttribute('scrollSpeed'),scrollTargetEl.getAttribute('smooth'));
				}
				if (!leftDestination) {
					this.className = 'inactive';
				}
			}
		}
		if (!parseInt(scrollTargetContentsEl.style.left)) {
			prevBtn.className = 'inactive';
		}
		asEl.style.display = 'block';
	}
}
function scrollTargetTo(el,leftTarget,step,smooth) {
	autoScrolling = true;
	if (smooth) {
		smoothStep = Math.ceil(0.2*(leftTarget - parseInt(el.style.left)));
		if (!smoothStep && (leftTarget - parseInt(el.style.left))) smoothStep = -1;
		if (Math.abs(smoothStep) > Math.abs(step)) smoothStep = step;
		el.style.left = (parseInt(el.style.left)+parseInt(smoothStep))+'px';
	} else {
		el.style.left = (parseInt(el.style.left)+parseInt(step))+'px';
	}
	if (step > 0) {
		if (parseInt(el.style.left) >= leftTarget) {
			el.style.left = leftTarget + 'px';
			autoScrolling = false;
			return true;
		}
	} else {
		if (parseInt(el.style.left) <= leftTarget) {
			el.style.left = leftTarget + 'px';
			autoScrolling = false;
			return true;
		}
	}
	setTimeout("scrollTargetTo(scrollTargetContentsEl,'"+leftTarget+"','"+step+"','"+smooth+"')",20);
}

function fadeTargetTo(el,leftTarget) {
	autoScrolling = true;
	setOpacity('',100,el);
	fadeTargetEl = el;
	fadeOut('','scrollFadeStep1('+leftTarget+')',el);
}
function scrollFadeStep1(leftTarget) {
	setOpacity('',0,fadeEl);
	fadeTargetEl.style.left = leftTarget+'px';
	fadeIn('','scrollFadeStep2()',fadeEl);
}
function scrollFadeStep2() {
	autoScrolling = false;
}
function setOpacity(elId,alpha,el) {
	if (!el) el = document.getElementById(elId);
	if (document.all) el.style.filter = 'alpha(opacity=' + alpha + ')';	
	else el.style.opacity = (alpha)/100;
}






////////////// FADE FUNCTIONS //////////////

randFadeId = Math.ceil(Math.random()*1000);
function fadeOut(elId,execAfter,el) {
	if (el) {
		if (!el.id) el.setAttribute('id','fadeEl'+randFadeId++);
		elId = el.id;
	} else {
		el = document.getElementById(elId);
	}
	fadeEl = el;
	fadeEl.elId = elId;
	if (execAfter) fadeOutExecAfter = execAfter;
	fadeEl.alpha = 100;
	setOpacity(fadeEl.id,fadeEl.alpha);
	setTimeout(fadeOutStep,10);
}

fadeOutExecAfter = fadeInExecAfter = '';
function fadeOutStep() {
	fadeEl.alpha -= 20;
	setOpacity(fadeEl.id,fadeEl.alpha);
	if (fadeEl.alpha <= 0) {
		if (fadeOutExecAfter) {
			eval(fadeOutExecAfter);
			fadeOutExecAfter = '';
		}
	} else setTimeout(fadeOutStep,10);
}

function fadeIn(elId,execAfter,el) {
	if (elId) {
		el = document.getElementById(elId);
	} else {
		if (!el.id) el.id = 'fadeEl'+randFadeId++;
		elId = el.id;
	}
	fadeEl = el;
	fadeEl.elId = elId;
	if (execAfter) fadeInExecAfter = execAfter;
	fadeEl.alpha = 0;
	setOpacity(fadeEl.id,fadeEl.alpha);
	setTimeout(fadeInStep,10);
}

function fadeInStep() {
	fadeEl.alpha += 4;
	setOpacity(fadeEl.id,fadeEl.alpha);
	if (fadeEl.alpha >= 100) {
		if (fadeInExecAfter) {
			eval(fadeInExecAfter);
			fadeInExecAfter = '';
		}
	} else setTimeout(fadeInStep,10);
}
