var local_dir = "giro-d-italia";
dashboard_title = "Giro d Italia 2010";
var dashboard_link = "http://www.steephill.tv/"+local_dir;
var event_badge = "/2010/giro-d-italia/race-summary-banner.jpg";
var num_stages = 21;
var has_prologue = false;
var start_date = new Date(2009,4,8);
var distance_units = "km";
var race_country = "Italy";
var race_time_utc_offset = 2;
var race_time_zone = "CEST";
var thumbs_dir = "/2010/giro-d-italia/photos/thumbs/";
var base_urls =  new Array();
base_urls["profile"] = "http://www.gazzetta.it/Speciali/Giroditalia/2010/pdf/altimetrie/alt_{$1}.pdf";
base_urls["map"] = "http://www.gazzetta.it/Speciali/Giroditalia/2010/pdf/planimetrie/pla_{$1}.pdf", 
base_urls["timetable"] = "http://www.gazzetta.it/Speciali/Giroditalia/2010/pdf/cronotabelle/crono_{$1}.pdf";
base_urls["preview"] = "/2010/giro-d-italia/previews-results/{$1}";

base_urls["results"] = "/giro-d-italia/#{$1}-results-2010";

base_urls["photos"] = "/2010/giro-d-italia/photos/{$1}";

base_urls["video"] = "http://player.sbs.com.au/cycling#/cycling_08/race_highlights/race_highlights/playlist/{$1}";

base_urls["evideo"] = "/players/eurosport/v1/?title=Stage-{$0}-Highlights-"+escape(dashboard_title)+"&id={$1}";

base_urls["yt_video"] = "/players/youtube/?title=giro-d-italia-stage-{$0}-recap&id={$1}&w=560";


var base_urls_list = ["profile", "map", "timetable", "preview", "results", "photos", "video"];

weather_base_url="http://www.wunderground.com/cgi-bin/findweather/getForecast?query={$1}&wuSelect=WEATHER";

bike_map_base_url="http://www.bikemap.net/route/{$1}";

var anchor_extras = new Array();
anchor_extras["profile"] = "target=\"_blank\"";
//"onclick=\"click_track_explicit(this.href);NewWindow(this.href,'photo player',710,550,'no'); return false;\"";

anchor_extras ["map"] =  "target=\"_blank\"";

anchor_extras ["yt_video"] = "onclick=\"click_track_explicit(this.href);NewWindow(this.href, 'youtube', 575,355, 'no'); return false;\"";

anchor_extras ["evideo"] = "onclick=\"click_track_explicit(this.href);NewWindow(this.href, \'eurosport\',530,434, \'no\'); return false;\"";

anchor_extras ["video"] = "onclick=\"click_track_explicit(this.href);NewWindow(this.href, 'sbs',  932, 637, 'yes'); return false;\" title=\"sbs\"";


var stages = new Array(); 

var stage = {"stage": 1, "date": new Date(2010,4,8,11,0,0), "distance": 8.4, "type": "TT", "start_host": "Amsterdam", "start_country": "NL", "start_url": "", "finish_host": "", "finish_country": "", "finish_url": "", "start_time": "14:00", "video_time": "15:00", "finish_time": "17:45", "start_weather": "", "finish_weather": "", "bike_map": 342163,"profile": "01", "finish": "", "map": "01", "timetable": "01", "preview": "stage-01/#preview", "results": "http://www.steephill.tv/2010/giro-d-italia/previews-results/stage-01/", "photos": "stage-01/", "rvideo": "http://www.raisport.rai.it/dl/RaiTV/programmi/media/ContentItem-e693e790-115f-4a3d-9d99-4df512828c9b-raisport.html", "ytvideo": "0rZ8SIF5eBI", "evideo":"19657331", "video": "2010-Giro-stage-1-Amsterdam/"};
stages.push(stage);

var stage = {"stage": 2, "date": new Date(2010,4,9,11,0,0), "distance": 209, "type": "flat", "start_host": "Amsterdam", "start_country": "NL", "start_url": "", "finish_host": "Utrecht", "finish_country": "NL", "finish_url": "http://en.wikipedia.org/wiki/Utrecht_(city)", "start_time": "12:15", "video_time": "14:30", "finish_time": "17:15", "start_weather": "", "finish_weather": "", "bike_map": 342211,"profile": "02", "finish": "", "map": "02", "timetable": "02", "preview": "stage-02/", "results": "http://www.steephill.tv/2010/giro-d-italia/previews-results/stage-02/", "photos": "stage-02/", "video": "2010-Giro-stage-2-Utrecht-/", "evideo": "19667785"};
stages.push(stage);

var stage = {"stage": 3, "date": new Date(2010,4,10,11,0,0), "distance": 224, "type": "flat", "start_host": "Amsterdam", "start_country": "NL", "start_url": "", "finish_host": "Middelburg", "finish_country": "NL", "finish_url": "", "start_time": "11:15", "video_time": "15:00", "finish_time": "16:42", "start_weather": "", "finish_weather": "", "bike_map": 342243,"profile": "03", "finish": "", "map": "03", "timetable": "03", "preview": "stage-03/", "results": "http://www.steephill.tv/2010/giro-d-italia/previews-results/stage-03/", "photos": "stage-03/", "video": "2010-Giro-stage-3-Middelburg/", "evideo": "19698766"};
stages.push(stage);

var stage = {"stage": "R", "date": new Date(2010,4,11), "distance": 0, "type": "", "start_host": "Savigliano", "start_url": ""};
stages.push(stage);

var stage = {"stage": 4, "date": new Date(2010,4,12,11,0,0), "distance": 32.5, "type": "TTT", "start_host": "Savigliano", "start_country": "", "start_url": "", "finish_host": "Cuneo", "finish_country": "", "finish_url": "", "start_time": "14:45", "video_time": "15:05", "finish_time": "17:15", "start_weather": "", "finish_weather": "", "bike_map": 343927,"profile": "04", "finish": "", "map": "04", "timetable": "04", "preview": "stage-04/", "results": "http://www.steephill.tv/2010/giro-d-italia/previews-results/stage-04/", "photos": "stage-04/", "ytvideo": "C9lA5FKiYrA", "vrideo": "p2KRdNt2BZg", "evideo": "19801626", "video": "2010-Giro-stage-4-Cuneo/"};
stages.push(stage);


var stage = {"stage": 5, "date": new Date(2010,4,13,11,0,0), "distance": 162, "type": "mostly flat", "start_host": "Novara", "start_country": "", "start_url": "", "finish_host": "Novi Ligure", "finish_country": "", "finish_url": "", "start_time": "13:15", "video_time": "15:15", "finish_time": "17:12", "start_weather": "", "finish_weather": "", "bike_map": 343942,"profile": "05", "finish": "", "map": "05", "timetable": "05", "preview": "stage-05/", "results": "http://www.steephill.tv/2010/giro-d-italia/previews-results/stage-05/", "photos": "stage-05/", "ytvideo": "p2KRdNt2BZg", "video": "2010-Giro-stage-5-Novi-Ligure/"};
stages.push(stage);

var stage = {"stage": 6, "date": new Date(2010,4,14,11,0,0), "distance": 166, "type": "hilly", "start_host": "Fidenza", "start_country": "", "start_url": "", "finish_host": "Carrara", "finish_country": "", "finish_url": "", "start_time": "12:50", "video_time": "15:15", "finish_time": "17:24", "start_weather": "", "finish_weather": "", "bike_map": 344016,"profile": "06", "finish": "", "map": "06", "timetable": "06", "preview": "stage-06/", "results": "http://www.steephill.tv/2010/giro-d-italia/previews-results/stage-06/", "photos": "stage-06/", "video": "2010-Giro-stage-6-Marina-di-Carrara/"};
stages.push(stage);

var stage = {"stage": 7, "date": new Date(2010,4,15,11,0,0), "distance": 220, "type": "hilly", "start_host": "Carrara", "start_country": "", "start_url": "", "finish_host": "Montalcino", "finish_country": "", "finish_url": "", "start_time": "11:35", "video_time": "14:40", "finish_time": "17:16", "start_weather": "", "finish_weather": "", "bike_map": 344086,"profile": "07", "finish": "", "map": "07", "timetable": "07", "preview": "stage-07/", "results": "http://www.steephill.tv/2010/giro-d-italia/previews-results/stage-07/", "photos": "stage-07/", "video": "2010-Giro-stage-7-Montalcino/"};
stages.push(stage);

var stage = {"stage": 8, "date": new Date(2010,4,16,11,0,0), "distance": 189, "type": "Mountain", "start_host": "Chianciano Terme", "start_country": "", "start_url": "", "finish_host": "Monte Terminillo", "finish_country": "", "finish_url": "", "start_time": "12:25", "video_time": "15:00", "finish_time": "17:15", "start_weather": "http://www.wunderground.com/cgi-bin/findweather/getForecast?query=Montepulciano", "finish_weather": "http://www.wunderground.com/cgi-bin/findweather/getForecast?query=rieti", "bike_map": 344117,"profile": "08", "finish": "", "map": "08", "timetable": "08", "preview": "stage-08/", "results": "http://www.steephill.tv/2010/giro-d-italia/previews-results/stage-08/", "photos": "stage-08/", "video": "2010-Giro-stage-8-Monte-Terminillo/"};
stages.push(stage);

var stage = {"stage": 9, "date": new Date(2010,4,17,11,0,0), "distance": 188, "type": "Flat", "start_host": "Frosinone", "start_country": "", "start_url": "", "finish_host": "Cava de%27 Tirreni", "finish_country": "", "finish_url": "http://en.wikipedia.org/wiki/Bitonto", "start_time": "12:40", "video_time": "14:40", "finish_time": "17:00", "start_weather": "", "finish_weather": "http://www.wunderground.com/cgi-bin/findweather/getForecast?query=Salerno,%20italy&wuSelect=WEATHER", "bike_map": 344121,"profile": "09", "finish": "", "map": "09", "timetable": "09", "preview": "stage-09/", "results": "http://www.steephill.tv/2010/giro-d-italia/previews-results/stage-09/", "photos": "stage-09/", "video": "2010-Giro-stage-9-Cava-de-Tirreni/"};
stages.push(stage);


var stage = {"stage": 10, "date": new Date(2010,4,18,11,0,0), "distance": 230, "type": "rolling", "start_host": "Avellino", "start_country": "", "start_url": "", "finish_host": "Bitonto", "finish_country": "", "finish_url": "", "start_time": "11:20", "video_time": "14:40", "finish_time": "17:13", "start_weather": "", "finish_weather": "", "bike_map": 344125,"profile": "series", "finish": "", "map": "series", "timetable": "series", "preview": "stage-10/", "results": "http://www.steephill.tv/2010/giro-d-italia/previews-results/stage-10/", "photos": "stage-10/", "video": "2010-Giro-stage-10-Bitonto/"};
stages.push(stage);

var stage = {"stage": 11, "date": new Date(2010,4,19,11,0,0), "distance": 262, "type": "med. mtn", "start_host": "Lucera", "start_country": "", "start_url": "", "finish_host": "L%27Aquila", "finish_country": "", "finish_url": "", "start_time": "10:15", "video_time": "14:40", "finish_time": "17:19", "start_weather": "", "finish_weather": "", "bike_map": 344322,"profile": "series", "finish": "", "map": "series", "timetable": "series", "preview": "stage-11/", "results": "11", "photos": "stage-11/", "video": "2010-Giro-stage-11-L-Aquila/"};
stages.push(stage);

var stage = {"stage": 12, "date": new Date(2010,4,20,11,0,0), "distance": 191, "type": "flat", "start_host": "Citt%E0%20Sant%27Angelo", "start_country": "", "start_url": "", "finish_host": "Porto Recanati", "finish_country": "", "finish_url": "", "start_time": "12:05", "video_time": "14:40", "finish_time": "17:14", "start_weather": "", "finish_weather": "http://www.wunderground.com/cgi-bin/findweather/getForecast?query=Porto%20Recanati,%20italy&wuSelect=WEATHER", "bike_map": 344332,"profile": "series", "finish": "", "map": "series", "timetable": "series", "preview": "stage-12/", "results": "12", "photos": "stage-12/", "video": "2010-Giro-stage-12-Porto-Recanti/"};
stages.push(stage);

var stage = {"stage": 13, "date": new Date(2010,4,21,11,0,0), "distance": 222, "type": "flat/hilly", "start_host": "Porto Recanati", "start_country": "", "start_url": "", "finish_host": "Cesenatico", "finish_country": "", "finish_url": "", "start_time": "11:30", "video_time": "15:00", "finish_time": "17:10", "start_weather": "http://www.wunderground.com/cgi-bin/findweather/getForecast?query=Porto%20Recanati,%20italy&wuSelect=WEATHER", "finish_weather": "", "bike_map": 344365,"profile": "series", "finish": "", "map": "series", "timetable": "series", "preview": "stage-13/", "results": "13", "photos": "stage-13/", "video": "2010-Giro-stage-13-Cesenatico/"};
stages.push(stage);

var stage = {"stage": 14, "date": new Date(2010,4,22,11,0,0), "distance": 201, "type": "Mountain", "start_host": "Ferrara", "start_country": "", "start_url": "", "finish_host": "Asolo", "finish_country": "", "finish_url": "", "start_time": "12:00", "video_time": "15:00", "finish_time": "17:15", "start_weather": "", "finish_weather": "", "bike_map": 344431,"profile": "series", "finish": "", "map": "series", "timetable": "series", "preview": "stage-14/", "results": "14", "photos": "stage-14/", "video": "2010-Giro-stage-14-Asolo/"};
stages.push(stage);

var stage = {"stage": 15, "date": new Date(2010,4,23,11,0,0), "distance": 222, "type": "Mountain", "start_host": "Mestre", "start_country": "", "start_url": "", "finish_host": "Monte Zoncolan", "finish_country": "", "finish_url": "", "start_time": "11:25", "video_time": "14:40", "finish_time": "17:25", "start_weather": "http://www.wunderground.com/global/stations/16105.html", "finish_weather": "http://www.mountain-forecast.com/peaks/Monte-Zoncolan/metar", "bike_map": 344498,"profile": "series", "finish": "", "map": "series", "timetable": "series", "preview": "stage-15/", "results": "15", "photos": "stage-15/", "video": "2010-Giro-stage-15-Zoncolan/"};
stages.push(stage);

var stage = {"stage": "R", "date": new Date(2010,4,24), "distance": 0, "type": "", "start_host": "Friuli", "start_url": ""};
stages.push(stage);

var stage = {"stage": 16, "date": new Date(2010,4,25,11,0,0), "distance": 12.8, "type": "TT", "start_host": "S. Vigilio di Marebbe", "start_country": "", "start_url": "http://www.sanvigilio.com/en/information/index.asp", "finish_host": "Plan de Corones", "finish_country": "", "finish_url": "http://www.velonews.com/article/76720", "start_time": "10:00", "video_time": "14:40", "finish_time": "17:15", "start_weather": "http://www.sanvigilio.com/en/information/weather.asp", "finish_weather": "http://www.onthesnow.com/italy/plan-de-corones-kronplatz/weather.html", "bike_map": 344513,"profile": "series", "finish": "", "map": "series", "timetable": "series", "preview": "stage-16/", "results": "16", "photos": "stage-16/", "video": "2010-Giro-stage-16-Plan-de-Corones/"};
stages.push(stage);

var stage = {"stage": 17, "date": new Date(2010,4,26,11,0,0), "distance": 173, "type": "med mtn", "start_host": "Brunico", "start_country": "", "start_url": "", "finish_host": "Pejo Terme", "finish_country": "", "finish_url": "http://www.pejoterme.it/", "start_time": "12:50", "video_time": "14:40", "finish_time": "17:35", "start_weather": "", "finish_weather": "http://www.skiresorts-test.com/weather/pejo.html", "bike_map": 344561,"profile": "series", "finish": "", "map": "series", "timetable": "series", "preview": "stage-17/", "results": "17", "photos": "stage-17/", "video": "2010-Giro-stage-17-Pejo-Terme/"};
stages.push(stage);

var stage = {"stage": 18, "date": new Date(2010,4,27,11,0,0), "distance": 151, "type": "flat", "start_host": "Levico Terme", "start_country": "", "start_url": "", "finish_host": "Brescia", "finish_country": "", "finish_url": "", "start_time": "13:55", "video_time": "14:40", "finish_time": "17:14", "start_weather": "http://www.foreca.com/Italy/Levico_Terme", "finish_weather": "", "bike_map": 344577,"profile": "series", "finish": "", "map": "series", "timetable": "series", "preview": "stage-18/", "results": "18", "photos": "stage-18/", "video": "2010-Giro-stage-18-Brescia/"};
stages.push(stage);

var stage = {"stage": 19, "date": new Date(2010,4,28,11,0,0), "distance": 195, "type": "Mountain", "start_host": "Brescia", "start_country": "", "start_url": "", "finish_host": "Aprica", "finish_country": "", "finish_url": "", "start_time": "12:10", "video_time": "14:40", "finish_time": "17:45", "start_weather": "", "finish_weather": "", "bike_map": 344599,"profile": "series", "finish": "", "map": "series", "timetable": "series", "preview": "stage-19/", "results": "19", "photos": "stage-19/", "video": "2010-Giro-stage-19-Aprica/"};
stages.push(stage);

var stage = {"stage": 20, "date": new Date(2010,4,29,11,0,0), "distance": 178, "type": "Mountain", "start_host": "Bormio", "start_country": "", "start_url": "", "finish_host": "Ponte di Legno", "finish_country": "", "finish_url": "", "start_time": "12:20", "video_time": "14:40", "finish_time": "17:50", "start_weather": "", "finish_weather": "http://www.wunderground.com/cgi-bin/findweather/getForecast?query=Ponte%20di%20Legno,%20italy&wuSelect=WEATHER", "bike_map": 344604,"profile": "series", "finish": "", "map": "series", "timetable": "series", "preview": "stage-20/", "results": "20", "photos": "stage-20/", "video": "2010-Giro-stage-20-Passa-del-Tonale/"};
stages.push(stage);

var stage = {"stage": 21, "date": new Date(2010,4,30,11,0,0), "distance": 15.3, "type": "TT", "start_host": "Verona", "start_country": "", "start_url": "", "finish_host": "", "finish_country": "", "finish_url": "", "start_time": "14:00", "video_time": "15:00", "finish_time": "17:20", "start_weather": "", "finish_weather": "", "bike_map": 344611,"profile": "series", "finish": "", "map": "series", "timetable": "series", "preview": "stage-21/", "results": "21", "photos": "stage-21/", "video": "2010-Giro-stage-21-Verona/"};
stages.push(stage);



function start_finish_details(stage_num) {
	var i = lookup_stage_offet(stage_num);
	//document.write('<table  border="0" cellspacing="0" cellpadding="0" align="right" style="margin-left:20px" width="340">');
}


function formatRaceSummaryTable() {
	//document.write('<table  border="0" cellspacing="0" cellpadding="0" align="right" style="margin-left:20px" width="340">');
	document.write('<tr><td colspan=3><a name="summary"><img src="');
	document.write(event_badge);
	document.write('" align="left" width="340" xheight="100" style="margin-right:0px;border-bottom:1px solid white"/><\/td><\/tr>');
	
	
	var total_distance = 0;
	for (var i=0; i < stages.length; i++) {
		// host start and host finish row
		document.write('<tr class="stage-date"><td class="num">'); 
		document.write(stages[i].stage);
		document.write('<\/td><td class="date">');
		document.write(days[(stages[i].date.getDay())%7]);
		document.write(', ');
		document.write(months[stages[i].date.getMonth()]);
		document.write(' ');
		document.write(stages[i].date.getDate());
		document.write('<\/td><td class="distance" align="right" width="70">');
		if (stages[i].stage != "R") {
			document.write(stages[i].distance);
			document.write(' '+distance_units);
			total_distance += stages[i].distance;
		}
		document.write('&nbsp;<\/td><\/tr>');
		
		// host start and finish
			document.write('<tr><td><\/td><td colspan=2>');
		if (stages[i].stage == "R") {
			document.write("Rest day");
			if (stages[i].start_host != ""){
				document.write(' in <a href="');
				if (stages[i].start_url == '') {
	  				document.write('http://en.wikipedia.org/wiki/'+stages[i].start_host);
					
				}
				else
					document.write(stages[i].start_url);	
				document.write('">');
				document.write(unescape(stages[i].start_host));
				document.write('<\/a>');
				//if (stages[i].start_country != "")
					//document.write(' (' + stages[i].start_country + ')');
			}		
		}
		else {
		
			if (stages[i].type == "Mountain") {
				document.write('<img src="/img/mountain.gif" align="right" width="16" height="16"/>');
			}
			else if (stages[i].type == "TT") {
			document.write('<img src="/img/tt-symbol-16.jpg" align="right" width="27" height="16"/>');
			}
			else  if (stages[i].type == "TTT") {
			document.write('<img src="/img/ttt-symbol-16.jpg" align="right" width="39" height="16"/>');
			}
			if (i < 3)
				document.write('<a href="');
			else
				document.write('<a class=rumour href="');
			if (stages[i].start_url == '') {
				document.write('http://en.wikipedia.org/wiki/'+stages[i].start_host);
				
			}
			else
				document.write(stages[i].start_url);
				
			document.write('">');
			document.write(unescape(stages[i].start_host));
			document.write('<\/a>');
			if (stages[i].start_country != "")
				document.write(' (' + stages[i].start_country + ')');	
			
			if (stages[i].finish_host != "") {
				document.write(' &#8594; ');
				
				if (i < 3)
					document.write('<a href="');
				else
					document.write('<a class=rumour href="');
				if (stages[i].finish_url == '') {
					document.write('http://en.wikipedia.org/wiki/'+stages[i].finish_host);		
				}
				else
					document.write(stages[i].finish_url);
					
					
				document.write('">');
				document.write(unescape(stages[i].finish_host));
				document.write('<\/a>');
				if (stages[i].finish_country != "")
					document.write(' (' + stages[i].finish_country + ')');	
			}
		}
		document.write('<\/td><\/tr>');
		
		// links row
		if (stages[i].stage != "R") {
			document.write('<tr class="stage-details"><td><\/td> <td colspan="2">'); 
			formatStageLinks(i);
		}
		
		
		// end of links row
		document.write('<\/td><\/tr>');
	}	
	document.write('<tr class="stage-date" style="color:white; background-color:#56728B"><td colspan="2"  >&nbsp;&nbsp;<b>Total Distance<\/b><\/td><td  align="right"><b>' + Math.round(total_distance) + ' ' + distance_units + '&nbsp;<\/b><\/td><\/tr>');	
}

function lookup_stage_offet(stage_num) {
	for (var j = 0; j < stages.length; j++) {
		if (stages[j].stage == stage_num)
			return j;
	}
}

function formatStageLinks(i) {
	for (var j = 0; j < base_urls_list.length; j++) {
		if (j > 0)
			document.write(' | ');
		document.write('<a ');
		(stages[i][base_urls_list[j]] == "series") ? summary_value = new String(stages[i].stage) : summary_value = stages[i][base_urls_list[j]];
		
		if (summary_value == "") {				
			if (base_urls_list[j] == "map"  && stages[i].bike_map > 0) { // use bikemap if no official map	
				document.write('href=');
				document.write(bike_map_base_url.replace("{$1}", stages[i].bike_map));
			}
			else
				document.write('name=""');
		}
		else {
			document.write('href=');
			//if (base_urls_list[j] == "map" && summary_value == "" && stages[i].bike_map > 0) // use bikemap if no official map		
				//document.write(bike_map_base_url.replace("{$1}", stages[i].bike_map));	
			if (summary_value.indexOf('http://') < 0) { // relative/substitute
				document.write(base_urls[base_urls_list[j]].replace("{$1}", summary_value).replace("{$0}", stages[i].stage));
			}
			else document.write(summary_value);
		
		}
		if (anchor_extras[base_urls_list[j]]) {
			document.write(' ' + anchor_extras[base_urls_list[j]]);	
		}		
		document.write('>'+base_urls_list[j]+'<\/a>');
	}
}

function getBikeMapRoute(stage_num) {
	return stages[lookup_stage_offet(stage_num)].bike_map;
}

function start_finish_summary(stage_num) {
	var i = lookup_stage_offet(stage_num);
	document.write("<br clear=left/>");
	var components = stages[i].start_time.split(":");
	var time_ms = stages[i].date.setUTCHours(components[0], components[1], 0);
	var utcRaceDate0 = new Date(time_ms - (race_time_utc_offset * 3600000));
	
	document.write('<b>');
	document.write(stage_num == 0 ? "Prologue" : "Stage " + stage_num);
	document.write(" start time:<\/b> " + days[utcRaceDate0.getDay()] + " " + stages[i].start_time + " " + race_time_zone + " ");
	document.write('(' + utcRaceDate0.format("longTime") + ')');
	

	if (stages[i].start_weather == "") { // use start host	
		hostAndCountry = stages[i].start_host + ',' + (stages[i].start_country != "" ? stages[i].start_country : race_country);
		host_town_weather = weather_base_url.replace("{$1}", hostAndCountry);
	}
	else
		host_town_weather = stages[i].start_weather;
	
	document.write('; <a href=' + host_town_weather + '>Weather for ' + unescape(stages[i].start_host) + '<\/a><br/>');	

	
	document.write('<b><font color=red>Earliest live video:<\/font><\/b> ');
	
	
	if (stages[i].video_time == "")
		document.write('TBA');
	else {
		var components = stages[i].video_time.split(":");
		time_ms = stages[i].date.setUTCHours(components[0], components[1], 0);
		var utcRaceDateV = new Date(time_ms - (race_time_utc_offset * 3600000));
		document.write(stages[i].video_time + " " + race_time_zone + ' (' + utcRaceDateV.format("longTime") + ')');
	}
	
	document.write('; ' + '<a href=' + dashboard_link + '/#live>Live video, audio and text options</a>');
	
	components = stages[i].finish_time.split(":");
	var time_ms = stages[i].date.setUTCHours(components[0], components[1], 0);
	var utcRaceDate1 = new Date(time_ms - (race_time_utc_offset * 3600000));
	
	document.write('<br/><b>');
	document.write("Approximate finish:<\/b> " + stages[i].finish_time + " " + race_time_zone + " ");
	document.write('(' + utcRaceDate1.format("longTime") + ')');
	
	if (stages[i].finish_weather == "") { // use finish host	
		hostAndCountry = stages[i].finish_host + ',' + (stages[i].finish_country != "" ? stages[i].finish_country : race_country);
		host_town_weather = weather_base_url.replace("{$1}", hostAndCountry);
	}
	else
		host_town_weather = stages[i].finish_weather;
	
	document.write('; <a href=' + host_town_weather + '>Weather for ' + (stages[i].finish_host.length > 0 ? unescape(stages[i].finish_host): unescape(stages[i].start_host)) + '<\/a>');		
}

function stage_preview_header(stage_num, timer) {
	var i = lookup_stage_offet(stage_num);
	document.write("<a name=\"0"+stage_num+"-preview-2010\"/><h3>");
	document.write((stage_num > 0 ? ("Stage " + stage_num) : "Prologue"));
	var components = stages[i].start_time.split(":");
	var time_ms = stages[i].date.setUTCHours(components[0], components[1], 0);
	var utcRaceDate0 = new Date(time_ms - (race_time_utc_offset * 3600000));
	var current_date = new Date();
	
	components = stages[i].finish_time.split(":");
	time_ms = stages[i].date.setUTCHours(components[0], components[1], 0);
	var utcRaceDate1 = new Date(time_ms - (race_time_utc_offset * 3600000));
	
	if (timer && current_date > utcRaceDate0 && current_date < utcRaceDate1)
		document.write("<font color=red> in progress... </font> ");
	else
		document.write(" preview: ");
		
	document.write(unescape(stages[i].start_host));
	if (stages[i].finish_host.length > 0) {
		document.write(' &#8594; ');
		document.write(unescape(stages[i].finish_host));
	}
	document.write(", ")
	document.write(stages[i].distance);
	document.write(" " + distance_units);
	document.write(" (" + stages[i].type+")");
	document.write("<script type=\"text/javascript\">permalink(\"#0"+stage_num+"-preview-2010\");</script></h3>");
}


function stage_text_summary(stagen) {
	var i = lookup_stage_offet(stagen);;
	document.write("<b>Stage " + stagen + ":<\/b> " + unescape(stages[i].start_host));
	if (stages[i].finish_host != "")
		document.write(' &#8594; ' + unescape(stages[i].finish_host));
	document.write('<br/>');
	
	document.write("<b>Date:<\/b> ");
	document.write(days[stages[i].date.getDay()]);
	document.write(', ');
	document.write(months[stages[i].date.getMonth()]);
	document.write(' ');
	document.write(stages[i].date.getDate()+'<br/>');
	document.write("<b>Distance:<\/b> ");
	document.write(stages[i].distance);
	document.write(" " + distance_units + '<br/>');
}

function stage_stubs() {	
	for (var i = archived_stages; i > 0; i--) {
		var stage = stages[lookup_stage_offet(i)];
		var stage_text = (i < 10) ? "0"+i : i;
		document.write("<a name=\"" + stage_text + "-results-2009\"/>");
		document.write("<img src=\"" + thumbs_dir + stage.thumb + ".jpg\" align=left width=200 style=\"margin-right:10px\" />");
		document.write("<h3>Stage " + i + " results: " + stage.headline + "</h3>");
		
		document.write('<img src="/img/pages.gif" width="12" height="14" style="margin-left:2px;margin-right:3px"/><img src="/camera.gif" width="16" height="13" style="margin-right:2px" /><img src="/video-red.gif" style="margin-bottom:1px" /> ');
		
		document.write("<a href=" +base_urls["preview"].replace("{$1}", ("stage-"+stage_text+"/")) + ">Stage " + i + " Results, Reports, Photos, Highlights and  Video Clips &raquo;</a>");
		document.write("<br clear=left /><hr align=left />")
	}
}