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.