function calcDeltas( parent ) {
	var headTopTube = [108, 106, 102, 100];
	var seatTopTube = [73, 74, 78, 80];
	var bottomBracket = [57.3, 59.3, 61.0];
	var comboNum = 0;
	var lugOptions = new Array();
	var lugOptionsDelta = new Array();
	//lugOptions[0] = new Option("[HTT ST BB]   Delta" ,"nothing");
	var lugCombos = "Num\t[HTT\ ST\ BB]\tAngle\tDelta\n";
	var lines = new Array();
	var totalAngles = new Array();
	var angleDeltas = new Array();
	for (var i = 0; i < (headTopTube.length ); i++){
		for(var j = 0; j < (seatTopTube.length ); j++){
			for(var k = 0; k < (bottomBracket.length ); k++){
				comboNum++;
				var currentLine = comboNum +"\t";
				var lugAngles =  "[";
				lugAngles += headTopTube[i] + " ";
 				lugAngles += seatTopTube[j] + " ";
      				lugAngles += bottomBracket[k] + "]";
      				currentLine += lugAngles;
      				var angle = (headTopTube[i]+seatTopTube[j]+bottomBracket[k]+120);
				totalAngles[comboNum] = angle;
      				currentLine +="\t" + angle;
      				var delta = Math.round(100*Math.pow(Math.pow(360-angle,2),0.5))/100;
				angleDeltas[comboNum] = delta;
      				currentLine +="\t" + delta;
      				currentLine +='\n';
				trimedLugAngles = lugAngles.substr(lugAngles.indexOf("[")+1, lugAngles.indexOf("]")-1);
      				lugOptions[comboNum - 1] = new Option(lugAngles+" "+delta, trimedLugAngles);
      				lugOptionsDelta[comboNum] = delta;
      				lugCombos += currentLine;
				lines[comboNum] = currentLine;
    			}
  		}
	}
	var order = sortByDelta(lugOptionsDelta);
	var orderedText = "Num\t[HTT\ ST\ BB]\tAngle\tDelta\n";
	for (var i = 1; i < order.length+1; i++){
		orderedText += lines[order[i]];
	}
	var lugSelect = document.getElementById("lug angles");
	lugSelect.length = 0;
	lugSelect.onchange=calcTubes;
	for (var i = 1; i < lugOptions.length +1; i++) {
		lugSelect.appendChild(lugOptions[order[i]-1]);
	}
	var htAngle = document.getElementById("hTube angle");
	htAngle.value = 73;
	var forkLength = document.getElementById("ff length");	
	forkLength.value = 366;
	document.getElementById("top tube").focus();
	
	
	parent.onclick=hat;	
}


function calcTubes() {
//	var H_TUBE_ANGLE = (73 / 180) * Math.PI;
	var ffLength = document.getElementById("ff length").value;
	var htAngle = document.getElementById("hTube angle").value *Math.PI / 180;
	var tTube = document.getElementById("top tube").value;
	var sTube = document.getElementById("seat tube").value;
	var dTube = document.getElementById("down tube");
	var hTube = document.getElementById("head tube");
	var bbAxle = document.getElementById("bb height");
	var horizontal = document.getElementById("horizontal run");
	var angles = document.getElementById("lug angles").value + " ";
	var angleNums = new Array(3);
	for (var i = 0; i < 3; i++){
		angleNums[i] = Math.PI*2 / 360*parseFloat(angles.substr(0, angles.indexOf(" ")));
		angles = angles.substr(angles.indexOf(" ")+1);
	}
	var triangleLength = Math.pow(sTube*sTube + tTube*tTube - 
		2*sTube*tTube*Math.cos(angleNums[1]) ,0.5);
	var httMiniAngle = Math.asin(Math.sin(angleNums[1])/triangleLength*sTube);
	var bbMiniAngle = Math.asin(Math.sin(angleNums[1])/triangleLength*tTube);
	var htt0Angle = angleNums[0] - httMiniAngle;
	var bb0Angle = angleNums[2] - bbMiniAngle;
	var topDownAngle = Math.PI - bb0Angle - htt0Angle; //This should always be 120 degrees
	var hTubeLength = Math.sin(bb0Angle)/(Math.sin(topDownAngle)/triangleLength);
	hTubeLength = Math.round(hTubeLength*1000)/1000;
	var dTubeLength = Math.sin(htt0Angle)/(Math.sin(topDownAngle)/triangleLength);
	var tTubeHAngle = Math.PI - htAngle - angleNums[0];
	dTubeLength = Math.round(dTubeLength*1000)/1000;
	dTube.value = isNaN(dTubeLength)?"":dTubeLength;
	hTube.value = isNaN(hTubeLength)?"":hTubeLength
	tTubeHozLength = Math.round(Math.cos(tTubeHAngle)*tTube*1000)/1000;
	horizontal.value = tTubeHozLength;

	var hTubeHeight = Math.sin(htAngle)*ffLength;
	var dTubeAngleHoz = topDownAngle - htAngle;
	bbHeight = Math.sin(dTubeAngleHoz)*dTubeLength;
	bbAxleHeight = hTubeHeight - bbHeight;
	bbAxle.value = bbAxleHeight;	
}

function styleComboBox(lugComboBox){
	lugComboBox.style.width="100%";
	lugComboBox.style.height="60%";
	lugComboBox.style.fontFamily="monospace";
	lugComboBox.style.border="none";
	lugComboBox.style.borderBottom="dashed";
	lugComboBox.style.borderWidth="1px";
}

function hat(){
return null;
}

function sortByDelta(angleDeltas){
	// just a bubble sort because I'm lazy and n is small
	var indicies = new Array(length);
	var length = angleDeltas.length;
	for (var i = 0; i < length; i++) {
		indicies[i] = i;
	}
	for (var i = 0; i < length; i++){
		for (var j = i; j < length; j++){
			if (angleDeltas[i] > angleDeltas[j]){
				var tmp = angleDeltas[i];
				angleDeltas[i] = angleDeltas[j];
				angleDeltas[j] = tmp;
				tmp = indicies[i];
				indicies[i] = indicies[j];
				indicies[j] = tmp;
			}
		}
	}
	return indicies;
}