1function equalHeights() { 2 jQuery.fn.extend({ 3 equalHeight: function () { 4 var top = 0; 5 var row = []; 6 var classname = ('equalHeight' + Math.random()).replace('.', ''); 7 jQuery(this).each(function () { 8 var thistop = jQuery(this).offset().top; 9 if (thistop > top) { 10 jQuery('.' + classname).removeClass(classname); 11 top = thistop; 12 } 13 jQuery(this).addClass(classname); 14 jQuery(this).height('auto'); 15 var h = (Math.max.apply(null, jQuery('.' + classname).map(function () { 16 return jQuery(this).outerHeight(); 17 }).get())); 18 jQuery('.' + classname).height(h); 19 }).removeClass(classname); 20 } 21 }); 22 jQuery('.new-pricing-grid .subtext').equalHeight(); 23 24} 25 26jQuery(document).ready(function () { 27 equalHeights(); 28 if (window.location.href.includes('compare-ifax')) { 29 setTimeout(function () { 30 var n = document.querySelector(".compare-ifax-table-scroll"); 31 /*console.log(n);*/ 32 n.addEventListener("scroll", function (t) { 33 console.log('scroll: ' + t.target.scrollLeft) 34 if (t.target.scrollLeft > 0) { 35 jQuery(".comparetablemain").addClass("table_scrolled") 36 } else { 37 jQuery(".comparetablemain").removeClass("table_scrolled") 38 } 39 }) 40 }, 3000) 41 } 42 43 // if (window.location.href.includes('contact-sales')) { 44 45 // hbspt.forms.create({ 46 // portalId: "6530257", 47 // formId: "5648823f-6546-41a7-b012-1c19f59e997e", 48 // target: "body .hubspot_iframe", 49 // onFormReady: ($form) => { 50 // $form.find('#phone_ext-5648823f-6546-41a7-b012-1c19f59e997e').css('cssText', 'width: 120px !important'); 51 // $form.find('#phone_ext-5648823f-6546-41a7-b012-1c19f59e997e').css({ 'min-width': '120px' }); 52 53 // $form.find('#phone-5648823f-6546-41a7-b012-1c19f59e997e').css({ 'min-width': 'calc(100% - 127px)', 'max-width': 'calc(100% - 127px)', 'padding': '5px' }); 54 55 // $form.find('div.input').css({ 'margin-right': '0px'}); 56 57 58 59 // var ss = jsGetCookie('trackFeature'); 60 // if (ss != '') { 61 // $form.find('input[name="product_category"]').val(ss).change(); 62 // } else { 63 // $form.find('input[name="product_category"]').val('App').change(); 64 // } 65 // // console.log("full width", window.innerWidth); 66 // if (window.innerWidth < 481) { 67 // // console.log("mobile", ) 68 // $form.find('.actions').css({ 'margin-top': '30px'}); 69 // } else { 70 // $form.find('.actions').css({ 'margin-top': '0px', 'padding-top': '10px'}); 71 // } 72 73 74 // }, 75 // onFormSubmit: ($form) => { 76 // let email = $form.find('input[name="email"]').val(); 77 // let firstname = $form.find('input[name="firstname"]').val(); 78 // let lastname = $form.find('input[name="lastname"]').val(); 79 // let mobile = $form.find('input[name="phone"]').val(); 80 // let company = $form.find('input[name="company"]').val(); 81 // let pages = $form.find('select[name="monthly_page_ranges"]').val(); 82 83 84 // // window.hj('identify', null, { 85 // // 'Hubspot Email': email, 86 // // }); 87 88 // jsSetCookie('_hubspot_email', email); 89 // jsSetCookie('_hubspot_firstname', firstname); 90 // jsSetCookie('_hubspot_lastname', lastname); 91 // jsSetCookie('_hubspot_mobile', mobile); 92 // jsSetCookie('_hubspot_company', company); 93 // jsSetCookie('_hubspot_pages', pages); 94 // // window.goal_set_track('/get-quote-website'); 95 // }, 96 // onFormSubmitted: ($form) => { 97 98 // let dataInstanceId = $form.attr('data-instance-id'); 99 // console.log('_hubspot_pages', jsGetCookie('_hubspot_pages')); 100 // if (jsGetCookie('_hubspot_pages') == 'Less than 1,000') { 101 // window.location.href = "https://web.ifaxapp.com/message-sales"; 102 // } else { 103 // window.location.href = "https://web.ifaxapp.com/schedule-meeting?submissionGuid=" + dataInstanceId; 104 // } 105 106 // }, 107 // }); 108 109 // } 110 111 112 // if (window.location.href.includes('/partners/contact')) { 113 114 // hbspt.forms.create({ 115 // portalId: "6530257", 116 // formId: "33c7983d-d52c-4366-99de-fa3f131015c6", 117 // target: "body .hubspot_iframe", 118 // onFormReady: ($form) => { 119 120 // $form.find('#phone_ext-33c7983d-d52c-4366-99de-fa3f131015c6').css('cssText', 'width: 120px !important'); 121 // $form.find('#phone_ext-33c7983d-d52c-4366-99de-fa3f131015c6').css({ 'min-width': '120px' }); 122 123 // $form.find('#phone-33c7983d-d52c-4366-99de-fa3f131015c6').css({ 'min-width': 'calc(100% - 127px)', 'max-width': 'calc(100% - 127px)', 'padding': '5px' });
124 // $form.find('#notes-text').css({ 'position': 'absolute', 'bottom': '10px' }); 125 // // if (this._guestservice.getCookie('_fprom_code') != undefined && this._guestservice.getCookie('_fprom_code')) { 126 // // let name = this._guestservice.getCookie('_fprom_code').split('_r_'); 127 // // this._api.firstpromoter(name[1]).subscribe((res) => { 128 129 // // $form.find('input[name="promoter"]').val(res.email).change(); 130 // // }) 131 // // } 132 // }, 133 // onFormSubmitted: ($form) => { 134 // let email = $form.find('input[name="email"]').val(); 135 // let firstname = $form.find('input[name="firstname"]').val(); 136 // let lastname = $form.find('input[name="lastname"]').val(); 137 // let mobile = $form.find('input[name="phone"]').val(); 138 // let company = $form.find('input[name="company"]').val(); 139 // jsSetCookie('_hubspot_email', email); 140 // jsSetCookie('_hubspot_firstname', firstname); 141 // jsSetCookie('_hubspot_lastname', lastname); 142 // jsSetCookie('_hubspot_mobile', mobile); 143 // jsSetCookie('_hubspot_company', company); 144 145 // }, 146 // }); 147 148 // } 149 150 151 // if (window.location.href.includes('ifax-enterprise')) { 152 153 // hbspt.forms.create({ 154 // portalId: "6530257", 155 // formId: "5648823f-6546-41a7-b012-1c19f59e997e", 156 // target: "body .hubspot_iframe", 157 // translations: { 158 // en: { 159 // submitText: "REQUEST A QUOTE", 160 // } 161 // }, 162 // onFormReady: ($form) => { 163 // $form.find('#phone_ext-5648823f-6546-41a7-b012-1c19f59e997e').css('cssText', 'width:120px!important'); 164 // $form.find('#phone_ext-5648823f-6546-41a7-b012-1c19f59e997e').css({ 'min-width': '120px', 'border': '0 none', 'border-radius': '0px', 'padding': '0 10px', 'height': '28px' }); 165 166 // $form.find('#phone-5648823f-6546-41a7-b012-1c19f59e997e').css({ 'min-width': 'calc(100% - 130px)', 'max-width': 'calc(100% - 130px)', 'padding': '0 5px', 'border': '0 none', 'border-radius': '0px', 'padding-left': '15px', 'margin-left': '10px', 'height': '28px', 'border-left': '2px solid #cbd6e2' }); 167 // $form.find('.hs_phone.hs-phone.hs-fieldtype-phonenumber.field.hs-form-field').css({ 'width': '100%' }); 168 169 // $form.find('.form-columns-2 .hs-form-field').css({ 'width': '100%' }); 170 171 // $form.find('input.hs-input').css({ 'width': '100%' }); 172 173 // $form.find('.actions').css({ 'margin-top': '0px', 'margin-bottom': '0px', 'padding-top': '10px' }); 174 // $form.find('.hs-button').css({ 'width': '100%' }); 175 176 // $form.find('div.input').css({ 'margin-right': '0px' }); 177 // $form.find('#phone_ext-5648823f-6546-41a7-b012-1c19f59e997e').parent('.hs-input').parent('.input').css({ 'background-color': '#f5f8fa', 'border': '1px solid #cbd6e2', 'border-radius': '3px', 'padding': '5px 0' }); 178 179 // var ss = jsGetCookie('trackFeature'); 180 // if (ss != '') { 181 // $form.find('input[name="product_category"]').val(ss).change(); 182 // } else { 183 // $form.find('input[name="product_category"]').val('App').change(); 184 // } 185 // console.log(window.innerWidth); 186 // if (window.innerWidth < 768) { 187 // $form.find('.form-columns-2 .hs_firstname.hs-form-field').css({ 'width': '100%', 'padding-right': '0px' }); 188 // $form.find('.form-columns-2 .hs_lastname.hs-form-field').css({ 'width': '100%', 'padding-left': '0px' }); 189 // } else { 190 // $form.find('.form-columns-2 .hs_firstname.hs-form-field').css({ 'width': '50%', 'padding-right': '7px' }); 191 // $form.find('.form-columns-2 .hs_lastname.hs-form-field').css({ 'width': '50%', 'padding-left': '7px' }); 192 // } 193 // }, 194 // onFormSubmit: ($form) => { 195 // let email = $form.find('input[name="email"]').val(); 196 // let firstname = $form.find('input[name="firstname"]').val(); 197 // let lastname = $form.find('input[name="lastname"]').val(); 198 // let mobile = $form.find('input[name="phone"]').val(); 199 // let company = $form.find('input[name="company"]').val(); 200 // let pages = $form.find('select[name="monthly_page_ranges"]').val(); 201 // // window.hj('identify', null, { 202 // // 'Hubspot Email': email, 203 // // }); 204 205 // jsSetCookie('_hubspot_email', email); 206 // jsSetCookie('_hubspot_firstname', firstname); 207 // jsSetCookie('_hubspot_lastname', lastname); 208 // jsSetCookie('_hubspot_mobile', mobile); 209 // jsSetCookie('_hubspot_company', company); 210 // jsSetCookie('_hubspot_pages', pages); 211 // // window.goal_set_track('/get-quote-website'); 212 // }, 213 // onFormSubmitted: ($form) => { 214 // let dataInstanceId = $form.attr('data-instance-id'); 215 // console.log('_hubspot_pages', jsGetCookie('_hubspot_pages')); 216 // if (jsGetCookie('_hubspot_pages') == 'Less than 1,000') { 217 // window.location.href = "https://web.ifaxapp.com/message-sales"; 218 // } else { 219 // window.location.href = "https://web.ifaxapp.com/schedule-meeting?submissionGuid=" + dataInstanceId; 220 // } 221 222 // }, 223 // }); 224 225 // } 226 227 // if (window.location.href.includes('faxing-api')) { 228 229 // hbspt.forms.create({ 230 // portalId: "6530257", 231 // formId: "5648823f-6546-41a7-b012-1c19f59e997e", 232 // target: "body .hubspot_iframe", 233 // translations: { 234 // en: { 235 // submitText: "REQUEST A QUOTE", 236 // } 237 // }, 238 // onFormReady: ($form) => { 239 // $form.find('#phone_ext-5648823f-6546-41a7-b012-1c19f59e997e').css('cssText', 'width:120px!important'); 240 // $form.find('#phone_ext-5648823f-6546-41a7-b012-1c19f59e997e').css({ 'min-width': '120px', 'border': '0 none', 'border-radius': '0px', 'padding': '0 10px', 'height': '28px' }); 241 242 // $form.find('#phone-5648823f-6546-41a7-b012-1c19f59e997e').css({ 'min-width': 'calc(100% - 130px)', 'max-width': 'calc(100% - 130px)', 'padding': '0 5px', 'border': '0 none', 'border-radius': '0px', 'padding-left': '15px', 'margin-left': '10px', 'height': '28px', 'border-left': '2px solid #cbd6e2' }); 243 // $form.find('.hs_phone.hs-phone.hs-fieldtype-phonenumber.field.hs-form-field').css({ 'width': '100%' }); 244 245 // $form.find('.form-columns-2 .hs-form-field').css({ 'width': '100%' }); 246 247 // $form.find('input.hs-input').css({ 'width': '100%' }); 248 249 // $form.find('.actions').css({ 'margin-top': '0px', 'margin-bottom': '0px', 'padding-top': '10px' }); 250 // $form.find('.hs-button').css({ 'width': '100%' }); 251 252 // $form.find('div.input').css({ 'margin-right': '0px' }); 253 // $form.find('#phone_ext-5648823f-6546-41a7-b012-1c19f59e997e').parent('.hs-input').parent('.input').css({ 'background-color': '#f5f8fa', 'border': '1px solid #cbd6e2', 'border-radius': '3px', 'padding': '5px 0' }); 254 255 // var ss = jsGetCookie('trackFeature'); 256 // if (ss != '') { 257 // $form.find('input[name="product_category"]').val(ss).change(); 258 // } else { 259 // $form.find('input[name="product_category"]').val('App').change(); 260 // } 261 // console.log(window.innerWidth);
262 // if (window.innerWidth < 768) { 263 // $form.find('.form-columns-2 .hs_firstname.hs-form-field').css({ 'width': '100%', 'padding-right': '0px' }); 264 // $form.find('.form-columns-2 .hs_lastname.hs-form-field').css({ 'width': '100%', 'padding-left': '0px' }); 265 // } else { 266 // $form.find('.form-columns-2 .hs_firstname.hs-form-field').css({ 'width': '50%', 'padding-right': '7px' }); 267 // $form.find('.form-columns-2 .hs_lastname.hs-form-field').css({ 'width': '50%', 'padding-left': '7px' }); 268 // } 269 // }, 270 // onFormSubmit: ($form) => { 271 // let email = $form.find('input[name="email"]').val(); 272 // let firstname = $form.find('input[name="firstname"]').val(); 273 // let lastname = $form.find('input[name="lastname"]').val(); 274 // let mobile = $form.find('input[name="phone"]').val(); 275 // let company = $form.find('input[name="company"]').val(); 276 // let pages = $form.find('select[name="monthly_page_ranges"]').val(); 277 // // window.hj('identify', null, { 278 // // 'Hubspot Email': email, 279 // // }); 280 281 // jsSetCookie('_hubspot_email', email); 282 // jsSetCookie('_hubspot_firstname', firstname); 283 // jsSetCookie('_hubspot_lastname', lastname); 284 // jsSetCookie('_hubspot_mobile', mobile); 285 // jsSetCookie('_hubspot_company', company); 286 // jsSetCookie('_hubspot_pages', pages); 287 // // window.goal_set_track('/get-quote-website'); 288 // }, 289 // onFormSubmitted: ($form) => { 290 // let dataInstanceId = $form.attr('data-instance-id'); 291 // console.log('_hubspot_pages', jsGetCookie('_hubspot_pages')); 292 // if (jsGetCookie('_hubspot_pages') == 'Less than 1,000') { 293 // window.location.href = "https://web.ifaxapp.com/message-sales"; 294 // } else { 295 // window.location.href = "https://web.ifaxapp.com/schedule-meeting?submissionGuid=" + dataInstanceId; 296 // } 297 298 // }, 299 // }); 300 301 // } 302 303 if (window.location.href.includes('ifax-vs-efax')) { 304 305 hbspt.forms.create({ 306 portalId: "6530257", 307 formId: "48e6bb02-07cf-46e8-97c4-3f135131dc13", 308 target: "body .calculate_iframe", 309 onFormReady: ($form) => { 310 $form.find('.container').css({ 'margin-top': '0px' }); 311 312 }, 313 onFormSubmitted: ($form) => { 314 315 }, 316 }); 317 318 } 319 320 if (window.location.href.includes('traditional-fax-vs-online-faxing-costs')) { 321 322 hbspt.forms.create({ 323 portalId: "6530257", 324 formId: "4e84c767-319d-42d6-b5c1-9402b6c53b69", 325 target: "body .calculate_iframe", 326 onFormReady: ($form) => { 327 $form.find('.container').css({ 'margin-top': '0px' }); 328 329 }, 330 onFormSubmitted: ($form) => { 331 332 }, 333 }); 334 335 } 336 337 // Start (Pricing Page Toggle Class) // 338 jQuery(".contectbtn .contect_btn").click(function () { 339 jQuery(this).toggleClass("show"); 340 jQuery(this).parents(".price_plan_scroll_sec").toggleClass("show_content"); 341 }); 342 // End (Pricing Page Toggle Class) // 343 344 // target="_self" add in Footer Links 345 jQuery("footer.footer-1 li.menu-item a[aria-current='page']").attr("target", "_self"); 346 347 setTimeout(function () { 348 jQuery('#BannerAnimationDiv').addClass('show'); 349 jQuery('#BannerGradientText').addClass('banner_gradient_animation'); 350 }, 1500); 351 352 setTimeout(function () { 353 if (window.innerWidth < 768) { 354 const video = document.querySelector('video'); 355 if (video) { 356 video.removeAttribute('controls'); 357 } 358 } 359 }, 1000); 360 361 jQuery("div#ez-toc-container.counter-hierarchy.ez-toc-counter.ez-toc-custom.ez-toc-container-direction li a, .Blog_Right_Siticky_div #ez-toc-container li a").each(function () { 362 jQuery(this).html(jQuery(this).html().replace(/ /g, '')); 363 }); 364 365// -------------------------------------- new pricing js start -------------------------------------- 366 // jQuery('ul.new-pricing-tabs li').click(function () { 367 // var tab_id = jQuery(this).attr('data-tab'); 368 // jQuery('ul.new-pricing-tabs li').removeClass('current'); 369 // jQuery('.new-pricing-tab-content').removeClass('current'); 370 // jQuery(this).addClass('current'); 371 // jQuery("#" + tab_id).addClass('current'); 372 // var section = jQuery('.new-pricing-section'); 373 // section.removeClass(function (index, className) { 374 // return (className.match(/(^|\s)new-pricing-tab-\S+/g) || []).join(' '); 375 // }); 376 // section.addClass(tab_id); 377 // }); 378 379 jQuery('ul.new-pricing-tabs li').click(function () { 380 var tab_id = jQuery(this).attr('data-tab'); 381 382 // Remove active classes 383 jQuery('ul.new-pricing-tabs li').removeClass('current'); 384 jQuery('.new-pricing-tab-content').removeClass('current'); 385 386 // Add active class to clicked tab and corresponding content 387 jQuery(this).addClass('current'); 388 jQuery("#" + tab_id).addClass('current'); 389 390 // Update pricing section classes 391 var section = jQuery('.new-pricing-section'); 392 section.removeClass(function (index, className) { 393 return (className.match(/(^|\s)new-pricing-tab-\S+/g) || []).join(' '); 394 });
395 section.addClass(tab_id); 396 397 // Update URL with tab identifier (using hash) 398 if (history.pushState) { 399 // Use pushState to change URL without reload 400 history.pushState(null, null, '#' + tab_id); 401 } else { 402 // Fallback for older browsers 403 window.location.hash = '#' + tab_id; 404 } 405}); 406 407 jQuery(document).ready(function() { 408 if (window.location.hash) { 409 var hash = window.location.hash.substring(3); // Remove the # 410 console.log(hash) 411 var tabElement = jQuery('ul.new-pricing-tabs li[data-tab="' + hash + '"]'); 412 if (tabElement.length) { 413 tabElement.click(); // Trigger click on the tab 414 } 415 } 416}); 417 418 // -------- range slider js start -------- 419var sheet = document.createElement('style'); 420var $rangeInput = jQuery('.range input'); 421var prefs = ['webkit-slider-runnable-track', 'moz-range-track', 'ms-track']; 422document.body.appendChild(sheet); 423 424// var getTrackStyle = function (el) { 425// var curVal = parseInt(el.value, 10); 426// var min = parseInt(el.min || 1, 10); 427// var max = parseInt(el.max || 8, 10); 428// var steps = max - min; 429// var val = ((curVal - min) / steps) * 100; 430 431// var style = ''; 432// jQuery('.range-labels li').removeClass('active selected'); 433// var curLabel = jQuery('.range-labels').find('li:nth-child(' + curVal + ')'); 434// curLabel.addClass('active selected'); 435// curLabel.prevAll().addClass('selected'); 436 437// for (var i = 0; i < prefs.length; i++) { 438// style += '.range input::-' + prefs[i] + ' {'; 439// style += 'background: linear-gradient(to right, #A0EAFF 0%, #5C9DFF ' + val + '%, #9292922B ' + val + '%, #9292922B 100%);'; 440// style += '}'; 441// } 442 443// return style; 444// }; 445 446// // Apply on slider interaction 447// $rangeInput.on('input', function () { 448// equalHeights(); 449// sheet.textContent = getTrackStyle(this); 450// }); 451 452// // Trigger once on load 453// $rangeInput.each(function () { 454// equalHeights(); 455// sheet.textContent = getTrackStyle(this); 456// }); 457 458 459 // toggle button js start 460 jQuery('.toggle-switch').on('change', function () { 461 jQuery('.billing-toggle').toggleClass('monthly-active'); 462 }); 463 464 465// -------------------------------------- new pricing js end -------------------------------------- 466 467// Get the height of the amplify-top-banner and set it as the top value of the mobile header 468var bannerHeight = jQuery('.amplify-top-banner').outerHeight(true); // includes padding + margin 469jQuery('header.top_header.mobile_header').css('top', bannerHeight + 'px'); 470 471jQuery('.amplify-top-banner').length && jQuery('header.top_header.mobile_header').css('top', jQuery('.amplify-top-banner').outerHeight(true) + 'px'); 472}); 473 474document.querySelectorAll("#ez-toc-container ul").forEach(ul => { 475 const hasCustomMarker = Array.from(ul.children).some(li => { 476 const markerStyle = window.getComputedStyle(li, '::marker'); 477 // Check if the content of the marker is non-default (optional condition) 478 return markerStyle.content !== 'none'; 479 }); 480 481 if (hasCustomMarker) { 482 jQuery('#ez-toc-container ul').addClass('PaddingLeft20'); 483 } 484}); 485 486function jsSetCookie(cname, cvalue, exdays) { 487 const d = new Date(); 488 d.setTime(d.getTime() + (exdays*24*60*60*1000)); 489 let expires = "expires="+ d.toUTCString(); 490 document.cookie = cname + "=" + cvalue + ";" + expires + ";domain=.ifaxapp.com;path=/"; 491 if(cname == "g_state"){ 492 document.cookie = cname + "=" + cvalue + ";" + expires + ";domain=www.ifaxapp.com;path=/"; 493 } 494 // const d = new Date(); 495 // d.setTime(d.getTime() + (exdays * 24 * 60 * 60 * 1000)); 496 // let expires = "expires=" + d.toUTCString(); 497 // document.cookie = cname + "=" + cvalue + ";" + expires + ";domain=.ifaxapp.com;path=/"; 498} 499function jsGetCookie(cname) { 500 let name = cname + "="; 501 let decodedCookie = decodeURIComponent(document.cookie); 502 let ca = decodedCookie.split(';'); 503 for (let i = 0; i < ca.length; i++) { 504 let c = ca[i]; 505 while (c.charAt(0) == ' ') { 506 c = c.substring(1); 507 } 508 if (c.indexOf(name) == 0) { 509 return c.substring(name.length, c.length); 510 } 511 } 512 return ""; 513} 514 515function getPageFromOS(os) { 516 var arr = []; 517 arr['Android'] = '/fax-from-android'; 518 arr['iOS'] = '/fax-from-iphone-ipad'; 519 arr['Windows'] = '/fax-from-pc'; 520 521 return arr[os]; 522 523} 524 525 526// device detection 527if (/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|ipad|iris|kindle|Android|Silk|lge |maemo|midp|mmp|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i.test(navigator.userAgent) 528 || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|
528sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(navigator.userAgent.substr(0, 4))) { 529 530 531 var isMobile = { 532 Android: function () { 533 if (navigator.userAgent.match(/Android/i)) { 534 return 'Android'; 535 } 536 }, 537 BlackBerry: function () { 538 if (navigator.userAgent.match(/BlackBerry/i)) { 539 return 'BlackBerry'; 540 } 541 }, 542 iOS: function () { 543 if (navigator.userAgent.match(/iPhone|iPad|iPod/i)) { 544 return 'iOS'; 545 } 546 }, 547 Opera: function () { 548 if (navigator.userAgent.match(/Opera Mini/i)) { 549 return 'Opera'; 550 } 551 }, 552 Windows: function () { 553 if (navigator.userAgent.match(/IEMobile/i)) { 554 return 'Windows'; 555 } 556 }, 557 any: function () { 558 return (isMobile.Android() || isMobile.BlackBerry() || isMobile.iOS() || isMobile.Opera() || isMobile.Windows()); 559 } 560 }; 561 562 // if(window.location.href.includes('.com/fax-from-android')){ 563 564 // if(isMobile.any() == "Android" && window.location.href.includes('.com/fax-from-android') == false){ 565 // window.location.href = getPageFromOS(isMobile.any()); 566 // } 567 // // else if(isMobile.any() == "iOS" && window.location.href.includes('/fax-from-iphone-ipad') == false){ 568 // // window.location.href = getPageFromOS(isMobile.any()); 569 // // }else if(isMobile.any() == "Windows" && window.location.href.includes('/fax-from-windows') == false){ 570 // // window.location.href = getPageFromOS(isMobile.any()); 571 // // } 572 // } 573 574 if (window.location.href.includes('/mobile-fax-app/')) { 575 console.log('os', isMobile.any()); 576 if (isMobile.any() == "Android") { 577 jQuery('.DownloadiFaxLink').attr('href', 'https://play.google.com/store/apps/details?id=crowdedroad.iFax&referrer=utm_source%3Dwebsite'); 578 jQuery('.DownloadiFaxLink').text('Download iFax for Android'); 579 jQuery('.app_part').hide(); 580 } else if (isMobile.any() == "iOS") { 581 jQuery('.DownloadiFaxLink').attr('href', 'https://itunes.apple.com/app/apple-store/id331514859?pt=49076&ct=website&mt=8'); 582 jQuery('.DownloadiFaxLink').text('Download iFax for iOS'); 583 jQuery('.app_part').hide(); 584 } 585 } 586 587 // // auto redirection single time for new users 588 589 // if(jsGetCookie('newUser') != '1'){ 590 // jsSetCookie('newUser','1') 591 // if(isMobile.any() == "Android"){ 592 // window.open("https://play.google.com/store/apps/details?id=crowdedroad.iFax"); 593 // }else if(isMobile.any() == "iOS"){ 594 // window.open("https://apps.apple.com/us/app/ifax-app-send-fax-from-iphone/id331514859"); 595 // } 596 // } 597 598 599} 600 601 602 603if (window.location.href.includes('/free-fax-trial')) { 604 jQuery(document).ready(function () { 605 jQuery(document).on('click', '.menu_bar .navRoot li a.landing_page_link, button.box_send_fax_btn.diagonal_btn.send_fax_blue a.link_to_price_sec, a.getfreetrailbtn,.getfreetrailbtn a.elementor-button, .got_to_price_sec a.elementor-button-link', function (event) { 606 event.preventDefault(); 607 jQuery('html, body').animate({ 608 scrollTop: jQuery("#pricing").offset().top - 60 609 }, 2000); 610 }) 611 }); 612} 613 614jQuery('.fax_xyz_button').find('a').attr('target', '_self'); 615 616jQuery('.SendFreeFax').click(function () { 617 window.location.href = 'https://web.fax.xyz/new-fax?utm_source=iFax&utm_medium=free-fax-lp'; 618}) 619jQuery('.SendFreeFaxFromPayPerFax').click(function () { 620 window.location.href = 'https://web.fax.xyz/new-fax?utm_source=iFax&utm_medium=pay-per-fax-lp'; 621}) 622jQuery('.SendFreeFaxFromTempate').click(function () { 623 window.location.href = 'https://web.fax.xyz/new-fax?utm_source=iFax&utm_medium=free-fax-cover-sheets'; 624}) 625jQuery('body .SendFreeFaxFromFaxNumber').click(function () { 626 window.location.href = 'https://web.fax.xyz/new-fax?utm_source=iFax&utm_medium=free-fax-number-lp'; 627}) 628 629jQuery('body .freefaxnumberwebfax').click(function () { 630 window.location.href = 'https://web.fax.xyz/fax-number?utm_source=iFax&utm_medium=free-fax-number-lp'; 631}) 632 633jQuery('body .a_b_testing').click(function () { 634 635 if (jsGetCookie('a_b_testing') == '1') { 636 window.location.href = 'https://www.ifaxapp.com/signup/?plan=pro&bill=12&paid=0'; 637 } else { 638 window.location.href = 'https://www.ifaxapp.com/pricing/'; 639 } 640}) 641 642 643 644jQuery('body .scrolltosamepage').click(function(event){ 645 event.preventDefault(); 646 var targettoscroll = jQuery(this).attr('href'); 647 jQuery('html, body').animate({ 648 scrollTop: jQuery(targettoscroll).offset().top - 60 649 }, 500); 650}); 651 652jQuery('.faxapi_tab_main.send_faxes .nav-item .nav-link').removeAttr('href'); 653jQuery('.faxapi_tab_main.retrive_faxes .nav-item .nav-link').removeAttr('href'); 654jQuery('.faxapi_tab_main.retrive_faxes .nav-item').click(function () { 655 var attr = jQuery(this).find('a').attr('aria-controls'); 656 jQuery('.retrive_faxes .tab-content .tab-pane').removeClass('active'); 657 jQuery('.retrive_faxes .tab-content').find('#' + attr).addClass('active'); 658}) 659jQuery('.faxapi_tab_main.send_faxes .nav-item').click(function () { 660 var attr = jQuery(this).find('a').attr('aria-controls'); 661 jQuery('.send_faxes .tab-content .tab-pane').removeClass('active'); 662 jQuery('.send_faxes .tab-content').find('#' + attr).addClass('active'); 663}) 664 665// header arrow center new js 8-8-25 start 666document.addEventListener('DOMContentLoaded', function () { 667 if (window.innerWidth > 1024) { 668 const menuLinks = document.querySelectorAll('.menu_bar .rootLink:not(.no-after)'); 669const indicator = document.querySelector('.new_active_arrow'); 670const menuBar = document.querySelector('.menu_bar'); 671 672let firstTimeShown = false; 673 674menuLinks.forEach(link => { 675 link.addEventListener('mouseenter', () => { 676 const linkRect = link.getBoundingClientRect(); 677 const menuRect = menuBar.getBoundingClientRect(); 678 679 const linkCenter = linkRect.left + linkRect.width / 2; 680 const relativeLeft = linkCenter - menuRect.left - 8; // center the arrow (16px / 2) 681 682 if (!firstTimeShown) { 683 // Remove transition temporarily
684 indicator.style.transition = 'none'; 685 686 // Position it immediately and hide it 687 indicator.style.left = `${relativeLeft}px`; 688 indicator.style.opacity = '0'; 689 690 // Delay for 2ms to force layout paint before showing 691 setTimeout(() => { 692 // Now enable transition and show 693 indicator.style.transition = 'left 0.25s ease, opacity 0.25s ease'; 694 indicator.style.opacity = '1'; 695 firstTimeShown = true; 696 }, 2); 697 } else { 698 // Normal hover behavior 699 indicator.style.left = `${relativeLeft}px`; 700 indicator.style.opacity = '1'; 701 } 702 }); 703 704 link.addEventListener('mouseleave', () => { 705 if (!document.querySelector('.dropdownRoot:hover')) { 706 indicator.style.opacity = '0'; 707 } 708 }); 709}); 710 711const dropdownRoot = document.querySelector('.dropdownRoot'); 712if (dropdownRoot) { 713 dropdownRoot.addEventListener('mouseenter', () => { 714 indicator.style.opacity = '1'; 715 }); 716 dropdownRoot.addEventListener('mouseleave', () => { 717 indicator.style.opacity = '0'; 718 }); 719} 720} 721 722}); 723// header arrow center new js 8-8-25 end 724jQuery(window).resize(function () { 725 setTimeout(function () { 726 equalHeights(); 727 }, 300); 728}); 729jQuery(window).on("load", function () { 730 equalHeights(); 731}); 732 733// number animation on range change 734jQuery(document).ready(function() { 735 function parsePages(text) { 736 var match = text.match(/^[\d,]+/); 737 return match ? parseInt(match[0].replace(/,/g, ''), 10) || 0 : 0; 738 } 739 function formatPages(num, originalText) { 740 if (originalText.includes('pages monthly')) { 741 return num.toLocaleString('en-US') + ' pages monthly'; 742 } 743 var suffix = originalText.replace(/^[\d,]+/, ''); 744 return num.toLocaleString('en-US') + suffix; 745 } 746 function parsePrice(text) { 747 var numStr = text.replace(/[^0-9.]/g, ''); 748 return parseFloat(numStr) || 0; 749 } 750 function formatPrice(num, prefix, suffix, originalText) { 751 // Convert number to string to analyze its decimal part 752 var numStr = num.toString(); 753 var decimalPart = numStr.includes('.') ? numStr.split('.')[1] : ''; 754 755 // Remove trailing zeros and determine significant decimal places 756 var significantDecimal = decimalPart.replace(/0+$/, ''); 757 var decimalPlaces = significantDecimal.length > 0 ? Math.min(significantDecimal.length, 3) : 2; // Default to 2 if no decimals, cap at 3 758 759 var formattedNum = Number(num).toLocaleString('en-US', { 760 minimumFractionDigits: decimalPlaces, 761 maximumFractionDigits: decimalPlaces 762 }); 763 return prefix + formattedNum + suffix; 764} 765 var config = { characterData: true, childList: true, subtree: true }; 766 767 function setupAnimation($element, type, index) { 768 var isPrice = type === 'price'; 769 var initialText = $element.text().trim(); 770 var suffix = initialText.replace(/\$?[\d.,]+/, '').trim(); 771 var prefix = isPrice ? (initialText.startsWith('$') ? '$' : '') : ''; 772 var parseFunc = isPrice ? parsePrice : parsePages; 773 var formatFunc = isPrice ? 774 function(num) { return formatPrice(num, prefix, suffix, initialText); } : 775 function(num) { return formatPages(num, initialText); }; 776 var state = { 777 oldValue: parseFunc(initialText), 778 pendingValue: parseFunc(initialText), 779 oldText: initialText, 780 isNumeric: false, 781 isAnimating: false, 782 debounceTimeout: null 783 }; 784 785 // Improved check for a purely numeric string 786 state.isNumeric = (parseFunc(initialText).toString() === initialText.replace(/[^0-9.]/g, '')); 787 788 if (!state.isNumeric) { 789 state.oldText = initialText; 790 } 791 792 function debounceAnimation() { 793 if (state.debounceTimeout) clearTimeout(state.debounceTimeout); 794 state.debounceTimeout = setTimeout(function() { 795 animateUpdate(); 796 }, 100); 797 } 798 799 function animateUpdate() { 800 if (state.isAnimating || state.pendingValue === state.oldValue) return; 801 state.isAnimating = true; 802 803 // Counting animation for animate-pricing and animation-pricing 804 var hasAnimateClass = $element.hasClass('animate-pricing') || $element.hasClass('animation-pricing'); 805 if (hasAnimateClass) { 806 $element.text(formatFunc(0)); // Start from 0 807 var startValue = 0; 808 var endValue = state.pendingValue; 809 var duration = 600; // Animation duration in milliseconds 810 var startTime = null; 811 812 function step(timestamp) { 813 if (!startTime) startTime = timestamp; 814 var progress = Math.min((timestamp - startTime) / duration, 1); 815 var currentValue = startValue + (endValue - startValue) * progress;
816 // Avoid premature rounding; use exact value during animation 817 $element.text(formatFunc(currentValue)); 818 if (progress < 1) { 819 requestAnimationFrame(step); 820 } else { 821 $element.text(formatFunc(endValue)); 822 state.oldValue = state.pendingValue; 823 state.isAnimating = false; 824 observer.observe($element[0], config); // Reconnect the observer 825 } 826 } 827 828 requestAnimationFrame(step); 829 } else { 830 // For elements without animate-pricing or animation-pricing, just update the value 831 setTimeout(function () { 832 state.oldValue = state.pendingValue; 833 state.isAnimating = false; 834 observer.observe($element[0], config); 835 }, 600); 836 } 837 } 838 839 var observer = new MutationObserver(function(mutations) { 840 mutations.forEach(function(mutation) { 841 if (mutation.type === 'characterData' || mutation.type === 'childList') { 842 var currentText = $element.text().trim(); 843 var attemptedValue = parseFunc(currentText); 844 var currentPrefix = prefix; 845 var currentSuffix = suffix; 846 var isMatchingStructure = currentText.startsWith(currentPrefix) && currentText.endsWith(currentSuffix); 847 if (!isMatchingStructure) { 848 state.oldText = currentText; 849 state.isNumeric = false; 850 return; 851 } 852 var middle = currentText.substring(currentPrefix.length, currentText.length - currentSuffix.length).trim(); 853 if (middle === '') { 854 state.oldText = currentText; 855 state.isNumeric = false; 856 return; 857 } 858 var middleNoComma = middle.replace(/,/g, ''); 859 var isValidNumber = /^[0-9.]+$/.test(middleNoComma) && !isNaN(attemptedValue); 860 if (isValidNumber && state.isNumeric && Math.abs(attemptedValue - state.oldValue) > (isPrice ? 0.0001 : 0)) { 861 state.pendingValue = attemptedValue; 862 863 // Disconnect the observer *before* starting the animation 864 observer.disconnect(); 865 866 // Use a debounce to prevent multiple animations from triggering at once 867 debounceAnimation(); 868 } else if (isValidNumber) { 869 state.oldValue = attemptedValue; 870 state.pendingValue = attemptedValue; 871 state.isNumeric = true; 872 } else { 873 state.oldText = currentText; 874 state.isNumeric = false; 875 // console.warn(`Non-numeric text detected: ${currentText}`); 876 } 877 } 878 }); 879 }); 880 881 if ($element[0]) { 882 observer.observe($element[0], config); 883 // console.log(`Observer attached to ${$element.attr('class')}`); 884 } else { 885 // console.error(`Element not found for selector: ${$element.selector}`); 886 } 887 } 888 889 jQuery('.animation-pricing').each(function(index) { 890 setupAnimation(jQuery(this), 'price', index); 891 }); 892 jQuery('.animation-pages').each(function(index) { 893 setupAnimation(jQuery(this), 'animation-pages', index); 894 }); 895 jQuery('.animate-pricing').each(function(index) { 896 setupAnimation(jQuery(this), 'price', index); 897 }); 898});
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.