// train info
var vehicle = new Array;
var vehicleName = 0;	var vehicleWidth = 1;		var vehicleHeight = 2;		var vehicleDirection = 3;	
var vehicleSpeed = 4;	var vehicleStartOffset = 5;	var vehicleYoffset = 6;		var vehicleZpos = 7;	
var startPosition = 8;	var currentPosition = 9;	var stopPosition = 10;		var whistlePosition = 11;
var numVehicles = 0;
vehicle[ numVehicles++ ] = [ "icn", 728, 26, -1, 8, 3000, 14, 2 ];
vehicle[ numVehicles++ ] = [ "ic2000", 823, 26, 1, 6, 2000, 14, 2 ];
vehicle[ numVehicles++ ] = [ "thurbo", 344, 26, 1, 4, 3800, 14, 2 ];
vehicle[ numVehicles++ ] = [ "postbus", 68, 16, 1, 3, 1200, 18, 0 ];
vehicle[ numVehicles++ ] = [ "cyclists", 29, 13, -1, 1, 100, 34, 5 ];
var numTrains = 3;

var scenery = new Array;
var sceneryName = 0;	var sceneryWidth = 1;		var sceneryHeight = 2;		var sceneryYoffset = 3;		var sceneryZpos = 4;
var numScenery = 0;
scenery[ numScenery++ ] = [ "track", 226, 47, 0, 3 ];
scenery[ numScenery++ ] = [ "road", 1, 4, 32, -1 ];
scenery[ numScenery++ ] = [ "tree1", 500, 30, 14, 4 ];
scenery[ numScenery++ ] = [ "tree2", 500, 30, 9, 1 ];
scenery[ numScenery++ ] = [ "crossing1", 43, 23, 22, 4 ];
scenery[ numScenery++ ] = [ "crossing2", 30, 23, 17, 1 ];
var cyclistsImgs = new Array;
var frameNum = 1;
var firstFrame = 1;
var lastFrame = 8;
for( var cyclistsNum=firstFrame; cyclistsNum<=lastFrame; cyclistsNum++ ) {
	cyclistsImgs[ cyclistsNum ] = new Image();
	cyclistsImgs[ cyclistsNum ].src = "Graphics/cyclists" + cyclistsNum + ".gif";
}

var crossingPosition = 240;		var whistleOffset = 12;
soundManager.url = "soundmanager2/soundmanager2.swf"; // path to movie

soundManager.onload = function() {
	soundManager.createSound("whistle","Audio/train-whistle.mp3");
}		


var windowWidth = 0;
var vehicleDiv = new Array;

function trains() {
	findWindowWidth();
	addScenery();
	addVehicles();
	moveVehicles();
}
function findWindowWidth() {
	if( typeof( window.innerWidth ) == 'number' )								// do things differently depending on the browser
		{windowWidth = window.innerWidth;}
	else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) )
		{windowWidth = document.documentElement.clientWidth;}
	title = document.getElementById( "titleImg" );								// move title into middle of window
	title.style.left = ( ( windowWidth / 2.0 ) - 250 ) + "px";
}
function addScenery() {
	var trainDiv = document.getElementById( "trainDiv" );
	var sceneryDiv;
	for( var sceneryNum=0; sceneryNum<(numScenery-2); sceneryNum++ ) {
		for( var xPos=0; xPos<=windowWidth; xPos+=scenery[ sceneryNum ][ sceneryWidth ] ) {	// add as many scenery elements as needed to fill window
			sceneryDiv = document.createElement("img");									// add element and set attributes
			trainDiv.appendChild(sceneryDiv);
			setElement( sceneryDiv, scenery[ sceneryNum ][ sceneryName ], scenery[ sceneryNum ][ sceneryWidth ], scenery[ sceneryNum ][ sceneryHeight ], xPos, scenery[ sceneryNum ][ sceneryYoffset ], scenery[ sceneryNum ][ sceneryZpos ] );
		}
	}
	for( var sceneryNum=numScenery-2; sceneryNum<numScenery; sceneryNum++ ) {
		sceneryDiv = document.createElement("img");
		trainDiv.appendChild(sceneryDiv);
		setElement( sceneryDiv, scenery[ sceneryNum ][ sceneryName ], scenery[ sceneryNum ][ sceneryWidth ], scenery[ sceneryNum ][ sceneryHeight ], crossingPosition, scenery[ sceneryNum ][ sceneryYoffset ], scenery[ sceneryNum ][ sceneryZpos ] );
	}
}
function addVehicles() {
	var trainDiv = document.getElementById( "trainDiv" );
	for( var vehicleNum=0; vehicleNum<numVehicles; vehicleNum++ ) {
		if( vehicle[ vehicleNum ][ vehicleDirection ] < 0 ) {					// determine starting and stopping positions of vehicle
			vehicle[ vehicleNum ][ startPosition ] = windowWidth;
			vehicle[ vehicleNum ][ stopPosition ] = -1 * vehicle[ vehicleNum ][ vehicleWidth ];
		}
		else {
			vehicle[ vehicleNum ][ startPosition ] = -1 * vehicle[ vehicleNum ][ vehicleWidth ];
			vehicle[ vehicleNum ][ stopPosition ] = windowWidth;
		}
		vehicle[ vehicleNum ][ currentPosition ] = vehicle[ vehicleNum ][ startPosition ];
		if( vehicle[ vehicleNum ][ vehicleName ] == "icn" || vehicle[ vehicleNum ][ vehicleName ] == "postbus" || vehicle[ vehicleNum ][ vehicleName ] == "thurbo" )	// start some vehicles on page load, others delayed
			{vehicle[ vehicleNum ][ currentPosition ] -= vehicle[ vehicleNum ][ vehicleStartOffset ] * vehicle[ vehicleNum ][ vehicleDirection ];}

		vehicleDiv[ vehicleNum ] = document.createElement("img");				// add element and set attributes
		trainDiv.appendChild(vehicleDiv[ vehicleNum ]);
		setElement( vehicleDiv[ vehicleNum ], vehicle[ vehicleNum ][ vehicleName ], vehicle[ vehicleNum ][ vehicleWidth ], vehicle[ vehicleNum ][ vehicleHeight ], vehicle[ vehicleNum ][ startPosition ], vehicle[ vehicleNum ][ vehicleYoffset ], vehicle[ vehicleNum ][ vehicleZpos ] );
		if( vehicleNum < numTrains ) {
			if( vehicle[ vehicleNum ][ vehicleDirection ] < 0 )
				{vehicle[ vehicleNum ][ whistlePosition ] = crossingPosition + ( whistleOffset * vehicle[ vehicleNum ][ vehicleSpeed ] );}
			else
				{vehicle[ vehicleNum ][ whistlePosition ] = crossingPosition - vehicle[ vehicleNum ][ vehicleWidth ] - ( whistleOffset * vehicle[ vehicleNum ][ vehicleSpeed ] );}
		}
	}
	vehicleDiv[ numTrains+1 ].src = cyclistsImgs[ frameNum ].src;
}
function setElement( div, name, width, height, startPos, yOffset, zPos ) {
	div.src = "Graphics/" + name + ".gif";
	div.setAttribute("id",name);
	div.setAttribute("width",width+"px");
	div.setAttribute("height",height+"px");
	div.style.position = "absolute";
	div.style.left = startPos + "px";
	div.style.top = yOffset + "px";
	div.style.zIndex = zPos;
}
function moveVehicles() {
	for( var vehicleNum=0; vehicleNum<numVehicles; vehicleNum++ ) {
		vehicle[ vehicleNum ][ currentPosition ] += vehicle[ vehicleNum ][ vehicleSpeed ] * vehicle[ vehicleNum ][ vehicleDirection ];
		var reset = ( vehicle[ vehicleNum ][ currentPosition ] - vehicle[ vehicleNum ][ stopPosition ] ) * vehicle[ vehicleNum ][ vehicleDirection ];
		if( reset > 0 )																			// reset to starting position if at end of window
			{vehicle[ vehicleNum ][ currentPosition ] = vehicle[ vehicleNum ][ startPosition ] - ( ( Math.random() + 1 ) * 2 * vehicle[ vehicleNum ][ vehicleStartOffset ] * vehicle[ vehicleNum ][ vehicleDirection ] );}
		vehicleDiv[ vehicleNum ].style.left = vehicle[ vehicleNum ][ currentPosition ] + "px";	// move vehicle
		if( vehicle[ vehicleNum ][ vehicleName ] == "cyclists" ) {
			frameNum++;
			if( frameNum > lastFrame )
				{frameNum = firstFrame;}
			vehicleDiv[ vehicleNum ].src = cyclistsImgs[ frameNum ].src;
		}
		if( vehicleNum < numTrains && vehicle[ vehicleNum ][ currentPosition ] > vehicle[ vehicleNum ][ whistlePosition ] && vehicle[ vehicleNum ][ currentPosition ] <= ( vehicle[ vehicleNum ][ whistlePosition ] + vehicleSpeed ) )
			{soundManager.play("whistle");}
	}
	setTimeout( "moveVehicles()", 50 );															// move vehicles again after a delay
}

function writeCookie( cookieName, cookieValue ) {
	document.cookie = cookieName + "=" + cookieValue + "; path=/";
}
function readCookie( cookieName ) {
	var cookieContents = new Array();
	cookieContents = document.cookie.split(';');
	cookieName += "=";
	for( var i=0; i<cookieContents.length; i++ ) {
		while (cookieContents[ i ].charAt( 0 ) == " ") cookieContents[ i ] = cookieContents[ i ].substring( 1, cookieContents[ i ].length );
		if( cookieContents[ i ].indexOf( cookieName ) == 0 )											// if cookie name matches then ...
			{return cookieContents[ i ].substring( cookieName.length, cookieContents[ i ].length );}	// ... return cookie value
	}
	return null;																						// return nothing if cookie not found	
}