// Copyright RCM - RentalCarManager.com 2015, all rights reserved! var rcmVersion = "3.1"; var rcmMode = ""; var rcmAPIUrl = "https://apis.rentalcarmanager.com/booking/v3.1/"; var rcmTaxInclusive = false; var rcmTaxRate = 0.1; var rcmStateTax = 0.0; var rcmErr = ""; var rcmMsg = ""; var rcmDebug = ""; var rcmAlert = ""; var rcmToken = ""; var rcmSession = ""; var rcmURL = ""; var rcmKey = "d3d3LmxldHNnb21vdG9yaG9tZXMuY29tLmF1"; var rcmURLObjID = ""; var rcmCampaignCode = ""; var rcmCustomerID = ""; var rcmNewsLetter = 0; var rcmReservationRef = ""; var rcmReservationNo = ""; var rcmDateFormat = "d/m/Y"; var rcmPaymentSaved = false; var rcmTransmission = [{ "No Preference": 0, "Auto": 1, "Manual": 2 }]; var rcmLocationInfo = []; var rcmLocationDetails = []; var rcmOfficeTimes = []; var rcmCategoryTypeInfo = []; var rcmDriverAgesInfo = []; var rcmLocationFees = []; var rcmAvailableCarDetails = []; var rcmAvailableCars = []; var rcmMandatoryFees = []; var rcmOptionalFees = []; var rcmInsuranceOptions = []; var rcmKmCharges = []; var rcmUserData = []; var rcmRentalSource = []; var rcmCountries = []; var rcmAreaOfUse = []; var rcmCustomerData = [{ "fnm": "", "lnm": "", "eml": "", "phn": "", "mob": "", "dob": "", "lcn": "", "lci": "", "lce": "", "adr": "", "cty": "", "sta": "", "pcd": "", "cnt": "", "fax": "", "fus": "", "rmk": "", "not": "", "fln": "", "flo": "", "flc": "", "flr": "", "aru": "" }]; var rcmCustomerDataOK = false; var rcmSelOptionalFees = []; var rcmSelTransmission = 0; var rcmSelInsurance = 0; var rcmSelExtraKms = 0; var rcmAgentInfo = []; var rcmBookingInfo = []; var rcmCustomerInfo = []; var rcmCompanyInfo = []; var rcmRateInfo = []; var rcmExtraFees = []; var rcmPaymentInfo = []; var rcmAgentBookings = []; var rcmCancelReasons = []; var rcmCancelInfo = []; var fnCallBack; var fnCallBackStep1; var fnCallBackStep2; var fnCallBackStep3; var fnCallBackCancelReasons; var fnCallCancelDone; var fnCallBackWebItems; var fnCallBookingDone; var fnCallPaymentDone; var fnLocationChange; var fnCallBackGetUser; var fnCallBackGetURL; var fnCallBackBookingInfo; var fnCallBackLocationDetails; var fnCallBackAgentBookings; var fnCallBackSendEmail; var fnCallBackExtraDriver; var fnAlerts; var rcm_email_pat = /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*([,;]\s*\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*)*$/i; var rcm_hasnonumbers = /[^\d]/; var rcm_number = /^[0-9]+$/; var rcm_text = /[^\w\s\-\+!?@.,`\/\#\(\)\u0080-\uA000]/gi; var rcm_alphanum_pat = /[^\w\s\-\+,\.\u0080-\uA000]/i; var uri = ""; String.prototype.startsWith = function (prefix) { return this.indexOf(prefix) === 0; }; String.prototype.endsWith = function (suffix) { return this.match(suffix + "$") == suffix; }; String.prototype.chkDateFormat = function () { var retval = this; // Make sure we get next date format d/m/Y before we call API if (retval != "" && rcmDateFormat == "m/d/Y") { var arr = retval.split("/"); retval = arr[1] + "/" + arr[0] + "/" + arr[2]; } retval = retval.replace(/\//g, "_"); return retval; }; function rcmAPI() { // Key - use host info if empty if (rcmKey == "") rcmKey = rcmBase64.encode(window.location.host); // Main Methods this.GetStep1 = _rcm_getStep1; this.GetStep2 = _rcm_getStep2; this.GetStep3 = _rcm_getStep3; this.MakeBooking = _rcm_MakeBooking; this.MakePayment = _rcm_MakePayment; this.ConfirmPayment = _rcm_ConfirmPayment; this.GetUser = _rcm_GetUser; this.GetURL = _rcm_GetURL; this.GetCancelReasons = _rcm_GetCancelReasons; this.CancelBooking = _rcm_CancelBooking; this.GetWebItems = _rcm_GetWebItems; this.GetBookingInfo = _rcm_GetBookingInfo; this.EditBooking = _rcm_EditBooking; this.GetLocationDetails = _rcm_GetLocationDetails; this.GetAgentBookings = _rcm_GetAgentBookings; this.SendEmail = _rcm_SendEmail; this.ExtraDriver = _rcm_ExtraDriver; // Setup Function Calls this.OnReady = _rcm_OnReady; this.OnReadyStep1 = _rcm_OnReadyStep1; this.OnReadyStep2 = _rcm_OnReadyStep2; this.OnReadyStep3 = _rcm_OnReadyStep3; this.OnReadyCancelReasons = _rcm_OnReadyCancelReasons; this.OnCancelDone = _rcm_OnCancelDone; this.OnReadyWebItems = _rcm_OnReadyWebItems; this.OnBookingDone = _rcm_OnBookingDone; this.OnPaymentDone = _rcm_OnPaymentDone; this.OnReadyGetUser = _rcm_OnReadyGetUser; this.OnLocationChange = _rcm_OnLocationChange; this.OnReadyGetURL = _rcm_OnReadyGetURL; this.OnReadyGetBookingInfo = _rcm_OnReadyGetBookingInfo; this.OnReadyGetLocationDetails = _rcm_OnReadyGetLocationDetails; this.OnReadyGetAgentBookings = _rcm_OnReadyGetAgentBookings; this.OnReadySendEmail = _rcm_OnReadySendEmail; this.OnReadyExtraDriver = _rcm_OnReadyExtraDriver; this.OnAlerts = _rcm_OnAlerts; // Methods to load Lists this.LoadPickupList = _rcm_LoadPickupList; this.LoadDropOffList = _rcm_LoadDropOffList; this.LoadLocationsList = _rcm_LoadLocationsList; this.LoadAgeList = _rcm_LoadAgeList; this.LoadRentalSource = _rcm_LoadRentalSource; this.LoadAreaOfUse = _rcm_LoadAreaOfUse; this.LoadCategoryType = _rcm_LoadCategoryType; this.LoadCountries = _rcm_LoadCountries; // Methods to get a value this.GetNoticePeriod = _rcm_GetNoticePeriod; this.CheckLocationAvailable = _rcm_CheckLocationAvailable; this.CheckCustomerDataOK = _rcm_CheckCustomerDataOK; this.CheckPaymentSaved = _rcm_CheckPaymentSaved; this.GetAge = _rcm_GetAge; this.GetCountry = _rcm_GetCountry; this.GetCategoryType = _rcm_GetCategoryType; this.GetAgeID = _rcm_GetAgeID; this.TaxInclusive = _rcm_TaxInclusive; this.ReservationRef = _rcm_ReservationRef; this.ReservationNo = _rcm_ReservationNo; this.MinTimePickup = _rcm_MinTimePickup; this.MinTimeDropOff = _rcm_MinTimeDropOff; this.MaxTimePickup = _rcm_MaxTimePickup; this.MaxTimeDropOff = _rcm_MaxTimeDropOff; this.MinBookingDay = _rcm_MinBookingDay; this.OfficeOpen = _rcm_OfficeOpen; this.OfficeClose = _rcm_OfficeClose; // Methods for Data management this.SetMode = _rcm_setMode; this.APIUrl = _rcm_APIUrl; this.AddToOptionalItems = _rcm_AddToOptionalItems; this.ClearOptionalItems = _rcm_ClearOptionalItems; this.GetOptionalItems = _rcm_GetOptionalItems; this.InitOptionalItems = _rcm_InitOptionalItems; this.InitCustomerData = _rcm_InitCustomerData; this.SetCustomerData = _rcm_SetCustomerData; this.GetCustomerData = _rcm_GetCustomerData; this.ClearCustomerData = _rcm_ClearCustomerData; this.SetTransmission = _rcm_SetTransmission; this.SetInsurance = _rcm_SetInsurance; this.SetExtraKms = _rcm_SetExtraKms; this.SetNewsletter = _rcm_SetNewsletter; //Methods to set Customer field data this.SetFirstName = _rcm_SetFirstName; this.SetLastName = _rcm_SetLastName; this.SetEmail = _rcm_SetEmail; this.SetPhone = _rcm_SetPhone; this.SetMobile = _rcm_SetMobile; this.SetDOB = _rcm_SetDOB; this.SetLicenseNo = _rcm_SetLicenseNo; this.SetLicenseIssuedIn = _rcm_SetLicenseIssuedIn; this.SetLicenseExpires = _rcm_SetLicenseExpires; this.SetAddress = _rcm_SetAddress; this.SetCity = _rcm_SetCity; this.SetState = _rcm_SetState; this.SetPostcode = _rcm_SetPostcode; this.SetCountry = _rcm_SetCountry; this.SetFax = _rcm_SetFax; this.SetFoundus = _rcm_SetFoundus; this.SetRemarks = _rcm_SetRemarks; this.SetNoTraveling = _rcm_SetNoTraveling; this.SetFlightNo = _rcm_SetFlightNo; this.SetFlightNoOut = _rcm_SetFlightNoOut; this.SetSetCollectionPoint = _rcm_SetCollectionPoint; this.SetReturnPoint = _rcm_SetReturnPoint; this.SetAreaOfUse = _rcm_SetAreaOfUse; this.SetDateFormat = _rcm_SetDateFormat; //Methods to get Customer field data this.GetFirstName = _rcm_GetFirstName; this.GetLastName = _rcm_GetLastName; this.GetEmail = _rcm_GetEmail; this.GetPhone = _rcm_GetPhone; this.GetMobile = _rcm_GetMobile; this.GetDOB = _rcm_GetDOB; this.GetLicenseNo = _rcm_GetLicenseNo; this.GetLicenseIssuedIn = _rcm_GetLicenseIssuedIn; this.GetLicenseExpires = _rcm_GetLicenseExpires; this.GetAddress = _rcm_GetAddress; this.GetCity = _rcm_GetCity; this.GetState = _rcm_GetState; this.GetPostcode = _rcm_GetPostcode; this.GetCountryID = _rcm_GetCountryID; this.GetFax = _rcm_GetFax; this.GetFoundusID = _rcm_GetFoundusID; this.GetRemarks = _rcm_GetRemarks; this.GetNoTraveling = _rcm_GetNoTraveling; this.GetFlightNo = _rcm_GetFlightNo; this.GetFlightNoOut = _rcm_GetFlightNoOut; this.GetCollectionPoint = _rcm_GetCollectionPoint; this.GetReturnPoint = _rcm_GetReturnPoint; this.GetAreaOfUse = _rcm_GetAreaOfUse; this.GetDateFormat = _rcm_GetDateFormat; this.GetInsurance = _rcm_GetInsurance; this.GetExtraKms = _rcm_GetExtraKms; this.GetTax = _rcm_GetTax; this.GetStateTax = _rcm_GetStateTax; this.GetSession = _rcm_GetSession; // Methods for system info this.DebugInfo = _rcm_DisplDebug; this.Msg = _rcm_DisplMsg; this.Error = _rcm_DisplError; this.Version = _rcm_DisplVersion; this.DisplayTable = _rcm_DisplayTable; function _rcm_setMode(modeval) { rcmMode = modeval; } function _rcm_DisplDebug() { return rcmDebug; } function _rcm_DisplMsg() { return rcmMsg; } function _rcm_DisplError() { return rcmErr; } function _rcm_DisplVersion() { return rcmVersion; } function _rcm_TaxInclusive() { return rcmTaxInclusive; } function _rcm_APIUrl(pUrl) { if (pUrl.endsWith('/')) rcmAPIUrl = pUrl; else rcmAPIUrl = pUrl + '/'; } function _rcm_getStep1() { if (rcmAPIUrl != "" && rcmKey != "") { //Remove old script if it exists var chkScript = document.getElementById("rcmStep1Script"); if (chkScript) { chkScript.parentNode.removeChild(chkScript); } var oHead = document.getElementsByTagName('HEAD').item(0); var oScript = document.createElement("script"); oScript.type = "text/javascript"; oScript.setAttribute("id", "rcmStep1Script"); oScript.src = rcmAPIUrl + rcmKey + "/step1?apikey=" + rcmKey; oHead.appendChild(oScript); } else { alert("No Host URL Info!"); } } function _rcm_getStep2(CatTID, PLocID, PDate, PTime, DLocID, DDate, DTime, Age, CampaignCode, Details, AgentCode, Name, Email, Phone) { var Data = ''; // Set Default values if (CatTID === undefined || CatTID == '') CatTID = '-'; if (PLocID === undefined || PLocID == '') PLocID = '-'; if (PDate === undefined || PDate == '') PDate = '-'; if (PTime === undefined || PTime == '') PTime = '-'; if (DLocID === undefined || DLocID == '') DLocID = '-'; if (DDate === undefined || DDate == '') DDate = '-'; if (DTime === undefined || DTime == '') DTime = '-'; if (Age === undefined || Age == '') Age = '-'; if (Details === undefined || Details == '') Details = '0'; PDate = PDate.chkDateFormat(); DDate = DDate.chkDateFormat(); PTime = PTime.replace(/\:/g, "_"); DTime = DTime.replace(/\:/g, "_"); // Optional Items default values if (CampaignCode === undefined) { CampaignCode = '-'; } else { CampaignCode = String(CampaignCode); CampaignCode = CampaignCode.replace(/\#/g, ""); CampaignCode = rcmStrOut(CampaignCode, 30); } if (CampaignCode == '') CampaignCode = '-'; rcmCampaignCode = CampaignCode; if (AgentCode === undefined || AgentCode === '') { AgentCode = '/-'; } else { AgentCode = '/' + AgentCode; } if (Name === undefined) Name = ''; if (Email === undefined) Email = ''; if (Phone === undefined) Phone = ''; if (rcmAPIUrl != "" && rcmKey != "") { if (Name + Email + Phone != '') { Data = rcmStrOut(Name, 30) + "|" + rcmStrOut(Email, 50) + "|" + rcmStrOut(Phone, 20) + "|" + new Date().getTime(); Data = rcmBase64.encode(Data); Data = "/?" + Data; } var uri = rcmAPIUrl + rcmKey + "/step2/" + CatTID + "/" + PLocID + "/" + PDate + "/" + PTime + "/" + DLocID + "/" + DDate + "/" + DTime + "/" + Age + "/" + Details + "/" + CampaignCode + AgentCode + Data + '?apikey=' + rcmKey; var oHead = document.getElementsByTagName('HEAD').item(0); //Remove old script if it exists var chkScript = document.getElementById("rcmStep2Script"); if (chkScript) { chkScript.parentNode.removeChild(chkScript); } var oScript = document.createElement("script"); oScript.type = "text/javascript"; oScript.setAttribute("id", "rcmStep2Script"); oScript.src = uri; oHead.appendChild(oScript); } else { alert("No Host URL Info!"); } } function _rcm_getStep3(CatTID, PLocID, PDate, PTime, DLocID, DDate, DTime, Age, CarSizeID, CampaignCode, Details, AgentCode) { PDate = PDate.chkDateFormat(); //replace(/\//g, "_"); DDate = DDate.chkDateFormat(); //replace(/\//g, "_"); PTime = PTime.replace(/\:/g, "_"); DTime = DTime.replace(/\:/g, "_"); // Optional Items default values if (CampaignCode === undefined) { CampaignCode = '-'; } else { CampaignCode = String(CampaignCode); CampaignCode = CampaignCode.replace(/\#/g, ""); CampaignCode = rcmStrOut(CampaignCode, 30); } if (CampaignCode == '') CampaignCode = '-'; rcmCampaignCode = CampaignCode; if (Details === undefined) Details = '0'; if (AgentCode === undefined) { AgentCode = ''; } else { AgentCode = '/' + AgentCode; } if (rcmAPIUrl != "" && rcmKey != "") { var uri = rcmAPIUrl + rcmKey + "/step3/" + CatTID + "/" + PLocID + "/" + PDate + "/" + PTime + "/" + DLocID + "/" + DDate + "/" + DTime + "/" + Age + "/" + CarSizeID + "/" + Details + "/" + CampaignCode + AgentCode + '?apikey=' + rcmKey; var oHead = document.getElementsByTagName('HEAD').item(0); //Remove old script if it exists var chkScript = document.getElementById("rcmStep3Script"); if (chkScript) { chkScript.parentNode.removeChild(chkScript); } var oScript = document.createElement("script"); oScript.type = "text/javascript"; oScript.setAttribute("id", "rcmStep3Script"); oScript.src = uri; oHead.appendChild(oScript); } else { alert("No Host URL Info!"); } } function _rcm_GetWebItems() { if (rcmAPIUrl != "" && rcmKey != "") { //Remove old script if it exists var chkScript = document.getElementById("rcmWebItemsScript"); if (chkScript) { chkScript.parentNode.removeChild(chkScript); } var oHead = document.getElementsByTagName('HEAD').item(0); var oScript = document.createElement("script"); oScript.type = "text/javascript"; oScript.setAttribute("id", "rcmWebItemsScript"); oScript.src = rcmAPIUrl + rcmKey + "/webitems?apikey=" + rcmKey; oHead.appendChild(oScript); } else { alert("No Host URL Info!"); } } function _rcm_MakeBooking(CatTID, PLocID, PDate, PTime, DLocID, DDate, DTime, Age, CarSizeID, BookingType, ReferralID, CampaignCode, AgentCode, AgentName, RefNo, sendEmail, AgentEmail) { if (rcmCustomerDataOK == true) { PDate = PDate.chkDateFormat(); //replace(/\//g, "_"); DDate = DDate.chkDateFormat(); //replace(/\//g, "_"); PTime = PTime.replace(/\:/g, "_"); DTime = DTime.replace(/\:/g, "_"); if (ReferralID === undefined) ReferralID = "0"; if (CampaignCode === undefined) { CampaignCode = rcmCampaignCode; } else { CampaignCode = String(CampaignCode); CampaignCode = CampaignCode.replace(/\#/g, ""); CampaignCode = rcmStrOut(CampaignCode, 30); } if (CampaignCode == '') CampaignCode = '-'; rcmCampaignCode = CampaignCode; if (AgentCode === undefined) AgentCode = ''; if (AgentName === undefined) AgentName = ''; if (RefNo === undefined) RefNo = ''; if (AgentEmail === undefined) AgentEmail = ''; var eMailSend = ""; if (rcm_number.test(sendEmail)) eMailSend = "/" + sendEmail; var OptionalData = rcmGetOptStr(); var CustomerData = JSON.stringify(rcmCustomerData); if (rcmAPIUrl != "" && rcmKey != "") { var Data = CustomerData + "|" + OptionalData + "|" + ReferralID + "|" + CampaignCode + "|" + AgentCode + "|" + AgentName + "|" + rcmNewsLetter + "|" + RefNo + "|" + AgentEmail + "|" + new Date().getTime(); Data = Data.replace(/\[\{/g, ""); Data = Data.replace(/\}\]/g, ""); Data = Data.replace(/\},\{/g, ";"); Data = Data.replace(/"/g, ""); Data = rcmBase64.encode(Data); //base64 can return forward slash / causing issue in the url rewrite rule for the call, on server side we reverse the replace Data = Data.replace(/\//g, '-'); var uri = rcmAPIUrl + rcmKey + "/booking/" + CatTID + "/" + PLocID + "/" + PDate + "/" + PTime + "/" + DLocID + "/" + DDate + "/" + DTime + "/" + Age + "/" + CarSizeID + "/" + BookingType + "/" + rcmSelInsurance + "/" + rcmSelExtraKms + "/" + rcmSelTransmission + eMailSend + "/?" + Data + '&apikey=' + rcmKey; var oHead = document.getElementsByTagName('HEAD').item(0); //Remove old script if it exists var chkScript = document.getElementById("rcmBookingScript"); if (chkScript) { chkScript.parentNode.removeChild(chkScript); } var oScript = document.createElement("script"); oScript.type = "text/javascript"; oScript.setAttribute("id", "rcmBookingScript"); oScript.src = uri; oHead.appendChild(oScript); } else { alert("No Host URL Info!"); } } else { alert("Invalid Customer Data/characters: \n\nMake sure Customer data past to API is in valid format using only alpha numeric characters!\n" + rcmAlert); } } function _rcm_MakePayment(pRefNo, pData) { if (rcmAPIUrl != "" && rcmKey != "") { var Data = pData + "|" + new Date().getTime(); Data = rcmBase64.encode(Data); //base64 can return forward slash / causing issue in the url rewrite rule for the call, on server side we reverse the replace Data = Data.replace(/\//g, '-'); var uri = rcmAPIUrl + rcmKey + "/payment/" + pRefNo + "/" + Data + '?apikey=' + rcmKey; var oHead = document.getElementsByTagName('HEAD').item(0); //Remove old script if it exists var chkScript = document.getElementById("rcmPaymentScript"); if (chkScript) { chkScript.parentNode.removeChild(chkScript); } var oScript = document.createElement("script"); oScript.type = "text/javascript"; oScript.setAttribute("id", "rcmPaymentScript"); oScript.src = uri; oHead.appendChild(oScript); } else { alert("No Host URL Info!"); } } function _rcm_ConfirmPayment(pRefNo, pAmount, pSuccess, pPaymentType, pPaymentDate, pTokenSupplierID, pTransactionBillingID, pDpsTxnRef, pCardHolderName, pPaymentSource, pCardNumber, pCardExpiry, pTransType, pMerchantFeeID, pPaymentScenario) { if (typeof pPaymentScenario === 'undefined') { pPaymentScenario = ''; } if (rcmAPIUrl != "" && rcmKey != "") { if (pTokenSupplierID === undefined) pTokenSupplierID = ''; if (pTransactionBillingID === undefined) pTransactionBillingID = ''; if (pDpsTxnRef === undefined) pDpsTxnRef = ''; if (pCardHolderName === undefined) pCardHolderName = ''; if (pPaymentSource === undefined) pPaymentSource = ''; if (pCardNumber === undefined) pCardNumber = ''; if (pCardExpiry === undefined) pCardExpiry = ''; if (pTransType === undefined) pTransType = ''; if (pMerchantFeeID === undefined) pMerchantFeeID = ''; //, , pTransType var pData = rcmBase64.encode(pAmount + ";" + pSuccess + ";" + pPaymentType + ";" + pPaymentDate + ";" + pTokenSupplierID + ";" + pTransactionBillingID + ";" + pDpsTxnRef + ";" + pCardHolderName + ";" + pPaymentSource + ";" + pCardNumber + ";" + pCardExpiry + ";" + pTransType + ";" + pMerchantFeeID + "|" + pPaymentScenario + "|" + new Date().getTime()); //base64 can return forward slash / causing issue in the url rewrite rule for the call, on server side we reverse the replace pData = pData.replace(/\//g, '-'); var uri = rcmAPIUrl + rcmKey + "/confirmpayment/" + pRefNo + "/" + pData + '?apikey=' + rcmKey; var oHead = document.getElementsByTagName('HEAD').item(0); //Remove old script if it exists var chkScript = document.getElementById("rcmPaymentScript"); if (chkScript) { chkScript.parentNode.removeChild(chkScript); } var oScript = document.createElement("script"); oScript.type = "text/javascript"; oScript.setAttribute("id", "rcmPaymentScript"); oScript.src = uri; oHead.appendChild(oScript); } else { alert("No Host URL Info!"); } } function _rcm_GetBookingInfo(pRefNo, pEmail) { if (rcmAPIUrl != "" && rcmKey != "") { if (pEmail === undefined) { uri = rcmAPIUrl + rcmKey + "/bookinginfo/" + pRefNo + '?apikey=' + rcmKey; } else { uri = rcmAPIUrl + rcmKey + "/bookinginfo/" + pRefNo + "/"; var data = "eml:" + pEmail; data = rcmBase64.encode(data); data = data.replace(/\//g, '-'); uri += data + '?apikey=' + rcmKey; } //Remove old script if it exists var oHead = document.getElementsByTagName('HEAD').item(0); var chkScript = document.getElementById("rcmBookingScript"); if (chkScript) { chkScript.parentNode.removeChild(chkScript); } var oScript = document.createElement("script"); oScript.type = "text/javascript"; oScript.setAttribute("id", "rcmBookingScript"); oScript.src = uri; oHead.appendChild(oScript); } else { alert("No Host URL Info!"); } } function _rcm_EditBooking(BookRef, PLocID, BookingType, ReferralID, CampaignCode, AgentCode, AgentName, RefNo, sendEmail) { if (rcmCustomerDataOK == true) { if (ReferralID === undefined) ReferralID = "0"; if (CampaignCode === undefined) { CampaignCode = rcmCampaignCode; } else { CampaignCode = String(CampaignCode); CampaignCode = CampaignCode.replace(/\#/g, ""); CampaignCode = rcmStrOut(CampaignCode, 30); } if (CampaignCode == '') CampaignCode = '-'; rcmCampaignCode = CampaignCode; if (AgentCode === undefined) AgentCode = ''; if (AgentName === undefined) AgentName = ''; if (RefNo === undefined) RefNo = ''; var eMailSend = ""; if (rcm_number.test(sendEmail)) eMailSend = sendEmail; else eMailSend = "-"; //conditional based on business rules var OptionalData = rcmGetOptStr(); var CustomerData = JSON.stringify(rcmCustomerData); if (rcmAPIUrl != "" && rcmKey != "") { var Data = CustomerData + "|" + OptionalData + "|" + ReferralID + "|" + CampaignCode + "|" + AgentCode + "|" + AgentName + "|" + rcmNewsLetter + "|" + RefNo + "|" + new Date().getTime(); Data = Data.replace(/\[\{/g, ""); Data = Data.replace(/\}\]/g, ""); Data = Data.replace(/\},\{/g, ";"); Data = Data.replace(/"/g, ""); Data = rcmBase64.encode(Data); //base64 can return forward slash / causing issue in the url rewrite rule for the call, on server side we reverse the replace Data = Data.replace(/\//g, '-'); //var uri = rcmAPIUrl + rcmVersion + "/" + refURL + "/editbooking/" + BookRef + "/" + CatTID + "/" + PLocID + "/" + PDate + "/" + PTime + "/" + DLocID + "/" + DDate + "/" + DTime + "/" + Age + "/" + CarSizeID + "/" + BookingType + "/" + rcmSelInsurance + "/" + rcmSelExtraKms + "/" + rcmSelTransmission + "/" + eMailSend + "/?" + Data; var uri = rcmAPIUrl + rcmKey + "/editbooking/" + BookRef + "/" + PLocID + "/" + BookingType + "/" + rcmSelInsurance + "/" + rcmSelExtraKms + "/" + rcmSelTransmission + "/" + eMailSend + "/?" + Data + '&apikey=' + rcmKey; var oHead = document.getElementsByTagName('HEAD').item(0); //Remove old script if it exists var chkScript = document.getElementById("rcmBookingScript"); if (chkScript) { chkScript.parentNode.removeChild(chkScript); } var oScript = document.createElement("script"); oScript.type = "text/javascript"; oScript.setAttribute("id", "rcmBookingScript"); oScript.src = uri; oHead.appendChild(oScript); } else { alert("No Host URL Info!"); } } else { alert("Invalid Customer Data/characters: \n\nMake sure Customer data past to API is in valid format using only alpha numeric characters!\n" + rcmAlert); } } function _rcm_GetCancelReasons() { if (rcmAPIUrl != "" && rcmKey != "") { //Remove old script if it exists var chkScript = document.getElementById("rcmCancelReasonsScript"); if (chkScript) { chkScript.parentNode.removeChild(chkScript); } var oHead = document.getElementsByTagName('HEAD').item(0); var oScript = document.createElement("script"); oScript.type = "text/javascript"; oScript.setAttribute("id", "rcmCancelReasonsScript"); oScript.src = rcmAPIUrl + rcmKey + "/cancelreasons" + '?apikey=' + rcmKey; oHead.appendChild(oScript); } else { alert("No Host URL Info!"); } } function _rcm_CancelBooking(BookRef, CancelReasonID) { if (rcmAPIUrl != "" && rcmKey != "") { var uri = rcmAPIUrl + rcmKey + "/cancelbooking/" + BookRef + "/" + CancelReasonID + '?apikey=' + rcmKey; //Remove old script if it exists var chkScript = document.getElementById("rcmCancelBookingScript"); if (chkScript) { chkScript.parentNode.removeChild(chkScript); } var oHead = document.getElementsByTagName('HEAD').item(0); var oScript = document.createElement("script"); oScript.type = "text/javascript"; oScript.setAttribute("id", "rcmCancelBookingScript"); oScript.src = uri; oHead.appendChild(oScript); } else { alert("No Host URL Info!"); } } function _rcm_GetLocationDetails(id) { if (rcmAPIUrl != "" && rcmKey != "") { var uri = rcmAPIUrl + rcmKey + "/locationdetails/" + id + '?apikey=' + rcmKey; var oHead = document.getElementsByTagName('HEAD').item(0); //Remove old script if it exists var chkScript = document.getElementById("rcmLocationDetailsScript"); if (chkScript) { chkScript.parentNode.removeChild(chkScript); } var oScript = document.createElement("script"); oScript.type = "text/javascript"; oScript.setAttribute("id", "rcmLocationDetailsScript"); oScript.src = uri; oHead.appendChild(oScript); } else { alert("No Host URL Info!"); } } function _rcm_GetAgentBookings(res, PDate, DDate, stat) { if (rcmAPIUrl != "" && rcmKey != "") { if (res === undefined) res = '0'; if (PDate === undefined) PDate = '-'; if (DDate === undefined) DDate = '-'; if (stat === undefined) stat = '-'; PDate = PDate.chkDateFormat(); //replace(/\//g, "_"); DDate = DDate.chkDateFormat(); //replace(/\//g, "_"); if (parseInt(res) > 0) uri = rcmAPIUrl + rcmKey + "/agentbookings/" + res + '?apikey=' + rcmKey; else uri = rcmAPIUrl + rcmKey + "/agentbookings/" + PDate + "/" + DDate + "/" + stat + '?apikey=' + rcmKey; var oHead = document.getElementsByTagName('HEAD').item(0); //Remove old script if it exists var chkScript = document.getElementById("rcmGetAgentBookingsScript"); if (chkScript) { chkScript.parentNode.removeChild(chkScript); } var oScript = document.createElement("script"); oScript.type = "text/javascript"; oScript.setAttribute("id", "rcmGetAgentBookingsScript"); oScript.src = uri; oHead.appendChild(oScript); } else { alert("No Host URL Info!"); } } function _rcm_SendEmail(ref) { if (rcmAPIUrl != "" && rcmKey != "") { if (ref === undefined) ref = '-'; uri = rcmAPIUrl + rcmKey + "/sendemail/" + ref + '?apikey=' + rcmKey; //alert(uri); var oHead = document.getElementsByTagName('HEAD').item(0); //Remove old script if it exists var chkScript = document.getElementById("rcmGetExtraDriverScript"); if (chkScript) { chkScript.parentNode.removeChild(chkScript); } var oScript = document.createElement("script"); oScript.type = "text/javascript"; oScript.setAttribute("id", "rcmGetExtraDriverScript"); oScript.src = uri; oHead.appendChild(oScript); } else { alert("No Host URL Info!"); } } function _rcm_ExtraDriver(ref, custid) { if (rcmAPIUrl != "" && rcmKey != "") { if (ref === undefined) ref = '-'; if (custid === undefined) custid = '0'; var Data = JSON.stringify(rcmCustomerData); Data = rcmBase64.encode(Data); //base64 can return forward slash / causing issue in the url rewrite rule for the call, on server side we reverse the replace Data = Data.replace(/\//g, '-'); uri = rcmAPIUrl + rcmKey + "/extradriver/" + ref + "/" + custid + "/?" + Data + '&apikey=' + rcmKey; var oHead = document.getElementsByTagName('HEAD').item(0); //Remove old script if it exists var chkScript = document.getElementById("rcmGetExtraDriverScript"); if (chkScript) { chkScript.parentNode.removeChild(chkScript); } var oScript = document.createElement("script"); oScript.type = "text/javascript"; oScript.setAttribute("id", "rcmGetExtraDriverScript"); oScript.src = uri; oHead.appendChild(oScript); } else { alert("No Host URL Info!"); } } function _rcm_AddToOptionalItems(id, qty) { rcmSelOptionalFees.push({ "id": id, "qty": qty }); } function _rcm_ClearOptionalItems() { rcmSelOptionalFees = []; } function _rcm_GetOptionalItems() { return JSON.stringify(rcmSelOptionalFees); } function _rcm_InitOptionalItems(value) { if (rcmIsJsonString(value) == true) rcmSelOptionalFees = JSON.parse(value); } function _rcm_InitCustomerData(value) { if (rcmIsJsonString(value) == true) rcmCustomerData = JSON.parse(value); } function _rcm_SetCustomerData(fname, lname, email, phone, mobile, dob, licno, licis, licex, address, city, state, postcode, country, fax, foundus, remarks, notraveling, flight, flightout, colpoint, retpoint, areause, ccd) { // Validate data first and display alert only when function for alert is specified var tst = _rcm_ValidateCustomerData(fname, lname, email, phone, mobile, dob, licno, licis, licex, address, city, state, postcode, country, fax, foundus, remarks, notraveling, flight, flightout, colpoint, retpoint, areause); rcmCustomerDataOK = true; if (rcmCustomerDataOK == true) { rcmCustomerData = []; rcmCustomerData.push({ "fnm": rcmStrOut(fname), "lnm": rcmStrOut(lname), "eml": rcmStrOut(email), "phn": rcmStrOut(phone), "mob": rcmStrOut(mobile), "dob": rcmStrOut(dob), "lcn": rcmStrOut(licno), "lci": rcmStrOut(licis), "lce": rcmStrOut(licex), "adr": rcmStrOut(address), "cty": rcmStrOut(city), "sta": rcmStrOut(state), "pcd": rcmStrOut(postcode), "cnt": rcmStrOut(country), "fax": rcmStrOut(fax), "fus": rcmStrOut(foundus), "rmk": rcmStrOut(remarks), "not": rcmStrOut(notraveling), "fln": rcmStrOut(flight), "flo": rcmStrOut(flightout), "flc": rcmStrOut(colpoint), "flr": rcmStrOut(retpoint), "aru": rcmStrOut(areause), "ccd": ccd === undefined ? '' : rcmStrOut(ccd) }); } //console.log('_rcm_SetCustomerData:', JSON.stringify(rcmCustomerData)); } function _rcm_ValidateCustomerData(fname, lname, email, phone, mobile, dob, licno, licis, licex, address, city, state, postcode, country, fax, foundus, remarks, notraveling, flight, flightout, colpoint, retpoint, areause) { rcmAlert = ""; if (!fname == "" && rcm_alphanum_pat.test(fname) == true) rcmAlert += "\nAPI-SetFirstName: Invalid Characters"; if (!lname == "" && rcm_alphanum_pat.test(lname) == true) rcmAlert += "\nAPI-SetLastName: Invalid Characters"; if (rcm_email_pat.test(email) == false) rcmAlert += "\nAPI-SetEmail: Invalid Email"; if (!phone == "" && rcm_alphanum_pat.test(phone) == true) rcmAlert += "\nAPI-SetPhone: Invalid Phone number"; if (!mobile == "" && rcm_alphanum_pat.test(mobile) == true) rcmAlert += "\nAPI-SetMobile: Invalid Mobile Phone number"; if (!dob == "" && rcmValidatedate(dob) == false) rcmAlert += "\nAPI-SetDob: Invalid Date of Birth"; if (!licno == "" && rcm_text.test(licno) == true) rcmAlert += "\nAPI-SetLicenseNo: Invalid License Value"; if (!licis == "" && rcm_text.test(licis) == false) rcmAlert += "\nAPI-SetLicenseIssuedIn: Invalid Characters"; if (!licex == "" && rcmValidatedate(licex) == false) rcmAlert += "\nAPI-SetLicenseExpires: Invalid Date format"; if (!address == "" && rcm_text.test(address) == true) rcmAlert += "\nAPI-SetAddress: Invalid Characters"; if (!city == "" && rcm_alphanum_pat.test(city) == true) rcmAlert += "\nAPI-SetCity: Invalid Characters"; if (!state == "" && rcm_alphanum_pat.test(state) == true) rcmAlert += "\nAPI-SetState: Invalid Characters"; if (!postcode == "" && rcm_alphanum_pat.test(postcode) == true) rcmAlert += "\nAPI-SetPostcode: Invalid Postal Code"; if (!country == "" && rcm_number.test(country) == false) rcmAlert += "\nAPI-SetCountry: Invalid ID needs to be a number"; if (!fax == "" && rcm_alphanum_pat.test(fax) == true) rcmAlert += "\nAPI-SetFax: Invalid Fax number"; if (!foundus == "" && rcm_number.test(foundus) == false) rcmAlert += "\nAPI-SetFoundus: Invalid ID needs to be a number"; if (!remarks == "" && rcm_text.test(remarks) == true) rcmAlert += "\nAPI-SetRemarks: Invalid Characters"; if (!notraveling == "" && rcm_number.test(notraveling) == false) rcmAlert += "\nAPI-SetNoTraveling: Invalid value needs to be a number"; if (!flight == "" && rcm_alphanum_pat.test(flight) == true) rcmAlert += "\nAPI-SetFlightNo: Invalid Characters"; if (!flightout == "" && rcm_alphanum_pat.test(flightout) == true) rcmAlert += "\nAPI-SetFlightNoOut: Invalid Characters"; if (!colpoint == "" && rcm_text.test(colpoint) == true) rcmAlert += "\nAPI-SetCollectionPoint: Invalid Characters"; if (!retpoint == "" && rcm_text.test(retpoint) == true) rcmAlert += "\nAPI-SetReturnPoint: Invalid Characters"; if (!areause == "" && rcm_number.test(areause) == false) rcmAlert += "\nAPI-SetAreaOfUse: Invalid ID needs to be a number"; if (rcmAlert != "" && typeof fnAlerts == "function") fnAlerts(); return (rcmAlert == "" ? true : false); } function _rcm_ClearCustomerData() { rcmCustomerData = [{ "fnm": "", "lnm": "", "eml": "", "phn": "", "mob": "", "dob": "", "lcn": "", "lci": "", "lce": "", "adr": "", "cty": "", "sta": "", "pcd": "", "cnt": "", "fax": "", "fus": "", "rmk": "", "not": "", "fln": "", "flo": "", "flc": "", "flr": "", "aru": "", "ccd": "" }]; } function _rcm_GetCustomerData() { return JSON.stringify(rcmCustomerData); } function _rcm_SetTransmission(setValue) { var tstVal = rcm_number.test(setValue) && setValue != "" || setValue == 0; if (tstVal == true) { rcmSelTransmission = setValue; } else alert("API-SetTransmission: Invalid Number ID:" + setValue); } function _rcm_SetNewsletter(setValue) { if (setValue == 0 || setValue == 1) { rcmNewsLetter = setValue; } else alert("API-SetNewsletter: Invalid Value (valid values: 0/1):" + setValue); } function _rcm_SetInsurance(setValue) { var tstVal = rcm_number.test(setValue) && setValue != "" || setValue == 0; if (tstVal == true) { rcmSelInsurance = setValue; } else alert("API-SetInsurance: Invalid Number ID:" + setValue); } function _rcm_SetExtraKms(setValue) { var tstVal = rcm_number.test(setValue) && setValue != "" || setValue == 0; if (tstVal == true) { rcmSelExtraKms = setValue; } else alert("API-SetExtraKms: Invalid Number ID:" + setValue); } function _rcm_SetFirstName(setValue) { var tstVal = !rcm_alphanum_pat.test(setValue); if (tstVal == true) { rcmCustomerData[0]["fnm"] = setValue; } else { rcmAlert += "\nAPI-SetFirstName: Invalid Characters"; if (typeof fnAlerts == "function") fnAlerts(); } } function _rcm_SetLastName(setValue) { var tstVal = !rcm_alphanum_pat.test(setValue); if (tstVal == true) { rcmCustomerData[0]["lnm"] = setValue; } else { rcmAlert = "\nAPI-SetLastName: Invalid Characters"; if (typeof fnAlerts == "function") fnAlerts(); } } function _rcm_SetEmail(setValue) { var tstVal = rcm_email_pat.test(setValue); if (tstVal == true) { rcmCustomerData[0]["eml"] = setValue; } else { rcmAlert = "\nAPI-SetEmail: Invalid Email"; if (typeof fnAlerts == "function") fnAlerts(); } } function _rcm_SetPhone(setValue) { var tstVal = !rcm_alphanum_pat.test(setValue); if (tstVal == true) { rcmCustomerData[0]["phn"] = setValue; } else { rcmAlert = "\nAPI-SetPhone: Invalid Phone number"; if (typeof fnAlerts == "function") fnAlerts(); } } function _rcm_SetMobile(setValue) { var tstVal = !rcm_alphanum_pat.test(setValue); if (tstVal == true) { rcmCustomerData[0]["mob"] = setValue; } else { rcmAlert = "\nAPI-SetMobile: Invalid Mobile Phone number"; if (typeof fnAlerts == "function") fnAlerts(); } } function _rcm_SetDOB(setValue) { var tstVal = rcmValidatedate(setValue); if (tstVal == true) { rcmCustomerData[0]["dob"] = setValue; } else { rcmAlert = "\nAPI-SetDob: Invalid Date of Birth"; if (typeof fnAlerts == "function") fnAlerts(); } } function _rcm_SetLicenseNo(setValue) { var tstVal = !rcm_alphanum_pat.test(setValue); if (tstVal == true) { rcmCustomerData[0]["lcn"] = setValue; } else { rcmAlert = "\nAPI-SetLicenseNo: Invalid License Value"; if (typeof fnAlerts == "function") fnAlerts(); } } function _rcm_SetLicenseIssuedIn(setValue) { var tstVal = rcm_text.test(setValue); if (tstVal == true) { rcmCustomerData[0]["lci"] = setValue; } else { rcmAlert = "\nAPI-SetLicenseIssuedIn: Invalid Characters"; if (typeof fnAlerts == "function") fnAlerts(); } } function _rcm_SetLicenseExpires(setValue) { var tstVal = rcmValidatedate(setValue); if (tstVal == true) { rcmCustomerData[0]["lce"] = setValue; } else { rcmAlert = "\nAPI-SetLicenseExpires: Invalid Date format"; if (typeof fnAlerts == "function") fnAlerts(); } } function _rcm_SetAddress(setValue) { var tstVal = !rcm_text.test(setValue); if (tstVal == true) { rcmCustomerData[0]["adr"] = setValue; } else { rcmAlert = "\nAPI-SetAddress: Invalid Characters"; if (typeof fnAlerts == "function") fnAlerts(); } } function _rcm_SetCity(setValue) { var tstVal = !rcm_alphanum_pat.test(setValue); if (tstVal == true) { rcmCustomerData[0]["cty"] = setValue; } else { rcmAlert = "\nAPI-SetCity: Invalid Characters"; if (typeof fnAlerts == "function") fnAlerts(); } } function _rcm_SetState(setValue) { var tstVal = !rcm_alphanum_pat.test(setValue); if (tstVal == true) { rcmCustomerData[0]["sta"] = setValue; } else { rcmAlert = "\nAPI-SetState: Invalid Characters"; if (typeof fnAlerts == "function") fnAlerts(); } } function _rcm_SetPostcode(setValue) { var tstVal = !rcm_alphanum_pat.test(setValue); if (tstVal == true) { rcmCustomerData[0]["pcd"] = setValue; } else { rcmAlert = "\nAPI-SetPostcode: Invalid Postal Code"; if (typeof fnAlerts == "function") fnAlerts(); } } function _rcm_SetCountry(setValue) { var tstVal = rcm_number.test(setValue); if (tstVal == true) { rcmCustomerData[0]["cnt"] = setValue; } else { rcmAlert = "\nAPI-SetCountry: Invalid ID needs to be a number"; if (typeof fnAlerts == "function") fnAlerts(); } } function _rcm_SetFax(setValue) { var tstVal = !rcm_alphanum_pat.test(setValue); if (tstVal == true) { rcmCustomerData[0]["fax"] = setValue; } else { rcmAlert = "\nAPI-SetFax: Invalid Fax number"; if (typeof fnAlerts == "function") fnAlerts(); } } function _rcm_SetFoundus(setValue) { var tstVal = rcm_number.test(setValue); if (tstVal == true) { rcmCustomerData[0]["fus"] = setValue; } else { rcmAlert = "\nAPI-SetFoundus: Invalid ID needs to be a number"; if (typeof fnAlerts == "function") fnAlerts(); } } function _rcm_SetRemarks(setValue) { var tstVal = !rcm_text.test(setValue); if (tstVal == true) { rcmCustomerData[0]["rmk"] = setValue; } else { rcmAlert = "\nAPI-SetRemarks: Invalid Characters"; if (typeof fnAlerts == "function") fnAlerts(); } } function _rcm_SetNoTraveling(setValue) { var tstVal = rcm_number.test(setValue); if (tstVal == true) { rcmCustomerData[0]["not"] = setValue; } else { rcmAlert = "\nAPI-SetNoTraveling: Invalid value needs to be a number"; if (typeof fnAlerts == "function") fnAlerts(); } } function _rcm_SetFlightNo(setValue) { var tstVal = !rcm_alphanum_pat.test(setValue); if (tstVal == true) { rcmCustomerData[0]["fln"] = setValue; } else { rcmAlert = "\nAPI-SetFlightNo: Invalid Characters"; if (typeof fnAlerts == "function") fnAlerts(); } } function _rcm_SetFlightNoOut(setValue) { var tstVal = !rcm_alphanum_pat.test(setValue); if (tstVal == true) { rcmCustomerData[0]["flo"] = setValue; } else { rcmAlert = "\nAPI-SetFlightNoOut: Invalid Characters"; if (typeof fnAlerts == "function") fnAlerts(); } } function _rcm_SetCollectionPoint(setValue) { var tstVal = !rcm_text.test(setValue); if (tstVal == true) { rcmCustomerData[0]["flc"] = setValue; } else { rcmAlert = "\nAPI-SetCollectionPoint: Invalid Characters"; if (typeof fnAlerts == "function") fnAlerts(); } } function _rcm_SetReturnPoint(setValue) { var tstVal = !rcm_text.test(setValue); if (tstVal == true) { rcmCustomerData[0]["flr"] = setValue; } else { rcmAlert = "\nAPI-SetReturnPoint: Invalid Characters"; if (typeof fnAlerts == "function") fnAlerts(); } } function _rcm_SetAreaOfUse(setValue) { var tstVal = rcm_number.test(setValue); if (tstVal == true) { rcmCustomerData[0]["aru"] = setValue; } else { rcmAlert = "\nAPI-SetAreaOfUse: Invalid ID needs to be a number"; if (typeof fnAlerts == "function") fnAlerts(); } } function _rcm_SetDateFormat(setValue) { if (setValue == 'd/m/Y' || setValue == 'm/d/Y') { rcmDateFormat = setValue; } else { rcmAlert = "\nAPI-SetDateFormat: Invalid date format (allowed: d/m/Y or m/d/Y)"; if (typeof fnAlerts == "function") fnAlerts(); } } function _rcm_GetFirstName() { return rcmCustomerData[0]["fnm"]; } function _rcm_GetLastName() { return rcmCustomerData[0]["lnm"]; } function _rcm_GetEmail() { return rcmCustomerData[0]["eml"]; } function _rcm_GetPhone() { return rcmCustomerData[0]["phn"]; } function _rcm_GetMobile() { return rcmCustomerData[0]["mob"]; } function _rcm_GetDOB() { return rcmCustomerData[0]["dob"]; } function _rcm_GetLicenseNo() { return rcmCustomerData[0]["lcn"]; } function _rcm_GetLicenseIssuedIn() { return rcmCustomerData[0]["lci"]; } function _rcm_GetLicenseExpires() { return rcmCustomerData[0]["lce"]; } function _rcm_GetAddress() { return rcmCustomerData[0]["adr"]; } function _rcm_GetCity() { return rcmCustomerData[0]["cty"]; } function _rcm_GetState() { return rcmCustomerData[0]["sta"]; } function _rcm_GetPostcode() { return rcmCustomerData[0]["pcd"]; } function _rcm_GetCountryID() { return rcmCustomerData[0]["cnt"]; } function _rcm_GetFax() { return rcmCustomerData[0]["fax"]; } function _rcm_GetFoundusID() { return rcmCustomerData[0]["fus"]; } function _rcm_GetRemarks() { return rcmCustomerData[0]["rmk"]; } function _rcm_GetNoTraveling() { return rcmCustomerData[0]["not"]; } function _rcm_GetFlightNo() { return rcmCustomerData[0]["fln"]; } function _rcm_GetFlightNoOut() { return rcmCustomerData[0]["flo"]; } function _rcm_GetCollectionPoint() { return rcmCustomerData[0]["flc"]; } function _rcm_GetReturnPoint() { return rcmCustomerData[0]["flr"]; } function _rcm_GetAreaOfUse() { return rcmCustomerData[0]["aru"]; } function _rcm_GetTax() { return rcmTaxRate; } function _rcm_GetStateTax() { return rcmStateTax; } function _rcm_GetSession() { return rcmSession; } function _rcm_GetDateFormat() { return rcmDateFormat; } function _rcm_GetInsurance() { return rcmSelInsurance; } function _rcm_GetExtraKms() { return rcmSelExtraKms; } function _rcm_GetUser(dob, email) { var Data = dob + "|" + email + "|" + new Date().getTime(); if (rcmAPIUrl != "" && rcmKey != "") { Data = rcmBase64.encode(Data); var uri = rcmAPIUrl + rcmKey + "/user/" + Data + '?apikey=' + rcmKey; var oHead = document.getElementsByTagName('HEAD').item(0); //Remove old script if it exists var chkScript = document.getElementById("rcmGetUserScript"); if (chkScript) { chkScript.parentNode.removeChild(chkScript); } var oScript = document.createElement("script"); oScript.type = "text/javascript"; oScript.setAttribute("id", "rcmGetUserScript"); oScript.src = uri; oHead.appendChild(oScript); } else { alert("No Host URL Info!"); } } function _rcm_GetURL(refno, objID) { rcmURLObjID = objID; var Data = refno + "|" + new Date().getTime(); if (rcmAPIUrl != "" && rcmKey != "") { Data = rcmBase64.encode(Data); var uri = rcmAPIUrl + rcmKey + "/geturl/" + Data + '?apikey=' + rcmKey; var oHead = document.getElementsByTagName('HEAD').item(0); //Remove old script if it exists var chkScript = document.getElementById("rcmGetURLScript"); if (chkScript) { chkScript.parentNode.removeChild(chkScript); } var oScript = document.createElement("script"); oScript.type = "text/javascript"; oScript.setAttribute("id", "rcmGetURLScript"); oScript.src = uri; oHead.appendChild(oScript); } else { alert("No Host URL Info!"); } } function _rcm_LoadLocationsList(objPickUp, objDropOff, objAge, valPickupID, valDropOffID, IntroPickUp, IntroDropOff) { var valAge = "9999"; var selPickUp = objPickUp.value; var selDropOff = objDropOff.value; var OldPickUpIndex = objPickUp.selectedIndex; var OldDropOffIndex = objDropOff.selectedIndex; if (objAge.selectedIndex >= 0 && rcm_number.test(objAge.options[objAge.selectedIndex].text)) valAge = objAge.options[objAge.selectedIndex].text; ClearList(objPickUp); ClearList(objDropOff); if (IntroPickUp !== undefined && IntroPickUp !== "") { objPickUp.options[objPickUp.options.length] = new Option(IntroPickUp, ""); objPickUp.options[objPickUp.options.length - 1].disabled = true; } if (IntroDropOff !== undefined && IntroDropOff !== "") { objDropOff.options[objDropOff.options.length] = new Option(IntroDropOff, ""); objDropOff.options[objDropOff.options.length - 1].disabled = true; } for (i in rcmLocationInfo) { if (rcmLocationInfo[i]["pickupavailable"] == "True" && rcmLocationInfo[i]["minimunage"] <= valAge) { objPickUp.options[objPickUp.options.length] = new Option(rcmLocationInfo[i]["location"], rcmLocationInfo[i]["id"]); if ((!valPickupID && rcmLocationInfo[i]["webdefault"] == "True") || (rcmLocationInfo[i]["id"]) == valPickupID) objPickUp.options[objPickUp.options.length - 1].selected = true; } if (rcmLocationInfo[i]["dropoffavailable"] == "True" && rcmLocationInfo[i]["minimunage"] <= valAge) { objDropOff.options[objDropOff.options.length] = new Option(rcmLocationInfo[i]["location"], rcmLocationInfo[i]["id"]); if ((!valDropOffID && rcmLocationInfo[i]["webdefault"] == "True") || (rcmLocationInfo[i]["id"]) == valDropOffID) objDropOff.options[objDropOff.options.length - 1].selected = true; } } if (rcm_number.test(selPickUp) && OldPickUpIndex >= 0) objPickUp.value = selPickUp; if (rcm_number.test(selDropOff) && OldDropOffIndex >= 0) objDropOff.value = selDropOff; if (typeof fnLocationChange == "function" && (OldPickUpIndex >= 0 || OldDropOffIndex >= 0)) { fnLocationChange(); } } function _rcm_LoadPickupList(obj, valPickupID, IntroItem) { var selObj; var OldIndex = obj.selectedIndex; if (OldIndex >= 0) selObj = obj.value; ClearList(obj); if (IntroItem !== undefined && IntroItem !== "") { obj.options[obj.options.length] = new Option(IntroItem, ""); obj.options[obj.options.length - 1].disabled = true; } for (i in rcmLocationInfo) { if (rcmLocationInfo[i]["pickupavailable"] == "True") { obj.options[obj.options.length] = new Option(rcmLocationInfo[i]["location"], rcmLocationInfo[i]["id"]); if ((!valPickupID && rcmLocationInfo[i]["webdefault"] == "True") || (rcmLocationInfo[i]["id"]) == valPickupID) obj.options[obj.options.length - 1].selected = true; } } //Remember last selection if (rcm_number.test(selObj) && OldIndex >= 0) obj.value = selObj; } function _rcm_LoadDropOffList(obj, valDropOffID, IntroItem) { var selObj; var OldIndex = obj.selectedIndex; if (OldIndex >= 0) selObj = obj.value; ClearList(obj); if (IntroItem !== undefined && IntroItem !== "") { obj.options[obj.options.length] = new Option(IntroItem, ""); obj.options[obj.options.length - 1].disabled = true; } for (i in rcmLocationInfo) { if (rcmLocationInfo[i]["dropoffavailable"] == "True") { obj.options[obj.options.length] = new Option(rcmLocationInfo[i]["location"], rcmLocationInfo[i]["id"]); if ((!valDropOffID && rcmLocationInfo[i]["webdefault"] == "True") || (rcmLocationInfo[i]["id"]) == valDropOffID) obj.options[obj.options.length - 1].selected = true; } } //Remember last selection if (rcm_number.test(selObj) && OldIndex >= 0) obj.value = selObj; } function _rcm_LoadAgeList(obj, valAge, IntroItem, selDefault) { var selObj; var bFoundDefault = false; var OldIndex = obj.selectedIndex; if (OldIndex >= 0) selObj = obj.value; ClearList(obj); if (selDefault === undefined) selDefault = true; if (IntroItem !== undefined && IntroItem !== "") { obj.options[obj.options.length] = new Option(IntroItem, ""); obj.options[obj.options.length - 1].disabled = true; } for (i in rcmDriverAgesInfo) { obj.options[obj.options.length] = new Option(rcmDriverAgesInfo[i]["driverage"], rcmDriverAgesInfo[i]["id"]); if (selDefault == true && rcmDriverAgesInfo[i]["defaultage"] == "True") { bFoundDefault = true; obj.options[obj.options.length - 1].selected = true; } } // In case we do not have default select last item in list if (bFoundDefault == false) obj.options[obj.options.length - 1].selected = true; //Remember last selection if (valAge > 0) obj.value = valAge; else if (rcm_number.test(selObj) && OldIndex >= 0) obj.value = selObj; } function _rcm_LoadRentalSource(obj, valRentalSource, IntroItem, selDefault) { var selObj; var OldIndex = obj.selectedIndex; if (OldIndex >= 0) selObj = obj.value; ClearList(obj); if (selDefault === undefined) selDefault = true; if (IntroItem !== undefined && IntroItem !== "") { obj.options[obj.options.length] = new Option(IntroItem, ""); obj.options[obj.options.length - 1].disabled = true; } for (i in rcmRentalSource) { obj.options[obj.options.length] = new Option(rcmRentalSource[i]["rentalsource"], rcmRentalSource[i]["id"]); if (selDefault == true && rcmRentalSource[i]["default"] == "True") obj.options[obj.options.length - 1].selected = true; } //Remember last selection if (valRentalSource > 0) obj.value = valRentalSource; else if (rcm_number.test(selObj) && OldIndex >= 0) obj.value = selObj; } function _rcm_LoadAreaOfUse(obj, valAreaOfUse, LocID, IntroItem, selDefault) { var selObj; var OldIndex = obj.selectedIndex; if (OldIndex >= 0) selObj = obj.value; ClearList(obj); if (selDefault === undefined) selDefault = true; if (IntroItem !== undefined && IntroItem !== "") { obj.options[obj.options.length] = new Option(IntroItem, ""); obj.options[obj.options.length - 1].disabled = true; } for (i in rcmAreaOfUse) { if (rcmAreaOfUse[i]["locationid"] == 0 || rcmAreaOfUse[i]["locationid"] == LocID) { obj.options[obj.options.length] = new Option(rcmAreaOfUse[i]["areaofused"], rcmAreaOfUse[i]["id"]); if (selDefault == true && rcmAreaOfUse[i]["defaulted"] == "True") obj.options[obj.options.length - 1].selected = true; } } //Remember last selection if (valAreaOfUse > 0) obj.value = valAreaOfUse; else if (rcm_number.test(selObj) && OldIndex >= 0) obj.value = selObj; } function _rcm_LoadCountries(obj, valCountries, IntroItem, selDefault) { var selObj; var OldIndex = obj.selectedIndex; if (OldIndex >= 0) selObj = obj.value; ClearList(obj); if (selDefault === undefined) selDefault = true; if (IntroItem !== undefined && IntroItem !== "") { obj.options[obj.options.length] = new Option(IntroItem, ""); obj.options[obj.options.length - 1].disabled = true; } for (i in rcmCountries) { obj.options[obj.options.length] = new Option(rcmCountries[i]["country"], rcmCountries[i]["id"]); if (selDefault == true && rcmCountries[i]["default"] == "True") obj.options[obj.options.length - 1].selected = true; } //Remember last selection if (valCountries > 0) obj.value = valCountries; else if (rcm_number.test(selObj) && OldIndex >= 0) obj.value = selObj; } function _rcm_LoadCategoryType(obj, valObj, IntroItem, selAll, txtAll) { var selObj; var OldIndex = obj.selectedIndex; if (OldIndex >= 0) selObj = obj.value; if (txtAll === undefined) txtAll = "*"; ClearList(obj); if (IntroItem !== undefined && IntroItem !== "") { obj.options[obj.options.length] = new Option(IntroItem, ""); obj.options[obj.options.length - 1].disabled = true; } if (selAll !== undefined && selAll == true) { if (txtAll === undefined || txtAll === "") txtAll = "All"; obj.options[obj.options.length] = new Option(txtAll, "0"); if (valObj == '0') obj.options[obj.options.length - 1].selected = true; } for (i in rcmCategoryTypeInfo) { obj.options[obj.options.length] = new Option(rcmCategoryTypeInfo[i]["categorytype"], rcmCategoryTypeInfo[i]["id"]); if (rcmCategoryTypeInfo[i]["id"] == valObj) obj.options[obj.options.length - 1].selected = true; } //Remember last selection in case valObj is not assigned if (!valObj && rcm_number.test(selObj) && OldIndex >= 0) obj.value = selObj; } function _rcm_DisplayTable(obj, arr) { var out = ""; for (var name in arr[0]) { out = out + ""; } out = out + ""; for (var i = 0; i < arr.length; ++i) { out = out + ""; for (var name in arr[i]) { out = out + ""; } out = out + ""; } out = out + "
" + [name] + "
" + arr[i][name] + "
"; obj.innerHTML = out; } function _rcm_GetNoticePeriod(LocID) { var retval = 0; for (i in rcmLocationInfo) { if (rcmLocationInfo[i]["id"] == LocID) { retval = parseFloat(rcmLocationInfo[i]["noticerequired"]); } } return retval; } function _rcm_GetAge(AgeID) { var retval = 0; for (i in rcmDriverAgesInfo) { if (rcmDriverAgesInfo[i]["id"] == AgeID) { retval = rcmDriverAgesInfo[i]["driverage"]; } } return retval; } function _rcm_GetAgeID(Age) { var retval = 0; for (i in rcmDriverAgesInfo) { if (rcmDriverAgesInfo[i]["driverage"] === Age) { retval = rcmDriverAgesInfo[i]["id"]; } } return retval; } function _rcm_GetCountry(CountryID) { var retval = ""; for (i in rcmCountries) { if (rcmCountries[i]["id"] == CountryID) { retval = rcmCountries[i]["country"]; } } return retval; } function _rcm_GetCategoryType(CategoryTypeID) { var retval = ""; for (i in rcmCategoryTypeInfo) { if (rcmCategoryTypeInfo[i]["id"] == CategoryTypeID) { retval = rcmCategoryTypeInfo[i]["categorytype"]; } } return retval; } function _rcm_ReservationRef() { return rcmReservationRef; } function _rcm_ReservationNo() { return rcmReservationNo; } function _rcm_CheckLocationAvailable() { var retval = ""; for (i in rcmLocationFees) { if (rcmLocationFees[i]["tstavailable"] == '0') { retval = retval + " " + rcmLocationFees[i]["availablemsg"]; } } return retval; } function _rcm_CheckCustomerDataOK() { return rcmCustomerDataOK; } function _rcm_CheckPaymentSaved() { return rcmPaymentSaved; } function _rcm_OfficeOpen(LocID, dw) { var retval = "99:99"; for (i in rcmOfficeTimes) { if (rcmOfficeTimes[i]["locid"] == LocID) { if (rcmOfficeTimes[i]["wd"] == dw) { retval = rcmOfficeTimes[i]["openingtime"]; } } } if (retval == "99:99") { for (i in rcmLocationInfo) { if (rcmLocationInfo[i]["dropoffavailable"] == "True" || rcmLocationInfo[i]["pickupavailable"] == "True") { if (rcmLocationInfo[i]["id"] == LocID) { retval = rcmLocationInfo[i]["officeopeningtime"]; } } } } if (retval == "99:99") retval = "00:00"; return retval; } function _rcm_OfficeClose(LocID, dw) { var retval = "99:99"; for (i in rcmOfficeTimes) { if (rcmOfficeTimes[i]["locid"] == LocID) { if (rcmOfficeTimes[i]["wd"] == dw) { retval = rcmOfficeTimes[i]["closingtime"]; } } } if (retval == "99:99") { for (i in rcmLocationInfo) { if (rcmLocationInfo[i]["dropoffavailable"] == "True" || rcmLocationInfo[i]["pickupavailable"] == "True") { if (rcmLocationInfo[i]["id"] == LocID) { retval = rcmLocationInfo[i]["officeclosingtime"]; } } } } if (retval == "99:99") retval = "24:00"; return retval; } function _rcm_MinTimePickup(LocID, dw) { var retval = "99:99"; for (i in rcmOfficeTimes) { if (rcmOfficeTimes[i]["locid"] == LocID) { if (rcmOfficeTimes[i]["wd"] == dw) { retval = rcmOfficeTimes[i]["startpickup"]; } } } if (retval == "99:99") { for (i in rcmLocationInfo) { if (rcmLocationInfo[i]["pickupavailable"] == "True") { if (rcmLocationInfo[i]["id"] == LocID && rcmLocationInfo[i]["afterhourbooking"] == "False") { retval = rcmLocationInfo[i]["officeopeningtime"]; } } } } if (retval == "99:99") retval = "00:00"; return retval; } function _rcm_MinTimeDropOff(LocID, dw) { var retval = "99:99"; for (i in rcmOfficeTimes) { if (rcmOfficeTimes[i]["locid"] == LocID) { if (rcmOfficeTimes[i]["wd"] == dw) { retval = rcmOfficeTimes[i]["startdropoff"]; } } } if (retval == "99:99") { for (i in rcmLocationInfo) { if (rcmLocationInfo[i]["dropoffavailable"] == "True") { if (rcmLocationInfo[i]["id"] == LocID && rcmLocationInfo[i]["afterhourbooking"] == "False" && rcmLocationInfo[i]["unattendeddropoffs"] == "False") { retval = rcmLocationInfo[i]["officeopeningtime"]; } } } } if (retval == "99:99") retval = "00:00"; return retval; } function _rcm_MaxTimePickup(LocID, dw) { var retval = "99:99"; for (i in rcmOfficeTimes) { if (rcmOfficeTimes[i]["locid"] == LocID) { if (rcmOfficeTimes[i]["wd"] == dw) { if (rcmOfficeTimes[i]["endpickup"] != "00:00") retval = rcmOfficeTimes[i]["endpickup"]; } } } if (retval == "99:99") { for (i in rcmLocationInfo) { if (rcmLocationInfo[i]["pickupavailable"] == "True") { if (rcmLocationInfo[i]["id"] == LocID && rcmLocationInfo[i]["afterhourbooking"] == "False") { if (rcmLocationInfo[i]["officeclosingtime"] != "00:00") retval = rcmLocationInfo[i]["officeclosingtime"]; } } } } if (retval == "99:99") retval = "24:00"; return retval; } function _rcm_MaxTimeDropOff(LocID, dw) { var retval = "99:99"; for (i in rcmOfficeTimes) { if (rcmOfficeTimes[i]["locid"] == LocID) { if (rcmOfficeTimes[i]["wd"] == dw) { if (rcmOfficeTimes[i]["enddropoff"] != "00:00") retval = rcmOfficeTimes[i]["enddropoff"]; } } } if (retval == "99:99") { for (i in rcmLocationInfo) { if (rcmLocationInfo[i]["dropoffavailable"] == "True") { if (rcmLocationInfo[i]["id"] == LocID && rcmLocationInfo[i]["afterhourbooking"] == "False" && rcmLocationInfo[i]["unattendeddropoffs"] == "False") { if (rcmLocationInfo[i]["officeclosingtime"] != "00:00") retval = rcmLocationInfo[i]["officeclosingtime"]; } } } } if (retval == "99:99") retval = "24:00"; return retval; } function _rcm_MinBookingDay(LocID) { var retval = 0; for (i in rcmLocationInfo) { if (rcmLocationInfo[i]["id"] == LocID) { retval = rcmLocationInfo[i]["minbookingday"]; } } return retval; } // Assigned Function Calls function _rcm_OnReady(fnCall) { if (typeof fnCall == "function" && fnCallBack == null) { fnCallBack = fnCall; } } function _rcm_OnReadyStep1(fnCall) { if (typeof fnCall == "function" && fnCallBackStep1 == null) { fnCallBackStep1 = fnCall; } } function _rcm_OnReadyStep2(fnCall) { if (typeof fnCall == "function" && fnCallBackStep2 == null) { fnCallBackStep2 = fnCall; } } function _rcm_OnReadyStep3(fnCall) { if (typeof fnCall == "function" && fnCallBackStep3 == null) { fnCallBackStep3 = fnCall; } } function _rcm_OnReadyCancelReasons(fnCall) { if (typeof fnCall == "function" && fnCallBackCancelReasons == null) { fnCallBackCancelReasons = fnCall; } } function _rcm_OnCancelDone(fnCall) { if (typeof fnCall == "function" && fnCallCancelDone == null) { fnCallCancelDone = fnCall; } } function _rcm_OnReadyWebItems(fnCall) { if (typeof fnCall == "function" && fnCallBackWebItems == null) { fnCallBackWebItems = fnCall; } } function _rcm_OnBookingDone(fnCall) { if (typeof fnCall == "function" && fnCallBookingDone == null) { fnCallBookingDone = fnCall; } } function _rcm_OnPaymentDone(fnCall) { if (typeof fnCall == "function" && fnCallPaymentDone == null) { fnCallPaymentDone = fnCall; } } function _rcm_OnReadyGetUser(fnCall) { if (typeof fnCall == "function" && fnCallBackGetUser == null) { fnCallBackGetUser = fnCall; } } function _rcm_OnReadyGetURL(fnCall) { if (typeof fnCall == "function" && fnCallBackGetURL == null) { fnCallBackGetURL = fnCall; } } function _rcm_OnReadyGetBookingInfo(fnCall) { if (typeof fnCall == "function" && fnCallBackBookingInfo == null) { fnCallBackBookingInfo = fnCall; } } function _rcm_OnLocationChange(fnCall) { if (typeof fnCall == "function" && fnLocationChange == null) { fnLocationChange = fnCall; } } function _rcm_OnReadyGetLocationDetails(fnCall) { if (typeof fnCall == "function" && fnCallBackLocationDetails == null) { fnCallBackLocationDetails = fnCall; } } function _rcm_OnReadyGetAgentBookings(fnCall) { if (typeof fnCall == "function" && fnCallBackAgentBookings == null) { fnCallBackAgentBookings = fnCall; } } function _rcm_OnReadySendEmail(fnCall) { if (typeof fnCall == "function" && fnCallBackSendEmail == null) { fnCallBackSendEmail = fnCall; } } function _rcm_OnReadyExtraDriver(fnCall) { if (typeof fnCall == "function" && fnCallBackExtraDriver == null) { fnCallBackExtraDriver = fnCall; } } function _rcm_OnAlerts(fnCall) { if (typeof fnCall == "function" && fnAlerts == null) { fnAlerts = fnCall; } } //General Function function ClearList(obj) { while (obj.options.length > 0) { obj.remove(0); } } } function rcmStep1Ready(pErr, pMsg, pDbg) { rcmErr = pErr; rcmMsg = pMsg; rcmDebug = pDbg; if (typeof fnCallBackStep1 == "function") { fnCallBackStep1(); } else if (typeof fnCallBack == "function") { fnCallBack(); } } function rcmStep2Ready(pErr, pMsg, pDbg) { rcmErr = pErr; rcmMsg = pMsg; rcmDebug = pDbg; if (typeof fnCallBackStep2 == "function") { fnCallBackStep2(); } else if (typeof fnCallBack == "function") { fnCallBack(); } } function rcmStep3Ready(pErr, pMsg, pDbg) { rcmErr = pErr; rcmMsg = pMsg; rcmDebug = pDbg; if (typeof fnCallBackStep3 == "function") { fnCallBackStep3(); } else if (typeof fnCallBack == "function") { fnCallBack(); } } function rcmCancelReasonsReady(pErr, pMsg, pDbg) { rcmErr = pErr; rcmMsg = pMsg; rcmDebug = pDbg; if (typeof fnCallBackCancelReasons == "function") { fnCallBackCancelReasons(); } else if (typeof fnCallBack == "function") { fnCallBack(); } } function rcmCancelReady(pErr, pMsg, pDbg) { rcmErr = pErr; rcmMsg = pMsg; rcmDebug = pDbg; if (typeof fnCallCancelDone == "function") { fnCallCancelDone(); } else if (typeof fnCallBack == "function") { fnCallBack(); } } function rcmWebItemsReady(pErr, pMsg, pDbg) { rcmErr = pErr; rcmMsg = pMsg; rcmDebug = pDbg; if (typeof fnCallBackWebItems == "function") { fnCallBackWebItems(); } else if (typeof fnCallBack == "function") { fnCallBack(); } } function rcmBookingReady(pErr, pMsg, pDbg) { rcmErr = pErr; rcmMsg = pMsg; rcmDebug = pDbg; if (typeof fnCallBookingDone == "function") { fnCallBookingDone(); } else if (typeof fnCallBack == "function") { fnCallBack(); } } function rcmPaymentReady(pErr, pMsg, pDbg) { rcmErr = pErr; rcmMsg = pMsg; rcmDebug = pDbg; if (typeof fnCallPaymentDone == "function") { fnCallPaymentDone(); } else if (typeof fnCallBack == "function") { fnCallBack(); } } function rcmGetUserReady(pErr, pMsg, pDbg) { rcmErr = pErr; rcmMsg = pMsg; rcmDebug = pDbg; if (typeof fnCallBackGetUser == "function") { fnCallBackGetUser(); } else if (typeof fnCallBack == "function") { fnCallBack(); } } function rcmGetURLReady(pErr, pMsg, pDbg) { rcmErr = pErr; rcmMsg = pMsg; rcmDebug = pDbg; var surl = rcmBase64.decode(rcmURL); if (document.getElementById(rcmURLObjID)) { document.getElementById(rcmURLObjID).src = surl; } if (typeof fnCallBackGetURL == "function") { fnCallBackGetURL(); } else if (typeof fnCallBack == "function") { fnCallBack(); } } function rcmBookingInfoReady(pErr, pMsg, pDbg) { rcmErr = pErr; rcmMsg = pMsg; rcmDebug = pDbg; if (typeof fnCallBackBookingInfo == "function") { fnCallBackBookingInfo(); } else if (typeof fnCallBack == "function") { fnCallBack(); } } function rcmLocationDetailsReady(pErr, pMsg, pDbg) { rcmErr = pErr; rcmMsg = pMsg; rcmDebug = pDbg; if (typeof fnCallBackLocationDetails == "function") { fnCallBackLocationDetails(); } else if (typeof fnCallBack == "function") { fnCallBack(); } } function rcmAgentBookingsReady(pErr, pMsg, pDbg) { rcmErr = pErr; rcmMsg = pMsg; rcmDebug = pDbg; if (typeof fnCallBackAgentBookings == "function") { fnCallBackAgentBookings(); } else if (typeof fnCallBack == "function") { fnCallBack(); } } function rcmSendEmailReady(pErr, pMsg, pDbg) { rcmErr = pErr; rcmMsg = pMsg; rcmDebug = pDbg; if (typeof fnCallBackSendEmail == "function") { fnCallBackSendEmail(); } else if (typeof fnCallBack == "function") { fnCallBack(); } } function rcmExtraDriverReady(pErr, pMsg, pDbg) { rcmErr = pErr; rcmMsg = pMsg; rcmDebug = pDbg; if (typeof fnCallBackExtraDriver == "function") { fnCallBackExtraDriver(); } else if (typeof fnCallBack == "function") { fnCallBack(); } } function SetDebugInfo(pErr, pMsg, pDbg) { rcmErr = pErr; rcmMsg = pMsg; rcmDebug = pDbg; if (typeof fnCallBack == "function") { fnCallBack(); } } var rcmBase64 = { _keyStr: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=", encode: function (input) { var output = ""; var chr1, chr2, chr3, enc1, enc2, enc3, enc4; var i = 0; input = rcmBase64._utf8_encode(input); while (i < input.length) { chr1 = input.charCodeAt(i++); chr2 = input.charCodeAt(i++); chr3 = input.charCodeAt(i++); enc1 = chr1 >> 2; enc2 = ((chr1 & 3) << 4) | (chr2 >> 4); enc3 = ((chr2 & 15) << 2) | (chr3 >> 6); enc4 = chr3 & 63; if (isNaN(chr2)) { enc3 = enc4 = 64; } else if (isNaN(chr3)) { enc4 = 64; } output = output + this._keyStr.charAt(enc1) + this._keyStr.charAt(enc2) + this._keyStr.charAt(enc3) + this._keyStr.charAt(enc4); } return output; }, decode: function (input) { var output = ""; var chr1, chr2, chr3; var enc1, enc2, enc3, enc4; var i = 0; input = input.replace(/[^A-Za-z0-9\+\/\=]/g, ""); while (i < input.length) { enc1 = this._keyStr.indexOf(input.charAt(i++)); enc2 = this._keyStr.indexOf(input.charAt(i++)); enc3 = this._keyStr.indexOf(input.charAt(i++)); enc4 = this._keyStr.indexOf(input.charAt(i++)); chr1 = (enc1 << 2) | (enc2 >> 4); chr2 = ((enc2 & 15) << 4) | (enc3 >> 2); chr3 = ((enc3 & 3) << 6) | enc4; output = output + String.fromCharCode(chr1); if (enc3 != 64) { output = output + String.fromCharCode(chr2); } if (enc4 != 64) { output = output + String.fromCharCode(chr3); } } output = rcmBase64._utf8_decode(output); return output; }, _utf8_encode: function (string) { string = string.replace(/\r\n/g, "\n"); var utftext = ""; for (var n = 0; n < string.length; n++) { var c = string.charCodeAt(n); if (c < 128) { utftext += String.fromCharCode(c); } else if ((c > 127) && (c < 2048)) { utftext += String.fromCharCode((c >> 6) | 192); utftext += String.fromCharCode((c & 63) | 128); } else { utftext += String.fromCharCode((c >> 12) | 224); utftext += String.fromCharCode(((c >> 6) & 63) | 128); utftext += String.fromCharCode((c & 63) | 128); } } return utftext; }, _utf8_decode: function (utftext) { var string = ""; var i = 0; var c = c1 = c2 = 0; while (i < utftext.length) { c = utftext.charCodeAt(i); if (c < 128) { string += String.fromCharCode(c); i++; } else if ((c > 191) && (c < 224)) { c2 = utftext.charCodeAt(i + 1); string += String.fromCharCode(((c & 31) << 6) | (c2 & 63)); i += 2; } else { c2 = utftext.charCodeAt(i + 1); c3 = utftext.charCodeAt(i + 2); string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63)); i += 3; } } return string; } }; function rcmGetdate(offset) { if (!offset) offset = 0; var dd = new Date(); if (offset > 0) dd.setDate(dd.getDate() + offset); var yyyy = dd.getFullYear().toString(); var mm = (dd.getMonth() + 1).toString(); var dd = dd.getDate().toString(); return '' + (dd[1] ? dd : "0" + dd[0]) + '/' + (mm[1] ? mm : "0" + mm[0]) + '/' + yyyy; } function rcmGetDW(ds, format) { var dd = Date.parseDate(ds, format); return dd.getDay() + 1; } function rcmStrToDate(ds, format) { var dd = Date.parseDate(ds, format); return dd; } function rcmDayDiff(objname1, objname2, format) { var dd1 = rcmStrToDate(document.getElementById(objname1).value, format); var dd2 = rcmStrToDate(document.getElementById(objname2).value, format); var retval = (dd1 - dd2) / (1000 * 60 * 60 * 24); return retval; } function rcmIsJsonString(str) { try { JSON.parse(str); } catch (e) { return false; } return true; } function rcmStrOut(strval, slen) { var retval = strval; if (strval !== undefined) { retval = retval.replace(rcm_text, '').replace(/,/g, ".").replace(/(?:\r\n|\r|\n)/g, ' ').replace(/\t/g, ' '); //console.log('rcmStrOut IN:', strval); if (slen !== undefined) { if (rcm_number.test(retval) == false) { //retval = retval.replace(/,/g, "."); if (retval.length > slen) retval = retval.substring(0, slen); } } } //console.log('rcmStrOut OUT:', retval); return retval; } function rcmValidatedate(chkdate) { /* KDuncan 23/03/2016 old function replaced because errors */ var retval = false; if (chkdate.length != 10) { retval = false; } else { //1. check for d/m/y var parts = chkdate.split('/'); if (parts.length != 3) { //2. check for d-m-y parts = chkdate.split('-'); } if (parts.length == 3) { //special rule for month - make sure it's not > 12 var month = Number(parts[1]); if (month > 12) { retval = false; } else { // new Date(year, month , day) // Note: months are 0-based so subtract 1 var tstDate = new Date(parts[2], (month - 1), parts[0]); if (tstDate.toString() == "NaN" || tstDate.toString() == "Invalid Date" || tstDate.toString() == "0") { retval = false; } else { retval = true; } } } else { retval = false; } } return retval; } function rcmGetOptStr() { var retVal = ""; for (j in rcmSelOptionalFees) { if (retVal == "") retVal = rcmSelOptionalFees[j]["id"] + ":" + rcmSelOptionalFees[j]["qty"]; else retVal = retVal + "," + rcmSelOptionalFees[j]["id"] + ":" + rcmSelOptionalFees[j]["qty"]; } return retVal; }