var MM_PER_MILE=1609344;
var RR_Distance = 0;
var DG_Ratio = 0;
var GB_Ratios = 0;
var FD_Ratio = 0; 
var SP_Ratio = 0;
var WP_Ratio = 0; 

function move_box(an, box) {
  var cleft = 0;
  var ctop = 0;
  var obj = an;
  while (obj.offsetParent) {
    cleft += obj.offsetLeft;
    ctop += obj.offsetTop;
    obj = obj.offsetParent;
  }
  box.style.left = cleft + 'px';
  ctop += an.offsetHeight + 8;
  if (document.body.currentStyle &&
    document.body.currentStyle['marginTop']) {
    ctop += parseInt(
      document.body.currentStyle['marginTop']);
  }
  box.style.top = ctop + 'px';
}

function show_hide_box(an, text) {
  var href = an.href;
  var boxdiv = document.getElementById(href);

  if (boxdiv != null) {
    if (boxdiv.style.display=='none') {
      move_box(an, boxdiv);
      boxdiv.style.display='block';
      document.body.removeChild(boxdiv);
    } else
     boxdiv.style.display='none';
    return false;
  }

  boxdiv = document.createElement('div');
  boxdiv.setAttribute('id', href);
  boxdiv.style.display = 'block';
  boxdiv.style.position = 'absolute';
  boxdiv.style.border = '2px dotted';
  boxdiv.style.backgroundColor = '#000000';
  boxdiv.style.color = '#FF6600';
  
  boxdiv.appendChild(document.createTextNode(text))
  document.body.appendChild(boxdiv);
  move_box(an, boxdiv);

  return false;
}

function calc_speeds() {
<!-- Get Rolling distance for tyre size -->
 RR_Distance = document.getElementById('tyres').value;
 if ( RR_Distance == "" ) return ;
 DG_Ratio = document.getElementById('drops').value
 GB_Ratios = document.getElementById('box').value
 if ( GB_Ratios == "" ) return; 
 FD_Ratio = document.getElementById('diff').value
 if ( FD_Ratio == "" ) return; 
 SP_Ratio = document.getElementById('speedo').value
 WP_Ratio = document.getElementById('worm').value
 document.speed.G1_1000.value =  get_speed("1","1000")
 document.speed.G1_2000.value =  get_speed("1","2000")
 document.speed.G1_3000.value =  get_speed("1","3000")
 document.speed.G1_4000.value =  get_speed("1","4000")
 document.speed.G1_5000.value =  get_speed("1","5000")
 document.speed.G1_5500.value =  get_speed("1","5500")
 document.speed.G1_6000.value =  get_speed("1","6000")
 document.speed.G1_6500.value =  get_speed("1","6500")
 document.speed.G1_7000.value =  get_speed("1","7000")
 document.speed.G1_7500.value =  get_speed("1","7500")
 document.speed.G1_8000.value =  get_speed("1","8000")
 document.speed.G2_1000.value =  get_speed("2","1000")
 document.speed.G2_2000.value =  get_speed("2","2000")
 document.speed.G2_3000.value =  get_speed("2","3000")
 document.speed.G2_4000.value =  get_speed("2","4000")
 document.speed.G2_5000.value =  get_speed("2","5000")
 document.speed.G2_5500.value =  get_speed("2","5500")
 document.speed.G2_6000.value =  get_speed("2","6000")
 document.speed.G2_6500.value =  get_speed("2","6500")
 document.speed.G2_7000.value =  get_speed("2","7000")
 document.speed.G2_7500.value =  get_speed("2","7500")
 document.speed.G2_8000.value =  get_speed("2","8000")
 document.speed.G3_1000.value =  get_speed("3","1000")
 document.speed.G3_2000.value =  get_speed("3","2000")
 document.speed.G3_3000.value =  get_speed("3","3000")
 document.speed.G3_4000.value =  get_speed("3","4000")
 document.speed.G3_5000.value =  get_speed("3","5000")
 document.speed.G3_5500.value =  get_speed("3","5500")
 document.speed.G3_6000.value =  get_speed("3","6000")
 document.speed.G3_6500.value =  get_speed("3","6500")
 document.speed.G3_7000.value =  get_speed("3","7000")
 document.speed.G3_7500.value =  get_speed("3","7500")
 document.speed.G3_8000.value =  get_speed("3","8000")
 document.speed.G4_1000.value =  get_speed("4","1000")
 document.speed.G4_2000.value =  get_speed("4","2000")
 document.speed.G4_3000.value =  get_speed("4","3000")
 document.speed.G4_4000.value =  get_speed("4","4000")
 document.speed.G4_5000.value =  get_speed("4","5000")
 document.speed.G4_5500.value =  get_speed("4","5500")
 document.speed.G4_6000.value =  get_speed("4","6000")
 document.speed.G4_6500.value =  get_speed("4","6500")
 document.speed.G4_7000.value =  get_speed("4","7000")
 document.speed.G4_7500.value =  get_speed("4","7500")
 document.speed.G4_8000.value =  get_speed("4","8000")
 document.speed.G5_1000.value =  get_speed("5","1000")
 document.speed.G5_2000.value =  get_speed("5","2000")
 document.speed.G5_3000.value =  get_speed("5","3000")
 document.speed.G5_4000.value =  get_speed("5","4000")
 document.speed.G5_5000.value =  get_speed("5","5000")
 document.speed.G5_5500.value =  get_speed("5","5500")
 document.speed.G5_6000.value =  get_speed("5","6000")
 document.speed.G5_6500.value =  get_speed("5","6500")
 document.speed.G5_7000.value =  get_speed("5","7000")
 document.speed.G5_7500.value =  get_speed("5","7500")
 document.speed.G5_8000.value =  get_speed("5","8000")
 document.speed.G6_1000.value =  get_speed("6","1000")
 document.speed.G6_2000.value =  get_speed("6","2000")
 document.speed.G6_3000.value =  get_speed("6","3000")
 document.speed.G6_4000.value =  get_speed("6","4000")
 document.speed.G6_5000.value =  get_speed("6","5000")
 document.speed.G6_5500.value =  get_speed("6","5500")
 document.speed.G6_6000.value =  get_speed("6","6000")
 document.speed.G6_6500.value =  get_speed("6","6500")
 document.speed.G6_7000.value =  get_speed("6","7000")
 document.speed.G6_7500.value =  get_speed("6","7500")
 document.speed.G6_8000.value =  get_speed("6","8000")

 document.getElementById('G1st_1').innerHTML = draw_graph(get_speed2(1,1000),1000,get_speed2(1,9000),9000,"white");
 document.getElementById('G2nd_1').innerHTML = draw_graph(get_speed2(2,1500),1500,get_speed2(2,9000),9000,"white");
 document.getElementById('G3rd_1').innerHTML = draw_graph(get_speed2(3,2000),2000,get_speed2(3,9000),9000,"white");
 document.getElementById('G4th_1').innerHTML = draw_graph(get_speed2(4,2500),2500,get_speed2(4,9000),9000,"white");
 document.getElementById('G5th_1').innerHTML = draw_graph(get_speed2(5,2500),2500,get_speed2(5,9000),9000,"white");
 document.getElementById('G6th_1').innerHTML = draw_graph(get_speed2(6,2500),2500,get_speed2(6,9000),9000,"white");

 return 
}
function get_speed(gear,revs) {
 idx= ( gear - 1 ) * 6 
 GR=GB_Ratios.substr(idx,5)
 if ( GR == "" ) { return "n/a" }
 TR=GR * DG_Ratio * FD_Ratio 
 WTPM=revs / TR
 WTPH=WTPM * 60
 Dist_mm = WTPH * RR_Distance
 Dist_miles = Dist_mm / MM_PER_MILE
 IS=revs/DG_Ratio
 OS=IS/GR
 CS=OS/WP_Ratio
 S_MPH=( CS / SP_Ratio ) * 60
 if ( S_MPH != "Infinity" ) { 
   MPH = Math.round(Dist_miles)+"("+Math.round(S_MPH)+")" }
 else {
   MPH = Math.round(Dist_miles) } 
return MPH
}

function get_speed2(gear,revs) {
 idx= ( gear - 1 ) * 6 
 GR=GB_Ratios.substr(idx,5)
 TR=GR * DG_Ratio * FD_Ratio 
 WTPM=revs / TR
 WTPH=WTPM * 60
 Dist_mm = WTPH * RR_Distance
 Dist_miles = Dist_mm / MM_PER_MILE
 MPH = Math.round(Dist_miles)
return MPH
}

function draw_graph(lspeed,lrpm,hspeed,hrpm,color) {
 y=lrpm/40;
 y=250-y;
 y_max=hrpm/40;
 y_max=250-y_max;
 y_scale=y-y_max;
 x=lspeed*4;
 max_x=hspeed*4;
 Y_ratio=max_x-x;
 Y_ratio=y_scale/Y_ratio;
 Y_ratio=Y_ratio*3;
 if ( max_x > 400 ) max_x = 400;
 line_html='';
 for(xoffset=x;x<=(max_x);x=x+3) {
  MPH = x / 4
  MPH=Math.round(MPH)
  RPM=250-y
  RPM=RPM*40
  RPM=Math.round(RPM)
  msg='"'+MPH+'mph-'+RPM+'rpm"'
  line_html=line_html+'<div onMouseOver=show_hide_box(this,'+msg+') style="position:absolute;font-size:1px;z-index:3;left:'+x+'px;top:'+y+'px;width:5px;height:5px;background-color:'+color+';"></div>';
  y=y-Y_ratio;
 }
return line_html;
} 

function save_reference() {
 document.getElementById('G1st_2').innerHTML = draw_graph(get_speed2(1,1000),1000,get_speed2(1,9000),9000,"#00FF00");
 document.getElementById('G2nd_2').innerHTML = draw_graph(get_speed2(2,1500),1500,get_speed2(2,9000),9000,"#00FF00");
 document.getElementById('G3rd_2').innerHTML = draw_graph(get_speed2(3,2000),2000,get_speed2(3,9000),9000,"#00FF00");
 document.getElementById('G4th_2').innerHTML = draw_graph(get_speed2(4,2500),2500,get_speed2(4,9000),9000,"#00FF00");
 document.getElementById('G5th_2').innerHTML = draw_graph(get_speed2(5,2500),2500,get_speed2(5,9000),9000,"#00FF00");
 document.getElementById('G5th_2').innerHTML = draw_graph(get_speed2(6,2500),2500,get_speed2(6,9000),9000,"#00FF00");
 document.getElementById('G1st_1').innerHTML = "&nbsp;";
 document.getElementById('G2nd_1').innerHTML = "&nbsp;";
 document.getElementById('G3rd_1').innerHTML = "&nbsp;";
 document.getElementById('G4th_1').innerHTML = "&nbsp;";
 document.getElementById('G5th_1').innerHTML = "&nbsp;";
 document.getElementById('G6th_1').innerHTML = "&nbsp;";
return
}