// JavaScript Document
jQuery(document).ready(function(){
	// make tabs out ul with class tabs
	var $tabs = $('#quote_steps > ul').tabs({
		fx: {
			opacity: 'toggle',
  			duration: 'fast'
		},
		show: function(e, ui) {
			if(ui.panel.id == "quote_steps_measurements") {
				refreshSliders();
			}
			//console.log("ui.panel.id " + ui.panel.id);
		}
	});
	$('#quote_tabs > ul').tabs({
		fx: {
			opacity: 'toggle',
  			duration: 'fast'
		},
		show: function(e, ui) {
			refreshSliders();
			//console.log("ui.panel.id " + ui.panel.id);
		}
	});
				
	// create the sliders
	initSliders();
	
	// butonns to move between tabs
	//var $tabs = $('#quote_steps > ul').tabs(); // first tab selected

	$('#button_rubberhog_design_1').click(function() { // bind click event to button
		$tabs.tabs('select', 1); // switch to second tab
		return false;
	});
	$('#button_rubberhog_design_2').click(function() { // bind click event to button
		$tabs.tabs('select', 2); // switch to third tab
		return false;
	});
	$('#button_rubberhog_design_3').click(function() { // bind click event to button
		$tabs.tabs('select', 0); // switch to first tab
		return false;
	});
	$('#button_rubberhog_design_4').click(function() { // bind click event to button
		$tabs.tabs('select', 2); // switch to third tab
		return false;
	});
	$('#button_rubberhog_design_5').click(function() { // bind click event to button
		$tabs.tabs('select', 0); // switch to first tab
		return false;
	});
	$('#button_rubberhog_design_6').click(function() { // bind click event to button
		$tabs.tabs('select', 1); // switch to second tab
		return false;
	});
}); // end (document).ready

// round to nearest .002
function roundTwoThousandth(number) {
	number = Math.round(number * 1000) / 1000; //round to three decimal places
	if((number / 0.002) % 1 != 0) {
		number = number + 0.001; //round to the nearest .002
	}
	number = Math.round(number * 1000) / 1000; // re-round to fix stupid JS math not working right
	return number;
}
function roundOneThousandth(number) {
	number = Math.round(number * 1000) / 1000; //round to three decimal places
	return number;
}

function changeMeasurement(minimum, maximum, form_field_ID) {
	//console.log("called changeMeasurement( " + minimum + "," + maximum + "," + form_field_ID + ")");
	var number = $(form_field_ID).val();
	if(number < minimum) {
		number = minimum;
	} else if (number > maximum) {
		number = maximum;
	} else {
		// number = roundTwoThousandth(parseFloat(number));
		number = roundOneThousandth(parseFloat(number));
	}
	$(form_field_ID).val(number); // update form field value
	$(form_field_ID + "_slider").slider("moveTo", number * 1000, null, false) // update slider position
}

function initSliders() {
	//console.log("called initSliders()");
	var outer_diameter = $("#outer_diameter").val();
	var width = $("#width").val();
	var inner_diameter = $("#inner_diameter").val();
	var hub = $("#hub").val();
	var tb_thickness = $("#tb_thickness").val();
	var web_thickness = $("#web_thickness").val();
	var radius = $("#radius").val();
	
	var outer_diameter_2 = $("#outer_diameter_2").val();
	var width_2 = $("#width_2").val();
	var inner_diameter_2 = $("#inner_diameter_2").val();
	var hub_2 = $("#hub_2").val();
	var tb_thickness_2 = $("#tb_thickness_2").val();
	var web_thickness_2 = $("#web_thickness_2").val();
	var coarse_radius_2 = $("#coarse_radius_2").val();
	var coarse_width_2 = $("#coarse_width_2").val();
	
	var outer_diameter_3 = $("#outer_diameter_3").val();
	var width_3 = $("#width_3").val();
	var inner_diameter_3 = $("#inner_diameter_3").val();
	var hub_3 = $("#hub_3").val();
	var tb_thickness_3 = $("#tb_thickness_3").val();
	var web_thickness_3 = $("#web_thickness_3").val();
	var fine_radius_3 = $("#fine_radius_2").val();
	var coarse_radius_3 = $("#coarse_radius_3").val();
	var coarse_width_3 = $("#coarse_width_3").val();
	
	
	//Single -----------------------------------------------------------------------------
	try {
		//console.log("created single sliders");
		$('#outer_diameter_slider').slider( { min: 4000, max: 28000, startValue: $('#outer_diameter').val() * 1000, stepping: 1, change: function(e,ui) { $('#outer_diameter').val(ui.value/1000); changeSingleOuterDiameter(); } });
		$('#outer_diameter').change(function() {changeMeasurement(4, 28, "#outer_diameter"); changeSingleOuterDiameter(); }); 
		
		$('#width_slider').slider( { min: 1750, max: 4000, startValue: $('#width').val() * 1000, stepping: 1, change: function(e,ui) { $('#width').val(ui.value/1000); changeSingleWidth(); } });
		$('#width').change(function() {changeMeasurement(web_thickness, 4, "#width"); changeSingleWidth(); }); 
		
		$('#inner_diameter_slider').slider( { min: 500, max: 25000, startValue: $('#inner_diameter').val() * 1000, stepping: 1, change: function(e,ui) { $('#inner_diameter').val(ui.value/1000); } });
		$('#inner_diameter').change(function() {changeMeasurement(.5, outer_diameter - 3, "#inner_diameter"); }); 
		
		$('#hub_slider').slider( { min: 0, max: 25000, startValue: $('#hub').val() * 1000, stepping: 1, change: function(e,ui) { $('#hub').val(ui.value/1000); changeSingleHub(); } });
		$('#hub').change(function() {changeMeasurement(0, outer_diameter - 3, "#hub"); changeSingleHub(); }); 
		
		$('#tb_thickness_slider').slider( { min: 1000, max: 1750, startValue: $('#tb_thickness').val() * 1000, stepping: 1, change: function(e,ui) { $('#tb_thickness').val(ui.value/1000); } });
		$('#tb_thickness').change(function() {changeMeasurement(web_thickness, width, "#tb_thickness"); }); 
		
		$('#web_thickness_slider').slider( { min: 250, max: 1750, startValue: $('#web_thickness').val() * 1000, stepping: 1, change: function(e,ui) { $('#web_thickness').val(ui.value/1000); changeSingleWebThickness(); } });
		$('#web_thickness').change(function() {changeMeasurement(.25, 1750, "#web_thickness"); changeSingleWebThickness(); }); 
		
		$('#radius_slider').slider( { min: 20, max: 500, startValue: $('#radius').val() * 1000, stepping: 1, change: function(e,ui) { $('#radius').val(ui.value/1000); } });
		$('#radius').change(function() {changeMeasurement(.02, .5, "#radius"); }); 
	} catch(e) {
		//console.log(e);	
	}
	
	// Double Grit -----------------------------------------------------------------------------
	try {
		//console.log("created double sliders");
		$('#outer_diameter_slider_2').slider( { min: 4000, max: 28000, startValue: $('#outer_diameter_2').val() * 1000, stepping: 1, change: function(e,ui) { $('#outer_diameter_2').val(ui.value/1000); changeDoubleOuterDiameter(); } });
		$('#outer_diameter_2').change(function() {changeMeasurement(4, 28, "#outer_diameter_2"); changeDoubleOuterDiameter(); }); 
		
		$('#width_slider_2').slider( { min: 1750, max: 4000, startValue: $('#width_2').val() * 1000, stepping: 1, change: function(e,ui) { $('#width_2').val(ui.value/1000); changeDoubleWidth(); } });
		$('#width_2').change(function() {changeMeasurement(web_thickness_2, 4, "#width_2"); changeDoubleWidth(); }); 
		
		$('#inner_diameter_slider_2').slider( { min: 500, max: 25000, startValue: $('#inner_diameter_2').val() * 1000, stepping: 1, change: function(e,ui) { $('#inner_diameter_2').val(ui.value/1000); } });
		$('#inner_diameter_2').change(function() {changeMeasurement(.5, hub_2, "#inner_diameter_2"); }); 
		
		$('#hub_slider_2').slider( { min: 0, max: 25000, startValue: $('#hub_2').val() * 1000, stepping: 1, change: function(e,ui) { $('#hub_2').val(ui.value/1000); changeDoubleHub(); } });
		$('#hub_2').change(function() {changeMeasurement(0, outer_diameter_2 - 3, "#hub_2"); changeDoubleHub(); }); 
		
		$('#tb_thickness_slider_2').slider( { min: 1000, max: 1750, startValue: $('#tb_thickness_2').val() * 1000, stepping: 1, change: function(e,ui) { $('#tb_thickness_2').val(ui.value/1000); } });
		$('#tb_thickness_2').change(function() {changeMeasurement(web_thickness_2, width_2, "#tb_thickness_2"); }); 
		
		$('#web_thickness_slider_2').slider( { min: 250, max: 1750, startValue: $('#web_thickness_2').val() * 1000, stepping: 1, change: function(e,ui) { $('#web_thickness_2').val(ui.value/1000); changeDoubleWebThickness(); } });
		$('#web_thickness_2').change(function() {changeMeasurement(.25, 1750, "#web_thickness_2"); changeDoubleWebThickness(); }); 
		
		$('#coarse_width_slider_2').slider( { min: 0, max: 2000, startValue: $('#coarse_width_2').val() * 1000, stepping: 1, change: function(e,ui) { $('#coarse_width_2').val(ui.value/1000); } });
		$('#coarse_width_2').change(function() {changeMeasurement(0, width_2 / 2, "#coarse_width_2"); }); 
		
		$('#coarse_radius_slider_2').slider( { min: 20, max: 500, startValue: $('#coarse_radius_2').val() * 1000, stepping: 1, change: function(e,ui) { $('#coarse_radius_2').val(ui.value/1000); } });
		$('#coarse_radius_2').change(function() {changeMeasurement(.02, .5, "#coarse_radius_2"); }); 
	
	} catch(e) {
		//console.log(e);	
	}
	
	// Triple Grit -----------------------------------------------------------------------------
	try {
		//console.log("created triple sliders");
		$('#outer_diameter_slider_3').slider( { min: 4000, max: 28000, startValue: $('#outer_diameter_3').val() * 1000, stepping: 1, change: function(e,ui) { $('#outer_diameter_3').val(ui.value/1000); changeTripleOuterDiameter(); } });
		$('#outer_diameter_3').change(function() {changeMeasurement(4, 28, "#outer_diameter_3"); changeTripleOuterDiameter(); }); 
		
		$('#width_slider_3').slider( { min: 1750, max: 4000, startValue: $('#width_3').val() * 1000, stepping: 1, change: function(e,ui) { $('#width_3').val(ui.value/1000); changeTripleWidth(); } });
		$('#width_3').change(function() {changeMeasurement(web_thickness_3, 4, "#width_3"); changeTripleWidth(); }); 
		
		$('#inner_diameter_slider_3').slider( { min: 500, max: 25000, startValue: $('#inner_diameter_3').val() * 1000, stepping: 1, change: function(e,ui) { $('#inner_diameter_3').val(ui.value/1000); } });
		$('#inner_diameter_3').change(function() {changeMeasurement(.5, hub_3, "#inner_diameter_3"); }); 
		
		$('#hub_slider_3').slider( { min: 0, max: 25000, startValue: $('#hub_3').val() * 1000, stepping: 1, change: function(e,ui) { $('#hub_3').val(ui.value/1000); changeTripleHub(); } });
		$('#hub_3').change(function() {changeMeasurement(0, outer_diameter_3 - 3, "#hub_3"); changeTripleHub(); }); 
		
		$('#tb_thickness_slider_3').slider( { min: 1000, max: 1750, startValue: $('#tb_thickness_3').val() * 1000, stepping: 1, change: function(e,ui) { $('#tb_thickness_3').val(ui.value/1000); } });
		$('#tb_thickness_3').change(function() {changeMeasurement(web_thickness_3, width_3, "#tb_thickness_3"); }); 
		
		$('#web_thickness_slider_3').slider( { min: 250, max: 1750, startValue: $('#web_thickness_3').val() * 1000, stepping: 1, change: function(e,ui) { $('#web_thickness_3').val(ui.value/1000); changeTripleWebThickness(); } });
		$('#web_thickness_3').change(function() {changeMeasurement(.25, 1750, "#web_thickness_3"); changeTripleWebThickness(); }); 
		
		$('#coarse_width_slider_3').slider( { min: 0, max: 800, startValue: $('#coarse_width_3').val() * 1000, stepping: 1, change: function(e,ui) { $('#coarse_width_3').val(ui.value/1000); } });
		$('#coarse_width_3').change(function() {changeMeasurement(0, width_3 / 3, "#coarse_width_3"); }); 
		
		$('#coarse_radius_slider_3').slider( { min: 20, max: 500, startValue: $('#coarse_radius_3').val() * 1000, stepping: 1, change: function(e,ui) { $('#coarse_radius_3').val(ui.value/1000); } });
		$('#coarse_radius_3').change(function() {changeMeasurement(.02, .5, "#coarse_radius_3"); }); 

	} catch(e) {
		//console.log(e);	
	}
	
	// Grooving -----------------------------------------------------------------------------
	try {
		//console.log("created grooving sliders");
		$('#outer_diameter_grooving_slider').slider( { min: 4000, max: 14000, startValue: $('#outer_diameter_grooving').val() * 1000, stepping: 1, change: function(e,ui) { $('#outer_diameter_grooving').val(ui.value/1000); changeGroovingOuterDiameter(); } });
		$('#outer_diameter_grooving').change(function() {changeMeasurement(4, 14, "#outer_diameter_grooving"); changeGroovingOuterDiameter(); });	
		
		$('#hub_grooving_slider').slider( { min: 0, max: ($('#outer_diameter_grooving').val() - 3) * 1000, startValue: $('#hub_grooving').val() * 1000, stepping: 1, change: function(e,ui) { $('#hub_grooving').val(ui.value/1000); } });
		$('#hub_grooving').change(function() {changeMeasurement(0, $('#outer_diameter_grooving').val() - 3, "#hub_grooving"); });
		
		$('#inner_diameter_grooving_slider').slider( { min: 500, max: ($('#outer_diameter_grooving').val() - 3) * 1000, startValue: $('#inner_diameter_grooving').val() * 1000, stepping: 1, change: function(e,ui) { $('#inner_diameter_grooving').val(ui.value/1000); } });
		$('#inner_diameter_grooving').change(function() {changeMeasurement(.5, $('#outer_diameter_grooving').val() - 3, "#inner_diameter_grooving"); });	
				
		$('#tb_thickness_grooving_slider').slider( { min: $('#web_thickness_grooving').val() * 1000, max: 2000, startValue: $('#tb_thickness_grooving').val() * 1000, stepping: 1, change: function(e,ui) { $('#tb_thickness_grooving').val(ui.value/1000); } });
		$('#tb_thickness_grooving').change(function() {changeMeasurement($('#web_thickness_grooving').val(), 2000, "#tb_thickness_grooving"); });	
		
		$('#web_thickness_grooving_slider').slider( { min: 250, max: 875, startValue: $('#web_thickness_grooving').val() * 1000, stepping: 1, change: function(e,ui) { $('#web_thickness_grooving').val(ui.value/1000); changeGroovingWebThickness(); } });
		$('#web_thickness_grooving').change(function() {changeMeasurement(.25, .875, "#web_thickness_grooving"); changeGroovingWebThickness(); });
		
		$('#width_grooving_slider').slider( { min: 125, max: $('#web_thickness_grooving').val() * 1000, startValue: $('#width_grooving').val() * 1000, stepping: 1, change: function(e,ui) { $('#width_grooving').val(ui.value/1000); changeGroovingWidth(); } });
		$('#width_grooving').change(function() {changeMeasurement(.125, $('#web_thickness_grooving').val(), "#width_grooving"); changeGroovingWidth(); });
		
		$('#radius_grooving_slider').slider( { min: 0, max: $('#width_grooving').val() / 2, startValue: $('#radius_grooving').val() * 1000, stepping: 1, change: function(e,ui) { $('#radius_grooving').val(ui.value/1000); } });
		$('#radius_grooving').change(function() {changeMeasurement(0, $('#width_grooving').val() / 2, "#radius_grooving"); });	
		
		$('#step_grooving_slider').slider( { min: 0, max: ($('#outer_diameter_grooving').val() / 2) * 1000, startValue: $('#step_grooving').val() * 1000, stepping: 1, change: function(e,ui) { $('#step_grooving').val(ui.value/1000); } });
		$('#step_grooving').change(function() {changeMeasurement(0, $('#outer_diameter_grooving').val() / 2, "#step_grooving"); });
	} catch(e) {
		//console.log(e);	
	}
}

function refreshSliders() {
	//console.log("called refreshSliders()");
	
	// update slider positions
	$("#outer_diameter_slider").slider("moveTo", $("#outer_diameter").val() * 1000, null, false);
	$("#inner_diameter_slider").slider("moveTo", $("#inner_diameter").val() * 1000, null, false);
	$("#tb_thickness_slider").slider("moveTo", $("#tb_thickness").val() * 1000, null, false);
	$("#web_thickness_slider").slider("moveTo", $("#web_thickness").val() * 1000, null, false);
	$("#radius_slider").slider("moveTo", $("#radius").val() * 1000, null, false);
	
	$('#width_slider').slider("destroy");
	$('#width_slider').slider( { min: $("#tb_thickness").val() * 1000, max: 4000, startValue: $('#width').val() * 1000, stepping: 1, change: function(e,ui) { $('#width').val(ui.value/1000); changeSingleWidth(); } });
	$('#hub_slider').slider("destroy");
	$('#hub_slider').slider( { min: 0, max: ($("#outer_diameter").val() - 3) * 1000, startValue: $('#hub').val() * 1000, stepping: 1, change: function(e,ui) { $('#hub').val(ui.value/1000); changeSingleHub(); } });

	
	$("#outer_diameter_slider_2").slider("moveTo", $("#outer_diameter_2").val() * 1000, null, false);
	$("#inner_diameter_slider_2").slider("moveTo", $("#inner_diameter_2").val() * 1000, null, false);
	$("#tb_thickness_slider_2").slider("moveTo", $("#tb_thickness_2").val() * 1000, null, false);
	$("#web_thickness_slider_2").slider("moveTo", $("#web_thickness_2").val() * 1000, null, false);
	$("#coarse_radius_slider_2").slider("moveTo", $("#coarse_radius_2").val() * 1000, null, false);
	$("#coarse_width_slider_2").slider("moveTo", $("#coarse_width_2").val() * 1000, null, false);
	
	$('#width_slider_2').slider("destroy");
	$('#width_slider_2').slider( { min: $("#tb_thickness_2").val() * 1000, max: 4000, startValue: $('#width_2').val() * 1000, stepping: 1, change: function(e,ui) { $('#width_2').val(ui.value/1000); changeDoubleWidth(); } });
	$('#hub_slider_2').slider("destroy");
	$('#hub_slider_2').slider( { min: 0, max: ($("#outer_diameter_2").val() - 3) * 1000, startValue: $('#hub_2').val() * 1000, stepping: 1, change: function(e,ui) { $('#hub_2').val(ui.value/1000); changeDoubleHub(); } });

	$("#outer_diameter_slider_3").slider("moveTo", $("#outer_diameter_3").val() * 1000, null, false);
	$("#inner_diameter_slider_3").slider("moveTo", $("#inner_diameter_3").val() * 1000, null, false);
	$("#tb_thickness_slider_3").slider("moveTo", $("#tb_thickness_3").val() * 1000, null, false);
	$("#web_thickness_slider_3").slider("moveTo", $("#web_thickness_3").val() * 1000, null, false);
	$("#fine_radius_slider_3").slider("moveTo", $("#fine_radius_3").val() * 1000, null, false);
	$("#coarse_radius_slider_3").slider("moveTo", $("#coarse_radius_3").val() * 1000, null, false);
	$("#coarse_width_slider_3").slider("moveTo", $("#coarse_width_3").val() * 1000, null, false);
	
	$('#width_slider_3').slider("destroy");
	$('#width_slider_3').slider( { min: $("#tb_thickness_3").val() * 1000, max: 4000, startValue: $('#width_3').val() * 1000, stepping: 1, change: function(e,ui) { $('#width_3').val(ui.value/1000); changeTripleWidth(); } });
	$('#hub_slider_3').slider("destroy");
	$('#hub_slider_3').slider( { min: 0, max: ($("#outer_diameter_3").val() - 3) * 1000, startValue: $('#hub_3').val() * 1000, stepping: 1, change: function(e,ui) { $('#hub_3').val(ui.value/1000); changeTripleHub(); } });

	$("#outer_diameter_grooving_slider").slider("moveTo", $("#outer_diameter_grooving").val() * 1000, null, false);
	$("#hub_grooving_slider").slider("moveTo", $("#hub_grooving").val() * 1000, null, false);
	$("#inner_diameter_grooving_slider").slider("moveTo", $("#inner_diameter_grooving").val() * 1000, null, false);
	$("#tb_thickness_grooving_slider").slider("moveTo", $("#tb_thickness_grooving").val() * 1000, null, false);
	$("#web_thickness_grooving_slider").slider("moveTo", $("#web_thickness_grooving").val() * 1000, null, false);
	$("#width_grooving_slider").slider("moveTo", $("#width_grooving").val() * 1000, null, false);
	$("#radius_grooving_slider").slider("moveTo", $("#radius_grooving").val() * 1000, null, false);
	$("#step_grooving_slider").slider("moveTo", $("#step_grooving").val() * 1000, null, false);
}

// ----- Single -----------------------------------------------------------------------------------------------------------------------------------------------//
function changeSingleOuterDiameter() {
	//console.log("called changeSingleOuterDiameter");
	var outer_diameter = $("#outer_diameter").val();
	var width = $("#width").val();
	var inner_diameter = $("#inner_diameter").val();
	var hub = $("#hub").val();
	var tb_thickness = $("#tb_thickness").val();
	var web_thickness = $("#web_thickness").val();
	var radius = $("#radius").val();
		
	if(hub > (outer_diameter - 3)) {
		hub = (outer_diameter - 3);
		$("#hub").val(hub); // update form field value
	}
	$('#hub_slider').slider("destroy");
	$('#hub_slider').slider( { min: 0, max: (outer_diameter - 3) * 1000, startValue: hub * 1000, stepping: 1, change: function(e,ui) { $('#hub').val(ui.value/1000);  changeSingleHub(); } });
	$('#hub').change(function() {changeMeasurement(0, (outer_diameter - 3), "#hub"); changeSingleHub(); }); 
	
	if(inner_diameter > hub) {
		inner_diameter = hub; // inner diameter cannot exceed hub, hub may be even less than outer_diameter - 3
		$("#inner_diameter").val(inner_diameter); // update form field value
	}
	$('#inner_diameter_slider').slider("destroy");
	$('#inner_diameter_slider').slider( { min: 500, max: hub * 1000, startValue: inner_diameter * 1000, stepping: 1, change: function(e,ui) { $('#inner_diameter').val(ui.value/1000); } });
	$('#inner_diameter').change(function() {changeMeasurement(.5, hub, "#inner_diameter"); });
	
	if(web_thickness != roundOneThousandth(parseFloat(outer_diameter * 0.0625)) ) {
		web_thickness = roundOneThousandth(parseFloat(outer_diameter * 0.0625));
		//console.log("od: " + outer_diameter + ", wt: " + web_thickness);
		$("#web_thickness").val(web_thickness); // update form field value
		$("#web_thickness_slider").slider("moveTo", web_thickness * 1000, null, false); // update slider position
	}
	
	if(tb_thickness < web_thickness) {
		tb_thickness = web_thickness;
		$("#tb_thickness").val(tb_thickness); // update form field value
		$('#tb_thickness_slider').slider("destroy");
		$('#tb_thickness_slider').slider( { min: web_thickness * 1000, max: width * 1000, startValue: tb_thickness * 1000, stepping: 1, change: function(e,ui) { $('#tb_thickness').val(ui.value/1000); } });
		$('#tb_thickness').change(function() {changeMeasurement(web_thickness, width, "#tb_thickness"); }); 
	}
}

function changeSingleWidth() {
	//console.log("called changeSingleWidth");
	var width = $("#width").val();
	var tb_thickness = $("#tb_thickness").val();
	var web_thickness = $("#web_thickness").val();
	
	//enforce min and max width
	if(width > 4) {
		width = 4;
	} else if (width < web_thickness) {
		width = web_thickness;
	}
	$("#width").val(width); // update form field value
	$('#width_slider').slider("destroy");
	$('#width_slider').slider( { min: web_thickness * 1000, max: 4000, startValue: width * 1000, stepping: 1, change: function(e,ui) { $('#width').val(ui.value/1000); changeSingleWidth(); } });
	$('#width').change(function() {changeMeasurement(web_thickness, 4, "#width"); changeSingleWidth(); });
	
	// cascade changes
	if (tb_thickness > width) {
		tb_thickness = width;
	}
	$("#tb_thickness").val(tb_thickness); // update form field value
	$('#tb_thickness_slider').slider("destroy");
	$('#tb_thickness_slider').slider( { min: web_thickness * 1000, max: width * 1000, startValue: tb_thickness * 1000, stepping: 1, change: function(e,ui) { $('#tb_thickness').val(ui.value/1000); } });
	$('#tb_thickness').change(function() {changeMeasurement(web_thickness, width, "#tb_thickness"); }); 
}

function changeSingleHub() {
	//console.log("called changeSingleHub");
	var outer_diameter = $("#outer_diameter").val();
	var inner_diameter = $("#inner_diameter").val();
	var hub = $("#hub").val();
	
	// enforce min and max hub
	//console.log("min / max in changeSingleHub");
	if(hub > outer_diameter - 3) {
		hub = outer_diameter - 3;
	} else if (hub < 0) {
		hub = 0;
	}
	$("#hub").val(hub); // update form field value
	$('#hub_slider').slider("destroy");
	$('#hub_slider').slider( { min: 0, max: (outer_diameter - 3) * 1000, startValue: hub * 1000, stepping: 1, change: function(e,ui) { $('#hub').val(ui.value/1000);  changeSingleHub(); } });
	
	// cascade changes	
	//console.log("cascade in changeSingleHub");
	if (inner_diameter > hub) {
		inner_diameter = hub;
	}
	$("#inner_diameter").val(inner_diameter); // update form field value
	$('#inner_diameter_slider').slider("destroy");
	$('#inner_diameter_slider').slider( { min: 500, max: hub * 1000, startValue: inner_diameter * 1000, stepping: 1, change: function(e,ui) { $('#inner_diameter').val(ui.value/1000); } });
}

function changeSingleWebThickness() {
	var outer_diameter = $("#outer_diameter").val()
	if (outer_diameter != roundOneThousandth(parseFloat($("#web_thickness").val() / 0.0625))) {
		outer_diameter = roundOneThousandth(parseFloat($("#web_thickness").val() / 0.0625))
		//console.log("wt: " + $("#web_thickness").val() + ", od: " + outer_diameter);
		$("#outer_diameter").val(outer_diameter);
		$("#outer_diameter").change();
	}
}

// ----- Double -----------------------------------------------------------------------------------------------------------------------------------------------//
function changeDoubleOuterDiameter() {
	//console.log("called changeDoubleOuterDiameter");
	var outer_diameter = $("#outer_diameter_2").val();
	var width = $("#width_2").val();
	var inner_diameter = $("#inner_diameter_2").val();
	var hub = $("#hub_2").val();
	var tb_thickness = $("#tb_thickness_2").val();
	var web_thickness = $("#web_thickness_2").val();
		
	if(hub > (outer_diameter - 3)) {
		hub = (outer_diameter - 3);
		$("#hub_2").val(hub); // update form field value
	}
	$('#hub_slider_2').slider("destroy");
	$('#hub_slider_2').slider( { min: 0, max: (outer_diameter - 3) * 1000, startValue: hub * 1000, stepping: 1, change: function(e,ui) { $('#hub_2').val(ui.value/1000);  changeDoubleHub(); } });
	$('#hub_2').change(function() {changeMeasurement(0, (outer_diameter - 3), "#hub_2"); changeDoubleHub(); }); 
	
	if(inner_diameter > hub) {
		inner_diameter = hub; // inner diameter cannot exceed hub, hub may be even less than outer_diameter - 3
		$("#inner_diameter_2").val(inner_diameter); // update form field value
	}
	$('#inner_diameter_slider_2').slider("destroy");
	$('#inner_diameter_slider_2').slider( { min: 500, max: hub * 1000, startValue: inner_diameter * 1000, stepping: 1, change: function(e,ui) { $('#inner_diameter_2').val(ui.value/1000); } });
	$('#inner_diameter_2').change(function() {changeMeasurement(.5, hub, "#inner_diameter_2"); });
	
	if(web_thickness != roundOneThousandth(parseFloat(outer_diameter * 0.0625)) ) {
		web_thickness = roundOneThousandth(parseFloat(outer_diameter * 0.0625));
		//console.log("od: " + outer_diameter + ", wt: " + web_thickness);
		$("#web_thickness_2").val(web_thickness); // update form field value
		$("#web_thickness_slider_2").slider("moveTo", web_thickness * 1000, null, false); // update slider position
	}
	
	if(tb_thickness < web_thickness) {
		tb_thickness = web_thickness;
		$("#tb_thickness_2").val(tb_thickness); // update form field value
		$('#tb_thickness_slider_2').slider("destroy");
		$('#tb_thickness_slider_2').slider( { min: web_thickness * 1000, max: width * 1000, startValue: tb_thickness * 1000, stepping: 1, change: function(e,ui) { $('#tb_thickness_2').val(ui.value/1000); } });
		$('#tb_thickness_2').change(function() {changeMeasurement(web_thickness, width, "#tb_thickness_2"); }); 
	}
}

function changeDoubleWidth() {
	//console.log("called changeDoubleWidth");
	var width = $("#width_2").val();
	var coarse_width = $("#coarse_width_2").val();
	var tb_thickness = $("#tb_thickness_2").val();
	var web_thickness = $("#web_thickness_2").val();
	
	//enforce min and max width
	if(width > 4) {
		width = 4;
	} else if (width < web_thickness) {
		width = web_thickness;
	}
	$("#width_2").val(width); // update form field value
	$('#width_slider_2').slider("destroy");
	$('#width_slider_2').slider( { min: web_thickness * 1000, max: 4000, startValue: width * 1000, stepping: 1, change: function(e,ui) { $('#width_2').val(ui.value/1000); changeDoubleWidth(); } });
	$('#width_2').change(function() {changeMeasurement(web_thickness, 4, "#width_2"); changeDoubleWidth(); });
	
	// cascade changes
	if (tb_thickness > width) {
		tb_thickness = width;
	}
	$("#tb_thickness_2").val(tb_thickness); // update form field value
	$('#tb_thickness_slider_2').slider("destroy");
	$('#tb_thickness_slider_2').slider( { min: web_thickness * 1000, max: width * 1000, startValue: tb_thickness * 1000, stepping: 1, change: function(e,ui) { $('#tb_thickness_2').val(ui.value/1000); } });
	$('#tb_thickness_2').change(function() {changeMeasurement(web_thickness, width, "#tb_thickness_2"); }); 

	if (coarse_width > (width / 2)) {
		coarse_width = width / 2;
	}
	$("#coarse_width_2").val(coarse_width); // update form field value
	$('#coarse_width_slider_2').slider("destroy");
	$('#coarse_width_slider_2').slider( { min: 0, max: (width / 2) * 1000, startValue: coarse_width * 1000, stepping: 1, change: function(e,ui) { $('#coarse_width_2').val(ui.value/1000); } });
	$('#coarse_width_2').change(function() {changeMeasurement(0, (width / 2), "#coarse_width_2"); }); 

}

function changeDoubleHub() {
	//console.log("called changeDoubleHub");
	var outer_diameter = $("#outer_diameter_2").val();
	var inner_diameter = $("#inner_diameter_2").val();
	var hub = $("#hub_2").val();
	
	// enforce min and max hub
	//console.log("min / max in changeDoubleHub");
	if(hub > outer_diameter - 3) {
		hub = outer_diameter - 3;
	} else if (hub < 0) {
		hub = 0;
	}
	$("#hub_2").val(hub); // update form field value
	$('#hub_slider_2').slider("destroy");
	$('#hub_slider_2').slider( { min: 0, max: (outer_diameter - 3) * 1000, startValue: hub * 1000, stepping: 1, change: function(e,ui) { $('#hub_2').val(ui.value/1000);  changeDoubleHub(); } });
	
	// cascade changes	
	//console.log("cascade in changeDoubleHub");
	if (inner_diameter > hub) {
		inner_diameter = hub;
	}
	$("#inner_diameter_2").val(inner_diameter); // update form field value
	$('#inner_diameter_slider_2').slider("destroy");
	$('#inner_diameter_slider_2').slider( { min: 500, max: hub * 1000, startValue: inner_diameter * 1000, stepping: 1, change: function(e,ui) { $('#inner_diameter_2').val(ui.value/1000); } });
}

function changeDoubleWebThickness() {
	var outer_diameter = $("#outer_diameter_2").val()
	if (outer_diameter != roundOneThousandth(parseFloat($("#web_thickness_2").val() / 0.0625))) {
		outer_diameter = roundOneThousandth(parseFloat($("#web_thickness_2").val() / 0.0625))
		//console.log("wt: " + $("#web_thickness_2").val() + ", od: " + outer_diameter);
		$("#outer_diameter_2").val(outer_diameter);
		$("#outer_diameter_2").change();
	}
}

// ----- Triple -----------------------------------------------------------------------------------------------------------------------------------------------//
function changeTripleOuterDiameter() {
	//console.log("called changeTripleOuterDiameter");
	var outer_diameter = $("#outer_diameter_3").val();
	var width = $("#width_3").val();
	var inner_diameter = $("#inner_diameter_3").val();
	var hub = $("#hub_3").val();
	var tb_thickness = $("#tb_thickness_3").val();
	var web_thickness = $("#web_thickness_3").val();
	var radius = $("#radius_3").val();
		
	if(hub > (outer_diameter - 3)) {
		hub = (outer_diameter - 3);
		$("#hub_3").val(hub); // update form field value
	}
	$('#hub_slider_3').slider("destroy");
	$('#hub_slider_3').slider( { min: 0, max: (outer_diameter - 3) * 1000, startValue: hub * 1000, stepping: 1, change: function(e,ui) { $('#hub_3').val(ui.value/1000);  changeTripleHub(); } });
	$('#hub_3').change(function() {changeMeasurement(0, (outer_diameter - 3), "#hub_3"); changeTripleHub(); }); 
	
	if(inner_diameter > hub) {
		inner_diameter = hub; // inner diameter cannot exceed hub, hub may be even less than outer_diameter - 3
		$("#inner_diameter_3").val(inner_diameter); // update form field value
	}
	$('#inner_diameter_slider_3').slider("destroy");
	$('#inner_diameter_slider_3').slider( { min: 500, max: hub * 1000, startValue: inner_diameter * 1000, stepping: 1, change: function(e,ui) { $('#inner_diameter_3').val(ui.value/1000); } });
	$('#inner_diameter_3').change(function() {changeMeasurement(.5, hub, "#inner_diameter_3"); });
	
	if(web_thickness != roundOneThousandth(parseFloat(outer_diameter * 0.0625)) ) {
		web_thickness = roundOneThousandth(parseFloat(outer_diameter * 0.0625));
		//console.log("od: " + outer_diameter + ", wt: " + web_thickness);
		$("#web_thickness_3").val(web_thickness); // update form field value
		$("#web_thickness_slider_3").slider("moveTo", web_thickness * 1000, null, false); // update slider position
	}
	
	if(tb_thickness < web_thickness) {
		tb_thickness = web_thickness;
		$("#tb_thickness_3").val(tb_thickness); // update form field value
		$('#tb_thickness_slider_3').slider("destroy");
		$('#tb_thickness_slider_3').slider( { min: web_thickness * 1000, max: width * 1000, startValue: tb_thickness * 1000, stepping: 1, change: function(e,ui) { $('#tb_thickness_3').val(ui.value/1000); } });
		$('#tb_thickness_3').change(function() {changeMeasurement(web_thickness, width, "#tb_thickness_3"); }); 
	}
}

function changeTripleWidth() {
	//console.log("called changeTripleWidth");
	var width = $("#width_3").val();
	var coarse_width = $("#coarse_width_3").val();
	var tb_thickness = $("#tb_thickness_3").val();
	var web_thickness = $("#web_thickness_3").val();
	
	//enforce min and max width
	if(width > 4) {
		width = 4;
	} else if (width < web_thickness) {
		width = web_thickness;
	}
	$('#width_slider_3').slider("destroy");
	$('#width_slider_3').slider( { min: web_thickness * 1000, max: 4000, startValue: width * 1000, stepping: 1, change: function(e,ui) { $('#width_3').val(ui.value/1000); changeTripleWidth(); } });
	$('#width_3').change(function() {changeMeasurement(web_thickness, 4, "#width_3"); changeTripleWidth(); });
	$("#width_3").val(width); // update form field value
	
	// cascade changes
	if (tb_thickness > width) {
		tb_thickness = width;
	}
	$('#tb_thickness_slider_3').slider("destroy");
	$('#tb_thickness_slider_3').slider( { min: web_thickness * 1000, max: width * 1000, startValue: tb_thickness * 1000, stepping: 1, change: function(e,ui) { $('#tb_thickness_3').val(ui.value/1000); } });
	$('#tb_thickness_3').change(function() {changeMeasurement(web_thickness, width, "#tb_thickness_3"); }); 
	$("#tb_thickness_3").val(tb_thickness); // update form field value

	if (coarse_width > (width / 3)) {
		coarse_width = width / 3;
	}
	$('#coarse_width_slider_3').slider("destroy");
	$('#coarse_width_slider_3').slider( { min: 0, max: (width / 3) * 1000, startValue: coarse_width * 1000, stepping: 1, change: function(e,ui) { $('#coarse_width_3').val(ui.value/1000); } });
	$('#coarse_width_3').change(function() {changeMeasurement(0, width / 3, "#coarse_width_3"); });
	$("#coarse_width_3").val(coarse_width).change(); // update form field value

}

function changeTripleHub() {
	//console.log("called changeTripleHub");
	var outer_diameter = $("#outer_diameter_3").val();
	var inner_diameter = $("#inner_diameter_3").val();
	var hub = $("#hub_3").val();
	
	// enforce min and max hub
	//console.log("min / max in changeTripleHub");
	if(hub > outer_diameter - 3) {
		hub = outer_diameter - 3;
	} else if (hub < 0) {
		hub = 0;
	}
	$("#hub_3").val(hub); // update form field value
	$('#hub_slider_3').slider("destroy");
	$('#hub_slider_3').slider( { min: 0, max: (outer_diameter - 3) * 1000, startValue: hub * 1000, stepping: 1, change: function(e,ui) { $('#hub_3').val(ui.value/1000);  changeTripleHub(); } });
	
	// cascade changes	
	//console.log("cascade in changeTripleHub");
	if (inner_diameter > hub) {
		inner_diameter = hub;
	}
	$("#inner_diameter_3").val(inner_diameter); // update form field value
	$('#inner_diameter_slider_3').slider("destroy");
	$('#inner_diameter_slider_3').slider( { min: 500, max: hub * 1000, startValue: inner_diameter * 1000, stepping: 1, change: function(e,ui) { $('#inner_diameter_3').val(ui.value/1000); } });
}

function changeTripleWebThickness() {
	var outer_diameter = $("#outer_diameter_3").val()
	if (outer_diameter != roundOneThousandth(parseFloat($("#web_thickness_3").val() / 0.0625))) {
		outer_diameter = roundOneThousandth(parseFloat($("#web_thickness_3").val() / 0.0625))
		//console.log("wt: " + $("#web_thickness_3").val() + ", od: " + outer_diameter);
		$("#outer_diameter_3").val(outer_diameter);
		$("#outer_diameter_3").change();
	}
}

// ----- Grooving -----------------------------------------------------------------------------------------------------------------------------------------------//
function changeGroovingOuterDiameter() {
	//console.log("called changeGroovingOuterDiameter");
	var outer_diameter = $("#outer_diameter_grooving").val();
	var hub = $("#hub_grooving").val();
	var inner_diameter = $("#inner_diameter_grooving").val();
	var tb_thickness = $("#tb_thickness_grooving").val();
	var web_thickness = $("#web_thickness_grooving").val();
	var width = $("#width_grooving").val();
	var radius = $("#radius_grooving").val();
	var step = $("#step_grooving").val();
	
	// max hub = outer_diameter - 3
	if(hub > outer_diameter - 3) {
		hub = outer_diameter - 3;
	}
	$('#hub_grooving_slider').slider("destroy");
	$('#hub_grooving_slider').slider( { min: 0, max: ($('#outer_diameter_grooving').val() - 3) * 1000, startValue: hub * 1000, stepping: 1, change: function(e,ui) { $('#hub_grooving').val(ui.value/1000); } });
	$('#hub_grooving').change(function() {changeMeasurement(0, $('#outer_diameter_grooving').val() - 3, "#hub_grooving"); });
	$("#hub_grooving").val(hub); // update form field value
	
	// max inner_diameter = outer_diameter - 3
	if(inner_diameter > hub) {
		inner_diameter = hub;
	}
	$('#inner_diameter_grooving_slider').slider("destroy");
	$('#inner_diameter_grooving_slider').slider( { min: 500, max: ($('#outer_diameter_grooving').val() - 3) * 1000, startValue: inner_diameter * 1000, stepping: 1, change: function(e,ui) { $('#inner_diameter_grooving').val(ui.value/1000); } });
	$('#inner_diameter_grooving').change(function() {changeMeasurement(.5, $('#outer_diameter_grooving').val() - 3, "#inner_diameter_grooving"); });	
	$("#inner_diameter_grooving").val(inner_diameter); // update form field value
	
	// max step = outer_diameter / 2
	if(step > outer_diameter / 2) {
		step = outer_diameter / 2;
	}
	$('#step_grooving_slider').slider("destroy");
	$('#step_grooving_slider').slider( { min: 0, max: ($('#outer_diameter_grooving').val() / 2) * 1000, startValue: step * 1000, stepping: 1, change: function(e,ui) { $('#step_grooving').val(ui.value/1000); } });
	$('#step_grooving').change(function() {changeMeasurement(0, $('#outer_diameter_grooving').val() / 2, "#step_grooving"); });
	$("#step_grooving").val(step); // update form field value

	// web_thickness = outer_diameter * 0.0625
	if(web_thickness != roundOneThousandth(parseFloat(outer_diameter * 0.0625))) {
		web_thickness = roundOneThousandth(parseFloat(outer_diameter * 0.0625));
	}
	$('#web_thickness_grooving_slider').slider("destroy");
	$('#web_thickness_grooving_slider').slider( { min: 250, max: 875, startValue: web_thickness * 1000, stepping: 1, change: function(e,ui) { $('#web_thickness_grooving').val(ui.value/1000); changeGroovingWebThickness(); } });
	$('#web_thickness_grooving').change(function() {changeMeasurement(.25, .875, "#web_thickness_grooving"); changeGroovingWebThickness(); });
	$("#web_thickness_grooving").val(web_thickness); // update form field value
	
	// max width = outer_diameter * 0.0625
	if(width > roundOneThousandth(parseFloat(outer_diameter * 0.0625))) {
		width = roundOneThousandth(parseFloat(outer_diameter * 0.0625));
	}
	$('#width_grooving_slider').slider("destroy");
	$('#width_grooving_slider').slider( { min: 125, max: $('#web_thickness_grooving').val() * 1000, startValue: width * 1000, stepping: 1, change: function(e,ui) { $('#width_grooving').val(ui.value/1000); changeGroovingWidth(); } });
	$('#width_grooving').change(function() {changeMeasurement(.125, $('#web_thickness_grooving').val(), "#width_grooving"); changeGroovingWidth(); });
	//console.log("changing width_grooving");
	$("#width_grooving").val(width); // update form field value
	//console.log("changed width_grooving");
	
	// max radius = width / 2
	if(radius > width / 2) {
		radius = outer_diameter / 2;
	}
	if(width != $("#width_grooving").val()) {
		$('#radius_grooving_slider').slider("destroy");
		$('#radius_grooving_slider').slider( { min: 0, max: $('#width_grooving').val() / 2 * 1000, startValue: radius * 1000, stepping: 1, change: function(e,ui) { $('#radius_grooving').val(ui.value/1000); } });
		$('#radius_grooving').change(function() {changeMeasurement(0, $('#width_grooving').val() / 2, "#radius_grooving"); });
		$("#radius_grooving").val(width); // update form field value
	}
	
	// min tb_thickness = outer diameter * 0.0625
	if(tb_thickness < roundOneThousandth(parseFloat(outer_diameter * 0.0625))) {
		tb_thickness = roundOneThousandth(parseFloat(outer_diameter * 0.0625));
	}
	$('#tb_thickness_grooving_slider').slider("destroy");
	$('#tb_thickness_grooving_slider').slider( { min: $('#web_thickness_grooving').val() * 1000, max: 2000, startValue: tb_thickness * 1000, stepping: 1, change: function(e,ui) { $('#tb_thickness_grooving').val(ui.value/1000); } });
	$('#tb_thickness_grooving').change(function() {changeMeasurement($('#web_thickness_grooving').val(), 2000, "#tb_thickness_grooving"); });
	$("#tb_thickness_grooving").val(tb_thickness); // update form field value
	
}

function changeGroovingWebThickness() {
	//console.log("called changeGroovingWebThickness");
	var web_thickness = $("#web_thickness_grooving").val();
	var outer_diameter = $("#outer_diameter_grooving").val();
	// outer diameter = web_thickness / 0.0625
	if (outer_diameter != roundOneThousandth(parseFloat($("#web_thickness_grooving").val() / 0.0625))) {
		outer_diameter = roundOneThousandth(parseFloat($("#web_thickness_grooving").val() / 0.0625))
		//console.log("wt: " + $("#web_thickness_grooving").val() + ", od: " + outer_diameter);
		$("#outer_diameter_grooving").val(outer_diameter);
		$("#outer_diameter_grooving").change();
	}
}

function changeGroovingWidth() {
	//console.log("called changeGroovingWidth");
	var width = $("#width_grooving").val();
	var radius = $("#radius_grooving").val();
	// max radius = width / 2
	if(radius > width / 2) {
		radius = width / 2;
	}
	$('#radius_grooving_slider').slider("destroy");
	$('#radius_grooving_slider').slider( { min: 0, max: $('#width_grooving').val() / 2 * 1000, startValue: radius * 1000, stepping: 1, change: function(e,ui) { $('#radius_grooving').val(ui.value/1000); } });
	$('#radius_grooving').change(function() {changeMeasurement(0, $('#width_grooving').val() / 2, "#radius_grooving"); });
	$("#radius_grooving").val(radius); // update form field value
}