  var _url = "http://www.racingaspirations.com/wheelfrequency.php?method=direct";
  var _CW_M = 0;
  var _CW_I = 0;
  var _UW_M = 0;
  var _UW_I = 0;
  var _SL = 1;
  var _CR_M = 0;
  var _CR_I = 0;
  var _AB_M = 0;
  var _AB_I = 0;
  var _CB_M = 0;
  var _CB_I = 0;
  var _CW_VALUE = "";
  var _UW_VALUE = "";
  var _CR_VALUE = "";
  var _SL_TYPE = "";
  var _SL_VALUE = "";
  var _ST_VALUE = "";
  var _AB_VALUE = "";
  var _CB_VALUE = "";

  function inpChg(obj)
  {
    var val = parseFloat(obj.value);
    if(isNaN(val))
    {
      obj.value = 0;
      obj.onchange();
    }
    else
    {
      var oid = obj.getAttribute("id");
      if(oid=="CW_M")
      {
        _CW_M = round(val);
        _CW_I = convertKGtoLB(_CW_M);
        obj.value = _CW_M;
        obj.style.color = "black";
        document.getElementById("CW_I").value = _CW_I;
        document.getElementById("CW_I").style.color = "gray";
        _CW_VALUE = (_CW_M==0) ? "" : "&cwm=" + _CW_M;
      }
      else if(oid=="CW_I")
      {
        _CW_I = round(val);
        _CW_M = convertLBtoKG(_CW_I);
        obj.value = _CW_I;
        obj.style.color = "black";
        document.getElementById("CW_M").value = _CW_M;
        document.getElementById("CW_M").style.color = "gray";
        _CW_VALUE = (_CW_I==0) ? "" : "&cwi=" + _CW_I;
      }
      else if(oid=="UW_M")
      {
        _UW_M = round(val);
        _UW_I = convertKGtoLB(_UW_M);
        obj.value = _UW_M;
        obj.style.color = "black";
        document.getElementById("UW_I").value = _UW_I;
        document.getElementById("UW_I").style.color = "gray";
        _UW_VALUE = (_UW_M==0) ? "" : "&uwm=" + _UW_M;
      }
      else if(oid=="UW_I")
      {
        _UW_I = round(val);
        _UW_M = convertLBtoKG(_UW_I);
        obj.value = _UW_I;
        obj.style.color = "black";
        document.getElementById("UW_M").value = _UW_M;
        document.getElementById("UW_M").style.color = "gray";
        _UW_VALUE = (_UW_I==0) ? "" : "&uwi=" + _UW_I;
      }
      else if(oid=="SL")
      {
        _SL = round(val);
        obj.value = _SL;
        _SL_VALUE = (_SL==0) ? "" : "&sl=" + _SL;
      }
      else if(oid=="CR_M")
      {
        _CR_M = round(val);
        _CR_I = convertKGMMtoLBIN(_CR_M);
        obj.value = _CR_M;
        obj.style.color = "black";
        document.getElementById("CR_I").value = _CR_I;
        document.getElementById("CR_I").style.color = "gray";
        _CR_VALUE = (_CR_M==0) ? "" : "&crm=" + _CR_M;
      }
      else if(oid=="CR_I")
      {
        _CR_I = round(val);
        _CR_M = convertLBINtoKGMM(_CR_I);
        obj.value = _CR_I;
        obj.style.color = "black";
        document.getElementById("CR_M").value = _CR_M;
        document.getElementById("CR_M").style.color = "gray";
        _CR_VALUE = (_CR_I==0) ? "" : "&cri=" + _CR_I;
      }
      else if(oid=="AB_M")
      {
        _AB_M = round(val);
        _AB_I = convertMMtoIN(_AB_M);
        obj.value = _AB_M;
        obj.style.color = "black";
        document.getElementById("AB_I").value = _AB_I;
        document.getElementById("AB_I").style.color = "gray";
        _AB_VALUE = (_AB_M==0) ? "" : "&abm=" + _AB_M;
      }
      else if(oid=="AB_I")
      {
        _AB_I = round(val);
        _AB_M = convertINtoMM(_AB_I);
        obj.value = _AB_I;
        obj.style.color = "black";
        document.getElementById("AB_M").value = _AB_M;
        document.getElementById("AB_M").style.color = "gray";
        _AB_VALUE = (_AB_I==0) ? "" : "&abi=" + _AB_I;
      }
      else if(oid=="CB_M")
      {
        _CB_M = round(val);
        _CB_I = convertMMtoIN(_CB_M);
        obj.value = _CB_M;
        obj.style.color = "black";
        document.getElementById("CB_I").value = _CB_I;
        document.getElementById("CB_I").style.color = "gray";
        _CB_VALUE = (_CB_M==0) ? "" : "&cbm=" + _CB_M;
      }
      else if(oid=="CB_I")
      {
        _CB_I = round(val);
        _CB_M = convertINtoMM(_CB_I);
        obj.value = _CB_I;
        obj.style.color = "black";
        document.getElementById("CB_M").value = _CB_M;
        document.getElementById("CB_M").style.color = "gray";
        _CB_VALUE = (_CB_I==0) ? "" : "&cbi=" + _CB_I;
      }

      doCalcs();
    }
  }
  // ------------------------------------------------------
  function doCalcs()
  {
  	var _SW_M  = document.getElementById("SW_M");
  	var _SW_I  = document.getElementById("SW_I");
  	var _ECR_M = document.getElementById("ECR_M");
  	var _ECR_I = document.getElementById("ECR_I");
  	var _WR_M = document.getElementById("WR_M");
  	var _WR_I = document.getElementById("WR_I");
  	var _SD_M = document.getElementById("SD_M");
  	var _SD_I = document.getElementById("SD_I");
  	var _CPM = document.getElementById("CPM");
  	var _NF = document.getElementById("NF");

  	var _AB_Mc = document.getElementById("AB_M");
  	var _CB_Mc = document.getElementById("CB_M");
	if(_AB_Mc && _CB_Mc)
	{
		_SL = (!isNaN(round(parseFloat(_AB_Mc.value) / parseFloat(_CB_Mc.value)))) ? round(parseFloat(_AB_Mc.value) / parseFloat(_CB_Mc.value)) : 1;
		document.getElementById("SLC").value = _SL;
	}

  	// sprung weight
    _SW_I.value = (!isNaN(round(_CW_I - _UW_I))) ? round(_CW_I - _UW_I) : 0;
  	//_SW_M.value = (!isNaN(round(_CW_M - _UW_M))) ? round(_CW_M - _UW_M) : 0;
  	_SW_M.value = (!isNaN(_SW_I.value)) ? convertLBtoKG(_SW_I.value) : 0;

  	// effective coil rate
    _ECR_I.value = (!isNaN(round(_CR_I / _SL))) ? round(_CR_I / _SL) : 0;
    //_ECR_M.value = (!isNaN(round(_CR_M / _SL))) ? round(_CR_M / _SL) : 0;
  	_ECR_M.value = (!isNaN(_ECR_I.value)) ? convertLBINtoKGMM(_ECR_I.value) : 0;

    // wheel rate
    _WR_I.value = (!isNaN(round(_CR_I / (_SL * _SL)))) ? round(_CR_I / (_SL * _SL)) : 0;
    //_WR_M.value = (!isNaN(round(_CR_M / (_SL * _SL)))) ? round(_CR_M / (_SL * _SL)) : 0;
  	_WR_M.value = (!isNaN(_WR_I.value)) ? convertLBINtoKGMM(_WR_I.value) : 0;

    // static deflection
    _SD_I.value = (!isNaN(round(_SW_I.value / _WR_I.value))) ? round(_SW_I.value / _WR_I.value) : 0;
    //_SD_M.value = (!isNaN(round(_SW_M.value / _WR_M.value))) ? round(_SW_M.value / _WR_M.value) : 0;
    _SD_M.value = (!isNaN(_SD_I.value)) ? convertINtoMM(_SD_I.value) : 0;

    // wheel frequency
    _CPM.value = (!isNaN(round(187.8 / Math.sqrt(_SD_I.value)))) ? round(187.8 / Math.sqrt(_SD_I.value)) : 0;
    _NF.value = (!isNaN(round(_CPM.value / 60))) ? round(_CPM.value / 60) : 0;

    document.getElementById("link").value = _url + _CW_VALUE + _UW_VALUE + _CR_VALUE + _SL_TYPE + _SL_VALUE + _ST_VALUE + _AB_VALUE + _CB_VALUE;

  }
  // ------------------------------------------------------
  function convertMMtoIN(v)
  {
    return round(v / 25.4);
  }
  // ------------------------------------------------------
  function convertINtoMM(v)
  {
    return round(v * 25.4);
  }
  // ------------------------------------------------------
  function convertKGtoLB(v)
  {
    return round(v * 2.2);
  }
  // ------------------------------------------------------
  function convertLBtoKG(v)
  {
    return round(v / 2.2);
  }
  // ------------------------------------------------------
  function convertLBINtoKGMM(v)
  {
    return round((v / 2.2) / 25.4);
  }
  // ------------------------------------------------------
  function convertKGMMtoLBIN(v)
  {
    return round((v * 2.2) * 25.4);
  }
  // ------------------------------------------------------
  function round(v)
  {
	return parseInt(v * 100) / 100;
  }
  // ------------------------------------------------------
  function suspenionLeverageWiz()
  {
    var opt1 = document.getElementById("SLO1");
    var opt2 = document.getElementById("SLO2");
    var opt3 = document.getElementById("SLO3");
    var suspensiontype = document.getElementById("suspensiontype");
    if(opt1.checked)
    {
    	if(!document.getElementById("SL"))
    	{
    	  _SL_TYPE = "&slt=1";
    	  _SL_VALUE = "&sl=1"
    	  _SL = 1;
    	  _ST_VALUE = "";
    	  _AB_VALUE = "";
    	  _CB_VALUE = "";
    	  removeImgRow();
    	  removeSuspenionTypeRow();
    	  removeABRow();
    	  removeCBRow();
    	  removeSLCratioRow();
    	  createSLratioRow();
    	}
    }
    else if(opt2.checked)
    {
    	if(!document.getElementById("ST"))
    	{
    	  _SL_TYPE = "&slt=2";
    	  _SL_VALUE = ""
    	  _SL = 0;
    	  _ST_VALUE = "";
    	  _AB_VALUE = "";
    	  _CB_VALUE = "";
    	  removeImgRow();
    	  removeSLratioRow();
    	  createSuspenionTypeRow();
    	}
    }
    else if(opt3.checked)
    {
    	_SL_TYPE = "&slt=3";
    	_SL_VALUE = ""
    	_SL = 1;
   	    _ST_VALUE = "";
   	    _AB_VALUE = "";
   	    _CB_VALUE = "";
   	    removeImgRow();
    	removeSLratioRow();
    	removeSuspenionTypeRow();
    	removeABRow();
    	removeCBRow();
    	removeSLCratioRow();
    }
    else
    {
    	_SL_TYPE = "";
    	_SL_VALUE = ""
    	_SL = 0;
   	    _ST_VALUE = "";
   	    _AB_VALUE = "";
   	    _CB_VALUE = "";
   	    removeImgRow();
    	removeSLratioRow();
    	removeSuspenionTypeRow();
    	removeABRow();
    	removeCBRow();
    	removeSLCratioRow();
    }
    doCalcs();
  }
  // ------------------------------------------------------
  function suspenionLeverageWiz2(obj)
  {
  	var v = obj.options[obj.selectedIndex].value;
  	if(v=="dblwishbone1")
  	{
  		_ST_VALUE = "&st=dblwishbone1";
  		_SL = 0;
  		_AB_VALUE = "";
  		_CB_VALUE = "";
  		createImgRow("wheelfrequency/dblwishbone1.jpg");
  		createABRow();
  		createCBRow();
  		createSLCratioRow();
  	}
  	else if(v=="dblwishbone2")
  	{
  		_ST_VALUE = "&st=dblwishbone2";
  		_SL = 0;
  		_AB_VALUE = "";
  		_CB_VALUE = "";
  		createImgRow("wheelfrequency/dblwishbone2.jpg");
  		createABRow();
  		createCBRow();
  		createSLCratioRow();
  	}
  	else if(v=="mcpherson")
  	{
  		_ST_VALUE = "&st=mcpherson";
  		_SL = 0;
  		_AB_VALUE = "";
  		_CB_VALUE = "";
  		createImgRow("wheelfrequency/mcpherson.jpg");
  		createABRow();
  		createCBRow();
  		createSLCratioRow();
  	}
  	else if(v=="solid")
  	{
  		_ST_VALUE = "&st=solid";
  		_SL = 1;
  		_AB_VALUE = "";
  		_CB_VALUE = "";
  		removeImgRow();
  		removeABRow();
  		removeCBRow();
  		createSLCratioRow2();
  	}
  	else
  	{
  		_ST_VALUE = "";
  		_SL = 0;
  		_AB_VALUE = "";
  		_CB_VALUE = "";
  		removeImgRow();
  		removeABRow();
  		removeCBRow();
  		removeSLCratioRow();
  	}
  	doCalcs();
  }
  // ------------------------------------------------------
  function createImgRow(imgsrc)
  {
  	removeImgRow();
    var tbl = document.getElementById("calcTable");
    var r = tbl.insertRow(19);
    r.style.backgroundColor="#f2a640";
    var c1 = r.insertCell(0);
    c1.innerHTML = "&nbsp;";
    var c2 = r.insertCell(1);
    c2.innerHTML = "<img id='SUSIMG' src='"+imgsrc+"' />";
    c2.colSpan=2;
  }
  // ------------------------------------------------------
  function removeImgRow()
  {
    var r = document.getElementById("SUSIMG");
    if(r)
    {
      var rr = r.parentNode.parentNode;
      rr.parentNode.removeChild(rr);
    }
  }
  // ------------------------------------------------------
  function createABRow()
  {
    if(!document.getElementById("AB_M"))
    {
      var tbl = document.getElementById("calcTable");
      var r = tbl.insertRow(20);
      r.style.backgroundColor="#f2a640";
      var c1 = r.insertCell(0);
      c1.innerHTML = "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Distance between A and B";
      var c2 = r.insertCell(1);
      c2.innerHTML = "<input id='AB_M' size='6' onchange='inpChg(this)'> mm";
      var c3 = r.insertCell(2);
      c3.innerHTML = "<input id='AB_I' size='6' onchange='inpChg(this)'> in";
    }
  }
  // ------------------------------------------------------
  function removeABRow()
  {
    var r = document.getElementById("AB_M");
    if(r)
    {
      var rr = r.parentNode.parentNode;
      rr.parentNode.removeChild(rr);
    }
  }
  // ------------------------------------------------------
  function createCBRow()
  {
    if(!document.getElementById("CB_M"))
    {
      var tbl = document.getElementById("calcTable");
      var r = tbl.insertRow(21);
      r.style.backgroundColor="#f2a640";
      var c1 = r.insertCell(0);
      c1.innerHTML = "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Distance between C and B";
      var c2 = r.insertCell(1);
      c2.innerHTML = "<input id='CB_M' size='6' onchange='inpChg(this)'> mm";
      var c3 = r.insertCell(2);
      c3.innerHTML = "<input id='CB_I' size='6' onchange='inpChg(this)'> in";
    }
  }
  // ------------------------------------------------------
  function removeCBRow()
  {
    var r = document.getElementById("CB_M");
    if(r)
    {
      var rr = r.parentNode.parentNode;
      rr.parentNode.removeChild(rr);
    }
  }
  // ------------------------------------------------------
  function createSLCratioRow2()
  {
    if(!document.getElementById("SLC"))
    {
      var tbl = document.getElementById("calcTable");
      var r = tbl.insertRow(19);
      r.style.backgroundColor="#f2a640";
      var c1 = r.insertCell(0);
      c1.innerHTML = "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Calculated Ratio";
      var c2 = r.insertCell(1);
      c2.innerHTML = "<input id='SLC' size='6' value='1' READONLY> :1";
      c2.colSpan=2;
    }
  }
  // ------------------------------------------------------
  function createSLCratioRow()
  {
    if(!document.getElementById("SLC"))
    {
      var tbl = document.getElementById("calcTable");
      var r = tbl.insertRow(22);
      r.style.backgroundColor="#f2a640";
      var c1 = r.insertCell(0);
      c1.innerHTML = "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Calculated Ratio";
      var c2 = r.insertCell(1);
      c2.innerHTML = "<input id='SLC' size='6' READONLY> :1";
      c2.colSpan=2;
    }
  }
  // ------------------------------------------------------
  function removeSLCratioRow()
  {
    var r = document.getElementById("SLC");
    if(r)
    {
      var rr = r.parentNode.parentNode;
      rr.parentNode.removeChild(rr);
    }
  }
  // ------------------------------------------------------
  function createSLratioRow()
  {
    if(!document.getElementById("SL"))
    {
      var tbl = document.getElementById("calcTable");
      var r = tbl.insertRow(17);
      r.style.backgroundColor="#f2a640";
      var c1 = r.insertCell(0);
      c1.innerHTML = "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ratio";
      var c2 = r.insertCell(1);
      c2.innerHTML = "<input id='SL' size='6' value='1' onchange='inpChg(this)'> :1";
      c2.colSpan=2;
    }
  }
  // ------------------------------------------------------
  function removeSLratioRow()
  {
    var r = document.getElementById("SL");
    if(r)
    {
      var rr = r.parentNode.parentNode;
      rr.parentNode.removeChild(rr);
    }
  }
  // ------------------------------------------------------
  function createSuspenionTypeRow()
  {
    if(!document.getElementById("ST"))
    {
      var tbl = document.getElementById("calcTable");
      var r = tbl.insertRow(18);
      r.style.backgroundColor="#f2a640";
      var c1 = r.insertCell(0);
      c1.innerHTML = "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Suspension Layout";
      var c2 = r.insertCell(1);
      c2.innerHTML = "<select id='ST' name='ST' onchange='suspenionLeverageWiz2(this)'><option value=''>(Select an option)</option><option value='dblwishbone1'>Double wishbone</option><option value='dblwishbone2'>Double wishbone 2</option><option value='mcpherson'>McPherson</option><option value='solid'>Solid axle</option></select>";
      c2.colSpan=2;
    }
  }
  // ------------------------------------------------------
  function removeSuspenionTypeRow()
  {
    var r = document.getElementById("ST");
    if(r)
    {
      var rr = r.parentNode.parentNode;
      rr.parentNode.removeChild(rr);
    }
  }