function tryParseFloat(n){return n=(""+n)*1,isNaN(n)&&(n=0),n}function tryParseInt(n){return Math.floor(tryParseFloat(n))}function tryParseMoney(n){return Math.floor(tryParseFloat(n)*100)/100}function isDate(n){return typeof n=="string"&&(n=new Date(n)),n instanceof Date&&!isNaN(n.valueOf())}function encode(n){for(var i="",t=n.length-1;t>=0;t--)i+=encoderKey.a[n[t]]||n[t];return encodeURIComponent(i)}function decode(n){var i="",t;for(n=decodeURIComponent(n),t=n.length-1;t>=0;t--)i+=encoderKey.b[n[t]]||n[t];return i}function ProcessXMLForm(n,t){return $.ajax({url:n.action,method:n.method,data:t.value}).then(function(t){var i=n.target||"#placeOrderResult";t="Order has been Processed.";alert(t);$(i).val(t)},function(t){var i=n.target||"#placeOrderResult";$(i).val(t.getAllResponseHeaders())}),!1}function TagData(n){var t=this,i={allowLinker:!1,country_code:"us",currency_code:"usd",customer_city:"",customer_country:"",customer_email:"",customer_id:"",customer_name:"",customer_postal_code:"",customer_Shipping_address1:"",customer_Shipping_address2:"",customer_state:"",event_type:"",logged_in:"",oktoemail:"",order_discount_amount:"",order_grand_total:"",order_id:"",order_payment_type:"",order_shipping_amount:"",order_shipping_type:"",order_subtotal:"",order_tax_amount:"",page_name:"",page_type:"",product_brand:[],product_category:[],product_Finish:[],product_id:[],product_name:[],product_Parent_Number:[],product_PartNumber:[],product_price:[],product_quantity:[],product_subcategory:[],product_YMM:[],promo_code:"",search_keyword:"",search_refinement_type:"",search_refinement_value:"",search_results:"",user_date:"",user_day_time:"",user_ipaddress:"",user_language:"",user_segmentatio:"",user_session_id:"",visit_duration:"",user_browser_type:window.navigator.userAgent,cart_total_items:"",cart_total_value:"",cart_product_id:"",cart_product_sku:"",cart_product_quantity:"",cart_product_price:""};angular.extend(t,i);n&&angular.extend(t,n)}var app=angular.module("b2xApp",["ngResource","ngRoute","ngSanitize"]),data,indexOf,numberToK,serialize,stringParseCSV,toVehicleCase,countries,saveAs,currentNav,encoderKey,i,$jscomp,loginTime,utag_data,localizationService;for(app.id="2413867918316713734",app.ApplicationName="B2BPortal",app.baseUrl="/Scripts/app/",app.api="/b2b/api/",app.m="/m/",app.version={auth:app.m+"application/authentication/query/api/auth/",user:app.m+"user/query/api/user/",customer:app.m+"customer/query/api/customer/",cart:app.m+"cart/query/api/user/:id/cart/",category:app.m+"category/query/api/application/:appId/category/",warranty:app.m+"product/warranty/query"},app.config(["$routeProvider","$locationProvider","$httpProvider",function(n,t,i){var r,u;for(i.defaults.headers.get||(i.defaults.headers.get={}),i.defaults.headers.get["If-Modified-Since"]="Mon, 26 Jul 1997 05:00:00 GMT",i.defaults.headers.get["Cache-Control"]="no-cache",i.defaults.headers.get.Pragma="no-cache",t.html5Mode(!0),app.data.isMobile()?angular.extend(app.data,app.mobileData):angular.extend(app.data,app.desktopData),r="",u=0;u<30;u++)r+="/:arg_"+u+"?";n.when("/",{controller:"GenericController",templateUrl:app.baseUrl+"home/partials/home.html"}).when("/create-account/",{controller:"CreateAccountController",templateUrl:app.baseUrl+"user/partials/create-account.html"}).when("/forgot-password/",{controller:"PasswordController",templateUrl:app.baseUrl+"user/partials/forgot-password.html"}).when("/change-password/",{controller:"PasswordController",templateUrl:app.baseUrl+"user/partials/change-password.html"}).when("/request-account/",{controller:"RequestAccountController",templateUrl:app.baseUrl+"user/partials/request-account.html"}).when("/new-account/",{controller:"RequestAccountController",templateUrl:app.baseUrl+"user/partials/new-account.html"}).when("/cart/",{controller:"CartController",templateUrl:app.baseUrl+"cart/partials/cart.html"}).when("/checkout/:page?",{controller:"CheckoutController",templateUrl:app.baseUrl+"checkout/partials/checkout.html"}).when("/checkout-complete/",{controller:"CompleteController",templateUrl:app.baseUrl+"checkout/partials/complete.html"}).when("/quick-order-entry/",{controller:"GenericController",templateUrl:app.baseUrl+"partials/qoe.html"}).when("/my-account/",{controller:"MyAccountController",templateUrl:app.baseUrl+"user/partials/my-account.html"}).when("/favorites/",{controller:"FavoriteController",templateUrl:app.baseUrl+"catalog/partials/favorite.html"}).when("/contact-us/:question?/:partNumber?",{controller:"ContactUsController",templateUrl:app.baseUrl+"user/partials/contact-us.html"}).when("/generic/:page",{controller:"GenericPageController",templateUrl:app.baseUrl+"common/partials/generic.html"}).when("/invoice-history/:arg0?/:arg1?/:arg2?/:arg3?/:arg4?/:arg5?/:arg6?/:arg7?/:arg8?/:arg9?/:arg10?/:arg11?/:arg12?",{controller:"InvoicesController",templateUrl:app.baseUrl+"orders/partials/invoices.html"}).when("/request-return/:arg0?/:arg1?/:arg2?/:arg3?/:arg4?/:arg5?/:arg6?/:arg7?/:arg8?/:arg9?/:arg10?/:arg11?/:arg12?",{controller:"InvoicesController",templateUrl:app.baseUrl+"orders/partials/invoices.html"}).when("/invoice-detail/:invoiceNumber/:customerNumber/:companyCode",{controller:"InvoiceController",templateUrl:app.baseUrl+"orders/partials/invoice.html"}).when("/open-orders/",{controller:"OrdersController",templateUrl:app.baseUrl+"orders/partials/orders.html"}).when("/order-detail/:orderNumber",{controller:"OrderController",templateUrl:app.baseUrl+"orders/partials/order.html"}).when("/return/:invoiceNumber",{controller:"InvoicesController",templateUrl:app.baseUrl+"orders/partials/return.html"}).when("/statement-reprint/",{controller:"StatementController",templateUrl:app.baseUrl+"orders/partials/statements.html"}).when("/product-history/",{controller:"GenericController",templateUrl:app.baseUrl+"catalog/partials/product-history.html"}).when("/cms/",{controller:"CMSController",templateUrl:app.baseUrl+"user/partials/cms.html"}).when("/kip-quote/",{controller:"quoteController",templateUrl:app.baseUrl+"kip/partials/quote.html"}).when("/kip-send-quote/",{controller:"quoteController",templateUrl:app.baseUrl+"kip/partials/send-quote.html"}).when(r,{controller:"CatalogController",templateUrl:app.baseUrl+"catalog/partials/catalog.html"}).otherwise({redirectTo:r})}]),app.config(["$httpProvider",function(n){n.interceptors.push("tokenInterceptor")}]),data=app.data={},app.mobileData={defaultTake:12},app.desktopData={defaultTake:36},data.bindings={},data.authorizationCookieName="token",data.userIdCookieName="userId",data.rememberCookieName="tokenCookie",data.cultureCookieName="cultureCode",data.catalogStyleCookieName="catalogStyle",data.defaultLobCookieName="defaultLob",data.kipZips="KipZips",data.fieldLoadingClass="field-loading",data.takes=[12,24,36,48],data.defaultTake=12,data.defaultCatalogStyle="gallery",data.cmsImageUploadUrl="http://mediacdnqc.azureedge.net/",data.fieldLoadingClass="field-loading",data.acceptedImageTypes=[".jpg",".bmp",".gif"],data.maxReturnImages=4,data.uploadImageMimeTypes=["image/jpeg","image/pjpeg","image/png","image/bmp",],data.returnReasons=[{text:"Customer Cancelled"},{text:"Wrong Part Delivered"},{text:"Defective Fit",images:!0,options:["Body Line(s) don't line up","Contour- Improperly formed, corners/edges","Not flush with adjacent parts","Studs- inappropriate location","Gap- inconsistent or too wide/narrow","Length- too long or too short","Other"]},{text:"Defective Repair/Defect",images:!0},{text:"Defective Finish/Paint",images:!0,options:["Surface- wavy","Paint/primer- inconsistent or didn't adhere well","Adhesive- too little or too much","Grind marks evident","Appearance- ripples, dings, mold overflow","Texture","Other"]},{text:"Defective MFG Defect",images:!0},{text:"Damaged",images:!0}],data.isMobile=function(){var n=document.getElementsByTagName("body")[0],t=n.hasAttribute("view-type")?n.attributes["view-type"].value:"Desktop";return t=="Mobile"},data.contactUsQuestions=[{name:"Part Request",routing:"userlocation",showPartRequest:!0,buildSubject:function(n){return"Part Question: "+n.part.PartNumber+" - "+n.part.PartDescription}},{name:"Account Issue",routing:"userlocation"},{name:"Customer Service",routing:"userlocation"},{name:"Orders Inquiry",routing:"userlocation"},{name:"Returns",routing:"userlocation"},{name:"Site Functionality/Feedback",routing:"BusinessSupportEmail"},{name:"Technical Issue",routing:"ContactEmail"},{name:"Other",routing:"ContactEmail"}],data.categories={},data.GetCategoryByName=function(n){return app.data.categories[((n||"")+"").toLowerCase()]},data.ApplyCategory=function(n){var r,u,i,t;if(app.data.categories=app.data.categories||{},r=n.CategoryName.toLowerCase().toWebsiteURL(),u=app.data.categories[r],u){angular.extend(u,n);return}for(app.data.categories[r]=n,app.data.categories[n.CategoryKey]=n,app.data.categories[n.uri.toLowerCase()]=n,app.data.categories[n.FullName.toLowerCase()]=n,app.data.categories[n.path.toLowerCase()]=n,app.data.categories[n.CategoryName.toLowerCase()]=n,i=n.FullName.split("|");i.length>1;){if(i.pop(),t={CategoryName:i.last(),FullName:i.join("|"),path:i.slice(1,i.length).join("|"),uri:i.slice(1,i.length).join("|").toWebsiteURL()},r=t.CategoryName.toLowerCase().toWebsiteURL(),u=app.data.categories[r],u)return;app.data.categories[r]=t;app.data.categories[t.CategoryKey]=t;app.data.categories[t.uri.toLowerCase()]=t;app.data.categories[t.FullName.toLowerCase()]=t;app.data.categories[t.path.toLowerCase()]=t;app.data.categories[t.CategoryName.toLowerCase()]=t}},data.manufacturers={},data.GetManufacturerByName=function(n){return app.data.manufacturers[((n||"")+"").toLowerCase()]},data.insurance={},data.GetInsurnaceByName=function(n,t){return app.data.insurance[((n||"")+""+(t||"")).toLowerCase()]},data.linesOfBusiness=[{Description:"Aftermarket",CompanyCode:"001",LineOfBusinessKey:1,icon:"fa-car",iconText:"Aftermarket"},{Description:"Aftermarket Canada",CompanyCode:"002",LineOfBusinessKey:1,icon:"fa-car",iconText:"Aftermarket"},{Description:"Salvage",CompanyCode:"004",LineOfBusinessKey:2,icon:"fa-recycle",iconText:"Recycled"}],data.GetLineOfBusiness=function(n){return n=n+"",app.data.linesOfBusiness.firstOrDefault(function(t){return t.CompanyCode===n||t.LineOfBusinessKey+""===n})},data.facets={0:["Category","Certification","Manufacturer","Year"],1:["Category","Certification","Manufacturer","Year"],2:["Category","SalvageInventoryPrice","Mileage"]},data.sort={0:[{Name:"Parts with Images","default":!0,Sorting:[{SortProperty:"withimages",SortDirection:"asc"}]},{Name:"Parts without Images",Sorting:[{SortProperty:"withimages",SortDirection:"desc"}]}],1:[{Name:"Front to Back","default":!0,Sorting:[{SortProperty:"aftermarketsequence",SortDirection:"asc"},{SortProperty:"withimages",SortDirection:"asc"}]},{Name:"Parts with Images",Sorting:[{SortProperty:"withimages",SortDirection:"asc"},{SortProperty:"aftermarketsequence",SortDirection:"asc"}]},{Name:"Parts without Images",Sorting:[{SortProperty:"withimages",SortDirection:"desc"},{SortProperty:"aftermarketsequence",SortDirection:"asc"}]},{Name:"List Price Low to High",Sorting:[{SortProperty:"aftermarketregionprice",SortDirection:"asc"},{SortProperty:"aftermarketsequence",SortDirection:"asc"},]},{Name:"List Price High to Low",Sorting:[{SortProperty:"aftermarketregionprice",SortDirection:"desc"},{SortProperty:"aftermarketsequence",SortDirection:"asc"},]}],2:[{Name:"Closest First","default":!0,Sorting:[{SortProperty:"salvagegeo",SortDirection:"asc"},{SortProperty:"aftermarketsequence",SortDirection:"asc"}]},{Name:"Farthest First",Sorting:[{SortProperty:"salvagegeo",SortDirection:"desc"},{SortProperty:"aftermarketsequence",SortDirection:"asc"}]},{Name:"Price Lowest First",Sorting:[{SortProperty:"salvageprice",SortDirection:"asc"},{SortProperty:"aftermarketsequence",SortDirection:"asc"}]},{Name:"Price Highest First",Sorting:[{SortProperty:"salvageprice",SortDirection:"desc"},{SortProperty:"aftermarketsequence",SortDirection:"asc"},]},{Name:"Mileage Lowest First",Sorting:[{SortProperty:"salvagemileage",SortDirection:"asc"},{SortProperty:"aftermarketsequence",SortDirection:"asc"},]},{Name:"Mileage Higheset First",Sorting:[{SortProperty:"salvagemileage",SortDirection:"desc"},{SortProperty:"aftermarketsequence",SortDirection:"asc"},]}]},data.GetSort=function(n,t){var i=app.data.sort[n],r;return i?(r=(t+"").toLowerCase().toWebsiteURL(),i.firstOrDefault(function(n){var t=n.Name.toLowerCase().toWebsiteURL();return r===t})||i[0]):null},data.tokenKeys={part:"+p",guid:"+i",lob:"+l",page:"+u",manufacturer:"+n",certification:"+c",mileage:"+m",price:"+s",sort:"+z",option:"+h",take:"+t"},data.getTokenKey=function(n){return app.data.tokenKeys[n]||""},data.filters=[{title:"KeysIQ",countName:"undefined",token:"aqrp",countKey:"undefined",toValue:function(n){return n.InsuranceCompanyName.toUpperLower().toWebsiteURL()},sort:function(){return 0}},{title:"Local Search",countName:"undefined",token:"local",countKey:"undefined",toValue:function(n){return n},sort:function(){return 0}},{title:"Years",countName:"Years",countKey:"Year",token:"year",reverse:!0,toValue:function(n){return n.Year+""},sort:function(n,t){return n.Year>t.Year?1:n.Year===t.Year?0:-1}},{title:"Manufacturer",countName:"ManufacturerCounts",countKey:"Manufacturer",token:"manufacturer",toValue:function(n){return n.Manufacturer.toUpperLower().toWebsiteURL()},sort:function(n,t){return n.Manufacturer>t.Manufacturer?1:n.Manufacturer===t.Manufacturer?0:-1}},{title:"Category",countName:"CategoryCounts",countKey:"Category",token:"category",toValue:function(n){return n.Category.split("|").slice(1,500).join("|").toUpperLower().toWebsiteURL()},sort:function(n,t){return n.Category>t.Category?1:n.Category===t.Category?0:-1}},{title:"Certification",countName:"CertificationCounts",countKey:"Certification",token:"certification",toValue:function(n){return n.Certification.toUpperLower().toWebsiteURL()},sort:function(n,t){return n.Certification>t.Certification?1:n.Certification===t.Certification?0:-1}},{title:"Recycled Price",countName:"SalvagePriceCounts",token:"price",countKey:function(n){return"$"+n.PriceStart+"-$"+n.PriceEnd},toValue:function(n){return n.PriceStart+"-"+n.PriceEnd},sort:function(n,t){return n.PriceStart>t.PriceStart?1:n.PriceStart===t.PriceStart?0:-1}},{title:"Mileage",countName:"MileageCounts",token:"mileage",countKey:function(n){return n.MileageStart.toK()+"-"+n.MileageEnd.toK()},toValue:function(n){return n.MileageStart.toK()+"-"+n.MileageEnd.toK()},sort:function(n,t){return n.MileageStart>t.MileageStart?1:n.MileageStart===t.MileageStart?0:-1}}],data.getFilter=function(n){return app.data.filters.firstOrDefault(function(t){return t.token===n})},data.bestSelling=[{url:"/Exterior-Fender-Parts/",img:"/images/keystone/400/CH1241278C.jpg",text:"Fender"},{url:"/Exterior-Hood-Trunk-Parts-Hood/",img:"/images/keystone/400/TO1230178.jpg",text:"Hood"},{url:"/Lights-Headlamp-Assembly/",img:"/images/keystone/400/GM2502292.jpg",text:"Headlamp Assembly"},{url:"/Exterior-Bumpers-Parts-Bumper-Cover-Front/",img:"/images/keystone/400/TO1000361C.jpg",text:"Bumper Cover, Front"},{url:"/Exterior-Quarter-Panel-Parts-Quarter-Panel-Assembly/",img:"/images/keystone/400/FO1700101.jpg",text:"Quarter Panel Assembly"},{url:"/Engine-Engine-Cooling-Radiators/",img:"/images/categories/RAD2997.jpg",text:"Radiators"},{url:"/Wheels-Wheel/",img:"/images/keystone/400/ALY02263U85.jpg",text:"Wheel"},{url:"/Exterior-Bumpers-Parts-Bumper-Cover-Rear/",img:"/images/keystone/400/VW1100189.jpg",text:"Bumper Cover, Rear"}],data.omittedPlines=[339,550,551,552,554,555,558,559],i=220;i<=231;i++)data.omittedPlines.push(i);if(data.userConversionCookieName="user-conversion",indexOf=function(n,t){for(var i=t||0,r=this.length;i<r;i++)if(this[i]===n)return i;return-1},!Array.indexOf)try{Object.defineProperty(Array.prototype,"indexOf",{enumerable:!1,value:indexOf})}catch(e){Array.prototype.indexOf=indexOf}var stringToFixedImageUrl=function(){var n=this;return n=n.replace(/http:\/\/orderkeystone.com\/images/gi,"/images/keystone"),n=n.replace(/http:\/\/images.lkqcorp.com\/images\/im.php\?src=/gi,"/images/salvage/"),n=n.replace(/https:\/\/documentsqc.ekeyconnect.com\/B2BPortal/gi,"/images/cms"),n=n.replace(/https:\/\/documents.ekeyconnect.com\/B2BPortal/gi,"/images/cms"),n=n.replace(/https:\/\/documentsqc.ekeyconnect.com\/\/B2BPortal/gi,"/images/cms"),n=n.replace(/https:\/\/documents.ekeyconnect.com\/\/B2BPortal/gi,"/images/cms"),n=n.replace(/https:\/\/documentsqc.ekeyconnect.com\/hosted\/\/B2BPortal/gi,"/images/cms"),n=n.replace(/https:\/\/documents.ekeyconnect.com\/hosted\/\/B2BPortal/gi,"/images/cms"),n=n.replace(/http:\/\/mediacdn.lkqcorp.com\/ecomm/gi,"/images/ecomm"),n=n.replace(/http:\/\/b2x-qc.azureedge.net\/ecomm/gi,"/images/ecomm2"),n.replace(/http:\/\/b2x.azureedge.net\/ecomm/gi,"/images/ecomm3")},stringToPhoneNumber=function(){return this.replace(/[^0-9]/g,"").replace(/(\d{0,3})?(\d{0,3})?(\d{0,4})/,"($1) $2-$3")},stringPrepareRoute=function(n){var i,t,r;if(!angular.isObject(n))return this;i=this;t=[];for(r in n)t.push(r);return t=t.sort(function(n,t){return n.length-t.length}),t.each(function(t){var r=n[t]+"",u=new RegExp("(:"+t+")","g");i=i.replace(u,r)}),i},toWebsiteURL=function(){var n=$.trim(this.replace(/[\W_]/gi," ").replace(/\s+/g," ")).replace(/ /g,"-");return encodeURIComponent(n)},arrayToWebsiteURL=function(){for(var n=0;n<this.length;n++)angular.isString(this[n])&&(this[n]=this[n].toWebsiteURL())};String.prototype.startsWith||(String.prototype.startsWith=function(n,t){return this.substr(!t||t<0?0:+t,n.length)===n});String.prototype.fromCurrency=function(){return tryParseFloat(this.replace(/[$]/g,""))};String.prototype.contains=function(n,t){return(t?this.toLowerCase().indexOf((n+"").toLowerCase()):this.indexOf(n))>-1};var toClean=function(){return $.trim(this.replace(/[\W_]/gi," ").replace(/[_]/gi," ").replace(/\s+/g," "))},arrayToClean=function(){for(var n=0;n<this.length;n++)angular.isString(this[n])&&(this[n]=this[n].toClean())},toUpperLower=function(){for(var t,r,u=this.toLowerCase(),f=!1,n="",i=0;i<u.length;i++)t=u[i],r="abcdefghijklmnopqrstuvwxyz".indexOf(t)>-1,r&&!f&&(t=t.toUpperCase()),f=r,n+=t;return n=n.replace(/Bmw/g,"BMW"),n=n.replace(/Amc/g,"AMC"),n=n.replace(/Gmc/g,"GMC"),n=n.replace(/Aaa/g,"AAA"),n=n.replace(/Capa/g,"CAPA"),n=n.replace(/Nsf/g,"NSF"),n=n.replace(/Lkq/g,"LKQ"),n=n.replace(/Lqk/g,"LKQ"),n=n.replace(/Qc/g,"QC"),n=n.replace(/Ac /g,"AC "),n=n.replace(/Pbe/g,"PBE"),n.replace(/Nsf/g,"NSF")},arrayToUpperLower=function(){for(var n=0;n<this.length;n++)angular.isString(this[n])&&(this[n]=this[n].toUpperLower())},pushUnique=function(){for(var i,r,t,n=0;n<arguments.length;n++){for(i=arguments[n],r=!1,t=0;t<this.length;t++)if(this[t]==i){r=!0;break}r||this.push(i)}},sortBy=function(id,isNumeric){if(isNumeric)return this.sortByNumeric(id);if(!id)return this.sort();var self=this,rtn=[];try{eval("rtn = self.sort(function(a, b){ var c = a."+id+" + '', d = b."+id+" + ''; return a."+id+" > b."+id+" ? 1 : a."+id+" < b."+id+" ? -1 : 0; })")}catch(e){}return rtn},sortByNumeric=function(id){if(!id)return this.sort(function(n,t){var i=n*1,r=t*1;return i-r});var self=this,rtn=[];try{eval("rtn = self.sort(function(a, b){ var c = a."+id+" * 1, d = b."+id+" * 1; return c - d; })")}catch(e){}return rtn},arrayFirstOrDefault=function(n){if(!angular.isFunction(n))return this[0];for(var t=0;t<this.length;t++)if(this[t]!=undefined&&n(this[t]))return this[t];return undefined},arrayLastOrDefault=function(n){if(!angular.isFunction(n))return this[this.length-1];for(var t=this.length-1;t>=0;t--)if(this[t]!=undefined&&n(this[t]))return this[t];return undefined},arrayWhere=function(n){var i,t;if(!angular.isFunction(n))return this;for(i=[],t=0;t<this.length;t++)this[t]!=undefined&&n(this[t],t)&&i.push(this[t]);return i},arraySelect=function(n){var i,t,r;if(!angular.isFunction(n))return this;for(i=[],t=0;t<this.length;t++)this[t]!==undefined&&(r=n(this[t],t),r===!0?i.push(this[t]):r!==undefined&&i.push(r));return i},arrayConcatUnique=function(n){if(!angular.isArray(n))return this.pushUnique(n);for(var t=0;t<n.length;t++)this.pushUnique(n[t]);return this},arrayDistinct=function(){for(var r,i,t=[],n=0;n<this.length;n++)if(this[n]!=undefined){for(r=!1,i=0;i<t.length;i++)t[i]==this[n]&&(r=!0);r||t.push(this[n])}return t},arrayEach=function(n){if(angular.isFunction(n)){for(var t=0;t<this.length;t++)if(n(this[t],t)===!1)break;return this}},arrayEachReverse=function(n){if(angular.isFunction(n)){for(var t=this.length-1;t>=0;t--)if(n(this[t],t)===!1)break;return this}},arrayRemoveEmpties=function(){var n=[];return this.each(function(t){t&&n.push(t)}),n},arrayRemove=function(n){var i,r,t;if(angular.isArray(n)){for(t=0;t<n.length;t++)for(r=n[t];(i=this.indexOf(r))>-1;)this.splice(i,1);return this}if(angular.isFunction(n)){for(t=this.length-1;t>=0;t--)n(this[t])&&this.splice(t,1);return this}while((i=this.indexOf(n))>-1)this.splice(i,1);return this},arrayRemoveAt=function(n,t){return t=t||1,this.splice(n,t),this},arraySum=function(n){for(var t,r=0,i=0;i<this.length;i++)t=0,t=angular.isFunction(n)?n(this[i]):this[i]*1,isNaN(t*1)&&(t=0),r+=t;return r},arrayContains=function(n){if(!angular.isFunction(n))return this.indexOf(n)>-1;for(var t=0;t<this.length;t++)if(angular.isFunction(n)&&(result=n(this[t]),result))return!0;return!1},arrayConcatenate=function(n){var t=this;return angular.isArray(n)&&n.each(function(n){t.push(n)}),this},arrayConcatenateUnique=function(n){var t=this;return angular.isArray(n)&&n.each(function(n){t.pushUnique(n)}),this};Array.prototype.groupBy=function(n){var t={},i,r;this.each(function(i){i=i||{};t[i[n]]=t[i[n]]||[];t[i[n]].push(i)});arr=[];for(i in t)r={values:t[i]},r[n]=i,arr.push(r);return arr};Array.prototype.ungroup=function(){var t=0,n;return(this.each(function(n){Object.prototype.toString.call(n.values)!=="[object Array]"&&(t=1)}),t)?this:(n=[],this.each(function(t){t.values.each(function(t){n.push(t)})}),n)};var toCurrency=function(){var n=this*1;return isNaN(n)&&(n=0),n.toFixed(2)},$toCurrency=function(){return"$"+this.toCurrency()},eachInObject=function(n,t){if(angular.isFunction(t))for(var i in n)t(n[i],i,n)};Math.lerp=function(n,t,i){return t+(i-t)*n};Math.clamp=function(n,t,i){return Math.min(Math.max(n,Math.min(t,i)),Math.max(t,i))};numberToK=function(){var n=this*1;return isNaN(n)&&(n=0),Math.round(n*.001)+"k"};Date.getTime=function(){return(new Date).getTime()};Date.getFullYear=function(){return(new Date).getFullYear()};Date.days=["Sun","Mon","Tues","Wed","Thurs","Fri","Sat"];Date.Days=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];Date.months=["Jan","Feb","Mar","Apr","May","June","July","Aug","Sept","Oct","Nov","Dec"];Date.Months=["January","February","March","April","May","June","July","August","September","October","November","December"];Date.prototype._toString=Date.prototype.toString;Date.prototype.toString=function(n){var t=this,i=function(n){return n.toString().length==1?"0"+n:n};return n?n.replace(/dd?d?d?|MM?M?M?|yy?y?y?|hh?|HH?|mm?|ss?|tt?|zz?z?/g,function(n){switch(n){case"hh":return i(t.getHours()<13?t.getHours():t.getHours()-12);case"h":return t.getHours()<13?t.getHours():t.getHours()-12;case"HH":return i(t.getHours());case"H":return t.getHours();case"mm":return i(t.getMinutes());case"m":return t.getMinutes();case"ss":return i(t.getSeconds());case"s":return t.getSeconds();case"yyyy":return t.getFullYear();case"yy":return t.getFullYear().toString().substring(2,4);case"dddd":return Date.Days[t.getDay()];case"ddd":return Date.days[t.getDay()];case"dd":return i(t.getDate());case"d":return t.getDate().toString();case"MMMM":return Date.Months[t.getMonth()];case"MMM":return Date.months[t.getMonth()];case"MM":return i(t.getMonth()+1);case"M":return t.getMonth()+1;case"t":return t.getHours()<12?Date.CultureInfo.amDesignator.substring(0,1):Date.CultureInfo.pmDesignator.substring(0,1);case"tt":return t.getHours()<12?Date.CultureInfo.amDesignator:Date.CultureInfo.pmDesignator;case"zzz":case"zz":case"z":return""}}):this._toString()};Date.clamp=function(n,t,i){if(n=ParseDate(n),isNaN(n.valueOf()))return n;var r=ParseDate(t),u=ParseDate(i);return!r||!u?n:(r=r.getTime(),u=u.getTime(),n=n.getTime(),new Date(Math.clamp(n,r,u)))};Date.today=function(){return new Date((new Date).toString("MM/dd/yyyy"))};Date.Now=function(){return new Date};Date.prototype.add=function(n){n.years&&this.setFullYear(this.getFullYear()+n.years);n.months&&this.setMonth(this.getMonth()+n.months);n.days&&this.setDate(this.getDate()+n.days);n.hours&&this.setHours(this.getHours()+n.hours);n.minutes&&this.setMinutes(this.getMinutes()+n.minutes);n.seconds&&this.setSeconds(this.getSeconds()+n.seconds)};Date.prototype.diff=function(n,t){var i=0,r,u;return n=n||new Date,angular.isDate(n)?(r=this.getTime(),u=n.getTime(),i=Math.abs(r-u),!t||!angular.isNumber(t))?i:Math.floor(i/t):void 0};Date.diff=function(n,t){return(new Date).diff(n,t)};Date.prototype.addYears=function(n){n=tryParseInt(n);var t=new Date(this);return t.setFullYear(t.getFullYear()+n),t};Date.prototype.addMonths=function(n){n=tryParseInt(n);var t=new Date(this);return t.setMonth(t.getMonth()+n),t};Date.prototype.addDays=function(n){n=tryParseInt(n);var t=new Date(this);return t.setDate(t.getDate()+n),t};Date.prototype.addHours=function(n){n=tryParseInt(n);var t=new Date(this);return t.setHours(t.getHours()+n),t};Date.prototype.addMinutes=function(n){n=tryParseInt(n);var t=new Date(this);return t.setMinutes(t.getMinutes()+n),t};Date.prototype.addSeconds=function(n){n=tryParseInt(n);var t=new Date(this);return t.setSeconds(t.getSeconds()+n),t};Date.inDays=function(n){return Date.today().addDays(n)};Date.inMinutes=function(n){return(new Date).addMinutes(n)};Date.inSeconds=function(n){return(new Date).addSeconds(n)};Date.compare=function(n,t){return n.getFullYear()!==t.getFullYear()?!1:n.getMonth()!==t.getMonth()?!1:n.getDate()!==t.getDate()?!1:!0};Date.firstNthDay=function(n,t,i,r){var f=Date.days.indexOf(n),u=new Date(i+"/1/"+r);return u.setDate(u.getDate()+(f-u.getDay())),u.getMonth()+1<i&&u.setDate(u.getDate()+7),u.setDate(u.getDate()+7*(t-1)),u};Date.lastNthDay=function(n,t,i,r){var u=Date.firstNthDay(n,1,i+1,r);return u.getMonth()+1>i&&u.setDate(u.getDate()-7),u.setDate(u.getDate()-7*(t-1)),u};Date.adjustFixedHoliday=function(n){var t=n.getDay();return t===0&&(n=n.addDays(1)),t===6&&(n=n.addDays(-1)),n};Date.holidays={NewYears:function(n){return Date.adjustFixedHoliday(new Date("1/1/"+n))},MLK:function(n){return Date.firstNthDay("Monday",3,1,n)},Washington:function(n){return Date.firstNthDay("Monday",3,2,n)},MemorialDay:function(n){return Date.lastNthDay("Monday",1,5,n)},IndependenceDay:function(n){return Date.adjustFixedHoliday(new Date("7/4/"+n))},LaborDay:function(n){return Date.firstNthDay("Monday",1,9,n)},ColumbusDay:function(n){return Date.firstNthDay("Monday",2,10,n)},VeteransDay:function(n){return Date.adjustFixedHoliday(new Date("11/11/"+n))},Thanksgiving:function(n){return Date.firstNthDay("Thursday",4,11,n)},Christmas:function(n){return Date.adjustFixedHoliday(new Date("12/25/"+n))}};Date.lkqHolidays=["NewYears","MemorialDay","IndependenceDay","LaborDay","Thanksgiving","Christmas"];Date.prototype.isHoliday=function(){var t=this,i=this.getFullYear(),n=!1;return Date.lkqHolidays.each(function(r){var u=Date.holidays[r](i);n=n||Date.compare(t,u)}),n};Date.prototype.isBusinessDay=function(){var n=new Date(this);return[0,6].contains(n.getDay())?!1:n.isHoliday()?!1:!0};Date.prototype.toETA=function(n){var t=new Date(this),i;for(t.getHours()>15&&(t=t.addDays(1));!t.isBusinessDay(t);)t=t.addDays(1);for(i=0;i<n;i++)for(t=t.addDays(1);!t.isBusinessDay(t);)t=t.addDays(1);return t};var nDigits=function(n,t){return("0000"+n).substr(-t)},FormatDate=function(n){return n=n||new Date,nDigits(n.getMonth()+1,2)+"/"+nDigits(n.getDate(),2)+"/"+nDigits(n.getFullYear(),4)},FormatDateTime=function(n){return n=n||new Date,FormatDate(n)+" "+nDigits(n.getHours(),2)+":"+nDigits(n.getMinutes(),2)+":"+nDigits(n.getSeconds(),2)},ParseDate=function(n){var t=new Date(n);return isNaN(t.valueOf())&&(t=undefined),t};Date.fromISO=function(n){var i,t;return(n=n||"",i=n.match(/[0-9]{4}/),i&&i.index===0&&(n=n.replace(/(\d+)-(\d+)-(\d+)T/g,"$2/$3/$1 ").split(".")[0]),t=undefined,isDate(n)&&(t=new Date(n),!isDate(t)))?undefined:t};serialize=function(n){var i=[];for(var t in n)n.hasOwnProperty(t)&&i.push(encodeURIComponent(t)+"="+encodeURIComponent(n[t]));return i.join("&")};Object.byString=function(n,t){var r,i,f,u;for(t=t.replace(/\[(\w+)\]/g,".$1"),t=t.replace(/^\./,""),r=t.split("."),i=0,f=r.length;i<f;++i)if(u=r[i],u in n)n=n[u];else return;return n};Object.setByString=function(n,t,i){var u,r,e,f;for(t=t.replace(/\[(\w+)\]/g,".$1"),t=t.replace(/^\./,""),u=t.split("."),r=0,e=u.length;r<e;++r)if(f=u[r],f in n){if(r==u.length-1){n[f]=i;return}n=n[f]}else return};stringParseCSV=function(n){var u=this,r,f;n||(n=",",u.indexOf("\t")>-1&&(n="\t"));for(var e=new RegExp("(\\"+n+'|\\r?\\n|\\r|^)(?:"([^"]*(?:""[^"]*)*)"|([^"\\'+n+"\\r\\n]*))","gi"),i=[[]],t=null;t=e.exec(u);)r=t[1],r.length&&r!==n&&i.push([]),f=t[2]?t[2].replace(new RegExp('""',"g"),'"'):t[3],i[i.length-1].push(f);return i};Object.isTypeOf=function(n,t){return angular.isFunction(t)?n.constructor.name==t.name:!1};try{Object.defineProperty(Array.prototype,"pushUnique",{enumerable:!1,value:pushUnique});Object.defineProperty(Array.prototype,"toWebsiteURL",{enumerable:!1,value:arrayToWebsiteURL});Object.defineProperty(Array.prototype,"toClean",{enumerable:!1,value:arrayToClean});Object.defineProperty(Array.prototype,"toUpperLower",{enumerable:!1,value:arrayToUpperLower});Object.defineProperty(Array.prototype,"sortBy",{enumerable:!1,value:sortBy});Object.defineProperty(Array.prototype,"sortByNumeric",{enumerable:!1,value:sortByNumeric});Object.defineProperty(Array.prototype,"firstOrDefault",{enumerable:!1,value:arrayFirstOrDefault});Object.defineProperty(Array.prototype,"lastOrDefault",{enumerable:!1,value:arrayLastOrDefault});Object.defineProperty(Array.prototype,"where",{enumerable:!1,value:arrayWhere});Object.defineProperty(Array.prototype,"select",{enumerable:!1,value:arraySelect});Object.defineProperty(Array.prototype,"distinct",{enumerable:!1,value:arrayDistinct});Object.defineProperties(Array.prototype,"concatUnique",{enumerable:!1,value:arrayConcatUnique});Object.defineProperties(Array.prototype,"remove",{enumerable:!1,value:arrayRemove});Object.defineProperties(Array.prototype,"removeAt",{enumerable:!1,value:arrayRemoveAt});Object.defineProperty(Number.prototype,"toCurrency",{enumerable:!1,value:toCurrency});Object.defineProperty(Number.prototype,"$toCurrency",{enumerable:!1,value:$toCurrency});Object.defineProperty(Number.prototype,"toK",{enumerable:!1,value:numberToK});Object.defineProperty(Array.prototype,"each",{enumerable:!1,value:arrayEach});Object.defineProperty(Array.prototype,"eachReverse",{enumerable:!1,value:arrayEachReverse});Object.defineProperty(Array.prototype,"removeEmpties",{enumerable:!1,value:arrayRemoveEmpties});Object.defineProperty(Array.prototype,"sum",{enumerable:!1,value:arraySum});Object.defineProperty(Array.prototype,"conatins",{enumerable:!1,value:arrayContains});Object.defineProperty(Array.prototype,"concatenate",{enumerable:!1,value:arrayConcatenate});Object.defineProperty(Array.prototype,"concatenateUnique",{enumerable:!1,value:arrayConcatenateUnique})}catch(e){Array.prototype.pushUnique=pushUnique;Array.prototype.toWebsiteURL=arrayToWebsiteURL;Array.prototype.toClean=arrayToClean;Array.prototype.toUpperLower=arrayToUpperLower;Array.prototype.sortBy=sortBy;Array.prototype.sortByNumeric=sortByNumeric;Array.prototype.firstOrDefault=arrayFirstOrDefault;Array.prototype.lastOrDefault=arrayLastOrDefault;Array.prototype.where=arrayWhere;Array.prototype.select=arraySelect;Array.prototype.distinct=arrayDistinct;Array.prototype.concatUnique=arrayConcatUnique;Array.prototype.each=arrayEach;Array.prototype.eachReverse=arrayEachReverse;Array.prototype.removeEmpties=arrayRemoveEmpties;Array.prototype.remove=arrayRemove;Array.prototype.removeAt=arrayRemoveAt;Array.prototype.sum=arraySum;Array.prototype.contains=arrayContains;Array.prototype.concatenate=arrayConcatenate;Array.prototype.concatenateUnique=arrayConcatenateUnique;Number.prototype.toCurrency=toCurrency;Number.prototype.$toCurrency=$toCurrency;Number.prototype.toK=numberToK}toVehicleCase=function(){return this.toClean().toUpperCase().replace(/ /g,"_")};try{Object.defineProperties(String.prototype,"toWebsiteURL",{enumerable:!1,value:toWebsiteURL});Object.defineProperties(String.prototype,"toClean",{enumerable:!1,value:toClean});Object.defineProperties(String.prototype,"toUpperLower",{enumerable:!1,value:toUpperLower});Object.defineProperties(String.prototype,"toVehicleCase",{enumerable:!1,value:toVehicleCase});Object.defineProperties(String.prototype,"toFixedImageUrl",{enumerable:!1,value:stringToFixedImageUrl});Object.defineProperties(String.prototype,"parseCSV",{enumerable:!1,value:stringParseCSV});Object.defineProperties(String.prototype,"toPhoneNumber",{enumerable:!1,value:stringToPhoneNumber});Object.defineProperties(String.prototype,"prepareRoute",{enumerable:!1,value:stringPrepareRoute})}catch(e){String.prototype.toWebsiteURL=toWebsiteURL;String.prototype.toClean=toClean;String.prototype.toUpperLower=toUpperLower;String.prototype.toVehicleCase=toVehicleCase;String.prototype.toFixedImageUrl=stringToFixedImageUrl;String.prototype.parseCSV=stringParseCSV;String.prototype.toPhoneNumber=stringToPhoneNumber;String.prototype.prepareRoute=stringPrepareRoute}String.prototype.fixSpacing=function(){return this.replace(/  +/g," ")};var seconds=1e3,minutes=seconds*60,hours=minutes*60,days=hours*24,daysToMinutes=.00069444444444444447,daysToHours=.041666666666666664,getCookie=function(n){for(var r,u,i=document.cookie.split(";"),t=0;t<i.length;t++)if(r=i[t].substr(0,i[t].indexOf("=")),u=i[t].substr(i[t].indexOf("=")+1),r=r.replace(/^\s+|\s+$/g,""),r==n)return unescape(u)},setCookie=function(n,t,i){var r=i*1,f,u;isNaN(r)&&(r=14);f=new Date(Date.getTime()+r*days);u="; expires="+f.toUTCString();i||(u="");document.cookie=n+"="+escape(t)+u+"; path=/"},clearCookie=function(n){getCookie(n)&&(document.cookie=n+"=;expires=Thu, 01 Jan 1970 00:00:01 GMT")},blankImage="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7",states=[{code:"AL",name:"Alabama",country:"US",shipTo:!0},{code:"AK",name:"Alaska",country:"US"},{code:"AZ",name:"Arizona",country:"US",shipTo:!0},{code:"AR",name:"Arkansas",country:"US",shipTo:!0},{code:"CA",name:"California",country:"US",shipTo:!0},{code:"CO",name:"Colorado",country:"US",shipTo:!0},{code:"CT",name:"Connecticut",country:"US",shipTo:!0},{code:"DE",name:"Delaware",country:"US",shipTo:!0},{code:"FL",name:"Florida",country:"US",shipTo:!0},{code:"GA",name:"Georgia",country:"US",shipTo:!0},{code:"HI",name:"Hawaii",country:"US"},{code:"ID",name:"Idaho",country:"US",shipTo:!0},{code:"IL",name:"Illinois",country:"US",shipTo:!0},{code:"IN",name:"Indiana",country:"US",shipTo:!0},{code:"IA",name:"Iowa",country:"US",shipTo:!0},{code:"KS",name:"Kansas",country:"US",shipTo:!0},{code:"KY",name:"Kentucky",country:"US",shipTo:!0},{code:"LA",name:"Louisiana",country:"US",shipTo:!0},{code:"ME",name:"Maine",country:"US",shipTo:!0},{code:"MD",name:"Maryland",country:"US",shipTo:!0},{code:"MA",name:"Massachusetts",country:"US",shipTo:!0},{code:"MI",name:"Michigan",country:"US",shipTo:!0},{code:"MN",name:"Minnesota",country:"US",shipTo:!0},{code:"MS",name:"Mississippi",country:"US",shipTo:!0},{code:"MO",name:"Missouri",country:"US",shipTo:!0},{code:"MT",name:"Montana",country:"US",shipTo:!0},{code:"NE",name:"Nebraska",country:"US",shipTo:!0},{code:"NV",name:"Nevada",country:"US",shipTo:!0},{code:"NH",name:"New Hampshire",country:"US",shipTo:!0},{code:"NJ",name:"New Jersey",country:"US",shipTo:!0},{code:"NM",name:"New Mexico",country:"US",shipTo:!0},{code:"NY",name:"New York",country:"US",shipTo:!0},{code:"NC",name:"North Carolina",country:"US",shipTo:!0},{code:"ND",name:"North Dakota",country:"US",shipTo:!0},{code:"OH",name:"Ohio",country:"US",shipTo:!0},{code:"OK",name:"Oklahoma",country:"US",shipTo:!0},{code:"OR",name:"Oregon",country:"US",shipTo:!0},{code:"PA",name:"Pennsylvania",country:"US",shipTo:!0},{code:"RI",name:"Rhode Island",country:"US",shipTo:!0},{code:"SC",name:"South Carolina",country:"US",shipTo:!0},{code:"SD",name:"South Dakota",country:"US",shipTo:!0},{code:"TN",name:"Tennessee",country:"US",shipTo:!0},{code:"TX",name:"Texas",country:"US",shipTo:!0},{code:"UT",name:"Utah",country:"US",shipTo:!0},{code:"VT",name:"Vermont",country:"US",shipTo:!0},{code:"VA",name:"Virginia",country:"US",shipTo:!0},{code:"WA",name:"Washington",country:"US",shipTo:!0},{code:"WV",name:"West Virginia",country:"US",shipTo:!0},{code:"WI",name:"Wisconsin",country:"US",shipTo:!0},{code:"WY",name:"Wyoming",country:"US",shipTo:!0},{code:"AB",name:"Alberta",country:"CA"},{code:"BC",name:"British Columbia",country:"CA"},{code:"MB",name:"Manitoba",country:"CA"},{code:"NB",name:"New Brunswick",country:"CA"},{code:"NL",name:"Newfoundland/Labrador",country:"CA"},{code:"NT",name:"Northwest Territories",country:"CA"},{code:"NS",name:"Nova Scotia",country:"CA"},{code:"NU",name:"Nunavut",country:"CA"},{code:"ON",name:"Ontario",country:"CA"},{code:"PE",name:"Prince Edward Island",country:"CA"},{code:"QC",name:"Quebec",country:"CA"},{code:"SK",name:"Saskatchewan",country:"CA"},{code:"YT",name:"Yukon",country:"CA"},{code:"AG",name:"Aguascalientes",country:"MX"},{code:"BN",name:"Baja California",country:"MX"},{code:"BS",name:"Baja California Sur",country:"MX"},{code:"CM",name:"Campeche",country:"MX"},{code:"CP",name:"Chiapas",country:"MX"},{code:"CH",name:"Chihuahua",country:"MX"},{code:"CA",name:"Coahuila",country:"MX"},{code:"CL",name:"Colima",country:"MX"},{code:"DF",name:"Federal District",country:"MX"},{code:"DU",name:"Durango",country:"MX"},{code:"GT",name:"Guanajuato",country:"MX"},{code:"GR",name:"Guerrero",country:"MX"},{code:"HI",name:"Hidalgo",country:"MX"},{code:"JA",name:"Jalisco",country:"MX"},{code:"MX",name:"Mexico",country:"MX"},{code:"MC",name:"Michoacan",country:"MX"},{code:"MR",name:"Morelos",country:"MX"},{code:"NA",name:"Nayarit",country:"MX"},{code:"NL",name:"Nuevo Leon",country:"MX"},{code:"OA",name:"Oaxaca",country:"MX"},{code:"PU",name:"Puebla",country:"MX"},{code:"QE",name:"Queretaro",country:"MX"},{code:"QR",name:"Quintana Roo",country:"MX"},{code:"SL",name:"San Luis Potosi",country:"MX"},{code:"SI",name:"Sinaloa",country:"MX"},{code:"SO",name:"Sonora",country:"MX"},{code:"TB",name:"Tabasco",country:"MX"},{code:"TM",name:"Tamaulipas",country:"MX"},{code:"TL",name:"Tlaxcala",country:"MX"},{code:":",name:"Veracruz",country:"MX"},{code:"YU",name:"Yucatan",country:"MX"},{code:"ZA",name:"Zacatecas",country:"MX"}];states.get=function(n){return states.firstOrDefault(function(t){return t.code==n})};countries=[{code:"US",name:"United States",shipTo:!0,postalcode:{validate:function(n){return[5,9].indexOf(n.replace(/[^0-9]/gi,"").length)>-1},mask:function(n){n=n.replace(/[^0-9]/gi,"");var t=n.match(/^(\d{5})(\d{4})$/);return t?t[1]+"-"+t[2]:(t=n.match(/^(\d{5})$/),t)?t[1]:n},masking:"00000-0000",placeholder:"_____-____"}},{code:"CA",name:"Canada",postalcode:{validate:function(n){return n.replace(/[^a-zA-Z0-9]/gi,"").match(/^[abceghjklmnprstvxyABCEGHJKLMNPRSTVXY]{1}\d{1}[a-zA-Z]{1} *\d{1}[a-zA-Z]{1}\d{1}$/)!=null},mask:function(n){var t=n.replace(/[^a-zA-Z0-9]/gi,"").match(/^[abceghjklmnprstvxyABCEGHJKLMNPRSTVXY]{1}\d{1}[a-zA-Z]{1} *\d{1}[a-zA-Z]{1}\d{1}$/);return t?t[1]+"-"+t[2]:n},masking:"S0S-0S0",placeholder:"___-___"}},{code:"MX",name:"Mexico",postalcode:{validate:function(n){return n.replace(/[^0-9]/gi,"").length==5},mask:function(n){return(match=n.replace(/[^0-9]/gi,"").match(/^(\d{5})$/),match)?match[1]:n},masking:"00000",placeholder:"_____"}}];countries.get=function(n){return countries.firstOrDefault(function(t){return t.code==n})};var linesOfBusiness=[{CompanyCode:"001",LineOfBusinessKey:1,Description:"Aftermarket US"},{CompanyCode:"002",LineOfBusinessKey:1,Description:"Aftermarket Canada"},{CompanyCode:"004",LineOfBusinessKey:2,Description:"Salvage"}],isValidUserName=function(n){return!!n&&!/[\s]/.test(n||"")&&n.length>7},isValidPassword=function(n){return/^(?=.*\d)(?=.*[A-Z])(?!.*\s).{8,255}$/.test(n)},isValidEmail=function(n){return!!n&&/[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+(?:[A-Z]{2}|com|org|net|edu|gov|mil|biz|info|mobi|name|aero|asia|jobs|museum)\b/i.test(n||"")&&!/[\s]/.test(n||"")},isValidPhoneNumber=function(n){return!!n&&n.replace(/[^0-9]/g,"").length===10},formatPhoneNumber=function(n){var i=(""+n).replace(/\D/g,"").substr(0,10),t=i.match(/^(\d{3})(\d{3})(\d{4})$/);return t?"("+t[1]+") "+t[2]+"-"+t[3]:null},isValidAddress=function(n){var i=n.State||n.StateProvince,r=n.PostalCode||n.Zip,t=n.Country,u;return i&&r&&t&&i.country&&t.postalcode&&t.postalcode.validate&&(u=countries.firstOrDefault(function(n){return n.code===i.country}),u===t&&t.postalcode.validate(r))?!0:!1};setInterval(function(){function n(n,t){for(var i=0;i===0&&n[0]!==window;)n=n.parent(),n.is(":visible")&&(i=t?n.innerWidth():n.innerHeight());return i}var t=$(window).innerWidth();$("img").each(function(){if(!this.noDragSetup){this.noDragSetup=!0;$(this).on("dragstart",!1)}});$("img[data-size]").each(function(){var t=$(this),f=$(window).width()+"-"+$(window).height(),h=t.data("sizeisset")||"",i;if(f!==h&&!this.isLoading&&!this.isError){if(!this.isLoaded&&!this.isLoading){if(t.hide(),!t.attr("src"))return;this.isLoading=!0;this.loadingImage=$("<img>");this.loadingImage[0].image=this;this.loadingImage.load(function(){this.image.isLoaded=!0;this.image.isLoading=!1;(this.width<=1||this.height<=1)&&(this.image.isError=!0)}).error(function(){this.image.isError=!0});this.loadingImage.attr("src",t.attr("src"));return}i=parseInt(t.css("border-left-width"));isNaN(i)&&(i=0);var c=this.loadingImage[0].width,l=this.loadingImage[0].height,r=(t.data("size")||"80x80").split("x"),e,u,o,s;o=e=isNaN(r[0]*1)?0:r[0]*1;s=u=isNaN(r[1]*1)?0:r[1]*1;o&&s||(t.hide(),o||(e=n(t,!0)),s||(u=n(t,!1)));t.css({display:""});t.css({width:e-i*2,height:""});t.outerHeight()>u&&t.css({height:u-i*2,width:""});f=$(window).width()+"-"+$(window).height();t.data("sizeisset",f)}})},100);saveAs=saveAs||function(n){"use strict";if(typeof n!="undefined"&&(typeof navigator=="undefined"||!/MSIE [1-9]\./.test(navigator.userAgent))){var s=n.document,r=function(){return n.URL||n.webkitURL||n},i=s.createElementNS("http://www.w3.org/1999/xhtml","a"),h="download"in i,c=function(n){var t=new MouseEvent("click");n.dispatchEvent(t)},l=/constructor/i.test(n.HTMLElement)||n.safari,u=/CriOS\/[\d]+/.test(navigator.userAgent),a=function(t){(n.setImmediate||n.setTimeout)(function(){throw t;},0)},v="application/octet-stream",y=4e4,f=function(n){var t=function(){typeof n=="string"?r().revokeObjectURL(n):n.remove()};setTimeout(t,y)},p=function(n,t,i){var r,u;for(t=[].concat(t),r=t.length;r--;)if(u=n["on"+t[r]],typeof u=="function")try{u.call(n,i||n)}catch(f){a(f)}},e=function(n){return/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(n.type)?new Blob([String.fromCharCode(65279),n],{type:n.type}):n},o=function(t,o,s){s||(t=e(t));var a=this,k=t.type,b=k===v,y,w=function(){p(a,"writestart progress write writeend".split(" "))},d=function(){var i,e;if((u||b&&l)&&n.FileReader){i=new FileReader;i.onloadend=function(){var t=u?i.result:i.result.replace(/^data:[^;]*;/,"data:attachment/file;"),r=n.open(t,"_blank");r||(n.location.href=t);t=undefined;a.readyState=a.DONE;w()};i.readAsDataURL(t);a.readyState=a.INIT;return}y||(y=r().createObjectURL(t));b?n.location.href=y:(e=n.open(y,"_blank"),e||(n.location.href=y));a.readyState=a.DONE;w();f(y)};if(a.readyState=a.INIT,h){y=r().createObjectURL(t);setTimeout(function(){i.href=y;i.download=o;c(i);w();f(y);a.readyState=a.DONE});return}d()},t=o.prototype,w=function(n,t,i){return new o(n,t||n.name||"download",i)};return typeof navigator!="undefined"&&navigator.msSaveOrOpenBlob?function(n,t,i){return t=t||n.name||"download",i||(n=e(n)),navigator.msSaveOrOpenBlob(n,t)}:(t.abort=function(){},t.readyState=t.INIT=0,t.WRITING=1,t.DONE=2,t.error=t.onwritestart=t.onprogress=t.onwrite=t.onabort=t.onerror=t.onwriteend=null,w)}}(typeof self!="undefined"&&self||typeof window!="undefined"&&window||this.content);currentNav=undefined;$(window).on("mousemove",function(n){var t=$(n.target),r,i;if(currentNav&&(r=t[0].nav?t:t.closest?t.closest("header .nav-body"):$(),r.length&&r[0].nav===currentNav&&(t=$(currentNav))),t.data("nav")||(t=t.closest("[data-nav]")),t.data("nav")){if(i=$("#"+t.data("nav")),$("header .nav-tab").removeClass("active"),t.addClass("active"),i.length){if(i[0].nav=t[0],currentNav===t[0])return;currentNav=t[0];$("header .nav-body").each(function(){this===i[0]?$(this).show():$(this).hide()});var u=t.offset().left-1,e=u+i.outerWidth(),f=$(".desktop-nav").offset().left+$(".desktop-nav").outerWidth();e>f&&(u=f-i.outerWidth()+1);i.css({left:u,position:"absolute"})}else $("header .nav-body").hide(),currentNav=undefined;return}$("header .nav-tab").removeClass("active");$("header .nav-body").hide();currentNav=undefined});$(window).on("click",function(n){function f(n){while(n.parent().length)if(n=n.parent(),n.hasClass("nav-body"))return n;return undefined}var t=$(n.target),r,u,i;t.closest&&(r=f(t)||$(currentNav),r.length&&(u=r.data("keep-open"),u&&(i=t.data("close"),i||(t=t.closest("[data-close]"),t.length&&(i=t.data("close"))),!i)))||($("header .nav-tab").removeClass("active"),$("header .nav-body").hide(),currentNav=undefined)});for($(window).mousemove(function(n){var t=$(n.target),i;t.data("toggle")!=="hover"&&t.closest&&(t=t.closest("[data-toggle='hover']"));t.length!==1||t[0].setup||(i=t.closest(".dropdown"),i.length&&(t[0].setup=!0,i.addClass("open"),t.mouseout(function(){this.setup=!1;var n=$(this),t=n.closest(".dropdown");t.length&&(t.removeClass("open"),n.unbind("mouseout"))})))}),encoderKey={key1:"SXGWL|Z2IVUHJYT+QhtybqBNM8-519xswgzldpkoif=uACER067vjmPDOKF34ncare",key2:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghikmlmnopqrstuvwxyz1234567890-+=|",a:{},b:{}},i=0;i<encoderKey.key1.length;i++)encoderKey.a[encoderKey.key2[i]]=encoderKey.key1[i];for(i=0;i<encoderKey.key2.length;i++)encoderKey.b[encoderKey.key1[i]]=encoderKey.key2[i];app.controller("CartController",["$scope","UserService","CartService","DialogService","CatalogService","$timeout","LocalizationService","CheckoutService",function(n,t,i,r,u,f,o,s){n.UserService=t;n.CartService=i;n.CatalogService=u;n.$translate=o.$translate;n.showPage=!1;s.initialized=!1;t.setTitle("Cart","cart");n.PartTotal=function(){var n=0;return i.parts.each(function(t){n+=t.getPrice("current")*t.ext.quantity}),n};n.CoreTotal=function(){var n=0;return i.parts.each(function(t){n+=t.CorePrice*t.ext.quantity}),n};n.OrderTotal=function(){var n=0;return i.parts.each(function(t){n+=t.getPrice("extended")}),n};n.RemovePart=function(n){i.removePartFromCart(n).then(function(){i.parts.length||t.goHome()},function(n){r.error(n.headers("Errors")||"Failed to remove part from cart.")})};n.ClearCart=function(){r.confirm("This action will clear your entire cart. Proceed?").then(function(){i.clearCart(0).then(function(){t.goHome()},function(){r.error(e.headers("Errors")||"Failed to remove part from cart.")})})};n.initialize=function(){function u(){function r(){var n=u.shift();n&&n.askForWarranty().then(r,r)}if(!i.parts.length)return t.goHome();var u=[];i.parts.each(function(n,t){n.index=t;n.ext.SelectedWarranty&&n.ext.SelectedWarranty.RequiresQualification&&u.push(n)});n.showPage=!0;r()}(n.showPage=!1,t.user)&&(i.loading||i.getCartParts().then(function(){i.updateCartAvailability().then(u,u)},function(n){r.error(n.headers("Errors")||"Failed validate cart.");t.goHome()}))};n.initialize();n.$on("user.active",n.initialize);n.$on("customer.loaded",n.initialize);n.$on("cart.ready",n.initialize)}]);app.service("CartService",["CartApiService","$q","$http","$rootScope","UserService","DialogService","$timeout","Factory","ProductFactory","CatalogService","LocalizationService","AnalyticsService",function(n,t,i,r,u,f,e,o,s,h,c,l){return new function(){function a(n){return{id:u.user.id,cartId:n}}function b(n){var r=(n.prices||[]).firstOrDefault(function(n){return n.name==="list"})||{},u=(n.prices||[]).firstOrDefault(function(n){return n.name==="customer"})||{},f=(n.fees||[]).firstOrDefault(function(n){return n.category==="core"})||{},t=(n.fees||[]).firstOrDefault(function(n){return n.category==="warranty"})||undefined,i=n.unitofmeasure||{code:"EA",description:"Each"},e={isCartPart:!0,PartNumber:n.itemnumber,Guid:n.itemnumber,CompanyCode:n.companycode,LineOfBusiness:app.data.GetLineOfBusiness(n.companycode),QuantityRequested:n.quantity,Quantity:n.quantity,PartQuantity:n.quantity,Categories:[{FullName:n.category}],ListPrice:r.unitamount||0,CustomerPrice:u.amount||0,Core:f.amount||0,UnitOfMeasure:i.code,UnitOfMeasureDescription:i.description,DisplayDescription:n.description,selectWarranty:t?t.productcode:undefined,SelectedWarranty:t?{Description:t.description,Code:t.productcode,Cost:t.unitamount}:undefined,FTCDisplay:(n.description||"").startsWith("Remanufactured")?"Remanufactured":""};return new s.Part(e)}function p(n){var r=n.getCustomer(),i=[],t;return i.push({name:"list",amount:n.ext.selectedUOM.ListPrice}),i.push({name:"customer",amount:n.ext.selectedUOM.CustomerPrice}),t=[],n.Core&&t.push({id:0,description:"core",unitamount:n.Core,extendedamount:n.Core,taxable:!0,category:"core",productcode:"core"}),n.ext.SelectedWarranty&&t.push({id:0,description:n.ext.SelectedWarranty.Description,unitamount:n.ext.SelectedWarranty.Cost,extendedamount:n.ext.SelectedWarranty.Cost,taxable:!0,category:"warranty",productcode:n.ext.SelectedWarranty.Code}),{id:n.id,customernumber:(r||{}).CustomerNumber,itemnumber:n.PartNumber,companycode:n.LineOfBusiness.CompanyCode,quantity:n.ext.quantity,category:(n.Category||{}).FullName,prices:i,description:n.DisplayDescription,unitofmeasure:{code:n.ext.selectedUOM.UnitOfMeasure,description:n.ext.selectedUOM.Description},fees:t}}function w(n){var t=[],i=[],r=[],u=[];return n.each(function(n){t.push(n.PartNumber);i.push(n.CompanyCode);r.push(n.ext.selectedUOM.UnitOfMeasure);u.push("1")}),{partNumbers:t.join(","),companyCodes:i.join(","),unitsOfMeasure:r.join(","),quantities:u.join(",")}}function k(n){return{items:n.select(function(n){return{PartNumber:n.PartNumber,CompanyCode:n.CompanyCode,UnitOfMeasure:n.ext.selectedUOM.UnitOfMeasure,Quantity:n.ext.quantity||1,PartType:n.HollanderPartType}})}}function d(){function f(){i.updateTotals();i.loading=!1;r.$broadcast("cart.ready")}var t,s,e,o;if(i.parts=[],i.updateTotals(),t=u.user,t&&t.id){if(t.cart){i.getCartItems().then(f,f);return}if(i.loading=!0,i.user===t)return;i.user=t;s=t.id;i.totals.cartIconClass="loading";e=a();o={id:v,name:"Shopping Cart",timetolive:"7:0:0:0",carttimetolive:"7:0:0:0",applicationcorrelationid:app.id,applicationid:app.id,items:[]};n.createCartObject(e,o).$promise.then(function(){i.getCartItems().then(f,f);i.cartLoading=!1});e=a();o={id:y,name:"Favoites Cart",timetolive:"30:0:0:0",carttimetolive:"30:0:0:0",applicationcorrelationid:app.id,items:[]}}}var i,v,y;o.CartService=this;u.CartService=this;h.CartService=this;l.CartService=this;i=this;i.parts=[];i.loading=!0;i.totals={cartIconCount:0,cartIconClass:"loading",PartCountTotal:0,PartPriceTotal:0,CorePriceTotal:0,WarrantyPriceTotal:0};v=app.id+"_cart";y=app.id+"_favorites";i.getTotal=function(){if(!h.view.showCustomerPrice){var n=0;return i.parts.each(function(t){n+=t.ext.selectedUOM.ListPrice*t.ext.quantity}),n}return i.totals.PartPriceTotal};i.updateTotals=function(){var n=listTotal=subTotal=coreTotal=warrantyTotal=orderTotal=0;i.parts.each(function(t){var i=t.ext.quantity*1,r,u,f,e;isNaN(i)&&(i=1);r=(t.ext.selectedUOM||t).CustomerPrice*1;isNaN(r)&&(r=0);u=(t.ext.selectedUOM||t).ListPrice*1;isNaN(u)&&(u=0);f=t.CorePrice*1;isNaN(f)&&(f=0);e=t.WarrantyPrice*1;isNaN(e)&&(e=0);n+=i;listTotal+=i*u;subTotal+=i*r;coreTotal+=f;warrantyTotal+=e});i.totals.PartCountTotal=n;i.totals.PartPriceTotal=subTotal;i.totals.CorePriceTotal=coreTotal;i.totals.ListPriceTotal=listTotal;i.totals.WarrantyPriceTotal=warrantyTotal;i.totals.cartIconClass=n<10?"one":n<100?"two":"more";i.totals.cartIconCount=n<100?n:"99+";i.parts.sortBy("PartNumber").sortBy("LineOfBusiness.LineOfBusinessKey")};i.getPartByPartNumber=function(n){return i.parts.firstOrDefault(function(t){return(t.PartNumber||"").toUpperCase()===n.toUpperCase()||t.id===n.toUpperCase()})};i.hasPartNumber=function(n){var t=i.getPartByPartNumber(n);return!!t};i.pop=function(n,t,r){var u=t.split("|"),e,o;if(u.length>1){e=u[0];t=u[1];switch(e){case"REMOVE":o=i.getPartByPartNumber(r.PartNumber);i.parts.remove(o);break;case"ADDCARTQUANTITY":t+=" "+r.ext.quantity+" "+(r.ext.quantity==1?"is":"are")+" currently in your cart."}}f.pop(n,"",t)};i.addPartToCart=function(n,u){var f=t.defer();return i.getAvailability([n]).then(function(t){if(!t.length){f.reject(null,"Unable to retrieve availability for this part.");return}var e=i.doCartPartFromAvailability(n,t[0],u);r.$broadcast("cart.partadded",n);e.success?f.resolve(e):f.reject(e)},f.reject),window.analytics.cartEvent("add",{},[n]),f.promise};i.addPartsToCart=function(f){var e=t.defer(),o,s;return f.length?(o=[],s=k(f),n.getPricingAndAvailabilities(s).$promise.then(function(t){var h,s,c;t.each(function(n){var r=u.user.getCustomer(n.CompanyCode),t;n.id=n.PartNumber+"-"+r.CustomerNumber+"-"+n.CompanyCode;t=f.firstOrDefault(function(t){return t.id===n.id});t&&o.push(i.doCartPartFromAvailability(t,n,!1,!0))});h=a(v);s=o.where(function(n){return n.method==="addPart"}).select(function(n){return n.work});s.length&&(n.addPart(h,{items:s}),r.$broadcast("cart.partsAdded",s),window.analytics.cartEvent("add",{},s));s=o.where(function(n){return n.method==="updatePart"}).select(function(n){return n.work});s.length&&(n.updatePart(h,{items:s}),r.$broadcast("cart.partsUpdated",s),window.analytics.cartEvent("update",{},s));s=o.where(function(n){return n.method==="removePart"}).select(function(n){return n.work});s.length&&(c=s.select(function(n){return n.id}),n.removePart(h,{items:c}),r.$broadcast("cart.partsRemoved",s),window.analytics.cartEvent("remove",{},s));e.resolve()},e.reject),e.promise):(e.resolve(),e.promise)};i.updateCartPart=function(n){return i.addPartToCart(n,!0)};i.getCartParts=function(){var r=t.defer(),f=i.parts.where(function(n){return n.isCartPart}),u;return f.length?(u=w(f),u.objectSizeType=1,n.getPartsByList(u).$promise.then(function(n){n.Parts.each(function(t,r){var u,f;t.LineOfBusiness.LineOfBusinessKey==2&&(t.PartNumber=t.Guid);t.IsReman=t.FTCDisplay=="Remanufactured";u=i.getPartByPartNumber(t.PartNumber);u&&(t.UnitOfMeasure=u.ext.selectedUOM.UnitOfMeasure,t.UnitOfMeasureDescription=u.ext.selectedUOM.Description,t.FirstEDA=u.ext.selectedUOM.FirstEDA,t.LastEDA=u.ext.selectedUOM.LastEDA,t.Availability=u.ext.selectedUOM.Availability,t.AvailabilityDisplay=u.ext.selectedUOM.AvailabilityDisplay,t.SelectedWarranty=u.SelectedWarranty,t.IsReman&&t.SelectedWarranty&&(t.AvailableWarranties=u.AvailableWarranties));s.transformWarranties(t);f=new s.Part(t);f.index=r;n.Parts[r]=f;u?(f.ext.quantity=u.ext.quantity,f.QtySelectChange(u.ext.quantity),i.parts[i.parts.indexOf(u)]=f):i.parts.push(f)});i.updateTotals();r.resolve()},r.reject),r.promise):(r.resolve(),r.promise)};i.doFavoritePart=function(t){var i=p(t),r=a(y),f=u.user.favorites.get(t);if(f){i.itemId=i.id;n.updatePart(r,i);return}n.addPart(r,i)};i.getFavorites=function(){var t=u.user,i;if(!t||!t.id)return defer.reject(),defer.promise;i=a(y);n.getCart(i).$promise.then(function(n){var t=u.user.favorites;t.items=[];t.parts=[];n=n.data||n||[];n.each(function(n,i){n.isCartPart=!0;var r=new s.Part(n);r.index=i;t.items.push(r);t.parts.push(r)})})};i.removeFavorite=function(t){var i=a(y);n.removePart(i,{items:[t.id]})};i.updateFavorite=function(t){var i=p(t),r=a(y);i.itemnumber=t.id;n.removePart(r,i)};i.clearFavorites=function(){var t=u.user.favorites.items.select(function(n){return n.id}),i=a(y);n.removePart(i,t);u.user.favorites.items=[];u.user.favorites.parts=[]};i.getFullFavorites=function(){};i.doCartPartFromAvailability=function(t,r,u,f){var e=i.getPartByPartNumber(t.id),l=t.ext.quantity,y,w;e&&!u&&(l=t.ext.quantity+e.ext.quantity,e.ext.quantity=l,e.QtyChange(),e.isCartPart?(e.ext.selectedUOM=t.ext.selectedUOM,e.ext.unitsOfMeasure=t.ext.unitsOfMeasure):(y=t.ext.selectedUOM,w=e.getUOM(t.ext.selectedUOM.UnitOfMeasure),w&&w.update(y.ListPrice,y.Customer,y.FirstEDA,y.LastEDA,t.Availability,t.AvailabilityDisplay,!0)));var c=a(v),h=p(e||t),o={success:!1,msg:""};return(r.UOMBackOrderQuantity>0||r.UOMQuantityAvailable===0)&&(t.ext.selectedUOM.update(r.ListPrice,r.CustomerPrice,r.FirstEDA,"",r.Availability,r.AvailabilityDisplay,!0),e?(o.msg="This part is no longer available.",f?(o.work=h,o.method="removePart"):(n.removePart(c,{items:[h.id]}),window.analytics.cartPartEvent("remove",{},h))):o.msg="Unable to add the part to your cart. The part is no longer be available."),e?!1&&e.ext.quantity===r.UOMQuantityAvailable?u?f?(o.work=h,o.method="updatePart"):(n.updatePart(c,{items:[h]}),window.analytics.cartPartEvent("update",{},h)):o.success=!0:!1&&e.ext.quantity>r.UOMQuantityAvailable?(o.msg="Unable to add more to your cart. The quantity in your cart has been reduced.",e.ext.quantity=r.UOMQuantityAvailable,h.quantity=r.UOMQuantityAvailable,e.QtyChange(),f?(o.work=h,o.method="updatePart"):(n.updatePart(c,{items:[h]}),window.analytics.cartPartEvent("update",{},h))):!1&&l>r.UOMQuantityAvailable?(o.msg="Some items were added to your cart. Quantity excedes availability.",e.ext.quantity=r.UOMQuantityAvailable,h.quantity=r.UOMQuantityAvailable,e.QtyChange(),f?(o.work=h,o.method="updatePart"):(n.updatePart(c,{items:[h]}),window.analytics.cartPartEvent("update",{},h))):(o.success=!0,f?(o.work=h,o.method="updatePart"):(n.updatePart(c,{items:[h]}),window.analytics.cartPartEvent("update",{},h))):u?o.msg="Error updating part. Does not exist.":(t.UnitOfMeasure=t.ext.selectedUOM.UnitOfMeasure,t.UnitOfMeasureDescription=t.ext.selectedUOM.Description,t.CustomerPrice=t.ext.selectedUOM.CustomerPrice,t.ListPrice=t.ext.selectedUOM.ListPrice,t.SelectedWarranty=t.ext.SelectedWarranty,e=new s.Part(t),e.ext.quantity=l,e.QtyChange(),t.ext.SelectedWarranty&&e.SelectWarranty(t.ext.SelectedWarranty.Code),i.parts.push(e),!1&&l>r.UOMQuantityAvailable?(o.msg="Some items were added to your cart. Quantity excedes availability.",h.quantity=r.UOMQuantityAvailable,e.ext.quantity=r.UOMQuantityAvailable,t.ext.quantity-=r.UOMQuantityAvailable,t.QtyChange()):(o.success=!0,o.msg="Item was added to your cart",t.ext.quantity=1),f?(o.work=h,o.method="addPart"):(n.addPart(c,{items:[h]}),window.analytics.cartPartEvent("add",{},h))),i.updateTotals(),o};i.getAvailability=function(r){var f=t.defer(),e;return r.length?(e=k(r),n.getPricingAndAvailabilities(e).$promise.then(function(n){if(u.user&&u.user.getCustomer){n=n||n.data||[];n.each(function(n){var t=u.user.getCustomer(n.CompanyCode);n.id=n.PartNumber+"-"+t.CustomerNumber+"-"+n.CompanyCode});var e=r.select(function(n){return n.id}),t=[];if(n.each(function(n){var t=r.firstOrDefault(function(t){return t.id===n.id});t&&t.ext.selectedUOM.update(n.ListPrice,n.CustomerPrice,n.FirstEDA,"",n.Availability,n.AvailabilityDisplay,!0)}),i.updateTotals(),t.length)return f.reject(0,t);f.resolve(n)}},f.reject),f.promise):(f.resolve(),f.promise)};i.updateCartAvailability=function(){var n=t.defer();return i.getAvailability(i.parts).then(n.resolve,function(t,r){if(t){n.reject(t,t.headers("Errors"));return}var u="<b>"+c.$translate("Some items in your cart have changed")+"<\/b>";r.each(function(n){var r=i.getPartByPartNumber(n.id),t;r&&(t=i.doCartPartFromAvailability(r,n),t.success||(u+="<p>"+c.$translate(t.msg)+"<\/p>"))});r.length&&(r.each(function(n){var r=i.getPartByPartNumber(n.PartNumber+"-"+n.CompanyCode)||{},t=r.DisplayDescription||"";u+="<p>";n.UOMQuantityAvailable>0?(u+=c.$translate("Part was reduced in quantity: "),u+=n.PartNumber+" "+t+" - "+n.UOMQuantityAvailable):(u+=c.$translate("Part was removed: "),u+=n.PartNumber+" "+t+" - "+n.UOMQuantityAvailable);u+="<\/p>"}),f.alert(u));i.updateTotals();n.reject()}),n.promise};i.getCartItems=function(){function o(){var t=f.cart.where(function(n){var t=u.user.getCustomer(n.companycode);return t?t.CustomerNumber===n.customernumber:!1}),n=[];t.each(function(t,i){var r=b(t);r.index=i;n.push(r)});i.parts=n;i.updateTotals();i.updateCartAvailability().then(r.resolve,r.resolve)}var r=t.defer(),f=u.user,e;return!f||!f.id?(r.reject(),r.promise):(e=a(v),n.getCart(e).$promise.then(function(n){n.success||(i.totals.cartIconClass="error",r.reject());i.parts=[];var t=u.user;t.cart=n.data||[];o()},r.reject),r.promise)};i.getFullCartParts=function(){var r=t.defer(),u=w(i.parts);return n.getParts(u).$promise.then(function(n){var t=[];n.Parts.each(function(n,u){var f,e;n=new s.Part(n);n.index=u;f=i.getPartByPartNumber(n.id);f&&(n.ext.quantity=f.ext.quantity);t.push(n);i.parts=t;e=i.totals.PartPriceTotal;i.updateTotals();i.totals.PartPriceTotal!==e;r.resolve()})},r.reject),r.promise};i.TransformToPart=b;r.$on("customer.started",d);r.$on("customer.changed",d);i.VerifyCartItems=function(n,r){var l=!!r,h,s;if(l||(r=t.defer()),h=n.where(function(n){return n.UOMBackOrderQuantity>0}),h.length){f.setLoading();var u=h[0],c=u.PartQuantity,a=u.UOMBackOrderQuantity,o="Availability of the part "+u.PartNumber+" is limited.<br/>  ";u.LineOfBusinessKey==2&&(o="Availability of the part id "+u.PartNumber+" is limited.<br/>  ");s="Each";u.UnitsOfMeasure&&u.UnitsOfMeasure.length>0&&(s=u.UnitsOfMeasure[0].Description);c>0?(o+="Part available quantity: "+c+" "+s+".<br/>Ordered quantity changed to "+c+" "+s+".",o+="<br /><br />Do you wish to keep or remove that part?",e(function(){f.customConfirm({title:"Part Availability Warning",message:o,yesText:"Keep",noText:"Remove"}).then(function(){u.UOMBackOrderQuantity=0;i.VerifyCartItems(n,r)},function(){n.remove(u);i.removePartFromCart(u);i.VerifyCartItems(n,r)})},10)):(o+="Part has been removed from the cart.",e(function(){f.alert(o,"Part Availability Warning").then(function(){n.remove(u);i.VerifyCartItems(n,r)})},10))}else r.resolve();return r.promise};r.$on("aqrp.set",function(r,e){var o=t.defer(),h=u.user.aqrp.current,s;if(h)return i.parts.length?(s=w(i.parts),s.objectSizeType=7,s.doPricingAndAvailability=!1,n.getPartsByList(s).$promise.then(function(n){var r=[],o=n.Parts,s=app.data.GetLineOfBusiness("004"),t;o.each(function(n){var f,t,e;n.CompanyCode=n.CompanyCode||n.LineOfBusiness.CompanyCode;n.ext={isSalvage:n.CompanyCode===s.CompanyCode};n.isSalvage&&(n.PartNumber=n.Guid);f=u.user.getCustomer(n.CompanyCode);n.id=n.PartNumber+"-"+f.CustomerNumber+"-"+n.CompanyCode;t=i.getPartByPartNumber(n.id);t&&(e=n.InsurancePrograms.firstOrDefault(function(n){return n.ProgramName===h.AQRPName}),e||r.push(t))});r.length&&(t=c.$translate("The cart contains products that are not valid for the selected insurance carrier. Would you like to remove the following products or continue as a non-KeysIQ order?"),t="<p>"+t+"<\/p>",r.each(function(n){t+="<div>"+n.PartNumber+"<\/div>"}),f.confirm({message:t,title:"Cart Items Warning",buttonText:"Remove Parts and Continue",cancelText:"Continue as Non-KeysIQ order"}).then(function(){function n(){var t=r.shift();if(!t){e&&u.go(e);f.setLoading();return}t=i.getPartByPartNumber(t.PartNumber);t?i.removePartFromCart(t).then(n,n):n()}f.setLoading(!0);n()},function(){u.user.aqrp.set()}))},o.reject),o.promise):(o.resolve(),o.promise)});i.removePartFromCart=function(u){var e=t.defer(),f=i.getPartByPartNumber(u.id),o;return f?(i.parts.remove(f),o=a(v),n.removePart(o,{items:[f.id]}),window.analytics.cartEvent("remove",{},[f]),r.$broadcast("cart.part.removed",f),e.resolve()):e.reject(),i.updateTotals(),e.promise};i.removePartsFromCart=function(r){var u=t.defer(),f=[],e;return r=r.slice(),r.each(function(n){var t=i.getPartByPartNumber(n.id);t&&(f.push(t.id),i.parts.remove(t))}),r.length?(e=a(v),n.removePart(e,{items:f}),window.analytics.cartEvent("remove",{},r),u.resolve()):u.resolve(),i.updateTotals(),u.promise};i.convertGUIPartToPartModel=function(n){var v=n.Category||{},y=v.FullName||"",c=n.PartNumber;n.ext.isSalvage&&n.Guid&&(c=n.Guid);var t=n.ext.isSalvage?1:n.ext.quantity,r=n.LineOfBusiness.LineOfBusinessKey,f=n.ext.isSalvage?"EA":n.ext.selectedUOM.UnitOfMeasure,e=n.VehicleYear,o=n.VehicleMake,s=n.VehicleModel,w=n.cartCategory,i=n.Fitment,l=n.DisplayPartDescription,p=n.ItemShippingMethod||"",h="",a=u.user.customers[n.CompanyCode];return a&&(h=a.AfterMarketServiceLocation.WarehouseNumber),n.ext.isSalvage&&(h=n.ShippingWarehouse),r=isNaN(r)?1:r,f=f||"EA",t=isNaN(t)?1:t,(!e||!o||!s)&&i&&i.length>0&&(e=i[0].SystemYear,o=i[0].SystemMake,s=i[0].SystemModel),{PartNumber:c,Quantity:t,PartQuantity:t,UnitOfMeasure:f,LineOfBusinessKey:r,VehicleYear:e,VehicleMake:o,VehicleModel:s,CategorySubCategoryField:y,Description1:l,PartDescription:l,ShippingMethodCode:p,ShippingWarehouse:h,SelectedWarranty:n.ext.SelectedWarranty}};i.getTaxTotals=function(i,r,u,f,e,o){var s=t.defer(),h={LineOfBusinessKey:i*1,UseLiftGate:e,IsResidential:o,FreightAmount:f,ShippingAddress:r,ShipVia:u};return n.getTaxTotals(h).$promise.then(s.resolve,s.reject),s.promise};i.validatePO=function(i,r){var u=t.defer();return n.validatePOReset(),n.validatePO({orderNumber:i,lobKey:r}).$promise.then(function(n){u.resolve(n.BooleanValue)},function(n){u.reject(n)}),u.promise};i.clearCart=function(){return i.removePartsFromCart(i.parts)}}}]);app.service("CartApiService",["$resource","$q","$http",function(n,t,i){var r=n("",{},{createCartObject:{method:"POST",url:app.version.cart},getCart:{method:"GET",url:app.version.cart+":cartId/item"},addPart:{method:"POST",url:app.version.cart+":cartId/item"},updatePart:{method:"PUT",url:app.version.cart+":cartId/item"},getPricingAndAvailabilities:{method:"post",url:app.api+"aisle/GetPricingAndAvailabilities",isArray:!0},getPartsByList:{method:"get",url:app.api+"part/GetByList"},getShippingData:{method:"GET",url:app.api+"cart/GetShippingData",isArray:!0,params:{lobKey:"@lobKey"}},getItems:{method:"GET",url:app.api+"cart/GetCartItems"},getTaxTotals:{method:"POST",url:app.api+"cart/GetCartTaxTotals"},clear:{method:"DELETE",url:app.api+"Cart/ClearCartItems",params:{lobKey:"@lobKey"}},removeItem:{method:"DELETE",url:app.api+"cart/DeleteCartItem",params:{partNumber:"@partNumber",lineOfBusinessKey:"@lineOfBusinessKey",shippingMethodCode:"@shippingMethodCode",shippingWarehouse:"@shippingWarehouse"}},addPartToCart:{method:"POST",url:app.api+"cart/InsertCartItem",isArray:!1},addPartsToCart:{method:"POST",url:app.api+"cart/InsertCartItems",isArray:!1},updateCartItems:{method:"PUT",url:app.api+"cart/UpdateCartItems",isArray:!1},updateCartItem:{method:"PUT",url:app.api+"cart/UpdateCartItem",isArray:!1},checkInsuranceParts:{method:"GET",url:app.api+"cart/CheckInsuranceParts",isArray:!0,params:{insuranceCompany:"@insuranceCompany",lobKey:"@lobKey"}}});return r.removePart=function(n,t){return i({method:"DELETE",url:(app.version.cart+":cartId/item").prepareRoute(n),data:t,headers:{"Content-Type":"application/json;charset=utf-8"}})},r.validatePOReset=function(){r.validatePOAbort&&r.validatePOAbort.resolve();r.validatePOAbort=t.defer();var i=n("",{},{validatePO:{method:"GET",url:app.api+"cart/ValidatePONumber",isArray:!1,param:{orderNumber:"@orderNumber",lobKey:"@lobKey",timeout:r.validatePOAbort.promise}}});$.extend(r,i)},r}]);app.controller("CatalogController",["$scope","UserService","CatalogService","Factory","DialogService","LocalizationService","$timeout","CartService","CatalogSingletonService",function(n,t,i,r,u,f,e,o,s){function c(n){var i=n.message;try{i=n.headers("Errors")}catch(n){}u.error(i);t.goHome()}function l(){var i=this,r=n.parse;i.init=function(){var t,u;i.changes=[];i.current=[];n.filters.counts.each(function(t){var r,f=(t.items[0]||{}).token,u;t.items.length&&f&&(u=n.parse.getToken(f),u&&(r=t.items.firstOrDefault(function(n){return n.value.toLowerCase()===u.value.toLowerCase()}),r&&i.changes.push(r)))});r.category&&(t=n.filters.counts.firstOrDefault(function(n){return n.title==="Category"}),t&&(u=t.items.firstOrDefault(function(n){return n.FullName===r.category.FullName}),u&&i.changes.push(u)));i.original=JSON.stringify(i.changes)};i.init();i.hasChanges=function(){return i.original!==JSON.stringify(i.changes)};i.set=function(t){!n.filters.loading&&n.filters.counts.length&&(i.current=t?t.items:n.filters.counts,n.show.catalogFilters=1)};i.cancel=function(){i.init();n.show.catalogFilters=0};i.add=function(n){var t=i.changes.firstOrDefault(function(t){return t.token===n.token});t&&i.changes.remove(t);n!==t&&i.changes.push(n)};i.assign=function(){var r=n.parse,u;n.filters.counts.each(function(n){r.removeToken(n.token)});r.category=null;u=JSON.parse(i.original);u.each(function(n){var t=i.changes.firstOrDefault(function(t){return t.token===n.token});t||r.removeToken(n.token)});i.changes.each(function(n){if(n.token==="category"){r.category=n;n.root={};var t=app.data.GetCategoryByName(n.FullName.split("|")[0]);t&&(n.root.WizardType=t.WizardType)}else n.token==="year"?r.Year=n.uri:r.setToken(n.token,n.value)});r.removeToken(app.data.getTokenKey("page"));t.go(r.toUrl())}}n.UserService=t;n.CatalogService=i;n.$translate=f.$translate;n.CartService=o;n.show={};n.client=app.client;n.catalogSingleton=s;t.setTitle("Search","search");var h=i.config;h||(h=new r.Configuration(getCookie(app.data.catalogStyleCookieName)||"gallery"),h.takes=app.data.takes,h.take=app.data.defaultTake);h.getStyle=function(){return i.style};h.setStyle=function(n){i.style=n;setCookie(app.data.catalogStyleCookieName,n)};h.results=[];h.total=0;n.config=h;n.lobButtons=[];n.filters={loading:!0,counts:[]};n.aisle=!0;n.pageSearch=function(i){n.parse.setToken("page",i);n.parse.removeToken("take");app.data.defaultTake!=n.config.take&&n.parse.setToken("take",n.config.take);t.go(n.parse.toUrl())};n.search=function(f){function p(t){var r,u,o,c,h;n.lobButtons.each(function(n){n.loading=!1;n.Count=0});t.LineOfBusinessCounts.each(function(t){var r=t.LineOfBusiness==="aftermarket"?1:2,i=n.lobButtons.firstOrDefault(function(n){return n.LineOfBusinessKey===r});i&&(i.Count=t.Count)});r=f.getToken("lob");r?(u=n.lobButtons.where(function(n){return n.Count}),e=n.lobButtons.firstOrDefault(function(n){return n.LineOfBusinessKey+""==r.value}),u.indexOf(e)==-1&&(e=u[0]),e&&(f.setToken("lob",e.LineOfBusinessKey),n.lobButtons.each(function(n){n.active=n==e;n.css=n.active?"active":""}))):(e=n.lobButtons.firstOrDefault(function(n){return n.Count>0}),e&&(f.setToken("lob",e.LineOfBusinessKey),n.lobButtons.each(function(n){n.active=n==e;n.css=n.active?"active":""})));o=!1;e&&(c=f.searchKey+" filters: "+e.LineOfBusinessKey,h=i.search.data.get(c),h.expires>Date.Now()&&(s(h),o=!0));b(o)}function w(){var r=o+" facet: lob",u=i.search.data.get(r),n;if(u.expires>Date.Now())return p(u);n=f.toSearchObject(null,t.user);n.LinesOfBusinessIds=t.application.lobKeys;delete n.CompanyCodes;delete n.DoPricingAndAvailability;n.Facets=["LineOfBusiness"];i.search(n).then(function(n){i.search.data.put(r,n);p(n)},c)}function v(r,u){var e;n.loadingParts=!1;h.parts=r.Parts;h.results=r.Parts;h.total=r.TotalPartsCount;h.skip=y*(((n.parse.getToken("page")||{}).value||1)*1-1);r.Parts.each(function(n){n.ext.url=n.getUrl(f)});var o=f.getToken("mileage")||{},s=f.getToken("price")||{},c=[o.value?"mileage":"",s.value?"price":""].removeEmpties(),l=[o.value,s.value].removeEmpties(),a={search_keyword:window.location.pathname.split("?")[0].toClean(),search_refinement_type:c.join(","),search_refinement_value:l.join(",")};window.analytics.searchEvent("Search",a,r.Parts);i.partSearch.setView(i.partSearch.showPBE);e=f.toSearchObject(null,t.user);e.LinesOfBusinessIds=t.application.lobKeys;e.CompanyCodes=t.application.companyCodes;u||k()}function b(n){var u;if(!e)return v({Parts:[],TotalPartsCount:0},n);var s=f.toSearchObject("partSearch",t.user,y),r=o+" parts: "+e.LineOfBusinessKey+" skip: "+(s.Skip||0),h=f.getToken("sort");if(h&&(r+=" sort: "+h.value),u=i.search.data.get(r),u.expires>Date.Now())return v(u,n);i.search(s).then(function(n){n.expires=Date.Now().addMinutes(5);i.search.data.put(r,n);v(n)},c)}function s(t){n.facets=t;n.filters.loading=!1;n.filters.counts=[];app.data.filters.each(function(i){var u=t[i.countName],e;u&&u.length&&(e=new r.Filter(i,u,f),e.items.length&&n.filters.counts.push(e))});n.visibleFilters=new l}function k(){var n,r,u;if(!e)return s({});if(n=o+" filters: "+e.LineOfBusinessKey,r=i.search.data.get(n),r.expires>Date.Now())return s(r);u=f.toSearchObject(null,t.user);u.LinesOfBusinessIds=t.application.lobKeys;i.search(u).then(function(t){t.expires=Date.Now().addMinutes(5);i.search.data.put(n,t);s(t)},c)}var a=t.user;if(n.loadingParts=!0,n.filters.loading=!0,n.lobButtons.each(function(n){n.loading=!1;n.Count=0}),!f){f=new r.Parse(!0);f.parse().then(function(){n.search(f)},function(n){u.error(n.headers("Errors"));t.goHome()});return}(function(t){var r,u,i,f;n.parse=t;t.getLobs(a);r=t.getToken("take");r&&(n.config.take=r.value*1,isNaN(n.config.take)&&(n.config.take=app.data.defaultTake));u=t.getToken("lob");i=0;u&&(i=u.value*1,i==3&&(i=1));n.lobButtons.each(function(n){n.loading=!0;n.Count=0});h.activeLob=i;h.sortBys=app.data.sort[i];n.isSalvage=i==2;f=t.getToken("sort");h.sortBy=h.sortBys[0];f&&(h.sortBy=h.sortBys.firstOrDefault(function(n){return n.Name.toLowerCase().toWebsiteURL()===f.value.toLowerCase()})||h.sortBy)})(f);var y=h.take,e=null,o=f.searchKey;a.aqrp.current&&(o+=" aqrp:"+a.aqrp.current.InsuranceCompanyName);w()};n.setActiveLob=function(i,r){var u=n.parse,f=u.getToken("lob"),e;if(window.location.pathname.indexOf("+l"+r)>0)return i.preventDefault(),i.stopPropagation(),!1;(r&&r==1?setCookie(app.data.defaultLobCookieName,"",0):setCookie(app.data.defaultLobCookieName,r,14),r||f||!r||!f||f.value!=r+"")&&(u.setToken("lob",r),u.removeToken("page"),r&&r!==1,e=u.toUrl(),t.go(u.toUrl()))};n.setSort=function(i){var r=n.parse,u=r.getLobs(t.user),e=u.length===1?u[0]:0,f=app.data.sort[e],o=r.getToken("sort");r.removeToken("sort");f&&i!==f[0]&&r.setToken("sort",i.Name.toWebsiteURL());t.go(r.toUrl());n.show.catalogSort=0};n.setTake=function(){n.parse.removeToken("page");n.search(n.parse)};n.loadingParts=!0;n.loadingFacets=!0;n.loadingCounts=!0;n.initialize=function(){function f(){var f=t.user,u;if(f&&f.activeCustomers){if(u=n.parse=new r.Parse(!0),u.getToken("part")||u.getToken("guid")){n.aisle=!1;return}u.parse().then(function(){n.title=u.buildTitle();n.path=u.getPath();var t=getCookie(app.data.defaultLobCookieName),r=u.getToken("lob");n.lobButtons.each(function(n){r?n.LineOfBusinessKey==r.value&&(n.css="active"):t?t==n.LineOfBusinessKey&&(u.setToken("lob",t),n.css="active"):n.LineOfBusinessKey==1&&(n.css="active")});i.partSearch.fromUrl();n.search(u)},c)}}if(t.user){n.lobButtons=[];var e=t.getApplication().then(function(t){n.lobButtons=[];t.LinesOfBusiness.each(function(t){var i=app.data.GetLineOfBusiness(t.CompanyCode);i&&(i=angular.copy(i),i.loading=!0,n.lobButtons.push(i))})}),u=n.parse=new r.Parse(!0);if(u.getToken("part")||u.getToken("guid")){n.aisle=!1;return}i.partSearch.cancelReset=!0;i.initialize().then(function(){f()},c)}};n.initialize();n.$on("user.active",n.initialize);n.$on("aqrp.set",n.initialize);n.$on("user.searchType.set",n.initialize);n.$on("customer.loaded",n.initialize)}]);setInterval(function(){$(".getby").each(function(){var n=$(this),r,i;n.html("");var t=n.data("endtime"),e=n.data("orderbytext"),o=n.data("date");if(t=isDate(t)?new Date(t):Date.Now(),r=Date.diff(t),i=Math.floor(r/1e3),!(r<0)&&!(i<60)){var u=Math.floor(i/3600),f=Math.floor((i-u*3600)/60),s=u+" hr"+(u>1?"s":"")+" "+f+" min"+(f>1?"s":"")+" ",h=(e||"").replace(/(\[date\])/g,o).replace(/(\[time\])/g,s);n.html(h)}})},1e3);app.controller("FavoriteController",["$scope","UserService","CatalogService","DialogService","LocalizationService","Factory","ProductFactory","$timeout",function(n,t,i,r,u,f,e,o){n.UserService=t;n.CatalogService=i;n.$translate=u.$translate;t.setTitle("Favorites","favorites");i.printList=[];n.config=new f.Configuration;n.repeater=function(){window.location.pathname.toLowerCase()==="/favorites/"&&(t.user.favorites.parts.each(function(n){n.updateIsFavoritePart()}),o(n.repeater,100))};n.initialize=function(){var u=t.user;u&&(u.hasPermission("Favorites")||(r.error("You do not have permissions to view this page."),t.goHome()),n.loadingParts=!0,i.initialize().then(function(){u.favorites().then(function(){var f=u.favorites.items.select(function(n){return n.PartNumber}),o={PartNumbers:f,DoPricingAndAvailability:!0,IsPartSearch:!0,IsFacetOnly:!1,CompanyCodes:u.activeCustomers.companyCodes,LinesOfBusinessIds:u.activeCustomers.lobKeys,Skip:0,Take:f.length,IsNationalSearch:!1};i.getFavorites().$promise.then(function(i){function r(){var t=o.shift(),f,i;if(!t){n.repeater();return}f=u.favorites.get(t);i=t.ext.unitsOfMeasure.firstOrDefault(function(n){return n.UnitOfMeasure===f.UnitOfMeasure});i?t.selectUnitOfMeasure(i).then(function(){r()},r):r()}t.user.favorites.showUpdate=!1;n.loadingParts=!1;var s=f.where(function(n){return!i.contains(function(t){return t.PartNumber.toUpperCase()===n})}),o=[];n.config.clear=function(){t.user.favorites.clear();n.config.parts=[]};n.config.parts=u.favorites.parts=[];i.each(function(n,t){var i=u.favorites.get(n);n=new e.Part(n);n.index=t;i&&(n.ext.quantity=i.Quantity);u.favorites.parts.push(n)});u.favorites.parts=u.favorites.parts.sortBy("PartNumber");o=u.favorites.parts.where(function(n){var t=u.favorites.get(n);return n.ext.selectedUOM.UnitOfMeasure!==t.UnitOfMeasure});r()},function(t){n.loadingParts=!1;r.error(t.headers("Errors"))})})}))};n.initialize();n.$on("user.active",n.initialize)}]);app.controller("PartDescriptionController",["$scope","UserService","CatalogService","DialogService","LocalizationService","$timeout","Factory","ProductFactory","CartService",function(n,t,i,r,u,f,e,o,s){function h(n){r.error(n.message);t.goHome()}n.UserService=t;n.CartService=s;n.CatalogService=i;n.$translate=u.$translate;t.setTitle("Product","product");n.area={description:{visible:!0,id:"#description",css:"fa-minus-circle"},interchange:{visible:!1,id:"#interchange",css:"fa-plus-circle"},alternates:{visible:!1,id:"#alternates",css:"fa-plus-circle"},fitments:{visible:!1,id:"#fitments",css:"fa-plus-circle"},certifications:{visible:!1,id:"#certifications",css:"fa-plus-circle"},insurance:{visible:!1,id:"#insurance",css:"fa-plus-circle"},cooling:{visible:!1,id:"#cooling",css:"fa-plus-circle"},wheel:{visible:!1,id:"#wheel",css:"fa-plus-circle"},msds:{visible:!1,id:"#msds",css:"fa-plus-circle"},sourcevehicle:{visible:!1,id:"#sourcevehicle",css:"fa-plus-circle"},prodhistory:{visible:!1,id:"#prodhistory",css:"fa-plus-circle"}};n.toggleArea=function(t){var r=n.area[t],u,i;for(u in n.area)i=n.area[u],i!==r?(i.visible=!1,i.css="fa-plus-circle",$(i.id).stop().slideUp("fast")):r.visible?(r.visible=!1,r.css="fa-plus-circle",$(i.id).stop().slideUp("fast")):(r.visible=!0,r.css="fa-minus-circle",$(i.id).stop().slideDown("fast"))};n.initialize=function(){var u,r,e,s,c;(n.isLoading=!0,t.user)&&t.user.customers&&(u=n.parse,r=u.getToken("part")?1:2,n.isSalvage=r==2,e=r===1?u.getToken("part"):u.getToken("guid"),s=t.user.customers[r],s||(s={CompanyCode:e.value[0]=="~"?"004":"001"}),c={objectSizeType:1,NationalSearch:!0,doPricingAndAvailability:!0,partnumbers:r==2?null:[e.value],ids:r==2?[e.value]:null,linesOfBusinessIds:[r]},i.search(c).then(function(i){var r,u;n.isLoading=!1;i=((i.data||i).Parts||[{}])[0];r=new o.Part(i);n.part=r;n.loadingParts=!1;n.title=r.PartName;n.path=r.getPath();u={search_keyword:window.location.pathname.split("?")[0].toClean(),search_refinement_type:"",search_refinement_value:""};window.analytics.searchEvent("Product",u,[r]);t.user&&t.user.hasPermission("ProductHistory")&&n.$watch("part.ext.productHistoryDate",function(){var i=n.part;if(!i.ext.productHistoryDateFristTime){i.ext.productHistoryDateFristTime=1;return}i.getPartHistory(i.ext.productHistoryDate,t.user.ZipCode||"37064")});r.ext.images.length&&r.ext.images[0].largeimage&&$("<img>").load(function(){this.width>1&&this.height>1&&f(function(){n.part.ext.hasImage=!0;f(InitLKQSyncedCarosel,0)},10)}).attr("src",r.ext.images[0].largeimage)},h))};n.initialize();n.$on("customer.loaded",n.initialize)}]);app.directive("ngAisle",function(){return{restrict:"EA",replace:!0,templateUrl:app.baseUrl+"catalog/partials/aisle.html"}});app.directive("ngPart",function(){return{scope:{part:"=ngPart",mode:"@",index:"="},restrict:"EA",replace:!0,templateUrl:app.baseUrl+"catalog/partials/part.html",controller:"GenericController"}});app.directive("partDescription",function(){return{scope:{parse:"=partDescription"},restrict:"EA",replace:!0,templateUrl:app.baseUrl+"catalog/partials/part-description.html",controller:"PartDescriptionController"}});app.directive("partDescriptionSidePanel",function(){return{restrict:"EA",replace:!0,templateUrl:app.baseUrl+"catalog/partials/part-description-side-panel.html"}});app.directive("ngPartList",[function(){"use strict";return{scope:{config:"=ngPartList",mode:"@"},restrict:"EA",templateUrl:app.baseUrl+"catalog/partials/part-list.html",link:function(n,t){n.init=function(){app.data.bindings.virtualAisleScroll&&($(window).unbind("scroll",app.data.bindings.virtualAisleScroll),$(window).unbind("resize",app.data.bindings.virtualAisleScroll));app.data.bindings.virtualAisleScroll=n.onScroll;$(window).bind("scroll",app.data.bindings.virtualAisleScroll);$(window).bind("resize",app.data.bindings.virtualAisleScroll);n.$watch(n.config,n.updateDisplayList,function(n,t){console.log(t.viewMode())});n.updateDisplayList()};n.firstItem=0;n.lastItem=0;n.visibleParts=[];n.updateDisplayList=function(){function u(n){return tryParseInt((n||"").replace(/px/g,""))}if(t.is(":visible")){var c=$(window).scrollTop(),v=t.innerWidth(),r=t.find(".part").first(),i=r.outerHeight()||350,l=r.outerWidth()||200;i+=u(r.css("margin-top"))+u(r.css("margin-bottom"));l+=u(r.css("margin-left"))+u(r.css("margin-right"));var y=$(window).innerHeight(),a=t.offset().top,f=Math.floor(v/l)||1,p=Math.max(n.config.parts.length/f),o=Math.max(c-a-i,0),w=c+y-a+i,s=Math.max(Math.floor(o/i),0),b=Math.min(Math.floor(w/i),p),k=b-s,d=Math.ceil(n.config.parts.length/f),e=s*f,g=f*k,h=e+g;return(o=Math.floor(i*s),n.aisleHeight={height:d*i},n.aisleOffset={position:"relative",top:o},n.firstItem===e&&n.lastItem===h)?!1:(n.firstItem=e,n.lastItem=h,n.visibleParts=n.config.parts.slice(e,h),!0)}};setInterval(function(){n.updateDisplayList()&&n.$apply()},100);n.onScroll=function(){n.updateDisplayList()&&n.$apply()};n.init()}}}]);app.directive("printList",function(){return{scope:{parts:"=printList"},restrict:"EA",replace:!0,templateUrl:app.baseUrl+"catalog/partials/print-list.html",controller:["$scope","LocalizationService",function(n,t){n.$translate=t.$translate;n.test=function(){}}]}});app.directive("productHistory",function(){return{restrict:"EA",controller:["UserService",function(n){n.setTitle("Product History","product history")}]}});app.service("CatalogService",["CatalogAPIService","UserService","$rootScope","$q","$timeout","Factory","ProductFactory","$http","DialogService","CatalogSingletonService",function(n,t,i,r,u,f,e,o,s){function a(){var f=this;f.getStyle=function(){return h.qoe.style||"gallery"};f.setStyle=function(n){h.qoe.style=n};f.parts=[];f.fails=[];f.support=window.File&&window.FileReader&&window.FileList&&window.Blob;f.upload=function(n){var t=n.target.files[0];u(function(){if(t.name.toLowerCase().substr(-4)!==".csv"){s.error("You may only use .csv files.");return}var n=new FileReader;n.onload=function(n){var r=n.target.result,t=r.parseCSV(),i;if(t.each(function(n,i){t[i]=n.slice(0,3);t[i]=n.join("%").replace(/[^0-9a-zA-Z%/-]/g,"")}),t.length&&(t[0]||"").match(/(PartNumber)/gi)&&t.removeAt(0),i=t.join(","),!i){s.error("Invalid File.");return}f.search(i)};n.readAsText(t)})};f.PartAdded=function(n,t){var i=f.parts.firstOrDefault(function(n){return n.PartNumber.toUpperCase()===t.PartNumber.toUpperCase()});i&&f.parts.remove(i)};f.addMessages=[];f.PartsAdded=function(n,t){t.each(function(n){var t=f.parts.firstOrDefault(function(t){return t.id===n.id});t&&(t.ext.quantity-=n.quantity,t.ext.quantity<1?f.parts.remove(t):t.QtyChange(),n.msg&&f.addMessages.push("<b>"+t.PartNumber+": <\/b>"+n.msg))})};f.PartsRemoved=function(n,t){t.each(function(n){var t=f.parts.firstOrDefault(function(t){return t.id===n.id});t&&f.parts.remove(t);n.msg&&f.addMessages.push("<b>"+t.PartNumber+": <\/b>"+n.msg)})};i.$on("cart.partadded",f.PartAdded);i.$on("cart.partsAdded",f.PartsAdded);i.$on("cart.partsUpdated",f.PartsAdded);i.$on("cart.partsAdded",f.PartsRemoved);f.isValid=function(){return!f.input};f.search=function(i){var c=r.defer(),o=i||f.input||"";if(i||(f.input=""),o=o.replace(/(, |; |: |;|:| )/g,",").replace(/[^a-zA-Z0-9\-\%,]/g,""),o=o.split(",").removeEmpties(),u(function(){$(".qoeInput").focus()}),o.length)return window.location.pathname.toLowerCase()!=="/quick-order-entry/"&&t.go("/quick-order-entry/"),f.loadingParts=!0,h.initialize().then(function(){function l(n,t){var i=n+(t?" - "+t:"");f.fails.remove(i);f.fails.push(i)}function a(n){function t(){var r=n.shift(),i,u;if(!r){f.fails=f.fails.sort();f.loadingParts=!1;return}i=f.parts.firstOrDefault(function(n){return n.PartNumber.toUpperCase()===r.partNumber});i&&(u=i.getUOM(r.uom),u&&i.SetSelectedUOM(u).then(function(){if(!i.ext.selectedUOM.available){f.parts.remove(i);var n=i.ext.selectedUOM.UnitOfMeasure;n==="EA"&&(n="");l(i.PartNumber.toUpperCase(),n)}t()},t))}t()}var u=t.user,y=o.select(function(n){var t,i;return n=n.split("%"),t={partNumber:n[0].toUpperCase()},t.qty=tryParseInt(n[1])||tryParseInt(n[2])||1,i=n[1],isNaN(i*1)||(i=n[2]),t.uom=(i||"").toUpperCase(),t.partNumber?t:undefined}),r=[],i=[],v;if(y.each(function(n){var t=f.parts.firstOrDefault(function(t){return n.partNumber.toUpperCase()===t.PartNumber}),u,e;t?(t.AddQty(n.qty),u=t.getUOM(n.uom),u&&t.ext.selectedUOM!==u&&(e=i.firstOrDefault(function(t){return t.partNumber===n.partNumber}),e&&i.remove(e),i.push(n))):(r.push(n),n.uom!==""&&n.uom!=="EA"&&i.push(n))}),o=r.select(function(n){return n.partNumber}),!o.length){a(i);return}v={PartNumbers:o,DoPricingAndAvailability:!0,IsPartSearch:!0,IsFacetOnly:!1,CompanyCodes:u.activeCustomers.companyCodes,LinesOfBusinessIds:u.activeCustomers.lobKeys,Skip:0,Take:o.length,IsNationalSearch:!1};n.getParts(v).$promise.then(function(n){if(n=h.handleServiceResult(n,c),n){var t=[],u=o.where(function(t){return!n.Parts.contains(function(n){return n.PartNumber.toUpperCase()===t})});u.each(function(n){n=n.toUpperCase();var t=r.firstOrDefault(function(t){return t.partNumber===n});t&&l(t.partNumber,t.uom)});n.Parts.each(function(n,i){var o,f;n=new e.Part(n);n.index=i;n.ext.selectedUOM.available?(o=r.firstOrDefault(function(t){return t.partNumber===n.PartNumber.toUpperCase()}),n.AddQty(o?o.qty-1:0),t.push(n)):(f=n.ext.selectedUOM.UnitOfMeasure,f=f==="EA"?"":f,u.push(n.PartNumber,f))});t=t.sortBy("PartNumber");f.parts=t.concat(f.parts);f.fails=f.fails.sort();a(i)}},function(n){f.loadingParts=!1;s.error(n.headers("Errors"))})}),c.promise};f.addAll=function(){f.currentParts=h.CartService.parts;var n=f.parts.where(function(n){return n.ext.selectedUOM.available});n.length&&(f.msgs=[],s.setLoading(!0),h.CartService.addPartsToCart(n).then(function(){s.setLoading()},function(){s.setLoading()}))}}function c(){var r=this;r.picker=new f.ProductSearch({pbe:!1,options:!0});r.path=[];r.parts=[];r.amSalvageItems=[{name:"Both",value:""},{name:"Aftermarket",value:"aftermarket"},{name:"Recycled",value:"salvage"}];r.reset=function(){r.date=Date.today().addDays(-1).toString("MM/dd/yyyy");r.postalCode=c.postalCode||"";r.picker.reset();r.partNumber="";r.amSalvage=r.amSalvageItems[0];$(window).scrollTop(0)};r.reset();r.isValidPicker=function(){var t=!0,n=r.picker;return(t&=!!n.year,t&=!!n.make,t&=!!n.model,n.optionsClass)?!1:(n.options.length&&(t&=!!n.option),t)};r.isValid=function(){var n=!0,t,i;return n&=!!r.postalCode,t=isDate(r.date),r.dateClass=t?"":"validationError",n&=t,i=!!r.partNumber,i||(n&=r.isValidPicker()),n};r.search=function(){function e(n){var t;if(r.parts=n,r.isLoading=!1,r.parts.each(function(n){n.print=!0}),t=[],t.push(r.postalCode),t.push(r.date),r.isValidPicker()){var i=r.picker.getSelectedCategory(),u=i.FullName.split("|").slice(1,99);u.each(function(n){t.push(n)});t.push(r.picker.year);t.push(r.picker.make);t.push(r.picker.model)}else t.push(r.partNumber);r.path=t}function o(n){s.error(n.headers("Errors"));r.isLoading=!1}var u;if(r.isValid()){var i=r.picker,f=new Date(r.date),t={date:f.toISOString(),zipCode:r.postalCode,categoryKey:0,partNumber:""};if(r.isValidPicker()){u=i.getSelectedCategory();t.category=u.Search||"";t.year=i.year;t.make=i.make;t.model=i.model;t.IncludeAftermarket=!0;t.IncludeSalvage=!0;switch(r.amSalvage.value){case"aftermarket":t.IncludeSalvage=!1;break;case"salvage":t.IncludeAftermarket=!1}i.option&&(t.option=i.option.id)}else t.partNumber=r.partNumber;t.partNumber&&(t.IncludeAftermarket=!0,t.IncludeSalvage=!0);$(window).scrollTop(0);r.isLoading=!0;n.getPartHistory(t).$promise.then(e,o)}};r.isAllChecked=function(){return r.parts.length?!r.parts.firstOrDefault(function(n){return!n.print}):!1};r.checkAll=function(){var n=r.isAllChecked();r.parts.each(function(t){t.print=!n;t.css=t.print?"":"no-print"})};r.check=function(n){n.css=n.print?"":"no-print"};i.$on("user.active",function(){c.postalCode="";t.user&&t.user.kip&&(c.postalCode=t.user.kip.postalCode,r.postalCode=t.user.kip.postalCode)})}var h=this,l;return f.CatalogService=h,h.partSearch=new f.ProductSearch({swappable:!0}),h.takes=app.data.takes,h.take=app.data.defaultTake,l=getCookie(app.data.catalogStyleCookieName),h.style=l||app.data.defaultCatalogStyle,h.handleServiceResult=function(n,t){if(n=n.data||n,!n.Success&&n.Messages){var i={message:n.Messages,headers:function(){return n.Messages}};t.reject(i);return}return n.Data||n},h.searchAborter=null,h.search=function(n){var t=r.defer(),i;return h.searchAborter&&h.searchAborter.resolve(),h.searchAborter=r.defer(),i=app.api+"shop/product",n.IsPartSearch=!0,n.IsFacetOnly=!1,n.DoPricingAndAvailability=!0,n.Facets&&(i=app.api+"shop/product/facet",n.IsPartSearch=!1,n.IsFacetOnly=!0,n.DoPricingAndAvailability=!0),h.initialize().then(function(){o.post(i,n,{timeout:h.searchAborter}).then(function(n){if(n=h.handleServiceResult(n,t),n){var i=[];n.Parts.each(function(n,t){e.transformWarranties(n);n=new e.Part(n);n.index=t;i.push(n)});n.Parts=i;t.resolve(n)}},t.reject)}),t.promise},h.search.data={base:function(){this.expires=Date.Now().addDays(-1)},get:function(n){if(t.user){var i=h.search.data.getSearchData();return i[n]||new h.search.data.base}},put:function(n,i){if(!t.user)return new h.search.data.base;var r=h.search.data.getSearchData();i=i||{};i.expires=Date.Now().addMinutes(5);r[n]=i},getSearchData:function(){var n=t.user;if(!n)return{};var i=((n.activeCustomers||{}).ids||[]).join(","),r=t.user.partSearchData=t.user.partSearchData||{};return r[i]=r[i]||{}}},setInterval(function(){var n,i,r;if(t.user){n=h.search.data.getSearchData();i=[];for(r in n)n.expires&&i.push(r);i.each(function(t){var i=n[t];expires<Date.Now()&&delete n[t]})}},100),h.getPart=function(t,i){return n.getPart({partNumber:t,companyCode:i}).$promise},h.getPartShipping=n.getPartShipping,h.getParts=n.getParts,h.getFavorites=n.getFavorites,h.getPartHistory=function(t,i,r){var u={date:i,lineOfBusinessKey:t.LineOfBusiness.LineOfBusinessKey,partNumber:t.PartNumber,zipCode:r||"37064"};return n.getPartHistory(u).$promise},h.qoe=new a,h.productHistory=new c,h.keywordSearch=function(n){var i=h.keywordSearch.term||"",r=i.length<3?"Your search must contain at least 3 characters":"";return(i=i.toWebsiteURL(),!r&&i.length<3&&(r="Invalid search"),r)?(n?s.warning(r):(h.keywordSearch.error="Your search must contain at least 3 characters",u(function(){h.keywordSearch.error=""},3e3)),1):(t.go("/"+i+"/"),0)},h.keywordSearch.parse=function(n){function u(n){i.resolve(n)}var i=r.defer(),e={exact:!1,keyword:n},t,f;return(h.keywordSearch.aborter&&h.keywordSearch.aborter.resolve(),h.keywordSearch.searches=h.keywordSearch.searches||{},t=n.toLowerCase().toClean().trim(),h.keywordSearch.searches[t])?(u(h.keywordSearch.searches[t]),i.promise):(h.keywordSearch.aborter=r.defer(),f="?"+serialize(e),o.get(app.api+"auxiliarydata/ParseKeyword"+f,{timeout:h.keywordSearch.aborter.promise}).then(function(n){h.keywordSearch.searches[t]=n.data||n;h.keywordSearch.aborter=undefined;u(h.keywordSearch.searches[t])},i.reject),i.promise)},h.keywordSearch.keyup=function(t){var r,e,i,f;if(h.keywordSearch.autocomplete.length&&(h.keywordSearch.saved=h.keywordSearch.saved||h.keywordSearch.keyword,r=!1,e=h.keywordSearch.autocomplete.length-1,t.which==40&&(r=!0,i=h.keywordSearch.autocomplete.firstOrDefault(function(n){return n.active}),i?(i.active=!1,f=h.keywordSearch.autocomplete.indexOf(i),i=h.keywordSearch.autocomplete[f+1]):i=h.keywordSearch.autocomplete[0]),t.which==38&&(r=!0,i=h.keywordSearch.autocomplete.firstOrDefault(function(n){return n.active}),i?(i.active=!1,f=h.keywordSearch.autocomplete.indexOf(i),i=h.keywordSearch.autocomplete[f-1]):i=h.keywordSearch.autocomplete[e]),r))return i?(i.active=!0,h.keywordSearch.keyword=i.val):h.keywordSearch.keyword=h.keywordSearch.saved,t.preventDefault(),t.stopPropagation(),!1;h.timeout&&u.cancel(h.timeout);h.timeout=u(function(){var t=h.keywordSearch.term.toWebsiteURL(),i;t.length>2?(i={exact:!1,keyword:t},n.parseKeyword(i).$promise.then(function(n){h.keywordSearch.autocomplete=n},function(){h.keywordSearch.autocomplete=[]})):h.keywordSearch.autocomplete=[]},300)},h.keywordSearch.autocomplete=[],h.keywordSearch.mouseover=function(n){h.keywordSearch.autocomplete.each(function(t){t.active=t==n})},h.keywordSearch.complete=function(n){var i=[];n.Year&&i.push(n.Year.toWebsiteURL());n.Make&&i.push(n.Make.toWebsiteURL());n.Model&&i.push(n.Model.toWebsiteURL());n.CategoryName&&i.push(n.CategoryName.toWebsiteURL());n.Keywords&&i.push(n.Keywords.toWebsiteURL());i=i.join("/");i&&t.go("/"+i+"/")},$(window).click(function(){h.keywordSearch.autocomplete.length}),h.view=function(n){h.view.showCustomerPrice=n;h.view.title=n?"Retail View":"List View";app.data.showCustomerPrice=n},h.view(!0),h.categoryLookup={},h.setupCategory=function(n,t,i){var r=n.FullName.split("|"),u,f,e;if(r.shift(),r=r.join("|"),n.uri=r.toWebsiteURL(),n.path=r,h.categoryLookup[n.CategoryName.toLowerCase().toWebsiteURL()]=n,h.categoryLookup[n.CategoryKey]=n,h.categoryLookup[n.uri.toLowerCase()]=n,h.categoryLookup[n.FullName.toLowerCase()]=n,h.categoryLookup[n.path.toLowerCase()]=n,h.categoryLookup[n.CategoryName.toLowerCase()]=n,n.parent=t,n.root=i,n.SubCategories=n.SubCategories||[],n.CategoryMemberships=n.CategoryMemberships||[],!n.parent){for(n.columns=[],u=99,f=[],e=0;e<n.SubCategories.length;e++)u++,u>11&&(f=[],n.columns.push(f),u=0),f.push(n.SubCategories[e]);n.columns.each(function(t){t.css={width:100/n.columns.length+"%"}});n.css={width:259*n.columns.length}}n.SubCategories.each(function(t){h.setupCategory(t,n,i)})},h.setupManufacturers=function(n){var t={};n.each(function(n){n.uri=n.Name.toWebsiteURL().toLowerCase();t[n.Name.toLowerCase()]=n;t[n.uri]=n});app.data.manufacturers=t},h.getSubCategories=function(n){var t=r.defer(),i;return n?(i=app.data.GetCategoryByName(n),i)?(i.columns||i.buildColumns(),t.resolve(i.SubCategories),t.promise):(h.getCategories().then(function(){var i=app.data.GetCategoryByName(n);if(i)return i.buildColumns(),t.resolve(i.SubCategories);t.reject("Unable to find category")}),t.promise):(t.resolve([]),t.promise)},h.getCategories=function(){var t=r.defer();return h.categoriesLoaded?(t.resolve(h.categories),t.promise):(h.categoryDefers=h.categoryDefers||[],h.categoryDefers.push(t),h.categoriesLoading)?t.promise:(h.categoriesLoading=!0,n.getLegacyCategories().$promise.then(function(t){for(h.categories=t.select(function(n){var i=n.split("~")[0],t=n.split("~")[2]||"",r=n.split("~")[1]||"";return new f.Category(i,r,"",t?t.split(","):null)}).where(function(n){return!n.parent}),h.categories.sortBy("CategoryName"),h.categoriesLoaded=!0;h.categoryDefers.length;)h.categoryDefers.pop().resolve(h.categories);n.buildLegacyCategories()},t.reject),t.promise)},h.loadCategory=function(n){n.loaded||h.getSubCategories(n.CategoryKey)},h.initialized=!1,h.loading=!1,h.initializeLoading=!1,h.initializeDefers=[],h.initialize=function(){var t=r.defer();return h.initialized?(t.resolve(),t.promise):(h.initializeDefers.push(t),h.initializeLoading=!0,h.loading)?t.promise:(h.loading=!0,h.getCategories().then(function(r){h.initialized=!0;h.initializeLoading=!1;h.categories=r;n.getManufacturers().$promise.then(function(n){for(h.manufacturers=n.where(function(n){return n}),i.$broadcast("catalog.categories",h.categories),h.loading=!1;h.initializeDefers.length;)h.initializeDefers.shift().resolve(data)},t.reject)},t.reject),t.promise)},u(h.initialize,500),h}]);app.service("CatalogAPIService",["$resource",function(n){return n("",{},{getCategories:{method:"GET",url:app.version.category+""},getSubCategories:{method:"GET",url:app.version.category+":categoryId/category"},getLegacyCategories:{method:"GET",url:"scripts/categories.json",isArray:!0},buildLegacyCategories:{method:"GET",url:"api/category"},getYmmValues:{method:"GET",url:app.api+"auxiliarydata/GetVehiceYMM",params:{year:"@year",make:"@make",type:"@type"},isArray:!0},getManufacturers:{method:"GET",url:"/api/manufacturer",isArray:!0},getParts:{method:"POST",url:app.api+"shop/product"},getFavorites:{method:"GET",url:app.api+"cart/getFavorites",isArray:!0},getPart:{method:"GET",url:app.api+"part/GetByPartNumber",params:{partNumber:"@partNumber",companyCode:"@companyCode"}},getPartShipping:{method:"POST",url:app.api+"shipping/quote",isArray:!0},getPartHistory:{method:"POST",url:app.api+"aisle/getparthistory",isArray:!0},parseKeyword:{method:"GET",url:app.api+"auxiliarydata/ParseKeyword",isArray:!0}})}]);app.factory("CatalogSingletonService",function(){var n={};return n.catalog=null,n.catalogSearch=null,n.catalogs=[{name:"Aftermarket",lob:1},{name:"Salvage",lob:2},{name:"Paint/Body",lob:3}],n.setCatalog=function(t){n.catalog=t;setCookie("selectedCatalog",t.name);setCookie("showPBE",t.name==="Paint/Body"?"1":"")},n.getCatalog=function(){if(!n.catalog){var t=n.catalogs[1],i=getCookie("selectedCatalog");n.catalog=n.catalogs.firstOrDefault(function(n){return n.name==i})||t}return n.catalog},n});app.controller("CheckoutController",["$scope","CheckoutService","UserService","CartService","DialogService","$routeParams","$window",function(n,t,i,r,u,f,e){function s(n){n.headers&&u.error(n.headers("Errors"));i.goHome()}var o=n.service=t;n.page=f.page||"";i.setTitle("Checkout","checkout");n.back=function(){e.history.back()};n.placeOrder=function(){u.setLoading(!0,"Placing Order...");o.placeOrder().then(function(){u.setLoading();i.go("/checkout-complete/")},function(n){if(u.setLoading(),t.errors&&t.length){var i=t.createErrorMessage();u.alert(i);delete t.errors}else u.error(n.headers("Errors"))})};n.$on("cart.partremoved",function(){i.go("/cart/")});n.initialize=function(){if(!i.user){i.goHome();return}if(n.page=n.page=="summary"?"summary":"information",i.setTitle("Checkout "+(n.page=="summary"?"Summary":"Information"),"checkout"),n.page=="summary"&&!o.initialized){i.go("/cart/");return}o.initialize().then(function(){n.tab=o.tabs.firstOrDefault(function(t){return t.name==n.page})||o.tabs[0];o.summary.initialize();n.tab||(u.error("Invalid path"),i.goHome());n.tab==o.tabs[0];n.$watch("service.aftermarket.address",function(){o.aftermarket&&o.aftermarket.shipping.changed()});n.$watch("service.salvage.address",function(){o.salvage&&o.salvage.shipping.changed()})},s)};n.initialize();n.$on("user.active",i.goHome);n.$on("customer.loaded",i.goHome);n.$on("cart.part.removed",function(){if(!r.parts.length)return i.goHome();i.go("/cart/")})}]);app.directive("addressPicker",function(){return{restrict:"EA",templateUrl:app.baseUrl+"checkout/partials/address-picker.html"}});app.controller("CompleteController",["$scope","CheckoutService","UserService","LocalizationService","DialogService","$timeout",function(n,t,i,r,u,f){t.result||i.goHome();n.UserService=i;n.$translate=r.$translate;i.setTitle("Order Confirmation","checkout");n.initialize=function(){function y(t){n.order.Carts.each(function(n){n.Parts.each(function(n){n.PartNumber==t.PartNumber&&(t.DisplayDescription=n.DisplayDescription,t.CustomerPrice=n.CustomerPrice*1,t.Warranty=n.Warranty,t.Warranty&&(t.Warranty.$cost=t.Warranty.Cost?t.Warranty.Cost.$toCurrency():"Free"),t.Quantity=t.PartQuantity,t.CorePrice=n.CorePrice)})})}function p(n,t){var i=e.firstOrDefault(function(t){return t.PartNumber==n.PartNumber});i||(i={PartNumber:n.PartNumber,QtyOrdered:0,QtyBackOrder:0},e.push(i));i.QtyOrdered+=n.Quantity;t&&(i.QtyBackOrder+=n.Quantity)}function v(t){if(a.contains(t)){var i=angular.copy(app.data.GetLineOfBusiness(t)),r=n.order.Carts.firstOrDefault(function(n){return n.LineOfBusinessKey===t});i&&r&&(i.address=r.DeliveryAddress,i.terms=r.Terms,n.lobs.push(i))}}function h(t){var i=0;return n.order.Carts.each(function(n){n.Parts.each(function(n){var r=n.WarrantyPrice||0;switch(t){case"CorePrice":i+=n.CorePrice*n.Quantity;break;case"WarrantyPrice":i+=r*n.Quantity;break;case"PartTotal":i+=n.CustomerPrice*n.Quantity;break;case"Total":i+=(n.CorePrice+r+n.CustomerPrice)*n.Quantity}});(t==="Total"||t==="ShippingPrice")&&(i+=n.ShippingMethodCost)}),i}var e,o,c,s,l,a;if(!i.user){i.goHome();return}if(n.result=t.result,n.order=t.order,n.insurance=t.lastInsurance,n.linesOfBusiness=t.lastLinesOfBusiness,window.analytics.orderEvent("Order",n.result,n.order,n.insurance,n.linesOfBusiness),t.insurance=null,t.initialized=!1,t.errors&&t.length&&(o=t.createErrorMessage(),u.alert(o),delete t.errors),e=[],n.result.each(function(t){var i,r;t.orderNumber=t.OrderNumbers.join(", ");t.orderNumberText=localizationService.$translate(t.OrderNumbers.length>1?"Order Numbers":"OrderNumber");t.partTotal=0;t.IsBackOrder=t.OrderType=="BackOrder";t.Parts.each(function(n){y(n);t.partTotal+=n.CustomerPrice*n.PartQuantity;p(n,t.IsBackOrder)});i=n.order.Carts.where(function(n){return n.Location.WarehouseNumber==t.WarehouseNumber&&n.CompanyCode==t.CompanyCode});t.DaysInTransit="1";t.$ShippingPrice=t.ShippingMethodCost?"$"+t.ShippingMethodCost.toCurrency():"Free";t.ShippingDescription=t.ShippingMethodDescription;i.length&&(r=i[0].quote,t.eta=r.ETADate,t.Location=i[0].Location);t.IsBackOrder&&(t.$ShippingPrice="Free",t.ShippingDescription="Back Order")}),e=e.where(function(n){return n.QtyBackOrder}),e.length){o="<p>Sorry, but we are not able to fulfill your entire order at this time.  The following parts are not available based on the quantity that you submitted.  Out of stock items will be placed on back order and be shipped when they become available.  A Customer Service Rep will contact you about your order.<\/p>";function r(n,t,i){var r=$("<"+n+">"+t+"<\/"+n+">");return i.append(r),r}c=$("<table style='width: 100%'><\/table>");s=r("tr","",c);r("th","Part Number",s);r("th","Qty Ordered",s);r("th","Qty Available",s);r("th","Qty on Back Order",s);e.each(function(n){var t=r("tr","",c);r("td",n.PartNumber,t);r("td",n.QtyOrdered,t);r("td",n.QtyOrdered-n.QtyBackOrder,t);r("td",n.QtyBackOrder,t)});l=$("<div><\/div>");l.append(c);o+=l.html();f(function(){u.alert(o)},500)}n.lobs=[];a=n.order.Carts.select(function(n){return n.LineOfBusinessKey}).distinct();v(1);v(2);n.result.each(function(t){var i=n.order.Carts.firstOrDefault(function(n){return n.ShippingWarehouse===t.WarehouseNumber});i&&(i.OrderNumbers=t.OrderNumbers,i.isSuccessful=t.isSuccessful)});n.partTotal=h("PartTotal");n.coreTotal=h("CorePrice");n.warrantyTotal=h("WarrantyPrice");n.shippingTotal=h("ShippingPrice");n.total=h("Total")};n.initialize();n.$on("user.active",i.goHome)}]);app.directive("checkoutAddress",function(){return{scope:{lob:"=checkoutAddress"},restrict:"A",templateUrl:app.baseUrl+"checkout/partials/checkout-address.html"}});app.directive("checkoutInformation",function(){return{restrict:"A",templateUrl:app.baseUrl+"checkout/partials/checkout-information.html"}});app.directive("checkoutPaymentMethod",function(){return{scope:{lob:"=checkoutPaymentMethod"},restrict:"A",templateUrl:app.baseUrl+"checkout/partials/checkout-payment-method.html"}});app.directive("checkoutShipping",function(){return{scope:{lob:"=checkoutShipping"},restrict:"A",templateUrl:app.baseUrl+"checkout/partials/checkout-shipping.html"}});app.directive("checkoutSummary",function(){return{restrict:"A",templateUrl:app.baseUrl+"checkout/partials/checkout-summary.html"}});app.service("CheckoutService",["CheckoutAPIService","UserService","CartService","DialogService","$q","$http","CatalogService","$timeout","LocalizationService","$rootScope","AddressFactory","ProductFactory",function(n,t,i,r,u,f,e,o,s,h,c,l){function p(n,t){var i=this;i.name=n;i.obj=t}function w(n){var i=this;i.Carts=n;var r=a.info,u=(a.aftermarket||{}).insurance||{},f=u.InsuranceCompany||{},e=t.user;i.ContactFirstName=r.FirstName;i.ContactLastName=r.LastName;i.DeliveryFirstName=r.FirstName;i.DeliveryLastName=r.LastName;i.ContactEmail=r.Email;i.ContactPhoneNumber=e.PhoneNumber;i.DeliveryPhoneNumber=e.PhoneNumber;i.InsuranceCompanyCode=f.InsuranceCompanyCode||"";i.InsuranceClaimNumber=u.ClaimNumber||"";i.InsuranceCompanyName=f.InsuranceCompanyName||"";i.InsuranceVIN=u.VIN||"";i.Total=a.summary.total;i.SendOrderConfirmation=r.OrderConfirmation.value;i.ClearShoppingCart=!1;i.UseCompanyName=!1;i.CompanyName="";i.PaymentMethod="Invoice";i.ValidateTax=!0;i.SpecialInstructions=r.SpecialInstructions||"";i.OrderDate=new Date}function v(n){var r=this,h=t.user,u=n.customer||{},e=n.address||{AfterMarketServiceLocation:{},LineOfBusiness:{}},o=n.parts||[],f=n.shipping.option||{},s=n.payment;n.parts||(o=i.parts.where(function(n){return n.CompanyCode===u.CompanyCode}));v.CartId=a.cartId++;r.CustomerNumber=u.CustomerNumber;r.CompanyCode=u.CompanyCode;r.LineOfBusinessKey=u.LineOfBusiness.LineOfBusinessKey;r.DeliveryAddress=e.toCheckoutModel();r.BillingAddress=e.toCheckoutModel();r.HasResidential="";r.HasLiftGate="";r.Terms=u.ARTermCodeDescription;r.ShippingWarehouse=u.AfterMarketServiceLocation.WarehouseNumber;r.ShipVia=f.Code;r.HasResidential=f.HasResidential;r.HasLiftGate=!!f.LiftGateFee;r.ShippingMethodCost=f.ShippingFee+(f.LiftGateFee||0);r.ShippingMethodDescription=f.Description;r.PoNumber=s.PoNumber;r.RoNumber=s.RoNumber;r.PhoneNumber=e.PhoneNumber||h.PhoneNumber;r.Terms=u.ARTermDescription;r.Location=u.AfterMarketServiceLocation;r.quote=f;r.Parts=o.select(function(n){return new b(n,u)})}function b(n,t){var r=this,i=n.ext.SelectedWarranty||{};i.Code=="FREE"&&(i={});angular.extend(r,{PartNumber:n.PartNumber,Quantity:n.ext.quantity,UnitOfMeasure:n.ext.selectedUOM.UnitOfMeasure||"EA",SelectedWarranty:i.Code||"",CustomerPrice:n.ext.selectedUOM.CustomerPrice,DisplayDescription:n.PartName,ListPrice:n.ext.selectedUOM.ListPrice,CorePrice:n.CorePrice,WarrantyPrice:i.Cost||0,CompanyCode:n.CompanyCode,CustomerNumber:t.CustomerNumber,Dimensions:n.Dimensions,Weight:n.Weight,LineOfBusiness:n.LineOfBusiness,Icon:n.LineOfBusiness.icon,IconText:n.LineOfBusiness.iconText,Hazardous:n.Hazardous,Oversized:n.Oversized,ShippingWarehouseNumber:"",QuantityRequested:n.ext.quantity,Warranty:n.ext.SelectedWarranty,WarrantyDescription:i.Description,IsPBE:n.IsPBE,FirstEDA:n.ext.selectedUOM.FirstEDA,EDA:n.ext.selectedUOM.FirstEDA})}function nt(){var n=this,i;n.isValid=function(){var t=!0;return t&=!!n.FirstName,t&=!!n.LastName,t&isValidEmail(n.Email)};i=t.user||{};n.FirstName=i.FirstName;n.LastName=i.LastName;n.Email=i.Email;n.OrderConfirmations=[{name:"Yes, Email",value:!0},{name:"No",value:!1}];n.OrderConfirmation=n.OrderConfirmations[0]}function tt(n){var i=this,r,u,f;i.lob=n;i.InsuranceCompany=t.user.aqrp.current;i.InsuranceCompany&&(i.isAqrp=!0);i.isValid=function(){if(!i.isAqrp)return!0;var n=!0;return n&=!!i.InsuranceCompany,n&!!i.ClaimNumber};i.isAqrpChanged=function(){i.isAqrp||(t.user.aqrp.set(),i.InsuranceCompany=undefined)};i.companyChanged=function(){t.user.aqrp.current=i.InsuranceCompany;i.reset();h.$broadcast("aqrp.set","/cart/");a.aqrpSet=h.$on("aqrp.set",function(){a.aqrpSet();i.InsuranceCompany=undefined})};i.reset=function(){t.user&&t.user.aqrp&&(i.InsuranceCompany=t.user.aqrp.current,i.isAqrp=!!i.InsuranceCompany,i.InsuranceCompany||(i.ClaimNumber="",i.obj&&(i.ClaimNumber="")))};r=t.user;u=r.customers[1];u&&(f=t.application,i.companies=f.InsuranceCompanies,i.reset())}function k(n,t){n.addresses=[];t&&t.Addresses&&t.Addresses.each(function(t,i){i||(t.ShipTo="D");n.addresses.push(new c.Address(t))});n.manualAddress=new c.Address;n.manualAddress.ShipTo="M";n.addresses.push(n.manualAddress);n.address=n.addresses[0];n.addresses.isValid=function(){if(n.address!=n.manualAddress)return!0;var t=!0;return t&=isValidPhoneNumber(n.manualAddress.PhoneNumber),t&=isValidAddress(n.manualAddress),t&!!n.manualAddress.AddressName}}function d(){var n=this,t;if(n.messageShown){n.address=n.address==n.manualAddress?n.addresses[0]:n.manualAddress;n.changed();return}t={message:"By selecting this option, the only delivery method that will be available to you will be a 3rd Party option.  Do you wish to continue?",buttonText:"Yes",cancelText:"No"};r.confirm(t).then(function(){n.showOneTimeAddress=!0;n.address=n.manualAddress;n.messageShown=!0;n.changed()},function(){n.showOneTimeAddress=!1})}function it(){var n=this,u,r;angular.extend(n,app.data.GetLineOfBusiness(1));n.isValid=function(){return!1};n.title=n.iconText+" Address";u=t.user;r=u.customers[1];r&&(n.customer=r,k(n,r),n.isValid=function(){var t=!0;return t&=n.insurance.isValid(),t&=n.shipping.isValid(),t&=n.addresses.isValid(),t&n.payment.isValid()});n.parts=i.parts.where(function(n){return n.LineOfBusiness.LineOfBusinessKey==1});n.showOneTimeAddressChoice=!n.parts.firstOrDefault(function(n){return n.IsPBE});n.insurance=new tt(n);n.shipping=new y(n);n.payment=new g(n);n.changed=function(){n.shipping.changed()};n.showOneTimeAddressMessage=d}function rt(){var n=this,u,r;angular.extend(n,app.data.GetLineOfBusiness(2));n.isValid=function(){return!1};n.title=n.iconText+" Address";u=t.user;r=u.customers[2];r&&(n.customer=r,k(n,r),n.isValid=function(){var t=!0;return t&=n.shipping.isValid(),t&=n.addresses.isValid(),t&n.payment.isValid()});n.parts=i.parts.where(function(n){return n.LineOfBusiness.LineOfBusinessKey==2});n.showOneTimeAddressChoice=!0;n.shipping=new y(n);n.payment=new g(n);n.changed=function(){n.shipping.changed()};n.showOneTimeAddressMessage=d}function y(n){var r=this,u;angular.extend(r,app.data.GetLineOfBusiness(n.LineOfBusinessKey));r.$translate=s.$translate;r.lob=n;r.loading=!0;u=t.user;r.title=r.iconText+" Shipment";r.results={};r.parts=i.parts.where(function(t){return t.LineOfBusiness.LineOfBusinessKey==n.LineOfBusinessKey});r.isValid=function(){return r.option&&!r.loading&&!r.error}}function g(n){var t=this,u;t.$translate=s.$translate;t.lob=n;u=t.customer=n.customer||{};t.requiresPO=u.PurchaseOrderNumberRequired;t.isValidPO=!u.PurchaseOrderNumberRequired;t.poClass=t.isValidPO?"":"validationError";t.title=n.iconText+" Payment Method";t.paymentMethod="Invoice";t.validatePO=function(n){function f(){t.poClass="field-loading";i.validatePO(t.PoNumber,u.LineOfBusiness.LineOfBusinessKey).then(function(n){t.currentPoNumber===t.PoNumber&&(t.poClass="",t.isValidPO=n,t.lastPoNumber=t.PoNumber,t.poClass=t.isValidPO?"":"validationError")},function(n){t.poClass="";r.error(n.headers("Errors"))})}(t.timeout&&o.cancel(t.timeout),t.PoNumber!==t.lastPoNumber||t.PoNumber!==t.currentPoNumber)&&(t.isValidPO=!1,t.poClass="validationError",t.PoNumber)&&(t.currentPoNumber=t.PoNumber,n?f():t.timeout=o(f,500))};t.isValid=function(){return t.requiresPO?t.isValidPO:!0}}function ut(){function t(t){var i=0;return n.linesOfBusiness.each(function(n){n.parts.each(function(n){var r=n.ext.quantity,u=n.ext.selectedUOM.CustomerPrice,f=n.CorePrice||0,e=n.ext.SelectedWarranty?n.ext.SelectedWarranty.Cost:0;switch(t){case"CorePrice":i+=f*r;break;case"WarrantyPrice":i+=e*r;break;case"PartTotal":i+=u*r;break;case"Total":i+=(f+e+u)*r}});(t==="Total"||t==="ShippingPrice")&&n.shipping.option&&(i+=n.shipping.option.ShippingFee+n.shipping.option.LiftGateFee)}),i}var n=this;n.orderDate=new Date;n.linesOfBusiness=[];n.initialize=function(){n.linesOfBusiness=[];a.aftermarket&&n.linesOfBusiness.push(a.aftermarket);a.salvage&&n.linesOfBusiness.push(a.salvage);n.partTotal=t("PartTotal");n.coreTotal=t("CorePrice");n.warrantyTotal=t("WarrantyPrice");n.shippingTotal=t("ShippingPrice");n.total=t("Total")}}var a=this;return t.CheckoutService=a,a.aborter=null,a.cartId=0,v.fromBreakdown=function(n,t){var i=angular.copy(t.customer),u,r;return i.AfterMarketServiceLocation=n.Location,u=n.LineItems.select(function(n){var i=t.parts.firstOrDefault(function(t){return t.CompanyCode==n.CompanyCode&&t.PartNumber==n.PartNumber});return i||(i=new l.Part(n)),i=new l.Part(i),i.ext.quantity=n.QuantityRequested,i}),r=new v({customer:i,address:t.address,payment:t.payment,parts:u,shipping:t.shipping}),r.customer=i,r},v.prototype.toQuoteRequestParts=function(){var n=this;return n.Parts.select(function(t){return t.toQuoteRequest(n)})},b.prototype.toQuoteRequest=function(n){var t=this;return{Dimensions:t.Dimensions,Weight:t.Weight,HollanderPartCode:t.HollanderPartCode,Oversized:t.Oversized,PartNumber:t.PartNumber,CompanyCode:n.CompanyCode,Quantity:t.Quantity||t.QuantityRequested,UnitOfMeasure:t.UnitOfMeasure,ShippingWarehouseNumber:n.ShippingWarehouse}},y.prototype.getQuotes=function(i){var e=this,o=e.lob,c=o.address,h=c.ShipTo=="M",s=u.defer();if(e.defers=e.defers||{},e.defers[i])return s.promise;e.defers[i]=s;var a=[{Code:"P",Description:"Customer Pickup",ShippingFee:0,LiftGateFee:0,ResidentialDeliveryFee:0,ShipmentType:"Pickup",DaysInTransit:0,ETADays:1}],p=function(){s.resolve(a)},l=function(){var n=[],l;h?(e.breakdowns||[]).each(function(t){n=n.concat(t.toQuoteRequestParts())}):n=e.parts.select(function(n){return{PartNumber:n.PartNumber,Quantity:n.ext.quantity,UnitOfMeasure:n.ext.selectedUOM.UnitOfMeasure,Oversized:n.Oversized,HollanderPartCode:n.HollanderPartCode,Dimensions:n.Dimensions,Weight:n.Weight}});l={DeliveryAddress:c.toFulFillmentAddressModel(),FulfillmentItems:n,CustomerNumber:(o.customer||{}).CustomerNumber,CompanyCode:o.CompanyCode,Type:"Local"};e.quoteAborter&&e.quoteAborter.resolve();e.quoteAborter=u.defer();f.post(app.api+"shop/order/fulfillment",l,{timeout:e.quoteAborter.promise}).then(function(n){var o,a,l,y,c,p;if(n=n.data||n||{},n.Data=n.Data||[],!n.Success||!n.Data.ShippingQuotes.length){r.error("There was a problem quoting your shipment. Please contact customer support for assistance.");e.lob.address=e.lob.addresses[0];e.lob.changed();return}o=(n.Data||{}).ShippingQuotes||[];a=(n.Data||{}).ShippingTotals||{};o.each(function(n){n.ShippingFee=(n.ShippingFee+"").fromCurrency();n.ResidentialDeliveryFee=(n.ResidentialDeliveryFee+"").fromCurrency();n.LiftGateFee=(n.LiftGateFee+"").fromCurrency()});l=o.firstOrDefault(function(n){return n.Code=="P"});l&&(o.remove(l),o.push(l));var u=null,f=null,v=function(n){isNaN(Date.parse(n))||(n=new Date(Date.parse(n)),u=u||n,f=f||n,u>n&&(u=n),f<n&&(f=n))};h?(y=0,(e.breakdowns||[]).each(function(n){n.quote=o.firstOrDefault(function(t){return v(t.ETADate),t.ETADays>y&&(y=t.ETADays),t.ShippingWarehouse=(t.Shipper||"").split("_")[1],t.ShippingWarehouse==n.ShippingWarehouse})}),c="",u&&(u=u.toString("MM/dd/yyyy")),f&&(f=f.toString("MM/dd/yyyy")),u&&(c=u+(u!=f?" - "+f:"")),o=[{Code:"BW",DaysInTransit:1,Description:"Best Way",ETADate:f,ETADays:2,LiftGateFee:0,ResidentialDeliveryFee:0,ShippingFee:(a.TotalShippingCost+"").fromCurrency(),delivery:c?"Shipped on "+c:""}],e.LiftGateFee=(a.TotalShippingFees+"").fromCurrency(),e.requiresLiftGateFee=0):(e.parts.each(function(n){v(n.ext.selectedUOM.FirstEDA);v(n.ext.selectedUOM.LastEDA)}),c="Back Order",u&&(u=u.toString("MM/dd/yyyy"),f=f.toString("MM/dd/yyyy"),c=u+(u!=f?" - "+f:"")),p=o.firstOrDefault(function(n){return n.Code=="01"}),p&&(p.delivery="Delivered on "+c),l&&(l.delivery="Pickup on "+f));delete e.defers[i];s.resolve(o)},function(n){n&&n.headers&&n.headers("Errors")&&(r.error(n.headers("Errors")),e.lob.address=e.lob.addresses[0],e.lob.changed());delete e.defers[i]})},y=function(){var i=[new v(o)],u=new w(i);n.getBreakdowns(u).$promise.then(function(n){e.breakdowns=(n.data||n).select(function(n){return v.fromBreakdown(n,o)});l()},function(n){r.error(n.headers("Errors"));t.go("/cart/")})};return!e.breakdowns&&h?y():l(),s.promise},y.prototype.changed=function(){function f(t){n.options=t;t.each(function(n){n.description=n.Description;n.days=n.DaysInTransit>0?n.DaysInTransit+" Business Days":"";n.$price=n.ShippingFee==0?"Free":n.ShippingFee.$toCurrency()});n.option=n.options[0];n.update();n.loading=!1;n.error=""}var n=this,r=n.lob,t,u,i;if(r){if(t=r.address,u=t.ShipTo=="M",r.showOneTimeAddress=u,t.ShipTo=="M"&&!t.isValid()){n.error="Address is incomplete";return}if(i=[t.City,t.StateProvince.code,t.PostalCode,t.Country.code,t.ShipTo,u].join("|").toLowerCase(),n.results[i])return f(n.results[i]);n.loading=!0;n.options=[];n.option=undefined;n.error="";n.getQuotes(i).then(function(t){n.results[i]=t.data||t;f(t)},function(t){n.error=t.headers("Errors")||"Unable to load shipping.";n.loading=!1})}},y.prototype.update=function(){var n=this,t;n.option&&n.lob.address==n.lob.manualAddress&&(n.option.LiftGateFee=n.requiresLiftGateFee?n.LiftGateFee:0,t=n.option.ShippingFee+n.option.LiftGateFee,n.option.$price=t==0?"Free":t.$toCurrency())},y.prototype.setLiftGate=function(n,t){var i=this;return i.requiresLiftGateFee=n,i.update(),t.stopPropagation(),t.preventDefault(),!1},a.tabs=[],a.initialized=0,a.initialize=function(){var n=u.defer();return a.initialized?(n.resolve(),n.promise):(a.tabs=[],i.updateCartAvailability().then(function(){var u,t,f,e,r;a.initialized=1;u=a.parts=i.parts;t=new p("information");a.tabs.push(t);t.payment={};f=u.sortBy("LineOfBusinessKey").select(function(n){return n.LineOfBusinessKey}).distinct().join(",");a.lobsUsed&&a.lobsUsed!==f&&(a.data=undefined);a.lobsUsed=f;t.info=a.info=new nt;e=u.select(function(n){return n.LineOfBusiness.LineOfBusinessKey}).distinct();delete a.aftermarket;delete a.salvage;t.shipping={};e.contains(1)&&(t.aftermarket=a.aftermarket=new it,a[1]=a.aftermarket);e.contains(2)&&(t.salvage=a.salvage=new rt,a[2]=a.salvage);t.isValid=function(){var n=t.info.isValid();return n&=t.aftermarket?t.aftermarket.isValid():!0,n&(t.salvage?t.salvage.isValid():!0)};a.summary=new ut;r=new p("summary",a.summary);r.summary=a.summary;r.isValid=function(){return!0};a.tabs.push(r);n.resolve()},n.reject),n.promise)},a.next=function(n){var i,r;n.isValid()&&(i=a.tabs.indexOf(n),i++,r=a.tabs[i],t.go("/checkout/"+r.name))},a.getTab=function(n){return a.tabs.firstOrDefault(function(t){return t.name===n})},a.placeOrder=function(){var t=u.defer(),r=[],e=function(n){n&&(n.address.ShipTo=="M"&&n.shipping.breakdowns?n.shipping.breakdowns.each(function(t){var i=new v({customer:t.customer,address:n.address,payment:n.payment,parts:n.parts,shipping:n.shipping}),u=n.shipping.requiresLiftGateFee?t.quote.LiftGateFee:0;i.ShipVia=t.quote.Code;i.ShippingMethodCost=t.quote.ShippingFee+u;i.ShippingMethodDescription=t.quote.Description;i.Parts=t.Parts;r.push(i)}):r.push(new v(n)))},f;return e(a.aftermarket),e(a.salvage),f=new w(r),a.order=f,a.lastInsurance=angular.copy((a.aftermarket||{}).insurance),a.lastLinesOfBusiness=angular.copy(a.summary.linesOfBusiness),n.placeOrder(f).$promise.then(function(n){var r,u;a.result=n;r=[];n.each(function(n){n.Parts.each(function(t){var u=i.getPartByPartNumber(t.PartNumber),f;u&&(n.isSuccessful||(f=r.firstOrDefault(function(n){return n.PartNumber==u.PartNumber&&n.CompanyCode==u.CompanyCode}),current||(current=new l.Part(u),r.push(current),current.ext.quantity=0),current.ext.quantity+=u.ext.quantity),u.ext.quantity-=t.PartQuantity)})});u=i.parts.where(function(n){return n.ext.quantity<=0});i.clearCart().then(function(){r.length&&i.addPartsToCart(r)});a.data=undefined;t.resolve()},t.reject),t.promise},a.reset=function(){a.initialized=!1},h.$on("customer.active",a.reset),h.$on("user.active",a.reset),a}]);app.service("CheckoutAPIService",["$resource",function(n){return n("",{},{getBreakdowns:{method:"Post",url:app.api+"shipping/breakdown",isArray:!0},getQuote:{method:"POST",url:app.api+"shipping/quote",isArray:!0},getQuotes:{method:"POST",url:app.api+"shop/order/fulfillment"},placeOrder:{method:"POST",url:app.api+"PurchaseOrder/Invoice/PlaceOrder",isArray:!0}})}]);app.controller("CMSController",["$scope","UserService","DialogService","CMSService","$timeout","$sce",function(n,t,i,r,u,f){n.UserService=t;var e=n.service=r;n.show={panel:"show-panel"};t.setTitle("CMS","cms");n.edit=function(t,i){(n.rootNodes.each(function(n){n.css="";(n.SubPages||[]).each(function(n){n.css=""})}),n.page=undefined,t?t.css="active":n.show.panel="show-panel",t&&i!==t)&&(n.regions=[],n.pageLoading=!0,e.getPage({pageId:t.Id}).$promise.then(function(t){n.pageLoading=!1;n.page=t;t.RegionContents.each(function(t){angular.extend(t,i.Template.Regions);t.RegionContent=t.RegionContent||"";n.show.panel=""});u(function(){n.preventLinks()},10)},function(){n.page=undefined;n.pageLoading=!1}))};n.preventLinks=function(){u(function(){$(".region-area a[href]").unbind("click");$(".region-area a[href]").click(function(n){n.preventDefault()})},10)};n.editRegion=function(t){n.region=t;u(function(){n.quill=new Quill("#editor",{modules:{toolbar:"#toolbar"},placeholder:"Create...",theme:"snow"});ExtendQuill(n.quill);n.quill.close=function(t){n.region.RegionContent=t;n.region=undefined;u(function(){n.preventLinks()},10)}},10)};n.upload=function(t){function e(){var i=r.shift(),t;if(!i){try{n.quill.uploaded(u)}catch(f){}return}t=new FormData;t.append("file",i);$.ajax({type:"post",url:app.api+"cms/UploadImage?authorization="+app.token,processData:!1,contentType:!1,data:t,dataType:"json",headers:{Authorization:app.token}}).then(function(n){u.push(n);e()},e)}var r,u,i,f;if(n.quill){for(n.quill.uploading(),r=[],u=[],i=0;i<t.target.files.length;i++)f=t.target.files[i],[".jpg",".png"].indexOf(f.name.substr(-3))&&r.push(f);e()}};n.save=function(){if(n.page){var t=n.page,u={Id:t.Id,RootNodeId:t.RootNodeId,Name:t.Name,Title:t.Title,ParentPageId:t.ParentPageId,IsPublished:t.IsPublished,MetaContent:t.MetaContent,RegionContents:t.RegionContents.select(function(n){return{RegionContentId:n.RegionContentId,TemplateRegionId:n.TemplateRegionId,RegionContent:n.RegionContent}})};n.pageLoading=!0;r.savePage(u).$promise.then(function(){n.pageLoading=!1;i.success("Page was saved.");n.page.css="";n.page=undefined;n.show.panel="show-panel"},function(t){n.pageLoading=!1;i.error(t.headers("Errors"))})}};n.trustAsHtml=function(n){return f.trustAsHtml(n)};n.initialize=function(){t.user&&(n.rootNodesLoading=!0,e.getTreeView().$promise.then(function(t){n.rootNodesLoading=!1;n.rootNodes=t.RootNodes}))};n.initialize();n.$on("user.active",n.initialize)}]);app.controller("ContactUsController",["$scope","UserService","DialogService","LocalizationService","CatalogService","$routeParams","$timeout","$http","$q","Factory","ProductFactory",function(n,t,i,r,u,f,e,o,s,h,c){n.UserService=t;n.$translate=r.$translate;n.contact={partClass:"validationError"};t.setTitle("Contact Us","contact");n.isValid=function(){var t=!0;return t&=!!n.contact.contactname,t&=isValidEmail(n.contact.email),t&=isValidPhoneNumber(n.contact.phoneNumber),t&=!!n.contact.message,n.currentQuestion.showPartRequest?(t&=!!n.contact.partNumber,t&=!!n.contact.part):n.currentQuestion.buildSubject||(t&=!!n.contact.subject),t};n.loadPart=function(){n.aborter&&n.aborter.resolve();n.aborter=new s.defer;n.contact.part=undefined;n.contact.partClass=app.data.fieldLoadingClass;u.initialize().then(function(){var u=n.contact.partNumber,f=u.indexOf("~")>-1?2:1,e=t.user.customers[f],i={partNumber:u,companyCode:e.CompanyCode};o.get(app.api+"part/GetByPartNumber?"+serialize(i)).then(function(t){c.transformWarranties(t.data);n.contact.part=new c.Part(t.data);n.contact.partClass="validationSuccess"},function(){var t={PartNumber:i.partNumber,CompanyCode:i.companyCode,PartDescription:r.$translate("Cannot find part number")+": "+i.partNumber};n.contact.part=t;n.contact.partClass="validationError"})})};n.partNumberKeyup=function(){n.timeout&&e.cancel(n.timeout);n.timeout=e(function(){n.loadPart()},400)};n.sendEmail=function(){var e;if(n.isValid()){var r=n.contact,u=n.currentQuestion,f=r.subject;u.buildSubject&&(f=u.buildSubject(r));e={email:r.email,fromAddress:r.email,contactName:r.contactname,phoneNumber:r.phoneNumber,lob:r.part?r.part.LineOfBusiness.LineOfBusinessKey:0,subject:f,message:r.message,routing:u.routing};i.setLoading(!0);t.contactUs(e).$promise.then(function(){i.success("Your message has been submitted successfully. An LKQ representative will be in contact with you. Thank you for your business");t.goHome()},function(n){i.error(n.headers("Errors"))})}};n.initialize=function(){var i,r;n.isLoading=!0;i=t.user;n.isLoading=!1;n.questions=app.data.contactUsQuestions.slice();i||n.questions.splice(0,1);n.currentQuestion=n.questions[0];n.contact.contactname=i?i.FirstName+" "+i.LastName:"";n.contact.phoneNumber=i?i.PhoneNumber:"";n.contact.email=i?i.Email:"";r="#conatactSubject";switch((f.question||"").toLowerCase()){case"part":n.currentQuestion=app.data.contactUsQuestions.firstOrDefault(function(n){return n.name==="Part Request"});f.partNumber&&(n.contact.partNumber=f.partNumber,n.loadPart());r="#contactMessage"}e(function(){$(r).focus()},100)};n.initialize();n.$on("user.active",n.initialize)}]);app.controller("GenericController",["$scope","UserService","CatalogService","LocalizationService","CartService","$timeout","CheckoutService",function(n,t,i,r,u,f){n.UserService=t;n.CatalogService=i;n.CartService=u;n.$timeout=f;n.go=t.go;n.productHistory=i.productHistory;n.client=app.client;n.LocalizationService=r;n.$translate=r.$translate;n.show={clear:function(t){delete n.show[t]}};n.bestSelling=app.data.bestSelling;n.goCart=function(){(u.parts.length||u.loading)&&(n.user.isKip?t.go("/kip-quote/"):t.go("/cart/"))};n.go=t.go;n.$on("user.active",function(){n.user=t.user});n.user&&n.user.kip&&n.user.kip.postalCode&&(i.productHistory.postalCode=n.user.kip.postalCode);n.logout=function(){t.logout();try{n.show.AccountPicker=0}catch(i){}}}]);app.controller("GenericPageController",["$scope","UserService","DialogService","$routeParams","$sce",function(n,t,i,r,u){n.UserService=t;n.isLoading=!0;n.trustAsHtml=function(n){return u.trustAsHtml(n)};n.initialize=function(){t.user&&t.getMarketingData({RegionId:1,PageName:"generic",SubPageName:r.page}).$promise.then(function(t){n.isLoading=!1;n.result=t},function(n){i.error(n.headers("Errors"));t.goHome()})};n.initialize();n.$on("user.active",n.initialize)}]);app.directive("ngAddress",function(){return{scope:{address:"=ngAddress"},controller:"GenericController",restrict:"EA",templateUrl:app.baseUrl+"partials/address-edit.html",link:function(n){n.states=states;n.countries=countries}}});app.directive("ngAutocomplete",function(){return{scope:{search:"=ngAutocomplete",placeholder:"@",cancel:"=",cancelName:"@"},restrict:"EA",templateUrl:app.baseUrl+"partials/autocomplete.html",link:function(n,t){n.windowClick=function(i){if(!$(t).is(":visible")){$(window).unbind("click",n.windowClick);return}$(i.target).closest(".ui-autocomplete").length||(n.search.autocomplete=[],n.$apply())};$(window).click(n.windowClick)},controller:["$scope","$timeout",function(n,t){n.keyup=function(i){var r,f,u;if(n.search.autocomplete.length){if(n.search.saved=n.search.saved||n.search.term,r=!1,f=n.search.autocomplete.length-1,i.which==40&&(r=!0,n.current=n.search.autocomplete.firstOrDefault(function(n){return n.active}),n.current?(n.current.active=!1,u=n.search.autocomplete.indexOf(n.current),n.current=n.search.autocomplete[u+1]):n.current=n.search.autocomplete[0]),i.which==39||i.which==37)return!0;if(i.which==38&&(r=!0,n.current=n.search.autocomplete.firstOrDefault(function(n){return n.active}),n.current?(n.current.active=!1,u=n.search.autocomplete.indexOf(n.current),n.current=n.search.autocomplete[u-1]):n.current=n.search.autocomplete[f]),i.which==9&&(r=!0,n.search.autocomplete=[],n.search.saved=n.search.term,n.current=null),i.which==13)return r=!0,n.search.autocomplete=[],n.search.saved=n.search.term,n.current=null,!0;if(i.which==27&&(r=!0,n.search.autocomplete=[],n.current=null),r)return n.current?(n.current.active=!0,n.search.term=n.current.val):n.search.term=n.search.saved,i.preventDefault(),i.stopPropagation(),!1}n.timeout&&t.cancel(n.timeout);n.timeout=t(function(){var t=n.search.term.toClean();t.length>2?n.search.parse(t).then(function(t){if(n.search.saved="",t.each(function(n){!n.val&&n.Year&&n.Make&&n.Model&&(n.val=[n.Year,n.Make,n.Model].join(" "));n.val=n.val.replace(/[|]/g,"/")}),t.length==1){var i=t[0];if(!i.Year&&!i.Make&&!i.Model&&!i.CategoryName){n.search.autocomplete=[];return}}n.search.autocomplete=t},function(){n.search.autocomplete=[]}):n.search.autocomplete=[]},500)};n.click=function(t){n.search.term=t.val;n.search.autocomplete=[]};n.mouseover=function(t){n.search.autocomplete.each(function(n){n.active=n==t})};n.mouseout=function(){n.search.autocomplete.each(function(t){t.active=t==n.current})}}]}});app.directive("comboBox",function(){return{restrict:"A",replace:!0,scope:{ngModel:"=",list:"=comboBox",selector:"@",sort:"@"},template:"<div class='dropdown comboBox open'>\t<input type='text' class='form-control' ng-model='text' autocomplete='off' ng-blur='blur()' ng-keydown='keydown($event)' ng-keyup='keyup($event)' ng-class='{"+{validationClass:"validationError"}.validationClass+": !current}'/>\t<ul class='dropdown-menu' ng-if='visible.length'>\t\t<li ng-repeat='item in visible' ng-class='item.css'>\t\t\t<a class='pointer' ng-mousedown='mousedown($event, item)'>{{item.text}}<\/a>\t\t<\/li>\t<\/ul><\/div>",controller:["$scope","$timeout",function(n,t){function i(n,t){if(n.toLowerCase()==t.toLowerCase())return 9999;n=n.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&");for(var u=RegExp("("+n.split(" ").removeEmpties().join("|")+")","gi"),i=0,r;(r=u.exec(t))!==null;)i+=r[0].length;return i}function r(){n.visible=n.items.each(function(t){t.score=i(n.text,t.text)}).where(function(n){return n.score>0}).sortBy("text").groupBy("score").sortByNumeric("score").reverse().ungroup().slice(0,10)}n.$timeout=t;n.visible=[];n.index=-1;n.select=function(t){n.ngModel=(t||{}).value;n.current=t;n.text=(t||{}).text||"";n.clear()};n.clear=function(){n.visible=[];n.index=-1};n.mousedown=function(t,i){if(t.which==1)return n.select(i),t.preventDefault(),t.stopPropagation(),!1};n.keydown=function(t){function u(){n.visible.each(function(n){n.css=""});n.visible[n.index]&&(n.visible[n.index].css="active")}function r(){return t.preventDefault(),t.stopPropagation(),!1}if(n.visible.length){var i=n.index;if(t.which==27&&(n.visible=[]),t.which==13)return n.index>-1&&n.select(n.visible[i]),r();if(t.which==38)return i--,i==-2&&(i=n.visible.length-1),n.index=i,u(),r();if(t.which==40)return i++,i==n.visible.length&&(i=-1),n.index=i,u(),r()}};n.keyup=function(t){if([27,13,38,39,40,41].indexOf(t.which)==-1){if(n.current&&n.current.text==n.text||(n.current=null),!n.text){n.clear();return}return r()}};n.blur=n.clear;n.initialize=function(){if(!angular.isArray(n.list))return console.log("ngModel must be an array.");n.items=n.list.select(function(t,i){return{id:i+""+(n.selector?t[n.selector]:t),text:n.selector?t[n.selector]:t,value:t,search:((n.selector?t[n.selector]:t)||"").toLowerCase()}});n.ngModel&&(n.current=n.items.firstOrDefault(function(t){return t.value==n.ngModel}),n.current&&n.select(n.current))};n.initialize();n.windowClickHandler=function(t){for(var i=t.target,r=$("body")[0];i&&i!=n.element&&i!=r;)i=$(i).parent()[0];i&&i!=r||n.clear()};$(window).bind("mousedown",n.windowClickHandler);n.$on("$destroy",function(){$(window).unbind("mousedown",n.windowClickHandler)})}],link:function(n,t){n.element=t[0]}}});app.directive("ngDatePicker",function(){return{scope:{ngModel:"=",min:"=minDate",max:"=maxDate",minLink:"=minLink",maxLink:"=maxLink"},restrict:"EA",link:function(n,t){n.ngModel&&(t.value=n.ngModel.toString("MM/dd/yyyy"));var i={};n.min&&(i.minDate=n.min);n.max&&(i.maxDate=n.max);n.minLink&&(n.$watch("minLink",function(){t.datepicker("option","minDate",n.minLink)}),i.minDate=n.minLink);n.maxLink&&(n.$watch("maxLink",function(){t.datepicker("option","maxDate",n.maxLink)}),i.maxDate=n.maxLink);i.onSelect=function(t){n.$apply(function(){n.ngModel=t})};t.datepicker(i)}}});app.directive("ngDialogs",function(){return{restrict:"EA",templateUrl:app.baseUrl+"partials/dialogs.html"}});app.directive("ngFileUpload",function(){return{scope:{event:"=ngFileUpload",mimeTypes:"="},restrict:"EA",link:function(n,t){n.mimeTypeArr=[];angular.isString(n.mimeTypes)&&($scope.mimeTypesArr=[n.mimeTypes]);angular.isArray(n.mimeTypes)&&(n.mimeTypeArr=n.mimeTypes);n.mimeTypeArr.each(function(t,i){t=angular.isString(t)?t.toLowerCase():"";n.mimeTypeArr[i]=t});n.mimeTypeArr=n.mimeTypeArr.removeEmpties();var i=$("<div class='drag-dropper'><div><\/div><\/div>"),r=i.children();i.append(r);r.html(localizationService.$translate("Drop your file to upload."));n.windowDragStart=function(t){if($("#"+n.id).length){t.preventDefault();$(".drag-dropper").remove();$("body").append(i);n.dropped=!1;r.on("drop",function(t){var e,r,u,f,o;if(t.preventDefault(),t.stopPropagation(),i.remove(),!n.dropped){for(n.dropped=!0,e=t.originalEvent.dataTransfer.files,r=[],u=0;u<e.length;u++)f=e[u],n.mimeTypeArr.length?n.mimeTypeArr.contains(f.type.toLowerCase())&&r.push(f):r.push(f);o={target:{files:r}};r.length&&n.event(o)}}).on("dragenter",function(n){n.preventDefault()}).on("dragover",function(n){n.preventDefault()}).on("dragleave",function(){i.remove();r.unbind("drop dragdrop dragover dragenter dragleave")})}};n.route=!0;n.routeName=window.location.pathname;n.id="FileUpload_"+n.$id;t.attr("id",n.id);n.$on("$routeChangeStart",function(){$(window).unbind("dragover",n.windowDragStart);n.bound=!1;n.route=!1});n.timer=function(){var t=$("#"+n.id).length;if(!t&&n.bound){$(window).unbind("dragenter",n.windowDragStart);n.bound=!1;return}if(t&&!n.bound){$(window).on("dragenter",n.windowDragStart);n.bound=!0}t&&setTimeout(n.timer,100)};setTimeout(n.timer,100);t.change(function(i){n.event(i.originalEvent);t.val("")})}}});app.directive("ngFooter",function(){return{controller:"GenericController",restrict:"EA",templateUrl:app.baseUrl+"partials/footer.html"}});app.directive("ngHeader",function(){return{restrict:"EA",template:"<div><div ng-if='isMobile' header-mobile><\/div><div ng-if='!isMobile' header-desktop><\/div><\/div>",controller:["$scope",function(n){n.isMobile=app.data.isMobile()}]}});app.directive("headerDesktop",function(){return{restrict:"A",templateUrl:app.baseUrl+"partials/header-desktop.html",controller:"GenericController"}});app.directive("headerMobile",function(){return{restrict:"A",templateUrl:app.baseUrl+"partials/header.html",controller:"GenericController"}});app.directive("ngLoading",function(){return{restrict:"A",template:'<div class="text-center no-print"><img src="/images/loading.gif" /><span class="fa-16px text-primary bold" ><span ng-translate="Loading"><\/span>...<\/span><\/div>'}});app.directive("ngMask",function(){return{scope:{how:"@ngMask",ngModel:"="},restrict:"EA",link:function(n,t){function r(){n.$timeout(function(){n.ngModel=t.val()})}function f(){var i=isValidPhoneNumber(n.ngModel),r;i!==n.isValid&&(n.isValid=i,r="validationError"+(n.useIcon?"Icon":""),t.removeClass(r),i||t.addClass(r))}n.isValid="";n.masks=[];var i="AAAAA",u="";switch(n.how){case"phone":i="(000) 000-0000";u="(___) ___-____";break;case"zip":n.masks=["AAAAA-AAAA","AAA-AAAAAA"];n.mask=function(r,u,f,e){i=r.replace(/[^a-zA-Z0-9]/gi,"").length===6?n.masks[1]:n.masks[0];t.mask(i,e)};i=n.masks[0];u="_____-____"}t.mask(i,{placeholder:u});n.$watch("ngModel",f);t.bind("keypress",r);t.bind("blur",r);t.bind("focus",r);t.bind("change",r)},controller:["$scope","$timeout",function(n,t){n.$timeout=t}]}});$jscomp={scope:{},findInternal:function(n,t,i){var f,r,u;for(n instanceof String&&(n=String(n)),f=n.length,r=0;r<f;r++)if(u=n[r],t.call(i,u,r,n))return{i:r,v:u};return{i:-1,v:void 0}}};$jscomp.defineProperty="function"==typeof Object.defineProperties?Object.defineProperty:function(n,t,i){if(i.get||i.set)throw new TypeError("ES3 does not support getters and setters.");n!=Array.prototype&&n!=Object.prototype&&(n[t]=i.value)};$jscomp.getGlobal=function(n){return"undefined"!=typeof window&&window===n?n:"undefined"!=typeof global&&null!=global?global:n};$jscomp.global=$jscomp.getGlobal(this);$jscomp.polyfill=function(n,t,i,r){if(t){for(i=$jscomp.global,n=n.split("."),r=0;r<n.length-1;r++){var u=n[r];u in i||(i[u]={});i=i[u]}n=n[n.length-1];r=i[n];t=t(r);t!=r&&null!=t&&$jscomp.defineProperty(i,n,{configurable:!0,writable:!0,value:t})}};$jscomp.polyfill("Array.prototype.find",function(n){return n?n:function(n,t){return $jscomp.findInternal(this,n,t).v}},"es6-impl","es3"),function(n,t,i){"function"==typeof define&&define.amd?define(["jquery"],n):"object"==typeof exports?module.exports=n(require("jquery")):n(t||i)}(function(n){var i=function(t,i,r){var u={invalid:[],getCaret:function(){try{var n,i=0,e=t.get(0),f=document.selection,r=e.selectionStart;return f&&-1===navigator.appVersion.indexOf("MSIE 10")?(n=f.createRange(),n.moveStart("character",-u.val().length),i=n.text.length):(r||"0"===r)&&(i=r),i}catch(o){}},setCaret:function(n){try{if(t.is(":focus")){var i,r=t.get(0);r.setSelectionRange?r.setSelectionRange(n,n):(i=r.createTextRange(),i.collapse(!0),i.moveEnd("character",n),i.moveStart("character",n),i.select())}}catch(u){}},events:function(){t.on("keydown.mask",function(n){t.data("mask-keycode",n.keyCode||n.which);t.data("mask-previus-value",t.val())}).on(n.jMaskGlobals.useInput?"input.mask":"keyup.mask",u.behaviour).on("paste.mask drop.mask",function(){setTimeout(function(){t.keydown().keyup()},100)}).on("change.mask",function(){t.data("changed",!0)}).on("blur.mask",function(){e===u.val()||t.data("changed")||t.trigger("change");t.data("changed",!1)}).on("blur.mask",function(){e=u.val()}).on("focus.mask",function(t){!0===r.selectOnFocus&&n(t.target).select()}).on("focusout.mask",function(){r.clearIfNotMatch&&!o.test(u.val())&&u.val("")})},getRegexMask:function(){for(var n=[],t,e,o,r,u=0;u<i.length;u++)(t=f.translation[i.charAt(u)])?(e=t.pattern.toString().replace(/.{1}$|^.{1}/g,""),o=t.optional,(t=t.recursive)?(n.push(i.charAt(u)),r={digit:i.charAt(u),pattern:e}):n.push(o||t?e+"?":e)):n.push(i.charAt(u).replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&"));return n=n.join(""),r&&(n=n.replace(new RegExp("("+r.digit+"(.*"+r.digit+")?)"),"($1)?").replace(new RegExp(r.digit,"g"),r.pattern)),new RegExp(n)},destroyEvents:function(){t.off("input keydown keyup paste drop blur focusout ".split(" ").join(".mask "))},val:function(n){var i=t.is("input")?"val":"text";return 0<arguments.length?(t[i]()!==n&&t[i](n),i=t):i=t[i](),i},calculateCaretPosition:function(n,i){var u=i.length,r=t.data("mask-previus-value")||"",f=r.length;return 8===t.data("mask-keycode")&&r!==i?n-=i.slice(0,n).length-r.slice(0,n).length:r!==i&&(n=n>=f?u:n+(i.slice(0,n).length-r.slice(0,n).length)),n},behaviour:function(i){var r,e;return i=i||window.event,u.invalid=[],r=t.data("mask-keycode"),-1===n.inArray(r,f.byPassKeys)?(r=u.getMasked(),e=u.getCaret(),setTimeout(function(n,t){u.setCaret(u.calculateCaretPosition(n,t))},10,e,r),u.val(r),u.setCaret(e),u.callbacks(i)):void 0},getMasked:function(n,t){var c=[],l=void 0===t?u.val():t+"",e=0,y=i.length,s=0,k=l.length,o=1,p="push",w=-1,a,d,g;for(r.reverse?(p="unshift",o=-1,a=0,e=y-1,s=k-1,d=function(){return-1<e&&-1<s}):(a=y-1,d=function(){return e<y&&s<k});d();){var b=i.charAt(e),v=l.charAt(s),h=f.translation[b];h?(v.match(h.pattern)?(c[p](v),h.recursive&&(-1===w?w=e:e===a&&(e=w-o),a===w&&(e-=o)),e+=o):v===g?g=void 0:h.optional?(e+=o,s-=o):h.fallback?(c[p](h.fallback),e+=o,s-=o):u.invalid.push({p:s,v:v,e:h.pattern}),s+=o):(n||c[p](b),v===b?s+=o:g=b,e+=o)}return l=i.charAt(a),y!==k+1||f.translation[l]||c.push(l),c.join("")},callbacks:function(n){var f=u.val(),h=f!==e,s=[f,n,t,r],o=function(n,t,i){"function"==typeof r[n]&&t&&r[n].apply(this,i)};o("onChange",!0===h,s);o("onKeyPress",!0===h,s);o("onComplete",f.length===i.length,s);o("onInvalid",0<u.invalid.length,[f,n,t,u.invalid,r])}},f,e,o;t=n(t);f=this;e=u.val();i="function"==typeof i?i(u.val(),void 0,t,r):i;f.mask=i;f.options=r;f.remove=function(){var n=u.getCaret();return u.destroyEvents(),u.val(f.getCleanVal()),u.setCaret(n),t};f.getCleanVal=function(){return u.getMasked(!0)};f.getMaskedVal=function(n){return u.getMasked(!1,n)};f.init=function(e){var s,h;if(e=e||!1,r=r||{},f.clearIfNotMatch=n.jMaskGlobals.clearIfNotMatch,f.byPassKeys=n.jMaskGlobals.byPassKeys,f.translation=n.extend({},n.jMaskGlobals.translation,r.translation),f=n.extend(!0,{},f,r),o=u.getRegexMask(),e)u.events(),u.val(u.getMasked());else{for(r.placeholder&&t.attr("placeholder",r.placeholder),t.data("mask")&&t.attr("autocomplete","off"),e=0,s=!0;e<i.length;e++)if(h=f.translation[i.charAt(e)],h&&h.recursive){s=!1;break}s&&t.attr("maxlength",i.length);u.destroyEvents();u.events();e=u.getCaret();u.val(u.getMasked());u.setCaret(e)}};f.init(!t.is("input"))};n.maskWatchers={};var u=function(){var t=n(this),u={},f=t.attr("data-mask");return t.attr("data-mask-reverse")&&(u.reverse=!0),t.attr("data-mask-clearifnotmatch")&&(u.clearIfNotMatch=!0),"true"===t.attr("data-mask-selectonfocus")&&(u.selectOnFocus=!0),r(t,f,u)?t.data("mask",new i(this,f,u)):void 0},r=function(t,i,r){r=r||{};var u=n(t).data("mask"),f=JSON.stringify;t=n(t).val()||n(t).text();try{return"function"==typeof i&&(i=i(t)),"object"!=typeof u||f(u.options)!==f(r)||u.mask!==i}catch(e){}},t=function(n){var i=document.createElement("div"),t;return n="on"+n,t=n in i,t||(i.setAttribute(n,"return;"),t="function"==typeof i[n]),t};n.fn.mask=function(t,u){u=u||{};var f=this.selector,e=n.jMaskGlobals,s=e.watchInterval,e=u.watchInputs||e.watchInputs,o=function(){if(r(this,t,u))return n(this).data("mask",new i(this,t,u))};return n(this).each(o),f&&""!==f&&e&&(clearInterval(n.maskWatchers[f]),n.maskWatchers[f]=setInterval(function(){n(document).find(f).each(o)},s)),this};n.fn.masked=function(n){return this.data("mask").getMaskedVal(n)};n.fn.unmask=function(){return clearInterval(n.maskWatchers[this.selector]),delete n.maskWatchers[this.selector],this.each(function(){var t=n(this).data("mask");t&&t.remove().removeData("mask")})};n.fn.cleanVal=function(){return this.data("mask").getCleanVal()};n.applyDataMask=function(t){t=t||n.jMaskGlobals.maskElements;(t instanceof n?t:n(t)).filter(n.jMaskGlobals.dataMaskAttr).each(u)};t={maskElements:"input,td,span,div",dataMaskAttr:"*[data-mask]",dataMask:!0,watchInterval:300,watchInputs:!0,useInput:!/Chrome\/[2-4][0-9]|SamsungBrowser/.test(window.navigator.userAgent)&&t("input"),watchDataMask:!1,byPassKeys:[9,16,17,18,36,37,38,39,40,91],translation:{0:{pattern:/\d/},9:{pattern:/\d/,optional:!0},"#":{pattern:/\d/,recursive:!0},A:{pattern:/[a-zA-Z0-9]/},S:{pattern:/[a-zA-Z]/}}};n.jMaskGlobals=n.jMaskGlobals||{};t=n.jMaskGlobals=n.extend(!0,{},t,n.jMaskGlobals);t.dataMask&&n.applyDataMask();setInterval(function(){n.jMaskGlobals.watchDataMask&&n.applyDataMask()},t.watchInterval)},window.jQuery,window.Zepto),function(){app.directive("modalDialog",["ngModalDefaults","$sce",function(n,t){return{restrict:"EA",scope:{show:"=",dialogTitle:"@",onClose:"&?"},replace:!0,transclude:!0,link:function(i,r,u){var f=function(){return i.closeButtonHtml=t.trustAsHtml(n.closeButtonHtml)},e=function(){i.dialogStyle={};u.width&&(i.dialogStyle.width=u.width);u.height&&(i.dialogStyle.height=u.height)};return i.hideModal=function(){return i.show=!1},i.$watch("show",function(n,t){document.getElementsByTagName("body")[0].style.overflow=n&&!t?"hidden":"";!n&&t&&i.onClose!=null&&i.onClose()}),f(),e()},template:"<div class='ng-modal' ng-show='show'>\n  <div class='ng-modal-overlay' ng-click='hideModal()'><\/div>\n  <div class='ng-modal-dialog' ng-style='dialogStyle'>\n    <span class='ng-modal-title' ng-show='dialogTitle && dialogTitle.length' ng-bind='dialogTitle'><\/span>\n    <div class='ng-modal-close' ng-click='hideModal()'>\n      <div ng-bind-html='closeButtonHtml'><\/div>\n    <\/div>\n    <div class='ng-modal-dialog-content' ng-transclude><\/div>\n  <\/div>\n<\/div>"}}])}(),function(){app.provider("ngModalDefaults",function(){return{options:{closeButtonHtml:"<span class='ng-modal-close-x'>X<\/span>"},$get:function(){return this.options},set:function(n,t){var i,u,r;if(typeof n=="object"){r=[];for(i in n)n.hasOwnProperty(i)&&(u=n[i],r.push(this.options[i]=u));return r}return this.options[n]=t}}})}();app.directive("ngPagination",function(){return{scope:{pagination:"=ngPagination",search:"=search"},restrict:"EA",templateUrl:app.baseUrl+"partials/pagination.html",controller:["$scope",function(n){function t(t,i,r,u){var f=this;f.number=t;f.text=i;f.disabled=r;f.css=[];u?f.css.push("active"):r&&f.css.push("disabled");this.click=function(){if(!f.disabled&&!f.active)try{n.search(f.number)}catch(t){}}}n.pages=[];n.pagination.takes=n.pagination.takes||app.data.takes;n.pagination.takes.contains(n.pagination.take)||(n.pagination.take=n.pagination.takes[0]);n.buildPages=function(){var u=n.pagination,i=u.skip/u.take,f=u.maxPage=Math.ceil(u.total/u.take)-1,e=Math.max(i-2,0),o=Math.min(e+4,f),r;for(o===f&&(e=Math.max(f-4,0)),n.pages=[],n.pages.push(new t(i,"«",i===0)),r=e;r<=o;r++)n.pages.push(new t(r+1,r+1,!1,i===r));n.pages.push(new t(i+2,"»",i===f))};n.$watch("pagination.results.length",n.buildPages);n.$watch("pagination.skip",n.buildPages);n.$watch("pagination.take",n.buildPages)}]}});app.directive("ngPageTitle",function(){return{controller:"GenericController",restrict:"EA"}});app.directive("printHeader",function(){return{controller:"GenericController",restrict:"EA",templateUrl:app.baseUrl+"partials/print-header.html"}});app.directive("ngQoe",function(){return{scope:{headOnly:"@ngQoe"},controller:"GenericController",restrict:"EA",templateUrl:app.baseUrl+"partials/qoe.html"}});app.factory("tokenInterceptor",["$rootScope","$q","$injector",function(n,t,i){var r=this;return n.$on("$routeChangeStart",function(){n.loggedInUser===null&&$("body").scrollTop(0)}),r.response=function(n){var t=n.headers("Authorization");switch(n.config.url.substr(0,3).toLowerCase()){case"/b2":t&&(app.usaToken=t,setCookie(app.data.authorizationCookieName,t,15*daysToMinutes))}return n},r.request=function(n){var t="",i;switch(n.url.substr(0,3).toLowerCase()){case"/b2":t=app.usaToken;break;case"/m/":i=getCookie(app.data.userIdCookieName);i&&setCookie(app.data.userIdCookieName,i,15*daysToMinutes);t=app.token}return t&&(n.headers.Authorization=t),n},r.responseError=function(n){return n.status===401?$.ajax({method:"GET",url:"api/token"}).then(function(t){return app.token=t.token_type+" "+t.access_token,i.get("$http")(n.config)},function(){}):t.reject(n)},r}]);app.directive("ngValidate",function(){return{scope:{how:"@ngValidate",match:"=validateMatch",ngModel:"=",placeholder:"@vaPlaceholder"},restrict:"EA",link:function(n,t){function i(){var i,r;switch(n.how){case"username":i=isValidUserName(n.ngModel);break;case"email":i=isValidEmail(n.ngModel);break;case"match":i=!!n.ngModel&&n.ngModel===n.match;break;case"password":i=isValidPassword(n.ngModel);break;case"postalCode":i=isValidAddress(n.ngModel);break;default:i=!!n.ngModel}i!==n.isValid&&(n.isValid=i,r="validationError",t.removeClass(r),i||t.addClass(r))}if(n.isValid="",n.$watch("ngModel",i),i(),n.how==="match"&&n.$watch("match",i),n.placeholder){t[0].placeholder=localizationService.$translate(n.placeholder);n.$on("localization.loaded",function(){t[0].placeholder=localizationService.$translate(n.placeholder)});return}}}});app.directive("ngValidateAddress",function(){return{scope:{what:"=ngValidateAddress",mask:"@",ngModel:"="},restrict:"EA",link:function(n,t){function i(){var i,o,f,e,s;(n.what.countries=r,i=n.what.Country,o=n.what.StateProvince,o&&!i&&(i=n.what.countries.firstOrDefault(function(n){return n.code==o.country}),i&&(n.what.Country=i)),i!==n.what.lastCountry&&(n.what.lastCountry=i,n.what.states=u,i&&(n.what.states=u.where(function(n){return n.country===i.code}),n.what.states.contains(n.what.StateProvince)||(n.what.StateProvince=undefined)),n.$timeout(function(){})),n.mask==="postalcode"&&(i=(n.what.Country||{}).code||"US",n.country!==i&&(n.country=i,f=n.what.Country?n.what.Country.postalcode:{placeholder:r[0].postalcode.placeholder,masking:r[0].postalcode.masking},n.currentMask!==f.masking&&(n.currentMask=f.masking,t.mask(f.masking,{placeholder:f.placeholder}),n.$timeout(function(){})))),e=isValidAddress(n.what),e!==n.isValid)&&(n.isValid=e,s="validationError",t.removeClass(s),e||t.addClass(s))}n.isValid="";var u=n.what.states=n.what.states||states,r=n.what.countries=n.what.countries||countries;t.change(function(){n.mask==="country"});t.blur(i);t.keyup(i);n.interval=setInterval(i,100);t.on("remove",function(){clearInterval(n.interval)});i()},controller:["$scope","$timeout",function(n,t){n.$timeout=t}]}}),function(){app.directive("alphanumeric",function(){var n=/^[a-zA-Z0-9]*$/;return{require:"ngModel",link:function(t,i,r,u){function f(t){return u.$setValidity("alphanumeric",n.test(t)),t}u.$parsers.push(f)}}})}(),function(){app.directive("emailaddress",function(){var n=/[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+(?:[A-Z]{2}|com|org|net|edu|gov|mil|biz|info|mobi|name|aero|asia|jobs|museum)\b/i;return{require:"ngModel",link:function(t,i,r,u){function f(t){return u.$setValidity("emailaddress",n.test(t)),t}u.$parsers.push(f)}}})}(),function(){app.directive("numeric",function(){var n=/^(0|[1-9][0-9]*)$/;return{require:"ngModel",link:function(t,i,r,u){function f(t){return u.$setValidity("numeric",n.test(t)),t}u.$parsers.push(f)}}})}(),function(){app.directive("phonenumber",function(){var n=/^\s*(?:\+?(\d{1,3}))?[-. (]*(\d{3})[-. )]*(\d{3})[-. ]*(\d{4})(?: *x(\d+))?\s*$/;return{require:"ngModel",link:function(t,i,r,u){function f(t){return u.$setValidity("phonenumber",n.test(t)),t}u.$parsers.push(f)}}})}();app.directive("vehiclePicker",function(){return{scope:{picker:"=vehiclePicker"},templateUrl:app.baseUrl+"partials/vehicle-picker.html",controller:"GenericController"}});app.factory("AddressFactory",["LocalizationService",function(n){function t(n){var i,r,t;n=n||{};i=n.Country||"";r=n.StateProvince||"";angular.isString(r)?r=states.get(r):angular.isObject(r)&&(r=states.get(r.code));angular.isObject(i)&&(i=i.CountryCode||i.code||"");i=angular.isString(i)?countries.get(i):undefined;t=this;t.AddressName=n.AddressName;t.Address1=n.Address1;t.Address2=n.Address2;t.City=n.City;t.StateProvince=r;t.PostalCode=n.PostalCode;t.Country=i;t.ShipTo=n.ShipTo;t.states=states;t.countries=countries}var i=this;return t.prototype.toCheckoutModel=function(){var n=this;return{Name:n.AddressName,Address1:n.Address1,Address2:n.Address2,City:n.City,StateProvince:n.StateProvince.code,PostalCode:n.PostalCode,Country:{CountryCode:n.Country.code},PhoneNumber:n.PhoneNumber,ShipTo:n.ShipTo}},t.prototype.toFulFillmentAddressModel=function(){var n=this,t="Default";return n.ShipTo!="D"&&(t="OnFile"),n.ShipTo=="M"&&(t="Manual"),{Address:{AddressName:n.AddressName,Address1:n.Address1,Address2:n.Address2,City:n.City,StateProvince:n.StateProvince.code,PostalCode:n.PostalCode,Country:n.Country.code},Type:t}},t.prototype.isValid=function(){var n=this;return n.Address1?n.City?isValidAddress(n):!1:!1},t.prototype.$translate=n.$translate,i.Address=t,i}]);app.factory("FactoryAPIService",["$resource",function(n){return n("",{},{parse:{method:"GET",url:app.api+"auxiliarydata/ParseKeyword",params:{exact:"@exact",keyword:"@keyword",withInsurance:"@withInsurance"},isArray:!0},getYMMValues:{method:"GET",url:app.api+"auxiliarydata/GetVehiceYMM",params:{year:"@year",make:"@make",type:"@type"},isArray:!0},getInterchangeYMMLookup:{method:"POST",url:app.api+"Part/GetInterchangeYMMLookup",isArray:!0},getYMMCO:{method:"POST",url:app.api+"part/ymmco",isArray:!0},getFacets:{method:"POST",url:app.api+"Part/GetFacets"}})}]);app.factory("Factory",["FactoryAPIService","UserService","$http","$timeout","$q","DialogService","$rootScope","LocalizationService","CatalogSingletonService",function(n,t,i,r,u,f,e,o,s){function d(n){this.HollanderPartType=n}function w(n,t,i,r,u){var f,e,h,o,s,c;for(t.substr(0,9)!=="B2BPortal"&&(t="B2BPortal|"+t),f=this,f.id=n,f.CategoryKey=n,f.FullName=t,f.haschildren=u,e=t.split("|"),f.path=e.slice(1,10).join("|"),f.CategoryName=e.lastOrDefault(),f.uri=f.path.toWebsiteURL(),f.SubCategories=[],f.CategoryMemberships=[],f.WizardType=i,t==="B2BPortal|Paint"&&(f.WizardType="PBE",f.CategoryName="Paint/Body"),r&&r.each&&r.each(function(n){f.CategoryMemberships.push(new d(n))}),h=app.data.GetCategoryByName(f.FullName.toLowerCase()),h||(app.data.categories[f.CategoryName.toLowerCase().toWebsiteURL()]=f,app.data.categories[f.CategoryKey]=f,app.data.categories[f.uri.toLowerCase()]=f,app.data.categories[f.FullName.toLowerCase()]=f,app.data.categories[f.path.toLowerCase()]=f,app.data.categories[f.CategoryName.toLowerCase()]=f),o=2;o<e.length;o++)s=e.slice(0,o).join("|"),c=app.data.GetCategoryByName(s)||new w(0,s);f.root=app.data.GetCategoryByName(e.slice(0,2).join("|").toLowerCase());f.parent=app.data.GetCategoryByName(e.slice(0,e.length-1).join("|").toLowerCase());f.parent&&(f.parent.haschildren=!0,f.parent.SubCategories.push(f),f.parent.SubCategories.sortBy("CategoryName"));f.getPath=function(){for(var t=[],n=f;n!==f.root;)t.unshift(n),n=n.parent;return t};f.update=function(n){f.CategoryKey=n.CategoryKey||f.CategoryKey;f.haschildren=n.hasChildren||f.haschildren;f.WizardType=n.WizardType||f.WizardType;f.haschildren&&n.SubCategories&&n.SubCategories.length&&(f.SubCategories=n.SubCategories);n.CategoryMemberships&&n.CategoryMemberships.length&&(f.CategoryMemberships=n.CategoryMemberships)};f.buildColumns=function(){var n,t,i;if(!f.parent){for(f.columns=[],n=99,t=[],i=0;i<f.SubCategories.length;i++)n++,n>11&&(t=[],f.columns.push(t),n=0),t.push(f.SubCategories[i]);f.columns.each(function(n){n.css={width:100/f.columns.length+"%"}});f.css={width:259*f.columns.length}}f.loaded=!0}}function g(n){var i=this;i.CustomerKey=n.CustomerKey;i.CustomerNumber=n.CustomerNumber;i.CustomerName=n.CustomerName;i.CompanyCode=n.CompanyCode;i.active=n.active;i.displayName=n.CustomerNumber+" - "+n.CustomerName;i.LineOfBusiness=app.data.GetLineOfBusiness(i.CompanyCode)||{};i.lobKey=i.LineOfBusiness.LineOfBusinessKey;i.loaded=!1;i.preferences={};i.swapTo=i;i.update=function(n){i.ARTermDescription=n.ARTermDescription;i.Addresses=n.Addresses;i.AfterMarketServiceLocation=n.AfterMarketServiceLocation;i.ServiceLocation=n.AfterMarketServiceLocation;i.CustomerTypeKey=n.CustomerTypeKey;i.CustomerType={CustomerTypeKey:n.CustomerTypeKey};i.DefaultShipToAddress=n.DefaultShipToAddress;i.DefaultShipViaCode=n.DefaultShipViaCode;i.Latitude=n.Latitude;i.Longitude=n.Longitude;i.LocationKey=n.LocationKey;i.PhoneNumber=(n.PhoneNumber||"").toPhoneNumber();i.preferences=n.Preferences;i.PurchaseOrderNumberRequired=n.PurchaseOrderNumberRequired;i.hasNationalSearch=!1;i.others=t.user.allCustomers.where(function(n){return n.CompanyCode===i.CompanyCode&&n.CustomerNumber!==i.CustomerNumber})}}function v(n,t,i){this.name=n;this.url=t;i&&(this.url+=app.data.getTokenKey("manufacturer")+i.uri)}function nt(n){var t=this,i=n||"gallery";t.getStyle=function(){return i};t.setStyle=function(n){i=n};t.page=1;t.skip=0;t.maxPage=1;t.activeLob=0;t.take=app.data.defaultTake}function b(n,t){var i=this;i.key=n;i.value=t;i.uri=n+t}function k(i,r){var f=this;(function(){var i=app.data.tokenKeys;f.getToken=function(n){var t=i[n];return t?f.tokens[t]:null};f.setToken=function(n,t){var r=i[n];r&&(f.tokens[r]=new b(r,t+""))};f.removeToken=function(n){var t=i[n];t&&delete f.tokens[t]};f.parse=function(){function i(n){for(angular.extend(f,n[0]),f.exact||(f.results=n),f.CategoryName&&(f.CategoryName=f.CategoryName.substr(0,9)!="B2BPortal|"?"B2BPortal|"+f.CategoryName:f.CategoryName,f.category=app.data.GetCategoryByName(f.CategoryName.fixSpacing()),f.category||(f.category=new w(0,f.CategoryName)));a[f.key].length;)a[f.key].shift().resolve(f)}var t=u.defer();return p[f.key]?(t.resolve(i(p[f.key])),t.promise):(a[f.key]=a[f.key]||[],a[f.key].push(t),a[f.key].length>1)?t.promise:(n.parse({keyword:f.keyword,exact:f.exact}).$promise.then(function(n){p[f.key]=n;i(n)},t.reject),t.promise)};f.getLobs=function(n){var i,t;return f.lobs=n.linesOfBusiness,i=f.getToken("lob"),i&&(t=i.value*1,t==3&&(t=1),!isNaN(t)&&f.lobs.indexOf(t)>-1&&(f.lobs=[t])),f.lobs};f.toSearchObject=function(n,i,r){var e,u={},h,c,a,v,y,p,o,it,w,b,k,d,g;f.Year&&(u.Years=[f.Year]);f.Make&&(u.Makes=[f.Make]);f.Model&&(u.Models=[f.Model]);h=f.Year||f.Make||f.Model;c=app.data.GetCategoryByName(f.CategoryName);c&&(u.Categories=[c.FullName],c.root.WizardType||(h=!0));a=f.getToken("manufacturer");a&&(h=!1);h&&(u.AftermarketExcludedPLines=app.data.omittedPlines);f.Keywords&&f.Keywords!=="null"&&(u.Keyword=f.Keywords);var nt=t.application,s=nt.LinesOfBusiness.firstOrDefault(function(n){return n.LineOfBusinessKey==1})||app.data.GetLineOfBusiness(1),tt=f.getToken("lob");return tt&&(o=tt.value*1,o==3&&(o=1),s=nt.LinesOfBusiness.firstOrDefault(function(n){return n.LineOfBusinessKey==o})||s),s&&(companyCodes=[s.CompanyCode],linesOfBusinessIds=[s.LineOfBusinessKey]),u.CompanyCodes=companyCodes,u.LinesOfBusinessIds=linesOfBusinessIds,u.Take=r,u.Skip=0,v=f.getToken("page"),v&&(e=v.value*1,isNaN(e)&&(e=1),e=Math.clamp(e-1,0,998),u.Skip=e*r),y=f.getToken("price"),y&&(e=y.value.split("-"),u.SalvagePrice=[{Start:e[0],End:e[1]*1-.01}]),p=f.getToken("mileage"),p&&(e=p.value.split("-"),u.Mileage=[{Start:e[0].split("k")[0]*1e3,End:e[1].split("k")[0]*1e3-1}]),a&&(o=a.value.toClean().toUpperCase(),it=l.CatalogService.manufacturers.firstOrDefault(function(n){return n.toClean().toUpperCase()==o}),u.Manufacturer=it||o),w=f.getToken("option"),w&&(e=w.value.split("*")[0].split("+").select(function(n){return decode(n)}),e&&(u.HollanderInterchangeNumbers=e)),b=f.getToken("certification"),b&&(e=b.value.replace(/(Value-Line)/gi,"Value Line"),e&&(u.Certifications=[e])),t.user&&t.user.aqrp.current&&(u.InsuranceCompanies=[t.user.aqrp.current.InsuranceCompanyName]),u.IsNationalSearch=!1,n?(k=f.getToken("sort"),d=0,linesOfBusinessIds.length===1&&(d=linesOfBusinessIds[0]),o=k?k.value:"",g=app.data.GetSort(d,o),g&&(u.Sort=g.Sorting),u.IsPartSearch=!0,u.DoPricingAndAvailability=!0,u.IsFacetOnly=!1):(u.Facets=app.data.facets[0],u.LinesOfBusinessIds.length===1&&(u.Facets=app.data.facets[u.LinesOfBusinessIds[0]]),f.Year&&u.Facets.remove("Year"),u.IsPartSearch=!0,u.DoPricingAndAvailability=!0,u.IsFacetOnly=!1),u};f.toUrl=function(){var n=[],t,r,i;f.category&&f.category.root.WizardType?(n.push(f.category.uri),t=f.getToken("manufacturer"),t&&n.push(t.uri)):(f.Year&&n.push(f.Year),f.Make&&n.push(f.Make.toUpperLower().toWebsiteURL()),f.Model&&n.push(f.Model.toUpperLower().toWebsiteURL()),f.category&&n.push(f.category.uri));f.Keywords&&n.push(f.Keywords.toWebsiteURL());r=[];for(i in f.tokens)r.contains(i)||n.push(f.tokens[i].uri);return"/"+n.join("/")+"/"};f.buildTitle=function(){var n=[],i,r,t;if(f.Year&&n.push(f.Year),f.Make&&n.push(f.Make),f.Model&&n.push(f.Model),f.category&&n.push(f.category.CategoryName),i=n.join(" ")||"Search Results",f.category&&f.category.root.WizardType){for(r=f.category.root,n=[],t=f.category;t!==r;)n.unshift(t.CategoryName),t=t.parent;i=n.join(" ")||"Search Results"}return i};f.getPath=function(){var n="/",t=[],r,i;if(f.Year&&(n+=f.Year+"/",t.push(new v(f.Year,n))),f.Make&&(n+=f.Make.toUpperLower().toWebsiteURL()+"/",t.push(new v(f.Make.toUpperLower(),n))),f.Model&&(n+=f.Model.toUpperLower().toWebsiteURL()+"/",t.push(new v(f.Model.toUpperLower(),n))),f.manufacturer&&t.push(new v(f.manufacturer.Name,"/+m"+f.manufacturer.uri+"/")),f.category){for(r=[],i=f.category;i&&!i.WizardType;)r.unshift(i),i=i.parent;r.each(function(i){t.push(new v(i.CategoryName,n+i.uri+"/",f.manufacturer))})}return t}})(),function(){var t,n;f.url=r||window.location.pathname;f.tokens={};t=f.url.split("/").removeEmpties();f.parts=[];t.each(function(n){if(n.substr(0,1)==="+"){var t=new b(n.substr(0,2),n.substr(2));f.tokens[t.key]=t;t.key===app.data.getTokenKey("manufacturer")&&(f.manufacturer=app.data.GetManufacturerByName(t.value))}else f.parts.push(n)});f.keyword=f.parts.join(" ").toClean().toLowerCase();f.exact=!!i;f.withInsurance=!1;f.key=f.keyword+" exact: "+f.exact;n=["option"];n.each(function(n){var t=f.getToken(n);t&&(f.key+=" "+n+":"+t.value)});f.searchKey=f.key;n=["manufacturer","certification","mileage","price"];n.each(function(n){var t=f.getToken(n);t&&(f.searchKey+=" "+n+":"+t.value)})}()}function c(n,t){var i=this;i.categories=(n||[]).sortBy("CategoryName");i.category=t}function h(i){var r=this;r.years=[];r.makes=[];r.models=[];r.categories=[];r.allCategories=[];r.categoriesCM=[new c];r.allCategoriesCM=[];r.manufacturers=[];r.options=[];r.yearsClass=r.years.length?"":app.data.fieldLoadingClass;r.manufacturersClass=r.manufacturers.length?"":app.data.fieldLoadingClass;r.config={options:!0,swappable:!1};r.selectedCatalog=s.getCatalog();r.showPBE=r.selectedCatalog.lob===3?1:"";r.catalogs=s.catalogs;r.selectCatalog=function(n){r.selectedCatalog=n;s.setCatalog(n)};angular.extend(r.config,i||{});r.showPBE=!1;r.storedSearches=[];r.searchPanelClass="searchPanelHidden";r.searchButtonDisabled=function(){var n=r.getSelectedCategory(),t=n?n.root:null;return t&&t.WizardType?n===t&&!r.manufacturer:!n||n.SubCategories.length?!0:r.optionsClass?!0:(!r.options.length,!1)};r.resetButtonDisabled=function(){var n=r.getSelectedCategory();return(r.year=r.year=="null"?"":r.year,n||r.year)?!1:!0};r.searchButtonDisabledCM=function(){return r.resetButtonDisabledCM()};r.resetButtonDisabledCM=function(){return!r.getSelectedCategoryCM()&&!r.manufacturer};r.setView=function(n){r.showPBE=n};r.config.swappable&&(r.showPBE=!!getCookie("showPBE"));r.setManufacturers=function(n){for(r.manufacturers=n,h.allManufacturers=n,r.manufacturersClass="";r.initializeDefers.length;)r.initializeDefers.shift().resolve()};r.setCategories=function(n){h.categories=[new c(n)];r.categories=h.categories;r.categoriesClass=""};r.selectCategory=function(n){if(me.search=r,r.categories=[r.categories],r.categorySelectValues=[],n)for(r.categorySelectValues.unshift(n),n.SubCategories.length>0&&r.categories.push(n.SubCategories);n.parent!=undefined&&n.parent.WizardType!="PBE";)n=n.parent,r.categories.splice(1,0,n.SubCategories),r.categorySelectValues.unshift(n);r.option=undefined;r.options=[];var t=r.getSelectedCategory();t&&t.SubCategories.length==0&&r.model&&r.selectYMM("model",r.model)};r.selectCategoryCM=function(n){var f=n.FullName.split("|"),e=2,u=f.slice(0,e++).join("|"),t=r.allCategoriesCM.where(function(n){return n.wordCount==3}),i=t.firstOrDefault(function(n){return n.FullName==u}),o;for(r.categoriesCM=[new c(t,i)];i;)u=f.slice(0,e++).join("|"),t=i.getChildren(r.allCategoriesCM),i=null,t.length&&(i=t.firstOrDefault(function(n){return n.FullName==u}),o=new c(t,i),r.categoriesCM.push(o))};r.getSelectedCategory=function(){for(var n=null,t=r.categories.length-1;!n&&t>-1;)n=r.categories[t--].category;return n};r.getSelectedCategoryCM=function(){for(var n=null,t=r.categoriesCM.length-1;!n&&t>-1;)n=r.categoriesCM[t--].category;return n};r.search=function(n){var i=[],u=r.getSelectedCategory(),f=((u||{}).root||{}).WizardType||"";f?(u&&i.push(u.uri),r.manufacturer&&i.push(app.data.getTokenKey("manufacturer")+r.manufacturer.Name.toWebsiteURL().toUpperLower())):(r.year&&r.year!=="null"&&i.push(r.year),r.make&&i.push(r.make.toUpperLower().toClean().toWebsiteURL()),r.model&&i.push(r.model.toUpperLower().toClean().toWebsiteURL()),u&&i.push(u.uri),r.option&&i.push("+h"+r.option.uri.split("+").distinct().join("+")+"*"+r.option.WebDescription.toWebsiteURL()));i.push("+l"+n);t.go("/"+i.join("/")+"/")};r.searchCM=function(){var n=[],i=r.getSelectedCategoryCM();i&&n.push(i.uri);r.manufacturer&&n.push(app.data.getTokenKey("manufacturer")+r.manufacturer.toWebsiteURL().toUpperLower());n.push("+l3");t.go("/"+n.join("/")+"/")};r.reset=function(n){var i=t.user;i&&((r.year=undefined,r.make=undefined,r.makes=[],r.model=undefined,r.models=[],r.category=undefined,r.categories=[new c],r.option=undefined,r.options=[],r.categoriesCM=[new c],r.manufacturer=undefined,n)||r.getYMMCO().then(function(n){r.years=n;r.yearsClass="";r.resetCM()}))};r.resetCM=function(){var n=t.user;n&&r.config.swappable&&!r.cancelReset&&(r.manufacturer=undefined,r.manufacturers=[],r.manufacturersClass=app.data.fieldLoadingClass,r.categoriesCM=[new c([])],r.categoriesCMClass=app.data.fieldLoadingClass,h.getAllManufacturers().then(function(){r.cancelReset||(r.manufacturer=undefined,r.manufacturers=h.manufacturers,r.manufacturersClass="",h.getAllCategoriesCM().then(function(){if(!r.cancelReset){r.categoriesCMClass="";r.allCategoriesCM=h.allCategoriesCM;var n=h.allCategoriesCM.where(function(n){return n.wordCount==3});n.sortBy("CategoryName");r.categoriesCM=[new c(n)]}}))}))};r.getYMMCO=function(i,r,f,e){var h=t.user,c=u.defer(),a,v,s,y,o,l;return h?(a=h.activeCustomers.ids.join("-"),h.ymmco=h.ymmco||{},v=h.ymmco[a]=h.ymmco[a]||{searchs:{}},s={year:0},i&&(s.year=i),r&&(s.make=r.toUpperCase()),f&&(s.model=f.toUpperCase()),e&&(s.category=e.Search),y=JSON.stringify(s),o=v[y]=v[y]||{defers:[c],loading:!1},o.data?c.resolve(o.data):o.loading?o.defers.push(c):(o.loading=!0,i&&r&&f&&e?(l=app.data.GetCategoryByName(e.FullName),l.CategoryMemberships&&l.CategoryMemberships.length?(delete s.category,s.HollanderPartCodes=l.CategoryMemberships.select(function(n){return n.HollanderPartType}),n.getInterchangeYMMLookup(s).$promise.then(function(n){for(o.data=n,o.loading=!1;o.defers.length;){var t=o.defers.shift();t.resolve(n)}})):n.getYMMCO(s).$promise.then(function(n){for(o.data=n,o.loading=!1;o.defers.length;){var t=o.defers.shift();t.resolve(n)}})):n.getYMMCO(s).$promise.then(function(n){for(o.data=n,o.loading=!1;o.defers.length;){var t=o.defers.shift();t.resolve(n)}}))):c.reject(),c.promise};r.getCM=function(i){var e=t.user,o=u.defer(),h,c,f;if(e){h=e.activeCustomers.ids.join("-");e.cm=e.cm||{};var l=e.cm[h]=e.cm[h]||{searchs:{}},s={CompanyCodes:["001"],LinesOfBusinessIds:[1],Skip:0,IsNationalSearch:!1,Facets:[i],IsPartSearch:!1,DoPricingAndAvailability:!1,IsFacetOnly:!0},a=r.getSelectedCategoryCM();s.Categories=[a?a.Search:"B2BPortal|Paint"];i=="Category"&&r.manufacturer&&(s.Manufacturer=r.manufacturer);c=JSON.stringify(s);f=l[c]=l[c]||{defers:[o],loading:!1};f.data?o.resolve(f.data):f.loading?f.defers.push(o):(f.loading=!0,n.getFacets(s).$promise.then(function(n){for(f.data=n,f.loading=!1;f.defers.length;){var t=f.defers.shift();t.resolve(n)}}))}else o.reject();return o.promise};e.$on("customer.loaded",function(){r.reset()});e.$on("user.active",function(){r.reset(!0)});r.initializeDefers=[];r.waitUntilInitialized=function(){var n=u.defer();return r.initializeDefers.push(n),h.years.length&&h.categories[0].categories.length&&h.allManufacturers.length&&n.resolve(),n};r.fromUrl=function(){var t=u.defer(),n=new k(!0);return n.parse().then(function(){function y(t){var u=n.getToken("option")||{},i=u.value||"",f=(i.split("*")[1]||"").toLowerCase();i=i.split("*")[0];r.option=(t||[]).firstOrDefault(function(n){return n.WebDescription.toWebsiteURL().toLowerCase()===f});r.option||(r.option=(t||[]).firstOrDefault(function(n){return n.uri===i}))}function a(n){if(!i.length&&n&&n[0]&&n[0].PartNumber)return y(n);var t=i.shift(),u=t?n.categories.firstOrDefault(function(n){return n.Search===t.FullName}):null;if(u)return r.selectYMM("category",u,n).then(a)}function p(t){if(n.Model){var u=n.Model.toLowerCase(),f=(t||[]).firstOrDefault(function(n){return n.toLowerCase()===u});r.selectYMM("model",f).then(function(t){var r=n.category;if(r){for(i=[r];r.parent;)i.unshift(r.parent),r=r.parent;i.length&&a(t)}})}}function w(){if(n.Make){var t=r.makes.firstOrDefault(function(t){return t.toLowerCase()===n.Make.toLowerCase()});r.selectYMM("make",t).then(function(n){p(n)})}}var f,e,o,i;if(r.reset(!0),r.showPBE=!1,f=2,e=n.getToken("lob"),e&&(f=e.value*1),r.selectCatalog(r.catalogs.firstOrDefault(function(n){return n.lob==f})),r.config.swappable){var u="",t="",l=n.getToken("manufacturer");if(l&&(u=l.value),o=(n.CategoryName||"").toLowerCase(),(o.indexOf("paint|")>-1||o.indexOf("paint-")>-1)&&(t=n.CategoryName),u||t){r.showPBE=!0;r.categoriesCM=[new c];r.manufacturer=undefined;r.manufacturers=h.allManufacturers||[];r.allCategoriesCM=r.allCategoriesCM||[];r.selectCatalog(r.catalogs.firstOrDefault(function(n){return n.lob==3}));function s(){var i,n;if(r.categoriesCMClass="",t){for(var u=[],f=undefined,n=undefined;t!="B2BPortal";)i=r.allCategoriesCM.where(function(n){return n.parent==t}),i.length&&u.unshift(new c(i,f)),f=r.allCategoriesCM.firstOrDefault(function(n){return n.Search==t}),t=t.split("|").slice(0,-1).join("|");r.categoriesCM=u;r.cancelReset=!1;n=r.categoriesCM.lastOrDefault(function(n){return n.category});n&&r.selectCM("category",n.category,n)}}function v(){r.manufacturersClass=app.data.fieldLoadingClass;h.getAllManufacturers().then(function(){if(r.manufacturersClass="",!u)return s();r.manufacturers=h.manufacturers;var t=u.toClean().toLowerCase(),n=r.manufacturers.firstOrDefault(function(n){return n.toClean().toLowerCase()==t});n&&(r.categoriesCMClass=app.data.fieldLoadingClass,r.selectCM("manufacturer",n).then(s,s))})}v();return}}i=[];n.Year&&r.selectYMM("year",n.Year).then(function(n){w(n)})}),t.promise};r.buildCategories=function(n,t){var i=n.select(function(n){return new h.Category(n)});return i.each(function(n){var t=n.parent;n.parent=i.firstOrDefault(function(n){return n.Search==t});n.parent&&n.parent.SubCategories.push(n);n.Search.split("|").length==2&&i.each(function(t){(t.Search==n.Search||t.Search.substr(0,n.Search.length+1)==n.Search+"|")&&(t.root=n)})}),t==2?r.allCategories=i:r.allCategoriesCM=i,i.where(function(n){return n.wordCount===t})};r.selectYMM=function(n,t,i){var f=u.defer(),o,e;return n==="year"?(r.year=t+"",r.make=undefined,r.makes=[],r.model=undefined,r.models=[],r.category=undefined,r.categories=[new c],r.option=undefined,r.options=[],!t)?(f.resolve(),f.promise):(t==1&&(t=0),r.makesClass=app.data.fieldLoadingClass,r.getYMMCO(t).then(function(n){r.makesClass="";n.each(function(t,i){n[i]=t.toUpperLower()});r.makes=n.where(function(n){return n}).sort();f.resolve()},f.reject),f.promise):n==="make"?(r.make=t,r.model=undefined,r.models=[],r.category=undefined,r.categories=[new c],r.option=undefined,r.options=[],!t)?(f.resolve(),f.promise):(r.modelsClass=app.data.fieldLoadingClass,r.getYMMCO(r.year,t).then(function(n){r.modelsClass="";n.each(function(t,i){n[i]=t.toUpperLower()});r.models=n;f.resolve(n)},f.reject),f.promise):n==="model"&&(r.category=undefined,r.categories=[new c],r.option=undefined,r.options=[],r.model=t,o=r.getSelectedCategory(),r.model)?(r.categoriesClass=app.data.fieldLoadingClass,r.getYMMCO(r.year,r.make,r.model).then(function(n){r.categoriesClass="";var t=r.buildCategories(n,2);r.categories=[new c(t)];f.resolve(r.categories[0])},function(){r.allCategories=[]}),f.promise):n==="category"&&(i.category=t,r.options=[],r.option=undefined,r.categories=r.categories.slice(0,r.categories.indexOf(i)+1),t)?(e=t.SubCategories,e.length?(i=new c(e),r.categories.push(i),f.resolve(i),f.promise):(r.optionsClass=app.data.fieldLoadingClass,r.getYMMCO(r.year,r.make,r.model,t).then(function(n){r.optionsClass="";n.each(function(n){n.WebDescription=n.WebDescription||"Unknown"});var t=n.select(function(n){return n.WebDescription.toLowerCase()}).distinct();n=t.select(function(t){var r=n.where(function(n){return t==n.WebDescription.toLowerCase()}),i={WebDescription:t.toUpperLower(),Interchanges:r.select(function(n){return encode(n.PartNumber+"-"+n.InterchangeNumber)})};return i.uri=i.Interchanges.join("+")+"*"+i.WebDescription.toWebsiteURL(),i});r.options=n;n.length===1&&(r.option=n[0]);f.resolve(n)},function(n){r.optionsClass="";alert("Get Options Error"+n.headers("Errors"))}),f.promise)):(f.resolve(),f.promise)};r.selectCM=function(n,t,i){var f=u.defer(),e,o,s;return n==="manufacturer"?(r.manufacturer=t,e=r.getSelectedCategoryCM(),e&&(r.categoriesCM=[new c]),r.categoriesCMClass=app.data.fieldLoadingClass,r.getCM("Category").then(function(n){r.categoriesCMClass="";r.allCategoriesCM=h.processCategoryCounts(n.CategoryCounts,!0);var t=r.allCategoriesCM.where(function(n){return n.wordCount==3});r.categoriesCM=[new c(t)];e&&r.selectCategoryCM(e);f.resolve(r.categoriesCM[0])},function(){r.manufacturers=[]}),f.promise):n==="category"?(i.category=t,r.categoriesCM=r.categoriesCM.slice(0,r.categoriesCM.indexOf(i)+1),e=r.getSelectedCategoryCM(),o=r.manufacturer,t&&(s=t.getChildren(r.allCategoriesCM),s.length&&(i=new c(s),r.categoriesCM.push(i))),r.manufacturersClass=app.data.fieldLoadingClass,r.getCM("Manufacturer").then(function(n){r.manufacturersClass="";r.manufacturers=n.ManufacturerCounts.select(function(n){return n.Manufacturer}).removeEmpties();r.manufacturers.sort();r.allManufacturers=r.allManufacturers||r.manufacturers;o&&r.manufacturers.indexOf(o)==-1&&(r.manufacturer=undefined);f.resolve(i)},function(){r.allCategories=[]}),f.promise):(f.resolve(),f.promise)}}function tt(n,i,r){var l=t.user,a=t.application,u=this,e,f,o,s;if(u.active=!0,u.title=n.title,u.items=[],u.activeItem=undefined,u.activeItemIndex=-1,u.parse=r,i=i.sort(n.sort),e=u.parse.getToken(n.token),f="",e&&(f=e.value.toLowerCase()),i.each(function(t){var r=t[n.countKey],e,i;angular.isFunction(n.countKey)&&(r=n.countKey(t));r&&(e=(r+"").toWebsiteURL(),i={title:r,token:n.token,count:t.Count,value:n.toValue(t),FullName:t.FullName,uri:e,active:e.toLowerCase()===f},i.active&&(u.activeItem=i,u.activeItemIndex=u.items.length),i.uri=app.data.getTokenKey(n.token)+i.value,u.items.push(i))}),n.token==="category"){o=[];f="";u.parse.category&&(f=u.parse.category.uri.toLowerCase());function c(n,t){var i=this;i.path=n;i.FullName=app.ApplicationName+"|"+n;i.count=t;i.title=n.split("|").lastOrDefault();i.CategoryName=this.title;i.token="category";i.uri=n.toWebsiteURL();i.value=i.title;i.SubCategories=[];i.active=i.uri.toLowerCase()===f}u.items.each(function(n){for(var e,t,s,r=n.FullName.split("|").slice(1,99),f=o,i=0;i<r.length;i++)e=r.slice(0,i+1).join("|"),t=f.firstOrDefault(function(n){return n.path===e}),t?i===r.length-1&&(t.count=n.count):(s=n.count,i!==r.length-1&&(s=0),t=new c(e,n.count),t.active&&(u.activeItem=t),f.push(t)),f=t.SubCategories});s=[];function h(n,t){n=n.sortBy("title");n.each(function(n){n.SubCategories.length&&(n.hideCount=!0);s.push(n);n.css={paddingLeft:t};h(n.SubCategories,t+5)})}h(o,0);u.items=s;u.activeItemIndex=u.items.indexOf(u.activeItem)}n.reverse&&u.items.reverse()}var l=this,p,a,y;return t.Factory=this,p={},a={},y={},h.getAllManufacturers=function(){var i=u.defer(),r;if(h.manufacturers)i.resolve(h.manufacturers);else{if(l.CatalogService.manufacturers)return h.manufacturers=l.CatalogService.manufacturers,i.resolve(h.manufacturers),i.promise;if(h.defers=h.defers||[],h.defers.push(i),!t.user)return i.promise;h.loading||(h.loading=!0,r={CompanyCodes:["001"],LinesOfBusinessIds:[1],Skip:0,IsNationalSearch:!1,Facets:["Manufacturer"],IsPartSearch:!1,DoPricingAndAvailability:!1,IsFacetOnly:!0,Categories:["B2BPortal|Paint"]},n.getFacets(r).$promise.then(function(n){for(h.manufacturers=h.processManufacturers(n),h.loading=!1;h.defers.length;){var t=h.defers.shift();t.resolve(h.manufacturers)}}))}return i.promise},h.getAllCategoriesCM=function(){var i=u.defer(),e,r,o;if(h.allCategoriesCM)i.resolve(h.allCategoriesCM);else{if(l.CatalogService.categories){function f(n){var t=[];return n.each(function(n){t.push(n.FullName);t=t.concat(f(n.SubCategories))}),t}return e=f(l.CatalogService.categories).select(function(n){return{FullName:n}}),r=h.processCategoryCounts(e,!0),h.allCategoriesCM=r,i.resolve(r),i.promise}if(h.defers=h.defers||[],h.defers.push(i),!t.user)return i.promise;h.loading||(h.loading=!0,o={CompanyCodes:["001"],LinesOfBusinessIds:[1],Skip:0,IsNationalSearch:!1,Facets:["Category"],IsPartSearch:!1,DoPricingAndAvailability:!1,IsFacetOnly:!0,Categories:["B2BPortal|Paint"]},n.getFacets(o).$promise.then(function(n){var i=h.processCategoryCounts(n.CategoryCounts,!0),t;for(h.allCategoriesCM=i,h.loading=!1;h.defers.length;)t=h.defers.shift(),t.resolve()}))}return i.promise},h.processManufacturers=function(n){var t=n.ManufacturerCounts.select(function(n){return n.Manufacturer}).removeEmpties();return t.sort(),t},h.processCategoryCounts=function(n,t){return n.each(function(n){n.CategoryName=n.CategoryName||n.FullName.split("|").lastOrDefault();n.isPBE=n.FullName.indexOf("B2BPortal|Paint")>-1}),n=t?n.where(function(n){return n.isPBE}):n.where(function(n){return!n.isPBE}),n=n.select(function(n){return new h.Category(n.FullName)}),n.sortBy("CategoryName"),n},h.Category=function(n){var t=this,i=n.fixSpacing().split("|");t.Search=n;t.internalSearch=i.join("|");t.FullName=i.slice(1).join("|");t.parent=i.slice(0,-1).join("|");t.root=i.slice(0,2).join("|");t.CategoryName=i.slice(-1)[0].toUpperLower();t.uri=t.FullName.toWebsiteURL();t.wordCount=i.length;t.SubCategories=[];t.getChildren=function(n){return n.where(function(n){return n.parent===t.internalSearch})}},e.$on("customer.loaded",h.getAllManufacturers),h.years=[],h.categories=[new c],h.allManufacturers=[],l.Configuration=nt,l.ProductSearch=h,l.PathPart=v,l.Parse=k,l.Token=b,l.Filter=tt,l.Category=w,l.Customer=g,l}]);app.factory("ProductFactory",["Factory","$q","$resource","$http","$rootScope","$timeout","DialogService","UserService","LocalizationService",function(n,t,i,r,u,f,e,o,s){function v(n,t,i,r,f,e,s,h,c){var l=this;l.UnitOfMeasure=n;l.Description=t;l.QuantityPerUnitOfMeasure=s;l.part=c;l.partAvailabilityDisplay=c.AvailabilityDisplay;l.etaDescription="";l.tempAvailability=h;c.inactiveAccountText&&(h="OutOfStock");l.update(i,r,f,e,h,c.AvailabilityDisplay,!1);l.autoUpdater=u.$on("customer.loaded",function(){var n=o.user.getCustomer(l.part.LineOfBusiness.CompanyCode);n&&n.ServiceLocation&&(l.update(l.ListPrice,l.CustomerPrice,l.FirstEDA,l.LastEDA,l.tempAvailability,!1),l.autoUpdater())})}function y(n){var t=this;n.name&&(n.longDescription=n.description,n.description=n.name);t.Code=n.Code||n.code||n.productCode;t.Cost=n.Cost||n.cost||0;t.Description=n.Description||n.description;t.LongDescription=n.LongDescription||n.longDescription;t.Default=n.Default||n.default||!1;t.RequiresQualification=n.RequiresQualification||n.requiresQualification;t.DisplayText=n.DisplayText||n.displayText;t.PossibleAnswers=n.PossibleAnswers||n.possibleAnswers;t.$description=t.Description;t.Cost!==undefined&&(t.$cost=t.Cost==0?"Free":"$"+t.Cost.toCurrency(),t.Cost>0&&(t.$description+=" ("+t.$cost+")"))}function h(t){var i=this;(function(){var f,r,u;angular.extend(i,t);f=o.user;r=i.LineOfBusiness||{CompanyCode:"001"};r=app.data.linesOfBusiness.firstOrDefault(function(n){var t=n.CompanyCode||n.LineOfBusiness.CompanyCode;return t===r.CompanyCode});angular.extend(i.LineOfBusiness,r);i.Categories&&(u=i.Categories.select(function(n){return n.FullName}).lastOrDefault(),u&&(i.Category=app.data.GetCategoryByName(u.toLowerCase())||new n.Category(0,u)||{CategoryName:"Unknown Category"}));i.ListPrice=i.ListPrice||i.KeyStoneList||0;i.ListPrice=Math.max(i.ListPrice,i.CustomerPrice);i.CustomerPrice=i.CustomerPrice||i.ListPrice;i.ListPrice||(i.Availability="OutOfStock");i.CompanyCode=i.LineOfBusiness.CompanyCode;i.LineOfBusinessKey=i.LineOfBusiness.LineOfBusinessKey;i.ext={icon:i.LineOfBusiness.icon||"fa-question",iconText:i.LineOfBusiness.iconText,isSalvage:i.LineOfBusiness.LineOfBusinessKey===2,images:[],name:i.LineOfBusiness.iconText+" "+(i.Category||{CategoryName:""}).CategoryName,quantity:i.PartQuantity||1,lastQuantity:i.PartQuantity||1,fitmentSearch:{},fitment:[]};i.FTCDisplay&&(i.ext.iconText=i.FTCDisplay);i.IsReman=i.FTCDisplay=="Remanufactured";i.ext.isSalvage&&(i.ext.mileage=(i.Mileage||0).toK(),i.Guid&&(i.PartNumber=i.Guid));i.getCustomer=function(){return o.user?o.user.getCustomer(i.CompanyCode):{}};i.customer=i.getCustomer()||{};i.id=i.PartNumber+"-"+i.customer.CustomerNumber+"-"+i.CompanyCode})(),function(){var t=i.FTCDisplay||i.ext.iconText,n;/(Reconditioned|Remanufactured|Remodeled)/g.test(i.DisplayDescription)&&(/(Reconditioned)/g.test(i.DisplayDescription)&&(t="Reconditioned"),/(Remanufactured)/g.test(i.DisplayDescription)&&(t="Remanufactured"),/(Remodeled)/g.test(i.DisplayDescription)&&(t="Remodeled"));i.ext.iconText=t+" Part";i.ext.partText=t;n="";i.ext.isSalvage?i.SalvageSourceVehicle&&(n+=i.SalvageSourceVehicle.Year+" ",n+=i.SalvageSourceVehicle.Make+" ",n+=i.SalvageSourceVehicle.Model+" "):i.vehicle&&(i.vehicle.year&&(n+=i.vehicle.year+" "),i.vehicle.make&&(n+=i.vehicle.make+" "),i.vehicle.model&&(n+=i.vehicle.model+" "));n+=i.Manufacturer?i.Manufacturer+" ":i.ext.partText+" ";i.CategoryName="";i.Category&&(i.CategoryName=i.Category.CategoryName,n+=i.CategoryName+" ");i.WheelPartInfo&&(n=$.trim(n)+", "+i.WheelPartInfo.Diameter+"x"+i.WheelPartInfo.Width);n=$.trim(n).toUpperLower();i.DisplayPartDescription=n;n+=" - "+i.PartNumber;i.DisplayDescription=n;i.PartName=n;i.checkoutTitle=[t,(i.CategoryName||"").toUpperLower(),"-",i.PartNumber].join(" ")}(),function(){function n(n,t,r){var u={thumbnail:n.toFixedImageUrl(),largeimage:t.toFixedImageUrl(),title:r};i.ext.images.push(u)}if(i.PartImages||(i.PartImages=[]),i.ext.isSalvage&&i.SalvageSourceVehicle&&i.SalvageSourceVehicle.SourceVehicleImages&&i.SalvageSourceVehicle.SourceVehicleImages.each(function(n){i.PartImages.push({Title:"Source Vehicle Image",Size:"largeimage",URL:n})}),i.PartImages.length||(i.PartImages.push({Size:"largeimage",URL:blankImage}),i.PartImages.push({Size:"thumbnail",URL:blankImage})),i.ext.isSalvage)i.PartImages.each(function(t){n(t.URL||blankImage,t.URL||blankImage,t.Title||"")});else{var t=i.PartImages.firstOrDefault(function(n){return n.Size==="Thumbnail"}),u=i.PartImages.firstOrDefault(function(n){return n.Size==="SmallImage"}),r=i.PartImages.firstOrDefault(function(n){return n.Size==="LargeImage"});n(t?t.URL:blankImage,r?r.URL:blankImage,"")}i.ext.hasImage=!0}(),function(){/ /g.test(i.PartNumber)&&(i.ext.isCore=!0);i.ext.isCore&&(i.CustomerPrice=0,i.ListPrice=0,i.ExtendedPrice=0);i.ListPrice=tryParseMoney(i.ListPrice);i.CustomerPrice=tryParseMoney(i.CustomerPrice);i.ListPrice==0&&(i.Availability="OutOfStock");o.user.hasPermission("YourPrice")&&i.CustomerPrice==0&&(i.Availability="OutOfStock")}(),function(){var n=(i.AlternateUnitsOfMeasure||[]).firstOrDefault(function(n){return n.UnitOfMeasure==i.UnitOfMeasure})||{UnitOfMeasure:i.UnitOfMeasure,Description:i.UnitOfMeasureDescription||i.UnitOfMeasure,QuantityPerUnitOfMeasure:1};i.ext.unitsOfMeasure=[new v(n.UnitOfMeasure,n.Description,i.ListPrice,i.CustomerPrice,i.FirstEDA,i.LastEDA,n.QuantityPerUnitOfMeasure||1,i.Availability,i)];i.ext.selectedUOM=i.ext.unitsOfMeasure[0];i.ext.selectedUOM.loaded=!0;(i.AlternateUnitsOfMeasure||[]).each(function(n){n.UnitOfMeasure=n.UnitOfMeasure||"EA";var t=i.ext.unitsOfMeasure.firstOrDefault(function(t){return n.UnitOfMeasure==t.UnitOfMeasure});t||i.ext.unitsOfMeasure.push(new v(n.UnitOfMeasure,n.Description,0,0,"","",n.QuantityPerUnitOfMeasure,"Loading",i))})}(),function(){function h(n,t){if(!n||!t)return t;n=n.toUpperCase();t=t.toUpperCase();var i="";return(t.substr(0,n.length)==n&&(i=$.trim(t.substr(n.length,t.length))),i=$.trim(i.replace(/MERCEDES/gi,"")),i!="")?i:t}function s(n,t,r,u,f){var o=n,e,s;t>n&&(o=o+"-"+t);o+=" "+r+" "+u;e=[];e.push(n);e.push(r.toClean().toUpperLower().toWebsiteURL());e.push(u.toClean().toUpperLower().toWebsiteURL());s=i.Category;s&&e.push(s.uri);i.ext.fitment.push({text:o,url:"/"+e.join("/")+"/",webDescription:f})}var t,e,r,u,o,f,n;for(i.Fitment||(i.Fitment=[]),i.Fitment&&i.Fitment.length>0&&(i.Fitment[0].SystemMake=="PBE"||i.Fitment[0].SystemMake=="MISC")&&(i.Fitment=[]),t=[],i.Fitment.each(function(n){var u,r,f;for(n.WebDescription=$.trim(n.WebDescription)||i.CategoryName||"",n.SystemModel=h(n.SystemMake,n.SystemModel),n.SystemMake=n.SystemMake.toUpperLower(),n.SystemModel=n.SystemModel.toUpperLower(),n.name=n.SystemMake+" "+n.SystemModel+" "+n.WebDescription,u=-1,r=0;r<t.length;r++)t[r].name==n.name&&(u=r,r=t.length);u==-1&&(t.push({name:n.name,list:[]}),u=t.length-1);t[u].list.push(n);f=[n.SystemYear,n.SystemMake,n.SystemModel].join(" ").toLowerCase();i.ext.fitmentSearch[f]=n;f=[n.SystemYear,n.SystemMake,n.SystemMake,n.SystemModel].join(" ").toLowerCase();i.ext.fitmentSearch[f]=n}),e=0;e<t.length;e++)if(r=t[e].list,r.length==1)n=r[0],s(n.SystemYear,n.SystemYear,n.SystemMake,n.SystemModel,n.WebDescription);else for(r.sort(function(n,t){return n.SystemYear>t.SystemYear?1:n.SystemYear==t.SystemYear?0:-1}),u=r[0].SystemYear,o=u+1,f=1;f<r.length;f++)n=r[f],n.SystemYear>o||f==r.length-1?(s(u,n.SystemYear,n.SystemMake,n.SystemModel,n.WebDescription),u=n.SystemYear,o=u+1):o++;i.product_YMM="";i.Fitment&&i.Fitment.length&&(i.product_YMM=[i.Fitment[0].SystemYear,i.Fitment[0].SystemMake,i.Fitment[0].SystemModel].join(" "))}(),function(){var n,t;i.ext.certifications=i.GetPartCertifications(i);n="";i.ext.certifications&&(n="("+i.ext.certifications+")");n=="(No Certifications)"&&(n="");i.WebDescription=$.trim(i.WebDescription)||i.CategoryName||"";i.PartDescription||(i.PartDescription=i.WebDescription);t=[];i.PartDescription&&t.push(i.PartDescription);n&&t.push(n);i.ext.subTitle=t.join(", ")}(),function(){(i.insurancePrograms=[],i.InsurancePrograms&&i.InsurancePrograms.length)&&i.InsurancePrograms.each(function(n){var t=app.data.GetInsurnaceByName(n.ProgramKey);t&&i.insurancePrograms.push(t.InsuranceCompanyName)})}(),function(){var n=i.path=[],u,f,t,r,e;i.Category&&(u=i.Category.getPath(),f=[],i.Category.root.WizardType?(i.Manufacturer&&n.push({text:i.Manufacturer,url:"/"+i.Category.WebsiteURL+"/"}),u.each(function(t){i.Manufacturer?n.push({text:t.CategoryName,url:"/"+t.uri+"/"+app.data.tokenKeys.manufacturer+i.Manufacturer.toWebsiteURL()}):n.push({text:t.CategoryName,url:"/"+t.uri+"/"})})):(t=i.Fitment[0],t?(r=[t.SystemYear],n.push({text:t.SystemYear,url:"/"+r.join("/")+"/"}),r.push(t.SystemMake.toClean().toUpperLower().toWebsiteURL()),n.push({text:t.SystemMake,url:"/"+r.join("/")+"/"}),r.push(t.SystemModel.toClean().toUpperLower().toWebsiteURL()),n.push({text:t.SystemModel,url:"/"+r.join("/")+"/"}),u.each(function(t){n.push({text:t.CategoryName,url:"/"+r.join("/")+"/"+t.uri+"/"})})):u.each(function(t){n.push({text:t.CategoryName,url:"/"+t.WebsiteURL+"/"})})));e=5}(),function(){var n="",t;i.Category&&i.Category.root&&(i.Category.root.WizardType?i.Category&&i.Category&&(n="/"+i.Category.uri+"/"):(t=i.ext.fitment[0],t&&(n=t.url.split("/"),n.removeAt(1),n=n.join("/"))),i.ext.url=i.ext.isSalvage?(n||"/")+"+i"+i.PartNumber:(n||"/")+"+p"+i.PartNumber)}(),function(){var r,t;i.AvailableWarranties=(i.AvailableWarranties||[]).select(function(n){return new y(n)});i.forcedWarranty=!1;i.AvailableWarranties.length==1&&(i.ext.SelectedWarranty=i.AvailableWarranties[0],i.forcedWarranty=!0);i.SelectedWarranty&&(i.SelectWarranty(i.SelectedWarranty.Code),i.ext.SelectedWarranty||(r=new y(i.SelectedWarranty),i.AvailableWarranties=[r],i.ext.SelectedWarranty=r,i.forcedWarranty=!0));t=n.CartService.getPartByPartNumber(i.PartNumber);t&&t.ext.SelectedWarranty&&i.SelectWarranty(t.ext.SelectedWarranty.Code);i.WarrantySet=function(){var t,u,r;i.AvailableWarranties.length&&(t=n.CartService.getPartByPartNumber(i.PartNumber),t&&(u=(t.ext.SelectedWarranty||{}).Code,r=(i.ext.SelectedWarranty||{}).Code,u!==r&&(t.SelectWarranty(r),t.UpdateCart())))}}(),function(){var u=o.user.customers[i.CompanyCode],t,n,r;u||(t=i.LineOfBusiness.LineOfBusinessKey,n=i.LineOfBusiness.iconText,i.inactiveAccountText="Sorry, but you must have an active "+n+" Account to purchase this part.",r=["an Aftermarket/Recycled","an "+n,"a "+n],i.createAccountText="Would you like to create "+r[t]+" Account?")}(),function(){var n=Date.today();i.ext.productHistoryDate="";i.ext.partHistoryMaxDate=n.addDays(-1);i.ext.partHistoryMinDate=n.addYears(-1)}();i.updateFavoritePart();i.QtySelectChange()}function a(n,t,i,r){var u=this;angular.isObject(n)&&(t=n.LineOfBusinessKey||n.LineOfBusiness.LineOfBusinessKey,r=n.Quantity||n.ext.quantity,i=n.UnitOfMeasure||n.ext.selectedUOM.UnitOfMeasure,n=n.PartNumber);u.LineOfBusinessKey=t;u.PartNumber=n;u.UnitOfMeasure=i;u.Quantity=r}var l=i("",{},{getPricing:{method:"GET",url:app.api+"aisle/GetPricingAndAvailability"},getSalvagePartHistory:{method:"GET",url:app.api+"aisle/getsalvageparthistory"},getAftermarketPartHistory:{method:"GET",url:app.api+"aisle/getparthistory"},updateFavorites:{method:"POST",url:app.api+"cart/UpdateFavorites"}}),c;return l.getWarranties=function(n){var i=t.defer(),u=app.version.warranty+n;return r.get(u).then(function(n){n=n.data||n;i.resolve(n)},i.reject),i.$promise=i.promise,i},function(){v.prototype.update=function(n,t,i,r,u,f,e){var h=this,w,l,y,a,v,p;n=n||0;t=t||0;h.ListPrice=t>n?t:n;h.CustomerPrice=t||n;h.FirstEDA=i;h.LastEDA=r;h.loaded=!1;h.partAvailabilityDisplay=f;h.edaMethod="Estimated "+f+" Date";h.available=u&&u!=="OutOfStock";h.part.ext.isSalvage||(h.available=!0);t===0&&(h.available=!1);h.AvailabilityDisplay="";switch(u){case"Loading":h.AvailabilityDisplay="Loading";h.FirstEDA="";break;case"AvailableLocal":h.AvailabilityDisplay="Yes - Local";break;case"AvailableByTransfer":h.AvailabilityDisplay="Yes";break;case"AvailableNational":h.AvailabilityDisplay="";h.FirstEDA="Call";h.edaMethod="";break;default:h.AvailabilityDisplay="Out of Stock";h.FirstEDA=""}if(h.getIn=0,h.getOn="",h.available&&(w=o.user,l=w.getCustomer(h.part.LineOfBusiness.CompanyCode),l&&l.ServiceLocation)){y=l.DefaultShipViaCode==="01";y=!0;a=new Date(h.FirstEDA);y&&(a=a.toETA(1));h.getOn=a.toString("dddd, MMM. d");h.getOn=h.getOn.replace(/May./g,"May");h.getOn=h.getOn.replace(/June./g,"June");h.getOn=h.getOn.replace(/July./g,"July");a.toString("MM/dd/yyyy")===(new Date).toString("MM/dd/yyyy")&&(h.getOn="Today");a.toString("MM/dd/yyyy")===(new Date).addDays(1).toString("MM/dd/yyyy")&&(h.getOn="Tomorrow");var c=l.ServiceLocation.B2CTimeZone||"Central Standard Time",b=l.ServiceLocation.B2CPickUpEndTime||"16:00:00",b="16:00:00";h.etaDescription="";v=(new Date).toString().indexOf("Daylight")>-1?"DT":"ST";c=c.replace(/Eastern Standard Time/,"C"+v);c=c.replace(/Central Standard Time/,"C"+v);c=c.replace(/Mountain Standard Time/,"C"+v);c=c.replace(/Pacific Standard Time/,"C"+v);p=new Date((new Date).toString("MM/dd/yyyy")+" "+b+" "+c);p=p.getTime()+w.timeDiff*1e3;h.endTime=new Date(p).toString("MM/dd/yyyy HH:mm:ss");h.orderbyText="Get it [date]. Order within [time]";y||(h.orderbyText="Pick it up [date]. Order within [time]");h.orderbyText=s.$translate(h.orderbyText)}h.loaded=e}}(),function(){h.prototype.SetSelectedUOM=function(i,r,u){function s(){n.CartService.updateCartPart(f).then(function(){delete f.ext.oldUOM;o.resolve()},function(){f.ext.selectedUOM=f.ext.oldUOM;delete f.ext.oldUOM;o.reject()})}var f=this,o=t.defer(),h;return f.ext.oldUOM=f.ext.selectedUOM,i=f.ext.selectedUOM=i||f.ext.unitsOfMeasure[0],i.loaded||u?r&&s():(i.loading=!0,h={isNationalSearch:!1,partNumber:f.PartNumber,quantity:1,unitOfMeasure:i.UnitOfMeasure},l.getPricing(h).$promise.then(function(n){n=n.data||n;i.update(n.ListPrice,n.CustomerPrice,n.FirstEDA,"",n.Availability,n.AvailabilityDisplay,!0);r?s():o.resolve()},function(n){i.loading=!1;e.error(n.headers("Errors"));o.reject()})),o.promise};h.prototype.getUOM=function(n){var t=this;return(n=n||"",!n)?t.ext.selectedUOM:t.ext.unitsOfMeasure.firstOrDefault(function(t){return t.UnitOfMeasure.toUpperCase()===n.toUpperCase()||t.Description.toUpperCase()===n.toUpperCase()})};h.prototype.GetPartCertifications=function(){var t=this,n="";return t.IsCapa&&(n=n+"CAPA, "),t.IsDiamond&&(n=n+"Diamond Standard, "),t.IsNsf&&(n=n+"NSF, "),t.IsPlatinumPlus&&(n=n+"Platinum Plus, "),t.IsValueLine&&(n=n+"Value Line, "),n!=""?n.slice(0,n.length-2):"No Certifications"};h.prototype.isAddToCartButtonDisabled=function(){var t=this;return o.user.p.addtocart?t.isLoading?!0:t.ext.isSalvage&&n.CartService.getPartByPartNumber(t.PartNumber)?!0:o.user.getCustomer(t.LineOfBusiness.CompanyCode)?!t.ext.selectedUOM.available:!0:!0};h.prototype.AddPartToCart=function(){var t=this,r=n.CartService.getPartByPartNumber(t.PartNumber),i;!r&&t.Fitment&&t.Fitment.length>0&&(i=null,i||(i=t.Fitment[0]),t.VehicleYear=i.SystemYear,t.VehicleMake=i.SystemMake,t.VehicleModel=i.SystemModel);t.isLoading=!0;n.CartService.addPartToCart(t).then(function(){t.isLoading=!1;t.ext.quantity=1;var n=s.$translate("Part was added to your cart");n+=". <div style='padding-top: 10px;' class='text-center'><a href='/cart/' class='btn btn-default'>";n+=s.$translate("Go to Cart");n+="<\/a><\/div>"},function(n){var i=n?n.msg:"";e.error(i);t.isLoading=!1})};h.prototype.isInCart=function(){var t=this;return n.CartService.hasPartNumber(t.PartNumber)};h.prototype.GotoPD=function(){var n=this,t=[],i=n.Fitment[0],r;i&&(t.push(i.SystemMake.toClean().toUpperLower().toWebsiteURL()),t.push(i.SystemModel.toClean().toUpperLower().toWebsiteURL()));r=n.Categories[n.Categories.length-1];r&&t.push(r.WebsiteURL);t.push((n.ext.isSalvage?"+i":"+p")+n.PartNumber);o.goto("/"+t.join("/")+"/")};h.prototype.CurrentPartTotal=function(){var t=this;return(n.CatalogService.retailView?t.ext.selectedUOM.ListPrice:t.ext.selectedUOM.CustomerPrice)*t.ext.quantity};h.prototype.AddQty=function(n,t){var i=this;i.ext.quantity=Math.max(1,Math.min(999,i.ext.quantity+n));i.QtyChange(t)};h.prototype.UpdateCart=function(){var t=this;n.CartService.updateCartPart(t).then(function(){t.ext.lastQuantity=t.ext.quantity},function(n){n&&n.msg&&e.warning(n.msg)})};h.prototype.RemovePartFromCart=function(){var t=this;n.CartService.removePartFromCart(t)};h.prototype.QtyChange=function(n){var t=this,i=t.ext.quantity*1;isNaN(i)&&(i=1);t.ext.quantity=Math.max(1,Math.min(999,i));t.QtySelectChange(n)};h.prototype.QtySelectChange=function(n){var t=this,i;for(t.ext.quantities=[],i=1;i<10;i++)t.ext.quantities.push(i);if(t.ext.quantity>9&&t.ext.quantities.push(t.ext.quantity),t.ext.quantities.push("10+"),t.ext.quantity==="10+"){e.prompt({message:"Please enter a new quantity",maxLength:3}).then(function(i){i=i*1;isNaN(i)&&(i=1);t.ext.quantity=Math.clamp(i,1,999);t.QtySelectChange(n)});return}n&&t.UpdateCart()};h.prototype.showCustomerPrice=function(){var n=this;return n.ext.selectedUOM.CustomerPrice>=n.ext.selectedUOM.ListPrice?!1:app.data.showCustomerPrice};h.prototype.getPrice=function(n){var t=this,i=t.ext.selectedUOM.CustomerPrice;switch(n){case"list":i=t.ext.selectedUOM.ListPrice;break;default:app.data.showCustomerPrice||(i=t.ext.selectedUOM.ListPrice)}return n==="extended"&&(i+=t.CorePrice,t.ext.SelectedWarranty&&(i+=t.ext.SelectedWarranty.Cost),i*=t.ext.quantity),i};h.prototype.GetWarrantyTotal=function(){var t=this,n=0;return t.ext.SelectedWarranty&&(n=t.ext.SelectedWarranty.Cost),n?n.$toCurrency():"Free"};h.prototype.GetGrandTotal=function(){var n=this,t=n.getPrice("current");return n.ext.SelectedWarranty&&(t+=n.ext.SelectedWarranty.Cost),n.CorePrice&&(t+=n.CorePrice),t*n.ext.quantity};h.prototype.getPath=function(t){var u=this,e,i,r,o,f;if(t||(t={category:u.Category},u.Manufacturer?t.manufacturer=app.data.GetManufacturerByName(u.manufacturer):u.Fitment&&u.Fitment[0]&&(e=u.Fitment[0],t.Year=e.SystemYear,t.Make=e.SystemMake,t.Model=e.SystemModel)),i="/",r=[],t.Year&&(i+=t.Year+"/",r.push(new n.PathPart(t.Year,i))),t.Make&&(i+=t.Make.toUpperLower().toWebsiteURL()+"/",r.push(new n.PathPart(t.Make.toUpperLower(),i))),t.Model&&(i+=t.Model.toUpperLower().toWebsiteURL()+"/",r.push(new n.PathPart(t.Model.toUpperLower(),i))),t.manufacturer&&r.push(new n.PathPart(t.manufacturer.Name,"/+m"+t.manufacturer.uri+"/")),t.category){for(o=[],f=t.category;f&&!f.WizardType;)o.unshift(f),f=f.parent;o.each(function(u){r.push(new n.PathPart(u.CategoryName,i+u.uri+"/",t.manufacturer))})}return r};h.prototype.getPartHistory=function(n,t){var i=this,r={partNumber:i.PartNumber,date:n,zipCode:t,lineOfBusinessKey:i.LineOfBusiness.LineOfBusinessKey};i.ext.isLoadingProductHistory=!0;i.ext.productHistory=undefined;i.ext.salvageHistory=undefined;i.ext.isSalvage?(r.partNumber=i.HollanderInterchangeNumber,l.getSalvagePartHistory(r).$promise.then(function(n){n=n.data||n;i.ext.salvageHistory=n;i.ext.isLoadingProductHistory=!1},function(n){i.ext.isLoadingProductHistory=!1;e.error(n.headers("Errors"))})):l.getSalvagePartHistory(r).$promise.then(function(n){n=n.data||n;i.ext.productHistory=n.data;i.ext.isLoadingProductHistory=!1},function(n){i.ext.isLoadingProductHistory=!1;e.error(n.headers("Errors"))})};h.prototype.updateFavoritePart=function(){var n=this;n.favoritePart=JSON.stringify(new a(n))};h.prototype.updateIsFavoritePart=function(){var n=this,t=JSON.stringify(new a(n));n.needsFavoriteUpdate=n.favoritePart!==t};h.prototype.updateFavorite=function(){var n=this;n.favoritePart=JSON.stringify(new a(n));n.needsFavoriteUpdate=!1;l.updateFavorites([n.favoritePart]);u.$broadcast("favorite.update")};h.prototype.getUrl=function(n){var t=this;n=n||new Parse;try{n=n.copy()}catch(f){}var i=[],u=t.Fitment.slice().sortBy("SystemModel").sortBy("SystemMake").sortBy("SystemYear"),r=null;return n.Year&&n.Make&&n.Model&&(r=u.firstOrDefault(function(t){return t.SystemYear==n.Year&&t.SystemMake.toLowerCase()==n.Make.toLowerCase()&&t.SystemModel.toLowerCase()==n.Model.toLowerCase()})),r||(n.Year&&(u=u.where(function(t){return t.SystemYear==n.Year})),n.Make&&(u=u.where(function(t){return t.SystemMake.toLowerCase()==n.Make.toLowerCase()})),n.Model&&(u=u.where(function(t){return t.SystemModel.toLowerCase()==n.Model.toLowerCase()})),r=u[0]),r||(r=t.Fitment.slice().sortBy("SystemModel").sortBy("SystemMake").sortBy("SystemYear")[0]),r&&(i.push(r.SystemYear.toString(),r.SystemMake.toUpperLower(),r.SystemModel.toUpperLower()),i=i.removeEmpties()),t.VehicleYear&&t.VehicleMake&&t.VehicleModel&&(n.Year=t.VehicleYear,n.Make=t.VehicleMake,n.Model=t.VehicleModel),t.Category&&i.push(t.Category.uri),i=[i.join(" ").toWebsiteURL()],i.push("+h"+encode(t.HollanderInterchangeNumber)+(t.WebDescription?"*"+t.WebDescription.toWebsiteURL():"")),i.push((t.ext.isSalvage?"+i":"+p")+t.PartNumber),i="/"+i.join("/")+"/",i=="//"&&(i="/"),i};h.prototype.askForWarranty=function(n){function r(t,f){function s(n){var t={title:"Reman Engine Warranty"};(function(){var u,e,o;n.parent=f;t.message=["<div class='bold'>",i.PartNumber,": ",i.DisplayPartDescription,"<\/div>",n.Question].join("");u=n.PossibleAnswers||[];u.each(function(t){t.parent=n});e=u.firstOrDefault(function(n){return n.Answer.toLowerCase()=="yes"});o=u.firstOrDefault(function(n){return n.Answer.toLowerCase()=="no"});u.length==2&&e&&o?angular.extend(t,{info:{title:"Detailed Warranty Options",text:"Some warranty info here."},buttons:[{title:e.Answer,value:e,action:function(){r(e,n)},css:"btn btn-success",desktopStyle:{marginRight:10}},{title:o.Answer,value:o,css:"btn btn-default",action:function(){r(o,n)}}]}):angular.extend(t,{buttons:[{title:n.isWarrantySelect?"OK":"Next",requireValue:!0,css:"btn btn-success",action:function(t){t&&r(t,n)}}],options:n.PossibleAnswers.each(function(n){return{title:n.Answer,value:n}})});f&&t.buttons.unshift({title:"Back",css:"btn btn-default",action:function(){n.parent&&r(n.parent,n.parent.parent)},desktopStyle:{marginRight:10}})})();e.questionnaire(t)}if(t){if(t.Result){if(t.Result.Code){var o=new y(t.Result);i.AvailableWarranties=[o];i.SelectWarranty(o.Code);i.requiresQuestions=!1;n||i.UpdateCart();u.resolve();return}l.getWarranties(t.Href).$promise.then(function(n){if(n=n.data||n,i.SelectWarranty(null),angular.isArray(n)){i.AvailableWarranties=n;c.transformWarranties(i);var f=n[0]||{};if(f.Questionnaire)return r(f.Questionnaire,t.parent);questionnaire={isWarrantySelect:!0,Question:"Select a warranty",PossibleAnswers:n.select(function(n){return{Answer:n.Description,Result:n}})};r(questionnaire,t.parent)}else u.resolve()},function(n){e.error(n.headers("Errors"));u.reject()});return}s(t)}}var i=this,u=t.defer(),f=(i.AvailableWarranties||[])[0];return!f||!f.Questionnaire?(u.resolve(),u.promise):(r(f.Questionnaire),u.promise)};h.prototype.SelectWarranty=function(n){var t=this;t.ext.SelectedWarranty=t.AvailableWarranties.firstOrDefault(function(t){return t.Code===n})};h.prototype.copy=function(){var t=this,n=angular.copy(t);return n.UnitOfMeasure=t.ext.selectedUOM.UnitOfMeasure,n.UnitOfMeasureDescription=t.ext.selectedUOM.Description,n.FirstEDA=t.ext.selectedUOM.FirstEDA,n.LastEDA=t.ext.selectedUOM.LastEDA,n.Availability=t.ext.selectedUOM.Availability,n.AvailabilityDisplay=t.ext.selectedUOM.AvailabilityDisplay,n.SelectedWarranty=t.SelectedWarranty,n=new h(n),n.ext.quantity=t.ext.quantity,n.QtySelectChange(),n}}(),c=this,o.ProductFactory=c,c.Part=h,c.FavoritePart=a,c.transformWarranties=function(n){n.AvailableWarranties=n.AvailableWarranties||[];n.AvailableWarranties.each(function(n){(n.possibleAnswers||n.PossibleAnswers)&&(n.RequiresQualification=!0);n.DisplayText=n.DisplayText||n.displayText;n.PossibleAnswers=n.PossibleAnswers||n.possibleAnswers;var t=n.requiresQualification||n.RequiresQualification||!1;t&&n.DisplayText&&n.PossibleAnswers&&(n.Questionnaire={Question:n.DisplayText,PossibleAnswers:n.PossibleAnswers.select(function(n){return{Answer:n.DisplayText||n.displayText,Result:n.Code||n.code,Href:n._href}})})});n.AvailableWarranties=n.AvailableWarranties.sortBy("Cost")},c}]);app.directive("ngHomeLogin",function(){return{restrict:"EA",controller:["UserService",function(n){n.setTitle("Login","home")}]}});app.directive("ngHomeMain",function(){return{restrict:"EA",controller:["UserService",function(n){n.setTitle("Home","home")}]}});app.directive("ngLogin",function(){return{restrict:"EA",templateUrl:app.baseUrl+"home/partials/login.html"}});app.directive("ngMain",function(){return{restrict:"EA",template:"<div><div ng-if='isMobile' main-mobile><\/div><div ng-if='!isMobile' main-desktop><\/div><\/div>",controller:["$scope",function(n){n.isMobile=app.data.isMobile()}]}});app.directive("mainDesktop",function(){return{restrict:"A",templateUrl:app.baseUrl+"home/partials/main-desktop.html",controller:"GenericController"}});app.directive("mainMobile",function(){return{restrict:"A",templateUrl:app.baseUrl+"home/partials/main.html",controller:"GenericController"}}),function(){app.controller("quoteController",["$scope","quoteService","UserService","CartService","DialogService","CatalogService","$timeout","quoteFactory","LocalizationService","quoteWebapi",function(n,t,i,r,u,f,o,s,h,c){n.client=app.client;n.UserService=i;n.CartService=r;n.CatalogService=f;n.$translate=h.$translate;i.setTitle("Quote","quote");(n.quote===undefined||n.quote===null)&&(n.quote=s);n.quote.claimNumber===null&&i.go("/kip-quote/");n.$watch("quoteForm.$valid",function(t){n.quote.isValid=t;console.info("quoteForm watch");console.log(n.quote.isValid)});n.isQuoteValid=function(){return n.quote.isValid};n.PartTotal=function(){var n=0;return r.parts.each(function(t){n+=t.getPrice("current")*t.ext.quantity}),n};n.CoreTotal=function(){var n=0;return r.parts.each(function(t){n+=t.CorePrice*t.ext.quantity}),n};n.OrderTotal=function(){var n=0;return r.parts.each(function(t){n+=t.getPrice("extended")}),n};n.RemovePart=function(n){r.removePartFromCart(n).then(function(){r.parts.length||UserService.goHome()},function(n){u.error(n.headers("Errors")||"Failed to remove part from cart.")})};n.ClearCart=function(){u.confirm("This action will clear your entire cart. Proceed?").then(function(){r.clearCart(0).then(function(){i.goHome()},function(){u.error(e.headers("Errors")||"Failed to remove part from cart.")})})};n.CreateQuote=function(){var e=!1,f;r.parts.each(function(n){n.CompanyCode!=="001"&&(e=!0)});e?u.alert("Please remove any salvage parts before starting a quote.","Quote"):(f=n.quote.claimNumber,f===undefined?u.alert("Claim number has not been entered for this quote.","Quote"):(t.createQuote({claimNumber:f}),i.go("/kip-send-quote/")))};n.SendQuote=function(){n.quote.lineItems=[];var t=0;r.parts.each(function(i){t++;var r={listPrice:i.ListPrice,id:t,productNumber:i.PartNumber,productDescription:i.PartDescription,productType:"aftermarket",quantity:i.QuantityRequested,unitOfMeasureCode:i.UnitOfMeasure};n.quote.lineItems.push(r)});c.post(n.quote).$promise.then(function(){u.alert("Your Quote has been created and sent.","Quote").then(function(){n.quote.reset();r.clearCart(0).then(function(){i.goHome()})})})};n.isNotificationValid=function(n){var t=!0;return t&=!!n.firstName.$valid,t&=!!n.lastName.$valid,t&=!!n.phoneNumber.$valid,t&=!!n.emailAddress.$valid,t&!!n.customerNumber.$valid};n.initialize=function(){function t(){r.parts.length||i.goHome();r.parts.each(function(n,t){n.index=t});n.showPage=!0}(n.showPage=!1,i.user)&&i.user.InsuranceCompanyName&&((n.quote.insurerCode=i.user.InsuranceCompanyCode,n.quote.insurerName=i.user.InsuranceCompanyName,n.quote.postalCode=i.user.PostalCode,n.quote.contact.firstName=i.user.FirstName,n.quote.contact.lastName=i.user.LastName,n.quote.contact.phoneNumber=i.user.PhoneNumber,n.quote.contact.emailAddress=i.user.Email,n.quote=s,r.loading)||r.getCartParts().then(function(){r.updateCartAvailability().then(t,t)},function(n){u.error(n.headers("Errors")||"Failed validate cart.");i.goHome()}))};n.initialize();n.$on("user.active",n.initialize);n.$on("customer.loaded",n.initialize);n.$on("cart.ready",n.initialize)}]).factory("quoteFactory",[function(){var n={},t={partnerKey:{partnerCode:"B2X",verificationCode:"3cdb542d-ae5d-4255-b76d-973b5dcf2827"},claimNumber:null,insurerCode:null,insurerName:null,postalCode:null,contact:{firstName:null,lastName:null,title:null,emailAddress:null,phoneNumber:null,faxNumber:null},lineItems:[],vehicle:{year:null,make:null,model:null,identificationNumber:null},reset:function(){return n=angular.extend(n,t)}};return t.reset(),n}])}();app.directive("kipPicker",function(){return{scope:{picker:"=kipPicker"},templateUrl:app.baseUrl+"kip/partials/kip-picker.html",controller:"GenericController"}}),function(){app.factory("quoteWebapi",["$resource",function(n){var t=app.m+"product/quote/webapi/api/insurer/:insurerCode/product/quote";return n(t,{insurerCode:"@insurerCode"},{post:{method:"POST"}})}])}(),function(){app.service("insurerApiService",["$resource",function(n){return n("",{},{get:{method:"GET",url:app.api+"/auxiliarydata/GetInsuranceCompanies",isArray:!0}})}])}(),function(){app.service("quoteService",[function(){var n;this.getQuote=function(){return n===undefined&&(n={claimNumber:null}),n};this.createQuote=function(){return!0}}])}();app.controller("InvoiceController",["$scope","UserService","InvoiceService","StatementService","DialogService","LocalizationService","$routeParams",function(n,t,i,r,u,f,e){function o(n){n=n||{headers:function(){return"An unknown error has occured."}};u.error(n.headers("Errors"));t.goBack()}n.UserService=t;n.service=i;n.statement=r;n.$translate=f.$translate;n.showPage=!1;n.formData=!!FormData;n.trackingInfo=new i.TrackingInfo;n.anyChecked=function(){var t=!1;return n.invoice.lineItems.each(function(n){t|=n.returnChecked}),t};n.allChecked=function(){var t=!0;return n.invoice.lineItems.each(function(n){t&=n.returnChecked}),t};n.checkAll=function(){var t=!n.allChecked();n.invoice.lineItems.each(function(n){n.returnChecked=t})};n.startReturn=function(){if(n.anyChecked()){var i=n.invoice,r={customer:i.customer,invoice:i,items:i.lineItems.where(function(n){return n.returnChecked}),PONumber:i.purchaseOrderNumber};t.user.returns=r;t.go("/return/"+i.invoiceNumber)}};n.initialize=function(){var r;if(!t.user||!t.user.customers){n.search={isLoading:!0};return}n.showPage=!0;t.setTitle("Invoice Detail","invoice");n.view="invoice";n.detailColSpan=10;n.title="Invoice Detail";n.customerNumber=e.customerNumber;n.companyCode=e.companyCode;r=t.user.CustomerAccounts.get(e.customerNumber,e.companyCode);i.getInvoice(e.invoiceNumber,r||{}).then(function(t){n.detailColSpan=t.hasReturnables?10:9;n.invoice=t},o)};n.initialize();n.$on("customer.loaded",n.initialize);n.$on("customer.changed",n.initialize)}]);app.controller("InvoicesController",["$scope","UserService","InvoiceService","StatementService","DialogService","LocalizationService","$routeParams","$timeout","$http",function(n,t,i,r,u,f,e,o,s){function w(n,t){var i=this;i.time=new Date;i.results=[];i.maxFrom=n;i.maxTo=t;i.from=n;i.to=t;i.total=0;i.skip=0;i.take=10;i.takes=[10,20,50,100];i.panelClass="hidden-xs hidden-sm";i.tokens={}}function b(n){var r={},u,t,f,i;for(u in n.tokens){t=n.tokens[u];for(f in e)i=e[f],i.substr(0,t.length)===t&&(r[t]=i.substr(2))}return r}function k(n){this.CustomerNumber=n.customer.CustomerNumber;this.InvoiceNumber=n.invoice.invoiceNumber;this.ReturnParts=n.items.select(function(n){return new p(n)});this.PONumber=n.invoice.purchaseOrderNumber}function v(n){n=n||{headers:function(){return"An unknown error has occured."}};u.error(n.headers("Errors"));t.goBack()}function y(n){var r,n,i,f;if(!c){if(r=t.user.returns,n=r.items.firstOrDefault(function(n){return n.images.firstOrDefault(function(n){return!n.loaded})}),!n){c=!1;return}if(h=n.images.firstOrDefault(function(n){return!n.loaded}),!h){c=!1;return}c=!0;FormData&&(i=new FormData,i.append("file",h.inputFile),f={partnumber:h.item.productNumber,authorization:app.token},$.ajax({url:app.api+"invoice/UploadReturnItemImage?"+serialize(f),data:i,dataType:"json",type:"POST",headers:{Authorization:app.token},contentType:!1,processData:!1}).then(function(n){o(function(){var t=h.hash=n[0]||"",i={hash:t,authorization:app.token};h.url=app.api+"invoice/ReturnUploadedImage?"+serialize(i);window.URL?h.url=window.URL.createObjectURL(h.inputFile):window.webkitURL&&(h.url=window.webkitURL.createObjectURL(h.inputFile));h.loaded=!0;c=!1;y()})},function(){u.error("Failed to upload file.");file.item.images.remove(file);y()}))}}function d(n,t){var i=this;i.inputFile=n;i.item=t;i.isLoaded=!1;i.remove=function(){t.images.remove(i);s.put(app.api+"invoice/RemoveReturnItemImage?hash="+i.hash)}}var l,a,p,c,h;n.UserService=t;n.service=i;n.statement=r;n.$translate=f.$translate;n.showPage=!1;n.trackingInfo=new i.TrackingInfo;l=window.location.pathname.split("/")[1].toLowerCase();n.formData=!!FormData;a=function(){function u(t,i){var u=n.currentSearch=this;angular.extend(u,new w(t,i));u.tokens=r;u.invoiceId=l;u.defaultOrderBy="invoicedate";u.orderBy=u.defaultOrderBy;u.asc=!1;u.paidType=f;u.invoiceNumber="";u.orderNumber="";u.poNumber="";u.roNumber="";u.isLoading=!0;u.fromUrl();n.$watch("search.result.update",function(){u.result&&u.result.updated&&(u.invoices=u.result.invoices,u.arrTotals=u.result.arrTotals,u.processSearch(),delete u.result.updated)});n.$watch("search.take",function(t,i){t!=i&&n.search.search(1)})}var r={customerNumber:"+c",companyCode:"+l",orderNumber:"+o",invoiceNumber:"+i",partNumber:"+p",poNumber:"+q",roNumber:"+r",paidType:"+a",from:"+f",to:"+t",sort:"+s",page:"+h",take:"+k"},f=1;return function(){u.prototype.processSearch=function(){var n=this,t=n.invoices.slice(),r,i;n.invoiceNumber&&(t=t.where(function(t){return(t.invoiceNumber||"").contains(n.invoiceNumber,!0)}));n.orderNumber&&(t=t.where(function(t){return(t.orderNumber||"").contains(n.orderNumber,!0)}));n.poNumber&&(t=t.where(function(t){return(t.purchaseOrderNumber||"").contains(n.poNumber,!0)}));n.roNumber&&(t=t.where(function(t){return(t.purchaseOrderNumber||"").contains(n.roNumber,!0)}));n.paidType!=2&&(t=t.where(function(t){return t.paidType==n.paidType}));n.from&&(i=new Date(n.from).getTime(),t=t.where(function(n){return(n.invoiceTime||0)>=i}));n.to&&(r=new Date(n.to+" 23:59:59"),i=r.getTime(),t=t.where(function(n){return(n.invoiceTime||0)<=i}));t=t.sortByNumeric("invoceTime").reverse();t=t.sortBy(n.orderBy);n.asc||(t=t.reverse());n.start=n.skip+1;n.end=Math.min(n.skip+n.take+1,t.length);n.total=t.length;n.results=t.slice(n.skip,n.skip+(n.take||10))};u.prototype.loadInvoices=function(){var n=this;n.loading=!0;i.getInvoiceSummary(n).then(function(t){n.result=t;n.invoices=t.invoices;n.arrTotals=t.arrTotals;n.processSearch();n.loading=!1},v)};u.prototype.reset=function(n){var t=this;t.from=t.maxFrom;t.to=t.maxTo;t.paidType=1;t.invoiceNumber="";t.orderNumber="";t.poNumber="";t.roNumber="";t.partNumber="";n&&t.loadInvoices()};u.prototype.search=function(i,r){var u=n.currentSearch;r&&(u.asc=r===u.orderBy?!u.asc:r!=="invoicedate",u.orderBy=r,i=1);u.page=i;t.go(u.toUrl())};u.prototype.customerSelected=function(){var n=this;n.customerNumber=n.customer.CustomerNumber;n.companyCode=n.customer.CompanyCode;n.reset(!0)};u.prototype.fromUrl=function(){var n=this,i=b(n),u,e;n.customerNumber=i[r.customerNumber]?i[r.customerNumber]:"";n.companyCode=i[r.companyCode]?i[r.companyCode]:"";n.orderNumber=i[r.orderNumber]?decodeURIComponent(i[r.orderNumber]):"";n.invoiceNumber=i[r.invoiceNumber]?decodeURIComponent(i[r.invoiceNumber]):"";n.partNumber=i[r.partNumber]?decodeURIComponent(i[r.partNumber]):"";n.poNumber=i[r.poNumber]?decodeURIComponent(i[r.poNumber]):"";n.roNumber=i[r.roNumber]?decodeURIComponent(i[r.roNumber]):"";n.paidType=i[r.paidType]?parseInt(i[r.paidType]):f;n.from=i[r.from]?i[r.from].replace(/[-]/g,"/"):n.maxFrom;n.to=i[r.to]?i[r.to].replace(/[-]/g,"/"):n.maxTo;n.page=i[r.page]?parseInt(i[r.page])||1:1;n.take=i[r.take]?parseInt(i[r.take])||10:10;n.customer=t.user.CustomerAccounts.get(n.customerNumber,n.companyCode);n.customer||(n.customer=t.user.CustomerAccounts.get(t.user.LastLoginCustomers[0]||{}));n.customerTo=n.customer;n.customerNumber=n.customer.CustomerNumber;n.companyCode=n.customer.CompanyCode;n.customers=t.user.CustomerAccounts;isDate(n.from)||(n.from=n.maxFrom);isDate(n.to)||(n.to=n.maxTo);n.skip=((n.page||1)-1)*n.take;n.orderBy="invoiceTime";n.asc=!1;i[r.sort]&&(u=i[r.sort].split("+"),n.orderBy=u[0],n.asc=u[1]=="asc");for(e in n)e.substr(-5)=="Class"&&(n[e]="");n[n.orderBy.replace(/[.]/g,"")+"Class"]=n.asc?"fa fa-caret-up":"fa fa-caret-down";n.loadInvoices()};u.prototype.toUrl=function(){var n=this,t=[],i=n.orderBy+"+"+(n.asc?"asc":"desc"),u,e;return i=="invoiceTime+desc"&&(i=""),u="",e="",n.from!=n.maxFrom&&(u=n.from.replace(/[\/]/g,"-")),n.to!=n.maxTo&&(e=n.to.replace(/[\/]/g,"-")),n.customerNumber=n.customerTo.CustomerNumber,n.companyCode=n.customerTo.CompanyCode,n.customerNumber&&t.push(r.customerNumber+encodeURIComponent(n.customerNumber)),n.companyCode&&t.push(r.companyCode+encodeURIComponent(n.companyCode)),n.orderNumber&&t.push(r.orderNumber+encodeURIComponent(n.orderNumber)),n.invoiceNumber&&t.push(r.invoiceNumber+encodeURIComponent(n.invoiceNumber)),n.partNumber&&t.push(r.partNumber+encodeURIComponent(n.partNumber)),n.poNumber&&t.push(r.poNumber+encodeURIComponent(n.poNumber)),n.roNumber&&t.push(r.roNumber+encodeURIComponent(n.roNumber)),n.paidType!=f&&t.push(r.paidType+n.paidType),u&&t.push(r.from+u),e&&t.push(r.to+e),i&&t.push(r.sort+i),n.page>1&&t.push(r.page+n.page),n.take!=10&&t.push(r.take+n.take),("/"+l+"/"+t.join("/")+"/").replace(/\/\//g,"/")}}(),u}();p=function(n){this.PartNumber=n.productNumber;this.Quantity=n.returnQuantity;this.CreditComment=n.comment;this.CreditMessage=n.returnReason.text;this.CreditCode=n.returnReason.code;this.SubReasons=[];n.returnReason.options&&(this.SubReasons=n.returnReason.options.where(function(n){return n.checked}).select(function(n){return n.text}));this.SpecialInstructions=n.specialInstructions};c=!1;n.invoiceDetail=function(n){var i=n.customer;n&&i&&t.go(["","invoice-detail",n.invoiceNumber,i.CustomerNumber,i.CompanyCode,""].join("/"))};n.initialize=function(){var e,s,r;if(!t.user||!t.user.customers){n.search={isLoading:!0};return}n.showPage=!0;switch(l){case"invoice-history":t.setTitle("Invoice History","invoice");n.title="Invoice History";e=(new Date).addMonths(-6).toString("MM/dd/yyyy");s=(new Date).toString("MM/dd/yyyy");n.search=new a(e,s);break;case"request-return":t.setTitle("Returns","invoice");n.title="Request Return";e=(new Date).addMonths(-1).toString("MM/dd/yyyy");s=(new Date).toString("MM/dd/yyyy");n.search=new a(e,s);break;case"return":if(t.setTitle("Start a Return","return"),r=t.user.returns,!r||!r.items.length||!r.invoice)return t.goBack();n.showSummary=!1;n.title="Start a Return";r.items.each(function(n){var t=n;n.returnQuantity=1;n.ReturnReasons=n.ReturnReasons||angular.copy(n.returnReasons||[]);n.returnReasons=angular.copy(n.ReturnReasons);n.returnReasons.each(function(n){if(n.text=n.message,n.images=n.text.match(/(Damage|Defect)/gi),n.validationRequirements){var t=[];n.validationRequirements.each(function(n){t.push({text:n})});n.options=t}});n.show=n.show===0?0:1;n.images=n.images||[];n.fileUpload=function(n){var i,r,f;for(t.images.length>=app.data.maxReturnImages&&u.warning("You may only attach up to "+app.data.maxReturnImages+" images."),i=[],r=0;r<n.target.files.length;r++)f=n.target.files[r],app.data.acceptedImageTypes.contains(f.name.substr(-4))&&i.push(f);i=i.slice(0,app.data.maxReturnImages-t.images.length);i.each(function(n){t.images.push(new d(n,t))});y();i.length!==n.target.files.length&&u.error("Some files were not uploaded. Only "+app.data.maxReturnImages+" images may be uploaded. Type: "+app.data.acceptedImageTypes.join(", "));o(function(){})}});n.removeItem=function(n){u.confirm("Remove this item from your return?").then(function(){r.items.remove(n);r.items.length||t.goBack()})};n.setVis=function(n,t){var i=!n.show;t&&(i=!0);r.items.each(function(n){n.show=!1});n.show=i};n.setVis(r.items[0],1);n.validatePO=function(){n.poTimeout&&o.cancel(n.poTimeout);n.poAborter&&n.poAborter.resolve();r.invoice.isPOValid=!1;n.poTimeout=o(function(){n.poClass=app.data.fieldLoadingClass;i.validatePONumber({lobKey:r.customer.LineOfBusiness.LineOfBusinessKey,orderNumber:r.invoice.purchaseOrderNumber}).$promise.then(function(t){n.poClass=t?"":"validationError";r.invoice.isPOValid=t},function(){n.poClass="validationError";r.invoice.isPOValid=!1})},400)};r.customer.PurchaseOrderNumberRequired&&n.validatePO();n.isValid=function(t){var i=!0,u;return t?(i&=!!t.returnReason,i&=!!t.comment,t.returnReason&&t.returnReason.options&&(u=t.returnReason.options.where(function(n){return n.checked}),i&=!!u.length,t.returnReason.css=u.length?"":"alert-danger"),i):(r.items.each(function(t){i&=n.isValid(t)}),i&=!c,r.customer.PurchaseOrderNumberRequired&&(i&=!!(r.invoice.isPOValid||{}).BooleanValue),i)};n.submitReturn=function(){if(n.isValid){var e=new k(r);u.setLoading(!0);i.returnInvoiceItems(e).$promise.then(function(i){var e=f.$translate("Your return has been submitted for processing. Please note your RGA number");r.items.each(function(n){n.checked=!1});n.RGANumber=i.RGANumber;n.showSummary=!0;u.alert(e+": "+i.RGANumber).then(function(){delete t.user.returns})},function(n){u.setLoading(!1);u.error(n.headers("Errors"))})}};n.printOrder=function(){n.RGANumber&&!n.isPrinting&&(n.isPrinting=!0,i.getPrintOrder(n.RGANumber).then(function(){n.isPrinting=!1},function(t){n.isPrinting=!1;v(t)}))};n.return=r;break;default:t.goHome()}};n.initialize();n.$on("customer.loaded",n.initialize);n.$on("customer.changed",n.initialize)}]);app.controller("OrderController",["$scope","UserService","OrderService","StatementService","DialogService","LocalizationService","$routeParams",function(n,t,i,r,u,f,e){function o(n){n=n||{headers:function(){return"An unknown error has occured."}};u.error(n.headers("Errors"));t.goBack()}n.UserService=t;n.service=i;n.statement=r;n.$translate=f.$translate;n.showPage=!1;n.orderDetail=function(n){t.go("/order-detail/"+n.OrderNumber)};n.initialize=function(){if(!t.user||!t.user.customers){n.search={isLoading:!0};return}n.showPage=!0;t.setTitle("Open Detail","order");delete t.user.returns;n.view="order";n.detailColSpan=9;n.title="Order Detail";n.isLoading=!0;i.getOrder(e.orderNumber).then(function(t){n.invoice=t;n.isLoading=!1},o)};n.initialize();n.$on("customer.loaded",n.initialize);n.$on("customer.changed",n.initialize)}]);app.controller("OrdersController",["$scope","UserService","OrderService","StatementService","DialogService","LocalizationService","$routeParams",function(n,t,i,r,u,f){function o(n,t){var i=this;i.time=new Date;i.results=[];i.maxFrom=n;i.maxTo=t;i.from=n;i.to=t;i.total=0;i.skip=0;i.take=10;i.takes=[10,20,50,100];i.panelClass="hidden-xs hidden-sm";i.tokens={}}function s(n,t){var i=this;angular.extend(i,new o(n,t));i.orderBy="OrderDate";i.asc=!1;i.orderNumber="";i.poNumber="";i.data=[];i.isLoading=!0;i.search=function(n,t){var r,f,e,u;t&&(t===i.orderBy?i.asc=!i.asc:(i.asc=!0,t==="OrderDate"&&(i.asc=!1)),i.orderBy=t);i.skip=((n||1)-1)*i.take;r=i.data||[];i.OrderDateClass="";i.OrderNumberClass="";i.PONumberClass="";i.SubTotalClass="";i[i.orderBy+"Class"]=i.asc?"fa fa-caret-up":"fa fa-caret-down";f=new Date(i.from);e=new Date(i.to);r=r.where(function(n){return n.PONumber=n.PONumber.replace(/(no po given|no ro given)/gi,""),n.OrderDate>=f&&n.OrderDate<=e});r=r.sortBy(i.orderBy);i.asc||(r=r.reverse());i.orderNumber&&(u=i.orderNumber.toLowerCase(),r=r.where(function(n){return n.OrderNumber.toLowerCase().indexOf(u)>-1}));u=(i.poNumber||"").toLowerCase();u&&(r=r.where(function(n){return n.PONumber.toLowerCase().indexOf(u)>-1}));i.results=r;i.total=r.length;i.visible=r.slice(i.skip,i.skip+i.take);i.start=i.skip+1;i.end=i.skip+i.visible.length;i.visible.length===0&&(i.start=0)};i.reset=function(){i.from=i.maxFrom;i.to=i.maxTo;i.orderNumber="";i.poNumber="";i.search()}}function h(t,r){var u=i[e];u||(u=new s(t,r),u.reset(),i[e]=u,getData=!0);u.isLoading=!0;i.getOpenOrders().then(function(t){n.orders=t;n.isLoading=!1;u.isLoading=!1;u.data!==t.OpenOrders&&(u.data=t.OpenOrders);u.search()},c);n.search=u}function c(n){n=n||{headers:function(){return"An unknown error has occured."}};u.error(n.headers("Errors"));t.goBack()}n.UserService=t;n.service=i;n.statement=r;n.$translate=f.$translate;n.showPage=!1;var e=window.location.pathname.split("/")[1].toLowerCase();n.formData=!!FormData;n.orderDetail=function(n){t.go("/order-detail/"+n.OrderNumber)};n.initialize=function(){var i,r;if(!t.user||!t.user.customers){n.search={isLoading:!0};return}n.showPage=!0;t.setTitle("Open Orders","order");i=(new Date).addMonths(-6).toString("MM/dd/yyyy");r=(new Date).toString("MM/dd/yyyy");n.title="Open Orders";h(i,r)};n.initialize();n.$on("customer.loaded",n.initialize);n.$on("customer.changed",n.initialize)}]);app.controller("StatementController",["$scope","UserService","StatementService","DialogService","LocalizationService",function(n,t,i,r,u){n.UserService=t;n.service=i;n.$translate=u.$translate;n.showPage=!1;var f=window.location.pathname.split("/")[1].toLowerCase();n.formData=!!FormData;n.initialize=function(){var f,e;if(t.user&&t.user.customers){for(n.showPage=!0,t.setTitle("Statement Reprint","Statement Reprint"),n.title="Statement Reprint",n.customer=t.user.activeCustomers[0],n.months=[],f=Date.today(),f=f.addMonths(-1),e=0;e<24;e++)n.months.push({month:f.toString("MMMM"),year:f.getFullYear(),date:f}),f=f.addMonths(-1);n.month=n.months[0];n.updateText=function(){n.months.each(function(n){n.text=u.$translate(n.month)+" "+n.year})};n.updateText();n.getStatement=function(){var t=n.month,u=n.customer;r.setLoading(!0);i.getPrintStatement(t.date,u).then(function(){r.setLoading()},function(n){r.setLoading();r.error(n.headers("Errors"))})}}};n.initialize();n.$on("customer.loaded",n.initialize);n.$on("customer.changed",n.initialize)}]);app.directive("trackingInfo",function(){return{scope:{trackingInfo:"=trackingInfo"},restrict:"A",templateUrl:app.baseUrl+"orders/partials/tracking-info.html"}});app.service("InvoiceService",["UserService","DialogService","Factory","$q","$rootScope","$http","$timeout","$resource",function(n,t,i,r,u,f,e,o){function l(n){var t=angular.extend(this,n);t.warrantyPriceDescription=t.warrantyCode?t.warrantyPrice?t.warrantyPrice.$toCurrency():"Free":"";t.BackorderedQuantity=n.BackOrderedQuantity||n.backOrderedQuantity;t.customerPrice=t.customerPrice||0;t.extendedPrice=t.extendedPrice||0;t.quantityReturnable=t.quantityReturnable||0;t.isReturnAvailable=!!t.quantityReturnable;t.corePrice=0}function c(t,i){var r=angular.extend(this,t),u,f;(r=angular.extend(this,i),u=n.user.CustomerAccounts.get(r.accountNumber,r.companyCode),u)&&(r.customer=u,r.lobKey=u.LineOfBusiness.LineOfBusinessKey,r.dueDate=Date.fromISO(r.dueDate),r.invoiceDate=Date.fromISO(r.invoiceDate),r.shipDate=Date.fromISO(r.shipDate),r.orderEntryDate=Date.fromISO(r.orderEntryDate),r.time=new Date,r.itemTotal=0,r.coreCharges=0,r.warrantyCharges=0,r.shippingFeeTotal=r.shippingFeeTotal||0,r.salesTaxTotal=r.salesTaxTotal||0,r.status=(r.paidStatus||"").toLowerCase()=="paid"?"Paid":"UnPaid",r.lineItems=t.lineItems.select(function(n){return n=new l(n),f&&n.productNumber.indexOf("CORE")>-1?(f.corePrice=n.customerPrice,!1):(f=n,r.lobKey==1&&(n.warrantyDescription=""),r.itemTotal+=n.extendedPrice,r.coreCharges+=n.corePrice,r.warrantyCharges+=n.warrantyPrice,n)}),r.hasReturnables=r.lineItems.firstOrDefault(function(n){return n.isReturnAvailable}),r.total=r.itemTotal+r.coreCharges+r.warrantyCharges+r.shippingFeeTotal+r.salesTaxTotal)}function a(n,t){var i=angular.extend(this,n);i.dueDate=Date.fromISO(n.dueDate);i.invoiceDate=Date.fromISO(n.invoiceDate);i.invoiceTime=i.invoiceDate.getTime();i.status=n.paidStatus.toLowerCase()=="paid"?"Paid":"UnPaid";i.paidType=n.paidStatus.toLowerCase()=="paid"?0:1;i.customer=t}function v(n){var t=angular.extend(this,n)}var s=this,h=function(){return o("",{},{getInvoices:{method:"POST",url:app.api+"user/GetNewInoviceSummary"},getInvoiceSummaries:{method:"GET",url:app.api+"shop/order/invoice/summary"},getAftermarketInvoiceDetail:{method:"GET",url:app.api+"shop/order/invoice/return"},getSalvageInvoiceDetail:{method:"GET",url:app.api+"shop/order/invoice"},removeUploadedImage:{method:"PUT",url:app.api+"invoice/RemoveReturnItemImage",params:{hash:"@hash"}},returnInvoiceItems:{method:"POST",url:app.api+"invoice/ReturnInvoiceItems",params:{hash:"@hash"}},getOrderTracking:{method:"POST",url:app.api+"shop/order/tracking"},validatePONumber:{method:"GET",url:app.api+"cart/ValidatePONumber"}})}();return s.customerData={},s.TrackingInfo=function(){function n(){var n=this;n.hide=function(){n.showModal=!1};n.stop=function(n){n.stopPropagation()};n.show=function(t){n.showModal=!0;n.loading=!0;n.error=!1;n.getTracking(t).then(function(t){angular.extend(n,t);n.loading=!1;n.error=!1},function(){n.loading=!1;n.error=!0})};n.getTracking=function(n){var t=r.defer();return h.getOrderTracking({OrderNumber:n.orderNumber,CompanyCode:n.customer.CompanyCode}).$promise.then(function(n){n.ArrivalTime=Date.fromISO(n.ArrivalTime);t.resolve(n)},t.reject),t.promise}}return n}(),s.getInvoiceSummary=function(n){var o=n.partNumber||"",f=[n.customerNumber,n.companyCode,n.invoiceId,n.partNumber].join(", "),u=r.defer(),i=s.customerData[f];return i&&(u.resolve(i),Date.diff(i.time,seconds)<=300)?u.promise:(e(function(){var r={customerNumber:n.customerNumber,companyCode:n.companyCode,fromDate:n.from,toDate:n.to,paidStatus:2,partNumber:o};h.getInvoiceSummaries(r).$promise.then(function(t){t=t.Data||t.data||t;var r=t.invoices.select(function(t){return new a(t,n.customer)}),e=new v(t.customerAccountInfo);i?(i.invoices=r,i.arrTotals=e,i.time=new Date,i.updated=!0):(i={invoices:r,arrTotals:e,time:new Date},s.customerData[f]=i,u.resolve(i))},function(n){t.error(n.headers("Errors"));u.reject()})},100),u.promise)},s.getInvoice=function(n,t){var i=r.defer(),u={invoiceNumber:n,customerNumber:t.CustomerNumber,companyCode:t.CompanyCode};return t.CompanyCode=="001"?h.getAftermarketInvoiceDetail(u).$promise.then(function(n){var r=new c(n.invoice||n,n.customerInfo);r.customer=t;i.resolve(r)},i.reject):h.getSalvageInvoiceDetail(u).$promise.then(function(n){var r=new c(n.invoice||n,n.customerInfo);r.customer=t;i.resolve(r)},i.reject),i.promise},s.clearInvoice=function(n,t){delete t.invoices[n]},s.removeUploadedImage=h.removeUploadedImage,s.returnInvoiceItems=h.returnInvoiceItems,s.validatePONumber=h.validatePONumber,s}]);app.service("OrderService",["$resource","UserService","$q",function(n,t,i){function f(n){var t=angular.extend(this,n)}var r=this,u=function(){return n("",{},{getOpenOrders:{method:"GET",url:app.api+"user/GetOpenOrders"},getOrder:{method:"GET",url:app.api+"user/GetOrderDetail"}})}();return r.getOpenOrders=function(){var n=i.defer(),r=t.user.orders;return r&&Date.diff(r.time,seconds)<=300?(n.resolve(r),n.promise):(u.getOpenOrders().$promise.then(function(i){i.time=new Date;i.OpenOrders.each(function(n){n.OrderDate=new Date(n.OrderDate);n.OrderDate.getFullYear()<1971&&(n.OrderDate=n.OrderDate.addYears(100))});t.user.orders=i;n.resolve(i)},n.reject),n.promise)},r.getOrder=function(n){var r=i.defer(),e=n,o=t.user.order=t.user.order||{},f=o[e];return f&&Date.diff(f.time,seconds)<=300?(r.resolve(f),r.promise):(u.getOrder({orderNumber:n}).$promise.then(function(n){t.user.order[e]=n;r.resolve(n)},r.reject),r.promise)},r}]);app.service("StatementService",["$http","$q",function(n,t){var i=this;return i.callReport=function(r,u,f){var e=t.defer();return n.get(app.api+r,{params:u,responseType:"arraybuffer"}).then(function(n){var t=new Blob([n.data],{type:"application/pdf"});saveAs(t,f+".pdf");i.printing=!1;e.resolve();return},function(n){e.reject(n);i.printing=!1}),e.promise},i.getPrintStatement=function(n,t){i.printing=!0;var r=n.toISOString();return i.callReport("print/GetStatements",{yearMonth:r,customerKey:t.CustomerKey},"Statements_"+n.toString("MM-dd-yyyy"))},i.getPrintOrder=function(n){return i.printing=!0,i.callReport("print/GetOrder",{orderNumber:n},"Order_"+n)},i.getPrintInvoice=function(n,t,r){return i.printing=!0,i.callReport("shop/order/invoice/print",{invoiceNumber:n,customerNumber:r,companyCode:t},"Invoice_"+n)},i}]);app.service("AnalyticsService",["$rootScope",function(n){var t=this;return window.analytics=t,n.$on("$routeChangeSuccess",function(n,i){var r=i.$$route.originalPath;t.view()}),t.event=function(n,t,i,r){ga("send",{hitType:"event",eventCategory:n,eventAction:t,eventLabel:i,eventValue:r})},t.view=function(){ga("send",{hitType:"pageview",page:location.pathname})},t.cartEvent=function(n,i,r){if(r){var u={event_name:n};t.getParts(u,r);t.event("Cart",n,"",0)}},t.cartPartEvent=function(n,i,r){if(r){var u={event_name:n},f=r.prices.firstOrDefault(function(n){return n.name=="customer"});f=(f||{amount:0}).amount;u.product_Finish=[""];u.product_PartNumber=[r.itemnumber];u.product_YMM=[""];u.product_brand=[""];u.product_category=(r.category||"").split("|").pop();u.product_id=[r.itemnumber];u.product_name=[r.description];u.product_price=[f];u.product_quantity=[r.quantity];u.product_subcategory=[""];t.event("Cart",n,"",r.quantity)}},t.orderEvent=function(n,i,r){var u={event_name:n,oktoemail:!1,order_discount_amount:0,order_grand_total:r.Total,order_id:i.select(function(n){return n.OrderNumbers.join(",")}).join(","),order_payment_type:r.PaymentMethod,order_shipping_amount:r.Carts.sum(function(n){return(n.quote||{ShippingFee:0}).ShippingFee}),order_shipping_type:"Company Truck",order_subtotal:r.Carts.sum(function(n){return n.Parts.sum(function(n){return n.Quantity*(n.CustomerPrice+n.CorePrice+(n.Warranty||{Cost:0}).Cost)})}),order_tax_amount:0};t.event("Order","","",Math.ceil(r.Total))},t.searchEvent=function(n,i,r){i.name=n;t.getParts(i,r);t.event("Search","","",r.length)},t.getPage=function(n){var t=((new Date).getTime()-loginTime.getTime())/1e3;n.page_name=document.title;n.page_type=document.type;n.visit_duration=t;n.user_ipaddress=window.userip||"";n.user_browser_type=window.navigator.userAgent},t.getUser=function(n){if(n.logged_in=!1,!t.UserService||!t.UserService.user)return n;var r=t.UserService.user,f=(r.customers||{})["001"]||{},i=(f.Addresses||[])[0]||{},e=localizationService.culture||{name:"English"},u="";i.Country&&i.Country.CountryCode&&(u=i.Country.CountryCode);r&&(n.UserName=r.UserName,n.customer_Shipping_address1=i.Address1||"",n.customer_Shipping_address2=i.Address2||"",n.customer_city=i.City||"",n.customer_state=i.StateProvince||"",n.customer_postal_code=i.PostalCode||"",n.customer_country=u||"",n.customer_email=r.Email||"",n.customer_id=r.UserName||"",n.customer_name=r.FirstName+" "+r.LastName,n.user_language=e.name,n.user_segmentatio="",n.user_day_time=(new Date).toString("HH:mm:ss"),n.user_date=(new Date).toString("MM/dd/yyyy"),n.user_session_id=r.id||"",n.user_zip=i.PostalCode,n.logged_in=!!t.UserService.user)},t.getCart=function(n){if(!t.CartService||!t.CartService.parts)return n;n.cart_total_items=0;n.cart_total_value=0;var i=t.CartService.parts||[];n.cart_product_id=i.select(function(n){return n.PartNumber});n.cart_product_price=i.select(function(t){return n.cart_total_value+=t.ext.selectedUOM.CustomerPrice,t.ext.selectedUOM.CustomerPrice});n.cart_product_quantity=i.select(function(t){return n.cart_total_items+=t.ext.quanity,t.ext.quantity});n.cart_product_sku=i.select(function(n){return n.PartNumber})},t.getParts=function(n,i){return i=i.select(function(n){return n.ext?n:t.CartService.TransformToPart(n)}),n.product_Finish=i.select(function(){return""}),n.product_PartNumber=i.select(function(n){return n.PartNumber||n.itemnumber||""}),n.product_YMM=i.select(function(n){return n.product_YMM||""}),n.product_brand=i.select(function(n){return n.GetPartCertifications?n.GetPartCertifications():""}),n.product_category=i.select(function(n){return(n.Category||{CategoryName:""}).CategoryName}),n.product_id=i.select(function(n){return n.PartNumber||n.itemnumber||""}),n.product_name=i.select(function(n){return n.PartDescription||n.description||""}),n.product_uom=i.select(function(n){return n.ext?n.ext.selectedUOM.UnitOfMeasure:n.unitofmeasure?n.unitofmeasure.code:"EA"}),n.product_price=i.select(function(n){return n.ext?n.ext.selectedUOM.CustomerPrice:n.prices?(n.prices.firstOrDefault(function(n){return n.name=="customer"})||{amount:0}).amount:0}),n.product_quantity=i.select(function(n){return n.ext?n.ext.quantity:n.quantity||1}),n.product_subcategory=i.select(function(n){return n.Category?n.Category.CategoryName:(n.category||"").toString().replace(/(B2BPortal\|)/gi,"")}),n},t.getOrderDetails=function(){},t}]);window.analytics=null;loginTime=new Date;utag_data={};utag_data=new TagData,function(n,t,i,r,u,f,e){n.GoogleAnalyticsObject=u;n[u]=n[u]||function(){(n[u].q=n[u].q||[]).push(arguments)};n[u].l=1*new Date;f=t.createElement(i);e=t.getElementsByTagName(i)[0];f.async=1;f.src=r;e.parentNode.insertBefore(f,e)}(window,document,"script","https://www.google-analytics.com/analytics.js","ga");ga("create","UA-105597471-1","auto");app.service("CMSService",["CMSAPIService",function(n){var t=this;return t.getTreeView=n.getTreeView,t.getPage=n.getPage,t.savePage=n.savePage,t}]);app.factory("CMSAPIService",["$resource",function(n){return n("",{},{getTreeView:{method:"GET",url:app.api+"cms/GetTreeView"},getPage:{method:"GET",url:app.api+"cms/GetPage",params:{pageId:"@pageId"}},savePage:{method:"PUT",url:app.api+"cms/UpdatePage"}})}]);app.service("DialogService",["$q",function(n){function r(n){$("#toaster").html();var t=$("#dialogBase"),r=t.find(".background"),i=t.find(n);t.show();t.find(".foreground").stop().hide();r.animate({opacity:.7},400);i.stop().css({top:-i.outerHeight()}).show().animate({top:20},400)}function i(n){var t=$("#dialogBase");if(n){t.find(".background").stop().css({opacity:0});t.find(".foreground").stop().hide();t.hide();$("#toaster .container").html("");return}t.find(".background").stop().animate({opacity:0},400);t.find(".foreground").stop().each(function(){var n=$(this);n.is(":visible")&&n.animate({top:-n.outerHeight()},400,function(){$(this).hide();$("#dialogBase").hide()})})}var u={toasterDisplayLength:3},t=this;return t.hideDialog=i,t.alert=function(t,u){var o="",s="OK",f,e,c;angular.isObject(t)&&(f=t,t=f.message||"",u=f.title||"",o=f.class||o,s=f.buttonText||s);var l=n.defer(),h="#alertDialog",a=$("#dialogBase");return a.find(".modalWindow").attr("class","modalWindow").addClass(o),e=a.find(h),e.find(".header").html(localizationService.$translate(u||"Alert")),e.find(".body").html(localizationService.$translate(t)||""),c=$("<button id='alert_ok' type='button' class='btn btn-primary'>"+localizationService.$translate(s)+"<\/button>"),c.click(function(){i(h);l.resolve()}),e.find(".buttons").html(c),r(h),l.promise},t.confirm=function(t,u){var h="",c="OK",l="Cancel",f,e,o;angular.isObject(t)&&(f=t,t=f.message||"",u=f.title||"",h=f.class||h,c=f.buttonText||c,l=f.cancelText||l);var a=n.defer(),s="#alertDialog",v=$("#dialogBase");return v.find(".modalWindow").attr("class","modalWindow").addClass(h),e=v.find(s),e.find(".header").html(localizationService.$translate(u||"Confirm")),e.find(".body").html(localizationService.$translate(t)||""),o=$("<button id='confirm_yes' type='button' class='btn btn-success'>"+localizationService.$translate(c)+"<\/button>"),o.click(function(){i(s);a.resolve()}),e.find(".buttons").html(o),o=$("<button id='confirm_no' type='button' class='btn btn-danger'>"+localizationService.$translate(l)+"<\/button>"),o.click(function(){i(s);a.reject()}),e.find(".buttons").append("&nbsp;"),e.find(".buttons").append(o),r(s),a.promise},t.prompt=function(t,u,f){var l="",a="OK",v="Cancel",y="text",p=0,d=0,w=0,e,o,s,h;angular.isObject(t)&&(e=t,t=e.message||"",f=e.title||"",l=e.class||l,a=e.buttonText||a,v=e.cancelText||v,y=e.inputType||y,p=e.maxLength||0,d=e.min||0,w=e.max||0);var b=n.defer(),c="#promptDialog",k=$("#dialogBase");return k.find(".modalWindow").attr("class","modalWindow").addClass(l),o=k.find(c),o.find(".header").html(localizationService.$translate(f||"Prompt")),o.find(".body").html(localizationService.$translate(t)||""),s=$("<input id='prompt_value' type='"+y+"' class='form-control'>"),p&&s.attr("maxlength",p),w&&s.attr("min",d).attr("max",w),o.find(".inputs").html(s),h=$("<button id='prompt_ok' type='submit' class='btn btn-success'>"+localizationService.$translate(a)+"<\/button>"),k.find(".modalWindow").submit(function(){return i(c),b.resolve(s.val()),!1}),o.find(".buttons").html(h),h=$("<button id='prompt_cancel' type='button' class='btn btn-danger'>"+localizationService.$translate(v)+"<\/button>"),h.click(function(){i(c);b.reject()}),o.find(".buttons").append("<span>&nbsp;<\/span>"),o.find(".buttons").append(h),setTimeout(function(){s.focus()},10),r(c),b.promise},t.select=function(t){function g(n,t){s.append("<option value='"+d+++"'"+(t?" selected":"")+">"+localizationService.$translate(n)+"<\/option>")}var b="",k="",v="",y="OK",p="Cancel",e=[],w,c="",l="",f,o,a,u,s,d,h;return(b=t.message||"",k=t.title||"",v=t.class||v,y=t.buttonText||y,p=t.cancelText||p,e=t.data||[],w=t.current||undefined,c=t.match,l=t.noneText,f=n.defer(),!e||!e.length)?(f.reject(),f.promise):(o="#promptDialog",a=$("#dialogBase"),a.find(".modalWindow").attr("class","modalWindow").addClass(v),u=a.find(o),u.find(".header").html(localizationService.$translate(k)||""),u.find(".body").html(localizationService.$translate(b)||""),s=$("<select id='select_from' class='form-control'><\/select>"),u.find(".inputs").html(s),d=l?-1:0,l&&g(l,!w),e.each(function(n){var t=n.toString();c&&n[c]&&(t=n[c]);g(t,w===n,n)}),h=$("<button id='select_ok' type='submit' class='btn btn-success'>"+localizationService.$translate(y)+"<\/button>"),a.find(".modalWindow").submit(function(){return i(o),f.resolve(e[s.val()*1]),!1}),u.find(".buttons").html(h),h=$("<button id='select_cancel' type='button' class='btn btn-danger'>"+localizationService.$translate(p)+"<\/button>"),h.click(function(){i(o);f.reject()}),u.find(".buttons").append("<span>&nbsp;<\/span>"),u.find(".buttons").append(h),setTimeout(function(){s.focus()},10),r(o),f.promise)},t.addLob=function(t,u,f){var h=$("<input id='addlob_dontshow' type='checkbox'>"),v=$("<label><\/label>"),a,e,o,l;v.append(h).append("&nbsp;").append(localizationService.$translate("Don't show this again"));a=$("<p><\/p>");a.append(v);var c=n.defer(),s="#alertDialog",y=$("#dialogBase");return y.find(".modalWindow").attr("class","modalWindow").addClass(""),e=y.find(s),e.find(".header").html(localizationService.$translate(f||"Add Account")),e.find(".body").html("<p><b>"+(localizationService.$translate(t)||"")+"<\/b><\/p>"),e.find(".body").append(a),o=$("<button id='addlob_ok' type='button' class='btn btn-success'>"+localizationService.$translate("OK")+"<\/button>"),o.click(function(){i(s);c.resolve({dontShow:h.prop("checked"),showAddAccount:!0})}),e.find(".buttons").html(o),o=$("<button id='addlob_cancel' type='button' class='btn btn-default'>"+localizationService.$translate("No Thanks")+"<\/button>"),o.click(function(){i(s);c.reject({dontShow:h.prop("checked")})}),e.find(".buttons").append("&nbsp;"),e.find(".buttons").append(o),l=$("<a id='addlob_needaccount' class='pointer'>"+localizationService.$translate(u)+"<\/a>"),l.click(function(){i(s);c.reject({dontShow:h.prop("checked"),showContactInfo:!0})}),e.find(".buttons").append("&nbsp;"),e.find(".buttons").append(l),l.css({fontSize:12,position:"relative",bottom:6,textDecoration:"underline"}),r(s),c.promise},t.questionnaire=function(t){var d=t.question,v=n.defer(),y="#promptDialog",p=$("#dialogBase"),u,e,s,a,f;p.find(".modalWindow").attr("class","modalWindow").addClass("questionnaire");u=p.find(y);u.find(".header").html(localizationService.$translate(t.title||"")||"");u.find(".body").html("");u.find(".body").append(localizationService.$translate(t.message||"")||"");var h=null,c=$("<div class='hidden-xs'><\/div>"),w=$("<div class='visible-xs'><\/div>");if(u.find(".buttons").html("").append(c).append(w),(t.buttons||[]).each(function(n){function f(){var n=this.button;(!n.requireValue||u.value)&&(i(!0),n.action&&n.action(u.value))}var r=localizationService.$translate(n.title),e=n.css||"btn btn-default",t=$("<button id='prompt_"+n.title+"' class='"+e+"'>"+r+"<\/button>");n.desktopStyle&&t.css(n.desktopStyle);c.append(t);t[0].button=n;t.click(f);n.requireValue&&(h=t);t=$("<div id='prompt_"+r+"' class='visible-xs'>"+r+"<\/div>");w.append(t);t[0].button=n;t.click(f)}),e=$("<div class='options'><\/div>"),u.find(".inputs").html("").append(e),(t.options||[]).each(function(n){var r=n.title||n.Answer,f=localizationService.$translate(r||"")||"",i=$("<div><\/div>");i.attr("id","option_"+r);i[0].option=n;i.html(f);i.click(function(){e.children().each(function(){$(this).removeClass("active")});$(this).addClass("active");u.value=this.option});i.dblclick(function(){e.children().each(function(){$(this).removeClass("active")});$(this).addClass("active");u.value=this.option;h&&h.click()});t.options.length==1&&(u.value=n);e.append(i)}),t.info){var k=localizationService.$translate(t.info.title),b=localizationService.$translate(t.info.text),l=$("<div class='info dropdown visible-xs'><\/div>"),o=$("<div data-toggle='dropdown' class='dropdown-toggle'><\/div>");o.append("<span class='fa fa-info-circle'><\/span>");o.append("&nbsp;");o.append(k);l.append(o);f=$("<div class='dropdown-menu'><\/div>");f.append("<a>"+b+"<\/a>");l.append(f);u.find(".body").prepend(l);s=$("<span class='info dropdown'><\/span>");a=$("<button data-toggle='dropdown' class='dropdown-toggle btn btn-link' style='margin-right: 10px;'><\/button>");a.html(o.html());s.append(a);f=$("<div class='dropdown-menu'><\/div>");f.append("<a>"+b+"<\/a>");s.append(f);c.append(s)}return r(y),v.promise},t.setLoading=function(n,t){t=t||"Loading...";i(!0);var u=$("#dialogBase"),r=u.find("#loadingDialog"),f=!!r[0].state;if(!n||!f)if(n)u.show(),u.find(".background").animate({opacity:.7},400),r.show().stop().animate({opacity:1},400),r[0].state=!0;else{if(!f)return;u.find(".background").stop().animate({opacity:0},400,function(){$("#dialogBase").hide()});r.stop().animate({opacity:0},400,function(){$(this).hide()});r[0].state=!1}},t.error=function(n){i(!0);t.pop("danger","",n||"An unknown error has occured.")},t.success=function(n){i(!0);t.pop("success","",n||"Success.")},t.warning=function(n){i(!0);t.pop("warning","",n||"Warning.")},t.info=function(n){i(!0);t.pop("info","",n||"Info.")},t.pop=function(n,t,i){var r,f;i=i.replace(/(Invalid Authorization Token, )/,"");n=n||"default";t=localizationService.$translate(t);i=localizationService.$translate(i);r="<div class='"+n+" toaster'>";t&&(r+="<div class='title'>"+t+"<\/div>");r+="<div class='message'>"+i+"<\/div>";r+="<\/div>";f=$(r);r=f[0];r.die=Date.inSeconds(u.toasterDisplayLength);f.mouseover(function(){this.dying||(this.hold=!0)});f.mouseout(function(){this.dying||(this.hold=!1,r.die=Date.inSeconds(u.toasterDisplayLength))});f.click(function(){this.dying||(this.kill=!0,this.hold=!1)});$("#toaster .container").prepend(f)},t.checkSuccess=function(n){return(n.data=n.data||n.Data,n.success||!n.messages)?!0:(n.messages.each(function(n){switch(n.level.toLowerCase()){case"info":t.info(n.message);break;case"warn":t.warning(n.message);break;case"error":t.error(n.message)}}),!1)},setInterval(function(){$("#toaster .container").children().each(function(){this.hold||this.dying&&!this.kill||(this.die<=Date.inSeconds(0)||this.kill)&&(this.dying=!0,$(this).stop(!0,!0).animate({opacity:0},400,function(){$(this).stop().remove()}))})},100),t.userConversionAlert=function(t,u){var o=n.defer(),e="#alertDialog",c=$("#dialogBase"),f,s,h;return c.find(".modalWindow").attr("class","modalWindow").addClass(""),f=c.find(e),f.find(".header").html(localizationService.$translate("Alert!")),f.find(".body").html(localizationService.$translate("Do you already have a LKQ Portal account?")),s=$("<button id='conversion_yes' type='button' class='btn btn-primary'>"+localizationService.$translate("Yes I do")+"<\/button>"),s.click(function(){t();i(e);o.resolve()}),f.find(".buttons").html(s),h=$("<button id='conversion_no' type='button' class='btn btn-primary' style='margin-left:3px;'>"+localizationService.$translate("No, not yet")+"<\/button>"),h.click(function(){u();i(e);o.resolve()}),f.find(".buttons").append(h),r(e),o.promise},t}]);app.service("LocalizationService",["$http","$rootScope",function(n,t){var i=this;return i.translator={},i.load=function(r){i.translator={};n.get("/cultures/cultures.json").then(function(u){function e(){var r=f.shift();if(!r){t.$broadcast("localization.loaded");return}n.get(r).then(function(n){var r=n.data||n||{},t,u;for(t in r)u=((t||"")+"").replace(/[^a-z0-9]/gi,"").toUpperCase(),i.translator[u]=r[t];e()},e)}var o=i.cultures=u.data.Cultures,f;i.culture=o.firstOrDefault(function(n){return n.code===r});i.culture||(i.culture=o.firstOrDefault());setCookie(app.data.cultureCookieName,i.culture.code);f=[];u.data.Files.each(function(n){f.push("/cultures/"+i.culture.code+"/"+n)});e()})},localizationService.translate=i.translate=function(n){return(i.translator[(n||"").toUpperCase()]||{value:""}).value},localizationService.$translate=i.$translate=function(n){var t=((n||"")+"").replace(/[^a-z0-9]/gi,""),t=i.translate(t);return t||n},i.load(getCookie(app.data.cultureCookieName)),i}]);localizationService={translate:function(n){return n},$translate:function(n){return n}};app.directive("ngTranslate",function(){return{scope:{translate:"@ngTranslate"},restrict:"EA",template:'<span ng-bind-html="value"><\/span>',replace:!1,controller:["$scope","LocalizationService",function(n,t){n.value=t.$translate(n.translate);n.$on("localization.loaded",function(){n.value=t.$translate(n.translate)})}]}});app.directive("ngPlaceholder",function(){return{restrict:"A",scope:{placeholder:"=ngPlaceholder",translate:"@"},link:function(n,t){if(n.translate){t[0].placeholder=localizationService.$translate(n.translate);n.$on("localization.loaded",function(){t[0].placeholder=localizationService.$translate(n.translate)});return}n.placeholder&&n.$watch("placeholder",function(){t[0].placeholder=localizationService.$translate(n.placeholder)})}}});app.directive("ngTranslateTitle",function(){return{restrict:"A",scope:{translate:"@ngTranslateTitle"},controller:["$scope","LocalizationService",function(n,t){n.LocalizationService=t}],link:function(n,t){n.translate&&(t[0].title=n.LocalizationService.translate(n.translate),n.$on("localization.loaded",function(){t[0].title=n.LocalizationService.translate(n.translate)}))}}});app.controller("CreateAccountController",["$scope","UserService","insurerApiService","LocalizationService","DialogService","$q",function(n,t,i,r,u,f){function o(i){var r=this;r.lob=i;r.CustomerNumber="";r.Customer=null;r.css="";r.change=function(){r.css="";r.Customer=""};r.submit=function(){var i=n.accounts.where(function(n){return n.CustomerNumber.toLowerCase()===r.CustomerNumber.toLowerCase()&&n.lob===r.lob});i.length>1||(r.css="field-loading",t.createAccount.search({customerNumber:r.CustomerNumber,companyCode:r.lob.CompanyCode}).$promise.then(function(n){r.Customer=n;r.css=""},function(){u.error("Unable to find Customer");r.css="validationError"}))};r.use=function(){var t=n.requestLogin,i=r.Customer.DefaultShipToAddress||{},u=(i.Country?i.Country.CountryCode:"US")||"US";t.BusinessName=r.Customer.CustomerName;t.Address1=i.Address1;t.Address2=i.Address2;t.City=i.City;t.StateProvince=states.firstOrDefault(function(n){return n.code===i.StateProvince});t.PostalCode=i.PostalCode;t.Country=countries.firstOrDefault(function(n){return n.code===u});t.Phone=formatPhoneNumber(r.Customer.PhoneNumber)};r.remove=function(){n.accounts.remove(r);n.accounts.length||n.addAccount();n.accounts.each(function(n,t){n.index=t})}}t.goHome();return;var e}]);app.controller("RequestAccountController",["$scope","UserService","DialogService","LocalizationService",function(n,t,i,r){n.showPage=!1;n.accounts=[];n.$translate=r.$translate;n.lobs=[{CompanyCode:"001",LineOfBusinessKey:1,Name:"Aftermarket-US"},{CompanyCode:"002",LineOfBusinessKey:1,Name:"Aftermarket-Canada"},{CompanyCode:"004",LineOfBusinessKey:2,Name:"Recycled"},];n.lobs.get=function(t){return n.lobs.firstOrDefault(function(n){return n.CompanyCode==t})};n.page=window.location.pathname.split("/")[1].toLowerCase();n.initialize=function(){if(!t.user||!t.user.getUnsuedLobs)return t.go("/");var r=t.user.getUnsuedLobs()[0];if(!r)return t.go("/");switch(n.page){case"request-account":(function(){function u(r){var u=this;u.lob=n.lobs.get(r)||n.lobs[0];u.reset=function(){u.show=!1;u.customer=undefined;u.loading=!1};u.reset();u.selectLob=function(){i.select({message:"Pick a Line of Business",data:n.lobs,current:u.lob,match:"Name"}).then(function(n){u.reset();u.lob=n})};u.remove=function(){i.confirm("Remove this account?").then(function(){n.accounts.remove(u);n.accounts.length==1&&(n.accounts[0].show=!0)})};u.search=function(){var r,f,e;if(u.CustomerNumber){if(r=t.user.customers[u.CustomerNumber.toLowerCase()],r&&r.CompanyCode==u.lob.CompanyCode){i.warning("This customer already exists.");return}(f=n.accounts.firstOrDefault(function(n){return n.CustomerNumber==u.CustomerNumber&&n.lob==u.lob&&n!=u}),f)||(e=u.lob,u.loading=!0,t.createAccount.search({customerNumber:u.CustomerNumber,companyCode:u.lob.CompanyCode}).$promise.then(function(t){u.lob==e&&(u.customer=t,u.loading=!1,n.showAccount(u))},function(n){u.loading=!1;i.error(n.headers("Errors"))}))}}}t.setTitle("request Account","request-account");n.addAccount=function(t){n.accounts.each(function(n){n.show=!1});n.accounts.push(new u(t))};n.showAccount=function(t){n.accounts.each(function(n){n.show=!1});t.show=!0};n.isValid=function(){return!!n.accounts.firstOrDefault(function(n){return n.customer})};n.submit=function(){if(n.isValid()){var r=t.user,f=n.accounts.where(function(n){return n.customer}).select(function(n){return{Number:n.customer.CustomerNumber,CompanyCode:n.customer.CompanyCode,LineOfBusinessId:n.customer.LineOfBusiness.LineOfBusinessKey}}),e=n.accounts[0].customer,u=n.accounts[0].customer.DefaultShipToAddress,o={UserId:r.UserKey,FirstName:r.FirstName,LastName:r.LastName,Email:r.Email,UserName:r.UserName,Password:"S0m3GenEr1cP@ssw0rd",AddressName:r.AddressName,Address1:u.Address1,Address2:u.Address2,City:u.City,State:u.StateProvince,PostalCode:u.PostalCode,Country:u.Country.CountryCode,Phone:r.PhoneNumber,BusinessName:e.CompanyName,SpecialInstructions:"",AllowNotification:r.AllowNotification,RoleName:r.Role.RoleName,CustomerAccounts:f};i.setLoading(!0,"Creating Request...");t.createAccount(o).$promise.then(function(){i.alert("Your login request has been submitted successfully.  An LKQ representative will contact you within 3 business days.  Thank you for your business.","success").then(function(){t.goHome()});setCookie("showNeedAccessDialog","1",365)},function(n){i.error(n.headers("Errors"))})}};n.showAddAccountButton=function(){var t=!0;return n.accounts.each(function(n){n.customer||(t=!1)}),t};n.addAccount(r.CompanyCode);n.showPage=!0})();break;case"new-account":(function(){t.setTitle("New Account","new-account");n.isValid=function(){var t=!0,i=n.account;return t&=!!i.CompanyName,t&=!!i.Address1,t&=!!i.City,t&=isValidAddress(i),t&isValidPhoneNumber(i.PhoneNumber)};n.submit=function(){if(n.isValid()){var r=n.account,f=t.user,u={CompanyCode:r.lob.CompanyCode,LineOfBusinessKey:r.lob.LineOfBusinessKey,AccountType:r.lob.iconText,CompanyName:r.CompanyName,Address1:r.Address1,Address2:r.Address2,City:r.City,StateProvince:r.StateProvince.code,PostalCode:r.PostalCode,Country:r.Country.code,PhoneNumber:r.PhoneNumber,Email:r.Email,IsNewCustomer:!0};i.setLoading(!0,"Creating Request...");t.sendUserCustomerRequest(u).$promise.then(function(){i.alert("Your login request has been submitted successfully.  An LKQ representative will contact you within 3 business days.  Thank you for your business.","success").then(function(){t.goHome()})},function(n){i.error(n.headers("Errors"))})}};var f=t.user,u=f.activeCustomers[0]||{};n.account={lob:n.lobs.get(r.CompanyCode)||n.lobs[0],IsNewCustomer:!0,CompanyName:u.CustomerName,Email:f.Email,Address1:u.DefaultShipToAddress.Address1,Address2:u.DefaultShipToAddress.Address2,City:u.DefaultShipToAddress.City,StateProvince:states.get(u.DefaultShipToAddress.StateProvince),PostalCode:u.DefaultShipToAddress.PostalCode,Country:countries.get(u.DefaultShipToAddress.Country.CountryCode),PhoneNumber:u.PhoneNumber};n.showPage=!0})()}};n.$on("$routeChangeStart",function(){t.validateUserProfile()});n.initialize()}]);app.controller("MyAccountController",["$scope","UserService","DialogService","$location",function(n,t,i){function r(n){var t=states.firstOrDefault(function(t){return t.code===n.StateProvince}),i=countries.firstOrDefault(function(t){return t.code===n.CountryCode});return t&&!i&&(i=countries.firstOrDefault(function(n){return n.code===t.country})),{UserKey:n.UserKey,RecId:n.RecId,AddressName:n.AddressName||"",Address1:n.Address1||"",Address2:n.Address2||"",City:n.City||"",StateProvince:t,PostalCode:n.PostalCode||"",Country:i}}function u(n){return{UserKey:n.UserKey,RecId:n.RecId,AddressName:n.AddressName||"",Address1:n.Address1||"",Address2:n.Address2||"",City:n.City||"",StateProvince:(n.StateProvince||{}).code||"",PostalCode:n.PostalCode||"",CountryCode:(n.Country||{}).code||""}}n.UserService=t;t.setTitle("My Account","account");n.loading=!0;n.insurers=[];n.enableInsurerDropDown=!1;n.initialize=function(){var i,r;(n.loading=!0,t.user&&t.user.Email)&&(n.loading=!1,i=n.user=t.user,i.InsuranceCompany||(n.enableInsurerDropDown=!0),n.myAccount={UserKey:i.UserKey,UserName:i.UserName,FirstName:i.FirstName,LastName:i.LastName,Email:i.Email,PhoneNumber:i.PhoneNumber,AllowNotification:i.AllowNotification,InsuranceCompany:i.InsuranceCompany},n.myAccountOriginal=JSON.stringify(n.myAccount),r=t.application.InsuranceCompanies,i.isKip&&!i.InsuranceCompany&&(i.InsuranceCompany||(r=n.insuranceCompanies=t.application.InsuranceCompanies.slice().sortBy("InsuranceCompanyName"),r.each(function(n){n.InsuranceCompanyName=n.InsuranceCompanyName.toUpperLower()}))),n.insurers=r)};n.isMyAccountValid=function(){var r=n.myAccount,i=!0,u;return i&=!!r.FirstName,i&=!!r.LastName,i&=isValidEmail(r.Email),i&=isValidPhoneNumber(r.PhoneNumber),i&=JSON.stringify(n.myAccount)!==n.myAccountOriginal,u=t.user,u.isKip&&!r.InsuranceCompany&&(i=!1),i};n.updateMyAccount=function(){if(n.isMyAccountValid()){var r=n.myAccount,u={UserKey:r.UserKey,AllowNotification:r.AllowNotification,Email:r.Email,FirstName:r.FirstName,LastName:r.LastName,PhoneNumber:r.PhoneNumber,InsuranceCompanyCode:"",InsuranceCompanyName:""};t.user.isKip&&r.InsuranceCompany&&(u.InsuranceCompanyCode=r.InsuranceCompany.InsuranceCompanyCode,u.InsuranceCompanyName=r.InsuranceCompany.InsuranceCompanyName);i.setLoading(!0);t.updateUser(u).then(function(n){if(n){var r=t.user;r.IsValid=n.IsValid;r.Email=n.Email;r.FirstName=n.FirstName;r.LastName=n.LastName;r.PhoneNumber=n.PhoneNumber;r.InsuranceCompanyCode=n.InsuranceCompanyCode;r.InsuranceCompanyName=n.InsuranceCompanyName;r.setInsuranceCompany()}i.setLoading();i.success("Your account has been updated.");t.goHome()},function(){i.setLoading()})}};n.insurerChanged=function(t){n.myAccount.InsuranceCompany=t};n.editingAddress=!1;n.editAddress=function(t){var i=r(t);t.match=JSON.stringify(i);t.edit=i;n.editingAddress=!0};n.isAddressValid=function(n){var t=1;return t&=!!n.edit.Address1,t&=!!n.edit.City,t&=isValidAddress(n.edit),t&=JSON.stringify(n.edit)!==n.match,t&!n.loading};n.cancelEditAddress=function(i){delete i.match;delete i.edit;delete i.loading;n.editingAddress=!1;i.RecId||t.user.UserAddresses.remove(i)};n.deleteAddress=function(n){i.confirm("Are you sure you want to delete this address?").then(function(){t.user.UserAddresses.remove(n);t.address.remove({recId:n.RecId})})};n.saveAddress=function(r){var e,f;n.isAddressValid(r)&&(r.loading=!0,e=t.user,r.edit.UserKey=e.UserKey,f=u(r.edit),t.address.save(f).$promise.then(function(t){delete r.match;delete r.edit;delete r.loading;n.editingAddress=!1;angular.extend(r,f);r.RecId||(f.RecId=t)},function(n){i.error(n.headers("Errors"))}))};n.addAddress=function(){n.editingAddress=!0;t.user.UserAddresses.push({match:"NOMATCH",edit:{}})};n.$on("$routeChangeStart",function(){t.validateUserProfile()});n.initialize();n.$on("user.active",n.initialize)}]);app.controller("PasswordController",["$scope","UserService","DialogService","$location","LocalizationService",function(n,t,i,r,u){n.$translate=u.$translate;n.isLoading=!0;n.request={};n.client=app.client;n.initializeForgotPassword=function(){t.setTitle("Forgot Password","password");t.user&&(i.error("Not allowed"),t.goHome());var u=r.search().userKey,f=r.search().nonce;if(t.passwordReset||u||t.goHome(),u){t.passwordReset={userKey:u,nonce:f};r.search({});return}t.validatePasswordResetRequest(t.passwordReset).$promise.then(function(r){n.isLoading=!1;angular.extend(n,r);n.isValid=function(){var t=1;return t&=isValidPassword(n.request.password),t&n.request.password===n.request.verify};n.submit=function(){if(n.isValid()){var r=t.passwordReset.nonce,u=t.passwordReset.userKey;i.setLoading(!0);t.resetPassword({nonce:r,userKey:u,password:n.request.password}).$promise.then(function(){t.passwordReset=undefined;i.setLoading();i.success("You have successfully reset your password.");t.goHome()},function(n){i.setLoading();i.success(n.headers("Errors"))})}}},function(n){i.error(n.headers("Errors")||"This request has expired");t.goHome()})};n.initializeChangePassword=function(){(t.setTitle("Change Password","password"),t.user)&&(n.isValid=function(){var t=1;return t&=!!n.request.currentPassword,t&=isValidPassword(n.request.newPassword),t&n.request.newPassword===n.request.verify},n.submit=function(){n.isValid()&&(i.setLoading(!0),t.changePassword({currentPassword:n.request.currentPassword,newPassword:n.request.newPassword}).$promise.then(function(){i.setLoading();i.success("Your password has been changed.  It will be effective the next time you login.");t.goHome()},function(n){i.setLoading();var t=n.headers("Errors");t==="Bad Password"&&(t="Invalid Password. Please re-enter current password.");i.error(t)}))})};var f=window.location.pathname.split("/").removeEmpties()[0];if(f==="forgot-password"){n.initializeForgotPassword();return}if(f==="change-password"){n.initializeChangePassword();n.$on("user.active",n.initializeChangePassword);return}t.goHome()}]);app.service("UserService",["UserAPIService","$rootScope","$timeout","LocalizationService","$location","$http","$interval","DialogService","$q","AnalyticsService","CatalogSingletonService",function(n,t,i,r,u,f,e,o,s,h){function v(){function f(){i.headers=i.headers||{};var n=i.headers.date||new Date;i.serverTime=new Date(n);i.serverTimeString=n;i.timeDiff=i.serverTime.diff(null,seconds);i.captureTime=new Date}function e(n){c.application=n||{};var t={},r=c.application.InsuranceCompanies||[];r.sortBy("InsuranceCompanyName").each(function(n){var i=n.InsuranceCompanyName.toLowerCase().toWebsiteURL()+n.CompanyCode,r=n.InsuranceCompanyCode.toLowerCase().toWebsiteURL()+n.CompanyCode,u=n.AQRPName.toLowerCase().toWebsiteURL()+n.CompanyCode;t[n.InsuranceCompanyKey]=n;t[i]=n;t[r]=n;t[u]=n});app.data.insurance=t;i.favorites()}var i=c.user,u=i.Role,r;if(u&&u.RoleName==="Guest")return l();i.permissions=i.p={};i.ResultantPermissions&&i.ResultantPermissions.each(function(n){i.permissions[n.PermissionName.toLowerCase()]=!0});i.hasPermission=function(n){return i.permissions[(n||"").toString().toLowerCase()]};f();i.setSearchType=function(n){i.localSearch=n==="local";t.$broadcast("user.searchType.set")};i.aqrp=function(){o.select({title:"Select your KeysIQ Insurance Carrier",data:c.application.InsuranceCompanies,current:i.aqrp.current,match:"InsuranceCompanyName"}).then(i.aqrp.set)};i.aqrp.set=function(n){i.aqrp.current=n;c.CheckoutService.reset();t.$broadcast("aqrp.set")};i.hasNationalSearch=function(){return!0};i.buckets=[{icon:"fa-open-orders",title:"Open Orders",action:function(){c.go("/open-orders/")}},{icon:"fa-invoice-history",title:"Invoice History",action:function(){c.go("/invoice-history/")}},{icon:"fa-returns",title:"Request Returns",action:function(){c.go("/request-return/")}}];i.Role&&i.Role.RoleName.toLowerCase().indexOf("kip")>-1&&(i.buckets=[{icon:"fa-kip-change-zip",title:"Change Zip Code",action:function(){i.kip()}},{icon:"fa-kip-part-search-history",title:"Part Search History",action:function(){c.go("/product-history/")}},{icon:"fa-user",title:"My Account",action:function(){c.go("/my-account/")}}],i.isKip=!0,i.KipCustomerRepPhoneNumber="187739127274",i.KipCustomerRepPhoneNumberDisplay="1.877.391.2727 ext 4",i.kip=function(n,t){var r="Please enter your shipping postal code";n&&(r+="<p class='text-danger'>"+n+"<\/p>");o.prompt(r,i.kip.postalCode||"","PostalCode").then(function(n){i.kip.set(n).then(null,i.kip)},function(){if(t){i.kip("You must supply a valid postal code before continuing",!0);return}o.warning("Postal code change cancelled")})},i.kip.set=function(t,r){t=(t||"").toUpperCase();var u=s.defer();return i.activeCustomers.each(function(n){n.AfterMarketServiceLocation=null}),n.updateKipZip({zipCode:t}).$promise.then(function(f){function s(i){if(i){var r={companyCode:i.CompanyCode,postalCode:t};n.getLocationByZip(r).$promise.then(function(n){var t=i.AfterMarketServiceLocation=(n.Locations||[])[0]||{};t.PhoneNumber=t.PhoneNumber?t.PhoneNumber.toPhoneNumber():"";s(e.shift())});s(e.shift())}}if(f&&f.Message)return u.reject(f.Message||"Unsuccessful zip code");r||o.success("Customer account changed");i.kip.kips.remove(t);i.kip.kips.unshift(t);i.kip.kips=i.kip.kips.slice(0,10);setCookie(app.data.kipZips,i.kip.kips.join(","));c.user.kip.newZip="";i.kip.postalCode=t;var e=i.activeCustomers.slice();s(e.shift());u.resolve()},function(){u.reject("Unsuccessful zip code")}),u.promise},i.kip.kips=[],r=getCookie(app.data.kipZips),r&&(i.kip.kips=r.split(","),i.kip.postalCode=i.kip.kips[0]),i.kip.receiver=t.$on("customer.loaded",function(){i.kip.receiver();i.kip.postalCode?i.kip.set(i.kip.postalCode,!0):i.kip("",!0)}));i.favorites=function(){var t=s.defer();return n.getFavorites().$promise.then(function(n){n.each(function(n){n.Quantity=n.PartQuantity});i.favorites.items=n;t.resolve()},function(n){t.reject(n)}),t.promise};i.favorites.toggle=function(t){var r=i.favorites.get(t),u;r?(i.favorites.items.remove(r),n.removeFavorite(r)):(u=new c.ProductFactory.FavoritePart(t),i.favorites.items.push(u),n.addFavorite(u))};i.favorites.remove=function(r){var u=i.favorites.get(r);u&&(i.favorites.items.remove(u),n.removeFavorite(u),i.favorites.parts.remove(r),t.$broadcast("favorites.remove"))};i.favorites.update=function(n){n.updateFavorite()};i.favorites.get=function(n){return(i.favorites.items=i.favorites.items||[],!n)?!1:i.favorites.items.firstOrDefault(function(t){return t.PartNumber===(angular.isString(n)?n:n.PartNumber)})};i.favorites.is=function(n){return!!i.favorites.get(n)};i.favorites.clear=function(){i.favorites.items=[];i.favorites.parts=[];n.clearFavorites()};i.PhoneNumber=(i.PhoneNumber||"").toPhoneNumber();i.PhoneNumber==="() -"&&(i.PhoneNumber="");i.setInsuranceCompany=function(){i.InsuranceCompany=undefined;i.isKip&&i.InsuranceCompanyCode&&(i.InsuranceCompany=c.application.InsuranceCompanies.firstOrDefault(function(n){return n.InsuranceCompanyCode==i.InsuranceCompanyCode}))};i.setInsuranceCompany();delete i.invoices;delete i.invoice;delete i.orders;delete i.order;c.getApplication().then(e);i.p.viewcms&&!window.Quill&&($("body").append("<link href='/Content/quill.snow.css' rel='stylesheet'>"),$("body").append("<script src='/Scripts/quill.min.js'><\/script>"),$("body").append("<script src='/Scripts/quill.extensions.js'><\/script>"));t.$broadcast("user.active");c.ready=!0}function y(){var i=c.user,r,f,u,e;i&&(r=[],i.CustomerAccounts.each(function(n){r.push(new c.Factory.Customer(n))}),i.CustomerAccounts=r,i.CustomerAccounts.get=function(n,t){return angular.isObject(n)&&(t=n.CompanyCode,n=n.CustomerNumber),i.CustomerAccounts.firstOrDefault(function(i){return i.CompanyCode==t&&i.CustomerNumber==n})},r=i.CustomerAccounts.sortBy("CustomerName"),f=i.LastLoginCustomers.select(function(n){return n.CustomerKey}),u=[],i.allCustomers=r,r.each(function(n){f.contains(n.CustomerKey)&&u.push(n);n.description=n.CustomerNumber+" - "+n.CustomerName}),i.linesOfBusiness=r.select(function(n){return n.LineOfBusiness.LineOfBusinessKey}).distinct(),i.companyCodes=r.select(function(n){return n.CompanyCode}).distinct(),e=i.companyCodes.where(function(n){return!u.contains(function(t){return t.CompanyCode===n})}),e.each(function(n){u.push(r.firstOrDefault(function(t){return t.CompanyCode===n}))}),i.setupCustomers=function(n){i.activeCustomers=n.sortBy("CompanyCode");i.customersByLobKey={};i.customers={};i.activeCustomers.each(function(n){i.customers[n.CustomerKey]=n;i.customers[n.CustomerNumber.toLowerCase()]=n;i.customers[n.CompanyCode]=n;i.customers[n.lobKey]=n;i.customersByLobKey[n.lobKey]=i.allCustomers.where(function(t){return t.lobKey===n.lobKey});n.loaded=!1});i.activeCustomers.ids=i.activeCustomers.select(function(n){return n.CustomerNumber+"-"+n.CompanyCode});i.activeCustomers.companyCodes=i.activeCustomers.select(function(n){return n.CompanyCode}).distinct().sort();i.activeCustomers.lobKeys=i.activeCustomers.select(function(n){return n.LineOfBusiness.LineOfBusinessKey}).distinct().sort()},i.setupCustomers(u),i.getCustomer=function(n){return i.activeCustomers.firstOrDefault(function(t){return t.CompanyCode===n})},i.setCustomer=function(r,u){var f=s.defer(),e=i.activeCustomers.firstOrDefault(function(n){return n.CompanyCode===r.CompanyCode});return!u&&(!e||e===r)?(f.reject(),f.promise):(u||o.setLoading(!0,"Loading User..."),n.legacySetCustomer({CustomerNumber:r.CustomerNumber,CompanyCode:r.CompanyCode,Activate:!0}).$promise.then(function(n){r.loaded||r.update(n);i.isKip&&(r.AfterMarketServiceLocation=null);i.activeCustomers.remove(e);i.activeCustomers.push(r);i.setupCustomers(i.activeCustomers);u||(o.setLoading(),o.pop("success","","Account has been changed."),t.$broadcast("user.active"),t.$broadcast("customer.changed"));f.resolve()},function(n){u||o.error(n.headers("Errors"));f.reject(n)}),f.promise)},i.getUnsuedLobs=function(){if(i.isKip)return[];var n=i.activeCustomers.lobKeys;return c.application.LinesOfBusiness.where(function(t){return n.indexOf(t.LineOfBusinessKey)==-1})})}function l(){c.user=undefined;c.token=undefined;app.token=undefined;app.usaToken=undefined;clearCookie(app.data.authorizationCookieName);clearCookie(app.data.userIdCookieName);clearCookie(app.data.rememberCookieName);var n=window.location.pathname.split("/").removeEmpties()[0];n&&!["create-account","forgot-password","contact-us"].contains(n.toLowerCase())&&c.goHome();c.ready=!0;i(function(){$("#login-username").focus()},100);t.$broadcast("user.active")}function a(n){o.error(n.headers("Errors"));c.goHome()}var c=this;return h.UserService=c,c.title="Shop.LKQCorp.com",c.type="home",c.doOldShopCheck=!0,c.doShowUserConversionDialog=!0,c.go=function(n){u.path(n==="//"?"/":n)},c.goHome=function(){c.go("/")},c.goBack=function(){window.history.back()},c.setTitle=function(n,t){$("title").html(n);document.title=n;document.type=t},t.$on("user.active",function(){var n,t,i;c.doOldShopCheck&&c.user&&(n=c.user.UserKey,t=c.user.UserName,n&&t&&(i="https://portal.lkqcorp.com/api/users/get-shop-user?oldshopuserid="+n+"&oldshopusername="+t,f.get(i).then(function(i){var r,f,u;i.data&&(r=i.data,console.log(r),f=r.isConverted,f&&(u=r.conversionStatus,u&&(u==="R"?this.window.location.href="https://portal.lkqcorp.com":u==="X"&&(c.doShowUserConversionDialog=!1,c.doOldShopCheck=!1))));c.doShowUserConversionDialog&&c.doOldShopCheck&&o.userConversionAlert(function(){this.window.location.href="https://portal.lkqcorp.com/login?oldShopUsername="+t+"&oldShopUserId="+n},function(){this.window.location.href="https://portal.lkqcorp.com/validate-profile?oldShopUsername="+t+"&oldShopUserId="+n})},function(){})))}),c.getCompanyCodes=function(){return c.user?c.user.CustomerAccounts.select(function(n){return n.CompanyCode}).distinct():[]},t.$on("authorization.error",function(){delete f.defaults.headers.common.Authorization;o.alert("Oops. Your session has been lost.");c.user=undefined;c.goHome()}),c.validateUserProfile=function(n){var t=c.user,i;if(t)if(t.IsValid)try{n()}catch(r){}else i={message:"Please go to the account page and select the insurance provider you represent.",title:"Invalid Account Detected",buttonText:"Ok",cancelText:null},o.alert(i),c.go("/my-account/")},c.doRequestNewCustomer=function(){c.user&&!c.user.isKip&&c.getApplication().then(function(){var n=c.user.getUnsuedLobs()[0],t,i;if(!n||getCookie("showNeedAccessDialog"))return c.validateUserProfile();t="Add a recycled account to receive access to our inventory of recycled auto parts.";i="Need a recycled account number?";n.LineOfBusinessKey==1&&(t="Add a aftermarket account to receive access to our inventory of aftermarket products.",i="Need a aftermarket account number?")})},c.getCustomers=function(i){c.user&&n.legacyCustomers().$promise.then(function(n){function u(n){if(!n){i?c.doRequestNewCustomer():c.validateUserProfile();t.$broadcast("customer.loaded");return}c.user.setCustomer(n,!0).then(function(){u(r.shift())},function(){u(r.shift())})}c.user.CustomerAccounts=n;c.user.LastLoginCustomers=n.where(function(n){return n.active});y();t.$broadcast("customer.started");var r=c.user.activeCustomers.slice();u(r.shift())})},c.getUser=function(i,r){var u=s.defer();return i=="undefined"?(u.reject(),u.promise):(n.user({id:i,Timeout:1}).$promise.then(function(e){var y,s,h,a,p;if(!o.checkSuccess(e))return l(),u.reject();e.data=e.data||{};e.data.id=e.data.id||i;r||(y=getCookie(app.data.authorizationCookieName),y?n.legacyGet({token:y}).$promise.then(function(n){app.usaToken=y;c.user=c.user||{};angular.extend(c.user,n);s.headers=e.headers;v();c.getCustomers()},l):(u.reject(),l()));s=c.user=c.user||{};angular.extend(s,e.data);s.headers=e.headers;v();setCookie(app.data.userIdCookieName,s.id,15*daysToMinutes);app.userId=s.id;t.$broadcast("user.active");c.ready=!0;c.doOldShopCheck&&c.user&&(h=c.user.UserKey,a=c.user.UserName,h&&a&&(p="https://portal.lkqcorp.com/api/users/get-shop-user?oldshopuserid="+h+"&oldshopusername="+a,f.get(p).then(function(n){var t,r,i;n.data&&(t=n.data,console.log(t),r=t.isConverted,r&&(i=t.conversionStatus,i&&(i==="R"?this.window.location.href="https://portal.lkqcorp.com":i==="X"&&(c.doShowUserConversionDialog=!1,c.doOldShopCheck=!1))));c.doShowUserConversionDialog&&c.doOldShopCheck&&o.userConversionAlert(function(){this.window.location.href="https://portal.lkqcorp.com/login?oldShopUsername="+a+"&oldShopUserId="+h},function(){this.window.location.href="https://portal.lkqcorp.com/validate-profile?oldShopUsername="+a+"&oldShopUserId="+h})},function(){})))},l),u.promise)},c.login=function(){if(!c.login.username||!c.login.password){o.error("You must supply a user name and password");return}c.login.loading=!0;var i={username:c.login.username,password:c.login.password,ApplicationId:app.id,OmitCustomers:!0};n.login(i).$promise.then(function(r){(c.login.loading=!1,o.checkSuccess(r))&&(c.login.username="",c.login.password="",c.user=r.data,c.ready=!0,t.$broadcast("user.active"),!r.data.id,setCookie(app.data.userIdCookieName,r.data.id,15*daysToMinutes),c.getUser(r.data.id,!0),n.legacyLogin(i).$promise.then(function(n){c.user&&(c.user=c.user||{},c.user.LastName=c.user.LastName||c.user.firstname,c.user.LastName=c.user.LastName||c.user.lastname,angular.extend(c.user,n),c.validateUserProfile(),v(),c.getCustomers(!0))},l))},function(n){c.login.loading=!1;a(n)})},c.login.showLogin=function(){return c.ready?!c.user:!1},c.login.showMain=function(){return c.ready?c.user:!1},c.logout=function(){l();setCookie(app.data.defaultLobCookieName,"",0);n.logout()},c.forgot=function(){function t(n,t){var i="<p>Thanks! Now check your email.<\/p><p>You entered [VALUE].<\/p><p>If this email is associated with a shop.LKQCorp.com profile, we’ll email you information regarding your login information.<\/p><p>If you don't receive this email, please look for it in your spam folder or double check the spelling of your account's email address.<\/p><p>You can also contact our B2B support team at (866) 557-2677 or <a href='B2BSupport@LKQCorp.com'>B2BSupport@LKQCorp.com<\/a> for assistance.<\/p>";i=r.$translate(i);i=i.replace(/(\[VALUE\])/g,t);o.alert(i,n);c.forgot.type="";c.forgot.username="";c.forgot.email=""}if(c.forgot.type==="password"){if(!c.forgot.username)return o.warning("You must enter a user name.");n.forgotPassword({userName:c.forgot.username}).$promise.then(function(n){n.WasSuccessful?t("Password Reset Requested",c.forgot.username):o.error(n.Errors.toString())},a)}else{if(!c.forgot.email)return o.warning("You must enter an email.");n.forgotUsername({email:c.forgot.email}).$promise.then(function(){t("Username Requested",c.forgot.email)},a)}},c.forgot.set=function(n,t){if(c.forgot.type!==n){c.forgot.type=n;return}t&&(c.forgot.type="")},c.forgot.translateResult=function(){var n=c.forgot.type==="username"?r.$translate("ForgotUserNameResponseMessage"):r.$translate("ForgotPasswordResponseMessage");return n=n.replace(/(\[EMAIL\])/g,c.forgot.email),n.replace(/(\[USERNAME\])/g,c.forgot.username)},c.createAccount=n.createAccount,c.createAccount.search=n.getCustomer,c.createAccount.isUserNameValid=n.isUserNameValid,c.validatePasswordResetRequest=n.validatePasswordResetRequest,c.resetPassword=n.resetPassword,c.changePassword=n.changePassword,c.sendUserCustomerRequest=n.sendUserCustomerRequest,c.getApplication=function(){var t=s.defer();if(c.application)t.resolve(c.application);else if(c.getApplication.defers=c.getApplication.defers||[],c.getApplication.defers.length)c.getApplication.defers.push(t);else{c.getApplication.defers.push(t);function i(n){var t=c.application=n||{LinesOfBusiness:[]},i;for(t.companyCodes=t.LinesOfBusiness.select(function(n){return n.CompanyCode}),t.lobKeys=t.LinesOfBusiness.select(function(n){return n.LineOfBusinessKey});c.getApplication.defers.length;)i=c.getApplication.defers.shift(),i.resolve(c.application)}n.application().$promise.then(i,i)}return t.promise},c.updateUser=function(t){var i=s.defer();return n.updateUser(t).$promise.then(function(n){i.resolve(n)},function(n){c.user=undefined;a(n);i.reject()}),i.promise},c.getUserByToken=function(){var t=s.defer();return n.getUserByToken.$promise.then(function(n){c.user=n;v();t.resolve()},function(n){c.user=undefined;a(n);t.reject()}),t.promise},c.address={},c.address.save=n.saveAddress,c.address.remove=n.removeAddress,c.getMarketingData=n.getMarketingData,c.contactUs=n.contactUs,c.getLocalLocation=function(){n.getLocationByIP().$promise.then(function(n){c.location=n||{};c.location.Address=c.location.Address||{};c.location.Address.PhoneNumber=(c.location.Address.PhoneNumber||"(866) 557-2677").toPhoneNumber()},function(){c.location={Address:{PhoneNumber:"(866) 557-2677"}}})},c.keepAlive=function(){function t(){o.alert("Oops! Your session was lost.");l();c.goHome()}app.usaToken&&n.getUserToken().$promise.then(function(n){if(app.usaToken===n.UserToken)setCookie(app.data.authorizationCookieName,app.usaToken,15*daysToMinutes),setCookie(app.data.userIdCookieName,(c.user||{}).id||"",15*daysToMinutes);else return t()},t)},e(c.keepAlive,4*minutes),c.initialize=function(){c.getLocalLocation();c.ready=!1;c.user=undefined;var n=getCookie(app.data.userIdCookieName);if(n||(n=getCookie(app.data.rememberCookieName)),!n)return l();app.userId=n;c.getUser(n).then(0,l);return},c.initialize(),c}]);app.service("UserAPIService",["$resource",function(n){return n("",{},{login:{method:"POST",url:app.version.auth,transformResponse:function(n,t){var i={};try{i=JSON.parse(n)}catch(r){}return i=i||{},i.headers=t(),i}},auth:{method:"GET",url:app.version.auth+":id"},user:{method:"GET",url:app.version.user+":id",transformResponse:function(n,t){var i={};try{i=JSON.parse(n)}catch(r){}return i=i||{},i.headers=t(),i}},userCustomers:{method:"GET",url:app.version.user+":id/customer"},getUserToken:{method:"GET",url:app.api+"user/GetUserToken"},legacyGet:{method:"GET",url:app.api+"user/GetUserBySecurityToken",params:{token:"@token",omitCustomers:!0},transformResponse:function(n,t){var i={};try{i=JSON.parse(n)}catch(r){}return i.headers=t(),i}},legacyCustomers:{method:"GET",url:app.api+"customer/GetUserCustomers",isArray:!0},legacySetCustomer:{method:"POST",url:app.api+"customer/SetActiveCustomer"},updateKipZip:{method:"PUT",url:app.api+"user/UpdateKipZip",params:{zipCode:"@zipCode"}},updateUser:{method:"POST",url:app.api+"user/updateuser"},saveAddress:{method:"POST",url:app.api+"user/SaveUserAddress",params:{address:"@address"}},removeAddress:{method:"DELETE",url:app.api+"user/RemoveUserAddress",params:{recId:"@recId"}},forgotPassword:{method:"GET",url:app.api+"user/RequestPasswordReset",params:{userName:"@userName"}},forgotUsername:{method:"GET",url:app.api+"user/RequestUserName",params:{email:"@email"}},validatePasswordResetRequest:{method:"GET",url:app.api+"user/ValidatePasswordResetRequest",params:{nonce:"@nonce",userKey:"@userKey"}},resetPassword:{method:"PUT",url:app.api+"user/ResetPassword",params:{nonce:"@nonce",userKey:"@userKey",password:"@password"}},changePassword:{method:"PUT",url:app.api+"user/PasswordChange"},application:{method:"GET",url:"/api/application"},logout:{method:"post",url:app.api+"user/logout"},legacyLogin:{method:"post",url:app.api+"user/login",params:{username:"@username",password:"@password",omitCustomers:!0}},getUser:{method:"GET",url:app.api+"user/GetUserBySecurityToken",params:{token:"@token"}},getCustomer:{method:"GET",url:app.api+"customer/GetByCustomerNumber",params:{customerNumber:"@customerNumber",companyCode:"@companyCode"}},isUserNameValid:{method:"GET",url:app.api+"user/CheckIfUsernameAvailable",params:{userName:"@userName"}},createAccount:{method:"POST",url:app.api+"userregistration/1"},sendUserCustomerRequest:{method:"POST",url:app.api+"user/sendUserCustomerRequest"},changeActiveCustomer:{method:"PUT",url:app.api+"user/ChangeActiveCustomerAccount",params:{customerKey:"@customerKey"}},getFavorites:{method:"GET",url:app.api+"cart/GetFavoritesLite",isArray:!0},addFavorite:{method:"POST",url:app.api+"cart/addFavoriteByInput"},removeFavorite:{method:"POST",url:app.api+"cart/DeleteFavoriteByInput"},updateFavorites:{method:"POST",url:app.api+"cart/UpdateFavorites"},clearFavorites:{method:"POST",url:app.api+"cart/ClearFavorites"},getMarketingData:{method:"POST",url:app.api+"marketing/GetMarketingData"},contactUs:{method:"POST",url:app.api+"user/contactUs"},getLocationByIP:{method:"GET",url:app.api+"locations/ip"},getLocationByZip:{method:"GET",url:app.api+"kip/location"}})}])