$(document).ready(function() {

	setupRoundPcsAcrossBelt();
	setupRoundsHourlyVolumePcs();
	setupRoundsHourlyVolumeLbs();
	setupRoundsBeltLoad();
	setupRectPcsAcrossBelt();
	setupRectHourlyVolumePcs();
	setupRectHourlyVolumeLbs();
	setupRectBeltLoad();

	// Bind decimal reformatting
	$(".operand").each(
		function(){
			$(this).bind("blur", function() {
				var val = parseFloat($(this).val());
				$(this).val(val.toFixed(2));
			});
		}
	);
	roundsPcsAcrossBelt();
	roundsHourlyVolumePcs();
	rectPcsAcrossBelt();
	rectHourlyVolumePcs();
});

/*
 * Rounds calculator Functions 
 */
var roundsPcsAcrossBelt = function() { 
	var belt_width = parseFloat($("#rds_belt_width").val());
	var part_diameter = parseFloat($("#rds_part_diameter").val());
	var load_gap = parseFloat($("#rds_part_load_gap").val());
	$("#rds_pcs_across_belt").html(pcsAcrossBelt(belt_width, part_diameter, load_gap));

	/* This value must change too */	
	roundsHourlyVolumePcs();
}

var roundsHourlyVolumePcs = function() { 
	var part_diameter = parseFloat($("#rds_part_diameter").val());
	var part_load_gap = parseFloat($("#rds_part_load_gap").val());
	var belt_speed = parseFloat($("#rds_belt_speed").val());
	var pcs_across_belt = parseFloat($("#rds_pcs_across_belt").html());
	$("#rds_hourly_volume_pcs").html(hourlyVolumePcs(belt_speed, part_diameter, part_load_gap, pcs_across_belt));
	
	/* This value must change too */
	roundsHourlyVolumeLbs();
}

var roundsHourlyVolumeLbs = function() { 
	var part_weight = parseFloat($("#rds_part_weight").val());
	var hourly_vol_pcs = parseFloat($("#rds_hourly_volume_pcs").html());
	$("#rds_hourly_volume_lbs").html(hourlyVolumeLbs(part_weight, hourly_vol_pcs));
	
	/* This value must change too */
	roundsBeltLoad();	
}

var roundsBeltLoad = function () {
	var belt_width = parseFloat($("#rds_belt_width").val());
	var belt_speed = parseFloat($("#rds_belt_speed").val());
	var hourly_vol_lbs = parseFloat($("#rds_hourly_volume_lbs").html());
	$("#rds_belt_load").html(beltLoad(belt_width, belt_speed, hourly_vol_lbs));
}

/*
 * Rectangle calculator Functions 
 */
var rectPcsAcrossBelt = function() { 
	var belt_width = parseFloat($("#rect_belt_width").val());
	var part_width = parseFloat($("#rect_part_width").val());
	var load_gap = parseFloat($("#rect_width_load_gap").val());
	$("#rect_pcs_across_belt").html(pcsAcrossBelt(belt_width, part_width, load_gap));
	
	/* This value must change too */	
	rectHourlyVolumePcs();
	
}

var rectHourlyVolumePcs = function() { 
	var part_length = parseFloat($("#rect_part_length").val());
	var part_load_gap = parseFloat($("#rect_part_load_gap").val());
	var belt_speed = parseFloat($("#rect_belt_speed").val());
	var pcs_across_belt = parseFloat($("#rect_pcs_across_belt").html());
	$("#rect_hourly_volume_pcs").html(hourlyVolumePcs(belt_speed, part_length, part_load_gap, pcs_across_belt));
	
	/* This value must change too */
	rectHourlyVolumeLbs();
}

var rectHourlyVolumeLbs = function() { 
	var part_weight = parseFloat($("#rect_part_weight").val());
	var hourly_vol_pcs = parseFloat($("#rect_hourly_volume_pcs").html());
	$("#rect_hourly_volume_lbs").html(hourlyVolumeLbs(part_weight, hourly_vol_pcs));
	
	/* This value must change too */
	rectBeltLoad();	
}

var rectBeltLoad = function () {
	var belt_width = parseFloat($("#rect_belt_width").val());
	var belt_speed = parseFloat($("#rect_belt_speed").val());
	var hourly_vol_lbs = parseFloat($("#rect_hourly_volume_lbs").html());
	$("#rect_belt_load").html(beltLoad(belt_width, belt_speed, hourly_vol_lbs));
}

/*
 * Setup functions for Rounds
 */
var setupRoundPcsAcrossBelt = function() {
	$("#rds_belt_width").blur(roundsPcsAcrossBelt);
	$("#rds_part_diameter").blur(roundsPcsAcrossBelt);
	$("#rds_part_load_gap").blur(roundsPcsAcrossBelt);
}

var setupRoundsHourlyVolumePcs = function() {
	$("#rds_part_diameter").blur(roundsHourlyVolumePcs);
	$("#rds_part_load_gap").blur(roundsHourlyVolumePcs);
	$("#rds_belt_speed").blur(roundsHourlyVolumePcs);
}

var setupRoundsHourlyVolumeLbs = function() {
	$("#rds_part_weight").blur(roundsHourlyVolumeLbs);
}

var setupRoundsBeltLoad = function() {
	$("#rds_belt_width").blur(roundsBeltLoad);
	$("#rds_belt_speed").blur(roundsBeltLoad);
}

/*
 * Setup functions for Rectangles
 */
var setupRectPcsAcrossBelt = function() {
	$("#rect_belt_width").blur(rectPcsAcrossBelt);
	$("#rect_part_width").blur(rectPcsAcrossBelt);
	$("#rect_width_load_gap").blur(rectPcsAcrossBelt);
}

var setupRectHourlyVolumePcs = function() {
	$("#rect_part_length").blur(rectHourlyVolumePcs);
	$("#rect_part_load_gap").blur(rectHourlyVolumePcs);
	$("#rect_belt_speed").blur(rectHourlyVolumePcs);
}

var setupRectHourlyVolumeLbs = function() {
	$("#rect_part_weight").blur(rectHourlyVolumeLbs);
}

var setupRectBeltLoad = function() {
	$("#rect_belt_width").blur(rectBeltLoad);
	$("#rect_belt_speed").blur(rectBeltLoad);
}

/* 
 * Calulations
 */
var pcsAcrossBelt = function(belt_width, length, load_gap) {
	var result = Math.floor((belt_width - 1) / (length + load_gap));
	result = parseFloat(result);
	if (isNaN(result) || result == 0) {
		return "0";
	} else {
		return result;
	}
}

var hourlyVolumePcs = function(belt_speed, length, load_gap, pcs_across_belt) {
	var result = ( ( belt_speed / ( length + load_gap ) ) * 60 * pcs_across_belt).toFixed(1);
	return isNaN(result) || 0 ? "0" : result;
}

var hourlyVolumeLbs = function(hourly_vol_pcs, part_weight) {
	var result = (hourly_vol_pcs * part_weight).toFixed(1);
	return isNaN(result) || 0 ? "0" : result;
}

var beltLoad = function(belt_width, belt_speed, hourly_vol_lbs) {
  var result = (hourly_vol_lbs / ( ( belt_speed * belt_width * 60 ) / 144 )).toFixed(2);
	return isNaN(result) || 0 ? "0" : result;
}

