1 2<!DOCTYPE html> 3<html lang="en"> 4<head> 5
6<script nonce="rT5+x+Vsgo3jrvfWYqqYbQ==" >var nonce ='rT5+x+Vsgo3jrvfWYqqYbQ=='; </script>
6 7<title>Online Custom Frames | Collage Picture Frames | Picture Frames - ArtToFrame</title> 8<meta name="facebook-domain-verification" content="e40ohc245hsa62sk1u4vg7ymgornfu" /> 9<meta name="Referrer-Policy" value="origin-when-cross-origin"/> 10<meta property="og:title" content='Online Custom Frames | Collage Picture Frames | Picture Frames - ArtToFrame' /> 11<meta property="og:url" content="https://www.arttoframe.com/" /> 12<meta property="og:type" content="article" /> 13<meta property="og:description" content="Preserve all your life's important moments with custom frames online with Art To Frame's great collection of online frames. Call us today at 718-788-6200."/> 14<meta property="og:image" content="https://www.arttoframe.com/images/new_logo.png" /> 15<meta property="og:image:secure_url" name="og_image_secure" content="https://www.arttoframe.com/images/new_logo.png" /> 16<meta property="og:image:type" content="image/jpeg" /> 17<meta property="og:image:width" content="1200" /> 18<meta property="og:image:height" content="600" /> 19<meta name="description" content="Preserve all your life's important moments with custom frames online with Art To Frame's great collection of online frames. Call us today at 718-788-6200." /> 20<meta name="keywords" content="Picture frames, Custom Picture Frames, Shadow box Frames, Home Decor" /> 21<link rel="shortcut icon" type="image/x-icon" href="https://www.arttoframe.com/favicon.ico"> 22<link rel="apple-touch-icon" sizes="57x57" href="https://www.arttoframe.com/images_2014/favicons/apple-touch-icon-57x57.png"> 23<link rel="apple-touch-icon" sizes="60x60" href="https://www.arttoframe.com/images_2014/favicons/apple-touch-icon-60x60.png"> 24<link rel="apple-touch-icon" sizes="72x72" href="https://www.arttoframe.com/images_2014/favicons/apple-touch-icon-72x72.png"> 25<link rel="apple-touch-icon" sizes="76x76" href="https://www.arttoframe.com/images_2014/favicons/apple-touch-icon-76x76.png"> 26<link rel="apple-touch-icon" sizes="114x114" href="https://www.arttoframe.com/images_2014/favicons/apple-touch-icon-114x114.png"> 27<link rel="apple-touch-icon" sizes="120x120" href="https://www.arttoframe.com/images_2014/favicons/apple-touch-icon-120x120.png"> 28<link rel="apple-touch-icon" sizes="144x144" href="https://www.arttoframe.com/images_2014/favicons/apple-touch-icon-144x144.png"> 29<link rel="apple-touch-icon" sizes="152x152" href="https://www.arttoframe.com/images_2014/favicons/apple-touch-icon-152x152.png"> 30<link rel="apple-touch-icon" sizes="180x180" href="https://www.arttoframe.com/images_2014/favicons/apple-touch-icon-180x180.png"> 31<link rel="icon" type="image/png" href="https://www.arttoframe.com/images_2014/favicons/favicon-32x32.png" sizes="32x32"> 32<link rel="icon" type="image/png" href="https://www.arttoframe.com/images_2014/favicons/android-chrome-192x192.png" sizes="192x192"> 33<link rel="icon" type="image/png" href="https://www.arttoframe.com/images_2014/favicons/favicon-96x96.png" sizes="96x96"> 34<link rel="icon" type="image/png" href="https://www.arttoframe.com/images_2014/favicons/favicon-16x16.png" sizes="16x16"> 35<link rel="manifest" href="https://www.arttoframe.com/images_2014/favicons/manifest.json"> 36<link rel="mask-icon" href="https://www.arttoframe.com/images_2014/favicons/safari-pinned-tab.svg" color="#5bbad5"> 37<link rel="stylesheet" type="text/css" href="https://www.arttoframe.com/css/Header_Desktop.min.css?v=2.01" defer/> 38<link rel="stylesheet" href="https://www.arttoframe.com/css/header_desktop_internal.css?v=1.0.5"> 39<link href='https://fonts.googleapis.com/css?family=Product+Sans:400,400i,700,700i' rel='stylesheet' type='text/css'> 40 41<style> 42#browser_warning_for_version { 43 display: none; 44 text-align: center; 45 font-size: 15px; 46 color: #f7f937; 47 background: #01192e; 48 height: 43px; 49} 50 51@media (min-width: 1024px) and (max-width: 1292px) { 52 53#product_type_new { 54 max-width: 71px !important; 55 width: 76px !important; 56 height: 28px !important; 57} 58 59} 60</style> 61 62<!-- added the values --> 63 64
65<script nonce="rT5+x+Vsgo3jrvfWYqqYbQ==" src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
65 66 67<link rel="stylesheet" href="https://www.arttoframe.com/css_2014/bootstrap/bootstrap.min.css" defer> 68<link rel="stylesheet" href="https://www.arttoframe.com/css_2014/bootstrap/font-awesome.min.css" defer> 69<link href='https://fonts.googleapis.com/css?family=Lato:100,300,400,700,900,100italic,300italic,400italic,700italic,900italic' rel='stylesheet' type='text/css' defer> 70<link href="https://fonts.googleapis.com/css?family=Montserrat:400,700" rel="stylesheet"> 71<meta name="apple-mobile-web-app-title" content="www.arttoframe.com" > 72<meta name="application-name" content="www.arttoframe.com" > 73<meta name="msapplication-TileColor" content="#da532c"> 74<meta name="msapplication-TileImage" content="https://www.arttoframe.com/images_2014/favicons/mstile-144x144.png"> 75<meta name="theme-color" content="#ffffff"> 76<meta name="HandheldFriendly" content="True" /> 77<meta name="MobileOptimized" content="330" /> 78<meta name="viewport" content="width=device-width, initial-scale=1"> 79<meta http-equiv="cleartype" content="on" /> 80<meta name="SKYPE_TOOLBAR" content="SKYPE_TOOLBAR_PARSER_COMPATIBLE" /> 81<meta http-equiv="Content-Type" content="text/html,charset=UTF-8"> 82<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> 83<!-- start: added code to fix coupon code popup and login dropdown issue date : 26-07-22 --> 84 85 86<link href="https://www.arttoframe.com/cart" alt = "/cart.php" rel="canonical" /> 87<meta name="msvalidate.01" content="310CB61B844ACA4E2F24CBE82992A3C8" /> 88<!--
88<script nonce="rT5+x+Vsgo3jrvfWYqqYbQ==" src="https://accounts.google.com/gsi/client" async defer></script>
88 --> 89
90<script nonce="rT5+x+Vsgo3jrvfWYqqYbQ==" src="https://www.arttoframe.com/css_2014/bootstrap/bootstrap.min.js?v=5.0.1" integrity="sha384-A/cKZI2nGN3Fff/Io6hAYh7ARhd41tBPJCn3AeVVyy/MyHqf78MKu3LfsvZYjGSe" crossorigin="anonymous"></script>
vendor: 1 bytes, line 90
90
91<script nonce="rT5+x+Vsgo3jrvfWYqqYbQ==" src="https://www.arttoframe.com/jquery/jquery-migrate-1.4.1.min.js?v=1617707331" integrity="sha384-UsW2zBGvT77bBsSjEL6Gs6eyk3cIRq4PaRodFW4Mvn7InoOlwNuiCwqhDwP5cdYZ" crossorigin="anonymous"></script>
vendor: 1 bytes, line 91
91
92<script nonce="rT5+x+Vsgo3jrvfWYqqYbQ=="> 93var path_analytics = 'https://www.arttoframe.com/External_Js/analytics.js?v=37243'; 94var gtm_path = 'https://www.googletagmanager.com/gtm.js?id=GTM-5WB5DL2'; 95var loggedin_user = ''; 96var serverScriptName = '/cart.php'; 97</script>
vendor: 1 bytes, line 97
97
98<script nonce="rT5+x+Vsgo3jrvfWYqqYbQ=="> 99(function() { 100 var ua = navigator.userAgent; 101 var deviceType = (/iPad/.test(ua)) ? "t" : 102 (/Mobile|iP(hone|od)|Android|BlackBerry|IEMobile|Silk/.test(ua)) ? "m" : "d"; 103 var isMobile = /Mobile|iP(hone|od)|Android|BlackBerry|IEMobile|Silk/.test(ua); 104 var isDesktop = !isMobile; 105 106 var width = window.innerWidth; 107 var screenType = width <= 520 ? "mobile" : 108 width <= 820 ? "tablet" : "desktop"; 109 110 var cookieStart = parseInt(document.cookie.replace( 111 /(?:(?:^|.*;\s*)gtm-session-start\s*\=\s*([^;]*).*$)|^.*$/, "$1" 112 )); 113 var sessionSeconds = 0; 114 if (!isNaN(cookieStart)) { 115 sessionSeconds = Math.round((Date.now() - cookieStart) / 1000); 116 } 117 118 window.dataLayer = window.dataLayer && Array.isArray(window.dataLayer) ? window.dataLayer : []; 119 120 window.dataLayer.push({ 121 criteoDeviceType: deviceType, 122 isMobile: isMobile, 123 isDesktop: isDesktop, 124 screen_type: screenType, 125 atf_csp_nonce: "rT5+x+Vsgo3jrvfWYqqYbQ==", 126 event: "session_duration", 127 session_seconds: sessionSeconds, 128 em_hashed: "", 129 klaviyo_email_id: "", 130 klaviyo_first_name: "", 131 klaviyo_last_name: "", 132 klaviyo_encrypted_key: "", 133 klaviyo_user_id: "" }); 134})(); 135 136var gtm_paths = 'https://www.googletagmanager.com/gtm.js?id=GTM-5WB5DL2'; 137/** 138 * Pushes captured email data to the Google Tag Manager dataLayer 139 * for integration with Listrak email capture tracking. 140 * 141 * @function push_email_capture_data_to_listrak 142 * @param {string} listrak_Email_Id - The email address captured from the user. 143 * It will be trimmed and validated before use. 144 * @param {string} location - The source or location where the email was captured 145 * (e.g., 'footer', 'contact-us', 'business-page'). 146 * Defaults to 'unknown' if not provided. 147 * 148 * @description 149 * - Ensures the global `dataLayer` object exists and is an array. 150 * - Validates the captured email; if empty, the function exits without pushing. 151date 29 sep 2025 #40913952 152 */ 153function push_email_capture_data_to_listrak(listrak_Email_Id, location) { 154 // Ensure dataLayer exists 155 window.dataLayer = window.dataLayer && Array.isArray(window.dataLayer) 156 ? window.dataLayer 157 : []; 158 159 const email = (listrak_Email_Id || '').trim(); 160 if (!email) { 161 return; 162 } 163 164 // Push into dataLayer 165 dataLayer.push({ 166 event: 'Listrak_Email_Capture', 167 Listrak_Email_Id: email, 168 location: location || 'unknown' 169 }); 170 171} 172 173</script>
173 174 175 176<!-- Google Tag Manager -->
177<script nonce='rT5+x+Vsgo3jrvfWYqqYbQ=='>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': 178new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], 179j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 180'/m/?id='+i+dl;var n=d.querySelector('[nonce]'); 181n&&j.setAttribute('nonce',n.nonce||n.getAttribute('nonce'));f.parentNode.insertBefore(j,f); 182})(window,document,'script','dataLayer','GTM-5WB5DL2');</script>
182 183<!-- End Google Tag Manager --> 184
185<script nonce="rT5+x+Vsgo3jrvfWYqqYbQ==" src="https://cdn.jsdelivr.net/npm/[email protected]/dist/gsap.min.js"></script>
vendor: 1 bytes, line 185
185
186<script nonce="rT5+x+Vsgo3jrvfWYqqYbQ==" type="text/javascript"> 187 188 // function loadHeader() { 189 // fetch('https://www.arttoframe.com/header_desktop_static_demo_20260810.html').then(response=> response.text()).then(text=> document.getElementById('global_header').innerHTML = text); 190 // } 191 // loadHeader(); 192 // START: Load header and lazy-load Google GIS without blocking existing Sign In flow TW#43253481 2026-08-18 193 function loadHeader() { 194 195 fetch( 196 'https://www.arttoframe.com/header_desktop_static.html' 197 ) 198 .then(function(response) { 199 return response.text(); 200 }) 201 .then(function(text) { 202 203 document.getElementById('global_header').innerHTML = text; 204 205 /* 206 * Bind only the Google GIS lazy-loader to the asynchronously inserted 207 * SIGN IN link. Do not prevent the click or stop propagation here. 208 * 209 * The existing document-level #loginBtn handler remains responsible 210 * for opening #newLoginPopup and loading load_sign_in.js, preserving 211 * the existing email/password, reCAPTCHA and other Sign In behavior. 212 */ 213 $('#loginBtn') 214 .off('click.atfGoogleLoginFix') 215 .on('click.atfGoogleLoginFix', function() { 216 217 if ( 218 typeof window.atfLoadGoogleSignIn === 'function' 219 ) { 220 window.atfLoadGoogleSignIn(); 221 } 222 }); 223 }); 224 } 225 226 loadHeader(); 227 // END: Load header and lazy-load Google GIS without blocking existing Sign In flow TW#43253481 2026-08-18 228 229 230 $(document).ready(function() { 231 function adjustFontSize() { 232 // alert('hello'); 233 234 if (window.matchMedia("(min-width: 1024px) and (max-width: 1292px)").matches) { 235 ///alert('1293'); 236 237 $(".labelMenu").attr("style", "float:left;margin-bottom:0;margin-right:unset !important;padding-top:unset !important; font-weight: bold;font-size:15px!important;width: 28% !important"); 238 } else { 239 if (window.matchMedia("(min-width: 1133px) and (max-width: 1200px)").matches) { 240 241 242 //alert('1297'); 243 $(".labelMenu").attr("style", "float:left;margin-bottom:0;margin-right:unset !important;padding-top:unset !important; font-weight: bold;font-size:15px!important;width: 31% !important"); 244 }else{ 245 $(".labelMenu").attr("style", "float:left;margin-bottom:0;margin-right:unset !important;padding-top:unset !important; font-weight: bold;font-size:20px!important;width: 31% !important"); 246 247 248 } 249 250 } 251 } 252 253 // Adjust on page load 254 adjustFontSize(); 255 256 // Adjust on window resize 257 $(window).resize(function() { 258 adjustFontSize(); 259 }); 260}); 261 262 263 264 265</script>
265 266
267<script nonce="rT5+x+Vsgo3jrvfWYqqYbQ==" type="text/javascript"> 268function close_me() { 269 $(".cartResponse").hide(), $(".cartResponse").parent().hide(), $(".cartResponseoverlay").hide() 270} 271var screen_width = window.innerWidth, 272 screen_height = window.innerHeight; 273 274function store_users_registeredId(e) { 275 var r = navigator.userAgent.toLowerCase().indexOf("firefox"), 276 s = navigator.userAgent.toLowerCase().indexOf("chrome"), 277 t = ""; 278 r > 1 ? t = "firefox" : s > 1 && (t = "chrome"), $.ajax({ 279 type: "POST", 280 url: "//www.arttoframe.com/notifications/store_registrationids.php", 281 data: { 282 registration_id: e, 283 uBrowser: t 284 }, 285 success: function(e) { 286 return "sucess" == (e = JSON.parse(e)).status ? 1 : 0 287 } 288 }) 289}; 290</script>
290 291
292<script nonce="rT5+x+Vsgo3jrvfWYqqYbQ==" id="mcjs"> 293var nonce ="rT5+x+Vsgo3jrvfWYqqYbQ==" 294! function(c, h, i, m, p) { 295 m = c.createElement(h), p = c.getElementsByTagName(h)[0], m.async = 1, m.setAttribute('nonce', nonce),m.src = i, p.parentNode.insertBefore(m, p) 296}(document, "script", 297 "https://chimpstatic.com/mcjs-connected/js/users/cfc0b490139c564a98ce41f3e/4f00dd67e65f36d2176f9bd34.js"); 298</script>
vendor: 2 bytes, line 298
298
299<script nonce="rT5+x+Vsgo3jrvfWYqqYbQ==" type="text/javascript"> 300var loginProcessUrl = "https://www.arttoframe.com/custom_framing/"; 301 302function ValidateEmailnew(email) { 303 // var expr = /^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/; 304 var expr = /^([\w-+\.]+)@((\[[0-9]{1,8}\.[0-9]{1,8}\.[0-9]{1,8}\.)|(([\w-]+\.)+))([a-zA-Z]{2,8}|[0-9]{1,8})(\]?)$/; 305 306 return expr.test(email); 307} 308 309 310 $("#navlogin_popup2").on('submit', function(e) { 311 // alert("not submited"); 312 return false; 313 }); 314 315 $("#settoSearch4").on('submit', function(e) { 316 return settoSearch4(); 317 }); 318 319 $("#settoSearch").on('submit', function(e) { 320 return settoSearch(); 321 }); 322 $("#productimgform").on('submit', function(e) { 323 return validateForm(); 324 }); 325 326 $("#navforgot_popup").on('submit', function(e) { 327 // alert("not submited"); 328 return false; 329 }); 330 $("#forgot_sub").click(function() { 331 if ($("#username_forgot_popup").val() != '') { 332 $('#username_forgot_popup').removeClass('errorborder'); 333 var data = { 334 username_forgot: $("#username_forgot_popup").val(), 335 from_login_popup: 1, 336 action: 'forgot' 337 } 338 if (!ValidateEmailnew($("#username_forgot_popup").val())) { 339 $('#username_forgot_popup').addClass('errorborder'); 340 return false; 341 } 342 // Send email to forgot password user email id 343 $.post("https://www.arttoframe.com/loginprocess.php", data, function(response) { 344 var result = $.parseJSON(response); 345 if (result.status == '1') { 346 $(".loginError2 span").html("*Reset password Link sent to your email ID"); 347 $(".loginError2 span").css('color', 'green'); 348 $(".loginError2").show(); 349 } else { 350 $(".loginError2 span").css('color', 'red'); 351 $(".loginError2 span").html("*Email not available"); 352 $(".loginError2").show(); 353 } 354 }); 355 } 356 357 }); 358 359 $("#popup_login").click(function() { 360 var apply_coupon_code_status = $("#apply_coupon_code_status").val(); 361 if ($("#email_popup").val() != '' && $("#pass_popup").val() != '') { 362 //var remember_me = $("#remember_me").val() 363 $('#email_popup').removeClass('errorborder'); 364 var remember_me_val = 0; 365 if ($("#remember_me").prop('checked') == true) { 366 remember_me_val = 1; 367 } 368 var data = { 369 username: $("#email_popup").val(), 370 password: $("#pass_popup").val(), 371 remember: remember_me_val, 372 action: 'login', 373 } 374 if (!ValidateEmailnew($("#email_popup").val())) { 375 // alert("Please Enter Valid Email Address"); 376 $('#email_popup').addClass('errorborder'); 377 return false; 378 } 379 380
vendor: 201 bytes, lines 380-386
380window.dataLayer = window.dataLayer || []; 381 382 function gtag() { 383 dataLayer.push(arguments); 384 } 385 gtag('js', new Date()); 386 gtag('config', '
386AW-1067051578
vendor: 17 bytes, lines 386-387
386'); 387
387gtag('event', 'conversion', { 388 'send_to': 'AW-1067051578/5ZazCNacw6ADELrU5_wD' 389 }); 390 //alert(loginProcessUrl+"preview/loginprocess.php"); 391 $.post("https://www.arttoframe.com/loginprocess.php", data, function(response) { 392 var result = $.parseJSON(response); 393 if ((typeof result.zaius_login_redirect_cart_url !== 'undefined') && (result 394 .zaius_login_redirect_cart_url != '')) { 395 396 if (result.user_popup_status == '1') { 397 $("#fromLoginRedirectUrl").val(decodeURIComponent(result 398 .zaius_login_redirect_cart_url)); 399 $('#newLoginPopup').modal('hide'); 400 $('#userInfoPopup').modal('show'); 401 402 } else { 403 var zaius_email = $("#email_popup").val(); 404 var pathname = window.location.pathname; 405 406 if (pathname == "/") { 407 var zaius_pathname_url = '/index'; 408 } else { 409 var zaius_pathname_url = pathname; 410 } 411 412 if (pathname == "/") { 413 pathname = '/homepage'; 414 } 415 416 if (pathname != "/receipt.php") { 417 zaius.subscribe({ 418 list_id: 'newsletter', 419 email: zaius_email, 420 subscribed: 'true', 421 signup_source: 'Header signup', 422 'page': zaius_pathname_url 423 }); 424 } 425 426
vendor: 261 bytes, lines 426-432
426window.dataLayer = window.dataLayer || []; 427 428 function gtag() { 429 dataLayer.push(arguments); 430 } 431 gtag('js', new Date()); 432 gtag('config', '
432AW-1067051578
vendor: 29 bytes, lines 432-433
432'); 433
433gtag('event', 'conversion', { 434 'send_to': 'AW-1067051578/5ZazCNacw6ADELrU5_wD' 435 }); 436 437 $("#zaius_login_button").click(); 438 setTimeout(function() { 439 window.location.href = decodeURIComponent(result 440 .zaius_login_redirect_cart_url); 441 }, 1000); 442 } 443 444 445 } else if ((typeof result.user_redirect_product_page !== 'undefined') && (result 446 .user_redirect_product_page != '')) { 447 448 if (result.user_popup_status == '1') { 449 $("#fromLoginRedirectUrl").val(decodeURIComponent(result 450 .user_redirect_product_page)); 451 $('#newLoginPopup').modal('hide'); 452 $('#userInfoPopup').modal('show'); 453 } else { 454 455 var zaius_email = $("#email_popup").val(); 456 var pathname = window.location.pathname; 457 if (pathname == "/") { 458 var zaius_pathname_url = '/index'; 459 } else { 460 var zaius_pathname_url = pathname; 461 } 462 463 if (pathname == "/") { 464 pathname = '/homepage'; 465 } 466 467 if (pathname != "/receipt.php") { 468 zaius.subscribe({ 469 list_id: 'newsletter', 470 email: zaius_email, 471 subscribed: 'true', 472 signup_source: 'Header signup', 473 'page': zaius_pathname_url 474 }); 475 } 476 477 $("#zaius_login_button").click(); 478 setTimeout(function() { 479 window.location.href = decodeURIComponent(result 480 .user_redirect_product_page); 481 }, 1000); 482 } 483 484 485 } else if (result.status == '1') { 486 487 if (result.user_popup_status == '1') { 488 $("#fromLoginRedirectUrl").val("https://www.arttoframe.com/search"); 489 $('#newLoginPopup').modal('hide'); 490 $('#userInfoPopup').modal('show'); 491 } else { 492 var zaius_email = $("#email_popup").val(); 493 var pathname = window.location.pathname; 494 if (pathname == "/") { 495 var zaius_pathname_url = '/index'; 496 } else { 497 var zaius_pathname_url = pathname; 498 } 499 500 if (pathname != "/receipt.php") { 501 zaius.subscribe({ 502 list_id: 'newsletter', 503 email: zaius_email, 504 subscribed: 'true', 505 signup_source: 'Header signup', 506 'page': zaius_pathname_url 507 }); 508 } 509 510 $("#zaius_login_button").click(); 511 setTimeout(function() { 512 if (apply_coupon_code_status == 1) { 513 window.location.href = 514 "https://www.arttoframe.com/cart.php"; 515 } else { 516 window.location.href = 517 "https://www.arttoframe.com/search"; 518 } 519 }, 1000); 520 } 521 522 } else { 523 524 $(".loginError span").html("*Enter valid User-Name & Passowrd"); 525 $(".loginError").show(); 526 } 527 }); 528 } else { 529 $("#pass_popup").addClass('errorborder'); 530 $('#email_popup').addClass('errorborder'); 531 } 532 });
533 534 $('.flink').click(function() { 535 $('.forgot_div').toggle(); 536 }); 537 538 /*$('.flink2').click(function(){ 539 $('#newLoginPopup').modal('show'); 540 });*/ 541// }); 542$('#email_popup').change(function() { 543 var email_id = $("#email_popup").val(); 544 // console.log("email_popup1==========>" + email_id); 545 dataLayer.push({ 546 'zaius_email_id': email_id 547 }); 548 549}); 550 551function userInfoModalClose() { 552 // $("#userInfoPopup").modal('hide'); 553 $("#userInfoPopup").css('display', 'none'); 554} 555var specialCharStringArray = [33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 58, 59, 60, 61, 62, 63, 64, 556 91, 92, 93, 94, 95, 96, 123, 124, 125, 126 557]; 558 559function characterUsersInfosonly(e) { 560 var unicode = e.charCode ? e.charCode : e.keyCode 561 if ((unicode != 8 || unicode != 0 || unicode != 32)) // 8=backspace; 0=numpad; 32=space 562 { 563 //alert(unicode); 564 if (unicode >= 47 && unicode <= 57 || $.inArray(unicode, specialCharStringArray) != -1) //if a number 565 return false; //disable key press 566 } 567} 568 569function popup_userinfo() { 570 if ($("#user_firstname_popup").val() != '' && $("#user_lastname_popup").val() != '') { 571 $('#user_firstname_popup').removeClass('errorborder'); 572 $('#user_lastname_popup').removeClass('errorborder'); 573 var remember_me_val = 0; 574 var data = {
575 userfirstname: $("#user_firstname_popup").val(), 576 userlastname: $("#user_lastname_popup").val(), 577 fromLoginRedirectUrl: $("#fromLoginRedirectUrl").val(), 578 action: 'userInfo_update', 579 } 580 $.post("https://www.arttoframe.com/user_info_popup_submit.php", data, function(response) { 581 var result = $.parseJSON(response); 582 if (result.status == 1) { 583 $('#userInfoMsg').html( 584 "<div class='alert alert-success'><strong>Success!</strong> User missing information updated successfully</div>" 585 ); 586 587 if (result.fromLoginRedirectUrl != 0) { 588 setTimeout(function() { 589 window.location.href = result.fromLoginRedirectUrl; 590 }, 1000); 591 } else { 592 setTimeout(function() { 593 location.reload(); 594 }, 1000); 595 } 596 } else { 597 $(".userInfoError span").html("Problem is occured while updating user missing information"); 598 $(".userInfoError").show(); 599 } 600 }); 601 } else { 602 603 $("#user_firstname_popup").addClass('errorborder'); 604 $('#user_lastname_popup').addClass('errorborder'); 605 } 606} 607 608flag = 0, $(function() { 609 $(".new-notification-text,#reduct_action").click(function() { 610 "message" == msg_type && null != notification_data && (0 == flag ? ($(".notification_message") 611 .css("display", "block"), flag = 1) : ($(".notification_message").css("display", 612 "none"), flag = 0)) 613 }), $(".closeNotification").click(function() { 614 $("#notification_data").hide(), $.post("/hideNotification.php", function(i) { 615 $("#notification_data").hide() 616 }) 617 }) 618}); 619 620 // $('.header_search_sizes').keypress(function() { 621 // return testField(e); 622 // }); 623 624// START: Use Google GIS HTML API as the single Google button owner TW#43253481 2026-08-18 625/* 626 * The Google button configuration lives in the generated/static header markup 627 * using g_id_onload/g_id_signin. 628 * 629 * Do not call google.accounts.id.initialize(), renderButton() or prompt() here. 630 * Keeping one HTML API owner avoids duplicate GIS/FedCM configuration. 631 * Existing credential/login helper functions below are intentionally preserved 632 * because they may still be referenced by other existing Google login flows. 633 */ 634// END: Use Google GIS HTML API as the single Google button owner TW#43253481 2026-08-18 635 636function post_data_for_log(parameter){ 637 $.post("https://www.arttoframe.com/generate_one_tap_log.php",parameter, function(response) 638 { 639 console.log(response); 640 //console.log(authDomain); 641 //window.location= authDomain; 642 }); 643} 644 function handleCredentialResponse(data){ 645 //alert("handleCredentialResponse"); 646 console.log(data); 647 648 Id_Token= data.credential; 649 $.ajax({
650 url: "https://www.googleapis.com/oauth2/v3/tokeninfo?id_token="+Id_Token, 651 type:'get', 652 success: function(response) { 653 if(response['email_verified'] == 'true'){ 654 var first_name=response.given_name; 655 var last_name =response.family_name; 656 displayName=response.name; 657 parameter={ 658 email:response['email'], 659 sub_token:response['sub'], 660 display_name: displayName, 661 firstname:first_name, 662 lastname:last_name 663 664 }; 665 console.log("parameter===="); 666 console.log(parameter); 667 668 parameter_for_one_tap={ 669 type:'Successfully login', 670 name:'User Login', 671 message: 'User successfully login on site', 672 username:response['email'] ,//email id of user 673 }; 674 675 post_data_for_log(parameter_for_one_tap); 676 $.post("https://www.arttoframe.com/signup.php",parameter, function(response) 677 { 678 if(window.location.href =='https://www.arttoframe.com/?signedout'){ 679 window.location = 'https://www.arttoframe.com/cart'; 680 }else{ 681 window.location = window.location.href; 682 } 683 684 }); 685 686 } 687 }, 688 error: function(xhr) { 689 //Do Something to handle error 690 } 691 }); 692 693 } 694 695 </script>
695 696 697<!-- START: Lazy-load Google GIS library for login modal TW#43253481 2026-08-18 -->
698<script nonce="rT5+x+Vsgo3jrvfWYqqYbQ=="> 699window.atfLoadGoogleSignIn = function() { 700 /* 701 * The static login header is already present before this function runs. 702 * Loading the GIS client at this point lets the HTML API parse 703 * g_id_onload/g_id_signin and render the Google button once. 704 */ 705 if ( 706 window.google && 707 google.accounts && 708 google.accounts.id 709 ) { 710 return; 711 } 712 713 /* 714 * Prevent duplicate Google GIS library requests when SIGN IN is clicked 715 * more than once or another component has already requested the library. 716 */ 717 if ( 718 document.querySelector( 719 'script[src^="https://accounts.google.com/gsi/client"]' 720 ) 721 ) { 722 return; 723 } 724 725 var googleGsiScript = document.createElement('script'); 726 727 googleGsiScript.src = 'https://accounts.google.com/gsi/client'; 728 googleGsiScript.async = true; 729 googleGsiScript.defer = true; 730 731 /* 732 * Preserve the current page CSP nonce for the dynamically created script. 733 */ 734 googleGsiScript.setAttribute( 735 'nonce', 736 'rT5+x+Vsgo3jrvfWYqqYbQ==' 737 ); 738 739 document.head.appendChild(googleGsiScript); 740}; 741</script>
741 742<!-- END: Lazy-load Google GIS library for login modal TW#43253481 2026-08-18 --> 743</head> 744 745<span id="gtmScript" style="display:none">rT5+x+Vsgo3jrvfWYqqYbQ==</span> 746<span id="global_header"></span> 747<a style="display:none;" class="openNewOfferPopup">open</a> 748<div id="newOfferPopup_display" class="modal in" role="dialog" aria-labelledby="newOfferPopup" aria-hidden="false" style="display:none; z-index:2147483647;"> 749 <div class="modal-dialog" style="max-width:970px; width:97%; margin:0 auto; top:8%; border-radius:0px; clear:both;"> 750 <div class="modal-content" style="max-width:970px; width:97%; height:auto; background:#0063a7; border-radius:0px; padding:8px; clear:both;" > 751 <div class="modal-header" style="border-bottom:none; text-align:center; padding:0px;"> 752 <button type="button" class="close" id="closeofferpopup" data-dismiss="modal"></button> 753 <img loading="lazy" src="https://www.arttoframe.com/images/discount_head.png" width="234" height="56" alt="discount_head"/> 754 </div> 755 <div class="modal-body" style="clear:both; padding:14px 14px 12px; text-align:center; height: auto !important;"> 756 <div class="col-xs-12" style="clear:both; padding: 13px 4px; background:#fff;"> 757 <p class="modal-title-discount"> 758 <span class="show_mark show-mark-sprite" id="show_mark_success_display"> 759 760 </span> 761 <span class="applied_text"></span> 762 </p> 763 <p class="modal-sub-title-discount2 applied_coupon applied_coupon_subtitle1">This coupon code can be used for <span class="applied_couponcode"></span></p> 764 <p class="modal-sub-title-discount2 applied_coupon_subtitle2" style="clear:both; text-align:center;">Promo codes cannot be stacked. Promotions do not apply to any product over 29x41 on the outside size.</p> 765 766 </div> 767 <p class="modal-sub-title-discount2" style="clear:both;"></p> 768 </div> 769 </div> 770 </div> 771</div> 772<div class="modal fade" id="imageInvalid" role="dialog" style="z-index:99999 !important"> 773 <div class="modal-dialog"> 774 <div class="modal-content"> 775 <div class="modal-body" style="padding: 1px !important;"> 776 <img src="https://www.arttoframe.com/custom_framing/preview/images/cf_max_size_validation.png" 777 height="60" width="60" loading="lazy" style="display: block;margin-left: auto; margin-right: auto;"> 778 <h3 779 style="text-align: center; color:#0095DA;font-size: 24px;margin-top: 20px;margin-bottom:10px;font-family: 'Product Sans',Arial,sans!important"> 780 Invalid Image, Please upload Valid JPG Image</h3> 781 </div> 782 <div class="modal-footer" style="padding: 15px;"> 783 <button type="button" class="btn btn-default" data-dismiss="modal">Close</button> 784 </div> 785 </div> 786 </div> 787</div> 788 789<!-- added to testing --> 790<div id="newOfferPopup" class="modal in" role="dialog" aria-labelledby="newOfferPopup" aria-hidden="false" style="display:none; z-index:2147483647;"> 791 <div class="modal-dialog" style="max-width:970px; width:97%; margin:0 auto; top:8%; border-radius:0px; clear:both;"> 792 <div class="modal-content" style="max-width:970px; width:97%; height:auto; background:#0063a7; border-radius:0px; padding:8px; clear:both;" > 793 <div class="modal-header" style="border-bottom:none; text-align:center; padding:0px;"> 794 <button type="button" class="close" data-dismiss="modal">×</button> 795 <img loading="lazy" src="https://www.arttoframe.com/images/discount_head.png" width="234" height="56" alt="discount_head"/> 796 </div> 797 <div class="modal-body" style="clear:both; padding:14px 14px 12px; text-align:center;"> 798 <div class="col-xs-12" style="clear:both; padding: 13px 4px; background:#fff;"> 799 <p class="modal-title-discount"> 800 <span class="show_mark show-mark-sprite" id="show_mark_success"></span> 801 <span class="applied_text"></span> 802 </p> 803 <p class="modal-sub-title-discount2">You have a different promo code?</p> 804 <div class="col-xs-12" style="clear:both; padding:5px 20px; text-align:center;"> 805 <input type="text" class="discount_codes" name="discount_codes" id="discount_codes" placeholder="CODE" > 806 <button class="btn btn-primary apply_btn_disc" id="apply_new_coupons"> Apply</button> 807 <p class="invalid_coupon"> Invalid coupon code</p> 808 <p class="applied_coupon_succes">Coupon code has been applied successfully </p> 809 </div> 810 <p class="modal-sub-title-discount2" style="clear:both; text-align:center;">Only one code can be used per order. </p> 811 </div> 812 <p class="modal-sub-title-discount2" style="clear:both;"></p>
813 </div> 814 </div> 815 </div> 816</div> 817<div id="myModalcomingsoon" class="modal" role="dialog"> 818 <div class="modal-dialog" style="width:480px;height: 40% !important;"> 819 <div class="modal-content" style="height:auto !important;"> 820 <div class="modal-header headercopy"> 821 <div id="closeBtn1"> ✖</div> 822 <div style="text-align:center;" class="logo_sprite"></div> 823 </div> 824 <div class="modal-body modalbodycopy"> 825 <p class="text_coming">Coming Soon</p> 826 <p class="text_working">We are still working on it</p> 827 </div> 828 <div class="modal-footer footercopy"> 829 <form method="POST" action="pictureframe_search.php"> 830 <input type="email" name="email" class="form-controlyoutube emails" placeholder="Your email to get notified" style="margin-left:80px;" required> 831 <input type="submit" value=" " class="btnsentemail" /> 832 <input type="hidden" name="action" value="mail_sent_btn1" id="action_btn1" /> 833 <p id="emailidsent1" style="display:none;">Email has been sent.</p> 834 </form> 835 </div> 836 </div> 837 </div> 838</div> 839<div id="myModalcomingsoonImage" class="modal" role="dialog"> 840 <div class="modal-dialog" style="height: 44% !important;"> 841 <div class="modal-content"> 842 <div class="modal-header headercopy1"> 843 <div id="closeBtn2"> ✖</div> 844 </div> 845 <div class="modal-body modalbodycopy1"> 846 <div class="col-xs-12" style="padding:20px 0px 20px 0px;"> 847 <div class="col-xs-4"> 848 <img src="" class="imginmodal"> 849 </div> 850 <div class="col-xs-7" style="padding:0px;"> 851 <div style="padding-left:70px;" class="atf-logo_cls_sprite"></div> 852 <p class="text_coming1">Coming Soon</p> 853 <p class="text_2">Design Your Own Lamp</p> 854 <p class="text_3">Art Shade Lightning</p> 855 <form method="POST" action="pictureframe_search.php" name="productimgform" id="productimgform"> 856 <input type="email" name="email" class="form-controlyoutube1 emails1" placeholder="Your email to get notified" required> 857 <input type="submit" value=" " class="btnsentemail1" required/> 858 <input type="hidden" name="action" value="mail_sent_btn" id="action_btn" /> 859 </form> 860 <p id="emailidsent" style="display:none;">Email has been sent.</p> 861 </div> 862 <div class="col-xs-1"></div> 863 </div> 864 </div> 865 <div class="modal-footer footercopy1"> 866 </div> 867 </div> 868 </div> 869</div> 870 871 <div id="cfuploadProcess_cf" role="dialog" class="modal fade"> 872 <div class="modal-dialog upload_dialog"> 873 <div class="modal-content noBorderCls radius_border"> 874 <div class="modal-body nopadding"> 875 <div class="container full_width nopadding nomargin"> 876 <div class="row"> 877 <div id="Upload_content_neww" class="col-sm-12 col-md-12 col-xs-12 col-lg-12"> 878 <div class="col-sm-12 col-md-12 col-xs-12 col-lg-12"> 879 <div dropzone="" class="col-sm-12 col-md-12 col-xs-12 col-lg-12 upload_ic_area dropzone" draggable="true"> 880 881 <img loading="lazy" src="https://www.arttoframe.com/images/camera_green.svg" class="img-responsive center-block camera_upload_cf" data-value="upload"><button type="button" data-value="upload" class="btn upload-btn-wrapper_cf"> Upload photo <input type="file" name="file_custom_upload_image" id="file_custom_upload_image" accept=".png,.jpg,.jpeg,.bmp" class="errorBorder" style="display: none;"></button> 882 <p class="drag_titles">OR DRAG AND DROP YOUR FILE</p> 883 </div> 884 <input type="file" name="file" id="cffiles_cf" accept="image/jpeg" class="errorBorder" style="display: none;"> 885 </div> 886 <div class="col-sm-12 col-md-12 col-xs-12 col-lg-12"> 887 <div class="col-sm-9 col-md-9 col-xs-9 col-lg-9 nopadding"> 888 <p class="UploadProcess_note">Please note: Currently we allow for JPG and JPEG files. <span class="info_Icon_upload"><img loading="lazy" src="https://www.arttoframe.com/images/info_20.svg" class="img-responsive"></span></p> 889 </div> 890 <div class="col-sm-3 col-md-3 col-xs-3 col-lg-3 nopadding"><button type="button" class="uploadProcess_cancel">Cancel</button></div> 891 <div class="col-sm-12 col-md-12 col-xs-12 col-lg-12 nopadding information_upload" style="display: none;"> 892 <ul > 893 <li >We allow for a maximum file upload size of 150MB.</li> 894 <li >For larger file types you can email us a WeTransfer or Dropbox link. For this method please use a test image that clearly states that the uploaded image is "N
894ot To Be Printed."</li> 895 <li >For the most accurate color reproduction please use RGB files.</li> 896 <li >By uploading an image, you affirm that you own or have permission to print this image. We reserve the right to not print any copyrighted images.</li> 897 </ul> 898 </div> 899 </div> 900 </div> 901 <div id="process_content_custom_upload_image" class="col-sm-12 col-md-12 col-xs-12 col-lg-12" style="display: none;"> 902 <div class="col-sm-12 col-md-12 col-xs-12 col-lg-12"> 903 <div class="uploading_title">UPLOADING</div> 904 <div class="uplaoding_img"><img src="" id="imgSrc_custom_upload_image" class="img-responsive center-block"></div> 905 <div class="upload_progress" style="text-align: left"> 906 <p class="src-onlyn">%</p> 907 <div class="progress"><progress max="100" style="width: 0%;" value="0"></progress></div> 908 </div> 909 </div> 910 <div class="col-sm-12 col-md-12 col-lg-12"><button type="button" class="uploadProcess_cancel">Cancel</button></div> 911 </div> 912 </div> 913 <div id="Edit_content_new" class="col-sm-12 col-md-12 col-xs-12 col-lg-12 nopadding" style="display: none;"> 914 <div class="col-sm-12 col-md-12 col-xs-12 col-lg-12 cropareas"> 915 <div class="col-sm-12 col-md-12 col-xs-12 col-lg-12 crop_subarea"> 916 <div class="col-md-12 col-sm-12 col-lg-12 col-xs-12 previewContainer" style="display: none;" > 917 <div class="positionContainer"> 918 <div class="noImagePositionEditor"></div> 919 <img id="cfpositonPreview_cf" style='' src="" /> 920 </div> 921 <div id="loader2" style="display: none;"></div> 922 <input type="hidden" class="sizebox_up editPopupCustomWidth"> 923 <input type="hidden" class="sizebox_up editPopupCustomHeight"> 924 </div> 925 926 </div> 927 </div> 928 <div class="col-sm-12 col-md-12 col-xs-12 col-lg-12 validationErrorCrop"> 929 <p > Please select area of minimum size 4" x 6" Maximum size 56" x 56"</p> 930 </div> 931 <div class="col-sm-12 col-md-12 col-xs-12 col-lg-12 nopadding topBorders"> 932 <ul class="crop_Options" style="padding-top: 14px; padding-bottom: 14px;"> 933 <li><button type="button" class="confirmBtns">CONFIRM</button></li> 934 </ul> 935 </div> 936 </div> 937 </div> 938 </div> 939 </div> 940 </div> 941</div> 942 943<div class="modal modalPopup" id="selectProductForUploadedImg" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true" style="top:30px;"> 944 <div class="modal-dialog confrmdialog confrmdialog_id" style="width:1115px;margin:0px auto;"> 945 <div class="modal-content confrmdialog" style="text-align: center;background: #f0f0ec none repeat scroll 0 0;background-color:#024a94 !important;width:1100px !important;height:auto; color: #fff; margin: 0px auto !important;"> 946 <div class="topHeaders" > 947 <div class="topBottomSpacing" style="text-align:center;padding: 8px 0px"> 948 <p> 949 <b><span style="font-size:18px" >Select a Product for Your Art</span></b> 950 </p> 951 </div> 952 <div id="butnCloseforconfirmModal" style="float: right; cursor: pointer;"> 953 <span style="color: #fff;">✖</span> 954 </div> 955 </div> 956 957 <div class="modal-body nospacesBody" style="text-align:center; padding: 41px 33px; position: relative;background-color: #fff"> 958 <div class="row"> 959 <div class="card col-sm-12 col-md-12 col-lg-12 col-xs-12 nospaces"> 960 961 <div class="card col-sm-4 col-md-4 col-lg-4 col-xs-4 nosp
961aces" style=" height: 329px;"> 962 <img src="" id="selected_pod_image_1" class="img-responsive" style="margin:auto;padding-top: 15%;max-width: 100%;max-height: 329px;"> 963 </div> 964 965 966 967 <div class="card col-sm-12 col-md-8 col-lg-8 col-xs-12 nospaces" id="appendPopHere"> 968 </div> 969 </div> 970 <div class="col-xs-12" style="margin-top: 5%;"> 971 <button type="button" class="closeBtns btn btn-success" style="width: auto;float: right; margin-left: 5px;">Close</button> 972 <button type="button" class="closeBtns btn btn-warning anotherImageUp" style="width: auto;float: right;">Upload Another Image</button> 973 </div> 974 </div> 975 </div> 976 </div> 977 </div> 978 </div> 979 980<!-- added to testing --> 981 982 983<!-- start : added code to fix frame sizes validation issue date: 25-07-22 -->
984<script nonce="rT5+x+Vsgo3jrvfWYqqYbQ=="> 985//product pages 986 987var size_validation_fail_check = 0; 988var setModalTexMain = "Minimum size limit"; 989var setModalTex1 = "Please enter a minimum size of [SIZE1]″ x [SIZE2]″"; 990var setModalTex2 = "and maximum finish size of [SIZE1]″ x [SIZE2]″ "; 991 992//mobile product pages 993var setModalTexMain_mob = "Minimum size limit"; 994var setModalTex1_mob = "Please enter a minimum size of [SIZE1]″ x [SIZE2]″"; 995var setModalTex2_mob = "and maximum finish size of [SIZE1]″ x [SIZE2]″ "; 996 997//product pages 998var setModalTexMain_oversize = "Oversize limit"; 999var setModalTex1_oversize = "The complete size should be less than or equal"; 1000var setModalTex2_oversize = "to [SIZE1]″ x [SIZE2]″ "; 1001var setModalTex3_oversize = ""; 1002 1003//mobile product pages 1004var setModalTexMain_oversize_mob = "Oversize limit"; 1005var setModalTex1_oversize_mob = "The complete size should be less than or equal"; 1006var setModalTex2_oversize_mob = ""; 1007var setModalTex3_oversize_mob = "[SIZE1]″ x[SIZE2]″ "; 1008 1009 1010//header pages 1011var setModalTexMain_header = "Minimum size limit"; 1012var setModalTex1_header = "Please enter a minimum size of 3″ x 3″"; 1013var setModalTex2_header = "and maximum finish size of 85″ x 85″"; 1014 1015//search pages 1016var setModalTexMain_search = "Minimum size limit"; 1017var setModalTex1_search = "Please enter a minimum size of 3″ x 3″"; 1018var setModalTex2_search = "and maximum finish size of 85″ x 85″"; 1019 1020//CF pages 1021var setModalTexMain_CF = "Minimum size limit"; 1022var setModalTex1_CF = "Please enter a minimum size of [SIZE1]″ x [SIZE2]″"; 1023var setModalTex2_CF = "and maximum finish size of [SIZE1]″ x [SIZE2]″"; 1024 1025//CF pages oversize 1026var setModalTexMain_oversize_CF = "Oversize limit"; 1027var setModalTex1_oversize_CF = "The complete size should be less than or equal"; 1028var setModalTex2_oversize_CF = "to [SIZE1]″ x[SIZE2]″ "; 1029var setModalTex3_oversize_CF = ""; 1030 1031//CF Pages Personalization validation 1032var setModalTexMain_CF_Personalization = "Minimum size limit"; 1033var setModalTex1_CF_Personalization = "Please enter a minimum top mat size of 2″"; 1034var setModalTex2_CF_Personalization = "and minimum top mat size of 3″ when third mat is applied."; 1035 1036//header pages 1037var setModalTexMain_matonly = "Minimum size limit"; 1038var setModalTex1_matonly = "Please enter a minimum size of 3″ x 3″"; 1039var setModalTex2_matonly = "and maximum finish size of 40″ x 60″"; 1040 1041//js file values 1042var showLoginPopup = ""; 1043 1044var hideshow_chatoption = ""; 1045var businesshrs_hideshow = ""; 1046var server_script_name = "/cart.php"; 1047 1048</script>
1048 1049 1050 1051<!-- end : added code to fix frame sizes validation issue date: 25-07-22 --> 1052 1053<!-- start: added code to fix coupon code popup issue date : 26-07-22 --> 1054 1055 1056 1057<!-- end : added code to fix paypal and price issue date : 22-07-22 -->
1058<script nonce="rT5+x+Vsgo3jrvfWYqqYbQ=="> 1059 var isImageUp = false; 1060var uploaded_image_image = ""; 1061var uploaded_image_size = ""; 1062var uploaded_image_moo = ""; 1063var uploaded_image_file_path = ""; 1064var uploaded_image_directory_id = ""; 1065var cdn_url_1 = 'https://www.arttoframe.com'; 1066var menubarcompact = 'https://www.arttoframe.com/images/menu-bar-compact.png'; 1067var menudark = 'https://www.arttoframe.com/images/menu-dark-2.png'; 1068var get_last_directory_id = ""; 1069 1070function update_click_count(c,a,t){$.ajax({type:"POST",url:"https://www.arttoframe.com/get_api_home_response.php",data:{menu:c,product_type:a,type:t},success:function(c){console.log(c)}})}$("#menu-bar-compact").click(function(){$("#idd").slideToggle("slow"),$(".shadow-container").css({"box-shadow":"1px 6px 3px -3px rgba(0,32,63,0.6)"}),$(".shadow-container").css({height:"unset"}),$(".top-navabr-new").css({"box-shadow":"unset"}),$(".menu-bar-compactcls").attr("src")===menubarcompact?$(".menu-bar-compactcls").attr("src",menudark):$(".menu-bar-compactcls").attr("src",menubarcompact)}); 1071 1072</script>
vendor: 1 bytes, line 1072
1072
1073<script nonce="rT5+x+Vsgo3jrvfWYqqYbQ=="> 1074 1075// start : code added to fix mini header issue : date : 08-08-2022 1076// end : code added to fix mini header issue : date : 08-08-2022 1077 1078 1079var loginProcessUrl = ""; 1080var fName = ''; 1081var get_last_directory_id = 0; 1082var msg_type = ''; 1083var notification_data = ''; 1084 1085/** 1086 * Safely expose request data to JavaScript. 1087 * 1088 * JSON_HEX_* flags encode dangerous characters such as <, >, quotes, and & 1089 * into Unicode escape sequences. This prevents reflected request values from 1090 * being interpreted as real HTML, JavaScript, or ESI markers in the browser or 1091 * by an edge/CDN/proxy layer. 1092 */ 1093 1094var request_data = {"HTTP_USER_AGENT":"Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; PageSourceSearchBot/1.0; +https://pagesourcesearch.com/bot) Chrome/128.0.0.0 Safari/537.36","request_uri":"/cart","script_name":"/cart.php"}; 1095var mcp_preview_permission_allowed = false; 1096var user_id = 0; 1097var global_cdn_url_4 = 'https://www.arttoframe.com'; 1098var enable_collapse = '0'; 1099var serverScriptName = '/cart.php'; 1100</script>
1100 1101 1102
1103<script nonce="rT5+x+Vsgo3jrvfWYqqYbQ==" type="text/javascript"> 1104 1105 1106$(document).ready(function(){ 1107 1108/* 1109if(enable_collapse != 1) { 1110 $(window).scroll(function() { 1111 var sticky = $('.sticky'), 1112 scroll = $(window).scrollTop(); 1113 if (scroll >= 50) { 1114 sticky.addClass('fixed'); 1115 $('.top-sub-navbar').hide(); 1116 $('.menu-bar-compactcls').show(); 1117 $('.logo-onscroll').css('padding-left','48%'); 1118 $('.notify_popup').hide(); 1119 }else{ 1120 sticky.removeClass('fixed'); 1121 $('.top-navabr-new').css({'box-shadow':'unset'}); 1122 $('.shadow-container').css({'box-shadow':'1px 6px 3px -3px rgba(0,32,63,0.6)','height':'unset'}); 1123 $('.top-sub-navbar').show(); 1124 $('#menu-bar-compact').hide(); 1125 $('.logo-onscroll').css('padding-left','0%'); 1126 $('.notify_popup').show(); 1127 } 1128 }); 1129} 1130*/ 1131 1132// Global change: Mini header need to hide permanently for desktop site for all pages. below code commented Mini header - Need to show only for CF / Mats Only page currently we have. - 20240723 1133 1134if(enable_collapse != 1) { 1135 $(window).scroll(function() { 1136 var sticky = $('.sticky'), 1137 scroll = $(window).scrollTop(); 1138 /*if (scroll >= 50) { 1139 sticky.addClass('fixed'); 1140 $('.top-sub-navbar').hide(); 1141 $('.menu-bar-compactcls').show(); 1142 $('.logo-onscroll').css('padding-left','48%'); 1143 $('.notify_popup').hide(); 1144 }else{*/ 1145 sticky.removeClass('fixed'); 1146 $('#myscrollmenu').removeClass('sticky'); 1147 $('.top-navabr-new').css({'box-shadow':'unset'}); 1148 $('.shadow-container').css({'box-shadow':'1px 6px 3px -3px rgba(0,32,63,0.6)','height':'unset'}); 1149 $('.top-sub-navbar').show(); 1150 $('#menu-bar-compact').hide(); 1151 $('.logo-onscroll').css('padding-left','0%'); 1152 $('.notify_popup').show(); 1153 // } 1154}); 1155} 1156else if(enable_collapse == 1) 1157{ 1158 1159 1160 $('.top-sub-navbar').addClass('display-none'); 1161 $('.logo-onscroll').css('padding-left','48%'); 1162 $('#menu-bar-compact').removeClass('display-none'); 1163 $('.shadow-container').removeClass('affix'); 1164 $('.shadow-container').css('position','relative'); 1165 1166 1167} 1168 1169 1170}); 1171</script>
vendor: 1 bytes, line 1171
1171
1172<script nonce="rT5+x+Vsgo3jrvfWYqqYbQ==" > 1173 /* 1174 TW#43153114 START 1175 Expose CAPTCHA values for header_js_block_dynamic_demo_20260709.js. 1176 Only #popup_login modal AJAX login uses this flow. 1177 TW#43153114 END 1178 */ 1179 var nonce = "rT5+x+Vsgo3jrvfWYqqYbQ=="; 1180 var nonce_urlenc = "rT5%2Bx%2BVsgo3jrvfWYqqYbQ%3D%3D"; 1181 var developer_mode = ""; 1182 window.ATF_GOOGLE_CAPTCHA_SITE_KEY = "6LcSCxsUAAAAALGIJmbXW2tGzr2_n-mLJPXzh12a"; 1183 window.ATF_CSP_NONCE = "rT5+x+Vsgo3jrvfWYqqYbQ=="; 1184 1185 var php_script_name = '/cart.php'; 1186</script>
vendor: 1 bytes, line 1186
1186
1187<script nonce="rT5+x+Vsgo3jrvfWYqqYbQ==" type="text/javascript" src="/header_desktop_dynamic.js?v=20260924135100"></script>
1187 1188<!-- START - Manage Coupon Popup Framing Advisor tracking. 20260923 -->
1189<script nonce="rT5+x+Vsgo3jrvfWYqqYbQ=="> 1190window.ATFMcpPopupTrackingConfig = { 1191 endpoint: '/ajax_manage_coupon_popup_tracking.php', 1192 source_key: 'bootstrap_desktop', 1193 required_coupon_type: 'custom_text', 1194 required_popup_type: 'ai_framing_advisor' 1195}; 1196</script>
vendor: 1 bytes, line 1196
1196
1197<script nonce="rT5+x+Vsgo3jrvfWYqqYbQ==" src="/js/manage_coupon_popup_tracking.js?v=20260923184200"></script>
1197 1198<!-- END - Manage Coupon Popup Framing Advisor tracking. 20260923 -->
1199<script nonce="rT5+x+Vsgo3jrvfWYqqYbQ==" type="text/javascript" src="/header_js_block_dynamic.js?v=20260909112900"></script>
1199 1200 1201
1202<script nonce="rT5+x+Vsgo3jrvfWYqqYbQ==" 1203 src="https://www.paypal.com/sdk/js?client-id=AY3M9j4DCwPKdAiCgsiu7-f5iIl3MCR8NuuQpNJlkmTHmf6Nd4xVRvyNs5mTT4ij1Mtqu5ZFx43IuXUt&components=messages,buttons¤cy=USD&enable-funding=paylater&disable-funding=card" crossorigin="anonymous" data-page-type="cart"> 1204</script>
1204 1205
1206<script nonce="rT5+x+Vsgo3jrvfWYqqYbQ==" type="text/javascript"> 1207//To declare js variables 1208var global_js_getCDNurl = "www.arttoframe.com"; 1209var global_js_getCDNurl1 = "www.arttoframe.com"; 1210var global_js_getCDNurl2= "www.arttoframe.com"; 1211var global_js_getCDNurl3= "www.arttoframe.com"; 1212var global_js_getCDNurl4= "www.arttoframe.com"; 1213var global_js_getCDNurl5= "www.arttoframe.com"; 1214var global_js_getCDNurl6= "www.arttoframe.com"; 1215</script>
1215 1216 1217
1218<script nonce="rT5+x+Vsgo3jrvfWYqqYbQ==" src="https://www.gstatic.com/firebasejs/8.1.2/firebase-app.js" integrity="sha384-dXB2A+Zakg4XdpkzMrde1hVd7pG0iiHdfrv5zOkVD2ydSL8SgvChKwZcAgvxadOJ" crossorigin="anonymous"></script>
vendor: 1 bytes, line 1218
1218
1219<script nonce="rT5+x+Vsgo3jrvfWYqqYbQ==" src="https://www.gstatic.com/firebasejs/8.1.2/firebase-database.js" integrity="sha384-0Bwl/2niGzqXB7c9YoX8bLxK8ml86q7cm5+7ZLNBarA4WOg6nG5cKcaJva5FT+x/" crossorigin="anonymous"></script>
1219 1220 1221 1222<!-- Add Firebase products that you want to use -->
1223<script nonce="rT5+x+Vsgo3jrvfWYqqYbQ==" defer src="https://www.gstatic.com/firebasejs/8.1.2/firebase-auth.js" integrity="sha384-RJHFi8hbvU8VNnglWW3TelrIurfGqkHFTnQCKh/jr3oIn2ksq0X9OAQzLuVNMNhM" crossorigin="anonymous"></script>
vendor: 1 bytes, line 1223
1223
1224<script nonce="rT5+x+Vsgo3jrvfWYqqYbQ==" defer src="https://www.gstatic.com/firebasejs/8.1.2/firebase-firestore.js" integrity="sha384-jVbNgmjAHLvCitQ4y4ilieF4anL69v6Z0pmkccwWMcvrSj7TF6QsjlYkDrCmbsBo" crossorigin="anonymous"></script>
vendor: 1 bytes, line 1224
1224
1225<script nonce="rT5+x+Vsgo3jrvfWYqqYbQ==" defer src="https://www.gstatic.com/firebasejs/7.13.1/firebase-storage.js" integrity="sha384-J63XbAvUfHwffxsAqV5OMRbX/hSroX7Z4KaI8T4j9jt9zl5nJXs2cRb1INEifyvi" crossorigin="anonymous"></script>
1225 1226<!-- Added below code for our system showing sign in with google popop for logedin user update as on 20230718-->
1227<script nonce="rT5+x+Vsgo3jrvfWYqqYbQ==" > 1228 window.onload = function() { 1229 if(user_id != "" && user_id > 0 ) { 1230 setTimeout(function() { 1231 $('#credential_picker_container').hide(); 1232 }, 1000); 1233 }; 1234 }; 1235 /**Added this function as per the script name we can hide and show the shop by size section Date:20251024 */ 1236 function hide_shop_by_size(){ 1237 const server_script_name = serverScriptName; 1238 for (var e = [ 1239 "/canvas_landing.php", 1240 "/canvas_acrylic/landing.php", 1241 "/windowpix_landing.php", 1242 "/window_shade.php", 1243 "/canvas_acrylic/index.php", 1244 "/canvas_acrylic/canvas_new.php", 1245 "/custom_framing/landing_cf.php", 1246 "/custom_framing.php", 1247 "/pictureframe_item_windowpix.php", 1248 "/pictureframe_search_pix.php", 1249 "/pictureframe_item_common_pix.php", 1250 "/custom_framing/landing_letterart.php", 1251 "/pictureframe_item_lamppix.php", 1252 "/pictureframe_search_lamppix.php", 1253 "/ng/pixProducts/index.php", 1254 "/glass_only.php", 1255 "/matsonly_landing.php", 1256 "/acrylic-landing.php", 1257 "/shadow_box_landing.php", 1258 "/shadow-box-frames.php", 1259 "/Gallery_wall_search.php", 1260 "/gallery_walls_product_page.php", 1261 "/pictureframe_item.php", 1262 "/product_new.php", 1263 "/desktop_product_new.php", 1264 "/product/index.php", 1265 "/puzzle_product.php" 1266 ], a = e.length, t = 0; t < a; t++) { 1267 console.log(e[t].trim() +"=="+ server_script_name.trim()); 1268 if (e[t].trim() == server_script_name.trim()) { 1269 setTimeout(() => { 1270 $(".tshopBySize").hide(), 1271 $(".tshopBySize2").hide(); 1272 }, 800); 1273 break; 1274 } 1275 $(".tshopBySize").show(), 1276 $(".tshopBySize2").show(); 1277 } 1278 1279 1280} 1281 1282hide_shop_by_size(); 1283</script>
1283
1283<script nonce="rT5+x+Vsgo3jrvfWYqqYbQ==" > 1284// $('.confirm-giftwrap').click(function(event){ 1285// return complet_gift(); 1286// }); 1287 1288$(document).on("click", ".gift_confirn_btn", function(event) { 1289 return complet_gift(); 1290 e.preventDefault(); 1291}); 1292 1293$('.gitfwrapoption').click(function(event){ 1294 gift_wrap_only(); 1295}); 1296 1297$('.valid-btn').click(function(event){ 1298 return complet_gift(); 1299}); 1300 1301$('.personlizednoteoption').click(function(event){ 1302 var gift_color = $(this).attr("data-gift_color"); 1303 applyCSS(gift_color); 1304}); 1305 1306$('.personlizednoteoptionImg').click(function(event){ 1307 var gift_color = $(this).attr("data-gift_color"); 1308 applyCSS(gift_color); 1309}); 1310 1311 1312</script>
1312 1313 1314<style> 1315.giftwrappercls ~ .modal-backdrop.in { z-index:99999;} 1316.giftwrappercls { 1317 z-index: 9999 !important; 1318} 1319.gift-wraps { 1320 padding-top: 61px; 1321 height: 387px; 1322} 1323.modal-body_gr { 1324 background-size: cover !important; 1325 height: 592px; 1326} 1327.clsShippingTbl, 1328.clsShippingTbl2 { 1329 font-size: 14px; 1330 margin: 0 auto; 1331 width: 96%; 1332} 1333.clsShippingTbl2 { 1334 width: 100%; 1335 margin-top: 3px; 1336} 1337.gift-close{ 1338 position: absolute; 1339 right: 0; 1340 top: 4px; 1341 text-shadow: none; 1342 opacity: 1; 1343 box-shadow: none; 1344} 1345.gift-wraps{ 1346 padding-top: 61px 1347} 1348.clsShippingTbl2 tr { 1349 border-color: #f1f1f1; 1350 border-spacing: 19em !important; 1351 border-style: solid none; 1352 border-width: 5px 0; 1353 padding-top: 11px; 1354 background-color: white !important; 1355 border-top: 4px solid #ffffff; 1356} 1357.clsShippingTbl td, 1358.clsShippingTbl2 td { 1359 padding: 9px; 1360} 1361.clsShippingTbl2 tr{ 1362 -webkit-box-shadow: -1px 1px 12px -6px rgba(0,0,0,0.75); -moz-box-shadow: -1px 1px 12px -6px rgba(0,0,0,0.75); box-shadow: -1px 1px 12px -6px rgba(0,0,0,0.75); 1363} 1364.clsShippingTbl2 td:last-child { 1365 padding-right: 28px; 1366} 1367.clsShippingTbl2 td:first-child { 1368 padding-left: 28px; 1369} 1370 .medium_bolder 1371 { 1372 font-weight: 600; 1373 } 1374 .clsAlignLft { 1375 text-align: left !important; 1376 } 1377 .clsAlignRgt { 1378 text-align: right !important; 1379 } 1380 .clr-title{ 1381 color:#c9c9c9; 1382 font-size:12px; 1383 padding-bottom: 10px; 1384 text-align:center; 1385 } 1386 .cancle-btn{ 1387 background:#c9c9c9; 1388 color:#232323; 1389 font-size:14px; 1390 font-size: 14px; 1391 padding: 7px 15px; 1392 text-transform: uppercase; 1393 border-radius: 3px; 1394 cursor: pointer; 1395 } 1396 .personlized-note { 1397 height: 387px; 1398} 1399 .valid-btn{ 1400 background:#c9c9c9; 1401 color:#232323; 1402 font-size:14px; 1403 font-size: 14px; 1404 padding: 7px 25px; 1405 text-transform: uppercase; 1406 border-radius: 3px; 1407 cursor: pointer; 1408 } 1409 .color-selection-images{ 1410 list-style-type:none; 1411 } 1412 .color-selection-images li{ 1413 display:inline-block; 1414 padding: 0px 3px 10px; 1415 cursor: pointer; 1416 } 1417 .nopadding{ 1418 padding:0px; 1419 } 1420 .dialog_greeting_gr{ 1421 width:674px; 1422 } 1423 .modal-body_gr{ 1424 background-size: cover !important; 1425 height: 592px; 1426 } 1427 .Divgreeting_gr{ 1428 width:675px; 1429 } 1430 .div_logo_gr{ 1431 text-align:center; 1432 padding:0px 0px 0px; 1433 } 1434 .inputbox_gr{ 1435 width:77%; 1436 padding: 0px 4px; 1437 background:#e9efef ; 1438 border: 1px dashed !important; 1439 background-position: 469px 16px !important; 1440 } 1441 input[type=text].inputbox_gr{ 1442 TEXT-ALIGN: CENTER; 1443 LETTER-SPACING: 3PX; 1444 text-transform:uppercase; 1445 } 1446 .text_area_gr{ 1447 border: 1px dashed; 1448 background:url(/images/edit-pencil.png) no-repeat right ; 1449 background-size: 16px 16px !important; 1450 background-position:right 0px !important; 1451 width:81%; 1452 text-transform:uppercase; 1453 } 1454 textarea.text_area_gr{ 1455 } 1456 .inputbox2_gr{ 1457 width:87%; 1458 padding: 0px 4px; 1459 border: 1px dashed; 1460 background:url(/images/edit-pencil.png) no-repeat; 1461 background-size: 16px 16px !important; 1462 background-position: right 10px; 1463 } 1464 .bottomdiv_gr{ 1465 padding:0px 0px 28px 0px; 1466 text-align: right; 1467 padding-right:73px; 1468 } 1469 input[type=text].inputbox2_gr{ 1470 text-align: right; 1471 padding: 9px 37px 9px 0px; 1472 text-transform: uppercase; 1473 } 1474 .div_input_gr{ 1475 padding:0px 0px 12px 0px; 1476 text-align:center; 1477 } 1478 .inputbox_gr{ 1479 font-family: 'Product Sans', Arial, sans!important; 1480 } 1481 .inputbox_gr::-webkit-input-placeholder{ 1482 font-family: 'Product Sans', Arial, sans!important; 1483 } 1484 .inputbox_gr:-ms-input-placeholder{ 1485 font-family: 'Product Sans', Arial, sans!important; 1486 } 1487 .inputbox_gr::placeholder{ 1488 font-family: 'Product Sans', Arial, sans!important; 1489 } 1490 1491 1492 .inputbox2_gr::-webkit-input-placeholder { 1493 /* WebKit, Blink, Edge */ 1494 color: #e5e5e5 !important; 1495 font-family: 'Product Sans', Arial, sans!important; 1496 } 1497 .inputbox2_gr:-moz-placeholder { 1498 /* Mozilla Firefox 4 to 18 */ 1499 color: #e5e5e5 !important; 1500 opacity: 1; 1501 font-family: 'Comfortaa', cursive; 1502 } 1503 .inputbox2_gr::-moz-placeholder { 1504 /* Mozilla Firefox 19+ */ 1505 color: #e5e5e5 !important; 1506 opacity: 1;
1507 font-family: 'Comfortaa', cursive; 1508 } 1509 .inputbox2_gr:-ms-input-placeholder { 1510 /* Internet Explorer 10-11 */ 1511 color: #e5e5e5 !important; 1512 font-family: 'Product Sans', Arial, sans!important; 1513 } 1514 .text_area_gr::-webkit-input-placeholder { 1515 /* WebKit, Blink, Edge */ 1516 color: #e5e5e5 !important; 1517 font-family: 'Product Sans', Arial, sans!important; 1518 padding:5px 0px 5px 0px; 1519 } 1520 .text_area_gr:-moz-placeholder { 1521 /* Mozilla Firefox 4 to 18 */ 1522 color: #e5e5e5 !important; 1523 opacity: 1; 1524 font-family: 'Comfortaa', cursive; 1525 padding:5px 0px 5px 0px; 1526 } 1527 .text_area_gr::-moz-placeholder { 1528 /* Mozilla Firefox 19+ */ 1529 color: #e5e5e5 !important; 1530 opacity: 1; 1531 font-family: 'Comfortaa', cursive; 1532 padding:5px 0px 5px 0px; 1533 } 1534 .text_area_gr::placeholder{ 1535 font-family: 'Product Sans', Arial, sans!important; 1536 } 1537 .text_area_gr:-ms-input-placeholder { 1538 /* Internet Explorer 10-11 */ 1539 font-family: 'Product Sans', Arial, sans!important; 1540 color: #e5e5e5 !important; 1541 font-family: 'Comfortaa', cursive; 1542 padding:5px 0px 5px 0px; 1543 } 1544 @media only screen and (max-width:999px){ 1545 .color-selection-images li img{ 1546 width:20px !important; 1547 } 1548 .dialog_greeting_gr{ 1549 width:575px !important; 1550 margin: 0 auto; 1551 } 1552 .modal-body_gr{ 1553 background-size: cover; 1554 height: 479px; 1555 } 1556 .Divgreeting_gr{ 1557 width:575px !important; 1558 padding:0px !important; 1559 } 1560 .inputbox_gr{ 1561 background-position:right 0px !important; 1562 } 1563 .text_area_gr{ 1564 /*background-position: 393px 9px !important;*/ 1565 font-family: 'Product Sans', Arial, sans!important; 1566 } 1567 .inputbox2_gr{ 1568 /*background-position: 397px 9px !important ;*/ 1569 font-family: 'Product Sans', Arial, sans!important; 1570 } 1571 .inputbox2_gr::placeholder{ 1572 font-family: 'Product Sans', Arial, sans!important; 1573 } 1574 .bottomdiv_gr{ 1575 padding-right: 64px; 1576 } 1577 } 1578 .v_active{ 1579 width: 39px !important; 1580 border: 1px solid gray; 1581 height: 39px; 1582 border-radius: 50%; 1583 padding: 4px; 1584} 1585 1586 1587#zoom_verticle_images img { 1588 padding-bottom: 10px; 1589 cursor: pointer; 1590} 1591 1592.switch-new { 1593 position: relative; 1594 display: inline-block; 1595 width: 44px; 1596 height: 20px; 1597} 1598.giftwrappercls{ 1599 z-index: 9999; 1600} 1601.giftwrappercls ~ .modal-backdrop.in { z-index:99999;} 1602.confirm-giftwrap{ 1603 background: #169c4c; 1604 font-size: 16px; 1605 text-align: center; 1606 padding:8px; 1607 border-radius: 6px; 1608 width: 25%; 1609 display: block; 1610 margin-top: 0px; 1611 color: #FFF; 1612 font-family: 'Product Sans', Arial, sans!important; 1613 1614} 1615 1616.switch-new input { 1617 opacity: 0; 1618 width: 0; 1619 height: 0; 1620} 1621.option-label{ 1622 color: #444444; 1623 font-size: 16px; 1624 font-family: 'Product Sans', Arial, sans!important; 1625 font-weight: normal; 1626 padding-left: 10px; 1627} 1628.slider-new { 1629 position: absolute; 1630 cursor: pointer; 1631 top: 0; 1632 left: 0; 1633 right: 0; 1634 bottom: 0; 1635 background-color: #ccc; 1636 -webkit-transition: .4s; 1637 transition: .4s; 1638 border-radius: 34px; 1639} 1640 1641.slider-new:before { 1642 position: absolute; 1643 content: ""; 1644 height: 17px; 1645 width: 17px; 1646 left: 4px; 1647 bottom: 2px; 1648 background-color: white; 1649 -webkit-transition: .4s; 1650 transition: .4s; 1651 border-radius: 50%; 1652} 1653 1654input:checked + .slider-new { 1655 background-color: #009a36; 1656} 1657 1658input:focus + .slider-new { 1659 box-shadow: 0 0 1px #2196F3; 1660} 1661 1662input:checked + .slider-new:before { 1663 -webkit-transform: translateX(20px); 1664 -ms-transform: translateX(20px); 1665 transform: translateX(20px); 1666} 1667 1668/* Rounded sliders */ 1669.slider-new.round { 1670 border-radius: 34px; 1671} 1672 1673.slider-new.round:before { 1674 border-radius: 50%; 1675} 1676.personlized-note { 1677 1678} 1679 1680</style> 1681<style> 1682 #recaptcha_area, #recaptcha_table { 1683 table-layout:auto !important; 1684 } 1685 1686.recaptcha_is_showing_audio embed { height: 0; width: 0; } 1687 1688#recaptcha_area input[type="text"]{ 1689 display: inline-block !important; 1690 height: auto !important; 1691} 1692.grecaptcha-badge 1693{ 1694 z-index:999; 1695} 1696</style>
vendor: 116 bytes, lines 1696-1698
1696 1697 1698<script nonce="rT5+x+Vsgo3jrvfWYqqYbQ==" src="https://www.google.com/recaptcha/api.js" async defer></script>
1699<div class="col-sm-12 col-sm-12 "> 1700 <div id='recaptcha' class="g-recaptcha" 1701 data-sitekey="6LcSCxsUAAAAALGIJmbXW2tGzr2_n-mLJPXzh12a" 1702 data-callback="onSubmit" 1703 data-size="invisible" data-badge="bottomleft"> 1704 </div> 1705</div> 1706 1707
1708<script nonce="rT5+x+Vsgo3jrvfWYqqYbQ==">window.location.href = "https://www.arttoframe.com/cart_v2.php";</script>
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.