PageSourceSearch

https://hpwizard.com/javascript/tire-friction-coefficient.js

js hpwizard.com collected 2026-10-02 13:36:34 UTC 11,018 bytes, 317 lines download raw bytes

1var CoFBasedOnTreadwear=false;
2
3/*The function showTreadwear(show) show hide the fieldset for the treadwear input. 'show' is true or false.*/
4function showTreadwear(show)
5{
6	if(show)
7	{
8		document.getElementById("treadwear-fieldset").style.display = "block";
9		document.getElementById("tire-road-button").checked = false;
10		document.getElementById("treadwear-button").checked = true;
11		CoFBasedOnTreadwear=true;
12		document.getElementById("list-box").selectedIndex = 4;
13		treadwearChanged();
14	}
15	else
16	{
17		document.getElementById("treadwear-fieldset").style.display = "none";
18		document.getElementById("tire-road-button").checked = true;
19		document.getElementById("treadwear-button").checked = false;
20		CoFBasedOnTreadwear=false;
21		selectTireType();
22	}
23}
24
25/*The function selectTireType() sets the appropriate values for the friction coefficient and the rolling resistance coefficient*/
26function selectTireType()
27{
28	/*declare all variables:*/
29	var FrictionTextBox = document.getElementById("fc");
30	var RollingResistanceTextBox = document.getElementById("rrc");
31	var AsphaltWetButton = document.getElementById("wet-asphalt");
32	var EarthDryButton = document.getElementById("dry-dirt");
33	var EarthWetButton = document.getElementById("wet-dirt");
34	var SnowButton = document.getElementById("snow");
35	var IceButton = document.getElementById("ice");
36	var GravelButton = document.getElementById("gravel");
37	var SandButton = document.getElementById("sand");
38	var ListBoxValue = document.getElementById("list-box-value");
39
40	/*depending on the list box selection and the radio button selection, set the coefficients:*/
41    switch (document.getElementById("list-box").selectedIndex)
42	{
43    case 0: /*bicycle*/
44        OptionButtonEnabled (false);
45        FrictionTextBox.innerHTML = "0.75";
46        RollingResistanceTextBox.innerHTML = "0.004";
47		break;
48    case 1: /*off-road, tractor*/
49        OptionButtonEnabled (true);
50        FrictionTextBox.innerHTML = "0.75";
51        RollingResistanceTextBox.innerHTML = "0.020";
52        
53        if (AsphaltWetButton.checked)
54		{
55            FrictionTextBox.innerHTML = "0.50";
56            RollingResistanceTextBox.innerHTML = "0.024";
57		}
58        else if (EarthDryButton.checked)
59		{
60            FrictionTextBox.innerHTML = "0.75";
61            RollingResistanceTextBox.innerHTML = "0.030";
62		}
63        else if (EarthWetButton.checked)
64		{
65            FrictionTextBox.innerHTML = "0.60";
66            RollingResistanceTextBox.innerHTML = "0.040";
67		}
68        else if(SnowButton.checked)
69		{
70            FrictionTextBox.innerHTML = "0.25";
71            RollingResistanceTextBox.innerHTML = "0.022";
72		}
73        else if (IceButton.checked)
74		{
75            FrictionTextBox.innerHTML = "0.10";
76            RollingResistanceTextBox.innerHTML = "0.020";
77		}
78        else if (GravelButton.checked)
79		{
80            FrictionTextBox.innerHTML = "0.60";
81            RollingResistanceTextBox.innerHTML = "0.020";
82		}
83        else if (SandButton.checked)
84		{
85            FrictionTextBox.innerHTML = "0.60";
86            RollingResistanceTextBox.innerHTML = "0.200";
87		}
88		break;
89    case 2: /*truck*/
90        OptionButtonEnabled (true);
91        FrictionTextBox.innerHTML = "0.80";
92        RollingResistanceTextBox.innerHTML = "0.008";
93        
94        if (AsphaltWetButton.checked)
95		{
96            FrictionTextBox.innerHTML = "0.55";
97            RollingResistanceTextBox.innerHTML = "0.010";
98		}
99        else if (EarthDryButton.checked)
100		{
101            FrictionTextBox.innerHTML = "0.68";
102            RollingResistanceTextBox.innerHTML = "0.040";
103		}
104        else if (EarthWetButton.checked)
105		{
106            FrictionTextBox.innerHTML = "0.55";
107            RollingResistanceTextBox.innerHTML = "0.060";
108		}
109        else if (SnowButton.checked)
110		{
111            FrictionTextBox.innerHTML = "0.20";
112            RollingResistanceTextBox.innerHTML = "0.013";
113		}
114        else if (IceButton.checked)
115		{
116            FrictionTextBox.innerHTML = "0.10";
117            RollingResistanceTextBox.innerHTML = "0.008";
118		}
119        else if (GravelButton.checked)
120		{
121            FrictionTextBox.innerHTML = "0.60";
122            RollingResistanceTextBox.innerHTML = "0.020";
123		}
124        else if (SandButton.checked)
125		{
126            FrictionTextBox.innerHTML = "0.60";
127            RollingResistanceTextBox.innerHTML = "0.250";
128		}
129		break;
130    case 3: /*tourism*/
131        OptionButtonEnabled (true);
132        if(!CoFBasedOnTreadwear){FrictionTextBox.innerHTML = "0.90";}else{treadwearChanged();}
133        RollingResistanceTextBox.innerHTML = "0.011";
134        
135        if (AsphaltWetButton.checked)
136		{
137            FrictionTextBox.innerHTML = "0.60";
138            RollingResistanceTextBox.innerHTML = "0.013";
139		}
140        else if (EarthDryButton.checked)
141		{
142            FrictionTextBox.innerHTML = "0.68";
143            RollingResistanceTextBox.innerHTML = "0.050";
144		}
145        else if (EarthWetButton.checked)
146		{
147            FrictionTextBox.innerHTML = "0.55";
148            RollingResistanceTextBox.innerHTML = "0.080";
149		}
150        else if (SnowButton.checked)
151		{
152            FrictionTextBox.innerHTML = "0.20";
153            RollingResistanceTextBox.innerHTML = "0.016";
154		}
155        else if (IceButton.checked)
156		{
157            FrictionTextBox.innerHTML = "0.10";
158            RollingResistanceTextBox.innerHTML = "0.011";
159		}
160        else if (GravelButton.checked)
161		{
162            FrictionTextBox.innerHTML = "0.60";
163            RollingResistanceTextBox.innerHTML = "0.020";
164		}
165        else if (SandButton.checked)
166		{
167            FrictionTextBox.innerHTML = "0.60";
168            RollingResistanceTextBox.innerHTML = "0.300";
169		}
170		break;
171    case 4: /*hi-performance*/
172        OptionButtonEnabled (true);
173        if(!CoFBasedOnTreadwear){FrictionTextBox.innerHTML = "1.00";}else{treadwearChanged();}
174        RollingResistanceTextBox.innerHTML = "0.014";
175        
176        if (AsphaltWetButton.checked)
177		{
178            FrictionTextBox.innerHTML = "0.70";
179            RollingResistanceTextBox.innerHTML = "0.017";
180		}
181        else if (EarthDryButton.checked)
182		{
183            FrictionTextBox.innerHTML = "0.65";
184            RollingResistanceTextBox.innerHTML = "0.050";
185		}
186        else if (EarthWetButton.checked)
187		{
188            FrictionTextBox.innerHTML = "0.55";
189            RollingResistanceTextBox.innerHTML = "0.080";
190		}
191        else if (SnowButton.checked)
192		{
193            FrictionTextBox.innerHTML = "0.15";
194            RollingResistanceTextBox.innerHTML = "0.016";
195		}
196        else if (IceButton.checked)
197		{
198            FrictionTextBox.innerHTML = "0.08";
199            RollingResistanceTextBox.innerHTML = "0.014";
200		}
201        else if (GravelButton.checked)
202		{
203            FrictionTextBox.innerHTML = "0.60";
204            RollingResistanceTextBox.innerHTML = "0.020";
205		}
206        else if (SandButton.checked)
207		{
208            FrictionTextBox.innerHTML = "0.60";
209            RollingResistanceTextBox.innerHTML = "0.300";
210        }
211		break;
212    case 5: /*hi-performance (no thread)*/
213        OptionButtonEnabled (false);
214        if(!CoFBasedOnTreadwear){FrictionTextBox.innerHTML = "1.10";}else{treadwearChanged();}
215        RollingResistanceTextBox.innerHTML = "0.015";
216		break;
217    case 6: /*stock car*/
218        OptionButtonEnabled (false);
219        if(!CoFBasedOnTreadwear){FrictionTextBox.innerHTML = "1.35";}else{treadwearChanged();}
220        RollingResistanceTextBox.innerHTML = "0.020";
221		break;
222    case 7: /*formula*/
223        OptionButtonEnabled (false);
224        FrictionTextBox.innerHTML = "1.50";
225        RollingResistanceTextBox.innerHTML = "0.020";
226		break;
227    case 8: /*formula (qualification)*/
228        OptionButtonEnabled (false);
229        FrictionTextBox.innerHTML = "1.70";
230        RollingResistanceTextBox.innerHTML = "0.025";
231		break;
232    case 9: /*drag*/
233        OptionButtonEnabled (false);
234        FrictionTextBox.innerHTML = "4.00";
235        RollingResistanceTextBox.innerHTML = "0.030";
236		break;
237    }
238	
239	ListBoxValue.innerHTML = document.getElementById("list-box").options[document.getElementById("list-box").selectedIndex].text;
240}
241
242/*The function OptionButtoEnabled() enables the radio buttons that are an appropriate selection for the tire type selected*/
243function OptionButtonEnabled(value)	/*'value' is true to enable radio buttons; false to disable them.*/
244{
245	/*declare all variables:*/
246	var AsphaltDryButton = document.getElementById("dry-asphalt");
247	var AsphaltWetButton = document.getElementById("wet-asphalt");
248	var EarthDryButton = document.getElementById("dry-dirt");
249	var EarthWetButton = document.getElementById("wet-dirt");
250	var SnowButton = document.getElementById("snow");
251	var IceButton = document.getElementById("ice");
252	var GravelButton = document.getElementById("gravel");
253	var SandButton = document.getElementById("sand");
254	
255	/*set the 'disabled' attribute:*/
256    AsphaltWetButton.disabled = !value;
257    EarthDryButton.disabled = !value;
258    EarthWetButton.disabled = !value;
259    SnowButton.disabled = !value;
260    IceButton.disabled = !value;
261    SandButton.disabled = !value;
262    GravelButton.disabled = !value;
263    
264	/*check the dry asphalt button if all other buttons are disabled:*/
265    if (!value){AsphaltDryButton.checked = true}
266}
267
268/*The function treadwearChanged() sets the friction coefficient and the expected mileage based on the treadwear rating*/
269
270function treadwearChanged()
271{
272	if (document.getElementById("dry-asphalt").checked)
273	{
274	/*declare all variables:*/
275	var FrictionTextBox = document.getElementById("fc");
276	var TreadwearBox = document.getElementById("treadwear");
277	var OldTreadwear = document.getElementById("previous-treadwear");
278	var MileageTextBox = document.getElementById("mileage");
279	var MileageUnitBox = document.getElementById("mileage-unit");
280	var OldUnit = document.getElementById("previous-mileage-unit");
281
282	var treadwear = Number(TreadwearBox.value); /*get treadwear*/
283
284	if(isNaN(treadwear) || treadwear < 1)
285	{
286		/*treadwear is not a valid number*/
287		
288		alert("The treadwear must be a valid number greater or equal to 1.");
289		TreadwearBox.value=OldTreadwear.value;
290	}
291	else
292	{
293		/*treadwear is a valid number*/
294		
295		var frictionCoeff;
296		
297		frictionCoeff = 2.25 / Math.pow(treadwear,0.15);	/*calculate friction coefficient*/
298		frictionCoeff=roundNumber(frictionCoeff,2,false);			/*round value*/
299		FrictionTextBox.innerHTML = frictionCoeff + " ±10%";			/*write value*/
300		OldTreadwear.value=treadwear;						/*record treadwear for future reference*/
301		
302		var convFactor = ConvFact("km", MileageUnitBox.value, LENGTH);	/*get conversion factor for expected mileage*/
303		if(convFactor>0)
304		{	
305			/*unit is valid*/
306			
307			MileageTextBox.innerHTML = roundNumber(treadwear * 100 * convFactor,0,true);	/*calculate and write value*/
308			OldUnit.value = MileageUnitBox.value;									/*record unit for future reference*/
309			
310			
311			document.getElementById("treadwear-value").innerHTML = treadwear;
312			document.getElementById("treadwear-unit-value").innerHTML = MileageUnitBox.value;
313		}
314		else{MileageUnitBox.value=OldUnit.value;}
314	/*unit is not valid*/
315	}
316	}
317}

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.