ssr=new Array(); sr=new Array(); sdr=new Array(); dr=new Array(); remain_minutes=0; //유료 사용자 여부 var validuser=$("input[name=validuser]","#ajaxForm").val(); var xmlHttp; function srvTime(){ if (window.XMLHttpRequest) {//분기하지 않으면 IE에서만 작동된다. xmlHttp = new XMLHttpRequest(); // IE 7.0 이상, 크롬, 파이어폭스 등 xmlHttp.open('HEAD',window.location.href.toString(),false); xmlHttp.setRequestHeader("Content-Type", "text/html"); xmlHttp.send(''); return xmlHttp.getResponseHeader("Date"); }else if (window.ActiveXObject) { xmlHttp = new ActiveXObject('Msxml2.XMLHTTP'); xmlHttp.open('HEAD',window.location.href.toString(),false); xmlHttp.setRequestHeader("Content-Type", "text/html"); xmlHttp.send(''); return xmlHttp.getResponseHeader("Date"); } } var st = srvTime(); var date = new Date(st); var today = date.getFullYear() + addZero(date.getMonth()+1) + addZero(date.getDate()); var times= date.getHours() +":"+ addZero(date.getMinutes()) +":"+ addZero(date.getSeconds()); //console.log(date); function addZero(n){ return n < 10 ? "0" + n : n; } /* Timer */ function countdown( seconds ){ var element, endTime, hours, mins, msLeft, time; var rtn='0분 0초'; function updateTimer(){ msLeft = endTime - (+new Date); if ( msLeft < 0 ) { //console.log('done'); $('#remain_timer').html('진행 중 '); } else { time = new Date( msLeft ); hours = time.getUTCHours(); mins = time.getUTCMinutes(); $('#remain_timer').html( (hours ? hours + '시간' + ('0' + mins).slice(-2) : mins) + '분 ' + ('0' + time.getUTCSeconds()).slice(-2)+'초 전'); setTimeout( updateTimer, time.getUTCMilliseconds()); // if you want this to work when you unfocus the tab and refocus or after you sleep your computer and come back, you need to bind updateTimer to a $(window).focus event^^ } } endTime = (+new Date) + 1000 * seconds; updateTimer(); } function countdown2( seconds ){ var element, endTime, hours, mins, msLeft, time; var rtn='0분 0초'; function updateTimer(){ msLeft = endTime - (+new Date); if ( msLeft < 0 ) { //console.log('done'); $('#remain_timer_min').html('마감'); } else { time = new Date( msLeft ); hours = time.getUTCHours(); mins = time.getUTCMinutes(); $('#remain_timer_min').html( (hours ? hours + '시간' + ('0' + mins).slice(-2) : mins) + '분전'); setTimeout( updateTimer, time.getUTCMilliseconds()); // if you want this to work when you unfocus the tab and refocus or after you sleep your computer and come back, you need to bind updateTimer to a $(window).focus event^^ } } endTime = (+new Date) + 1000 * seconds; updateTimer(); } $(function() { load_odds_table(); odds_table_legend() //과집중 테이블 $("table#focus_table .cell-hover").hover(function(){ $("table#focus_table").find('td').removeClass('hover'); var key=$(this).attr('data-key'); if(key=='') return; $("table#focus_table").find("td.cell-hover").each(function(){ if($(this).attr('data-key')==key){ $(this).addClass('hover'); } }) }); //동일 조합 반전 $("table#move_table .cell-hover").hover(function(){ $(this).parents('table').find('td').removeClass('hover font-bold'); var key=$(this).attr('data-key'); if(key=='') return; $(this).parents('table').find("td.cell-hover").each(function(){ if($(this).attr('data-key')==key){ $(this).addClass('hover'); } }) $(this).parents('table').find("td.odds-var").each(function(){ if($(this).attr('data-key')==key){ $(this).addClass('font-bold'); } }) }); //상세보기 요약보기 set_detail( get_cookie('complex_stats')!='n'?'y':'n' ); //배당판의 형태 $('#is_odds').change(function(){ var is_odds=$(this).prop('checked')?'1':'2'; set_cookie('odds_stats',is_odds,86400*355); $("input[name='odds_stats']","#ajaxForm").val(is_odds); odds_table_legend() load_odds_table() }); $('#is_complex').change(function(){ var is_complex=$(this).prop('checked')?'y':'n'; set_cookie('complex_stats',is_complex,86400*355); //console.log(get_cookie('complex_stats')); set_detail(is_complex); }); //기준시간 설정 $('#is_mins').change(function(){ var is_mins=$(this).prop('checked')?'15':'12'; set_cookie('mins_stats',is_mins,86400*355); odds_table_legend(); //데이터 새로 고침 get_racing_ajx('init',0); get_racing_table_ajx('init',0); }) //실시간 변동 추적 정열 $('#is_align').change(function(){ var is_align=$(this).prop('checked')?'fall':''; set_cookie('align_stats',is_align,86400*355); console.log(get_cookie('align_stats')); get_racing_table_ajx('init',0); }); //남은시간 카운트 다움 countdown($('input[name=remain_sec_anal]','#ajaxForm').val()); // second base countdown2($('input[name=remain_sec_race]','#ajaxForm').val()); // second base }); function odds_table_legend(){ var is_odds=get_cookie('odds_stats'); var is_mins=get_cookie('mins_stats'); if(!is_mins) is_mins=15; var htmls=''; //배당판 안내 문구 if(is_odds!='2'){ htmls+="복승 배당판 배당 변동 표기 설명 (복승 전체 배당판 변동률을 참고하면 축마 선정 및 복승 공략시 좋은 자료가 됨)
"; htmls+="모든 조합 박스 좌 상단 = 복승 "+is_mins+"분 전 평가 기준 배당으로 고점 됨
"; htmls+="모든 조합 박스 우 상단 = 실시간 현 등락률이 ▲상향, ▼하향으로 표기 됨 (복승 "+is_mins+"분 전 기준 배당 대비 등락률 / 표기 단위 %)
"; htmls+="모든 조합 박스 하단 12분,10분,8분,6분,4분,2분 / 각 2분간 "+is_mins+"분 전 기준 배당 대비 순간 등락률 변동을 표기
"; } htmls+="바탕색 및 기호 표기 / 무색 = ▲상승배당 / 하늘색 = 하향배당 / 연두 = 5% 미만 △보합상승배당"; $("#race-legend").html(htmls); } function load_odds_table(){ if(horse_cnt == 0){ load_ajax() return; } var odds_stats= get_cookie('odds_stats'); //세로형 if(odds_stats=='2') { $('#main_odds_table').load('/h_race/odd-table-vertical.php?horse_cnt='+horse_cnt,function() { load_ajax() }); }else{ $('#main_odds_table').load('/h_race/odd-table-'+horse_cnt+'.php',function() { load_ajax() }); } } function load_ajax(){ timeout1=get_racing_ajx('init',1); timeout2=get_racing_table_ajx('init',1) } //상세보기토글 function set_detail(is_complex){ if(is_complex!='y'){ $("table.odds-display .odds-history").hide(); }else { $("table.odds-display .odds-history").show(); } } //기본 단승 복승 정보 function get_racing_ajx(mode,recall){ //기분 값 var mins_stats=get_cookie('mins_stats'); if(!mins_stats) mins_stats=15; var remain_minutes=0; var formData = $("#ajaxForm").serialize(); var track, d, f,sign=''; var trdata_ok=false; $.ajax({ type: "POST", url: "/j_race//race.ajax.php?mode="+mode, data:formData, async: false, dataType:'json', success: function(data){ if(data.result==true ){ //트랙정보 trdata=data.datas.trdata remain_minutes=data.datas['remain_minutes']; //지정한 남은 시간 전에는 종료 //if(remain_minutes > mins_stats){ //단승 배열 for(var k in data.datas.dan_ben){ d=data.datas.dan_ben[k]; sr[k]=d; } //복승 배열 for(var k in data.datas.bok_ben){ d=data.datas.bok_ben[k]; dr[k]=d; } //} // trdata_ok=true; }else{ //console.log(data.message); } } }); var old_remain_minutes=$("input[name=remain_minutes]","#ajaxForm").val(); //console.log(trdata['odds_count']); var data_enabled=0; if(trdata_ok){ //경기 취소의 경우 if(trdata['tr_cancel']=='1'){ $('#main_odds').hide(); $('#race_none').show(); $('#race_none .race-noauth').hide(); $('#race_none .race-cancel').show(); $('#race_none .race-waiting,#race_none .race-waiting1,#race_none .race-waiting2').hide(); $('.race-detail').hide(); //취소사유 if(trdata['tr_cancel_note']!=''){ $('#race_none .race-cancel-note').html('('+trdata['tr_cancel_note']+')'); } //권한이 없는 경우 }else if(trdata['data_auth']!='1'){ $('#main_odds').hide(); $('#race_none').show(); $('#race_none .race-noauth').show(); $('#race_none .race-cancel').hide(); $('#race_none .race-waiting').show(); if(remain_minutes <= 0){ $('#race_none .race-waiting1').hide(); $('#race_none .race-waiting2').show(); }else{ $('#race_none .race-waiting1').show(); $('#race_none .race-waiting2').hide(); } $('.race-detail').hide(); //게임이 데이터가 아직 없는 경우 }else if(trdata['odds_count']==0){ $('#main_odds').hide(); $('#race_none').show(); $('#race_none .race-noauth').hide(); $('#race_none .race-cancel').hide(); $('#race_none .race-waiting').show(); $('#race_none .race-waiting1').show(); $('#race_none .race-waiting2').hide(); $('.race-detail').hide(); }else{ $('#main_odds').show(); $('#race_none').hide(); $('.race-detail').show(); $('#race_none .race-waiting2').hide(); data_enabled=1; } //현재 남은 시간 표기 $("input[name=remain_minutes]",'#ajaxForm').html(remain_minutes); //종료여부 표기 var tr_race_end=trdata['tr_race_end']; $("input[name=tr_race_end]",'#ajaxForm').val(tr_race_end); //게임결과 표기 if(trdata['tr_race_order']!==''){ var orders= trdata['tr_race_order'].split(','); var ordersStr= ""+orders[0]+""+orders[1]+""+orders[2]+""; $('#race_result_order').html( ordersStr); $('#race_result_val1').html(trdata['tr_race_result1']); $('#race_result_val2').html(trdata['tr_race_result2']); $('#race_result_val3').html(trdata['tr_race_result3']); $('#race_result_val4').html(trdata['tr_race_result4']); } } //첫 로딩인 경우 모두 채우기 if(mode=='init' && data_enabled==1){ var d,d2,f,history_str,addclass; //테이블 초기화 $(".odds-display td").removeClass('emp-odds up-cell down-cell up down'); $(".odds-display .odds-start").html(''); $(".odds-display .odds-start").removeClass('bg-danger text-white'); $(".odds-display .odds-now").html(''); $(".odds-display .odds-history").html(''); //배당판 형태 구분 var odds_stats= get_cookie('odds_stats'); //복합형 배당판 if(odds_stats!='2'){ /*단승*/ //console.log(remain_minutes); for(var k in sr){ d=sr[k]; //기준값 $('#win_'+k+" .odds-start").html(d['sodds']); var f=d['sodds']*1 && d['nodds']*1 ?(Math.round( (d['sodds']-d['nodds']) /d['sodds']*100)*1):''; if(f!==''){ f=f.toFixed(0); addclass=sign=''; if(f > 0){ sign=" "; addclass='down-cell'; } else if(f < 0){ sign=" "; if(Math.abs(f) < 5){ addclass='up-cell'; sign=" "; } }else if(f == 0) addclass='up-cell'; if(d['sodds'] < 10){ addclass+=' emp-odds'; $("#win_"+k+" .odds-start").addClass('bg-dwarning'); } //현재값 적용 $('#win_'+k).removeClass(); if(addclass!='') $('#win_'+k).addClass(addclass); $('#win_'+k+" .odds-now").html(sign+Math.abs(f)); }else $('#win_'+k+" .odds-now").html(''); var history_str=history_title=''; //console.log(d['sodds']+"/"+ d['sodds']); //히스토리 if(mins_stats==15) history_cnt=6; else history_cnt=5; var prnt_cnt=0; //console.log(d['history']); if(d['sodds'] > 0) { for(var h in d['history']){ //console.log(h+'/'+ d['history'][h]); if(h==mins_stats) continue; if(h==0) continue; if(prnt_cnt >= history_cnt ) break; d2=d['history'][h]?d['history'][h]:'0'; if(d2*1 !=0){ //배당 히스토리 f = (parseFloat(d['sodds'])*1 - parseFloat(d2)*1) / parseFloat(d['sodds'])*100; //f=Math.floor(f*10)/10; f=Math.floor(f); if(f > 0) sign='down'; else if(f < 0) sign='up'; else sign=''; f=Math.abs(f); }else{ f=''; sign='' } history_str=""+f+""+(history_str!=''?"-":"")+history_str; history_title=d2+(history_title!=''?"-":"") + history_title; prnt_cnt++; //console.log(history_str); } } //히스토리 남은칸 공백으로 처리 for(var i=prnt_cnt;i < history_cnt;i++){ history_str+=(history_str!=''?"-":"")+" "; history_title+=(history_title!=''?"-":"") + " "; } $('#win_'+k+" .odds-history").html(history_str); $('#win_'+k).attr('title',history_title); } /*복승*/ for(var k in dr){ d=dr[k]; //기준값 $('#qui_'+k+" .odds-start").html(d['sodds']); var f=d['sodds'] > 0 && d['nodds']*1 > 0 ?(Math.round( (d['sodds']-d['nodds']) / d['sodds']*100)*1):''; if(f!=='' ){ f=f.toFixed(0); addclass=sign=''; if(f > 0){ sign=" "; addclass='down-cell'; } else if(f < 0){ sign=" "; if(Math.abs(f) < 5){ addclass='up-cell'; sign=" "; } }else if(f == 0) addclass='up-cell'; if(d['sodds']*1 < 10){ addclass+=' emp-odds'; $("#qui_"+k+" .odds-start").addClass('bg-danger text-white'); } //현재값 적용 $("#qui_"+k).removeClass(); if(addclass!='') $("#qui_"+k).addClass(addclass); $("#qui_"+k+" .odds-now").html(sign+Math.abs(f)); }else $("#qui_"+k+" .odds-now").html(''); var history_str=history_title=''; //console.log($("#qui_"+k+" .odds-now")); //console.log(k+"/"+d['sodds']+"/"+ d['sodds']); //히스토리 if(mins_stats==15) history_cnt=6; else history_cnt=5; var prnt_cnt=0; if(d['sodds'] > 0) { //console.log(d['history']); for(var h in d['history']){ if(h==mins_stats) continue; if(h==0) continue; if(prnt_cnt >= history_cnt ) break; d2=d['history'][h]?d['history'][h]:' '; if(d2*1 !=0){ //배당 히스토리 f = (parseFloat(d['sodds'])*1 - parseFloat(d2)*1) / parseFloat(d['sodds'])*100; //f=Math.floor(f*10)/10; f=Math.floor(f); if(f > 0) sign='down'; else if(f < 0) sign='up'; else sign=''; f=Math.abs(f); }else{ f=''; sign='' } history_str=""+f+""+(history_str!=''?"-":"")+history_str; history_title=d2+(history_title!=''?"-":"") + history_title; prnt_cnt++; //console.log(history_str); } } //히스토리 남은칸 공백으로 처리 for(var i=prnt_cnt;i < history_cnt;i++){ history_str+=(history_str!=''?"-":"")+" "; history_title+=(history_title!=''?"-":"") + " "; } $('#qui_'+k+" .odds-history").html(history_str); $('#qui_'+k).attr('title',history_title); } //세로형 배당판 }else{ /*복승*/ for(var k in dr){ d=dr[k]; var odds_last = d['sodds'] var f=d['nodds']; var f=d['sodds'] > 0 && d['nodds']*1 > 0 ? (Math.round( (d['sodds']-d['nodds']) / d['sodds']*100)*1):''; if(f!=='' ){ f=f.toFixed(0); addclass=sign=''; if(f > 0){ sign=" "; addclass='down-cell'; } else if( f < 0 ){ sign=" "; if(Math.abs(f) < 5){ addclass='up-cell'; sign=""; } }else if(f == 0) addclass='up-cell'; if(d['sodds']*1 < 10){ //addclass+=' emp-odds'; $("#qui_"+k+" .odds-last").addClass('text-danger'); } //현재값 적용 $("#qui_"+k).removeClass(); if(addclass!='') $("#qui_"+k).addClass(addclass); $("#qui_"+k+" .odds-change").html(sign + Math.abs(f)); }else $("#qui_"+k+" .odds-change").html(''); $('#qui_'+k+" .odds-last").html(d['sodds']); $("#qui_"+k+" .odds-now").html(d['nodds']); } } }else{ //최근 업데이트 시간 var last_minutes=$("input[name=remain_minutes]",'#ajaxForm').val(); } if(trdata['tr_race_end']=='0'){ /* 팝업창 띄우기 */ if(trdata['tr_note']!='' && get_cookie('note'+trdata['tr_no'])==''){ $('#hd_pops_note').attr('data-cname','note'+trdata['tr_no']); $('#hd_pops_note .note-content').html(trdata['tr_note']); $('#hd_pops_note').modal('show'); } else if(trdata['tr_cancel']=='1' && get_cookie('cancelnote'+trdata['tr_no'])==''){ if(trdata['tr_cancel_note']!='' ) var contens=trdata['tr_cancel_note']; else var contents="경주가 취소되었습니다"; $('#hd_pops_note').attr('data-cname','cancelnote'+trdata['tr_no']); $('#hd_pops_note .note-content').html(contents); $('#hd_pops_note').modal('show'); } else if(trdata['tr_delayed']=='1' && get_cookie('delayednote'+trdata['tr_no'])==''){ var contents="경주 시간이 연장되었습니다
"+trdata['tr_race_stime_org']+" → "+trdata['tr_race_stime']; $('#hd_pops_note').attr('data-cname','delayednote'+trdata['tr_no']); $('#hd_pops_note .note-content').html( contents); $('#hd_pops_note').modal('show'); }else if(trdata['tr_broken']=='1' && get_cookie('brokennote'+trdata['tr_no'])==''){ var contents="데이터 수집이 지연되고 있습니다. 확인 후 조치 예정입니다"; $('#hd_pops_note').attr('data-cname','brokennote'+trdata['tr_no']); $('#hd_pops_note .note-content').html( contents); $('#hd_pops_note').modal('show'); } } //미로그인 또는 끝난 경주는 종 if(validuser==0 || tr_race_end=='1' || recall==0 ) return; setTimeout(function() { load_ajax() }, 5000); } //분석 정보 blinkInterval=''; function get_racing_table_ajx(mode,recall){ var trdata=''; var formData = $("#ajaxForm").serialize(); var d, f,sign=''; var trdata; $.ajax({ type: "POST", url: "/j_race//race_table.ajax.php", data:formData, async: false, dataType:'json', success: function(data){ if(data.result==true ){ //console.log(data.message); trdata=data.datas.trdata; $('#tr_race_result').html(data.datas.html0); $('#tr_race_result1').html(data.datas.html1); $('#tr_race_result2').html(data.datas.html2); $('#tr_race_result3').html(data.datas.html3); $('#tr_race_result4').html(data.datas.html4); $('#tr_race_result5').html(data.datas.html5); $('#tr_race_result6').html(data.datas.html6); $('#tr_race_result7').html(data.datas.html7); $('#tr_race_result8').html(data.datas.html8); $('#tr_race_result9').html(data.datas.html9); $('#tr_race_result11').html(data.datas.html11); $('#tr_test_result').html(data.datas.html_test); float_special(1); }else{ console.log(data.message); } } }); var old_remain_minutes=$("input[name=remain_minutes]","#ajaxForm").val(); var tr_race_end=$("input[name=tr_race_end]","#ajaxForm").val(); //동일 조합 반전 $(".cell-hover").hover(function(){ $(this).parents('table').find('td').removeClass('hover font-bold'); var key=$(this).attr('data-key'); if(key=='') return; $(this).parents('table').find("td.cell-hover").each(function(){ if($(this).attr('data-key')==key){ $(this).addClass('hover'); } }) $(this).parents('table').find("td.odds-var").each(function(){ if($(this).attr('data-key')==key){ $(this).addClass('font-bold'); } }) }); clearInterval(blinkInterval); blinkInterval=setInterval("$('.blink').fadeOut().fadeIn();",1000); } function clock() { var date = new Date(); // date Object를 받아오고 var month = date.getMonth(); // 달을 받아옵니다 var clockDate = date.getDate(); // 몇일인지 받아옵니다 var day = date.getDay(); // 요일을 받아옵니다. var week = ['일', '월', '화', '수', '목', '금', '토']; // 요일은 숫자형태로 리턴되기때문에 미리 배열을 만듭니다. var hours = date.getHours(); // 시간을 받아오고 var minutes = date.getMinutes(); // 분도 받아옵니다. var seconds = date.getSeconds(); // 초까지 받아온후 //`${month+1}월 ${clockDate}일 ${week[day]}요일` + //`${hours < 10 ? `0${hours}` : hours}:${minutes < 10 ? `0${minutes }` : minutes }:${seconds < 10 ? `0${seconds }` : seconds }`; var str= (hours < 10 ? '0' + hours: hours)+':'+(minutes < 10 ? '0'+minutes:minutes)+':'+(seconds < 10 ? '0'+seconds:seconds); $("input[name=minutes]","#ajaxForm").val(minutes); $("#clock").html(str); // 월은 0부터 1월이기때문에 +1일을 해주고 // 시간 분 초는 한자리수이면 시계가 어색해보일까봐 10보다 작으면 앞에0을 붙혀주는 작업을 3항연산으로 했습니다. }