
var rSettings=[];var so_line=null;var so_grid=null;var so_legend_l=null;var so_legend_r=null;function r_controlReplayer(command,opt_cb){switch(command){case'reset':if(r_r){r_r.destroy();}
r_r=new RaceReplayer(ge,a_rM[c_rIx].paths,a_rM[c_rIx].race,a_rM[c_rIx].racers,{on_tick:function(){updateDisplay();}});r_r.initUI(opt_cb);break;case'start':if(!r_r){r_controlReplayer('reset',function(){r_r.start();if(opt_cb){opt_cb();}});}else{r_r.start();if(opt_cb){opt_cb();}}
break;case'rewind':if(r_r){r_r.rewind();}
if(opt_cb){opt_cb();}
break;case'pause':if(r_r){r_r.stop();}
if(opt_cb){opt_cb();}
break;}}
function r_controlSpeedFactor(step){r_r.speedFactor=r_r.speedFactor+step;}
function r_initSettings(){var rdate=ymd2date(r_r.race.rdate);$("#orgtitle").html("<b>"+r_r.race.ename+' '+r_r.race.oname+"</b>");$("#racetitle").html("<b>"+r_r.race.rname+" - "+date_fm_long(rdate)+"</b>");$("#racelinks").html(""+link_genHTML(r_r.race.ourl,'Official Site')+"");$("#orglegal").html(""+r_r.race.olegal+"");var str_rtId=String("0"+r_r.race.race_TypeID).slice(-2);$("#racetype_icon").attr("src",img_shared_url+"ico_racetype_"+str_rtId+".png");r_r.view_settings[0].la=r_r.race.la_default;load_racePlacemarks();spCarousel_show();controlsEnableAll();b_synchstagger(0);b_view_mode('racer');r_setViewMode(1);updateDisplay();}
function r_setViewMode(vMode){if(r_r.vMode!=vMode){r_r.vMode_prev=r_r.vMode;switch(vMode){case 0:r_r.vMode=0;if(r_r.race.eOverlays_loaded===true){r_setEOverlaysVisibility(false);}
ge.getNavigationControl().setVisibility(ge.VISIBILITY_SHOW);ge.getView().setAbstractView(r_r.view_settings[0].la);break;case 1:if(r_r.stage===2&&r_r.vMode_prev===0){r_r.view_settings[0].la=ge.getView().copyAsLookAt(ge.ALTITUDE_RELATIVE_TO_GROUND);}
r_r.vMode=1;if(r_r.race.eOverlays_loaded===true){r_setEOverlaysVisibility(true);}
if(r_r.stage===2){r_r.moveView_(r_r.racers[r_r.focusRacer].currentLoc);}else{}
ge.getNavigationControl().setVisibility(ge.VISIBILITY_HIDE);break;case 2:if(r_r.stage===2&&r_r.vMode_prev===0){r_r.view_settings[0].la=ge.getView().copyAsCamera(ge.ALTITUDE_RELATIVE_TO_GROUND);}
r_r.vMode=2;r_r.view_settings[2].heading=r_r.headingCurrent_;if(r_r.race.eOverlays_loaded===true){r_setEOverlaysVisibility(false);}
ge.getNavigationControl().setVisibility(ge.VISIBILITY_HIDE);break;case 3:r_r.vMode=3;if(r_r.race.eOverlays_loaded===true){r_setEOverlaysVisibility(false);}
ge.getNavigationControl().setVisibility(ge.VISIBILITY_AUTO);break;default:break;}}}
function r_setViewLock(lvalue){if(r_r.vMode===0){if(lvalue===true&&r_r.view_settings[0].locked===false){r_setViewLockCamera();r_r.view_settings[0].locked=lvalue;}else if(lvalue===false&&r_r.view_settings[0].locked===true){r_r.view_settings[0].locked=lvalue;}else{}}}
function r_setFocus(rId){if(r_r.focusRacer>-1){r_r.racers[r_r.focusRacer].pm.setStyleSelector(r_r.racers[r_r.focusRacer].styleMap);}
r_r.focusRacer=rId;r_r.racers[rId].pm.setStyleSelector(r_r.racers[rId].styleMap_f);c_cIx=r_r.racers[rId].courseIndex;show_fr_data(rId);if(r_r.stage===1){r_r.ge.getView().setAbstractView(r_r.race.courses[c_cIx].prestartCam);}}
function r_loadEOverlays(){var eOverlayMode=settings.layers.eOverlayMode;if(so_line){ge.getFeatures().removeChild(so_line);}
so_line=r_r.race.eOverlays[eOverlayMode].so_line;ge.getFeatures().appendChild(so_line);if(so_grid){ge.getFeatures().removeChild(so_grid);}
so_grid=r_r.race.eOverlays[eOverlayMode].so_grid;ge.getFeatures().appendChild(so_grid);if(so_legend_l){ge.getFeatures().removeChild(so_legend_l);}
so_legend_l=r_r.race.eOverlays[eOverlayMode].so_legend_l;ge.getFeatures().appendChild(so_legend_l);if(so_legend_r){ge.getFeatures().removeChild(so_legend_r);}
so_legend_r=r_r.race.eOverlays[eOverlayMode].so_legend_r;ge.getFeatures().appendChild(so_legend_r);r_r.race.eOverlays_loaded=true;if(r_r.vMode===1){r_setEOverlaysVisibility(true);}}
function r_loaddmarkers(){var dmarkertype=settings.layers.dmarkertype;if(dmarkers){ge.getFeatures().removeChild(dmarkers);}
if(dmarkertype===0){dmarkers=r_r.race.kml_km_markers;ge.getFeatures().appendChild(dmarkers);}else{dmarkers=r_r.race.kml_mi_markers;ge.getFeatures().appendChild(dmarkers);}}
function r_loadpreStartOverlays(){if(!ge.so_preStart_1){ge.getFeatures().appendChild(so_preStart_1);}
if(!ge.so_preStart_2){ge.getFeatures().appendChild(so_preStart_2);}
if(!ge.so_preStart_3){ge.getFeatures().appendChild(so_preStart_3);}
so_preStart_1.setVisibility(false);so_preStart_2.setVisibility(false);so_preStart_3.setVisibility(false);}
function r_setEOverlaysVisibility(value){if(value===true){so_line.setVisibility(true);so_grid.setVisibility(true);so_legend_l.setVisibility(true);so_legend_r.setVisibility(true);so_eprog.setVisibility(true);}else{so_line.setVisibility(false);so_grid.setVisibility(false);so_legend_l.setVisibility(false);so_legend_r.setVisibility(false);so_eprog.setVisibility(false);}}
function r_setViewLockCamera(){r_r.view_settings[0].cam=ge.getView().copyAsCamera(ge.ALTITUDE_RELATIVE_TO_GROUND);var camLoc=new simplePoint(r_r.view_settings[0].cam.getLatitude(),r_r.view_settings[0].cam.getLongitude(),r_r.view_settings[0].cam.getAltitude());r_r.view_settings[0].cam_offset=r_r.view_settings[0].cam.getAltitude()*Math.tan(r_r.geHelpers_.deg2rad(r_r.view_settings[0].cam.getTilt()));}
function r_addToGE(id){r_r.racers[id].pm.getGeometry().setLatitude(r_r.getLoc_(id,r_r.totalTimeReal_).lat());r_r.racers[id].pm.getGeometry().setLongitude(r_r.getLoc_(id,r_r.totalTimeReal_).lng());r_r.racers[id].pm.getGeometry().setAltitude(r_r.getLoc_(id,r_r.totalTimeReal_).alt());r_r.racers[id].pm.setVisibility(true);r_r.racers[id].included=1;if(r_r.doTick_===false){r_resetTimeElapsed();updateDisplay();}}
function r_removeFromGE(id){r_r.racers[id].pm.setVisibility(false);r_r.racers[id].included=0;if(r_r.doTick_===false){r_resetTimeElapsed();updateDisplay();}}
function r_resetTimeElapsed(){r_r.totalTimeSelected_=0;for(var i=0;i<r_r.racers.length;i++){if(r_r.racers[i].included===1){if(r_r.racers[i].totaltime>r_r.totalTimeSelected_){r_r.totalTimeSelected_=r_r.racers[i].totaltime;}}}
r_r.tp_elapsed_=r_r.totalTimeReal_/r_r.totalTimeSelected_;}
function r_preStart_Overlays(percentComplete){if(percentComplete>=0&&percentComplete<psData.so1_start){so_preStart_1.setVisibility(false);so_preStart_2.setVisibility(false);so_preStart_3.setVisibility(false);}else if(percentComplete>=psData.so1_start&&percentComplete<psData.so1_end){so_preStart_1.setVisibility(true);so_preStart_2.setVisibility(false);so_preStart_3.setVisibility(false);}else if(percentComplete>=psData.so1_end&&percentComplete<psData.so2_start){so_preStart_1.setVisibility(false);so_preStart_2.setVisibility(false);so_preStart_3.setVisibility(false);}else if(percentComplete>=psData.so2_start&&percentComplete<psData.so2_end){so_preStart_1.setVisibility(false);so_preStart_2.setVisibility(true);so_preStart_3.setVisibility(false);}else if(percentComplete>=psData.so2_end&&percentComplete<psData.so3_start){so_preStart_1.setVisibility(false);so_preStart_2.setVisibility(false);so_preStart_3.setVisibility(false);}else if(percentComplete>=psData.so3_start&&percentComplete<psData.so3_end){so_preStart_1.setVisibility(false);so_preStart_2.setVisibility(false);so_preStart_3.setVisibility(true);}else{so_preStart_1.setVisibility(false);so_preStart_2.setVisibility(false);so_preStart_3.setVisibility(false);}}
function r_racer_switchcourse(racerid){if(r_r.stage===2&&r_r.racers[racerid].included===1){r_r.racers[racerid].currentLoc=r_r.race.courses[r_r.racers[racerid].courseIndex].startLoc;r_r.racers[racerid].pm.getGeometry().setLatitude(r_r.racers[racerid].currentLoc.lat());r_r.racers[racerid].pm.getGeometry().setLongitude(r_r.racers[racerid].currentLoc.lng());r_r.racers[racerid].pm.getGeometry().setAltitude(r_r.racers[racerid].currentLoc.alt());}}