PageSourceSearch

https://photos.com/js/productConfigurator/artPrint.js?v=b52ea59507

js photos.com collected 2026-09-25 14:11:22 UTC 90,065 bytes, 2,612 lines download raw bytes

1
2    var Stamp = new Date();
3    var previoustime = Stamp.getTime();
4    var timerid = -99;
5    var focusTrapArtPrint;
6
7    function verifyText()
8    {
9        if (timerid != -99)
10        {
11            clearTimeout(timerid);
12        }
13
14        var Stamp = new Date();
15        var currenttime = Stamp.getTime();
16        elapsedtime = (currenttime - previoustime) / 1000;
17        previoustime = currenttime;
18
19        var message = document.getElementById('productNote').value;
20        var newmessage = message;
21        var messagelength = message.length;
22        var i;
23        var character;
24        var asciicharacter;
25
26        for (i = 0; i < messagelength; i++)
27        {
28            character = message.substring(i, i + 1);
29            asciicharacter = character.charCodeAt(0);
30
31            if (character != '')
32            {
33                if (asciicharacter == 9 || asciicharacter == 10 || asciicharacter == 13 || (asciicharacter >= 32 && asciicharacter <= 126))
34                {
35                    if(asciicharacter == 43)
36                    {
37                        alert('You can not use ' + character + ' in your message.');
38                        newmessage = newmessage.replace(character, '');
39                    }
40                }
41                else
42                {
43                    alert('You can not use ' + character + ' in your message.');
44                    newmessage = newmessage.replace(character, '');
45                }
46            }
47
48        }
49
50        if (message != newmessage)
51        {
52            document.getElementById('productNote').value = newmessage;
53        }
54
55        if (messagelength > 0)
56        {
57            if (elapsedtime < 0.5)
58            {
59                timerid = setTimeout("verifyText()", 500);
60                return;
61            }
62
63            updateNote(newmessage);
64        }
65    }
66
67    function checkLimit()
68    {
69        var textstring = document.getElementById('productNote').value;
70
71        if (textstring.length > 250)
72        {
73            textstring = textstring.substring(0, 250);
74            document.getElementById('productNote').value = textstring;
75            alert('Maximum Character Limit = 250');
76        }
77    }
78
79
80    function newHttpReq()
81    {
82        var newRequest = null;
83
84        try
85        {
86            newRequest = new XMLHttpRequest();
87        }
88        catch(trymicrosoft)
89        {
90            try
91            {
92                newRequest = new ActiveXObject("Msxml2.XMLHTTP");
93            }
94            catch(othermicrosoft)
95            {
96                try
97                {
98                    newRequest = new ActiveXObject("Microsoft.XMLHTTP");
99                }
100                catch(failed)
101                {
102                    newRequest = null;
103                }
104            }
105        }
106
107        return newRequest;
108
109    }
110
111    var request = newHttpReq();
112    var request2 = newHttpReq();
113    var requestprice = newHttpReq();
114
115    if(!request)
116    {
117        alert("Error Initializing XMLHttpRequest!");
118    }
119
120    function changeFrameColor()
121    {
122        refreshmenu('frame','action=setFrameColor&frameColor=' + document.getElementById('frameColor').value);
123    }
124
125    function setFrameColor(frameColor)
126    {
127        refreshmenu('frame','action=setFrameColor&frameColor=' + frameColor);
128    }
129
130    function confirmRemoveFrame()
131    {
132        var response = confirm("You must remove the frame in order to ship your print in a cardboard tube.  Do you want to remove the frame?");
133
134        if(response)
135        {
136            selectWrap(1,"","","");
137        }
138    }
139
140    function confirmRemoveFrame2019()
141    {
142        var response = confirm("You must remove the frame in order to ship your print in a cardboard tube.  Do you want to remove the frame?");
143
144        if(response)
145        {
146            selectWrap2019(1);
147        }
148    }    
149    
150
151    function selectPaper(checkId,paperId)
152    {
153
154        for(i = 1; i <= 15; i ++)
155        {
156            if(document.getElementById('checkpaper[' + i + ']') != null)
157            {
158                if(i == checkId)
159                {
160                    document.getElementById('checkpaper[' + i + ']').className = 'optionselected';
161                }
162                else
163                {
164                    document.getElementById('checkpaper[' + i + ']').className = 'optionnotselected';
165                }
166            }
167        }
168
169        var refreshTargets = {price:true};
170        setProductParameters('action=selectPaper&paperId=' + paperId, refreshTargets);
171
172    }
173
174    function selectPaper2019(paperId)
175    {
176        if(document.getElementById('paperType_' + paperId))
177        {
178            var targetButtons = document.getElementsByClassName('paperType2019');
179
180            var targetClassName;
181            
182            for(var i = 0; i < targetButtons.length; i ++)
183            {
184                targetClassName = 'paperType2019';
185                
186                if(targetButtons[i].id == 'paperType_' + paperId)
187                {
188                    targetClassName = 'paperType2019 paperTypeSelected2019';
189                }
190                
191                targetButtons[i].className = targetClassName;
192            }
193            
194            var refreshTargets = {price:true};
195            setProductParameters('action=selectPaper&paperId=' + paperId, refreshTargets);          
196                
197        }
198
199    }    
200    
201    function selectWrap(checkId,finishId,mountTypeId,galleryWrapColorId)
202    {
203        for(i = 1; i <= 10; i ++)
204        {
205            if(document.getElementById('checkwrap[' + i + ']') != null)
206            {
207                if(i == checkId)
208                {
209                    document.getElementById('checkwrap[' + i + ']').className = 'optionselected';
210                }
211                else
212                {
213                    document.getElementById('checkwrap[' + i + ']').className = 'optionnotselected';
214                }
215            }
216        }
217
218        var refreshTargets = {image:true, price:true};
219        setProductParameters('action=selectWrap&finishId=' + finishId + '&mountTypeId=' + mountTypeId + '&galleryWrapColorId=' + galleryWrapColorId, refreshTargets);
220    }
221
222    function selectWrap2019(index)
223    {
224        if(document.getElementById('wrapType_' + index))
225        {
226            var finishId = document.getElementById('wrapType_' + index).getAttribute('data-finish-id');
227            var mountTypeId = document.getElementById('wrapType_' + index).getAttribute('data-mount-type-id');
228            var galleryWrapColorId = document.getElementById('wrapType_' + index).getAttribute('data-wrap-color-id');
229
230            var targetButtons = document.getElementsByClassName('wrapType2019');
231
232            var targetClassName;
233            
234            for(var i = 0; i < targetButtons.length; i ++)
235            {
236                targetClassName = 'wrapType2019';
237                
238                if(targetButtons[i].id == 'wrapType_' + index)
239                {
240                    targetClassName = 'wrapType2019 wrapTypeSelected2019';
241                }
242                
243                targetButtons[i].className = targetClassName;
244            }
245                
246            var refreshTargets = {image:true, price:true};
247            setProductParameters('action=selectWrap&finishId=' + finishId + '&mountTypeId=' + mountTypeId + '&galleryWrapColorId=' + galleryWrapColorId, refreshTargets);        
248                    
249        }      
250        else
251        {
252            alert('Something is not correct.');
253        }
254        
255    }
256    
257    
258    function selectFinish(checkId,finishId)
259    {
260        for(i = 1; i <= 10; i ++)
261        {
262            if(document.getElementById('checkfinish[' + i + ']') != null)
263            {
264                if(i == checkId)
265                {
266                    document.getElementById('checkfinish[' + i + ']').className = 'optionselected';
267                }
268                else
269                {
270                    document.getElementById('checkfinish[' + i + ']').className = 'optionnotselected';
271                }
272            }
273        }
274
275        var refreshTargets = {image:true, price:true};
276        setProductParameters('action=selectFinish&finishId=' + finishId, refreshTargets);
277
278    }
279    
280    function selectFinish2019(index)
281    {
282        if(document.getElementById('finishType_' + index))
283        {
284            var finishId = document.getElementById('finishType_' + index).getAttribute('data-finish-id');
285
286            var targetButtons = document.getElementsByClassName('finishType2019');
287
288            var targetClassName;
289            
290            for(var i = 0; i < targetButtons.length; i ++)
291            {
292                targetClassName = 'finishType2019';
293                
294                if(targetButtons[i].id == 'finishType_' + index)
295                {
296                    targetClassName = 'finishType2019 finishTypeSelected2019';
297                }
298                
299                targetButtons[i].className = targetClassName;
300            }
301            
302            var refreshTargets = {image:true, price:true};
303            setProductParameters('action=selectFinish&finishId=' + finishId, refreshTargets);         
304                
305        }
306    }
307
308
309    function loadTimeoutUrl()
310    {
311        window.location = document.getElementById('timeoutUrl').value;
312    }
313
314
315    function setProductParameters(parameterString, refreshTargets)
316    {
317        if(refreshTargets == undefined)
318        {
319            var refreshTargets = {image:true};
320        }
321
322        //alert('parameterString = ' + parameterString);
323
324        var localvalue = requestcount;
325
326        httpobject[localvalue] = newHttpReq();
327        httpobject[localvalue].onreadystatechange = function(){
328
329            try
330            {
331                if(httpobject[localvalue].readyState == 4)
332                {
333                }
334
335                if(httpobject[localvalue].status == 200)
336                {
337                }
338            }
339            catch (e)
340            {
341                return;
342            }
343
344            if(httpobject[localvalue].readyState == 4 && httpobject[localvalue].status == 200)
345            {
346                //alert(httpobject[localvalue].responseText);
347
348                var response = JSON.parse(httpobject[localvalue].responseText);
349
350                // The response will only fail if the session has timed out.  If that's the case, then redirect
351                // to the appropriate timeout URL.
352                if(response.status == 'success')
353                {
354                    //console.log(response);
355                    
356                    //alert(response.message);
357                    //alert(response.price);
358
359                    if(refreshTargets.image == true)
360                    {
361                        document.getElementById('productPreviewImage').src = response.renderedImage;
362
363                        if(response.pixelWidth && response.pixelHeight)
364                        {
365                            document.getElementById('productPreviewImage').setAttribute('width', response.pixelWidth);
366                            document.getElementById('productPreviewImage').setAttribute('height', response.pixelHeight);
367                        }
368                        
369                        if(document.getElementById('frameImage') && response.frameImage)
370                        {
371                            document.getElementById('frameImage').src = response.frameImage;
372                            document.getElementById('framePopUpUrl').setAttribute('onclick', response.framePopUpUrl);
373
374                            document.getElementById('mat1Image').src = response.mat1Image;
375                            document.getElementById('mat1Name').innerHTML = response.mat1Name;
376
377                            document.getElementById('mat2Image').src = response.mat2Image;
378                            document.getElementById('mat2Name').innerHTML = response.mat2Name;
379
380                            document.getElementById('dimensiondiv').innerHTML = response.dimensionsHTML;
381                        }
382
383                        if(document.getElementById('renderedImageMobileTop'))
384                        {
385                            document.getElementById('renderedImageMobileTop').src = response.renderedImage;
386                        }
387
388
389                        // Display the additional product images.
390                        if(response.additionalImages != '' && response.additionalImages != null)
391                        {
392                            for(var key in response.additionalImages)
393                            {
394                                var currentImage = response.additionalImages[key];
395
396                                if(document.getElementById(currentImage['id']) != null)
397                                {
398                                    //document.getElementById(currentImage['id']).src = currentImage['url'];                                    
399                                    document.getElementById(currentImage['id']).src = currentImage['urlSmall'];
400                                    document.getElementById(currentImage['id']).setAttribute('data-url-large', currentImage['url']);
401                                }
402                            }
403                        }
404
405                        
406                        // Display the three dimensional models.
407                        if(response.threeDimensionalModels != '' && response.threeDimensionalModels != null)
408                        {
409                            for(var key in response.threeDimensionalModels)
410                            {
411                                var currentImage = response.threeDimensionalModels[key];
412
413                                if(document.getElementById(currentImage['id']) != null)
414                                {
415                                    document.getElementById(currentImage['id']).parentNode.parentNode.style.display = 'inline-block';
416
417                                    if(document.getElementById(currentImage['id']).getAttribute('data-model-version') == 1)
418                                    {
419                                        document.getElementById(currentImage['id']).setAttribute('data-url-large', currentImage['url']);
420                                    }
421                                    
422                                    if(document.getElementById(currentImage['id']).getAttribute('data-model-version') == 2)
423                                    {
424                                        document.getElementById(currentImage['id']).setAttribute('data-viewer-options', currentImage['viewerOptions']);
425                                    }                                
426                                    
427                                }
428                            }
429                        }
430                        else
431                        {
432                            var previous3dModelDivs = document.getElementsByClassName('additionalImage3dModelDiv');
433                            for(i = 0; i < previous3dModelDivs.length; i ++)
434                            {
435                                previous3dModelDivs[i].style.display = 'none';
436                            }
437                        }
438                        
439                        
440                        // Display the mobile app wall views.
441                        if(response.mobileAppWallViews != '' && response.mobileAppWallViews != null)
442                        {
443                            for(var key in response.mobileAppWallViews)
444                            {
445                                var currentImage = response.mobileAppWallViews[key];
446
447                                if(document.getElementById(currentImage['id']) != null)
448                                {
449                                    document.getElementById(currentImage['id']).parentNode.parentNode.style.display = 'inline-block';
450                                    document.getElementById(currentImage['id']).setAttribute('data-target-url', currentImage['url']);
451                                }
452                            }
453                        }
454                        else
455                        {
456                            var previousMobileAppWallViewDivs = document.getElementsByClassName('additionalImageMobileAppWallViewsDiv');
457                            for(i = 0; i < previousMobileAppWallViewDivs.length; i ++)
458                            {
459                                previousMobileAppWallViewDivs[i].style.display = 'none';
460                            }
461                        }                        
462                        
463                        
464                    }
465
466                    if(refreshTargets.price == true)
467                    {
468                        refreshprice();
469                    }
470
471                    if(refreshTargets.menu == true)
472                    {
473                        refreshmenu();
474                    }
475
476                    // Display the complete product SKU.
477                    if(typeof response.completeProductSku !== 'undefined' && document.getElementById('completeProductSku'))
478                    {
479                        //document.getElementById('completeProductSku').innerHTML = response.completeProductSku;
480                        document.getElementById('completeProductSku').value = response.completeProductSku;
481
482                        // https://gist.github.com/jlong/2428561
483                        var parser = document.createElement('a');
484                        parser.href = window.location;
485
486                        //var currentLocation = parser.pathname + parser.search;
487                        var currentLocation = parser.pathname;
488                        var queryString = parser.search;
489
490                        queryString = queryString.replace('?', '');
491
492                        //alert(queryString);
493
494                        var queryParameters = queryString.split('&');
495
496                        //console.log(queryParameters);
497
498                        var newQueryString = '';
499
500                        if(queryParameters.length > 0)
501                        {
502                            for(var i = 0; i < queryParameters.length; i ++)
503                            {
504                                var queryData = queryParameters[i].split('=');
505
506                                if(queryData[0] != '' && queryData[0] != 'completeProductSku')
507                                {
508                                    newQueryString += queryData[0] + '=' + queryData[1] + '&';
509                                }
510                            }
511
512                            newQueryString = newQueryString.replace(/&+$/,'');
513
514                        }
515
516                        if(currentLocation.indexOf('productconfigurator.html') == -1)
517                        {
518                            var newLocation = currentLocation;
519
520                            if(newQueryString != '')
521                            {
522                                newLocation += '?' + newQueryString;
523                            }
524
525                            if(newLocation.indexOf('?') == -1)
526                            {
527                                newLocation += '?';
528                            }
529                            else
530                            {
531                                newLocation += '&';
532                            }
533
534                            newLocation += 'completeProductSku=' + response.completeProductSku;
535
536                            window.history.replaceState('','', newLocation);
537                        }
538
539                    }
540
541                    if(typeof response.alertMessage !== 'undefined')
542                    {
543                        alert(response.alertMessage);
544                    }
545
546                }
547                else
548                {
549                    loadTimeoutUrl();
550                }
551
552
553            }
554
555
556        };
557
558        //disableAddToCart();
559
560        if(refreshTargets.image == true)
561        {
562            showBusyImage();
563        }
564
565        if(refreshTargets.price == true)
566        {
567            disableAddToCart();
568        }
569
570        var url = "/queries/queryUpdateProductConfiguratorProductPrint.php";
571        var postString = 'sessionId=' + document.getElementById('sessionId').value + '&uniqueId=' + document.getElementById('uniqueId').value + '&' + parameterString;
572
573        //alert(postString);
574
575        httpobject[localvalue].open('post',url,true);
576        httpobject[localvalue].setRequestHeader('content-type', 'application/x-www-form-urlencoded');
577        httpobject[localvalue].send(postString);
578
579        requestcount += 1;
580
581    }
582
583
584    function setManualPaintingRequired()
585    {
586        var manualPaintingRequired = 0;
587
588        if(document.getElementById('manualpaintingrequired').checked == true)
589        {
590            manualPaintingRequired = 1;
591        }
592
593        var refreshTargets = {image:true, menu:true, price:true};
594        setProductParameters('action=setManualPaintingRequired&manualPaintingRequired=' + manualPaintingRequired, refreshTargets);
595    }
596
597    function setCropType(cropType)
598    {
599        var refreshTargets = {image:true, menu:true, price:true};
600        document.getElementById('printSizeContainerDiv').innerHTML = "<img src='/assets/images/Searching.gif'>";
601
602        setProductParameters('action=setCropType&cropType=' + cropType, refreshTargets);
603    }
604    
605    function simpleSelectCropType(cropTypeId)
606    {
607        if(document.getElementById('buttonSimplePrintShape_' + cropTypeId)
607)
608        {
609            var newCropTypeId = document.getElementById('buttonSimplePrintShape_' + cropTypeId).getAttribute('data-crop-type-id');
610            var newCropTypeName = document.getElementById('buttonSimplePrintShape_' + cropTypeId).getAttribute('data-crop-type-name');
611            
612            document.getElementById('buttonSimpleSelectedPrintShape').innerHTML = newCropTypeName;
613            
614            var targetButtons = document.getElementsByClassName('buttonSimplePrintShape');
615
616            var targetClassName;
617            var targetPressed;
618            
619            for(var i = 0; i < targetButtons.length; i ++)
620            {
621                targetClassName = 'buttonSimplePrintShape';
622                targetPressed = false;
623                
624                if(targetButtons[i].getAttribute('data-crop-type-id') == newCropTypeId)
625                {
626                    targetClassName += ' buttonSimplePrintShapeSelected';
627                    targetPressed = true;
628                }
629                
630                targetButtons[i].className = targetClassName;
631                targetButtons[i].setAttribute('aria-pressed', targetPressed);
632            }
633            
634            toggleAvailablePrintShapes(0);
635
636            var refreshTargets = {image:true, menu:true, price:true};
637            document.getElementById('artPrintMenuSimple').innerHTML = "<img src='/assets/images/Searching.gif'>";
638
639            setProductParameters('action=setCropType&cropType=' + newCropTypeId, refreshTargets);            
640            
641        }
642        
643    }    
644    
645
646    function setPrintSize(index)
647    {
648        var width;
649        var height;
650        var markupprice;
651
652        for(i = 1; i <= 15; i ++)
653        {
654            if(document.getElementById('checksize[' + i + ']') != null)
655            {
656                if(i == index)
657                {
658                    document.getElementById('checksize[' + i + ']').className = 'optionselected';
659                }
660                else
661                {
662                    document.getElementById('checksize[' + i + ']').className = 'optionnotselected';
663                }
664            }
665
666            if(document.getElementById('optionPrintSize[' + i + ']') != null)
667            {
668                if(i == index)
669                {
670                    document.getElementById('optionPrintSize[' + i + ']').className = 'optionPrintSize optionPrintSizeSelected';
671                }
672                else
673                {
674                    document.getElementById('optionPrintSize[' + i + ']').className = 'optionPrintSize';
675                }
676            }
677
678        }
679
680        width = document.getElementById("targetwidth[" + index + "]").value;
681        height = document.getElementById("targetheight[" + index + "]").value;
682
683        var refreshTargets = {image:true, price:true};
684
685        setProductParameters('action=setPrintSize&width=' + width + '&height=' + height, refreshTargets);
686
687    }
688    
689    
690    function setSimplePrintSize(index)
691    {
692        if(document.getElementById('simplePrintSize_' + index))
693        {
694            var width = document.getElementById('simplePrintSize_' + index).getAttribute('data-target-width');
695            var height = document.getElementById('simplePrintSize_' + index).getAttribute('data-target-height');
696            
697            var targetButtons = document.getElementsByClassName('simplePrintSize');
698
699            var targetClassName;
700            var targetPressed;
701            
702            for(var i = 0; i < targetButtons.length; i ++)
703            {
704                targetClassName = 'simplePrintSize';
705                targetPressed = false;
706                
707                if(targetButtons[i].id == 'simplePrintSize_' + index)
708                {
709                    targetClassName = 'simplePrintSize simplePrintSizeSelected';
710                    targetPressed = true;
711                    
712                    document.getElementById('buttonSimpleSelectedPrintSize').innerHTML = targetButtons[i].innerHTML;
713                }
714                
715                targetButtons[i].className = targetClassName;
716                targetButtons[i].setAttribute('aria-pressed', targetPressed);
717            }
718            
719            toggleAvailablePrintSizes();
720            
721            var refreshTargets = {image:true, price:true};
722            setProductParameters('action=setPrintSize&width=' + width + '&height=' + height, refreshTargets);            
723            
724        }
725        
726    }   
727    
728    
729    function simpleSelectPaper(index)
730    {
731        if(document.getElementById('buttonSimplePaper_' + index))
732        {
733            var newPaperId = document.getElementById('buttonSimplePaper_' + index).getAttribute('data-paper-id');
734            var newPaperName = document.getElementById('buttonSimplePaper_' + index).getAttribute('data-paper-name');
735            
736            document.getElementById('buttonSimpleSelectedPaper').innerHTML = newPaperName;
737            
738            var targetButtons = document.getElementsByClassName('buttonSimplePaper');
739
740            var targetClassName;
741            var targetPressed;
742            
743            for(var i = 0; i < targetButtons.length; i ++)
744            {
745                targetClassName = 'buttonSimplePaper';
746                targetPressed = false;
747                
748                if(targetButtons[i].id == 'buttonSimplePaper_' + index)
749                {
750                    targetClassName += ' buttonSimplePaperSelected';
751                    targetPressed = true;
752                }
753                
754                targetButtons[i].className = targetClassName;
755                targetButtons[i].setAttribute('aria-pressed', targetPressed);
756            }
757            
758            toggleAvailablePapers(0);
759            
760            var refreshTargets = {price:true};
761            setProductParameters('action=selectPaper&paperId=' + newPaperId, refreshTargets);            
762            
763        }
764        
765    }     
766    
767    function simpleSelectCanvasWrap(wrapId)
768    {
769        if(document.getElementById('buttonSimpleCanvasWrap_' + wrapId))
770        {
771            var newFinishId = document.getElementById('buttonSimpleCanvasWrap_' + wrapId).getAttribute('data-finish-id');
772            var newWrapColorId = document.getElementById('buttonSimpleCanvasWrap_' + wrapId).getAttribute('data-wrap-color-id');
773            var newMountTypeId = document.getElementById('buttonSimpleCanvasWrap_' + wrapId).getAttribute('data-mount-type-id');
774            
775            if(newFinishId == '')
776            {
777                // Check to see if a frame is currently selected.
778                var flagFrameSelected = document.getElementById('simpleFrameContainerDiv').getAttribute('data-frame-selected');
779                
780                if(flagFrameSelected == 1)
781                {
782                    var response = confirm("You must remove the frame in order to ship your print in a cardboard tube.  Do you want to remove the frame?");
783
784                    if(response === false)
785                    {
786                        return;
787                    }
788                }
789            }
790            
791            document.getElementById('buttonSimpleSelectedCanvasWrap').innerHTML = document.getElementById('buttonSimpleCanvasWrap_' + wrapId).innerHTML;
792            
793            var targetButtons = document.getElementsByClassName('buttonSimpleCanvasWrap');
794
795            var targetClassName;
796            var targetPressed;
797            
798            for(var i = 0; i < targetButtons.length; i ++)
799            {
800                targetClassName = 'buttonSimpleCanvasWrap';
801                targetPressed = false;
802                
803                if(targetButtons[i].id == 'buttonSimpleCanvasWrap_' + wrapId)
804                {
805                    targetClassName += ' buttonSimpleCanvasWrapSelected';
806                    targetPressed = true;
807                }
808                
809                targetButtons[i].className = targetClassName;
810                targetButtons[i].setAttribute('aria-pressed', targetPressed);
811            }
812            
813            toggleAvailableCanvasWraps(0);
814            
815            var refreshTargets = {image:true, price:true, menu:true};
816            
817            //alert(newFinishId + ' - ' + newMountTypeId + ' - ' + newWrapColorId);
818            
819            setProductParameters('action=selectWrap&finishId=' + newFinishId + '&mountTypeId=' + newMountTypeId + '&galleryWrapColorId=' + newWrapColorId, refreshTargets);           
820            
821        }
822        
823    } 
824    
825    
826    function simpleSelectFinish(finishId)
827    {
828        if(document.getElementById('buttonSimpleFinish_' + finishId))
829        {
830            var newFinishId = document.getElementById('buttonSimpleFinish_' + finishId).getAttribute('data-finish-id');
831
832            document.getElementById('buttonSimpleSelectedFinish').innerHTML = document.getElementById('buttonSimpleFinishText_' + finishId).innerHTML;
833            
834            var targetButtons = document.getElementsByClassName('buttonSimpleFinish');
835
836            var targetClassName;
837            var targetPressed;
838            
839            for(var i = 0; i < targetButtons.length; i ++)
840            {
841                targetClassName = 'buttonSimpleFinish';
842                targetPressed = false;
843                
844                if(targetButtons[i].id == 'buttonSimpleFinish_' + finishId)
845                {
846                    targetClassName += ' buttonSimpleFinishSelected';
847                    targetPressed = true;
848                }
849                
850                targetButtons[i].className = targetClassName;
851                targetButtons[i].setAttribute('aria-pressed', targetPressed);
852            }
853            
854            toggleAvailableFinishes(0);
855            
856            var refreshTargets = {image:true, price:true};
857            setProductParameters('action=selectFinish&finishId=' + finishId, refreshTargets); 
858        }
859        
860    }     
861    
862    function setPrintSize2019(index)
863    {
864        if(document.getElementById('printSize_' + index))
865        {
866            var width = document.getElementById('printSize_' + index).getAttribute('data-target-width');
867            var height = document.getElementById('printSize_' + index).getAttribute('data-target-height');
868            
869            var targetButtons = document.getElementsByClassName('printSize2019');
870
871            var targetClassName;
872            var targetPressed;
873            
874            for(var i = 0; i < targetButtons.length; i ++)
875            {
876                targetClassName = 'printSize2019';
877                targetPressed = false;
878                
879                if(targetButtons[i].id == 'printSize_' + index)
880                {
881                    targetClassName = 'printSize2019 printSizeSelected2019';
882                    targetPressed = true;
883                }
884                
885                targetButtons[i].className = targetClassName;
886                targetButtons[i].setAttribute('aria-pressed', targetPressed);
887            }
888            
889            var refreshTargets = {image:true, price:true};
890            setProductParameters('action=setPrintSize&width=' + width + '&height=' + height, refreshTargets);            
891            
892        }
893        
894    }
895
896    function activateFrame()
897    {
898        var refreshTargets = {image:true, menu:true, price:true};
899        setProductParameters('action=activateFrame', refreshTargets);
900    }
901
902    function deactivateFrame()
903    {
904        var refreshTargets = {image:true, menu:true, price:true};
905        setProductParameters('action=deactivateFrame', refreshTargets);
906    }
907
908    function activateMat1()
909    {
910        var refreshTargets = {image:true, menu:true, price:true};
911        setProductParameters('action=activateMat1', refreshTargets);
912    }
913
914    function deactivateMat1()
915    {
916        var refreshTargets = {image:true, menu:true, price:true};
917        setProductParameters('action=deactivateMat1', refreshTargets);
918    }
919
920    function activateMat2()
921    {
922        var refreshTargets = {image:true, menu:true, price:true};
923        setProductParameters('action=activateMat2', refreshTargets);
924    }
925
926    function deactivateMat2()
927    {
928        var refreshTargets = {image:true, menu:true, price:true};
929        setProductParameters('action=deactivateMat2', refreshTargets);
930    }
931    
932    function simpleActivateMat2()
933    {
934        var refreshTargets = {image:true, menu:true, price:true};
935        setProductParameters('action=activateMat2', refreshTargets);
936    }    
937
938    function updateNote(note)
939    {
940        var refreshTargets = {};
941
942        setProductParameters('action=setNote&note=' + note, refreshTargets);
943    }
944
945    function updateIncomingMailItemDimensions()
946    {
947        var refreshTargets = {image:true, price:true};
948
949        var itemWidth = document.getElementById('incomingMailItemWidth').options[document.getElementById('incomingMailItemWidth').selectedIndex].value;
950        var itemHeight = document.getElementById('incomingMailItemHeight').options[document.getElementById('incomingMailItemHeight').selectedIndex].value;
951        var itemDepth = document.getElementById('incomingMailItemDepth').options[document.getElementById('incomingMailItemDepth').selectedIndex].value;
952
953        setProductParameters('action=updateIncomingMailItemDimensions&itemWidth=' + itemWidth + '&itemHeight=' + itemHeight + '&itemDepth=' + itemDepth, refreshTargets);
954    }
955
956    function updateIncomingMailPackageType()
957    {
958        var refreshTargets = {price:true};
959
960        var incomingMailPackageType = document.getElementById('incomingMailPackageType').options[document.getElementById('incomingMailPackageType').selectedIndex].value;
961
962        setProductParameters('action=updateIncomingMailPackageType&incomingMailPackageType=' + incomingMailPackageType, refreshTargets);
963    }
964
965    function selectFrame(newFrameId,newFrameColor)
966    {
967        var refreshTargets = {image:true, price:true};
968        
969        if(document.getElementById('textSelectedFrame'))
970        {
971            document.getElementById('textSelectedFrame').style.display = 'none';
972        }
973
974        if(document.getElementById('selectedFrameId'))
975        {
976            document.getElementById('selectedFrameId').innerHTML = newFrameId;
977        }
978        
979        if(document.getElementById('selectedFrameImage'))
980        {
981            document.getElementById('selectedFrameImage').src = document.getElementById('frameImage[' + newFrameId + ']').src;
982        }
983        
984        if(document.getElementById('selectedFrameLink'))
985        {
986            document.getElementById('selectedFrameLink').setAttribute('href', "javascript: showframedetail('" + newFrameId + "');");
987        }
988        
989        var frameDivs = document.getElementsByClassName('frameDiv');
990
991        for(var i = 0; i < frameDivs.length; i ++)
992        {
993            if(frameDivs[i].getAttribute('data-frameId') == newFrameId)
994            {
995                frameDivs[i].className = 'frameDiv frameDivSelected';
996            }
997            else
998            {
999                frameDivs[i].className = 'frameDiv';
1000            }
1001        }
1002
1003        setProductParameters('action=selectFrame&frameId=' + newFrameId + '&frameColor=' + newFrameColor, refreshTargets);
1004    }
1005
1006    function simpleSelectFrame(newFrameId)
1007    {
1008        var newFrameName = document.getElementById('simpleFrame_' + newFrameId).getAttribute('data-frameName');
1009        var newFrameImageUrl = document.getElementById('simpleFrame_' + newFrameId).getAttribute('data-frameImageUrl');
1010        
1011        if(document.getElementById('spanFrameNotFoundInColorGroup'))
1012        {
1013            document.getElementById('spanFrameNotFoundInColorGroup').style.display = 'none';
1014        }        
1015        
1016        var flagFrameSelected = 1;
1017        
1018        if(newFrameId == 'noFrame')
1019        {
1020            flagFrameSelected = 0;
1021        }
1022
1023        document.getElementById('buttonSimpleSelectedFrameImage').src = newFrameImageUrl;
1024        document.getElementById('buttonSimpleSelectedFrameText').innerHTML = newFrameName;
1025        document.getElementById('simpleFrameContainerDiv').setAttribute('data-frame-selected', flagFrameSelected);
1026                
1027        var refreshTargets = {image:true, price:true};
1028                
1029        var frameButtons = document.getElementsByClassName('buttonSimpleFrame');
1030
1031        for(var i = 0; i < frameButtons.length; i ++)
1032        {
1033            if(frameButtons[i].getAttribute('data-frameId') == newFrameId)
1034            {
1035                frameButtons[i].className = 'buttonSimpleFrame buttonSimpleFrameSelected';
1036            }
1037            else
1038            {
1039                frameButtons[i].className = 'buttonSimpleFrame';
1040            }
1041        }
1042
1043        toggleAvailableFrames(0);
1044
1045        if(flagFrameSelected == 1)
1046        {       
1047            setProductParameters('action=selectFrame&frameId=' + newFrameId, refreshTargets);          
1048        }
1049        else
1050        {
1051            var refreshTargets = {image:true, menu:true, price:true};
1052            setProductParameters('action=deactivateFrame', refreshTargets); 
1053        }        
1054        
1055    }    
1056    
1057    function simpleSelectFrameColor(newFrameColorId)
1058    {
1059        //toggleAvailableFrameColors(0);
1060        //return;
1061        
1062        refreshmenu('frame','action=setFrameColor&frameColor=' + newFrameColorId);
1063    }    
1064    
1065    
1066    function simpleSelectMat1(newMatId)
1067    {
1068        var flagMat1Selected = 1;
1069
1070        if(newMatId == 'noMat')
1071        {
1072            flagMat1Selected = 0;
1073        }
1074
1075        var flagMat1PreviouslySelected = document.getElementById('simpleMatContainerDiv').getAttribute('data-mat1-selected');
1076        var flagMat2Selected = document.getElementById('simpleMatContainerDiv').getAttribute('data-mat2-selected');        
1077        
1078        if(flagMat1Selected == 0 && flagMat2Selected == 1)
1079        {
1080            // Get the current ID of Mat #2.
1081            var mat2Id = document.getElementById('simpleMatContainerDiv').getAttribute('data-mat2-id');
1082            newMatId = mat2Id;
1083            
1084            simpleSelectMat2('noMat');
1085        }        
1086 
1087        var newMatName = document.getElementById('simpleMat1_' + newMatId).getAttribute('data-matName');
1088        var newMatImageUrl = document.getElementById('simpleMat1_' + newMatId).getAttribute('data-matImageUrl');
1089
1090        
1091        
1092        
1093        document.getElementById('simpleMatContainerDiv').setAttribute('data-mat1-selected', flagMat1Selected);
1094        document.getElementById('simpleMatContainerDiv').setAttribute('data-mat1-id', newMatId);
1095        
1096        var refreshTargets = {};
1097        
1098        if(document.getElementById('buttonSimpleSelectedMat1Image'))
1099        {
1100            document.getElementById('buttonSimpleSelectedMat1Image').src = newMatImageUrl;
1101        }
1102
1103        if(document.getElementById('buttonSimpleSelectedMat1Text'))
1104        {
1105            document.getElementById('buttonSimpleSelectedMat1Text').innerHTML = newMatName;
1106        }
1107
1108        var matButtons = document.getElementsByClassName('buttonSimpleMat1');
1109
1110        for(var i = 0; i < matButtons.length; i ++)
1111        {
1112            if(matButtons[i].getAttribute('data-matId') == newMatId)
1113            {
1114                matButtons[i].className = 'buttonSimpleMat1 buttonSimpleMat buttonSimpleMatSelected';
1115            }
1116            else
1117            {
1118                matButtons[i].className = 'buttonSimpleMat1 buttonSimpleMat';
1119            }
1120        }
1121
1122        toggleAvailableMats1(0);
1123        
1124        if(newMatId == 'noMat')
1125        {           
1126            refreshTargets = {image:true, menu:true, price:true};
1127            setProductParameters('action=deactivateMat1', refreshTargets);            
1128        }
1129        else
1130        {
1131            refreshTargets = {image:true, price:true};    
1132            
1133            if(flagMat1PreviouslySelected == 0)
1134            {
1135                refreshTargets = {image:true, menu:true, price:true};
1136            }   
1137                
1138            setProductParameters('action=selectMat1&mat1Id=' + newMatId, refreshTargets);
1139        }
1140    }     
1141    
1142    function simpleSelectMat1Width(newMatWidth)
1143    {
1144        var flagMat2Selected = document.getElementById('simpleMatContainerDiv').getAttribute('data-mat2-selected');
1145        
1146        if(flagMat2Selected == 1)
1147        {
1148            // Get the width of mat #2.
1149            var mat2Width = document.getElementById('buttonSimpleSelectedMat2Width').getAttribute('data-mat-width');
1150
1151            if(newMatWidth < mat2Width + 0.25)
1152            {
1153                toggleAvailableMat1Widths(0);
1154                alert('Your top mat width can not be smaller than the bottom mat width.  Please reduce the size of your bottom mat width or increase the size of your top mat width.');
1155                return false;
1156            }             
1157            
1158        }
1159        
1160        var displayNewMatWidth = document.getElementById('simpleMat1Width_' + newMatWidth).getAttribute('data-display-width');
1161        
1162        document.getElementById('buttonSimpleSelectedMat1Width').setAttribute('data-mat-width', newMatWidth);
1163        document.getElementById('buttonSimpleSelectedMat1Width').innerHTML = displayNewMatWidth;
1164
1165        var matWidthButtons = document.getElementsByClassName('simpleMatWidth1');
1166
1167        for(var i = 0; i < matWidthButtons.length; i ++)
1168        {
1169            if(matWidthButtons[i].getAttribute('data-mat-width') == newMatWidth)
1170            {
1171                matWidthButtons[i].className = 'simpleMatWidth1 simpleMatWidth simpleMatWidthSelected';
1172            }
1173            else
1174            {
1175                matWidthButtons[i].className = 'simpleMatWidth1 simpleMatWidth';
1176            }
1177        }
1178
1179        toggleAvailableMat1Widths(0);
1180
1181        var refreshTargets = {image:true, price:true};
1182        setProductParameters('action=selectMatWidth&matWidth=' + newMatWidth, refreshTargets);
1183    }    
1184    
1185    function simpleSelectMat2(newMatId)
1186    {
1187        var newMatName = document.getElementById('simpleMat2_' + newMatId).getAttribute('data-matName');
1188        var newMatImageUrl = document.getElementById('simpleMat2_' + newMatId).getAttribute('data-matImageUrl');
1189        var flagMat2PreviouslySelected = document.getElementById('simpleMatContainerDiv').getAttribute('data-mat2-selected');
1190        var flagMatSelected = 1;
1191        
1192        if(newMatId == 'noMat')
1193        {
1194            flagMatSelected = 0;
1195        }
1196        
1197        document.getElementById('simpleMatContainerDiv').setAttribute('data-mat2-selected', flagMatSelected);
1198        document.getElementById('simpleMatContainerDiv').setAttribute('data-mat2-id', newMatId);
1199        
1200        var refreshTargets = {};
1201        
1202        document.getElementById('buttonSimpleSelectedMat2Image').src = newMatImageUrl;if(document.getElementById('buttonSimpleSelectedMat1Image'))
1203        document.getElementById('buttonSimpleSelectedMat2Text').innerHTML = newMatName;
1204
1205        var matButtons = document.getElementsByClassName('buttonSimpleMat2');
1206
1207        for(var i = 0; i < matButtons.length; i ++)
1208        {
1209            if(matButtons[i].getAttribute('data-matId') == newMatId)
1210            {
1211                matButtons[i].className = 'buttonSimpleMat2 buttonSimpleMat buttonSimpleMatSelected';
1212            }
1213            else
1214            {
1215                matButtons[i].className = 'buttonSimpleMat2 buttonSimpleMat';
1216            }
1217        }
1218
1219        toggleAvailableMats2(0);
1220        
1221        if(newMatId == 'noMat')
1222        {           
1223            refreshTargets = {image:true, menu:true, price:true};
1224            setProductParameters('action=deactivateMat2', refreshTargets);            
1225        }
1226        else
1227        {
1228            refreshTargets = {image:true, price:true};    
1229            
1230            if(flagMat2PreviouslySelected == 0)
1231            {
1232                refreshTargets = {image:true, menu:true, price:true};
1233            }
1234            
1235            setProductParameters('action=selectMat2&mat2Id=' + newMatId, refreshTargets);
1236        }
1237    }     
1238    
1239    function simpleSelectMat2Width(newMatWidth)
1240    {
1241        // Get the width of mat #1.
1242        var mat1Width = document.getElementById('buttonSimpleSelectedMat1Width').getAttribute('data-mat-width');
1243
1244        if(newMatWidth > mat1Width - 0.25)
1245        {
1246            toggleAvailableMat2Widths(0);
1247            alert('Your bottom mat width can not be larger that the top mat width.  Please reduce the size of your bottom mat width or increase the size of your top mat width.');
1248            return false;
1249        }        
1250        
1251        var displayNewMatWidth = document.getElementById('simpleMat2Width_' + newMatWidth).getAttribute('data-display-width');
1252        
1253        //alert(displayNewMatWidth + ' - ' + newMatWidth);
1254        
1255        document.getElementById('buttonSimpleSelectedMat2Width').setAttribute('data-mat-width', newMatWidth);
1256        document.getElementById('buttonSimpleSelectedMat2Width').innerHTML = displayNewMatWidth;
1257
1258        var matWidthButtons = document.getElementsByClassName('simpleMatWidth2');
1259
1260        for(var i = 0; i < matWidthButtons.length; i ++)
1261        {
1262            if(matWidthButtons[i].getAttribute('data-mat-width') == newMatWidth)
1263            {
1264                matWidthButtons[i].className = 'simpleMatWidth2 simpleMatWidth simpleMatWidthSelected';
1265            }
1266            else
1267            {
1268                matWidthButtons[i].className = 'simpleMatWidth2 simpleMatWidth';
1269            }
1270        }
1271
1272        toggleAvailableMat2Widths(0);
1273
1274        //var refreshTargets = {image:true, price:true};
1275        //setProductParameters('action=selectMatWidth&matWidth=' + newMatWidth, refreshTargets);
1276       
1277        var refreshTargets = {image:true, price:true};
1278        setProductParameters('action=selectMatOffset&matOffset=' + newMatWidth, refreshTargets);
1279       
1280    }     
1281    
1282    
1283    function selectMat1(newMat1Id)
1284    {
1285        if(document.getElementById('mat1image'))
1286        {
1287            document.getElementById('mat1image').src = '/frames/mats/' + newMat1Id + '-square.jpg?test=1234';
1288        }
1289        
1290        if(document.getElementById('mat1ContainerDiv'))
1291        {
1292            var targetButtons = document.getElementById('mat1ContainerDiv').getElementsByClassName('matImage');
1293
1294            //console.log(targetButtons);
1295            
1296            var targetClassName;
1297            
1298            for(var i = 0; i < targetButtons.length; i ++)
1299            {
1300                targetClassName = 'matImage';
1301                
1302                if(targetButtons[i].id == 'mat_' + newMat1Id)
1303                {
1304                    targetClassName = 'matImage matImageSelected';
1305                }
1306                
1307                targetButtons[i].className = targetClassName;
1308            }
1309        }      
1310        
1311        var refreshTargets = {image:true, price:true};
1312        setProductParameters('action=selectMat1&mat1Id=' + newMat1Id, refreshTargets);
1313    }
1314
1315    function selectMat2(newMat2Id)
1316    {
1317        if(document.getElementById('mat2image'))
1318        {
1319            document.getElementById('mat2image').src = '/frames/mats/' + newMat2Id + '-square.jpg?test=1234';
1320        }
1321        
1322        if(document.getElementById('mat2ContainerDiv'))
1323        {
1324            var targetButtons = document.getElementById('mat2ContainerDiv').getElementsByClassName('matImage');
1325
1326            //console.log(targetButtons);
1327            
1328            var targetClassName;
1329            
1330            for(var i = 0; i < targetButtons.length; i ++)
1331            {
1332                targetClassName = 'matImage';
1333                
1334                if(targetButtons[i].id == 'mat_' + newMat2Id)
1335                {
1336                    targetClassName = 'matImage matImageSelected';
1337                }
1338                
1339                targetButtons[i].className = targetClassName;
1340            }
1341        }        
1342        
1343        var refreshTargets = {image:true, price:true};
1344        setProductParameters('action=selectMat2&mat2Id=' + newMat2Id, refreshTargets);
1345    }
1346
1347    function selectMatWidth()
1348    {
1349        var refreshTargets = {image:true, price:true};
1350        setProductParameters('action=selectMatWidth&matWidth=' + document.getElementById('matWidth').value, refreshTargets);
1351    }
1352
1353
1354    function selectMatOffset()
1355    {
1356        var previousMatOffset = document.getElementById('matOffset').getAttribute('data-currentValue');
1357        previousMatOffset = parseFloat(previousMatOffset).toFixed(2);
1358
1359        var currentMatWidth = document.getElementById('matWidth').value;
1360        var currentMatOffset = document.getElementById('matOffset').value;
1361
1362        if(currentMatOffset > currentMatWidth - 0.25)
1363        {
1364            alert('Your bottom mat width can not be larger that the top mat width.  Please reduce the size of your bottom mat width or increase the size of your top mat width.');
1365            document.getElementById('matOffset').value = previousMatOffset;
1366            return false;
1367        }
1368
1369        document.getElementById('matOffset').setAttribute('data-currentValue', currentMatOffset);
1370
1371        var refreshTargets = {image:true, price:true};
1372        setProductParameters('action=selectMatOffset&matOffset=' + currentMatOffset, refreshTargets);
1373    }
1374
1375
1376    function refreshmenu(tabname, parameters)
1377    {
1378        flagstophighlight = 1;
1379
1380        var localvalue = requestcount;
1381
1382        httpobject[localvalue] = newHttpReq();
1383        httpobject[localvalue].onreadystatechange = function(){
1384
1385            try
1386            {
1387                if(httpobject[localvalue].readyState == 4)
1388                {
1389                }
1390
1391                if(httpobject[localvalue].status == 200)
1392                {
1393                }
1394            }
1395            catch (e)
1396            {
1397                return;
1398            }
1399
1400            if(httpobject[localvalue].readyState == 4 && httpobject[localvalue].status == 200)
1401            {
1402                var response = httpobject[localvalue].responseText.split("<EXTRAINSTRUCTIONS>");
1403
1404                document.getElementById('menudiv').innerHTML = response[0];
1405
1406                if(response[1])
1407                {
1408                    eval(response[1]);
1409                }
1410
1411                if(document.getElementById('artworkTabContainerDiv'))
1412                {
1413                    document.getElementById('artworkTabContainerDiv').focus();
1414                }
1415
1416                if(document.getElementById('artworkTabContainerDiv2019'))
1417                {
1418                    document.getElementById('artworkTabContainerDiv2019').focus();
1419                }
1420                
1421                //artworkOptionsFocusTrap.activate();
1422
1423                //var artworkOptionsFocusTrap = focusTrap(document.getElementById('artworkTabContainerDiv'),{clickOutsideDeactivates: true,});
1424                //artworkOptionsFocusTrap.activate();
1425
1426            }
1427
1428
1429        };
1430
1431        var url = "/products/pageSectionArtPrintMenu.php";
1432        var postString = 'tab=' + tabname + '&sessionId=' + document.getElementById('sessionId').value + '&uniqueId=' + document.getElementById('uniqueId').value;
1433
1434        if(parameters != undefined)
1435        {
1436            postString += '&' + parameters;
1437        }
1438
1439        //alert(postString);
1440
1441        httpobject[localvalue].open('post',url,true);
1442        httpobject[localvalue].setRequestHeader('content-type', 'application/x-www-form-urlencoded');
1443        httpobject[localvalue].send(postString);
1444
1445        requestcount += 1;
1446
1447        return;
1448    }
1449
1450
1451    function refreshprice(parameters)
1452    {
1453
1454        var localvalue = requestcount;
1455
1456        httpobject[localvalue] = newHttpReq();
1457        httpobject[localvalue].onreadystatechange = function(){
1458
1459            try
1460            {
1461                if(httpobject[localvalue].readyState == 4)
1462                {
1463                }
1464
1465                if(httpobject[localvalue].status == 200)
1466                {
1467                }
1468            }
1469            catch (e)
1470            {
1471                return;
1472            }
1473
1474            if(httpobject[localvalue].readyState == 4 && httpobject[localvalue].status == 200)
1475            {
1476                var response = httpobject[localvalue].responseText.split("<EXTRAINSTRUCTIONS>");
1477
1478                document.getElementById('pricediv').innerHTML = response[0];
1479                document.getElementById('pricediv').focus();
1480
1481                if(response[1])
1482                {
1483                    eval(response[1]);
1484
1485                }
1486
1487                window.dataLayer.push({event: 'gtm.priceChange'});
1488
1489                if(document.getElementById('productPriceMobileTop'))
1490                {
1491                    document.getElementById('productPriceMobileTop').innerHTML = document.getElementById('productPrice').innerHTML;
1492
1493                    if(document.getElementById('buttonaddtocart'))
1494                    {
1495                        document.getElementById('buttonAddToCartMobileTop').style.display = 'inline-block';
1496                    }
1497                    else
1498                    {
1499                        document.getElementById('buttonAddToCartMobileTop').style.display = 'none';
1500                    }
1501                }
1502
1503            }
1504
1505
1506        };
1507
1508        var url = "/queries/new-querypricenew.php";
1509        var postString = 'sessionId=' + document.getElementById('sessionId').value + '&uniqueId=' + document.getElementById('uniqueId').value + '&flagWidget=' + document.getElementById('flagWidget').value;
1510
1511        if(parameters != undefined)
1512        {
1513            postString += '&' + parameters;
1514        }
1515
1516        httpobject[localvalue].open('post',url,true);
1517        httpobject[localvalue].setRequestHeader('content-type', 'application/x-www-form-urlencoded');
1518        httpobject[localvalue].send(postString);
1519
1520        requestcount += 1;
1521
1522        return;
1523
1524    }
1525
1526
1527
1528    function showpaperscanvases()
1529    {
1530        var randomnumber = Math.floor(Math.random()*100);
1531
1532        pagename = 'http://fineartamerica.com/showpaperscanvases.html';
1533        newWindow = window.open(pagename,randomnumber,'toolbar=0, scrollbars = 1, resizable = no, width=990px, height=750px, top=25px, left=25px');
1534    }
1535
1536    var menuindex = 2;
1537    var t = '';
1538
1539    function highlightmenutabs()
1540    {
1541        if(flagstophighlight == 1)
1542        {
1543            return;
1544        }
1545
1546        if(document.getElementById('menu[' + menuindex + ']'))
1547        {
1548            document.getElementById('menu[' + menuindex + ']').className = 'menu3';
1549        }
1550
1551        if(menuindex >= 3 && document.getElementById('menu[' + (menuindex - 1) + ']'))
1552        {
1553            document.getElementById('menu[' + (menuindex - 1) + ']').className = 'menu2';
1554        }
1555
1556        menuindex ++;
1557
1558        if(menuindex <= 6)
1559        {
1560            setTimeout("highlightmenutabs()",350);
1561        }
1562    }
1563
1564    var httpobject = [];
1565    var requestcount = 0;
1566
1567    function showframedetail(frameid)
1568    {
1569        createForegroundAndBackgroundDiv();
1570
1571        var backgroundobject = document.getElementById('backgroundDiv');
1572        backgroundobject.style.width = '100%';
1573        backgroundobject.style.height = '100%';
1574        backgroundobject.style.visibility = 'visible';
1575
1576        var widthclient = parseInt(document.documentElement.clientWidth);
1577        var heightclient = parseInt(document.documentElement.clientHeight);
1578
1579        //alert(widthclient);
1580
1581        var widthtarget = parseInt(widthclient*0.90);
1582        var heighttarget = parseInt(heightclient*0.90);
1583
1584        widthtarget = Math.min(widthtarget, widthclient - 20, 1000);
1585        heighttarget = Math.min(heighttarget, heightclient - 20, 1000);
1586
1587        var offsetleft = 0;
1588        var offsettop = 0;
1589
1590        var offsetx = 0;
1591        var offsety = 0;
1592
1593        var logindiv = document.getElementById('foregroundDiv');
1594        logindiv.style.width = widthtarget + 'px';
1595        logindiv.style.height = heighttarget + 'px';
1596        logindiv.style.visibility = 'visible';
1597        logindiv.innerHTML = "<img src='/assets/images/Searching.gif'>";
1598
1599        logindiv.style.left = (offsetx + offsetleft + parseInt((widthclient - widthtarget) / 2)) + 'px';
1600        logindiv.style.top = (offsety + offsettop + parseInt((heightclient - heighttarget) / 2)) + 'px';
1601        logindiv.style.overflowX = 'hidden';
1602
1603        var localvalue = requestcount;
1604
1605        httpobject[localvalue] = newHttpReq();
1606        httpobject[localvalue].onreadystatechange = function(){
1607
1608            try
1609            {
1610                if(httpobject[localvalue].readyState == 4)
1611                {
1612                }
1613
1614                if(httpobject[localvalue].status == 200)
1615                {
1616                }
1617            }
1618            catch (e)
1619            {
1620                return;
1621            }
1622
1623            if(httpobject[localvalue].readyState == 4 && httpobject[localvalue].status == 200)
1624            {
1625                document.getElementById('foregroundDiv').innerHTML = httpobject[localvalue].responseText;
1626                focusTrapArtPrint = focusTrap(document.getElementById('foregroundDiv'), {'clickOutsideDeactivates': true,'escapeDeactivates': false,});
1627                focusTrapArtPrint.activate();
1628            }
1629
1630
1631        };
1632
1633        var url = "/queries/queryframedetails.php";
1634        var poststring = "frameid=" + frameid;
1635
1636        httpobject[localvalue].open('post',url,true);
1637        httpobject[localvalue].setRequestHeader('content-type', 'application/x-www-form-urlencoded');
1638        httpobject[localvalue].send(poststring);
1639
1640        requestcount += 1;
1641
1642        return;
1643    }
1644
1645    function hideframedetail()
1646    {
1647        document.getElementById('backgroundDiv').style.visibility = 'hidden';
1648        document.getElementById('foregroundDiv').style.visibility = 'hidden';
1649        document.getElementById('foregroundDiv').innerHTML = '&nbsp;';
1650    }
1651    
1652    function simpleShowPaperDetails(e)
1653    {
1654
1655        var eventSource = e.target || e.srcElement;
1656        var paperId = eventSource.getAttribute('data-paper-id');     
1657
1658        e.preventDefault();
1659        e.stopImmediatePropagation();
1660        
1661        showPaperDetails(paperId);
1662
1663    }
1664
1665    function showPaperDetails(paperId)
1666    {
1667        createForegroundAndBackgroundDiv();
1668
1669        var backgroundobject = document.getElementById('backgroundDiv');
1670        backgroundobject.style.width = '100%';
1671        backgroundobject.style.height = '100%';
1672        backgroundobject.style.visibility = 'visible';
1673
1674        var widthclient = parseInt(document.documentElement.clientWidth);
1675        var heightclient = parseInt(document.documentElement.clientHeight);
1676
1677        //alert(widthclient);
1678
1679        var widthtarget = parseInt(widthclient*0.90);
1680        var heighttarget = parseInt(heightclient*0.90);
1681
1682        widthtarget = Math.min(widthtarget, widthclient - 20, 1000);
1683        heighttarget = Math.min(heighttarget, heightclient - 20, 1000);
1684
1685        var offsetleft = 0;
1686        var offsettop = 0;
1687
1688        var offsetx = 0;
1689        var offsety = 0;
1690
1691        var logindiv = document.getElementById('foregroundDiv');
1692        logindiv.style.width = widthtarget + 'px';
1693        logindiv.style.height = heighttarget + 'px';
1694        logindiv.style.visibility = 'visible';
1695        logindiv.innerHTML = "<img src='/assets/images/Searching.gif'>";
1696
1697        logindiv.style.left = (offsetx + offsetleft + parseInt((widthclient - widthtarget) / 2)) + 'px';
1698        logindiv.style.top = (offsety + offsettop + parseInt((heightclient - heighttarget) / 2)) + 'px';
1699        logindiv.style.overflowX = 'hidden';
1700        
1701        var localvalue = requestcount;
1702
1703        httpobject[localvalue] = newHttpReq();
1704        httpobject[localvalue].onreadystatechange = function(){
1705
1706            try
1707            {
1708                if(httpobject[localvalue].readyState == 4)
1709                {
1710                }
1711
1712                if(httpobject[localvalue].status == 200)
1713                {
1714                }
1715            }
1716            catch (e)
1717            {
1718                return;
1719            }
1720
1721            if(httpobject[localvalue].readyState == 4 && httpobject[localvalue].status == 200)
1722            {
1723                document.getElementById('foregroundDiv').innerHTML = httpobject[localvalue].responseText;
1724                focusTrapArtPrint = focusTrap(document.getElementById('foregroundDiv'), {'clickOutsideDeactivates': true,'escapeDeactivates': false,});
1725                focusTrapArtPrint.activate();
1726            }
1727
1728
1729        };
1730
1731        var url = "/queries/queryPaperDetails.php";
1732        var poststring = "paperId=" + paperId + "&widthTarget=" + widthtarget;
1733
1734        httpobject[localvalue].open('post',url,true);
1735        httpobject[localvalue].setRequestHeader('content-type', 'application/x-www-form-urlencoded');
1736        httpobject[localvalue].send(poststring);
1737
1738        requestcount += 1;
1739
1740        return;
1741    }
1742
1743    function hidePaperDetails()
1744    {
1745        document.getElementById('backgroundDiv').style.visibility = 'hidden';
1746        document.getElementById('foregroundDiv').style.visibility = 'hidden';
1747        document.getElementById('foregroundDiv').innerHTML = '&nbsp;';
1748    }    
1749    
1750    
1751
1752    function hideForegroundDiv()
1753    {
1754        document.getElementById('backgroundDiv').style.visibility = 'hidden';
1755        document.getElementById('foregroundDiv').style.visibility = 'hidden';
1756        document.getElementById('foregroundDiv').innerHTML = '&nbsp;';
1757
1758        if(typeof focusTrapArtPrint === 'object')
1759        {
1760            //console.log(focusTrapArtPrint);
1761            focusTrapArtPrint.deactivate();
1762        }
1763    }
1764
1765    function simpleShowFinishDetails(e)
1766    {
1767
1768        var eventSource = e.target || e.srcElement;
1769        var finishId = eventSource.getAttribute('data-finish-id');     
1770
1771        e.preventDefault();
1772        e.stopImmediatePropagation();
1773        
1774        showfinishdetail(finishId);
1775
1776    }   
1777    
1778
1779    function showfinishdetail(finishid)
1780    {
1781        createForegroundAndBackgroundDiv();
1782
1783        var backgroundobject = document.getElementById('backgroundDiv');
1784        backgroundobject.style.width = '100%';
1785        backgroundobject.style.height = '100%';
1786        backgroundobject.style.visibility = 'visible';
1787
1788        var widthclient = parseInt(document.documentElement.clientWidth);
1789        var heightclient = parseInt(document.documentElement.clientHeight);
1790
1791        //alert(widthclient);
1792
1793        var widthtarget = parseInt(widthclient*0.90);
1794        var heighttarget = parseInt(heightclient*0.90);
1795
1796        widthtarget = Math.min(widthtarget, widthclient - 20, 1000);
1797        heighttarget = Math.min(heighttarget, heightclient - 20, 1000);
1798
1799        var offsetleft = 0;
1800        var offsettop = 0;
1801
1802        var offsetx = 0;
1803        var offsety = 0;
1804
1805        var logindiv = document.getElementById('foregroundDiv');
1806        logindiv.style.width = widthtarget + 'px';
1807        logindiv.style.height = heighttarget + 'px';
1808        logindiv.style.visibility = 'visible';
1809        logindiv.innerHTML = "<img src='/assets/images/Searching.gif'>";
1810
1811        logindiv.style.left = (offsetx + offsetleft + parseInt((widthclient - widthtarget) / 2)) + 'px';
1812        logindiv.style.top = (offsety + offsettop + parseInt((heightclient - heighttarget) / 2)) + 'px';
1813        logindiv.style.overflowX = 'hidden';
1814
1815        var localvalue = requestcount;
1816
1817        httpobject[localvalue] = newHttpReq();
1818        httpobject[localvalue].onreadystatechange = function(){
1819
1820            try
1821            {
1822                if(httpobject[localvalue].readyState == 4)
1823                {
1824                }
1825
1826                if(httpobject[localvalue].status == 200)
1827                {
1828                }
1829            }
1830            catch (e)
1831            {
1832                return;
1833            }
1834
1835            if(httpobject[localvalue].readyState == 4 && httpobject[localvalue].status == 200)
1836            {
1837                document.getElementById('foregroundDiv').innerHTML = httpobject[localvalue].responseText;
1838                focusTrapArtPrint = focusTrap(document.getElementById('foregroundDiv'), {'clickOutsideDeactivates': true,'escapeDeactivates': false,});
1839                focusTrapArtPrint.activate();
1840            }
1841
1842
1843        };
1844
1845        var url = "/queries/queryfinishdetails.php";
1846        var poststring = "finishid=" + finishid;
1847
1848        httpobject[localvalue].open('post',url,true);
1849        httpobject[localvalue].setRequestHeader('content-type', 'application/x-www-form-urlencoded');
1850        httpobject[localvalue].send(poststring);
1851
1852        requestcount += 1;
1853
1854        return;
1855    }
1856
1857    function showpricedetails()
1858    {
1859        refreshprice('showPriceDetails=true');
1860    }
1861
1862    function hidepricedetails()
1863    {
1864        refreshprice('hidePriceDetails=true');
1865    }
1866
1867
1868    function favoriteimage(uniqueId)
1869    {
1870        if(memberidtype == 'none')
1871        {
1872            targetfunction = "favoriteimage('" + uniqueId + "')";
1873            showLoginPopUp(false);
1874            return;
1875        }
1876
1877        document.getElementById('favoritediv').style.display = 'inline-block';
1878        document.getElementById('favoritediv').innerHTML = "<div style='float: left; width: 100%; padding-top: 15px; padding-bottom: 15px; text-align: center;'><img src='/assets/images/Searching.gif'></div>\n";
1879
1880        var localvalue = requestcount;
1881
1882        httpobject[localvalue] = newHttpReq();
1883        httpobject[localvalue].onreadystatechange = function(){
1884
1885            try
1886            {
1887                if(httpobject[localvalue].readyState == 4)
1888                {
1889                }
1890
1891                if(httpobject[localvalue].status == 200)
1892                {
1893                }
1894            }
1895            catch (e)
1896            {
1897                return;
1898            }
1899
1900            if(httpobject[localvalue].readyState == 4 && httpobject[localvalue].status == 200)
1901            {
1902                var response = httpobject[localvalue].responseText.split("<EXTRAINSTRUCTIONS>");
1903
1904                document.getElementById('favoritediv').innerHTML = response[0];
1905
1906                if(response[1])
1907                {
1908                    eval(response[1]);
1909                }
1910
1911            }
1912
1913
1914        };
1915
1916        var poststring = 'uniqueId=' + uniqueId + '&flagShoppingPage=true';
1917        var url = '/queries/new-queryaddtofavoritesnew.php';
1918
1919        httpobject[localvalue].open('post',url,true);
1920        httpobject[localvalue].setRequestHeader('content-type', 'application/x-www-form-urlencoded');
1921        httpobject[localvalue].send(poststring);
1922
1923        requestcount += 1;
1924    }
1925
1926    
1927    function favoriteImageTop(artworkId)
1928    {
1929        if(memberidtype == 'none')
1930        {
1931            targetfunction = "favoriteImageTop(" + artworkId + ")";
1932            showLoginPopUp(false);
1933            return;
1934        }
1935
1936        document.getElementById('messageDivTop').style.display = 'inline-block';
1937        document.getElementById('messageDivTop').innerHTML = "<div style='float: left; width: 100%; padding-top: 15px; padding-bottom: 15px; text-align: center;'><img src='/assets/images/Searching.gif'></div>\n";
1938
1939        var localvalue = requestcount;
1940
1941        httpobject[localvalue] = newHttpReq();
1942        httpobject[localvalue].onreadystatechange = function(){
1943
1944            try
1945            {
1946                if(httpobject[localvalue].readyState == 4)
1947                {
1948                }
1949
1950                if(httpobject[localvalue].status == 200)
1951                {
1952                }
1953            }
1954            catch (e)
1955            {
1956                return;
1957            }
1958
1959            if(httpobject[localvalue].readyState == 4 && httpobject[localvalue].status == 200)
1960            {
1961                var response = httpobject[localvalue].responseText.split("<EXTRAINSTRUCTIONS>");
1962
1963                document.getElementById('messageDivTop').innerHTML = response[0];
1964
1965                if(response[1])
1966                {
1967                    eval(response[1]);
1968                }
1969
1970            }
1971
1972
1973        };
1974        
1975        var uniqueId = document.getElementById('uniqueId').value;
1976
1977        var poststring = 'uniqueId=' + uniqueId + '&flagShoppingPage=true';
1978
1979        //alert(poststring);
1980        //return;
1981
1982        var url = '/queries/new-queryaddtofavoritesnew.php';
1983
1984        httpobject[localvalue].open('post',url,true);
1985        httpobject[localvalue].setRequestHeader('content-type', 'application/x-www-form-urlencoded');
1986        httpobject[localvalue].send(poststring);
1987
1988        requestcount += 1;
1989    }   
1990    
1991
1992    function addtocart()
1993    {
1994        if(simpleEcommerceId && typeof fbq == 'function')
1995        {
1996            fbq('track', 'AddToCart', {content_type: 'product', content_ids: [simpleEcommerceId], value: simpleEcommercePrice, currency: 'USD'});
1997        }
1998
1999        document.getElementById('frameform').submit();
2000    }
2001
2002    function changestylebuttonaddtocart(newvalue)
2003    {
2004        if(newvalue == 1)
2005        {
2006            document.getElementById('buttonaddtocart').style.backgroundColor = '#445577';
2007        }
2008        else
2009        {
2010            document.getElementById('buttonaddtocart').style.backgroundColor = '#7EB93B';
2011        }
2012    }
2013
2014
2015
2016    var touchx0;
2017    var touchy0;
2018    var timestamp0;
2019
2020    var touchxcurrent;
2021    var touchycurrent;
2022
2023    function touchcapturestart(evt)
2024    {
2025        if(evt.touches)
2026        {
2027            timestamp0 = new Date();
2028            timestamp0 = timestamp0.getTime();
2029
2030            touchx0 = evt.touches[0].pageX;
2031            touchy0 = evt.touches[0].pageY;
2032
2033            touchxcurrent = touchx0;
2034            touchycurrent = touchy0;
2035        }
2036    }
2037
2038    function touchcapturemove(evt)
2039    {
2040        if(evt.touches)
2041        {
2042            touchxcurrent = evt.touches[0].pageX;
2043            touchycurrent = evt.touches[0].pageY;
2044        }
2045    }
2046
2047    function touchcaptureend(evt)
2048    {
2049        if(isNaN(touchx0) || isNaN(touchy0) || isNaN(touchxcurrent) || isNaN(touchycurrent))
2050        {
2051            return;
2052        }
2053
2054        var touchdeltax = touchxcurrent - touchx0;
2055        var touchdeltay = touchycurrent - touchy0;
2056        var currenttime = new Date();
2057        currenttime = currenttime.getTime();
2058
2059        var touchtimestampdelta = currenttime - timestamp0;
2060
2061        //alert(touchdeltax + ' - ' + touchdeltay + ' - ' + touchtimestampdelta);
2062
2063        if(touchdeltax < -100 && Math.abs(touchdeltay) < 100 && touchtimestampdelta < 1500)
2064        {
2065            if(document.getElementById('linknext'))
2066            {
2067                showswipeinprogress();
2068                document.getElementById('linknext').click();
2069            }
2070        }
2071
2072        if(touchdeltax > 100 && Math.abs(touchdeltay) < 100 && touchtimestampdelta < 1500)
2073        {
2074            if(document.getElementById('linkprevious'))
2075            {
2076                showswipeinprogress();
2077                document.getElementById('linkprevious').click();
2078            }
2079        }
2080
2081    }
2082
2083    function showswipeinprogress()
2084    {
2085        var widthclient = parseInt(document.documentElement.clientWidth);
2086        var heightclient = parseInt(document.documentElement.clientHeight);
2087
2088        var widthtarget = 131;
2089        var heighttarget = 23;
2090
2091        var offsetleft = 0;
2092        var offsettop = 0;
2093
2094        if(false)
2095        {
2096            if(document.documentElement.scrollTop && !document.body.scrollTop)
2097            {
2098                offsetleft = document.documentElement.scrollLeft;
2099                offsettop = document.documentElement.scrollTop;
2100            }
2101            else
2102            {
2103                offsetleft = document.body.scrollLeft;
2104                offsettop = document.body.scrollTop;
2105            }
2106        }
2107
2108        var sourceobject = document.getElementById('topnavigationdiv');
2109
2110        if (sourceobject.offsetParent)
2111        {
2112            offsettop = sourceobject.offsetTop;
2113
2114            while (sourceobject = sourceobject.offsetParent)
2115            {
2116                offsettop += sourceobject.offsetTop;
2117            }
2118        }
2119
2120        if(!document.getElementById('foregrounddiv') || !document.getElementById('backgrounddiv'))
2121        {
2122
2123            var newdiv;
2124            var cssstyle;
2125
2126            // Background Div
2127            if(!document.getElementById('backgrounddiv'))
2128            {
2129                newdiv = document.createElement('div');
2130                cssstyle = 'position: fixed; z-index: 5000; left: 0px; top: 0px; width: 10px; height: 10px; background-color: #000000; visibility: hidden; opacity: 0.25; filter: alpha(opacity=25);';
2131                newdiv.id = 'backgrounddiv';
2132                newdiv.setAttribute('style',cssstyle);
2133                newdiv.style.cssText = cssstyle;
2134                document.body.appendChild(newdiv);
2135            }
2136
2137            // Foreground Div
2138            if(!document.getElementById('foregrounddiv'))
2139            {
2140                newdiv = document.createElement('div');
2141                cssstyle = 'position: fixed; z-index: 5001; left: 0px; top: 0px; width: 10px; min-height: 10px; padding: 0px; overflow: hidden; border: none; background-color: transparent; visibility: hidden; box-shadow: none;';
2142                newdiv.id = 'foregrounddiv';
2143                newdiv.setAttribute('style',cssstyle);
2144                newdiv.style.cssText = cssstyle;
2145                document.body.appendChild(newdiv);
2146            }
2147        }
2148
2149        var backgroundobject = document.getElementById('backgrounddiv');
2150        backgroundobject.style.width = '100%';
2151        backgroundobject.style.height = '100%';
2152        //backgroundobject.style.visibility = 'visible';
2153
2154        var foregrounddiv = document.getElementById('foregrounddiv');
2155        foregrounddiv.style.width = widthtarget + 'px';
2156        foregrounddiv.style.height = heighttarget + 'px';
2157        foregrounddiv.style.backgroundColor = 'transparent';
2158        foregrounddiv.style.border = 'none';
2159        foregrounddiv.style.boxShadow = 'none';
2160        foregrounddiv.innerHTML = "<img src='/assets/images/Searching.gif' style='float: left;'>";
2161
2162        foregrounddiv.style.left = (offsetleft + parseInt((widthclient - widthtarget) / 2)) + 'px';
2163        //foregrounddiv.style.top = (offsettop + parseInt((heightclient - heighttarget) / 2)) + 'px';
2164        //foregrounddiv.style.top = '130px';
2165        foregrounddiv.style.top = offsettop + 'px';
2166
2167        foregrounddiv.style.visibility = 'visible';
2168
2169    }
2170
2171    function addfavoritetofolder(favoriteid)
2172    {
2173        var targetfavoritefolderid = document.getElementById('targetfavoritefolderid').value;
2174        var poststring = 'action=addfavoritetofolder&favoriteid=' + favoriteid + '&targetfavoritefolderid=' + targetfavoritefolderid;
2175
2176        document.getElementById('messageaddfavoritetofolderdiv').style.display = 'inline-block';
2177        document.getElementById('messageaddfavoritetofolderdiv').innerHTML = "<div style='float: left; width: 100%; padding-top: 15px; padding-bottom: 15px; text-align: center;'><img src='/assets/images/Searching.gif'></div>\n";
2178
2179        var localvalue = requestcount;
2180
2181        httpobject[localvalue] = newHttpReq();
2182        httpobject[localvalue].onreadystatechange = function(){
2183
2184            try
2185            {
2186                if(httpobject[localvalue].readyState == 4)
2187                {
2188                }
2189
2190                if(httpobject[localvalue].status == 200)
2191                {
2192                }
2193            }
2194            catch (e)
2195            {
2196                return;
2197            }
2198
2199            if(httpobject[localvalue].readyState == 4 && httpobject[localvalue].status == 200)
2200            {
2201                var response = httpobject[localvalue].responseText.split("<EXTRAINSTRUCTIONS>");
2202
2203                document.getElementById('messageaddfavoritetofolderdiv').innerHTML = response[0];
2204
2205                if(response[1])
2206                {
2207                    eval(response[1]);
2208                }
2209
2210            }
2211
2212
2213        };
2214
2215        var url = '/queries/new-queryaddtofavoritesnew.php';
2216
2217        httpobject[localvalue].open('post',url,true);
2218        httpobject[localvalue].setRequestHeader('content-type', 'application/x-www-form-urlencoded');
2219        httpobject[localvalue].send(poststring);
2220
2221        requestcount += 1;
2222
2223
2224    }
2225
2226    function logininteriordesignerprints()
2227    {
2228        window.location = "/logincollector.php?targetpage=" + document.getElementById('timeoutUrl').value;
2229    }
2230
2231
2232
2233    function toggleavailableproducts()
2234    {
2235        if(document.getElementById('availableproductsdiv').style.display == 'none')
2236        {
2237            document.getElementById('availableproductsdiv').style.display = 'inline-block';
2238            
2239            if(false)
2240            {
2241                // This lazy loads all of the product images in the dropdown product menus.
2242                var additionalArtProductImages = document.getElementById('availableproductsdiv').getElementsByClassName('additionalArtProductImage');
2243
2244                for(var i = 0; i < additionalArtProductImages.length; i ++)
2245                {
2246                    if(additionalArtProductImages[i].getAttribute('data-pixels-src'))
2247                    {
2248                        additionalArtProductImages[i].src = additionalArtProductImages[i].getAttribute('data-pixels-src');
2249                        additionalArtProductImages[i].removeAttribute('data-pixels-src');
2250                    }
2251                }            
2252            }
2253        }
2254        else
2255        {
2256            document.getElementById('availableproductsdiv').style.display = 'none';
2257        }
2258    }
2259
2260    function checknextprevious(theEvent)
2261    {
2262        var activeelementtagname = document.activeElement.tagName;
2263        activeelementtagname = activeelementtagname.toLowerCase();
2264
2265        if(activeelementtagname == 'textarea')
2266        {
2267            return;
2268        }
2269
2270        if (theEvent == null)
2271        {
2272            theEvent = window.event;
2273        }
2274
2275        if (theEvent.target)
2276        {
2277            theTarget = theEvent.target;
2278        }
2279        else
2280        {
2281            theTarget = theEvent.srcElement;
2282        }
2283
2284        if(false && theEvent.keyCode == 37)
2285        {
2286            if(document.getElementById('linkprevioussidearrow'))
2287            {
2288                window.location = document.getElementById('linkprevioussidearrow').getAttribute('href');
2289            }
2290        }
2291
2292        if(false && theEvent.keyCode == 39)
2293        {
2294            if(document.getElementById('linknextsidearrow'))
2295            {
2296                window.location = document.getElementById('linknextsidearrow').getAttribute('href');
2297            }
2298        }
2299    }
2300    
2301    function toggleAvailablePrintSizes(newState)
2302    {
2303        if(typeof newState === 'undefined')
2304        {
2305            var currentState = document.getElementById('simplePrintSizeContainerDiv').getAttribute('data-sizes-visible');
2306            newState = 1 - currentState;
2307        }       
2308
2309        if(newState == 1)
2310        {
2311            toggleAvailablePrintShapes(0);
2312        }         
2313
2314        document.getElementById('simplePrintSizeContainerDiv').setAttribute('data-sizes-visible', newState);
2315    }
2316    
2317    function toggleAvailablePrintShapes(newState)
2318    {
2319        if(typeof newState === 'undefined')
2320        {
2321            var currentState = document.getElementById('simplePrintSizeContainerDiv').getAttribute('data-shapes-visible');
2322            newState = 1 - currentState;
2323        }        
2324
2325        if(newState == 1)
2326        {
2327            toggleAvailablePrintSizes(0);
2328        }        
2329        
2330        document.getElementById('simplePrintSizeContainerDiv').setAttribute('data-shapes-visible', newState);
2331    }    
2332    
2333    function toggleAvailableFrames(newState)
2334    {
2335        if(typeof newState === 'undefined')
2336        {        
2337            var currentState = document.getElementById('simpleFrameContainerDiv').getAttribute('data-frames-visible');
2338            newState = 1 - currentState;
2339        }
2340        
2341        document.getElementById('simpleFrameContainerDiv').setAttribute('data-frames-visible', newState);
2342    }    
2343
2344    function toggleAvailableFrameColors(newState)
2345    {
2346        if(typeof newState === 'undefined')
2347        {        
2348            var currentState = document.getElementById('simpleFrameContainerDiv').getAttribute('data-frame-colors-visible');
2349            newState = 1 - currentState;
2350        }
2351        
2352        document.getElementById('simpleFrameContainerDiv').setAttribute('data-frame-colors-visible', newState);
2353    }    
2354    
2355    function toggleAvailableMats1(newState)
2356    {
2357        if(typeof newState === 'undefined')
2358        {
2359            var currentState = document.getElementById('simpleMatContainerDiv').getAttribute('data-mat1-options-visible');
2360            newState = 1 - currentState;
2361        }        
2362        
2363        if(newState == 1)
2364        {
2365            toggleAvailableMat1Widths(0);
2366        }
2367        
2368        document.getElementById('simpleMatContainerDiv').setAttribute('data-mat1-options-visible', newState);
2369    }
2370    
2371    function toggleAvailableMat1Widths(newState)
2372    {
2373        if(typeof newState === 'undefined')
2374        {
2375            var currentState = document.getElementById('simpleMatContainerDiv').getAttribute('data-mat1-widths-visible');
2376            newState = 1 - currentState;
2377        }
2378        
2379        if(newState == 1)
2380        {
2381            toggleAvailableMats1(0);
2382        }        
2383        
2384        document.getElementById('simpleMatContainerDiv').setAttribute('data-mat1-widths-visible', newState);
2385    }
2386
2387    function toggleAvailableMats2(newState)
2388    {
2389        if(typeof newState === 'undefined')
2390        {
2391            var currentState = document.getElementById('simpleMatContainerDiv').getAttribute('data-mat2-options-visible');
2392            newState = 1 - currentState;
2393        }        
2394        
2395        if(newState == 1)
2396        {
2397            toggleAvailableMat2Widths(0);
2398        }
2399        
2400        document.getElementById('simpleMatContainerDiv').setAttribute('data-mat2-options-visible', newState);
2401    }
2402    
2403    function toggleAvailableMat2Widths(newState)
2404    {
2405        if(typeof newState === 'undefined')
2406        {
2407            var currentState = document.getElementById('simpleMatContainerDiv').getAttribute('data-mat2-widths-visible');
2408            newState = 1 - currentState;
2409        }
2410        
2411        if(newState == 1)
2412        {
2413            toggleAvailableMats2(0);
2414        }        
2415        
2416        document.getElementById('simpleMatContainerDiv').setAttribute('data-mat2-widths-visible', newState);
2417    }    
2418    
2419    function toggleAvailablePapers(newState)
2420    {
2421        if(typeof newState === 'undefined')
2422        {
2423            var currentState = document.getElementById('simplePaperContainerDiv').getAttribute('data-papers-visible');
2424            newState = 1 - currentState;
2425        }
2426
2427        document.getElementById('simplePaperContainerDiv').setAttribute('data-papers-visible', newState);
2428    }    
2429    
2430    function toggleAvailableCanvasWraps(newState)
2431    {
2432        if(typeof newState === 'undefined')
2433        {
2434            var currentState = document.getElementById('simpleCanvasWrapContainerDiv').getAttribute('data-canvas-wraps-visible');
2435            newState = 1 - currentState;
2436        }
2437
2438        document.getElementById('simpleCanvasWrapContainerDiv').setAttribute('data-canvas-wraps-visible', newState);
2439    }
2440
2441    function toggleAvailableFinishes(newState)
2442    {
2443        if(typeof newState === 'undefined')
2444        {
2445            var currentState = document.getElementById('simpleFinishContainerDiv').getAttribute('data-finishes-visible');
2446            newState = 1 - currentState;
2447        }
2448
2449        document.getElementById('simpleFinishContainerDiv').setAttribute('data-finishes-visible', newState);
2450    }    
2451    
2452   document.addEventListener("DOMContentLoaded", function(){
2453
2454        if(false)
2455        {
2456            var artworkOptionsMenuContainer = document.getElementById('artworkTabContainerDiv');
2457            var artworkOptionsFocusTrap = focusTrap(artworkOptionsMenuContainer,{clickOutsideDeactivates: true,});
2458            var artworkOptionsTabLinks = document.querySelectorAll('.menuTabLink');
2459
2460            for(var i = 0; i < artworkOptionsTabLinks.length; i ++)
2461            {
2462                artworkOptionsTabLinks[i].addEventListener('keydown', function(event){
2463
2464                    if(event.keyCode == 13)
2465                    {
2466                        artworkOptionsFocusTrap.activate();
2467                    }
2468                });
2469            }
2470        }
2471    });
2472	
2473	function positionPriceDiv()
2474    {
2475        var widthClient = parseInt(document.documentElement.clientWidth);
2476        var heightClient = parseInt(document.documentElement.clientHeight);
2477
2478        if(document.getElementById('pricediv') && document.getElementById('artistHeadshotAndNameContainerDiv'))
2479        {
2480            var sourcePosY = 0;
2481            var sourceObject = document.getElementById('artistHeadshotAndNameContainerDiv');
2482
2483            if (sourceObject.offsetParent)
2484            {
2485                sourcePosY = sourceObject.offsetTop;
2486
2487                while (sourceObject = sourceObject.offsetParent)
2488                {
2489                    sourcePosY += sourceObject.offsetTop;
2490                }
2491            }
2492
2493            var divHeight = getComputedStyle(document.getElementById('artistHeadshotAndNameContainerDiv')).getPropertyValue('height');
2494            divHeight = divHeight.replace('px','');
2495
2496            sourcePosY += parseInt(divHeight);
2497
2498            var scrollY = document.documentElement ? document.documentElement.scrollTop : document.body.scrollTop;
2499
2500            if(scrollY == 0)
2501            {
2502                scrollY = document.body.scrollTop;
2503            }
2504			
2505			//console.log(sourcePosY + ' - ' + scrollY + ' - ' + heightClient);
2506
2507			if(heightClient + scrollY > (sourcePosY + 130))
2508			{
2509				document.getElementById('pricediv').className = 'normal';
2510			}
2511			else
2512			{
2513				document.getElementById('pricediv').className = 'fixed';
2514			}
2515		
2516		}
2517    }
2518	
2519	function positionPriceDiv2()
2520    {
2521        var widthClient = parseInt(document.documentElement.clientWidth);
2522        var heightClient = parseInt(document.documentElement.clientHeight);
2523
2524        if(document.getElementById('pricediv') && document.getElementById('menudiv'))
2525        {
2526            var sourcePosY = 0;
2527            var sourceObject = document.getElementById('menudiv');
2528
2529            if (sourceObject.offsetParent)
2530            {
2531                sourcePosY = sourceObject.offsetTop;
2532
2533                while (sourceObject = sourceObject.offsetParent)
2534                {
2535                    sourcePosY += sourceObject.offsetTop;
2536                }
2537            }
2538
2539            var divHeight = getComputedStyle(document.getElementById('menudiv')).getPropertyValue('height');
2540            divHeight = divHeight.replace('px','');
2541
2542            sourcePosY += parseInt(divHeight);
2543
2544            var scrollY = document.documentElement ? document.documentElement.scrollTop : document.body.scrollTop;
2545
2546            if(scrollY == 0)
2547            {
2548                scrollY = document.body.scrollTop;
2549            }
2550			
2551			//console.log(sourcePosY + ' - ' + scrollY + ' - ' + heightClient);
2552
2553			if(heightClient + scrollY > (sourcePosY + 0))
2554			{
2555				document.getElementById('pricediv').className = 'normal';
2556			}
2557			else
2558			{
2559				document.getElementById('pricediv').className = 'fixed';
2560			}
2561		
2562		}
2563    }	
2564	
2565	function hidePriceDiv()
2566    {
2567        var widthClient = parseInt(document.documentElement.clientWidth);
2568        var heightClient = parseInt(document.documentElement.clientHeight);
2569
2570        if(document.getElementById('pricediv') && document.getElementById('rightDiv'))
2571        {
2572            var sourcePosY = 0;
2573            var sourceObject = document.getElementById('rightDiv');
2574
2575            if (sourceObject.offsetParent)
2576            {
2577                sourcePosY = sourceObject.offsetTop;
2578
2579                while (sourceObject = sourceObject.offsetParent)
2580                {
2581                    sourcePosY += sourceObject.offsetTop;
2582                }
2583            }
2584
2585            var divHeight = getComputedStyle(document.getElementById('rightDiv')).getPropertyValue('height');
2586            divHeight = divHeight.replace('px','');
2587
2588            sourcePosY += parseInt(divHeight);
2589
2590            var scrollY = document.documentElement ? document.documentElement.scrollTop : document.body.scrollTop;
2591
2592            if(scrollY == 0)
2593            {
2594                scrollY = document.body.scrollTop;
2595            }
2596			
2597			//console.log(sourcePosY + ' - ' + scrollY + ' - ' + heightClient);
2598
2599			if(heightClient + scrollY > (sourcePosY + 130))
2600			{
2601				document.getElementById('pricediv').className = 'hidden';
2602			}
2603			else
2604			{
2605				document.getElementById('pricediv').className = 'fixed';
2606			}
2607		
2608		}
2609    }	
2610	
2611	window.addEventListener('click', positionPriceDiv2);
2612	window.addEventListener('scroll', positionPriceDiv2);

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.