PageSourceSearch

https://www.rhinocarhire.com/CMSScripts/Custom/RCH_Search_Engine_Filter_V6.js?v=10/2/2026%207:32:09%20AM

js rhinocarhire.com collected 2026-10-02 06:32:29 UTC 23,832 bytes, 720 lines download raw bytes

1var selectedItem = null;
2var selectedReturnItem = null;
3
4
5; (function ($) {
6
7	$.widget("ui.autocomplete", $.ui.autocomplete, {
8
9		// extend default options
10		options: {
11			clearButton: true,
12			clearButtonHtml: '×',
13			clearButtonPosition: {
14				my: "right center",
15				at: "right center"
16			}
17		},
18
19
20
21		_create: function () {
22
23			var self = this;
24
25			// Invoke the parent widget's method.
26			self._super();
27
28			if (self.options.clearButton) {
29				self._createClearButton();
30			}
31
32		},
33
34		_createClearButton: function () {
35
36			var self = this;
37
38			self.clearElement = $("<span>").
39				attr("tabindex", "-1").
40				addClass("ui-autocomplete-clear").
41				html(self.options.clearButtonHtml).
42				appendTo(self.element.parent());
43
44			if (self.options.clearButtonPosition !== false && typeof self.options.clearButtonPosition === 'object') {
45				if (typeof self.options.clearButtonPosition.of === 'undefined') {
46					self.options.clearButtonPosition.of = self.element;
47				}
48				self.clearElement.position(self.options.clearButtonPosition);
49			}
50
51			self._on(self.clearElement, {
52				click: function () {
53					self.element.val('').focus();
54					self._hideClearButton();
55				}
56			});
57
58
59			self.element.addClass('ui-autocomplete-input-has-clear');
60
61			self._on(self.element, {
62				input: function () {
63					if (self.element.val() !== "") {
64						self._showClearButton();
65					} else {
66						self._hideClearButton();
67					}
68				}
69			});
70
71
72			self._on(self.menu.element, {
73				menuselect: function () {
74					self._showClearButton();
75				}
76			});
77
78
79			// show clearElement if input has some content on initialization
80			if (self.element.val() !== "") {
81				self._showClearButton();
82			} else {
83				self._hideClearButton();
84			}
85
86		},
87
88		_showClearButton: function () {
89			this.clearElement.css({ 'display': 'inline-block' });
90		},
91
92		_hideClearButton: function () {
93			this.clearElement.css({ 'display': 'none' });
94		}
95	});
96
97
98
99})(window.jQuery);
100
101function startSearching() {
102	if (selectedItem == null) {
103		alert("Please select pickup location");
104		return;
105	}
106	var retChecked = $("#chkReturn").prop("checked");
107	if (retChecked == true && selectedReturnItem == null) {
108		alert("Please select return location");
109		return;
110	}
111
112	//alert("selectedItem.code: " + selectedItem.code);
113
114	var tPickupExternalLocId = selectedItem.code.split('|');
115	var lvPickupcode = tPickupExternalLocId[0];
116	var lvPickupExternalLocId = tPickupExternalLocId[1];
117	var lvPickupLat = tPickupExternalLocId[2];
118	var lvPickupLng = tPickupExternalLocId[3];
119	var lvPickupCountrycode = tPickupExternalLocId[4];
120
121
122	var tReturnExternalLocId = selectedItem.code.split('|');
123	var lvReturncode = tPickupExternalLocId[0];
124	var lvReturnExternalLocId = tPickupExternalLocId[1];
125	var lvReturnLat = tPickupExternalLocId[2];
126	var lvReturnLng = tPickupExternalLocId[3];
127	var lvReturnCountrycode = tPickupExternalLocId[4];
128
129
130	if (retChecked == true) {
131		tReturnExternalLocId = selectedReturnItem.code.split('|');
132		lvReturncode = tReturnExternalLocId[0];
133		lvReturnExternalLocId = tReturnExternalLocId[1];
134		lvReturnLat = tReturnExternalLocId[2];
135		lvReturnLng = tReturnExternalLocId[3];
136		lvReturnCountrycode = tReturnExternalLocId[4];
137	}
138
139	//if (lvPickupcode > 0) {
140	//	if (lvReturncode > 0) {
141	//		alert("1");
142	//	}
143	//	else {
144	//		alert("2");
145	//	}
146	//}
147
148	//alert("lvPickupcode: " + lvPickupcode);
149	//alert("lvPickupExternalLocId: " + lvPickupExternalLocId);
150	//if (lvPickupExternalLocId == "0") {
151	if (lvPickupcode != "0") {
152
153		var pickupId = lvPickupcode;
154
155		var pickupName = selectedItem.label;
156
157		var returnId = lvReturncode;
158		var returnName = selectedItem.label;
159
160		if (retChecked == true) {
161			returnId = selectedReturnItem.code;
162			returnName = selectedReturnItem.label;
163		}
164		var pickupDt = $("#pickupDt").val();
165		var pickupTime = $("#pickupTime").val();
166		pickupDt = getValidDate(pickupDt) + "T" + pickupTime;
167		var returnDt = $("#returnDt").val();
168		var returnTime = $("#returnTime").val();
169		returnDt = getValidDate(returnDt) + "T" + returnTime;
170
171		var tPickupDt = new Date(getValidDateV2($("#pickupDt").val()) + " " + $("#pickupTime").val());
172		var tReturnDt = new Date(getValidDateV2($("#returnDt").val()) + " " + $("#returnTime").val());
173
174		if (tPickupDt >= tReturnDt) {
175			alert("There must be at least 30 minutes difference between pick up and drop off.");
176			return;
177		}
178
179		var driverAge = "30";
180		var ageChecked = $("#chkAge").prop("checked");
181		console.log("chkAge: " + ageChecked);
182		if (ageChecked == false) {
183			//get the age input by user
184			driverAge = $("#txtDriverAge").val();
185		}
186
187
188
189		var pickupdate = pickupDt.split('-');
190		pickupDt = pickupDt.replace(pickupdate[1], getMonth(pickupdate[1]));
191		var returndate = returnDt.split('-');
192		returnDt = returnDt.replace(returndate[1], getMonth(returndate[1]));
193		//alert("1A");
194		//if (retChecked == true) {
195		//	alert("1A");
196		//	geocodePlaceId(lvPickupExternalLocId, lvPickupcode, selectedItem.label, lvReturnExternalLocId, lvReturncode, selectedReturnItem.label, retChecked);
197		//}
198		//else {
199		//	alert("1B");
200		//	getCountryCurrency(pickupDt, returnDt, driverAge, clientId, pickupId, pickupName, returnId, returnName, filters, lvPickupLat, lvPickupLng, lvPickupCountrycode, lvReturnLat, lvReturnLng, lvReturnCountrycode);
201		//}
202		getCountryCurrency(pickupDt, returnDt, driverAge, clientId, pickupId, pickupName, returnId, returnName, filters, lvPickupLat, lvPickupLng, lvPickupCountrycode, lvReturnLat, lvReturnLng, lvReturnCountrycode);
203
204	}
205	else {
206		if (retChecked == true) {
207			//alert("1");
208			geocodePlaceId(lvPickupExternalLocId, lvPickupcode, selectedItem.label, lvReturnExternalLocId, lvReturncode, selectedReturnItem.label, retChecked);
209		}
210		else {
211			//alert("2");
212			geocodePlaceId(lvPickupExternalLocId, lvPickupcode, selectedItem.label, lvReturnExternalLocId, lvPickupcode, selectedItem.label, retChecked);
213		}
214	}
215
216}
217
218function getValidDate(s) {
219
220	var bits = s.split('-');
221	var d = bits[2] + '-' + bits[1] + '-' + bits[0];
222	return d;
223}
224
225function getValidDateV2(s) {
226
227	var bits = s.split('-');
228	var d = bits[1] + '/' + bits[0] + '/' + bits[2];
229	return d;
230}
231
232function getMonth(monthStr) {
233
234	var month1 = monthStr.toLowerCase();
235
236	var months = ["jan", "feb", "mar", "apr", "may", "jun", "jul", "aug", "sep", "oct", "nov", "dec"];
237	var mNumber = months.indexOf(month1) + 1;
238
239	if (mNumber < 10) {
240		mNumber = "0" + mNumber;
241	}
242
243	return mNumber;
244
245}
246
247
248function getCountryCurrency(pickupDt, returnDt, driverAge, clientId, pickupId, pickupName, returnId, returnName, filters, pvPickupLat, pvPickupLng, pvPickupCountryCode, pvReturnLat, pvReturnLng, pvReturnCountryCode) {
249
250
251
252	var redirecturl = "";
253
254	var tmpredirecturl = "https://reservation.rhinocarhire.com/en/book?pickupDateTime=" + encodeURI(pickupDt) + "&returnDateTime=" + encodeURI(returnDt) + "&age=" + encodeURI(driverAge) + "&clientID=" + encodeURI(clientId) + "&filters=" + filters + "&ct=MP&curr=EUR&elID=811590590773535&residenceID=ES&pickupLat=" + pvPickupLat + "&pickupLng=" + pvPickupLng + "&pickupName=" + encodeURI(pickupName) + "&dropoffLat=" + pvReturnLat + "&dropoffLng=" + pvReturnLng + "&dropoffName=" + encodeURI(returnName);
255	redirecturl = "https://www.rhinocarhire.com/Quote.html?pickupDateTime=" + encodeURI(pickupDt) + "&returnDateTime=" + encodeURI(returnDt) + "&age=" + encodeURI(driverAge) + "&clientID=" + encodeURI(clientId) + "&filters=" + filters + "&ct=MP&elID=811590590773535";
256	
257
258	var url = 'https://otageo.cartrawler.com/cartrawlerota/json?msg=%7B%0A%22%40Target%22%3A%22Production%22%2C%22%40PrimaryLangID%22%3A%22en%22%2C%22POS%22%3A%7B%0A%22Source%22%3A%5B%7B%0A%22%40ERSP_UserID%22%3A%22MP%22%2C%22%40ISOCurrency%22%3A%22PKR%22%2C%22%40ISOCountry%22%3A%22PK%22%2C%22RequestorID%22%3A%7B%0A%22%40ID%22%3A%22125878%22%2C%22%40ID_Context%22%3A%22CARTRAWLER%22%0A%7D%0A%7D%0A%5D%0A%7D%2C%0A%22%40xmlns%22%3A%22http%3A%2F%2Fwww.cartrawler.com%2F%22%2C%0A%22%40Version%22%3A%221.000%22%2C%0A%22TPA_Extensions%22%3A%7B%0A%22Tracking%22%3A%7B%0A%22SessionID%22%3A%22831590610373125%22%2C%22CustomerID%22%3A%22931583340741447%22%2C%22EngineLoadID%22%3A%22831590610373125%22%0A%7D%0A%7D%0A%7D&type=CT_IpToCountryRQ';
259
260	$.get(url, function (data) {
261		console.log("Success");
262		//console.log(data);
263		var records = [];
264		if (data.Errors) {
265			//do something with error
266			//console.error("Errors: " + data.Errors);
267		} else if (data.Success) {
268			console.info("Success: " + data.Success);
269
270			if (data.CountryName && data.CountryName["@CurrencyCode"].length > 0) {
271				//do something with locations
272				var strResidenceID = data.CountryName["@Code"];
273				var strCurrency = data.CountryName["@CurrencyCode"];
274
275				//alert("pvReturnLat: " + pvReturnLat);
276				//alert("pvReturnLng: " + pvReturnLng);
277				//alert("returnId: " + returnId);
278				
279
280
281				if (strResidenceID.length > 0 && strCurrency.length > 0) {
282					
283					//redirecturl = "https://reservation.rhinocarhire.com/en/book?pickupDateTime=" + encodeURI(pickupDt) + "&returnDateTime=" + encodeURI(returnDt) + "&age=" + encodeURI(driverAge) + "&clientID=" + encodeURI(clientId) + "&filters=" + filters + "&ct=MP&curr=" + strCurrency + "&elID=811590590773535&residenceID=" + strResidenceID + "&pickupID=" + pickupId + "&pickupName=" + encodeURI(pickupName) + "&returnID=" + encodeURI(returnId) + "&returnName=" + encodeURI(returnName) + "#/vehicles";
284					//redirecturl = "https://reservation.rhinocarhire.com/en/book?pickupDateTime=" + encodeURI(pickupDt) + "&returnDateTime=" + encodeURI(returnDt) + "&age=" + encodeURI(driverAge) + "&clientID=" + encodeURI(clientId) + "&filters=" + filters + "&ct=MP&curr=" + strCurrency + "&elID=811590590773535&residenceID=" + strResidenceID + "&pickupLat=" + pvPickupLat + "&pickupLng=" + pvPickupLng + "&pickupName=" + encodeURI(pickupName) + "&dropoffLat=" + pvReturnLat + "&dropoffLng=" + pvReturnLng + "&dropoffName=" + encodeURI(returnName);
285					//redirecturl = "https://reservation.rhinocarhire.com/en/book?pickupDateTime=" + encodeURI(pickupDt) + "&returnDateTime=" + encodeURI(returnDt) + "&age=" + encodeURI(driverAge) + "&clientID=" + encodeURI(clientId) + "&filters=" + filters + "&ct=MP&elID=811590590773535";
286					redirecturl = redirecturl + "&curr=" + strCurrency + "&residenceID=" + strResidenceID + "";
287				}
288
289				if (pickupId > 0) {
290					redirecturl = redirecturl + "&pickupID=" + pickupId + "&pickupName=" + encodeURI(pickupName) + "";
291					
292
293				}
294				else {
295					redirecturl = redirecturl + "&pickupLat=" + pvPickupLat + "&pickupLng=" + pvPickupLng + "&pickupName=" + encodeURI(pickupName) + "";
296
297				}
298
299				if (returnId > 0) {
300					redirecturl = redirecturl + "&returnId=" + returnId + "&returnName=" + encodeURI(returnName) + "";
301
302				}
303				else {
304					redirecturl = redirecturl + "&dropoffLat=" + pvReturnLat + "&dropoffLng=" + pvReturnLng + "&dropoffName=" + encodeURI(returnName) + "";
305
306				}
307				redirecturl = redirecturl + "#/vehicles";
308				console.log(redirecturl);
309				location.href = redirecturl;
310
311			} else {
312				console.log(tmpredirecturl);
313				location.href = tmpredirecturl;
314			}
315		}
316
317	}, "json");
318}
319
320
321function autoCompleteSource(d, e, cid, ulId) {
322
323
324
325	//var url = 'https://otageo.cartrawler.com/cartrawlerota/json?msg=%7B%0A%22@Target%22:%22Production%22,%22@PrimaryLangID%22:%22en%22,%22POS%22:%7B%0A%22Source%22:%5B%7B%0A%22@ERSP_UserID%22:%22MP%22,%22RequestorID%22:%7B%0A%22@Type%22:%2216%22,%22@ID%22:%22' + clientId + '%22,%22@ID_Context%22:%22CARTRAWLER%22%0A%7D%0A%7D%0A%5D%0A%7D,%22@xmlns%22:%22http:%2F%2Fwww.cartrawler.com%2F%22,%22@Version%22:%221.000%22,%22VehLocSearchCriterion%22:%7B%0A%22@ExactMatch%22:%22true%22,%22@ImportanceType%22:%22Mandatory%22,%22PartialText%22:%7B%0A%22@Sort%22:%221%22,%22@Size%22:8,%22@POITypes%22:%221%2C8%22,%22%23text%22:%22???searchTerm???%22%0A%7D%0A%7D,%22TPA_Extensions%22:%7B%0A%22Tracking%22:%7B%0A%22SessionID%22:%22831590610373125%22,%22CustomerID%22:%22931583340741447%22,%22EngineLoadID%22:%22831590610373125%22%0A%7D%0A%7D%0A%7D&type=CT_VehLocSearchRQ';
326	var url = 'https://otageo.cartrawler.com/cartrawlerota/json?msg=%7B%0A%22@Target%22:%22Production%22,%22@PrimaryLangID%22:%22en%22,%22POS%22:%7B%0A%22Source%22:%5B%7B%0A%22@ERSP_UserID%22:%22MP%22,%22RequestorID%22:%7B%0A%22@Type%22:%2216%22,%22@ID%22:%22' + clientId + '%22,%22@ID_Context%22:%22CARTRAWLER%22%0A%7D%0A%7D%0A%5D%0A%7D,%22@xmlns%22:%22http:%2F%2Fwww.cartrawler.com%2F%22,%22@Version%22:%221.000%22,%22VehLocSearchCriterion%22:%7B%0A%22@ExactMatch%22:%22true%22,%22@ImportanceType%22:%22Mandatory%22,%22PartialText%22:%7B%0A%22%40Sort%22%3A%221%22%2C%22%40POITypes%22%3A%221%2C8%22%2C%22%40Size%22%3A30%2C%22%23text%22:%22???searchTerm???%22%0A%7D%0A%7D,%22TPA_Extensions%22:%7B%0A%22Tracking%22:%7B%0A%22SessionID%22:%22831590610373125%22,%22CustomerID%22:%22931583340741447%22,%22EngineLoadID%22:%22831590610373125%22%0A%7D%0A%7D%0A%7D&type=CT_VehLocSearchRQ';
327
328	var sterm = $("#" + cid).val();
329	if (sterm.length < 3) {
330		return;
331	}
332	//alert(url);
333	url = url.replace("???searchTerm???", sterm);
334	//alert(url);
335	console.log(url);
336	$.get(url, function (data) {
337		console.log("Success");
338		//console.log(data);
339		var records = [];
340		if (data.Errors) {
341			//do something with error
342			//console.error("Errors: " + data.Errors);
343		} else if (data.Success) {
344			console.info("Success: " + data.Success);
345			if (data.VehMatchedLocs && data.VehMatchedLocs.LocationDetail.length > 0) {
346				console.info("There are matched locations");
347				//do something with locations
348				for (var x = 0; x < data.VehMatchedLocs.LocationDetail.length; x++) {
349					var ld = data.VehMatchedLocs.LocationDetail[x];
350					var name = ld["@Name"];
351					var countryCode = "";
352					var airportCode = "";
353					var ExternalLocId = "0";
354					var Lat = "0.0";
355					var Lng = "0.0";
356					if (typeof ld["@CountryCode"] !== "undefined") {
357						countryCode = ld["@CountryCode"];
358					}
359
360					if (typeof ld["@AirportCode"] !== "undefined") {
361						airportCode = ld["@AirportCode"];
362					}
363
364					if (typeof ld["@ExternalLocId"] !== "undefined") {
365						ExternalLocId = ld["@ExternalLocId"];
366
367					}
368
369					if (typeof ld["@Lat"] !== "undefined") {
370						Lat = ld["@Lat"];
371					}
372
373					if (typeof ld["@Lng"] !== "undefined") {
374						Lng = ld["@Lng"];
375					}
376
377
378
379
380					var ptext = "";
381					if (airportCode == "") {
382						if (countryCode == "") {
383							ptext = name;
384						} else {
385							ptext = name + ", " + countryCode;
386						}
387					}
388					else {
389						ptext = name + ", " + countryCode + " (" + airportCode + ")@" + countryCode;
390					}
391
392
393
394
395					//alert(ld["@Code"] + "|" + Lat + "|" + Lng + "|" + countryCode);
396
397					//var toPush = { label: ptext, code: ld["@Code"]};
398					var toPush = { label: ptext, code: ld["@Code"] + "|" + ExternalLocId + "|" + Lat + "|" + Lng + "|" + countryCode };
399					//var toPush = { label: ptext, code: ld["@Code"] + "|" + ExternalLocId};
400					records.push(toPush);
401				}
402			} else {
403				console.error("data.VehMatchedLocs not present or LocationDetail is empty");
404			}
405		}
406		e(records);
407		$('#' + ulId + ' li').each(function (i, item) {
408			var str = $(item).text();
409			var strCountryCode = "";
410			var strRemoveText = "";
411			if (str.indexOf('@') < 0) {
412				$(this).addClass("city-icon");
413			} else {
414				strCountryCode = str.substr(str.indexOf("@") + 1);
415				strRemoveText = "@" + strCountryCode;
416				$(item).html($(item).text().replace(strRemoveText, "") + "<span class=\"ct-icon-flag ct-icon-flag-" + strCountryCode.toLowerCase() + "\"></span>");
417				$(this).addClass("airport-icon");
418			}
419		});
420	}, "json");
421}
422
423$(document).ready(function () {
424	
425	console.log("ready");
426	$("#searchTerm").autocomplete({
427		select: function (a, b) {
428			console.log("select searchTerm: " + JSON.stringify(b));
429			var str = b.item.value;
430			var strCountryCode = "";
431			var strRemoveText = "";
432			if (str.indexOf('@') < 0) {
433
434			} else {
435				strCountryCode = str.substr(str.indexOf("@") + 1);
436				strRemoveText = "@" + strCountryCode;
437				b.item.value = str.replace(strRemoveText, "");
438				b.item.label = str.replace(strRemoveText, "");
439			}
440			selectedItem = b.item;
441		},
442		source: function (d, e) {
443			console.log("source");
444			autoCompleteSource(d, e, "searchTerm", "ui-id-1");
445		}
446	});
447	$("#searchTermReturn").autocomplete({
448		select: function (a, b) {
449			console.log("select searchTermReturn: " + JSON.stringify(b));
450			var str = b.item.value;
451			var strCountryCode = "";
452			var strRemoveText = "";
453			if (str.indexOf('@') < 0) {
454
455			} else {
456				strCountryCode = str.substr(str.indexOf("@") + 1);
457				strRemoveText = "@" + strCountryCode;
458				b.item.value = str.replace(strRemoveText, "");
459				b.item.label = str.replace(strRemoveText, "");
460			}
461			selectedReturnItem = b.item;
462		},
463		source: function (d, e) {
464			console.log("source");
465			autoCompleteSource(d, e, "searchTermReturn", "ui-id-2");
466		}
467	});
468
469
470	$("#returnDt").datepicker({
471		dateFormat: "dd-M-yy",
472		defaultDate: new Date(),
473		minDate: 0,
474		disableTouchKeyboard: true,
475		ignoreReadonly: true,
476	}).on('change', function () {
477		$('#ui-datepicker-div').removeClass("showelement");
478		$('#ui-datepicker-div').addClass("hideelement");
479
480	}).on('click', function () {
481		if ($("#ui-datepicker-div").hasClass("hideelement")) {
482			$('#ui-datepicker-div').removeClass("hideelement");
483			$('#ui-datepicker-div').addClass("showelement");
484		}
485
486	});
487
488
489	$("#pickupDt").datepicker({
490		dateFormat: "dd-M-yy",
491		defaultDate: new Date(1),
492		minDate: 0,
493		disableTouchKeyboard: true,
494		ignoreReadonly: true,
495	}).on('change', function () {
496
497		$("#returnDt").datepicker("setDate", this.value);
498		$('input[type=text]#pickupDt').datepicker("hide");
499		$('input[type=text]#returnDt').datepicker("show");
500		$('#ui-datepicker-div').addClass("showelement");
501	}).on('click', function () {
502		if ($("#ui-datepicker-div").hasClass("hideelement")) {
503			$('#ui-datepicker-div').removeClass("hideelement");
504			$('#ui-datepicker-div').addClass("showelement");
505		}
506		//$("#pickupTime").attr('size', 0);
507	});
508
509
510});
511
512
513function returnToChanged() {
514	console.log("returnToChanged");
515	var retChecked = $("#chkReturn").prop("checked");
516	console.log("chkReturn: " + retChecked);
517	if (retChecked == true) {
518		$("#dropOff").css("display", "inline");
519	} else {
520		$("#dropOff").css("display", "none");
521	}
522}
523
524function ageChanged() {
525	console.log("ageChanged");
526	var ageChecked = $("#chkAge").prop("checked");
527	console.log("chkAge: " + ageChecked);
528	if (ageChecked == false) {
529		$("#driverAge").css("display", "inline");
530	} else {
531		$("#driverAge").css("display", "none");
532	}
533}
534
535function geocodePlaceId(pvPickupExternalLocId, code, selectedItemlabel, pvReturnExternalLocId, selectedReturnItemcode, selectedReturnItemlabel, retChecked) {
536
537	var geocoder = new google.maps.Geocoder();
538	var lvPickupExternalLocId = pvPickupExternalLocId;
539
540	var dropoffgeocoder = new google.maps.Geocoder();
541	var lvReturnExternalLocId = pvReturnExternalLocId;
542	if (!isPositiveNumber(pvPickupExternalLocId)) {
543		if (isPositiveNumber(code)) {
544			//lvPickupExternalLocId = code;
545		}
546	}
547
548	if (!isPositiveNumber(pvReturnExternalLocId)) {
549		if (isPositiveNumber(selectedReturnItemcode)) {
550			//lvReturnExternalLocId = selectedReturnItemcode;
551		}
552	}
553
554	//alert("lvPickupExternalLocId:" + lvPickupExternalLocId);
555	//alert("lvReturnExternalLocId: " + lvReturnExternalLocId);
556	
557	geocoder.geocode(
558		{
559			placeId: lvPickupExternalLocId
560		},
561		(results, status) => {
562			
563			if (status === "OK") {
564				
565				if (results[0]) {
566
567					for (intCtr = 0; intCtr < results[0].address_components.length; intCtr++) {
568						if (results[0].address_components[intCtr].types[0] == "country") {
569							var CountryCode = "";
570							try {
571								CountryCode = results[0].address_components[intCtr].short_name;
572							}
573							catch (e) { }
574
575						}
576					}
577
578					var result = results[0].geometry.location + ", " + CountryCode;
579
580					var lvPickupLat = "";
581					var lvPickupLng = "";
582					var lvPickupcountryCode = "";
583					var lvDropoffLat = "";
584					var lvDropoffLng = "";
585					var lvDropoffcountryCode = "";
586
587					var lvLatLng = "";
588					lvLatLng = result;
589
590					if (typeof lvLatLng !== "undefined") {
591						lvLatLng = lvLatLng.replace("(", "");
592						lvLatLng = lvLatLng.replace(")", "");
593						lvLatLng = lvLatLng.replace(" ", "");
594						var LatLong = lvLatLng.split(',');
595						lvPickupLat = LatLong[0];
596						lvPickupLng = LatLong[1];
597						lvPickupcountryCode = LatLong[2];
598
599						lvDropoffLat = LatLong[0];
600						lvDropoffLng = LatLong[1];
601						lvDropoffcountryCode = LatLong[2];
602
603					}
604
605					if (retChecked == true) {
606						dropoffgeocoder.geocode(
607							{
608								placeId: lvReturnExternalLocId
609							},
610							(results, status) => {
611								if (status === "OK") {
612									if (results[0]) {
613
614										for (intReturnCtr = 0; intReturnCtr < results[0].address_components.length; intReturnCtr++) {
615											if (results[0].address_components[intCtr].types[0] == "country") {
616
617												var ReturnCountryCode = "";
618												try {
619													ReturnCountryCode = results[0].address_components[intCtr].short_name;
620												}
621												catch (e) { }
622
623											}
624										}
625
626										var ReturnResult = results[0].geometry.location + ", " + ReturnCountryCode;
627
628
629										var lvReturnLatLng = "";
630										lvReturnLatLng = ReturnResult;
631
632										if (typeof lvReturnLatLng !== "undefined") {
633											lvReturnLatLng = lvReturnLatLng.replace("(", "");
634											lvReturnLatLng = lvReturnLatLng.replace(")", "");
635											lvReturnLatLng = lvReturnLatLng.replace(" ", "");
636											var ReturnLatLong = lvReturnLatLng.split(',');
637
638											lvDropoffLat = ReturnLatLong[0];
639											lvDropoffLng = ReturnLatLong[1];
640											lvDropoffcountryCode = ReturnLatLong[2];
641
642										}
643										//return result;
644									} else {
645										//window.alert("No results found");
646										//return "";
647									}
648								} else {
649									//window.alert("Geocoder failed due to: " + status);
650									//return "";
651								}
652							}
653						);
654					}
655
656					var pickupId = code;
657					var pickupName = selectedItemlabel;
658
659					var returnId = code;
660					var returnName = selectedItemlabel;
661
662					if (retChecked == true) {
663						returnId = selectedReturnItemcode;
664						returnName = selectedReturnItemlabel;
665					}
666					var pickupDt = $("#pickupDt").val();
667					var pickupTime = $("#pickupTime").val();
668					pickupDt = getValidDate(pickupDt) + "T" + pickupTime;
669					var returnDt = $("#returnDt").val();
670					var returnTime = $("#returnTime").val();
671					returnDt = getValidDate(returnDt) + "T" + returnTime;
672
673					var tPickupDt = new Date(getValidDateV2($("#pickupDt").val()) + " " + $("#pickupTime").val());
674					var tReturnDt = new Date(getValidDateV2($("#returnDt").val()) + " " + $("#returnTime").val());
675
676					if (tPickupDt >= tReturnDt) {
677						alert("There must be at least 30 minutes difference between pick up and drop off.");
678						return;
679					}
680
681					var driverAge = "30";
682					var ageChecked = $("#chkAge").prop("checked");
683					console.log("chkAge: " + ageChecked);
684					if (ageChecked == false) {
685						//get the age input by user
686						driverAge = $("#txtDriverAge").val();
687					}
688
689
690
691					var pickupdate = pickupDt.split('-');
692					pickupDt = pickupDt.replace(pickupdate[1], getMonth(pickupdate[1]));
693					var returndate = returnDt.split('-');
694					returnDt = returnDt.replace(returndate[1], getMonth(returndate[1]));
695					//alert("2");
696					getCountryCurrency(pickupDt, returnDt, driverAge, clientId, pickupId, pickupName, returnId, returnName, filters, lvPickupLat, lvPickupLng, lvPickupcountryCode, lvDropoffLat, lvDropoffLng, lvDropoffcountryCode);
697
698					//return result;
699				} else {
700					//window.alert("No results found");
701					return "";
702				}
703			} else {
704				//window.alert("Geocoder failed due to: " + status);
705				return "";
706			}
707		}
708	);
709}
710
711function isPositiveNumber(e) {
712	var regexp = /^\d*[1-9]\d*$/;
713	var match = regexp.test(e);
714	if (match) {
715		return true;
716	}
717	else {
718		return false;
719	}
720}

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.