String.prototype.startsWith||(String.prototype.startsWith=function(searchString,position){return this.substr(position||0,searchString.length)===searchString}),String.prototype.replaceAll||(String.prototype.replaceAll=function(search,replacement){return this.replace(new RegExp(search,"g"),replacement)});var PrintPricePreloader=function(){this.apiRoot="https://api.printprice.co.uk/api/",this.parameters="",this.userType="",this.apiResponse=null,this.finished=!1,this.parameterOptions=["printsizeid","productstyleid","assemblyid"],this.parameterOptionsUrlEncoded=["size","style","assembly"],this.siteDown=!1,this.signId=0,this.getResponse=function(successCallback,errorCallback){this.checkReady(successCallback,errorCallback)},this.checkReady=function(successCallback,errorCallback){this.siteDown?errorCallback():this.finished?successCallback(this.apiResponse):setTimeout(this.checkReady.bind(this),100,successCallback,errorCallback)},this.preload=function(){"undefined"!=typeof productId?("undefined"==typeof newQuoteMode&&this.getNewQuote(productTypeId,productId,this.userType,function(json){this.apiResponse=json,this.finished=!0}.bind(this),function(){}),newQuoteMode?this.getNewQuote(productTypeId,productId,this.userType,function(json){this.apiResponse=json,this.finished=!0}.bind(this),function(){}):this.getExistingQuote(productTypeId,this.userType,function(json){this.apiResponse=json,this.finished=!0}.bind(this))):("undefined"==typeof newQuoteMode&&this.getNewQuote(productTypeId,0,this.userType,function(json){this.apiResponse=json,this.finished=!0}.bind(this),function(){}),newQuoteMode?this.getNewQuote(productTypeId,0,this.userType,function(json){this.apiResponse=json,this.finished=!0}.bind(this),function(){}):this.getExistingQuote(productTypeId,this.userType,function(json){this.apiResponse=json,this.finished=!0}.bind(this)))},this.getNewQuote=function(productTypeId,productId,userType,successCallback,errorCallback){userType="quote/new/"+userType+"/"+productTypeId+"/"+(productId=productId||0)+"/"+this.signId+"/true";this.httpGet(userType,function(data){successCallback(data)})},this.getExistingQuote=function(productTypeId,userType,successFunction){userType="optimised/get/quote/"+quoteId+"/"+userType;this.httpGet(userType,function(data){successFunction(data)})},this.createParameterPostBody=function(){let queryString="",queryParameters=(queryString.startsWith("?")&&(queryString=this.parameters.substring(1)),queryString.split("&")),postBody={};return queryParameters.forEach(function(param){var attr,param=param.split("=");2<=param.length&&(attr=param[0],attr=this.capitaliseParamConfigAttribute(attr),param=param[1],attr&&(postBody[attr]=param,"true"==postBody[attr]&&(postBody[attr]=!0),"false"==postBody[attr]&&(postBody[attr]=!1)))}),postBody},this.paramatisedUrlQuery=function(){return!1},this.capitaliseParamConfigAttribute=function(attr){switch(attr.toLowerCase()){case"defaultcovermaterialid":return"defaultCoverMaterialId";case"defaulttotalquantity":return"defaultTotalQuantity";case"defaultvatable":return"defaultVatable";case"defaulthardwaretypeid":return"defaultHardwareTypeId";case"defaulthardwareid":return"defaultHardwareId";case"defaultfittingid":return"defaultFittingId";case"defaultmaterialtypeid":return"defaultMaterialTypeId";case"defaultmaterialid":return"defaultMaterialId";case"defaultmaterialoptionid":return"defaultMaterialOptionId";case"defaultprintsizegroupid":return"defaultPrintSizeGroupId";case"defaultprintsizeid":return"defaultPrintSizeId";case"defaultorientationtypeid":return"defaultOrientationTypeId";case"defaultproductstylegroupid":return"defaultProductStyleGroupId";case"defaultproductstyleid":return"defaultProductStyleId";case"defaultproductstyleshapeid":return"defaultProductStyleShapeId";case"defaultprintsides":return"defaultPrintSides";case"defaultcolourtypeid":return"defaultColourTypeId";case"defaultpagescount":return"defaultPagesCount";case"defaultleavescount":return"defaultLeavesCount";case"defaultfoldcount":return"defaultFoldCount";case"defaulthandfinishingminutes":return"defaultHandFinishingMinutes";case"defaultcustomprintsize":return"defaultCustomPrintSize";case"defaultcustomprintheightmm":return"defaultCustomPrintHeightMm";case"defaultcustomprintwidthmm":return"defaultCustomPrintWidthMm";case"defaultcustomprintdepthmm":return"defaultCustomPrintDepthMm";case"defaultcustomboxwidthmm":return"defaultCustomBoxWidthMm";case"defaultpagesunique":return"defaultPagesUnique";case"defaultpagescommon":return"defaultPagesCommon";case"defaultpagesblank":case"defaultnonprinted":return"defaultPagesBlank";case"materialtypeid":return"materialTypeId";case"printsizeid":return"printSizeId";case"productstyleid":return"productStyleId";case"productstyletypeid":return"productStyleTypeId";case"finishingassemblyid":return"finishingAssemblyId";case"bollardtypeid":return"bollardTypeId";case"totalquantity":return"totalQuantity";case"hardwareid":return"hardwareId";case"fittingid":return"fittingId";case"materialid":return"materialId";case"materialoptionid":return"materialOptionId";case"orientationtypeid":return"orientationTypeId";case"pagescount":return"pagesCount";case"leavescount":return"leavesCount";case"ncrsuppliedasid":return"ncrSuppliedAsId";case"backlaminationid":return"backLaminationId";case"forcebacklaminationid":return"forceBackLaminationId";case"backspotuvid":return"backSpotUvId";case"forcebackspotuvid":return"forceBackSpotUvId";case"addfinishingids":return"addFinishingIds";case"addfinishingoptionids":return"addFinishingOptionIds";case"forcefinishingids":return"forceFinishingIds";case"forcefinishingoptionids":return"forceFinishingOptionIds";case"foldcount":return"foldCount";case"existingdiecutter":return"existingDieCutter";case"holecount":return"holeCount";case"perforationcount":return"perforationCount";case"scorecount":return"scoreCount";case"hideinterfaceids":return"hideInterfaceIds";case"allowcustomstyle":return"allowCustomStyle";case"defaultcustomproductstyle":return"defaultCustomProductStyle";case"customproductstyle":return"customProductStyle";case"sizechoiceids":return"sizeChoiceIds";case"materialtypechoiceids":return"materialTypeChoiceIds";case"shownonprintedoption":return"showNonPrintedOption";case"shownonprintedoptiononcover":return"showNonPrintedOptionOnCover";case"maximummaterialweight":return"maximumMaterialWeight";case"minimummaterialweight":return"minimumMaterialWeight"}},this.httpGet=function(_url,_callback){return this.httpGetCustom(this.apiRoot+_url,_callback)},this.httpGetCustom=function(_url,_callback){var url=(url=_url).replaceAll(" ","%20"),xhr=new XMLHttpRequest;xhr.open("GET",url,!0),xhr.setRequestHeader("accept","application/json"),xhr.onreadystatechange=function(){if(4===xhr.readyState&&200===xhr.status){var jsonUnparsed=xhr.responseText,errorTracking=("["==jsonUnparsed.substring(0,1)&&"]"!==jsonUnparsed.substring(jsonUnparsed.length-1)&&(jsonUnparsed+="]"),!1);try{var json=JSON.parse(jsonUnparsed)}catch(error){errorTracking=!0,console.log("Error object below"),console.log(xhr.responseText),console.log(jsonUnparsed),console.log(url),console.error(error)}errorTracking||void 0===json.returnHttpCode&&_callback(json)}else 4===xhr.readyState&&0==xhr.status&&(this.siteDown=!0)}.bind(this),xhr.send()},this.avoidApiEntirely=function(res){this.httpGetCustom("https://printprice.co.uk/media/testApiResponse.json",function(data){res(data)})},this.getApiToReturnHardCodedResponse=function(res){this.httpGet("optimised/new/quote/999002/internal",function(data){res(data)})},this.getApiToReturnLikeNormalWithoutDatabase=function(res){this.httpGet("optimised/new/quote/999003/internal",function(data){res(data)})},this.getApiToReturnCacheWithNoProcessing=function(res){this.httpGet("optimised/new/quote/999004/internal",function(data){res(data)})},this.setApiRoot=function(){-1<document.location.origin.indexOf("test.printprice.co.uk")&&(this.apiRoot="https://test.api.printprice.co.uk/api/"),-1<document.location.origin.indexOf("localhost")&&(this.apiRoot="https://localhost:44382/api/"),"undefined"!=typeof overwriteApiURL&&overwriteApiURL&&(this.apiRoot=overwriteApiURL)},this.setQuoteDetails=function(){var split;if("undefined"!=typeof parameters&&parameters&&(this.parameters=parameters),"undefined"!=typeof joomla&&joomla&&-1<productTypeId.indexOf("?")&&(productTypeId=(split=productTypeId.split("?"))[0],this.parameters=split[1]),"undefined"!=typeof signId?this.signId=signId:-1<window.location.search.toLowerCase().indexOf("signid=")&&(this.signId=Number(this.getUrlParameter("signId"))),-1<window.location.search.indexOf("printPriceProductTypeId")){newQuoteMode=!0;let queryString=this.parameters,queryArray=(queryString.startsWith("?")&&(queryString=this.parameters.substring(1)),queryString.split("&"));for(let i=0;i<queryArray.length;i++)queryArray[i].startsWith("printPriceProductTypeId=")&&(productTypeId=queryArray[i].split("=")[1])}if(-1<window.location.search.indexOf("productId")){let queryString=this.parameters,queryArray=(queryString.startsWith("?")&&(queryString=this.parameters.substring(1)),queryString.split("&"));for(let i=0;i<queryArray.length;i++)queryArray[i].startsWith("productId=")&&(productId=queryArray[i].split("=")[1])}if(-1<window.location.search.indexOf("printPriceQuoteId")){newQuoteMode=!1;let queryString=this.parameters,queryArray=(queryString.startsWith("?")&&(queryString=this.parameters.substring(1)),queryString.split("&"));for(let i=0;i<queryArray.length;i++)queryArray[i].startsWith("printPriceQuoteId=")&&(quoteId=queryArray[i].split("=")[1])}},this.getUrlParameter=function(reference){const urlParams=new URLSearchParams(window.location.search);return urlParams.get(reference)},this.setUserType=function(){this.userType=-1<document.location.origin.indexOf("printprice.co.uk")||-1<document.location.origin.indexOf("localhost")?"internal":"external"},this.setApiRoot(),this.setQuoteDetails(),this.setUserType()};if(document.currentScript){let deferred=document.currentScript.defer;deferred&&console.error("Preloader.min.js is being loaded deferred. This is impacting the page load time.")}