﻿var nWheel=1; var modeval=0; var cassette=1; var mphmult=1; 
var modename; var numHubs; var hubname; var nHub; 

function get_rings()
{
  rings = new Array(parseFloat(document.ringform.ring1.value),
                    parseFloat(document.ringform.ring2.value),
                    parseFloat(document.ringform.ring3.value),
                    0);
  return rings;
}

function get_rears()
{ 
  rears = new Array(parseFloat(document.ringform.rear1.value),
                    parseFloat(document.ringform.rear2.value),
                    parseFloat(document.ringform.rear3.value),
                    parseFloat(document.ringform.rear4.value),
                    parseFloat(document.ringform.rear5.value),
                    parseFloat(document.ringform.rear6.value),
                    parseFloat(document.ringform.rear7.value),
                    parseFloat(document.ringform.rear8.value),
                    parseFloat(document.ringform.rear9.value),
                    parseFloat(document.ringform.rear10.value),
                    0);
  return rears;
}

function calc_rings(rings, rears)
{
  wheelval=parseFloat(nWheel);   

  ringData = new Array(5);
  for (n=0; rings[n]>0; n++) {
    ringData[n] = new Array(15);
    for (c=0; rears[c]>0; c++) {   
      ringData[n][c]=mphmult*(rings[n]/rears[c])*wheelval/nMode;
      //  Do rounding at printout instead - ringData[n][c]=rounder(mphmult*(rings[n]/rears[c])*wheelval/nMode);
    }  
  }
  return ringData;
}

function converter()
{       
  var viewInteger, viewString   
  viewInteger=document.ringform.diameter.selectedIndex      
  viewString=document.ringform.diameter.options[viewInteger].value  
  tiresize=document.ringform.diameter.options[viewInteger].text        
  nWheel=parseFloat(viewString) 

  viewInteger=document.ringform.crankdiam.selectedIndex      
  viewString=document.ringform.crankdiam.options[viewInteger].value  
  cranklength=document.ringform.crankdiam.options[viewInteger].text        
  nCrank=parseFloat(viewString) 

  viewInteger=modeval     
  viewString= modeval
  modename= 'Σχέσεις γραναζιών'      
  nMode=parseFloat(viewString)
 
  if(nMode >= 30){
      mphmult = nMode / 336.135
          nMode = 1
  }else{
      mphmult = 1.0
  }

  viewInteger=document.ringform.cassette.selectedIndex      
  viewString=document.ringform.cassette.options[viewInteger].value  
  cassettename=document.ringform.cassette.options[viewInteger].text        
  nCassette=viewString

  viewInteger=document.ringform.hubmodel.selectedIndex      
  viewString=document.ringform.hubmodel.options[viewInteger].value  
  hubname=document.ringform.hubmodel.options[viewInteger].text
  nHub = viewString
  
  if (nMode==0)
      {
      nMode=nCrank
      }
  main()
}

// This function rounds the passed number to one decimal place
// and returns it as a string.  
// Future Enhancement: It should probably check to make sure that
// the variable passed in *is* a number.

function rounder(n)
{
  strGearTemp = String(Math.round(n*10) / 10.0);
  if (strGearTemp.indexOf(".") < 0) {
    strGearTemp += ".0";
  }
  return strGearTemp;
}

function rounder2(n)
{
  strGearTemp = String(Math.round(n*100) / 100.0);
  if (strGearTemp.indexOf(".") < 0) {
    strGearTemp += ".0";
  }
  return strGearTemp;
}

function main()
{
  rings = get_rings();
  if((rings[0] == 0) || isNaN(rings[0])) {
    alert("Enter a chainring value!");
  } else { 
    if (nCassette == "Custom") {
      rears = get_rears();
    } else {
      rears = parse_cassette();
    }
    ringData = calc_rings(rings, rears);    
    hubMult = parse_hubmodel(nHub)
    numHubs = hubMult.length - 1 
    showit(ringData);
  }  
}

function parse_hubmodel(){
  temp_hubs = nHub.split("-",14);
  hubs = new Array(temp_hubs.length+1);
  hubs = temp_hubs;
  hubs[temp_hubs.length] = 0;
  return hubs;
}

function parse_cassette(){
  temp_rears = nCassette.split("-",14);
  rears = new Array(temp_rears.length+1);
  rears = temp_rears;
  rears[temp_rears.length] = 0;
  return rears;
}

//  percentage-rear
function percentrear(){
var percentage=1   
      percentage=rounder(rears[c+1]/rears[c]*100-100)
      if (rears[c]>rears[c+1])
              {
              percentage=rounder(rears[c]/rears[c+1]*100-100)
              }
      if (rears[c+1]>0)
              {      
              document.write("<TR><TD align=center ><FONT SIZE=-1>"+percentage+" %</FONT>"); 
              }
}

// percentage-front
function percentfront1()
{
var percentage=1   
      percentage=rounder(rings[0]/rings[1]*100-100)
      if (rings[0]<rings[1])
              {
              percentage=rounder(rings[1]/rings[0]*100-100)
              }
      if (rings[1]>0)
               {      
              document.write("<TD align=center width=12%><FONT SIZE=-1>"+percentage+" %</FONT></td>"); 
               }
}

function percentfront2()
{
var percentage=1   
      percentage=rounder(rings[1]/rings[2]*100-100)
      if (rings[1]<rings[2])
              {
              percentage=rounder(rings[2]/rings[1]*100-100)
              }
      if (rings[2]>0)
               {      
              document.write("<TD align=center width=12%><FONT SIZE=-1>"+percentage+" %</FONT></td>"); 
               }
}

//--------------------------------------> print the results

function print_it()
{
//   another big loop for a row of tables for the stickers
document.write("<CENTER><table border=0 cellpadding=1><tr>")
if(numHubs > 1){
  for(hub=numHubs-1; hub>=0; hub--) {
  //  first label tables (if more than one)

    if(hub == 0){  
      document.write("<th><font size=-1>High</font></th>");
    }else if(hub == (numHubs-1)){  
      document.write("<th><font size=-1>Low</font></th>");
    }else{
      document.write("<th>-</th>");  
    }
  } 
  document.write("</tr><tr>");
} 
  for(hub=numHubs-1; hub>=0; hub--) {
// ******** loop to calculate sticker
    document.write("<td><table border=1 cellpadding=1 bgcolor=white>");
    for (c=0; rears[c]>0; c++)
    {
         document.write("<tr><th><font size=-1>"+rounder(hubMult[hub]*ringData[0][c])+"</font></th>");      
         if(rings[1]>0)
       {
           document.write("<th><font size=-1>"+rounder(hubMult[hub]*ringData[1][c])+"</font></th>");         
           if(rings[2]>0)
              document.write("<th><font size=-1>"+rounder(hubMult[hub]*ringData[2][c])+"</font></th>")            
         }
        document.write("</tr>")   
   }
   document.write("</table>")
document.write("</td>") 
   }
document.write("</tr></table>")
}

//--------------------------------------> output the results
function showit(ringData)
{   
document.write("<link rel='stylesheet' type='text/css' href='../../../rw_common/themes/notheme/styles.css' />") 
document.write("<CENTER><h4>Για "+tiresize+" λάστιχο με βραχίονες "+cranklength+" μήκος <br />   και " +cassettename+ " κασσέτα <br /> έχουμε αυτές τις σχέσεις:</h4>") 

document.write("<CENTER><table border=0 cellpadding=2><tr>")
if(numHubs > 1){
  for(hub=numHubs-1; hub>=0; hub--) {

    if(hub == 0){  
document.write("<th bgcolor=#5f5f5f><font color=white>"+rounder2(hubMult[hub])+"   (High)</font></TH>");
    }else if(hub == (numHubs-1)){  
document.write("<th bgcolor=#5f5f5f><font color=white>"+rounder2(hubMult[hub])+"   (Low)</font></TH>");
    }else{
document.write("<th bgcolor=#5f5f5f><font color=white>"+rounder2(hubMult[hub])+"</th>");  
    }
  } 
document.write("</tr><tr>");
} 
  for(hub=numHubs-1; hub>=0; hub--) {
  document.write("<td><CENTER><table border=1 cellpadding=2><TR align=center  ><td></td> <th bgcolor=#5f5f5f ><font color=white>"+rings[0]+"</font></th>");

  if(rings[1]>0)
  {
     percentfront1()   
     document.write("<th bgcolor=#5f5f5f><font color=white>"+rings[1]+"</font></th>");
     if(rings[2]>0)
          {
          percentfront2()   
          document.write("<th bgcolor=#5f5f5f ><font color=white>"+rings[2]+"</font></th>");
          }
  }
  document.write("</tr>")
// ******** loop to calculate gears for each sprocket
  for (c=0; rears[c]>0; c++)
  {
        document.write("<tr><th bgcolor=#5f5f5f ><font color=white >"+rears[c]+"</FONT></th><th bgcolor=white>"+rounder(hubMult[hub]*ringData[0][c])+"</th>");      
        if (rings[1]>0)
      {
           document.write("<td></td><th bgcolor=white>"+rounder(hubMult[hub]*ringData[1][c])+"</th>");         
           if (rings[2]>0)
              {
              document.write("<td></td><th bgcolor=white>"+rounder(hubMult[hub]*ringData[2][c])+"</th>")  
              }          
        }
        document.write("</tr>")
        percentrear()   
   }
   document.write("</table>")
   
  document.write("</td>")
}
document.write("</tr></table>") 
document.write("<br /><input type=button VALUE=πίσω onClick=javascript:history.go(-1)>")
document.write("")
document.close ();
}


