/*
	Used to dynamically change images on the site.
*/
function tri247_user_changeimage(image, url)
{
	image.src = url;
}


/*
	Used to dynamically change images on the site.
*/
function tri247_user_changeimageid(image_id, url)
{
	document.getElementById(image_id).src = url;
}


/*
	Sends an HTTP request and returns the resulting XML object.
*/
function tri247_user_request(url, parameters)
{
	// Send the HTTP request.
	if (window.XMLHttpRequest) 
	{
		request = new XMLHttpRequest();
		request.open("POST", url, false);
		request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
		request.send(parameters);
	}
	else if (window.ActiveXObject) 
	{
		request = new ActiveXObject("Microsoft.XMLHTTP");
		request.open("POST", url, false);
		request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
		request.send(parameters);
	}

	// Process response on a successful return.
	if (request.status == 200)
	{
		var xml_response = '';
		if (window.ActiveXObject) 
		{
			xml_response = new ActiveXObject("Microsoft.XMLDOM");
			xml_response.loadXML(request.responseText);
		}
		else
		{
			xml_response = (new DOMParser()).parseFromString(request.responseText, "text/xml");
		}
		
		return xml_response;
	}
}


/*
	Mazda Performance Predictor
*/
var performance_ratio_yards_to_metres = 0.9144;
var performance_ratio_km_to_metres = 1000;
var performance_ratio_miles_to_metres = 1609;
function performance_calculate_get_metres(distance_n, distance_units)
{
	if (distance_units == "metres")
	{
		return distance_n;
	}
	else if (distance_units == "yards")
	{
		return distance_n * performance_ratio_yards_to_metres;
	}
	else if (distance_units == "km")
	{
		return distance_n * performance_ratio_km_to_metres;
	}
	else if (distance_units == "miles")
	{
		return distance_n * performance_ratio_miles_to_metres;
	}
	else
	{
		alert('Performance Conversion Error');
		return 0;
	}
}
function performance_calculate_get_seconds(time_hours, time_minutes, time_seconds)
{
	var seconds = 0;
	seconds += Math.round(time_seconds);
	seconds += Math.round(time_minutes * 60);
	seconds += Math.round(time_hours * 60 * 60);
	return seconds;
}
function performance_calculate_get_time(time_seconds)
{
	var hours = Math.floor(time_seconds / 3600);
	time_seconds = time_seconds - (hours * 3600);
	var minutes = Math.floor(time_seconds / 60);
	time_seconds = time_seconds - (minutes * 60);
	var seconds = time_seconds;
	if (String(hours).length == 1)
		hours = '0'+hours;
	if (String(minutes).length == 1)
		minutes = '0'+minutes;
	if (String(seconds).length == 1)
		seconds = '0'+seconds;
	return hours+":"+minutes+":"+seconds;
}
function performance_calculate()
{
	var distance_swim_array = document.getElementById('area_performance_swim_distance').value.split('_');
	var distance_swim_n = distance_swim_array[0];
	var distance_swim_units = distance_swim_array[1];
	var distance_swim = performance_calculate_get_metres(distance_swim_n, distance_swim_units);
	var seconds_swim = performance_calculate_get_seconds(document.getElementById('area_performance_swim_hours').value, document.getElementById('area_performance_swim_minutes').value, document.getElementById('area_performance_swim_seconds').value)
	
	var distance_bike_array = document.getElementById('area_performance_bike_distance').value.split('_');
	var distance_bike_n = distance_bike_array[0];
	var distance_bike_units = distance_bike_array[1];
	var distance_bike = performance_calculate_get_metres(distance_bike_n, distance_bike_units);
	var seconds_bike = performance_calculate_get_seconds(document.getElementById('area_performance_bike_hours').value, document.getElementById('area_performance_bike_minutes').value, document.getElementById('area_performance_bike_seconds').value)
	
	var distance_run_array = document.getElementById('area_performance_run_distance').value.split('_');
	var distance_run_n = distance_run_array[0];
	var distance_run_units = distance_run_array[1];
	var distance_run = performance_calculate_get_metres(distance_run_n, distance_run_units);
	var seconds_run = performance_calculate_get_seconds(document.getElementById('area_performance_run_hours').value, document.getElementById('area_performance_run_minutes').value, document.getElementById('area_performance_run_seconds').value)
	
	var race_format = document.getElementById('area_performance_race_format').value;

	if (seconds_swim == 0 || seconds_bike == 0 || seconds_run == 0)
	{
		alert('Please enter a time for all three stages');
	}
	else
	{
		var xml_response = tri247_user_request('user_predictor.ajax', 'distance_swim='+distance_swim+'&seconds_swim='+seconds_swim+'&distance_bike='+distance_bike+'&seconds_bike='+seconds_bike+'&distance_run='+distance_run+'&seconds_run='+seconds_run+'&race_format='+race_format);
		var predictions = xml_response.getElementsByTagName('prediction');
		for (var i = 0; i < predictions.length && i == 0; i ++)
		{
			var time_total = predictions[i].attributes[0].value;
			var movie = new SWFObject("predictor.swf?time_total="+performance_calculate_get_time(time_total), "movie_predictor", "262", "83", "9", "#8ED4F7");
			movie.addParam("scale", "noscale");
			movie.addParam("wmode", "transparent");
			movie.write("area_predictor")
		}
	}
	
	return null;
}

