function wrapper(){const SPYNE_ENV_MODE='prod';const SPYNE_BASE_URL=SPYNE_ENV_MODE==='test'?"https://beta-web.spyne.xyz":"https://360.spyne.ai/360";const SPYNE_API_BASE_URL=SPYNE_ENV_MODE==='test'?"https://beta-api.spyne.xyz":'https://prod-360-api.tech-dc2.workers.dev';const SPYNE_API_BASE_URL_COMMON_IFRAME=SPYNE_ENV_MODE==='test'?"https://beta-api.spyne.xyz/api/nv1/hotspot/sku-data":'https://api.spyne.ai/api/nv1/hotspot/sku-data';let SPYNE_IMAGE_CATE="3D_Model";const SPYNE_API_SKU_NAME='https://api.spyne.ai' let enterpriseId="2d410b1b9";var buttonToRenderPath='';var buttonToRenderPath2='';var currentslide='';let checkData='';var noSlide=0;const classArray=[".slide-current",".item.initial.active",".mc-selected",".swiper-slide-active",".slick-active",".slick-current",".glide__slide--active",".current-slide",".active-slide",".carousel-item.active",".owl-item.active",".rsSlide.active",".tns-slide-active",".flickity-slider.is-selected",".keen-slider__slide_active",".lslide.active"];(function(){if(window.amplitude&&window.amplitude.invoked){console.error("Amplitude snippet has already been loaded.");return} window.amplitude=window.amplitude||{_q:[],_iq:{},invoked:!0};var methods=["init","logEvent","identify","setUserId","setGroup","setUserProperties","clearUserProperties","setOptOut","setVersionName","setDomain","setDeviceId","setTransport","reset","getSessionId","getDeviceId","setSessionId","getUserId","setSessionTimeout","getUserProperties"];function createMethod(name){return function(){window.amplitude._q.push({name:name,args:Array.prototype.slice.call(arguments)})}} for(var i=0;i{try{amplitude.track(event,{...customAmplitudeEvents,})}catch(error){console.warn(error)}} function isMobile(){const query=window.matchMedia("(max-width: 600px)");return query.matches} function getXPathForElement(element){if(element.id!==""){return `//*[@id="${element.id}"]`} if(element===document.body){return"/html/body"} let ix=0;const siblings=element.parentNode.childNodes;for(let i=0;ie.nodeName===element.nodeName);const index=siblings.indexOf(element)+1;const path=`${getXPathForCurrentEle(element.parentNode)}/${element.nodeName.toLowerCase()}[${index}]`;return path} function findMatchingParentXPath(xpathOfElement,classArray){const element=document.querySelector(".flex-control-nav") if(!element){console.log("Element not found for the given XPath.");return null} let parent=element.parentElement;while(parent){if(classArray.some(cls=>parent.classList.contains(cls.replace('.','')))){const parentXPath=getXPathForCurrentEle(parent);if(parentXPath===xpathOfElement){return parentXPath}} parent=parent.parentElement} return null} function processActiveElements(currentClass){const result=[];const activeElements=document.querySelectorAll(currentClass);if(activeElements.length>0){activeElements.forEach((element)=>{const xpathOfElement=getXPathForElement(element);const matchedXPath=findMatchingParentXPath(xpathOfElement,classArray);if(matchedXPath){result.push({elementXPath:xpathOfElement,parentXPath:matchedXPath})}})}else{console.log("No elements with the class .swiper-slide-active found.")} return document.evaluate(result[0]?.parentXPath,document,null,XPathResult.FIRST_ORDERED_NODE_TYPE,null).singleNodeValue} function init(){setTimeout(async()=>{let vinValue="";if('VIN'==="VIN"){if(isMobile()){vinValue=getSkuValue()}else{const xpathResult=document.evaluate('nothing',document,null,XPathResult.FIRST_ORDERED_NODE_TYPE,null);const vinElement=xpathResult.singleNodeValue;vinValue=getSkuValue();console.log('Found VIN:',vinValue)}}else{vinValue=getStockname()} if(!vinValue){try{let url=`${SPYNE_API_SKU_NAME}/spin/360-sku-name?enterprise_id=${enterpriseId}`;const response=await fetch(url);const data=await response.json();vinValue=getStockVin(data?.data,document.body)}catch(error){console.log("VIN for 360 not found.")} if(!vinValue){console.log("VIN for 360 not found.")}} if('v1'=='v1'){checkData=await checkIfDataPresent(vinValue);if(!checkData.exterior.allow&&!checkData.interior.allow){console.warn('360 Data not available yet');return}else{amplitudeEvents({event:"360 Data available",customAmplitudeEvents:{enterpriseId:enterpriseId,skuName:vinValue,pageurl:window.location.href,"Page Counter":1,"Page Domain":window.location.hostname,"Page Location":window.location.href,"Page Path":window.location.pathname,"Page Title":document.title,"Page URL":window.location.href,"Referrer":document.referrer,"Referring domain":document.referrer?new URL(document.referrer).hostname:''}})}}else{checkData=await checkIfDataPresentForCommonIframe(vinValue);if(!checkData?.['360']?.allow&&!checkData?.['image']?.allow&&!checkData?.['video']?.allow){console.log('Data not available yet');return}else{amplitudeEvents({event:"360 Data available",customAmplitudeEvents:{enterpriseId:enterpriseId,skuName:vinValue,pageurl:window.location.href,"Page Counter":1,"Page Domain":window.location.hostname,"Page Location":window.location.href,"Page Path":window.location.pathname,"Page Title":document.title,"Page URL":window.location.href,"Referrer":document.referrer,"Referring domain":document.referrer?new URL(document.referrer).hostname:''}})}} const closeBtn='https://spyne-static.s3.amazonaws.com/view360/close.svg';var currentslide;var currentClass;if('BUTTON'!=='BUTTON'){if(!currentslide?.length){var element=document.querySelector(".flex-control-nav") if(element){currentslide=element;noSlide=1;console.log(currentslide)}else{console.log("Element not found.")}} if(currentslide.length>1){currentslide=processActiveElements(currentClass) console.log(currentslide,"MT1")} if(currentslide.length===1&&!noSlide){currentslide=currentslide[0];console.log(currentslide,"E1")} const modal=document.createElement('div');modal.style.display='none';modal.style.position='fixed';modal.style.zIndex='9999';modal.style.left='0';modal.style.top='0';modal.style.width='100%';modal.style.height='100%';modal.style.backgroundColor='rgba(0, 0, 0, 0.8)';const modalContent=document.createElement('div');modalContent.style.position='absolute';modalContent.style.top='50%';modalContent.style.left='50%';modalContent.style.transform='translate(-50%, -50%)';modalContent.style.borderRadius='1rem';modalContent.style.backgroundColor='white';modalContent.style.zIndex='10000';modalContent.style.overflow='hidden';modalContent.style.boxShadow='0 0 15px rgba(0, 0, 0, 0.3)';modalContent.style.aspectRatio='16 / 9';modalContent.style.height='70%';const closeButton=document.createElement('button');closeButton.style.position='absolute';closeButton.style.right='20px';closeButton.style.top='20px';closeButton.style.backgroundColor='rgba(82, 81, 81, 0.8)';closeButton.style.borderRadius='50%';closeButton.style.width='32px';closeButton.style.height='32px';closeButton.style.cursor='pointer';closeButton.style.zIndex='10001';closeButton.style.display='flex';closeButton.style.alignItems='center';closeButton.style.justifyContent='center';closeButton.style.border='none';const closeIcon=document.createElement('img');closeIcon.src='https://spyne-static.s3.amazonaws.com/spin/close.svg';closeIcon.alt='close';closeIcon.style.width='20px';closeIcon.style.height='20px';closeButton.appendChild(closeIcon);const modalIframe=document.createElement('iframe');modalIframe.style.width='100%';modalIframe.style.height='100%';modalIframe.style.border='none';modalIframe.style.borderRadius='1rem';modalContent.appendChild(closeButton);modalContent.appendChild(modalIframe);modal.appendChild(modalContent);function openModal(skuId){if('v1'=='v1'){modalIframe.src=`${SPYNE_BASE_URL}?enterprise_id=${enterpriseId}&sku_name=${vinValue}`}else{modalIframe.src=`${SPYNE_BASE_URL}?enterprise_id=${enterpriseId}&sku_name=${vinValue}&version=v1`} modal.style.display='block';document.body.style.overflow='hidden'} function closeModal(){modal.style.display='none';document.body.style.overflow=''} closeButton.addEventListener('click',closeModal);modal.addEventListener('click',(event)=>{if(event.target===modal){closeModal()}});document.body.appendChild(modal);function containsImage(element){return element.querySelectorAll('img, picture, svg, canvas')!==null||window.getComputedStyle(element).backgroundImage!=='none'||element.tagName.toLowerCase()==='img'||element.tagName.toLowerCase()==='svg'||element.tagName.toLowerCase()==='canvas'} var imageContainer='' if(!noSlide){imageContainer=Array.from(currentslide.querySelectorAll('*')).find(containsImage);console.log(imageContainer)}else{imageContainer=currentslide} var{xpath,comp}=getXPath(imageContainer);const targetImageElement=document.evaluate(xpath,document,null,XPathResult.FIRST_ORDERED_NODE_TYPE,null).singleNodeValue;if(targetImageElement&&'BUTTON'!='BUTTON'){const imageHeight=targetImageElement.clientHeight;const imageWeight=targetImageElement.offsetWidth const parentElementTag=targetImageElement?.parentNode?.tagName;let iFrameExterior=document.createElement('iFrame');if('v1'=='v1'){iFrameExterior.src=`${SPYNE_BASE_URL}?enterprise_id=${enterpriseId}&sku_name=${vinValue}`}else{iFrameExterior.src=`${SPYNE_BASE_URL}?enterprise_id=${enterpriseId}&sku_name=${vinValue}&version=v1`} iFrameExterior.style.height=`${imageHeight}px`;iFrameExterior.style.width='100%';iFrameExterior.style.border='none';if(parentElementTag.toLowerCase()==='figure'){iFrameExterior.style.minHeight='0px';iFrameExterior.style.display='block';iFrameExterior.style.width='revert-layer'} const button=document.createElement('button');const img=document.createElement('img');img.src='https://spyne-static.s3.amazonaws.com/spin/expand.svg';img.width=16;img.height=16;img.style.display='block';button.appendChild(img);button.style.position='absolute';button.style.top='10px';button.style.right='10px';button.style.zIndex='1000';button.style.padding='4px';button.style.backgroundColor='#5D5B58';button.style.border='none';button.style.borderRadius='4px';button.style.cursor='pointer';button.style.width='32px';button.style.height='32px';button.style.minWidth='32px';button.style.minHeight='32px';button.style.display='flex';button.style.alignItems='center';button.style.justifyContent='center';button.style.boxSizing='border-box';document.body.appendChild(button);const parentElement=targetImageElement.parentNode;parentElement.style.position='relative';parentElement.replaceChild(iFrameExterior,targetImageElement);button.addEventListener('click',()=>{openModal()});parentElement.appendChild(button);console.log("360 View initialized for VIN:",vinValue)}else{if('BUTTON'!='BUTTON'){console.warn("Target image element not found. Check the XPath or ensure the element is present in the DOM.")}}} if('BUTTON'==='BUTTON'){buttonToRenderPath=document.querySelector(".woocommerce-product-gallery")} const overlayParent=document.evaluate('/html',document,null,XPathResult.FIRST_ORDERED_NODE_TYPE,null).singleNodeValue;overlayParent.draggable=!1;const body=document.evaluate('/html/body',document,null,XPathResult.FIRST_ORDERED_NODE_TYPE,null).singleNodeValue;const button=document.createElement('div');button.innerHTML="";button.id=`spyne-${enterpriseId}`;button.classList.add("box-360-spin-btn-2");button.style.setProperty('display','block','important');const container=document.createElement('div');container.draggable=!1;const containerStyles={position:'absolute',width:'90%',height:'90%',borderRadius:'10px',cursor:'pointer',top:'0'};Object.assign(container.style,containerStyles);let currentActiveTab='';button.addEventListener('click',()=>{const doesOverlayExist=document.getElementById(`spyne-${enterpriseId}-overlay`);amplitudeEvents({event:"Script Iframe Button Clicked",customAmplitudeEvents:{enterpriseId:enterpriseId,skuName:vinValue,pageurl:window.location.href,"Page Counter":1,"Page Domain":window.location.hostname,"Page Location":window.location.href,"Page Path":window.location.pathname,"Page Title":document.title,"Page URL":window.location.href,"Referrer":document.referrer,"Referring domain":document.referrer?new URL(document.referrer).hostname:''}}) if(doesOverlayExist){handleHideOverlay(null,!1);return} const isExteriorFrameAlreadyExists=document.getElementById(`spyne-${enterpriseId}-exterior-container`)?!0:!1;const isInteriorFrameAlreadyExists=document.getElementById(`spyne-${enterpriseId}-interior-container`)?!0:!1;body.style.overflow='hidden';const exteriorTab=document.createElement('button');exteriorTab.innerText='Exterior';exteriorTab.id=isExteriorFrameAlreadyExists?'':`spyne-${enterpriseId}-exterior-btn`;exteriorTab.draggable=!1;exteriorTab.addEventListener('click',handleExteriorTabSelection);exteriorTab.addEventListener('touchstart',handleExteriorTabSelection);const exteriorTabStyles={backgroundColor:'#2e054e',color:'#fff',borderRadius:'6px',border:'none',width:'100%',padding:'5px',outline:'none'};Object.assign(exteriorTab.style,exteriorTabStyles);const interiorTab=document.createElement('button');interiorTab.innerText='Interior';interiorTab.id=`spyne-${enterpriseId}-interior-btn`;interiorTab.style.outline='none';interiorTab.draggable=!1;interiorTab.addEventListener('click',handleInteriorTabSelection);interiorTab.addEventListener('touchstart',handleInteriorTabSelection);const interiorTabStyles={backgroundColor:'#2e054e',color:'#fff',borderRadius:'6px',border:'none',width:'100%',padding:'5px'};Object.assign(interiorTab.style,interiorTabStyles);const tabSwitchContainer=document.createElement('div');const tabSwitchContainerStyles={backgroundColor:'rgb(190 183 183 / 70%)',zIndex:9999,padding:'4px 3px',position:'absolute',left:'50%',bottom:'3rem',transform:'translate(-50%, -50%)',id:`spyne-${enterpriseId}-tab-switch`,background:'#fff',borderRadius:'6px',boxShadow:'0 1px 18px rgba(0,0,0,.12), 0 6px 10px rgba(0,0,0,.14), 0 3px 5px -1px rgba(0,0,0,.2)',display:'grid',fontSize:'15px',gridTemplateColumns:'',gap:'10px',lineHeight:'16px',margin:'0 auto',visibility:(checkData?.exterior?.allow&&checkData?.interior?.allow)?'visible':'hidden'};Object.assign(tabSwitchContainer.style,tabSwitchContainerStyles);tabSwitchContainer.draggable=!1;if(checkData?.exterior?.allow){tabSwitchContainer.append(exteriorTab);currentActiveTab='exterior';tabSwitchContainer.style.gridTemplateColumns+=' 1fr '} if(checkData?.interior?.allow){tabSwitchContainer.append(interiorTab);currentActiveTab=currentActiveTab||'interior';tabSwitchContainer.style.gridTemplateColumns+=' 1fr '} const overlayDiv=document.createElement('div');overlayDiv.id=`spyne-${enterpriseId}-overlay`;const overlayDivStyles={position:'fixed',display:'flex',alignItems:'center',justifyContent:'center',top:'3%',left:0,height:'100%',width:'100%',backgroundColor:'rgba(10, 10, 10, 0.6)',zIndex:'9999999999'};Object.assign(overlayDiv.style,overlayDivStyles);const exteriorContainer=document.createElement('div');exteriorContainer.id=`spyne-${enterpriseId}-exterior-container`;const exteriorContainerStyles={width:'100%',height:'100%',borderRadius:'10px'};Object.assign(exteriorContainer.style,exteriorContainerStyles);const iFrameExterior=document.createElement('iFrame');if('v1'=='v1'){iFrameExterior.src=`${SPYNE_BASE_URL}?enterprise_id=${enterpriseId}&sku_name=${vinValue}`}else{iFrameExterior.src=`${SPYNE_BASE_URL}?enterprise_id=${enterpriseId}&sku_name=${vinValue}&version=v1`} const iFrameExteriorStyles={height:'100%',width:'100%',borderRadius:'10px',position:'absolute'};Object.assign(iFrameExterior.style,iFrameExteriorStyles);exteriorContainer.append(iFrameExterior);const closeBtnIconExterior=document.createElement('img');closeBtnIconExterior.src=closeBtn;closeBtnIconExterior.addEventListener('click',handleHideOverlay);closeBtnIconExterior.addEventListener('touchstart',handleHideOverlay);const closeBtnIconExteriorStyles={backgroundColor:'rgba(10, 10, 10, 0.6)',zIndex:10,borderRadius:'20px',padding:'6px',position:'absolute',right:0,width:'30px',margin:'10px',cursor:'pointer'};Object.assign(closeBtnIconExterior.style,closeBtnIconExteriorStyles);exteriorContainer.append(closeBtnIconExterior);const interiorContainer=document.createElement('div');interiorContainer.style.width='100%';interiorContainer.style.height='100%';interiorContainer.id=`spyne-${enterpriseId}-interior-container`;const iFrameInterior=document.createElement('iFrame');iFrameInterior.src=`${SPYNE_BASE_URL}/dashboard/interior-360?imageUrl=${checkData?.interior?.url}`;const iFrameInteriorStyles={height:'100%',width:'100%',borderRadius:'10px',position:'absolute'};Object.assign(iFrameInterior.style,iFrameInteriorStyles);interiorContainer.append(iFrameInterior);const closeBtnIconInterior=document.createElement('img');closeBtnIconInterior.src=closeBtn;closeBtnIconInterior.addEventListener('click',handleHideOverlay);closeBtnIconInterior.addEventListener('touchstart',handleHideOverlay);const closeBtnIconInteriorStyles={backgroundColor:'rgba(10, 10, 10, 0.6)',zIndex:10,borderRadius:'20px',padding:'6px',position:'absolute',right:0,width:'30px',margin:'10px',cursor:'pointer'};Object.assign(closeBtnIconInterior.style,closeBtnIconInteriorStyles);interiorContainer.append(closeBtnIconInterior);if('v1'=='v1'){if(!checkData?.exterior?.allow&&!checkData?.interior?.allow){console.warn('360 Data not available yet');return}}else{if(!checkData['360']?.allow&&!checkData.image?.allow&&!checkData.video?.allow){console.log('Data not available yet');return}} if(!0){interiorTab.style.backgroundColor='#fff';interiorTab.style.color='#000';interiorContainer.style.width='0';interiorContainer.style.height='0';interiorContainer.style.visibility='hidden';container.append(exteriorContainer);amplitudeEvents({event:"360 Data available",customAmplitudeEvents:{enterpriseId:enterpriseId,skuName:vinValue,pageurl:window.location.href,"Page Counter":1,"Page Domain":window.location.hostname,"Page Location":window.location.href,"Page Path":window.location.pathname,"Page Title":document.title,"Page URL":window.location.href,"Referrer":document.referrer,"Referring domain":document.referrer?new URL(document.referrer).hostname:''}})} if(checkData?.interior?.allow&&!isInteriorFrameAlreadyExists){container.append(interiorContainer)} container.append(tabSwitchContainer);overlayDiv.append(container);overlayParent.append(overlayDiv);overlayDiv.addEventListener('click',handleHideOverlay);overlayDiv.addEventListener('touchstart',handleHideOverlay)});if('BUTTON'==='BUTTON'){button.style.textAlign='center';button.style.width="100%";buttonToRenderPath.append(button)}},500)} const checkIfDataPresent=async(vinName)=>{let returnObj={interior:{'allow':!1,'url':''},exterior:{'allow':!1}};try{let url=`${SPYNE_API_BASE_URL}/?type=output&skuName=${vinName}&enterpriseId=${enterpriseId}`;const response=await fetch(url);if(!response.ok){throw new Error('Network response was not ok')} const data=await response.json();const showIframe=data?.showIframe;if(showIframe===!1){return} if(Array.isArray(data.skuDetails)&&data.skuDetails.length){returnObj.exterior.allow=!0} if(data?.interiorData?.output_image_hres_url){returnObj.interior.allow=!0;returnObj.interior.url=data?.interiorData?.output_image_hres_url} return returnObj}catch(err){return returnObj}} const checkIfDataPresentForCommonIframe=async(vinName)=>{let returnObj={'360':{'allow':!1,},'image':{'allow':!1},'video':{'allow':!1}};try{let url=`${SPYNE_API_BASE_URL_COMMON_IFRAME}?enterpriseId=${enterpriseId}&skuName=${vinName}`;const response=await fetch(url);if(!response.ok){throw new Error('Network response was not ok')} const data=await response.json();const showCommonIframe=data?.data['360']?.showIframe;if(showCommonIframe===!1){return} const teamConfig=data?.data?.team_config const is360Available=teamConfig?.['360']?.isActive&&data?.data?.['360']?.image_data.length?!0:!1;const isGalleryAvailable=teamConfig.image?.isActive&&Object.keys(data.data.image).length?!0:!1;const isVideoAvailable=teamConfig.video.isActive&&data.data.video.length?!0:!1;console.log({is360Available,isGalleryAvailable,isVideoAvailable}) returnObj['360'].allow=is360Available;returnObj.image.allow=isGalleryAvailable;returnObj.video.allow=isVideoAvailable;return returnObj}catch(err){return returnObj}} const handleExteriorTabSelection=(e)=>{e.stopPropagation();e.target.style.backgroundColor="#2e054e";e.target.style.color="#fff";let interiorBtn=document.getElementById(`spyne-${enterpriseId}-interior-btn`);if(interiorBtn){interiorBtn.style.backgroundColor='#fff';interiorBtn.style.color='#000'} let exteriorIframe=document.getElementById(`spyne-${enterpriseId}-exterior-container`);exteriorIframe.style.visibility="visible";exteriorIframe.style.width="100%";exteriorIframe.style.height="100%";let interiorIframe=document.getElementById(`spyne-${enterpriseId}-interior-container`);interiorIframe.style.visibility="hidden";interiorIframe.style.width="0px";interiorIframe.style.height="0px"} const handleInteriorTabSelection=(e)=>{e.stopPropagation();e.target.style.backgroundColor="#2e054e";e.target.style.color="#fff";let exteriorBtn=document.getElementById(`spyne-${enterpriseId}-exterior-btn`);if(exteriorBtn){exteriorBtn.style.backgroundColor='#fff';exteriorBtn.style.color='#000'} let interiorIframe=document.getElementById(`spyne-${enterpriseId}-interior-container`);interiorIframe.style.visibility="visible";interiorIframe.style.width="100%";interiorIframe.style.height="100%";let exteriorIframe=document.getElementById(`spyne-${enterpriseId}-exterior-container`);exteriorIframe.style.visibility="hidden";exteriorIframe.style.width="0px";exteriorIframe.style.height="0px"} const handleHideOverlay=(e,hide=!0)=>{if(e){e.stopPropagation()} const overlayDiv=document.getElementById(`spyne-${enterpriseId}-overlay`);const body=document.evaluate('/html/body',document,null,XPathResult.FIRST_ORDERED_NODE_TYPE,null).singleNodeValue;if(hide){overlayDiv.style.visibility='hidden';overlayDiv.style.width='0';overlayDiv.style.height='0'}else{overlayDiv.style.visibility='visible';overlayDiv.style.width='100%';overlayDiv.style.height='100%'} body.style.overflow='auto'} function getXPath(node){var comp,comps=[];var parent=null;var xpath="";var getPos=function(node){var position=1,curNode;if(node.nodeType==Node.ATTRIBUTE_NODE){return null} for(curNode=node.previousSibling;curNode;curNode=curNode.previousSibling){if(curNode.nodeName==node.nodeName){++position}} return position};if(node instanceof Document){return"/"} for(;node&&!(node instanceof Document);node=node.nodeType==Node.ATTRIBUTE_NODE?node.ownerElement:node.parentNode){comp=comps[comps.length]={};switch(node.nodeType){case Node.TEXT_NODE:comp.name="text()";break;case Node.ATTRIBUTE_NODE:comp.name="@"+node.nodeName;break;case Node.PROCESSING_INSTRUCTION_NODE:comp.name="processing-instruction()";break;case Node.COMMENT_NODE:comp.name="comment()";break;case Node.ELEMENT_NODE:comp.name=node.nodeName;break} comp.position=getPos(node)} for(var i=comps.length-1;i>=0;i--){comp=comps[i];xpath+="/"+comp.name;if(comp.position!=null){xpath+="["+comp.position+"]"}} return{xpath,comp}} function getVinname(vinElement){let currentElement=vinElement;while(currentElement){const vin=searchSiblingsForVIN(currentElement);if(vin){return vin} currentElement=currentElement.parentElement} return null} function searchSiblingsForVIN(element){function recursiveSearch(elem){if(elem){const vinCheck=isValidVIN(elem.textContent);if(vinCheck?.status){return vinCheck?.vin}} for(let child of elem.children){const vin=recursiveSearch(child);if(vin)return vin} return null} let vin=recursiveSearch(element);if(vin)return vin;let sibling=element.previousElementSibling;while(sibling){vin=recursiveSearch(sibling);if(vin)return vin;sibling=sibling.previousElementSibling} sibling=element.nextElementSibling;while(sibling){vin=recursiveSearch(sibling);if(vin)return vin;sibling=sibling.nextElementSibling} return null} function isValidVIN(vin){const stringArray=vin?.split(' ')||[];for(const part of stringArray){const cleanedPart=part.trim();if(cleanedPart.length===17&&/^[A-HJ-NPR-Z0-9]{17}$/.test(cleanedPart)&&/[A-Z]/.test(cleanedPart)){return{"status":!0,"vin":cleanedPart}}} return!1} function getStockVin(data,element){let ans;const pageText=element.innerText;const normalizedText=pageText.toLowerCase();data.forEach(term=>{const normalizedTerm=term.toLowerCase();if(normalizedText.includes(normalizedTerm)){ans=term}});return ans} function getStockname(){let vinValue='';const text=document.body.innerText||document.body.textContent;const regex=/STOCK NO \d{4}/;const match=text.match(regex);if(match){console.log("Found text:",match[0]);vinValue=match[0].split(" ").pop()} return vinValue} init()} let wrapperCalled=!1;function initializeWrapper(){const xPathPgnB='flex-control-nav';var element=document.querySelector('.flex-control-nav') if(element&&!wrapperCalled){wrapper();wrapperCalled=!0}else if(!wrapperCalled){const observer=new MutationObserver(()=>{const newElement=document.querySelector('.flex-control-nav') if(newElement&&!wrapperCalled){wrapper();wrapperCalled=!0;observer.disconnect()}});observer.observe(document,{childList:!0,subtree:!0});setTimeout(()=>{if(!wrapperCalled){observer.disconnect();console.log('Element not found after 2 minutes')}},120000)}} initializeWrapper() ;