Maximize your miles.
Earn up to 85% of Gross Pay.

I've been an owner operator with JRC Transportation for just a few months, and the consistent freight and impressive income have made my start smoother than I ever expected.

-John D. ★★★★★ - Google Reviews

As a newer driver, I'm thrilled with the steady flow of loads JRC offers. The reliable freight means I can count on an awesome income every week.

-Miguel S. ★★★★★ - Trustpilot Reviews

After 10 years on the road, I can honestly say JRC Transportation is a cut above the rest. Consistent freight and great income.

-Jose B. ★★★★★ - Google Reviews

I drove with JRC for over 13 years. In full disclosure, I had left and came back. I wish I stayed the whole time - They are truly one of the only companies that takes care of you and supports your business.

-Andre R. ★★★★★ - Facebook Reviews

The customer freight and excellent pay have made my transition into the owner operator space very easy.

-Steven O. ★★★★★ - Facebook Reviews

I joined JRC Transportation two years ago, and the steady freight has been a game changer. It’s allowed me to purchase more tractors and increase business for my small fleet.

-William R. ★★★★★ - Google Reviews

If you’re a hard worker - this is the place to work, period.

-James J. ★★★★★ - Google Reviews

Great service, great freight - it was exactly what my wife and I were looking for. They get us home when we need to be home and get us consistent freight when we need that too.

-Jabiel P. ★★★★★ - Google Reviews

jQuery.noConflict();
jQuery( document ).ready(function( $ ) {

	// Set object
	var jrcObj = $('#JRCDriverCompensationComparisonChartOne');
	var jrcFormObj = $('#JRCDriverCompensationComparisonChartTwo');

	// Add comma to every three digits of numbers
	$.fn.digits = function(){ 
		return this.each(function(){ 
			$(this).text( $(this).text().replace(/(\d)(?=(\d\d\d)+(?!\d))/g, "$1,") ); 
		})
	}

	$('.jrc-comparison-chart .numbersOnly').on('input', function (event) {
	    this.value = this.value.replace(/[^0-9]/g, '');
	});

	$('.jrc-comparison-chart .decimalNumbersOnly').on('input', function (event) {
		var val = this.value
		var re = /^([0-9]+[\.]?[0-9]?[0-9]?|[0-9]+)$/g;
		var re1 = /^([0-9]+[\.]?[0-9]?[0-9]?|[0-9]+)/g;
		if (!re.test(val)) {
			val = re1.exec(val);
			if (val) {
				this.value = val[0];
			} else {
				this.value = "";
			}
		}
	});

	// Disable cut/copy/paste
	$('.jrc-comparison-chart input[type="text"]').bind("cut copy paste", function(e) {
		e.preventDefault();
		alert("You cannot paste into this text field.");
		$(this).bind("contextmenu", function(e) {
			e.preventDefault();
		});
	});

	$('#JRCDriverCompensationComparisonChartOne input[type="text"]').on('keydown', function (event) {

		// Get grid class name
		var gridClassName = $(this).attr('class').split(' ').pop();

		// Get gross pay
		var grosspay = jrcObj.find('.gross-pay.' + gridClassName).val();
		grosspay = parseFloat(grosspay) || 0;

		if (grosspay==0) {
			var zero = 0;
			jrcObj.find('.operator-pay.' + gridClassName).val(zero);
			jrcObj.find('span.operatorpay.' + gridClassName).html(zero.toFixed(2)).digits();
			jrcObj.find('.total-deductions.' + gridClassName).val(zero);
			jrcObj.find('span.totalDeductions.' + gridClassName).html(zero.toFixed(2)).digits();
			jrcObj.find('.weekly-take-home.' + gridClassName).val(zero);
			jrcObj.find('span.weeklyTakeHome.' + gridClassName).html(zero.toFixed(2)).digits();
			jrcObj.find('span.yearlyTakeHome.' + gridClassName).html(zero.toFixed(2)).digits();

			if (gridClassName!='grid1') {
				jrcObj.find('.admin-cost.' + gridClassName).val(zero);
				jrcObj.find('span.adminCost.' + gridClassName).html(zero.toFixed(2)).digits();
			}
		}
	});

	$('#JRCDriverCompensationComparisonChartOne input[type="text"]').on('keyup input change', function (event) {

		// Get grid class name
		var gridClassName = $(this).attr('class').split(' ').pop();

		// Get gross pay
		var grosspay = jrcObj.find('.gross-pay.' + gridClassName).val();
		grosspay = parseFloat(grosspay) || 0;

		// Prevent user to enter zero
		if (grosspay==0)
			return false;

		// Calcuate admin costs
		if (gridClassName=='grid2' || gridClassName=='grid3') {
			var pog_g1 = jrcObj.find('.percentage-of-gross.grid1').val();
			pog_g1 = parseFloat(pog_g1) || 0;

			var pog_competitor = jrcObj.find('.percentage-of-gross.' + gridClassName).val();
			pog_competitor = parseFloat(pog_competitor) || 0;

			if (pog_competitor!=0) {
				var gp_competitor = jrcObj.find('.gross-pay.' + gridClassName).val();
				gp_competitor = parseFloat(gp_competitor) || 0;

				var competitoradmincost = ((gp_competitor*(pog_g1-pog_competitor))/100);
				jrcObj.find('.admin-cost.' + gridClassName).val(competitoradmincost);
				jrcObj.find('span.adminCost.' + gridClassName).html(competitoradmincost.toFixed(2)).digits();
			}
		}

		var admincost = jrcObj.find('.admin-cost.' + gridClassName).val();
		admincost = parseFloat(admincost) || 0;

		var occ = jrcObj.find('.occ.' + gridClassName).val();
		occ = parseFloat(occ) || 0;

		var flatbedrental = jrcObj.find('.flatbed-rental.' + gridClassName).val();
		flatbedrental = parseFloat(flatbedrental) || 0;

		var bobtailinsurance = jrcObj.find('.bobtail-insurance.' + gridClassName).val();
		bobtailinsurance = parseFloat(bobtailinsurance) || 0;

		var percentageOfGross = jrcObj.find('.percentage-of-gross.' + gridClassName).val();
		percentageOfGross = parseFloat(percentageOfGross) || 0;

		// Calculate Operator Pay
		var operatorpay = ((parseFloat(grosspay) * parseFloat(percentageOfGross))/100);
		jrcObj.find('.operator-pay.' + gridClassName).val(operatorpay);
		jrcObj.find('span.operatorpay.' + gridClassName).html(operatorpay.toFixed(2)).digits();

		// Calculate Total deductions
		var totaldeductions = parseFloat(admincost) + parseFloat(flatbedrental) + parseFloat(bobtailinsurance) + parseFloat(occ);
		jrcObj.find('.total-deductions.' + gridClassName).val(totaldeductions);
		jrcObj.find('span.totalDeductions.' + gridClassName).html(totaldeductions.toFixed(2)).digits();

		// Calculate Weekly Take Home Total
		var weeklyTakeHome = parseFloat(operatorpay) - parseFloat(totaldeductions);
		jrcObj.find('.weekly-take-home.' + gridClassName).val(weeklyTakeHome);
		jrcObj.find('span.weeklyTakeHome.' + gridClassName).html(weeklyTakeHome.toFixed(2)).digits();

		// Calculate Yearly Take Home
		var yearlyTakeHome = parseFloat(weeklyTakeHome) * parseFloat(52);
		jrcObj.find('span.yearlyTakeHome.' + gridClassName).html(yearlyTakeHome.toFixed(2)).digits();
	});

	$('.current-gross-pay').on('keyup input change', function (event) {
		// Get current gross pay
		var currentgrosspay = $(this).val();
		currentgrosspay = parseInt(currentgrosspay) || 0;
		jrcFormObj.find('.gross-pay.grid1, .gross-pay.grid2').val(currentgrosspay);		
	});

	$('.desired-gross-pay').on('keyup input change', function (event) {
		// Get desired gross pay
		var desiredgrosspay = $(this).val();
		desiredgrosspay = parseInt(desiredgrosspay) || 0;
		jrcFormObj.find('.gross-pay.grid3, .gross-pay.grid4').val(desiredgrosspay);		
	});

	$('.current-percentage-of-gross-pay').on('keyup input change', function (event) {
		// Get current percentage of gross pay
		var currentpercentagegrosspay = $(this).val();
		currentpercentagegrosspay = parseInt(currentpercentagegrosspay) || 0;
		jrcFormObj.find('.percentage-of-gross.grid2, .percentage-of-gross.grid4').val(currentpercentagegrosspay);
	});

	$('.occ-per-week').on('keyup input change', function (event) {
		// Get occ per week
		var occperweek = $(this).val();
		occperweek = parseInt(occperweek) || 0;
		jrcFormObj.find('.occ.grid2, .occ.grid4').val(occperweek);
	});

	$('.flatbed-rental-cost').on('keyup input change', function (event) {
		// Get flatbed rental cost
		var flatbedrentalcost = $(this).val();
		flatbedrentalcost = parseInt(flatbedrentalcost) || 0;
		jrcFormObj.find('.flatbed-rental').val(flatbedrentalcost);
	});

	$('.pay-per-week-bobtail-insurance').on('keyup input change', function (event) {
		// Get pay per week bobtail insurance
		var payperweekbobtailinsurance = $(this).val();
		payperweekbobtailinsurance = parseInt(payperweekbobtailinsurance) || 0;
		jrcFormObj.find('.bobtail-insurance').val(payperweekbobtailinsurance);
	});

	$('.jrc-comparison-chart .calcuate-result').on('click', function (event) {
		var is_valid = true;
		$( "#jrc-comparison-chart-form input[type=text]" ).each(function() {
			if ($(this).val()=='') {
				is_valid = false;
			}
		});

		if (is_valid===false) {
			alert('Please fill in all required form fields');
			return false;
		} else {		
			$('#JRCDriverCompensationComparisonChartTwo input[type="text"]').trigger('input');
			setEarnings();
			$('.jrc-comparison-chart .calcuate-result').val('Recalculate');
		}
	});

	$('#JRCDriverCompensationComparisonChartTwo input[type="text"]').on('keyup input change', function (event) {

		// Get grid class name
		var gridClassName = $(this).attr('class').split(' ').pop();

		// Get gross pay
		var grosspay = jrcFormObj.find('.gross-pay.' + gridClassName).val();
		grosspay = parseFloat(grosspay) || 0;

		// Prevent user to enter zero
		if (grosspay==0)
			return false;

		// Calculate admin costs
		if (gridClassName=='grid2' || gridClassName=='grid4') {
			var pog_g1 = jrcFormObj.find('.percentage-of-gross.grid1').val();
			pog_g1 = parseFloat(pog_g1) || 0;

			var pog_competitor = jrcFormObj.find('.percentage-of-gross.' + gridClassName).val();
			pog_competitor = parseFloat(pog_competitor) || 0;

			if (pog_competitor!=0) {
				var gp_competitor = jrcFormObj.find('.gross-pay.' + gridClassName).val();
				gp_competitor = parseFloat(gp_competitor) || 0;

				var competitoradmincost = ((gp_competitor*(pog_g1-pog_competitor))/100);
				jrcFormObj.find('.admin-cost.' + gridClassName).val(competitoradmincost);
				jrcFormObj.find('span.adminCost.' + gridClassName).html(competitoradmincost.toFixed(2)).digits();
			}
		}

		var admincost = jrcFormObj.find('.admin-cost.' + gridClassName).val();
		admincost = parseFloat(admincost) || 0;

		var occ = jrcFormObj.find('.occ.' + gridClassName).val();
		occ = parseFloat(occ) || 0;

		var flatbedrental = jrcFormObj.find('.flatbed-rental.' + gridClassName).val();
		flatbedrental = parseFloat(flatbedrental) || 0;

		var bobtailinsurance = jrcFormObj.find('.bobtail-insurance.' + gridClassName).val();
		bobtailinsurance = parseFloat(bobtailinsurance) || 0;

		var percentageOfGross = jrcFormObj.find('.percentage-of-gross.' + gridClassName).val();
		percentageOfGross = parseFloat(percentageOfGross) || 0;

		// Calculate Operator Pay
		var operatorpay = ((parseFloat(grosspay) * parseFloat(percentageOfGross))/100);
		jrcFormObj.find('.operator-pay.' + gridClassName).val(operatorpay);
		jrcFormObj.find('span.operatorpay.' + gridClassName).html(operatorpay.toFixed(2)).digits();

		// Calculate Total deductions
		var totaldeductions = parseFloat(admincost) + parseFloat(flatbedrental) + parseFloat(bobtailinsurance) + parseFloat(occ);
		jrcFormObj.find('.total-deductions.' + gridClassName).val(totaldeductions);
		jrcFormObj.find('span.totalDeductions.' + gridClassName).html(totaldeductions.toFixed(2)).digits();

		// Calculate Weekly Take Home Total
		var weeklyTakeHome = parseFloat(operatorpay) - parseFloat(totaldeductions);
		jrcFormObj.find('.weekly-take-home.' + gridClassName).val(weeklyTakeHome);
		jrcFormObj.find('span.weeklyTakeHome.' + gridClassName).html(weeklyTakeHome.toFixed(2)).digits();

		// Calculate Yearly Take Home
		var yearlyTakeHome = parseFloat(weeklyTakeHome) * parseFloat(52);
		jrcFormObj.find('.yearly-take-home.' + gridClassName).val(yearlyTakeHome);
		jrcFormObj.find('span.yearlyTakeHome.' + gridClassName).html(yearlyTakeHome.toFixed(2)).digits();

		// Calculate Difference
		if (gridClassName=='grid2') {
			// Deduction Difference
			var dd_g1 = jrcFormObj.find('.total-deductions.grid1').val();
			dd_g1 = parseFloat(dd_g1) || 0;
			var deductionDifference = totaldeductions - dd_g1;
			jrcFormObj.find('span.deductionDifference.' + gridClassName).html(deductionDifference.toFixed(2)).digits();
			jrcFormObj.find('.deduction-difference.' + gridClassName).val(deductionDifference);

			// Weekly Difference
			var wd_g1 = jrcFormObj.find('.weekly-take-home.grid1').val();
			wd_g1 = parseFloat(wd_g1) || 0;
			var weeklyDifference = wd_g1 - weeklyTakeHome;

			jrcFormObj.find('span.weeklyDifference.grid1').html(weeklyDifference.toFixed(2)).digits();
			jrcFormObj.find('span.weeklyDifference.' + gridClassName).html(weeklyDifference.toFixed(2)).digits();
			jrcFormObj.find('.weekly-difference.' + gridClassName).val(weeklyDifference);

			// Yearly Difference
			var yd_g1 = jrcFormObj.find('.yearly-take-home.grid1').val();
			yd_g1 = parseFloat(yd_g1) || 0;
			var yearlyDifference = yd_g1 - yearlyTakeHome;
			jrcFormObj.find('span.yearlyDifference.grid1').html(yearlyDifference.toFixed(2)).digits();
			jrcFormObj.find('span.yearlyDifference.' + gridClassName).html(yearlyDifference.toFixed(2)).digits();
			jrcFormObj.find('.yearly-difference.' + gridClassName).val(yearlyDifference);
		}

		// Calculate Difference
		if (gridClassName=='grid4') {
			// Deduction Difference
			var dd_g3 = jrcFormObj.find('.total-deductions.grid3').val();
			dd_g3 = parseFloat(dd_g3) || 0;
			var deductionDifference = totaldeductions - dd_g3;
			jrcFormObj.find('span.deductionDifference.' + gridClassName).html(deductionDifference.toFixed(2)).digits();
			jrcFormObj.find('.deduction-difference.' + gridClassName).val(deductionDifference);

			// Weekly Difference
			var wd_g3 = jrcFormObj.find('.weekly-take-home.grid3').val();
			wd_g3 = parseFloat(wd_g3) || 0;
			var weeklyDifference = wd_g3 - weeklyTakeHome;
			jrcFormObj.find('span.weeklyDifference.grid3').html(weeklyDifference.toFixed(2)).digits();
			jrcFormObj.find('span.weeklyDifference.' + gridClassName).html(weeklyDifference.toFixed(2)).digits();
			jrcFormObj.find('.weekly-difference.' + gridClassName).val(weeklyDifference);

			// Yearly Difference
			var yd_g3 = jrcFormObj.find('.yearly-take-home.grid3').val();
			yd_g3 = parseFloat(yd_g3) || 0;
			var yearlyDifference = yd_g3 - yearlyTakeHome;
			jrcFormObj.find('span.yearlyDifference.' + gridClassName).html(yearlyDifference.toFixed(2)).digits();
			jrcFormObj.find('span.yearlyDifference.grid3').html(yearlyDifference.toFixed(2)).digits();
			jrcFormObj.find('.yearly-difference.' + gridClassName).val(yearlyDifference);
		}
	});

	function setEarnings() {
		
		// Current Earnings:
		var currentgrosspay = $('.current-gross-pay').val();
		$('span#currentGrossPay').html(currentgrosspay);

		var currentPayTotalDeductions = $('.total-deductions.grid2').val();
		$('span#currentPayTotalDeductions').html(currentPayTotalDeductions);

		var currentPayWeeklyTakeHome = $('.weekly-take-home.grid2').val();
		$('span#currentPayWeeklyTakeHome').html(currentPayWeeklyTakeHome);

		var currentPayYearlyTakeHome = $('.yearly-take-home.grid2').val();
		$('span#currentPayYearlyTakeHome').html(currentPayYearlyTakeHome);

		var JRCTotalDeductions = $('.total-deductions.grid1').val();
		$('span#JRCTotalDeductions').html(JRCTotalDeductions);

		var deductionDifferenceGrid2 = $('.deduction-difference.grid2').val();
		$('span#deductionDifferenceGrid2').html(deductionDifferenceGrid2);

		var JRCPayWeeklyTakeHome = $('.weekly-take-home.grid1').val();
		$('span#JRCPayWeeklyTakeHome').html(JRCPayWeeklyTakeHome);

		var JRCPayYearlyTakeHome = $('.yearly-take-home.grid1').val();
		$('span#JRCPayYearlyTakeHome').html(JRCPayYearlyTakeHome);

		var JRCPayYearlyDifference = $('.yearly-difference.grid2').val();
		$('span#JRCPayYearlyDifference').html(JRCPayYearlyDifference);

		// Potential Earnings:
		var desiredgrosspay = $('.desired-gross-pay').val();
		$('span#desiredGrossPay').html(desiredgrosspay);

		var currentDesiredPayTotalDeductions = $('.total-deductions.grid4').val();
		$('span#currentDesiredPayTotalDeductions').html(currentDesiredPayTotalDeductions);

		var currentDesiredWeeklyTakeHome = $('.weekly-take-home.grid4').val();
		$('span#currentDesiredWeeklyTakeHome').html(currentDesiredWeeklyTakeHome);

		var currentDesiredYearlyTakeHome = $('.yearly-take-home.grid4').val();
		$('span#currentDesiredYearlyTakeHome').html(currentDesiredYearlyTakeHome);

		var JRCDesiredPayTotalDeductions = $('.total-deductions.grid3').val();
		$('span#RCDesiredPayTotalDeductions').html(JRCDesiredPayTotalDeductions);

		var deductionDifferenceGrid4 = $('.deduction-difference.grid4').val();
		$('span#deductionDifferenceGrid4').html(deductionDifferenceGrid4);

		var JRCDesiredPayWeeklyTakeHome = $('.weekly-take-home.grid3').val();
		$('span#JRCDesiredPayWeeklyTakeHome').html(JRCDesiredPayWeeklyTakeHome);

		var JRCDesiredPayYearlyTakeHome = $('.yearly-take-home.grid3').val();
		$('span#JRCDesiredPayYearlyTakeHome').html(JRCDesiredPayYearlyTakeHome);

		var JRCPayCurrentPayYearlyDifference = $('.yearly-difference.grid4').val();
		$('span#JRCPayCurrentPayYearlyDifference').html(JRCPayCurrentPayYearlyDifference);
	}
});