PageSourceSearch

https://www.gearingcommander.com/js/gc_main.js

js gearingcommander.com collected 2026-10-02 13:29:55 UTC 91,411 bytes, 1,621 lines download raw bytes

1/* ver: 01.03.2025-13.25 uur, Regel 1224 -1250 De bestaande AdBlock vertaging aangepast, werket ineens niet meer. Nieuwe methode met 'promise' gebruikt, Ook setTime werkt niet in FF en Edge! Zie mail aan self*/
2/* ver: 23.02.2025-16.20 uur, Regel 414 - nu ook voor Chain not verified een eigen GIF plaatje laden met '_c' achteraan (van chain) ipv _p voor partly*/
3/* ver: 30.05.2024-11.20 uur, Regel 457 - Ophalen new Cookie NumBrand toegevoegd voor dat aantal op pagina gc_what.htm */
4/* ver: 29.05.2024-13.00 uur, Regel 1384 - er stond myarr{ubi] i.p.v. myArr[ubi] (Hoofdletter A.) OMG heeft ff geduurd */
5/* ver: 23.05.2024-13.20 uur, Regel 1032 - 1051 voorzien van If functie indien er geen links ingevuld zijn, tekst toten en niets berekenen. */
6/* ver: 02.04.2024-12.15 uur, Tekst in Mask aangepast en tevens de gc_main.css file voor juiste plaatsing teksten */
7/* ver: 29.03.2024-10.56 uur, Werkte neit meer, er was geen GC_UBI cookie: document.cookie = NameOfCookie + "=" + escape(Cookie_Content) + '; SameSite=Lax;'; VERVANGEN door set_cookie */
8/* ver: 27.07.2023-12.30 uur, creAdd() aangepast zodat Subject in mail wordt aangemaakt ipv achter adres wordt geplakt (? ipv &). */
9/* ver: 04.02.2022-12.30 uur, Tekst Sinkhole Mask aangeoast, ok AdBlock erbij genoemd */
10/* ver: 10.11.2021-1x.x0 uur, fnPiHolePresent() toegevoegd om bijv.CyberSec te detecteren */
11/* ver: 13.06.2021-1x.x0 uur, Bij Load Bike Gearing gebruik nu automatisch openen van Bike Info plus Stock data */
12/* ver: 17.10.2020-12.30 uur, her en der Speed49Combo en SpeedGearRPM teksten aangepast met extra 'GPS' deel */
13
14/* Bepaal of er MainPage data is en laadt deze of anders zet de Units volgens Koekje */
15function fnSetData() {
16					/* console.log("Dit is fnSetData"); */
17					begin = document.cookie.indexOf("GC_MainPage_Data"+"=");
18					if (begin != -1)
19							{ /* alert("Mainpage data wordt nu terug gelezen !: " + begin); */
20							fnLoadSetups("gcm","Maindat");
21							/* Ook de ABDI data gereed maken, alleen maar als er MainPage data is */
22							fnABDI('PageLoad');
23							fnUpdDrvTypTxt(document.getElementById("FinDrivTyp").value) /* 6.5 - nodig om bij reload page de Devider texten aan te passen */
24							}
25					else {
26          			/* alert("Dit is fnSetData, er is GEEN MainPAge cookie"); */
27          			var Units_koekje = get_cookie('GC_Units');
28          			/* alert("landkoekje is: "+Units_koekje); */
29          			
30          			if (Units_koekje == null) {	
31          			
32	          			var expiremins =525600; /* about 1 year			 */
33									var ExpireDate = new Date ();
34									ExpireDate.setTime(ExpireDate.getTime() + (expiremins * 60 * 1000));
35									/* initeel moet Setup Stock zijn */
36	          			set_cookie("GC_SetupChosen","Stock",ExpireDate) ;
37          			
38			          				Swal.fire({
39												  position: 'top',
40												  width: '250px',
41												  padding: '5px',
42												  icon: 'question',
43												  showConfirmButton: true,
44												  showCancelButton: true,
45												  confirmButtonColor: '#3085d6',
46													cancelButtonColor: '#3085d6',
47													confirmButtonText: 'Imperial:<br> Miles/h + inch',
48									  			cancelButtonText: 'Metric:<br> Km/h and mm ',
49													allowEscapeKey: false,
50													allowOutsideClick: false,		
51												  html:
52													    '<p style="font-size:18px; font-weight:bold; font-family:Verdana; color:green">Please select your<br>preferred Units<br><p style="font-size:14px; font-family:Verdana; color:green;"> These will be used for Speeds<br>and calculated Dimensions.</p></font> ',
53												  		
54												}).then((result) => {
55								  			if (result.value) {
56								   			 Swal.fire({
57												  position: 'top',
58												  width: '250px',
59												  padding: '5px',
60												  icon: 'success',
61												  showConfirmButton: true,
62												  html:
63													    '<p style="font-size:18px; font-weight:bold; font-family:Verdana; color:green">Your selection <br>"IMPERIAL"<br> has been saved!<br><p style="font-size:14px; font-family:Verdana; color:green;"> Please make sure to Not delete<br>Gearing Commander cookies.</p></font> ',
64											  		
65													});
66													Units_koekje = "Imperial";
67													set_cookie("GC_Units",Units_koekje,ExpireDate) ;
68													document.getElementById("UnitSel").value = "I";
69          								var Un = "Km/h";
70          								set_cookie("GC_Accur_Dec",10,ExpireDate);
71          								document.getElementById("Accur").value = 10;
72          								fnABDI('Reset');
73													
74											/*  For more information about handling dismissals please visit */
75								  		/*  https://sweetalert2.github.io/#handling-dismissals */
76								  } else if (result.dismiss === Swal.DismissReason.cancel) {
77								    Swal.fire({
78											  position: 'top',
79											  width: '250px',
80											  padding: '5px',
81											  icon: 'success',
82											  showConfirmButton: true,
83											  html:
84												    '<p style="font-size:18px; font-weight:bold; font-family:Verdana; color:green">Your selection <br>"METRIC"<br> has been saved!<br><p style="font-size:14px; font-family:Verdana; color:green;"> Please make sure to Not delete<br>Gearing Commander cookies.</p></font> ',
85											  
86											});
87										
88										/* alert("Werkt Metric"); */
89										Units_koekje = "Metric";
90										set_cookie("GC_Units",Units_koekje,ExpireDate);
91										document.getElementById("UnitSel").value = "M";
92										var Un = "Mph";
93										set_cookie("GC_Accur_Dec",10,ExpireDate);
94										document.getElementById("Accur").value = 10;
95										fnABDI('Reset');
96									
97								  }
98								})	
99					}
100 		}	
101						fnSetupChoice('Pers');
102}
103
104/* Delete MainPage data koekje bij Reset All */
105function fnDelMainPageDat(FuncInp) {
106		
107		/*  werkt niet (meer) del_cookie("GC_MainPage_Data"); */
108		/*  werkt niet (meer)  Delete_Cookie("GC_MainPage_Data", "/base/", "gearingcommander.700"); */
109		/* alert("fnDelMainPageDat running"); */
110		fnEraseCookie("GC_MainPage_Data");
111}
112
113/*  Create qlib counter imagelist */
114   		DIGITS = new QImageList(8, 10, "img/qlib/d0.gif", "img/qlib/d1.gif",
115            "img/qlib/d2.gif", "img/qlib/d3.gif", "img/qlib/d4.gif",
116            "img/qlib/d5.gif", "img/qlib/d6.gif", "img/qlib/d7.gif",
117            "img/qlib/d8.gif", "img/qlib/d9.gif", "img/qlib/z.gif");
118
119	var preVal = new Array();
120	var BrandLogo = "sprockets";
121	var DefFTcc ;
122	var DefRTcc ;
123	var DefBCtc ;
124	var CurFTcc ;	
125	var CurRTcc ;
126	var CurBCtc ;
127	var CustFTcc ;
128	var CustRTcc ;
129	var CustBCtc ;
130
131ns4 = (document.layers)? true:false;
132ie4 = (document.all)? true:false;
133
134
135function creAdd() {
136		MailAdd = "DUCMAN" + String.fromCharCode(64) + "GearingCommander.com";
137		/* alert("This mail address will be used: " + MailAdd); */
138		window.open("mailto:" + escape(MailAdd) + "?Subject=About GC:");
139}
140
141
142function fnPrepare() {
143	document.getElementById("SpeedGearRPM").innerHTML = "GPS Speed in " + Un + " at RPM in Gear in selected setup: ";
144}
145
146
147function fnSetupChoice(SChoice) {
148	/* window.alert("Parameter choice is" + SChoice); */
149	if (SChoice	== "Pers") {var SU_Choice = get_cookie('GC_SetupChosen')} else {SU_Choice = SChoice;
150																																							var expiremins =525600; /* about 1 year */
151																																							var ExpireDate = new Date ();
152																																							ExpireDate.setTime(ExpireDate.getTime() + (expiremins * 60 * 1000));
153																																							set_cookie("GC_SetupChosen",SChoice,ExpireDate) ;
154																																							}
155		var ChosenSet= SU_Choice + "Txt";
156	  /* window.alert("ChosenSet is" + ChosenSet); */
157		if (SU_Choice	== "Custom") {
158				BckGColor = "green";
159			} else if (SU_Choice	== "Stock") {
160					BckGColor = "red";
161				} else {
162					BckGColor = "orange";
163				}
164					
165		document.getElementById("CurrentTxt").style.fontSize = '80%';
166		document.getElementById("CurrentTxt").style.fontWeight = 'normal';
167		document.getElementById("CurrentTxt").style.border = 'white';
168		document.getElementById("CurrentTxt").style.textDecoration = 'underline';
169		document.getElementById("CustomTxt").style.fontSize = '80%';
170		document.getElementById("CustomTxt").style.fontWeight = 'normal';
171		document.getElementById("CustomTxt").style.border = 'white';
172		document.getElementById("CustomTxt").style.textDecoration = 'underline';
173  	document.getElementById("StockTxt").style.fontSize = '80%';
174		document.getElementById("StockTxt").style.fontWeight = 'normal';
175		document.getElementById("StockTxt").style.border = 'white';
176		document.getElementById("StockTxt").style.textDecoration = 'underline';
177		
178		elem = document.getElementById(ChosenSet);
179		elem.style.fontSize = "115%";
180		elem.style.fontWeight = "bold";
181		elem.style.border = 'thin solid '+ BckGColor;
182		elem.style.textDecoration = 'none';
183		document.getElementById("SetupChosen").value = SU_Choice;
184		
185		/* 03.09.20 - nu vervangen door zelfde actie met Cookie in regels 139-143  if (SChoice	!= "Pers") { */ 
186			/*  alleen wijzigen bij eigen keuze via 3 optie op mainpage alert("Is niet Pers! " +SChoice); */
187			/* window.alert("Ga nu Local Sytorage wijzigen wegen eigen keuze"); */
188			/* window.localStorage.setItem('GC_SetupChosen', SU_Choice)};	*/
189			/* window.alert("Haal nu waarde weer op " +window.localStorage.getItem('GC_SetupChosen') );	 */
190	
191		if (document.getElementById("TGear1A").value  > 0) {
192			/* alert("Running fnCalculate ! from fnSetupChoice"); */
193			fnCalculate(document)};
194}
195
196var Numbik = 999;
197
198function fnBetaAlert(form) {
199				var koekje = get_cookie('savestate_0');
200				if (koekje == null) {				
201						alert("You are about to use a new release of the \n\n    Gearing Commander version 6.0 !\n\nPlease provide some feedback using Contact/Comments afterwards.");
202						/* mb.alert('Please use the Comments option in the Contact menu to send some FEEDBACK about the site afterwards. Thanks, DUCMANs !  Click Red button below to close'); */
203						/* mb.moveTo(mb.x - 50, mb.y + 150); */
204				}
205}
206
207function fnBuildPresets(FuncInp) {
208		var previousTypes= 0;
209		for (var i=0; i < brands.length; i++)
210		{
211			var presetBrand = brands[i][0];
212			var option = document.createElement("OPTION");
213			option.text = presetBrand;
214			option.value = i;
215			/* gcm.elements["Brands"].options.add(option); */
216			document.getElementById("Brands").options.add(option);
217		}
218		var Loaded = 0;
219}	
220
221function fnChangeUnits(FuncInp) {
222								
223				if (document.getElementById("UnitSel").value == "I") {var selectedunits= "Imperial";} else {var selectedunits= "Metric";}
224				var expiremins =525600; /* 1 Year			 */
225    		var ExpireDate = new Date ();
226    		ExpireDate.setTime(ExpireDate.getTime() + (expiremins * 60 * 1000));
227    		set_cookie("GC_Units",selectedunits,ExpireDate);  /* alleen rekenen als er al iets geladen is, en dus al iets staat in de eerste versnelling, wel Convert FreeLinks ! */
228				if (document.getElementById("TGear1A").value  > 0) {fnCheckCalc("Alles");} else {fnCheckCalc("ChainLinkCalc");}
229					
230}
231
232function fnChangeDec(FuncInp) {
233	    Accuracy = document.getElementById("Accur").value;
234			var expiremins =525600; /* 1 Year */
235   		var ExpireDate = new Date ();
236   		ExpireDate.setTime(ExpireDate.getTime() + (expiremins * 60 * 1000));
237   		set_cookie("GC_Accur_Dec",Accuracy,ExpireDate);
238			/* alleen doorrekenen als er al iets geladen is, en dus al iets staat in de eerste versnelling */
239			if (document.getElementById("TGear1A").value  > 0) {fnCalculate(FuncInp)};
240			/* if (gcm.TGear1A.value  > 0) {fnCalculate(form,"","","","Yes")};  6.5 Bug Fix: gewijzigd naar bovenstaande, dan logo blijft ook goed bij wijz. dec. accurr */
241}
242
243	
244/*  Bereken waardes Top Speed tabel */
245function fnTopSpeedMatrix(form)	{
246		
247		var driveConstant = 1 / primaryDriveRatio / (CustRearSprocket / CustFrontSprocket);
248			var TSM = new Array()
249			for (x = 1; x <= 5;x++)
250				{			
251					for (y = 1; y <= 5; y++)
252						{
253							TSM[x,y] = (((CustRearSprocket - 3) + y) / ((CustFrontSprocket - 3) + x)) * CustMaxRPM * driveConstant * CusttireCircumference * speedConstant
254							/* alert(TSM[x,y]); */
255						}
256				}
257}
258		
259	
260function fnLoadPreset(FuncInp,preVal) {
261			/* console.log("Dit is fnLoadPreset"); */
262			/* alert("Dit is fnLoadPreset -gc_main.js"); */
263			/* when loading a preset, the Save Setups & Load Setup buttons must be enabled (Load Setup will be enabled after using Save Setups ! */
264			 document.getElementById("But_SS").disabled= false;
265			 document.getElementById("But_LS").disabled= false;
266			
267			 document.getElementById("TMaxRPM").value = preVal[0];
268			 document.getElementById("TCurMaxRPM").value = preVal[0];
269			 document.getElementById("TCustMaxRPM").value = preVal[0];
270			 document.getElementById("TTireWidth").value = preVal[1];
271			 document.getElementById("TCurTireWidth").value = preVal[1];
272			 document.getElementById("TCustTireWidth").value = preVal[1];
273			 document.getElementById("TTireAspect").value = preVal[2];
274			 document.getElementById("TCurTireAspect").value = preVal[2];
275			 document.getElementById("TCustTireAspect").value = preVal[2];
276			 document.getElementById("TTireDiameter").value = preVal[3];
277			 document.getElementById("TCurTireDiameter").value = preVal[3];
278			 document.getElementById("TCustTireDiameter").value = preVal[3];
279			 document.getElementById("TPrimaryDrive").value = preVal[4];
280			 document.getElementById("TCurPrimaryDrive").value = preVal[4];
281			 document.getElementById("TCustPrimaryDrive").value = preVal[4];
282			 document.getElementById("TFinalA").value = preVal[5];
283			 document.getElementById("CopTFinalA").value = preVal[5]; /* in kettingen */
284			
285			/*  Load Current with -1 at the front (as of version 7.0) maar alleen indien > 2, zelfde voor rear (dus niet voor shafts enzo) */
286			if (preVal[5] >= 2) {document.getElementById("TCurFinalA").value = preVal[5]-1;}else {document.getElementById("TCurFinalA").value = preVal[5]};
287			document.getElementById("CopTCurFinalA").value = document.getElementById("TCustFinalA").value; /* in kettingen */
288			
289			 document.getElementById("TCustFinalA").value = preVal[5];
290			 document.getElementById("TDefFrontSprocket").value = preVal[5];	
291			 document.getElementById("TDefRearSprocket").value = preVal[6];
292			 document.getElementById("TFinalB").value = preVal[6];
293			 document.getElementById("TCurFinalB").value = preVal[6];
294			 document.getElementById("CopTFinalB").value = preVal[6];
295			
296			if (preVal[6] >= 10) {document.getElementById("TCustFinalB").value = preVal[6];
297														document.getElementById("TCustFinalB").value ++;
298														document.getElementById("TCustFinalB").value ++;
299														document.getElementById("TCustFinalB").value ++;} else {document.getElementById("TCustFinalB").value = preVal[6]};
300			 document.getElementById("CopTCustFinalB").value = document.getElementById("TCustFinalB").value; /* in kettingen */
301			 document.getElementById("TGear1A").value = preVal[7];
302			 document.getElementById("TGear1B").value = preVal[8];
303			 document.getElementById("TGear2A").value = preVal[9];
304			 document.getElementById("TGear2B").value = preVal[10];
305			 document.getElementById("TGear3A").value = preVal[11];
306			 document.getElementById("TGear3B").value = preVal[12];
307			 document.getElementById("TGear4A").value = preVal[13];
308			 document.getElementById("TGear4B").value = preVal[14];
309			 document.getElementById("TGear5A").value = preVal[15];
310			 document.getElementById("TGear5B").value = preVal[16];
311			 document.getElementById("TGear6A").value = preVal[17];
312			 document.getElementById("TGear6B").value = preVal[18];
313			 document.getElementById("TGear7A").value = preVal[19];
314			 document.getElementById("TGear7B").value = preVal[20];
315			
316			 var MaxGear = preVal[21];
317			 document.getElementById("NumGears").value =preVal[21];
318			 document.getElementById("SelectedGear").value =preVal[21];
319				
320			
321
322			if (document.getElementById("UnitSel").value == "I") {preVal[23] = (preVal[23] / 25.4)};
323						
324			 document.getElementById("TDefPitch").value = preVal[23];
325			 document.getElementById("DefChainPitch").value = preVal[23];
326			 document.getElementById("TCurPitch").value = preVal[23];
327			 document.getElementById("TCustPitch").value = preVal[23];
328			 document.getElementById("TDefLinks").value = preVal[24];
329			 document.getElementById("DefChainLinks").value = preVal[24];
330			 document.getElementById("TCurLinks").value = preVal[24];		
331			 document.getElementById("TCustLinks").value = preVal[24];
332			
333			 document.getElementById("DataVerif").value = preVal[25]; /* 6.4  'trim()' om spatie uit bikeconfig sheet weg te halen ! */
334									
335			
336			
337			/* 6.5  Als er een bike geladen wordt welke geen Chain heeft moeten er txt updates plaats vinden. */
338			var CurDrvTyp = document.getElementById("FinDrivTyp").value;
339			/* alert("FinDrivTyp: " +CurDrvTyp); */
340			/* alert("preVal[24].trim(): " +preVal[24].trim()); */
341			if (CurDrvTyp != preVal[26].trim()) {
342					fnUpdDrvTypTxt(preVal[26].trim())
343				}
344			 document.getElementById("FinDrivTyp").value = preVal[26].trim(); 
345			
346			/* console.log("fnSetVerifColers wordt aangeroepen met: "+ preVal[23]+", "+""+" ,"+preVal[20]); */
347			
348			BrandLogo = fnSetVerifColors(preVal[25].trim(),"",preVal[22].trim());
349			/* opgeslagen naam in hidden field */
350			document.getElementById("h_MerkLogo").value = BrandLogo;
351						
352			/* 29.03.24 Onderstaande 2 retgels werkte niet meer, vervangen door normaal set_cookie*/
353			/* var NameOfCookie = "GC_UBI"; */
354			/* document.cookie = NameOfCookie + "=" + escape(Cookie_Content) + '; SameSite=Lax;'; */
355			var expiremins =525600; /* about 1 year			 */
356			var ExpireDate = new Date ();
357			ExpireDate.setTime(ExpireDate.getTime() + (expiremins * 60 * 1000));
358			/* 29.03.24 */
359			
360			var UBI = preVal[27]; /* 6.5, was 24 */
361			Cookie_Content = UBI;
362			/* var NameOfCookie = "GC_UBI";
363			/* document.cookie = NameOfCookie + "=" + escape(Cookie_Content) + '; SameSite=Lax;'; */
364			set_cookie("GC_UBI",Cookie_Content,ExpireDate) ;
365			
366			
367			/* Calc Initial circumf. */
368			if (document.getElementById("UnitSel").value == "M") {var Cvrt = 1; var NumDec = 10};
369			if (document.getElementById("UnitSel").value == "I") {var Cvrt = 25.4; var NumDec = 100};
370			
371			var InitTireCirc = Math.round((preVal[1] /25.4 * preVal[2] /100 + preVal[3] / 2) * 2 * Math.PI * 25.4 / Cvrt * NumDec ) / NumDec;
372			 document.getElementById("TCDef").value = InitTireCirc;
373			 document.getElementById("TCCur").value = InitTireCirc;
374			 document.getElementById("TCCust").value = InitTireCirc;
375
376			/* fnRefreshLogo(BrandLogo); */
377			fnSetupChoice("Pers"); /* v7.0- omdat Cur en Cus nu ander zijn als Stock, bij laden nieuwe bike (Load Bike Gearing), schakelen naar Stock */
378			fnCalculate(FuncInp,BrandLogo,"",UBI, "No");
379}
380
381function fnRefreshLogo(BrandLogo) {		
382			/* alert("Brandlogo in fnRefreshLogo is: " +BrandLogo); */
383			var LogoPath= "img/"+BrandLogo+".gif";
384			/* console.log("Dit is fnRefreshLogo, BrandLogo= "+BrandLogo+", Pad is: "+LogoPath); */
385			document.getElementById("MerkLogo").src = LogoPath;
386}
387
388function fnSetVerifColors(DatVerStatus,BrandLogo,VerifBrandImg) {
389			/* console.log("Dit is START fnSetVerifColors, BrandLogo= "+BrandLogo +", DatVerStatus= "+ DatVerStatus+",  VerifBrandIma= "+VerifBrandImg); */
390			/* Indien Reset button Mainpage, dan alleen kleuren reset en sprocket img reset !, geen return nodig !; */
391			if (BrandLogo == "ToReset") {
392				document.getElementById("MerkLogo").src = "img/sprockets.gif";
393				document.getElementById("DataVerif").value = "v";
394				}
395			/* (Return BrandLogo en set kleuren) indien aangeroepen vanuit andere procedures		 */
396			if (DatVerStatus == "v") {
397									/* 6.4 alert("Ga nu het Merk logo setten"); */
398				var BrandLogo = VerifBrandImg;
399				var fontCol = "red";
400				var backCol = "white";
401				document.getElementById("h_MerkLogo").value = VerifBrandImg;			
402			} else if (DatVerStatus == "n") 
403				{
404									/* 6.4 alert("GEEN Merk logo !"); */
405				var BrandLogo = "gc_notver";
406				var fontCol = "white";
407				var backCol = "black";
408				} else if (DatVerStatus == "p") 
409					{
410					/*var BrandLogo = "gc_parver";*/
411					var BrandLogo = VerifBrandImg + "_p";
412					var fontCol = "black";
413					var backCol = "yellow";
414					} else {
415						var BrandLogo = VerifBrandImg + "_c";
416						/* var BrandLogo = "gc_chainver"; was tot 23.02.25*/
417						var fontCol = "black";
418						var backCol = "orange";
419					}
420			document.getElementById("Brand").style.color = fontCol;
421			document.getElementById("Brand").style.backgroundColor = backCol;
422			document.getElementById("Modell").style.color = fontCol;
423			document.getElementById("Modell").style.backgroundColor = backCol;
424			document.getElementById("MYear").style.color = fontCol;
425			document.getElementById("MYear").style.backgroundColor = backCol;
426			/* Logo ook opslaan in hidden veld */
427			
428			/* alert("Brandlogo in fnSetVerifColors is:" +BrandLogo); */
429			/* console.log("Dit is EINDE fnSetVerifColors, BrandLogo= "+BrandLogo +", DatVerStatus= "+ DatVerStatus); */
430			return BrandLogo;			
431}
432		
433function fnDetermineLink() {
434		if (document.getElementById("DataVerif").value == "v") {window.open('gc_manuals.htm','_self')}
435			else {window.open('gc_popup_notparverif.htm','','scrollbars=yes,menubar=no,height=670,width=650,resizable=yes,toolbar=no,location=no,status=no')}
436}
437		
438function fnCheckCalc(FuncInp) {
439		
440		
441		if (document.getElementById("UnitSel").value == "I")  { var UnitSelected = 1; var Un = "Mph"; var MeasUn = 1 / 25.4;
441 var MeasTxt = "inch"; var NumDec= 100}
442	  if (document.getElementById("UnitSel").value == "M")  { var UnitSelected = 1.609344 ; var Un = "km/h"; var MeasUn = 25.4; var MeasTxt = "mm";var NumDec= 10}
443		
444		if (FuncInp == "Alles") {
445				var Loaded = document.getElementById("TMaxRPM").value;
446				var CurrentUn = document.getElementById("TUnit1").value;  /*  6.5 var CurrentUn = gcm.elements["TUnit1"].value; */
447				if (CurrentUn != MeasTxt) { fnConvert(FuncInp, MeasUn, MeasTxt, NumDec), fnCalculate(FuncInp); }
448		} else {fnFreeLinks("Conv", MeasUn, MeasTxt);} /*  komt hier alleen bij leeg mainpage maar convert, Links calcul. */
449}
450
451function fnGetVersion()	{		
452			
453			document.getElementById("eVersion").value = Version;
454			/* gcm.elements["OL_eVersion"].value = Version;  //Alleen in de Offline versie ! */
455			document.getElementById("ePubDat").value = PubDat;
456/* Zet Aant biks in een cookie voor Whatis-page			 */
457			var expiremins =525600; /* 1 Year		 */
458    	var ExpireDate = new Date ();
459    	ExpireDate.setTime(ExpireDate.getTime() + (expiremins * 60 * 1000));
460    	set_cookie("GC_NumBiks",NumBik,ExpireDate);
461    	set_cookie("GC_NumBrand",NumBrand,ExpireDate);
462}
463
464function incrementAuto(Welke) {
465		  	gcm.elements.AutoCount.value = 0;
466				gcm.elements[Welke].value = parseInt(gcm.elements[Welke].value) + 100;
467}
468
469function increment(Welke) {
470		  	gcm.elements[Welke].value = parseInt(gcm.elements[Welke].value) + (50 * gcm.elements.AutoCount.value);
471}
472	    
473function decrementAuto(Welke) {
474				document.getElementById("AutoCount").value = 0;
475				document.getElementById(Welke).value = parseInt(document.getElementById(Welke).value) - 100;
476}
477
478function decrement(Welke) {
479				document.getElementById(Welke).value = parseInt(document.getElementById(Welke).value) - (50 * document.getElementById("AutoCount").value);
480}
481
482
483function fnConvert(FuncInp, MeasUn, MeasTxt, NumDec)	{
484			
485			document.getElementById("TDefPitch").value = Math.round((parseFloat(document.getElementById("TDefPitch").value) * MeasUn + 0.000001) * 1000000) / 1000000;
486			document.getElementById("DefChainPitch").value = Math.round((parseFloat(document.getElementById("DefChainPitch").value) * MeasUn + 0.000001) * 1000) / 1000;
487			document.getElementById("TCurPitch").value = Math.round((parseFloat(document.getElementById("TCurPitch").value) * MeasUn + 0.000001) * 1000000) / 1000000;
488			document.getElementById("TCustPitch").value = Math.round((parseFloat(document.getElementById("TCustPitch").value) * MeasUn + 0.000001) * 1000000) / 1000000;
489			document.getElementById("TCDef").value = Math.round((parseFloat(document.getElementById("TCDef").value) * MeasUn) * NumDec) / NumDec;
490			document.getElementById("TCCur").value = Math.round((parseFloat(document.getElementById("TCCur").value) * MeasUn) * NumDec) / NumDec;
491			document.getElementById("TCCust").value = Math.round((parseFloat(document.getElementById("TCCust").value) * MeasUn) * NumDec) / NumDec;
492			/*  conv Free Gen Drive */
493			fnFreeLinks("Conv", MeasUn, MeasTxt);
494		}
495
496
497function fnGearUp(FuncInp)	{
498			var GearSelected = parseFloat(document.getElementById("SelectedGear").value);
499			if (GearSelected < document.getElementById("NumGears").value) {
500			var GearSelected = GearSelected + 1
501			document.getElementById("SelectedGear").value = GearSelected;
502			fnCalculate(document.forms[0])
503			}
504}
505	
506function fnGearDown(FuncInp)	{
507			var GearSelected = parseFloat(document.getElementById("SelectedGear").value);
508			if (GearSelected >= 2) {
509			var GearSelected = GearSelected - 1
510			document.getElementById("SelectedGear").value = GearSelected;
511			fnCalculate(document.forms[0])
512			}
513}
514		
515/*  Hieronder 10 functies om 6 cust. input velden te syncen */
516function fnSynInpCustFrontSprocTop()	{
517		  document.getElementById("TCustFrontSprocket").value = parseFloat(document.getElementById("TCustFinalA").value); 
518		  /* document.getElementById("CopTCustFrontSprocket").value = parseFloat(document.getElementById("TCustFinalA").value);  */
519		  document.getElementById("CopTCustFinalA").value = parseFloat(document.getElementById("TCustFinalA").value); 
520		  fnCalculate(document.forms[0]);
521}
522		
523function fnSynInpCustFrontSprocBottom()	{
524			document.getElementById("TCustFinalA").value = parseFloat(document.getElementById("TCustFrontSprocket").value);
525			document.getElementById("CopTCustFinalA").value = parseFloat(document.getElementById("TCustFrontSprocket").value);
526			fnCalculate(document.forms[0]);
527}
528
529function fnSynInpCustRearSprocTop()	{
530		  document.getElementById("TCustRearSprocket").value = parseFloat(document.getElementById("TCustFinalB").value); 
531		  /* document.getElementById("CopTCustRearSprocket").value = parseFloat(document.getElementById("TCustFinalB").value);  */
532		  document.getElementById("CopTCustFinalB").value = parseFloat(document.getElementById("TCustFinalB").value); 
533		  fnCalculate(document.forms[0]);
534}
535		
536function fnSynInpCustRearSprocBottom() {
537			document.getElementById("TCustFinalB").value = parseFloat(document.getElementById("TCustRearSprocket").value);
538			document.getElementById("CopTCustFinalB").value = parseFloat(document.getElementById("TCustRearSprocket").value);
539			fnCalculate(document.forms[0]);
540}
541
542function fnSynInpCustFrontSprocGeo()	{
543		  document.getElementById("TCustFrontSprocket").value = parseFloat(document.getElementById("CopTCustFinalA").value); 
544		  document.getElementById("TCustFinalA").value = parseFloat(document.getElementById("CopTCustFinalA").value); 
545		  fnCalculate(document.forms[0]);
546}
547function fnSynInpCustRearSprocGeo()	{
548		  document.getElementById("TCustRearSprocket").value = parseFloat(document.getElementById("CopTCurFinalB").value); 
549		  document.getElementById("TCustFinalB").value = parseFloat(document.getElementById("CopTCustFinalB").value); 
550		  fnCalculate(document.forms[0]);
551}
552
553function fnSynInpCustChainPitchBottom()	{
554		  /* alert("Dit is fnSynInpCustChainPitchBottom"); */
555		  document.getElementById("TCustPitch").value = parseFloat(document.getElementById("CustChainPitch").value); 
556		  fnCalculate(document.forms[0]);
557}
558		
559function fnSynInpCustChainLinksBottom()	{
560		  /* alert("Dit is fnSynInpCustChainLinksBottom"); */
561		  document.getElementById("TCustLinks").value = parseFloat(document.getElementById("CustChainLinks").value); 
562		  fnCalculate(document.forms[0]);
563}
564
565
566function fnSynInpCustChainLinksTop() {
567			document.getElementById("CustChainLinks").value = parseFloat(document.getElementById("TCustLinks").value);
568			fnCalculate(document.forms[0]);
569}
570
571function fnSynInpCustChainPitchTop() {
572			/* alert("Dit is fnSynInpCustChainPitchTop"); */
573			document.getElementById("CustChainPitch").value = parseFloat(document.getElementById("TCustPitch").value);
574			fnCalculate(document.forms[0]);
575}
576
577/*  Hieronder 4 functies om Def en Cur Final Drive input velden te syncen in Kettingen */
578function fnSynInpDefFrontSproc()	{
579		  document.getElementById("TDefFrontSprocket").value = parseFloat(document.getElementById("CopTFinalA").value); 
580		  document.getElementById("TFinalA").value = parseFloat(document.getElementById("CopTFinalA").value); 
581		  fnCalculate(document.forms[0]);
582}
583function fnSynInpDefRearSproc()	{
584		  document.getElementById("TDefRearSprocket").value = parseFloat(document.getElementById("CopTFinalB").value); 
585		  document.getElementById("TFinalB").value = parseFloat(document.getElementById("CopTFinalB").value); 
586		  fnCalculate(document.forms[0]);
587}
588function fnSynInpCurFrontSproc()	{
589		  document.getElementById("TCurFrontSprocket").value = parseFloat(document.getElementById("CopTCurFinalA").value); 
590		  document.getElementById("TCurFinalA").value = parseFloat(document.getElementById("CopTCurFinalA").value); 
591		  fnCalculate(document.forms[0]);
592}
593function fnSynInpCurRearSproc()	{
594		  document.getElementById("TCurRearSprocket").value = parseFloat(document.getElementById("CopTCurFinalB").value); 
595		  document.getElementById("TCurFinalB").value = parseFloat(document.getElementById("CopTCurFinalB").value); 
596		  fnCalculate(document.forms[0]);
597}
598/*  einde Input-Sync Functies */
599
600
601/*  Calculate Tire Size changes */
602function fnTireSizeChg(FuncInp) {
603			if (document.getElementById("UnitSel").value == "M") {var Cvrt = 1; var NumDec = 10};
604			if (document.getElementById("UnitSel").value == "I") {var Cvrt = 25.4; var NumDec = 100};
605			document.getElementById("TCDef").value =  Math.round((parseFloat(document.getElementById("TTireWidth").value) / 25.4 * parseFloat(document.getElementById("TTireAspect").value) / 100 + parseFloat(document.getElementById("TTireDiameter").value)/ 2) * 2 * Math.PI * 25.4 / Cvrt * NumDec ) / NumDec;
606			document.getElementById("TCCur").value =  Math.round((parseFloat(document.getElementById("TCurTireWidth").value) / 25.4 * parseFloat(document.getElementById("TCurTireAspect").value) / 100 + parseFloat(document.getElementById("TCurTireDiameter").value)/ 2) * 2 * Math.PI * 25.4 / Cvrt * NumDec ) / NumDec;
607			document.getElementById("TCCust").value =  Math.round((parseFloat(document.getElementById("TCustTireWidth").value) / 25.4 * parseFloat(document.getElementById("TCustTireAspect").value) / 100 + parseFloat(document.getElementById("TCustTireDiameter").value)/ 2) * 2 * Math.PI * 25.4 / Cvrt * NumDec ) / NumDec;
608			fnCalculate(document.forms[0]);
609}
610
611/*  Calculate Tire Circumference changes back to an Aspect  */
612function fnTireCircChg(form) {
613			if (document.getElementById("UnitSel").value == "I") {var ToInch = 1};
614			if (document.getElementById("UnitSel").value == "M") {var ToInch = 25.4};
615			document.getElementById("TTireAspect").value =  Math.round(12700 * ((parseFloat(document.getElementById("TCDef").value) / ToInch) - (Math.PI * parseFloat(document.getElementById("TTireDiameter").value))) / (  Math.PI * parseFloat(document.getElementById("TTireWidth").value))) / 10;
616			document.getElementById("TCurTireAspect").value =  Math.round(12700 * ((parseFloat(document.getElementById("TCCur").value) / ToInch) - (Math.PI * parseFloat(document.getElementById("TCurTireDiameter").value))) / (  Math.PI * parseFloat(document.getElementById("TCurTireWidth").value))) / 10;
617			document.getElementById("TCustTireAspect").value =  Math.round(12700 * ((parseFloat(document.getElementById("TCCust").value) / ToInch) - (Math.PI * parseFloat(document.getElementById("TCustTireDiameter").value))) / (  Math.PI * parseFloat(document.getElementById("TCustTireWidth").value))) / 10;
618			fnCalculate(document.forms[0]);
619}	
620		
621/* Start fnCALCULATE !	 */
622function fnCalculate(FuncInp, BrandLogo, DefPitch, DefLinks, Loaded) {
623		/* console.log("Dit is fnCalculate. Brandlogo, Defpictch, DefLinks, Loaded:"+BrandLogo+"," + DefPitch+ ","+ DefLinks+","+ Loaded); */
624		/* alert("Brandlogo in fnCalculate is:" + BrandLogo); */
625			
626			/*  6.5 alert("Running fnCalculate initieel BrandLogo= " +BrandLogo); */
627		
628		if (BrandLogo == undefined) {
629			/* BrandLogo = "img/gc_notver.gif"; */
630			BrandLogo = document.getElementById("h_MerkLogo").value;
631			/*  6.5 alert("Running de IF=True in fnCalculate en BrandLogo= " +BrandLogo); */
632			/* console.log("In fnCalculate, BrandLogo was leeg en is nu: " +BrandLogo); */
633			fnRefreshLogo(BrandLogo);
634			
635			} else
636				{/*  6.5 alert("Running de ELSE in fnCalculate en BrandLogo= " +BrandLogo); */
637					fnRefreshLogo(BrandLogo);}
638		
639
640		if (document.getElementById("UnitSel").value == "I") { var UnitSelected = 1; var Un = "Mph"; var MeasUn = 1 / 25.4; var Cvrt = 1; var MeasTxt = "inch"; var DistTxt="Mile";}
641	  if (document.getElementById("UnitSel").value == "M") { var UnitSelected = 1.609344 ; var Un = "Km/h"; var MeasUn = 25.4; var Cvrt = 25.4; var MeasTxt = "mm"; var DistTxt="Km";}
642
643	  var RndFact = document.getElementById("Accur").value;
644		document.getElementById("Calculated").value = 1;
645		
646	   	
647/*  Lees Default waarden terug uit formulier  */
648	  var DefmaxRPM = parseInt(document.getElementById("TMaxRPM").value);
649		var DefprimDrivRatio = parseFloat(document.getElementById("TPrimaryDrive").value);
650		var VDefChainPitch = parseFloat(document.getElementById("TDefPitch").value);
651		var VDefChainLinks = parseFloat(document.getElementById("TDefLinks").value);
652					
653		document.getElementById("DefChainPitch").value = VDefChainPitch ;
654		document.getElementById("DefChainLinks").value = VDefChainLinks ;
655
656		var DefFrontSprocket = parseFloat(document.getElementById("TFinalA").value);
657		var DefRearSprocket = parseFloat(document.getElementById("TFinalB").value);
658			
659		document.getElementById("TDefFrontSprocket").value = DefFrontSprocket ;
660		document.getElementById("CopTFinalA").value = DefFrontSprocket ; /* in kettingen */
661		document.getElementById("TDefRearSprocket").value = DefRearSprocket ;
662		document.getElementById("CopTFinalB").value = DefRearSprocket ; /* in kettingen */
663		document.getElementById("CopTCurFinalA").value = parseFloat(document.getElementById("TCurFinalA").value); /* in kettingen */
664	  document.getElementById("CopTCurFinalB").value = parseFloat(document.getElementById("TCurFinalB").value); /* in kettingen */
665 		document.getElementById("CopTCustFinalA").value = parseFloat(document.getElementById("TCustFinalA").value); /* in kettingen */
666	  document.getElementById("CopTCustFinalB").value = parseFloat(document.getElementById("TCustFinalB").value); /* in kettingen */
667
668	  
669/*  Haalop band diameter */
670		var DeftireCircumference = parseFloat(document.getElementById("TCDef").value) / Cvrt;
671		
672/*  Lees Current waarden terug uit formulier */
673		var CurmaxRPM = parseInt(document.getElementById("TCurMaxRPM").value);
674	 	var CurprimDrivRatio = parseFloat(document.getElementById("TCurPrimaryDrive").value);
675		var VCurChainPitch = parseFloat(document.getElementById("TCurPitch").value);
676		var VCurChainLinks = parseFloat(document.getElementById("TCurLinks").value);
677		var CurFrontSprocket = parseFloat(document.getElementById("TCurFinalA").value);
678		var CurRearSprocket = parseFloat(document.getElementById("TCurFinalB").value);
679/*  Haalop band diameter		 */
680 		var CurtireCircumference = parseFloat(document.getElementById("TCCur").value) / Cvrt;	
681			
682/*  Lees Custom waarden terug uit formulier */
683		var CustmaxRPM = parseInt(document.getElementById("TCustMaxRPM").value);
684	 	var CustprimDrivRatio = parseFloat(document.getElementById("TCustPrimaryDrive").value);
685		var VCustChainPitch = parseFloat(document.getElementById("TCustPitch").value);
686		var VCustChainLinks = parseFloat(document.getElementById("TCustLinks").value);
687		var CustFrontSprocket = parseFloat(document.getElementById("TCustFinalA").value);
688		var CustFrontSprocket2 = parseFloat(document.getElementById("TCustFrontSprocket").value);
689		var CustRearSprocket = parseFloat(document.getElementById("TCustFinalB").value);
690/*  haalop band diameter */
691		var CusttireCircumference = parseFloat(document.getElementById("TCCust").value) / Cvrt;
692
693		
694		var gear1A = parseFloat(document.getElementById("TGear1A").value);
695		var gear1B = parseFloat(document.getElementById("TGear1B").value);
696		var gear2A = parseFloat(document.getElementById("TGear2A").value);
697		var gear2B = parseFloat(document.getElementById("TGear2B").value);
698		var gear3A = parseFloat(document.getElementById("TGear3A").value);
699		var gear3B = parseFloat(document.getElementById("TGear3B").value);
700		var gear4A = parseFloat(document.getElementById("TGear4A").value);
701		var gear4B = parseFloat(document.getElementById("TGear4B").value);
702		var gear5A = parseFloat(document.getElementById("TGear5A").value);
703		var gear5B = parseFloat(document.getElementById("TGear5B").value);
704		var gear6A = parseFloat(document.getElementById("TGear6A").value);
705		var gear6B = parseFloat(document.getElementById("TGear6B").value);
706		var gear7A = parseFloat(document.getElementById("TGear7A").value);
707		/* alert("Waarde teruggelzen gear7A: " +gear7A); */
708		var gear7B = parseFloat(document.getElementById("TGear7B").value);
709		var FixSpd = parseFloat(document.getElementById("FixSpeed").value);
710		
711	   	if (document.getElementById("SetupChosen").value == 'Stock') { 
712	   														
713	   													var SelSetup="Stock";
714	   													var maxRPM = DefmaxRPM;
715	   													var tireCircumference =DeftireCircumference;
716															var primaryDriveRatio = DefprimDrivRatio ;
717															var SelRearSprocket = DefRearSprocket ;
718															var SelFrontSprocket = DefFrontSprocket ;
719															
720   														  	};
721   														  
722			if (document.getElementById("SetupChosen").value == 'Current') { 	
723														var SelSetup="Current"
724														var maxRPM = CurmaxRPM;
725	   												var tireCircumference =CurtireCircumference;
726														var primaryDriveRatio = CurprimDrivRatio;
727														var SelRearSprocket = CurRearSprocket ;
728														var SelFrontSprocket = CurFrontSprocket ;
729   														  	};
730
731			if (document.getElementById("SetupChosen").value == 'Custom') { 	
732														var SelSetup="Custom"
733														var maxRPM = CustmaxRPM;
734	   												var tireCircumference =CusttireCircumference;
735														var primaryDriveRatio = CustprimDrivRatio;
736														var SelRearSprocket = CustRearSprocket ;
737														var SelFrontSprocket = CustFrontSprocket ;
738
739   														  	};
740		
741		var driveConstant = 1 / primaryDriveRatio / (SelRearSprocket / SelFrontSprocket);
742		var speedConstant = 60 / 63360 * UnitSelected;		
743		/*  1 mile =  63360 inch... */
744		
745/* 	Wijzigen te tonen RPM bereik	 */
746		var minRPM = parseFloat(document.getElementById("TMinRPM").value);
747		var RPMrange =new Array;
748		RPMrange[0] = Math.round(minRPM);
749		for (var i = 1; i <= 9; i++) {			
750					RPMrange[i]= Math.round(((maxRPM - minRPM) * (i / 10)) + minRPM);
751				}
752		RPMrange[10] = Math.round(maxRPM);
753				
754		var gearRatio = new Array;
755		gearRatio[1] = gear1B / gear1A;
756		gearRatio[2] = gear2B / gear2A;
757		gearRatio[3] = gear3B / gear3A;
758		gearRatio[4] = gear4B / gear4A;
759		gearRatio[5] = gear5B / gear5A;
760		gearRatio[6] = gear6B / gear6A;
761		gearRatio[7] = gear7B / gear7A;
762				
763		
764		if (gear7A == 0) {gearRatio[7] = 0} /* in case of only 6 gears */
765	/* 	alert("waarde gear7A: " + gear7A); */
766	/* 	alert("waarde gearRatio[7]: " + gearRatio[7]); */
767		if (gear6A == 0) {gearRatio[6] = 0} /* in case of only 5 gears */
768		if (gear5A == 0) {gearRatio[5] = 0} /* in case of only 4 gears */
769		if (gear4A == 0) {gearRatio[4] = 0} /* in case of only 3 gears */
770
771/* 	Tonen berekende headers */
772		for (var i = 0; i <= 10; i++) {			
773					var Veld = "RPM" + i;
774					document.getElementById(Veld).value = RPMrange[i];
775				}
776	
777/*  Toon snelheden afhankelijk van versnelling en toerental in Eerste table "Speed" */
778
779		for (var G = 1; G <= 7; G++) {			
780					for (var R = 0; R <= 10; R++) {
781
782						var Veld = "Gear" + G + "RPM" + R;
783						if (gearRatio[G] != 0) {
784						document.getElementById(Veld).value = Math.round(RPMrange[R] * gearRatio[G] * driveConstant * tireCircumference * speedConstant * RndFact) / RndFact;}
785							else {
786										document.getElementById(Veld).value = "-" }
787					}
788			}
789
790/*  Toon toerental verschillen afhankelijk van sprockets etc */
791/*  Default berekeningen	 */
792
793		DefprimDrivRatio 
794		var DefTotRatio = 1 / DefprimDrivRatio / (DefRearSprocket / DefFrontSprocket);
795		var CurTotRatio =  1 / CurprimDrivRatio / (CurRearSprocket / CurFrontSprocket );
796		var CustTotRatio =  1 / CustprimDrivRatio / (CustRearSprocket / CustFrontSprocket );
797		
798				 
799		var G1FSD = Math.round(FixSpd / (gearRatio[1] * DefTotRatio * DeftireCircumference * speedConstant));
800		if (G1FSD <= DefmaxRPM) {document.getElementById("Gear1FixSpeedDef").value = G1FSD;} else {document.getElementById("Gear1FixSpeedDef").value = "-";}
801		var G2FSD = Math.round(FixSpd / (gearRatio[2] * DefTotRatio * DeftireCircumference * speedConstant));
802		if (G2FSD <= DefmaxRPM) {document.getElementById("Gear2FixSpeedDef").value = G2FSD;} else {document.getElementById("Gear2FixSpeedDef").value = "-";}
803		var G3FSD = Math.round(FixSpd / (gearRatio[3] * DefTotRatio * DeftireCircumference * speedConstant));
804		if (G3FSD <= DefmaxRPM) {document.getElementById("Gear3FixSpeedDef").value = G3FSD;} else {document.getElementById("Gear3FixSpeedDef").value = "-";}
805		var G4FSD = Math.round(FixSpd / (gearRatio[4] * DefTotRatio * DeftireCircumference * speedConstant));
806		if (G4FSD <= DefmaxRPM) {document.getElementById("Gear4FixSpeedDef").value = G4FSD;} else {document.getElementById("Gear4FixSpeedDef").value = "-";}
807		var G5FSD = Math.round(FixSpd / (gearRatio[5] * DefTotRatio * DeftireCircumference * speedConstant));
808		if (G5FSD <= DefmaxRPM) {document.getElementById("Gear5FixSpeedDef").value = G5FSD;} else {document.getElementById("Gear5FixSpeedDef").value = "-";}
809		var G6FSD = Math.round(FixSpd / (gearRatio[6] * DefTotRatio * DeftireCircumference * speedConstant));
810		if (G6FSD <= DefmaxRPM) {document.getElementById("Gear6FixSpeedDef").value = G6FSD;} else {document.getElementById("Gear6FixSpeedDef").value = "-";}
811		var G7FSD = Math.round(FixSpd / (gearRatio[7] * DefTotRatio * DeftireCircumference * speedConstant));
812		if (G7FSD <= DefmaxRPM) {document.getElementById("Gear7FixSpeedDef").value = G7FSD;} else {document.getElementById("Gear7FixSpeedDef").value = "-";}
813
814/* Current berekeningen */
815		var G1FS = Math.round(FixSpd / (gearRatio[1] * CurTotRatio * CurtireCircumference * speedConstant));
816		if (G1FS <= CurmaxRPM) {document.getElementById("Gear1FixSpeed").value = G1FS;} else {document.getElementById("Gear1FixSpeed").value = "-";}
817		var G2FS = Math.round(FixSpd / (gearRatio[2] * CurTotRatio * CurtireCircumference * speedConstant));
818		if (G2FS <= CurmaxRPM) {document.getElementById("Gear2FixSpeed").value = G2FS;} else {document.getElementById("Gear2FixSpeed").value = "-";}
819		var G3FS = Math.round(FixSpd / (gearRatio[3] * CurTotRatio * CurtireCircumference * speedConstant));
820		if (G3FS <= CurmaxRPM) {document.getElementById("Gear3FixSpeed").value = G3FS;} else {document.getElementById("Gear3FixSpeed").value = "-";}
821		var G4FS = Math.round(FixSpd / (gearRatio[4] * CurTotRatio * CurtireCircumference * speedConstant));
822		if (G4FS <= CurmaxRPM) {document.getElementById("Gear4FixSpeed").value = G4FS;} else {document.getElementById("Gear4FixSpeed").value = "-";}
823		var G5FS = Math.round(FixSpd / (gearRatio[5] * CurTotRatio * CurtireCircumference * speedConstant));
824		if (G5FS <= CurmaxRPM) {document.getElementById("Gear5FixSpeed").value = G5FS;} else {document.getElementById("Gear5FixSpeed").value = "-";}
825		var G6FS = Math.round(FixSpd / (gearRatio[6] * CurTotRatio * CurtireCircumference * speedConstant));
826		if (G6FS <= CurmaxRPM) {document.getElementById("Gear6FixSpeed").value = G6FS;} else {document.getElementById("Gear6FixSpeed").value = "-";}
827		var G7FS = Math.round(FixSpd / (gearRatio[7] * CurTotRatio * CurtireCircumference * speedConstant));
828		if (G7FS <= CurmaxRPM) {document.getElementById("Gear7FixSpeed").value = G7FS;} else {document.getElementById("Gear7FixSpeed").value = "-";}
829			
830/*  Cust berekeningen		 */
831		var G1FSCust = Math.round(FixSpd / (gearRatio[1] * CustTotRatio * CusttireCircumference * speedConstant));
832		if (G1FSCust <= CustmaxRPM) {document.getElementById("Gear1FixSpeedCust").value = G1FSCust;} else {document.getElementById("Gear1FixSpeedCust").value = "-";}
833		var G2FSCust = Math.round(FixSpd / (gearRatio[2] * CustTotRatio * CusttireCircumference * speedConstant));
834		if (G2FSCust <= CustmaxRPM) {document.getElementById("Gear2FixSpeedCust").value = G2FSCust;} else {document.getElementById("Gear2FixSpeedCust").value = "-";}
835		var G3FSCust = Math.round(FixSpd / (gearRatio[3] * CustTotRatio * CusttireCircumference * speedConstant));
836		if (G3FSCust <= CustmaxRPM) {document.getElementById("Gear3FixSpeedCust").value = G3FSCust;} else {document.getElementById("Gear3FixSpeedCust").value = "-";}
837		var G4FSCust = Math.round(FixSpd / (gearRatio[4] * CustTotRatio * CusttireCircumference * speedConstant));
838		if (G4FSCust <= CustmaxRPM) {document.getElementById("Gear4FixSpeedCust").value = G4FSCust;} else {document.getElementById("Gear4FixSpeedCust").value = "-";}
839		var G5FSCust = Math.round(FixSpd / (gearRatio[5] * CustTotRatio * CusttireCircumference * speedConstant));
840		if (G5FSCust <= CustmaxRPM) {document.getElementById("Gear5FixSpeedCust").value = G5FSCust;} else {document.getElementById("Gear5FixSpeedCust").value = "-";}
841		var G6FSCust = Math.round(FixSpd / (gearRatio[6] * CustTotRatio * CusttireCircumference * speedConstant));
842		if (G6FSCust <= CustmaxRPM) {document.getElementById("Gear6FixSpeedCust").value = G6FSCust;} else {document.getElementById("Gear6FixSpeedCust").value = "-";}
843		var G7FSCust = Math.round(FixSpd / (gearRatio[7] * CustTotRatio * CusttireCircumference * speedConstant));
844		if (G7FSCust <= CustmaxRPM) {document.getElementById("Gear7FixSpeedCust").value = G7FSCust;} else {document.getElementById("Gear7FixSpeedCust").value = "-";}
845
846/* Verschil Current to Default */
847		var DiffGear1SpeedCur = G1FS - G1FSD;
848		var DiffGear2SpeedCur = G2FS - G2FSD;
849		var DiffGear3SpeedCur = G3FS - G3FSD;
850		var DiffGear4SpeedCur = G4FS - G4FSD;
851		var DiffGear5SpeedCur = G5FS - G5FSD;
852		var DiffGear6SpeedCur = G6FS - G6FSD;
853		var DiffGear7SpeedCur = G7FS - G7FSD;
854		var DiffCurPercent = Math.round((DiffGear1SpeedCur * 10000) / (G1FSD)) / 100
855
856		var DiffGear1Speed = (G1FSCust - G1FS);
857		var DiffGear2Speed = (G2FSCust - G2FS);
858		var DiffGear3Speed = (G3FSCust - G3FS);
859		var DiffGear4Speed = (G4FSCust - G4FS);
860		var DiffGear5Speed = (G5FSCust - G5FS);
861		var DiffGear6Speed = (G6FSCust - G6FS);
862		var DiffGear7Speed = (G7FSCust - G7FS);
863		var DiffPercent = Math.round((DiffGear1Speed * 10000) / (G1FS)) / 100;
864				
865/* Verschil Custom to Default */
866		var DiffGear1SpeedCust = G1FSCust - G1FSD;
867		var DiffGear2SpeedCust = G2FSCust - G2FSD;
868		var DiffGear3SpeedCust = G3FSCust - G3FSD;
869		var DiffGear4SpeedCust = G4FSCust - G4FSD;
870		var DiffGear5SpeedCust = G5FSCust - G5FSD;
871		var DiffGear6SpeedCust = G6FSCust - G6FSD;
872		var DiffGear7SpeedCust = G7FSCust - G7FSD;
873		var DiffCustPercent = Math.round((DiffGear1SpeedCust * 10000) / (G1FSD)) / 100
874
875/* Overzicht Current - Default  */
876		document.getElementById("TDiffGear1CurSpeed").value = DiffGear1SpeedCur;
877		document.getElementById("TDiffGear2CurSpeed").value = DiffGear2SpeedCur;
878		document.getElementById("TDiffGear3CurSpeed").value = DiffGear3SpeedCur;
879		if (gear4A == 0) {document.getElementById("TDiffGear4CurSpeed").value = "-"} else {document.getElementById("TDiffGear4CurSpeed").value = DiffGear4SpeedCur;}
880		if (gear5A == 0) {document.getElementById("TDiffGear5CurSpeed").value = "-"} else {document.getElementById("TDiffGear5CurSpeed").value = DiffGear5SpeedCur;}
881		if (gear6A == 0) {document.getElementById("TDiffGear6CurSpeed").value = "-"} else {document.getElementById("TDiffGear6CurSpeed").value = DiffGear6SpeedCur;}
882		if (gear7A == 0) {document.getElementById("TDiffGear7CurSpeed").value = "-"} else {document.getElementById("TDiffGear7CurSpeed").value = DiffGear7SpeedCur;}
883
884/* Overzicht Custom - Current		 */
885		document.getElementById("TDiffGear1Speed").value = DiffGear1Speed;
886		document.getElementById("TDiffGear2Speed").value = DiffGear2Speed;
887		document.getElementById("TDiffGear3Speed").value = DiffGear3Speed;
888		if (gear4A == 0) {document.getElementById("TDiffGear4Speed").value = "-"} else {document.getElementById("TDiffGear4Speed").value = DiffGear4Speed;}
889		if (gear5A == 0) {document.getElementById("TDiffGear5Speed").value = "-"} else {document.getElementById("TDiffGear5Speed").value = DiffGear5Speed;}
890		if (gear6A == 0) {document.getElementById("TDiffGear6Speed").value = "-"} else {document.getElementById("TDiffGear6Speed").value = DiffGear6Speed;}
891		if (gear7A == 0) {document.getElementById("TDiffGear7Speed").value = "-"} else {document.getElementById("TDiffGear7Speed").value = DiffGear7Speed;}
892
893/* Overzicht Default-Custom */
894		document.getElementById("TDiffGear1FixSpeed").value = DiffGear1SpeedCust;
895		document.getElementById("TDiffGear2FixSpeed").value = DiffGear2SpeedCust;
896		document.getElementById("TDiffGear3FixSpeed").value = DiffGear3SpeedCust;
897		if (gear4A == 0) {document.getElementById("TDiffGear4FixSpeed").value = "-"} else {document.getElementById("TDiffGear4FixSpeed").value = DiffGear4SpeedCust;}		
898		if (gear5A == 0) {document.getElementById("TDiffGear5FixSpeed").value = "-"} else {document.getElementById("TDiffGear5FixSpeed").value = DiffGear5SpeedCust;}		
899		if (gear6A == 0) {document.getElementById("TDiffGear6FixSpeed").value = "-"} else {document.getElementById("TDiffGear6FixSpeed").value = DiffGear6SpeedCust;}
900		if (gear7A == 0) {document.getElementById("TDiffGear7FixSpeed").value = "-"} else {document.getElementById("TDiffGear7FixSpeed").value = DiffGear7SpeedCust;}
901
902		document.getElementById("TCurRearSprocket").value = CurRearSprocket;
903		document.getElementById("TCurFrontSprocket").value = CurFrontSprocket;
904		document.getElementById("TCustRearSprocket").value = CustRearSprocket;
905		document.getElementById("TCustFrontSprocket").value = CustFrontSprocket;
906
907		
908		document.getElementById("TDiffPercent").value = DiffPercent;
909		document.getElementById("TDiffCustPercent").value = DiffCustPercent;
910		document.getElementById("TDiffCurPercent").value = DiffCurPercent;
911		
912		document.getElementById("SpeedGearRPM").innerHTML = "GPS Speed in " + Un + " at RPM in Gear in selected setup: ";
913		document.getElementById("Speed49Combo").innerHTML = "GPS Top speed in " + Un + " for 49 final drive combinations at M.P.RPM in Custom setup:";
914
915		if (document.getElementById("FinDrivTyp").value != "c") {
916			if (document.getElementById("FinDrivTyp").value == "b") {
917						document.getElementById("ChainDiff").innerHTML = "Loaded Bike: Effect of Final Drive changes on teeth & wheel position"; 
918						document.getElementById("RelWear").innerHTML = "Loaded Bike: Relative sprocket & belt wear due to Final Drive changes ";
919				} else { 
920				document.getElementById("ChainDiff").innerHTML = "No chain or belt calculations possible as this is a Shaft bike ! "; 
921				document.getElementById("RelWear").innerHTML = "No relative wear calculations possible as this is a Shaft bike ! "; 
922						}
923			} else {		 
924						document.getElementById("ChainDiff").innerHTML = "Loaded Bike: Effect of Final Drive changes on links & wheel position"; 
925						document.getElementById("RelWear").innerHTML = "Loaded Bike: Relative sprocket & chain wear due to Final Drive changes "; 
926						} 
927 
928		/* Diverse velden units aanpassen */
929		document.getElementById("TUnit").value = Un;
930		/* document.getElementById("TUnit0").value = Un; */
931		document.getElementById("TUnit1").innerHTML = MeasTxt; 	 														/* document.getElementById("TUnit1").value = MeasTxt; */
932		document.getElementById("Tab4Pitch").innerHTML = "Pitch in " + MeasTxt;; 	/*  document.getElementById("TUnit2").value = MeasTxt; */
933		document.getElementById("Tab4Length").innerHTML = "Chain / Belt Length in " + MeasTxt; 	
934		document.getElementById("CWTab4SprDis").innerHTML = "Chain / Belt<br>Sprocket distance in " + MeasTxt;
935		document.getElementById("UnGenSpDis").innerHTML = "in " + MeasTxt;
936		document.getElementById("UnGenPit").innerHTML = "in " + MeasTxt;
937		
938		/* document.getElementById("TUnit7").value = MeasTxt; */
939		document.getElementById("TDistUn1").value = DistTxt;  /* document.getElementById("TUnit8").value = Un; */
940		
941		
942/* Ketting berekeningen */
943
944	/* Current */
945		var CurDist1 = (VCurChainPitch / 8);
946		var CurDist2 = ( (2 * VCurChainLinks) - CurFrontSprocket- CurRearSprocket);
947		var CurDist4 = (Math.pow(CurDist2,2) - (( 8 / 9.86) * Math.pow((CurRearSprocket- CurFrontSprocket),2)));
948		var CurDist5 = Math.sqrt(CurDist4);
949		var CurDist6 = CurDist2 + CurDist5;
950		var CurDistTotal = CurDist1 * CurDist6;
951		var CurWearPerc = parseFloat(document.getElementById("CurCWp").value);
952		var VCurChainLen = (VCurChainPitch * VCurChainLinks) * (100 + CurWearPerc) / 100;
953		var CWCurDistTotal = Math.round((CurDistTotal) * (100 + CurWearPerc)) / 100;
954		
955		/* alert("Tot dist :" +CurDistTotal); */
956
957		document.getElementById("CurChainPitch").value = VCurChainPitch;	
958		document.getElementById("CurChainLinks").value = VCurChainLinks;	
959		document.getElementById("CurChainLen").value = Math.round(VCurChainLen*10) / 10;
960		
961		if (CurWearPerc >= 1.00) {document.getElementById("CurCWp").style.color = "#ff0000";} else {document.getElementById("CurCWp").style.color = "#000000";}
962
963		if (VCurChainLinks != 0) {document.getElementById("CWCurAxisDist").value = CWCurDistTotal;}
964				else {document.getElementById("CWCurAxisDist").value = 0;}
965
966	/* Default Terug lezen default waarden uit sheet	 */
967		var DefChainLen = VDefChainPitch * VDefChainLinks;
968		var DefDist1 = (VDefChainPitch / 8);
969		var DefDist2 = ( (2 * VDefChainLinks) - DefFrontSprocket- DefRearSprocket);
970		var DefDist4 = (Math.pow(DefDist2,2) - (( 8 / 9.86) * Math.pow((DefRearSprocket- DefFrontSprocket),2)));
971		var DefDist5 = Math.sqrt(DefDist4);
972		var DefDist6 = DefDist2 + DefDist5;
973		var DefDistTotal = DefDist1 * DefDist6;
974
975		document.getElementById("DefChainLen").value = Math.round(DefChainLen*10) / 10;
976		if (VDefChainLinks != 0) {document.getElementById("DefAxisDist").value = Math.round(DefDistTotal*100) / 100;} /* bij Stock is slijtage 0 dus aftsand gelijk aan nieuw */
977			else 	{document.getElementById("DefAxisDist").value = 0;}
978
979		
980	/* Custom */
981		var VCustChainPitch = parseFloat(document.getElementById("TCustPitch").value);
982		var VCustChainLinks = parseFloat(document.getElementById("TCustLinks").value);
983
984				var CustDist1 = (VCustChainPitch / 8);
985		var CustDist2 = ( (2 * VCustChainLinks) - CustFrontSprocket- CustRearSprocket);
986		var CustDist4 = (Math.pow(CustDist2,2) - (( 8 / 9.86) * Math.pow((CustRearSprocket- CustFrontSprocket),2)));
987		var CustDist5 = Math.sqrt(CustDist4);
988		var CustDist6 = CustDist2 + CustDist5;
989		var CustDistTotal = CustDist1 * CustDist6;
990		var CusWearPerc = parseFloat(document.getElementById("CusCWp").value);
991		var VCustChainLen = (VCustChainPitch * VCustChainLinks)* (100 + CusWearPerc) / 100;
992		var CWCustDistTotal = Math.round((CustDistTotal) * (100 + CusWearPerc)) / 100;
993		
994		
995		/* alert(CustDistTotal + " en CW: " + CWCustDistTotal); */
996		
997		document.getElementById("CustChainPitch").value = parseFloat(document.getElementById("TCustPitch").value);
998		document.getElementById("CustChainLinks").value = parseFloat(document.getElementById("TCustLinks").value);
999		document.getElementById("CustChainLen").value = Math.round(VCustChainLen*10) / 10;	
1000		
1001		if (CusWearPerc >= 1.00) {document.getElementById("CusCWp").style.color = "#ff0000";} else {document.getElementById("CusCWp").style.color = "#000000";}
1002																			
1003		if (CurWearPerc >=1 | CusWearPerc >=1) {document.getElementById("CWTab4Length").innerHTML= "Current Wear in %<br>Pls. replace that chain or belt !"; 
1004																						document.getElementById("CWTab4Length").style.color= "#ff0000";} else
1005																						{document.getElementById("CWTab4Length").style.color = "#000000";
1006																						document.getElementById("CWTab4Length").innerHTML= "Current Wear in %";}
1007		/* Adjust Wear Mess */
1008		var AWMText = document.getElementById("Tab4LorT").innerHTML;
1009		var BeltOrChain = AWMText.search("Belt");
1010		if (BeltOrChain == -1) {AWMText = " links "} else {AWMText = " belt teeth "};
1011		if (VCustChainLinks > VCurChainLinks) {document.getElementById("AdjWearMes").value= "< " + VCustChainLinks + AWMText + "require new " + document.getElementById("Tab4DrivTyp").innerHTML +". Set wear to 0%";
1012																						document.getElementById("AdjWearMes").style.color= "#ff0000";} else
1013																						{document.getElementById("AdjWearMes").style.color = "#000000";
1014																						document.getElementById("AdjWearMes").value= "";}
1015
1016
1017		
1018		if (VCustChainLinks != 0) {document.getElementById("CWCustAxisDist").value = CWCustDistTotal; }
1019			else {document.getElementById("CWCustAxisDist").value =0;}
1020
1021	/* list verschillen in mm	 */
1022		document.getElementById("DifPCustCur").value = VCustChainPitch - VCurChainPitch;
1023		document.getElementById("DifPCustDef").value = VCustChainPitch - VDefChainPitch ;
1024		document.getElementById("DifPDefCur").value =  VCurChainPitch - VDefChainPitch ;
1025	
1026		document.getElementById("DifLinCustCur").value = VCustChainLinks - VCurChainLinks;
1027		document.getElementById("DifLinCustDef").value = VCustChainLinks - VDefChainLinks;
1028		document.getElementById("DifLinDefCur").value = VCurChainLinks - VDefChainLinks;
1029	
1030		document.getElementById("DifLenCustCur").value = Math.round((VCustChainLen - VCurChainLen) * 100) / 100;
1031		document.getElementById("DifLenCustDef").value = Math.round((VCustChainLen - DefChainLen) * 100) / 100;
1032		document.getElementById("DifLenDefCur").value = Math.round((VCurChainLen - DefChainLen) * 100) / 100;
1033		
1034/*  Curent chain with wear */
1035/* alleen uitvoeren als geen van de links 0 is, ander eindeloos in loop ! */
1036var LinkCheck = document.getElementById("DefChainLinks").value * document.getElementById("TCurLinks").value * document.getElementById("TCustLinks").value;
1037
1038if ( LinkCheck > 0){
1039
1040		if (CWCurDistTotal.toFixed(2) - DefDistTotal.toFixed(2) == 0) {var DirArr6 = ""} else if (CurDistTotal - DefDistTotal > 0) {var DirArr6 = "  <->"} else {var DirArr6 = "  >-<"};
1041		document.getElementById("CWDifAxDefCur").value = Math.round((CWCurDistTotal - DefDistTotal) * 100) / 100 + DirArr6;
1042		
1043		
1044		if (CWCustDistTotal.toFixed(2) - CWCurDistTotal.toFixed(2) == 0) {var DirArr4 = ""} else if (CWCustDistTotal - CWCurDistTotal > 0){var DirArr4 = "  <->"} else {var DirArr4 = "  >-<"};
1045		document.getElementById("CWDifAxCustCur").value = Math.round((CWCustDistTotal - CWCurDistTotal) * 100) / 100 + DirArr4;
1046		
1047		/* alert(CWCustDistTotal.toFixed(2) - DefDistTotal.toFixed(2)); */
1048		if (CWCustDistTotal.toFixed(2) - DefDistTotal.toFixed(2) == 0) {var DirArr5 = ""} else if (CWCustDistTotal - DefDistTotal > 0) {var DirArr5 = "  <->"} else {var DirArr5 = "  >-<"};
1049		document.getElementById("CWDifAxCustDef").value = Math.round((CWCustDistTotal - DefDistTotal) * 100) / 100 + DirArr5;
1050	}
1051	
1052	else {
1053			/* 23.05.24 als er geen chain-belt-links zijn moet boevnstaande niet berekend worden, gaat fout: daarom vervangen door melding */
1054			document.getElementById("CWDifAxDefCur").value = "No chain";
1055			document.getElementById("CWDifAxCustCur").value ="or belt";
1056			document.getElementById("CWDifAxCustDef").value ="data!";
1057		}
1058	
1059		
1060/* Ketting slijtage  (maakt gebruik van script 'gc_wear.js' */
1061		/* alleen uitvoeren als geen van de links 0 is, ander eindeloos in loop ! */
1062		var LinkCheck = document.getElementById("DefChainLinks").value * document.getElementById("TCurLinks").value * document.getElementById("TCustLinks").value;
1063		if ( LinkCheck > 0){
1064				
1065				if (document.getElementById("FinDrivTyp").value == "c") {
1066						document.getElementById("ChainMess").value = "Links Explanation."		
1067						} else {document.getElementById("ChainMess").value = "Belt-Teeth Explanation."	}
1068				getLCM("no",DeftireCircumference,CurtireCircumference,CusttireCircumference);
1069			} else { 
1070						/* eerst ketting slijtage velden resetten */
1071						getLCM("yes",0,0,0);
1072						if (document.getElementById("FinDrivTyp").value == "c") {
1073								document.getElementById("ChainMess").value = "Bike chain data not available !" }
1074							 else {
1075							 	if (document.getElementById("FinDrivTyp").value == "b") {
1076							 	document.getElementById("ChainMess").value = "Bike belt data not available !" }
1077							 	else {document.getElementById("ChainMess").value = "" }
1078						}
1079					}
1080/*  TopSpeedMatrix gebaseerd op de Custom instellingen ! */
1081				/* Alle tandwiel opties:					 */
1082				for (var x = 1; x <= 7; x++) {
1083						What_F= "TSM_F" + x;
1084						What_R= "TSM_R" + x;
1085						document.getElementById(What_F).value = CustFrontSprocket - 4 + x;
1086						document.getElementById(What_R).value = CustRearSprocket - 4 + x;
1087				}
1088
1089			TSM = new Array(7);
1090			var GearSelected = parseFloat(document.getElementById("SelectedGear").value);
1091			for (var x = 1; x <= 7; x++) {			
1092					TSM[x] = new Array(7)
1093					for (var y = 1; y <= 7; y++) {
1094							var FDrive = (((CustRearSprocket - 4) + y) / ((CustFrontSprocket - 4) + x));
1095							TSM[x][y] = Math.round(gearRatio[GearSelected] * (1 / CustprimDrivRatio / FDrive ) * 
1095CustmaxRPM * CusttireCircumference * speedConstant * RndFact) / RndFact;
1096					}
1097			}
1098						
1099			for (var x = 1; x <= 7; x++) {			
1100					for (var y = 1; y <= 7; y++) {
1101
1102						var Veld = "TSM" + x + "_" + y;
1103						document.getElementById(Veld).value = TSM[x][y];
1104					}
1105			}
1106
1107/* Indien geen pitch dan geen sprocket graph */
1108	var PitchCheck = document.getElementById("TDefPitch").value * document.getElementById("TCurPitch").value * document.getElementById("TCustPitch").value;
1109	
1110	if ( PitchCheck == 0){
1111			document.getElementById("graph7").disabled =true;
1112			/* alert("Wordt DISABLED, Pitch check is: " + PitchCheck); */
1113		} else {
1114			document.getElementById("graph7").disabled =false;
1115			/* alert("Wordt ENABLED, Pitch check is: " + PitchCheck); */
1116						 }
1117if (Loaded != 'Yes') {fnSaveSetups(FuncInp,'Maindat');} /* alleen opslaan als er niet net iets is terug gelezen */
1118}
1119/* END fucntion CALCULATE */
1120
1121
1122/* 6.5 alleen aangeroepen als een bike geladen wordt met een ander drv typ als de huidige */
1123function fnUpdDrvTypTxt(DrvTyp) {
1124			/*  alert("Dit is de fnUpdDrvTypTxt met var: " + DrvTyp); */
1125			/*  alert("Huidige DrvTyp was: " +  document.getElementById("FinDrivTyp").value); */
1126		if (DrvTyp != "c") {
1127			
1128			/*  alert("fnUpdDrvTypTxt zegt: DrvType gekozen is NIET Chain"); */
1129			if (DrvTyp == "b") {
1130				/* alert("fnUpdDrvTypTxt zegt: DrvType gekozen is WEL Belt"); */
1131						document.getElementById("ChainDiff").innerHTML = "Current Belt Loaded Bike: Effect of sprocket & belt changes "; 
1132						document.getElementById("RelWear").innerHTML = "Currently Loaded Bike: Relative sprocket & belt wear due to drive train changes ";
1133						document.getElementById("DTyp1").innerHTML = "Belt Pitch";
1134						document.getElementById("DTyp2").innerHTML = "Belt Teeth";
1135						document.getElementById("Tab4DrivTyp").innerHTML = "Belt";
1136						document.getElementById("Tab4DrivTyp1").innerHTML = "belt & sprockets";
1137						document.getElementById("Tab4DrivTyp2").innerHTML = "belt & sprockets";
1138						document.getElementById("Tab4DrivTyp3").innerHTML = "belt & sprockets";
1139						document.getElementById("Tab4LorT").innerHTML = "Belt Teeth"+ "&nbsp;";
1140					
1141						document.getElementById("SubRelWear").innerHTML = "Same Teeth Sprocket & Belt <u><font size='1'><a target='GCMP' href='gc_howto27.htm'>(<font color='#0000FF'><u>help</u></font>)</a></font></u>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Tooth Belt contacts &amp; Belt Teeth contacts <u> <font size='1'><a target='GCMP' href='gc_howto28.htm'>(<font color='#0000FF'><u>help</u></font>)</a></font></u>";
1142			
1143						document.getElementById("Tab5STSL").innerHTML = "Same<br>tooth-belt<br>position every X Belt Rev's";
1144						document.getElementById("Tab5DrivTyp1").innerHTML = "&nbsp;belt &amp;<br>&nbsp;sprockets&nbsp;<br><br>Belt Rev's";
1145						document.getElementById("Tab5DrivTyp2").innerHTML = "&nbsp;belt &amp;<br>&nbsp;sprockets&nbsp;<br><br>Belt Rev's";
1146						document.getElementById("Tab5DrivTyp3").innerHTML = "&nbsp;belt &amp;<br>&nbsp;sprockets&nbsp;<br><br>Belt Rev's";
1147						document.getElementById("Tab6DrivTyp1").innerHTML = "&nbsp;belt &amp;<br>&nbsp;sprockets&nbsp;<br><br>contacts<br>";
1148						document.getElementById("Tab6DrivTyp2").innerHTML = "&nbsp;belt &amp;<br>&nbsp;sprockets&nbsp;<br><br>contacts<br>";
1149						document.getElementById("Tab6DrivTyp3").innerHTML = "&nbsp;belt &amp;<br>&nbsp;sprockets&nbsp;<br><br>contacts<br>";
1150						document.getElementById("Tab6LinkTooth").innerHTML = "B.Tooth";
1151						
1152						for (i = 0; i <= 10; i++) {
1153					    DeviderId ="Devider" + i;
1154							/* alert(DeviderId); */
1155							document.getElementById(DeviderId).innerHTML = "<img border='0' src='img/gc_belt.png' width='850' height='15'>";
1156						}						
1157						
1158				} else { 
1159							
1160							document.getElementById("ChainDiff").innerHTML = "No geometry calculations possible as this is a Shaft bike ! "; 
1161							document.getElementById("RelWear").innerHTML = "No relative wear calculations possible as this is a Shaft bike ! "; 
1162							document.getElementById("graph7").disabled = true;
1163							/* alert("fnUpdDrvTypTxt zegt: DrvType gekozen is WEL Shaft"); */
1164							for (i = 0; i <= 10; i++) {
1165					    	DeviderId ="Devider" + i;
1166								document.getElementById(DeviderId).innerHTML = "<img border='0' src='img/gc_shaft.png' width='850' height='21'>";
1167								}
1168							}
1169			} else {		 
1170					 /* alert("fnUpdDrvTypTxt zegt: DrvType gekozen is WEL Chain"); */
1171						document.getElementById("ChainDiff").innerHTML = "Current Chain Loaded Bike: Effect of sprocket & chain changes "; 
1172						document.getElementById("RelWear").innerHTML = "Currently Loaded Bike: Relative sprocket & chain wear due to drive train changes ";
1173						document.getElementById("DTyp1").innerHTML = "Chain Pitch";
1174						document.getElementById("DTyp2").innerHTML = "Chain Links";
1175						document.getElementById("Tab4DrivTyp").innerHTML = "Chain";
1176						document.getElementById("Tab4DrivTyp1").innerHTML = "chain & sprockets";
1177						document.getElementById("Tab4DrivTyp2").innerHTML = "chain & sprockets";
1178						document.getElementById("Tab4DrivTyp3").innerHTML = "chain & sprockets";
1179						document.getElementById("Tab4LorT").innerHTML = "Links"+ "&nbsp;";
1180						document.getElementById("Tab5STSL").innerHTML = "Same<br>tooth-chain<br>position every X Chain Rev's";
1181						document.getElementById("Tab5DrivTyp1").innerHTML = "&nbsp;chain &amp;<br>&nbsp;sprockets&nbsp;<br><br>Chain Rev's";
1182						document.getElementById("Tab5DrivTyp2").innerHTML = "&nbsp;chain &amp;<br>&nbsp;sprockets&nbsp;<br><br>Chain Rev's";
1183						document.getElementById("Tab5DrivTyp3").innerHTML = "&nbsp;chain &amp;<br>&nbsp;sprockets&nbsp;<br><br>Chain Rev's";
1184						document.getElementById("Tab6DrivTyp1").innerHTML = "&nbsp;chain &amp;<br>&nbsp;sprockets&nbsp;<br><br>contacts<br>";
1185						document.getElementById("Tab6DrivTyp2").innerHTML = "&nbsp;chain &amp;<br>&nbsp;sprockets&nbsp;<br><br>contacts<br>";
1186						document.getElementById("Tab6DrivTyp3").innerHTML = "&nbsp;chain &amp;<br>&nbsp;sprockets&nbsp;<br><br>contacts<br>";
1187						document.getElementById("Tab6LinkTooth").innerHTML = "Link";
1188						
1189						for (i = 0; i <= 10; i++) {
1190					    	DeviderId ="Devider" + i;
1191								document.getElementById(DeviderId).innerHTML = "<img border='0' src='img/gc_chain_div.png' width='850' height='15'>";
1192								}
1193						}
1194}
1195 
1196function fnPop(HPage) {
1197			if (HPage == "ChainOrBelt") {
1198					if (document.getElementById("FinDrivTyp").value == "c") {
1199						var ToOpen="gc_popup_links.htm";
1200						Hoog= 700;
1201						Breed = 630;
1202					} else {
1203						var ToOpen="gc_popup_beltteeth.htm";
1204						Hoog= 700;
1205						Breed = 630;
1206						}
1207			} else {
1208					var ToOpen="gc_popup_freelinks.htm";
1209					Hoog= 600;
1210					Breed = 675;}
1211			
1212					Params = 'scrollbars=yes,menubar=no,height=' + Hoog +',width=' + Breed + ',resizable=yes,toolbar=no,location=no,status=no'
1213					window.open(ToOpen,'',Params);
1214}
1215/* Adblock Code */
1216function fnSetAdCookie(CookieVal) {
1217				var expiremins =525600; /* 1 Year		 */
1218    		var ExpireDate = new Date ();
1219    		ExpireDate.setTime(ExpireDate.getTime() + (expiremins * 60 * 1000));
1220    		set_cookie("CGDAB",CookieVal,ExpireDate); /* heette eerst GC_Adblock */
1221}
1222
1223
1224function sleep(ms) {
1225    return new Promise(resolve => setTimeout(resolve, ms));
1226}
1227
1228async function fnWacht(MilSecs) {
1229    /* alert("Wachtfunctie gestart.");*/
1230    await sleep(MilSecs);  // Waits for X seconds
1231    /* alert("Wachtfunctie Gestopt Blok volgt...");*/
1232    fnMaskAdBlock();
1233}
1234
1235function fnCountDown(FirstTime) {
1236	 /*alert("Timeout is: " + FirstTime); */
1237	ReducedWait = get_cookie("CGDAB"); 
1238	 /* alert("ReducedWait is: " +ReducedWait);  */
1239	if (ReducedWait == null) { var MaskTijd = FirstTime;} else {var MaskTijd = ReducedWait;}
1240   /* alert("Setting WST to "+ MaskTijd); */
1241	 
1242	 /* Onderstaande werkt niet in FF en Edge, wel in Chrome !	*/
1243	 /* setTimeout(() => {fnMaskAdBlock(); */ 
1244									  /* alert("fnMask Fired !");*/ 
1245  								 /*},MaskTijd);*/ 
1246	/* Onderstaande werkt vroeger in alle browsers, daarna alleen in chrome. Toen naar await functie gegaan https://www.geeksforgeeks.org/how-to-wait-n-seconds-in-javascript/ */
1247	/* window.setTimeout(function() {fnMaskAdBlock()},MaskTijd); */
1248	
1249	fnWacht(MaskTijd);
1250}
1251	
1252function fnMaskAdBlock() {
1253/* alert("Running fnMaskAdBlock Now !");  */
1254	document.getElementById('ShowRed1').innerHTML = "We know ads are anoying but without them<br>this free service would cease to exist.";
1255	document.getElementById('ShowText1').innerHTML = "So, please make sure ads can load by checking out below link.<br><br><img height='110' src='help/gc_plsdisadb.gif' width='250'><br><br><a href='gc_adblockpol.htm'>How to stop this mask from appearing ? </a>";
1256	document.getElementById('ShowText2').innerHTML = "<a href='gc_what.htm'>What is the Gearing Commander and what can it do ?</a><br><a href='gc_addbike_mail.htm'>Add your bike to the Gearing Commander database</a>";
1257	document.getElementById('ShowRed2').innerHTML =  "We know ads are anoying but without them<br>this free service would cease to exist.";
1258	document.getElementById('ShowText3').innerHTML = "So, please make sure ads can load by checking out below link.<br><br><img height='110' src='help/gc_plsdisadb.gif' width='250'><br><br><a href='gc_adblockpol.htm'>How to stop this mask from appearing ? </a>";
1259	document.getElementById('ShowText4').innerHTML = "<a href='gc_what.htm'>What is the Gearing Commander and what can it do ?</a><br><a href='gc_addbike_mail.htm'>Add your bike to the Gearing Commander database</a>";
1260	document.getElementById('hideGCM').style.display = "block";
1261	document.getElementById('ShowRed1').style.display = "block";
1262	document.getElementById('ShowText1').style.display = "block";
1263	document.getElementById('ShowText2').style.display = "block";
1264	document.getElementById('ShowRed2').style.display = "block";
1265	document.getElementById('ShowText3').style.display = "block";
1266	document.getElementById('ShowText4').style.display = "block";
1267	fnSetAdCookie(3000);
1268}
1269
1270
1271
1272function fnMaskPiHole() {
1273/* alert("Running fnMaskAdBlock Now !");  */
1274	document.getElementById('ShowText5').innerHTML = "We are sorry to interrupt your session but it appears you are<br> blocking ads by using AdBlock or a DNS Sinkhole service. <br>To keep access to this website and its services Completely Free:<br><br>Please disable the service which is blocking our ads.<br> When using a VPN, either disable it or disable its ad-block functionality<br>and reload this page. See below link for more info.<br><br><img height='110' src='help/gc_sinkhole.gif' width='250'><br><br><a href='gc_sinkhole.htm'>What is and how to disable a DNS Sinkhole Service</a>";
1275	document.getElementById('ShowText6').innerHTML = "<a href='gc_contact.htm'>Contact me about this mask.</a><br><a href='gc_addbike_mail.htm'>Add your bike to the  Gearing Commander  database</a>";
1276	document.getElementById('ShowText7').innerHTML = "We are sorry to interrupt your session but it appears you are<br> blocking ads by using AdBlock or a DNS Sinkhole service. <br>To keep access to this website and its services Completely Free:<br><br>Please disable the service which is blocking our ads.<br> When using a VPN, either disable it or disable its ad-block functionality<br>and reload this page. See below link for more info.<br><br><img height='110' src='help/gc_sinkhole.gif' width='250'><br><br><a href='gc_sinkhole.htm'>What is and how to disable a DNS Sinkhole Service</a>";
1277	document.getElementById('ShowText8').innerHTML = "<a href='gc_contact.htm'>Contact me about this mask.</a><br><a href='gc_addbike_mail.htm'>Add your bike to the  Gearing Commander  database</a>";
1278	document.getElementById('hideGCM').style.display = "block";
1279	document.getElementById('ShowText5').style.display = "block";
1280	document.getElementById('ShowText6').style.display = "block";
1281	document.getElementById('ShowText7').style.display = "block";
1282	document.getElementById('ShowText8').style.display = "block";
1283	fnSetAdCookie(3000);
1284}
1285
1286
1287function fnPiHoleCheck() {
1288    alert("Start fnPiHoleCheck");
1289    
1290    var xhr = new XMLHttpRequest();
1291    
1292    // var file = "https://i.imgur.com/7ofBNix.png";
1293    /* var file = "https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"; */
1294		/* var file = "https://pagead2.googlesyndication.com/pagead/managed/js/activeview/current/ufs_web_display.js";    																								*/
1295		var file = "https://www.statcounter.com/counter/counter.js";    																								
1296
1297    var randomNum = Math.round(Math.random() * 10000);
1298 
1299    xhr.open('HEAD', file + "?rand=" + randomNum, true);
1300    xhr.send();
1301     
1302    xhr.addEventListener("readystatechange", processRequest, false);
1303 
1304    function processRequest(e) {
1305      if (xhr.readyState == 4) {
1306        if (xhr.status >= 200 && xhr.status < 304) {
1307          alert("connection exists!");
1308        } else {
1309          alert("connection doesn't exist!");
1310          fnMaskPiHole()
1311        }
1312      }
1313    }
1314}
1315
1316/* New in version 7.0.xxx */
1317/*  Function called if AdBlock is not detected */
1318function adBlockNotDetected() {
1319	//alert('AdBlock is not enabled'); 
1320	fnPiHoleCheck();
1321}
1322
1323
1324/*  Function called from index if AdBlock is detected */
1325function adBlockDetected() {
1326	var notforme = get_cookie('GC_Superuser');
1327	/* alert("nfm= " + notforme); */
1328	
1329	if (notforme != 1)
1330		{fnCountDown(20000);} else  {	
1331 			document.getElementById('hideGCM').style.display = "none";
1332  		fnSetAdCookie(0);
1333		}
1334	 /* alert('AdBlock is enabled'); */
1335}
1336
1337
1338function fnABDI(ToDo) {
1339	
1340	/* alert("fnABDI Todo is: " +ToDo); */
1341		
1342	if (ToDo == "PageLoad") {
1343		document.getElementById("BikeInfoStat").value = 0;
1344		
1345		fnHidAbdi();
1346		/* alert("Was PageLOad"); */
1347	}
1348	
1349	if (ToDo != "Reset") {
1350	/* enable Bike Info-button first as apparently data has been loaded. ( */
1351	/* gcm.elements['But_EI'].disabled=false; */
1352	document.getElementById("But_EI").disabled = false;
1353	
1354	
1355	ubi = get_cookie("GC_UBI");
1356	/* alert("ubi in fnABDI is: " +ubi); */
1357	var xmlhttp = new XMLHttpRequest();
1358	xmlhttp.onreadystatechange = function() {
1359	  if (this.readyState == 4 && this.status == 200) {
1360	    var myArr = JSON.parse(this.responseText);
1361	    
1362	     /* alert("Running...JSON parse..."); */
1363	  	 /* alert("ubi = " + ubi); */
1364	  	 /* alert("myArr[ubi].typ = " + myArr[ubi].typ); */
1365	  	 /* alert("myArr[ubi].cat = " + myArr[ubi].cat); */
1366	  	
1367			if (myArr[ubi].typ == "v") {
1368				myArr[ubi].typ = "Stock Bike Data was Verified.";
1369				document.getElementById("But_EI").style.color = "green";
1370	  		document.getElementById("But_EI").style.fontWeight = "bold";
1371	  	  document.getElementById("ABDI-typ").style.color="green";
1372	  	  document.getElementById("ABDI-typ").style.fontWeight="bold";}
1373	  	 	else if (myArr[ubi].typ == "i") {
1374	  	 		myArr[ubi].typ = "Additional details";
1375		  	 	document.getElementById("But_EI").style.color = "blue";
1376					document.getElementById("But_EI").style.fontWeight = "bold";
1377					document.getElementById("ABDI-typ").style.color="green";
1378					document.getElementById("ABDI-typ").style.fontWeight="bold";}
1379		  	 		else if (myArr[ubi].typ == "w") {
1380		  	 			myArr[ubi].typ = "Take Notice !";
1381		  	 			document.getElementById("But_EI").style.color = "red";
1382		  				document.getElementById("But_EI").style.fontWeight = "bold";
1383			  			document.getElementById("ABDI-typ").style.color="red";
1384			  			document.getElementById("ABDI-typ").style.fontWeight="bold";}
1385		  					else if (myArr[ubi].typ == "p") {
1386				  	 			myArr[ubi].typ = "Stock Data of this bike was only Partly verified !";
1387				  	 			document.getElementById("But_EI").style.color = "red";
1388				  				document.getElementById("But_EI").style.fontWeight = "bold";
1389				  				document.getElementById("ABDI-typ").style.color="red";
1390				  				document.getElementById("ABDI-typ").style.fontWeight="bold";}
1391				  					else if (myArr[ubi].typ == "c") {
1392											myArr[ubi].typ = "Chain or Belt data of this bike was NOT verified !";
1393											document.getElementById("But_EI").style.color = "red";
1394											document.getElementById("But_EI").style.fontWeight = "normal";
1395											document.getElementById("ABDI-typ").style.color="orange";
1396											document.getElementById("ABDI-typ").style.fontWeight="bold";}
1397						  					else if (myArr[ubi].typ == "n") {
1398								  	 			myArr[ubi].typ = "Stock Data of this bike was NOT verified !";
1399								  	 			document.getElementById("But_EI").style.color = "red";
1400								  				document.getElementById("But_EI").style.fontWeight = "bold";
1401													document.getElementById("ABDI-typ").style.color="red";
1402													document.getElementById("ABDI-typ").style.fontWeight="bold";}
1403													  	 	 	 	
1404													  	 	 	 			else	{myArr[ubi].typ = "tbd"};							
1405			  	
1406	  	
1407	  	if (myArr[ubi].cat == "1") {myArr[ubi].cat = "Stock data is verified and calculated speeds should match GPS readings. <br>Also RPM and chain or belt (if applicable) related results should reflect reality.";}
1408	  	 else if (myArr[ubi].cat == "1s") {myArr[ubi].cat = "Stock data is verified and calculated speeds should match GPS readings.<br>Also RPM calculations are accurate. No Chain/Belt and Wear calculations possible as this a 
1408shaft bike.";}
1409		  	 else if (myArr[ubi].cat == "2") {myArr[ubi].cat = "Stock data is verified and calculated results are accurate but make sure your bike matches this selected one.";}
1410		  	 		else if (myArr[ubi].cat == "3") {myArr[ubi].cat = "Please use calculated results with caution and if available please send (link to) official data.";}
1411		  	 			else if (myArr[ubi].cat == "4") {myArr[ubi].cat = "In all probability calculated results are unreliable  >>>>  If available please send (link to) official data.";}
1412		  	 				else if (myArr[ubi].cat == "5") {myArr[ubi].cat = "As a temporary workaround, please check the 'History-page' if and how data for this bike was verified.";}
1413		  	 					else if (myArr[ubi].cat == "6") {myArr[ubi].cat = "Stock gearing data is verified, calculated speeds should match GPS readings.<br>Also RPM calculations are accurate. All chain or belt related results should be used with caution ! <br>If official chain or belt data available please send it.";}
1414			  	 	 	 				else	{myArr[ubi].cat = "To be Defined.";}
1415
1416	  
1417	    /* document.getElementById("ABDI_ubi").innerHTML = myArr[ubi].ubi; */
1418	    document.getElementById("ABDI-typheader").innerHTML = " Bike Information: ";
1419	    document.getElementById("ABDI-catheader").innerHTML = "Remark or Request:";
1420	    
1421	    document.getElementById("ABDI-cat").innerHTML = myArr[ubi].cat;
1422      document.getElementById("ABDI-typ").innerHTML = myArr[ubi].typ;
1423      document.getElementById("ABDI-L1").innerHTML = myArr[ubi].l1;
1424      document.getElementById("ABDI-L2").innerHTML = myArr[ubi].l2;
1425      document.getElementById("ABDI-L3").innerHTML = myArr[ubi].l3;
1426	
1427	  }
1428	};
1429	xmlhttp.open("GET", "js/gc_abdi.json", true);
1430	xmlhttp.send();
1431	} else {
1432            /*  Below for a Reset */
1433            /* document.getElementById("ABDI_ubi").innerHTML = ""; */
1434            document.getElementById("ABDI-typ").innerHTML = "";
1435            document.getElementById("ABDI-cat").innerHTML = "";
1436            document.getElementById("ABDI-L1").innerHTML = "";
1437            document.getElementById("ABDI-L2").innerHTML = "";
1438            document.getElementById("ABDI-L3").innerHTML = "";
1439            document.getElementById("ABDI-typheader").innerHTML = "";
1440	    			document.getElementById("ABDI-catheader").innerHTML = "";
1441	    			document.getElementById("But_EI").style.color = "rgb(109, 109, 109)";
1442						document.getElementById("But_EI").style.fontWeight = "normal";
1443						document.getElementById("But_EI").style.backgroundColor="#E0E0E0";
1444						/*  close ABDI window */
1445						
1446						fnHidAbdi()
1447						/*  window.location.href= CurPath + "#show1"; */
1448						/* window.location.href= "http://www.gearingcommander.700/base/gc_main.htm#show1" */
1449						
1450						document.getElementById("BikeInfoStat").value = 0;
1451						document.getElementById("But_EI").disabled=true;
1452						
1453				}	
1454}
1455
1456
1457function fnHidAbdi() {
1458    /* alert("Dit is fnHidAbdi"); */
1459    var AbdiCollaps = document.getElementById("abdi_col");
1460        AbdiCollaps.style.display = "none";
1461        document.getElementById("BikeInfoStat").value = 0;
1462        }
1463
1464function fnTogAbdi(Actie) {
1465	/* alert("Dit is fnTogAbdi aangeroepen met: " + Actie);  */
1466	var x = document.getElementById("abdi_col");
1467	
1468	/* Als aangeroepen vanuit Load Bike Gearing button (Action = Open) , dan altijd Open houden vanweg geen toggle als die al Open is! */
1469	
1470	  if (Actie == "Open") {x.style.display = "block";
1471													document.getElementById("BikeInfoStat").value = 1;
1472													document.getElementById("But_EI").style.backgroundColor="#00FF00";
1473													} else { 
1474	   											
1475	   															if (x.style.display === "none") {
1476															    		x.style.display = "block";
1477															        document.getElementById("BikeInfoStat").value = 1;
1478																	    document.getElementById("But_EI").style.backgroundColor="#00FF00";
1479																	    /* x.focus(); */
1480															    		/* document.getElementById("DataWrong").scrollIntoView(true); */
1481        
1482																		} else {
1483																		    x.style.display = "none";
1484																		     document.getElementById("BikeInfoStat").value = 0;
1485																		     document.getElementById("But_EI").style.backgroundColor="#E0E0E0";
1486    	}
1487    }
1488}
1489function fnPopTirCirc() {
1490	window.open('gc_popup_tircir.htm','','scrollbars=yes,menubar=no,height=450,width=450,resizable=yes,toolbar=no,location=no,status=no');
1491	}
1492	
1493function fnPopMaxRPM() {
1494	window.open('gc_popup_maxrpm.htm','','scrollbars=yes,menubar=no,height=720,width=450,resizable=yes,toolbar=no,location=no,status=no');
1495	}
1496
1497
1498/* ketting slijtage percentage buttons */
1499var tmrVar;
1500var deltastep = 0.05;
1501function chgFld(fildName, dir){
1502  if(dir==0) {
1503    clearTimeout(tmrVar);
1504    return true;
1505  }
1506  theField=document.forms[0][fildName];
1507  if(dir > 0)
1508    theField.value = parseFloat((Number(theField.value) + deltastep).toFixed(2));
1509  else
1510    theField.value = parseFloat((Number(theField.value) - deltastep).toFixed(2));
1511  if(theField.value > 2 ) theField.value= (0).toFixed(2);
1512  if(theField.value < 0)  theField.value=(2).toFixed(2);
1513  tmrVar=setTimeout("chgFld('"+fildName+"',"+dir+")",200)
1514}
1515
1516/*  Aantal links Free Final drive, ook aangeroepen met leeg mainscherm vanuit fnCheckCalc() */
1517function fnFreeLinks(Actie, Unit, U_txt) {
1518	/* alert("Actie, Unit, U_txt = " + Actie + " " +  Unit + " " + U_txt); */
1519	var FrFinalA = parseInt(document.getElementById("FreeFinalA").value);
1520	var FrFinalB = parseInt(document.getElementById("FreeFinalB").value);
1521	var FrPitch = parseFloat(document.getElementById("FreePit").value) * Unit;
1522	if (FrPitch > 1 && Actie == "Rek" && document.getElementById("UnGenPit").innerHTML != "in mm") {
1523								document.getElementById("FreePit").value = "";						
1524								Swal.fire({
1525									  position: 'center',
1526									  width: '200px',
1527									  padding: '5px',
1528									  icon: 'warning',
1529									  showConfirmButton: true,
1530									  html:
1531										    '<font size="3" face="Verdana" color="red">Selected Units<br>is: Inch</font> <p style="font-size:13px; font-family:Verdana; color:green"><br><b> Please enter both the Chain Pitch and Sprocket Distance in Inch.</p>  ',							  
1532											});
1533									return;};
1534										
1535	if (FrPitch < 1 && Actie == "Rek" && document.getElementById("UnGenPit").innerHTML != "in inch") {
1536					document.getElementById("FreePit").value = "";
1537					Swal.fire({
1538									  position: 'center',
1539									  width: '200px',
1540									  padding: '5px',
1541									  icon: 'warning',
1542									  showConfirmButton: true,
1543									  html:
1544										    '<font size="3" face="Verdana" color="red">Selected Units<br>is: Milimeter</font> <p style="font-size:13px; font-family:Verdana; color:green"><br><b> Please enter both the Chain Pitch and Sprocket Distance in Milimeter.</p>  ',							  
1545											});
1546									return;};
1547			
1548	
1549	
1550	var FrSprDis = parseFloat(document.getElementById("FreeSprDis").value) * Unit;
1551	var FrSprDelt = parseFloat(document.getElementById("FreeDelta").value) * Unit;
1552	
1553	var FDInput = FrFinalA * FrFinalB * FrPitch * FrSprDis;
1554	/* alert("Actie is: " +Actie + " en Units is: " +Unit + "en U_Txt is: " +U_txt + " Number.isNaN(FDInput) is:" +Number.isNaN(FDInput)) ; */
1555	/* als alles gevuld is */
1556	if (Number.isNaN(FDInput)) {return} 
1557		else {if (Actie == "Conv") {
1558													/* alert("Plaatsen geconv, waarden, Actie is: " +Actie); */
1559													document.getElementById("FreePit").value = FrPitch.toFixed(3);
1560													document.getElementById("FreeSprDis").value = FrSprDis.toFixed(2);
1561													document.getElementById("UnGenSpDis").innerHTML = "in " + U_txt;
1562													document.getElementById("UnGenPit").innerHTML = "in " + U_txt; 
1563															}
1564					
1565					var LinP1 = Math.pow((FrFinalA - FrFinalB) / (2 * Math.PI),2);
1566					var LinP2 =  (2 * FrSprDis) / FrPitch;
1567					var LinP3 = (FrFinalA + FrFinalB) / 2;
1568					var LinP4 = LinP1 / (FrSprDis / FrPitch);
1569					var FrLinkRec = (2 * Math.round((LinP2 + LinP3 + LinP4) / 2));
1570					
1571					var FSDR1 = FrPitch / 8;
1572					var FSDR2 = ( 2 * FrLinkRec) - FrFinalA - FrFinalB;
1573					var FSDR3 = (Math.pow(FSDR2,2) - (( 8 / 9.86) * Math.pow((FrFinalB - FrFinalA),2)));
1574					var FSDR4 = Math.sqrt(FSDR3);
1575					var FSDR5 = FSDR2 + FSDR4;
1576					var FSDR6 = FSDR1 * FSDR5;
1577					document.getElementById("FreeLinCal").value = (LinP2 + LinP3 + LinP4).toFixed(2);
1578					document.getElementById("FreeLinkRec").value = FrLinkRec.toFixed(0);
1579					document.getElementById("FreeSprDisRec").value = FSDR6.toFixed(2);
1580					document.getElementById("FreeDelta").value = (FSDR6 - FrSprDis).toFixed(2);
1581					/* alert(document.getElementById("UnGenPit").innerHTML); */
1582					if (document.getElementById("UnGenPit").innerHTML == "in mm") {var SelUn = "mm"} else {var SelUn = '"'};
1583					if (document.getElementById("FreeDelta").value == 0) {var DirArr3 = ""} else if (document.getElementById("FreeDelta").value > 0) {var DirArr3 = SelUn +"  <->"} else {var DirArr3 = SelUn + "  >-<"};
1584					document.getElementById("FreeDelta").value = document.getElementById("FreeDelta").value + DirArr3;
1585				
1586					/* alert("Actie is: " +Actie); */
1587					/* alert("U_txt is: " +U_txt); */
1588					/* alert("FrPitch is: " +FrPitch); */
1589					/* alert("UnGenPitis:  "+document.getElementById("UnGenPit").innerHTML); */
1590					/* switch to assumed correct units (only here) depending on pitch value */
1591					
1592					/* if (FrPitch > 1 && Actie == "Rek" && document.getElementById("UnGenPit").innerHTML != "in mm") {alert("We have switched the Units in this table to Milimeter!"); */
1593					/* 																																																fnFreeLinks("Conv", 1, "mm") */
1594					/* 																																																return;}		 */
1595																																																								
1596				}
1597}
1598
1599function fnResetUnitsText() {
1600		
1601		var Units_koekje = get_cookie('GC_Units');
1602    /* alert("Units_koekje = " + Units_koekje); */
1603    
1604		if (Units_koekje == "Imperial")  { var UnitSelected = 1; var Un = "Mph"; var MeasUn = 1 / 25.4; var MeasTxt = "inch"; var NumDec= 100; var UnSel= "I";}
1605		if (Units_koekje == "Metric")  { var UnitSelected = 1.609344 ; var Un = "Km/h"; var MeasUn = 25.4; var MeasTxt = "mm";var NumDec= 10; var UnSel= "M";}
1606		
1607	/* Diverse velden units aanpassen */
1608		document.getElementById("TUnit").value = Un;
1609		document.getElementById("TUnit1").innerHTML = MeasTxt; 	 			
1610		document.getElementById("Tab4Pitch").innerHTML = "Pitch in " + MeasTxt;
1611		document.getElementById("Tab4Length").innerHTML = "Chain / Belt Length in " + MeasTxt; 	
1612		document.getElementById("CWTab4SprDis").innerHTML = "Chain / Belt<br>Sprocket distance in " + MeasTxt;
1613		document.getElementById("UnGenSpDis").innerHTML = "in " + MeasTxt;
1614		document.getElementById("UnGenPit").innerHTML = "in " + MeasTxt;
1615		document.getElementById("SpeedGearRPM").innerHTML = "GPS Speed in "+ Un + " at RPM in Gear in selected setup:";
1616		document.getElementById("Speed49Combo").innerHTML = "GPS Top speed in " + Un + " for 49 final drive combinations at M.P.RPM in Custom setup:";
1617		/* console.log("UnSel = " + UnSel); */
1618		/* alert("UnSel = " + UnSel); */
1619		document.getElementById("UnitSel").value = UnSel;
1620
1621}										

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.