<!doctypehtml><meta charset=utf-8><meta content="Ricky Vesel"name=author><meta content="racingline race line racing line optimization trackday track day"name=keywords><meta content="Learn the racing line at Gateway Motorsports Park."name=description><link href=https://www.raceoptimal.com/images/ro_social_icon_2.jpg rel=image_src type=image/jpeg><meta content=https://www.raceoptimal.com/images/ro_social_icon_2.jpg property=og:image><meta content=https://www.raceoptimal.com property=og:url><meta content="Race Optimal is the world's only database of computer generated racing line maps and video simulations for circuits around the world.  You can also use our powerful algorithm to create a custom video simulation for your own car or motorcycle."property=og:description><meta content="Race Optimal"property=og:title><meta content=width=device-width,initial-scale=1 name=viewport><title>
   Gateway Motorsports Park
  </title><link href=https://fonts.googleapis.com/css?family=Source+Sans+Pro:400,700,400italic,700italic rel=stylesheet><link href=https://www.raceoptimal.com/themes/original/common.css rel=stylesheet><link href=https://www.raceoptimal.com/themes/original/trackpage.css rel=stylesheet><script src=https://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js></script><script src=/scripts/commonscripts.js></script><script src=/scripts/login.js></script><script src=https://maps.googleapis.com/maps/api/js?key=AIzaSyB9lecWtuEagr4anAgckP6rJZqBw5gWOrk></script><script>window.showMobile = false;;
			window.devMode = true;</script><body><script>window.loginLink = 'https://www.raceoptimal.com/blog/wp-login.php?redirect_to=https%3A%2F%2Fwww.raceoptimal.com%2FGateway';</script><div class=plusAdsWrapper><div class="contentWidth container"><div class="topStrip center"><div class=center><a href=https://www.raceoptimal.com id=logoLink> <img id=logoImg src=/images/logostripe.png> </a><form action=https://www.raceoptimal.com/index.php class=searchForm><input placeholder="Search tracks.."class=pageSearchBox id=topSearchBox name=siteSearch><input class="searchButton pageSearchButtonTop"type=submit><input name=action type=hidden value=search></form><div id=loginTop><script>$(document).ready(function() {$('body').addClass('production');});</script><span class="psuedoLinkBlue notLoggedInLink right"title="Login with Race Optimal"href=# id=loginLink> Log In / Sign Up </span></div><img alt id=bikePic src=/images/bikesilhouette.png><a class="socialButton facebookButton"href=https://www.facebook.com/Race-Optimal-375914529172504/ target=_blank> </a><a class="socialButton youtubeButton"href=https://www.youtube.com/raceoptimalvids target=_blank> </a><div class=clear></div><div class=clear></div></div><div class="contentWidth center"id=stripe><div class=clear></div></div><div class=clear></div></div><div class=hidden><div id=siteLogin><div class=signInWrapper><img class=centerImg height=77 id=logo src=/images/LogoStripeLogin.png><h2 class=centerText id=signInHeading>Sign In</h2><img id=helmet src=/images/helmetright.png><div class="center loginForm"id=signInDiv><form class=siteLogin><label class=loginLabel for=loginUserID id=loginUserIDLabel>Username or Email</label><input class=loginForm id=loginUserID name=loginUserID><label class=loginLabel for=loginPassword>Password</label><input class=loginForm id=loginPassword name=loginPassword type=password><div class="left message"></div><input class="clickButton submit"value="Sign In"id=popupSignIn type=button><div class=clear></div></form><ul class=loginLinks><li><a class=resetPasswordLink href=#> Reset Password </a></ul></div></div><div id=createWrapper><div class=centerText id=orCreate><hr class=thinLine><h3 class=strikeHeading id=or><em> or </em></h3></div><h2 class="centerText hoverLine"id=createHeading>Create an Account</h2><h4 class="centerText normal"id=itsEasy><em> It's Easy! </em></h4><form class="checkoutRightForm center"id=createAccountForm><div class=confirmInput><label class=loginLabel for=createEmail>Email</label><input class=loginForm id=createEmail name=createEmail><span class=preConfirm id=emailFirstConfirmCorrect> </span></div><div class=confirmInput><label class=loginLabel for=createNickname id=userIDLabel>Nickname</label><input class=loginForm id=createNickname name=createNickname><span class=preConfirm id=userIDConfirmCorrect> </span></div><div class=confirmInput><label class=loginLabel for=createPassword id=passwordLabel>Password</label><input class=loginForm id=createPassword name=createPassword type=password><span class=preConfirm id=passwordFirstConfirmCorrect> </span></div><div class=relative><input class="clickButtonDisabled submit"disabled id=create type=button value=Create><span class="clickable absolute"id=clearCreate> clear form </span><div class=clear></div></div><div class=clear></div><div class=message></div></form></div></div></div><div class="mainNav contentWidth center"><ul><li class=nav id=BrowseTracks><a class=mainNavLink href=https://www.raceoptimal.com/browse> Browse Tracks </a> <div class=subNavWrapper><img alt class=blackTip src=/images/blacktip.png><ul class=subNav id=subBrowseTracks><li><a href=https://www.raceoptimal.com/browse> Current Tracks </a><li><a href=https://www.raceoptimal.com/services/custom_sim/request> Request a Track </a></ul></div><li class=nav id=Services><a class=mainNavLink href=https://www.raceoptimal.com/services/custom_sim> Services </a> <div class=subNavWrapper><img alt class=blackTip src=/images/blacktip.png><ul class=subNav id=subServices><li><a href=https://www.raceoptimal.com/services/software> Software </a><li><a href=https://www.raceoptimal.com/services/custom_sim> Custom Optimization </a></ul></div><li class=nav id=Blog><a class=mainNavLink href=https://www.raceoptimal.com/blog/> Blog </a><li class=nav id=About><a class=mainNavLink href=https://www.raceoptimal.com/about> About </a> <div class=subNavWrapper id=ab><img alt class=blackTip src=/images/blacktip.png><ul class=subNav id=subAbout><li><a href=https://www.raceoptimal.com/about> About Race Optimal </a><li><a href=https://www.raceoptimal.com/about/advertise> Advertise </a><li><a href=https://www.raceoptimal.com/about/al> Who is Al? </a><li><a href=https://www.raceoptimal.com/about/physics> Physics </a><li><a href=https://www.raceoptimal.com/about/founder> Founder </a><li><a href=https://www.raceoptimal.com/about/contact> Contact </a></ul></div></ul><div class=clear></div><div class="instructions customSim"href=https://www.raceoptimal.com/about/services><em> simulate <span style="color:#FF9400; font-size: 1.2em; font-weight: bold;"> your car or bike </span> at any track <br> <a href=https://www.raceoptimal.com/services/custom_sim> <span class="startButton hasArrow"> Get Started <img class=arrow src=/images/home_arrow.png> </span> </a> </em></div></div><script>var vidsIndexes = {
		miataVidPlay: 'Miata',
		gt3rsVidPlay: 'GT3 RS',
		motoVidPlay: 'Moto',
		f1VidPlay: 'F1'
	},
	playID,
	shortName = 'Gateway',
	trackName = 'Gateway Motorsports Park',
	trackID = 238,
	satViews,
	haveSatView = false,
	satViewFlag = false,
	map,
	fullSizeButton,
	fullScreenFlag = false,
	logMapZoomed = false;

//ADMIN FUNCTIONS
 // admin functions

$(document).ready(function() {
	if ($(window).width < 1250) {
		$("#pageTop").css("overflow","hidden");
	}
	
	init_related_tracks();
	init_map_tools();
	init_user_links();
	
	var screen_change_events = "webkitfullscreenchange mozfullscreenchange fullscreenchange MSFullscreenChange";
	$(document).on(screen_change_events, function () {
		fullscreen_change();
	});

	//personal coaching button log
	$('.trackSimAd .startButton').on('click', function() {
		var shortname = document.URL.match('^.*/([a-zA-Z0-9\-]+)$')[1];

		$.post('/api/log/log_personal_coaching_clicked', {shortname: shortname});
	});
}); // track and map functions


var repeatOnXAxis = false,
	maxZoom = 4,

	// LIMITED PANNING TINA IS AMAZING
	// image dimensions
	tileSize = window.devicePixelRatio < 2 ? 256 : 128,
	initialZoom = window.devicePixelRatio < 2 ? 1 : 2,
	imageWidth,
	imageHeight,
	allowedBounds,
	map,
	maxDimPercent = 250,
	center,
	numLines = 4,
	customAd,
	motoAd,
	customAdVisible,
	lightObjs,
	toolsOn = 1;

window.onload = function() {
	map_view_functions();
	
	customAd = $('.customAdContainer');
	motoAd = $('.customAdMoto');
	customAdVisible = false;

	customAd.css({
		'margin-top': -customAd.outerHeight() + 'px',
		'display': 'block'
	});
	
	init_fullscreen();
	init_videos();
	get_sat_views();
} // onload


function map_view_functions() {
	rotate_compass();
	init_map();
	set_map_listeners(map);
	if (haveSatView) $('#satView').attr('title', 'satellite view');
}

function init_map_tools() {
	//legend check box
	$('#mapTools').on('click', function() {
		var $this = $(this);
		if (toolsOn == 0) {
			$('#legendAndControls, #compassContainer, #playButtonContainer, #trackLength').show();
			$this.parent().removeClass("top");
			//map.setOptions({panControl: true,zoomControl: true});
			$this.html("<div>Hide Tools</div>");
			toolsOn = 1;
		}
		else {
			$("#legendAndControls, #compassContainer, #trackLength, #playButtonContainer").hide();
			//map.setOptions({panControl: false, zoomControl: false});
			$this.parent().addClass("top");
			$this.html("<div>Show Tools</div>");
			toolsOn = 0;
		}
	});
	
	$('#satView').on('click', function() {
		if (!satViewFlag) {
			if (haveSatView) {
				init_sat_view_map();
			}
		} else map_view_functions();
	});
}

function init_user_links() {
	//suggest resource link
	var suggestResourceBox = $('#suggestResourceBox');
	$(".suggestResourceLink").on("click", function() {
		suggestResourceBox.toggle();
		if (suggestResourceBox.is(':visible'))
		{
			$('body').scrollTo(additionalResources, 400, {offset: -5});
		}
	});

	//report deleted video link
	$('.missingVideoLink').on('click', function() {
		var $this = $(this);
		var vid = $this.closest('.trackVid');
		
		$this.removeClass('psuedoLink');
		$this.html('<img class="loading" src="/images/loadingsmall.gif" alt="Submitting.." />');
		
		var string = 'shortname=' + encodeURIComponent(shortName) +
			'&trackname=' + encodeURIComponent(trackName) +
			'&vid=' + encodeURIComponent($this.attr('data_vid')) +
			'&url=' + encodeURIComponent(vid.find('iframe').attr('src')) +
			'&desc=' + encodeURIComponent(vid.find('h2').first()[0].innerHTML);
			
		console.log(string);
		$.post('/libraries/report_missing_video.php',
			string,
			function(response) {
				$this.html(response.message);
			},
			'JSON'
		);

		$this.off('click');

	});
	
	//save charCount
	var charCount = $("#charCount"),
		resourceDesc = $("#resourceDesc");
	resourceDesc.on("keyup", function() {
		var numChars = resourceDesc.val().length;
		if (numChars < 0) {
			charCount.html("Need "+(10-numChars) + " more characters (max 100)");
		}
		else {
			charCount.html(500 - resourceDesc.val().length+" characters remaining");
		}
	});
	
	// suggest resource ajax form
	var submitResourceAjaxForm = $('#suggestResourceBox form').ajaxForm({
		submitURL: '/libraries/submit_resource.php',
		disableFormOnSuccess: true,
		submitCallback: function() {
			$('#suggestResourceBox .message').html('<img id="pendingGif" alt="Pending..." src="/images/loadingsmall.gif"/>');
		},
		successCallback: function() {
			// clearForm.trigger('click');
		},
		showErrorFields: true,
		disableSubmitOnSuccess: true,
		showMessage: true,
		extraData: function($this) {
			return $.param({trackName: trackName});
		}
	});
	
	//clear suggest resource form button
	$("#clearSuggestForm").on("click", function() {
		submitResourceAjaxForm.clear_form();
		submitResourceAjaxForm.enable_form();
	});
}

function rotate_compass() {
	//rotate compass
	var degree = -90,
		pi = Math.PI,
		theta = (Math.abs(degree) % 90) * pi / 180,
		compassEl = $("#compass"),
		compassCorrection = Math.floor(1.414 * compassEl.width()/2 * (Math.sin(theta + pi/4) - 1.414/2));
	compassEl.css({
		'-webkit-transform': 'rotate(' + degree + 'deg)',
		'-moz-transform': 'rotate(' + degree + 'deg)',
		'-o-transform': 'rotate(' + degree + 'deg)',
		'-ms-transform': 'rotate(' + degree + 'deg)',
		'transform': 'rotate(' + degree + 'deg)'
	});
	compassEl.parent().show();

	var trackLength = $('#trackLength');
	trackLength.css('left', Math.floor((88 - trackLength.width()) / 2) + 'px');
}

function get_line_name() {
	var lineLights = $('.lineLight'),
		lineNames = ['miata', 'gt3RS', 'moto', 'f1'];
		
	for (var i = 0; i<4; i++) { // which vehicle
		if (!$(lineLights[i]).hasClass('off')) {
			lineName = lineNames[i];
			break;
		}
	}
	if (i == 4) lineName = false; // default
	
	return {name: lineName, number: i};
}

function init_sat_view_map() {
	var lineName = get_line_name().name;
	if (lineName === false) lineName = 'miata';
	
	zoom = 18;
	
	var myOptions = {
		mapTypeId: 'satellite',
		center: new google.maps.LatLng(satViews[lineName].lat[0], satViews[lineName].long[0]),
		zoom: zoom,
		mapTypeControl: false,
		panControl: true,
		zoomControl: true,
		disableDoubleClickZoom: true,
		tilt: 0,
		gestureHandling: 'greedy'
	};
	map = new google.maps.Map(document.getElementById("mapFrame"), myOptions);
	satViewFlag = true;
	var satView = $('#satView');
	satView.addClass('map');
	satView.attr('title', 'back to map view');
	draw_sat_markers();
	
	// line toggle buttons
	var toggles = $('.toggleButton'),
		loadingMarkers = $('#loadingMarkers');
		
	toggles.off('click');
	toggles.on('click', function() {
		var lineNum = parseInt($(this).attr('id'));
		if ($('.lineLight', $(this)).hasClass('off')) {
			showLine(lineNum);
		}
		else {
			$('.lineLight', toggles).addClass('off');
			clear_markers();
			set_cookie();
		}
	});
	
	function showLine(lineNum) {
		$(lightObjs).each(function(index) {$(this).addClass('off');});
		$(lightObjs[lineNum]).removeClass('off');
		draw_sat_markers();
		set_cookie();
	}
}

function init_map() {
	var myOptions = {
		backgroundColor: "#fff",
		// center: window.devicePixelRatio < 2 ? new google.maps.LatLng(0, 0) : new google.maps.LatLng(-13, 15),
		center: {lat: 0, lng: 0},
		zoom: 1,
		minZoom: 1,
		streetViewControl: false,
		mapTypeControl: false,
		panControl: true,
		zoomControl: true,
		disableDoubleClickZoom: true,
		mapTypeControlOptions: {
			mapTypeIds: ["ROTrackMap"],
		},
		gestureHandling: 'greedy'
	};
	
	// Define RO map type
	var ROTrackMapType = new google.maps.ImageMapType({
		getTileUrl: function(coord, zoom) {
			var normalizedCoord = getNormalizedCoord(coord, zoom);
			if(normalizedCoord.x != null && normalizedCoord.y != null) {
				var img = "/images/tiles/" + shortName + "Tiles/" + zoom + "_" + normalizedCoord.x + "_" + normalizedCoord.y + ".jpg";
	  			return img;
			}
			else {
				return "/images/emptyStar.png";
			}
		},
		tileSize: new google.maps.Size(tileSize, tileSize),
		maxZoom: maxZoom,
		name: "Race Optimal - " + trackName,
		radius: 1000
	});
	// ROTrackMapType.projection = new percentProjection();
	
	// Init the map
	map = new google.maps.Map(document.getElementById("mapFrame"), myOptions);
	
	map.mapTypes.set("ROTrackMap", ROTrackMapType);
	map.setMapTypeId("ROTrackMap");
	
	//Define array of overlay lines
	function overlay_lines(vehName) {
		return {
			getTileUrl: function(coord, zoom) {
				var normalizedCoord = getNormalizedCoord(coord, zoom);
				var img = "/images/tiles/" + shortName + vehName + "Tiles/" + zoom + "_" + 
						normalizedCoord.x + "_" + normalizedCoord.y + ".png";
				return img;
			},
			tileSize: new google.maps.Size(tileSize, tileSize),
			opacity: 1.0,
			isPng: true,
			name: 'map',
		}
	}
	overlayLines = [overlay_lines('Miata'), overlay_lines('GT3RS'), overlay_lines('Moto'), overlay_lines('F1')];
	
	//create placeholders for each of the lines
	for (var q = 0; q < overlayLines.length; q++) {
		map.overlayMapTypes.push(null);
	}
	
	//store the order of the lines
	var lineOrder = [1,3,0,2];
	
	//get linesBool from cookie and process
	var linesBool = $.cookie('whichLines');
	if (linesBool==undefined) {
		linesBool = [true, true, true, true];
	}
	else {
		linesBool = linesBool.split(/,/);
		for (q = 0; q < 4; q++) {
			linesBool[q] = linesBool[q] == "true";
		}
	}
	
	//create the lines
	var lineObjs = [
		new google.maps.ImageMapType(overlayLines[0]),
		new google.maps.ImageMapType(overlayLines[1]),
		new google.maps.ImageMapType(overlayLines[2]),
		new google.maps.ImageMapType(overlayLines[3])
	];
	
	//array of lights
	lightObjs = new Array();
	for (var q=0; q<4; q++) {
		lightObjs[q] = $('#light'+q);
	}
	
	//loop through lines and set them
	for (q = 0; q < 4; q++) {
		if (linesBool[lineOrder[q]]) {
			map.overlayMapTypes.setAt(q, lineObjs[lineOrder[q]]);
			lineLight(lineOrder[q],true);
		}
		else {
			lineLight(lineOrder[q],false);
		}
	}
	
	$('#satView').removeClass('map');
	satViewFlag = false;
	
	//toggle buttons
	$('.toggleButton').off('click');
	$('.toggleButton').on("click", function () {
		var lineNum = parseInt($(this).attr('id'));
		if (lightObjs[lineNum].hasClass('off')) {
			showLine(lineNum);
		}
		else {
			hideLine(lineNum);
		}
	});
	
	function hideLine(buttonID) {
		lineLight(buttonID,false);
		map.overlayMapTypes.setAt(lineOrder[numLines-1-buttonID],null);
		set_cookie();
	}
	
	function showLine(buttonID) {
		lineLight(buttonID,true);
		map.overlayMapTypes.setAt(lineOrder[numLines-1-buttonID],lineObjs[buttonID]);
		set_cookie();
	}
	
	function lineLight(lineID, onOff) {
		if (onOff) {
			lightObjs[lineID].removeClass('off'); // turn off
		}
		else {
			lightObjs[lineID].addClass('off'); // turn on
		}
	}
}

function set_cookie() {
	var lineBool = [true, true, true, true];
	for (var q=0; q<4; q++) {
		if ($(lightObjs[q]).hasClass('off'))
			lineBool[q] = false;
	}
	
	$.cookie('whichLines', lineBool.join(','));
}

function set_map_listeners() {
	google.maps.event.addDomListener(map, "idle", function() {
		updateEdge();
		updateScale();
		calculateCenter();
	});
	
	google.maps.event.addDomListener(map, "zoom_changed", function() {
		updateEdge();
		boxIn();
		updateScale();
		log_map_zoomed();
	});
	
	google.maps.event.addDomListener(map, "center_changed", function() {
		boxIn();
	});
	
	google.maps.event.addDomListener(map, "drag", function() {
		boxIn();
	});
	
	google.maps.event.addDomListener(window, "resize", function() {
		updateEdge();
		boxIn();
		map.setCenter(center);
	});
	google.maps.event.addDomListener(map, "dblclick", function() {
		toggleFullscreen(document.getElementById('trackWrapper'));
	});
	
	var panorama = map.getStreetView();
	google.maps.event.addListener(panorama, 'visible_changed', function() {
		draw_sat_markers();
	});
	
	function calculateCenter() {
		center = map.getCenter();
	}
}

function log_map_zoomed() {
	if (logMapZoomed === true)
		return;

	logMapZoomed = true;
	$.post(
		'/api/log/log_map_zoomed',
		{isLegit: 1, shortname: shortName}
	);
}

function updateScale() {
	
	var scaleLineFeet = $("#feetScaleImg"),
		scaleValueFeet = $("#scaleValueFeet"),
		scaleLineMeters = $("#metersScaleImg"),
		scaleValueMeters = $("#scaleValueMeters"),
		maxDimFeet = 2875, //feet
		sizePx = tileSize * Math.pow(2,maxZoom), //px
		scaleLengthsFeet = new Array(50,100,200,500,1000,2000,2000,5280,10560,26400),
		scaleValuesFeet = new Array("50 ft","100 ft","200 ft","500 ft","1000 ft","2000 ft","2000 ft","1 mi","2 mi","5 mi"),
		scaleLengthsMeters = new Array(20,20,50,100,200,500,1000,2000,5000,10000),
		scaleValuesMeters = new Array("20 m","20 m","50 m","100 m","200 m","500 m","1 km","2 km","5 km","10 km"),
		feetPerPx = maxDimFeet / sizePx,
		metersPerPx = feetPerPx * 0.3048,
		newScaleLength,
		newScaleValue;
		
	//feet scale
	var zoomDiff = maxZoom - map.getZoom();
	newScaleValue = scaleLengthsFeet[zoomDiff];
	newScaleLength = newScaleValue / (feetPerPx * Math.pow(2,zoomDiff));
	scaleLineFeet.width(newScaleLength + "px");
	scaleValueFeet.html(scaleValuesFeet[zoomDiff]);

	//meters scale
	newScaleValue = scaleLengthsMeters[zoomDiff];
	newScaleLength = newScaleValue / (metersPerPx * Math.pow(2,zoomDiff));
	scaleLineMeters.width(newScaleLength + "px");
	scaleValueMeters.html(scaleValuesMeters[zoomDiff]);
}

function updateEdge() {
	var imageSize = Math.pow(2,maxZoom+1)*tileSize,
		imageWidth = 4096,
		imageHeight = 2209;

	if (imageWidth > imageHeight) {
		widthPercent = maxDimPercent;
		heightPercent = (imageHeight / imageWidth * 100 + 100)/2;
	}
	else if (imageWidth < imageHeight) {
		heightPercent = maxDimPercent;
		widthPercent = (imageWidth / imageHeight * 100 + 100)/2;
	}
	else {
		heightPercent = maxDimPercent;
		widthPercent = maxDimPercent;
	}
	heightPercent = maxDimPercent;
	widthPercent = maxDimPercent;

	latbound = heightPercent / 2.0;
	lngbound = widthPercent / 2.0;
	
	var bounds = map.getBounds(),
		sw = bounds.getSouthWest(),
		ne = bounds.getNorthEast(),
		width = ne.lng() - sw.lng(),
		height = ne.lat() - sw.lat();
	
	var bottom = Math.min(-latbound + (height / 2), -0.0000001),
		left = Math.min(-lngbound + (width / 2), -0.0000001),
		top = Math.max(latbound - (height / 2), 0.0000001),
		right = Math.max(lngbound - (width / 2), 0.0000001);
	
	allowedBounds = new google.maps.LatLngBounds(
	new google.maps.LatLng(bottom, left), new google.maps.LatLng(top, right));
}

function percentProjection() {
	this.worldOrigin_ = new google.maps.Point(0, 0);
};

percentProjection.prototype.fromLatLngToPoint = function(latlng) {
	var max = tileSize,
		x = max * ((latlng.lng())),
		y = max * ((latlng.lat()));
	console.log("lltp " + latlng.lat() + " " + latlng.lng() + " " + x + " " + y);
	return new google.maps.Point(x, y);
};

percentProjection.prototype.fromPointToLatLng = function(pixel) {
	var max = tileSize,
		lng = (pixel.x / max),
		lat = (pixel.y / max);
	// console.log(pixel.x + " " + pixel.y + " " + lat + " " + lng);
	return new google.maps.LatLng(lat, lng);
};

function init_related_tracks() {
	//set width of related track name wrappers
	var relatedNames = $('.relatedTrackName'),
		relatedNameWrappers = $('.relatedNameWrapper');
	if (relatedNames.length > 0) {
		relatedNameWrappers.css("width", relatedNames[0].scrollWidth + 'px');
	}
	var thisName,
		scrollDist,
		scrollRate,
		scrollTime = 500;
	
	//set up automatic scroll on hover
	$('.relatedTracksLink').hover(
		function() {
			thisName = $('.relatedTrackName',this);
			scrollDist = document.getElementById(thisName.attr('id')).scrollHeight - parseInt(thisName.height());
			scrollRate = scrollTime / scrollDist;
			thisName.animate({scrollTop: scrollDist},scrollTime,'linear');
		},
		function() {
			thisName.stop();
			thisName.animate({scrollTop: 0},Math.round(thisName.scrollTop() * scrollRate),'linear');
		}
	);
}

function init_fullscreen() {
	//handle full screen functionality
	var pagePosition;
	var trackWrap = $("#trackWrapper");
	var fullSizeOn = 0;
	var mapFrame = $("#mapFrame");
	var mapFrameInit = {
		height: mapFrame.height(),
		width: mapFrame.width(),
	}
	var fullSizeInit = parseInt($("#fullSize").css("right"));
	//fullSizeButton
	fullSizeButton = $("#fullSizeButton");
	
	fullSizeButton.on("click",function() {
		toggleFullscreen(trackWrap[0]);
	});

	$('.fullBrowser').on('click', function() {
		full_browser();
	});

	function full_browser()
	{
		pagePosition = window.pageYOffset || document.body.scrollTop;
		var mapTipV = $("#mapTip");
		mapTipV.show();
		mapTipV.delay(3000).fadeOut(1250);
		$("body").css("padding","0 0 0 0");
		var winWidth = $(window).width();
		var winHeight = $(window).height();
		$("body > :not(#trackWrapper)").hide();
		trackWrap.appendTo("body");
		trackWrap.addClass('fullBrowser');
		$('body').addClass('fullBrowser');
		$('html').addClass('fullBrowser');
	}

	var fullscreenElement = document.fullscreenElement || document.mozFullScreenElement || document.webkitFullscreenElement;
} // init_fullscreen()

function toggleFullscreen(element) {
	if (!fullscreenEnabled()) {
		if (element.requestFullscreen) {
			element.requestFullscreen();
		}
		else if (element.mozRequestFullScreen) {
			element.mozRequestFullScreen();
		}
		else if (element.webkitRequestFullscreen) {
			element.webkitRequestFullscreen();
		}
		else if (element.msRequestFullscreen) {
			element.msRequestFullscreen();
		}
	}

	else {
		if (document.exitFullscreen) {
			document.exitFullscreen();
		}
		else if (document.mozCancelFullScreen) {
			document.mozCancelFullScreen();
		}
		else if (document.webkitExitFullscreen) {
			document.webkitExitFullscreen();
		}
	}
} // toggleFullscreen()

function fullscreenEnabled() {
	var fsEn =  document.fullscreenElement || document.mozFullScreenElement || document.webkitFullscreenElement;
	return fsEn;
}

function fullscreen_change() {
	fullScreenFlag = !fullScreenFlag;
	if (satViewFlag) {
		$('#mapFrame').remove();
		delete(map);
		$('#trackWrapper').append('<div id="mapFrame"></div>');
	}
	
	var initMap = setTimeout(function() {
		if (satViewFlag) init_sat_view_map();
	}, 500);

	if (fullScreenFlag) fullSizeButton.addClass('fullSizeMinimize');
	else fullSizeButton.removeClass('fullSizeMinimize');
}

function init_videos() {
	//handle RO Viewer toggling
	var roVidFrame = $("#ROVidFrame"),
		trackHolder = $("#trackHolder"),
		playButtonContainer = $("#playButtonContainer"),
		playButtons = $(".playButton"),
		playLabels = $(".playLabel"),
		playWrappers = $(".playWrapper"),
		thisPlayButton,
		priorPlayID = "",
		roVidVisible = false,
		currOpac,
		roOpacAnimTime = 500,
		animTime = 0,
		vidBaseTime = 400,
		mapOverlay = $('.mapOverlay');

	//race optimal videos
	var roVids = ['<iframe width="853" height="480" src="//www.youtube.com/embed/76c0ztqiGt8?autoplay=1&rel=0" frameborder="0" allowfullscreen></iframe>', '<iframe width="853" height="480" src="//www.youtube.com/embed/RvBAGAlP99A?autoplay=1&rel=0" frameborder="0" allowfullscreen></iframe>', '<iframe width="853" height="480" src="//www.youtube.com/embed/DugkqLNwWNs?autoplay=1&rel=0" frameborder="0" allowfullscreen></iframe>', '<iframe width="853" height="480" src="//www.youtube.com/embed/EXZst59lh-w?autoplay=1&rel=0" frameborder="0" allowfullscreen></iframe>'];
	var customAdVisible = false;
	
	playWrappers.on("click", function() {
		$this = $(this);

		thisPlayButton = $this.children(":first");
		playID = $this.attr("id");


		$.post(
			'/api/log/log_play',
			{
				track: window.shortName,
				vehicle: vidsIndexes[playID]
			},
			function(response) {
				if (window.devMode)
				{
					console.log(response);
				}
				console.log('log play');
			}
		);

		thisPlayButton.addClass("nowPlaying");

		if (!roVidVisible)
		{
			mapOverlay.fadeIn(roOpacAnimTime, function() {
				
				if (playID === 'motoVidPlay' && customAdVisible === false)
				{
					motoAd.show();
				}
				else if (customAdVisible === false)
				{
					motoAd.hide();
				}

				customAdVisible = true;
				$('.customAdContainer').addClass('visible');
				$('.nowPlaying').not($this.children(":first")).removeClass("nowPlaying");
				
				roVidVisible = true;
				
				roVidFrame.stop();
				trackHolder.stop();
				playButtonContainer.stop();
				playLabels.stop();
				playButtons.stop();
				
				roVidFrame.removeClass("offScreen");
				currOpac = parseFloat(roVidFrame.css("opacity"));
				// animTime = (1-currOpac) * vidBaseTime;
				
				//roVidFrame.html(roVids[0])
				playButtonContainer.addClass('movieButton');
				playButtons.addClass('movieButton');
				roVidFrame.css({"opacity":"1"});
				playButtons.removeClass("changePlayButton");
				playWrappers.addClass('movieButton');
				playLabels.show();
				playLabels.addClass('movieButton');
				trackHolder.css({"width":"auto"});
				showVid();
			});
		}

		else
		{
			$('.nowPlaying').not($this.children(":first")).removeClass("nowPlaying");
			showVid();
		}

		function showVid() {
			if (parseFloat(mapOverlay.css('opacity')) > 0)
			{
				mapOverlay.fadeOut(roOpacAnimTime, function() {
					showThisVid();
				});
			}
			else
			{
				showThisVid();
			}

			function showThisVid()
			{
				if (playID != priorPlayID) {
					switch(playID) {
						case "miataVidPlay":
							roVidFrame.html(roVids[0]);
							break;
						case "gt3rsVidPlay":
							roVidFrame.html(roVids[1]);
							break;
						case "motoVidPlay":
							roVidFrame.html(roVids[2]);
							break;
						case "f1VidPlay":
							roVidFrame.html(roVids[3]);
							break;
					}
					priorPlayID = playID;
				}
			}
		}
		
		if (fullSizeOn == 1) 
		{
			roVidFrame.children(":first").css("margin","10px auto 0 auto");
		}
		else 
		{
			roVidFrame.children(":first").css("margin","10px 0 0 10px");
		}
	});
	
	$('#backToMap').on("click",function() {
		mapOverlay.fadeIn(roOpacAnimTime, function() {
			roVidVisible = false;
			
			playButtonContainer.removeClass('movieButton');
			playWrappers.removeClass('movieButton');
			playButtons.removeClass('movieButton');
			playLabels.removeClass('nowPlaying');
			playButtons.addClass("changePlayButton");
							
			currOpac = parseFloat(roVidFrame.css("opacity"));
			animTime = currOpac * vidBaseTime;
			if(toolsOn == 0) {
				$(".playButton").hide();
			}
			playButtons.css({"margin-bottom":"8"});
			playLabels.hide();
			playButtonContainer.removeClass('nowPlaying');
			roVidFrame.css({"opacity":"0"});
			roVidFrame.addClass("offScreen");
			$('#ROVidFrame').children().addClass("center");
			mapOverlay.fadeOut(roOpacAnimTime);
		});
	});
}

function get_sat_views() {
	$.post(
		'/api/sat_views/get_sat_views',
		{
			shortName: shortName,
			vehicles: 'bigFour',
		},
		function (response) {
			if (response !== undefined && response !== null && !response.errorFlag) {
				satViews = response.data;
				haveSatView = true;
				satView = $('#satView');
				satView.removeClass('grey');
				satView.attr('title', 'satellite view');
			}
			else {
				console.log('error retrieving sat views');
			}
		},
		'json'
	);
}

function gas_brake_color(val) {
	var colorVec = [[86, 0, 50],
	            [255, 0, 0],
	            [253, 167, 0],
	            [255, 255, 0],
	            [198, 255, 0],
	            [0, 255, 0],
	            [0, 204, 0]],
	    colorDist = [-1, -2/3, -1/3, 0, 1/3, 2/3, 1];
	    
    for (var i = 1; i < colorDist.length; i++) {
    	if (val <= colorDist[i]) break;
    }
    
    var frac = (val - colorDist[i-1]) / (colorDist[i] - colorDist[i-1]);
    var color = [0, 0, 0];
    for (var j = 0; j<3; j++) {
    	color[j] = colorVec[i-1][j] + (colorVec[i][j] - colorVec[i-1][j]) * frac;
    	color[j] = Math.round(color[j]);
    }
    
    return 'rgb(' + color.join(',') + ')';
}

function draw_sat_markers() {
	var lineName = get_line_name().name;
	clear_markers();
	
	if (lineName !== false) {
		var linePoint, color;
		for (var i=0; i<satViews[lineName].lat.length; i++) {
			color = gas_brake_color(satViews[lineName].gasBrake[i]);
			linePoint = new google.maps.Circle({
				strokeOpacity: 0,
				fillColor: color,
				fillOpacity: 0.95,
				map: map,
				center: {lat: satViews[lineName].lat[i], lng: satViews[lineName].long[i]},
				radius: satViews[lineName].radius
			});
			
			satViews.markers.push(linePoint);
		}
	}
}

function clear_markers() {
	if (Array.isArray(satViews.markers)) {
		for (var i = 0; i < satViews.markers.length; i++) {
			if (satViews.markers[i] !== undefined) satViews.markers[i].setMap(null);
		}
	}
	satViews.markers = [];
}

function getNormalizedCoord(coord, zoom) {
	var y = coord.y,
		x = coord.x;
	
	// tile range in one direction range is dependent on zoom level
	// 0 = 1 tile, 1 = 2 tiles, 2 = 4 tiles, 3 = 8 tiles, etc
	var tileRange = 1 << zoom;
	
	// dont repeat across y-axis (vertically)
	if (y < 0 || y >= tileRange) {
		y = null;
	}
	
	// repeat across x-axis
	if (x < 0 || x >= tileRange) {
		x = null;
	}
	
	return {
		x: x,
		y: y
	};
}

function boxIn() {
	return;
	if (allowedBounds.contains(map.getCenter())) {
		return;
	}
	else {
		var mapCenter = map.getCenter();
		var X = mapCenter.lng();
		var Y = mapCenter.lat();
		
		var AmaxX = allowedBounds.getNorthEast().lng();
		var AmaxY = allowedBounds.getNorthEast().lat();
		var AminX = allowedBounds.getSouthWest().lng();
		var AminY = allowedBounds.getSouthWest().lat();
		
		if (X < AminX) {
		X = AminX;
		}
		if (X > AmaxX) {
		X = AmaxX;
		}
		if (Y < AminY) {
		Y = AminY;
		}
		if (Y > AmaxY) {
		Y = AmaxY;
		}
		
		map.setCenter(new google.maps.LatLng(Y, X));
	}
}</script><div class=trackSection><div id=titleWrapper><div class=glass id=titleBlock><a href=http://www.gatewaymsp.com/ target=_blank> <h1 id=trackTitle>Gateway Motorsports Park</h1> </a><div class=big id=trackLocation>Madison, Illinois, USA</div><a href=https://maps.google.com/maps?q=gateway+motorsports+park&hl=en&ll=38.650511,-90.132093&spn=0.012418,0.026157&sll=41.771312,-22.675781&sspn=92.32351,281.25&t=k&z=16 id=mapLink target=_blank> </a></div><div class=trackSimAd><span> View maps as JPEGs <a href=/maps/Gateway> <b> here </b> </a> </span></div><div class=clear></div></div><div class=topAd></div><div id=trackHolder><div class="overlayb contentWidth resizeWithHard"id=trackWrapper><div class="mapOverlay cover"></div><div id=playButtonContainer><div class=playWrapper id=miataVidPlay><div class="playButton changePlayButton"></div><div class=playLabel>Miata</div></div><div class=playWrapper id=gt3rsVidPlay><div class="playButton changePlayButton"></div><div class=playLabel>GT3 RS</div></div><div class=playWrapper id=motoVidPlay><div class="playButton changePlayButton"></div><div class=playLabel>FZ1</div></div><div class=playWrapper id=f1VidPlay><div class="playButton changePlayButton"></div><div class=playLabel>F1</div></div><div class=playLabel id=backToMap>Back to Map</div></div><div id=ROVidHolder><div class=offScreen id=ROVidFrame></div></div><div class=legendWithVids id=legendAndControls><div id=legend></div><div class="toggleButton miataToggle"id=0><div class=toggleFrame id=frameMiata>MX-5 Miata</div><div class="lineLight off"id=light0></div></div><div class="toggleButton gt3Toggle"id=1><div class=toggleFrame id=frameGT3RS>911 GT3 RS 4.0</div><div class="lineLight off"id=light1></div></div><div class="toggleButton motoToggle"id=2><div class=toggleFrame id=frameMoto>Yamaha FZ1</div><div class="lineLight off"id=light2></div></div><div class="toggleButton f1Toggle"id=3><div class=toggleFrame id=frameF1>F1 Car</div><div class="lineLight off"id=light3></div></div></div><div id=scaleContainer><div id=scaleValueFeet></div><div class=scaleWrapper id=feetScaleWrapper><img alt class=scale id=feetScaleImg src=/images/scales.png></div><div class=scaleWrapper><img alt class=scale id=metersScaleImg src=/images/scales.png></div><div id=scaleValueMeters></div></div><div id=compassContainer><img alt height=65 id=compass src=/images/compass.png width=65></div><div id=trackLength>Length: <br> 1.62 MI <br> 2.61 KM <br class=admin><div class="admin fullBrowser">full browser</div></div><div id=mapToolsWrapper><div id=mapTools><div>Hide Tools</div></div><div class="admin grey"title="satellite view not available"id=satView></div></div><div class=fullSize id=fullSizeButton></div><div class=clear></div><div id=mapTip><span> Double click or press Esc to exit full screen </span></div><div id=loadingMap><img alt="Loading Map..."src=/images/loadingtrack.gif></div><div id=mapFrame></div><div id=loadingMarkers>Loading markers...</div></div></div><div class=customAdContainer><div class=customAdCar><img src=/images/custom-add-car-1.jpg><a href=https://www.raceoptimal.com/api/services/custom_sim> <img src=/images/custom-add-car-1.jpg> </a></div><div class=customAdMoto><img src=/images/custom-add-moto-1.jpg><a href=https://www.raceoptimal.com/api/services/custom_sim> <img src=/images/custom-add-moto-1.jpg> </a></div><div class="customAdCarMobile mobile"><a href=https://www.raceoptimal.com/api/services/custom_sim> <img src=/images/custom-add-car-handheld-1.jpg> </a></div><div class="customAdMotoMobile mobile"><a href=https://www.raceoptimal.com/api/services/custom_sim> <img src=/images/custom-add-moto-handheld-1.jpg> </a></div></div><div id=trackMapLinks><ul><li class=dlLink><a href=/maps/Gateway> Download Maps </a></ul></div><div class=clear></div><div class="mapDisclaimer crimson"><b> *PLEASE NOTE* </b> The racing lines and simulations shown here are based on a simplified analysis that does not incorporate 3D effects such as camber and elevation, track irregularities, or surface conditions. It assumes perfect grip and perfect pilot control. Always temper your approach to a racetrack with common sense and an awareness of your skill level. Be safe out there!</div><div class=clear></div><div class=trackCommentsSection><div class=trackComments><form class=trackCommentForm><label for=user_name>Name <span class=req> * </span></label><input id=user_name name=user_name tabindex=1><input id=user_id name=user_id type=hidden><label for=email>Email</label><input id=email name=email><input id=parent name=parent type=hidden><input id=comment_tid name=comment_tid type=hidden value=238><label for=user_qual>Credentials (e.g. ex-pro racer, rode this track a hundred times, played a video game once)</label><input id=user_qual name=user_qual tabindex=2><label for=content>Comment</label><textarea id=content name=content rows=6 tabindex=3></textarea><button class=submit tabindex=4>Submit</button><div class=commentTagsSection><span class="psuedoLink commentTagsLink"> tags </span><span class=commentTags> Tags allowed: &LTb> &LTem> &LTstrike> &LTa> </span></div><div class=message></div></form></div></div><div class=hidden><div id=mapDownloads><div id=mapDownloadsLeft><div class=mapsTrackTitle>Gateway Motorsports Park</div><img alt id=ROBadgeStripe src=/images/robadgestripe.png><div id=subtitleDiv><hr><h3 id=trackDLSubtitle><em> Map Downloads </em></h3></div><div id=mapTables><div class=mapTable id=freeMaps><h3 class=dlHeading>Free Downloads</h3><table><tbody><tr><th>Vehicle<th>Size<th>Pixels<th><tr><td>Blank Map<td><b> Large </b><td>4096 x 2209<td><a title="0.42 MB MB"class=dlLink href=https://www.raceoptimal.com/libraries/downloadmap.php?fileName=GatewayBlankMap.jpg&trackID=238&vehName=BlankMap&shortName=Gateway&mapSize=Large&fileExtension=.jpg> Download </a><tr><td>Big Four<td><b> Large </b><td>4096 x 2209<td><a title="0.82 MB MB"class=dlLink href=https://www.raceoptimal.com/libraries/downloadmap.php?fileName=GatewayBigFour.jpg&trackID=238&vehName=BigFour&shortName=Gateway&mapSize=Large&fileExtension=.jpg> Download </a><tr><td>Mazda MX-5 Miata<td><b> Large </b><td>4096 x 2209<td><a title="0.64 MB MB"class=dlLink href=https://www.raceoptimal.com/libraries/downloadmap.php?fileName=GatewayMiata.jpg&trackID=238&vehName=Miata&shortName=Gateway&mapSize=Large&fileExtension=.jpg> Download </a><tr><td>911 GT3 RS<td><b> Large </b><td>4096 x 2209<td><a title="0.61 MB MB"class=dlLink href=https://www.raceoptimal.com/libraries/downloadmap.php?fileName=GatewayGT3RS.jpg&trackID=238&vehName=GT3RS&shortName=Gateway&mapSize=Large&fileExtension=.jpg> Download </a><tr><td>Motorcycle<td><b> Large </b><td>4096 x 2209<td><a title="0.67 MB MB"class=dlLink href=https://www.raceoptimal.com/libraries/downloadmap.php?fileName=GatewayMoto.jpg&trackID=238&vehName=Moto&shortName=Gateway&mapSize=Large&fileExtension=.jpg> Download </a><tr><td>F1 Car<td><b> Large </b><td>4096 x 2209<td><a title="0.62 MB MB"class=dlLink href=https://www.raceoptimal.com/libraries/downloadmap.php?fileName=GatewayF1.jpg&trackID=238&vehName=F1&shortName=Gateway&mapSize=Large&fileExtension=.jpg> Download </a><tr><td>Blank Map<td>Small<td>2000 x 1079<td><a title="0.19 MB MB"class=dlLink href=https://www.raceoptimal.com/libraries/downloadmap.php?fileName=GatewayBlankMapSmall.jpg&trackID=238&vehName=BlankMap&shortName=Gateway&mapSize=Small&fileExtension=.jpg> Download </a><tr><td>Big Four<td>Small<td>2000 x 1079<td><a title="0.35 MB MB"class=dlLink href=https://www.raceoptimal.com/libraries/downloadmap.php?fileName=GatewayBigFourSmall.jpg&trackID=238&vehName=BigFour&shortName=Gateway&mapSize=Small&fileExtension=.jpg> Download </a><tr><td>Mazda MX-5 Miata<td>Small<td>2000 x 1079<td><a title="0.3 MB MB"class=dlLink href=https://www.raceoptimal.com/libraries/downloadmap.php?fileName=GatewayMiataSmall.jpg&trackID=238&vehName=Miata&shortName=Gateway&mapSize=Small&fileExtension=.jpg> Download </a><tr><td>911 GT3 RS<td>Small<td>2000 x 1079<td><a title="0.28 MB MB"class=dlLink href=https://www.raceoptimal.com/libraries/downloadmap.php?fileName=GatewayGT3RSSmall.jpg&trackID=238&vehName=GT3RS&shortName=Gateway&mapSize=Small&fileExtension=.jpg> Download </a><tr><td>Motorcycle<td>Small<td>2000 x 1079<td><a title="0.29 MB MB"class=dlLink href=https://www.raceoptimal.com/libraries/downloadmap.php?fileName=GatewayMotoSmall.jpg&trackID=238&vehName=Moto&shortName=Gateway&mapSize=Small&fileExtension=.jpg> Download </a><tr><td>F1 Car<td>Small<td>2000 x 1079<td><a title="0.29 MB MB"class=dlLink href=https://www.raceoptimal.com/libraries/downloadmap.php?fileName=GatewayF1Small.jpg&trackID=238&vehName=F1&shortName=Gateway&mapSize=Small&fileExtension=.jpg> Download </a></table></div></div></div></div><div id=checkoutContent></div><div id=vidLegend><img alt="Map Legend"id=vidLegendPic src=/images/vidlegend.png></div></div><div id=tableExplanation><div class=centerContent id=explainHeading>Lap Times Explained</div><p><b> Each column represents a vehicle driven on different racing lines. </b> For example, the first row of the first column is the time for the Miata driven on its own line. The second row represents the Miata driven on the Porsche's racing line, and so on. It is expected that when a vehicle is driven on its own line (large font) the lap time will be the quickest. Otherwise, <a href=https://raceoptimal.com/about/Al> Al </a> has not done his job very well.</div><div id=lapTimes><div class=centerImg id=optimalLapTimes></div><table id=timeTable><tbody><tr><th><th class=greyBG colspan=4>Vehicle<tr><th>Line<th class=greyBG>Miata<th class=greyBG>GT3 RS<th class=greyBG>Moto<th class=greyBG>F1 <em class=normal> beta </em><tr id=MiataRow><td>Miata<td class=diag>1'10.11<td>+0.46<td>+0.48<td>+0.36<tr id=GT3Row><td>GT3 RS<td>+0.30<td class=diag>1'01.88<td>-0.12<td>+0.61<tr id=MotoRow><td>Moto<td>+0.76<td>+0.24<td class=diag>1'04.83<td>+1.43<tr id=F1Row><td>F1<td>+0.38<td>+0.72<td>+0.72<td class=diag>40.18</table></div><div class=clear></div><div class=clear></div></div><div class=clear></div><div id=trackDiscussion><div class=glass id=relatedTracks><div id=trackLinks><div class=relatedLabel id=affiliatedCircuits></div><div id=relatedTracksContainer><p>No affiliated circuits.</div></div><hr><div class=relatedLabel id=additionalResources></div><ul id=furtherResources>No additional resources at this time. <br></ul><div id=suggestResource><span class=suggestResourceLink> Suggest a resource or video </span></div><div id=goArrow></div><div class=clear></div><div class=clear></div><div id=suggestResourceBox><h3 class=centerContent>Gateway Motorsports Park</h3><form><span id=clearSuggestForm> clear form </span><label class=input for=name id=resourceNameLabel>Name</label><input class="input inputBox"id=name name=name><label class=input for=email id=resourceEmailLabel>Email</label><input class="input inputBox"id=email name=email><label class=input for=resource>Link to resource <span class=req> * </span></label><input class="input inputBox"id=resource name=resource><label class=input for=desc>Short description of resource and of yourself</label><textarea class="input inputBox"id=desc name=desc></textarea><span id=charCount> max 500 characters </span><input class="submit suggestButton"id=suggestResourceButton name=suggestResourceButton onclick type=button value=Submit><div class=message id=submitResourceResult></div></form><div id=resourceGuidelines><h3>Resource Guidelines</h3> You are welcome to suggest a resource for Gateway Motorsports Park. Valuable resources include: <ul><li>YouTube videos<li>Websites<li>PDFs</ul> Resources which are excellent demonstrations or discussions of the racing line at this circuit will be added to the page. Thank you for contributing!</div></div></div><div class=trackWriteup><h1 class=writeupTitle>The Racing Line at Gateway Motorsports Park</h1><p>This track is currently map only. You can help complete the article by <span class="psuedoLink suggestResourceLink"> suggesting a resource or video </span> . Thank you!</div><div class=clear></div><script>$(document).ready(function () {
					$("#bottomMetal").removeClass("bottomMetalSquareTop");
				});</script></div></div><div class=clear></div></div><div class="footer centerText">© October 2021 Race Optimal</div>