// Blue Discus Systems - BDS Dynamic Web Effects Lite(tm) - CSS Module - Version 2.1.3
//
// Copyright 2005 Blue Discus Systems LLC - www.BlueDiscusSystems.com
//
// License is granted to freely use these Java Scripts for personal or commercial use.
// You may NOT, however, sell these Java Scripts except if written permission is provided
//		to you by Blue Discus Systems LLC.
//
// Contact: garyz@BlueDiscusSystems.com
//
// We would appreciate it if you would credit Blue Discus Systems for these scripts
//     and provide a link to our main website at www.BlueDiscusSystems.com
// 

var BDS_CssTransAbort = false; // 'true' to abort all threads and disable execution; 'false' to enable
var BDS_CssTransPause = false; // 'true' to pause all threads; 'false' to resume

//Returns tokenName - Pass 'baseName' instead of 'tokenName' when starting a new effect thread
function BDS_StartCssSeries(tokenName, transType, contentArray, containerDivID, cssBasename, startIndex, endIndex, indexStep, stepTime, upTime, downTime, repeatCount, nextPgm) {
	var contentIndex = 0;
	var currentCount = 1;
	var baseName = '';
	var testName = tokenName;
	if (testName == '') {
		baseName = 'GenericCSSEffect';
	} else {
		if (testName == BDS_GetBaseEffect(testName)) {
			baseName = testName;
		}
	}
	if (baseName != '') {
		tokenName = BDS_RegisterEffect(baseName);
	}
	BDS_StartCssContent(tokenName, transType, contentArray, contentIndex, containerDivID, cssBasename, startIndex, endIndex, indexStep, stepTime, upTime, downTime, repeatCount, currentCount, nextPgm);	
	return tokenName;
}

function BDS_StartCssContent(tokenName, transType, contentArray, contentIndex, containerDivID, cssBasename, startIndex, endIndex, indexStep, stepTime, upTime, downTime, repeatCount, currentCount, nextPgm) {
	var cmd="";
	var cssIndex=startIndex;
	var stepDirection='up';
	cmd = contentArray+'['+contentIndex+']';
	var contentItem=eval(cmd); //any HTML code can be stored in a contentItem within the (global) contentArray
	document.getElementById(containerDivID).className=cssBasename+cssIndex;
	document.getElementById(containerDivID).innerHTML=contentItem;
	cmd = "BDS_NextCssStep('"+tokenName+"', '"+transType+"', "+cssIndex+", '"+stepDirection+"', '"+contentArray+"', "+contentIndex+", '"+containerDivID+"', '"+cssBasename+"', "+startIndex+", "+endIndex+", "+indexStep+", "+stepTime+", "+upTime+", "+downTime+", "+repeatCount+", "+currentCount+", '"+nextPgm+"')";
	setTimeout(cmd,stepTime);
}

function BDS_NextCssStep(tokenName, transType, cssIndex, stepDirection, contentArray, contentIndex, containerDivID, cssBasename, startIndex, endIndex, indexStep, stepTime, upTime, downTime, repeatCount, currentCount, nextPgm) {
	var cmd="";
	var temp = "";
	var nextDisplay = '';
	var timeDelay = stepTime;
	var done = false;
	if (BDS_CssTransAbort) {
		done = true;
		nextDisplay = 'done';
	} else if (BDS_EffectAborted(tokenName)==true){
		done = true;
		nextDisplay = 'done';
	} else if (BDS_EffectPaused(tokenName)==true){
		nextDisplay = "Pause";
	} else if (BDS_CssTransPause){
		nextDisplay = "Pause";
		BDS_PauseEffect(tokenName);
	} else {
		switch (stepDirection) {
			case ("up"):
				cssIndex+=indexStep;
				if (cssIndex > endIndex) {
					nextDisplay = 'HoldStep';
					cssIndex = endIndex;
					timeDelay = upTime;
					if (transType == 'up') {
						stepDirection = 'empty';
					} else {
						stepDirection = 'hold';
					}
				} else {
					nextDisplay = 'Step';
				}
				break;
			case ("hold"):
				nextDisplay = 'Step';
				cssIndex-=indexStep;
				stepDirection = 'down';
				break;
			case ("down"):
				cssIndex-=indexStep;
				if (cssIndex >= startIndex) {
					nextDisplay = 'Step';
				} else {
					nextDisplay = 'HoldStep';
					stepDirection = 'empty';
					timeDelay = downTime;
				}
				break;
			case ("empty"): 
				contentIndex+=1;
				var contentCount = eval(contentArray+'.length;');
				if (contentIndex == contentCount) {
					contentIndex = 0;
					currentCount+=1;
					if ((repeatCount > 0) && (currentCount>repeatCount)) {
						done = true;
						if (nextPgm != "") {
							nextDisplay = 'Chain';
						} else {
							nextDisplay = 'done';
						}
					}
				}
				if (done == false) {
					if (contentCount == 1) {
						stepDirection='up';
						cssIndex=startIndex;
						nextDisplay = 'Step';
					} else {
						nextDisplay = 'Content';
					}
				}
				break;
		}
	}
	if (nextDisplay == '') nextDisplay = 'done';
	switch (nextDisplay) {
		case ("Step"):
			document.getElementById(containerDivID).className=cssBasename+cssIndex;
			cmd = "BDS_NextCssStep('"+tokenName+"', '"+transType+"', "+cssIndex+", '"+stepDirection+"', '"+contentArray+"', "+contentIndex+", '"+containerDivID+"', '"+cssBasename+"', "+startIndex+", "+endIndex+", "+indexStep+", "+stepTime+", "+upTime+", "+downTime+", "+repeatCount+", "+currentCount+", '"+nextPgm+"')";
			setTimeout(cmd,timeDelay);
			break;
		case ("HoldStep"):
			cmd = "BDS_NextCssStep('"+tokenName+"', '"+transType+"', "+cssIndex+", '"+stepDirection+"', '"+contentArray+"', "+contentIndex+", '"+containerDivID+"', '"+cssBasename+"', "+startIndex+", "+endIndex+", "+indexStep+", "+stepTime+", "+upTime+", "+downTime+", "+repeatCount+", "+currentCount+", '"+nextPgm+"')";
			setTimeout(cmd,timeDelay);
			break;
		case ("Content"):
			BDS_StartCssContent(tokenName, transType, contentArray, contentIndex, containerDivID, cssBasename, startIndex, endIndex, indexStep, stepTime, upTime, downTime, repeatCount, currentCount, nextPgm);
			break;
		case ("Chain"):
			cmd = nextPgm+"('"+tokenName+"')";
			eval(cmd);
			break;
		case ("Pause"):
			cmd = "BDS_NextCssStep('"+tokenName+"', '"+transType+"', "+cssIndex+", '"+stepDirection+"', '"+contentArray+"', "+contentIndex+", '"+containerDivID+"', '"+cssBasename+"', "+startIndex+", "+endIndex+", "+indexStep+", "+stepTime+", "+upTime+", "+downTime+", "+repeatCount+", "+currentCount+", '"+nextPgm+"')";
			BDS_WaitForResumedEffect(tokenName,'"'+cmd+'"');
			break;
		case ("done"):
			BDS_RemoveEffect(tokenName);
			break;
	}
}
