// (c) RaceMyRace.com

var settings=[];var a_rM=[];var a_rL=[];var c_rId;var c_rIx;var c_cIx;var psData={duration:7000,so1_start:0.1,so1_end:0.3,so2_start:0.4,so2_end:0.7,so3_start:0.9,so3_end:1.0};var init_rId=null;function get_rList(){var f_data=$.toJSON(settings.filters);$.post("php/racelist.php",{filters:f_data},function(data){a_rL=$.evalJSON(data);init_calendar();});}
function init_settings(){var is_supported=google.earth.isSupported();var is_installed=google.earth.isInstalled();var gestate;if(is_supported===true){if(is_installed===true){gestate=1;}else{gestate=2;}}else{gestate=3;}
var rdata={};rdata.browser=navigator.appName;rdata.browserversion=navigator.appVersion;rdata.code=navigator.appCodeName;rdata.platform=navigator.platform;rdata.useragent=navigator.userAgent;rdata.gestate=gestate;var p_data=$.toJSON(rdata);init_misc_images();$.post('php/settings_init.php',{jsonData:p_data},function(data){settings=$.evalJSON(data);settings.dialogs={};settings.dialogs.vid={};settings.dialogs.ptip={};settings.dialogs.sview={};settings.dialogs.cn={};settings.dialogs.show_video=1;settings.dialogs.show_ptip=1;settings.ge={};settings.init={};settings.init.controls=false;settings.init.settings=false;settings.init.grids=false;settings.init.app=false;settings.kml={};settings.pstate={};settings.trig_events={};if(settings.params){if(typeof(settings.params.rid)=="undefined"){}else{init_rId=parseInt(settings.params.rid,10);}}
settings.init.settings=true;settings.ge.is_supported=is_supported;settings.ge.is_installed=is_installed;if(ge&&settings.init.controls===false){init_controls();}
var layout={};layout.filters=1;layout.search=1;layout.calendar=1;settings.layout=layout;init_layout_inner();if(layout.filters===1){init_grid_rt();init_grid_rg();}
init_treegrid();get_rList();});}
function init_controls(){if(settings.init.controls===false){if(settings.layers.vis_terrain===1){layer_terrain_set('on');}else{layer_terrain_set('off');}
$("#b_layer_terrain").click(b_layer_terrain_click);if(settings.layers.vis_buildings===1){layer_buildings_set('on');}else{layer_buildings_set('off');}
$("#b_layer_buildings").click(b_layer_buildings_click);if(settings.layers.vis_roads===1){layer_roads_set('on');}else{layer_roads_set('off');}
$("#b_layer_roads").click(b_layer_roads_click);if(settings.layers.eOverlayMode===0){b_ele_f_click();}else{b_ele_m_click();}
if(settings.layers.dmarkertype===0){b_dm_km_click();}else{b_dm_mi_click();}
if(settings.dialogs.show_video===1){dialog_video_set('on');}else{dialog_video_set('off');}
$("#b_video").click(b_video_click);if(settings.dialogs.show_ptip===1){dialog_ptip_set('on');}else{dialog_ptip_set('off');}
$("#b_ptip").click(b_ptip_click);settings.init.controls=true;init_ge();if(settings.init.grids===true&&settings.init.app===false){if(init_rId>0){init_race(init_rId);}
settings.init.app=true;}}}
function settings_save(setting){if(is_loggedin===1){switch(setting)
{case"vis_terrain":$.post("php/settings_upd.php",{vis_terrain:settings.layers.vis_terrain});break;case"vis_buildings":$.post("php/settings_upd.php",{vis_buildings:settings.layers.vis_buildings});break;case"vis_roads":$.post("php/settings_upd.php",{vis_roads:settings.layers.vis_roads});break;case"eOverlayMode":$.post("php/settings_upd.php",{eOverlayMode:settings.layers.eOverlayMode});break;case"dmarkertype":$.post("php/settings_upd.php",{dmarkertype:settings.layers.dmarkertype});break;default:break;}}}
function reset_races(){var filters=$.toJSON(settings.filters);$("#grid_r").setGridParam({url:'php/racetree.php',postData:{"filters":filters}}).trigger("reloadGrid");get_rList();}
function init_race(rId){if(settings.ge.is_installed===true&&ge){$("#grid_rm").clearGridData();$("#grid_rd").clearGridData();show_fr_data(-1);c_rId=parseInt(rId,10);c_rIx=get_rIx(c_rId);if(c_rIx===null){a_rM.push({race_ID:parseInt(rId,10),race_Name:$("#grid_r").getRowData(rId).Race,rLoaded:false,paths:[],race:{},racers:[]});c_rId=parseInt(rId,10);c_rIx=get_rIx(c_rId);}
if(r_r){r_r.destroy();rr_geHelpers.clearFeatures();}
if(a_rM[c_rIx].rLoaded===false){load_raceData(c_rId);}else{init_raceReplayer();}
if($("#dlg_vid").dialog('isOpen')===true){$("#dlg_vid").dialog('close')}
delete_vPlayer('dlg_vid_inner_wrapper','dlg_vid_ph','player1');if($("#dlg_ptip").dialog('isOpen')===true){$("#dlg_ptip").dialog('close')}
$("#dlg_ptip_inner_wrapper").text('');if($("#dlg_sview").dialog('isOpen')===true){$("#dlg_sview").dialog('close')}
$("#dlg_sview_inner_wrapper").text('');$("#accordion").accordion("activate",1);}}
function load_raceData(rId){$.get("php/race_init.php?id="+rId+"",{},function(data){a_rM[c_rIx].race=$.evalJSON(data);init_trigEvents();if(a_rM[c_rIx].race.sponsors){for(var i=0;i<a_rM[c_rIx].race.sponsors.length;i++){a_rM[c_rIx].race.sponsors[i].image=new Image();a_rM[c_rIx].race.sponsors[i].image.src='data/sponsors/'+a_rM[c_rIx].race.sponsors[i].imagefile;}}
load_racerData(rId);var courseList="";for(var i=0;i<a_rM[c_rIx].race.courses.length;i++){courseList+=a_rM[c_rIx].race.courses[i].db_courseid+":"+a_rM[c_rIx].race.courses[i].course_name;if(i<a_rM[c_rIx].race.courses.length-1){courseList+=";";}}
a_rM[c_rIx].race.courseList=courseList;create_racePlacemarks();});}
function load_racerData(rId){var str_rId=String("00"+rId).slice(-3);$.get("php/racer_init.php?id="+rId+"",{},function(data){a_rM[c_rIx].racers=$.evalJSON(data);for(var i=0;i<a_rM[c_rIx].racers.length;i++){a_rM[c_rIx].racers[i].rname=a_rM[c_rIx].racers[i].rlastname+", "+a_rM[c_rIx].racers[i].rfirstname;a_rM[c_rIx].racers[i].pm=null;a_rM[c_rIx].racers[i].deleted=0;a_rM[c_rIx].racers[i].courseIndex=get_cIx(a_rM[c_rIx].racers[i].db_courseid);if(a_rM[c_rIx].racers[i].hasfocus==1){a_rM[c_rIx].focusRacer=i;}
for(var j=0;j<a_rM[c_rIx].racers[i].splits.length;j++){a_rM[c_rIx].racers[i].splits[j].pace=time2pace(c_rIx,i,j);}
var last_split=a_rM[c_rIx].racers[i].splits.length-1;a_rM[c_rIx].racers[i].totaltime=a_rM[c_rIx].racers[i].splits[last_split].time_secs;}
finish_dataLoad(rId);});}
function finish_dataLoad(rId){var str_rId=String("00"+c_rId).slice(-3);kmlUrl=url_root+'data/'+str_rId+'_content.kmz';load_kml(kmlUrl);}
function load_kml(kmlUrl){google.earth.fetchKml(ge,kmlUrl,finish_loadKml);}
function finish_loadKml(kmlObject){var obj_racePaths;if(!kmlObject){setTimeout(function(){alert('Bad or null KML');},0);return;}
currentKmlObject=kmlObject;a_rM[c_rIx].race.la_default=currentKmlObject.getAbstractView();walkKmlDom(kmlObject,function(){if(this.getType()=='KmlFolder'&&this.getName()=='Paths'){obj_racePaths=this;a_rM[c_rIx].race.kml_paths=this;}else if(this.getType()=='KmlFolder'&&this.getName()=='KM Markers'){a_rM[c_rIx].race.kml_km_markers=this;}else if(this.getType()=='KmlFolder'&&this.getName()=='MI Markers'){a_rM[c_rIx].race.kml_mi_markers=this;}else if(this.getType()=='KmlFolder'&&this.getName()=='Features'){a_rM[c_rIx].race.kml_misc_features=this;}else{}});a_rM[c_rIx].rLoaded=true;load_arrayPaths(obj_racePaths);if(a_rM[c_rIx].race.has_EData===1){create_elevationOverlays_Course(a_rM[c_rIx].race.def_courseid);}
init_raceReplayer();}
function init_raceReplayer(){c_cIx=0;r_controlReplayer('reset');load_grid_rm(c_rIx);ge.getFeatures().appendChild(obj_sharedStyles);ge.getFeatures().appendChild(r_r.race.kml_misc_features);ge.getFeatures().appendChild(r_r.race.kml_paths);ge.getFeatures().appendChild(so_eprog);if(settings.layers.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);}
r_loadpreStartOverlays();if(a_rM[c_rIx].race.has_EData===1){r_loadEOverlays();}
create_racerPlacemarks();if(r_r.race.has_video===false){$("#b_video").removeClass().addClass("b_video_una");}else{if(settings.dialogs.show_video===1){dialog_video_set('on');}else{dialog_video_set('off');}}
if(r_r.race.has_ptip===false){$("#b_ptip").removeClass().addClass("b_ptip_una");}else{if(settings.dialogs.show_ptip===1){dialog_ptip_set('on');}else{dialog_ptip_set('off');}}}
function load_arrayPaths(obj_racePaths){var obj_path;walkKmlDom(obj_racePaths,function(){if(this.getType()=='KmlPlacemark'){obj_path=this;var coordsPath=obj_path.getGeometry().getCoordinates();var countPathPoints=coordsPath.getLength();var arr_coords_path=[];var path=[];for(var j=0;j<countPathPoints;j++){var coord_point=coordsPath.get(j);path.push({loc:new simplePoint(coord_point.getLatitude(),coord_point.getLongitude(),coord_point.getAltitude())});}
a_rM[c_rIx].paths.push(path);}});for(var k=0;k<a_rM[c_rIx].race.courses.length;k++){init_courseValues(k);}}
function init_courseValues(cIx){var course=a_rM[c_rIx].race.courses[cIx];var startPath=course.path_sequence[0].path_index;course.startPath=startPath;course.startLoc=a_rM[c_rIx].paths[startPath][0].loc;course.startHeading=rr_geHelpers.fixAngle(rr_geHelpers.getHeading(a_rM[c_rIx].paths[startPath][0].loc,a_rM[c_rIx].paths[startPath][1].loc));var lastpathsequence=course.path_sequence.length-1;var finishPath=course.path_sequence[lastpathsequence].path_index;var finishPathIndex=a_rM[c_rIx].paths[finishPath].length-1;course.finishPath=finishPath;course.finishPathIndex=finishPathIndex;course.finishLoc=a_rM[c_rIx].paths[finishPath][finishPathIndex].loc;course.finishHeading=rr_geHelpers.fixAngle(rr_geHelpers.getHeading(a_rM[c_rIx].paths[finishPath][finishPathIndex-1].loc,a_rM[c_rIx].paths[finishPath][finishPathIndex].loc));course.prestartLoc=get_offsetLoc(course.startLoc,40,rr_geHelpers.fixAngle(course.startHeading+180));course.prestartHeading=course.startHeading;course.prestartCam=ge.createCamera('');course.prestartCam.set(course.prestartLoc.lat(),course.prestartLoc.lng(),course.prestartLoc.alt()+2,ge.ALTITUDE_RELATIVE_TO_GROUND,course.startHeading,90,0);}
function load_grid_rm(){var g_m_data=[];$('#grid_rm').clearGridData();$("#grid_rd").clearGridData();$("#grid_rm").setColProp('course',{editoptions:{value:r_r.race.courseList}});if(a_rM[c_rIx].race.course_Count==1){$("#grid_rm").hideCol('course');}else{$("#grid_rm").showCol('course');}
for(var i=0;i<r_r.racers.length;i++){if(r_r.racers[i].deleted===0){g_m_data.push({bibno:r_r.racers[i].rno,rname:r_r.racers[i].rname,rfirstname:r_r.racers[i].rfirstname,rlastname:r_r.racers[i].rlastname,course:get_cName(r_r.racers[i].db_courseid),sdelay:secsToHMS(r_r.racers[i].sdelay),ftime:secsToHMS(r_r.racers[i].totaltime),notes:r_r.racers[i].note,included:r_r.racers[i].included,hasfocus:r_r.racers[i].hasfocus});}}
for(i=0;i<g_m_data.length;i++){$("#grid_rm").addRowData(i,g_m_data[i]);}
gm_set_init();}
function load_grid_rd(id){$("#grid_rd").clearGridData();for(var i=0;i<r_r.racers[id].splits.length;i++){var courseIndex=r_r.racers[id].courseIndex;$("#grid_rd").addRowData(i,{splitno:i+1,split_name:r_r.racers[id].splits[i].split_name,stime:secsToHMS((r_r.racers[id].splits[i].time_secs)),pace:pace2MS(r_r.racers[id].splits[i].pace)});}}
function gm_set_init(){for(var i=0;i<r_r.racers.length;i++){var rowid=i;if(r_r.racers[i].hasfocus===1){r_r.focusRacer=i;$("#grid_rm").setCell(rowid,'hasfocus',1);c_cIx=r_r.racers[rowid].courseIndex;show_fr_data(i);}else{}}
if(r_r.focusRacer==-1){r_r.focusRacer=0;r_r.racers[0].hasfocus=1;$("#grid_rm").setCell(0,'hasfocus',1);c_cIx=r_r.racers[0].courseIndex;show_fr_data(0);}
$("#grid_rm").setSelection(r_r.focusRacer,true);load_grid_rd(r_r.focusRacer);r_r.headingCurrent_=r_r.race.courses[c_cIx].startHeading;if(r_r.race.results_available>0){if(r_r.race.results_available===1){b_rm_search('enable');}else if(r_r.race.results_available===2){b_rm_search('disable');}else{}}else{b_rm_search('disable');}
$("#grid_rm_search").clearGridData();if(r_r.race.results_available===1){$("#grid_rm_search").setGridParam({url:'php/results_search.php?r='+c_rId}).trigger("reloadGrid");}else if(r_r.race.results_available===2){$("#grid_rm_search").setGridParam({url:'php/results_search.php?r=0'}).trigger("reloadGrid");}else{$("#grid_rm_search").clearGridData();$("#grid_rm_search").setGridParam({url:'php/results_search.php?r=0'}).trigger("reloadGrid");}}
function get_rIx(rId){if(a_rM.length!==0){for(var i=0;i<a_rM.length;i++){if(a_rM[i].race_ID==rId){return i;}}}
return null;}
function get_cIx(cId){if(a_rM[c_rIx].race.courses.length!==0){for(var i=0;i<a_rM[c_rIx].race.courses.length;i++){if(a_rM[c_rIx].race.courses[i].db_courseid==cId){return i;}}}
return null;}
function get_cId(cName){if(a_rM[c_rIx].race.courses.length!==0){for(var i=0;i<a_rM[c_rIx].race.courses.length;i++){if(a_rM[c_rIx].race.courses[i].course_name==cName){return a_rM[c_rIx].race.courses[i].db_courseid;}}}
return null;}
function get_cName(cId){if(a_rM[c_rIx].race.courses.length!==0){for(var i=0;i<a_rM[c_rIx].race.courses.length;i++){if(a_rM[c_rIx].race.courses[i].db_courseid==cId){return a_rM[c_rIx].race.courses[i].course_name;}}}
return null;}
function arrays_addnew(rowid,aData){var db_courseid=get_cId(aData.course);var c_idx=get_cIx(db_courseid);r_r.racers.push({rno:aData.bibno,rfirstname:aData.rfirstname,rlastname:aData.rlastname,rname:aData.rlastname+", "+aData.rfirstname,sdelay:HMSToSecs(aData.sdelay),note:aData.notes,included:-1,complete:-1,pm:null,totaltime:0,owned:1,deleted:0,db_courseid:db_courseid,courseIndex:c_idx,splits:[]});for(var i=0;i<r_r.race.splits.length;i++){r_r.racers[rowid].splits.push({sno:i+1,split_name:r_r.race.splits[i].split_name,distance_native:r_r.race.splits[i].distance_native,dtype_id:r_r.race.splits[i].dtype_id,distance_meters:r_r.race.splits[i].distance_meters,time_secs:0,time_dt:"",pace:0});}
save_racer_new(rowid);}
function array_gd_update(gm_rowid,gd_rowid,field,value){var rid=parseInt(gm_rowid,10);var sid=parseInt(gd_rowid,10);if(field=='stime'){r_r.racers[rid].splits[sid].time_secs=HMSToSecs(value);r_r.racers[rid].splits[sid].time_dt=value;r_r.racers[rid].splits[sid].pace=time2pace(c_rIx,rid,sid);}else if(field=='pace'){r_r.racers[rid].splits[sid].pace=MS2pace(value);r_r.racers[rid].splits[sid].time_secs=pace2time(c_rIx,rid,sid);r_r.racers[rid].splits[sid].time_dt=secsToHMS(r_r.racers[rid].splits[sid].time_secs);}else{}
$("#grid_rd").setRowData(sid,{stime:secsToHMS(r_r.racers[rid].splits[sid].time_secs),pace:pace2MS(r_r.racers[rid].splits[sid].pace)});sid++;}
function check_complete(rowid){var complete=1;var ttime=0;for(var i=0;i<r_r.racers[rowid].splits.length;i++){if(!(parseInt(r_r.racers[rowid].splits[i].time_secs,10)>0)){complete=0;}
if(i==r_r.racers[rowid].splits.length-1){ttime+=parseInt(r_r.racers[rowid].splits[i].time_secs,10);}}
if(complete===1){r_r.racers[rowid].totaltime=ttime;r_r.racers[rowid].complete=1;$("#grid_rm").setCell(rowid,'ftime',secsToHMS(r_r.racers[rowid].totaltime));$("#grid_rm").setCell(rowid,'hasfocus',0);$("#grid_rm").setCell(rowid,'included',0);create_racerPlacemark(rowid);gm_addGE(rowid);save_racer_upd(rowid);}else{$("#grid_rm").setCell(rowid,'hasfocus',-1);$("#grid_rm").setCell(rowid,'included',-1);}}
function grid_rm_afterInsert(rowid,aData){var rname=aData.rlastname+", "+aData.rfirstname;$("#grid_rm").setRowData(rowid,{rname:rname});if(rowid<r_r.racers.length){if(r_r.racers[rowid].included===1){gm_addGE(rowid);}}else{arrays_addnew(rowid,aData);fill_grid_rd(rowid);}}
function save_racer_new(rowid){if(is_loggedin==1){var rdata={};rdata.race_id=r_r.race.db_raceid;rdata.course_id=r_r.racers[rowid].db_courseid;rdata.racer_first_name=r_r.racers[rowid].rfirstname;rdata.racer_last_name=r_r.racers[rowid].rlastname;rdata.racer_no=r_r.racers[rowid].rno;rdata.start_delay=r_r.racers[rowid].sdelay;rdata.notes=r_r.racers[rowid].note;rdata.is_included=r_r.racers[rowid].included;rdata.sdata=[];for(var i=0;i<r_r.racers[rowid].splits.length;i++){rdata.sdata[i]={};rdata.sdata[i].split_name=r_r.racers[rowid].splits[i].split_name;rdata.sdata[i].distance_native=r_r.racers[rowid].splits[i].distance_native;rdata.sdata[i].dtype_id=r_r.racers[rowid].splits[i].dtype_id;rdata.sdata[i].distance_meters=r_r.racers[rowid].splits[i].distance_meters;rdata.sdata[i].time_secs=r_r.racers[rowid].splits[i].time_secs;rdata.sdata[i].time_dt=r_r.racers[rowid].splits[i].time_dt;}
var p_data=$.toJSON(rdata);$.post('php/racer_ins.php',{jsonData:p_data},function(data){var arr_ret=$.evalJSON(data);r_r.racers[rowid].db_racerid=arr_ret.db_racerid;r_r.racers[rowid].db_rrid=arr_ret.db_rrid;r_r.racers[rowid].db_urid=arr_ret.db_urid;r_r.racers[rowid].isdefault=0;for(var i=0;i<r_r.racers[rowid].splits.length;i++){r_r.racers[rowid].splits[i].db_rsid=arr_ret.ret_s[i].db_rsid;}});}}
function save_racer_upd(rowid){if(is_loggedin===1){var rdata={};rdata.db_racerid=r_r.racers[rowid].db_racerid;rdata.db_courseid=r_r.racers[rowid].db_courseid;rdata.db_rrid=r_r.racers[rowid].db_rrid;rdata.db_urid=r_r.racers[rowid].db_urid;rdata.racer_first_name=r_r.racers[rowid].rfirstname;rdata.racer_last_name=r_r.racers[rowid].rlastname;rdata.racer_no=r_r.racers[rowid].rno;rdata.start_delay=r_r.racers[rowid].sdelay;rdata.notes=r_r.racers[rowid].note;rdata.sdata=[];for(var i=0;i<r_r.racers[rowid].splits.length;i++){rdata.sdata[i]={};rdata.sdata[i].db_rsid=r_r.racers[rowid].splits[i].db_rsid;rdata.sdata[i].split_name=r_r.racers[rowid].splits[i].split_name;rdata.sdata[i].distance_native=r_r.racers[rowid].splits[i].distance_native;rdata.sdata[i].dtype_id=r_r.racers[rowid].splits[i].dtype_id;rdata.sdata[i].distance_meters=r_r.racers[rowid].splits[i].distance_meters;rdata.sdata[i].time_secs=r_r.racers[rowid].splits[i].time_secs;rdata.sdata[i].time_dt=r_r.racers[rowid].splits[i].time_dt;}
var p_data=$.toJSON(rdata);$.post('php/racer_upd.php',{jsonData:p_data},function(data){});}}
function save_racer_del(rowid){if(is_loggedin===1){var rdata={};rdata.db_racerid=r_r.racers[rowid].db_racerid;rdata.db_rrid=r_r.racers[rowid].db_rrid;rdata.db_urid=r_r.racers[rowid].db_urid;var p_data=$.toJSON(rdata);$.post('php/racer_del.php',{jsonData:p_data},function(data){});}}
function settings_race_save(rowid,setting){if(is_loggedin===1){var rdata={};var p_data;switch(setting)
{case"is_focused":rdata.db_urid=r_r.racers[rowid].db_urid;rdata.upd_setting=setting;rdata.upd_value=1;p_data=$.toJSON(rdata);$.post('php/settings_race_upd.php',{jsonData:p_data},function(data){});break;case"is_included":rdata.db_urid=r_r.racers[rowid].db_urid;rdata.upd_setting=setting;rdata.upd_value=r_r.racers[rowid].included;p_data=$.toJSON(rdata);$.post('php/settings_race_upd.php',{jsonData:p_data},function(data){});break;default:break;}}}