PageSourceSearch

https://www.arttoframe.com/cart

html arttoframe.com collected 2026-10-02 03:09:16 UTC 67,185 bytes, 1,708 lines download raw bytes

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&apos;s important moments with custom frames online with Art To Frame&apos;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&apos;s important moments with custom frames online with Art To Frame&apos;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">&times;</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"> &#10006;</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"> &#10006;</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;">&#10006;</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]&#8243; x [SIZE2]&#8243;";
990var setModalTex2 = "and maximum finish size of [SIZE1]&#8243; x [SIZE2]&#8243; ";
991
992//mobile product pages
993var setModalTexMain_mob = "Minimum size limit";
994var setModalTex1_mob = "Please enter a  minimum size of [SIZE1]&#8243; x [SIZE2]&#8243;";
995var setModalTex2_mob = "and maximum finish size of [SIZE1]&#8243; x [SIZE2]&#8243; ";
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]&#8243; x [SIZE2]&#8243; ";
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]&#8243; x[SIZE2]&#8243; ";
1008
1009
1010//header pages
1011var setModalTexMain_header = "Minimum size limit";
1012var setModalTex1_header = "Please enter a  minimum size of 3&#8243; x 3&#8243;";
1013var setModalTex2_header = "and maximum finish size of 85&#8243; x 85&#8243;";
1014
1015//search pages
1016var setModalTexMain_search = "Minimum size limit";
1017var setModalTex1_search = "Please enter a  minimum size of 3&#8243; x 3&#8243;";
1018var setModalTex2_search = "and maximum finish size of 85&#8243; x 85&#8243;";
1019
1020//CF pages
1021var setModalTexMain_CF = "Minimum size limit";
1022var setModalTex1_CF = "Please enter a  minimum size of [SIZE1]&#8243; x [SIZE2]&#8243;";
1023var setModalTex2_CF = "and maximum finish size of [SIZE1]&#8243; x [SIZE2]&#8243;";
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]&#8243; x[SIZE2]&#8243; ";
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&#8243;";
1034var setModalTex2_CF_Personalization = "and minimum top mat size of 3&#8243; 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&#8243; x 3&#8243;";
1039var setModalTex2_matonly = "and maximum finish size of 40&#8243; x 60&#8243;";
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&currency=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.