//This file includes all the common validation methods and other common scripts //Email Validation allows '+' sign as well // !Important Note: // this file is used for ViewerLite as well // If any change in this file then has to be updated into UI Master WebViewer code. // UI Master WebViewer code Project Link: https://coderepo.idriveians.com/davmanager/webviewer/rpcwebviewer.git var nexus_state_map = {"country":"United States of America","state":"Alabama","zip":""}; function getRedirectAbsoluteURL(url) { if (typeof product_name == 'undefined' || product_name == PRODUCT_RPC || product_name == PRODUCT_MEETING) { if (url.startsWith("https://www.remotepc.com")) { url = url.replace("https://www.remotepc.com", ""); } if (url.startsWith("https://app.remotepc.com")) { url = url.replace("https://app.remotepc.com", ""); } if (url.startsWith("https://login.remotepc.com")) { url = url.replace("https://login.remotepc.com", ""); } return "https://" + REMOTEPC_LOGIN_DOMAIN_NAME + url; } return url; } function getWEBAPPAPIAbsoluteURL(url) { if (typeof product_name == 'undefined' || product_name == PRODUCT_RPC || product_name == PRODUCT_MEETING) { if (url.startsWith("https://www.remotepc.com")) { url = url.replace("https://www.remotepc.com", ""); } if (url.startsWith("https://app.remotepc.com")) { url = url.replace("https://app.remotepc.com", ""); } if (url.startsWith("https://login.remotepc.com")) { url = url.replace("https://login.remotepc.com", ""); } if (!url.startsWith(appContexName)) { if (url.startsWith(".")) { url = url.replace(".", ''); } url= appContexName + url } return "https://" + REMOTEPC_WEBAPP_API_DOMAIN_NAME + url; } return url; } function isValidEmail(valEmail) { var filter = /^([\w-\.+]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,25}|[0-9]{1,3})(\]?)$/; if (valEmail.length <=80 && filter.test(valEmail)) { return true; } else { return false; } } function isValidName(valName) { var filter = /^[a-zA-Z-\s]{1,50}$/; if(filter.test(valName)) { return true; } else{ return false; } } // Code to find first letter of a username . Irrespective of username started with number or letter. function findingFirstLetterOfUsername(username){ var unameFirstLetter = ""; /* if(username.charAt(0) >= 0){ var len = username.length; for(var i = 0; i< len; i++){ if(username.charAt(i) >= 0){} else{ unameFirstLetter= username.charAt(i); break; } } }else { unameFirstLetter = username.charAt(0); } if(unameFirstLetter != "" && typeof unameFirstLetter != 'undefined'){ unameFirstLetter = unameFirstLetter.toLowerCase(); }*/ return username.charAt(0).toLowerCase(); } function isValidUser(valUser) { var filter = /^[a-z0-9_]{4,20}$/; if(filter.test(valUser)) { return true; } else{ return false; } } function isValidCompany(valCompany) { var filter = /^[a-zA-Z0-9-\s]{1,50}$/; if(filter.test(valCompany)) { return true; } else{ return false; } } function isValidPhone(valPhone) { var filter = /^[xX0-9-+()]{1,20}$/; if(filter.test(valPhone)) { return true; } else { return false; } } function isValidCCNum(valCC) { var filter = /^[0-9]{14,16}$/; if(filter.test(valCC)) { return true; } else { return false; } } // 10072019 - webviewer settings inactivity time changes function isValidNum(evt) { evt = (evt) ? evt : window.event; var charCode = (evt.which) ? evt.which : evt.keyCode; if (charCode > 31 && (charCode < 48 || charCode > 57)) { return false; } return true; } function isValidSavedCCNum(valCC) { var filter = /^[0-9*]{14,16}$/; if(filter.test(valCC)) { return true; } else { return false; } } function isValidCVV(valCVV) { var filter = /^[0-9]{3,4}$/; if(filter.test(valCVV)) { return true; } else { return false; } } function isValidAddress(valAdd) { //cannot contain single quotes, double quotes or backward slash //var filter = /[\\'"]/; var filter = /[\\"]/; if(!(filter.test(valAdd))) { return true; } else { return false; } } function isValidPasswordString(Str) { var filter = /[:\s\\]/; if(!(filter.test(Str))) return(true); else return false; } function readableNumberFormat(number){ var parts = number.toString().split("."); if(parts.length >1){ if(parts[1].length ==1){ parts[1] = parts[1]+"0"; } }else{ parts[1] = "00"; } parts[0] = parts[0].replace(/\B(?=(\d{3})+(?!\d))/g, ","); var readableNumber = parts[0]+"."+parts[1]; return readableNumber; } function isValidZip(valZip){ var filter = /^[a-zA-Z0-9-_\s]{1,20}$/; if(filter.test(valZip)) { return true; } else { return false; } } function isValidHost(valHost) { var filter = /^[0-9]*$/; if(filter.test(valHost)) { return true; } else { return false; } } /*function isValidCity(valCity){ var filter = /^[a-zA-Z0-9 _-.]*$/; if(filter.test(valCity)) { return true; } else { return false; } }*/ function isBlank(val) { if(val.trim().length == 0) return true; else return false; } /*function getLoginCookie() { //get all the cookies var cookies = document.cookie.split(';'); var cookieName = []; // contains name of all the cookies for(var i=0;i-1)) { window.location.href = LOGOUT; } } */ //to get the browser name and version function get_browser_info(){ var ua=navigator.userAgent,tem,M=ua.match(/(opera|chrome|safari|firefox|msie|trident(?=\/))\/?\s*(\d+)/i) || []; if(/trident/i.test(M[1])){ tem=/\brv[ :]+(\d+)/g.exec(ua) || []; return {name:'IE',version:(tem[1]||'')}; } if (/Edge/.test(navigator.userAgent)) { tem=ua.match(/\bOPR|Edge\/(\d+)/); if(tem!=null) {return {name:'Edge', version:tem[1]};} } if(M[1]==='Chrome'){ tem=ua.match(/\bOPR|Edge\/(\d+)/); if(tem!=null) {return {name:'Opera', version:tem[1]};} } M=M[2]? [M[1], M[2]]: [navigator.appName, navigator.appVersion, '-?']; if((tem=ua.match(/version\/(\d+)/i))!=null) {M.splice(1,1,tem[1]);} return { name: M[0], version: M[1] }; } var isMobile = { Windows: function() { return /IEMobile/i.test(navigator.userAgent); }, Android: function() { return /Android/i.test(navigator.userAgent); }, BlackBerry: function() { return /BlackBerry/i.test(navigator.userAgent); }, iOS: function() { if (/iPhone|iPad|iPod/i.test(navigator.userAgent)) { return true; } else { return navigator.maxTouchPoints && navigator.maxTouchPoints > 2 && /MacIntel/.test(navigator.platform); } }, any: function() { return (isMobile.Android() || isMobile.BlackBerry() || isMobile.iOS() || isMobile.Windows()); } }; $.urlParam = function(name){ var results = new RegExp('[\?&]' + name + '=([^&#]*)').exec(window.location.href); if(results != null){ return results[1]; }else { return 0; } }; function showCommonSuccMsg(displayText) { $('#notify_succ').show().find('#commonSuccesMsg').text(displayText).show(); //$(window).scrollTop(0); setTimeout(function() { $('#notify_succ').fadeOut(); }, 5000); } function showCommonErrMsg(displayText) { var timeVal = 5000; $('#notify_err').show().find('#commonErrorMsg').html(displayText).show(); //$(window).scrollTop(0); if(displayText.trim().length > 150){ timeVal = 20000; } setTimeout(function() { $('#notify_err').fadeOut(); }, timeVal); } function showCommonAlertMsg(displayText) { $('#notify_alert').show().find('#commonAlertMsg').text(displayText).show(); //$(window).scrollTop(0); setTimeout(function() { $('#notify_alert').fadeOut(); }, 5000); } function dateTimeFormatter(dateObjVal) { var dateObj = dateObjVal.replace(/-/g,"/"); dateObj = new Date(dateObj); var dateObjString = dateObj.toString(); var date = dateObjString.substring(4,15); var formattedDate = date.substring(0,6) + ", " + date.substring(7,11); var time = dateObj.toLocaleTimeString(); if(time[1] === ":") time = "0" + time; var displayDateTime = formattedDate + " " +time; return displayDateTime; } function dateTimeObjFormatter(dateObjVal) { dateObjVal = dateObjVal.split('.')[0]; var dateObj = dateObjVal.replace(/-/g,"/"); dateObj = new Date(dateObj).addHours(-8); var dateObjString = dateObj.toString(); var date = dateObjString.substring(4,15); var formattedDate = date.substring(0,6) + ", " + date.substring(7,11); var time = dateObj.toLocaleTimeString().replace("IST","").trim().toUpperCase(); if(time[1] === ":") time = "0" + time; var displayDateTime = formattedDate + " " +time; return displayDateTime; } Date.prototype.addHours= function(h){ this.setHours(this.getHours()+h); return this; } jQuery.fn.jsHTMLSanitizer = function(data) { function urlX(url) { if(/^https?:\/\//.test(url)) { return url; }} function idX(id) { return id; } return(html_sanitize(data, urlX, idX)); }; jQuery.fn.RemoveHTMLTags = function(html) { var regX = /(<([^>]+)>)/ig; return html.replace(regX, "").trim(); } function popupInitiate(a){ $("body").addClass('ovHide'); var cls = "#"+ a; var clschild = $(cls).find(".modalCont").height(); // var modalHeight = $('.modalCont').height(); var modalMargin = clschild / 2; var modalFin = "-" + modalMargin; $(cls).find(".modalCont").css('margin-top', parseInt(modalFin)); } //Find the element in the Viewport function findElementInViewport(log_el) { var top = log_el.offsetTop; var left = log_el.offsetLeft; var width = log_el.offsetWidth; var height = log_el.offsetHeight; while(log_el.offsetParent) { log_el = log_el.offsetParent; top += log_el.offsetTop; left += log_el.offsetLeft; } return ( top < (window.pageYOffset + window.innerHeight) && left < (window.pageXOffset + window.innerWidth) && (top + height) > window.pageYOffset && (left + width) > window.pageXOffset ); } //Create a date range of a week. function convertToWeek(){ var dateArr = []; var today = new Date(); var dd = today.getDate(); var mm = today.getMonth()+1; //January is 0! var yyyy = today.getFullYear(); var oldDate = new Date(); oldDate.setDate(oldDate.getDate() - 7); var oldDay = oldDate.getDate(); var oldMonth = oldDate.getMonth()+1; //January is 0! var oldyyyy = oldDate.getFullYear(); var todate = ""; var fromdate = ""; if(dd<10) { dd='0'+dd } if(mm<10) { mm='0'+mm } todate = mm+'-'+dd+'-'+yyyy; if(oldDay<10) { oldDay='0'+oldDay } if(oldMonth<10) { oldMonth='0'+oldMonth } fromdate = oldMonth+'-'+oldDay+'-'+oldyyyy; dateArr[0] = oldMonth+'-'+oldDay+'-'+oldyyyy; dateArr[1] = mm+'-'+dd+'-'+yyyy; dateArr[2] = oldDay+'-'+oldMonth+'-'+oldyyyy; dateArr[3] = dd+'-'+mm+'-'+yyyy; $("#fromdate").val(fromdate); $("#todate").val(todate); return dateArr; } //Funtion will convert date to YY-MM-DD function convertDateToYYMMDD(fromdate,todate){ var fromdateArr = fromdate.split("-"); var todateArr = todate.split("-"); var dateArr = []; var formdateLen = fromdateArr.length; var todateLen = todateArr.length; var formdate = ""; var todate = ""; for(var i= formdateLen-1; i>=0 ; i--){ if(i>=1){ formdate += fromdateArr[i]+"-"; } else{ formdate += fromdateArr[i]; } } for(var j= todateLen-1; j>=0 ; j--){ if(j>=1){ todate += todateArr[j]+"-"; } else{ todate += todateArr[j]; } } dateArr[0] =formdate; dateArr[1] =todate return dateArr; } // TO convert UTC Date to current time-zone time stamp. function convertUTCDateToTimeStamp(date){ var date = new Date (date); var localOffset = date.getTimezoneOffset() * 60000; var localTime = date.getTime(); var timestamp = localTime - localOffset; return timestamp; } //Generate Redable date format. function generateRedableDateFormat(timestamp, time_format_type){ var redableDate =""; var currentDate = (new Date(timestamp)); var localTime = currentDate.toLocaleTimeString(); var localDate = currentDate.toDateString().substring(4);; var currentHours = currentDate.getHours(); //var hours = (currentHours + 24 - 2) % 24; /*var am_pm = ""; // get am/pm if(currentHours >= 12){ am_pm = 'PM'; }else{ am_pm = hours < 12 ? 'AM' : 'PM'; }*/ //Fixed for FireFox && IE issues. //const TWENTY_FOUR_HR_TIME_FORMAT_FLAG = time_format_type ? time_format_type == 1 : true; //if(TWENTY_FOUR_HR_TIME_FORMAT_FLAG && ( localTime.toLocaleUpperCase().indexOf("PM")!= -1 || localTime.toLocaleUpperCase().indexOf("AM")!= -1)){ if(time_format_type== 24 && (localTime.toLocaleUpperCase().indexOf("PM")!= -1 || localTime.toLocaleUpperCase().indexOf("AM")!= -1)){ var datetimeArr = localTime.split(":"); localTime = currentHours + ":"+datetimeArr[1]+":"+datetimeArr[2]; redableDate = localDate +","+ " " +localTime.substring(0,localTime.length-3); // Remove "GM" from the date string. if(redableDate.indexOf("GM") != -1){ redableDate = redableDate.replace("GM","").trim(); } }else { redableDate = localDate +","+ " " +localTime.toLocaleUpperCase(); } if(time_format_type==12){ let dateTime = new Date(redableDate); // Extract individual date components let month = dateTime.toLocaleString('default', { month: 'short' }); let day = dateTime.getDate(); let year = dateTime.getFullYear(); let hours = dateTime.getHours(); let minutes = dateTime.getMinutes(); let seconds = dateTime.getSeconds(); let amPM = hours >= 12 ? 'PM' : 'AM'; // Convert hours to 12-hour format hours = hours % 12; hours = hours ? hours : 12; // Handle midnight (12 AM) // Format the date-time to 12-hour format let formattedDateTime = `${month} ${day} ${year}, ${hours}:${padZero(minutes)}:${padZero(seconds)} ${amPM}`; return formattedDateTime; } return redableDate; } function padZero(number) { return (number < 10 ? '0' : '') + number; } //tooltip var toolTip = '

'; var delay=1000; $("body").on('mouseover', ".rpc_tooltip", function(e){ if ($(this).hasClass('disable')) { return; } var v = $(this).attr('text'); var left = e.pageX-13; var top = e.pageY; $('body').append(toolTip); $('.rpc_tooltip_body p').text(v); $('.rpc_tooltip_body').css({'display': 'block', 'left': left, 'top': top - $('.rpc_tooltip_body').height()-30}); $('.rpc_tooltip_body span').css({'top': $('.rpc_tooltip_body').height()+10}); }).on('mousemove', ".rpc_tooltip", function(e){ var left = e.pageX-13; var top = e.pageY; $('.rpc_tooltip_body').css({'display': 'block', 'left': left, 'top': top - $('.rpc_tooltip_body').height()-30}); }).on('mouseout', ".rpc_tooltip", function(e){ $('.rpc_tooltip_body').remove(); }); function calculatePriorDate(days){ var date = new Date(); var last = new Date(date.getTime() - (days * 24 * 60 * 60 * 1000)); var day =last.getDate(); var month=last.getMonth()+1; var year=last.getFullYear(); var priorDateObj = { day: day, month: month, year:year }; return priorDateObj; } function onCaptchaError (){ if(typeof $("#recaptchaButton").attr('data-hcaptcha-widget-id')!= "undefined"){ hcaptcha.reset($("#recaptchaButton").attr('data-hcaptcha-widget-id')); // Reset hCaptcha hcaptcha.execute($("#recaptchaButton").attr('data-hcaptcha-widget-id'));// After reset execute hCaptcha. }else{ grecaptcha.reset(); grecaptcha.execute(); } }; function openTab(evt, tabName) { $(".upgrade-tabs .upg-tablist").css("display","none"); var i, tabcontent, tablinks; var id; if(tabName!= "undefined" && tabName == "upgradeTab"){ id= "upgrade_sec"; }if(tabName!= "undefined" && tabName == "security_tabId"){ id= "accountSecurity"; }else{ id = evt.currentTarget.id; } $("#"+id).removeClass("selectedli"); tabcontent = document.getElementsByClassName("rpc-tab-content"); for (i = 0; i < tabcontent.length; i++) { tabcontent[i].style.display = "none"; } tablinks = document.getElementsByClassName("rpc-tblinks"); for (i = 0; i < tablinks.length; i++) { tablinks[i].className = tablinks[i].className.replace("selectedli", ""); } document.getElementById(tabName).style.display = "block"; /*evt.currentTarget.className += " selectedli";*/ $("#"+id).addClass(" selectedli"); if(id != "undefined" && id=="id_profileTab"){ $("#upgradeTab").hide(); } } //var translated_msg = ""; // //function translateMsgToOtherLanguage(msgToTranslate){ // var translated_msg_tmp = "" // var languageFrom = "en"; // var languageTo = "en"; // translated_msg = ""; // console.log("msgToTranslate "+msgToTranslate) // if(typeof(Weglot) != "undefined"){ // languageTo = Weglot.getCurrentLang(); // if(languageTo != "undefined" || languageTo != ""){ // // new Promise(function(resolve, reject){ // var t = {words:[{w:msgToTranslate}], languageTo:languageTo, languageFrom:languageFrom}; // Weglot.translate(t, function(d){ // //resolve(d); // //translated_msg = d[0]; // //console.log("translated_msg 1-- "+translated_msg); // //return translated_msg; // }).then(function (r) { // //if (r.result && r.result === "3") { // translated_msg_tmp = r[0]; // console.log("translated_msg 1-- "+translated_msg); // //} // }); // //}); // // } else { // translated_msg = msgToTranslate; // console.log("translated_msg 2-- "+translated_msg); // return translated_msg; // } // } else { // translated_msg = msgToTranslate; // console.log("translated_msg 3-- "+translated_msg); // return translated_msg; // } //setTimeout(function(){ // console.log("translated_msg_tmp translated one -- "+translated_msg_tmp); // translated_msg = translated_msg_tmp // return translated_msg; //}, 1000); // //// //} async function translateMsgToOtherLanguage(msgToTranslate){ var translated_msg = msgToTranslate; var languageFrom = "en"; var languageTo = "en"; if(typeof(Weglot) != "undefined"){ languageTo = Weglot.getCurrentLang(); if(languageTo != "undefined" || languageTo != ""){ var promise = new Promise(function(resolve, reject){ var t = {words:[{w:msgToTranslate}], languageTo:languageTo, languageFrom:languageFrom}; Weglot.translate(t, function(d){ resolve(d); }); }); var result = await promise; return result[0]; } } else { var promise = new Promise(function(resolve, reject){resolve(translated_msg)}); var result = await promise; return result; } } // only javascript function var isBase64 = function (str) { if (typeof str === "undefined" || str === '' || str.trim() === '') { return false; } try { var base64regex = /^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/; return base64regex.test(str); } catch (err) { return false; } } var decodeBase64_UTF16LE = function(str) { if(!isBase64(str)) { return str; } let byteData = Uint8Array.from(atob(str), c => c.charCodeAt(0)); return new TextDecoder("utf-16le").decode(byteData) } var isNotSpecialCharacter = function (str) { if (typeof str === "undefined" || str === '' || str.trim() === '') { return false; } try { var specialCharacterRegex = /^[a-zA-Z0-9-@#!$%^&*()_+~=`{}\[\]:";'<>?,.\/]*$/; return specialCharacterRegex.test(str); } catch (err) { return false; } } var encodeBase64_UTF16LE = function(str) { if(isNotSpecialCharacter(str)) { return str; } var byteArray = new Uint8Array(str.length * 2); for (var i = 0; i < str.length; i++) { byteArray[i*2] = str.charCodeAt(i) // & 0xff; byteArray[i*2+1] = str.charCodeAt(i) >> 8 // & 0xff; } return btoa(String.fromCharCode.apply(null, new Uint8Array(byteArray))); } var decodeBase64_UTF8 = function (str) { try { return decodeURIComponent(escape(window.atob(str))); } catch (error) { return str; } } var encodeBase64_UTF8 = function (str) { try { return btoa(unescape(encodeURIComponent(str))); } catch (error) { return str; } } var encode_UTF8 = function(str) { try { return unescape(encodeURIComponent(str)); } catch (error) { return str; } } function cachedNexusStateAPICall(country,state,zip){ var call_nexus_state_api = true; if(typeof nexus_state_map!= "undefined" && country === "United States of America"){ if(nexus_state_map.zip != zip || nexus_state_map.state != state){ nexus_state_map.country = country; nexus_state_map.state = state; nexus_state_map.zip = zip; call_nexus_state_api = true; }else{ nexus_state_map.country = country; nexus_state_map.state = state; nexus_state_map.zip = zip; call_nexus_state_api = false; } }else{ call_nexus_state_api = false; } return call_nexus_state_api; } // Added code to handle automationcaptcha login case. $(document).keypress(function(event){ var keycode = (event.keyCode ? event.keyCode : event.which); if(keycode == '13' && $("#loginButton").hasClass("automationCaptcha")){ doLogin(""); } }); function toDecideValidations(){ var url = document.URL; var flag = false; if (url.indexOf("/signup/") != -1 || url.indexOf("upgrade") != -1){ flag = true; if (url.indexOf("/signup/el") != -1 || url.indexOf("/signup/pref/")!=-1 || url.indexOf("/signup/consumer")!=-1 || url.indexOf("/signup/team")!=-1 || url.indexOf("/signup/enterprise")!=-1 || url.indexOf("/signup/soho")!=-1 || url.indexOf("/meet/")!=-1) { flag = false; } /*else if (url.indexOf("/meet/")!=-1) { flag = true; }*/ }else{ if(url.indexOf("/signup")!=-1 || url.indexOf("/meet/")!=-1){ flag = false; }else if(url.indexOf("/ptr/")!=-1){ flag = false; }else{ flag = true; } } return flag; } function isAutomationWhiteListIP(id){ var automationIPEnabled = $("#"+id).hasClass("automationCaptcha"); var flag = false; if(automationIPEnabled){ flag = true; } return flag; } function appendQueryParams(urlString, newParams){ const url = new URL(urlString); //get existing query params const existingParams = new URLSearchParams(url.search); //Add or update query params for(const[key, value] of Object.entries(newParams)){ existingParams.set(key, value); } //update the search property with modified params url.search = existingParams.toString(); return url.toString(); } function validateVATNumber(vatNumber){ var vatid_regex = /^([a-zA-Z0-9.-]){8,20}$/; if (typeof vatNumber != "undefined" && vatNumber.length == 0) { $("#vatIdErr").hide(); return true; } else if (vatNumber.length > 0 && vatid_regex.test(vatNumber)) { $("#vatIdErr").hide(); return true; } else { $("#vatIdErr").show(); $("#vatId").focus(); return false; } } function validateGSTINIdentificationNumber(gstNumber){ var gstin_regex = /^[0-9]{2}[A-Z]{5}[0-9]{4}[A-Z]{1}[1-9A-Z]{1}Z[0-9A-Z]{1}$/; if (typeof gstNumber != "undefined" && gstNumber.length == 0) { $("#gstIdErr").hide(); return true; } else if (gstNumber.length > 0 && gstin_regex.test(gstNumber.toUpperCase())) { $("#gstIdErr").hide(); return true; } else { $("#gstIdErr").show(); $("#gstId").focus(); return false; } } function copyToClipboard(text) { if (navigator.clipboard && window.isSecureContext) { return navigator.clipboard.writeText(text); } else { let textArea = document.createElement("textarea"); textArea.value = text; textArea.style.position = "absolute"; textArea.style.opacity = '0'; document.body.appendChild(textArea); textArea.select(); return new Promise((res, rej) => { document.execCommand('copy') ? res('copied') : rej('exec command error'); textArea.remove(); }); } }