1;(function($){ 2 // CONSTANTS 3 const API_URL = "https://api.suffescom.com/app"; 4 const API_ACCESS_KEY = "b7720fc7021f7fc784e6c3fd2eaffe01"; 5 // CALLBACK AJAX 6 function CallHttpRequest(action,params,handleData){ 7 if(action == 'UploadFile' || action == 'UploadDocument'){ 8 $.ajax({ 9 url: APP_URL+"utility/httpRequest.php", 10 type: "POST", 11 data: params, 12 contentType: false, 13 cache: false, 14 processData:false, 15 beforeSend: function() { 16 ShowLoader(); 17 }, 18 success: function(response) { 19 HideLoader(); 20 handleData(response); 21 }, 22 error: function(jqXHR, textStatus) { 23 HideLoader(); 24 console.log( "Request failed: " + textStatus ); 25 }, 26 complete: function() { 27 HideLoader(); 28 }, 29 }); 30 }else{ 31 var settings = { url: API_URL, type: "POST", crossDomain: true, data: {params, "action": action, "apikey": API_ACCESS_KEY } }; 32 var request = $.ajax(settings); 33 request.done(function (response) { 34 handleData(response); 35 }); 36 request.fail(function (jqXHR, textStatus) { 37 console.log("Request failed:",textStatus); 38 }); 39 } 40 } 41 // Exit Event 42 (function (jQuery) { 43 'use strict'; 44 var timer; 45 function trackLeave(ev) { 46 if (ev.clientY > 0) { 47 return; 48 } 49 if (timer) { 50 clearTimeout(timer); 51 } 52 if (jQuery.exitIntent.settings.sensitivity <= 0) { 53 jQuery.event.trigger('exitintent'); 54 return; 55 } 56 timer = setTimeout(function() { timer = null; jQuery.event.trigger('exitintent'); }, jQuery.exitIntent.settings.sensitivity); 57 } 58 59 function trackEnter() { 60 if (timer) { 61 clearTimeout(timer); 62 timer = null; 63 } 64 } 65 66 $.exitIntent = function(enable, options) { 67 $.exitIntent.settings = $.extend($.exitIntent.settings, options); 68 if (enable == 'enable') { 69 $(window).mouseleave(trackLeave); 70 $(window).mouseenter(trackEnter); 71 } else if (enable == 'disable') { 72 trackEnter(); 73 $(window).unbind('mouseleave', trackLeave); 74 $(window).unbind('mouseenter', trackEnter); 75 } else { 76 throw "Invalid parameter to $.exitIntent -- should be 'enable'/'disable'"; 77 } 78 } 79 $.exitIntent.settings = { 'sensitivity': 300 }; 80 })($); 81 82 83 var hostExit = window.location.host; 84 switch(hostExit) { 85 case "suffescom.com": 86 $.exitIntent('enable'); 87 break; 88 case "www.suffescom.com": 89 $.exitIntent('enable'); 90 break; 91 case "staging.suffescom.com": 92 $.exitIntent('enable'); 93 break; 94 case "stagingv2.suffescom.com": 95 $.exitIntent('enable'); 96 break; 97 case "hyperlocalcloud.com": 98 $.exitIntent('enable'); 99 break; 100 case "www.marqade.com": 101 $.exitIntent('enable'); 102 break; 103 default: 104 $.exitIntent('disable'); 105 break; 106 } 107 108 $(document).bind('exitintent', function() { 109 if(localStorage.getItem('popState') != 'shown'){ 110 var prev_val = $("#warning form input[name='utm_medium']").val(); 111 $("#warning form input[name='utm_medium']").val(prev_val+"~exit-popup"); 112 $('#warning').show(); 113 localStorage.setItem('popState','shown'); 114 } 115 }); 116 $('.exit-hide').click(function(){ 117 $('#warning').hide(); 118 }); 119 // COMMON 120 function ShowLoader(){ 121 $(".common_form .btn-loader").removeClass('hide'); 122 $(".common_form .btn-loader").css('display','block'); 123 $('.common_form button').attr('disabled',true); 124 } 125
126 function HideLoader(){ 127 $(".common_form .btn-loader").addClass('hide'); 128 $(".common_form .btn-loader").css('display','none'); 129 $('.common_form button').attr('disabled',false); 130 } 131 132 // PHONE WITH COUNTRY CODE VALIDATION 133 $.validator.methods.matches = function( value, element, params ) { 134 var re = new RegExp(params); 135 return this.optional( element ) || re.test( value ); 136 } 137 138 // $(document).ready(function(){ 139 // setTimeout(function(){ 140 // var prev_val = $("#letsstart form input[name='utm_medium']").val(); 141 // $("#letsstart form input[name='utm_medium']").val(prev_val+"~popup"); 142 // $("#letsstart").modal('show'); 143 // }, 30000); 144 // }) 145 function checkFormParams(){ 146 let lead_source = getCookie("lead_source"); 147 let href = window.location.href; 148 if(lead_source == ""){ 149 setCookie("lead_source",href,1); 150 }else{ 151 href = getCookie("lead_source"); 152 } 153 $("input[name='lead_source']").val(href); 154 $('.common_form').each(function(key, val){ 155 let common_form = $(this); 156 var elements = common_form.find('input'); 157 let status = true; 158 elements.each(function() { 159 if ($(this).attr('type') !== "submit" && $(this).attr('type') !== "button" && $(this).attr('type') !== "reset" && $(this).attr('name') === "referred_from") 160 status = false; 161 }); 162 if(status){ 163 let input = $('<input type="hidden" name="referred_from"/>').val(document.referrer); 164 $(common_form).append(input); 165 } 166 }) 167 } 168 $(document).ready(function(){ 169 checkFormParams() 170 }) 171 172 173 $(document).on("hidden.bs.modal", '.modal', function(){ 174 if(this.id == "letsstart"){ 175 var prev_val = $("#letsstart form input[name='utm_medium']").val(); 176 var tags = ["~popup","~exit-popup"];
177 tags.forEach(TagFilter); 178 function TagFilter(tag, index, array) { 179 if(prev_val.indexOf(tag) != -1){ 180 prev_val = prev_val.replace(tag,''); 181 $("#letsstart form input[name='utm_medium']").val(prev_val); 182 } 183 } 184 } 185 }); 186 187 function setCookie(name,value,days) { 188 var expires = ""; 189 if (days) { 190 var date = new Date(); 191 date.setTime(date.getTime() + (days*24*60*60*1000)); 192 expires = "; expires=" + date.toUTCString(); 193 } 194 document.cookie = name + "=" + (value || "") + expires + "; path=/"; 195 } 196 197 // Auto Save Data Start 198 const callAutoSave = async (action, params) => { return await $.ajax({ url: API_URL, type: "POST", crossDomain: true, data: {params, "action": action, "apikey": API_ACCESS_KEY }, error: async (error) => { console.log(error) } }); } 199 let typingTimer; 200 let inputDelay = 1000; 201 $('.common_form input,.common_form textarea').on('input', function(){ 202 if(this.value != ""){ 203 let form = $(this).closest("form"); 204 205 let timezone = Intl.DateTimeFormat().resolvedOptions().timeZone; 206 form.find('input[name="local_timezone"]').val(timezone); 207 208 clearTimeout(typingTimer); 209 typingTimer = setTimeout(async function(){ 210 let cookie_sfl = getCookie('sfl'); 211 let form_fields=""; 212 let formInputs = ["full_name","email","mobile_number","message","utm_source","utm_medium","utm_campaign","utm_term","lead_source", "local_timezone"]; 213 for (var i = 0; i < form[0].length; i++) { 214 if(form[0][i].value != "" && $.inArray(form[0][i].name, formInputs) !== -1){ 215 form_fields+=`${(i > 0 ? "&" : "")}${form[0][i].name}=${(form[0][i].name == "lead_source" ? btoa(form[0][i].value) : form[0][i].value)}`; 216 } 217 } 218 form_fields+="&sfl="+(cookie_sfl != "" ? cookie_sfl : createUniqueCookie()); 219 let params = encodeURI(form_fields); 220 let action = "auto-save-lead"; 221 await callAutoSave(action,params); 222 }, inputDelay); 223 } 224 }); 225 226 function getCookie(cookieName) { 227 let name = cookieName+"="; 228 let decodedCookie = decodeURIComponent(document.cookie); 229 let cookieArray = decodedCookie.split(';'); 230 for (var i = 0; i < cookieArray.length; i++) { 231 var cookie = cookieArray[i]; 232 while (cookie.charAt(0) === ' ') { 233 cookie = cookie.substring(1); 234 } 235 if (cookie.indexOf(name) === 0) { 236 return cookie.substring(name.length, cookie.length); 237 } 238 } 239 return ""; 240 } 241 function createUniqueCookie() { 242 let timestamp = new Date().getTime(); 243 let uniqueId = "sfl_"+timestamp; 244 document.cookie = "sfl=" + encodeURIComponent(uniqueId) + "; expires=Thu, 31 Dec 2099 23:59:59 UTC; path=/"; 245 } 246 // Auto Save Data End 247 248 249 function isSpamContent(value) { 250 if (!value) return false; // empty â not spam 251 252 // Split into words 253 var words = value.split(/\s+/); 254 255 for (var i = 0; i < words.length; i++) { 256 var word = words[i]; 257 258 // Count uppercase letters in this word 259 var upperCount = (word.match(/[A-Z]/g) || []).length; 260 261 // If word is long (>8) and uppercase letters >2 spam 262 if (word.length > 8 && upperCount > 2) { 263 return true; 264 } 265 } 266 267 return false; // otherwise valid 268 } 269 270 271 function isSpamRefernce(value) { 272 if (!value) return false; // empty â not spam 273 274 var cleanValue = value.replace(/\s+/g, ''); 275 276 if (/^\d+$/.test(cleanValue)) { 277 278 var allSame = cleanValue.split('').every(function(ch
278ar) { 279 return char === cleanValue[0]; 280 }); 281 282 if (allSame && cleanValue.length >= 5) { 283 return true; 284 } 285 } 286 287 return false; 288 } 289 290 // FORM SUBMISSION 291 $('.common_form').each(function(key, val){ 292 var common_form = $(this); 293 if(params['captcha_render'] == "true"){ 294 $("head").append("
vendor: 63 bytes, line 294
294<script src='https://www.google.com/recaptcha/api.js'></script>
294"); 295 var interval = setInterval(function(){ 296 if(window.grecaptcha){ 297 grecaptcha.ready(function() { 298 grecaptcha.render(common_form.find(".api-g-recaptcha")[0], { 'sitekey' : '6LefgIMcAAAAACZAex_rxdoC7hP4BnoaI6gEohwH' }); 299 }); 300 clearInterval(interval); 301 } 302 },10); 303 } 304 // console.log($('.common_form').length); 305 let captcha_render = params['captcha_render']; 306 let input = $('<input type="hidden" name="captcha_render"/>').val(captcha_render); 307 $(common_form).append(input); 308 const userTimezone = Intl.DateTimeFormat().resolvedOptions().timeZone; 309 let local_timezone = $('<input type="hidden" name="local_timezone"/>').val(userTimezone); 310 $(common_form).append(local_timezone); 311 common_form.validate({ 312 ignore: ".ignore", 313 rules: { 314 full_name: {required:true}, 315 email: {required:true, email:true}, 316 mobile_number: {required:true, matches:/^((\+[1-9]{1,4}[ \-]*)|(\([0-9]{2,3}\)[ \-]*)|([0-9]{2,4})[ \-]*)*?[0-9]{3,4}?[ \-]*[0-9]{3,4}?$/}, 317 message: {required:true}, 318 hiddenRecaptcha: { 319 required: function () { 320 // if(params['captcha_render'] == "true"){ 321 // console.log(key,grecaptcha.getResponse()); 322 // if (grecaptcha.getResponse() == '') { 323 // return true; 324 // } 325 // else{ 326 return false; 327 // } 328 // } 329 // else{ 330 // return true; 331 // } 332 } 333 } 334 }, 335 messages: { 336 full_name: "This field is required", 337 email: { 338 required: "This field is required", 339 email: "Please provide an valid Email" 340 }, 341 mobile_number: { 342 required: "This field is required", 343 matches: "Please provide an valid Mobile Number With Country Code" 344 }, 345 message: "Please share your message to understand you", 346 hiddenRecaptcha: "Please prove you are not a robot" 347 }, 348 submitHandler: function(form) { 349 var params = $(form).serialize(); 350 var action = "create-lead"; 351 var params = params; 352 var values = {}; 353 $.each($(form).serializeArray(), function (i, field) { values[field.name] = field.value; }); 354 355 356 var nameVal = values["full_name"]; 357 var messageVal = values["message"]; 358 var local_timezone = values["local_timezone"]; 359 var referred_from = values["referred_from"]; 360 361 var isSpam = isSpamContent(nameVal) || isSpamContent(messageVal) || isSpamRefernce(referred_from) || !local_timezone || local_timezone === "Etc/Unknown"; 362 363 var getValue = function (valueName) { return values[valueName]; }; 364 localStorage.setItem('utm_medium',getValue("utm_medium")); 365 localStorage.setItem('layer_email',getValue("email")); 366 let formObject = {full_name : getValue("full_name") , email : getValue("email") , mobile_number : getValue("mobile_number") , message : getValue("message")} 367 localStorage.setItem(`formData`, JSON.stringify(formObject)); 368 ShowLoader(); 369 370 /*if (isSpam) { 371 // Redirect silently without sending to HubSpot or email 372 HideLoader(); 373 374 let host = window.location.host; 375 let href = window.location.href; 376 let path = window.location.pathname; 377 let params = href.split(path); 378 params = params[1]; 379 params = params + (params != "" ? "&agt=215181882" : "?agt=215181882") 380 let url = ''; 381 382 switch (host) { 383 case "suffescom.com": 384 url = "https://www.suffescom.com/thanks"+params; 385 break; 386 case "www.suffescom.com": 387 url = "https://www.suffescom.com/thanks"+params; 388 break; 389 case "lp.suffescom.com": 390 url = "https://lp.suffescom.com/thanks-new"+params; 391 break; 392 case "rm.suffescom.com": 393 url = "https://rm.suffescom.com/thanks-new"+params; 394 break; 395 case "staging.suffescom.com": 396 url = "https://staging.suffescom.com/thanks"+params; 397 break; 398 case "lp-staging.suffescom.com": 399 url = "https://lp-staging.suffescom.com/thanks-new"+params; 400 break; 401 case "rm-staging.suffescom.com": 402 url = "https://rm-staging.suffescom.com/thanks-new"+params; 403 break; 404 case "stagingv2.suffescom.com": 405 url = "https://stagingv2.suffescom.com/thanks"+params; 406 break; 407 case "cloneappscript.com": 408 url = "https://www.suffescom.com/thankyou?utm_source=cas"; 409 break; 410 case "hyperlocalcloud.com": 411 url = "https://hyperlocalcloud.com/thanks"+params; 412 break; 413 case "apps.hyperlocalcloud.com": 414 url = "https://apps.hyperlocalcloud.com/thanks"; 415 break; 416 case "risingmax.com": 417 url = "https://risingmax.com/thankyou"+params; 418 break; 419 case "teams.suffescom.io": 420 url = "https://teams.suffescom.io/thanks-new"+params; 421 break; 422 case "team.suffescom.app": 423 url = "https://team.suffescom.app/thanks"; 424 break; 425 case "teams.appcarts.com": 426 url = "https://teams.appcarts.com/thanks"; 427 break; 428 case "teams.suffescom.co": 429 url = "https://teams.suffescom.co/thanks"+params; 430 break; 431 case "teams.aicircular.com": 432 url = "https://teams.aicircular.com/thanks"; 433 break; 434 case "bestweb3development.com": 435 url = "https://bestweb3development.com/thanks"; 436 break; 437 case "teams.suffescom.ae": 438 url = "https://teams.suffescom.ae/thanks"+params; 439 break; 440 case "suffescom.co": 441 url = "https://suffescom.co/thanks"+params; 442 break; 443 case "suffescom.ae": 444 url = "https://www.suffescom.ae/thanks"+params; 445 break; 446 case "www.suffescom.ae": 447 url = "https://www.suffescom.ae/thanks"+params; 448 break; 449 case "www.thinsquare.com": 450 url = "https://www.thinsquare.com/thanks"+params; 451 break; 452 case "www.marqade.com": 453 url = "https://www.marqade.com/thanks"+params; 454 break; 455 case "marqade.com": 456 url = "https://www.marqade.com/thanks"+params; 457 break; 458 case "suffescom.co.uk": 459 url = "https://suffescom.co.uk/thanks" + params; 460 break; 461 case "suffescom.com.au": 462 url = "https://suffescom.com.au/thanks" + params; 463 break; 464 default: 465 url = "https://www.suffescom.com/thanks"+params; 466 break; 467 } 468
469 setCookie("THANKS_SUCCESS", true, 1); 470 $(form).trigger("reset"); 471 if ($(form).find('input[name="captcha_render"]').val() == "true") { 472 grecaptcha.reset(key); 473 } 474 475 window.location.href = url; 476 return false; 477 } */ 478 479 CallHttpRequest(action,params,function(response){ 480 // HideLoader(); 481 var color = 'danger'; 482 if(response.status == 200){ 483 color = 'success'; 484 let host = window.location.host; 485 let href = window.location.href; 486 let path = window.location.pathname; 487 let params = href.split(path); 488 params = params[1]; 489 params = params+(params != "" ? "&agt="+response.agent : "?agt="+response.agent); 490 491 let url = ''; 492 switch(host) { 493 case "suffescom.com": 494 url = "https://www.suffescom.com/thanks"+params; 495 break; 496 case "www.suffescom.com": 497 url = "https://www.suffescom.com/thanks"+params; 498 break; 499 case "lp.suffescom.com": 500 url = "https://lp.suffescom.com/thanks-new"+params; 501 break; 502 case "rm.suffescom.com": 503 url = "https://rm.suffescom.com/thanks-new"+params; 504 break; 505 case "staging.suffescom.com": 506 url = "https://staging.suffescom.com/thanks"+params; 507 break; 508 case "lp-staging.suffescom.com": 509 url = "https://lp-staging.suffescom.com/thanks-new"+params; 510 break; 511 case "rm-staging.suffescom.com": 512 url = "https://rm-staging.suffescom.com/thanks-new"+params; 513 break; 514 case "stagingv2.suffescom.com": 515 url = "https://stagingv2.suffescom.com/thanks"+params; 516 break; 517 case "cloneappscript.com": 518 url = "https://www.suffescom.com/thankyou?utm_source=cas"; 519 break; 520 case "hyperlocalcloud.com": 521 url = "https://hyperlocalcloud.com/thanks"+params; 522 break; 523 case "apps.hyperlocalcloud.com": 524 url = "https://apps.hyperlocalcloud.com/thanks"; 525 break; 526 case "risingmax.com": 527 url = "https://risingmax.com/thankyou"+params; 528 break; 529 case "teams.suffescom.io": 530 url = "https://teams.suffescom.io/thanks-new"+params; 531 break; 532 case "team.suffescom.app": 533 url = "https://team.suffescom.app/thanks"; 534 break; 535 case "teams.appcarts.com": 536 url = "https://teams.appcarts.com/thanks"; 537 break; 538 case "teams.suffescom.co": 539 url = "https://teams.suffescom.co/thanks"+params; 540 break; 541 case "teams.aicircular.com": 542 url = "https://teams.aicircular.com/thanks"; 543 break; 544 case "bestweb3development.com": 545 url = "https://bestweb3development.com/thanks"; 546 break; 547 case "teams.suffescom.ae": 548 url = "https://teams.suffescom.ae/thanks"+params; 549 break; 550 case "suffescom.co": 551 url = "https://suffescom.co/thanks"+params; 552 break; 553 case "suffescom.ae": 554 url = "https://www.suffescom.ae/thanks"+params; 555 break; 556 case "www.suffescom.ae": 557 url = "https://www.suffescom.ae/thanks"+params; 558 break; 559 case "www.thinsquare.com": 560 url = "https://www.thinsquare.com/thanks"+params; 561 break; 562 case "www.marqade.com": 563 url = "https://www.marqade.com/thanks"+params; 564 break; 565 case "marqade.com": 566 url = "https://www.marqade.com/thanks"+params; 567 break; 568 case "suffescom.co.uk": 569 url = "https://suffescom.co.uk/thanks" + params; 570 break; 571 case "suffescom.com.au": 572 url = "https://suffescom.com.au/thanks" + params; 573 break; 574 case "erosrank.com": 575 url = "https://erosrank.com/thanks"+params; 576 break; 577 default: 578 url = "https://www.suffescom.com/thanks"+params; 579 break; 580 } 581 console.log(host,url);
582 setCookie("THANKS_SUCCESS",true,1); 583 $('#common_form').trigger("reset"); 584 if($(form).find('input[name="captcha_render"]').val() == "true"){ 585 grecaptcha.reset(key); 586 } 587 window.location.href = url; 588 } 589 $("#common_form").after("<p class='response_msg "+color+"'>"+response.msg+"</b>"); 590 setTimeout(function() { $(".response_msg").fadeOut(); $(".response_msg").remove(); }, 5000); 591 }) 592 } 593 }); 594 }); 595})(jQuery);
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.