// Body Frame Calculator
// Copyright - Property of DietandFitnessToday.com 2006
// No part of this document may be reproduced in any form

var bodyType= new Array(
	'small frame',
	'medium frame',
	'large frame'
);

function calculateBodyFrame(){

  var frm    = document.mainForm;
  var metre  = frm.inputMetre.value;
  var inches = frm.inputInches.value;
  var feet   = frm.inputFeet.value;
  var inch   = frm.inputInch.value;
  var wrist   = frm.wrist.value;
  var wristUnits   = frm.wristUnits.options[frm.wristUnits.selectedIndex].value;
  var elbow   = frm.elbow.value;
  var elbowUnits   = frm.elbowUnits.options[frm.elbowUnits.selectedIndex].value;
  var gender = frm.gender.options[frm.gender.selectedIndex].value;

  var anum=/(^\d+$)|(^\d+\.\d+$)/;
  var htNo = 0;

  if (wrist && elbow){
    frm.wrist.focus();
    alert('Please type "either" a wrist "or" elbow measure');
    return;
  }

  if (wrist){
    if (!anum.test(wrist)){
      frm.wrist.focus();
      alert('Please type a valid wrist measures');
      return;
    }else{

      if (wristUnits == 'inches'){
	wrist = wrist * 2.54; 
        window.status = wrist;
      }
    }
  }else if (elbow){
    if (!anum.test(elbow)){
      frm.elbow.focus();
      alert('Please type a valid elbow measure');
      return;
    }else{
      if (elbowUnits == 'inches'){
	elbow = elbow * 2.54;
      }
    }
  }

  if (metre){
    htNo++;
  }	
  if (inches){
    htNo++;
  }
  if (feet || inch){
    htNo++;
  }

  if (htNo > 1 || htNo == 0){
    alert('Please enter a single height in one of three rows');
    frm.inputMetre.focus();
    return;
  }

  if (metre){
    if (!anum.test(metre)){
      frm.inputMetre.focus();
      alert('Please type a valid height');
      return;
    }
  }else if(inches){
    if (!anum.test(inches)){
      frm.inputInches.focus();
      alert('Please type a valid height');
      return;
    }else{
      metre = (+metre) + (inches * 0.0254);
    }
  }else if(feet||inch){
    if (feet){
      if (!anum.test(feet)){
	frm.inputFeet.focus();
	alert('Please type a valid height');
	return;
      }else{
	metre = (+metre) + (feet * 0.3048);
      }
    }
    if (inch){
      if (!anum.test(inch)){
	frm.inputInch.focus();
	alert('Please type a valid height');
	return;
      }else{
	metre = metre + (inch * 0.0254);
      }
    }
  }else{
    alert('Please type a valid height');
    return;
  }

  var b = 0;
  var j = 0;

  // check for outside limits
  if (gender == 'male'){
    if (metre < 1.63 && wrist){
      frm.wrist.focus();
      alert('Please use the elbow measure for male heights below 1.63m (5\'5") ');
    }
  }

  if (gender == 'male'){
    // male wrist measure
    if (wrist){
      if (wrist <= 16.5){
	j = 0;
      }else if (wrist <= 19.1){
	j = 1;
      }else{
	j = 2;
      }
    }else if (elbow){
      // male elbow measure
      if (metre < 1.58 && metre >=1.55){
	if (elbow < 6.4){
	  j = 0;
	}else if (elbow < 7.3){
	  j = 1;
	}else{
	  j = 2;
	}
      }else if (metre < 1.68){
	if (elbow < 6.7){
	  j = 0;
	}else if (elbow < 7.3){
	  j = 1;
	}else{
	  j = 2;
	}
      }else if (metre < 1.78){
	if (elbow < 7.0){
	  j = 0;
	}else if (elbow < 7.5){
	  j = 1;
	}else{
	  j = 2;
	}
      }else if (metre < 1.88){
	if (elbow < 7.0){
	  j = 0;
	}else if (elbow < 7.9){
	  j = 1;
	}else{
	  j = 2;
	}
      }else if (metre < 1.98){
	if (elbow < 7.3){
	  j = 0;
	}else if (elbow < 8.3){
	  j = 1;
	}else{
	  j = 2;
	}
      }else if (metre >= 1.98){
	// very tall people are large frame
	j = 3;
      }else{
	alert('There is no measure for males below 1.55m(5\'2")');
      } 
    }

  }else{
    // female wrist measure
    if (wrist){
      if (metre < 1.55){
	if (wrist < 14.0){
	  j = 0;
	}else if (wrist < 14.6){
	  j = 1;
	}else{
	  j = 2;
	}
      }else if (metre < 1.63){
	if (wrist < 15.2){
	  j = 0;
	}else if(wrist <15.9){
	  j = 1;
	}else{
	  j = 2;
	}
      }else{
	if (wrist < 15.9){
	  j = 0;
	}else if(wrist <16.5){
	  j = 1;
	}else{
	  j = 2;
	}
      }
    }else if (elbow){
      // female elbow measure
      if (metre < 1.48 && metre >= 1.46){
	if (elbow < 5.7){
	  j = 0;
	}else if (elbow < 6.4){
	  j = 1;
	}else{
	  j = 2;
	}
      }else if (metre < 1.58){
	if (elbow < 5.7){
	  j = 0;
	}else if (elbow < 6.4){
	  j = 1;
	}else{
	  j = 2;
	}
      }else if (metre < 1.68){
	if (elbow < 6.0){
	  j = 0;
	}else if (elbow < 6.7){
	  j = 1;
	}else{
	  j = 2;
	}
      }else if (metre < 1.78){
	if (elbow < 6.0){
	  j = 0;
	}else if (elbow < 6.7){
	  j = 1;
	}else{
	  j = 2;
	}
      }else if (metre < 1.90){
	if (elbow < 6.3){
	  j = 0;
	}else if (elbow < 7.0){
	  j = 1;
	}else{
	  j = 2;
	}
      }else{
	alert('There is no measure for females below 1.46m(4\'10") or above 1.90m(6\'4")');
      }
    }
  }

  frm.bodyFrame.value = bodyType[j];
}

function clearAllFields(){
  var frm = document.mainForm;
  frm.inputMetre.value='';
  frm.inputInches.value='';
  frm.inputFeet.value='';
  frm.inputInch.value='';

  frm.wrist.value='';
  frm.elbow.value='';

  frm.bodyFrame.value='';
}

function sprintf(num, decimalNum){
  var tmpNum = num;

  // Return the right number of decimal places
  tmpNum *= Math.pow(10,decimalNum);
  tmpNum = Math.floor(tmpNum);
  tmpNum /= Math.pow(10,decimalNum);
  var tmpStr = new String(tmpNum);

  return tmpStr;
}

