var _gaq,ibsa;angular.module("exciteApp").controller("LoungeController",["$scope","$window","apiCommand","makeStatus",function(n,t,i,r){"use strict";var u=n.lounge={templateID:null,status:r()},f=0,e="You have items in you cart. By logging out, those items in your cart will only appear when you log back in.\n\nAre you sure you want to log out?";n.init=function(n,t){u.templateID=n;f=t};u.logout=function(){f&&t.confirm(e)===!1||i.customerLogout().success(function(n){n.redirectUrl!=null&&n.redirectUrl.length>0&&(t.location.href=n.redirectUrl)}).error(function(){})}}]).controller("LoginController",["$scope","$window","apiCommand","makeStatus","siteInfo",function(n,t,i,r,u){"use strict";var e=n.login={username:null,password:null,returnUrl:null},f=n.status=r(),o=n.validation={show:!1};n.init=function(n){e.returnUrl=n};n.submit=function(){if(n.loginForm.$dirty&&n.loginForm.$valid){if(!f.start())return;i.customerLogin(e).success(function(n){if(n&&n.success)if(u.siteId===60)if(document.referrer.indexOf(window.location.host)!==-1&&document.referrer.length>0){var i=location.protocol+"//"+location.host+"//";document.location.href=document.referrer?document.referrer:"/"}else document.location.href="/";else t.location.href=n.returnUrl;else f.setError("Incorrect details - Please try again")}).error(function(){f.setError()})["finally"](function(){f.stop()})}else o.show=!0}}]).controller("ForgotPasswordController",["$scope","apiCommand",function(n,t){"use strict";var i=n.forgot={email:null},r=n.validation={show:!1};n.submit=function(u){if(n.forgotPasswordForm.$dirty&&n.forgotPasswordForm.$valid){if(!u.status.start())return;t.customerResetPassword(i.email).success(function(n){n&&n.success?u.status.setSuccess(n.message):u.status.setError(n.message)}).error(function(){u.status.setError("Unable to reset your password at this time, please try again later.")})["finally"](function(){u.templateID="login"})}else r.show=!0}}]).controller("SignUpController",["$scope","apiCommand","apiQuery",function(n,t,i){"use strict";n.signUp={businessName:"",email:"",password:"",confirmPassword:"",abn:"",websiteAddress:"",businessIndustry:"",businessType:"",streetAddress:"",city:"",state:"",country:"",postcode:"",contactName:"",position:"",phone:"",addToMailingList:!0};n.processed=!1;n.processing=!1;n.result={};n.countries=[];n.states=[];n.selected={coutry:{},state:{}};n.businessTypes={retailStore:!1,online:!1,both:!1};n.init=function(){n.countries.push({id:11,name:"Australia"});n.countries.push({id:139,name:"New Zealand"});n.selected.country=n.countries[0];n.getStates()};n.getStates=function(){i.getCountryStates(n.selected.country.id).success(function(t){n.states=t.states}).error(function(){})["finally"](function(){})};n.changeCountry=function(){n.states=[];n.getStates()};n.submit=function(){n.signUp.country=n.selected.country.name;n.signUp.state=n.selected.state.name;var i={signUp:n.signUp};n.processing=!0;t.customerSignUp(i).success(function(t){n.result=t}).error(function(){})["finally"](function(){n.processing=!1})}}]).controller("OrdersController",["$scope","apiQuery","paymentTypes","siteInfo",function(n,t,i,r){"use strict";n.ordersModel={};n.loading=!0;n.loadingInvoice=!1;t.getCustomerOrders().success(function(t){n.ordersModel.orders=t.orders;n.loading=!1});n.invoice={};n.loadInvoice=function(u){n.loadingInvoice=!0;var f=$("#invoice-modal-link").data("target");$(f).modal("show");$(".modal").height("90%");window.isMobileBreakpoint()?($(".modal").width("95%"),$(".modal").css("left","2.5%")):$(".modal").width("650px");t.getInvoice(u).success(function(t){var u=i.filter(function(n){return n.id===t.paymentTypeValue})[0];n.loadingInvoice=!1;angular.extend(n.invoice,t);n.invoice.paymentTypeDescription=u&&u.description;n.invoice.currencyCode=r.currencyCode})}}]).controller("LoyaltyController",["$scope","apiQuery",function(n,t){"use strict";var i=n.loyalty={};n.loading=!0;t.getCustomerLoyalty().success(function(t){angular.extend(i,t);n.loading=!1})}]).controller("ChangeEmailController",["$scope","apiCommand","makeStatus",function(n,t,i){"use strict";var r=n.changeEmail={newEmail:null,currentEmail:null},u=n.status=i(),f=n.validation={show:!1};n.init=function(n){r.currentEmail=n};n.submit=function(){if(n.changeEmailForm.$dirty&&n.changeEmailForm.$valid){if(!u.start())return;t.customerChangeEmail(r.newEmail).success(function(n){n.success===!0?(u.setSuccess(),r.currentEmail=r.newEmail,r.newEmail=""):u.setError("Unble to update your email address, please contact support.")}).error(function(){u.setError("Server error, please try again later.")})["finally"](function(){u.stop()})}else f.show=!0}}]).controller("ChangePasswordController",["$scope","apiCommand","makeStatus",function(n,t,i){"use strict";var u=n.changePassword={oldPassword:"",newPassword:"",confirmPassword:""},r=n.status=i(),e=n.validation={show:!1},f;n.submit=function(){if(n.changePasswordForm.$dirty&&n.changePasswordForm.$valid){if(!r.start())return;f={oldPassword:u.oldPassword,newPassword:u.newPassword};t.customerChangePassword(f).success(function(n){n.success===!0?r.setSuccess():r.setError("Unable to change your password, please contact support.")}).error(function(){r.setError("Server error, please try again later.")})["finally"](function(){r.stop()})}else e.show=!0}}]).directive("validateEquals",function(){"use strict";return{require:"ngModel",link:function(n,t,i,r){var u=function(t){var u=t===n.$eval(i.validateEquals);return r.$setValidity("equal",u),u?t:undefined};r.$parsers.push(u);r.$formatters.push(u);n.$watch(i.validateEquals,function(){r.$setViewValue(r.$viewValue)})}}});angular.module("exciteApp").controller("InvoiceController",["$scope","$window","apiQuery","paymentTypes","siteInfo","trackingEvents",function(n,t,i,r,u,f){"use strict";var e=n.invoice={ready:!1},o;n.init=function(o){ibsa.noBack(t);i.getInvoice(o).success(function(t){var i=r.filter(function(n){return n.id===t.paymentTypeValue})[0];angular.extend(e,t);e.paymentTypeDescription=i&&i.description;e.currencyCode=u.currencyCode;e.ready=!0;u.currencyCode==="NZD"&&t.currencyCode==="NZD"&&t.currencyConversionRate&&t.siteId<64&&(u.rateAudForInvoice=t.currencyConversionRate);f.addOrder(t);t.unidaysPromotionAmount&&t.unidaysPromotionCodeUsed&&n.sendUnidaysRecord(o)})};n.sendUnidaysRecord=function(n){var t=localStorage.getItem("UnidaysOrder");if(t===n){console.log("already sent to unidays",t);return}i.sendUnidaysRecord(n).success(function(){localStorage.setItem("UnidaysOrder",n)})};n.print=function(){t.print()};n.canSave=function(){return t.document.queryCommandEnabled&&t.document.queryCommandEnabled("SaveAs")};n.save=function(){var n="order_"+e.orderId+".html";t.document.execCommand("SaveAs",null,n)};o=function(n){if(u.currencyCode==="AUD")return n;return n.toLowerCase().replace(".com.au","")};n.regionEmailDomain=function(n){return"@"+o(n)};n.regionDomain=function(n){return o(n)}}]);angular.module("exciteApp").controller("ContactController",["$scope","apiCommand","makeStatus",function(n,t,i){"use strict";var r=this,f=r.model={contact:{name:null,email:null,comment:null},submitted:!1},u=r.status=i(),e=n.validation={show:!1};r.submit=function(){if(n.contactForm.$dirty&&n.contactForm.$valid){if(!u.start())return;t.leaveComment({contact:f.contact}).success(function(){u.setSuccess();f.submitted=!0}).error(function(){u.setError()})}else e.show=!0}}]);angular.module("exciteApp").controller("NewsletterController",["$scope","apiCommand","makeStatus",function(n,t,i){"use strict";var u=this,r=u.model={user:{name:"",email:"",over18:!1},subscriptions:{fantasyFootwear:!0,costumeWarehouse:!0,fantasyLingerie:!0,wildSecrets:!0},validation:{show:!1,showError:function(n,t){return this.show&&n.$error[t]},getCssClass:function(n){return{error:this.show&&n.$invalid}}},status:i()};u.submit=function(){n.newsletterForm.$dirty&&n.newsletterForm.$valid?(r.status.start(),t.subscribeToNewsletter({user:r.user,subscriptions:r.subscriptions}).success(function(){r.status.setSuccess();document.cookie="SpecialDeals=true; path=/"}).error(function(){r.status.setError()})):r.validation.show=!0}}]);angular.module("exciteApp").controller("GiftInfoController",["apiQuery",function(n){"use strict";var r=4,u=this,f=u.model={products:[]},t,i;t=function(n,t){return t.forEach(function(t,i){var u=Math.floor(i/r);u<n.length?n[u].push(t):n.push([t])}),n};i=function(){n.getFreeGifts().success(function(n){f.products=t([],n.freeGifts);setTimeout(function(){$(".gift-row li img").height(10);$(".gift-row li img").height("auto")},500)})};i()}]);angular.module("exciteApp").controller("StudentDiscountController",["categoryGroups","categories","$scope",function(n,t){"use strict";function r(){i.categories=t;i.categories.length&&(i.category=i.categories[0],u(i.category));console.log(i.category)}function u(n){angular.forEach(n.subs,function(n){n.fixed?n.fixed!=="GiftIdea"?i.fixedSubcategories.push(n):i.giftIdeasCategory=n:i.subcategories.push(n)});console.log("finished processing",i.subcategories,i.fixedSubcategories,i.giftIdeasCategory)}var i=this;i.categories=[];i.category=null;i.fixedSubcategories=[];i.subcategories=[];i.giftIdeasCategory={};r()}]);angular.module("exciteApp").controller("TermsAndConditionsController",["categoryGroups","categories","$scope",function(n,t){"use strict";function r(){i.categories=t;i.categories.length&&(i.category=i.categories[0],u(i.category));console.log(i.category)}function u(n){angular.forEach(n.subs,function(n){n.fixed?n.fixed!=="GiftIdea"?i.fixedSubcategories.push(n):i.giftIdeasCategory=n:i.subcategories.push(n)});console.log("finished processing",i.subcategories,i.fixedSubcategories,i.giftIdeasCategory)}var i=this;i.categories=[];i.category=null;i.fixedSubcategories=[];i.subcategories=[];i.giftIdeasCategory={};r()}]);angular.module("exciteApp").controller("CompetitionsController",["$scope","$window","apiQuery","apiCommand","makeBroadcastStatus",function(n,t,i,r,u){"use strict";var o=this,f=o.model={feedback:[],totalItems:0,winner:"",competition:{firstName:"",lastName:"",state:"",email:"",comment:"",how:"",age:undefined,gender:undefined,live:""}},e=u("competition_status"),s=n.validation={show:!1};n.pageNumber=1;n.pageSize=20;n.prevPage=function(){console.log("prev");n.pageNumber-=1;n.loadData()};n.nextPage=function(){console.log("next");n.pageNumber+=1;n.loadData()};n.loadData=function(){i.getCompetitionFeedback(n.pageNumber,n.pageSize).success(function(n){f.feedback=n.entries;f.totalItems=n.totalItems;f.winner=_.find(n.entries,function(n){return n.winner})});$(window).scrollTop(0)};n.loadData();o.submit=function(){if(n.competitionsForm.$dirty&&n.competitionsForm.$valid){if(!e.start())return;r.registerForCompetition({competition:f.competition}).success(function(){e.setSuccess();f.competition.firstName="";f.competition.lastName="";f.competition.state="";f.competition.email="";f.competition.comment="";f.competition.how="";f.competition.age=undefined;f.competition.gender=undefined;f.competition.live="";s.show=!1;$(t).scrollTop(0)}).error(function(){e.setError();$(t).scrollTop(0)})}else s.show=!0}}]);angular.module("exciteApp").controller("SiteInfoController",["siteInfo",function(n){"use strict";var t=this,i=t.model=n}]);angular.module("exciteApp").factory("giftOfferCoordinator",function(){"use strict";var n={updateCartText:"",freeGiftTotals:null,brandId:null,brandName:null,parentProductId:null,isPreview:!1,error:!1},r="",t=[],i=[];return n.configureFreeOffer=function(n){r="free";this.updateCartText=n},n.configurePromoOffer=function(n){r="promo";this.updateCartText=n},n.showPromoOffer=function(n){this.brandId=n.brandId;this.brandName=n.brandName;this.parentProductId=n.parentProductId;this.isPreview=!!n.isPreview;t.forEach(function(n){n()})},n.showFreeOffer=function(n,i){this.freeGiftTotals=n;this.isPreview=!!i;t.forEach(function(n){n()})},n.hideOffer=function(){i.forEach(function(n){n()})},n.offerType=function(){return r},n.on=function(n,r){switch(n){case"show":t.push(r);break;case"hide":i.push(r)}},n.off=function(n,r){switch(n){case"show":t=_.without(t,r);break;case"hide":i=_.without(i,r)}},n}).directive("giftOffer",["$compile","giftOfferCoordinator",function(n,t){"use strict";var i='<div ng-show="!showOffer"\n     class="host-container">\n<\/div>\n<div ng-show="showOffer"\n     class="gift-offer-container"\n     data-ng-cloak>\n<\/div>',r=function(n,t){n==="promo"&&($("#desktopHeaderContainer").data("affix-is-disabled",!0),$("#header").show(),$("#floatingHeader").hide(),$("#desktopHeaderContainer").removeClass("affix affix-top affix-bottom"),$("#desktopHeaderContainer").addClass("affix"),$("#giftOffer").css("margin-top","0"),$("#giftHeader").css("position","inherit"));t.showOffer=!0},u=function(n){$("#desktopHeaderContainer").data("affix-is-disabled",!1);$("#header").show();$("#floatingHeader").hide();$("#desktopHeaderContainerPad").hide();$("#desktopHeaderContainer").removeClass("affix affix-top affix-bottom");$("#desktopHeaderContainer").addClass("affix-top");n.showOffer=!1};return{restrict:"A",scope:{},terminal:!0,compile:function(f){var e=f.contents(),o=e.closest(".host-view").clone(),s=e.closest(".gift-offer-view").clone(),h,c,l;return f.html(i),h=n(f.children()),o.appendTo(f.find(".host-container")),s.appendTo(f.find(".gift-offer-container")),c=n(o),l=n(s),function(n,i,f){try{var e=f.giftOffer,o=f.returnText,s=function(){r(e,n)},a=function(){u(n)};n.showOffer=!1;c(n.$parent);l(n.$parent);h(n);e==="free"?t.configureFreeOffer(o):t.configurePromoOffer(o);t.on("show",s);t.on("hide",a);n.$on("$destroy",function(){t.off("show",s);t.off("hide",a)})}catch(v){console.log("Failed to load gift view: "+v)}}}}}]).directive("freeGiftPreview",["giftOfferCoordinator",function(n){"use strict";var t='<div class="free-gift-preview">\n  <div ng-transclude><\/div>\n<\/div>';return{restrict:"A",scope:{},transclude:!0,template:t,link:function(){n.configureFreeOffer("");n.showFreeOffer(null,!0)}}}]).controller("GiftOfferController",["$log","$scope","$window","apiQuery","apiCommand","giftOfferCoordinator","overlay","cartSharedData",function(n,t,i,r,u,f,e,o){"use strict";var b=4,h=this,s=h.model={title:"",brandName:"",maxGifts:"",products:[],selectedProducts:[],invalidSelections:[],currentPage:0,totalProducts:0,viewedProducts:0,productsFetched:0,totalPages:0,pagerReset:-1,freeGiftTotals:0,updateCartText:"",offerType:undefined,isPreview:!1,initialized:!1,fetching:!1,showNext:!0,categoryCriteria:{includeAll:!0,includeToys:!0,includeLingerie:!0,includeStraightDvds:!0,includeGayDvds:!0,includeToys2:!1,includeLingerie2:!1,includeStraightDvds2:!1,includeGayDvds2:!1},categoryCriteriaOptions:[{name:"View All FREE GIFTS",value:0},{name:"Toys, Novelties & Lubes",value:1},{name:"Lingerie & Hosiery",value:2}],dvdCategoryCriteriaOptions:[{name:"View All FREE GIFTS",value:0},{name:"Straight DVD",value:1},{name:"Gay DVD",value:2}],selectedCategoryCriteriaOption:undefined,selectedDvdCategoryCriteriaOption:undefined,recordsPerPageOptions:[{name:20,value:20},{name:40,value:40}],selectedRecordsPerPage:undefined},l={setTitle:function(n){s.title=s.offerType==="free"?"Yippee! You qualify for "+n+" FREE GIFT(S)":f.brandName+" Special FREE GIFT Limited Time Offer"},getGifts:function(n,t,i){return s.selectedCategoryCriteriaOption=i.includeAll?s.categoryCriteriaOptions[0]:i.includeToys?s.categoryCriteriaOptions[1]:s.categoryCriteriaOptions[2],s.selectedDvdCategoryCriteriaOption=i.includeAll?s.dvdCategoryCriteriaOptions[0]:i.includeStraightDvds?s.dvdCategoryCriteriaOptions[1]:s.dvdCategoryCriteriaOptions[2],s.offerType==="free"?r.getFreeGifts(n,t,i):r.getBrandPromoGifts(f.parentProductId,f.brandId,n,t)},updateGifts:function(n){return s.offerType==="free"?u.updateFreeGifts(n):u.addBrandPromoGift(n&&n[0],f.parentProductId)}},y,k,a,v,c,p,d,g,nt,w;y=function(n){s.selectedProducts.length==s.maxGifts&&s.selectedProducts.pop();s.selectedProducts.push(n)};k=function(n){n.selectedVariation?y(n):n.variations.length===1?(n.selectedVariation=n.variations[0],y(n)):s.invalidSelections.push(n)};a=function(n,t){return n&&n.filter(function(n){return n.id===t})[0]};v=function(n){var t=a(s.selectedProducts,n.id);return t?s.selectedProducts.indexOf(t):-1};p=function(n){return n.length>0?(n.length-1)*b+n[n.length-1].length:0};d=function(n,t){var i=p(n);return t.forEach(function(t,r){var u=Math.floor((r+i)/b);u<n.length?n[u].push(t):n.push([t])}),n};g=function(n){var u=function(n,t){return n&&n.filter(function(n){return n.sku===t})[0]},i,r,t;if(n.selectedFreeGiftIds)for(i=0;i<n.selectedFreeGiftIds.length;i++)r=n.selectedFreeGiftIds[i],t=a(n.selectedFreeGifts,r.productId),t&&(t.selectedVariation=u(t.variations,r.skuId),s.selectedProducts.push(t))};nt=function(n,t,i){s.products=d(i?s.products:[],n.freeGifts);s.maxGifts=n.maxGifts;s.productsFetched=p(s.products);s.totalProducts=n.totalProducts;s.totalPages=n.totalPages;s.pagerReset=t;s.showNext=s.currentPage<s.totalPages-1;s.viewedProducts=(s.currentPage+1)*s.selectedRecordsPerPage.name;s.viewedProducts>s.totalProducts&&(s.viewedProducts=s.totalProducts);s.initialized||g(n)};c=function(n,t){s.currentPage=n;var r=s.selectedRecordsPerPage.value;return s.fetching=!0,e.showOverlay("Loading"),l.getGifts(n,r,s.categoryCriteria).success(function(r){t||i.scroll(0,0);nt(r,n,t);setTimeout(function(){$(".gift-row li img").height(10);$(".gift-row li img").height("auto")},500)})["finally"](function(){s.fetching=!1;e.hide()})};w=function(){s.initialized=!1;s.products=[];s.selectedProducts=[];s.invalidSelections=[];s.freeGiftTotals=f.freeGiftTotals;s.updateCartText=f.updateCartText;s.offerType=f.offerType();s.brandName=f.brandName;s.isPreview=f.isPreview;f.error=null;l.setTitle();s.selectedRecordsPerPage=s.recordsPerPageOptions[0];s.selectedCategoryCriteriaOption=s.categoryCriteriaOptions[0];s.selectedDvdCategoryCriteriaOption=s.dvdCategoryCriteriaOptions[0];c(0).then(function(){l.setTitle(s.maxGifts);s.initialized=!0});typeof i.history.pushState!="undefined"?i.history.pushState(null,"","#gift-offer"):i.location.hash="gift-offer";i.onhashchange=function(){i.location.hash||t.$apply(f.hideOffer())}};h.closeVariations=function(n){console.log("closing");n.closeVariations=!0;h.preselectedProduct=null};h.preselect=function(n){if(n.closeVariations){n.closeVariations=!1;return}if(!h.isOos(n)){if(!n.variations.length||n.variations.length===1||v(n)>-1){h.select(n);return}h.preselectedProduct=n;var t=$("#selectGiftVariationModalLink").data("target");t&&$(t).modal("show")}};h.completeSelection=function(n,t){t.quantity!==0&&(h.addingGift=!0,n.selectedVariation=t,h.select(n))};h.select=function(n){var t,i;if(!s.isPreview){if(t=v(n),s.invalidSelections=[],t>-1){s.selectedProducts.splice(t,1);return}return k(n),i=s.selectedProducts.map(function(n){return{productId:n.id,skuId:n.selectedVariation.sku}}),e.showSpinner=!0,e.showOverlay(),$(".return-to-cart").css("visibility","hidden"),l.updateGifts(i).success(function(n){o.update(n);h.preselectedProduct=null;var t=$("#selectGiftVariationModalLink").data("target");t&&$(t).modal("hide");h.addingGift=!1}).error(function(){f.error="There was an error adding your free gifts, please try again later.";h.preselectedProduct=null;var n=$("#selectGiftVariationModalLink").data("target");n&&$(n).modal("hide");h.addingGift=!1})["finally"](function(){e.hide();$(".return-to-cart").css("visibility","visible");closeOffer()})}};h.unselect=function(n){s.selectedProducts.length>n&&s.selectedProducts.splice(n,1)};h.isSelected=function(n){return!s.isPreview&&v(n)>-1};h.isOos=function(n){var t=n.variations.length===1&&n.variations[0].quantity===0;return!s.isPreview&&t};h.changeOosVariantDescription=function(n){var t=n.description,i=t.indexOf("-"),r="";return r=i===-1?t:t.substring(0,i),r+" (SOLD OUT)"};h.getSelectedVariantDescription=function(n){var t=a(s.selectedProducts,n.id);return t.selectedVariation&&t.selectedVariation.description?t.selectedVariation.description:null};h.isInvalidSelection=function(n){return s.invalidSelections.indexOf(n)>-1};h.VariationSelected=function(n){if(window.isMobile()){var t=s.invalidSelections.pop();s.invalidSelections.push(t);h.select(n)}};h.updateCart=function(){var n=function(){f.hideOffer();i.history.go(-1)},t;if(s.isPreview){n();return}return t=s.selectedProducts.map(function(n){return{productId:n.id,skuId:n.selectedVariation.sku}}),e.showOverlay(),l.updateGifts(t).success(function(n){o.update(n)}).error(function(){f.error="There was an error adding your free gifts, please try again later."})["finally"](function(){e.hide();n()})};h.goBack=function(){i.history.go(-1);s.isPreview&&s.offerType!=="promo"&&i.history.go(-1)};h.scrollToTop=function(){i.scrollTo(0,0)};h.changePageHandler=function(n){n-=1;c(n)};h.changeCategoryCriteria=function(){switch(s.selectedCategoryCriteriaOption.value){case 0:s.categoryCriteria.includeAll=!0;s.categoryCriteria.includeToys=!0;s.categoryCriteria.includeLingerie=!0;break;case 1:s.categoryCriteria.includeAll=!1;s.categoryCriteria.includeToys=!0;s.categoryCriteria.includeLingerie=!1;break;case 2:s.categoryCriteria.includeAll=!1;s.categoryCriteria.includeLingerie=!0;s.categoryCriteria.includeToys=!1}c(0)};h.changeDvdCategoryCriteria=function(){switch(s.selectedDvdCategoryCriteriaOption.value){case 0:s.categoryCriteria.includeAll=!0;s.categoryCriteria.includeStraightDvds=!0;s.categoryCriteria.includeGayDvds=!0;break;case 1:s.categoryCriteria.includeAll=!1;s.categoryCriteria.includeStraightDvds=!0;s.categoryCriteria.includeGayDvds=!1;break;case 2:s.categoryCriteria.includeAll=!1;s.categoryCriteria.includeStraightDvds=!1;s.categoryCriteria.includeGayDvds=!0}c(0)};h.includeAllChanged=function(){s.categoryCriteria.includeAll=!0;s.categoryCriteria.includeToys=!0;s.categoryCriteria.includeLingerie=!0;s.categoryCriteria.includeStraightDvds=!0;s.categoryCriteria.includeGayDvds=!0;s.categoryCriteria.includeToys2=!1;s.categoryCriteria.includeLingerie2=!1;s.categoryCriteria.includeStraightDvds2=!1;s.categoryCriteria.includeGayDvds2=!1;c(0)};h.includeToysChanged=function(){s.categoryCriteria.includeAll=!1;s.categoryCriteria.includeToys=!0;s.categoryCriteria.includeLingerie=!1;s.categoryCriteria.includeToys2=!0;s.categoryCriteria.includeLingerie2=!1;c(0)};h.includeLingerieChanged=function(){s.categoryCriteria.includeAll=!1;s.categoryCriteria.includeToys=!1;s.categoryCriteria.includeLingerie=!0;s.categoryCriteria.includeToys2=!1;s.categoryCriteria.includeLingerie2=!0;c(0)};h.includeStraightDvdsChanged=function(){s.categoryCriteria.includeAll=!1;s.categoryCriteria.includeStraightDvds=!0;s.categoryCriteria.includeGayDvds=!1;s.categoryCriteria.includeStraightDvds2=!0;s.categoryCriteria.includeGayDvds2=!1;c(0)};h.includeGayDvdsChanged=function(){s.categoryCriteria.includeAll=!1;s.categoryCriteria.includeStraightDvds=!1;s.categoryCriteria.includeGayDvds=!0;s.categoryCriteria.includeStraightDvds2=!1;s.categoryCriteria.includeGayDvds2=!0;c(0)};h.changeRecordsPerPage=function(){c(0)};h.updateRecordsPerPage=function(n){s.selectedRecordsPerPage=n;c(0)};h.fetchNextPage=function(){c(s.currentPage+1,!1)};f.on("show",w);t.$on("$destroy",function(){f.off("show",w)})}]);angular.module("exciteApp").constant("paymentTypes",[{id:"PayPal",description:"PayPal"},{id:"CreditCard",description:"Credit Card"},{id:"BPay",description:"BPay"},{id:"DirectDeposit",description:"Bank Transfer"},{id:"ChequeOrMoneyOrder",description:"Cheque or Money Order"},{id:"PhoneOrder",description:"Phone Order"}]);_gaq=_gaq||[];angular.module("exciteApp").factory("trackingEvents",function(){"use strict";var n=[];return{addOrder:function(t){n.forEach(function(n){n(t)})},on:function(t,i){switch(t){case"addOrder":n.push(i)}},off:function(t,i){switch(t){case"addOrder":n=_.without(n,i)}}}}).directive("wsGoogleAnalytics",["$log","$document","trackingEvents","siteInfo",function(n,t,i,r){"use strict";var u=!0,f=!1,o=!r.siteDomain||/localhost/i.test(r.siteDomain)?"UA-36861345-1":r.googleUacct,e;_gaq.push(["_setAccount",o]);_gaq.push(["_setDomainName","auto"]);_gaq.push(["_setAllowLinker",!0]);_gaq.push(["_trackPageview"]);e=function(n){n.isHistorical||f||(f=!0,_gaq.push(["_addTrans",n.orderNumber,n.affiliateId,n.subTotal,n.gst.toFixed(2),n.postageTotal,n.shippingAddress.city,n.shippingAddress.state,n.shippingAddress.country,]),_.each(n.lines,function(t){_gaq.push(["_addItem",n.orderNumber,t.productCode,t.productName.replace("'",""),_.reduce([t.colour,t.size],function(n,t){return t==null?n:n.length?n+" "+t:t},""),t.unitPrice.toString(),t.quantity])}),_gaq.push(["_trackTrans"]))};i.on("addOrder",e);return{restrict:"A",link:function(n,t){$(t).hide();u&&(u=!1)}}}]).directive("wsSalesConversion",["$sce","trackingEvents",function(n,t){"use strict";var i=!1;return{restrict:"A",template:'<span class="c-track" ng-bind-html="conversionHtml"><\/span>',link:function(n,r){if(!i){i=!0;t.on("addOrder",function(n){var t;n.isHistorical||(t=n.siteInfo.salesTrackHtml,t&&(t=t.replace("__order_id__",n.orderNumber),t=t.replace("__price__",n.subTotal)),r.replaceWith(t))})}}}}]);String.prototype.toProperCase=function(){return this.replace(/\w\S*/g,function(n){return n.charAt(0).toUpperCase()+n.substr(1).toLowerCase()})};angular.module("exciteApp").controller("SidebarController",["filters","productFetcher","apiQuery","categoryGroups","$rootScope","siteInfo","overlay",function(n,t,i,r,u,f,e){"use strict";function c(){i.getWholesaleBrands().success(function(n){o.wholesaleBrands=n.brands})}function l(n){var t=n,i="Australia";window.location.href.includes(".co.nz")&&(i="New Zealand");switch(n.trim()){case"Her Sex Toys - WildSecrets":t="Sex Toys - "+i+"'s No.1 Sex Toys Online Store";break;case"Vibrators Her Sex Toys - WildSecrets":t="Vibrators - "+i+"'s No.1 Vibrator Online Store";break;case"Lingerie - FantasyLingerie":t="Lingerie "+i+", Plus Size Lingerie - Fantasy Lingerie";break;case"Hosiery - FantasyLingerie":t="Stockings - Fantasy Lingerie";break;case"Male Pumps His Toys - Wild Secrets":t="Penis Pumps - Wild Secrets";break;case"Dildos Dongs Dongs Dildos Strapons Her Sex Toys  - WildSecrets":t="Dildos - Wild Secrets";break;case"Male Pumps His Toys - WildSecrets":t="Penis Pumps - Wild Secrets";break;case"Dongs, Dildos, & Strapons Her Sex Toys - WildSecrets":t="Dildos - "+i+"'s No.1 Dildo Online Store";break;case"Dongs Dildos Strapons Her Sex Toys - WildSecrets":t="Dildos - "+i+"'s No.1 Dildo Online Store"}return t.replace("Group","").trim()}var o=this,h=!0,s=!0;o.filtersModel=n.model;o.selectedBrand={};window.location.href&&window.location.href.indexOf("wholesale")!==-1&&c();o.brandCategories=function(){return r[2].subs};o.filtersModel.brandBreadCrumb=function(){var n=(o.filtersModel.brandName||"").replace(/-/g," ").replace(/AMPM/g,"AM:PM").replace(/Swim Beachwear/g,"Swim & Beachwear");return n.toProperCase()};o.filtersModel.brandBreadCrumbRoute=function(n){return o.filtersModel.brandName?"brand/"+o.filtersModel.brandName+"/"+n:n};o.isBrandPage=function(){return n.model.fixedGroup==="AllGroupBrand"};o.filtersModel.getRoute=function(n){var t=n.replace(/['`��"",\\&%:]|(&\s)|(\s&)/g,"");return t.replace(/[_.\s-/]/g,"-")};o.rootCategoryName=function(){return n.model.rootCategoryFilter.selectedOption.name};o.changeBrand=function(i,r){var u,f;i.preventDefault();o.selectedBrand=r;n.setBrand(r.brandName,r.id.substring(r.id.indexOf("/")+1));n.clearFilters(0);n.clearFilters(1);n.model.categoryPath=[];t.fetchProducts(0);u="";document.title.indexOf("-")>-1&&(f=document.title.substring(document.title.indexOf("-"),document.title.length),u=r.brandName+" Brand "+f);document.title=u};o.currentBrandId=function(){return window.history.state.selectedBrandId};o.viewAllBrands=function(){o.selectedBrand=undefined;n.model.brandName=undefined;event.preventDefault();n.clearFilters(0);n.clearFilters(1);n.clearFilters(2);n.model.brandFilter._selectDefault();t.fetchProducts(0).then(function(){$(".mobile-next-button").css("visibility","visible");$(".mb .pagination").css("visibility","visible");e.hide();$(window).scrollTop(0)})};o.resetToDefaultBrandOnlyFilter=function(i){i.preventDefault();n.clearFilters(0);n.clearFilters(1);n.clearFilters(2);$(".mobile-next-button").css("visibility","hidden");$(".mb .pagination").css("visibility","hidden");e.showOverlay();t.fetchProducts(0).then(function(){$(".mobile-next-button").css("visibility","visible");$(".mb .pagination").css("visibility","visible");e.hide();$(window).scrollTop(0)})};o.isActiveRootBrand=function(){return o.isBrandPage()&&n.model.rootCategoryFilter&&n.model.rootCategoryFilter.selectedOption&&(!n.model.firstCategoryFilter||n.model.firstCategoryFilter&&!n.model.firstCategoryFilter.selectedOption)&&(!n.model.secondCategoryFilter||n.model.secondCategoryFilter&&!n.model.secondCategoryFilter.selectedOption)};o.changeFilter=function(i,r){var a,c,e,o;if(event.preventDefault(),r.fixed==="ViewAll"){n.model.rootCategoryFilter.changeFilterById(r.id);t.fetchProducts(0);return}for(a=n.model,s=a.firstCategoryFilter.selectedOption===r?!s:!0,h=a.rootCategoryFilter.selectedOption===r?!h:!0,n.setBrand(),n.skipKillBrand=!0,n.clearSimpleFilters(),i.changeFilter(r),t.fetchProducts(0),c=r.route.split("/").reverse().join("-").split("-"),e="",o=0;o<=c.length-1;o++)e=e+c[o].charAt(0).toUpperCase()+c[o].slice(1)+" ";n.model.brandName&&(e=e+n.model.brandName+" ");e=e.trim()+" - "+f.siteName;document.title=l(e);u.$broadcast("pagingOccured")};o.getFilters=function(){var n=o.filtersModel.firstCategoryFilter.filterOptions;return _.reject(n,function(n){return n.route.indexOf("gift-ideas")>-1})};o.showGiftIdeas=function(){var n=o.filtersModel.firstCategoryFilter.filterOptions,t=_.filter(n,function(n){return n.route.indexOf("gift-ideas")>-1}),i=_.first(t);o.changeFilter(o.filtersModel.firstCategoryFilter,i)};o.isSelected=function(t){var i=n.model;return t===i.firstCategoryFilter.selectedOption||t===i.secondCategoryFilter.selectedOption};o.getGiftIdeasUrl=function(){var n=o.filtersModel.firstCategoryFilter.filterOptions,t=_.filter(n,function(n){return n.route.indexOf("gift-ideas")>-1}),i=_.first(t);return i.route};o.getSelectedClass=function(n){return o.isSelected(n)?"active":""};o.isBrandSelected=function(n){var t=n.id.substring(n.id.indexOf("/")+1),i=window.location.pathname.split("/")[3];return t==i};o.showThrobber=function(i){return t.loading&&i===n.model.selectedCategory};o.selectedBrandFilterName=function(){if(n.model.brandFilter&&n.model.brandFilter.selectedOption&&n.model.brandFilter.selectedOption.id)return n.model.brandFilter.selectedOption.name};o.showCategories=function(){return n.model.brandName?!1:n.model.fixedGroup&&n.model.fixedGroup!=="BestSellers"&&n.model.fixedGroup!=="OnSale"&&n.model.fixedGroup!=="New"&&n.model.fixedGroup!=="GiftIdea"&&n.model.fixedGroup!=="ViewAll"?!1:n.isInitialized()&&!n.model.rootCategoryFilter.defaultSelected()};o.showAllCategoriesHeader=function(){return n.model.brandName?!1:n.model.fixedGroup&&n.model.fixedGroup!=="BestSellers"&&n.model.fixedGroup!=="OnSale"&&n.model.fixedGroup!=="New"&&n.model.fixedGroup!=="GiftIdea"&&n.model.fixedGroup!=="ViewAll"?!1:n.isInitialized()&&!n.model.rootCategoryFilter.defaultSelected()};o.showAllCategories=function(){return n.model.brandName?!1:n.isInitialized()&&!n.model.rootCategoryFilter.defaultSelected()};o.showRootMenu=function(){return h};o.showSubMenu=function(t){var i=n.model;return s&&o.isSelected(t)&&i.secondCategoryFilter.filterOptions.length>1}}]);ibsa=function(){"use strict";function n(n){for(var i=this,r=n.split("."),t=0,u=r.length;t<u;t++)typeof i[r[t]]=="undefined"&&(i[r[t]]={}),i=i[r[t]];return i}return{namespace:n}}(),function(){"use strict";var n=function(n){return n.replace(/^\s+|\s+$/g,"")},t=function(t,i){var r=t.unescape(t.document.cookie).split(/[;,]/);return r.filter(function(t){var r=t.split("="),u=r[0];return n(u)===i})[0]},i=function(i,r){var e=t(i,r),u,f;return e&&(u=e.split("="),u.length>1&&(f=u[1],f))?n(f):undefined},r=function(n,t){var r=i(n,t);return r&&n.parseInt(r)};ibsa.getCookieValueInt=r}(),function(){"use strict";var n,t,i,r;n=function(n){function t(){}return n?(t.prototype=n,new t):{}};Object.create=Object.create||n;t=function(n,t){for(var i in t)t.hasOwnProperty(i)&&(n[i]=t[i])};i=function(n,t){for(var i=n+"";i.length<t;)i="0"+i;return i};r=function(n,t){var i=typeof history.pushState!="undefined";t=t||"#nb";i?history.pushState(null,"",t):location.hash=t;n.onhashchange=function(){i?history.pushState(null,"",t):location.hash=t}};ibsa.extendObject=t;ibsa.pad=i;ibsa.noBack=r}();angular.module("exciteApp").controller("CartGiftsController",["giftOfferCoordinator",function(n){"use strict";var t=this,i=t.model=n;t.showFreeGifts=function(n){i.showFreeOffer(n)}}]);angular.module("exciteApp").directive("sitemap",["categories",function(n){"use strict";return{restrict:"A",scope:{},template:'<ul class="sitemap"><li ng-repeat="rootCategory in rootCategories"><h1><a ng-href="{{\'/\' + rootCategory.route}}" ng-bind="rootCategory.name"><\/a><\/h1><ul><li ng-repeat="firstCategory in rootCategory.subs" ng-if="!firstCategory.fixed && firstCategory.name !== \'View All\'"><h2><a href="{{\'/\' + firstCategory.route}}" ng-bind="firstCategory.name"><\/a><\/h2><\/li><\/ul><\/li><\/ul>',link:function(t){t.rootCategories=n}}}]);angular.module("exciteApp").controller("SizeGuideController",["$scope","$window","apiQuery","siteInfo",function(n,t,i,r){"use strict";var u=n.sizeGuide={};i.getSizeGuide().success(function(n){var t;r.siteId===55?(t=_.find(n.charts,function(n){return n.brandName==="Baci Lingerie"}),u.charts=[t]):r.siteId===56?(t=_.find(n.charts,function(n){return n.brandName==="Dreamgirl Lingerie"}),u.charts=[t]):u.charts=n.charts})}]);angular.module("exciteApp").directive("field",["$http","$templateCache","$interpolate","$compile",function(n,t,i,r){"use strict";return{restrict:"A",priority:100,terminal:!0,compile:function(u){function f(n){var t=n.find("label");return t[0]&&t.html()}function e(n){var t={},r=n.find("span.validator");return angular.forEach(r,function(n){n=angular.element(n);t[n.attr("key")]=i(n.text())}),t}var o=e(u),s=f(u),h=u.find(".help-block");return u.html(""),function(i,u,f){function c(i){return n.get(i,{cache:t}).then(function(n){return angular.element(n.data)},function(){throw new Error("Template not found: "+i);})}function e(n){angular.forEach(f.$attr,function(t){if(t!=="field"&&t!=="data-ng-cloak"){var i=u.attr(t);n.attr(t,i)}})}var l=f.template||f.field+".html";c(l).then(function(n){var c=n.find(f.field),l,t,a;f.field==="input"?(l=angular.element(document.createElement("input")),angular.forEach(c[0].attributes,function(n){l.attr(n.name,n.value)}),e(l),c.replaceWith(l),c=l):e(c);t=i.$new();t.$validationMessages=angular.copy(o);t.$fieldId=f.ngModel.replace(".","_").toLowerCase()+"_"+t.$id;t.$watch("$field.$error",function(n){t.$fieldErrors=[];angular.forEach(n,function(n,i){n&&t.$fieldErrors.push(i)})},!0);c.attr("name",t.$fieldId);c.attr("id",t.$fieldId);c.after(h);a=n.find("label");a.attr("for",t.$fieldId);a.html(s);u.after(n);u.remove();r(n)(t);t.$field=c.controller("ngModel")})}}}}]);angular.module("exciteApp").controller("CartController",["$scope","$window","apiQuery","apiCommand","overlay","cartSharedData","giftOfferCoordinator","cartPreviewCmd","makeStatus","makeBroadcastStatus","siteInfo",function(n,t,i,r,u,f,e,o,s,h,c){"use strict";var l=n.cartModel={selectedProductId:null,triggersPromoOffer:!1,selectedVariant:null,selectedQuantity:1,addProductFormSubmitted:!1,cartData:f,cartItemsLoaded:!1,status:s(),showError:!1,showSuccess:!1},y=h("checkout_status"),a=l.addProductStatus=h("add_product_status"),v=function(n){f.update(n)};n.pushCartEnhancedEcommerce=function(){i.getCartEnhancedEcommerce().success(function(n){console.log("cart enhanced ecommerce success",n);console.log("cart enhanced ecommerce success",JSON.parse(n));dataLayer.push(JSON.parse(n))})};n.init=function(t){t=$.extend({},t);t.productId?(l.selectedProductId=t.productId,l.triggersPromoOffer=t.triggersPromoOffer,l.brandId=t.brandId,l.brandName=t.brandName):(i.getCart().success(function(t){v(t);l.cartItemsLoaded=!0;n.pushCartEnhancedEcommerce()}),t.message&&y.setError(t.message))};l.updateLineQuantity=function(n){var t;y.start()&&(t={productId:n.productId,variantId:n.skuId,quantity:n.updateQuantity},u.showOverlay(),r.updateCartItem(t).success(function(t){v(t);y.setSuccess('Quantity of item "'+n.productName+'" changed to '+n.updateQuantity)}).error(function(){n.updateQuantity=n.quantity;y.setError()})["finally"](function(){u.hide()}))};l.addProduct=function(){var t,i,u,s,h;if(l.addProductFormSubmitted=!0,!n.addProductForm.$valid||!(a.start()&&l.status.start())){i=window.matchMedia("all and (max-width: 640px),(max-width: 768px) and (orientation : portrait)").matches;u=window.location.href.indexOf("/p")!==-1;i&&u&&(s=$(".product-select select"),s&&(h=$(".product-select select").offset().top-160,$("html, body").animate({scrollTop:h},100)));return}t={productId:l.selectedProductId,variantId:l.selectedVariant&&l.selectedVariant.sku,quantity:l.selectedQuantity};r.addCartItem(t).success(function(n){var r,u,i,t;for(v(n),a.setSuccess(),l.status.setSuccess(),o.show(),c.siteId!=60&&l.triggersPromoOffer&&n.promoGiftsEligible.filter(function(n){return n.brandName===l.brandName}).length&&e.showPromoOffer({brandId:l.brandId,brandName:l.brandName,parentProductId:l.selectedProductId}),$(".product-details").length>0&&(r=$(".product-details").data("product-id"),u=_.some(n.lines,function(n){return n.productId===r}),u?$(".item-in-cart").removeClass("hidealert"):$(".item-in-cart").addClass("hidealert")),i=0;i<f.lines.length;i++)t=f.lines[i],t.productId===l.selectedProductId&&dataLayer.push({event:"addToCart",ecommerce:{currencyCode:"NZD",add:{products:[{name:t.productName,id:t.productCode,price:t.onSale?t.salePrice:t.price,brand:l.brandName,category:t.categoryIds.length>0?t.categoryIds[0]:"",variant:l.selectedVariant.sku,quantity:l.selectedQuantity}]}}})}).error(function(){a.setError();l.status.setError()})};l.addProductFromWishlist=function(){var t;(l.addProductFormSubmitted=!0,n.addProductForm.$valid&&a.start()&&l.status.start())&&(t={productId:l.selectedProductId,variantId:l.selectedVariant&&l.selectedVariant.sku,quantity:1},r.addCartItem(t).success(function(n){if(v(n),a.setSuccess(),l.status.setSuccess(),o.show(),c.siteId!=60&&l.triggersPromoOffer&&n.promoGiftsEligible.filter(function(n){return n.brandName===l.brandName}).length&&e.showPromoOffer({brandId:l.brandId,brandName:l.brandName,parentProductId:l.selectedProductId}),$(".product-details").length>0){var t=$(".product-details").data("product-id"),i=_.some(n.lines,function(n){return n.productId===t});i?$(".item-in-cart").removeClass("hidealert"):$(".item-in-cart").addClass("hidealert")}}).error(function(){a.setError();l.status.setError()}))};l.addWholesaleProduct=function(n){var t,i;(l.addProductFormSubmitted=!0,t=[],n.variations.forEach(function(n){n.quantitySelected>0&&t.push({skuId:n.sku,quantity:n.quantitySelected,supplierCode:n.supplierCode})}),t.length!=0)&&(l.addProductFormSubmitted=!0,i={productId:n.id,variants:t},r.addWholesaleCartItem(i).success(function(n){v(n);a.setSuccess();l.status.setSuccess();o.show()}).error(function(){a.setError();l.status.setError()}))};l.setSelectedVariant=function(n){l.selectedVariant=n;l.onSelectVariantChanged(!0)};l.onSelectVariantChanged=function(n){l.addProductFormSubmitted=!1;n||(a.clear(),l.status.clear())};l.askAddProductToWishlist=function(n){l.productToBeAddedToWishlist=n;var t=$("#moveToWishlistModalLink").data("target");$(t).modal("show")};l.addProductToWishlist=function(n){l.addingProductToWishlist=!0;r.addWishlistItem(n.productId).success(function(){l.removeLine(n);$("#menuMobile .wishlist-mobile-container .icon-heart-empty").css("display","none");$("#menuMobile .wishlist-mobile-container .icon-heart").attr("style","display: inline !important;")}).finally(function(){})};l.dumbClick=function(){};l.removeLine=function(n,t){l.removingProduct=!0;var i;t&&confirm("Are you sure you want to remove this product?")===!1||(i={productId:n.productId,variantId:n.skuId,freeProduct:n.freeGift,promoProduct:n.promoProduct,isDiscounted:n.isDiscounted},r.removeCartItem(i).success(function(n){v(n)}).finally(function(){var t=$("#removeProductModalLink").data("target"),n;$(t).modal("hide");n=$("#moveToWishlistModalLink").data("target");$(n).modal("hide");l.removingProduct=!1;l.addingProductToWishlist=!1}))};l.askRemoveLine=function(n){l.productToBeRemoved=n;var t=$("#removeProductModalLink").data("target");$(t).modal("show")};l.removeRestrictedItems=function(){r.removeRestrictedCartItems().success(function(n){v(n);f.hasSomeRestrictedItems=!1;f.hasAllRestrictedItems=!1})}}])