//Copyright (c) 2007 paulgrant.ca
//http://www.paulgrant.ca

var bStop		= false;

function DoAll(sId, sLines)
{
	var aLines		= eval(sLines);
	if(!aLines)
		return false;

	for(var i = 0; i < aLines.length; i++)
	{
		DrawButton(sId, sLines, i);

		DrawLine(sId, sLines, i);
	}

	return true;
}

function DrawButton(sId, sLines, iIdxLine)
{
	var oSwf = GetSwf(sId);
	if(!oSwf)
		return false;

	var aLines		= eval(sLines);
	if(!aLines)
		return false;

	oSwf.SetVariable(aLines[ iIdxLine ][ 0 ] + "_Btn", aLines[ iIdxLine ][ 1 ]);

	oSwf.ReDraw();

	return true;
}

function DrawLine(sId, sLines, iIdxLine, iColour)
{
	var oSwf = GetSwf(sId);
	if(!oSwf)
		return false;

	var aLines			= eval(sLines);
	if(!aLines)
		return false;

	var aLine			= aLines[ iIdxLine ];
	if(!aLine)
		return false;

	if(!iColour)
		iColour			= ((aLine[ 1 ]) ? aLine[ 1 ] : 0);

	var aTracks 		= aLine[ 2 ];
	if(!aTracks)
		return false;

	var aStations		= aLine[ 3 ];
	if(!aStations)
		return false;

	var iIdxTracks		= aLine[ 4 ];
	if(!iIdxTracks)
		iIdxTracks = 0;

	var iIdxStations	= aLine[ 5 ];
	if(!iIdxStations)
		iIdxStations = 0;

	if(iIdxTracks < aTracks.length)
		oSwf.SetVariable(aTracks[ iIdxTracks ], iColour);

	if(iIdxStations < aStations.length)
		oSwf.SetVariable(aStations[ iIdxStations ], 1);

	oSwf.ReDraw();

	iIdxTracks++;
	iIdxStations++;

	if((iIdxTracks < aTracks.length) || (iIdxStations < aStations.length))
	{
		if(bStop == false)
		{
			window.setTimeout("DrawLine('" + sId + "', '" + sLines + "', Number(" + iIdxLine + "), Number(" + iColour + "))", 500);
		}
		else
		{
			iIdxTracks		= 0;
			iIdxStations 	= 0;
		}
	}
	else
	{
		iIdxTracks		= 0;
		iIdxStations 	= 0;
	}

	aLines[ iIdxLine ][ 4 ] = iIdxTracks;
	aLines[ iIdxLine ][ 5 ] = iIdxStations;

	return true;
}

function DrawSteps(sId, sSteps, iIdx)
{
	var oSwf = GetSwf(sId);
	if(!oSwf)
		return false;

	if(!iIdx)
		iIdx = 0;

	var aSteps	= eval(sSteps);
	if(!aSteps)
		return false;

	oSwf.SetVariable(aSteps[ iIdx ][ 0 ], aSteps[ iIdx ][ 1 ]);

	oSwf.ReDraw();

	if(bStop == false)
	{
		iIdx++;
		if(iIdx < aSteps.length)
			window.setTimeout("DrawSteps('" + sId + "','" + sSteps + "', Number(" + iIdx + "))", 500);
	}

	return true;
}

//RANDOM

function RandomizeIt(sId, sLines)
{
	var oSwf = GetSwf(sId);
	if(!oSwf)
		return false;

	var aLines		= eval(sLines);
	if(!aLines)
		return false;

	var iColour		= Math.floor(Math.random() * 10);
	var iIdxLines	= Math.floor(Math.random() * aLines.length);

	var aTracks		= aLines[ iIdxLines ][ 2 ];
	if(!aTracks)
		return false;

	var iIdx		= Math.floor(Math.random() * aTracks.length);
	var sVariable	= aTracks[ iIdx ];

	oSwf.SetVariable(aLines[ iIdxLines ][ 0 ] + "_Btn", iColour);

	oSwf.SetVariable(sVariable, iColour);

	var iIdx		= Math.floor(Math.random() * aStations.length);
	var iOn			= Math.floor(Math.random() * 2);

	oSwf.SetVariable(aStations[ iIdx ], ((iOn == 0) ? 1 : 2));

	oSwf.ReDraw();

	if(bStop == false)
		window.setTimeout("RandomizeIt('" + sId + "', '" + sLines + "')", 50);

	return true;
}

//SetMap

function SetMap(sId, aMap)
{
	var oSwf = GetSwf(sId);
	if(!oSwf)
		return false;

	var aSet = null;

	for(var i = 0; i < aMap.length; i++)
	{
		aSet = aMap[ i ];
		if(!aSet)
			continue;

		oSwf.SetVariable(aSet[ 0 ], aSet[ 1 ]);
	}

	oSwf.ReDraw();

	return true;
}

//CLEAR

function DoClear(sId, aLines, bHide)
{
	var oSwf = GetSwf(sId);
	if(!oSwf)
		return false;

	var i			= 0;
	var j			= 0;
	var iColour		= 0;
	var iShow		= 0;
	var aLine		= null;
	var aTracks		= null;
	var aStations	= null;

	for(i = 0; i < aLines.length; i++)
	{
		aLine = aLines[ i ];
		if(!aLine)
			continue;

		iColour = ((bHide) ? 0 : aLine[ 1 ]);

		oSwf.SetVariable(aLine[ 0 ] + "_Btn", iColour);

		aTracks	= aLine[ 2 ];
		if(!aTracks)
			continue;

		for(j = 0; j < aTracks.length; j++)
			oSwf.SetVariable(aTracks[ j ], iColour);

		iShow = ((bHide) ? 2 : 1);

		aStations = aLine[ 3 ];
		if(!aStations)
			continue;

		for(j = 0; j < aStations.length; j++)
			oSwf.SetVariable(aStations[ j ], iShow);
	}

	oSwf.ReDraw();

	return true;
}

//UTIL.

function GetSwf(sId)
{
	if(!sId)
		sId = "swfTTC";

	var oSwf = null;

	if(navigator.appName.indexOf("Microsoft") != -1) {
		oSwf = window[ sId ];
	} else {
		oSwf = window.document[ sId ];
	}

	return oSwf;
}

//End.

