// TPR - THEMA:POKER Replayer
// Version: 1.0.0.1
// Author:  Robert Rehrl
// Release: 25.04.2008

ImagesPath = "/tpr/";

maxFactor = 3;
maxSpeed = 7;
var bWait = false;
var tprdiv = document.getElementById("tpr");
var iCurrentStep = 1;
var iMaxStep = 0;
var bPlayContinous = false;
var iAniIndex = 0;
var iDivIndex = 0;
var tprAnimation = new Array();
var tprDivs = new Array();
var tprAnimCurrent = new Array();
var tprImages = new Array();

function InitPlayer()
{
	InitAnimationData();
	InitAnimationPositions();
	InitializeStep(iCurrentStep);
	InitDivsHidden();
	PreloadImages();
	StartWhenFinishedPreloader();
}

function InitAnimationPositions()
{
	// Rücksetzen der aktuellen Animationspositionen

	iMaxStep = 0;
	for (iAnim = 0; iAnim < tprAnimation.length; iAnim++)
	{
		tprAnimCurrent[iAnim] = new Array();
		if (tprAnimation[iAnim][0] > iMaxStep)
			iMaxStep = tprAnimation[iAnim][0];
	}
	iMaxStep++;
}


function StartWhenFinishedPreloader()
{
	// Prüfen, ob alle Grafiken geladen...

	iComplete = 0;
	for (i = 0; i < tprImages.length; i++)
	{
		if (tprImages[i].complete)
			iComplete++;
	}

	// Display progress...

	if (iComplete)
	{
		iWidth = 570 / tprImages.length * iComplete;
	
		document.getElementById("tpr_preloader_cellA").style.width = iWidth;
		document.getElementById("tpr_preloader_cellB").style.width = 570 - iWidth;
	}



	if (iComplete == tprImages.length)
	{
		document.getElementById("tpr_preloader").style.display = "none";
		Start();
	}
	else
		setTimeout("StartWhenFinishedPreloader()", 100);
}



function InitDivsHidden()
{
	InitHtml = '';

	for (iDiv = 0; iDiv < tprDivs.length; iDiv++)
	{
		strVisibility = 'none';

		if (tprDivs[iDiv][4].indexOf('http://') == -1)
			strImage = ImagesPath + tprDivs[iDiv][4];
		else
			strImage = tprDivs[iDiv][4];


		if (tprDivs[iDiv][7].length > 0)
			InitHtml += '<div id="' + tprDivs[iDiv][0] + '" style="position:absolute;left:' + tprDivs[iDiv][1] + ';top:' + tprDivs[iDiv][2] + ';z-index:' + tprDivs[iDiv][3] + ';display:' + strVisibility + '"><a href="javascript:' + tprDivs[iDiv][7] + '"><img src="' + strImage + '" width="' + tprDivs[iDiv][5] + '" height="' + tprDivs[iDiv][6] + '" alt="" border="0"></a></div>';
		else
			InitHtml += '<div id="' + tprDivs[iDiv][0] + '" style="position:absolute;left:' + tprDivs[iDiv][1] + ';top:' + tprDivs[iDiv][2] + ';z-index:' + tprDivs[iDiv][3] + ';display:' + strVisibility + '"><img src="' + strImage + '" width="' + tprDivs[iDiv][5] + '" height="' + tprDivs[iDiv][6] + '" alt=""></div>';
	}

	InitHtml += '<div id="tpr_preloader" style="position:absolute;left:0;top:0;z-index:200;display:block"><p><b>THEMA:POKER-Hand-Replayer wird geladen...</b></p><table border="1" width="570" height="70" style="border-collapse:collapse;border-color:#000000;"><tr><td id="tpr_preloader_cellA" bgcolor="#0000DD"></td><td id="tpr_preloader_cellB" bgcolor="#EEEEEE"></td></tr></table></div>'

	tprdiv.innerHTML = InitHtml;
}



function Start()
{
	for (iDiv = 0; iDiv < tprDivs.length; iDiv++)
	{
		if (tprDivs[iDiv][8] == 1)
			strVisibility = 'block';
		else
			strVisibility = 'none';
		
		document.getElementById(tprDivs[iDiv][0]).style.display = strVisibility;
	}
	UpdateElements();
}


function PreloadImages()
{
	for (iImg = 0; iImg < tprDivs.length; iImg++)
	{
		if (tprDivs[iImg][4].indexOf('http://') == -1)
			strImage = ImagesPath + tprDivs[iImg][4];
		else
			strImage = tprDivs[iImg][4];


		tprImages[iImg] = new Image();
		tprImages[iImg].src = strImage;
	}
}


function InitializeStep(iStep)
{
	for (iAnim = 0; iAnim < tprAnimation.length; iAnim++)
	{
		if (tprAnimation[iAnim][0] != iStep)
			continue;
		
		tprAnimCurrent[iAnim][0] = tprAnimation[iAnim][2];
		tprAnimCurrent[iAnim][1] = tprAnimation[iAnim][3];
	}
}


function ClkStepBW()
{
	if (iCurrentStep > 1)
		iCurrentStep--;

	bPlayContinous = false;
	InitializeStep(iCurrentStep);
	UpdateElements();
}


function ClkStepFW()
{
	bPlayContinous = false;

	while (IsEmptyStep() && iCurrentStep < iMaxStep)
		iCurrentStep++;

	InitializeStep(iCurrentStep);
	DoAnimations();
}


function ClkRestart()
{
	iCurrentStep = 1;
	bPlayContinous = false;
	InitializeStep(iCurrentStep);

	for (iDiv = 0; iDiv < tprDivs.length; iDiv++)
	{
		if (tprDivs[iDiv][8] == 1)
			strVisibility = 'block';
		else
			strVisibility = 'none';
		
		document.getElementById(tprDivs[iDiv][0]).style.display = strVisibility;
		document.getElementById(tprDivs[iDiv][0]).style.opacity = 1.0;
		//document.getElementById(tprDivs[iDiv][0]).style.filter = 'alpha(opacity=100)';
		document.getElementById(tprDivs[iDiv][0]).style.left = tprDivs[iDiv][1];
		document.getElementById(tprDivs[iDiv][0]).style.top = tprDivs[iDiv][2];
	}


	UpdateElements();
}


function ClkPlayPause()
{
	bPlayContinous = true;
	InitializeStep(iCurrentStep);
	DoAnimations();
}


function DoAnimations()
{
	if (bWait)
		return;

	// Zählen der gleichzeitigen Animationen im aktuellen Animationsschritt...

	var iCountAnimations = 0;
	var iFinishedAnimations = 0;

	for (iAnim = 0; iAnim < tprAnimation.length; iAnim++)
	{
		if (tprAnimation[iAnim][0] != iCurrentStep)
			continue;

		iCountAnimations++;
	}

	bInitializeNextStep = false;
	bContinueAnimation = false;


	for (iAnim = 0; iAnim < tprAnimation.length; iAnim++)
	{
		if (tprAnimation[iAnim][0] != iCurrentStep)
			continue;

		var tprEle = document.getElementById(tprAnimation[iAnim][1]);

		orgX = tprAnimation[iAnim][2];
		orgY = tprAnimation[iAnim][3];

		tX = tprAnimation[iAnim][4];
		tY = tprAnimation[iAnim][5];

		dX = tprAnimCurrent[iAnim][0];
		dY = tprAnimCurrent[iAnim][1];

		if (dX != tX || dY != tY)
		{
			// new Position

			mX = 0 + tX - dX;
			mY = 0 + tY - dY;

			mX /= maxFactor;
			mY /= maxFactor;

			// Prozentueller Fortschritt ermitteln...
			
			pctX = 100.0 / (tX - orgX) * (dX - orgX);
			pctY = 100.0 / (tY - orgY) * (dY - orgY);
			pctAvg = (pctX + pctY) / 2;

			alpha = tprAnimation[iAnim][8] + ((tprAnimation[iAnim][9] - tprAnimation[iAnim][8]) / 100.0 * pctAvg);

			tprEle.style.opacity = alpha;
			//tprEle.style.filter = 'alpha(opacity=' + 100.0 * alpha + ')';

			if (mX < 1 && mY < 1 && mX > -1 && mY > -1)
			{
				tprAnimCurrent[iAnim][0] = tX;
				tprAnimCurrent[iAnim][1] = tY;
			}
			else
			{
				tprAnimCurrent[iAnim][0] = dX + mX;
				tprAnimCurrent[iAnim][1] = dY + mY;
			}

			tprEle.style.left = tprAnimCurrent[iAnim][0];
			tprEle.style.top = tprAnimCurrent[iAnim][1];
			tprEle.style.display = 'block';

			if (tprAnimation[iAnim][6] == 0) 
				tprEle.style.display = 'none';
			else
				tprEle.style.display = 'block';

			bContinueAnimation = true;
		}
		else
		{

			if (tprAnimation[iAnim][6] == 0) 
				tprEle.style.display = 'none';
			if (tprAnimation[iAnim][6] == 1) 
				tprEle.style.display = 'block';

			// Animationsschritt vollständig
			
			iFinishedAnimations++;
			
			if (iFinishedAnimations == iCountAnimations)
			{
				// Set Animation Final-Visibility

				for (iAnim1 = 0; iAnim1 < tprAnimation.length; iAnim1++)
				{
					if (tprAnimation[iAnim1][0] != iCurrentStep)
						continue;

					var tprEle1 = document.getElementById(tprAnimation[iAnim1][1]);
					if (tprAnimation[iAnim1][7] == 0) 
						tprEle1.style.display = 'none';
					else
						tprEle1.style.display = 'block';
				}


				if (bPlayContinous)
				{
	
					if (iCurrentStep != iMaxStep)
					{
						bInitializeNextStep = true;
						bContinueAnimation = true;
					}
					else
					{
						bPlayContinous = false;
					}
				}
				else
				{
	
					if (iCurrentStep != iMaxStep)
					{
						bInitializeNextStep = true;

						bContinueAnimation = false;
					}
				}
			}
			else
			{
				bContinueAnimation = true;
			}
		}
	}

	
	if (bInitializeNextStep)
	{
		bWait = true;
		setTimeout("NextStep()", 250);
	}


	if (bContinueAnimation)
	{
		setTimeout("DoAnimations()", 50);
	}
}


function NextStep()
{
	bWait = false;
	iCurrentStep++;

	while (IsEmptyStep() && iCurrentStep < iMaxStep)
		iCurrentStep++;

	InitializeStep(iCurrentStep);
	
	if (bPlayContinous)
		DoAnimations();
}


function IsEmptyStep()
{
	for (iAnim = 0; iAnim < tprAnimation.length; iAnim++)
	{
		if (tprAnimation[iAnim][0] == iCurrentStep)
			return false;
	}
	return true;
}


function UpdateElements()
{
	for (iAnim = 0; iAnim < tprAnimation.length; iAnim++)
	{
		if (tprAnimation[iAnim][0] != iCurrentStep)
			continue;

		var tprEle = document.getElementById(tprAnimation[iAnim][1]);

		tprEle.style.left = tprAnimCurrent[iAnim][0];
		tprEle.style.top = tprAnimCurrent[iAnim][1];
		tprEle.style.display = 'block';
	}
}


function InitAnimationData()
{
	InitTPR();
}

