// Copyright © 2003 Abacus Arts, Inc. All rights reserved.

// GLOBALS: 1st gear differential ratios for stock transmissions
	c46re_diffRatio			= 2.45
	nv3500_diffRatio		= 3.49
	t10_diffRatio			= 2.52
	a833_diffRatio			= 2.65
	th400_diffRatio			= 2.48
	dne_diffRatio			= 2.88
	fordClose_diffRatio     = 2.32
	fordWide_diffRatio      = 2.78
	

	stock_transRatio		= 1.00  // Reference point
	nv3500_transRatio		= .73
	c46re_transRatio		= .69
	dne_transRatio		    = .68
	
// GLOBALS: Values for RS transmissions
	RS_400_500_diffRatio	= 3.37
	RS_400_500_transRatio	= 0.67
	RS_400_500_gear_count	= "5"
	RS_400_500_hp			= "475"

	RS_600_diffRatio		= 2.80
	RS_600_transRatio	    = 0.67
	RS_600_gear_count		= "5"
	RS_600_hp				= "650"

	
// GLOBALS: Values for TREMEC transmissions
	tko_425_diffRatio		= 3.37
	tko_425_transRatio		= 0.67
	tko_425_gear_count		= "5"
	tko_425_hp				= "425"
	
	tko_500_diffRatio		= 3.27
	tko_500_transRatio		= 0.68
	tko_500_gear_count		= "5"
	tko_500_hp				= "550"
	
	tko_600_diffRatio		= 2.87
	tko_600_64_transRatio	= 0.64
	tko_600_82_transRatio	= 0.82
	tko_600_gear_count		= "5"
	tko_600_hp				= "650"

	t56_475_diffRatio		= 2.97
	t56_475_transRatio		= 0.62
	t56_475_transRatio5th	= 0.80
	t56_475_gear_count		= "6"
	t56_475_hp				= "475"
	
	t56_550_diffRatio		= 2.66
	t56_550_transRatio		= 0.62
	t56_550_transRatio5th	= 0.80
	t56_550_gear_count		= "6"
	t56_550_hp				= "550"

	t56_650_diffRatio		= 2.66
	t56_650_transRatio		= 0.62
	t56_650_transRatio5th	= 0.80
	t56_650_gear_count		= "6"
	t56_650_hp				= "650"

	t56_700a_diffRatio		= 2.66
	t56_700a_transRatio		= 0.62
	t56_700a_transRatio5th	= 0.80
	t56_700a_gear_count		= "6"
	t56_700a_hp				= "700"
	
	t56_700b_diffRatio		= 2.97
	t56_700b_transRatio		= 0.50
	t56_700b_transRatio5th	= 0.74
	t56_700b_gear_count		= "6"
	t56_700b_hp				= "700"

function computeTable5sp(form,rows,r0,r1,r2,r3,r4) {
// Called by analyzeSpeed() to compute and display the values for the 5-speed form fields.

    // Values set by user input
	var t_width = parseFloat(form.tireWidth.value)
	var a_ratio = parseFloat (form.aspectRatio.value)
	var rim = parseFloat (form.rimDiameter.value)
	var RPMs = parseFloat (form.cruisingRPM.value)

	// Computed values
	var inchWidth = t_width/25.4;     
	var insideWidth = inchWidth * a_ratio/100 ;
	var innerTireDiameter = insideWidth * 2 + rim;
	// Compute the rolling diameter, then trim the value to 4 chars.
	var rawRD = ((t_width * (a_ratio/100) *2) / 25.4) + rim;
	var	stringRD = rawRD.toString();
	var	clippedRD = stringRD.substring(0,4);
	form.rolling_diameter.value = clippedRD;
	
	// Reduce the loop count by 1 since array indexes start at zero.
	var loops = rows-1;
	// Clear all fields. 
	switch (form.stockTranny.value) {
			case "a833": loops = loops+2; break
			case "th400": loops = loops+3; break
	}
//	if (form.stockTranny.value=='a833') {loops = loops+2}
    for (var i=0; i<=loops; i++) {
        form["column0_"+i].value = " ";
        form["column1_"+i].value = " ";
        form["column2_"+i].value = " ";
        form["column3_"+i].value = " ";
    }
	switch (form.stockTranny.value) {
			case "a833": loops = loops-2; break
			case "th400": loops = loops-3; break
	}
//	if (form.stockTranny.value=='a833') {loops = loops-2}
	// Load values into fields.		
    for (var i=0; i<=loops; i++) {
		// Compute the 1st gear equiv. differential ratio, then trim the value to 4 chars.
		rawVal = (r1 / r4) * r0[i];
		stringVal = rawVal.toString();
		clippedVal = stringVal.substring(0,4);

		// Populate the form fields with the appropriate values.
        form["column0_"+i].value = r0[i];
        form["column1_"+i].value = clippedVal;
        form["column2_"+i].value = Math.round((RPMs * innerTireDiameter * 0.002975) / (r2 * r0[i]));
        form["column3_"+i].value = Math.round((RPMs * innerTireDiameter * 0.002975) / (r3 * r0[i]));
    }
}

function computeTable6sp(form,rows,r0,r1,r2,r3,r4,r5) {
// Called by analyzeSpeed() to compute and display the values for the 6-speed form fields.

    // Values set by user input
	var t_width = parseFloat(form.tireWidth.value)
	var a_ratio = parseFloat (form.aspectRatio.value)
	var rim = parseFloat (form.rimDiameter.value)
	var RPMs = parseFloat (form.cruisingRPM.value)

	// Computed values
	var inchWidth = t_width/25.4;     
	var insideWidth = inchWidth * a_ratio/100 ;
	var innerTireDiameter = insideWidth * 2 + rim;
	// Compute the rolling diameter, then trim the value to 4 chars.
	var rawRD = ((t_width * (a_ratio/100) *2) / 25.4) + rim;
	var	stringRD = rawRD.toString();
	var	clippedRD = stringRD.substring(0,4);
	form.rolling_diameter.value = clippedRD;
	
	// Reduce the loop count by 1 since array indexes start at zero.
	var loops = rows-1;
	// Clear all fields. 
	switch (form.stockTranny.value) {
			case "a833": loops = loops+2; break
			case "dne": loops = loops+2; break
			case "th400": loops = loops+3; break
	}
//	if (form.stockTranny.value=='a833') {loops = loops+2}
    for (var i=0; i<=loops; i++) {
        form["column0_"+i].value = " ";
        form["column1_"+i].value = " ";
        form["column2_"+i].value = " ";
        form["column3_"+i].value = " ";
        form["column4_"+i].value = " ";
    }
	switch (form.stockTranny.value) {
			case "a833": loops = loops-2; break
			case "th400": loops = loops-3; break
	}
//	if (form.stockTranny.value=='a833') {loops = loops-2}
	// Load values into fields.		
    for (var i=0; i<=loops; i++) {
		// Compute the 1st gear equiv. differential ratio, then trim the value to 4 chars.
		rawVal = (r1 / r5) * r0[i];
		stringVal = rawVal.toString();
		clippedVal = stringVal.substring(0,4);

		// Populate the form fields with the appropriate values.
        form["column0_"+i].value = r0[i];
        form["column1_"+i].value = clippedVal;
        form["column2_"+i].value = Math.round((RPMs * innerTireDiameter * 0.002975) / (r2 * r0[i]));
        form["column3_"+i].value = Math.round((RPMs * innerTireDiameter * 0.002975) / (r3 * r0[i]));
        form["column4_"+i].value = Math.round((RPMs * innerTireDiameter * 0.002975) / (r4 * r0[i]));
    }
}


function analyzeSpeed(gears,model,form) { 
// Set variable values based on form field settings.

switch (model) {
    case "gm":
    case "c4vette":
    case "jaguar":
    	var stockTrannySelector = form.stockTranny.value
    	break
    case "mopar":
    case "dakota":
    case "ford":
    	var stockTrannySelector = form.stockTranny.options[form.stockTranny.selectedIndex].value
        break
}

	switch (stockTrannySelector) {
		case "muncie":
			form.stockFinalGearTitle.value	= "Muncie/T10 4th (1:1)"
			var stock_diffRatio				= t10_diffRatio
			break
		case "dne":
			form.stockFinalGearTitle.value	= "DNE 4+3 OD (" + dne_transRatio + ":1)"
			var stock_diffRatio				= dne_diffRatio
			stock_transRatio 				= dne_transRatio // change reference point
			break
		case "a833":
			form.stockFinalGearTitle.value	= "Chrysler A833 4th (1:1)"
			var stock_diffRatio				= a833_diffRatio
			break
		case "c46re":
			form.stockFinalGearTitle.value	= "46RE Auto w/OD (" + c46re_transRatio + ":1)"
			var stock_diffRatio				= c46re_diffRatio
			stock_transRatio 				= c46re_transRatio // change reference point
			break
		case "nv3500":
			form.stockFinalGearTitle.value	= "NV3500 5-spd (" + nv3500_transRatio + ":1)"
			var stock_diffRatio				= nv3500_diffRatio
			stock_transRatio 				= nv3500_transRatio // change reference point
			break
		case "th400":
			form.stockFinalGearTitle.value	= "Jaguar TH400 3rd (1:1)"
			var stock_diffRatio				= th400_diffRatio
			break
		case "fordClose":
			form.stockFinalGearTitle.value	= "Ford Close Ratio 4th (1:1)"
			var stock_diffRatio				= fordClose_diffRatio
			break
		case "fordWide":
			form.stockFinalGearTitle.value	= "Ford Wide Ratio 4th (1:1)"
			var stock_diffRatio				= fordWide_diffRatio
			break
	}

	for (var i = 0; i < form.newTranny.length; i++) {
		if (form.newTranny[i].checked) {
			var btn_value = form.newTranny[i].value;
			break
		}
	}

	switch (btn_value) {
		case "tko_425":
			var new_diffRatio				= tko_425_diffRatio
			var new_transRatio				= tko_425_transRatio
			var gear_count					= tko_425_gear_count
			var hp							= tko_425_hp
			var title 						= hp + "Torque " + gear_count + "sp (.67 OD)" 
			break		
		case "tko_500":
			var new_diffRatio				= tko_500_diffRatio
			var new_transRatio				= tko_500_transRatio
			var gear_count					= tko_500_gear_count
			var hp							= tko_500_hp
			var title 						= "TKO 500" 
			break
		case "tko_600_64":
			var new_diffRatio				= tko_600_diffRatio
			var new_transRatio				= tko_600_64_transRatio
			var gear_count					= tko_600_gear_count
			var hp							= tko_600_hp
			var title 						= "TKO 600"
			break
		case "tko_600_82":
			var new_diffRatio				= tko_600_diffRatio
			var new_transRatio				= tko_600_82_transRatio
			var gear_count					= tko_600_gear_count
			var hp							= tko_600_hp
			var title 						= "TKO 600" 
			break
		case "RS_400_500":
			var new_diffRatio				= RS_400_500_diffRatio
			var new_transRatio				= RS_400_500_transRatio
			var gear_count					= RS_400_500_gear_count
			var hp							= RS_400_500_hp
			var title 						= "RS 400/500" 
			break
		case "RS_600":
			var new_diffRatio				= RS_600_diffRatio
			var new_transRatio				= RS_600_transRatio
			var gear_count					= RS_600_gear_count
			var hp							= RS_600_hp
			var title 						= "RS 600" 
			break
		case "t56_475":
			var new_diffRatio				= t56_475_diffRatio
			var new_transRatio				= t56_475_transRatio
			var new_transRatio5th			= t56_475_transRatio5th
			var gear_count					= t56_475_gear_count
			var hp							= t56_475_hp
			var title 						= "475 Torque"
			break
		case "t56_550":
			var new_diffRatio				= t56_550_diffRatio
			var new_transRatio				= t56_550_transRatio
			var new_transRatio5th			= t56_550_transRatio5th
			var gear_count					= t56_550_gear_count
			var hp							= t56_550_hp
			var title 						= "550 Torque"
			break
		case "t56_650":
			var new_diffRatio				= t56_650_diffRatio
			var new_transRatio				= t56_650_transRatio
			var new_transRatio5th			= t56_650_transRatio5th
			var gear_count					= t56_650_gear_count
			var hp							= t56_650_hp
			var title 						= "650 Torque"
			break
		case "t56_700a":
			var new_diffRatio				= t56_700a_diffRatio
			var new_transRatio				= t56_700a_transRatio
			var new_transRatio5th			= t56_700a_transRatio5th
			var gear_count					= t56_700a_gear_count
			var hp							= t56_700a_hp
			var title 						= "700 Torque"
			break
		case "t56_700b":
			var new_diffRatio				= t56_700b_diffRatio
			var new_transRatio				= t56_700b_transRatio
			var new_transRatio5th			= t56_700b_transRatio5th
			var gear_count					= t56_700b_gear_count
			var hp							= t56_700b_hp
			var title 						= "700 Torque"
			break
	}

		form.newFirstGearTitle.value	    = title + " 1st (" + new_diffRatio + ")"
        if (gears==6) {
//    		form.new5thGearTitle.value	    = title + " " + "5th (" + new_transRatio5th + ":1)"
    		form.gearSet.value			    = "1st=" + new_diffRatio + ":1; 5th=" + new_transRatio5th + ":1; 6th=" + new_transRatio + ":1"
//    		form.newFinalGearTitle.value    = title + " " + gear_count + "th (" + new_transRatio + ":1)"
    	} else {
    		form.gearSet.value				= "1st=" + new_diffRatio + ":1; " + gear_count + "th=" + new_transRatio + ":1"
    		form.newFinalGearTitle.value    = title + " " + gear_count + "th (" + new_transRatio + ")"
    	}
//		form.newFinalGearTitle.value	= title + " " + gear_count + "th (" + new_transRatio + ":1)"
		form.horsepower.value			= hp
// Set constants for the computations, then call computeTable() to populate the form fields.

	switch (model) {
		case "gm":
			// 1st gear differential ratios for GM stock transmission (column_0)
			var c0_diffRatio = new Array(	3.08,
											3.36,
											3.42,
											3.55,
											3.73,
											3.91,
											4.10,
											4.56)
			break
		case "c4vette":
			// 1st gear differential ratios for C4 Corvette stock transmission (column_0)
			var c0_diffRatio = new Array(	2.73,
											3.08,
											3.23,
											3.45,
											3.73,
											4.10)
			break
		case "mopar":
			// 1st gear differential ratios for Mopar stock transmission (column_0)
			var c0_diffRatio = new Array(	3.23,
											3.55,
											3.73,
											3.91,
											4.10,
											4.56)
			break
		case "dakota":
			// 1st gear differential ratios for Dodge Dakota stock transmission (column_0)
			var c0_diffRatio = new Array(	3.08,
											3.36,
											3.42,
											3.55,
											3.73,
											3.91,
											4.10,
											4.56)
			break
		case "jaguar":
			// 1st gear differential ratios for Dodge Dakota stock transmission (column_0)
			var c0_diffRatio = new Array(	2.88,
										 	3.08,
											3.31,
											3.54,
											4.08)
			break
		case "ford":
			// 1st gear differential ratios for Dodge Dakota stock transmission (column_0)
			var c0_diffRatio = new Array(	3.00,
										 	3.25,
											3.50,
											3.70,
											3.89,
											4.10,
											4.30)
			break
	}
    // Number of rows in the speed table on the page
	var totalRows = c0_diffRatio.length

    // Set number of columns in the speed table based on the number of gears.
    // 5-speed tables have 4 columns.
    // 6-speed tables have 5 columns.
    
    var totalCols = gears-1
    
	switch (gears) {
		case "5":
	            computeTable5sp(form,totalRows,c0_diffRatio,new_diffRatio,stock_transRatio,new_transRatio,stock_diffRatio);
    		break
		case "6":
	            computeTable6sp(form,totalRows,c0_diffRatio,new_diffRatio,stock_transRatio,new_transRatio5th,new_transRatio,stock_diffRatio);
    		break
   	}
}

