diff --git a/index.html b/index.html index 6c2723a4..b9c60ce2 100644 --- a/index.html +++ b/index.html @@ -11,12 +11,12 @@ Volusion AngularJS Method Theme - - + + - + ')}]),angular.module("Volusion.toolboxCommon").directive("vnCategorySearch",["$rootScope","$routeParams","$location","vnProductParams","vnAppRoute",function(a,b,c,d,e){"use strict";return{templateUrl:"vn-faceted-search/vn-category-search.html",restrict:"AE",scope:{categories:"=",queryProducts:"&"},link:function(a){function f(a){angular.extend(a,{displayStrategy:"categoryDisplayOne"})}function g(a){angular.extend(a,{displayStrategy:"categoryDisplayTwo"})}function h(a){angular.forEach(a,function(a){angular.extend(a,{displayStrategy:"categoryDisplayThree"}),angular.forEach(a.subCategories,function(a){angular.extend(a,{hideSubCatLink:!0})})})}function i(a,b){for(var c=!1,d=b.subCategories.length-1;d>=0;d--)a===b.subCategories[d].slug?(angular.extend(b.subCategories[d],{hideSubCatLink:!0}),c=!0):angular.extend(b.subCategories[d],{hideSubCatLink:!1});return c}function j(){function a(a){return a.replace(/&$/,"")}var b,c,f,g,h="";if(b=d.getFacetString(),c=d.getMinPrice(),f=d.getMaxPrice(),g=d.getCategoryString(),""===g&&""===b&&""===c&&""===f)return"";if(h+="?","search"===e.getRouteStrategy()&&""!==g){var i="categoryId="+g+"&";h+=i}if(""!==b){var j="facetIds="+b+"&";h+=j}if(""!==c){var k="minPrice="+c+"&";h+=k}if(""!==f){var l="maxPrice="+f+"&";h+=l}return h=a(h)}a.updateCategory=function(b){d.addCategory(b.id),a.queryProducts()},a.buildAppUrl=function(b){if("search"===e.getRouteStrategy())d.addCategory(b.id),a.queryProducts();else if("category"===e.getRouteStrategy()){var f=b.url;c.path(f)}},a.$watch(b,function(){a.currentRoute=j()},!0),a.$watch("categories",function(a){if(a&&a[0])if("/search"===c.path())h(a);else if(1===a.length&&b.slug===a[0].slug)f(a[0]);else{if(1!==a.length||!i(b.slug,a[0]))throw new Error("Is there a new display strategy for the category-search directive in toolbox?");g(a[0])}})}}}]),angular.module("Volusion.toolboxCommon").directive("vnElement",["vnBem",function(a){return{require:"^vnBlock",restrict:"A",compile:function(){return function(b,c,d,e){a.addClasses(c,{block:e.getBlock(),blockModifiers:e.getModifiers(),element:d.vnElement,elementModifiers:d.vnModifiers})}}}}]),angular.module("Volusion.toolboxCommon").directive("vnFacetSearch",["$rootScope","$window","vnProductParams",function(a,b,c){"use strict";return{templateUrl:"vn-faceted-search/vn-facet-search.html",restrict:"AE",scope:{facets:"=",queryProducts:"&"},link:function(a){enquire.register("screen and (max-width:767px)",{setup:function(){a.defaultAccordianOpen=!0},unmatch:function(){a.defaultAccordianOpen=!0},match:function(){a.defaultAccordianOpen=!1}}),a.selectProperty=function(a){return c.isFacetSelected(a.id)},a.refineFacetSearch=function(b){c.isFacetSelected(b.id)?c.removeFacet(b.id):c.addFacet(b.id),a.queryProducts()},a.$watch("facets",function(b){a.facets=b})}}}]),angular.module("Volusion.toolboxCommon").directive("vnFacetedSearch",["$window","$location","vnProductParams",function(a,b,c){"use strict";return{templateUrl:"vn-faceted-search/vn-faceted-search.html",restrict:"EA",link:function(a){a.showCategorySearch=!1,a.showFacetSearch=!0,a.showApplyButton=!1,a.checkFacetsAndCategories=function(b,c){a.hasFacetsOrCategories=b&&b.length||c&&c.length?!0:!1};var d,e=b.url();d=/^\/search/,a.onSearchPage=d.test(e),a.$watch("categoryList",function(b){b&&(a.showCategorySearch=!0)}),a.$watch("facets",function(b){b&&(a.showFacetSearch=!0)}),a.$watch(function(){return c.getSort()},function(b){a.currentSort=b}),enquire.register("screen and (max-width:767px)",{setup:function(){a.showApplyButton=!1,a.mobileDisplay=!0,a.showMobileSearch=!1,a.isMobileAndVisible=!1,a.isMobileAndHidden=!0,a.categoryAccordiansOpen=!0,a.priceAccordiansOpen=!0,a.sortAccordianIsOpen=!0},unmatch:function(){a.showApplyButton=!1,a.mobileDisplay=!0,a.showMobileSearch=!1,a.isMobileAndVisible=!1,a.isMobileAndHidden=!0,a.categoryAccordiansOpen=!0,a.priceAccordiansOpen=!0,a.sortAccordianIsOpen=!0},match:function(){a.showApplyButton=!0,a.mobileDisplay=!1,a.showMobileSearch=!0,a.isMobileAndVisible=!1,a.isMobileAndHidden=!0,a.categoryAccordiansOpen=!1,a.priceAccordiansOpen=!1,a.sortAccordianIsOpen=!1}})}}}]),angular.module("Volusion.toolboxCommon").directive("vnImage",["$rootScope",function(a){"use strict";return{templateUrl:"template/image.html",restrict:"EA",replace:!0,scope:{currMode:"@currMode",image:"="},link:function(b,c){void 0===b.currMode&&(b.currMode="on"),b.componentId="100002",b.componentName="image",b.selected=!1,b.$on("currentComponent.change",function(a,c){c&&c.id&&"off"===b.currMode&&(b.selected=c.id===b.componentId)}),c.on("click",function(c){"off"===b.currMode&&(c.preventDefault(),a.$broadcast("currentComponent.change",{id:b.componentId,name:b.componentName,action:"set"}))})}}}]).run(["$templateCache",function(a){"use strict";a.put("template/image.html",'

VN-IMAGE-TITLE

{{ image.alt }}
')}]),angular.module("Volusion.toolboxCommon").directive("vnLabeledRadio",function(){"use strict";return{require:"ngModel",restrict:"A",replace:!0,transclude:!0,templateUrl:"template/labeled-radio.html",scope:{ngModel:"=",name:"@",value:"@",ngValue:"=",ngChecked:"=",ngDisabled:"@",change:"&ngChange"},compile:function(a,b){var c=a.find("input"),d=b.value,e=b.ngValue;"undefined"!=typeof d&&"undefined"==typeof e&&c.removeAttr("data-ng-value")}}}).run(["$templateCache",function(a){"use strict";a.put("template/labeled-radio.html",'')}]),angular.module("Volusion.toolboxCommon").directive("vnLink",["$rootScope",function(a){"use strict";return{templateUrl:"template/link.html",restrict:"EA",transclude:!0,replace:!0,scope:{currMode:"@"},link:function(b,c){void 0===b.currMode&&(b.currMode="on"),b.componentId="100003",b.componentName="link",b.selected=!1,b.$on("currentComponent.change",function(a,c){c&&c.id&&"off"===b.currMode&&(b.selected=c.id===b.componentId)}),c.on("click",function(c){"off"===b.currMode&&(c.preventDefault(),a.$broadcast("currentComponent.change",{id:b.componentId,name:b.componentName,action:"set"}))})}}}]).run(["$templateCache",function(a){"use strict";a.put("template/link.html",'')}]),angular.module("Volusion.toolboxCommon").directive("vnMetaTags",function(){"use strict";return{restrict:"EA",scope:{title:"=",description:"=",keywords:"=",toAppend:"=",robots:"=",socialPageTitle:"=",socialPageUrl:"=",socialImageUrl:"="},link:function(a,b){var c=function(a){"undefined"!=typeof a&&b.append(a)},d=function(a){var c=b.find("title");c.length>0&&c.remove(),a&&b.append(angular.element("").text(a))},e=function(a,c,d){var e=b.find("meta["+d+'="'+a+'"]');e.length>0&&e.remove(),c&&b.append(angular.element("<meta/>").attr(d,a).attr("content",c))},f=function(a){e("description",a,"name")},g=function(a){e("keywords",a,"name")},h=function(a){e("og:title",a,"property")},i=function(a){e("og:url",a,"property")},j=function(a){e("og:image",a,"property")};a.$watch("socialPageTitle",h),a.$watch("socialPageUrl",i),a.$watch("socialImageUrl",j),a.$watch("title",d),a.$watch("description",f),a.$watch("keywords",g),a.$watch("toAppend",c),a.$watch("robots",function(a){"undefined"!=typeof a&&JSON.parse(a)===!0&&(e("robots","index,follow","name"),e("GOOGLEBOT","INDEX,FOLLOW","name"))})}}}),angular.module("Volusion.toolboxCommon").directive("ngEnter",function(){return function(a,b,c){b.bind("keydown keypress",function(b){13===b.which&&(a.$apply(function(){a.$eval(c.ngEnter,{event:b})}),b.preventDefault())})}}),angular.module("Volusion.toolboxCommon").directive("vnPriceSearch",["vnProductParams",function(a){return{templateUrl:"vn-faceted-search/vn-price-search.html",restrict:"AE",scope:{queryProducts:"&"},link:function(b){b.$watch(function(){return a.getMinPrice()},function(a){b.minPrice=a}),b.$watch(function(){return a.getMaxPrice()},function(a){b.maxPrice=a}),b.searchByPrice=function(c){a.setMinPrice(b.minPrice),a.setMaxPrice(b.maxPrice),(13===c.which||"click"===c.type)&&b.queryProducts()}}}}]),angular.module("Volusion.toolboxCommon").directive("vnProductOption",function(){return{restrict:"A",replace:!0,controller:"VnProductOptionCtrl",templateUrl:"vn-product-option/index.html",scope:{option:"=",product:"=",saveTo:"="}}}),angular.module("Volusion.toolboxCommon").directive("vnRating",["$rootScope",function(a){"use strict";return{templateUrl:"template/rating.html",restrict:"EA",replace:!0,scope:{currMode:"@currMode",editable:"=",maximum:"=",ratingValue:"="},link:function(b,c,d){function e(a){return b.ratingValue%1===0&&a<b.ratingValue?g:b.ratingValue%1===.5&&b.ratingValue-a>.5?g:b.ratingValue%1===.5&&b.ratingValue-a===.5?i:h}function f(){for(b.stars=[],j=0;k>j;j++)b.stars.push({cssClass:e(j)})}var g=d.filledClass||"fa fa-star",h=d.emptyClass||"fa fa-star-o",i=d.halfFilledClass||"fa fa-star-half-o";b.title="undefined"!=typeof d.title?d.title:"Rating";var j,k=b.maximum||5;void 0===b.currMode&&(b.currMode="on"),(void 0===b.ratingValue||""===b.ratingValue)&&(b.ratingValue=0),b.componentId="100004",b.componentName="rating",b.selected=!1,b.$on("currentComponent.change",function(a,c){c&&c.id&&"off"===b.currMode&&(b.selected=c.id===b.componentId)}),c.on("click",function(c){"off"===b.currMode&&(c.preventDefault(),a.$broadcast("currentComponent.change",{id:b.componentId,name:b.componentName,action:"set"}))}),b.stars=[],b.$watch("ratingValue",function(a,b){(0===b||b)&&f()}),b.toggle=function(a){b.editable&&(b.ratingValue=a+1)}}}}]).run(["$templateCache",function(a){"use strict";a.put("template/rating.html",'<div class="vn-rating"><p class="vn-rating-title" data-ng-bind="title"></p><ul class="rating"><li data-ng-repeat="star in stars" data-ng-click="toggle($index)"><i class=" {{ star.cssClass }} " /></li></ul></div>')}]),angular.module("Volusion.toolboxCommon").directive("vnSortSearch",["vnProductParams","vnSortDefault",function(a,b){"use strict";return{templateUrl:"vn-faceted-search/vn-sort-search.html", -restrict:"AE",scope:{queryProducts:"&"},link:function(c){""===a.getSort()&&a.setSort(b),c.sortBy=function(b){a.setSort(b),c.queryProducts()}}}}]),angular.module("Volusion.toolboxCommon").directive("vnShowOnDropdownHover",["$timeout",function(a){return{restrict:"A",link:function(b,c){var d,e=angular.element(c.parent().find("a")[0]);c.bind("mouseenter",function(){c.show(),a.cancel(d)}).bind("mouseleave",function(){d=a(function(){c.hide()},100)}),e.bind("mouseenter",function(){c.show(),a.cancel(d)}).bind("mouseleave",function(){d=a(function(){c.hide()},100)}).bind("click",function(){c.show()}),b.$on("$destroy",function(){a.cancel(d)})}}}]),angular.module("Volusion.toolboxCommon").directive("vnDropdown",["$window",function(){return{restrict:"E",replace:!0,scope:{availableoptions:"=",optionselect:"=",selectedOption:"=model",placeholder:"@",displayField:"@",selectedField:"@",name:"@",ngRequired:"="},templateUrl:"dropdown/vn-dropdown.tpl.html",link:function(a,b){a.button=angular.element(b).find("button"),a.options=a.availableoptions||[],a.changeOption=function(b){a.selectedOption=a.options[b],"function"==typeof a.optionselect&&a.optionselect(a.selectedOption),a.button.focus()},a.$watch("availableoptions",function(){"undefined"!=typeof a.availableoptions&&a.availableoptions.length>0&&(a.options=a.availableoptions.slice(),angular.forEach(a.options,function(b){b.displayValue=b[a.displayField||"name"],b.selectedDisplayValue=b[a.selectedField||"name"]}))}),a.$watch("selectedOption",function(b){b?a.button.focus():a.button.blur()})}}}]),angular.module("Volusion.toolboxCommon").directive("vnEasyZoom",function(){function a(a){b.standardSrc&&b.zoomSrc&&(a.swap(b.standardSrc,b.zoomSrc),b={})}var b={};return{restrict:"A",replace:!0,templateUrl:"easy-zoom/vnEasyZoom.tpl.html",scope:{ngSrc:"=",ezAdjacent:"=",ezOverlay:"=",ezZoomSrc:"=",alt:"@"},link:function(c,d){var e=d.easyZoom(),f=e.data("easyZoom");c.$watch("ngSrc",function(c){void 0!==c&&(b.standardSrc=c,a(f))}),c.$watch("ezZoomSrc",function(c){void 0!==c&&(b.zoomSrc=c,a(f))}),c.$on("$destroy",function(){f.teardown()})}}}),angular.module("Volusion.toolboxCommon").filter("vnCurrency",["$filter","$locale",function(a,b){"use strict";return function(c,d){var e=a("currency");return 0===c?"Free":"en-us"===b.id&&0>c?e(c,d).replace("(","-").replace(")",""):e(c,d)}}]),angular.module("Volusion.toolboxCommon").filter("vnProductImageFilter",function(){return function(a,b,c){function d(b,c){var d="";if(a.length>=0)for(var e=a.length-1;e>=0;e--){var f=a[e];if(b===f.key){d=f.images[0][c];break}}return d}var e="";if(a&&a.length<=0)e="";else if(1===arguments.length)e=d("default","medium");else{if(3!==arguments.length)throw new Error("vnProductImageFilter was unable to process the arguments supplied.");e=d(b,c)}return e}}),angular.module("Volusion.toolboxCommon").directive("vnFormatNumber",["$filter",function(a){"use strict";return{require:"?ngModel",link:function(b,c,d,e){e&&(e.$formatters.unshift(function(){return a("number")(e.$modelValue)}),e.$parsers.unshift(function(b){var d=b.replace(/[^\d|\-+|\.+]/g,"");return c.val(a("number")(d)),d}))}}}]).directive("vnFormatCcNumber",["$filter",function(a){"use strict";return{require:"?ngModel",link:function(b,c,d,e){e&&(e.$formatters.unshift(function(){var b=c.attr("data-vn-cc-type").toUpperCase();return a("vnCreditCard")(e.$modelValue,b)}),e.$parsers.unshift(function(b){var d="",e=c.attr("data-vn-cc-type").toUpperCase();return d=-1!==b.indexOf("*")&&"AMEX"!==e&&"AMERICAN EXPRESS"!==e&&19===b.length||("AMEX"===e||"AMERICAN EXPRESS"===e)&&18===b.length?b:b.replace(/[^\d]+/g,""),c.val(a("vnCreditCard")(d,e)),d}))}}}]).directive("vnFormatUsPhoneNumber",["$filter",function(a){"use strict";return{require:"?ngModel",link:function(b,c,d,e){e&&(e.$formatters.unshift(function(){return a("vnUsPhone")(e.$modelValue)}),e.$parsers.unshift(function(b){var d=b.replace(/[^\d]+/g,"");return c.val(a("vnUsPhone")(d)),d}))}}}]).directive("vnFormatZip",[function(){"use strict";return{require:"?ngModel",link:function(a,b,c,d){d&&(d.$formatters.unshift(function(){return d.$modelValue}),d.$parsers.unshift(function(a){var c=a.replace(/[^\d|^\-]/g,"");return b.val(c),c}))}}}]),angular.module("Volusion.toolboxCommon").directive("vnLegacyLink",["$window",function(a){return{restrict:"AE",link:function(b,c,d){d.$observe("vnLegacyLink",function(a){c.attr("href",a)}),c.on("click",function(b){b.preventDefault(),a.location.assign(this.href)})}}}]),angular.module("Volusion.toolboxCommon").filter("vnLegacyLinkify",function(){return function(a){var b=angular.element("<div/>").html(a);return angular.forEach(b.find("a"),function(a){var b=angular.element(a);b.attr("target",b.attr("target")||"_self")}),b.html()}}),angular.module("Volusion.toolboxCommon").controller("LoginCtrl",["$rootScope","$scope","$location","$timeout","$q","vnUser","vnAuthService","VN_AUTH_EVENTS","vnNotifications","vnCheckout",function(a,b,c,d,e,f,g,h,i,j){"use strict";b.user=f.getUser(),b.disabledButton=!1,b.updateUser=function(){if(!b.disabledButton)if(b.frmLogin.$valid){if(b.disabledButton=!0,b.user.anonymous){var d={email:b.user.email,password:"",firstName:"",lastName:"",emailOptIn:!1,anonymous:!0,customFields:{},autoLogin:!0};e.all([f.createFrom(d),j.initCart().promise]).then(function(a){f.setId(a[0].data.id),j.setUser(),c.path("/checkout")})["catch"](function(a){i.displayErrors(a),b.disabledButton=!1})}else{var k={CustomerNewOld:"old",Email:b.user.email,Password:b.user.password};g.login(k)}a.$on(h.loginSuccess,function(){e.all([f.getCurrent().promise,j.initCart().promise]).then(function(){j.setUser(),c.path("/checkout")})["catch"](function(a){i.displayErrors(a),b.disabledButton=!1})}),a.$on(h.loginFailed,function(a,b){i.displayErrors(b.Errors||b.data.Errors)})}else for(var l in b.frmLogin)b.frmLogin.hasOwnProperty(l)&&l.indexOf("$")<0&&(b.frmLogin[l].$setDirty(),b.frmLogin[l].$setTouched())}}]),angular.module("Volusion.toolboxCommon").factory("vnModalService",["$modal",function(a){return{showError:function(b,c){return a.open({templateUrl:b||"modal/vnErrorModal.tpl.html",scope:c})},showMessage:function(b,c){return a.open({templateUrl:b||"modal/vnModalMessage.tpl.html",scope:c})}}}]),angular.module("Volusion.toolboxCommon").directive("vnNavMobile",["$rootScope","vnApi",function(a,b){"use strict";return{templateUrl:"nav-menu-mobile/vn-nav-mobile.tpl.html",restrict:"EA",replace:!0,scope:{currMode:"@",categoryList:"="},link:function(c,d){void 0===c.currMode&&(c.currMode="on"),c.componentId="1000051",c.componentName="navbar-mobile",c.selected=!1,c.$on("currentComponent.change",function(a,b){b&&b.id&&"off"===c.currMode&&(c.selected=b.id===c.componentId)}),d.on("click",function(b){"off"===c.currMode&&(b.preventDefault(),a.$broadcast("currentComponent.change",{id:c.componentId,name:c.componentName,action:"set"}))}),b.Nav().get({navId:1}).$promise.then(function(a){c.categories=a.data})}}}]),angular.module("Volusion.toolboxCommon").directive("vnNav",["$rootScope","$window","$timeout","vnApi",function(a,b,c,d){"use strict";return{templateUrl:"nav-menu/vn-nav.tpl.html",restrict:"EA",replace:!0,scope:{currMode:"@",categoryList:"=",useSmartNav:"@"},link:function(e,f){function g(){var a=0,b=0,c=0,d=[];-1!==i.windowWidth&&e.windowWidth>i.windowWidth&&(c=0,i.windowWidth=-1,i.position=0),-1===i.windowWidth&&angular.forEach(angular.element(".nav-top-level-menu-items"),function(d){return 0===a&&(b=angular.element(d).position().top),angular.element(d).position().top!==b?(c=a,!1):void a++}),0!==c||-1!==i.windowWidth?(-1===i.windowWidth?(i.windowWidth=e.windowWidth,i.position=c):c=i.position,e.smartNavMoreCategories=[],angular.forEach(e.smartCategories,function(a,b){b>=c-1?e.smartNavMoreCategories.push(a):d.push(a)}),e.smartNavCategories=d):e.smartNavCategories=e.smartCategories,e.displaySmartNavMoreMenuItem=0!==c}function h(a){e.smartNavCategories=e.smartCategories=a,"true"===e.useSmartNavigation&&c(function(){g()},0)}void 0===e.currMode&&(e.currMode="on"),e.useSmartNavigation=void 0===e.useSmartNav?"true":e.useSmartNav,e.componentId="100005",e.componentName="navbar",e.selected=!1,e.displaySmartNavMoreMenuItem=!1,e.$on("currentComponent.change",function(a,b){b&&b.id&&"off"===e.currMode&&(e.selected=b.id===e.componentId)}),f.on("click",function(b){"off"===e.currMode&&(b.preventDefault(),a.$broadcast("currentComponent.change",{id:e.componentId,name:e.componentName,action:"set"}))});var i={windowWidth:-1,position:0};e.initializeWindowSize=function(){e.windowWidth=b.outerWidth},e.initializeWindowSize(),"true"===e.useSmartNavigation&&angular.element(b).bind("resize",function(){e.initializeWindowSize(),e.$apply(),g()}),void 0!==e.categoryList?h(e.categoryList):d.Nav().get({navId:1}).$promise.then(function(a){h(a.data)})}}}]),angular.module("Volusion.toolboxCommon").directive("vnPaginator",["vnProductParams","themeSettings",function(a,b){return{templateUrl:"pagination/vnPaginator.tpl.html",restrict:"A",scope:{cursor:"=",queryFn:"&"},link:function(c,d,e){a.setPageSize(b.getPageSize()),c.nextPage=function(){c.cursor.currentPage<c.cursor.totalPages&&(a.nextPage(),c.queryFn())},c.prevPage=function(){c.cursor.currentPage>1&&(a.previousPage(),c.queryFn())},c.$watch(e.cursor,function(b){void 0!==b&&(c.currentPage=b.currentPage.toString(),a.setPage(c.currentPage))},!0)}}}]),angular.module("Volusion.toolboxCommon.templates",[]).run(["$templateCache",function(a){a.put("vn-faceted-search/vn-category-search.html",'<div class=vn-category-search__category-items data-ng-repeat="cat in categories" data-ng-class="{ \'-last\': $last }">\n\n <a href data-ng-if="cat.displayStrategy == \'categoryDisplayTwo\' || cat.displayStrategy == \'categoryDisplayThree\' " data-ng-click=buildAppUrl(cat) class=vn-category-search__category-items__category-title data-ng-class="{ \'-noborder\': $last && cat.displayStrategy == \'categoryDisplayOne\' }">\n\n <span data-ng-if="cat.displayStrategy == \'categoryDisplayTwo\' " class="glyphicon glyphicon-chevron-left"></span>\n {{ cat.name }}\n </a>\n <span class=vn-category-search__category-items__category-title data-ng-if="cat.displayStrategy == \'categoryDisplayOne\' ">{{ cat.name }}</span>\n <div class=vn-category-search__category-items__category-item data-ng-repeat="subCat in cat.subCategories" data-ng-class="{ \'-noborder\': $last }">\n\n <span data-ng-if=subCat.hideSubCatLink>{{ subCat.name }}</span>\n <a href data-ng-if=!subCat.hideSubCatLink data-ng-click=buildAppUrl(subCat)>{{ subCat.name }}</a>\n </div>\n</div>'),a.put("vn-faceted-search/vn-facet-search.html",'<div data-accordion-group class=facet-item data-ng-repeat="facet in facets track by $index" data-is-open=defaultAccordianOpen>\n <div data-accordion-heading>\n <div>\n <span>{{ facet.title }}</span>\n <i class="pull-right glyphicon" data-ng-class="{\'glyphicon-chevron-down\': defaultAccordianOpen, \'glyphicon-chevron-right\': !defaultAccordianOpen}"></i>\n </div>\n </div>\n <div data-ng-if="facet.displayType != \'swatches\'" class=facet-properties>\n <label class=facet-property data-ng-repeat="property in facet.properties track by $index" data-ng-class="{ \'-last\': $last }">\n\n <input type=checkbox name=property.name data-ng-checked=selectProperty(property) data-ng-click="refineFacetSearch(property)">\n <span class=name>{{ property.name }}</span>\n <span class=count>{{ property.count }}</span>\n </label>\n </div>\n <div data-ng-if="facet.displayType == \'swatches\'" class="facet-properties clearfix">\n <div data-ng-repeat="property in facet.properties" class=facet-property__swatch data-ng-click=refineFacetSearch(property) data-ng-class="{\'facet-property__swatch--selected\': selectProperty(property)}">\n <div class=facet-property__swatch--color data-ng-style="{\'backgroundColor\': property.color }">\n </div>\n </div>\n </div>\n</div>'),a.put("vn-faceted-search/vn-faceted-search.html",'<div class=vn-faceted-search-header data-ng-show=showApplyButton>\n <button class="btn btn-success __cancel-action" href data-ng-click=dismissMobileFilters()>Apply\n </button>\n \n <button class="btn __clear-action" href data-ng-click=clearAllFilters()>Clear\n </button>\n \n</div>\n<div class=-faceted-search data-ng-show=showFacetSearch>\n <div class=facets>\n <div data-accordion data-close-others=false>\n\n \n <div data-accordion-group class=facet-item__by-category data-is-open=categoryAccordiansOpen data-ng-show="categoryList.length > 0">\n <div data-accordion-heading>\n <div>\n <span>Category</span>\n <i class="pull-right glyphicon" data-ng-class="{\'glyphicon-chevron-down\': categoryAccordiansOpen, \'glyphicon-chevron-right\': !categoryAccordiansOpen}"></i>\n </div>\n </div>\n <div vn-category-search categories=categoryList query-products=queryProducts() data-ng-show=showCategorySearch class=category-search>\n </div>\n </div>\n\n \n <div vn-facet-search facets=facets query-products=queryProducts() data-ng-show="facets.length > 0"></div>\n\n \n <div data-accordion-group class=facet-item__by-price data-is-open=priceAccordiansOpen data-ng-show="facets.length > 0">\n <div data-accordion-heading>\n <div>\n <span>Price</span>\n <i class="pull-right glyphicon" data-ng-class="{\'glyphicon-chevron-down\': priceAccordiansOpen, \'glyphicon-chevron-right\': !priceAccordiansOpen}"></i>\n </div>\n </div>\n <div class=facet-item__by-price__inputs vn-price-search query-products=queryProducts()></div>\n </div>\n </div>\n\n \n <div class=vn-faceted-search-footer data-ng-show=!showApplyButton>\n <button class="btn __clear-action" href data-ng-click=clearAllFilters()>Reset Filters\n </button>\n \n </div>\n\n </div>\n</div>'),a.put("vn-faceted-search/vn-price-search.html",'<input data-ng-model=minPrice data-ng-keypress=searchByPrice($event) placeholder="$">\n to \n<input data-ng-model=maxPrice data-ng-keypress=searchByPrice($event) placeholder="$$">\n<button class="btn btn-default facet-item__by-price__button" type=button ng-click=searchByPrice($event)>Go\n</button>'),a.put("vn-faceted-search/vn-sort-search.html",'<div class=dropdown>\n <button class="btn btn-default dropdown-toggle" type=button id=dropdownMenu1 data-toggle=dropdown>\n Sort by\n <span class=caret></span>\n </button>\n <ul class=dropdown-menu role=menu aria-labelledby=dropdownMenu1>\n <li role=presentation>\n <a role=menuitem tabindex=-1 href="" data-ng-click="sortBy(\'relevance\')">Relevance</a>\n </li>\n <li role=presentation>\n <a role=menuitem tabindex=-1 href="" data-ng-click="sortBy(\'highest price\')">Highest price</a>\n </li>\n <li role=presentation>\n <a role=menuitem tabindex=-1 href="" data-ng-click="sortBy(\'lowest price\')">Lowest price</a>\n </li>\n <li role=presentation>\n <a role=menuitem tabindex=-1 href="" data-ng-click="sortBy(\'relevance\')">Popularity</a>\n </li>\n <li role=presentation>\n <a role=menuitem tabindex=-1 href="" data-ng-click="sortBy(\'newest\')">Newest</a>\n </li>\n <li role=presentation>\n <a role=menuitem tabindex=-1 href="" data-ng-click="sortBy(\'oldest\')">Oldest</a>\n </li>\n </ul>\n</div>'),a.put("vn-product-option/checkboxes.html",'<label data-vn-block=vn-labeled-checkbox data-vn-modifiers={{option.class}} data-ng-repeat="item in option.items" data-ng-init=item>\n\n <div data-vn-element=checkbox>\n <input type=checkbox data-ng-click="onCheckboxClicked(option, item)">\n </div>\n\n <div data-vn-element=content data-ng-include=" \'vn-product-option/content.html\' "></div>\n</label>'),a.put("vn-product-option/content.html",'<div data-vn-element=color-image>\n <div data-vn-element=color data-ng-show=item.color style="background-color: {{item.color}}"></div>\n <img data-vn-element=image data-ng-show=item.swatchImage data-ng-src={{item.swatchImage}} alt={{item.text}}>\n</div>\n<div data-vn-element=text data-ng-bind=item.text data-ng-controller=OptionsCtrl data-ng-class="{ \'-disabled\': !isItemAvailable }"></div>\n<div data-vn-element=border data-ng-class="{ checked: option.selected === item.key }"></div>'),a.put("vn-product-option/index.html",'<div data-vn-block=vn-product-option>\n\n <label data-vn-element=label data-ng-if=option.label data-ng-bind=option.label></label>\n\n <div data-ng-repeat="inputType in option.inputTypes">\n <div data-vn-element=group data-vn-modifiers="{{inputType.type}} {{option.class}}" data-ng-include=" \'vn-product-option/\' + inputType.type + \'.html\' ">\n </div>\n </div>\n\n <div data-ng-if=option.selected>\n <div data-ng-repeat="option in option.options" data-ng-include=" \'vn-product-option/index.html\' ">\n </div>\n </div>\n\n</div>'),a.put("vn-product-option/radios.html",'<label data-vn-block=vn-labeled-radio data-vn-modifiers={{option.class}} data-ng-repeat="item in option.items" data-ng-init=item data-ng-controller=OptionsCtrl data-ng-class="{ \'-disabled\': !isItemAvailable }">\n\n <div data-vn-element=radio>\n\n <input type=radio name={{option.id}} data-ng-value=item.key data-ng-model=option.selected data-ng-click="onOptionChanged(option, item)">\n </div>\n\n <div data-vn-element=content data-ng-include=" \'vn-product-option/content.html\' "></div>\n\n</label>'),a.put("vn-product-option/select.html",'<div class=dropdown data-vn-element=select data-vn-modifiers="{{ option.class }}" data-ng-attr-size="{{ inputType.size }}">\n\n <button class="btn btn-default dropdown-toggle" type=button id="dropdownMenuOption{{ option.id }}" data-toggle=dropdown>\n {{ currentSelectionText }}\n <span class=caret></span>\n </button>\n <ul class=dropdown-menu role=menu aria-labelledby="dropdownMenuOption{{ option.id }}">\n <li role=presentation data-ng-repeat="item in option.items">\n <a role=menuitem tabindex=-1 href data-ng-click="onOptionChanged(option, item)" data-ng-controller=OptionsCtrl data-ng-class="{ \'-disabled\': !isItemAvailable }">\n {{ item.text }}\n </a>\n </li>\n </ul>\n</div>'),a.put("vn-product-option/text.html",'<div data-ng-if="inputType.rows > 1">\n <textarea data-vn-element=text data-vn-modifiers={{option.class}} data-ng-focus="saveTo=saveTo||{}" data-ng-model=saveTo[option.id] data-ng-maxlength={{inputType.maxlength}} placeholder={{inputType.placeholder}} rows={{inputType.rows}} cols={{inputType.cols}}></textarea>\n</div>\n\n<div data-ng-if="!inputType.rows || inputType.rows < 2">\n <input data-vn-element=text data-vn-modifiers={{option.class}} data-ng-focus="saveTo=saveTo||{}" data-ng-model=saveTo[option.id] data-ng-maxlength={{inputType.maxlength}} placeholder={{inputType.placeholder}}>\n</div>'),a.put("vn-product/vn-product-image.html",'<img data-ng-src="{{ getImagePath(product.imageCollections) }}" class=img-responsive alt="{{ product.name }}">'),a.put("address/address-display.tpl.html",'<div class=row data-ng-show="address.address1 !== \'\'" data-ng-click=onClick()>\n <div class=col-xs-10>\n <div class=th-checkout__address__display__addressPart>{{ address.firstName }} {{ address.lastName }}</div>\n <div class=th-checkout__address__display__addressPart>{{ address.address1 }}</div>\n <div data-ng-if="address.address2 != \'\'" class=th-checkout__address__display__addressPart>{{ address.address2 }}</div>\n <div class=th-checkout__address__display__addressPart data-ng-show=isLocationUS>{{ address.city }}, {{ address.state }} {{ address.postalCode }}</div>\n <div class=th-checkout__address__display__addressPart data-ng-show=isLocationUS>{{ address.phoneNumber | vnUsPhone }}</div>\n\n <div class=th-checkout__address__display__addressPart data-ng-show=!isLocationUS>{{ address.city }}</div>\n <div class=th-checkout__address__display__addressPart data-ng-show=!isLocationUS>{{ address.state }} {{ address.postalCode }}</div>\n <div class=th-checkout__address__display__addressPart data-ng-show=!isLocationUS>{{ address.country }}</div>\n <div class=th-checkout__address__display__addressPart data-ng-show=!isLocationUS>{{ address.phoneNumber }}</div>\n </div>\n <div class=col-xs-2 ng-show=showEditButton>\n <i class="fa fa-angle-right fa-2x pull-right"></i>\n </div>\n</div>'),a.put("address/vn-address-picker.tpl.html",'<div class="th-checkout__step__drawer -left" data-ng-class="{\'-open\': openAddressPicker}">\n\n <div class=th-checkout__step__drawer__body data-ng-show=openAddressPicker data-ng-switch=state data-ng-cloak>\n <a href class=th-checkout__step__drawer__close data-ng-click=selectAddress()>\n <i class="fa fa-close fa-2x"></i>\n </a>\n\n <div class=th-checkout__step__drawer__title>\n <span data-ng-switch-when=ADDRESSLIST>{{:: selectAddressTitle}}</span>\n <span data-ng-switch-when=NEWADDRESS>{{:: newAddressTitle}}</span>\n </div>\n\n <div class=th-checkout__ship-to__choose data-ng-switch-when=ADDRESSLIST>\n <div class=th-checkout__ship-to__choose__options ng-cloak>\n <div class=th-checkout__ship-to__choose__options__option data-ng-repeat="address in addressList">\n <div class=styled-optionbox-option>\n <input type=radio id="address{{ $index }}" name=billingAddress data-ng-value=true data-ng-model=address.preferred data-ng-change="setPreferredAddress({{ $index }})">\n <label for="address{{ $index }}">\n <vn-address-display data-address=address data-show-edit-button=allowEdit></vn-address-display>\n </label>\n </div>\n </div>\n\n <footer class=th-checkout__ship-to__display__new-option ng-repeat-end>\n <a href data-ng-click=createNewAddress()>Enter a different address</a>\n </footer>\n </div>\n <button class="btn btn-primary btn-block btn-lg th-checkout__step__btn__continue" data-ng-click=selectAddress()>\n Continue <i class="fa fa-angle-right"></i>\n </button>\n </div>\n\n\n <div data-ng-switch-when=NEWADDRESS>\n <div class="th-checkout__billing-address__same-as styled-checkbox-option" data-ng-if=showCopyAddress>\n <input type=checkbox id=chkAddressCopy name=chkAddressCopy data-ng-model=addressCopied data-ng-change="copyAddressHandler()">\n <label for=chkAddressCopy>{{:: copyAddressText}}</label>\n </div>\n <div class=th-checkout__billing-address__enterAddress>\n <div data-vn-address-editor="" address=newAddress countries=countries data-on-dirty=setCopyAddressFalse() data-on-save="saveAddress({newAddress: newAddress})"></div>\n </div>\n </div>\n\n\n <div class=th-checkout__step__backButton>\n <a href=javascript:void(0); data-ng-click=selectAddress()>\n <i class="fa fa-arrow-left"> {{:: backToText}}</i>\n </a>\n </div>\n </div>\n</div>'),a.put("app-messages/vnAppMessage.tpl.html",'<alert ng-repeat="alert in appMessagesCtrl.alerts track by alert.id" type="{{ alert.type }}">\n {{alert.text}}\n <br>\n <button class="btn th-alert__button" data-ng-click=appMessagesCtrl.closeAlert(alert.id)>Ok</button>\n</alert>'),a.put("billing-address/billing-address-views.html",'<div class=th-checkout__billing-address data-ng-controller="BillingAddressViewsCtrl as vm" data-ng-switch=vm.state data-ng-init=vm.init()>\n\n <div class=th-checkout__billing-address__heading>\n Billing Address\n </div>\n\n <div class=th-checkout__address__display data-ng-switch-when=VIEWADDRESS>\n <vn-address-display data-address=vm.billingAddress data-on-click=vm.editBillingAddress() data-show-edit-button=vm.billingAddress></vn-address-display>\n </div>\n\n <div class="th-checkout__billing-address__same-as styled-checkbox-option" data-ng-switch-when=EDITADDRESS ng-cloak>\n <input type=checkbox id=chkBillingAddress name=chkBillingAddress data-ng-model=vm.useShippingAddress data-ng-change="vm.copyShippingAddress()">\n <label for=chkBillingAddress>Billing address same as shipping</label>\n </div>\n <div class=th-checkout__ship-to__enterAddress data-ng-switch-when=EDITADDRESS ng-cloak>\n <div data-vn-address-editor="" address=vm.billingAddress countries=vm.countries data-on-dirty=vm.setShippingAddressFalse() data-on-save=vm.saveBillingAddress() data-show-save-button=vm.showSaveButton></div>\n </div>\n\n <div vn-address-picker data-ng-switch-when=PICKADDRESS data-address-list=vm.user.billingAddresses data-new-address-title="Add Billing Address" data-select-address-title="Choose Billing Address" data-back-to-text="back to Pay With" data-show-copy-address=vm.showCopyAddress data-countries=vm.countries data-on-address-selected=vm.onAddressSelected() data-save-address=vm.onAddressAdded(newAddress) data-address-copied=vm.useShippingAddress data-copy-address-handler=vm.copyShippingAddress() data-copy-address-text="Billing address same as shipping"></div>\n\n</div>'),a.put("busy-animation/vnBusyAnimation.tpl.html",'<ng-transclude></ng-transclude>\n<div class="{{ class }}" title=1 data-ng-if=show>\n <svg version=1.1 id=loader-1 xmlns=http://www.w3.org/2000/svg xmlns:xlink=http://www.w3.org/1999/xlink x=0px y=0px width="{{ size }}" height="{{ size }}" viewbox="0 0 50 50" style="enable-background:new 0 0 50 50" xml:space=preserve>\n\n <path fill=#000 d=M25.251,6.461c-10.318,0-18.683,8.365-18.683,18.683h4.068c0-8.071,6.543-14.615,14.615-14.615V6.461z>\n <animatetransform attributetype=xml attributename=transform type=rotate from="0 25 25" to="360 25 25" dur=.6s repeatcount="indefinite">\n </path>\n </svg>\n</div>'),a.put("checkout/checkout.html",'<div class=th-checkout-content>\n <div class=row>\n <div class="col-md-4 th-checkout__step" data-ng-show="checkout.steps[0].active || isInDesktopMode" data-ng-class="{ \'-active\' : checkout.steps[0].active, \'-no-scroll\' : checkout.steps[0].hasOpenDrawer }" data-ng-switch=isEditable(1) data-vn-scroll-to-top=checkout.steps[0].hasOpenDrawer data-ng-init="hideShippingMethods = true">\n\n <div class=th-checkout__step__overlay data-ng-class="{ \'-complete\' : checkout.steps[1].active || checkout.steps[2].active}" data-ng-click=setStep(1)></div>\n\n <div class=th-checkout__step__title>\n <div class=th-checkout__step__title__stepNumber data-ng-if=checkout.steps[0].active><span>1</span></div>\n <i class="fa fa-check-circle-o fa-2x" data-ng-if="checkout.steps[1].active || checkout.steps[2].active"></i>\n <div class=th-checkout__step__title__stepName>Ship To</div>\n </div>\n\n <div ng-include=" \'ship-to/ship-to-views.html\' "></div>\n\n <div data-ng-hide=hideShippingMethods ng-include=" \'ship-method/ship-method.html\' "></div>\n\n <button data-ng-hide=hideShippingMethods class="btn btn-primary btn-block btn-lg th-checkout__step__btn__continue" data-ng-if=checkout.steps[0].active data-ng-click=nextShippingStep() data-ng-bind-html=buildShippingStepLabel()>\n </button>\n </div>\n <div class="col-md-4 th-checkout__step" data-ng-show="checkout.steps[1].active || isInDesktopMode" data-ng-class="{ \'-active\' : checkout.steps[1].active, \'-no-scroll\' : checkout.steps[1].hasOpenDrawer }" data-ng-switch=isEditable(2) data-vn-scroll-to-top=checkout.steps[1].hasOpenDrawer>\n\n <div class=th-checkout__step__overlay data-ng-class="{ \'-complete\' : checkout.steps[2].active}" data-ng-click="checkout.steps[0].active || setStep(2)"></div>\n\n <div class=th-checkout__step__title>\n <div class=th-checkout__step__title__stepNumber data-ng-if="checkout.steps[0].active || checkout.steps[1].active"><span>2</span></div>\n <i class="fa fa-check-circle-o fa-2x" data-ng-if=checkout.steps[2].active></i>\n <div class=th-checkout__step__title__stepName>Pay With</div>\n </div>\n\n <div ng-include=" \'pay-with/credit-card-views.html\' "></div>\n\n <div ng-include=" \'billing-address/billing-address-views.html\' "></div>\n\n <div>\n <button class="btn btn-primary btn-block btn-lg th-checkout__step__btn__continue" data-ng-if=checkout.steps[1].active data-ng-click=nextBillingStep()>\n Continue <i class="fa fa-angle-right"></i>\n </button>\n\n <div class=th-checkout__step__backButton data-ng-if=checkout.steps[1].active>\n <a href=javascript:void(0); data-ng-click=prevStep()>\n <i class="fa fa-arrow-left"> back to Ship To</i>\n </a>\n </div>\n\n <br style="clear: both">\n </div>\n\n </div>\n <div class="col-md-4 th-checkout__step" data-ng-show="checkout.steps[2].active || isInDesktopMode" data-ng-class="{ \'-active\' : checkout.steps[2].active, \'-no-scroll\' : checkout.steps[2].hasOpenDrawer }" data-vn-scroll-to-top=checkout.steps[2].hasOpenDrawer>\n\n <div class=th-checkout__step__overlay data-ng-click="checkout.steps[0].active || checkout.steps[1].active || setStep(3)"></div>\n\n <div class=th-checkout__step__title>\n <div class=th-checkout__step__title__stepNumber><span>3</span></div>\n <div class=th-checkout__step__title__stepName>Review</div>\n </div>\n <div class=th-checkout__thanks__title>\n Total: {{ checkout.cart.totals.grandTotal | currency }}\n </div>\n <button class="btn btn-primary btn-block btn-lg th-checkout__step__btn__continue" data-ng-if=checkout.steps[2].active data-ng-click=placeOrder()>\n\n Place Order\n </button>\n <div ng-include=" \'review/review.html\' "></div>\n <div ng-include=" \'review/review-details-2.html\' "></div>\n\n\n\n <div class=th-checkout__step__backButton>\n <a href=javascript:void(0); data-ng-if=checkout.steps[2].active data-ng-click=prevStep()>\n <i class="fa fa-arrow-left"> back to Pay With</i>\n </a>\n </div>\n\n </div>\n </div>\n</div>'),a.put("checkout/vn-address-editor.html",'<div class=th-checkout__address>\n\n <div>\n\n <div class=th-checkout__address__location>\n <div class=btn-group>\n <button type=button data-ng-click=setCountryToUS() class="btn btn-default" data-ng-class="{ \'btn-primary\' : isLocationUS }">United States\n </button>\n <button type=button data-ng-click=setCountryToOther() class="btn btn-default" data-ng-class="{ \'btn-primary\': !isLocationUS }">International\n </button>\n </div>\n </div>\n\n <div class=th-checkout__address__form-wrapper>\n <form id=frmAddress name=frmAddress novalidate data-ng-submit=updateAddress(address)>\n <div class=row>\n <div class=col-xs-6>\n <div class=form-group>\n <input name=inputUSFirstName class="form-control input-lg immediate-help" id=first-name data-vn-placeholder="First Name" data-ng-model=address.firstName data-vn-first-name-validate required>\n\n <data-vn-popover-first-name>\n\n </div>\n </div>\n <div class=col-xs-6>\n <div class=form-group>\n <input name=inputUSLastName class="form-control input-lg -right immediate-help" id=last-name data-vn-placeholder="Last Name" data-ng-model=address.lastName data-vn-last-name-validate required>\n\n <data-vn-popover-last-name>\n\n </div>\n </div>\n </div>\n <div class=row>\n <div class=col-xs-12>\n <div class=form-group>\n <input name=inputUSAddress1Line class="form-control input-lg immediate-help" id=address-1 data-vn-placeholder="Address Line 1" data-ng-model=address.address1 data-vn-street-validate required>\n\n <data-vn-popover-address>\n\n </div>\n </div>\n </div>\n <div class=row>\n <div class=col-xs-12>\n <div class=form-group>\n <input name=inputUSAddressLine2 class="form-control input-lg" id=address-2 data-vn-placeholder="Address Line 2" data-ng-model="address.address2">\n </div>\n </div>\n </div>\n <div class=row data-ng-show=isLocationUS data-ng-hide=check.useShippingAddress>\n <div class=col-xs-5>\n <div class=form-group>\n <input name=inputUSCity class="form-control input-lg immediate-help" id=city data-vn-placeholder=City data-ng-model=address.city data-vn-city-validate ng-required="isLocationUS">\n\n <data-vn-popover-city>\n\n </div>\n </div>\n <div class=col-xs-3>\n <div class=form-group>\n <div class="th-checkout__address__state th-dropdown">\n <vn-dropdown name=inputUSState availableoptions=address.selectedCountry.states placeholder=State optionselect=onStateChanged model=address.selectedState selected-field=code><vn-dropdown>\n </vn-dropdown></vn-dropdown></div>\n </div>\n </div>\n <div class=col-xs-4>\n <div class=form-group>\n <input name=inputUSZip class="form-control input-lg immediate-help" id=zip data-vn-placeholder=Zip data-ng-model=address.postalCode data-vn-zip-validate ng-required="isLocationUS">\n\n <data-vn-popover-zip>\n\n </div>\n </div>\n </div>\n <div class=row data-ng-show=!isLocationUS>\n <div class=col-xs-12>\n <div class=form-group>\n <input name=inputWorldwideCity class="form-control input-lg immediate-help" id=international-city data-vn-placeholder=City data-ng-model=address.city data-vn-city-validate required>\n\n <data-vn-popover-city></data-vn-popover-city>\n </div>\n </div>\n </div>\n <div class=row data-ng-show=!isLocationUS>\n <div class=col-xs-6>\n <div class=form-group>\n <input name=inputWorldwideRegion class="form-control input-lg immediate-help" id=region data-vn-placeholder=Region data-ng-model=address.state data-vn-region-validate ng-required="!isLocationUS">\n <data-vn-popover-region></data-vn-popover-region>\n </div>\n </div>\n <div class=col-xs-6>\n <div class=form-group>\n <input name=inputWorldwidePostalCode class="form-control input-lg immediate-help" id=postal-code maxlength=15 data-vn-placeholder="Postal code" data-ng-model=address.postalCode data-vn-postal-code-validate ng-required="!isLocationUS">\n <data-vn-popover-postal-code>\n </data-vn-popover-postal-code></div>\n </div>\n </div>\n <div class=row data-ng-show="!isLocationUS ">\n <div class=col-xs-12>\n <div class=form-group>\n <div class="th-checkout__ship-to__country th-dropdown">\n\n <vn-dropdown name=inputWorldwideCountry data-availableoptions=countries placeholder=Country optionselect=onCountryChanged model=address.selectedCountry><vn-dropdown>\n\n </vn-dropdown></vn-dropdown></div>\n </div>\n </div>\n </div>\n\n <div class=row data-ng-show=isLocationUS>\n <div class=col-xs-12>\n <div class=form-group>\n <input name=inputUSPhoneNumber class="form-control input-lg immediate-help" id=phone-number data-vn-placeholder="Phone Number" data-ng-model=address.phoneNumber data-vn-format-us-phone-number data-vn-us-phone-validate required>\n\n <data-vn-popover-us-phone></data-vn-popover-us-phone>\n </div>\n </div>\n </div>\n\n <div class=row data-ng-show=!isLocationUS>\n <div class=col-xs-12>\n <div class=form-group>\n <input name=inputIntlPhoneNumber class="form-control input-lg immediate-help" maxlength=35 data-vn-placeholder="Phone Number" data-ng-model=address.phoneNumber data-vn-required-field-validate required>\n\n <data-vn-popover-required location=top field="Phone Number"></data-vn-popover-required>\n </div>\n </div>\n </div>\n </form>\n </div>\n\n </div>\n\n\n <button class="btn btn-primary btn-block btn-lg th-checkout__step__btn__continue" data-ng-click=saveAddress() data-ng-enabled=frmAddress.$valid data-ng-hide=showSaveButton>\n\n {{saveText}} <i class="fa fa-angle-right"></i>\n </button>\n</div>'), -a.put("dropdown/vn-dropdown.tpl.html",'<div class="vn-dropdown th-dropdown" dropdown>\n <button id=dropdownButton name="{{name + \'Label\'}}" class="vn-dropdown__trigger form-control btn btn-default btn-lg dropdown-toggle form-control" data-vn-placeholder={{placeholder}} data-ng-model=selectedOption.selectedDisplayValue dropdown-toggle data-toggle=dropdown value={{selectedOption.selectedDisplayValue}}>{{selectedOption.selectedDisplayValue}}<span class=caret></span>\n </button>\n <ul class="vn-dropdown__menu dropdown-menu" role=menu>\n <li role=presentation data-ng-repeat="option in options">\n <a role=menuitem data-ng-click=changeOption($index) href>{{option.displayValue}}</a>\n </li>\n </ul>\n <select name={{name}} class=vn-dropdown__select ng-model=selectedOption ng-options="option.selectedDisplayValue for option in options">\n </select>\n</div>'),a.put("easy-zoom/vnEasyZoom.tpl.html","<div class=easyzoom data-ng-class=\"{ 'easyzoom--adjacent': ezAdjacent, 'easyzoom--overlay': ezOverlay }\">\n <a data-ng-href={{ezZoomSrc}}>\n <img class=img-responsive data-ng-src={{ngSrc}} alt={{alt}}>\n <div class=th-product-view__zoom></div>\n </a>\n</div>"),a.put("login/login.html",'<div class=th-checkout__login>\n <div class=th-checkout__step__title>\n <div class=th-checkout__step__title__stepName>Enter your e-mail to get started</div>\n </div>\n <div class=container-fluid>\n <div class=row>\n <div class="col-xs-12 col-xs-offset-0 col-sm-8 col-sm-offset-2 col-md-6 col-md-offset-3 col-lg-4 col-lg-offset-4">\n <div class=th-checkout__login__form>\n <form id=frmLogin name=frmLogin novalidate data-ng-submit=updateUser()>\n <div class=row>\n <div class=col-xs-12>\n <div class=form-group>\n <input id=inputLoginEmail name=inputLoginEmail class="form-control input-lg immediate-help" data-vn-placeholder="E-mail address" data-ng-model=user.email data-vn-email-validate required>\n\n <div class="input-help bottom" ng-if=frmLogin.inputLoginEmail.$touched>\n <div class=arrow></div>\n <h4>E-mail must:</h4>\n <ul>\n <li ng-class=emailEmpty>Not be <strong>empty</strong></li>\n <li ng-class=validEmail>Be a <strong>valid</strong> address</li>\n </ul>\n </div>\n </div>\n </div>\n </div>\n\n <div class=row data-ng-if=!user.anonymous>\n <div class=col-xs-12>\n <div class=form-group>\n <input type=password id=inputLoginPassword name=inputLoginPassword class="form-control input-lg immediate-help" data-vn-placeholder=Password data-ng-model=user.password data-ng-enter=updateUser() data-vn-password-validate required>\n </div>\n </div>\n </div>\n </form>\n\n <div class=th-checkout__login__user-type>\n <div class=btn-group>\n <button type=button data-ng-click="user.anonymous = true" class="btn btn-default" data-ng-class="{ \'btn-primary\' : user.anonymous }">I\'m a new customer\n </button>\n <button type=button data-ng-click="user.anonymous = false" class="btn btn-default" data-ng-class="{ \'btn-primary\': !user.anonymous }">I\'ve ordered before\n </button>\n </div>\n </div>\n\n <button class="btn btn-primary btn-block btn-lg th-checkout__login__continue" data-ng-disabled=disabledButton data-ng-click=updateUser()>\n Continue <i class="fa fa-angle-right"></i>\n </button>\n\n </div>\n </div>\n </div>\n </div>\n</div>'),a.put("modal/vnErrorModal.tpl.html",'<div class=th-error-details>\n <div class="th-error-details__header modal-header">\n <h1>Sorry, something went wrong with the page...</h1>\n <div class=modal-body>\n <p class=th-error-details__section1>... but it might just be a small glitch. Try refreshing the page\n to see if that fixes it.</p>\n\n <p class=th-error-details__section2>\n If the problem persists, please try again later.\n </p>\n </div>\n <div class=modal-footer>\n <button class="btn btn-warning" ng-click=$close()>Close</button>\n </div>\n </div>\n </div>\n'),a.put("modal/vnMessageModal.tpl.html",'<div class="th-error-wrap clearfix">\n <div class=th-error-details>\n <div class="th-error-details__header modal-header">\n <h1>This is a generic app message template</h1>\n <div class=modal-body>\n <p class=th-message-details__section1>It should be over ridden in the calling application</p>\n\n </div>\n <div class=modal-footer>\n <button class="btn btn-warning" ng-click=$dismiss()>Ok</button>\n <button class="btn btn-warning" ng-click=$close()>Cancel</button>\n </div>\n </div>\n </div>\n</div>'),a.put("nav-menu-mobile/vn-nav-mobile.tpl.html",'<ul class="nav navbar-nav th-mobile-list">\n <li class="th-mobile-list__item th-mobile-list__item--header">Categories</li>\n <li class="dropdown th-mobile-list__item" ng-repeat="category in categories">\n <a href=# class="dropdown-toggle navbar-link th-dropdown-toggle th-mobile-list__link" ng-if=category.subCategories.length data-toggle=dropdown>\n {{category.name}} <span class="pull-right caret"></span>\n </a>\n <a data-ng-href={{category.url}} class="navbar-link th-dropdown-toggle th-mobile-list__link" ng-if=!category.subCategories.length>\n {{category.name}}\n </a>\n <ul class="dropdown-menu th-mobile-list th-mobile-list--sub" data-ng-if=category.subCategories.length>\n <li>\n <a data-ng-href={{category.url}} class="th-mobile-list__link th-mobile-list__link--sub">\n All {{category.name}}\n </a>\n </li>\n <li data-ng-repeat="subCategory in category.subCategories">\n <a class="th-mobile-list__link th-mobile-list__link--sub" data-ng-href={{subCategory.url}}>{{subCategory.name}}</a>\n </li>\n </ul>\n </li>\n</ul>'),a.put("nav-menu/vn-nav.tpl.html",'<div class="collapse navbar-collapse" id=th-main-menu data-ng-class="!navCollapsed && \'in\'" data-ng-click="navCollapsed=true">\n <ul class="nav navbar-nav">\n <li class="dropdown nav-top-level-menu-items" data-ng-repeat="category in smartNavCategories">\n <a class=navbar-link data-ng-href="{{ category.url }}">\n {{category.name}}\n <span data-ng-if=category.subCategories.length class="caret th-dropdown-toggle"></span>\n </a>\n <ul vn-show-on-dropdown-hover class=dropdown-menu data-ng-if=category.subCategories.length>\n <li data-ng-repeat="subCategory in category.subCategories">\n <a data-ng-href="{{ subCategory.url }}">{{subCategory.name}}</a>\n </li>\n </ul>\n </li>\n <li class=dropdown data-ng-show=displaySmartNavMoreMenuItem>\n <a href=# class=navbar-link data-translate=header.smartNavMoreLinkText>\n More\n <span class="caret th-dropdown-toggle"></span>\n </a>\n <ul vn-show-on-dropdown-hover class=dropdown-menu>\n <li data-ng-repeat="category in smartNavMoreCategories">\n <a class=navbar-link data-ng-href="{{ category.url }}">{{category.name}}</a>\n </li>\n </ul>\n </li>\n </ul>\n </div>'),a.put("pagination/vnPaginator.tpl.html",'<ul class=pager data-ng-if="cursor.totalPages > 1">\n <li data-ng-class="{disabled: cursor.currentPage == 1}">\n <a href data-ng-click=prevPage()><span class="glyphicon glyphicon-chevron-left"></span></a></li>\n <li data-ng-class="{disabled: cursor.currentPage == cursor.totalPages}">\n <a href data-ng-click=nextPage()><span class="glyphicon glyphicon-chevron-right"></span></a></li>\n</ul>\n\n <div class=pager>\n Page {{ cursor.currentPage }} of {{ cursor.totalPages }}\n </div>'),a.put("pay-with/credit-card-views.html",'<div class=th-checkout__credit-card data-ng-controller="CreditCardViewsCtrl as cc" data-ng-init=cc.init() data-ng-switch=cc.state>\n\n <div data-vn-credit-card-display data-ng-switch-when=VALIDCARDENTERED data-card=cc.card data-on-dirty=cc.setCardValidFalse() data-on-save=cc.saveCreditCard() data-on-click=cc.toggleChange() data-state=cc.displayCardState>\n </div>\n\n <div data-vn-credit-card-editor data-ng-switch-when=ENTERCARD data-card=cc.card data-on-dirty=cc.setCardValidFalse() data-on-save=cc.saveCreditCard()>\n </div>\n\n <div data-vn-credit-card-picker data-ng-switch-when=PICKCARD data-state=cc.pickCardState data-card=cc.card data-card-list=cc.user.paymentProfiles data-on-select="" data-open-credit-cards=true data-close-picker=cc.closePicker() data-choose-picker=cc.choosePicker() data-enter-card=cc.enterCard() data-set-payment-profile=cc.setPaymentProfile(id) data-selected-index=cc.selectedIndex data-on-dirty-card=cc.setCardValidFalse() data-on-save-card=cc.saveCreditCard()>\n </div>\n\n</div>'),a.put("pay-with/vn-credit-card-display.html",'<div class=th-checkout__credit-card__display data-ng-class="{ \'-verify-CVV\' : state == \'CVV\'}">\n <div class="row clickable" data-ng-cloak data-ng-click=onClick()>\n <div class=col-xs-10>\n <img src="" class=th-checkout__credit-card__display__image data-ng-class="card.ccCssClass">\n <span class=th-checkout__credit-card__display__last4>{{ card.cardNumber.slice(-4) }}</span>\n <span class=th-checkout__credit-card__display__exp>{{card.expMonth }}/{{card.expYear }}</span>\n </div>\n <div class=col-xs-2 data-ng-show=showArrowVal>\n <i class="fa fa-angle-right fa-2x pull-right"></i>\n </div>\n </div>\n <form id=frmCVV name=frmCVV novalidate ng-show="state==\'CVV\'">\n <hr>\n <div class=form-group>\n <div class=row>\n <div class="col-xs-7 th-checkout__credit-card__display__verifyCVV">\n <label class=th-checkout__credit-card__display__verifyCVV__label>Please verify your card</label>\n </div>\n <div class="col-xs-4 col-sm-2 th-checkout__credit-card__display__verifyCVV">\n <input id=inputCreditCardCVV name=inputCreditCardCVV class="form-control input-lg immediate-help" data-vn-placeholder=CVV data-ng-model=card.CVV data-vn-cvv-validate data-vn-cc-type="{{ card.cardTypeName }}" required>\n <input type=hidden data-ng-model=card.pCIaaSId id=hiddenCardID value="{{ card.pCIaaSId }}" name="hiddenCardID">\n <div class="input-help top" ng-if=frmCVV.inputCreditCardCVV.$touched>\n <div class=arrow></div>\n <h4>CVV must:</h4>\n <ul>\n <li ng-class=cvvValidFormat>Be <strong>{{ cvvLength }} digits</strong> long</li>\n </ul>\n </div>\n </div>\n </div>\n </div>\n </form>\n</div>'),a.put("pay-with/vn-credit-card-editor.html",'<div>\n <div class="credit-card-error -aligned" ng-if=card.pCIaaSError ng-click="card.pCIaaSError = \'\'">\n <div class=row>{{card.pCIaaSError}}</div>\n </div>\n <div class="credit-card -aligned" ng-cloak>\n <div class=credit-card__strip></div>\n\n <form id=frmCreditCard name=frmCreditCard novalidate data-ng-submit=updateCreditCard()>\n <div class=row>\n <div class=col-xs-9>\n <div class=form-group>\n <input id=inputCreditCardNumber name=inputCreditCardNumber class="form-control input-lg immediate-help" data-vn-placeholder="Credit card number" data-ng-model=card.cardNumber data-vn-format-cc-number data-vn-cc-validate data-vn-cc-type="{{ card.cardTypeName }}" required>\n <input type=hidden data-ng-hide=true id=hiddenCardType name=hiddenCardType value="{{ card.cardTypeName }}">\n <input type=hidden data-ng-model=card.pCIaaSId id=hiddenCardID value="{{ card.pCIaaSId }}" name="hiddenCardID">\n\n <div class="input-help top-left" ng-if=frmCreditCard.inputCreditCardNumber.$touched>\n <div class=arrow></div>\n <h4>Credit card must:</h4>\n <ul>\n <li ng-class=creditCardValid>Be <strong>valid</strong> credit card number</li>\n <li ng-class=creditCardSupported>Be <strong>supported</strong> credit card issuer</li>\n </ul>\n </div>\n </div>\n </div>\n <div class=col-xs-3>\n <div class=form-group>\n <input id=inputCreditCardCVV name=inputCreditCardCVV class="form-control input-lg immediate-help" data-vn-placeholder=CVV data-ng-model=card.CVV data-ng-focus=setCCImage() data-ng-blur="setCCImage(\'reset\');" data-vn-cvv-validate data-vn-cc-type="{{ card.cardTypeName }}" required>\n\n <div class="input-help top" ng-if=frmCreditCard.inputCreditCardCVV.$touched>\n <div class=arrow></div>\n <h4>CVV must:</h4>\n <ul>\n <li ng-class=cvvValidFormat>Be <strong>{{ cvvLength }} digits</strong> long</li>\n </ul>\n </div>\n </div>\n </div>\n </div>\n\n <div class=row>\n <div class=col-xs-4>\n <div class=form-group>\n <div class="credit-card__exp-month th-dropdown" dropdown>\n <button id=inputCreditCardExpMonth name=inputCreditCardExpMonth class="btn btn-default btn-lg dropdown-toggle form-control immediate-help" type=button data-toggle=dropdown dropdown-togle aria-haspopup=true role=button aria-expanded=false data-ng-class="{ \'ng-invalid\': card.expMonth === \'\' || expDateInvalid === undefined, \'ng-valid\': expDateInvalid === \'valid\' }" data-vn-placeholder=MM data-ng-model=card.expMonth value="{{ card.expMonth }}">\n\n {{ card.expMonth }}<span class=caret></span>\n </button>\n <div class="input-help top-left -dropdown" ng-if=frmCreditCard.inputCreditCardExpMonth.$touched>\n <div class=arrow></div>\n <h4>Expiration date must:</h4>\n <ul>\n <li ng-class=expDateInvalid>Be <strong>future</strong> date</li>\n </ul>\n </div>\n <ul class=dropdown-menu role=menu aria-labelledby=inputCreditCardExpMonth>\n <li ng-repeat="month in months track by $index">\n <a role=menuitem tabindex=-1 href data-ng-click="onExpMonthChanged(month, \'inputCreditCardExpMonth\');">\n\n {{ month.label }}\n </a>\n </li>\n </ul>\n </div>\n </div>\n </div>\n <div class=col-xs-4>\n <div class=form-group>\n <div class="credit-card__exp-year th-dropdown" dropdown>\n <button id=inputCreditCardExpYear name=inputCreditCardExpYear class="btn btn-default btn-lg dropdown-toggle form-control immediate-help" type=button data-toggle=dropdown dropdown-toggle aria-haspopup=true role=button aria-expanded=false data-ng-class="{ \'ng-invalid\': card.expYear === \'\' || expDateInvalid === undefined }" data-vn-placeholder=YY data-ng-model=card.expYear value="{{ card.expYear }}">\n\n {{ card.expYear }}<span class=caret></span>\n </button>\n <div class="input-help top-left -dropdown" ng-if=frmCreditCard.inputCreditCardExpYear.$touched>\n <div class=arrow></div>\n <h4>Expiration date must:</h4>\n <ul>\n <li ng-class=expDateInvalid>Be <strong>future</strong> date</li>\n </ul>\n </div>\n <ul class=dropdown-menu role=menu aria-labelledby=inputCreditCardExpYear>\n <li ng-repeat="year in rangeYears() track by $index">\n <a role=menuitem tabindex=-1 href data-ng-click="onExpYearChanged(year, \'inputCreditCardExpYear\');">\n\n {{ year }}\n </a>\n </li>\n </ul>\n </div>\n </div>\n </div>\n </div>\n\n <div class=row>\n <div class=col-xs-12>\n <div class=form-group>\n <img src="" class=credit-card__image data-ng-class="card.ccCssClass">\n </div>\n </div>\n </div>\n\n </form>\n </div>\n <button class="btn btn-primary btn-block btn-lg th-checkout__step__btn__continue" data-ng-show=showSaveButton data-ng-click=saveCard()>\n {{saveText}} <i class="fa fa-angle-right"></i>\n </button>\n</div>'),a.put("pay-with/vn-credit-card-picker.html",'<div class=th-checkout__credit-card>\n\n <div class=credit-card data-ng-class="{\'-aligned\': !openCreditCards}" ng-cloak>\n\n <div class="th-checkout__step__drawer -left" data-ng-class="{\'-open\': openCreditCards}">\n\n <div class=th-checkout__step__drawer__body data-ng-show=openCreditCards data-ng-cloak data-ng-switch=state>\n\n <div data-ng-switch-when=PICK>\n <a href class=th-checkout__step__drawer__close data-ng-click=closePicker()>\n <i class="fa fa-close fa-2x"></i>\n </a>\n\n <div class=th-checkout__step__drawer__title>Choose credit card</div>\n\n <div class=th-checkout__credit-card__choose>\n <div class=th-checkout__credit-card__choose__options ng-cloak>\n <div class=th-checkout__credit-card__choose__options__option data-ng-repeat="profile in cardList" data-ng-class="{\'-first\' : $index === 0}">\n <div class=styled-optionbox-option>\n <input type=radio id="profile{{ $index }}" name=profile data-ng-value=true data-ng-model=profile.preferred data-ng-class="{\'-inactive\' : !profile.preferred, \'-selected\' : profile.preferred}" data-ng-change="setIndex({{ $index }})">\n <label for="profile{{ $index }}">\n <img src="" class=th-checkout__credit-card__display__image data-ng-class="getCssClass(profile)">\n <span class=th-checkout__credit-card__display__last4>{{ profile.card.last4 }}</span>\n <span class=th-checkout__credit-card__display__exp>{{ profile.card.expMonth }}/{{ profile.card.expYear }}</span>\n </label>\n </div>\n </div>\n\n <footer class=th-checkout__credit-card__choose__options__new-option ng-repeat-end ng-cloak>\n <a href data-ng-click=addCard()>Enter a different card</a>\n </footer>\n </div>\n\n <button class="btn btn-primary btn-block btn-lg th-checkout__step__btn__continue" data-ng-click=choosePicker()>\n Continue <i class="fa fa-angle-right"></i>\n </button>\n </div>\n\n <div class=th-checkout__step__backButton>\n <a href=javascript:void(0); data-ng-click=closePicker()>\n <i class="fa fa-arrow-left"> back</i>\n </a>\n </div>\n </div>\n\n <div data-ng-switch-when=ENTER>\n <div class=th-checkout__step__drawer__title>Add credit card</div>\n <div data-vn-credit-card-editor data-card=card data-on-dirty=onDirtyCard() data-on-save=onSaveCard() data-show-save-button=true>\n </div>\n <div class=th-checkout__step__backButton>\n <a href=javascript:void(0); data-ng-click=goBackFromEnter()>\n <i class="fa fa-arrow-left"> back</i>\n </a>\n </div>\n </div>\n\n </div>\n </div>\n\n </div>\n\n</div>'),a.put("popover/vn-popover.tpl.html",'<div class="input-help {{ ::location }}">\n <div class=arrow></div>\n <h4>{{ ::title }}</h4>\n</div>'),a.put("product-image/vn-product-image.tpl.html",'<img data-ng-src="{{ getImagePath(product.imageCollections) }}" class=img-responsive alt="{{ product.name }}">'),a.put("product-search/vnSearchForm.tpl.html",'<div class=th-search role=search>\n <div data-ng-show=showSearch class=th-search__popout>\n <form class=form-inline role=search name=frmSearch data-ng-submit=doSearch() novalidate>\n <div class=form-group>\n <input data-ng-model=searchTerm class=th-search__popout--input placeholder=Search...>\n <button type=button data-ng-click=doSearch() class="btn btn-xs btn-primary th-search__popout--submit">Go!\n </button>\n </div>\n </form>\n </div>\n\n <a id=search-toggle data-ng-click="showSearch = !showSearch" ng-show=allowCollapse type=button class=th-search__trigger data-ng-class="{ \'-position\' : !showSearch }">\n <span class="glyphicon glyphicon-search"></span>\n </a>\n</div>'),a.put("review/review-details-2.html","<div data-ng-controller=ReviewDetailsCtrl>\n\n <div class=th-checkout__thanks__title>Ship To</div>\n <div class=th-checkout__address__display data-ng-if=shippingAddress>\n <div vn-address-display data-address=shippingAddress></div>\n </div>\n\n <div class=th-checkout__thanks__title>Shipping Method</div>\n <div class=th-checkout__ship-method>\n <div class=th-checkout__ship-method__display data-ng-if=shippingMethod>\n <div class=th-checkout__ship-method__display__name data-ng-bind-html=shippingMethod.name></div>\n <div class=th-checkout__ship-method__display__price>{{ shippingMethod.price | vnCurrency }}</div>\n </div>\n </div>\n\n <div class=th-checkout__thanks__title>Paid With</div>\n <div data-vn-credit-card-display data-card=payment data-state=NOCVV data-show-arrow=false></div>\n\n <div class=th-checkout__thanks__title>Billing Address</div>\n <div class=th-checkout__address__display data-ng-if=billingAddress>\n <div vn-address-display data-address=billingAddress></div>\n </div>\n\n</div>"),a.put("review/review-details.html",'<div data-ng-controller=ReviewDetailsCtrl>\n <div class=th-checkout__thanks__title>Ship To</div>\n <div class=th-checkout__thanks__display>\n <div class=row>\n <div class=col-xs-12>\n <span>{{ shippingAddress.firstName }} {{ shippingAddress.lastName }}</span>\n <br>\n <span>{{ shippingAddress.address1 }}</span>\n <br>\n <span data-ng-if="shippingAddress.address2 != \'\'">{{ shippingAddress.address2 }}</span>\n <br data-ng-if="shippingAddress.address2 != \'\'">\n <span data-ng-show=isShippingLocationUS>{{ shippingAddress.city }}, {{ shippingAddress.state }} {{ shippingAddress.postalCode }}</span>\n <br>\n <span data-ng-show=isShippingLocationUS>{{ shippingAddress.phoneNumber | vnUsPhone }}</span>\n\n \n <span data-ng-show=!isShippingLocationUS>{{ shippingAddress.city }}</span>\n <br>\n <span data-ng-show=!isShippingLocationUS>{{ shippingAddress.state }} {{ shippingAddress.postalCode }}</span>\n <br>\n <span data-ng-show=!isShippingLocationUS>{{ shippingAddress.country }}</span>\n <br>\n <span data-ng-show=!isShippingLocationUS>{{ shippingAddress.phoneNumber }}</span>\n \n\n </div>\n </div>\n\n <br style="clear : both">\n </div>\n\n <div class=th-checkout__thanks__title>Shipping Method</div>\n <div class=th-checkout__thanks__display>\n <div class=row>\n <div class=col-xs-12>\n <div class=th-checkout__ship-method__display>\n <div class=th-checkout__ship-method__display__name data-ng-bind-html=shippingMethod.name></div>\n <div class=th-checkout__ship-method__display__price>{{ shippingMethod.price | vnCurrency }}</div>\n </div>\n </div>\n </div>\n\n <br style="clear : both">\n </div>\n\n <div class=th-checkout__thanks__title>Paid With</div>\n\n <div class=th-checkout__thanks__display>\n <div class=row>\n <div class=col-xs-12>\n <span class=credit-card__total>{{ payment.total.grandTotal | currency }} charged to</span>\n <br>\n <span class=credit-card__number>{{ payment.card.cardNumber | vnCreditCard:payment.cardType.name }}</span>\n <br>\n <span>{{ payment.card.expMonth }} / {{ payment.card.expYear }}</span>\n <br>\n <img src="" class=credit-card__image data-ng-class="payment.ccCssClass">\n </div>\n </div>\n\n <br style="clear : both">\n </div>\n\n <div class=th-checkout__thanks__title>Billing Address</div>\n <div class=th-checkout__thanks__display>\n <div class=row>\n <div class=col-xs-12>\n <span>{{ billingAddress.firstName }} {{ billingAddress.lastName }}</span>\n <br>\n <span>{{ billingAddress.address1 }}</span>\n <br>\n <span data-ng-if="billingAddress.address2 != \'\'">{{ billingAddress.address2 }}</span>\n <br data-ng-if="billingAddress.address2 != \'\'">\n <span data-ng-show=isBillingLocationUS>{{ billingAddress.city }}, {{ billingAddress.state }} {{ billingAddress.postalCode }}</span>\n <br>\n <span data-ng-show=isBillingLocationUS>{{ billingAddress.phoneNumber | vnUsPhone }}</span>\n\n \n <span data-ng-show=!isBillingLocationUS>{{ billingAddress.city }}</span>\n <br>\n <span data-ng-show=!isBillingLocationUS>{{ billingAddress.state }} {{ billingAddress.postalCode }}</span>\n <br>\n <span data-ng-show=!isBillingLocationUS>{{ billingAddress.country }}</span>\n <br>\n <span data-ng-show=!isBillingLocationUS>{{ billingAddress.phoneNumber }}</span>\n \n\n </div>\n </div>\n\n <br style="clear : both">\n </div>\n</div>'),a.put("review/review.html",'<div class=th-checkout__review data-ng-controller=ReviewCtrl>\n\n <div class="review__totals clearfix">\n <div class=review__totals__count>{{ checkout.cart.totals.qty }} items</div>\n <div class=review__totals__expand ng-class="{expanded: !reviewItems}"><button data-ng-click="reviewItems = !reviewItems"><span></span></button></div>\n <div class=review__totals__amount>{{ checkout.cart.totals.items | currency }}</div>\n </div>\n\n <div class=review__items data-ng-show=!reviewItems>\n <div class="review__items__item clearfix" data-ng-repeat="item in ::checkout.cart.items | reverse" data-ng-class="{\'-last\': $last}">\n\n <div class=review__items__item-image>\n <img data-ng-src="{{ item.imgUrl }}">\n </div>\n\n <div class=review__items__item-info>\n <div class=review__items__item-info--name>\n <span>{{ item.name }}</span>\n </div>\n\n <div class=review__items__item-info--price>{{ item.pricing.unitPrice | currency }}</div>\n\n <div class=review__items__item-info--option data-ng-repeat="option in item.options">\n <span>{{ option.optionText }}</span>\n </div>\n\n <div class=item-info-row>\n <div class=review__items__item-info--qty>\n <span>Qty</span> {{ item.qty }}\n </div>\n <div class=review__items_-info--subtotal>{{ item.pricing.subtotal | currency }}</div>\n </div>\n\n <div class=item-info-row data-ng-if="item.giftWrap.price > 0">\n <div class=review__items__item-info--qty>\n <span>Gift Wrap</span>\n </div>\n <div class=review__items__item-info--subtotal>{{ item.giftWrap.price | currency }}</div>\n </div>\n\n <div class=item-info-row data-ng-if="item.giftWrap.message != \'\'">\n <span>Message:</span> "{{ item.giftWrap.message }}"\n </div>\n </div>\n </div>\n </div>\n\n <div class=review__discounts data-ng-if=checkout.cart.discounts.length>\n <div class=review__discounts__discount data-ng-repeat="discount in checkout.cart.discounts">\n <div class=discount-info-row>\n <div class=review__discounts__discount-info>\n <span>{{ discount.name }}</span>\n </div>\n <div class=review__discounts__discount-info--subtotal>{{ discount.value | vnCurrency }}</div>\n </div>\n </div>\n </div>\n\n <div class=review__store-credit data-ng-if="checkout.cart.customer.storeCredit != 0">\n <div class=store-credit-info-row>\n <div class=review__store-credit-info>\n <span>Store Credit</span>\n </div>\n <div class=review__store-credit-info--subtotal>{{ checkout.cart.customer.storeCredit | vnCurrency }}</div>\n </div>\n </div>\n\n <div class=review__shipping-method>\n <div class=shipping-method-info-row>\n <div class=review__shipping-method-info">\n <span>Shipping</span>\n \n \n \n </div>\n <div class=review__shipping-method-info--subtotal>{{checkout.cart.totals.shipping | vnCurrency }}</div>\n </div>\n </div>\n\n <div class=review__tax>\n <div class=tax-info-row>\n <div class=review__tax-info">\n <span>Tax</span>\n </div>\n <div class=review__tax-info--subtotal>{{ checkout.cart.totals.taxTotal | currency }}</div>\n </div>\n </div>\n\n <div class=review__grand-total>\n <div class=grand-total-info-row>\n <div class=review__grand-total-info">\n <span>Grand Total</span>\n </div>\n <div class=review__grand-total-info--subtotal>{{ checkout.cart.totals.grandTotal | currency }}</div>\n </div>\n </div>\n</div>'),a.put("ship-method/ship-method.html",'<div class=th-checkout__ship-method__heading data-ng-show="checkout.cart.shippingMethods.length > 0">\n Shipping Method\n</div>\n\n<div class=th-checkout__ship-method data-ng-controller=ShipMethodCtrl data-ng-show="checkout.cart.shippingMethods.length > 0" data-ng-switch=isEditable()>\n\n\n <div class=th-checkout__ship-method__method data-ng-switch-when=edit data-ng-repeat="method in checkout.cart.shippingMethods">\n\n <div class=styled-optionbox-option>\n <input type=radio id="shipping{{ $index }}" name=shipping data-ng-value=true data-ng-model=method.selected data-ng-change="setPreferredShippingMethod({{ $index }})">\n <label for="shipping{{ $index }}">\n <div data-ng-bind-html=method.name></div>\n </label>\n </div>\n <div class=th-checkout__ship-method__price>{{ method.price | vnCurrency }}</div>\n\n </div>\n\n <div class=th-checkout__ship-method__display data-ng-switch-when=show>\n <div class=th-checkout__ship-method__display__name data-ng-bind-html=checkout.cart.shippingMethods[currentShippingMethodIdx].name></div>\n <div class=th-checkout__ship-method__display__price>{{ checkout.cart.shippingMethods[currentShippingMethodIdx].price | vnCurrency }}</div>\n\n </div>\n\n</div>'),a.put("ship-to/ship-to-views.html",'<div class=th-checkout__ship-to data-ng-controller="ShipToViewsCtrl as vm" data-ng-switch=vm.state data-ng-init=vm.init()>\n\n <div class=th-checkout__ship-to__overlay data-ng-if=vm.loading vn-busy-animation vn-busy-animation-show="{{ vm.loading }}" vn-busy-animation-size=80px vn-busy-animation-class=th-checkout__ship-to__overlay-spinner></div>\n\n <div class=th-checkout__address__display data-ng-switch-when=VIEWADDRESS>\n <vn-address-display data-address=vm.shippingAddress data-on-click=vm.editShippingAddress() data-show-edit-button=vm.shippingAddress></vn-address-display>\n </div>\n\n <div class=th-checkout__ship-to__enterAddress data-ng-switch-when=EDITADDRESS ng-cloak>\n <div data-vn-address-editor="" address=vm.shippingAddress countries=vm.countries data-on-save=vm.saveShippingAddress() data-show-save-button=!vm.showSaveButton data-save-text="Get Shipping Rates"></div>\n </div>\n\n\n <div vn-address-picker data-ng-switch-when=PICKADDRESS data-address-list=vm.user.shippingAddresses data-new-address-title="Add Shipping Address" data-select-address-title="Choose Shipping Address" data-back-to-text="back to Ship To" data-show-copy-address=vm.showCopyAddress data-countries=vm.countries data-on-address-selected=vm.onAddressSelected() data-save-address=vm.onAddressAdded(newAddress)></div>\n\n</div>'),a.put("thank-you/thank-you.html",'<div class=th-checkout__thanks ng-cloak="">\n <div class=th-checkout__thanks__header>\n <div class=title>Thank you for your order.</div>\n <div class=order-info>Your order number is No.{{ ::orderId }}</div>\n <div class=action-info>A copy of this has been sent to<br>{{ ::userEmail }}</div>\n\n <br style="clear : both">\n </div>\n\n <div class=row>\n <div class="th-checkout__thanks__column col-md-6 col-xs-12">\n <div class=th-checkout__thanks__title>Order Details</div>\n <div ng-include=" \'review/review.html\' "></div>\n </div>\n <div class="th-checkout__thanks__column -next col-md-6 col-xs-12">\n <div ng-include=" \'review/review-details.html\' "></div>\n </div>\n\n <br style="clear : both">\n </div>\n</div>')}]),angular.module("Volusion.toolboxCommon").controller("CreditCardViewsCtrl",["$rootScope","$filter","vnCheckout","vnPayment","vnUser","$q","vnPciaasIframe","vnSiteConfig","vnCreditCardClass",function(a,b,c,d,e,f,g,h,i){"use strict";function j(){return{cardNumber:"",expMonth:"",expYear:""}}function k(a){var b=new RegExp("[\\s-]","g"),c=a.replace(b,""),d=new RegExp("^(\\d+?)\\d{4}$"),e=c.match(d),f=c,g="*",h="";if(null!==e){for(var i=1;i<e.length;i++){h="";for(var j=0;j<e[i].length;j++)h+=g;f=f.replace(e[i],h)}for(var k=f.length-1;k>=0;k--)f.charAt(k)===g;return f}return null}function l(){if(p.user.paymentProfiles.length>0){for(var a=p.user.paymentProfiles[0].card,b=0,c=0,d=p.user.paymentProfiles.length;d>c;c++)p.user.paymentProfiles[c].preferred&&(b=c,a=p.user.paymentProfiles[c].card);return{index:b,card:a}}return{index:0,card:j()}}function m(a){angular.forEach(p.user.paymentProfiles,function(b){return p.user.paymentProfiles[a].id===b.id?void(b.preferred=!0):void(b.preferred=!1)})}function n(){p.preferredProfile=b("filter")(p.user.paymentProfiles,function(a){return a.preferred===!0?a:void 0})[0],d.setCardFrom(p.preferredProfile.card),c.setCCPaymentProfile(d.getCard()),c.setCreditCardValidity(!0)}function o(){var a={method:"Credit Card",preferred:!0,card:{cardType:p.card.cardType,cardTypeName:p.card.cardTypeName, -holdersName:p.user.firstName+" "+p.user.lastName,last4:p.card.cardNumber.slice(-4),expMonth:p.card.expMonth,expYear:p.card.expYear,issueMonth:"",issueYear:"",issueNumber:"",pCIaaSId:p.card.pCIaaSId,cardNumber:p.card.cardNumber}};c.setCCPaymentProfile(a),p.user.anonymous||e.setPaymentProfile(a).then(function(a){var b=i(a.data.card.cardType);a.data.card.ccCssClass=b["class"],a.data.card.last4=a.data.card.cardNumber.slice(-4),a.data.card.cardTypeName=b.name,p.user.paymentProfiles.push(a.data)})}var p=this,q=null;h.getConfig().then(function(a){q=a.data.PCIaaS.merchantId});var r=2;p.state=null,p.pickCardState="PICK",p.displayCardState="CVV",p.oldSelectedIndex=null,p.selectedIndex=null,p.init=function(){if(p.card=j(),p.user.anonymous)p.isUserCanEnterPaymentProfile=!0,p.state="ENTERCARD";else if(p.user.paymentProfiles.length>0){n(),p.state="VALIDCARDENTERED";var a=l();p.oldSelectedIndex=p.selectedIndex=a.index,p.card=a.card}else p.isUserCanEnterPaymentProfile=!0,p.state="ENTERCARD"},p.isUserCanEnterPaymentProfile=!1,p.user=e.getUser(),p.checkout=c.get(),p.payment=d.getCard(),p.openCreditCards=!1,p.user.isUserCanEnterPaymentProfile=!0,p.preferredProfile={},p.setPaymentProfile=function(){m(p.selectedIndex),n()},p.setCardValidFalse=function(){c.setCreditCardValidity(!1)},p.processCard=function(){return f(function(a,b){var c={CVV:"inputCreditCardCVV",HiddenCardID:"hiddenCardID",CardNumber:function(){return p.card.cardNumber},CardType:function(){return{Visa:"Visa",MasterCard:"MasterCard","American Express":"Amex",Discover:"Discover"}[p.card.cardTypeName]}};g.PCIaaS({settings:{merchantID:"3de067d8d96d407697da4a9559f99681",apiBase:"https://payments-qa.dev.volusion.com/paymentsv1_4"},fields:c,events:{success:a,error:b}}).process(!0)})},p.saveCreditCard=function(){p.processCard().then(function(b){p.card.pCIaaSError="",angular.isString(b)&&(b=JSON.parse(b)),p.card.cardNumber=-1===p.card.cardNumber.indexOf("*")?k(p.card.cardNumber):p.card.cardNumber,p.card.pCIaaSId=b.CardId?b.CardId:p.card.pCIaaSId,p.card.changed=!1,o(),p.displayCardState="NOCVV",p.state="VALIDCARDENTERED",c.setCreditCardValidity(!0),a.$emit("vnPayment.validate.continue")},function(){p.card.pCIaaSError="There was a problem with saving your credit card"})},p.toggleChange=function(){c.setCreditCardValidity(!1),p.user.paymentProfiles&&p.user.paymentProfiles.length>0?(p.openCreditCards=!0,c.setHasOpenDrawer(r,!0),p.state="PICKCARD",p.pickCardState="PICK"):p.state="ENTERCARD"},p.closePicker=function(){p.user.paymentProfiles.length>0?(m(p.oldSelectedIndex),p.card=l().card,p.state="VALIDCARDENTERED",p.displayCardState="CVV",c.setCreditCardValidity(!0)):p.state="ENTERCARD"},p.choosePicker=function(){p.oldSelectedIndex=p.selectedIndex,p.setPaymentProfile(),p.card=l().card,c.setCreditCardValidity(!0),p.state="VALIDCARDENTERED",p.displayCardState="CVV"}}]),angular.module("Volusion.toolboxCommon").directive("vnCreditCardDisplay",["$rootScope","vnCreditCardClass",function(a,b){return{replace:!0,restrict:"EA",scope:{card:"=",state:"=?",onSave:"&",onDirty:"&",onClick:"&",showArrow:"@"},templateUrl:"pay-with/vn-credit-card-display.html",link:function(c){function d(){for(var a in c.frmCVV)c.frmCVV.hasOwnProperty(a)&&a.indexOf("$")<0&&(c.frmCVV[a].$setDirty(),c.frmCVV[a].$setTouched())}if(c.state=c.state||"NOCVV",c.showArrowVal="false"===c.showArrow?!1:!0,c.card.expMonth=c.card.expMonth||c.card.ExpireMonth,c.card.expYear=c.card.expYear||c.card.ExpireYear,c.card.cardTypeName=c.card.cardTypeName||c.card.CardTypeName,!c.card.ccCssClass&&c.card.cardTypeName){var e=b(c.card.cardTypeName);c.card.ccCssClass=e["class"],c.card.cardType=e.type}c.validateCVV=function(){c.frmCVV.$valid?(c.frmCVV.$setPristine(),c.onSave()):(d(),c.onDirty())},c.$watch("frmCVV.$dirty",function(a){a&&angular.isFunction(c.onDirty)&&c.onDirty()});var f=a.$on("vnPayment.validate",function(){c.validateCVV(),a.$emit("vnPayment.validate.continue")});c.$on("$destroy",function(){f()})}}}]),angular.module("Volusion.toolboxCommon").directive("vnCreditCardEditor",["$rootScope","vnCreditCardClass","lodash",function(a,b,c){return{restrict:"EA",scope:{card:"=",title:"@",onSave:"&",onDirty:"&",showSaveButton:"@",saveText:"@"},templateUrl:"pay-with/vn-credit-card-editor.html",link:function(d){function e(){d.card&&d.card.cardTypeName&&"American Express"===d.card.cardTypeName&&(d.cvvLength=4)}function f(){if(void 0!==d.card.cardNumber&&-1!==d.card.cardNumber.indexOf("*")){var a=b(d.card.cardTypeName);return d.card.ccCssClass=a["class"],void(d.card.cardType=a.type)}if(void 0===d.card.cardNumber||""===d.card.cardNumber)return void(d.card.ccCssClass="credit-card__image--notvalid");d.card.cardTypeName="",/^(34)|^(37)/.test(d.card.cardNumber)&&(d.card.cardTypeName="American Express"),/^4/.test(d.card.cardNumber)&&(d.card.cardTypeName="Visa"),/^5[1-5]/.test(d.card.cardNumber)&&(d.card.cardTypeName="MasterCard"),/^(6011)|^(622(1(2[6-9]|[3-9][0-9])|[2-8][0-9]{2}|9([01][0-9]|2[0-5])))|^(64[4-9])|^65/.test(d.card.cardNumber)&&(d.card.cardTypeName="Discover");var c=b(d.card.cardTypeName);d.card.ccCssClass=c["class"],d.card.cardType=c.type,d.creditCardSupported=-1!==d.card.CardType&&""!==d.card.CardType?"valid":void 0}function g(){for(var a in d.frmCreditCard)d.frmCreditCard.hasOwnProperty(a)&&a.indexOf("$")<0&&(d.frmCreditCard[a].$setDirty(),d.frmCreditCard[a].$setTouched())}function h(){if(d.card.expMonth&&d.card.expYear){var a=new Date;d.expDateInvalid="valid",parseInt("20"+d.card.expYear)===a.getFullYear()&&parseInt(d.card.expMonth)<a.getMonth()+1&&(d.expDateInvalid=void 0,d.frmCreditCard.inputCreditCardExpMonth.$setValidity("expmonth",!1),d.frmCreditCard.inputCreditCardExpYear.$setValidity("expyear",!1))}}d.cvvLength=3,e(),d.expDateInvalid="valid",d.creditCardSupported="valid",d.saveText=d.saveText||"Add Credit Card",d.months=[{num:"01",label:"01 - January"},{num:"02",label:"02 - February"},{num:"03",label:"03 - March"},{num:"04",label:"04 - April"},{num:"05",label:"05 - May"},{num:"06",label:"06 - June"},{num:"07",label:"07 - July"},{num:"08",label:"08 - August"},{num:"09",label:"09 - September"},{num:"10",label:"10 - October"},{num:"11",label:"11 - November"},{num:"12",label:"12 - December"}],d.rangeYears=function(){var a,b=[],c=(new Date).getFullYear();for(a=c;c+15>=a;a++)b.push(a);return b},d.onExpMonthChanged=function(a,b){d.card.expMonth=a.num;var c=angular.element("#"+b);c.focus(),c.triggerHandler("change"),h()},d.onExpYearChanged=function(a,b){d.card.expYear=a.toString().substring(2);var c=angular.element("#"+b);c.focus(),c.triggerHandler("change"),h()},d.setCCImage=function(a){void 0===a?d.card.ccCssClass="AMEX"===d.card.cardTypeName?"credit-card__image--amex-flipped":"credit-card__image--flipped":f()},d.displayLast4=function(){return d.card.cardNumber.slice(-4)},d.displayExpDate=function(){var a="";return a=""===d.card.expMonth?"":d.card.expMonth,a+=""===d.card.expYear?"":"/"+d.card.expYear},d.saveCard=function(){var a;return d.cvvLength=3,e(),d.expDateInvalid=void 0,-1===d.card.cardNumber.indexOf("*")&&(a=d.card.cardNumber.replace(/[^\d]+/g,""),d.frmCreditCard.inputCreditCardNumber.$setValidity("creditcard",!d.frmCreditCard.inputCreditCardNumber.$invalid&&void 0!==d.creditCardSupported)),d.card.CVV&&-1===d.card.CVV.indexOf("*")&&(a=d.card.CVV.replace(/[^\d]+/g,""),d.frmCreditCard.inputCreditCardCVV.$setValidity("cvv",a.toString().length===d.cvvLength)),d.card.expMonth?d.frmCreditCard.inputCreditCardExpMonth.$setValidity("expmonth",!0):d.frmCreditCard.inputCreditCardExpMonth.$setValidity("expmonth",!1),d.card.expYear?d.frmCreditCard.inputCreditCardExpYear.$setValidity("expyear",!0):d.frmCreditCard.inputCreditCardExpYear.$setValidity("expyear",!1),h(),d.frmCreditCard.$valid?(d.frmCreditCard.preferred=!0,d.frmCreditCard.$setPristine(),d.onSave(),!0):(g(),!1)},d.frmCreditCard.$setPristine();var i=d.$watch("frmCreditCard.$dirty",function(a){a&&(c.isFunction(d.onDirty)&&d.onDirty(),i())});d.$watch("card.cardNumber",function(){f()});var j=a.$on("vnPayment.validate",function(){d.saveCard()&&a.$emit("vnPayment.validate.continue")});d.$on("$destroy",function(){j()})}}}]),angular.module("Volusion.toolboxCommon").directive("vnCreditCardPicker",["vnCreditCardClass",function(a){return{replace:!0,restrict:"EA",scope:{cardList:"=",state:"=",openCreditCards:"@",onSelect:"&",enterCard:"&",closePicker:"&",choosePicker:"&",setPaymentProfile:"&",selectedIndex:"=",card:"=",onSaveCard:"&",onDirtyCard:"&"},templateUrl:"pay-with/vn-credit-card-picker.html",link:function(b){b.addCard=function(){b.card={cardNumber:"",expMonth:"",expYear:""},b.state="ENTER"},b.goBackFromEnter=function(){b.state="PICK"},b.setIndex=function(a){b.selectedIndex=a},b.getCssClass=function(b){return a(b.card.cardTypeName.toUpperCase())["class"]}}}}]),angular.module("Volusion.toolboxCommon").directive("vnPlaceholder",["$timeout","$interpolate",function(a,b){"use strict";return{restrict:"A",require:"ngModel",compile:function(c,d){return c.parent().append('<label class="vn-placeholder" ng-click="setFocusFor(\''+d.id+"')\" dropdown-toggle></label>"),function(c,e){function f(a,b){return a.$$phase||a.$root.$$phase?b():a.$apply(b)}function g(a){f(c,function(){void 0===a&&""===h.val()?(i.removeClass("-selected -focus"),i.html()!==b(d.vnPlaceholder)(c)&&i.html(b(d.vnPlaceholder)(c))):(i.hasClass("-selected")||i.addClass("-selected"),void 0===a||"focus"!==a.type||i.hasClass("-focus")||i.addClass("-focus"),d.vnPlaceholderShort&&d.vnPlaceholderShort.length>0&&i.html(b(d.vnPlaceholderShort)(c)))})}var h=e,i=h.closest("div").find("label.vn-placeholder");c.setFocusFor=function(a){angular.element(document.querySelector("#"+a)).focus()},f(c,function(){a(function(){i.html(b(d.vnPlaceholder)(c))},0)}),c.$watch(d.ngModel,function(){g()}),h.on("focus keyup change",function(a){g(a)}).on("blur",function(){i.removeClass("-focus"),""===h.val()&&(i.removeClass("-selected"),i.html()!==b(d.vnPlaceholder)(c)&&i.html(b(d.vnPlaceholder)(c)))})}}}}]),angular.module("Volusion.toolboxCommon").directive("vnPopoverFirstName",["$compile",function(a){"use strict";return{restrict:"E",scope:!0,templateUrl:"popover/vn-popover.tpl.html",replace:!0,link:function(b,c){b.location="bottom",b.title="First name must:";var d=[{ngclass:"firstNameMinValidLength",ngif:"",msg:"Be at least <strong>1 letter long</strong>"},{ngclass:"firstNameAllowedChars",ngif:"firstNameDisallowedChars != null",msg:'Not contain <strong>{{ firstNameDisallowedChars.join("") }}</strong>'}],e=angular.element("<ul>");angular.forEach(d,function(a){var b=angular.element("<li>");a.ngif&&""!==a.ngif&&b.attr("ng-if",a.ngif),b.attr("ng-class",a.ngclass),b.html(a.msg),e.append(b)}),a(e)(b),c.append(e)}}}]).directive("vnPopoverLastName",["$compile",function(a){"use strict";return{restrict:"E",scope:!0,templateUrl:"popover/vn-popover.tpl.html",replace:!0,link:function(b,c){b.location="bottom-right",b.title="Last name must:";var d=[{ngclass:"lastNameMinValidLength",ngif:"",msg:"Be at least <strong>1 letter long</strong>"},{ngclass:"lastNameAllowedChars",ngif:"lastNameDisallowedChars != null",msg:'Not contain <strong>{{ lastNameDisallowedChars.join("") }}</strong>'}],e=angular.element("<ul>");angular.forEach(d,function(a){var b=angular.element("<li>");a.ngif&&""!==a.ngif&&b.attr("ng-if",a.ngif),b.attr("ng-class",a.ngclass),b.html(a.msg),e.append(b)}),a(e)(b),c.append(e)}}}]).directive("vnPopoverAddress",["$compile",function(a){"use strict";return{restrict:"E",scope:!0,templateUrl:"popover/vn-popover.tpl.html",replace:!0,link:function(b,c){b.location="bottom",b.title="Address must:";var d=[{ngclass:"streetEmpty",ngif:"",msg:"Not be <strong>empty</strong>"},{ngclass:"streetAllowedChars",ngif:"streetDisallowedChars != null",msg:'Not contain <strong>{{ streetDisallowedChars.join("") }}</strong>'}],e=angular.element("<ul>");angular.forEach(d,function(a){var b=angular.element("<li>");a.ngif&&""!==a.ngif&&b.attr("ng-if",a.ngif),b.attr("ng-class",a.ngclass),b.html(a.msg),e.append(b)}),a(e)(b),c.append(e)}}}]).directive("vnPopoverCity",["$compile",function(a){"use strict";return{restrict:"E",scope:!0,templateUrl:"popover/vn-popover.tpl.html",replace:!0,link:function(b,c){b.location="top-left",b.title="City must:";var d=[{ngclass:"cityEmpty",ngif:"",msg:"Not be <strong>empty</strong>"},{ngclass:"cityAllowedChars",ngif:"cityDisallowedChars != null",msg:'Not contain <strong>{{ cityDisallowedChars.join("") }}</strong>'}],e=angular.element("<ul>");angular.forEach(d,function(a){var b=angular.element("<li>");a.ngif&&""!==a.ngif&&b.attr("ng-if",a.ngif),b.attr("ng-class",a.ngclass),b.html(a.msg),e.append(b)}),a(e)(b),c.append(e)}}}]).directive("vnPopoverRegion",["$compile",function(a){"use strict";return{restrict:"E",scope:!0,templateUrl:"popover/vn-popover.tpl.html",replace:!0,link:function(b,c){b.location="top-left",b.title="Region must:";var d=[{ngclass:"regionRequired",ngif:"",msg:"Not be <strong>empty</strong>"},{ngclass:"regionAllowedChars",ngif:"regionDisallowedChars != null",msg:'Not contain <strong>{{ regionDisallowedChars.join("") }}</strong>'}],e=angular.element("<ul>");angular.forEach(d,function(a){var b=angular.element("<li>");a.ngif&&""!==a.ngif&&b.attr("ng-if",a.ngif),b.attr("ng-class",a.ngclass),b.html(a.msg),e.append(b)}),a(e)(b),c.append(e)}}}]).directive("vnPopoverState",["$compile",function(a){"use strict";return{restrict:"E",scope:!0,templateUrl:"popover/vn-popover.tpl.html",replace:!0,link:function(b,c){b.location="top-left -dropdown",b.title="State must:";var d=[{ngclass:"stateEmpty",ngif:"",msg:"Be <strong>selected</strong>"}],e=angular.element("<ul>");angular.forEach(d,function(a){var b=angular.element("<li>");a.ngif&&""!==a.ngif&&b.attr("ng-if",a.ngif),b.attr("ng-class",a.ngclass),b.html(a.msg),e.append(b)}),a(e)(b),c.append(e)}}}]).directive("vnPopoverZip",["$compile",function(a){"use strict";return{restrict:"E",scope:!0,templateUrl:"popover/vn-popover.tpl.html",replace:!0,link:function(b,c){b.location="top",b.title="Zip code must:";var d=[{ngclass:"zipHasValidFormat",ngif:"",msg:"Be formatted as 99999[-9999]"}],e=angular.element("<ul>");angular.forEach(d,function(a){var b=angular.element("<li>");a.ngif&&""!==a.ngif&&b.attr("ng-if",a.ngif),b.attr("ng-class",a.ngclass),b.html(a.msg),e.append(b)}),a(e)(b),c.append(e)}}}]).directive("vnPopoverPostalCode",["$compile",function(a){"use strict";return{restrict:"E",scope:!0,templateUrl:"popover/vn-popover.tpl.html",replace:!0,link:function(b,c){b.location="top",b.title="Postal code must:";var d=[{ngclass:"postalCodeEmpty",ngif:"",msg:"Not be empty"},{ngclass:"postalCodeAllowedChars",ngif:"postalCodeDisallowedChars != null",msg:'Not contain <strong>{{ postalCodeDisallowedChars.join("") }}</strong>'}],e=angular.element("<ul>");angular.forEach(d,function(a){var b=angular.element("<li>");a.ngif&&""!==a.ngif&&b.attr("ng-if",a.ngif),b.attr("ng-class",a.ngclass),b.html(a.msg),e.append(b)}),a(e)(b),c.append(e)}}}]).directive("vnPopoverUsPhone",["$compile",function(a){"use strict";return{restrict:"E",scope:!0,templateUrl:"popover/vn-popover.tpl.html",replace:!0,link:function(b,c){b.location="top",b.title="Phone number must:";var d=[{ngclass:"usPhoneHasValidFormat",ngif:"",msg:"Be formatted as (999) 999-9999 ext.9999"}],e=angular.element("<ul>");angular.forEach(d,function(a){var b=angular.element("<li>");a.ngif&&""!==a.ngif&&b.attr("ng-if",a.ngif),b.attr("ng-class",a.ngclass),b.html(a.msg),e.append(b)}),a(e)(b),c.append(e)}}}]).directive("vnPopoverRequired",["$compile",function(a){"use strict";return{restrict:"E",scope:!0,templateUrl:"popover/vn-popover.tpl.html",replace:!0,link:function(b,c,d){b.location=d.location||"bottom",b.title=(d.field||"Field")+" must:";var e=[{ngclass:"requiredFieldFilled",ngif:"",msg:"Not be <strong>empty</strong>"}],f=angular.element("<ul>");angular.forEach(e,function(a){var b=angular.element("<li>");a.ngif&&""!==a.ngif&&b.attr("ng-if",a.ngif),b.attr("ng-class",a.ngclass),b.html(a.msg),f.append(b)}),a(f)(b),c.append(f)}}}]),angular.module("Volusion.toolboxCommon").directive("vnProductImage",["$filter",function(a){"use strict";return{templateUrl:"product-image/vn-product-image.tpl.html",restrict:"AE",scope:{product:"=",defaultImage:"="},replace:!0,link:function(b){b.getImagePath=function(c){var d=a("vnProductImageFilter")(c);return""===d?b.defaultImage:d}}}}]),angular.module("Volusion.toolboxCommon").directive("vnSearchForm",["vnSearchManager",function(a){return{templateUrl:"product-search/vnSearchForm.tpl.html",restrict:"AE",replace:!0,scope:{searchTerm:"=",showSearch:"="},link:function(b,c,d){c.bind("click",function(){c.find("input").focus()}),b.searchTerm=b.searchTerm||a.getSearchText(),b.allowCollapse=d.allowCollapse&&!!JSON.parse(d.allowCollapse),b.doSearch=function(){a.updateSearch(b.searchTerm),b.showSearch=!1,b.showSearch&&(b.showSearch=!1)},b.$watch(function(){return a.getSearchText()},function(a){b.searchTerm=a||""},!0)}}}]),angular.module("Volusion.toolboxCommon").factory("vnSearchManager",["$route","$location","vnProductParams",function(a,b,c){function d(){return c.getSearchText()}function e(d){c.updateSearch(d),b.search("q",d),"/search"!==b.path()&&b.path("/search"),a.reload()}return{getSearchText:d,updateSearch:e}}]),angular.module("Volusion.toolboxCommon").controller("ReviewCtrl",["$scope","vnCheckout",function(a,b){"use strict";a.checkout=b.get()}]),angular.module("Volusion.toolboxCommon").controller("ReviewDetailsCtrl",["$rootScope","$scope","$filter","vnCheckout","vnCreditCardClass","lodash",function(a,b,c,d,e,f){"use strict";var g=d.get();b.orderId=g.orderId,b.userEmail=g.user.email,b.isShippingLocationUS="United States"===g.cart.shippingAddress.country,b.shippingAddress=g.cart.shippingAddress,b.shippingMethod=f.find(g.cart.shippingMethods,function(a){return a.selected===!0}),b.isBillingLocationUS="United States"===g.cart.billingAddress.country,b.billingAddress=g.cart.billingAddress,b.payment=g.cart.paymentProfile,b.payment.total=g.cart.totals,b.payment.ccCssClass=e(b.payment.CardTypeName)["class"],b.$watch("checkout.cart.shippingMethods",function(){b.shippingMethod=f.find(g.cart.shippingMethods,function(a){return a.selected===!0})})}]),angular.module("Volusion.toolboxCommon").directive("vnScrollToAnchor",["$location","$anchorScroll",function(a,b){return{restrict:"AC",compile:function(){return function(c,d,e){d.bind("click",function(c){c.preventDefault(),a.hash(e.vnScrollToAnchor),b()})}}}}]),angular.module("Volusion.toolboxCommon").factory("vnAppRoute",["$q","$rootScope","$route","$location","$routeParams","vnProductParams","vnSortDefault","vnCart","vnUser","$state",function(a,b,c,d,e,f,g,h,i,j){function k(a){a&&(l(),m(),o(),n(),p(),r(),q())}function l(){"search"===t()&&""!==f.getCategoryString()?d.search("categoryId",f.getCategoryString()):d.search("categoryId",null)}function m(){""!==f.getFacetString()?d.search("facetIds",f.getFacetString()):d.search("facetIds",null)}function n(){""!==f.getMaxPrice()?d.search("maxPrice",f.getMaxPrice()):d.search("maxPrice",null)}function o(){""!==f.getMinPrice()?d.search("minPrice",f.getMinPrice()):d.search("minPrice",null)}function p(){""!==f.getPage()&&"1"!==f.getPage()?d.search("page",f.getPage()):d.search("page",null)}function q(){"/search"===d.path()&&("/search"===d.path()&&""===f.getSearchText()?d.search("q",""):d.search("q",f.getSearchText()))}function r(){""!==f.getSort()&&g!==f.getSort()?d.search("sort",f.getSort()):d.search("sort",null)}function s(a){w=a}function t(){return w}function u(b){var c=a.defer();return f.preLoadData(b),c.resolve(!0),c.promise}function v(c){var d=a.defer(),e=function(){0===h.getCart().items.length?(d.reject(),j.go("home")):"/login"===c?d.resolve():"/checkout"===c&&""===i.getUser().email?(d.reject(),j.go("login")):d.resolve()};if(0===Object.keys(h.getCart()).length)var f=b.$on("cartUpdated",function(){e(),f()});else e();return d.promise}var w="";return b.$watch(function(){return f.getParamsObject()},function(){k(f.getParamsObject())},!0),{getRouteStrategy:t,setRouteStrategy:s,resolveParams:u,checkEmptyCart:v}}]),angular.module("Volusion.toolboxCommon").factory("vnBem",function(){function a(a,c){var d=[a];return angular.forEach(b(c),function(b){d.push(a+"--"+b)}),d}function b(a){return a=a&&a.replace(/^\s+|\s+$/g,""),a?a.split(/\s+/):[]}return{addClasses:function(b,c){c=c||{};var d=c.block;if(d){var e=a(d,c.blockModifiers),f=c.element;if(!f)return void angular.forEach(e,function(a){b.addClass(a)});var g=a("__"+f,c.elementModifiers);angular.forEach(e,function(a){angular.forEach(g,function(c){b.addClass(a+c)})})}}}}),angular.module("Volusion.toolboxCommon").service("vnCart",["$rootScope","vnApi",function(a,b){"use strict";function c(){return n}function d(){return void 0===n||void 0===n.totals?0:n.totals.qty}function e(){return b.Cart({cartId:""}).get().$promise}function f(){b.Cart({cartId:""}).get().$promise.then(function(b){n=b.data,a.$emit("cartUpdated")})}function g(a){n=a}function h(){n={}}function i(c){return b.Cart().save({cartId:n.id},c).$promise.then(function(b){angular.copy(b.data,n),n.serviceErrors=[],n.warnings=b.warnings||b.data.warnings||[],a.$emit("cartUpdated")})["catch"](function(b){angular.copy(b.data.data,n),n.serviceErrors=b.serviceErrors||b.data.serviceErrors||[],n.warnings=b.warnings||b.data.warnings||[],a.$emit("cartUpdated")})}function j(b){angular.copy(b,n.shippingAddress),a.$emit("vnShippingAddress.updated",b)}function k(b){angular.copy(b,n.billingAddress),a.$emit("vnBillingAddress.updated",b)}function l(a){angular.copy(a,n.paymentProfile)}function m(){return b.Cart().update({cartId:n.id},n).$promise.then(function(b){angular.copy(b.data,n),n.serviceErrors=[],n.warnings=b.warnings||b.data.warnings||[],a.$emit("cartUpdated")})["catch"](function(b){angular.copy(b.data.data,n),n.serviceErrors=b.serviceErrors||b.data.serviceErrors||[],n.warnings=b.warnings||b.data.warnings||[],a.$emit("cartUpdated")})}var n={};return{getCart:c,getCartItemsCount:d,init:f,initWithPromise:e,reset:h,set:g,saveCart:i,setCCPaymentProfile:l,setBillingAddress:k,setShippingAddress:j,updateCart:m}}]),angular.module("Volusion.toolboxCommon").factory("vnCheckout",["$rootScope","$location","$q","vnSiteConfig","vnCart","vnUser","vnApi","vnNotifications",function(a,b,c,d,e,f,g,h){"use strict";function i(){return g.Country().query().$promise}function j(){C.location.label="ww"===C.location.label?"us":"ww",C.location.image="us"===C.location.label?A:B}function k(a){C.billToValid=a}function l(a){C.shipToValid=a}function m(a){C.shipMethodValid=a}function n(a){C.creditCardValid=a}function o(b){angular.forEach(C.steps,function(a){a.active=!1}),void 0!==b&&(C.currentStep=b),C.steps[C.currentStep-1].active=!0,a.$emit("checkout.stepChanged")}function p(a,b){C.steps[a].hasOpenDrawer=b}function q(){return C}function r(){C.steps.length>C.currentStep&&(C.currentStep++,o())}function s(){C.user=f.getUser(),C.cart.customer.id=C.user.id}function t(){C.cart.misc.isGift=!1,C.user.anonymous&&(C.cart.customer.id=C.user.id),g.Orders().save({},C.cart).$promise.then(function(a){C.orderId=a.data.id,b.path("/thank-you")})["catch"](function(a){console.log(a),h.displayErrors(a)})}function u(){1<C.currentStep&&(C.currentStep--,o())}function v(a){e.setCCPaymentProfile(a)}function w(a){e.setBillingAddress(a)}function x(a){e.setShippingAddress(a)}function y(){e.updateCart()}function z(){var a=c.defer();return e.initWithPromise().then(function(a){e.set(a.data),C.cart=e.getCart()}).then(function(){a.resolve(C)})["catch"](function(b){a.reject(b)}),a}var A="images/us-flag.png",B="images/worldwide-flag.png",C={config:{PCIaaS:{}},location:{label:"us",image:A},cart:{},orderId:-1,currentStep:1,steps:[{active:!0,hasOpenDrawer:!1},{active:!1,hasOpenDrawer:!1},{active:!1,hasOpenDrawer:!1}],shipToValid:!1,shipMethodValid:!1,billToValid:!1,creditCardValid:!1};return d.getConfig().then(function(b){C.config=b.data.checkout,C.config.PCIaaS=b.data.PCIaaS,a.$emit("PCIaaS.updated")}),{get:q,getCountries:i,initCart:z,nextStep:r,placeOrder:t,prevStep:u,setStep:o,setCreditCardValidity:n,setBillingAddress:w,setBillToValidity:k,setCCPaymentProfile:v,setShippingAddress:x,setShipToValidity:l,setShipMethodValidity:m,setUser:s,setHasOpenDrawer:p,toggleLocation:j,updateCart:y}}]),angular.module("Volusion.toolboxCommon").factory("vnContentManager",function(){"use strict";function a(){return k}function b(){return l}function c(){return m}function d(){return n}function e(){k=!1}function f(){l=!1}function g(){k=!0,m=!1}function h(){l=!0,n=!1}function i(){k=!1,m=!0}function j(){l=!1,n=!0}var k=!0,l=!0,m=!1,n=!1;return{getFooterState:a,getHeaderState:b,getCheckoutFooterState:c,getCheckoutHeaderState:d,hideAppFooter:e,hideAppHeader:f,showAppFooter:g,showAppHeader:h,showCheckoutAppFooter:i,showCheckoutAppHeader:j}}),angular.module("Volusion.toolboxCommon").service("vnCreditCardClass",function(){return function(a){switch(angular.isString(a)?a.toUpperCase():a){case"AMEX":case"AMERICAN EXPRESS":case"7":case 7:return{type:7,"class":"credit-card__image--amex",name:"American Express"};case"VISA":case"5":case 5:return{type:5,"class":"credit-card__image--visa",name:"Visa"};case"MC":case"MASTERCARD":case"6":case 6:return{type:6,"class":"credit-card__image--mastercard",name:"MasterCard"};case"DISC":case"DISCOVER":case"8":case 8:return{type:8,"class":"credit-card__image--discover",name:"Discover"};default:return{type:0,"class":"credit-card__image--unknown",name:"Unknown"}}}}),angular.module("Volusion.toolboxCommon").factory("vnGeo",["$resource",function(a){"use strict";function b(){return a("https://freegeoip.net/json",{},{query:{method:"GET",isArray:!1}})}return{locate:b}}]),angular.module("Volusion.toolboxCommon").factory("vnHttpResponseInterceptor",["$q","$rootScope",function(a,b){return{response:function(b){return b||a.when(b)},responseError:function(c){return 401===c.status&&b.$emit("VN_UNAUTHORIZED_ERROR",{err:c},{status:c.status,message:c.data,resource:c.headers("resource")||""}),500===c.status&&b.$emit("VN_HTTP_500_ERROR",{err:c},{status:c.status,message:c.data,resource:c.headers("resource")||""}),a.reject(c)}}}]),angular.module("Volusion.toolboxCommon").factory("vnNotifications",["$filter","vnAppMessageService",function(a,b){"use strict";function c(a,c){b.addMessage({type:a,text:c})}function d(b){var d,e,f=a("translate");b&&b.length>0&&angular.forEach(b,function(a){e="message."+a.Code,d=f(e),d=d&&d!==e?d:a.Message,c("warning",d)})}function e(b){var d,e,f=a("translate");b&&b.length>0&&angular.forEach(b,function(a){e="message."+a.Code,d=f(e),d=d&&d!==e?d:a.Message,d=d||a,c("danger",d)})}return{displayWarnings:d,displayErrors:e}}]),angular.module("Volusion.toolboxCommon").factory("vnPayment",["$rootScope","$resource","$timeout","$q","$filter","vnCheckout","vnPCIaaS",function(a,b,c,d,e,f,g){"use strict";function h(){return A}function i(a){A.cardNumber=a.cardNumber,A.ExpireMonth=a.expMonth,A.ExpireYear=a.expYear,A.CardType=a.cardType,A.CardTypeName=a.cardTypeName,A.CardID=a.pCIaaSId}function j(a){A.CardID=a}function k(a){A.PersistCard=a}function l(a){A.CardHolderName=a}function m(a){A.cardNumber=a}function n(a){A.ExpireMonth=a}function o(a){A.ExpireYear=a}function p(a){A.CVV=a}function q(a){A.CardTypeName=a,A.CardType=e("filter")(x.config.creditCardsAccepted,function(b){return b.name.toLowerCase()===a.toLowerCase()?b.id:void 0})[0],A.CardType=void 0!==A.CardType?A.CardType.id:-1}function r(){angular.copy({cardNumber:"",mask:{},MerchantId:"",CardID:"",PersistCard:"",CardHolderName:"",ExpireMonth:"",ExpireYear:"",CVV:"",CardType:"",CardTypeName:""},A)}function s(a){return Object.getOwnPropertyNames(a).length>0?!1:!0}function t(){A.CVV=A.CVV.replace(/./g,y.maskCharacter),A.cardNumber=A.mask.display,A.mask.sent=""}function u(a){if(a&&!s(A.mask))return A.mask;var b=A.cardNumber,c=new RegExp(y.maskPattern),d=b.match(c),e=b,f=[],g=y.maskCharacter,h="";if(null!==d){for(var i=1;i<d.length;i++){h="";for(var j=0;j<d[i].length;j++)h+=g;e=e.replace(d[i],h)}for(var k=e.length-1;k>=0;k--)f.unshift(e.charAt(k)===g?b.charAt(k):g);return A.mask={display:e,sent:f.join("")},A.mask}return{display:b,sent:b}}function v(){var a={};switch(a.NumberPart=-1===A.cardNumber.indexOf(y.maskCharacter)?u(!1).sent:A.cardNumber,a.CVV=A.CVV,A.CardTypeName.toUpperCase()){case"AMERICAN EXPRESS":a.CardType="AMEX";break;case"VISA":a.CardType="VISA";break;case"MASTERCARD":a.CardType="MC";break;case"DISCOVER":a.CardType="DISC"}return JSON.stringify(a)}function w(){var a=d.defer(),b=v();return A.MerchantId=x.config.PCIaaS.merchantId,""!==A.CardID?g.Card(z.update.uri(A.CardID),A.MerchantId).update(b).$promise.then(function(){t(),a.resolve(A)})["catch"](function(b){console.log(b),a.reject(b)}):g.Card(z.save.uri(),A.MerchantId).save(b).$promise.then(function(b){console.log(b);for(var c=0,d="";b[c];)d+=b[c],c++;A.CardID=d,t(),a.resolve(A)})["catch"](function(b){console.log(b),a.reject(b)}),a.promise}var x=f.get(),y={maskPattern:"^(\\d+?)\\d{4}$",maskCharacter:"*"},z={base:{uri:function(){return x.config.PCIaaS.url+"/cards/"}},save:{uri:function(){return z.base.uri()},method:"POST"},update:{uri:function(a){return z.base.uri()+a.toString()},method:"PUT"}},A={cardNumber:"",mask:{},MerchantId:"",CardID:"",PersistCard:"",CardHolderName:"",ExpireMonth:"",ExpireYear:"",CVV:"",CardType:"",CardTypeName:""};return{getCard:h,process:w,reset:r,setCardFrom:i,setCardId:j,setPersistCard:k,setCardHolderName:l,setCardNumber:m,setCvv:p,setExpireMonth:n,setExpireYear:o,setCardType:q}}]),angular.module("Volusion.toolboxCommon").factory("vnPciaasIframe",function(){var PCIaaS=null;return window.JSON||(window.JSON={},function(){function k(a){return 10>a?"0"+a:a}function o(a){return p.lastIndex=0,p.test(a)?'"'+a.replace(p,function(a){var b=r[a];return"string"==typeof b?b:"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)})+'"':'"'+a+'"'}function l(a,b){var c,d,f,g,h,j=e,k=b[a];switch(k&&"object"==typeof k&&"function"==typeof k.toJSON&&(k=k.toJSON(a)),"function"==typeof i&&(k=i.call(b,a,k)),typeof k){case"string":return o(k);case"number":return isFinite(k)?String(k):"null";case"boolean":case"null":return String(k);case"object":if(!k)return"null";if(e+=n,h=[],"[object Array]"===Object.prototype.toString.apply(k)){for(g=k.length,c=0;g>c;c+=1)h[c]=l(c,k)||"null";return f=0===h.length?"[]":e?"[\n"+e+h.join(",\n"+e)+"\n"+j+"]":"["+h.join(",")+"]",e=j,f}if(i&&"object"==typeof i)for(g=i.length,c=0;g>c;c+=1)"string"==typeof i[c]&&(d=i[c],(f=l(d,k))&&h.push(o(d)+(e?": ":":")+f));else for(d in k)Object.prototype.hasOwnProperty.call(k,d)&&(f=l(d,k))&&h.push(o(d)+(e?": ":":")+f);return f=0===h.length?"{}":e?"{\n"+e+h.join(",\n"+e)+"\n"+j+"}":"{"+h.join(",")+"}",e=j,f}}"function"!=typeof Date.prototype.toJSON&&(Date.prototype.toJSON=function(){return isFinite(this.valueOf())?this.getUTCFullYear()+"-"+k(this.getUTCMonth()+1)+"-"+k(this.getUTCDate())+"T"+k(this.getUTCHours())+":"+k(this.getUTCMinutes())+":"+k(this.getUTCSeconds())+"Z":null},String.prototype.toJSON=Number.prototype.toJSON=Boolean.prototype.toJSON=function(){return this.valueOf()});var q=/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,p=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,e,n,r={"\b":"\\b"," ":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"},i;"function"!=typeof JSON.stringify&&(JSON.stringify=function(a,b,c){var d;if(n=e="","number"==typeof c)for(d=0;c>d;d+=1)n+=" ";else"string"==typeof c&&(n=c);if((i=b)&&"function"!=typeof b&&("object"!=typeof b||"number"!=typeof b.length))throw Error("JSON.stringify");return l("",{"":a})}),"function"!=typeof JSON.parse&&(JSON.parse=function(a,e){function c(a,b){var d,f,g=a[b];if(g&&"object"==typeof g)for(d in g)Object.prototype.hasOwnProperty.call(g,d)&&(f=c(g,d),void 0!==f?g[d]=f:delete g[d]);return e.call(a,b,g)}var d,a=String(a);if(q.lastIndex=0,q.test(a)&&(a=a.replace(q,function(a){return"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)})),/^[\],:{}\s]*$/.test(a.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]").replace(/(?:^|:|,)(?:\s*\[)+/g,"")))return d=eval("("+a+")"), -"function"==typeof e?c({"":d},""):d;throw new SyntaxError("JSON.parse")})}()),function(a){var b,c,d,e,f=function(){var a=navigator.userAgent,b=/Firefox\/(\d+)/i,c=a.match(b),d=parseInt(c?c[1]||!1:!1),e=isNaN(d)?!1:d;return e}(),g={base:{uri:function(){return s(q.get("apiBase"))+"/cards/"}},save:{uri:function(){return g.base.uri()},method:"POST"},update:{uri:function(a){return g.base.uri()+a.toString()},method:"PUT"}},h=1,i=window.postMessage&&-1===navigator.userAgent.indexOf("Opera"),j="/Assets/pci_receiver.html?&parenturl="+encodeURIComponent(location.href)+"&parentdomain="+encodeURIComponent(location.protocol+"//"+location.host),k=function(a){var b=/^https?:\/\/[^/]+/i;return q.get("apiBase").match(b)[0]===a.origin.match(b)[0]},l=i?function(b){b&&(e&&l(!1),e=function(c){return c||(c=window.event),"ready"===c.data?(a.requestCallback(),!1):k(c)?void b(c):!1}),f&&4>f?window.addEventListener("message",e,!1):window.onmessage=e}:function(b){c&&clearInterval(c),c=null,c=setInterval(function(){var c=document.location.hash,e=/^#?\d+&/;return c!==d&&"ready"===c.replace(e,"")?void a.requestCallback():void(c!==d&&e.test(c)&&(d=c,b({data:c.replace(e,"")})))},100)},m=i?function(a,b){b.postMessage(a,s(q.get("apiBase")))}:function(a,b){var c=(s(q.get("apiBase"))+j).replace(/#.*$/,"")+"#"+ +new Date+h++ +"&"+a;b.location=c},n=function(c,d,e,f){var g=function(){m(c+"|||||"+d+"|||||"+e+"|||||"+f,b.contentWindow||b)};a.requestCallback=g,l(function(a){G(a.data)},s(q.get("apiBase"))),b=document.createElement("iframe"),b.style.position="absolute",b.style.left="-9999px",b.style.width="1px",b.style.height="1px",b.src=s(q.get("apiBase"))+j,document.getElementsByTagName("body")[0].appendChild(b)},o={maskPattern:"^(\\d+?)\\d{4}$",maskCharacter:"*",apiBase:window.location.protocol+"//pci."+window.location.hostname.replace("www.","")},p={error:function(a){for(var b=0;b<a.length;b++)throw"PCIaaS Error "+a[b].majorCode+": "+a[b].minorCode+": "+a[b].message}},q={get:function(a){var b=a in q?q[a]:o[a];return b?b:void x.add("-1","2",u(t.settingMissing,a))},set:function(a,b){if("object"==typeof a)for(var c in a)q[c]=a[c];else q[a]=void 0!==b?b:o[a];return q}},r=/\/$/,s=function(a){return a?a.replace(r,""):void 0},t={cardNumberInvalid:"The card number is missing or in an unrecognized format.",unknownError:"There was a processing error. Please try again.",crossDomainError:"Cannot make request due to same-origin policy. {0} cannot be accessed via AJAX from {1}.",maskFailure:"The masking pattern provided does not match the card number.",missingFields:"Missing fields object. Pass a fields object to the PCIaaS function.",fieldMissing:'Field "{0}" missing or invalid.',settingMissing:'Setting "{0}" missing or invalid.'},u=function(){for(var a=Array.prototype.slice.call(arguments,1),b=arguments[0],c=0;c<a.length;c++)b=b.replace("{"+c+"}",a[c]);return b},v=new RegExp("[\\s-]","g"),w=function(){var a=[[function(){var a=z.getValue("CardNumber",!0),b=q.get("maskCharacter");if(!a)return!1;if(-1!=a.indexOf(b))return a.match(new RegExp("[^"+b+"\\d]"))||!a.match(/\d/)?!1:!0;a=a.replace(v,"");var c,d,e,f,g;for(f="",c=0;c<a.length;c++)e=parseInt(a.charAt(c),10),e>=0&&9>=e&&(f=e+f);if(f.length<=1)return!1;for(g="",c=0;c<f.length;c++)e=parseInt(f.charAt(c),10),c%2!=0&&(e*=2),g+=e;for(d=0,c=0;c<g.length;c++)e=parseInt(g.charAt(c),10),d+=e;return 0!=d&&d%10==0?!0:!1},"-1","3",t.cardNumberInvalid]];return function(){for(var b=a.length-1;b>=0;b--)a[b][0]()||x.add(a[b][1],a[b][2],a[b][3]);return 0===x.number()}}(),x={add:function(a,b,c){c in x._register||(x._stack.push({majorCode:a,minorCode:b,message:c}),x._register[c]=!0)},clear:function(){x._stack=[],x._register={}},get:function(){var a=x._stack.slice(0);return x.clear(),a},number:function(){return x._stack.length},_register:{},_stack:[]},y=function(a){return x.add("-1","2",u(t.fieldMissing,a))},z={get:function(a,b){return b?z[a]:a in z?z[a]:y(a)},getValue:function(a,b){var c="";if(z[a])if(z[a].tagName)switch(z[a].tagName.toLowerCase()){case"select":c=z[a].getElementsByTagName("option")[z[a].selectedIndex].value;break;case"textarea":c=z[a].innerHTML;break;case"input":switch(z[a].type){case"checkbox":case"radio":c=z[a].checked;break;default:c=z[a].value}}else c="function"==typeof z[a]?z[a]():"";return b?c:""===c?y(a):c},set:function(a,b){if("object"==typeof a)for(var c in a)z.set(c,a[c]);else z[a]=b.nodeType?b:document.getElementById(b)||("function"==typeof b?b:"");return z},setValue:function(a,b){var c=z.get(a,!0);return c.nodeType?c.value=b:"function"==typeof c?c(b):"string"==typeof c||"boolean"==typeof c?z[a]=b:void 0}},A=null,B=["PersistCard","CardHolderName","ExpireMonth","ExpireYear","CVV"],C=["CardType"],D=function(a){var b={MerchantId:q.get("merchantID")},c=z.getValue("HiddenCardID",!0),d=z.getValue("CardNumber",a);if(!d)return x.add("-1","4",t.cardNumberInvalid),!1;b.NumberPart=-1===d.indexOf(q.get("maskCharacter"))?J("nocache",a).toSend:"";for(var e=0;e<C.length;e++)b[C[e]]=z.getValue(C[e],a);for(var f=0;f<B.length;f++)B[f]in z&&""!=z.getValue(B[f],!0).toString()&&(b[B[f]]=z.getValue(B[f],!0));return c&&!a&&(b.CardId=c),JSON.stringify(b)},E=function(){return D(!0)!==A},F=function(a){var b=z.getValue("HiddenCardID",!0);if(x.clear(),a||E()){if(!w())return p.error(x.get()),!1;var c,d=D();if(!d)return p.error(x.get()),!1;if(p.preprocess&&(c=p.preprocess(d)),c===!1)return!1;if("string"==typeof c&&(d=c),0!==x.number())return p.error(x.get()),!1;A=D(!0);var e=b?g.update.uri(b):g.save.uri(),f=b?g.update.method:g.save.method;n(e,d,f,q.get("merchantID"))}else p.success&&p.success(JSON.stringify({IsSuccessful:!0,CardId:b}),z.getValue("CardNumber"),null)},G=function(a){if(document.getElementsByTagName("body")[0].removeChild(b),a=JSON.parse(a),a.IsSuccessful){a.CardId&&z.setValue("HiddenCardID",a.CardId);var c=J("cached",!0);p.success&&p.success(a,c)}else H(a)},H=function(a){if(a&&a.Items)for(var b=0;b<a.Items.length;b++)x.add(a.Items[b].MajorCode,a.Items[b].MinorCode,a.Items[b].Message);else x.add("-1","-1",t.unknownError);p.error(x.get())},I="",J=function(a,b){if("cached"==a&&""!==I)return I;var c=z.getValue("CardNumber",b).replace(v,""),d=new RegExp(q.get("maskPattern")),e=c.match(d),f=c,g=[],h=q.get("maskCharacter"),i="";if(null!==e){for(var j=1;j<e.length;j++){i="";for(var k=0;k<e[j].length;k++)i+=h;f=f.replace(e[j],i)}for(var l=f.length-1;l>=0;l--)g.unshift(f.charAt(l)===h?c.charAt(l):h);return I={toDisplay:f,toSend:g.join("")}}return{toDisplay:c,toSend:c}},K=function(a){var b=a||J("cached");b&&(z.setValue("CardNumber",b.toDisplay),z.getValue("CVV")&&z.setValue("CVV",z.getValue("CVV").replace(/./g,q.get("maskCharacter"))))},L=function(a){if(a.settings&&q.set(a.settings),a.events)for(var b in a.events)p[b]=a.events[b];return a.fields?z.set(a.fields):(x.add("-1","2",t.missingFields),p.error(x.get())),{settings:q,fields:z,events:p,process:F,applyMask:K}};"function"==typeof define&&define.amd&&define(function(){return L}),PCIaaS=L}(window),{PCIaaS:PCIaaS}}),angular.module("Volusion.toolboxCommon").factory("vnPCIaaS",["$resource",function(a){"use strict";function b(b,c){var d={resource:"PCIaaS","Content-Type":"application/json",Accept:"application/json",MerchantId:c};return a(b,{},{save:{method:"POST",withCredentials:!0,headers:d},update:{method:"PUT",withCredentials:!0,headers:d}})}return{Card:b}}]),angular.module("Volusion.toolboxCommon").factory("vnImagePreloader",["$q","$rootScope",function(a,b){"use strict";function c(b){this.imageLocations=b,this.imageCount=this.imageLocations.length,this.loadCount=0,this.errorCount=0,this.states={PENDING:1,LOADING:2,RESOLVED:3,REJECTED:4},this.state=this.states.PENDING,this.deferred=a.defer(),this.promise=this.deferred.promise}return c.preloadImages=function(a){var b=new c(a);return b.load()},c.prototype={constructor:c,isInitiated:function(){return this.state!==this.states.PENDING},isRejected:function(){return this.state===this.states.REJECTED},isResolved:function(){return this.state===this.states.RESOLVED},load:function(){if(this.isInitiated())return this.promise;this.state=this.states.LOADING;for(var a=0;a<this.imageCount;a++)this.loadImageLocation(this.imageLocations[a]);return this.promise},handleImageError:function(a){this.errorCount++,this.isRejected()||(this.state=this.states.REJECTED,this.deferred.reject(a))},handleImageLoad:function(a){this.loadCount++,this.isRejected()||(this.deferred.notify({percent:Math.ceil(this.loadCount/this.imageCount*100),imageLocation:a}),this.loadCount===this.imageCount&&(this.state=this.states.RESOLVED,this.deferred.resolve(this.imageLocations)))},loadImageLocation:function(a){var c=this,d=$(new Image).load(function(a){b.$apply(function(){c.handleImageLoad(a.target.src),c=d=a=null})}).error(function(a){b.$apply(function(){c.handleImageError(a.target.src),c=d=a=null})}).prop("src",a)}},c}]),angular.module("Volusion.toolboxCommon").factory("vnProductParams",function(){"use strict";function a(a){I.length=0,I.push(a),K.categoryIds=d()}function b(a){J.push(a),K.facets=e()}function c(){return K.accessoriesOf}function d(){return I.join(",")}function e(){return J.join(",")}function f(){return K.maxPrice}function g(){return K.minPrice}function h(){return K.page}function i(){return K.pageSize}function j(){return K}function k(){return K.search}function l(){return K.sort}function m(a){return J.indexOf(a)>-1}function n(){K.page++}function o(c){if(c.categoryId&&a(parseInt(c.categoryId)),c.facetIds){var d=c.facetIds.split(",");angular.forEach(d,function(a){m(parseInt(a))||b(parseInt(a))})}c.minPrice&&D(c.minPrice),c.maxPrice&&C(c.maxPrice),c.q&&H(c.q),c.sort&&G(c.sort),c.page&&E(c.page)}function p(){K.page--}function q(){K.slug=""}function r(){K.search=""}function s(){K.minPrice=""}function t(){K.maxPrice=""}function u(){K.accessoriesOf=""}function v(a){var b=I.indexOf(a);I.splice(b,1),K.categoryIds=d()}function w(a){var b=J.indexOf(a);J.splice(b,1),K.facets=e()}function x(){K.sort=""}function y(){I=[],K.categoryIds=""}function z(){J=[],K.facets=""}function A(){I=[],J=[],K={categoryIds:"",slug:"",facets:"",minPrice:"",maxPrice:"",accessoriesOf:"",sort:"",page:"",pageSize:""}}function B(a){K.accessoriesOf=a}function C(a){K.maxPrice=a}function D(a){K.minPrice=a}function E(a){K.page=a}function F(a){K.pageSize=a}function G(a){K.sort=a}function H(a){K.search=decodeURIComponent(a)}var I=[],J=[],K={categoryIds:"",slug:"",facets:"",minPrice:"",maxPrice:"",accessoriesOf:"",sort:"",page:"",pageSize:""};return{addCategory:a,addFacet:b,getAccessoriesOf:c,getCategoryString:d,getFacetString:e,getMaxPrice:f,getMinPrice:g,getPage:h,getPageSize:i,getParamsObject:j,getSearchText:k,getSort:l,isFacetSelected:m,nextPage:n,preLoadData:o,previousPage:p,removeSlug:q,removeSearch:r,removeMinPrice:s,removeMaxPrice:t,removeAccessoriesOf:u,removeCategory:v,removeFacet:w,removeSort:x,resetCategories:y,resetFacets:z,resetParams:A,setAccessoriesOf:B,setMaxPrice:C,setMinPrice:D,setPage:E,setPageSize:F,setSort:G,updateSearch:H}}),angular.module("Volusion.toolboxCommon").factory("vnProduct",["vnImagePreloader",function(a){"use strict";function b(){var a=[];if(!q.options)return a;for(var c=0;c<q.options.length;c++){var d=q.options[c];if(d.isRequired&&!d.hasOwnProperty("selected")&&a.push(d.label),d.options.length>0)for(var e=b(d.options),f=0;f<e.length;f++)a.push(e[f].label)}return a}function c(){var a=[];if(!q.options)return a;for(var b=0;b<q.options.length;b++){var c=q.options[b];c.isRequired&&c.derivesToSKU&&a.push(c.label)}return a.length}function d(){var b=[];angular.forEach(q.imageCollections,function(a){angular.forEach(a.images,function(a){b.push(a.medium)})}),a.preloadImages(b)}function e(a){if("undefined"==typeof a)return!0;var b,d=0,e=1===c();return b=q.optionSKUs.filter(function(b){return b.key===a}),b.length>0&&(e||b[0].key.indexOf("|")>-1)?(d=b[0].quantityInStock,null===d||d>0):0===b.length?q.availability.allowBackOrders||null===q.availability.quantityInStock||q.availability.quantityInStock>0:!1}function f(){var a,b=0;if(q.options.length>0&&q.optionSKUs.length>0){for(var c=0;c<q.optionSKUs.length;c++)b|=e(q.optionSKUs[c].key);a=0===b}else a=!q.availability.allowBackOrders&&null!==q.availability.quantityInStock&&q.availability.quantityInStock<=0;return a}function g(){var a=!1;if(0===q.options.length)a=q.availability.allowBackOrders||null===q.availability.quantityInStock||q.availability.quantityInStock>0;else{var b=1===q.options.length?q.optionSelection.option.key+":"+q.optionSelection.option.selected:q.optionSelection.key;a=e(b)}return a}function h(a){return q=a,q.optionSelection={option:{selected:"default"}},q.imageCollections.length>0&&q.imageCollections[0].images.length>0&&(q.image=q.imageCollections[0].images[0]),d(),q}function i(a,b){q.sharing={facebook:"http://www.facebook.com/sharer.php?u="+a+"&t="+b,twitter:"http://twitter.com/share?url="+a+"&text="+b,tumblr:"http://www.tumblr.com/share/link?url="+a+"&name="+b,googlePlus:"https://plus.google.com/share?url="+a}}function j(a){q.isEditable=a}function k(a){angular.forEach(q.imageCollections,function(b){b.key===a&&(q.image=b.images[0],q.currentImageCollection=b.images)})}function l(a){q.optionSelection&&q.optionSelection.quantityInStock-a>=0&&(q.optionSelection.quantityInStock-=a)}function m(){return q.cartItem}function n(){return void 0!==q.image?q.image:null}function o(a){0!==a.length&&(1===a.length&&(a[1]=a[0],a[2]=a[0]),void 0===q.image&&(q.image={}),q.image.medium=a[0],q.image.large=a[1],q.image.small=a[2])}function p(){return q.seo}var q={};return{set:h,setEditable:j,setSocialSharing:i,setProductImage:k,getProductCart:m,getProductImage:n,setProductNoImage:o,setQuantityInStock:l,getProductSEO:p,findAvailability:f,findOptionAvailability:e,findRequiredOptionsAreSelected:b,isSelectionAvailable:g}}]),angular.module("Volusion.toolboxCommon").constant("vnResourceTypes",{article:"article",billingaddresses:"billingaddresses",cart:"cart",category:"category",config:"config",countries:"countries",nav:"nav",orders:"orders",paymentprofiles:"paymentprofiles",product:"product",reviews:"reviews",themesettings:"themesettings",user:"user",shippingaddresses:"shippingaddresses"}),angular.module("Volusion.toolboxCommon").constant("vnSortDefault","relevance"),angular.module("Volusion.toolboxCommon").service("vnUser",["$q","vnApi",function(a,b){"use strict";function c(){return v}function d(){return v.anonymous}function e(){b.ShippingAddresses().get().$promise.then(function(a){v.shippingAddresses=a.data})}function f(a){return b.ShippingAddresses().save({},a).$promise}function g(){b.BillingAddresses().get().$promise.then(function(a){v.billingAddresses=a.data})}function h(a){return b.BillingAddresses().save({},a).$promise}function i(){b.PaymentProfiles().get().$promise.then(function(a){v.paymentProfiles=a.data})}function j(a){return b.PaymentProfiles().save({},a).$promise}function k(){var c=a.defer();return b.User().get().$promise.then(function(d){angular.extend(v,d.data),a.all([b.ShippingAddresses().get().$promise,b.BillingAddresses().get().$promise,b.PaymentProfiles().get().$promise]).then(function(a){v.shippingAddresses=a[0].data,v.billingAddresses=a[1].data,v.paymentProfiles=a[2].data,c.resolve(v)})["catch"](function(a){c.reject(a)})}),c}function l(a){return v.email=a.email,v.password=a.password,v.firstName=a.firstName,v.lastName=a.lastName,v.emailOptIn=a.emailOptIn,v.anonymous=a.anonymous,v.autoLogin=a.autoLogin,b.User().save({},v).$promise}function m(a){v.id=a}function n(a){v.email=a}function o(a){v.password=a}function p(a){v.firstName=a}function q(a){v.lastName=a}function r(a){v.emailOptIn=a}function s(a){v.anonymous=a}function t(){v={}}function u(){return b.User().update({id:v.id},v).$promise.then(function(a){angular.copy(a.data,v),v.serviceErrors=[],v.warnings=a.warnings||a.data.warnings||[]})["catch"](function(a){angular.copy(a.data.data,v),v.serviceErrors=a.serviceErrors||a.data.serviceErrors||[],v.warnings=a.warnings||a.data.warnings||[]})}var v={email:"",password:"",firstName:"",lastName:"",emailOptIn:!1,anonymous:!0,customFields:{},autoLogin:!0};return{createFrom:l,getUser:c,getBillingAddresses:g,setBillingAddress:h,getPaymentProfiles:i,getShippingAddresses:e,setShippingAddress:f,getCurrent:k,isAnonymous:d,reset:t,setId:m,setEmail:n,setPassword:o,setFirstName:p,setLastName:q,setEmailOptIn:r,setAnonymous:s,setPaymentProfile:j,updateUser:u}}]),angular.module("Volusion.toolboxCommon").factory("vnUtils",function(){"use strict";var a={};return a.checkDisallowedCharacters=function(a){return unescape(a).match(/[^\w\s!#().?\[\]'"~`\-]+/g)},a.checkDisallowedCharactersForPostalCode=function(a){return unescape(a).match(/[^\w\s\-]+/g)},a}),angular.module("Volusion.toolboxCommon").controller("ShipMethodCtrl",["$scope","vnCheckout",function(a,b){"use strict";var c=1;a.checkout=b.get(),a.currentShippingMethodIdx=0,a.isEditable=function(){return a.checkout.currentStep===c?"edit":"show"},a.setPreferredShippingMethod=function(c){angular.forEach(a.checkout.cart.shippingMethods,function(d){return a.checkout.cart.shippingMethods[c].id===d.id?(a.currentShippingMethodIdx=c,d.selected=!0,void b.setShipMethodValidity(!0)):void(d.selected=!1)}),b.updateCart()}}]),angular.module("Volusion.toolboxCommon").controller("ShipToViewsCtrl",["$scope","$rootScope","$window","vnAddressUtilities","vnCheckout","vnUser",function(a,b,c,d,e,f){var g=this;g.state=null,g.showCopyAddress=!1,g.showSaveButton=!0,g.loading=!1,g.init=function(){g.checkout=e.get(),g.user=f.getUser(),!g.user.anonymous&&g.user.shippingAddresses&&g.user.shippingAddresses.length?(g.shippingAddress=d.getPreferredAddress(g.user.shippingAddresses),g.saveShippingAddress()):(g.shippingAddress=d.createEmptyAddress(),g.state="EDITADDRESS"),e.getCountries().then(function(a){g.countries=a.data})},g.editShippingAddress=function(){g.state=!g.user.anonymous&&g.user.shippingAddresses&&g.user.shippingAddresses.length?"PICKADDRESS":"EDITADDRESS",a.$emit("vnShipTo.edit")},g.onAddressSelected=function(){g.shippingAddress=d.getPreferredAddress(g.user.shippingAddresses),g.saveShippingAddress()},g.onAddressAdded=function(a){g.shippingAddress=a,g.saveShippingAddress()},g.saveShippingAddress=function(){c.scrollTo(0,0),g.loading=!0,e.setShipToValidity(!0),e.setShippingAddress(g.shippingAddress),f.setShippingAddress(g.shippingAddress),e.updateCart(),g.state="VIEWADDRESS",a.$emit("vnShipTo.edit.done")};var h=b.$on("cartUpdated",function(){g.loading=!1});a.$on("$destroy",function(){h()})}]),angular.module("Volusion.toolboxCommon").controller("ThankYouCtrl",["$rootScope","$scope","$filter","vnCheckout","vnCreditCardClass","$location",function(a,b,c,d){"use strict";var e=d.get();"undefined"!=typeof e.orderId&&-1!==e.orderId&&(b.orderId=e.orderId,b.userEmail=e.user.email)}]),angular.module("Volusion.toolboxCommon").service("themeSettings",["$q","vnApi",function(a,b){function c(a){for(var b in a)if(a.hasOwnProperty(b))return!1;return!0}function d(){c(g)&&b.ThemeSettings().get().$promise.then(function(a){g=a})}function e(){return g.itemsPerPage||8}function f(){var d=a.defer();return c(g)?b.ThemeSettings().get().$promise.then(function(a){d.resolve(a),g=a}):d.resolve(g),d.promise}var g={};return{init:d,getThemeSettings:f,getPageSize:e}}]),angular.module("Volusion.toolboxCommon").factory("storage",["$window","$cookieStore",function(a,b){function c(){return{get:function(b){var c=a.localStorage.getItem(b);return null===c?d(b):c},set:function(b,c){return a.localStorage.setItem(b,c)},remove:function(b){return a.localStorage.removeItem(b)}}}function d(a){var c=b.get(a);return"undefined"==typeof c?null:c}function e(){return{get:function(a){return d(a)},set:function(a,c){return b.put(a,c)},remove:function(a){return b.remove(a)}}}return"localStorage"in a&&null!==a.localStorage?c():e()}]);var storageKey="VN_TRANSLATE";if(Translate.prototype.getConfig=function(){var a=this.storage,b=JSON.parse(a.get(storageKey))||{},c=a.get("NG_TRANSLATE_LANG_KEY");return!this.disableTranslations&&c&&"undefined"!==c&&(b.lang=c),b},Translate.prototype.configure=function(a){a=angular.extend(this.getConfig(),a),this.storage.set(storageKey,JSON.stringify(a)),this.$translate.use(a.lang)},Translate.prototype.addParts=function(){if(this.disableTranslations)return!0;var a=this.$translatePartialLoader;return angular.forEach(arguments,function(b){a.addPart(b)}),this.$translate.refresh()},TranslateProvider.prototype.$get=["$translate","$translatePartialLoader","storage",function(a,b,c){var d=this.options;return new Translate(a,b,c,{region:d.region,lang:d.lang,country:d.country},d.disableTranslations)}],TranslateProvider.prototype.configure=function(a){a=angular.extend({region:"us",lang:"en",country:"us"},a),a.lang&&this.setPreferredLanguage(a.lang),this.options=a,a.disableTranslations||this.initTranslateProvider(a.lang)},TranslateProvider.prototype.initTranslateProvider=function(a){var b=this.$translateProvider;b.useLoader("$translatePartialLoader",{urlTemplate:"/translations/{part}/{lang}.json"}),"en"===a&&b.useMessageFormatInterpolation(),b.useMissingTranslationHandlerLog(),b.useLocalStorage()},angular.module("Volusion.toolboxCommon").provider("translate",["$translateProvider",TranslateProvider]),angular.module("Volusion.toolboxCommon").filter("vnCreditCard",function(){"use strict";return function(a,b){if(void 0===a||""===a)return a;var c=[];if(b=b.toUpperCase(),(-1!==a.indexOf("*")&&"AMEX"!==b&&"AMERICAN EXPRESS"!==b&&19===a.length||("AMEX"===b||"AMERICAN EXPRESS"===b)&&18===a.length)&&(a=a.replace(/[\s]+/g,"")),"AMEX"===b||"AMERICAN EXPRESS"===b||/^(34)|^(37)/.test(a)){c=a.slice(0,15).match(/(.{0,4})(.{0,6})(.{0,5})$/),c.splice(0,1);for(var d=0;d<c.length;d++)""===c[d]&&(c.splice(d,1),d=0)}else c=a.slice(0,16).match(/.{1,4}/g);return null!==c?c.join(" "):a}}),angular.module("Volusion.toolboxCommon").filter("vnFormattedCurrency",["$filter","$locale",function(a,b){"use strict";return function(c,d){if(void 0===c||null===c)return"";var e=a("currency")(c,d),f=e.split(b.NUMBER_FORMATS.DECIMAL_SEP);return f[1].indexOf("00")>-1?f[0]+f[1].substring(2):f[0]+'<span class="th-price--cents">'+f[1]+"</span>"}}]),angular.module("Volusion.toolboxCommon").filter("html",["$sce",function(a){"use strict";return function(b){return a.trustAsHtml(b)}}]),angular.module("Volusion.toolboxCommon").filter("reverse",function(){"use strict";return function(a){return void 0===a?null:a.slice().reverse()}}),angular.module("Volusion.toolboxCommon").filter("seoFriendly",function(){"use strict";return function(a){var b=a.match(/[0-9a-z]+/gi);return b?b.join("-"):""}}),angular.module("Volusion.toolboxCommon").filter("vnUsPhone",function(){"use strict";return function(a){if(void 0===a||""===a)return a;a=a.replace(/[^\d]+/g,"");var b,c="";return b=a.slice(0,14).match(/(.{0,3})(.{0,3})(.{0,4})(.{0,4})$/),b.splice(0,1),3!==b[0].length?a:(c="("+b[0]+")",b[1].length>0&&(c+=" "+b[1]),b[2].length>0&&(c+="-"+b[2]),b[3].length>0&&(c+=" ext."+b[3]),c)}}),angular.module("Volusion.toolboxCommon").directive("vnEmailValidate",[function(){"use strict";return{require:"ngModel",link:function(a,b,c,d){d.$parsers.unshift(function(b){return a.emailEmpty=b&&b.length>0?"valid":void 0,a.validEmail=b&&/^[\w\.\-]+@[a-zA-Z\d_.-]+?\.[a-zA-Z]{2,3}$/.test(b)?"valid":void 0,a.emailEmpty&&a.validEmail?(d.$setValidity(d.$name,!0),b):void d.$setValidity(d.$name,!1)})}}}]).directive("vnPasswordValidate",["vnUtils",function(){"use strict";return{require:"ngModel",link:function(a,b,c,d){d.$parsers.unshift(function(b){return a.pwdValidLength=b&&b.length>=6?"valid":void 0,a.pwdValidLength?(d.$setValidity("password",!0),b):void d.$setValidity("password",!1)})}}}]).directive("vnFirstNameValidate",["vnUtils",function(a){"use strict";return{require:"ngModel",link:function(b,c,d,e){e.$parsers.unshift(function(c){return b.firstNameMinValidLength=c&&c.length>=1?"valid":void 0,b.firstNameDisallowedChars=a.checkDisallowedCharacters(c),b.firstNameAllowedChars=c&&null===b.firstNameDisallowedChars?"valid":void 0,b.firstNameMinValidLength&&b.firstNameAllowedChars?(e.$setValidity("firstName",!0),c):void e.$setValidity("firstName",!1)})}}}]).directive("vnLastNameValidate",["vnUtils",function(a){"use strict";return{require:"ngModel",link:function(b,c,d,e){e.$parsers.unshift(function(c){return b.lastNameMinValidLength=c&&c.length>=1?"valid":void 0,b.lastNameDisallowedChars=a.checkDisallowedCharacters(c),b.lastNameAllowedChars=c&&null===b.lastNameDisallowedChars?"valid":void 0,b.lastNameMinValidLength&&b.lastNameAllowedChars?(e.$setValidity("lastName",!0),c):void e.$setValidity("lastName",!1)})}}}]).directive("vnStreetValidate",["vnUtils",function(a){"use strict";return{require:"ngModel",link:function(b,c,d,e){e.$parsers.unshift(function(c){return b.streetEmpty=c&&c.length>0?"valid":void 0,b.streetDisallowedChars=a.checkDisallowedCharacters(c),b.streetAllowedChars=c&&null===b.streetDisallowedChars?"valid":void 0,b.streetAllowedChars&&b.streetEmpty?(e.$setValidity("street",!0),c):void e.$setValidity("street",!1)})}}}]).directive("vnCityValidate",["vnUtils",function(a){"use strict";return{require:"ngModel",link:function(b,c,d,e){e.$parsers.unshift(function(c){return b.cityEmpty=c&&c.length>0?"valid":void 0,b.cityDisallowedChars=a.checkDisallowedCharacters(c),b.cityAllowedChars=c&&null===b.cityDisallowedChars?"valid":void 0,b.cityAllowedChars&&b.cityEmpty?(e.$setValidity("city",!0),c):void e.$setValidity("city",!1)})}}}]).directive("vnRegionValidate",["vnUtils",function(a){"use strict";return{require:"ngModel",link:function(b,c,d,e){e.$parsers.unshift(function(c){return b.regionEmpty=c&&c.length>0?"valid":void 0,b.regionDisallowedChars=a.checkDisallowedCharacters(c),b.regionAllowedChars=c&&null===b.regionDisallowedChars?"valid":void 0,b.regionAllowedChars&&b.regionEmpty?(e.$setValidity("region",!0),c):void e.$setValidity("region",!1)})}}}]).directive("vnRequiredFieldValidate",[function(){"use strict";return{require:"ngModel",link:function(a,b,c,d){var e=(c.vnRequiredFieldValidate||d.$name||"")+"Required";d.$parsers.unshift(function(b){return a[e]=b&&b.length>=1?"valid":void 0,a[e]?(d.$setValidity(e,!0),b):void d.$setValidity(e,!1)})}}}]).directive("vnSpecialCharsValidate",["vnUtils",function(a){"use strict";return{require:"ngModel",link:function(b,c,d,e){var f=d.vnSpecialCharsValidate||e.$name;e.$parsers.unshift(function(c){var d=f+"AllowedChars",g=f+"DisallowedChars";return b[g]=a.checkDisallowedCharacters(c),b[d]=c&&null===b[g]?"valid":void 0,b[d]?(e.$setValidity(f,!0),c):void e.$setValidity(f,!1)})}}}]).directive("vnZipValidate",function(){"use strict";return{require:"ngModel",link:function(a,b,c,d){d.$parsers.unshift(function(b){return a.zipHasValidFormat=b&&/^\d{5}(-\d{4})?$/.test(b)?"valid":void 0,a.zipHasValidFormat?(d.$setValidity("zip",!0),b):void d.$setValidity("zip",!1)})}}}).directive("vnPostalCodeValidate",["vnUtils",function(a){"use strict";return{require:"ngModel",link:function(b,c,d,e){e.$parsers.unshift(function(c){return b.postalCodeEmpty=c&&c.length>0?"valid":void 0,b.postalCodeDisallowedChars=a.checkDisallowedCharactersForPostalCode(c),b.postalCodeAllowedChars=c&&null===b.postalCodeDisallowedChars?"valid":void 0,b.postalCodeAllowedChars&&b.postalCodeEmpty?(e.$setValidity("postalCode",!0),c):void e.$setValidity("postalCode",!1)})}}}]).directive("vnUsPhoneValidate",function(){"use strict";return{require:"ngModel",link:function(a,b,c,d){d.$parsers.unshift(function(b){return a.usPhoneHasValidFormat=b&&/\d{10,14}$/.test(b)?"valid":void 0,a.usPhoneHasValidFormat?(d.$setValidity("usPhone",!0),b):void d.$setValidity("usPhone",!1)})}}}).directive("vnCvvValidate",function(){"use strict";return{require:"ngModel",link:function(a,b,c,d){d.$parsers.unshift(function(c){var e="",f=b.attr("data-vn-cc-type").toUpperCase();if("AMEX"!==f&&"AMERICAN EXPRESS"!==f&&"***"===c||("AMEX"===f||"AMERICAN EXPRESS"===f)&&"****"===c)a.cvvValidFormat="valid",e=c;else{var g=/^\d{3}?$/;e=c.replace(/[^\d]+/g,""),a.cvvLength=3,("AMEX"===f||"AMERICAN EXPRESS"===f)&&(g=/^\d{4}?$/,a.cvvLength=4),b.attr("maxlength",a.cvvLength),a.cvvValidFormat=e&&g.test(e)?"valid":void 0}return d.$setValidity("cvv","valid"===a.cvvValidFormat),e})}}}).directive("vnCcValidate",function(){"use strict";function a(a){var b=[[0,2,4,6,8,1,3,5,7,9],[0,1,2,3,4,5,6,7,8,9]],c=0;return a.replace(/[\d]/g,function(a,d,e){c+=b[e.length-d&1][parseInt(a,10)]}),c%10===0&&c>0?"valid":void 0}return{require:"ngModel",link:function(b,c,d,e){e.$parsers.unshift(function(d){var f="",g=c.attr("data-vn-cc-type").toUpperCase();if(-1!==d.indexOf("*")&&"AMEX"!==g&&"AMERICAN EXPRESS"!==g&&19===d.length||("AMEX"===g||"AMERICAN EXPRESS"===g)&&18===d.length)b.creditCardValid="valid",f=d;else{var h=16,i=3;("AMEX"===g||"AMERICAN EXPRESS"===g)&&(h=15,i=2),c.attr("maxlength",h+i),f=d.replace(/[^\d]+/g,"").slice(0,h),b.creditCardValid=f.length===h?a(f):void 0}return e.$setValidity("creditcard","valid"===b.creditCardValid),c.val(f),f})}}}),angular.module("Volusion.toolboxCommon").factory("vnViewPortWatch",["$rootScope","$window",function(a,b){"use strict";return{setBreakpoints:function(c){"undefined"!=typeof b.enquire&&angular.forEach(c,function(c){c.mediaQuery&&b.enquire.register(c.mediaQuery,{match:function(){c.onMatch&&"function"==typeof c.onMatch&&c.onMatch(),a.$emit("vnViewPortWatch:Match",c)},unmatch:function(){c.onUnmatch&&"function"==typeof c.onUnmatch&&c.onUnmatch(),a.$emit("vnViewPortWatch:Unmatch",c)}})})}}}]),angular.module("Volusion.toolboxCommon.templates",[]).run(["$templateCache",function(a){a.put("vn-faceted-search/vn-category-search.html",'<div class=vn-category-search__category-items data-ng-repeat="cat in categories" data-ng-class="{ \'-last\': $last }">\n\n <a href data-ng-if="cat.displayStrategy == \'categoryDisplayTwo\' || cat.displayStrategy == \'categoryDisplayThree\' " data-ng-click=buildAppUrl(cat) class=vn-category-search__category-items__category-title data-ng-class="{ \'-noborder\': $last && cat.displayStrategy == \'categoryDisplayOne\' }">\n\n <span data-ng-if="cat.displayStrategy == \'categoryDisplayTwo\' " class="glyphicon glyphicon-chevron-left"></span>\n {{ cat.name }}\n </a>\n <span class=vn-category-search__category-items__category-title data-ng-if="cat.displayStrategy == \'categoryDisplayOne\' ">{{ cat.name }}</span>\n <div class=vn-category-search__category-items__category-item data-ng-repeat="subCat in cat.subCategories" data-ng-class="{ \'-noborder\': $last }">\n\n <span data-ng-if=subCat.hideSubCatLink>{{ subCat.name }}</span>\n <a href data-ng-if=!subCat.hideSubCatLink data-ng-click=buildAppUrl(subCat)>{{ subCat.name }}</a>\n </div>\n</div>'),a.put("vn-faceted-search/vn-facet-search.html",'<div data-accordion-group class=facet-item data-ng-repeat="facet in facets track by $index" data-is-open=defaultAccordianOpen>\n <div data-accordion-heading>\n <div>\n <span>{{ facet.title }}</span>\n <i class="pull-right glyphicon" data-ng-class="{\'glyphicon-chevron-down\': defaultAccordianOpen, \'glyphicon-chevron-right\': !defaultAccordianOpen}"></i>\n </div>\n </div>\n <div data-ng-if="facet.displayType != \'swatches\'" class=facet-properties>\n <label class=facet-property data-ng-repeat="property in facet.properties track by $index" data-ng-class="{ \'-last\': $last }">\n\n <input type=checkbox name=property.name data-ng-checked=selectProperty(property) data-ng-click="refineFacetSearch(property)">\n <span class=name>{{ property.name }}</span>\n <span class=count>{{ property.count }}</span>\n </label>\n </div>\n <div data-ng-if="facet.displayType == \'swatches\'" class="facet-properties clearfix">\n <div data-ng-repeat="property in facet.properties" class=facet-property__swatch data-ng-click=refineFacetSearch(property) data-ng-class="{\'facet-property__swatch--selected\': selectProperty(property)}">\n <div class=facet-property__swatch--color data-ng-style="{\'backgroundColor\': property.color }">\n </div>\n </div>\n </div>\n</div>'),a.put("vn-faceted-search/vn-faceted-search.html",'<div class=vn-faceted-search-header data-ng-show=showApplyButton>\n <button class="btn btn-success __cancel-action" href data-ng-click=dismissMobileFilters()>Apply\n </button>\n \n <button class="btn __clear-action" href data-ng-click=clearAllFilters()>Clear\n </button>\n \n</div>\n<div class=-faceted-search data-ng-show=showFacetSearch>\n <div class=facets>\n <div data-accordion data-close-others=false>\n\n \n <div data-accordion-group class=facet-item__by-category data-is-open=categoryAccordiansOpen data-ng-show="categoryList.length > 0">\n <div data-accordion-heading>\n <div>\n <span>Category</span>\n <i class="pull-right glyphicon" data-ng-class="{\'glyphicon-chevron-down\': categoryAccordiansOpen, \'glyphicon-chevron-right\': !categoryAccordiansOpen}"></i>\n </div>\n </div>\n <div vn-category-search categories=categoryList query-products=queryProducts() data-ng-show=showCategorySearch class=category-search>\n </div>\n </div>\n\n \n <div vn-facet-search facets=facets query-products=queryProducts() data-ng-show="facets.length > 0"></div>\n\n \n <div data-accordion-group class=facet-item__by-price data-is-open=priceAccordiansOpen data-ng-show="facets.length > 0">\n <div data-accordion-heading>\n <div>\n <span>Price</span>\n <i class="pull-right glyphicon" data-ng-class="{\'glyphicon-chevron-down\': priceAccordiansOpen, \'glyphicon-chevron-right\': !priceAccordiansOpen}"></i>\n </div>\n </div>\n <div class=facet-item__by-price__inputs vn-price-search query-products=queryProducts()></div>\n </div>\n </div>\n\n \n <div class=vn-faceted-search-footer data-ng-show=!showApplyButton>\n <button class="btn __clear-action" href data-ng-click=clearAllFilters()>Reset Filters\n </button>\n \n </div>\n\n </div>\n</div>'), -a.put("vn-faceted-search/vn-price-search.html",'<input data-ng-model=minPrice data-ng-keypress=searchByPrice($event) placeholder="$">\n to \n<input data-ng-model=maxPrice data-ng-keypress=searchByPrice($event) placeholder="$$">\n<button class="btn btn-default facet-item__by-price__button" type=button ng-click=searchByPrice($event)>Go\n</button>'),a.put("vn-faceted-search/vn-sort-search.html",'<div class=dropdown>\n <button class="btn btn-default dropdown-toggle" type=button id=dropdownMenu1 data-toggle=dropdown>\n Sort by\n <span class=caret></span>\n </button>\n <ul class=dropdown-menu role=menu aria-labelledby=dropdownMenu1>\n <li role=presentation>\n <a role=menuitem tabindex=-1 href="" data-ng-click="sortBy(\'relevance\')">Relevance</a>\n </li>\n <li role=presentation>\n <a role=menuitem tabindex=-1 href="" data-ng-click="sortBy(\'highest price\')">Highest price</a>\n </li>\n <li role=presentation>\n <a role=menuitem tabindex=-1 href="" data-ng-click="sortBy(\'lowest price\')">Lowest price</a>\n </li>\n <li role=presentation>\n <a role=menuitem tabindex=-1 href="" data-ng-click="sortBy(\'relevance\')">Popularity</a>\n </li>\n <li role=presentation>\n <a role=menuitem tabindex=-1 href="" data-ng-click="sortBy(\'newest\')">Newest</a>\n </li>\n <li role=presentation>\n <a role=menuitem tabindex=-1 href="" data-ng-click="sortBy(\'oldest\')">Oldest</a>\n </li>\n </ul>\n</div>'),a.put("vn-product-option/checkboxes.html",'<label data-vn-block=vn-labeled-checkbox data-vn-modifiers={{option.class}} data-ng-repeat="item in option.items" data-ng-init=item>\n\n <div data-vn-element=checkbox>\n <input type=checkbox data-ng-click="onCheckboxClicked(option, item)">\n </div>\n\n <div data-vn-element=content data-ng-include=" \'vn-product-option/content.html\' "></div>\n</label>'),a.put("vn-product-option/content.html",'<div data-vn-element=color-image>\n <div data-vn-element=color data-ng-show=item.color style="background-color: {{item.color}}"></div>\n <img data-vn-element=image data-ng-show=item.swatchImage data-ng-src={{item.swatchImage}} alt={{item.text}}>\n</div>\n<div data-vn-element=text data-ng-bind=item.text data-ng-controller=OptionsCtrl data-ng-class="{ \'-disabled\': !isItemAvailable }"></div>\n<div data-vn-element=border data-ng-class="{ checked: option.selected === item.key }"></div>'),a.put("vn-product-option/index.html",'<div data-vn-block=vn-product-option>\n\n <label data-vn-element=label data-ng-if=option.label data-ng-bind=option.label></label>\n\n <div data-ng-repeat="inputType in option.inputTypes">\n <div data-vn-element=group data-vn-modifiers="{{inputType.type}} {{option.class}}" data-ng-include=" \'vn-product-option/\' + inputType.type + \'.html\' ">\n </div>\n </div>\n\n <div data-ng-if=option.selected>\n <div data-ng-repeat="option in option.options" data-ng-include=" \'vn-product-option/index.html\' ">\n </div>\n </div>\n\n</div>'),a.put("vn-product-option/radios.html",'<label data-vn-block=vn-labeled-radio data-vn-modifiers={{option.class}} data-ng-repeat="item in option.items" data-ng-init=item data-ng-controller=OptionsCtrl data-ng-class="{ \'-disabled\': !isItemAvailable }">\n\n <div data-vn-element=radio>\n\n <input type=radio name={{option.id}} data-ng-value=item.key data-ng-model=option.selected data-ng-click="onOptionChanged(option, item)">\n </div>\n\n <div data-vn-element=content data-ng-include=" \'vn-product-option/content.html\' "></div>\n\n</label>'),a.put("vn-product-option/select.html",'<div class=dropdown data-vn-element=select data-vn-modifiers="{{ option.class }}" data-ng-attr-size="{{ inputType.size }}">\n\n <button class="btn btn-default dropdown-toggle" type=button id="dropdownMenuOption{{ option.id }}" data-toggle=dropdown>\n {{ currentSelectionText }}\n <span class=caret></span>\n </button>\n <ul class=dropdown-menu role=menu aria-labelledby="dropdownMenuOption{{ option.id }}">\n <li role=presentation data-ng-repeat="item in option.items">\n <a role=menuitem tabindex=-1 href data-ng-click="onOptionChanged(option, item)" data-ng-controller=OptionsCtrl data-ng-class="{ \'-disabled\': !isItemAvailable }">\n {{ item.text }}\n </a>\n </li>\n </ul>\n</div>'),a.put("vn-product-option/text.html",'<div data-ng-if="inputType.rows > 1">\n <textarea data-vn-element=text data-vn-modifiers={{option.class}} data-ng-focus="saveTo=saveTo||{}" data-ng-model=saveTo[option.id] data-ng-maxlength={{inputType.maxlength}} placeholder={{inputType.placeholder}} rows={{inputType.rows}} cols={{inputType.cols}}></textarea>\n</div>\n\n<div data-ng-if="!inputType.rows || inputType.rows < 2">\n <input data-vn-element=text data-vn-modifiers={{option.class}} data-ng-focus="saveTo=saveTo||{}" data-ng-model=saveTo[option.id] data-ng-maxlength={{inputType.maxlength}} placeholder={{inputType.placeholder}}>\n</div>'),a.put("vn-product/vn-product-image.html",'<img data-ng-src="{{ getImagePath(product.imageCollections) }}" class=img-responsive alt="{{ product.name }}">'),a.put("address/address-display.tpl.html",'<div class=row data-ng-show="address.address1 !== \'\'" data-ng-click=onClick()>\n <div class=col-xs-10>\n <div class=th-checkout__address__display__addressPart>{{ address.firstName }} {{ address.lastName }}</div>\n <div class=th-checkout__address__display__addressPart>{{ address.address1 }}</div>\n <div data-ng-if="address.address2 != \'\'" class=th-checkout__address__display__addressPart>{{ address.address2 }}</div>\n <div class=th-checkout__address__display__addressPart data-ng-show=isLocationUS>{{ address.city }}, {{ address.state }} {{ address.postalCode }}</div>\n <div class=th-checkout__address__display__addressPart data-ng-show=isLocationUS>{{ address.phoneNumber | vnUsPhone }}</div>\n\n <div class=th-checkout__address__display__addressPart data-ng-show=!isLocationUS>{{ address.city }}</div>\n <div class=th-checkout__address__display__addressPart data-ng-show=!isLocationUS>{{ address.state }} {{ address.postalCode }}</div>\n <div class=th-checkout__address__display__addressPart data-ng-show=!isLocationUS>{{ address.country }}</div>\n <div class=th-checkout__address__display__addressPart data-ng-show=!isLocationUS>{{ address.phoneNumber }}</div>\n </div>\n <div class=col-xs-2 ng-show=showEditButton>\n <i class="fa fa-angle-right fa-2x pull-right"></i>\n </div>\n</div>'),a.put("address/vn-address-picker.tpl.html",'<div class="th-checkout__step__drawer -left" data-ng-class="{\'-open\': openAddressPicker}">\n\n <div class=th-checkout__step__drawer__body data-ng-show=openAddressPicker data-ng-switch=state data-ng-cloak>\n <a href class=th-checkout__step__drawer__close data-ng-click=selectAddress()>\n <i class="fa fa-close fa-2x"></i>\n </a>\n\n <div class=th-checkout__step__drawer__title>\n <span data-ng-switch-when=ADDRESSLIST>{{:: selectAddressTitle}}</span>\n <span data-ng-switch-when=NEWADDRESS>{{:: newAddressTitle}}</span>\n </div>\n\n <div class=th-checkout__ship-to__choose data-ng-switch-when=ADDRESSLIST>\n <div class=th-checkout__ship-to__choose__options ng-cloak>\n <div class=th-checkout__ship-to__choose__options__option data-ng-repeat="address in addressList">\n <div class=styled-optionbox-option>\n <input type=radio id="address{{ $index }}" name=billingAddress data-ng-value=true data-ng-model=address.preferred data-ng-change="setPreferredAddress({{ $index }})">\n <label for="address{{ $index }}">\n <vn-address-display data-address=address data-show-edit-button=allowEdit></vn-address-display>\n </label>\n </div>\n </div>\n\n <footer class=th-checkout__ship-to__display__new-option ng-repeat-end>\n <a href data-ng-click=createNewAddress()>Enter a different address</a>\n </footer>\n </div>\n <button class="btn btn-primary btn-block btn-lg th-checkout__step__btn__continue" data-ng-click=selectAddress()>\n Continue <i class="fa fa-angle-right"></i>\n </button>\n </div>\n\n\n <div data-ng-switch-when=NEWADDRESS>\n <div class="th-checkout__billing-address__same-as styled-checkbox-option" data-ng-if=showCopyAddress>\n <input type=checkbox id=chkAddressCopy name=chkAddressCopy data-ng-model=addressCopied data-ng-change="copyAddressHandler()">\n <label for=chkAddressCopy>{{:: copyAddressText}}</label>\n </div>\n <div class=th-checkout__billing-address__enterAddress>\n <div data-vn-address-editor="" address=newAddress countries=countries data-on-dirty=setCopyAddressFalse() data-on-save="saveAddress({newAddress: newAddress})"></div>\n </div>\n </div>\n\n\n <div class=th-checkout__step__backButton>\n <a href=javascript:void(0); data-ng-click=selectAddress()>\n <i class="fa fa-arrow-left"> {{:: backToText}}</i>\n </a>\n </div>\n </div>\n</div>'),a.put("app-messages/vnAppMessage.tpl.html",'<alert ng-repeat="alert in appMessagesCtrl.alerts track by alert.id" type="{{ alert.type }}">\n {{alert.text}}\n <br>\n <button class="btn th-alert__button" data-ng-click=appMessagesCtrl.closeAlert(alert.id)>Ok</button>\n</alert>'),a.put("billing-address/billing-address-views.html",'<div class=th-checkout__billing-address data-ng-controller="BillingAddressViewsCtrl as vm" data-ng-switch=vm.state data-ng-init=vm.init()>\n\n <div class=th-checkout__billing-address__heading>\n Billing Address\n </div>\n\n <div class=th-checkout__address__display data-ng-switch-when=VIEWADDRESS>\n <vn-address-display data-address=vm.billingAddress data-on-click=vm.editBillingAddress() data-show-edit-button=vm.billingAddress></vn-address-display>\n </div>\n\n <div class="th-checkout__billing-address__same-as styled-checkbox-option" data-ng-switch-when=EDITADDRESS ng-cloak>\n <input type=checkbox id=chkBillingAddress name=chkBillingAddress data-ng-model=vm.useShippingAddress data-ng-change="vm.copyShippingAddress()">\n <label for=chkBillingAddress>Billing address same as shipping</label>\n </div>\n <div class=th-checkout__ship-to__enterAddress data-ng-switch-when=EDITADDRESS ng-cloak>\n <div data-vn-address-editor="" address=vm.billingAddress countries=vm.countries data-on-dirty=vm.setShippingAddressFalse() data-on-save=vm.saveBillingAddress() data-show-save-button=vm.showSaveButton></div>\n </div>\n\n <div vn-address-picker data-ng-switch-when=PICKADDRESS data-address-list=vm.user.billingAddresses data-new-address-title="Add Billing Address" data-select-address-title="Choose Billing Address" data-back-to-text="back to Pay With" data-show-copy-address=vm.showCopyAddress data-countries=vm.countries data-on-address-selected=vm.onAddressSelected() data-save-address=vm.onAddressAdded(newAddress) data-address-copied=vm.useShippingAddress data-copy-address-handler=vm.copyShippingAddress() data-copy-address-text="Billing address same as shipping"></div>\n\n</div>'),a.put("busy-animation/vnBusyAnimation.tpl.html",'<ng-transclude></ng-transclude>\n<div class="{{ class }}" title=1 data-ng-if=show>\n <svg version=1.1 id=loader-1 xmlns=http://www.w3.org/2000/svg xmlns:xlink=http://www.w3.org/1999/xlink x=0px y=0px width="{{ size }}" height="{{ size }}" viewbox="0 0 50 50" style="enable-background:new 0 0 50 50" xml:space=preserve>\n\n <path fill=#000 d=M25.251,6.461c-10.318,0-18.683,8.365-18.683,18.683h4.068c0-8.071,6.543-14.615,14.615-14.615V6.461z>\n <animatetransform attributetype=xml attributename=transform type=rotate from="0 25 25" to="360 25 25" dur=.6s repeatcount="indefinite">\n </path>\n </svg>\n</div>'),a.put("checkout/checkout.html",'<div class=th-checkout-content>\n <div class=row>\n <div class="col-md-4 th-checkout__step" data-ng-show="checkout.steps[0].active || isInDesktopMode" data-ng-class="{ \'-active\' : checkout.steps[0].active, \'-no-scroll\' : checkout.steps[0].hasOpenDrawer }" data-ng-switch=isEditable(1) data-vn-scroll-to-top=checkout.steps[0].hasOpenDrawer data-ng-init="hideShippingMethods = true">\n\n <div class=th-checkout__step__overlay data-ng-class="{ \'-complete\' : checkout.steps[1].active || checkout.steps[2].active}" data-ng-click=setStep(1)></div>\n\n <div class=th-checkout__step__title>\n <div class=th-checkout__step__title__stepNumber data-ng-if=checkout.steps[0].active><span>1</span></div>\n <i class="fa fa-check-circle-o fa-2x" data-ng-if="checkout.steps[1].active || checkout.steps[2].active"></i>\n <div class=th-checkout__step__title__stepName>Ship To</div>\n </div>\n\n <div ng-include=" \'ship-to/ship-to-views.html\' "></div>\n\n <div data-ng-hide=hideShippingMethods ng-include=" \'ship-method/ship-method.html\' "></div>\n\n <button data-ng-hide=hideShippingMethods class="btn btn-primary btn-block btn-lg th-checkout__step__btn__continue" data-ng-if=checkout.steps[0].active data-ng-click=nextShippingStep() data-ng-bind-html=buildShippingStepLabel()>\n </button>\n </div>\n <div class="col-md-4 th-checkout__step" data-ng-show="checkout.steps[1].active || isInDesktopMode" data-ng-class="{ \'-active\' : checkout.steps[1].active, \'-no-scroll\' : checkout.steps[1].hasOpenDrawer }" data-ng-switch=isEditable(2) data-vn-scroll-to-top=checkout.steps[1].hasOpenDrawer>\n\n <div class=th-checkout__step__overlay data-ng-class="{ \'-complete\' : checkout.steps[2].active}" data-ng-click="checkout.steps[0].active || setStep(2)"></div>\n\n <div class=th-checkout__step__title>\n <div class=th-checkout__step__title__stepNumber data-ng-if="checkout.steps[0].active || checkout.steps[1].active"><span>2</span></div>\n <i class="fa fa-check-circle-o fa-2x" data-ng-if=checkout.steps[2].active></i>\n <div class=th-checkout__step__title__stepName>Pay With</div>\n </div>\n\n <div ng-include=" \'pay-with/credit-card-views.html\' "></div>\n\n <div ng-include=" \'billing-address/billing-address-views.html\' "></div>\n\n <div>\n <button class="btn btn-primary btn-block btn-lg th-checkout__step__btn__continue" data-ng-if=checkout.steps[1].active data-ng-click=nextBillingStep()>\n Continue <i class="fa fa-angle-right"></i>\n </button>\n\n <div class=th-checkout__step__backButton data-ng-if=checkout.steps[1].active>\n <a href=javascript:void(0); data-ng-click=prevStep()>\n <i class="fa fa-arrow-left"> back to Ship To</i>\n </a>\n </div>\n\n <br style="clear: both">\n </div>\n\n </div>\n <div class="col-md-4 th-checkout__step" data-ng-show="checkout.steps[2].active || isInDesktopMode" data-ng-class="{ \'-active\' : checkout.steps[2].active, \'-no-scroll\' : checkout.steps[2].hasOpenDrawer }" data-vn-scroll-to-top=checkout.steps[2].hasOpenDrawer>\n\n <div class=th-checkout__step__overlay data-ng-click="checkout.steps[0].active || checkout.steps[1].active || setStep(3)"></div>\n\n <div class=th-checkout__step__title>\n <div class=th-checkout__step__title__stepNumber><span>3</span></div>\n <div class=th-checkout__step__title__stepName>Review</div>\n </div>\n <div class=th-checkout__thanks__title>\n Total: {{ checkout.cart.totals.grandTotal | currency }}\n </div>\n <button class="btn btn-primary btn-block btn-lg th-checkout__step__btn__continue" data-ng-if=checkout.steps[2].active data-ng-click=placeOrder()>\n\n Place Order\n </button>\n <div ng-include=" \'review/review.html\' "></div>\n <div ng-include=" \'review/review-details-2.html\' "></div>\n\n\n\n <div class=th-checkout__step__backButton>\n <a href=javascript:void(0); data-ng-if=checkout.steps[2].active data-ng-click=prevStep()>\n <i class="fa fa-arrow-left"> back to Pay With</i>\n </a>\n </div>\n\n </div>\n </div>\n</div>'),a.put("checkout/vn-address-editor.html",'<div class=th-checkout__address>\n\n <div>\n\n <div class=th-checkout__address__location>\n <div class=btn-group>\n <button type=button data-ng-click=setCountryToUS() class="btn btn-default" data-ng-class="{ \'btn-primary\' : isLocationUS }">United States\n </button>\n <button type=button data-ng-click=setCountryToOther() class="btn btn-default" data-ng-class="{ \'btn-primary\': !isLocationUS }">International\n </button>\n </div>\n </div>\n\n <div class=th-checkout__address__form-wrapper>\n <form id=frmAddress name=frmAddress novalidate data-ng-submit=updateAddress(address)>\n <div class=row>\n <div class=col-xs-6>\n <div class=form-group>\n <input name=inputUSFirstName class="form-control input-lg immediate-help" id=first-name data-vn-placeholder="First Name" data-ng-model=address.firstName data-vn-first-name-validate required>\n\n <data-vn-popover-first-name>\n\n </div>\n </div>\n <div class=col-xs-6>\n <div class=form-group>\n <input name=inputUSLastName class="form-control input-lg -right immediate-help" id=last-name data-vn-placeholder="Last Name" data-ng-model=address.lastName data-vn-last-name-validate required>\n\n <data-vn-popover-last-name>\n\n </div>\n </div>\n </div>\n <div class=row>\n <div class=col-xs-12>\n <div class=form-group>\n <input name=inputUSAddress1Line class="form-control input-lg immediate-help" id=address-1 data-vn-placeholder="Address Line 1" data-ng-model=address.address1 data-vn-street-validate required>\n\n <data-vn-popover-address>\n\n </div>\n </div>\n </div>\n <div class=row>\n <div class=col-xs-12>\n <div class=form-group>\n <input name=inputUSAddressLine2 class="form-control input-lg" id=address-2 data-vn-placeholder="Address Line 2" data-ng-model="address.address2">\n </div>\n </div>\n </div>\n <div class=row data-ng-show=isLocationUS data-ng-hide=check.useShippingAddress>\n <div class=col-xs-5>\n <div class=form-group>\n <input name=inputUSCity class="form-control input-lg immediate-help" id=city data-vn-placeholder=City data-ng-model=address.city data-vn-city-validate ng-required="isLocationUS">\n\n <data-vn-popover-city>\n\n </div>\n </div>\n <div class=col-xs-3>\n <div class=form-group>\n <div class="th-checkout__address__state th-dropdown">\n <vn-dropdown name=inputUSState availableoptions=address.selectedCountry.states placeholder=State optionselect=onStateChanged model=address.selectedState selected-field=code><vn-dropdown>\n </vn-dropdown></vn-dropdown></div>\n </div>\n </div>\n <div class=col-xs-4>\n <div class=form-group>\n <input name=inputUSZip class="form-control input-lg immediate-help" id=zip data-vn-placeholder=Zip data-ng-model=address.postalCode data-vn-zip-validate ng-required="isLocationUS">\n\n <data-vn-popover-zip>\n\n </div>\n </div>\n </div>\n <div class=row data-ng-show=!isLocationUS>\n <div class=col-xs-12>\n <div class=form-group>\n <input name=inputWorldwideCity class="form-control input-lg immediate-help" id=international-city data-vn-placeholder=City data-ng-model=address.city data-vn-city-validate required>\n\n <data-vn-popover-city></data-vn-popover-city>\n </div>\n </div>\n </div>\n <div class=row data-ng-show=!isLocationUS>\n <div class=col-xs-6>\n <div class=form-group>\n <input name=inputWorldwideRegion class="form-control input-lg immediate-help" id=region data-vn-placeholder=Region data-ng-model=address.state data-vn-region-validate ng-required="!isLocationUS">\n <data-vn-popover-region></data-vn-popover-region>\n </div>\n </div>\n <div class=col-xs-6>\n <div class=form-group>\n <input name=inputWorldwidePostalCode class="form-control input-lg immediate-help" id=postal-code maxlength=15 data-vn-placeholder="Postal code" data-ng-model=address.postalCode data-vn-postal-code-validate ng-required="!isLocationUS">\n <data-vn-popover-postal-code>\n </data-vn-popover-postal-code></div>\n </div>\n </div>\n <div class=row data-ng-show="!isLocationUS ">\n <div class=col-xs-12>\n <div class=form-group>\n <div class="th-checkout__ship-to__country th-dropdown">\n\n <vn-dropdown name=inputWorldwideCountry data-availableoptions=countries placeholder=Country optionselect=onCountryChanged model=address.selectedCountry><vn-dropdown>\n\n </vn-dropdown></vn-dropdown></div>\n </div>\n </div>\n </div>\n\n <div class=row data-ng-show=isLocationUS>\n <div class=col-xs-12>\n <div class=form-group>\n <input name=inputUSPhoneNumber class="form-control input-lg immediate-help" id=phone-number data-vn-placeholder="Phone Number" data-ng-model=address.phoneNumber data-vn-format-us-phone-number data-vn-us-phone-validate required>\n\n <data-vn-popover-us-phone></data-vn-popover-us-phone>\n </div>\n </div>\n </div>\n\n <div class=row data-ng-show=!isLocationUS>\n <div class=col-xs-12>\n <div class=form-group>\n <input name=inputIntlPhoneNumber class="form-control input-lg immediate-help" maxlength=35 data-vn-placeholder="Phone Number" data-ng-model=address.phoneNumber data-vn-required-field-validate required>\n\n <data-vn-popover-required location=top field="Phone Number"></data-vn-popover-required>\n </div>\n </div>\n </div>\n </form>\n </div>\n\n </div>\n\n\n <button class="btn btn-primary btn-block btn-lg th-checkout__step__btn__continue" data-ng-click=saveAddress() data-ng-enabled=frmAddress.$valid data-ng-hide=showSaveButton>\n\n {{saveText}} <i class="fa fa-angle-right"></i>\n </button>\n</div>'),a.put("dropdown/vn-dropdown.tpl.html",'<div class="vn-dropdown th-dropdown" dropdown>\n <button id=dropdownButton name="{{name + \'Label\'}}" class="vn-dropdown__trigger form-control btn btn-default btn-lg dropdown-toggle form-control" data-vn-placeholder={{placeholder}} data-ng-model=selectedOption.selectedDisplayValue dropdown-toggle data-toggle=dropdown value={{selectedOption.selectedDisplayValue}}>{{selectedOption.selectedDisplayValue}}<span class=caret></span>\n </button>\n <ul class="vn-dropdown__menu dropdown-menu" role=menu>\n <li role=presentation data-ng-repeat="option in options">\n <a role=menuitem data-ng-click=changeOption($index) href>{{option.displayValue}}</a>\n </li>\n </ul>\n <select name={{name}} class=vn-dropdown__select ng-model=selectedOption ng-options="option.selectedDisplayValue for option in options">\n </select>\n</div>'),a.put("easy-zoom/vnEasyZoom.tpl.html","<div class=easyzoom data-ng-class=\"{ 'easyzoom--adjacent': ezAdjacent, 'easyzoom--overlay': ezOverlay }\">\n <a data-ng-href={{ezZoomSrc}}>\n <img class=img-responsive data-ng-src={{ngSrc}} alt={{alt}}>\n <div class=th-product-view__zoom></div>\n </a>\n</div>"),a.put("login/login.html",'<div class=th-checkout__login>\n <div class=th-checkout__step__title>\n <div class=th-checkout__step__title__stepName>Enter your e-mail to get started</div>\n </div>\n <div class=container-fluid>\n <div class=row>\n <div class="col-xs-12 col-xs-offset-0 col-sm-8 col-sm-offset-2 col-md-6 col-md-offset-3 col-lg-4 col-lg-offset-4">\n <div class=th-checkout__login__form>\n <form id=frmLogin name=frmLogin novalidate data-ng-submit=updateUser()>\n <div class=row>\n <div class=col-xs-12>\n <div class=form-group>\n <input id=inputLoginEmail name=inputLoginEmail class="form-control input-lg immediate-help" data-vn-placeholder="E-mail address" data-ng-model=user.email data-vn-email-validate required>\n\n <div class="input-help bottom" ng-if=frmLogin.inputLoginEmail.$touched>\n <div class=arrow></div>\n <h4>E-mail must:</h4>\n <ul>\n <li ng-class=emailEmpty>Not be <strong>empty</strong></li>\n <li ng-class=validEmail>Be a <strong>valid</strong> address</li>\n </ul>\n </div>\n </div>\n </div>\n </div>\n\n <div class=row data-ng-if=!user.anonymous>\n <div class=col-xs-12>\n <div class=form-group>\n <input type=password id=inputLoginPassword name=inputLoginPassword class="form-control input-lg immediate-help" data-vn-placeholder=Password data-ng-model=user.password data-ng-enter=updateUser() data-vn-password-validate required>\n </div>\n </div>\n </div>\n </form>\n\n <div class=th-checkout__login__user-type>\n <div class=btn-group>\n <button type=button data-ng-click="user.anonymous = true" class="btn btn-default" data-ng-class="{ \'btn-primary\' : user.anonymous }">I\'m a new customer\n </button>\n <button type=button data-ng-click="user.anonymous = false" class="btn btn-default" data-ng-class="{ \'btn-primary\': !user.anonymous }">I\'ve ordered before\n </button>\n </div>\n </div>\n\n <button class="btn btn-primary btn-block btn-lg th-checkout__login__continue" data-ng-disabled=disabledButton data-ng-click=updateUser()>\n Continue <i class="fa fa-angle-right"></i>\n </button>\n\n </div>\n </div>\n </div>\n </div>\n</div>'),a.put("modal/vnErrorModal.tpl.html",'<div class=th-error-details>\n <div class="th-error-details__header modal-header">\n <h1>Sorry, something went wrong with the page...</h1>\n <div class=modal-body>\n <p class=th-error-details__section1>... but it might just be a small glitch. Try refreshing the page\n to see if that fixes it.</p>\n\n <p class=th-error-details__section2>\n If the problem persists, please try again later.\n </p>\n </div>\n <div class=modal-footer>\n <button class="btn btn-warning" ng-click=$close()>Close</button>\n </div>\n </div>\n </div>\n'),a.put("modal/vnMessageModal.tpl.html",'<div class="th-error-wrap clearfix">\n <div class=th-error-details>\n <div class="th-error-details__header modal-header">\n <h1>This is a generic app message template</h1>\n <div class=modal-body>\n <p class=th-message-details__section1>It should be over ridden in the calling application</p>\n\n </div>\n <div class=modal-footer>\n <button class="btn btn-warning" ng-click=$dismiss()>Ok</button>\n <button class="btn btn-warning" ng-click=$close()>Cancel</button>\n </div>\n </div>\n </div>\n</div>'),a.put("nav-menu-mobile/vn-nav-mobile.tpl.html",'<ul class="nav navbar-nav th-mobile-list">\n <li class="th-mobile-list__item th-mobile-list__item--header">Categories</li>\n <li class="dropdown th-mobile-list__item" ng-repeat="category in categories">\n <a href=# class="dropdown-toggle navbar-link th-dropdown-toggle th-mobile-list__link" ng-if=category.subCategories.length data-toggle=dropdown>\n {{category.name}} <span class="pull-right caret"></span>\n </a>\n <a data-ng-href={{category.url}} class="navbar-link th-dropdown-toggle th-mobile-list__link" ng-if=!category.subCategories.length>\n {{category.name}}\n </a>\n <ul class="dropdown-menu th-mobile-list th-mobile-list--sub" data-ng-if=category.subCategories.length>\n <li>\n <a data-ng-href={{category.url}} class="th-mobile-list__link th-mobile-list__link--sub">\n All {{category.name}}\n </a>\n </li>\n <li data-ng-repeat="subCategory in category.subCategories">\n <a class="th-mobile-list__link th-mobile-list__link--sub" data-ng-href={{subCategory.url}}>{{subCategory.name}}</a>\n </li>\n </ul>\n </li>\n</ul>'),a.put("nav-menu/vn-nav.tpl.html",'<div class="collapse navbar-collapse" id=th-main-menu data-ng-class="!navCollapsed && \'in\'" data-ng-click="navCollapsed=true">\n <ul class="nav navbar-nav">\n <li class="dropdown nav-top-level-menu-items" data-ng-repeat="category in smartNavCategories">\n <a class=navbar-link data-ng-href="{{ category.url }}">\n {{category.name}}\n <span data-ng-if=category.subCategories.length class="caret th-dropdown-toggle"></span>\n </a>\n <ul vn-show-on-dropdown-hover class=dropdown-menu data-ng-if=category.subCategories.length>\n <li data-ng-repeat="subCategory in category.subCategories">\n <a data-ng-href="{{ subCategory.url }}">{{subCategory.name}}</a>\n </li>\n </ul>\n </li>\n <li class=dropdown data-ng-show=displaySmartNavMoreMenuItem>\n <a href=# class=navbar-link data-translate=header.smartNavMoreLinkText>\n More\n <span class="caret th-dropdown-toggle"></span>\n </a>\n <ul vn-show-on-dropdown-hover class=dropdown-menu>\n <li data-ng-repeat="category in smartNavMoreCategories">\n <a class=navbar-link data-ng-href="{{ category.url }}">{{category.name}}</a>\n </li>\n </ul>\n </li>\n </ul>\n </div>'),a.put("pagination/vnPaginator.tpl.html",'<ul class=pager data-ng-if="cursor.totalPages > 1">\n <li data-ng-class="{disabled: cursor.currentPage == 1}">\n <a href data-ng-click=prevPage()><span class="glyphicon glyphicon-chevron-left"></span></a></li>\n <li data-ng-class="{disabled: cursor.currentPage == cursor.totalPages}">\n <a href data-ng-click=nextPage()><span class="glyphicon glyphicon-chevron-right"></span></a></li>\n</ul>\n\n <div class=pager>\n Page {{ cursor.currentPage }} of {{ cursor.totalPages }}\n </div>'),a.put("pay-with/credit-card-views.html",'<div class=th-checkout__credit-card data-ng-controller="CreditCardViewsCtrl as cc" data-ng-init=cc.init() data-ng-switch=cc.state>\n\n <div data-vn-credit-card-display data-ng-switch-when=VALIDCARDENTERED data-card=cc.card data-on-dirty=cc.setCardValidFalse() data-on-save=cc.saveCreditCard() data-on-click=cc.toggleChange() data-state=cc.displayCardState>\n </div>\n\n <div data-vn-credit-card-editor data-ng-switch-when=ENTERCARD data-card=cc.card data-on-dirty=cc.setCardValidFalse() data-on-save=cc.saveCreditCard()>\n </div>\n\n <div data-vn-credit-card-picker data-ng-switch-when=PICKCARD data-state=cc.pickCardState data-card=cc.card data-card-list=cc.user.paymentProfiles data-on-select="" data-open-credit-cards=true data-close-picker=cc.closePicker() data-choose-picker=cc.choosePicker() data-enter-card=cc.enterCard() data-set-payment-profile=cc.setPaymentProfile(id) data-selected-index=cc.selectedIndex data-on-dirty-card=cc.setCardValidFalse() data-on-save-card=cc.saveCreditCard()>\n </div>\n\n</div>'),a.put("pay-with/vn-credit-card-display.html",'<div class=th-checkout__credit-card__display data-ng-class="{ \'-verify-CVV\' : state == \'CVV\'}">\n <div class="row clickable" data-ng-cloak data-ng-click=onClick()>\n <div class=col-xs-10>\n <img src="" class=th-checkout__credit-card__display__image data-ng-class="card.ccCssClass">\n <span class=th-checkout__credit-card__display__last4>{{ card.cardNumber.slice(-4) }}</span>\n <span class=th-checkout__credit-card__display__exp>{{card.expMonth }}/{{card.expYear }}</span>\n </div>\n <div class=col-xs-2 data-ng-show=showArrowVal>\n <i class="fa fa-angle-right fa-2x pull-right"></i>\n </div>\n </div>\n <form id=frmCVV name=frmCVV novalidate ng-show="state==\'CVV\'">\n <hr>\n <div class=form-group>\n <div class=row>\n <div class="col-xs-7 th-checkout__credit-card__display__verifyCVV">\n <label class=th-checkout__credit-card__display__verifyCVV__label>Please verify your card</label>\n </div>\n <div class="col-xs-4 col-sm-2 th-checkout__credit-card__display__verifyCVV">\n <input id=inputCreditCardCVV name=inputCreditCardCVV class="form-control input-lg immediate-help" data-vn-placeholder=CVV data-ng-model=card.CVV data-vn-cvv-validate data-vn-cc-type="{{ card.cardTypeName }}" required>\n <input type=hidden data-ng-model=card.pCIaaSId id=hiddenCardID value="{{ card.pCIaaSId }}" name="hiddenCardID">\n <div class="input-help top" ng-if=frmCVV.inputCreditCardCVV.$touched>\n <div class=arrow></div>\n <h4>CVV must:</h4>\n <ul>\n <li ng-class=cvvValidFormat>Be <strong>{{ cvvLength }} digits</strong> long</li>\n </ul>\n </div>\n </div>\n </div>\n </div>\n </form>\n</div>'),a.put("pay-with/vn-credit-card-editor.html",'<div>\n <div class="credit-card-error -aligned" ng-if=card.pCIaaSError ng-click="card.pCIaaSError = \'\'">\n <div class=row>{{card.pCIaaSError}}</div>\n </div>\n <div class="credit-card -aligned" ng-cloak>\n <div class=credit-card__strip></div>\n\n <form id=frmCreditCard name=frmCreditCard novalidate data-ng-submit=updateCreditCard()>\n <div class=row>\n <div class=col-xs-9>\n <div class=form-group>\n <input id=inputCreditCardNumber name=inputCreditCardNumber class="form-control input-lg immediate-help" data-vn-placeholder="Credit card number" data-ng-model=card.cardNumber data-vn-format-cc-number data-vn-cc-validate data-vn-cc-type="{{ card.cardTypeName }}" required>\n <input type=hidden data-ng-hide=true id=hiddenCardType name=hiddenCardType value="{{ card.cardTypeName }}">\n <input type=hidden data-ng-model=card.pCIaaSId id=hiddenCardID value="{{ card.pCIaaSId }}" name="hiddenCardID">\n\n <div class="input-help top-left" ng-if=frmCreditCard.inputCreditCardNumber.$touched>\n <div class=arrow></div>\n <h4>Credit card must:</h4>\n <ul>\n <li ng-class=creditCardValid>Be <strong>valid</strong> credit card number</li>\n <li ng-class=creditCardSupported>Be <strong>supported</strong> credit card issuer</li>\n </ul>\n </div>\n </div>\n </div>\n <div class=col-xs-3>\n <div class=form-group>\n <input id=inputCreditCardCVV name=inputCreditCardCVV class="form-control input-lg immediate-help" data-vn-placeholder=CVV data-ng-model=card.CVV data-ng-focus=setCCImage() data-ng-blur="setCCImage(\'reset\');" data-vn-cvv-validate data-vn-cc-type="{{ card.cardTypeName }}" required>\n\n <div class="input-help top" ng-if=frmCreditCard.inputCreditCardCVV.$touched>\n <div class=arrow></div>\n <h4>CVV must:</h4>\n <ul>\n <li ng-class=cvvValidFormat>Be <strong>{{ cvvLength }} digits</strong> long</li>\n </ul>\n </div>\n </div>\n </div>\n </div>\n\n <div class=row>\n <div class=col-xs-4>\n <div class=form-group>\n <div class="credit-card__exp-month th-dropdown" dropdown>\n <button id=inputCreditCardExpMonth name=inputCreditCardExpMonth class="btn btn-default btn-lg dropdown-toggle form-control immediate-help" type=button data-toggle=dropdown dropdown-togle aria-haspopup=true role=button aria-expanded=false data-ng-class="{ \'ng-invalid\': card.expMonth === \'\' || expDateInvalid === undefined, \'ng-valid\': expDateInvalid === \'valid\' }" data-vn-placeholder=MM data-ng-model=card.expMonth value="{{ card.expMonth }}">\n\n {{ card.expMonth }}<span class=caret></span>\n </button>\n <div class="input-help top-left -dropdown" ng-if=frmCreditCard.inputCreditCardExpMonth.$touched>\n <div class=arrow></div>\n <h4>Expiration date must:</h4>\n <ul>\n <li ng-class=expDateInvalid>Be <strong>future</strong> date</li>\n </ul>\n </div>\n <ul class=dropdown-menu role=menu aria-labelledby=inputCreditCardExpMonth>\n <li ng-repeat="month in months track by $index">\n <a role=menuitem tabindex=-1 href data-ng-click="onExpMonthChanged(month, \'inputCreditCardExpMonth\');">\n\n {{ month.label }}\n </a>\n </li>\n </ul>\n </div>\n </div>\n </div>\n <div class=col-xs-4>\n <div class=form-group>\n <div class="credit-card__exp-year th-dropdown" dropdown>\n <button id=inputCreditCardExpYear name=inputCreditCardExpYear class="btn btn-default btn-lg dropdown-toggle form-control immediate-help" type=button data-toggle=dropdown dropdown-toggle aria-haspopup=true role=button aria-expanded=false data-ng-class="{ \'ng-invalid\': card.expYear === \'\' || expDateInvalid === undefined }" data-vn-placeholder=YY data-ng-model=card.expYear value="{{ card.expYear }}">\n\n {{ card.expYear }}<span class=caret></span>\n </button>\n <div class="input-help top-left -dropdown" ng-if=frmCreditCard.inputCreditCardExpYear.$touched>\n <div class=arrow></div>\n <h4>Expiration date must:</h4>\n <ul>\n <li ng-class=expDateInvalid>Be <strong>future</strong> date</li>\n </ul>\n </div>\n <ul class=dropdown-menu role=menu aria-labelledby=inputCreditCardExpYear>\n <li ng-repeat="year in rangeYears() track by $index">\n <a role=menuitem tabindex=-1 href data-ng-click="onExpYearChanged(year, \'inputCreditCardExpYear\');">\n\n {{ year }}\n </a>\n </li>\n </ul>\n </div>\n </div>\n </div>\n </div>\n\n <div class=row>\n <div class=col-xs-12>\n <div class=form-group>\n <img src="" class=credit-card__image data-ng-class="card.ccCssClass">\n </div>\n </div>\n </div>\n\n </form>\n </div>\n <button class="btn btn-primary btn-block btn-lg th-checkout__step__btn__continue" data-ng-show=showSaveButton data-ng-click=saveCard()>\n {{saveText}} <i class="fa fa-angle-right"></i>\n </button>\n</div>'), -a.put("pay-with/vn-credit-card-picker.html",'<div class=th-checkout__credit-card>\n\n <div class=credit-card data-ng-class="{\'-aligned\': !openCreditCards}" ng-cloak>\n\n <div class="th-checkout__step__drawer -left" data-ng-class="{\'-open\': openCreditCards}">\n\n <div class=th-checkout__step__drawer__body data-ng-show=openCreditCards data-ng-cloak data-ng-switch=state>\n\n <div data-ng-switch-when=PICK>\n <a href class=th-checkout__step__drawer__close data-ng-click=closePicker()>\n <i class="fa fa-close fa-2x"></i>\n </a>\n\n <div class=th-checkout__step__drawer__title>Choose credit card</div>\n\n <div class=th-checkout__credit-card__choose>\n <div class=th-checkout__credit-card__choose__options ng-cloak>\n <div class=th-checkout__credit-card__choose__options__option data-ng-repeat="profile in cardList" data-ng-class="{\'-first\' : $index === 0}">\n <div class=styled-optionbox-option>\n <input type=radio id="profile{{ $index }}" name=profile data-ng-value=true data-ng-model=profile.preferred data-ng-class="{\'-inactive\' : !profile.preferred, \'-selected\' : profile.preferred}" data-ng-change="setIndex({{ $index }})">\n <label for="profile{{ $index }}">\n <img src="" class=th-checkout__credit-card__display__image data-ng-class="getCssClass(profile)">\n <span class=th-checkout__credit-card__display__last4>{{ profile.card.last4 }}</span>\n <span class=th-checkout__credit-card__display__exp>{{ profile.card.expMonth }}/{{ profile.card.expYear }}</span>\n </label>\n </div>\n </div>\n\n <footer class=th-checkout__credit-card__choose__options__new-option ng-repeat-end ng-cloak>\n <a href data-ng-click=addCard()>Enter a different card</a>\n </footer>\n </div>\n\n <button class="btn btn-primary btn-block btn-lg th-checkout__step__btn__continue" data-ng-click=choosePicker()>\n Continue <i class="fa fa-angle-right"></i>\n </button>\n </div>\n\n <div class=th-checkout__step__backButton>\n <a href=javascript:void(0); data-ng-click=closePicker()>\n <i class="fa fa-arrow-left"> back</i>\n </a>\n </div>\n </div>\n\n <div data-ng-switch-when=ENTER>\n <div class=th-checkout__step__drawer__title>Add credit card</div>\n <div data-vn-credit-card-editor data-card=card data-on-dirty=onDirtyCard() data-on-save=onSaveCard() data-show-save-button=true>\n </div>\n <div class=th-checkout__step__backButton>\n <a href=javascript:void(0); data-ng-click=goBackFromEnter()>\n <i class="fa fa-arrow-left"> back</i>\n </a>\n </div>\n </div>\n\n </div>\n </div>\n\n </div>\n\n</div>'),a.put("popover/vn-popover.tpl.html",'<div class="input-help {{ ::location }}">\n <div class=arrow></div>\n <h4>{{ ::title }}</h4>\n</div>'),a.put("product-image/vn-product-image.tpl.html",'<img data-ng-src="{{ getImagePath(product.imageCollections) }}" class=img-responsive alt="{{ product.name }}">'),a.put("product-search/vnSearchForm.tpl.html",'<div class=th-search role=search>\n <div data-ng-show=showSearch class=th-search__popout>\n <form class=form-inline role=search name=frmSearch data-ng-submit=doSearch() novalidate>\n <div class=form-group>\n <input data-ng-model=searchTerm class=th-search__popout--input placeholder=Search...>\n <button type=button data-ng-click=doSearch() class="btn btn-xs btn-primary th-search__popout--submit">Go!\n </button>\n </div>\n </form>\n </div>\n\n <a id=search-toggle data-ng-click="showSearch = !showSearch" ng-show=allowCollapse type=button class=th-search__trigger data-ng-class="{ \'-position\' : !showSearch }">\n <span class="glyphicon glyphicon-search"></span>\n </a>\n</div>'),a.put("review/review-details-2.html","<div data-ng-controller=ReviewDetailsCtrl>\n\n <div class=th-checkout__thanks__title>Ship To</div>\n <div class=th-checkout__address__display data-ng-if=shippingAddress>\n <div vn-address-display data-address=shippingAddress></div>\n </div>\n\n <div class=th-checkout__thanks__title>Shipping Method</div>\n <div class=th-checkout__ship-method>\n <div class=th-checkout__ship-method__display data-ng-if=shippingMethod>\n <div class=th-checkout__ship-method__display__name data-ng-bind-html=shippingMethod.name></div>\n <div class=th-checkout__ship-method__display__price>{{ shippingMethod.price | vnCurrency }}</div>\n </div>\n </div>\n\n <div class=th-checkout__thanks__title>Paid With</div>\n <div data-vn-credit-card-display data-card=payment data-state=NOCVV data-show-arrow=false></div>\n\n <div class=th-checkout__thanks__title>Billing Address</div>\n <div class=th-checkout__address__display data-ng-if=billingAddress>\n <div vn-address-display data-address=billingAddress></div>\n </div>\n\n</div>"),a.put("review/review-details.html",'<div data-ng-controller=ReviewDetailsCtrl>\n <div class=th-checkout__thanks__title>Ship To</div>\n <div class=th-checkout__thanks__display>\n <div class=row>\n <div class=col-xs-12>\n <span>{{ shippingAddress.firstName }} {{ shippingAddress.lastName }}</span>\n <br>\n <span>{{ shippingAddress.address1 }}</span>\n <br>\n <span data-ng-if="shippingAddress.address2 != \'\'">{{ shippingAddress.address2 }}</span>\n <br data-ng-if="shippingAddress.address2 != \'\'">\n <span data-ng-show=isShippingLocationUS>{{ shippingAddress.city }}, {{ shippingAddress.state }} {{ shippingAddress.postalCode }}</span>\n <br>\n <span data-ng-show=isShippingLocationUS>{{ shippingAddress.phoneNumber | vnUsPhone }}</span>\n\n \n <span data-ng-show=!isShippingLocationUS>{{ shippingAddress.city }}</span>\n <br>\n <span data-ng-show=!isShippingLocationUS>{{ shippingAddress.state }} {{ shippingAddress.postalCode }}</span>\n <br>\n <span data-ng-show=!isShippingLocationUS>{{ shippingAddress.country }}</span>\n <br>\n <span data-ng-show=!isShippingLocationUS>{{ shippingAddress.phoneNumber }}</span>\n \n\n </div>\n </div>\n\n <br style="clear : both">\n </div>\n\n <div class=th-checkout__thanks__title>Shipping Method</div>\n <div class=th-checkout__thanks__display>\n <div class=row>\n <div class=col-xs-12>\n <div class=th-checkout__ship-method__display>\n <div class=th-checkout__ship-method__display__name data-ng-bind-html=shippingMethod.name></div>\n <div class=th-checkout__ship-method__display__price>{{ shippingMethod.price | vnCurrency }}</div>\n </div>\n </div>\n </div>\n\n <br style="clear : both">\n </div>\n\n <div class=th-checkout__thanks__title>Paid With</div>\n\n <div class=th-checkout__thanks__display>\n <div class=row>\n <div class=col-xs-12>\n <span class=credit-card__total>{{ payment.total.grandTotal | currency }} charged to</span>\n <br>\n <span class=credit-card__number>{{ payment.card.cardNumber | vnCreditCard:payment.cardType.name }}</span>\n <br>\n <span>{{ payment.card.expMonth }} / {{ payment.card.expYear }}</span>\n <br>\n <img src="" class=credit-card__image data-ng-class="payment.ccCssClass">\n </div>\n </div>\n\n <br style="clear : both">\n </div>\n\n <div class=th-checkout__thanks__title>Billing Address</div>\n <div class=th-checkout__thanks__display>\n <div class=row>\n <div class=col-xs-12>\n <span>{{ billingAddress.firstName }} {{ billingAddress.lastName }}</span>\n <br>\n <span>{{ billingAddress.address1 }}</span>\n <br>\n <span data-ng-if="billingAddress.address2 != \'\'">{{ billingAddress.address2 }}</span>\n <br data-ng-if="billingAddress.address2 != \'\'">\n <span data-ng-show=isBillingLocationUS>{{ billingAddress.city }}, {{ billingAddress.state }} {{ billingAddress.postalCode }}</span>\n <br>\n <span data-ng-show=isBillingLocationUS>{{ billingAddress.phoneNumber | vnUsPhone }}</span>\n\n \n <span data-ng-show=!isBillingLocationUS>{{ billingAddress.city }}</span>\n <br>\n <span data-ng-show=!isBillingLocationUS>{{ billingAddress.state }} {{ billingAddress.postalCode }}</span>\n <br>\n <span data-ng-show=!isBillingLocationUS>{{ billingAddress.country }}</span>\n <br>\n <span data-ng-show=!isBillingLocationUS>{{ billingAddress.phoneNumber }}</span>\n \n\n </div>\n </div>\n\n <br style="clear : both">\n </div>\n</div>'),a.put("review/review.html",'<div class=th-checkout__review data-ng-controller=ReviewCtrl>\n\n <div class="review__totals clearfix">\n <div class=review__totals__count>{{ checkout.cart.totals.qty }} items</div>\n <div class=review__totals__expand ng-class="{expanded: !reviewItems}"><button data-ng-click="reviewItems = !reviewItems"><span></span></button></div>\n <div class=review__totals__amount>{{ checkout.cart.totals.items | currency }}</div>\n </div>\n\n <div class=review__items data-ng-show=!reviewItems>\n <div class="review__items__item clearfix" data-ng-repeat="item in ::checkout.cart.items | reverse" data-ng-class="{\'-last\': $last}">\n\n <div class=review__items__item-image>\n <img data-ng-src="{{ item.imgUrl }}">\n </div>\n\n <div class=review__items__item-info>\n <div class=review__items__item-info--name>\n <span>{{ item.name }}</span>\n </div>\n\n <div class=review__items__item-info--price>{{ item.pricing.unitPrice | currency }}</div>\n\n <div class=review__items__item-info--option data-ng-repeat="option in item.options">\n <span>{{ option.optionText }}</span>\n </div>\n\n <div class=item-info-row>\n <div class=review__items__item-info--qty>\n <span>Qty</span> {{ item.qty }}\n </div>\n <div class=review__items_-info--subtotal>{{ item.pricing.subtotal | currency }}</div>\n </div>\n\n <div class=item-info-row data-ng-if="item.giftWrap.price > 0">\n <div class=review__items__item-info--qty>\n <span>Gift Wrap</span>\n </div>\n <div class=review__items__item-info--subtotal>{{ item.giftWrap.price | currency }}</div>\n </div>\n\n <div class=item-info-row data-ng-if="item.giftWrap.message != \'\'">\n <span>Message:</span> "{{ item.giftWrap.message }}"\n </div>\n </div>\n </div>\n </div>\n\n <div class=review__discounts data-ng-if=checkout.cart.discounts.length>\n <div class=review__discounts__discount data-ng-repeat="discount in checkout.cart.discounts">\n <div class=discount-info-row>\n <div class=review__discounts__discount-info>\n <span>{{ discount.name }}</span>\n </div>\n <div class=review__discounts__discount-info--subtotal>{{ discount.value | vnCurrency }}</div>\n </div>\n </div>\n </div>\n\n <div class=review__store-credit data-ng-if="checkout.cart.customer.storeCredit != 0">\n <div class=store-credit-info-row>\n <div class=review__store-credit-info>\n <span>Store Credit</span>\n </div>\n <div class=review__store-credit-info--subtotal>{{ checkout.cart.customer.storeCredit | vnCurrency }}</div>\n </div>\n </div>\n\n <div class=review__shipping-method>\n <div class=shipping-method-info-row>\n <div class=review__shipping-method-info">\n <span>Shipping</span>\n \n \n \n </div>\n <div class=review__shipping-method-info--subtotal>{{checkout.cart.totals.shipping | vnCurrency }}</div>\n </div>\n </div>\n\n <div class=review__tax>\n <div class=tax-info-row>\n <div class=review__tax-info">\n <span>Tax</span>\n </div>\n <div class=review__tax-info--subtotal>{{ checkout.cart.totals.taxTotal | currency }}</div>\n </div>\n </div>\n\n <div class=review__grand-total>\n <div class=grand-total-info-row>\n <div class=review__grand-total-info">\n <span>Grand Total</span>\n </div>\n <div class=review__grand-total-info--subtotal>{{ checkout.cart.totals.grandTotal | currency }}</div>\n </div>\n </div>\n</div>'),a.put("ship-method/ship-method.html",'<div class=th-checkout__ship-method__heading data-ng-show="checkout.cart.shippingMethods.length > 0">\n Shipping Method\n</div>\n\n<div class=th-checkout__ship-method data-ng-controller=ShipMethodCtrl data-ng-show="checkout.cart.shippingMethods.length > 0" data-ng-switch=isEditable()>\n\n\n <div class=th-checkout__ship-method__method data-ng-switch-when=edit data-ng-repeat="method in checkout.cart.shippingMethods">\n\n <div class=styled-optionbox-option>\n <input type=radio id="shipping{{ $index }}" name=shipping data-ng-value=true data-ng-model=method.selected data-ng-change="setPreferredShippingMethod({{ $index }})">\n <label for="shipping{{ $index }}">\n <div data-ng-bind-html=method.name></div>\n </label>\n </div>\n <div class=th-checkout__ship-method__price>{{ method.price | vnCurrency }}</div>\n\n </div>\n\n <div class=th-checkout__ship-method__display data-ng-switch-when=show>\n <div class=th-checkout__ship-method__display__name data-ng-bind-html=checkout.cart.shippingMethods[currentShippingMethodIdx].name></div>\n <div class=th-checkout__ship-method__display__price>{{ checkout.cart.shippingMethods[currentShippingMethodIdx].price | vnCurrency }}</div>\n\n </div>\n\n</div>'),a.put("ship-to/ship-to-views.html",'<div class=th-checkout__ship-to data-ng-controller="ShipToViewsCtrl as vm" data-ng-switch=vm.state data-ng-init=vm.init()>\n\n <div class=th-checkout__ship-to__overlay data-ng-if=vm.loading vn-busy-animation vn-busy-animation-show="{{ vm.loading }}" vn-busy-animation-size=80px vn-busy-animation-class=th-checkout__ship-to__overlay-spinner></div>\n\n <div class=th-checkout__address__display data-ng-switch-when=VIEWADDRESS>\n <vn-address-display data-address=vm.shippingAddress data-on-click=vm.editShippingAddress() data-show-edit-button=vm.shippingAddress></vn-address-display>\n </div>\n\n <div class=th-checkout__ship-to__enterAddress data-ng-switch-when=EDITADDRESS ng-cloak>\n <div data-vn-address-editor="" address=vm.shippingAddress countries=vm.countries data-on-save=vm.saveShippingAddress() data-show-save-button=!vm.showSaveButton data-save-text="Get Shipping Rates"></div>\n </div>\n\n\n <div vn-address-picker data-ng-switch-when=PICKADDRESS data-address-list=vm.user.shippingAddresses data-new-address-title="Add Shipping Address" data-select-address-title="Choose Shipping Address" data-back-to-text="back to Ship To" data-show-copy-address=vm.showCopyAddress data-countries=vm.countries data-on-address-selected=vm.onAddressSelected() data-save-address=vm.onAddressAdded(newAddress)></div>\n\n</div>'),a.put("thank-you/thank-you.html",'<div class=th-checkout__thanks ng-cloak="">\n <div class=th-checkout__thanks__header>\n <div class=title>Thank you for your order.</div>\n <div class=order-info>Your order number is No.{{ ::orderId }}</div>\n <div class=action-info>A copy of this has been sent to<br>{{ ::userEmail }}</div>\n\n <br style="clear : both">\n </div>\n\n <div class=row>\n <div class="th-checkout__thanks__column col-md-6 col-xs-12">\n <div class=th-checkout__thanks__title>Order Details</div>\n <div ng-include=" \'review/review.html\' "></div>\n </div>\n <div class="th-checkout__thanks__column -next col-md-6 col-xs-12">\n <div ng-include=" \'review/review-details.html\' "></div>\n </div>\n\n <br style="clear : both">\n </div>\n</div>')}]),!function(a,b){b["true"]=a,angular.module("textAngularSetup",[]).value("taOptions",{toolbar:[["h1","h2","h3","h4","h5","h6","p","pre","quote"],["bold","italics","underline","ul","ol","redo","undo","clear"],["justifyLeft","justifyCenter","justifyRight","indent","outdent"],["html","insertImage","insertLink","insertVideo"]],classes:{focussed:"focussed",toolbar:"btn-toolbar",toolbarGroup:"btn-group",toolbarButton:"btn btn-default",toolbarButtonActive:"active",disabled:"disabled",textEditor:"form-control",htmlEditor:"form-control"},setup:{textEditorSetup:function(){},htmlEditorSetup:function(){}},defaultFileDropHandler:function(a,b){var c=new FileReader;return"image"===a.type.substring(0,5)?(c.onload=function(){""!==c.result&&b("insertImage",c.result,!0)},c.readAsDataURL(a),!0):!1}}).value("taSelectableElements",["a","img"]).value("taCustomRenderers",[{selector:"img",customAttribute:"ta-insert-video",renderLogic:function(a){var b=angular.element("<iframe></iframe>"),c=a.prop("attributes");angular.forEach(c,function(a){b.attr(a.name,a.value)}),b.attr("src",b.attr("ta-insert-video")),a.replaceWith(b)}}]).constant("taTranslations",{html:{buttontext:"Toggle HTML",tooltip:"Toggle html / Rich Text"},heading:{tooltip:"Heading "},p:{tooltip:"Paragraph"},pre:{tooltip:"Preformatted text"},ul:{tooltip:"Unordered List"},ol:{tooltip:"Ordered List"},quote:{tooltip:"Quote/unqoute selection or paragraph"},undo:{tooltip:"Undo"},redo:{tooltip:"Redo"},bold:{tooltip:"Bold"},italic:{tooltip:"Italic"},underline:{tooltip:"Underline"},justifyLeft:{tooltip:"Align text left"},justifyRight:{tooltip:"Align text right"},justifyCenter:{tooltip:"Center"},indent:{tooltip:"Increase indent"},outdent:{tooltip:"Decrease indent"},clear:{tooltip:"Clear formatting"},insertImage:{dialogPrompt:"Please enter an image URL to insert",tooltip:"Insert image",hotkey:"the - possibly language dependent hotkey ... for some future implementation"},insertVideo:{tooltip:"Insert video",dialogPrompt:"Please enter a youtube URL to embed"},insertLink:{tooltip:"Insert / edit link",dialogPrompt:"Please enter a URL to insert"}}).run(["taRegisterTool","$window","taTranslations","taSelection",function(a,b,c,d){a("html",{buttontext:c.html.buttontext,tooltiptext:c.html.tooltip,action:function(){this.$editor().switchView()},activeState:function(){return this.$editor().showHtml}});var e=function(a){return function(){return this.$editor().queryFormatBlockState(a)}},f=function(){return this.$editor().wrapSelection("formatBlock","<"+this.name.toUpperCase()+">")};angular.forEach(["h1","h2","h3","h4","h5","h6"],function(b){a(b.toLowerCase(),{buttontext:b.toUpperCase(),tooltiptext:c.heading.tooltip+b.charAt(1),action:f,activeState:e(b.toLowerCase())})}),a("p",{buttontext:"P",tooltiptext:c.p.tooltip,action:function(){return this.$editor().wrapSelection("formatBlock","<P>")},activeState:function(){return this.$editor().queryFormatBlockState("p")}}),a("pre",{buttontext:"pre",tooltiptext:c.pre.tooltip,action:function(){return this.$editor().wrapSelection("formatBlock","<PRE>")},activeState:function(){return this.$editor().queryFormatBlockState("pre")}}),a("ul",{iconclass:"fa fa-list-ul",tooltiptext:c.ul.tooltip,action:function(){return this.$editor().wrapSelection("insertUnorderedList",null)},activeState:function(){return this.$editor().queryCommandState("insertUnorderedList")}}),a("ol",{iconclass:"fa fa-list-ol",tooltiptext:c.ol.tooltip,action:function(){return this.$editor().wrapSelection("insertOrderedList",null)},activeState:function(){return this.$editor().queryCommandState("insertOrderedList")}}),a("quote",{iconclass:"fa fa-quote-right",tooltiptext:c.quote.tooltip,action:function(){return this.$editor().wrapSelection("formatBlock","<BLOCKQUOTE>")},activeState:function(){return this.$editor().queryFormatBlockState("blockquote")}}),a("undo",{iconclass:"fa fa-undo",tooltiptext:c.undo.tooltip,action:function(){return this.$editor().wrapSelection("undo",null)}}),a("redo",{iconclass:"fa fa-repeat",tooltiptext:c.redo.tooltip,action:function(){return this.$editor().wrapSelection("redo",null)}}),a("bold",{iconclass:"fa fa-bold",tooltiptext:c.bold.tooltip,action:function(){return this.$editor().wrapSelection("bold",null)},activeState:function(){return this.$editor().queryCommandState("bold")},commandKeyCode:98}),a("justifyLeft",{iconclass:"fa fa-align-left",tooltiptext:c.justifyLeft.tooltip,action:function(){return this.$editor().wrapSelection("justifyLeft",null)},activeState:function(a){var b=!1;return a&&(b="left"===a.css("text-align")||"left"===a.attr("align")||"right"!==a.css("text-align")&&"center"!==a.css("text-align")&&!this.$editor().queryCommandState("justifyRight")&&!this.$editor().queryCommandState("justifyCenter")),b=b||this.$editor().queryCommandState("justifyLeft")}}),a("justifyRight",{iconclass:"fa fa-align-right",tooltiptext:c.justifyRight.tooltip,action:function(){return this.$editor().wrapSelection("justifyRight",null)},activeState:function(a){var b=!1;return a&&(b="right"===a.css("text-align")),b=b||this.$editor().queryCommandState("justifyRight")}}),a("justifyCenter",{iconclass:"fa fa-align-center",tooltiptext:c.justifyCenter.tooltip,action:function(){return this.$editor().wrapSelection("justifyCenter",null)},activeState:function(a){var b=!1;return a&&(b="center"===a.css("text-align")),b=b||this.$editor().queryCommandState("justifyCenter")}}),a("indent",{iconclass:"fa fa-indent",tooltiptext:c.indent.tooltip,action:function(){return this.$editor().wrapSelection("indent",null)},activeState:function(){return this.$editor().queryFormatBlockState("blockquote")}}),a("outdent",{iconclass:"fa fa-outdent",tooltiptext:c.outdent.tooltip,action:function(){return this.$editor().wrapSelection("outdent",null)},activeState:function(){return!1}}),a("italics",{iconclass:"fa fa-italic",tooltiptext:c.italic.tooltip,action:function(){return this.$editor().wrapSelection("italic",null)},activeState:function(){return this.$editor().queryCommandState("italic")},commandKeyCode:105}),a("underline",{iconclass:"fa fa-underline",tooltiptext:c.underline.tooltip,action:function(){return this.$editor().wrapSelection("underline",null)},activeState:function(){return this.$editor().queryCommandState("underline")},commandKeyCode:117}),a("clear",{iconclass:"fa fa-ban",tooltiptext:c.clear.tooltip,action:function(a,b){this.$editor().wrapSelection("removeFormat",null);var c=angular.element(d.getSelectionElement()),e=function(a){a=angular.element(a);var b=a;angular.forEach(a.children(),function(a){var c=angular.element("<p></p>");c.html(angular.element(a).html()),b.after(c),b=c}),a.remove()};angular.forEach(c.find("ul"),e),angular.forEach(c.find("ol"),e);var f=this.$editor(),g=function(a){a=angular.element(a),a[0]!==f.displayElements.text[0]&&a.removeAttr("class"),angular.forEach(a.children(),g)};angular.forEach(c,g),"li"!==c[0].tagName.toLowerCase()&&"ol"!==c[0].tagName.toLowerCase()&&"ul"!==c[0].tagName.toLowerCase()&&this.$editor().wrapSelection("formatBlock","<p>"),b()}});var g=function(a,b,c){var d=function(){c.updateTaBindtaTextElement(),c.hidePopover()};a.preventDefault(),c.displayElements.popover.css("width","375px");var e=c.displayElements.popoverContainer;e.empty();var f=angular.element('<div class="btn-group" style="padding-right: 6px;">'),g=angular.element('<button type="button" class="btn btn-default btn-sm btn-small" unselectable="on" tabindex="-1">100% </button>');g.on("click",function(a){a.preventDefault(),b.css({width:"100%",height:""}),d()});var h=angular.element('<button type="button" class="btn btn-default btn-sm btn-small" unselectable="on" tabindex="-1">50% </button>');h.on("click",function(a){a.preventDefault(),b.css({width:"50%",height:""}),d()});var i=angular.element('<button type="button" class="btn btn-default btn-sm btn-small" unselectable="on" tabindex="-1">25% </button>');i.on("click",function(a){a.preventDefault(),b.css({width:"25%",height:""}),d()});var j=angular.element('<button type="button" class="btn btn-default btn-sm btn-small" unselectable="on" tabindex="-1">Reset</button>');j.on("click",function(a){a.preventDefault(),b.css({width:"",height:""}),d()}),f.append(g),f.append(h),f.append(i),f.append(j),e.append(f),f=angular.element('<div class="btn-group" style="padding-right: 6px;">');var k=angular.element('<button type="button" class="btn btn-default btn-sm btn-small" unselectable="on" tabindex="-1"><i class="fa fa-align-left"></i></button>');k.on("click",function(a){a.preventDefault(),b.css("float","left"),d()});var l=angular.element('<button type="button" class="btn btn-default btn-sm btn-small" unselectable="on" tabindex="-1"><i class="fa fa-align-right"></i></button>');l.on("click",function(a){a.preventDefault(),b.css("float","right"),d()});var m=angular.element('<button type="button" class="btn btn-default btn-sm btn-small" unselectable="on" tabindex="-1"><i class="fa fa-align-justify"></i></button>');m.on("click",function(a){a.preventDefault(),b.css("float",""),d()}),f.append(k),f.append(m),f.append(l),e.append(f),f=angular.element('<div class="btn-group">');var n=angular.element('<button type="button" class="btn btn-default btn-sm btn-small" unselectable="on" tabindex="-1"><i class="fa fa-trash-o"></i></button>');n.on("click",function(a){a.preventDefault(),b.remove(),d()}),f.append(n),e.append(f),c.showPopover(b),c.showResizeOverlay(b)};a("insertImage",{iconclass:"fa fa-picture-o",tooltiptext:c.insertImage.tooltip,action:function(){var a;return a=b.prompt(c.insertImage.dialogPrompt,"http://"),a&&""!==a&&"http://"!==a?this.$editor().wrapSelection("insertImage",a,!0):void 0},onElementSelect:{element:"img",action:g}}),a("insertVideo",{iconclass:"fa fa-youtube-play",tooltiptext:c.insertVideo.tooltip,action:function(){var a;if(a=b.prompt(c.insertVideo.dialogPrompt,"http://"),a&&""!==a&&"http://"!==a){var d=a.match(/(\?|&)v=[^&]*/);if(d.length>0){var e="http://www.youtube.com/embed/"+d[0].substring(3),f='<img class="ta-insert-video" ta-insert-video="'+e+'" contenteditable="false" src="" allowfullscreen="true" width="300" frameborder="0" height="250"/>';return this.$editor().wrapSelection("insertHTML",f,!0)}}},onElementSelect:{element:"img",onlyWithAttrs:["ta-insert-video"],action:g}}),a("insertLink",{tooltiptext:c.insertLink.tooltip,iconclass:"fa fa-link",action:function(){var a;return a=b.prompt(c.insertLink.dialogPrompt,"http://"),a&&""!==a&&"http://"!==a?this.$editor().wrapSelection("createLink",a,!0):void 0},activeState:function(a){return a?"A"===a[0].tagName:!1},onElementSelect:{element:"a",action:function(a,d,e){a.preventDefault(),e.displayElements.popover.css("width","435px");var f=e.displayElements.popoverContainer;f.empty(),f.css("line-height","28px");var g=angular.element('<a href="'+d.attr("href")+'" target="_blank">'+d.attr("href")+"</a>");g.css({display:"inline-block","max-width":"200px",overflow:"hidden","text-overflow":"ellipsis","white-space":"nowrap","vertical-align":"middle"}),f.append(g);var h=angular.element('<div class="btn-group pull-right">'),i=angular.element('<button type="button" class="btn btn-default btn-sm btn-small" tabindex="-1" unselectable="on"><i class="fa fa-edit icon-edit"></i></button>');i.on("click",function(a){a.preventDefault();var f=b.prompt(c.insertLink.dialogPrompt,d.attr("href"));f&&""!==f&&"http://"!==f&&(d.attr("href",f),e.updateTaBindtaTextElement()),e.hidePopover()}),h.append(i);var j=angular.element('<button type="button" class="btn btn-default btn-sm btn-small" tabindex="-1" unselectable="on"><i class="fa fa-unlink icon-unlink"></i></button>');j.on("click",function(a){a.preventDefault(),d.replaceWith(d.contents()),e.updateTaBindtaTextElement(),e.hidePopover()}),h.append(j);var k=angular.element('<button type="button" class="btn btn-default btn-sm btn-small" tabindex="-1" unselectable="on">Open in New Window</button>');"_blank"===d.attr("target")&&k.addClass("active"),k.on("click",function(a){a.preventDefault(),d.attr("target","_blank"===d.attr("target")?"":"_blank"),k.toggleClass("active"),e.updateTaBindtaTextElement()}),h.append(k),f.append(h),e.showPopover(d)}}})}]),function(){"Use Strict";function a(a){try{return 0!==angular.element(a).length}catch(b){return!1}}function b(a,c){var d=[],e=a.children();return e.length&&angular.forEach(e,function(a){d=d.concat(b(angular.element(a),c))}),void 0!==a.attr(c)&&d.push(a),d}function c(b,c){if(!b||""===b||n.hasOwnProperty(b))throw"textAngular Error: A unique name is required for a Tool Definition";if(c.display&&(""===c.display||!a(c.display))||!c.display&&!c.buttontext&&!c.iconclass)throw'textAngular Error: Tool Definition for "'+b+'" does not have a valid display/iconclass/buttontext value';n[b]=c}var d=!1;/AppleWebKit\/([\d.]+)/.exec(navigator.userAgent)&&(document.addEventListener("click",function(){var a=window.event.target;if(d&&null!==a){for(var b=!1,c=a;null!==c&&"html"!==c.tagName.toLowerCase()&&!b;)b="true"===c.contentEditable,c=c.parentNode;b||(document.getElementById("textAngular-editableFix-010203040506070809").setSelectionRange(0,0),a.focus())}d=!1},!1),angular.element(document).ready(function(){angular.element(document.body).append(angular.element('<input id="textAngular-editableFix-010203040506070809" style="width:1px;height:1px;border:none;margin:0;padding:0;position:absolute; top: -10000; left: -10000;" unselectable="on" tabIndex="-1">'))}));var e=function(){var a,b=-1,c=window.navigator.userAgent,d=c.indexOf("MSIE "),e=c.indexOf("Trident/");if(d>0)b=parseInt(c.substring(d+5,c.indexOf(".",d)),10);else if(e>0){var f=c.indexOf("rv:");b=parseInt(c.substring(f+3,c.indexOf(".",f)),10)}return b>-1?b:a}();"function"!=typeof String.prototype.trim&&(String.prototype.trim=function(){return this.replace(/^\s\s*/,"").replace(/\s\s*$/,"")});var f,g,h,i,j;if(e>8||void 0===e){var k=function(){var a=document.createElement("style");return/AppleWebKit\/([\d.]+)/.exec(navigator.userAgent)&&a.appendChild(document.createTextNode("")),document.head.insertBefore(a,document.head.firstChild),a.sheet}();f=function(){var a=document.createElement("style");return/AppleWebKit\/([\d.]+)/.exec(navigator.userAgent)&&a.appendChild(document.createTextNode("")),document.head.appendChild(a),a.sheet}(),g=function(a,b){i(f,a,b)},i=function(a,b,c){var d;return a.rules?d=Math.max(a.rules.length-1,0):a.cssRules&&(d=Math.max(a.cssRules.length-1,0)),a.insertRule?a.insertRule(b+"{"+c+"}",d):a.addRule(b,c,d),d},h=function(a){j(f,a)},j=function(a,b){a.removeRule?a.removeRule(b):a.deleteRule(b)},i(k,".ta-scroll-window.form-control","height: auto; min-height: 300px; overflow: auto; font-family: inherit; font-size: 100%; position: relative; padding: 0;"),i(k,".ta-root.focussed .ta-scroll-window.form-control","border-color: #66afe9; outline: 0; -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6);"),i(k,".ta-editor.ta-html","min-height: 300px; height: auto; overflow: auto; font-family: inherit; font-size: 100%;"),i(k,".ta-scroll-window > .ta-bind","height: auto; min-height: 300px; padding: 6px 12px;"),i(k,".ta-root .ta-resizer-handle-overlay","z-index: 100; position: absolute; display: none;"),i(k,".ta-root .ta-resizer-handle-overlay > .ta-resizer-handle-info","position: absolute; bottom: 16px; right: 16px; border: 1px solid black; background-color: #FFF; padding: 0 4px; opacity: 0.7;"),i(k,".ta-root .ta-resizer-handle-overlay > .ta-resizer-handle-background","position: absolute; bottom: 5px; right: 5px; left: 5px; top: 5px; border: 1px solid black; background-color: rgba(0, 0, 0, 0.2);"),i(k,".ta-root .ta-resizer-handle-overlay > .ta-resizer-handle-corner","width: 10px; height: 10px; position: absolute;"),i(k,".ta-root .ta-resizer-handle-overlay > .ta-resizer-handle-corner-tl","top: 0; left: 0; border-left: 1px solid black; border-top: 1px solid black;"),i(k,".ta-root .ta-resizer-handle-overlay > .ta-resizer-handle-corner-tr","top: 0; right: 0; border-right: 1px solid black; border-top: 1px solid black;"),i(k,".ta-root .ta-resizer-handle-overlay > .ta-resizer-handle-corner-bl","bottom: 0; left: 0; border-left: 1px solid black; border-bottom: 1px solid black;"),i(k,".ta-root .ta-resizer-handle-overlay > .ta-resizer-handle-corner-br","bottom: 0; right: 0; border: 1px solid black; cursor: se-resize; background-color: white;")}var l=!1,m=angular.module("textAngular",["ngSanitize","textAngularSetup"]),n={};m.constant("taRegisterTool",c),m.value("taTools",n),m.config([function(){angular.forEach(n,function(a,b){delete n[b]})}]),m.directive("textAngular",["$compile","$timeout","taOptions","taSelection","taExecCommand","textAngularManager","$window","$document","$animate","$log",function(a,b,c,d,e,f,g,h,i,j){return{require:"?ngModel",scope:{},restrict:"EA",link:function(k,l,m,n){var o,p,q,r,s,t,u,v,w,x=m.serial?m.serial:Math.floor(1e16*Math.random()),y=m.name?m.name:"textAngularEditor"+x,z=function(a,c,d){ -b(function(){var b=function(){a.off(c,b),d()};a.on(c,b)},100)};w=e(m.taDefaultWrap),angular.extend(k,angular.copy(c),{wrapSelection:function(a,b,c){w(a,!1,b),c&&k["reApplyOnSelectorHandlerstaTextElement"+x](),k.displayElements.text[0].focus()},showHtml:!1}),m.taFocussedClass&&(k.classes.focussed=m.taFocussedClass),m.taTextEditorClass&&(k.classes.textEditor=m.taTextEditorClass),m.taHtmlEditorClass&&(k.classes.htmlEditor=m.taHtmlEditorClass),m.taTextEditorSetup&&(k.setup.textEditorSetup=k.$parent.$eval(m.taTextEditorSetup)),m.taHtmlEditorSetup&&(k.setup.htmlEditorSetup=k.$parent.$eval(m.taHtmlEditorSetup)),k.fileDropHandler=m.taFileDrop?k.$parent.$eval(m.taFileDrop):k.defaultFileDropHandler,u=l[0].innerHTML,l[0].innerHTML="",k.displayElements={forminput:angular.element("<input type='hidden' tabindex='-1' style='display: none;'>"),html:angular.element("<textarea></textarea>"),text:angular.element("<div></div>"),scrollWindow:angular.element("<div class='ta-scroll-window'></div>"),popover:angular.element('<div class="popover fade bottom" style="max-width: none; width: 305px;"></div>'),popoverArrow:angular.element('<div class="arrow"></div>'),popoverContainer:angular.element('<div class="popover-content"></div>'),resize:{overlay:angular.element('<div class="ta-resizer-handle-overlay"></div>'),background:angular.element('<div class="ta-resizer-handle-background"></div>'),anchors:[angular.element('<div class="ta-resizer-handle-corner ta-resizer-handle-corner-tl"></div>'),angular.element('<div class="ta-resizer-handle-corner ta-resizer-handle-corner-tr"></div>'),angular.element('<div class="ta-resizer-handle-corner ta-resizer-handle-corner-bl"></div>'),angular.element('<div class="ta-resizer-handle-corner ta-resizer-handle-corner-br"></div>')],info:angular.element('<div class="ta-resizer-handle-info"></div>')}},k.displayElements.popover.append(k.displayElements.popoverArrow),k.displayElements.popover.append(k.displayElements.popoverContainer),k.displayElements.scrollWindow.append(k.displayElements.popover),k.displayElements.popover.on("mousedown",function(a,b){return b&&angular.extend(a,b),a.preventDefault(),!1}),k.showPopover=function(a){k.displayElements.popover.css("display","block"),k.reflowPopover(a),i.addClass(k.displayElements.popover,"in"),z(l,"click keyup",function(){k.hidePopover()})},k.reflowPopover=function(a){k.displayElements.text[0].offsetHeight-51>a[0].offsetTop?(k.displayElements.popover.css("top",a[0].offsetTop+a[0].offsetHeight+"px"),k.displayElements.popover.removeClass("top").addClass("bottom")):(k.displayElements.popover.css("top",a[0].offsetTop-54+"px"),k.displayElements.popover.removeClass("bottom").addClass("top"));var b=k.displayElements.text[0].offsetWidth-k.displayElements.popover[0].offsetWidth,c=a[0].offsetLeft+a[0].offsetWidth/2-k.displayElements.popover[0].offsetWidth/2;k.displayElements.popover.css("left",Math.max(0,Math.min(b,c))+"px"),k.displayElements.popoverArrow.css("margin-left",Math.min(c,Math.max(0,c-b))-11+"px")},k.hidePopover=function(){i.removeClass(k.displayElements.popover,"in",function(){k.displayElements.popover.css("display",""),k.displayElements.popoverContainer.attr("style",""),k.displayElements.popoverContainer.attr("class","popover-content")})},k.displayElements.resize.overlay.append(k.displayElements.resize.background),angular.forEach(k.displayElements.resize.anchors,function(a){k.displayElements.resize.overlay.append(a)}),k.displayElements.resize.overlay.append(k.displayElements.resize.info),k.displayElements.scrollWindow.append(k.displayElements.resize.overlay),k.reflowResizeOverlay=function(a){a=angular.element(a)[0],k.displayElements.resize.overlay.css({display:"block",left:a.offsetLeft-5+"px",top:a.offsetTop-5+"px",width:a.offsetWidth+10+"px",height:a.offsetHeight+10+"px"}),k.displayElements.resize.info.text(a.offsetWidth+" x "+a.offsetHeight)},k.showResizeOverlay=function(a){var b=function(b){var c={width:parseInt(a.attr("width")),height:parseInt(a.attr("height")),x:b.clientX,y:b.clientY};void 0===c.width&&(c.width=a[0].offsetWidth),void 0===c.height&&(c.height=a[0].offsetHeight),k.hidePopover();var d=c.height/c.width,e=function(b){var e={x:Math.max(0,c.width+(b.clientX-c.x)),y:Math.max(0,c.height+(b.clientY-c.y))},f=function(a,b){a=angular.element(a),"img"===a[0].tagName.toLowerCase()&&(b.height&&(a.attr("height",b.height),delete b.height),b.width&&(a.attr("width",b.width),delete b.width)),a.css(b)};if(b.shiftKey){var g=e.y/e.x;f(a,{width:d>g?e.x:e.y/d,height:d>g?e.x*d:e.y})}else f(a,{width:e.x,height:e.y});k.reflowResizeOverlay(a)};h.find("body").on("mousemove",e),z(k.displayElements.resize.overlay,"mouseup",function(){h.find("body").off("mousemove",e),k.showPopover(a)}),b.stopPropagation(),b.preventDefault()};k.displayElements.resize.anchors[3].on("mousedown",b),k.reflowResizeOverlay(a),z(l,"click",function(){k.hideResizeOverlay()})},k.hideResizeOverlay=function(){k.displayElements.resize.overlay.css("display","")},k.setup.htmlEditorSetup(k.displayElements.html),k.setup.textEditorSetup(k.displayElements.text),k.displayElements.html.attr({id:"taHtmlElement"+x,"ng-show":"showHtml","ta-bind":"ta-bind","ng-model":"html"}),k.displayElements.text.attr({id:"taTextElement"+x,contentEditable:"true","ta-bind":"ta-bind","ng-model":"html"}),k.displayElements.scrollWindow.attr({"ng-hide":"showHtml"}),m.taDefaultWrap&&k.displayElements.text.attr("ta-default-wrap",m.taDefaultWrap),m.taUnsafeSanitizer&&(k.displayElements.text.attr("ta-unsafe-sanitizer",m.taUnsafeSanitizer),k.displayElements.html.attr("ta-unsafe-sanitizer",m.taUnsafeSanitizer)),k.displayElements.scrollWindow.append(k.displayElements.text),l.append(k.displayElements.scrollWindow),l.append(k.displayElements.html),k.displayElements.forminput.attr("name",y),l.append(k.displayElements.forminput),m.tabindex&&(l.removeAttr("tabindex"),k.displayElements.text.attr("tabindex",m.tabindex),k.displayElements.html.attr("tabindex",m.tabindex)),m.placeholder&&(k.displayElements.text.attr("placeholder",m.placeholder),k.displayElements.html.attr("placeholder",m.placeholder)),m.taDisabled&&(k.displayElements.text.attr("ta-readonly","disabled"),k.displayElements.html.attr("ta-readonly","disabled"),k.disabled=k.$parent.$eval(m.taDisabled),k.$parent.$watch(m.taDisabled,function(a){k.disabled=a,k.disabled?l.addClass(k.classes.disabled):l.removeClass(k.classes.disabled)})),a(k.displayElements.scrollWindow)(k),a(k.displayElements.html)(k),k.updateTaBindtaTextElement=k["updateTaBindtaTextElement"+x],k.updateTaBindtaHtmlElement=k["updateTaBindtaHtmlElement"+x],l.addClass("ta-root"),k.displayElements.scrollWindow.addClass("ta-text ta-editor "+k.classes.textEditor),k.displayElements.html.addClass("ta-html ta-editor "+k.classes.htmlEditor),k._actionRunning=!1;var A=!1;if(k.startAction=function(){return k._actionRunning=!0,g.rangy&&g.rangy.saveSelection?(A=g.rangy.saveSelection(),function(){A&&g.rangy.restoreSelection(A)}):void 0},k.endAction=function(){k._actionRunning=!1,A&&g.rangy.removeMarkers(A),A=!1,k.updateSelectedStyles(),k.showHtml||k["updateTaBindtaTextElement"+x]()},s=function(){l.addClass(k.classes.focussed),v.focus()},k.displayElements.html.on("focus",s),k.displayElements.text.on("focus",s),t=function(a){return k._actionRunning||h[0].activeElement===k.displayElements.html[0]||h[0].activeElement===k.displayElements.text[0]||(l.removeClass(k.classes.focussed),v.unfocus(),b(function(){l.triggerHandler("blur")},0)),a.preventDefault(),!1},k.displayElements.html.on("blur",t),k.displayElements.text.on("blur",t),k.queryFormatBlockState=function(a){return!k.showHtml&&a.toLowerCase()===h[0].queryCommandValue("formatBlock").toLowerCase()},k.queryCommandState=function(a){return k.showHtml?"":h[0].queryCommandState(a)},k.switchView=function(){k.showHtml=!k.showHtml,k.showHtml?b(function(){return k.displayElements.html[0].focus()},100):b(function(){return k.displayElements.text[0].focus()},100)},m.ngModel){var B=!0;n.$render=function(){if(B){B=!1;var a=k.$parent.$eval(m.ngModel);void 0!==a&&null!==a||!u||""===u||n.$setViewValue(u)}k.displayElements.forminput.val(n.$viewValue),k._elementSelectTriggered||h[0].activeElement===k.displayElements.html[0]||h[0].activeElement===k.displayElements.text[0]||(k.html=n.$viewValue||"")};var C=function(a){return m.required&&n.$setValidity("required",!(!a||""===a.trim())),a};n.$parsers.push(C),n.$formatters.push(C)}else k.displayElements.forminput.val(u),k.html=u;if(k.$watch("html",function(a,b){a!==b&&(m.ngModel&&n.$viewValue!==a&&n.$setViewValue(a),k.displayElements.forminput.val(a))}),m.taTargetToolbars)v=f.registerEditor(y,k,m.taTargetToolbars.split(","));else{var D=angular.element('<div text-angular-toolbar name="textAngularToolbar'+x+'">');m.taToolbar&&D.attr("ta-toolbar",m.taToolbar),m.taToolbarClass&&D.attr("ta-toolbar-class",m.taToolbarClass),m.taToolbarGroupClass&&D.attr("ta-toolbar-group-class",m.taToolbarGroupClass),m.taToolbarButtonClass&&D.attr("ta-toolbar-button-class",m.taToolbarButtonClass),m.taToolbarActiveButtonClass&&D.attr("ta-toolbar-active-button-class",m.taToolbarActiveButtonClass),m.taFocussedClass&&D.attr("ta-focussed-class",m.taFocussedClass),l.prepend(D),a(D)(k.$parent),v=f.registerEditor(y,k,["textAngularToolbar"+x])}k.$on("$destroy",function(){f.unregisterEditor(y)}),k.$on("ta-element-select",function(a,b){v.triggerElementSelect(a,b)}),k.$on("ta-drop-event",function(a,b,c,d){k.displayElements.text[0].focus(),d&&d.files&&d.files.length>0&&(angular.forEach(d.files,function(a){try{return k.fileDropHandler(a,k.wrapSelection)||k.fileDropHandler!==k.defaultFileDropHandler&&k.defaultFileDropHandler(a,k.wrapSelection)}catch(b){j.error(b)}}),c.preventDefault(),c.stopPropagation())}),k._bUpdateSelectedStyles=!1,k.updateSelectedStyles=function(){var a;void 0!==(a=d.getSelectionElement())&&a.parentNode!==k.displayElements.text[0]?v.updateSelectedStyles(angular.element(a)):v.updateSelectedStyles(),k._bUpdateSelectedStyles&&b(k.updateSelectedStyles,200)},o=function(){k._bUpdateSelectedStyles||(k._bUpdateSelectedStyles=!0,k.$apply(function(){k.updateSelectedStyles()}))},k.displayElements.html.on("keydown",o),k.displayElements.text.on("keydown",o),p=function(){k._bUpdateSelectedStyles=!1},k.displayElements.html.on("keyup",p),k.displayElements.text.on("keyup",p),q=function(a,b){b&&angular.extend(a,b),k.$apply(function(){return v.sendKeyCommand(a)?(k._bUpdateSelectedStyles||k.updateSelectedStyles(),a.preventDefault(),!1):void 0})},k.displayElements.html.on("keypress",q),k.displayElements.text.on("keypress",q),r=function(){k._bUpdateSelectedStyles=!1,k.$apply(function(){k.updateSelectedStyles()})},k.displayElements.html.on("mouseup",r),k.displayElements.text.on("mouseup",r)}}}]).factory("taBrowserTag",[function(){return function(a){return a?""===a?void 0===e?"div":8>=e?"P":"p":8>=e?a.toUpperCase():a:8>=e?"P":"p"}}]).factory("taExecCommand",["taSelection","taBrowserTag","$document",function(a,b,c){var d=/^(address|article|aside|audio|blockquote|canvas|dd|div|dl|fieldset|figcaption|figure|footer|form|h1|h2|h3|h4|h5|h6|header|hgroup|hr|noscript|ol|output|p|pre|section|table|tfoot|ul|video)$/gi,e=/^(ul|li|ol)$/gi,f=function(b,c){var d,e,f=b.find("li");for(e=f.length-1;e>=0;e--)d=angular.element("<"+c+">"+f[e].innerHTML+"</"+c+">"),b.after(d);b.remove(),a.setSelectionToElementEnd(d[0])},g=function(b,c){var d=angular.element("<"+c+">"+b[0].innerHTML+"</"+c+">");b.after(d),b.remove(),a.setSelectionToElementEnd(d.find("li")[0])},h=function(c,d,e){for(var f="",g=0;g<c.length;g++)f+="<"+b("li")+">"+c[g].innerHTML+"</"+b("li")+">";var h=angular.element("<"+e+">"+f+"</"+e+">");d.after(h),d.remove(),a.setSelectionToElementEnd(h.find("li")[0])};return function(i){return i=b(i),function(j,k,l){var m,n,o,p,q,r=angular.element("<"+i+">"),s=a.getSelectionElement(),t=angular.element(s);if(void 0!==s){var u=s.tagName.toLowerCase();if("insertorderedlist"===j.toLowerCase()||"insertunorderedlist"===j.toLowerCase()){var v=b("insertorderedlist"===j.toLowerCase()?"ol":"ul");if(u===v)return f(t,i);if("li"===u&&t.parent()[0].tagName.toLowerCase()===v&&1===t.parent().children().length)return f(t.parent(),i);if("li"===u&&t.parent()[0].tagName.toLowerCase()!==v&&1===t.parent().children().length)return g(t.parent(),v);if(u.match(d)&&!t.hasClass("ta-bind")){if("ol"===u||"ul"===u)return g(t,v);var w=!1;return angular.forEach(t.children(),function(a){a.tagName.match(d)&&(w=!0)}),w?h(t.children(),t,v):h([angular.element("<div>"+s.innerHTML+"</div>")[0]],t,v)}if(u.match(d)){if(p=a.getOnlySelectedElements(),1===p.length&&("ol"===p[0].tagName.toLowerCase()||"ul"===p[0].tagName.toLowerCase()))return p[0].tagName.toLowerCase()===v?f(angular.element(p[0]),i):g(angular.element(p[0]),v);o="";var x=[];for(m=0;m<p.length;m++)if(3!==p[m].nodeType){var y=angular.element(p[m]);o+="<"+b("li")+">"+y[0].innerHTML+"</"+b("li")+">",x.unshift(y)}return n=angular.element("<"+v+">"+o+"</"+v+">"),x.pop().replaceWith(n),angular.forEach(x,function(a){a.remove()}),void a.setSelectionToElementEnd(n[0])}}else if("formatblock"===j.toLowerCase()){var z=l.toLowerCase().replace(/[<>]/gi,"");for(n="li"===u?t.parent():t;!n[0].tagName.match(d);)n=n.parent(),u=n[0].tagName.toLowerCase();if(u===z){p=n.children();var A=!1;for(m=0;m<p.length;m++)A=A||p[m].tagName.match(d);A?(n.after(p),q=n.next(),n.remove(),n=q):(r.append(n[0].childNodes),n.after(r),n.remove(),n=r)}else if(n.parent()[0].tagName.toLowerCase()!==z||n.parent().hasClass("ta-bind"))if(u.match(e))n.wrap(l);else{p=a.getOnlySelectedElements(),0===p.length&&(p=[n[0]]);var B=!1;if(angular.forEach(p,function(a){3!==a.nodeType&&a.tagName.match(d)||(B=!0)}),B)for(;3===p[0].nodeType||!p[0].tagName.match(d);)p=[p[0].parentNode];if(angular.element(p[0]).hasClass("ta-bind"))n=angular.element(l),n[0].innerHTML=p[0].innerHTML,p[0].innerHTML=n[0].outerHTML;else if("blockquote"===z){for(o="",m=0;m<p.length;m++)o+=p[m].outerHTML;n=angular.element(l),n[0].innerHTML=o,p[0].parentNode.insertBefore(n[0],p[0]),angular.forEach(p,function(a){a.parentNode.removeChild(a)})}else for(m=0;m<p.length;m++)n=angular.element(l),n[0].innerHTML=p[m].innerHTML,p[m].parentNode.insertBefore(n[0],p[m]),p[m].parentNode.removeChild(p[m])}else{var C=n.parent(),D=C.contents();for(m=0;m<D.length;m++)C.parent().hasClass("ta-bind")&&3===D[m].nodeType&&(r=angular.element("<"+i+">"),r[0].innerHTML=D[m].outerHTML,D[m]=r[0]),C.parent()[0].insertBefore(D[m],C[0]);C.remove()}return void a.setSelectionToElementEnd(n[0])}}try{c[0].execCommand(j,k,l)}catch(E){}}}}]).directive("taBind",["taSanitize","$timeout","$window","$document","taFixChrome","taBrowserTag","taSelection","taSelectableElements","taApplyCustomRenderers","taOptions",function(a,b,c,f,i,j,k,m,n,o){return{require:"ngModel",scope:{},link:function(j,p,q,r){var s,t,u=void 0!==p.attr("contenteditable")&&p.attr("contenteditable"),v=u||"textarea"===p[0].tagName.toLowerCase()||"input"===p[0].tagName.toLowerCase(),w=!1,x=!1,y=q.taUnsafeSanitizer||o.disableSanitizer;void 0===q.taDefaultWrap&&(q.taDefaultWrap="p"),""===q.taDefaultWrap?(s="",t=void 0===e?"<div><br></div>":e>=11?"<p><br></p>":8>=e?"<P> </P>":"<p> </p>"):(s=void 0===e||e>=11?"<"+q.taDefaultWrap+"><br></"+q.taDefaultWrap+">":8>=e?"<"+q.taDefaultWrap.toUpperCase()+"></"+q.taDefaultWrap.toUpperCase()+">":"<"+q.taDefaultWrap+"></"+q.taDefaultWrap+">",t=void 0===e||e>=11?"<"+q.taDefaultWrap+"><br></"+q.taDefaultWrap+">":8>=e?"<"+q.taDefaultWrap.toUpperCase()+"> </"+q.taDefaultWrap.toUpperCase()+">":"<"+q.taDefaultWrap+"> </"+q.taDefaultWrap+">"),p.addClass("ta-bind");var z=function(){if(u)return p[0].innerHTML;if(v)return p.val();throw"textAngular Error: attempting to update non-editable taBind"},A=function(a){a||(a=z()),a===t?""!==r.$viewValue&&r.$setViewValue(""):r.$viewValue!==a&&r.$setViewValue(a)};if(j.$parent["updateTaBind"+(q.id||"")]=function(){w||A()},v)if(u){if(p.on("cut",function(a){w?a.preventDefault():b(function(){A()},0)}),p.on("paste",function(a,b){b&&angular.extend(a,b);var d;if(a.clipboardData||a.originalEvent&&a.originalEvent.clipboardData?d=(a.originalEvent||a).clipboardData.getData("text/plain"):c.clipboardData&&(d=c.clipboardData.getData("Text")),!d&&!w)return!0;if(a.preventDefault(),!w){var e=angular.element("<div></div>");if(e[0].innerHTML=d,d=e.text(),f[0].selection){var g=f[0].selection.createRange();g.pasteHTML(d)}else f[0].execCommand("insertText",!1,d);A()}}),p.on("keyup",function(a,b){if(b&&angular.extend(a,b),!w){if(""!==s&&13===a.keyCode&&!a.shiftKey){var c=k.getSelectionElement();if(c.tagName.toLowerCase()!==q.taDefaultWrap&&"li"!==c.tagName.toLowerCase()&&(""===c.innerHTML.trim()||"<br>"===c.innerHTML.trim())){var d=angular.element(s);angular.element(c).replaceWith(d),k.setSelectionToElementStart(d[0])}}var e=z();""!==s&&""===e.trim()&&(p[0].innerHTML=s,k.setSelectionToElementStart(p.children()[0])),A(e)}}),p.on("blur",function(){x=!1,w||A(),r.$render()}),q.placeholder&&(e>8||void 0===e)){var B;if(!q.id)throw"textAngular Error: An unique ID is required for placeholders to work";B=g("#"+q.id+".placeholder-text:before",'content: "'+q.placeholder+'"'),j.$on("$destroy",function(){h(B)})}p.on("focus",function(){x=!0,r.$render()}),p.on("mousedown",function(a,b){b&&angular.extend(a,b),a.stopPropagation()})}else p.on("paste cut",function(){w||b(function(){r.$setViewValue(z())},0)}),p.on("change blur",function(){w||r.$setViewValue(z())});var C=function(b){return r.$oldViewValue=a(i(b),r.$oldViewValue,y)},D=function(a){return q.required&&r.$setValidity("required",!(!a||a.trim()===t||""===a.trim())),a};r.$parsers.push(C),r.$parsers.push(D),r.$formatters.push(C),r.$formatters.push(D);var E=function(a){return j.$emit("ta-element-select",this),a.preventDefault(),!1},F=function(a,c){if(c&&angular.extend(a,c),!l&&!w){l=!0;var d;d=a.originalEvent?a.originalEvent.dataTransfer:a.dataTransfer,j.$emit("ta-drop-event",this,a,d),b(function(){l=!1},100)}};j.$parent["reApplyOnSelectorHandlers"+(q.id||"")]=function(){w||angular.forEach(m,function(a){p.find(a).off("click",E).on("click",E)})};var G=function(a){p[0].innerHTML=a};r.$render=function(){var a=r.$viewValue||"";f[0].activeElement!==p[0]?u?(q.placeholder?""===a?(x?p.removeClass("placeholder-text"):p.addClass("placeholder-text"),G(s)):(p.removeClass("placeholder-text"),G(a)):G(""===a?s:a),w?p.off("drop",F):(angular.forEach(m,function(a){p.find(a).on("click",E)}),p.on("drop",F))):"textarea"!==p[0].tagName.toLowerCase()&&"input"!==p[0].tagName.toLowerCase()?G(n(a)):p.val(a):u&&p.removeClass("placeholder-text")},q.taReadonly&&(w=j.$parent.$eval(q.taReadonly),w?(p.addClass("ta-readonly"),("textarea"===p[0].tagName.toLowerCase()||"input"===p[0].tagName.toLowerCase())&&p.attr("disabled","disabled"),void 0!==p.attr("contenteditable")&&p.attr("contenteditable")&&p.removeAttr("contenteditable")):(p.removeClass("ta-readonly"),"textarea"===p[0].tagName.toLowerCase()||"input"===p[0].tagName.toLowerCase()?p.removeAttr("disabled"):u&&p.attr("contenteditable","true")),j.$parent.$watch(q.taReadonly,function(a,b){b!==a&&(a?(p.addClass("ta-readonly"),("textarea"===p[0].tagName.toLowerCase()||"input"===p[0].tagName.toLowerCase())&&p.attr("disabled","disabled"),void 0!==p.attr("contenteditable")&&p.attr("contenteditable")&&p.removeAttr("contenteditable"),angular.forEach(m,function(a){p.find(a).on("click",E)}),p.off("drop",F)):(p.removeClass("ta-readonly"),"textarea"===p[0].tagName.toLowerCase()||"input"===p[0].tagName.toLowerCase()?p.removeAttr("disabled"):u&&p.attr("contenteditable","true"),angular.forEach(m,function(a){p.find(a).off("click",E)}),p.on("drop",F)),w=a)})),u&&!w&&(angular.forEach(m,function(a){p.find(a).on("click",E)}),p.on("drop",F),p.on("blur",function(){/AppleWebKit\/([\d.]+)/.exec(navigator.userAgent)&&(d=!0)}))}}}]).factory("taApplyCustomRenderers",["taCustomRenderers",function(a){return function(c){var d=angular.element("<div></div>");return d[0].innerHTML=c,angular.forEach(a,function(a){var c=[];a.selector&&""!==a.selector?c=d.find(a.selector):a.customAttribute&&""!==a.customAttribute&&(c=b(d,a.customAttribute)),angular.forEach(c,function(b){b=angular.element(b),a.selector&&""!==a.selector&&a.customAttribute&&""!==a.customAttribute?void 0!==b.attr(a.customAttribute)&&a.renderLogic(b):a.renderLogic(b)})}),d[0].innerHTML}}]).directive("taMaxText",function(){return{restrict:"A",require:"ngModel",link:function(a,b,c,d){function e(a){var b=angular.element("<div/>");b.html(a);var c=b.text().length;return f>=c?(d.$setValidity("taMaxText",!0),a):void d.$setValidity("taMaxText",!1)}var f=parseInt(a.$eval(c.taMaxText));if(isNaN(f))throw"Max text must be an integer";c.$observe("taMaxText",function(a){if(f=parseInt(a),isNaN(f))throw"Max text must be an integer";d.$dirty&&d.$setViewValue(d.$viewValue)}),d.$parsers.unshift(e)}}}).directive("taMinText",function(){return{restrict:"A",require:"ngModel",link:function(a,b,c,d){function e(a){var b=angular.element("<div/>");b.html(a);var c=b.text().length;return!c||c>=f?(d.$setValidity("taMinText",!0),a):void d.$setValidity("taMinText",!1)}var f=parseInt(a.$eval(c.taMinText));if(isNaN(f))throw"Min text must be an integer";c.$observe("taMinText",function(a){if(f=parseInt(a),isNaN(f))throw"Min text must be an integer";d.$dirty&&d.$setViewValue(d.$viewValue)}),d.$parsers.unshift(e)}}}).factory("taFixChrome",function(){var a=function(a){for(var b=angular.element("<div>"+a+"</div>"),c=angular.element(b).find("span"),d=0;d<c.length;d++){var e=angular.element(c[d]);e.attr("style")&&e.attr("style").match(/line-height: 1.428571429;|color: inherit; line-height: 1.1;/i)&&(e.attr("style",e.attr("style").replace(/( |)font-family: inherit;|( |)line-height: 1.428571429;|( |)line-height:1.1;|( |)color: inherit;/gi,"")),e.attr("style")&&""!==e.attr("style")||(e.next().length>0&&"BR"===e.next()[0].tagName&&e.next().remove(),e.replaceWith(e[0].innerHTML)))}var f=b[0].innerHTML.replace(/style="[^"]*?(line-height: 1.428571429;|color: inherit; line-height: 1.1;)[^"]*"/gi,"");return f!==b[0].innerHTML&&(b[0].innerHTML=f),b[0].innerHTML};return a}).factory("taSanitize",["$sanitize",function(a){return function(c,d,e){var f=angular.element("<div>"+c+"</div>");angular.forEach(b(f,"align"),function(a){a.css("text-align",a.attr("align")),a.removeAttr("align")});var g;c=f[0].innerHTML;try{g=a(c),e&&(g=c)}catch(h){g=d||""}return g}}]).directive("textAngularToolbar",["$compile","textAngularManager","taOptions","taTools","taToolExecuteAction","$window",function(a,b,c,d,e,f){return{scope:{name:"@"},restrict:"EA",link:function(g,h,i){if(!g.name||""===g.name)throw"textAngular Error: A toolbar requires a name";angular.extend(g,angular.copy(c)),i.taToolbar&&(g.toolbar=g.$parent.$eval(i.taToolbar)),i.taToolbarClass&&(g.classes.toolbar=i.taToolbarClass),i.taToolbarGroupClass&&(g.classes.toolbarGroup=i.taToolbarGroupClass),i.taToolbarButtonClass&&(g.classes.toolbarButton=i.taToolbarButtonClass),i.taToolbarActiveButtonClass&&(g.classes.toolbarButtonActive=i.taToolbarActiveButtonClass),i.taFocussedClass&&(g.classes.focussed=i.taFocussedClass),g.disabled=!0,g.focussed=!1,g._$element=h,h[0].innerHTML="",h.addClass("ta-toolbar "+g.classes.toolbar),g.$watch("focussed",function(){g.focussed?h.addClass(g.classes.focussed):h.removeClass(g.classes.focussed)});var j=function(b,c){var d;if(d=angular.element(b&&b.display?b.display:"<button type='button'>"),d.addClass(g.classes.toolbarButton),d.attr("name",c.name),d.attr("unselectable","on"),d.attr("ng-disabled","isDisabled()"),d.attr("tabindex","-1"),d.attr("ng-click","executeAction()"),d.attr("ng-class","displayActiveToolClass(active)"),b&&b.tooltiptext&&d.attr("title",b.tooltiptext),d.on("mousedown",function(a,b){return b&&angular.extend(a,b),a.preventDefault(),!1}),b&&!b.display&&!c._display&&(d[0].innerHTML="",b.buttontext&&(d[0].innerHTML=b.buttontext),b.iconclass)){var e=angular.element("<i>"),f=d[0].innerHTML;e.addClass(b.iconclass),d[0].innerHTML="",d.append(e),f&&""!==f&&d.append(" "+f)}return c._lastToolDefinition=angular.copy(b),a(d)(c)};g.tools={},g._parent={disabled:!0,showHtml:!1,queryFormatBlockState:function(){return!1},queryCommandState:function(){return!1}};var k={$window:f,$editor:function(){return g._parent},isDisabled:function(){return this.$eval("disabled")||this.$eval("disabled()")||"html"!==this.name&&this.$editor().showHtml||this.$parent.disabled||this.$editor().disabled},displayActiveToolClass:function(a){return a?g.classes.toolbarButtonActive:""},executeAction:e};angular.forEach(g.toolbar,function(a){var b=angular.element("<div>");b.addClass(g.classes.toolbarGroup),angular.forEach(a,function(a){g.tools[a]=angular.extend(g.$new(!0),d[a],k,{name:a}),g.tools[a].$element=j(d[a],g.tools[a]),b.append(g.tools[a].$element)}),h.append(b)}),g.updateToolDisplay=function(a,b,c){var d=g.tools[a];if(d){if(d._lastToolDefinition&&!c&&(b=angular.extend({},d._lastToolDefinition,b)),null===b.buttontext&&null===b.iconclass&&null===b.display)throw'textAngular Error: Tool Definition for updating "'+a+'" does not have a valid display/iconclass/buttontext value';null===b.buttontext&&delete b.buttontext,null===b.iconclass&&delete b.iconclass,null===b.display&&delete b.display;var e=j(b,d);d.$element.replaceWith(e),d.$element=e}},g.addTool=function(a,b,c,e){g.tools[a]=angular.extend(g.$new(!0),d[a],k,{name:a}),g.tools[a].$element=j(d[a],g.tools[a]);var f;void 0===c&&(c=g.toolbar.length-1),f=angular.element(h.children()[c]),void 0===e?(f.append(g.tools[a].$element),g.toolbar[c][g.toolbar[c].length-1]=a):(f.children().eq(e).after(g.tools[a].$element),g.toolbar[c][e]=a)},b.registerToolbar(g),g.$on("$destroy",function(){b.unregisterToolbar(g.name)})}}}]).service("taToolExecuteAction",["$q",function(a){return function(b){void 0!==b&&(this.$editor=function(){return b});var c=a.defer(),d=c.promise,e=this.$editor();d["finally"](function(){e.endAction.call(e)});var f;try{f=this.action(c,e.startAction())}catch(g){}(f||void 0===f)&&c.resolve()}}]).service("textAngularManager",["taToolExecuteAction","taTools","taRegisterTool",function(a,b,c){var d={},e={};return{registerEditor:function(c,f,g){if(!c||""===c)throw"textAngular Error: An editor requires a name";if(!f)throw"textAngular Error: An editor requires a scope";if(e[c])throw'textAngular Error: An Editor with name "'+c+'" already exists';var h=[];return angular.forEach(g,function(a){d[a]&&h.push(d[a])}),e[c]={scope:f,toolbars:g,_registerToolbar:function(a){this.toolbars.indexOf(a.name)>=0&&h.push(a)},editorFunctions:{disable:function(){angular.forEach(h,function(a){a.disabled=!0})},enable:function(){angular.forEach(h,function(a){a.disabled=!1})},focus:function(){angular.forEach(h,function(a){a._parent=f,a.disabled=!1,a.focussed=!0})},unfocus:function(){angular.forEach(h,function(a){a.disabled=!0,a.focussed=!1})},updateSelectedStyles:function(a){angular.forEach(h,function(b){angular.forEach(b.tools,function(b){b.activeState&&(b.active=b.activeState(a))})})},sendKeyCommand:function(c){var d=!1;return(c.ctrlKey||c.metaKey)&&angular.forEach(b,function(b,e){if(b.commandKeyCode&&b.commandKeyCode===c.which)for(var g=0;g<h.length;g++)if(void 0!==h[g].tools[e]){a.call(h[g].tools[e],f),d=!0;break}}),d},triggerElementSelect:function(a,c){var d=function(a,b){for(var c=!0,d=0;d<b.length;d++)c=c&&a.attr(b[d]);return c},e=[],g={},i=!1;c=angular.element(c);var j=!1;if(angular.forEach(b,function(a,b){a.onElementSelect&&a.onElementSelect.element&&a.onElementSelect.element.toLowerCase()===c[0].tagName.toLowerCase()&&(!a.onElementSelect.filter||a.onElementSelect.filter(c))&&(j=j||angular.isArray(a.onElementSelect.onlyWithAttrs)&&d(c,a.onElementSelect.onlyWithAttrs),(!a.onElementSelect.onlyWithAttrs||d(c,a.onElementSelect.onlyWithAttrs))&&(g[b]=a))}),j?(angular.forEach(g,function(a,b){a.onElementSelect.onlyWithAttrs&&d(c,a.onElementSelect.onlyWithAttrs)&&e.push({name:b,tool:a})}),e.sort(function(a,b){return b.tool.onElementSelect.onlyWithAttrs.length-a.tool.onElementSelect.onlyWithAttrs.length})):angular.forEach(g,function(a,b){e.push({name:b,tool:a})}),e.length>0)for(var k=0;k<e.length;k++){for(var l=e[k].tool,m=e[k].name,n=0;n<h.length;n++)if(void 0!==h[n].tools[m]){l.onElementSelect.action.call(h[n].tools[m],a,c,f),i=!0;break}if(i)break}return i}}},e[c].editorFunctions},retrieveEditor:function(a){return e[a]},unregisterEditor:function(a){delete e[a]},registerToolbar:function(a){if(!a)throw"textAngular Error: A toolbar requires a scope";if(!a.name||""===a.name)throw"textAngular Error: A toolbar requires a name";if(d[a.name])throw'textAngular Error: A toolbar with name "'+a.name+'" already exists';d[a.name]=a,angular.forEach(e,function(b){b._registerToolbar(a)})},retrieveToolbar:function(a){return d[a]},retrieveToolbarsViaEditor:function(a){var b=[],c=this;return angular.forEach(this.retrieveEditor(a).toolbars,function(a){b.push(c.retrieveToolbar(a))}),b},unregisterToolbar:function(a){delete d[a]},updateToolsDisplay:function(a){var b=this;angular.forEach(a,function(a,c){b.updateToolDisplay(c,a)})},resetToolsDisplay:function(){var a=this;angular.forEach(b,function(b,c){a.resetToolDisplay(c)})},updateToolDisplay:function(a,b){var c=this;angular.forEach(d,function(d,e){c.updateToolbarToolDisplay(e,a,b)})},resetToolDisplay:function(a){var b=this;angular.forEach(d,function(c,d){b.resetToolbarToolDisplay(d,a)})},updateToolbarToolDisplay:function(a,b,c){if(!d[a])throw'textAngular Error: No Toolbar with name "'+a+'" exists';d[a].updateToolDisplay(b,c)},resetToolbarToolDisplay:function(a,c){if(!d[a])throw'textAngular Error: No Toolbar with name "'+a+'" exists';d[a].updateToolDisplay(c,b[c],!0)},removeTool:function(a){delete b[a],angular.forEach(d,function(b){delete b.tools[a];for(var c=0;c<b.toolbar.length;c++){for(var d,e=0;e<b.toolbar[c].length;e++){if(b.toolbar[c][e]===a){d={group:c,index:e};break}if(void 0!==d)break}void 0!==d&&(b.toolbar[d.group].slice(d.index,1),b._$element.children().eq(d.group).children().eq(d.index).remove())}})},addTool:function(a,b,e,f){c(a,b),angular.forEach(d,function(c){c.addTool(a,b,e,f)})},addToolToToolbar:function(a,b,e,f,g){c(a,b),d[e].addTool(a,b,f,g)},refreshEditor:function(a){if(!e[a])throw'textAngular Error: No Editor with name "'+a+'" exists';e[a].scope.updateTaBindtaTextElement(),e[a].scope.$$phase||e[a].scope.$digest()}}}]).service("taSelection",["$window","$document",function(a,b){var c=b[0],d=function(a){if(a.hasChildNodes())return a.firstChild;for(;a&&!a.nextSibling;)a=a.parentNode;return a?a.nextSibling:null},e=function(a){var b=a.startContainer,c=a.endContainer;if(b===c)return[b];for(var e=[];b&&b!==c;)b=d(b),b.parentNode===a.commonAncestorContainer&&e.push(b);for(b=a.startContainer;b&&b!==a.commonAncestorContainer;)b.parentNode===a.commonAncestorContainer&&e.unshift(b),b=b.parentNode;return e};return{getOnlySelectedElements:function(){if(window.getSelection){var b=a.getSelection();if(!b.isCollapsed)return e(b.getRangeAt(0))}return[]},getSelectionElement:function(){var b,d,e;return c.selection&&c.selection.createRange?(b=c.selection.createRange(),b.parentElement()):a.getSelection&&(d=a.getSelection(),d.getRangeAt?d.rangeCount>0&&(b=d.getRangeAt(0)):(b=c.createRange(),b.setStart(d.anchorNode,d.anchorOffset),b.setEnd(d.focusNode,d.focusOffset),b.collapsed!==d.isCollapsed&&(b.setStart(d.focusNode,d.focusOffset),b.setEnd(d.anchorNode,d.anchorOffset))),b)?(e=b.commonAncestorContainer,3===e.nodeType?e.parentNode:e):void 0},setSelectionToElementStart:function(b){if(c.createRange&&a.getSelection){var d=c.createRange();d.selectNodeContents(b),d.setStart(b,0),d.setEnd(b,0);var e=a.getSelection();e.removeAllRanges(),e.addRange(d)}else if(c.selection&&c.body.createTextRange){var f=c.body.createTextRange();f.moveToElementText(b),f.collapse(!0),f.moveEnd("character",0),f.moveStart("character",0),f.select()}},setSelectionToElementEnd:function(b){if(c.createRange&&a.getSelection){var d=c.createRange();d.selectNodeContents(b),d.collapse(!1);var e=a.getSelection();e.removeAllRanges(),e.addRange(d)}else if(c.selection&&c.body.createTextRange){var f=c.body.createTextRange(); - -f.moveToElementText(b),f.collapse(!1),f.select()}}}}])}()}({},function(){return this}()),"undefined"==typeof jQuery)throw new Error("Bootstrap's JavaScript requires jQuery");+function(a){"use strict";var b=a.fn.jquery.split(" ")[0].split(".");if(b[0]<2&&b[1]<9||1==b[0]&&9==b[1]&&b[2]<1)throw new Error("Bootstrap's JavaScript requires jQuery version 1.9.1 or higher")}(jQuery),+function(a){"use strict";function b(){var a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var c in b)if(void 0!==a.style[c])return{end:b[c]};return!1}a.fn.emulateTransitionEnd=function(b){var c=!1,d=this;a(this).one("bsTransitionEnd",function(){c=!0});var e=function(){c||a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this},a(function(){a.support.transition=b(),a.support.transition&&(a.event.special.bsTransitionEnd={bindType:a.support.transition.end,delegateType:a.support.transition.end,handle:function(b){return a(b.target).is(this)?b.handleObj.handler.apply(this,arguments):void 0}})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var c=a(this),e=c.data("bs.alert");e||c.data("bs.alert",e=new d(this)),"string"==typeof b&&e[b].call(c)})}var c='[data-dismiss="alert"]',d=function(b){a(b).on("click",c,this.close)};d.VERSION="3.3.2",d.TRANSITION_DURATION=150,d.prototype.close=function(b){function c(){g.detach().trigger("closed.bs.alert").remove()}var e=a(this),f=e.attr("data-target");f||(f=e.attr("href"),f=f&&f.replace(/.*(?=#[^\s]*$)/,""));var g=a(f);b&&b.preventDefault(),g.length||(g=e.closest(".alert")),g.trigger(b=a.Event("close.bs.alert")),b.isDefaultPrevented()||(g.removeClass("in"),a.support.transition&&g.hasClass("fade")?g.one("bsTransitionEnd",c).emulateTransitionEnd(d.TRANSITION_DURATION):c())};var e=a.fn.alert;a.fn.alert=b,a.fn.alert.Constructor=d,a.fn.alert.noConflict=function(){return a.fn.alert=e,this},a(document).on("click.bs.alert.data-api",c,d.prototype.close)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.button"),f="object"==typeof b&&b;e||d.data("bs.button",e=new c(this,f)),"toggle"==b?e.toggle():b&&e.setState(b)})}var c=function(b,d){this.$element=a(b),this.options=a.extend({},c.DEFAULTS,d),this.isLoading=!1};c.VERSION="3.3.2",c.DEFAULTS={loadingText:"loading..."},c.prototype.setState=function(b){var c="disabled",d=this.$element,e=d.is("input")?"val":"html",f=d.data();b+="Text",null==f.resetText&&d.data("resetText",d[e]()),setTimeout(a.proxy(function(){d[e](null==f[b]?this.options[b]:f[b]),"loadingText"==b?(this.isLoading=!0,d.addClass(c).attr(c,c)):this.isLoading&&(this.isLoading=!1,d.removeClass(c).removeAttr(c))},this),0)},c.prototype.toggle=function(){var a=!0,b=this.$element.closest('[data-toggle="buttons"]');if(b.length){var c=this.$element.find("input");"radio"==c.prop("type")&&(c.prop("checked")&&this.$element.hasClass("active")?a=!1:b.find(".active").removeClass("active")),a&&c.prop("checked",!this.$element.hasClass("active")).trigger("change")}else this.$element.attr("aria-pressed",!this.$element.hasClass("active"));a&&this.$element.toggleClass("active")};var d=a.fn.button;a.fn.button=b,a.fn.button.Constructor=c,a.fn.button.noConflict=function(){return a.fn.button=d,this},a(document).on("click.bs.button.data-api",'[data-toggle^="button"]',function(c){var d=a(c.target);d.hasClass("btn")||(d=d.closest(".btn")),b.call(d,"toggle"),c.preventDefault()}).on("focus.bs.button.data-api blur.bs.button.data-api",'[data-toggle^="button"]',function(b){a(b.target).closest(".btn").toggleClass("focus",/^focus(in)?$/.test(b.type))})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.carousel"),f=a.extend({},c.DEFAULTS,d.data(),"object"==typeof b&&b),g="string"==typeof b?b:f.slide;e||d.data("bs.carousel",e=new c(this,f)),"number"==typeof b?e.to(b):g?e[g]():f.interval&&e.pause().cycle()})}var c=function(b,c){this.$element=a(b),this.$indicators=this.$element.find(".carousel-indicators"),this.options=c,this.paused=this.sliding=this.interval=this.$active=this.$items=null,this.options.keyboard&&this.$element.on("keydown.bs.carousel",a.proxy(this.keydown,this)),"hover"==this.options.pause&&!("ontouchstart"in document.documentElement)&&this.$element.on("mouseenter.bs.carousel",a.proxy(this.pause,this)).on("mouseleave.bs.carousel",a.proxy(this.cycle,this))};c.VERSION="3.3.2",c.TRANSITION_DURATION=600,c.DEFAULTS={interval:5e3,pause:"hover",wrap:!0,keyboard:!0},c.prototype.keydown=function(a){if(!/input|textarea/i.test(a.target.tagName)){switch(a.which){case 37:this.prev();break;case 39:this.next();break;default:return}a.preventDefault()}},c.prototype.cycle=function(b){return b||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval)),this},c.prototype.getItemIndex=function(a){return this.$items=a.parent().children(".item"),this.$items.index(a||this.$active)},c.prototype.getItemForDirection=function(a,b){var c=this.getItemIndex(b),d="prev"==a&&0===c||"next"==a&&c==this.$items.length-1;if(d&&!this.options.wrap)return b;var e="prev"==a?-1:1,f=(c+e)%this.$items.length;return this.$items.eq(f)},c.prototype.to=function(a){var b=this,c=this.getItemIndex(this.$active=this.$element.find(".item.active"));return a>this.$items.length-1||0>a?void 0:this.sliding?this.$element.one("slid.bs.carousel",function(){b.to(a)}):c==a?this.pause().cycle():this.slide(a>c?"next":"prev",this.$items.eq(a))},c.prototype.pause=function(b){return b||(this.paused=!0),this.$element.find(".next, .prev").length&&a.support.transition&&(this.$element.trigger(a.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},c.prototype.next=function(){return this.sliding?void 0:this.slide("next")},c.prototype.prev=function(){return this.sliding?void 0:this.slide("prev")},c.prototype.slide=function(b,d){var e=this.$element.find(".item.active"),f=d||this.getItemForDirection(b,e),g=this.interval,h="next"==b?"left":"right",i=this;if(f.hasClass("active"))return this.sliding=!1;var j=f[0],k=a.Event("slide.bs.carousel",{relatedTarget:j,direction:h});if(this.$element.trigger(k),!k.isDefaultPrevented()){if(this.sliding=!0,g&&this.pause(),this.$indicators.length){this.$indicators.find(".active").removeClass("active");var l=a(this.$indicators.children()[this.getItemIndex(f)]);l&&l.addClass("active")}var m=a.Event("slid.bs.carousel",{relatedTarget:j,direction:h});return a.support.transition&&this.$element.hasClass("slide")?(f.addClass(b),f[0].offsetWidth,e.addClass(h),f.addClass(h),e.one("bsTransitionEnd",function(){f.removeClass([b,h].join(" ")).addClass("active"),e.removeClass(["active",h].join(" ")),i.sliding=!1,setTimeout(function(){i.$element.trigger(m)},0)}).emulateTransitionEnd(c.TRANSITION_DURATION)):(e.removeClass("active"),f.addClass("active"),this.sliding=!1,this.$element.trigger(m)),g&&this.cycle(),this}};var d=a.fn.carousel;a.fn.carousel=b,a.fn.carousel.Constructor=c,a.fn.carousel.noConflict=function(){return a.fn.carousel=d,this};var e=function(c){var d,e=a(this),f=a(e.attr("data-target")||(d=e.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,""));if(f.hasClass("carousel")){var g=a.extend({},f.data(),e.data()),h=e.attr("data-slide-to");h&&(g.interval=!1),b.call(f,g),h&&f.data("bs.carousel").to(h),c.preventDefault()}};a(document).on("click.bs.carousel.data-api","[data-slide]",e).on("click.bs.carousel.data-api","[data-slide-to]",e),a(window).on("load",function(){a('[data-ride="carousel"]').each(function(){var c=a(this);b.call(c,c.data())})})}(jQuery),+function(a){"use strict";function b(b){var c,d=b.attr("data-target")||(c=b.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,"");return a(d)}function c(b){return this.each(function(){var c=a(this),e=c.data("bs.collapse"),f=a.extend({},d.DEFAULTS,c.data(),"object"==typeof b&&b);!e&&f.toggle&&"show"==b&&(f.toggle=!1),e||c.data("bs.collapse",e=new d(this,f)),"string"==typeof b&&e[b]()})}var d=function(b,c){this.$element=a(b),this.options=a.extend({},d.DEFAULTS,c),this.$trigger=a(this.options.trigger).filter('[href="#'+b.id+'"], [data-target="#'+b.id+'"]'),this.transitioning=null,this.options.parent?this.$parent=this.getParent():this.addAriaAndCollapsedClass(this.$element,this.$trigger),this.options.toggle&&this.toggle()};d.VERSION="3.3.2",d.TRANSITION_DURATION=350,d.DEFAULTS={toggle:!0,trigger:'[data-toggle="collapse"]'},d.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},d.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var b,e=this.$parent&&this.$parent.children(".panel").children(".in, .collapsing");if(!(e&&e.length&&(b=e.data("bs.collapse"),b&&b.transitioning))){var f=a.Event("show.bs.collapse");if(this.$element.trigger(f),!f.isDefaultPrevented()){e&&e.length&&(c.call(e,"hide"),b||e.data("bs.collapse",null));var g=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[g](0).attr("aria-expanded",!0),this.$trigger.removeClass("collapsed").attr("aria-expanded",!0),this.transitioning=1;var h=function(){this.$element.removeClass("collapsing").addClass("collapse in")[g](""),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return h.call(this);var i=a.camelCase(["scroll",g].join("-"));this.$element.one("bsTransitionEnd",a.proxy(h,this)).emulateTransitionEnd(d.TRANSITION_DURATION)[g](this.$element[0][i])}}}},d.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var b=a.Event("hide.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse in").attr("aria-expanded",!1),this.$trigger.addClass("collapsed").attr("aria-expanded",!1),this.transitioning=1;var e=function(){this.transitioning=0,this.$element.removeClass("collapsing").addClass("collapse").trigger("hidden.bs.collapse")};return a.support.transition?void this.$element[c](0).one("bsTransitionEnd",a.proxy(e,this)).emulateTransitionEnd(d.TRANSITION_DURATION):e.call(this)}}},d.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()},d.prototype.getParent=function(){return a(this.options.parent).find('[data-toggle="collapse"][data-parent="'+this.options.parent+'"]').each(a.proxy(function(c,d){var e=a(d);this.addAriaAndCollapsedClass(b(e),e)},this)).end()},d.prototype.addAriaAndCollapsedClass=function(a,b){var c=a.hasClass("in");a.attr("aria-expanded",c),b.toggleClass("collapsed",!c).attr("aria-expanded",c)};var e=a.fn.collapse;a.fn.collapse=c,a.fn.collapse.Constructor=d,a.fn.collapse.noConflict=function(){return a.fn.collapse=e,this},a(document).on("click.bs.collapse.data-api",'[data-toggle="collapse"]',function(d){var e=a(this);e.attr("data-target")||d.preventDefault();var f=b(e),g=f.data("bs.collapse"),h=g?"toggle":a.extend({},e.data(),{trigger:this});c.call(f,h)})}(jQuery),+function(a){"use strict";function b(b){b&&3===b.which||(a(e).remove(),a(f).each(function(){var d=a(this),e=c(d),f={relatedTarget:this};e.hasClass("open")&&(e.trigger(b=a.Event("hide.bs.dropdown",f)),b.isDefaultPrevented()||(d.attr("aria-expanded","false"),e.removeClass("open").trigger("hidden.bs.dropdown",f)))}))}function c(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#[A-Za-z]/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}function d(b){return this.each(function(){var c=a(this),d=c.data("bs.dropdown");d||c.data("bs.dropdown",d=new g(this)),"string"==typeof b&&d[b].call(c)})}var e=".dropdown-backdrop",f='[data-toggle="dropdown"]',g=function(b){a(b).on("click.bs.dropdown",this.toggle)};g.VERSION="3.3.2",g.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=c(e),g=f.hasClass("open");if(b(),!g){"ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a('<div class="dropdown-backdrop"/>').insertAfter(a(this)).on("click",b);var h={relatedTarget:this};if(f.trigger(d=a.Event("show.bs.dropdown",h)),d.isDefaultPrevented())return;e.trigger("focus").attr("aria-expanded","true"),f.toggleClass("open").trigger("shown.bs.dropdown",h)}return!1}},g.prototype.keydown=function(b){if(/(38|40|27|32)/.test(b.which)&&!/input|textarea/i.test(b.target.tagName)){var d=a(this);if(b.preventDefault(),b.stopPropagation(),!d.is(".disabled, :disabled")){var e=c(d),g=e.hasClass("open");if(!g&&27!=b.which||g&&27==b.which)return 27==b.which&&e.find(f).trigger("focus"),d.trigger("click");var h=" li:not(.divider):visible a",i=e.find('[role="menu"]'+h+', [role="listbox"]'+h);if(i.length){var j=i.index(b.target);38==b.which&&j>0&&j--,40==b.which&&j<i.length-1&&j++,~j||(j=0),i.eq(j).trigger("focus")}}}};var h=a.fn.dropdown;a.fn.dropdown=d,a.fn.dropdown.Constructor=g,a.fn.dropdown.noConflict=function(){return a.fn.dropdown=h,this},a(document).on("click.bs.dropdown.data-api",b).on("click.bs.dropdown.data-api",".dropdown form",function(a){a.stopPropagation()}).on("click.bs.dropdown.data-api",f,g.prototype.toggle).on("keydown.bs.dropdown.data-api",f,g.prototype.keydown).on("keydown.bs.dropdown.data-api",'[role="menu"]',g.prototype.keydown).on("keydown.bs.dropdown.data-api",'[role="listbox"]',g.prototype.keydown)}(jQuery),+function(a){"use strict";function b(b,d){return this.each(function(){var e=a(this),f=e.data("bs.modal"),g=a.extend({},c.DEFAULTS,e.data(),"object"==typeof b&&b);f||e.data("bs.modal",f=new c(this,g)),"string"==typeof b?f[b](d):g.show&&f.show(d)})}var c=function(b,c){this.options=c,this.$body=a(document.body),this.$element=a(b),this.$backdrop=this.isShown=null,this.scrollbarWidth=0,this.options.remote&&this.$element.find(".modal-content").load(this.options.remote,a.proxy(function(){this.$element.trigger("loaded.bs.modal")},this))};c.VERSION="3.3.2",c.TRANSITION_DURATION=300,c.BACKDROP_TRANSITION_DURATION=150,c.DEFAULTS={backdrop:!0,keyboard:!0,show:!0},c.prototype.toggle=function(a){return this.isShown?this.hide():this.show(a)},c.prototype.show=function(b){var d=this,e=a.Event("show.bs.modal",{relatedTarget:b});this.$element.trigger(e),this.isShown||e.isDefaultPrevented()||(this.isShown=!0,this.checkScrollbar(),this.setScrollbar(),this.$body.addClass("modal-open"),this.escape(),this.resize(),this.$element.on("click.dismiss.bs.modal",'[data-dismiss="modal"]',a.proxy(this.hide,this)),this.backdrop(function(){var e=a.support.transition&&d.$element.hasClass("fade");d.$element.parent().length||d.$element.appendTo(d.$body),d.$element.show().scrollTop(0),d.options.backdrop&&d.adjustBackdrop(),d.adjustDialog(),e&&d.$element[0].offsetWidth,d.$element.addClass("in").attr("aria-hidden",!1),d.enforceFocus();var f=a.Event("shown.bs.modal",{relatedTarget:b});e?d.$element.find(".modal-dialog").one("bsTransitionEnd",function(){d.$element.trigger("focus").trigger(f)}).emulateTransitionEnd(c.TRANSITION_DURATION):d.$element.trigger("focus").trigger(f)}))},c.prototype.hide=function(b){b&&b.preventDefault(),b=a.Event("hide.bs.modal"),this.$element.trigger(b),this.isShown&&!b.isDefaultPrevented()&&(this.isShown=!1,this.escape(),this.resize(),a(document).off("focusin.bs.modal"),this.$element.removeClass("in").attr("aria-hidden",!0).off("click.dismiss.bs.modal"),a.support.transition&&this.$element.hasClass("fade")?this.$element.one("bsTransitionEnd",a.proxy(this.hideModal,this)).emulateTransitionEnd(c.TRANSITION_DURATION):this.hideModal())},c.prototype.enforceFocus=function(){a(document).off("focusin.bs.modal").on("focusin.bs.modal",a.proxy(function(a){this.$element[0]===a.target||this.$element.has(a.target).length||this.$element.trigger("focus")},this))},c.prototype.escape=function(){this.isShown&&this.options.keyboard?this.$element.on("keydown.dismiss.bs.modal",a.proxy(function(a){27==a.which&&this.hide()},this)):this.isShown||this.$element.off("keydown.dismiss.bs.modal")},c.prototype.resize=function(){this.isShown?a(window).on("resize.bs.modal",a.proxy(this.handleUpdate,this)):a(window).off("resize.bs.modal")},c.prototype.hideModal=function(){var a=this;this.$element.hide(),this.backdrop(function(){a.$body.removeClass("modal-open"),a.resetAdjustments(),a.resetScrollbar(),a.$element.trigger("hidden.bs.modal")})},c.prototype.removeBackdrop=function(){this.$backdrop&&this.$backdrop.remove(),this.$backdrop=null},c.prototype.backdrop=function(b){var d=this,e=this.$element.hasClass("fade")?"fade":"";if(this.isShown&&this.options.backdrop){var f=a.support.transition&&e;if(this.$backdrop=a('<div class="modal-backdrop '+e+'" />').prependTo(this.$element).on("click.dismiss.bs.modal",a.proxy(function(a){a.target===a.currentTarget&&("static"==this.options.backdrop?this.$element[0].focus.call(this.$element[0]):this.hide.call(this))},this)),f&&this.$backdrop[0].offsetWidth,this.$backdrop.addClass("in"),!b)return;f?this.$backdrop.one("bsTransitionEnd",b).emulateTransitionEnd(c.BACKDROP_TRANSITION_DURATION):b()}else if(!this.isShown&&this.$backdrop){this.$backdrop.removeClass("in");var g=function(){d.removeBackdrop(),b&&b()};a.support.transition&&this.$element.hasClass("fade")?this.$backdrop.one("bsTransitionEnd",g).emulateTransitionEnd(c.BACKDROP_TRANSITION_DURATION):g()}else b&&b()},c.prototype.handleUpdate=function(){this.options.backdrop&&this.adjustBackdrop(),this.adjustDialog()},c.prototype.adjustBackdrop=function(){this.$backdrop.css("height",0).css("height",this.$element[0].scrollHeight)},c.prototype.adjustDialog=function(){var a=this.$element[0].scrollHeight>document.documentElement.clientHeight;this.$element.css({paddingLeft:!this.bodyIsOverflowing&&a?this.scrollbarWidth:"",paddingRight:this.bodyIsOverflowing&&!a?this.scrollbarWidth:""})},c.prototype.resetAdjustments=function(){this.$element.css({paddingLeft:"",paddingRight:""})},c.prototype.checkScrollbar=function(){this.bodyIsOverflowing=document.body.scrollHeight>document.documentElement.clientHeight,this.scrollbarWidth=this.measureScrollbar()},c.prototype.setScrollbar=function(){var a=parseInt(this.$body.css("padding-right")||0,10);this.bodyIsOverflowing&&this.$body.css("padding-right",a+this.scrollbarWidth)},c.prototype.resetScrollbar=function(){this.$body.css("padding-right","")},c.prototype.measureScrollbar=function(){var a=document.createElement("div");a.className="modal-scrollbar-measure",this.$body.append(a);var b=a.offsetWidth-a.clientWidth;return this.$body[0].removeChild(a),b};var d=a.fn.modal;a.fn.modal=b,a.fn.modal.Constructor=c,a.fn.modal.noConflict=function(){return a.fn.modal=d,this},a(document).on("click.bs.modal.data-api",'[data-toggle="modal"]',function(c){var d=a(this),e=d.attr("href"),f=a(d.attr("data-target")||e&&e.replace(/.*(?=#[^\s]+$)/,"")),g=f.data("bs.modal")?"toggle":a.extend({remote:!/#/.test(e)&&e},f.data(),d.data());d.is("a")&&c.preventDefault(),f.one("show.bs.modal",function(a){a.isDefaultPrevented()||f.one("hidden.bs.modal",function(){d.is(":visible")&&d.trigger("focus")})}),b.call(f,g,this)})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.tooltip"),f="object"==typeof b&&b;(e||"destroy"!=b)&&(e||d.data("bs.tooltip",e=new c(this,f)),"string"==typeof b&&e[b]())})}var c=function(a,b){this.type=this.options=this.enabled=this.timeout=this.hoverState=this.$element=null,this.init("tooltip",a,b)};c.VERSION="3.3.2",c.TRANSITION_DURATION=150,c.DEFAULTS={animation:!0,placement:"top",selector:!1,template:'<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',trigger:"hover focus",title:"",delay:0,html:!1,container:!1,viewport:{selector:"body",padding:0}},c.prototype.init=function(b,c,d){this.enabled=!0,this.type=b,this.$element=a(c),this.options=this.getOptions(d),this.$viewport=this.options.viewport&&a(this.options.viewport.selector||this.options.viewport);for(var e=this.options.trigger.split(" "),f=e.length;f--;){var g=e[f];if("click"==g)this.$element.on("click."+this.type,this.options.selector,a.proxy(this.toggle,this));else if("manual"!=g){var h="hover"==g?"mouseenter":"focusin",i="hover"==g?"mouseleave":"focusout";this.$element.on(h+"."+this.type,this.options.selector,a.proxy(this.enter,this)),this.$element.on(i+"."+this.type,this.options.selector,a.proxy(this.leave,this))}}this.options.selector?this._options=a.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.getOptions=function(b){return b=a.extend({},this.getDefaults(),this.$element.data(),b),b.delay&&"number"==typeof b.delay&&(b.delay={show:b.delay,hide:b.delay}),b},c.prototype.getDelegateOptions=function(){var b={},c=this.getDefaults();return this._options&&a.each(this._options,function(a,d){c[a]!=d&&(b[a]=d)}),b},c.prototype.enter=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c&&c.$tip&&c.$tip.is(":visible")?void(c.hoverState="in"):(c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),clearTimeout(c.timeout),c.hoverState="in",c.options.delay&&c.options.delay.show?void(c.timeout=setTimeout(function(){"in"==c.hoverState&&c.show()},c.options.delay.show)):c.show())},c.prototype.leave=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),clearTimeout(c.timeout),c.hoverState="out",c.options.delay&&c.options.delay.hide?void(c.timeout=setTimeout(function(){"out"==c.hoverState&&c.hide()},c.options.delay.hide)):c.hide()},c.prototype.show=function(){var b=a.Event("show.bs."+this.type);if(this.hasContent()&&this.enabled){this.$element.trigger(b);var d=a.contains(this.$element[0].ownerDocument.documentElement,this.$element[0]);if(b.isDefaultPrevented()||!d)return;var e=this,f=this.tip(),g=this.getUID(this.type);this.setContent(),f.attr("id",g),this.$element.attr("aria-describedby",g),this.options.animation&&f.addClass("fade");var h="function"==typeof this.options.placement?this.options.placement.call(this,f[0],this.$element[0]):this.options.placement,i=/\s?auto?\s?/i,j=i.test(h);j&&(h=h.replace(i,"")||"top"),f.detach().css({top:0,left:0,display:"block"}).addClass(h).data("bs."+this.type,this),this.options.container?f.appendTo(this.options.container):f.insertAfter(this.$element);var k=this.getPosition(),l=f[0].offsetWidth,m=f[0].offsetHeight;if(j){var n=h,o=this.options.container?a(this.options.container):this.$element.parent(),p=this.getPosition(o);h="bottom"==h&&k.bottom+m>p.bottom?"top":"top"==h&&k.top-m<p.top?"bottom":"right"==h&&k.right+l>p.width?"left":"left"==h&&k.left-l<p.left?"right":h,f.removeClass(n).addClass(h)}var q=this.getCalculatedOffset(h,k,l,m);this.applyPlacement(q,h);var r=function(){var a=e.hoverState;e.$element.trigger("shown.bs."+e.type),e.hoverState=null,"out"==a&&e.leave(e)};a.support.transition&&this.$tip.hasClass("fade")?f.one("bsTransitionEnd",r).emulateTransitionEnd(c.TRANSITION_DURATION):r()}},c.prototype.applyPlacement=function(b,c){var d=this.tip(),e=d[0].offsetWidth,f=d[0].offsetHeight,g=parseInt(d.css("margin-top"),10),h=parseInt(d.css("margin-left"),10);isNaN(g)&&(g=0),isNaN(h)&&(h=0),b.top=b.top+g,b.left=b.left+h,a.offset.setOffset(d[0],a.extend({using:function(a){d.css({top:Math.round(a.top),left:Math.round(a.left)})}},b),0),d.addClass("in");var i=d[0].offsetWidth,j=d[0].offsetHeight;"top"==c&&j!=f&&(b.top=b.top+f-j);var k=this.getViewportAdjustedDelta(c,b,i,j);k.left?b.left+=k.left:b.top+=k.top;var l=/top|bottom/.test(c),m=l?2*k.left-e+i:2*k.top-f+j,n=l?"offsetWidth":"offsetHeight";d.offset(b),this.replaceArrow(m,d[0][n],l)},c.prototype.replaceArrow=function(a,b,c){this.arrow().css(c?"left":"top",50*(1-a/b)+"%").css(c?"top":"left","")},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle();a.find(".tooltip-inner")[this.options.html?"html":"text"](b),a.removeClass("fade in top bottom left right")},c.prototype.hide=function(b){function d(){"in"!=e.hoverState&&f.detach(),e.$element.removeAttr("aria-describedby").trigger("hidden.bs."+e.type),b&&b()}var e=this,f=this.tip(),g=a.Event("hide.bs."+this.type);return this.$element.trigger(g),g.isDefaultPrevented()?void 0:(f.removeClass("in"),a.support.transition&&this.$tip.hasClass("fade")?f.one("bsTransitionEnd",d).emulateTransitionEnd(c.TRANSITION_DURATION):d(),this.hoverState=null,this)},c.prototype.fixTitle=function(){var a=this.$element;(a.attr("title")||"string"!=typeof a.attr("data-original-title"))&&a.attr("data-original-title",a.attr("title")||"").attr("title","")},c.prototype.hasContent=function(){return this.getTitle()},c.prototype.getPosition=function(b){b=b||this.$element;var c=b[0],d="BODY"==c.tagName,e=c.getBoundingClientRect();null==e.width&&(e=a.extend({},e,{width:e.right-e.left,height:e.bottom-e.top}));var f=d?{top:0,left:0}:b.offset(),g={scroll:d?document.documentElement.scrollTop||document.body.scrollTop:b.scrollTop()},h=d?{width:a(window).width(),height:a(window).height()}:null;return a.extend({},e,g,h,f)},c.prototype.getCalculatedOffset=function(a,b,c,d){return"bottom"==a?{top:b.top+b.height,left:b.left+b.width/2-c/2}:"top"==a?{top:b.top-d,left:b.left+b.width/2-c/2}:"left"==a?{top:b.top+b.height/2-d/2,left:b.left-c}:{top:b.top+b.height/2-d/2,left:b.left+b.width}},c.prototype.getViewportAdjustedDelta=function(a,b,c,d){var e={top:0,left:0};if(!this.$viewport)return e;var f=this.options.viewport&&this.options.viewport.padding||0,g=this.getPosition(this.$viewport);if(/right|left/.test(a)){var h=b.top-f-g.scroll,i=b.top+f-g.scroll+d;h<g.top?e.top=g.top-h:i>g.top+g.height&&(e.top=g.top+g.height-i)}else{var j=b.left-f,k=b.left+f+c;j<g.left?e.left=g.left-j:k>g.width&&(e.left=g.left+g.width-k)}return e},c.prototype.getTitle=function(){var a,b=this.$element,c=this.options;return a=b.attr("data-original-title")||("function"==typeof c.title?c.title.call(b[0]):c.title)},c.prototype.getUID=function(a){do a+=~~(1e6*Math.random());while(document.getElementById(a));return a},c.prototype.tip=function(){return this.$tip=this.$tip||a(this.options.template)},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},c.prototype.enable=function(){this.enabled=!0},c.prototype.disable=function(){this.enabled=!1},c.prototype.toggleEnabled=function(){this.enabled=!this.enabled},c.prototype.toggle=function(b){var c=this;b&&(c=a(b.currentTarget).data("bs."+this.type),c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c))),c.tip().hasClass("in")?c.leave(c):c.enter(c)},c.prototype.destroy=function(){var a=this;clearTimeout(this.timeout),this.hide(function(){a.$element.off("."+a.type).removeData("bs."+a.type)})};var d=a.fn.tooltip;a.fn.tooltip=b,a.fn.tooltip.Constructor=c,a.fn.tooltip.noConflict=function(){return a.fn.tooltip=d,this}}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.popover"),f="object"==typeof b&&b;(e||"destroy"!=b)&&(e||d.data("bs.popover",e=new c(this,f)),"string"==typeof b&&e[b]())})}var c=function(a,b){this.init("popover",a,b)};if(!a.fn.tooltip)throw new Error("Popover requires tooltip.js");c.VERSION="3.3.2",c.DEFAULTS=a.extend({},a.fn.tooltip.Constructor.DEFAULTS,{placement:"right",trigger:"click",content:"",template:'<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'}),c.prototype=a.extend({},a.fn.tooltip.Constructor.prototype),c.prototype.constructor=c,c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle(),c=this.getContent();a.find(".popover-title")[this.options.html?"html":"text"](b),a.find(".popover-content").children().detach().end()[this.options.html?"string"==typeof c?"html":"append":"text"](c),a.removeClass("fade top bottom left right in"),a.find(".popover-title").html()||a.find(".popover-title").hide()},c.prototype.hasContent=function(){return this.getTitle()||this.getContent()},c.prototype.getContent=function(){var a=this.$element,b=this.options;return a.attr("data-content")||("function"==typeof b.content?b.content.call(a[0]):b.content)},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")},c.prototype.tip=function(){return this.$tip||(this.$tip=a(this.options.template)),this.$tip};var d=a.fn.popover;a.fn.popover=b,a.fn.popover.Constructor=c,a.fn.popover.noConflict=function(){return a.fn.popover=d,this}}(jQuery),+function(a){"use strict";function b(c,d){var e=a.proxy(this.process,this);this.$body=a("body"),this.$scrollElement=a(a(c).is("body")?window:c),this.options=a.extend({},b.DEFAULTS,d),this.selector=(this.options.target||"")+" .nav li > a",this.offsets=[],this.targets=[],this.activeTarget=null,this.scrollHeight=0,this.$scrollElement.on("scroll.bs.scrollspy",e),this.refresh(),this.process()}function c(c){return this.each(function(){var d=a(this),e=d.data("bs.scrollspy"),f="object"==typeof c&&c;e||d.data("bs.scrollspy",e=new b(this,f)),"string"==typeof c&&e[c]()})}b.VERSION="3.3.2",b.DEFAULTS={offset:10},b.prototype.getScrollHeight=function(){return this.$scrollElement[0].scrollHeight||Math.max(this.$body[0].scrollHeight,document.documentElement.scrollHeight)},b.prototype.refresh=function(){var b="offset",c=0;a.isWindow(this.$scrollElement[0])||(b="position",c=this.$scrollElement.scrollTop()),this.offsets=[],this.targets=[],this.scrollHeight=this.getScrollHeight();var d=this;this.$body.find(this.selector).map(function(){var d=a(this),e=d.data("target")||d.attr("href"),f=/^#./.test(e)&&a(e);return f&&f.length&&f.is(":visible")&&[[f[b]().top+c,e]]||null}).sort(function(a,b){return a[0]-b[0]}).each(function(){d.offsets.push(this[0]),d.targets.push(this[1])})},b.prototype.process=function(){var a,b=this.$scrollElement.scrollTop()+this.options.offset,c=this.getScrollHeight(),d=this.options.offset+c-this.$scrollElement.height(),e=this.offsets,f=this.targets,g=this.activeTarget;if(this.scrollHeight!=c&&this.refresh(),b>=d)return g!=(a=f[f.length-1])&&this.activate(a);if(g&&b<e[0])return this.activeTarget=null,this.clear();for(a=e.length;a--;)g!=f[a]&&b>=e[a]&&(!e[a+1]||b<=e[a+1])&&this.activate(f[a])},b.prototype.activate=function(b){this.activeTarget=b,this.clear();var c=this.selector+'[data-target="'+b+'"],'+this.selector+'[href="'+b+'"]',d=a(c).parents("li").addClass("active");d.parent(".dropdown-menu").length&&(d=d.closest("li.dropdown").addClass("active")),d.trigger("activate.bs.scrollspy")},b.prototype.clear=function(){a(this.selector).parentsUntil(this.options.target,".active").removeClass("active")};var d=a.fn.scrollspy;a.fn.scrollspy=c,a.fn.scrollspy.Constructor=b,a.fn.scrollspy.noConflict=function(){return a.fn.scrollspy=d,this},a(window).on("load.bs.scrollspy.data-api",function(){a('[data-spy="scroll"]').each(function(){var b=a(this);c.call(b,b.data())})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.tab");e||d.data("bs.tab",e=new c(this)),"string"==typeof b&&e[b]()})}var c=function(b){this.element=a(b)};c.VERSION="3.3.2",c.TRANSITION_DURATION=150,c.prototype.show=function(){var b=this.element,c=b.closest("ul:not(.dropdown-menu)"),d=b.data("target");if(d||(d=b.attr("href"),d=d&&d.replace(/.*(?=#[^\s]*$)/,"")),!b.parent("li").hasClass("active")){var e=c.find(".active:last a"),f=a.Event("hide.bs.tab",{relatedTarget:b[0]}),g=a.Event("show.bs.tab",{relatedTarget:e[0]});if(e.trigger(f),b.trigger(g),!g.isDefaultPrevented()&&!f.isDefaultPrevented()){var h=a(d);this.activate(b.closest("li"),c),this.activate(h,h.parent(),function(){e.trigger({type:"hidden.bs.tab",relatedTarget:b[0]}),b.trigger({type:"shown.bs.tab", -relatedTarget:e[0]})})}}},c.prototype.activate=function(b,d,e){function f(){g.removeClass("active").find("> .dropdown-menu > .active").removeClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!1),b.addClass("active").find('[data-toggle="tab"]').attr("aria-expanded",!0),h?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu")&&b.closest("li.dropdown").addClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!0),e&&e()}var g=d.find("> .active"),h=e&&a.support.transition&&(g.length&&g.hasClass("fade")||!!d.find("> .fade").length);g.length&&h?g.one("bsTransitionEnd",f).emulateTransitionEnd(c.TRANSITION_DURATION):f(),g.removeClass("in")};var d=a.fn.tab;a.fn.tab=b,a.fn.tab.Constructor=c,a.fn.tab.noConflict=function(){return a.fn.tab=d,this};var e=function(c){c.preventDefault(),b.call(a(this),"show")};a(document).on("click.bs.tab.data-api",'[data-toggle="tab"]',e).on("click.bs.tab.data-api",'[data-toggle="pill"]',e)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.affix"),f="object"==typeof b&&b;e||d.data("bs.affix",e=new c(this,f)),"string"==typeof b&&e[b]()})}var c=function(b,d){this.options=a.extend({},c.DEFAULTS,d),this.$target=a(this.options.target).on("scroll.bs.affix.data-api",a.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",a.proxy(this.checkPositionWithEventLoop,this)),this.$element=a(b),this.affixed=this.unpin=this.pinnedOffset=null,this.checkPosition()};c.VERSION="3.3.2",c.RESET="affix affix-top affix-bottom",c.DEFAULTS={offset:0,target:window},c.prototype.getState=function(a,b,c,d){var e=this.$target.scrollTop(),f=this.$element.offset(),g=this.$target.height();if(null!=c&&"top"==this.affixed)return c>e?"top":!1;if("bottom"==this.affixed)return null!=c?e+this.unpin<=f.top?!1:"bottom":a-d>=e+g?!1:"bottom";var h=null==this.affixed,i=h?e:f.top,j=h?g:b;return null!=c&&c>=e?"top":null!=d&&i+j>=a-d?"bottom":!1},c.prototype.getPinnedOffset=function(){if(this.pinnedOffset)return this.pinnedOffset;this.$element.removeClass(c.RESET).addClass("affix");var a=this.$target.scrollTop(),b=this.$element.offset();return this.pinnedOffset=b.top-a},c.prototype.checkPositionWithEventLoop=function(){setTimeout(a.proxy(this.checkPosition,this),1)},c.prototype.checkPosition=function(){if(this.$element.is(":visible")){var b=this.$element.height(),d=this.options.offset,e=d.top,f=d.bottom,g=a("body").height();"object"!=typeof d&&(f=e=d),"function"==typeof e&&(e=d.top(this.$element)),"function"==typeof f&&(f=d.bottom(this.$element));var h=this.getState(g,b,e,f);if(this.affixed!=h){null!=this.unpin&&this.$element.css("top","");var i="affix"+(h?"-"+h:""),j=a.Event(i+".bs.affix");if(this.$element.trigger(j),j.isDefaultPrevented())return;this.affixed=h,this.unpin="bottom"==h?this.getPinnedOffset():null,this.$element.removeClass(c.RESET).addClass(i).trigger(i.replace("affix","affixed")+".bs.affix")}"bottom"==h&&this.$element.offset({top:g-b-f})}};var d=a.fn.affix;a.fn.affix=b,a.fn.affix.Constructor=c,a.fn.affix.noConflict=function(){return a.fn.affix=d,this},a(window).on("load",function(){a('[data-spy="affix"]').each(function(){var c=a(this),d=c.data();d.offset=d.offset||{},null!=d.offsetBottom&&(d.offset.bottom=d.offsetBottom),null!=d.offsetTop&&(d.offset.top=d.offsetTop),b.call(c,d)})})}(jQuery); \ No newline at end of file +f[g]=u(a,b,c,d,e)}),n&&(k(d),k(e)),f):f}function W(a){return Ea(a)?Nc(a):{}}function Y(a,b,c){if("function"!=typeof a)return Zb;if("undefined"==typeof b||!("prototype"in a))return a;var d=a.__bindData__;if("undefined"==typeof d&&(Xc.funcNames&&(d=!a.name),d=d||!Xc.funcDecomp,!d)){var e=Fc.call(a);Xc.funcNames||(d=!B.test(e)),d||(d=F.test(e),Yc(a,d))}if(d===!1||d!==!0&&1&d[1])return a;switch(c){case 1:return function(c){return a.call(b,c)};case 2:return function(c,d){return a.call(b,c,d)};case 3:return function(c,d,e){return a.call(b,c,d,e)};case 4:return function(c,d,e,f){return a.call(b,c,d,e,f)}}return Ib(a,b)}function Z(a){function b(){var a=i?g:this;if(e){var o=m(e);Ic.apply(o,arguments)}if((f||k)&&(o||(o=m(arguments)),f&&Ic.apply(o,f),k&&o.length<h))return d|=16,Z([c,l?d:-4&d,o,null,g,h]);if(o||(o=arguments),j&&(c=a[n]),this instanceof b){a=W(c.prototype);var p=c.apply(a,o);return Ea(p)?p:a}return c.apply(a,o)}var c=a[0],d=a[1],e=a[2],f=a[3],g=a[4],h=a[5],i=1&d,j=2&d,k=4&d,l=8&d,n=c;return Yc(b,a),b}function $(a,d){var e=-1,f=ia(),h=a?a.length:0,i=h>=t&&f===b,j=[];if(i){var k=g(d);k?(f=c,d=k):i=!1}for(;++e<h;){var m=a[e];f(d,m)<0&&j.push(m)}return i&&l(d),j}function _(a,b,c,d){for(var e=(d||0)-1,f=a?a.length:0,g=[];++e<f;){var h=a[e];if(h&&"object"==typeof h&&"number"==typeof h.length&&(Zc(h)||ma(h))){b||(h=_(h,b,c));var i=-1,j=h.length,k=g.length;for(g.length+=j;++i<j;)g[k++]=h[i]}else c||g.push(h)}return g}function ba(a,b,c,d,e,f){if(c){var g=c(a,b);if("undefined"!=typeof g)return!!g}if(a===b)return 0!==a||1/a==1/b;var h=typeof a,j=typeof b;if(!(a!==a||a&&V[h]||b&&V[j]))return!1;if(null==a||null==b)return a===b;var l=Ac.call(a),m=Ac.call(b);if(l==J&&(l=P),m==J&&(m=P),l!=m)return!1;switch(l){case L:case M:return+a==+b;case O:return a!=+a?b!=+b:0==a?1/a==1/b:a==+b;case Q:case R:return a==vc(b)}var n=l==K;if(!n){var o=Hc.call(a,"__wrapped__"),p=Hc.call(b,"__wrapped__");if(o||p)return ba(o?a.__wrapped__:a,p?b.__wrapped__:b,c,d,e,f);if(l!=P)return!1;var q=a.constructor,r=b.constructor;if(q!=r&&!(Da(q)&&q instanceof q&&Da(r)&&r instanceof r)&&"constructor"in a&&"constructor"in b)return!1}var s=!e;e||(e=i()),f||(f=i());for(var t=e.length;t--;)if(e[t]==a)return f[t]==b;var u=0;if(g=!0,e.push(a),f.push(b),n){if(t=a.length,u=b.length,g=u==t,g||d)for(;u--;){var v=t,w=b[u];if(d)for(;v--&&!(g=ba(a[v],w,c,d,e,f)););else if(!(g=ba(a[u],w,c,d,e,f)))break}}else gd(b,function(b,h,i){return Hc.call(i,h)?(u++,g=Hc.call(a,h)&&ba(a[h],b,c,d,e,f)):void 0}),g&&!d&&gd(a,function(a,b,c){return Hc.call(c,b)?g=--u>-1:void 0});return e.pop(),f.pop(),s&&(k(e),k(f)),g}function ca(a,b,c,d,e){(Zc(b)?Ya:hd)(b,function(b,f){var g,h,i=b,j=a[f];if(b&&((h=Zc(b))||id(b))){for(var k=d.length;k--;)if(g=d[k]==b){j=e[k];break}if(!g){var l;c&&(i=c(j,b),(l="undefined"!=typeof i)&&(j=i)),l||(j=h?Zc(j)?j:[]:id(j)?j:{}),d.push(b),e.push(j),l||ca(j,b,c,d,e)}}else c&&(i=c(j,b),"undefined"==typeof i&&(i=b)),"undefined"!=typeof i&&(j=i);a[f]=j})}function da(a,b){return a+Ec(Vc()*(b-a+1))}function ea(a,d,e){var f=-1,h=ia(),j=a?a.length:0,m=[],n=!d&&j>=t&&h===b,o=e||n?i():m;if(n){var p=g(o);h=c,o=p}for(;++f<j;){var q=a[f],r=e?e(q,f,a):q;(d?!f||o[o.length-1]!==r:h(o,r)<0)&&((e||n)&&o.push(r),m.push(q))}return n?(k(o.array),l(o)):e&&k(o),m}function fa(a){return function(b,c,e){var f={};c=d.createCallback(c,e,3);var g=-1,h=b?b.length:0;if("number"==typeof h)for(;++g<h;){var i=b[g];a(f,i,c(i,g,b),b)}else hd(b,function(b,d,e){a(f,b,c(b,d,e),e)});return f}}function ga(a,b,c,d,e,f){var g=1&b,h=2&b,i=4&b,j=16&b,k=32&b;if(!h&&!Da(a))throw new wc;j&&!c.length&&(b&=-17,j=c=!1),k&&!d.length&&(b&=-33,k=d=!1);var l=a&&a.__bindData__;if(l&&l!==!0)return l=m(l),l[2]&&(l[2]=m(l[2])),l[3]&&(l[3]=m(l[3])),!g||1&l[1]||(l[4]=e),!g&&1&l[1]&&(b|=8),!i||4&l[1]||(l[5]=f),j&&Ic.apply(l[2]||(l[2]=[]),c),k&&Lc.apply(l[3]||(l[3]=[]),d),l[1]|=b,ga.apply(null,l);var n=1==b||17===b?q:Z;return n([a,b,c,d,e,f])}function ha(a){return ad[a]}function ia(){var a=(a=d.indexOf)===rb?b:a;return a}function ja(a){return"function"==typeof a&&Bc.test(a)}function ka(a){var b,c;return a&&Ac.call(a)==P&&(b=a.constructor,!Da(b)||b instanceof b)?(gd(a,function(a,b){c=b}),"undefined"==typeof c||Hc.call(a,c)):!1}function la(a){return bd[a]}function ma(a){return a&&"object"==typeof a&&"number"==typeof a.length&&Ac.call(a)==J||!1}function na(a,b,c,d){return"boolean"!=typeof b&&null!=b&&(d=c,c=b,b=!1),u(a,b,"function"==typeof c&&Y(c,d,1))}function oa(a,b,c){return u(a,!0,"function"==typeof b&&Y(b,c,1))}function pa(a,b){var c=W(a);return b?ed(c,b):c}function qa(a,b,c){var e;return b=d.createCallback(b,c,3),hd(a,function(a,c,d){return b(a,c,d)?(e=c,!1):void 0}),e}function ra(a,b,c){var e;return b=d.createCallback(b,c,3),ta(a,function(a,c,d){return b(a,c,d)?(e=c,!1):void 0}),e}function sa(a,b,c){var d=[];gd(a,function(a,b){d.push(b,a)});var e=d.length;for(b=Y(b,c,3);e--&&b(d[e--],d[e],a)!==!1;);return a}function ta(a,b,c){var d=_c(a),e=d.length;for(b=Y(b,c,3);e--;){var f=d[e];if(b(a[f],f,a)===!1)break}return a}function ua(a){var b=[];return gd(a,function(a,c){Da(a)&&b.push(c)}),b.sort()}function va(a,b){return a?Hc.call(a,b):!1}function wa(a){for(var b=-1,c=_c(a),d=c.length,e={};++b<d;){var f=c[b];e[a[f]]=f}return e}function xa(a){return a===!0||a===!1||a&&"object"==typeof a&&Ac.call(a)==L||!1}function ya(a){return a&&"object"==typeof a&&Ac.call(a)==M||!1}function za(a){return a&&1===a.nodeType||!1}function Aa(a){var b=!0;if(!a)return b;var c=Ac.call(a),d=a.length;return c==K||c==R||c==J||c==P&&"number"==typeof d&&Da(a.splice)?!d:(hd(a,function(){return b=!1}),b)}function Ba(a,b,c,d){return ba(a,b,"function"==typeof c&&Y(c,d,2))}function Ca(a){return Pc(a)&&!Qc(parseFloat(a))}function Da(a){return"function"==typeof a}function Ea(a){return!(!a||!V[typeof a])}function Fa(a){return Ha(a)&&a!=+a}function Ga(a){return null===a}function Ha(a){return"number"==typeof a||a&&"object"==typeof a&&Ac.call(a)==O||!1}function Ia(a){return a&&"object"==typeof a&&Ac.call(a)==Q||!1}function Ja(a){return"string"==typeof a||a&&"object"==typeof a&&Ac.call(a)==R||!1}function Ka(a){return"undefined"==typeof a}function La(a,b,c){var e={};return b=d.createCallback(b,c,3),hd(a,function(a,c,d){e[c]=b(a,c,d)}),e}function Ma(a){var b=arguments,c=2;if(!Ea(a))return a;if("number"!=typeof b[2]&&(c=b.length),c>3&&"function"==typeof b[c-2])var d=Y(b[--c-1],b[c--],2);else c>2&&"function"==typeof b[c-1]&&(d=b[--c]);for(var e=m(arguments,1,c),f=-1,g=i(),h=i();++f<c;)ca(a,e[f],d,g,h);return k(g),k(h),a}function Na(a,b,c){var e={};if("function"!=typeof b){var f=[];gd(a,function(a,b){f.push(b)}),f=$(f,_(arguments,!0,!1,1));for(var g=-1,h=f.length;++g<h;){var i=f[g];e[i]=a[i]}}else b=d.createCallback(b,c,3),gd(a,function(a,c,d){b(a,c,d)||(e[c]=a)});return e}function Oa(a){for(var b=-1,c=_c(a),d=c.length,e=nc(d);++b<d;){var f=c[b];e[b]=[f,a[f]]}return e}function Pa(a,b,c){var e={};if("function"!=typeof b)for(var f=-1,g=_(arguments,!0,!1,1),h=Ea(a)?g.length:0;++f<h;){var i=g[f];i in a&&(e[i]=a[i])}else b=d.createCallback(b,c,3),gd(a,function(a,c,d){b(a,c,d)&&(e[c]=a)});return e}function Qa(a,b,c,e){var f=Zc(a);if(null==c)if(f)c=[];else{var g=a&&a.constructor,h=g&&g.prototype;c=W(h)}return b&&(b=d.createCallback(b,e,4),(f?Ya:hd)(a,function(a,d,e){return b(c,a,d,e)})),c}function Ra(a){for(var b=-1,c=_c(a),d=c.length,e=nc(d);++b<d;)e[b]=a[c[b]];return e}function Sa(a){for(var b=arguments,c=-1,d=_(b,!0,!1,1),e=b[2]&&b[2][b[1]]===a?1:d.length,f=nc(e);++c<e;)f[c]=a[d[c]];return f}function Ta(a,b,c){var d=-1,e=ia(),f=a?a.length:0,g=!1;return c=(0>c?Sc(0,f+c):c)||0,Zc(a)?g=e(a,b,c)>-1:"number"==typeof f?g=(Ja(a)?a.indexOf(b,c):e(a,b,c))>-1:hd(a,function(a){return++d>=c?!(g=a===b):void 0}),g}function Ua(a,b,c){var e=!0;b=d.createCallback(b,c,3);var f=-1,g=a?a.length:0;if("number"==typeof g)for(;++f<g&&(e=!!b(a[f],f,a)););else hd(a,function(a,c,d){return e=!!b(a,c,d)});return e}function Va(a,b,c){var e=[];b=d.createCallback(b,c,3);var f=-1,g=a?a.length:0;if("number"==typeof g)for(;++f<g;){var h=a[f];b(h,f,a)&&e.push(h)}else hd(a,function(a,c,d){b(a,c,d)&&e.push(a)});return e}function Wa(a,b,c){b=d.createCallback(b,c,3);var e=-1,f=a?a.length:0;if("number"!=typeof f){var g;return hd(a,function(a,c,d){return b(a,c,d)?(g=a,!1):void 0}),g}for(;++e<f;){var h=a[e];if(b(h,e,a))return h}}function Xa(a,b,c){var e;return b=d.createCallback(b,c,3),Za(a,function(a,c,d){return b(a,c,d)?(e=a,!1):void 0}),e}function Ya(a,b,c){var d=-1,e=a?a.length:0;if(b=b&&"undefined"==typeof c?b:Y(b,c,3),"number"==typeof e)for(;++d<e&&b(a[d],d,a)!==!1;);else hd(a,b);return a}function Za(a,b,c){var d=a?a.length:0;if(b=b&&"undefined"==typeof c?b:Y(b,c,3),"number"==typeof d)for(;d--&&b(a[d],d,a)!==!1;);else{var e=_c(a);d=e.length,hd(a,function(a,c,f){return c=e?e[--d]:--d,b(f[c],c,f)})}return a}function $a(a,b){var c=m(arguments,2),d=-1,e="function"==typeof b,f=a?a.length:0,g=nc("number"==typeof f?f:0);return Ya(a,function(a){g[++d]=(e?b:a[b]).apply(a,c)}),g}function _a(a,b,c){var e=-1,f=a?a.length:0;if(b=d.createCallback(b,c,3),"number"==typeof f)for(var g=nc(f);++e<f;)g[e]=b(a[e],e,a);else g=[],hd(a,function(a,c,d){g[++e]=b(a,c,d)});return g}function ab(a,b,c){var f=-(1/0),g=f;if("function"!=typeof b&&c&&c[b]===a&&(b=null),null==b&&Zc(a))for(var h=-1,i=a.length;++h<i;){var j=a[h];j>g&&(g=j)}else b=null==b&&Ja(a)?e:d.createCallback(b,c,3),Ya(a,function(a,c,d){var e=b(a,c,d);e>f&&(f=e,g=a)});return g}function bb(a,b,c){var f=1/0,g=f;if("function"!=typeof b&&c&&c[b]===a&&(b=null),null==b&&Zc(a))for(var h=-1,i=a.length;++h<i;){var j=a[h];g>j&&(g=j)}else b=null==b&&Ja(a)?e:d.createCallback(b,c,3),Ya(a,function(a,c,d){var e=b(a,c,d);f>e&&(f=e,g=a)});return g}function cb(a,b,c,e){if(!a)return c;var f=arguments.length<3;b=d.createCallback(b,e,4);var g=-1,h=a.length;if("number"==typeof h)for(f&&(c=a[++g]);++g<h;)c=b(c,a[g],g,a);else hd(a,function(a,d,e){c=f?(f=!1,a):b(c,a,d,e)});return c}function db(a,b,c,e){var f=arguments.length<3;return b=d.createCallback(b,e,4),Za(a,function(a,d,e){c=f?(f=!1,a):b(c,a,d,e)}),c}function eb(a,b,c){return b=d.createCallback(b,c,3),Va(a,function(a,c,d){return!b(a,c,d)})}function fb(a,b,c){if(a&&"number"!=typeof a.length&&(a=Ra(a)),null==b||c)return a?a[da(0,a.length-1)]:o;var d=gb(a);return d.length=Tc(Sc(0,b),d.length),d}function gb(a){var b=-1,c=a?a.length:0,d=nc("number"==typeof c?c:0);return Ya(a,function(a){var c=da(0,++b);d[b]=d[c],d[c]=a}),d}function hb(a){var b=a?a.length:0;return"number"==typeof b?b:_c(a).length}function ib(a,b,c){var e;b=d.createCallback(b,c,3);var f=-1,g=a?a.length:0;if("number"==typeof g)for(;++f<g&&!(e=b(a[f],f,a)););else hd(a,function(a,c,d){return!(e=b(a,c,d))});return!!e}function jb(a,b,c){var e=-1,g=Zc(b),h=a?a.length:0,m=nc("number"==typeof h?h:0);for(g||(b=d.createCallback(b,c,3)),Ya(a,function(a,c,d){var f=m[++e]=j();g?f.criteria=_a(b,function(b){return a[b]}):(f.criteria=i())[0]=b(a,c,d),f.index=e,f.value=a}),h=m.length,m.sort(f);h--;){var n=m[h];m[h]=n.value,g||k(n.criteria),l(n)}return m}function kb(a){return a&&"number"==typeof a.length?m(a):Ra(a)}function lb(a){for(var b=-1,c=a?a.length:0,d=[];++b<c;){var e=a[b];e&&d.push(e)}return d}function mb(a){return $(a,_(arguments,!0,!0,1))}function nb(a,b,c){var e=-1,f=a?a.length:0;for(b=d.createCallback(b,c,3);++e<f;)if(b(a[e],e,a))return e;return-1}function ob(a,b,c){var e=a?a.length:0;for(b=d.createCallback(b,c,3);e--;)if(b(a[e],e,a))return e;return-1}function pb(a,b,c){var e=0,f=a?a.length:0;if("number"!=typeof b&&null!=b){var g=-1;for(b=d.createCallback(b,c,3);++g<f&&b(a[g],g,a);)e++}else if(e=b,null==e||c)return a?a[0]:o;return m(a,0,Tc(Sc(0,e),f))}function qb(a,b,c,d){return"boolean"!=typeof b&&null!=b&&(d=c,c="function"!=typeof b&&d&&d[b]===a?null:b,b=!1),null!=c&&(a=_a(a,c,d)),_(a,b)}function rb(a,c,d){if("number"==typeof d){var e=a?a.length:0;d=0>d?Sc(0,e+d):d||0}else if(d){var f=Ab(a,c);return a[f]===c?f:-1}return b(a,c,d)}function sb(a,b,c){var e=0,f=a?a.length:0;if("number"!=typeof b&&null!=b){var g=f;for(b=d.createCallback(b,c,3);g--&&b(a[g],g,a);)e++}else e=null==b||c?1:b||e;return m(a,0,Tc(Sc(0,f-e),f))}function tb(){for(var a=[],d=-1,e=arguments.length,f=i(),h=ia(),j=h===b,m=i();++d<e;){var n=arguments[d];(Zc(n)||ma(n))&&(a.push(n),f.push(j&&n.length>=t&&g(d?a[d]:m)))}var o=a[0],p=-1,q=o?o.length:0,r=[];a:for(;++p<q;){var s=f[0];if(n=o[p],(s?c(s,n):h(m,n))<0){for(d=e,(s||m).push(n);--d;)if(s=f[d],(s?c(s,n):h(a[d],n))<0)continue a;r.push(n)}}for(;e--;)s=f[e],s&&l(s);return k(f),k(m),r}function ub(a,b,c){var e=0,f=a?a.length:0;if("number"!=typeof b&&null!=b){var g=f;for(b=d.createCallback(b,c,3);g--&&b(a[g],g,a);)e++}else if(e=b,null==e||c)return a?a[f-1]:o;return m(a,Sc(0,f-e))}function vb(a,b,c){var d=a?a.length:0;for("number"==typeof c&&(d=(0>c?Sc(0,d+c):Tc(c,d-1))+1);d--;)if(a[d]===b)return d;return-1}function wb(a){for(var b=arguments,c=0,d=b.length,e=a?a.length:0;++c<d;)for(var f=-1,g=b[c];++f<e;)a[f]===g&&(Kc.call(a,f--,1),e--);return a}function xb(a,b,c){a=+a||0,c="number"==typeof c?c:+c||1,null==b&&(b=a,a=0);for(var d=-1,e=Sc(0,Cc((b-a)/(c||1))),f=nc(e);++d<e;)f[d]=a,a+=c;return f}function yb(a,b,c){var e=-1,f=a?a.length:0,g=[];for(b=d.createCallback(b,c,3);++e<f;){var h=a[e];b(h,e,a)&&(g.push(h),Kc.call(a,e--,1),f--)}return g}function zb(a,b,c){if("number"!=typeof b&&null!=b){var e=0,f=-1,g=a?a.length:0;for(b=d.createCallback(b,c,3);++f<g&&b(a[f],f,a);)e++}else e=null==b||c?1:Sc(0,b);return m(a,e)}function Ab(a,b,c,e){var f=0,g=a?a.length:f;for(c=c?d.createCallback(c,e,1):Zb,b=c(b);g>f;){var h=f+g>>>1;c(a[h])<b?f=h+1:g=h}return f}function Bb(){return ea(_(arguments,!0,!0))}function Cb(a,b,c,e){return"boolean"!=typeof b&&null!=b&&(e=c,c="function"!=typeof b&&e&&e[b]===a?null:b,b=!1),null!=c&&(c=d.createCallback(c,e,3)),ea(a,b,c)}function Db(a){return $(a,m(arguments,1))}function Eb(){for(var a=-1,b=arguments.length;++a<b;){var c=arguments[a];if(Zc(c)||ma(c))var d=d?ea($(d,c).concat($(c,d))):c}return d||[]}function Fb(){for(var a=arguments.length>1?arguments:arguments[0],b=-1,c=a?ab(md(a,"length")):0,d=nc(0>c?0:c);++b<c;)d[b]=md(a,b);return d}function Gb(a,b){var c=-1,d=a?a.length:0,e={};for(b||!d||Zc(a[0])||(b=[]);++c<d;){var f=a[c];b?e[f]=b[c]:f&&(e[f[0]]=f[1])}return e}function Hb(a,b){if(!Da(b))throw new wc;return function(){return--a<1?b.apply(this,arguments):void 0}}function Ib(a,b){return arguments.length>2?ga(a,17,m(arguments,2),null,b):ga(a,1,null,null,b)}function Jb(a){for(var b=arguments.length>1?_(arguments,!0,!1,1):ua(a),c=-1,d=b.length;++c<d;){var e=b[c];a[e]=ga(a[e],1,null,null,a)}return a}function Kb(a,b){return arguments.length>2?ga(b,19,m(arguments,2),null,a):ga(b,3,null,null,a)}function Lb(){for(var a=arguments,b=a.length;b--;)if(!Da(a[b]))throw new wc;return function(){for(var b=arguments,c=a.length;c--;)b=[a[c].apply(this,b)];return b[0]}}function Mb(a,b){return b="number"==typeof b?b:+b||a.length,ga(a,4,null,null,null,b)}function Nb(a,b,c){var d,e,f,g,h,i,j,k=0,l=!1,m=!0;if(!Da(a))throw new wc;if(b=Sc(0,b)||0,c===!0){var n=!0;m=!1}else Ea(c)&&(n=c.leading,l="maxWait"in c&&(Sc(b,c.maxWait)||0),m="trailing"in c?c.trailing:m);var p=function(){var c=b-(od()-g);if(0>=c){e&&Dc(e);var l=j;e=i=j=o,l&&(k=od(),f=a.apply(h,d),i||e||(d=h=null))}else i=Jc(p,c)},q=function(){i&&Dc(i),e=i=j=o,(m||l!==b)&&(k=od(),f=a.apply(h,d),i||e||(d=h=null))};return function(){if(d=arguments,g=od(),h=this,j=m&&(i||!n),l===!1)var c=n&&!i;else{e||n||(k=g);var o=l-(g-k),r=0>=o;r?(e&&(e=Dc(e)),k=g,f=a.apply(h,d)):e||(e=Jc(q,o))}return r&&i?i=Dc(i):i||b===l||(i=Jc(p,b)),c&&(r=!0,f=a.apply(h,d)),!r||i||e||(d=h=null),f}}function Ob(a){if(!Da(a))throw new wc;var b=m(arguments,1);return Jc(function(){a.apply(o,b)},1)}function Pb(a,b){if(!Da(a))throw new wc;var c=m(arguments,2);return Jc(function(){a.apply(o,c)},b)}function Qb(a,b){if(!Da(a))throw new wc;var c=function(){var d=c.cache,e=b?b.apply(this,arguments):s+arguments[0];return Hc.call(d,e)?d[e]:d[e]=a.apply(this,arguments)};return c.cache={},c}function Rb(a){var b,c;if(!Da(a))throw new wc;return function(){return b?c:(b=!0,c=a.apply(this,arguments),a=null,c)}}function Sb(a){return ga(a,16,m(arguments,1))}function Tb(a){return ga(a,32,null,m(arguments,1))}function Ub(a,b,c){var d=!0,e=!0;if(!Da(a))throw new wc;return c===!1?d=!1:Ea(c)&&(d="leading"in c?c.leading:d,e="trailing"in c?c.trailing:e),T.leading=d,T.maxWait=b,T.trailing=e,Nb(a,b,T)}function Vb(a,b){return ga(b,16,[a])}function Wb(a){return function(){return a}}function Xb(a,b,c){var d=typeof a;if(null==a||"function"==d)return Y(a,b,c);if("object"!=d)return bc(a);var e=_c(a),f=e[0],g=a[f];return 1!=e.length||g!==g||Ea(g)?function(b){for(var c=e.length,d=!1;c--&&(d=ba(b[e[c]],a[e[c]],null,!0)););return d}:function(a){var b=a[f];return g===b&&(0!==g||1/g==1/b)}}function Yb(a){return null==a?"":vc(a).replace(dd,ha)}function Zb(a){return a}function $b(a,b,c){var e=!0,f=b&&ua(b);b&&(c||f.length)||(null==c&&(c=b),g=p,b=a,a=d,f=ua(b)),c===!1?e=!1:Ea(c)&&"chain"in c&&(e=c.chain);var g=a,h=Da(g);Ya(f,function(c){var d=a[c]=b[c];h&&(g.prototype[c]=function(){var b=this.__chain__,c=this.__wrapped__,f=[c];Ic.apply(f,arguments);var h=d.apply(a,f);if(e||b){if(c===h&&Ea(h))return this;h=new g(h),h.__chain__=b}return h})})}function _b(){return a._=zc,this}function ac(){}function bc(a){return function(b){return b[a]}}function cc(a,b,c){var d=null==a,e=null==b;if(null==c&&("boolean"==typeof a&&e?(c=a,a=1):e||"boolean"!=typeof b||(c=b,e=!0)),d&&e&&(b=1),a=+a||0,e?(b=a,a=0):b=+b||0,c||a%1||b%1){var f=Vc();return Tc(a+f*(b-a+parseFloat("1e-"+((f+"").length-1))),b)}return da(a,b)}function dc(a,b){if(a){var c=a[b];return Da(c)?a[b]():c}}function ec(a,b,c){var e=d.templateSettings;a=vc(a||""),c=fd({},c,e);var f,g=fd({},c.imports,e.imports),i=_c(g),j=Ra(g),k=0,l=c.interpolate||E,m="__p += '",n=uc((c.escape||E).source+"|"+l.source+"|"+(l===C?z:E).source+"|"+(c.evaluate||E).source+"|$","g");a.replace(n,function(b,c,d,e,g,i){return d||(d=e),m+=a.slice(k,i).replace(G,h),c&&(m+="' +\n__e("+c+") +\n'"),g&&(f=!0,m+="';\n"+g+";\n__p += '"),d&&(m+="' +\n((__t = ("+d+")) == null ? '' : __t) +\n'"),k=i+b.length,b}),m+="';\n";var p=c.variable,q=p;q||(p="obj",m="with ("+p+") {\n"+m+"\n}\n"),m=(f?m.replace(w,""):m).replace(x,"$1").replace(y,"$1;"),m="function("+p+") {\n"+(q?"":p+" || ("+p+" = {});\n")+"var __t, __p = '', __e = _.escape"+(f?", __j = Array.prototype.join;\nfunction print() { __p += __j.call(arguments, '') }\n":";\n")+m+"return __p\n}";var r="\n/*\n//# sourceURL="+(c.sourceURL||"/lodash/template/source["+I++ +"]")+"\n*/";try{var s=qc(i,"return "+m+r).apply(o,j)}catch(t){throw t.source=m,t}return b?s(b):(s.source=m,s)}function fc(a,b,c){a=(a=+a)>-1?a:0;var d=-1,e=nc(a);for(b=Y(b,c,1);++d<a;)e[d]=b(d);return e}function gc(a){return null==a?"":vc(a).replace(cd,la)}function hc(a){var b=++r;return vc(null==a?"":a)+b}function ic(a){return a=new p(a),a.__chain__=!0,a}function jc(a,b){return b(a),a}function kc(){return this.__chain__=!0,this}function lc(){return vc(this.__wrapped__)}function mc(){return this.__wrapped__}a=a?aa.defaults(X.Object(),a,aa.pick(X,H)):X;var nc=a.Array,oc=a.Boolean,pc=a.Date,qc=a.Function,rc=a.Math,sc=a.Number,tc=a.Object,uc=a.RegExp,vc=a.String,wc=a.TypeError,xc=[],yc=tc.prototype,zc=a._,Ac=yc.toString,Bc=uc("^"+vc(Ac).replace(/[.*+?^${}()|[\]\\]/g,"\\$&").replace(/toString| for [^\]]+/g,".*?")+"$"),Cc=rc.ceil,Dc=a.clearTimeout,Ec=rc.floor,Fc=qc.prototype.toString,Gc=ja(Gc=tc.getPrototypeOf)&&Gc,Hc=yc.hasOwnProperty,Ic=xc.push,Jc=a.setTimeout,Kc=xc.splice,Lc=xc.unshift,Mc=function(){try{var a={},b=ja(b=tc.defineProperty)&&b,c=b(a,a,a)&&b}catch(d){}return c}(),Nc=ja(Nc=tc.create)&&Nc,Oc=ja(Oc=nc.isArray)&&Oc,Pc=a.isFinite,Qc=a.isNaN,Rc=ja(Rc=tc.keys)&&Rc,Sc=rc.max,Tc=rc.min,Uc=a.parseInt,Vc=rc.random,Wc={};Wc[K]=nc,Wc[L]=oc,Wc[M]=pc,Wc[N]=qc,Wc[P]=tc,Wc[O]=sc,Wc[Q]=uc,Wc[R]=vc,p.prototype=d.prototype;var Xc=d.support={};Xc.funcDecomp=!ja(a.WinRTError)&&F.test(n),Xc.funcNames="string"==typeof qc.name,d.templateSettings={escape:/<%-([\s\S]+?)%>/g,evaluate:/<%([\s\S]+?)%>/g,interpolate:C,variable:"",imports:{_:d}},Nc||(W=function(){function b(){}return function(c){if(Ea(c)){b.prototype=c;var d=new b;b.prototype=null}return d||a.Object()}}());var Yc=Mc?function(a,b){U.value=b,Mc(a,"__bindData__",U)}:ac,Zc=Oc||function(a){return a&&"object"==typeof a&&"number"==typeof a.length&&Ac.call(a)==K||!1},$c=function(a){var b,c=a,d=[];if(!c)return d;if(!V[typeof a])return d;for(b in c)Hc.call(c,b)&&d.push(b);return d},_c=Rc?function(a){return Ea(a)?Rc(a):[]}:$c,ad={"&":"&","<":"<",">":">",'"':""","'":"'"},bd=wa(ad),cd=uc("("+_c(bd).join("|")+")","g"),dd=uc("["+_c(ad).join("")+"]","g"),ed=function(a,b,c){var d,e=a,f=e;if(!e)return f;var g=arguments,h=0,i="number"==typeof c?2:g.length;if(i>3&&"function"==typeof g[i-2])var j=Y(g[--i-1],g[i--],2);else i>2&&"function"==typeof g[i-1]&&(j=g[--i]);for(;++h<i;)if(e=g[h],e&&V[typeof e])for(var k=-1,l=V[typeof e]&&_c(e),m=l?l.length:0;++k<m;)d=l[k],f[d]=j?j(f[d],e[d]):e[d];return f},fd=function(a,b,c){var d,e=a,f=e;if(!e)return f;for(var g=arguments,h=0,i="number"==typeof c?2:g.length;++h<i;)if(e=g[h],e&&V[typeof e])for(var j=-1,k=V[typeof e]&&_c(e),l=k?k.length:0;++j<l;)d=k[j],"undefined"==typeof f[d]&&(f[d]=e[d]);return f},gd=function(a,b,c){var d,e=a,f=e;if(!e)return f;if(!V[typeof e])return f;b=b&&"undefined"==typeof c?b:Y(b,c,3);for(d in e)if(b(e[d],d,a)===!1)return f;return f},hd=function(a,b,c){var d,e=a,f=e;if(!e)return f;if(!V[typeof e])return f;b=b&&"undefined"==typeof c?b:Y(b,c,3);for(var g=-1,h=V[typeof e]&&_c(e),i=h?h.length:0;++g<i;)if(d=h[g],b(e[d],d,a)===!1)return f;return f},id=Gc?function(a){if(!a||Ac.call(a)!=P)return!1;var b=a.valueOf,c=ja(b)&&(c=Gc(b))&&Gc(c);return c?a==c||Gc(a)==c:ka(a)}:ka,jd=fa(function(a,b,c){Hc.call(a,c)?a[c]++:a[c]=1}),kd=fa(function(a,b,c){(Hc.call(a,c)?a[c]:a[c]=[]).push(b)}),ld=fa(function(a,b,c){a[c]=b}),md=_a,nd=Va,od=ja(od=pc.now)&&od||function(){return(new pc).getTime()},pd=8==Uc(v+"08")?Uc:function(a,b){return Uc(Ja(a)?a.replace(D,""):a,b||0)};return d.after=Hb,d.assign=ed,d.at=Sa,d.bind=Ib,d.bindAll=Jb,d.bindKey=Kb,d.chain=ic,d.compact=lb,d.compose=Lb,d.constant=Wb,d.countBy=jd,d.create=pa,d.createCallback=Xb,d.curry=Mb,d.debounce=Nb,d.defaults=fd,d.defer=Ob,d.delay=Pb,d.difference=mb,d.filter=Va,d.flatten=qb,d.forEach=Ya,d.forEachRight=Za,d.forIn=gd,d.forInRight=sa,d.forOwn=hd,d.forOwnRight=ta,d.functions=ua,d.groupBy=kd,d.indexBy=ld,d.initial=sb,d.intersection=tb,d.invert=wa,d.invoke=$a,d.keys=_c,d.map=_a,d.mapValues=La,d.max=ab,d.memoize=Qb,d.merge=Ma,d.min=bb,d.omit=Na,d.once=Rb,d.pairs=Oa,d.partial=Sb,d.partialRight=Tb,d.pick=Pa,d.pluck=md,d.property=bc,d.pull=wb,d.range=xb,d.reject=eb,d.remove=yb,d.rest=zb,d.shuffle=gb,d.sortBy=jb,d.tap=jc,d.throttle=Ub,d.times=fc,d.toArray=kb,d.transform=Qa,d.union=Bb,d.uniq=Cb,d.values=Ra,d.where=nd,d.without=Db,d.wrap=Vb,d.xor=Eb,d.zip=Fb,d.zipObject=Gb,d.collect=_a,d.drop=zb,d.each=Ya,d.eachRight=Za,d.extend=ed,d.methods=ua,d.object=Gb,d.select=Va,d.tail=zb,d.unique=Cb,d.unzip=Fb,$b(d),d.clone=na,d.cloneDeep=oa,d.contains=Ta,d.escape=Yb,d.every=Ua,d.find=Wa,d.findIndex=nb,d.findKey=qa,d.findLast=Xa,d.findLastIndex=ob,d.findLastKey=ra,d.has=va,d.identity=Zb,d.indexOf=rb,d.isArguments=ma,d.isArray=Zc,d.isBoolean=xa,d.isDate=ya,d.isElement=za,d.isEmpty=Aa,d.isEqual=Ba,d.isFinite=Ca,d.isFunction=Da,d.isNaN=Fa,d.isNull=Ga,d.isNumber=Ha,d.isObject=Ea,d.isPlainObject=id,d.isRegExp=Ia,d.isString=Ja,d.isUndefined=Ka,d.lastIndexOf=vb,d.mixin=$b,d.noConflict=_b,d.noop=ac,d.now=od,d.parseInt=pd,d.random=cc,d.reduce=cb,d.reduceRight=db,d.result=dc,d.runInContext=n,d.size=hb,d.some=ib,d.sortedIndex=Ab,d.template=ec,d.unescape=gc,d.uniqueId=hc,d.all=Ua,d.any=ib,d.detect=Wa,d.findWhere=Wa,d.foldl=cb,d.foldr=db,d.include=Ta,d.inject=cb,$b(function(){var a={};return hd(d,function(b,c){d.prototype[c]||(a[c]=b)}),a}(),!1),d.first=pb,d.last=ub,d.sample=fb,d.take=pb,d.head=pb,hd(d,function(a,b){var c="sample"!==b;d.prototype[b]||(d.prototype[b]=function(b,d){var e=this.__chain__,f=a(this.__wrapped__,b,d);return e||null!=b&&(!d||c&&"function"==typeof b)?new p(f,e):f})}),d.VERSION="2.4.1",d.prototype.chain=kc,d.prototype.toString=lc,d.prototype.value=mc,d.prototype.valueOf=mc,Ya(["join","pop","shift"],function(a){var b=xc[a];d.prototype[a]=function(){var a=this.__chain__,c=b.apply(this.__wrapped__,arguments);return a?new p(c,a):c}}),Ya(["push","reverse","sort","unshift"],function(a){var b=xc[a];d.prototype[a]=function(){return b.apply(this.__wrapped__,arguments),this}}),Ya(["concat","slice","splice"],function(a){var b=xc[a];d.prototype[a]=function(){return new p(b.apply(this.__wrapped__,arguments),this.__chain__)}}),d}var o,p=[],q=[],r=0,s=+new Date+"",t=75,u=40,v=" \f \ufeff\n\r\u2028\u2029 ᠎              ",w=/\b__p \+= '';/g,x=/\b(__p \+=) '' \+/g,y=/(__e\(.*?\)|\b__t\)) \+\n'';/g,z=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,A=/\w*$/,B=/^\s*function[ \n\r\t]+\w/,C=/<%=([\s\S]+?)%>/g,D=RegExp("^["+v+"]*0+(?=.$)"),E=/($^)/,F=/\bthis\b/,G=/['\n\r\t\u2028\u2029\\]/g,H=["Array","Boolean","Date","Function","Math","Number","Object","RegExp","String","_","attachEvent","clearTimeout","isFinite","isNaN","parseInt","setTimeout"],I=0,J="[object Arguments]",K="[object Array]",L="[object Boolean]",M="[object Date]",N="[object Function]",O="[object Number]",P="[object Object]",Q="[object RegExp]",R="[object String]",S={};S[N]=!1,S[J]=S[K]=S[L]=S[M]=S[O]=S[P]=S[Q]=S[R]=!0;var T={leading:!1,maxWait:0,trailing:!1},U={configurable:!1,enumerable:!1,value:null,writable:!1},V={"boolean":!1,"function":!0,object:!0,number:!1,string:!1,undefined:!1},W={"\\":"\\","'":"'","\n":"n","\r":"r"," ":"t","\u2028":"u2028","\u2029":"u2029"},X=V[typeof window]&&window||this,Y=V[typeof exports]&&exports&&!exports.nodeType&&exports,Z=V[typeof module]&&module&&!module.nodeType&&module,$=Z&&Z.exports===Y&&Y,_=V[typeof global]&&global;!_||_.global!==_&&_.window!==_||(X=_);var aa=n();"function"==typeof define&&"object"==typeof define.amd&&define.amd?define(function(){return aa}):Y&&Z&&($?(Z.exports=aa)._=aa:Y._=aa),a.constant("lodash",aa)}]),function(a,b){"use strict";function c(){function a(a,b,d){return function(e,f,g){var h=g.$normalize(b);c[h]&&!g[h]&&e.$watch(g[a],function(a){d&&(a=!a),f.attr(b,a)})}}var c={ariaHidden:!0,ariaChecked:!0,ariaDisabled:!0,ariaRequired:!0,ariaInvalid:!0,ariaMultiline:!0,ariaValue:!0,tabindex:!0,bindKeypress:!0};this.config=function(a){c=b.extend(c,a)},this.$get=function(){return{config:function(a){return c[a]},$$watchExpr:a}}}var d=b.module("ngAria",["ng"]).provider("$aria",c);d.directive("ngShow",["$aria",function(a){return a.$$watchExpr("ngShow","aria-hidden",!0)}]).directive("ngHide",["$aria",function(a){return a.$$watchExpr("ngHide","aria-hidden",!1)}]).directive("ngModel",["$aria",function(a){function b(b,c,d){return a.config(c)&&!d.attr(b)}function c(a,b){return!b.attr("role")&&b.attr("type")===a&&"INPUT"!==b[0].nodeName}function d(a,b){var c=a.type,d=a.role;return"checkbox"===(c||d)||"menuitemcheckbox"===d?"checkbox":"radio"===(c||d)||"menuitemradio"===d?"radio":"range"===c||"progressbar"===d||"slider"===d?"range":"textbox"===(c||d)||"TEXTAREA"===b[0].nodeName?"multiline":""}return{restrict:"A",require:"?ngModel",priority:200,link:function(e,f,g,h){function i(){return h.$modelValue}function j(){return m?(m=!1,function(){var a=g.value==h.$viewValue;f.attr("aria-checked",a),f.attr("tabindex",0-!a)}):function(){f.attr("aria-checked",g.value==h.$viewValue)}}function k(){f.attr("aria-checked",!h.$isEmpty(h.$viewValue))}var l=d(g,f),m=b("tabindex","tabindex",f);switch(l){case"radio":case"checkbox":c(l,f)&&f.attr("role",l),b("aria-checked","ariaChecked",f)&&e.$watch(i,"radio"===l?j():k);break;case"range":c(l,f)&&f.attr("role","slider"),a.config("ariaValue")&&(g.min&&!f.attr("aria-valuemin")&&f.attr("aria-valuemin",g.min),g.max&&!f.attr("aria-valuemax")&&f.attr("aria-valuemax",g.max),f.attr("aria-valuenow")||e.$watch(i,function(a){f.attr("aria-valuenow",a)}));break;case"multiline":b("aria-multiline","ariaMultiline",f)&&f.attr("aria-multiline",!0)}m&&f.attr("tabindex",0),h.$validators.required&&b("aria-required","ariaRequired",f)&&e.$watch(function(){return h.$error.required},function(a){f.attr("aria-required",!!a)}),b("aria-invalid","ariaInvalid",f)&&e.$watch(function(){return h.$invalid},function(a){f.attr("aria-invalid",!!a)})}}}]).directive("ngDisabled",["$aria",function(a){return a.$$watchExpr("ngDisabled","aria-disabled")}]).directive("ngMessages",function(){return{restrict:"A",require:"?ngMessages",link:function(a,b){b.attr("aria-live")||b.attr("aria-live","assertive")}}}).directive("ngClick",["$aria","$parse",function(a,b){return{restrict:"A",compile:function(c,d){var e=b(d.ngClick,null,!0);return function(b,c,d){function f(a,b){return-1!==b.indexOf(a[0].nodeName)?!0:void 0}var g=["BUTTON","A","INPUT","TEXTAREA"];c.attr("role")||f(c,g)||c.attr("role","button"),a.config("tabindex")&&!c.attr("tabindex")&&c.attr("tabindex",0),!a.config("bindKeypress")||d.ngKeypress||f(c,g)||c.on("keypress",function(a){function c(){e(b,{$event:a})}(32===a.keyCode||13===a.keyCode)&&b.$apply(c)})}}}}]).directive("ngDblclick",["$aria",function(a){return function(b,c){a.config("tabindex")&&!c.attr("tabindex")&&c.attr("tabindex",0)}}])}(window,window.angular),function(a,b,c){"use strict";function d(a,c){return b.equals(a.length,c.length)?a>c:a.length>c.length}function e(a){var b=a.replace(/\n/g," ").match(/^([^(]+?)\s*(\((.*)\))?$/);if(!b||4!==b.length)throw new Error("Invalid state ref '"+a+"'");return{state:b[1],paramExpr:b[3]||null}}function f(){var a={prefixStateName:null,template:"bootstrap3",templateUrl:null,includeAbstract:!1};this.setOptions=function(c){b.extend(a,c)},this.$get=["$state","$stateParams","$rootScope",function(b,f,g){var h=g;g.$on("$viewContentLoaded",function(a){d(a.targetScope.$id,h.$id)&&(h=a.targetScope)});var i=function(a){var b=a.parent||(/^(.+)\.[^.]+$/.exec(a.name)||[])[1];return b},j=function(c,d){for(var g,i,j=e(d),k=0,l=c.length;l>k;k+=1)if(c[k].name===j.state)return;g=b.get(j.state),g["abstract"]&&!a.includeAbstract||g.ncyBreadcrumb&&g.ncyBreadcrumb.skip||(j.paramExpr&&(i=h.$eval(j.paramExpr)),g.ncyBreadcrumbLink=b.href(j.state,i||f||{}),c.unshift(g))},k=function(a){var c=e(a),d=b.get(c.state);if(d.ncyBreadcrumb&&d.ncyBreadcrumb.parent){var f="function"==typeof d.ncyBreadcrumb.parent,g=f?d.ncyBreadcrumb.parent(h):d.ncyBreadcrumb.parent;if(g)return g}return i(d)};return{getTemplate:function(b){return a.templateUrl?null:b[a.template]?b[a.template]:a.template},getTemplateUrl:function(){return a.templateUrl},getStatesChain:function(c){for(var d=[],e=b.$current.self.name;e;e=k(e))if(j(d,e),c&&d.length)return d;return a.prefixStateName&&j(d,a.prefixStateName),d},getLastStep:function(){var a=this.getStatesChain(!0);return a.length?a[0]:c},$getLastViewScope:function(){return h}}}]}function g(a,c,d){var e={bootstrap2:'<ul class="breadcrumb"><li ng-repeat="step in steps" ng-switch="$last || !!step.abstract" ng-class="{active: $last}"><a ng-switch-when="false" href="{{step.ncyBreadcrumbLink}}">{{step.ncyBreadcrumbLabel}}</a> <span ng-switch-when="true">{{step.ncyBreadcrumbLabel}}</span><span class="divider" ng-hide="$last">/</span></li></ul>',bootstrap3:'<ol class="breadcrumb"><li ng-repeat="step in steps" ng-class="{active: $last}" ng-switch="$last || !!step.abstract"><a ng-switch-when="false" href="{{step.ncyBreadcrumbLink}}">{{step.ncyBreadcrumbLabel}}</a> <span ng-switch-when="true">{{step.ncyBreadcrumbLabel}}</span></li></ol>'};return{restrict:"AE",replace:!0,scope:{},template:c.getTemplate(e),templateUrl:c.getTemplateUrl(),link:{post:function(e){var f=[],g=function(){k(f);var d=c.$getLastViewScope();e.steps=c.getStatesChain(),b.forEach(e.steps,function(b){if(b.ncyBreadcrumb&&b.ncyBreadcrumb.label){var c=a(b.ncyBreadcrumb.label);b.ncyBreadcrumbLabel=c(d),j(f,c,d,b)}else b.ncyBreadcrumbLabel=b.name})};d.$on("$viewContentLoaded",function(){g()}),g()}}}}function h(a,b,c){return{restrict:"A",scope:{},template:"{{ncyBreadcrumbLabel}}",compile:function(d,e){ +var f=d.attr(e.$attr.ncyBreadcrumbLast);return f&&d.html(f),{post:function(d){var e=[],f=function(){k(e);var c=b.$getLastViewScope(),f=b.getLastStep();if(f)if(d.ncyBreadcrumbLink=f.ncyBreadcrumbLink,f.ncyBreadcrumb&&f.ncyBreadcrumb.label){var g=a(f.ncyBreadcrumb.label);d.ncyBreadcrumbLabel=g(c),j(e,g,c,d)}else d.ncyBreadcrumbLabel=f.name};c.$on("$viewContentLoaded",function(){f()}),f()}}}}}var i=function(a){if(a.expressions)return a.expressions;var c=[];return b.forEach(a.parts,function(a){b.isFunction(a)&&c.push(a.exp)}),c},j=function(a,c,d,e){b.forEach(i(c),function(b){var f=d.$watch(b,function(){e.ncyBreadcrumbLabel=c(d)});a.push(f)})},k=function(a){b.forEach(a,function(a){a()}),a=[]};g.$inject=["$interpolate","$breadcrumb","$rootScope"],h.$inject=["$interpolate","$breadcrumb","$rootScope"],b.module("ncy-angular-breadcrumb",["ui.router.state"]).provider("$breadcrumb",f).directive("ncyBreadcrumb",g).directive("ncyBreadcrumbLast",h)}(window,window.angular),angular.module("Volusion.toolboxCommon.templates",[]),angular.module("Volusion.toolboxCommon",["ngCookies","ngSanitize","pascalprecht.translate","ui.bootstrap","Volusion.toolboxCommon.templates","ngLodash","ngAria","ncy-angular-breadcrumb"]).config(["$httpProvider","$translateProvider",function(a,b){"use strict";a.interceptors.push("vnHttpResponseInterceptor");var c={"VN-CAROUSEL-TITLE":"Inline Images:","VN-IMAGE-TITLE":"Image:","VN-RATING-TITLE":"Rating:"},d={"VN-CAROUSEL-TITLE":"Imágenes","VN-IMAGE-TITLE":"Imáge:","VN-RATING-TITLE":"Clasificación"};b.translations("en",c).translations("es",d).preferredLanguage("en")}]).run(["$rootScope","$window","vnCacheBustFilter","$state",function(a,b,c,d){"use strict";a.isInDesktopMode=!0,a.overridesCSS=c("/styles/overrides.css"),a.$on("$routeChangeError",function(a,c,d,e){404===e.status&&b.location.replace("/404.html")}),a.$on("$stateChangeError",function(a,b){a.preventDefault(),d.go(-1!==b.name.indexOf("my-account")?"my-account-login":"home")})}]),angular.module("Volusion.toolboxCommon").service("vnAccountSession",[function(){return this.create=function(a){this.id=a},this.destroy=function(){this.id=null},this}]),angular.module("Volusion.toolboxCommon").constant("VN_AUTH_EVENTS",{loginSuccess:"vn-auth-login-success",logoutSuccess:"vn-auth-logout-success",loginFailed:"vn-auth-login-failed",sessionTimeout:"vn-auth-session-timeout",notAuthenticated:"vn-auth-not-authenticated",notAuthorized:"vn-auth-not-authorized"}),angular.module("Volusion.toolboxCommon").factory("vnAuthService",["$http","$rootScope","vnAppConfig","vnAccountSession","VN_AUTH_EVENTS",function(a,b,c,d,e){function f(f){return a({method:"POST",url:c.getLoginUrl(),headers:{"Content-Type":"application/x-www-form-urlencoded"},transformRequest:function(a){var b=[];for(var c in a)a.hasOwnProperty(c)&&b.push(encodeURIComponent(c)+"="+encodeURIComponent(a[c]));return b.join("&")},data:f,withCredentials:!0}).success(function(a){return d.create(a.CustomerId),b.$emit(e.loginSuccess,a.CustomerId)})["catch"](function(a){return b.$emit(e.loginFailed,a)})}function g(){return!!d.id}function h(){d.destroy(),b.$emit(e.logoutSuccess)}function i(b){return a({method:"POST",url:c.getForgotPasswordUrl(),headers:{"Content-Type":"application/x-www-form-urlencoded"},transformRequest:function(a){var b=[];for(var c in a)a.hasOwnProperty(c)&&b.push(encodeURIComponent(c)+"="+encodeURIComponent(a[c]));return b.join("&")},data:{Email:b},withCredentials:!0})}return{login:f,isAuthenticated:g,logout:h,forgotPassword:i}}]),angular.module("Volusion.toolboxCommon").directive("vnAddressDisplay",function(){"use strict";return{restrict:"AE",replace:!0,scope:{address:"=",showEditButton:"=",onClick:"&",shipping:"@"},templateUrl:"address/address-display.tpl.html",link:function(a){a.isLocationUS=!0,a.shippingValue="true"===a.shipping?!0:!1,a.$watch("address.country",function(b){b&&(a.isLocationUS="United States"===b)})}}}),angular.module("Volusion.toolboxCommon").directive("vnAddressDisplayActions",function(){return{restrict:"A",scope:{address:"=",onMakePreferredClicked:"&",onDeleteClicked:"&",onEditClicked:"&",shipping:"@"},templateUrl:"address/vn-address-display-actions.tpl.html"}}),angular.module("Volusion.toolboxCommon").directive("vnAddressPicker",["$rootScope","vnAddressUtilities",function(a,b){return{restrict:"AE",replace:!0,scope:{addressCopied:"=",addressList:"=",backToText:"@",copyAddressHandler:"&",copyAddressText:"@",countries:"=",newAddressTitle:"@",onAddressSelected:"&",saveAddress:"&",selectAddressTitle:"@",showCopyAddress:"=",shipping:"@"},templateUrl:"address/vn-address-picker.tpl.html",link:function(c){c.openAddressPicker=!0,c.state="ADDRESSLIST",c.setPreferredAddress=function(a){b.setPreferredAddress(c.addressList,a)},c.createNewAddress=function(){c.state="NEWADDRESS",c.newAddress=b.createEmptyAddress(),c.showCopyAddress&&a.$emit("vnAddressPicker.addAddressClicked")},c.selectAddress=function(){c.onAddressSelected(),c.openAddressPicker=!1}}}}]),angular.module("Volusion.toolboxCommon").factory("vnAddressUtilities",["lodash",function(a){return{createEmptyAddress:function(){return{address1:"",address2:"",city:"",companyName:"",country:"United States",firstName:"",lastName:"",phoneNumber:"",postalCode:"",preferred:!0,residential:!0,state:""}},setPreferredAddress:function(b,c){a.forEach(b,function(a,b){a.preferred=c===b})},getPreferredAddress:function(b){return a.find(b,function(a){return a.preferred})||b[0]},removeAddressFromList:function(b,c){return a.reject(b,function(a){return a.id===c.id})}}}]),angular.module("Volusion.toolboxCommon").controller("vnAppMessageCtrl",["vnAppMessageService",function(a){var b=this;b.alerts=a.getMessages(),b.closeAlert=function(b){a.removeMessage(b)}}]),angular.module("Volusion.toolboxCommon").directive("vnAppMessage",function(){return{restrict:"EA",controller:"vnAppMessageCtrl",controllerAs:"appMessagesCtrl",templateUrl:"app-messages/vnAppMessage.tpl.html"}}),angular.module("Volusion.toolboxCommon").service("vnAppMessageService",[function(){var a={},b=[];return a.addMessage=function(a){var c={id:Date.now(),type:a.type||"warning",text:a.text};b.push(c)},a.getMessages=function(){return b},a.removeMessage=function(a){angular.forEach(b,function(c,d){c&&c.id===a&&b.splice(d,1)})},a}]),angular.module("Volusion.toolboxCommon").controller("BillingAddressViewsCtrl",["$scope","$rootScope","vnAddressUtilities","vnCheckout","vnUser",function(a,b,c,d,e){var f=1,g=-1,h=this;h.state=null,h.showCopyAddress=!0,h.useShippingAddress=!1,h.init=function(){h.checkout=d.get(),h.user=e.getUser(),h.user.anonymous?(h.billingAddress=c.createEmptyAddress(),h.state="EDITADDRESS"):e.getBillingAddresses().then(function(a){a&&a.length?(h.billingAddress=c.getPreferredAddress(a),h.onAfterAddressSave()):(h.billingAddress=c.createEmptyAddress(),h.state="EDITADDRESS")}),d.getCountries().then(function(a){h.countries=a.data})},h.editBillingAddress=function(){!h.user.anonymous&&h.user.billingAddresses&&h.user.billingAddresses.length?(h.state="PICKADDRESS",d.setHasOpenDrawer(f,!0)):h.state="EDITADDRESS"},h.onAddressSelected=function(){h.useShippingAddress=!1,h.billingAddress=c.getPreferredAddress(h.user.billingAddresses),h.onAfterAddressSave(),d.setHasOpenDrawer(f,!1)},h.onAddressAdded=function(a){h.billingAddress=a,h.addAddressToBillingAddresses(h.billingAddress),h.onAfterAddressSave()},h.saveBillingAddress=function(){"EDITADDRESS"===h.state&&h.addAddressToBillingAddresses(h.billingAddress),h.onAfterAddressSave()},h.copyShippingAddress=function(){if(h.user.anonymous)h.useShippingAddress?(angular.copy(h.checkout.cart.shippingAddress,h.billingAddress),h.saveBillingAddress()):h.state="EDITADDRESS";else{h.useShippingAddress=!0;var a=c.createEmptyAddress();angular.copy(h.checkout.cart.shippingAddress,a),h.addAddressToBillingAddresses(a,!0),h.billingAddress=c.getPreferredAddress(h.user.billingAddresses),h.saveBillingAddress()}},h.setShippingAddressFalse=function(){h.state="EDITADDRESS",h.useShippingAddress=!1,d.setBillToValidity(!1)},h.addAddressToBillingAddresses=function(a,b){var d;if(h.user.anonymous)h.user.billingAddresses=[],d=h.user.billingAddresses.push(a),c.setPreferredAddress(h.user.billingAddresses,d-1);else if(b){if(-1===g)e.setBillingAddress(a).then(function(b){a.id=b}),d=h.user.billingAddresses.push(a),g=d-1;else{var f=h.user.billingAddresses[g];angular.extend(f,a),e.updateBillingAddress(f)}c.setPreferredAddress(h.user.billingAddresses,g)}else h.useShippingAddress=!1,e.setBillingAddress(a).then(function(b){a.id=b}),d=h.user.billingAddresses.push(a),c.setPreferredAddress(h.user.billingAddresses,d-1)},h.onAfterAddressSave=function(){d.setBillToValidity(!0),d.setBillingAddress(h.billingAddress),d.updateCart(),h.state="VIEWADDRESS"},b.$on("vnPayment.validate",function(){"VIEWADDRESS"===h.state&&(d.setBillToValidity(!0),b.$emit("vnPayment.validate.continue"))}),b.$on("vnAddressPicker.addAddressClicked",function(){h.useShippingAddress=!1}),a.$watch(function(){return h.useShippingAddress},function(a){var c=angular.noop;a?c=b.$on("checkout.shippingaddress.changed",function(){h.useShippingAddress&&h.copyShippingAddress()}):c()})}]),angular.module("Volusion.toolboxCommon").directive("vnBusyAnimation",function(){"use strict";return{templateUrl:"busy-animation/vnBusyAnimation.tpl.html",transclude:!0,restrict:"A",scope:{},link:function(a,b,c){a.show=!1,a["class"]=c.vnBusyAnimationClass,a.size=c.vnBusyAnimationSize||"40px",c.$observe("vnBusyAnimationShow",function(b){a.show="true"===b})}}}),angular.module("Volusion.toolboxCommon").filter("vnCacheBust",["vnTokenGenerator",function(a){function b(b){if(!b||!b.trim())return b;var c=b.indexOf("?")>-1?"&":"?";return b+c+"_="+a.getCacheBustingToken()}return function(a){return b(a)}}]),angular.module("Volusion.toolboxCommon").factory("vnTokenGenerator",function(){function a(){return(new Date).valueOf()}return{getCacheBustingToken:a}}),angular.module("Volusion.toolboxCommon").service("CheckoutService",function(){this.sharedMethods={}}).controller("CheckoutCtrl",["$rootScope","vnViewPortWatch","$scope","vnCart","vnCheckout","vnContentManager","CheckoutService","$window",function(a,b,c,d,e,f,g,h){e.initCart().promise.then(function(){e.setUser()});var i={"default":"Place Order",loading:"Placing Order"};c.placeOrderBtnText=i["default"],g.sharedMethods.nextCheckoutStep=function(){c.nextStep()},f.showCheckoutAppHeader(),f.showCheckoutAppFooter(),c.checkout=e.get(),c.isEditable=function(a){return c.checkout.currentStep===a?"edit":"show"},c.getShipToValid=function(){return!c.checkout.shipToValid},c.getShipMethodValid=function(){return!c.checkout.shipMethodValid},c.getCreditCardValid=function(){return!c.checkout.creditCardValid},c.getBillingAddressValid=function(){return!c.checkout.billToValid},c.setStep=function(a){e.setStep(a)},c.nextStep=function(){e.nextStep()},c.prevStep=function(){e.prevStep()},c.buildShippingStepLabel=function(){return'Continue <i class="fa fa-angle-right"></i>'},c.nextShippingStep=function(){c.checkout.shipToValid&&c.checkout.shipMethodValid&&e.nextStep()},c.nextBillingStep=function(){e.setBillToValidity(!1),e.setCreditCardValidity(!1),a.$emit("vnPayment.validate")},c.placeOrder=function(){e.placeOrder(),c.placeOrderBtnText=i.loading,a.$emit("checkout.stepThreeLoading");var b=a.$on("checkout.orderPlaced",function(){c.placeOrderBtnText=i["default"],a.$emit("checkout.stopLoading"),b()})},b.setBreakpoints([{name:"Non-Desktop",mediaQuery:"screen and (max-width:991px)",onUnmatch:function(){c.isInDesktopMode=!0},onMatch:function(){c.isInDesktopMode=!1}}]),a.$on("vnPayment.validate.continue",function(){c.checkout.creditCardValid&&c.checkout.billToValid&&e.nextStep()}),a.$on("checkout.stepChanged",function(){h.scrollTo(0,0)}),c.$on("$destroy",function(){f.showAppHeader(),f.showAppFooter()}),c.$on("vnShipTo.edit",function(a){c.hideShippingMethods=!0,a.stopPropagation()}),c.$on("vnShipTo.edit.done",function(a){c.hideShippingMethods=!1,a.stopPropagation()}),c.stepOneLoading=!1,c.stepTwoLoading=!1,c.stepThreeLoading=!1,a.$on("checkout.stepOneLoading",function(){c.stepOneLoading=!0}),a.$on("checkout.stepTwoLoading",function(){c.stepTwoLoading=!0}),a.$on("checkout.stepThreeLoading",function(){c.stepThreeLoading=!0}),a.$on("checkout.stopLoading",function(){c.stepOneLoading=!1,c.stepTwoLoading=!1,c.stepThreeLoading=!1})}]),angular.module("Volusion.toolboxCommon").directive("vnAddressEditor",["$rootScope","lodash",function(a,b){return{restrict:"EA",scope:{address:"=",countries:"=",onSave:"&",onDirty:"&",showSaveButton:"@",saveText:"@",showCancelButton:"@",cancelText:"@",onCancel:"&",shipping:"@"},templateUrl:"checkout/vn-address-editor.html",link:function(c){var d=null,e=null;c.frmAddress.$setPristine(),c.saveText=c.saveText||"Continue",c.cancelText=c.cancelText||"Cancel",c.showSaveButtonValue="false"===c.showSaveButton?!1:!0,c.showCancelButtonValue="true"===c.showCancelButton?!0:!1,c.shippingValue="true"===c.shipping?!0:!1,c.isLocationUS=!0,c.previousCountry=null,c.setCountryToOther=function(){if(c.previousCountry&&"United States"===c.previousCountry.name){var a=b.reject(c.countries,{name:"United States"});if(!a.length)return void c.setCountryToUS();c.previousCountry=null,c.frmAddress.$setDirty()}c.address.selectedCountry=c.previousCountry,c.address.country=c.address.selectedCountry?c.address.selectedCountry.name:"",c.isLocationUS=!1},c.setCountryToUS=function(){c.previousCountry=c.address.selectedCountry,c.address.selectedCountry=b.find(c.countries,{name:"United States"}),c.isLocationUS=!0,c.frmAddress.$setPristine()},c.onCountryChanged=function(a){a&&(c.previousCountry=a,c.address.country=a.name,"United States"===a.name?c.setCountryToUS():c.setCountryToOther(),c.address.selectedState={},e&&e!==a.name&&c.frmAddress.$setDirty())},c.onStateChanged=function(a){c.address.state=a.code,d&&d!==a.code&&c.frmAddress.$setDirty()},c.saveAddress=function(){if(c.address.country=c.address.selectedCountry?c.address.selectedCountry.name:"",c.frmAddress)if(c.isLocationUS?c.address.selectedState&&c.address.selectedState.code&&""!==c.address.state?(c.frmAddress.inputUSState.$setValidity("state",!0),c.frmAddress.inputUSStateLabel.$setValidity("state",!0),c.stateEmpty="valid"):(c.frmAddress.inputUSState.$setValidity("state",!1),c.frmAddress.inputUSStateLabel.$setValidity("state",!1),c.stateEmpty=void 0):""===c.address.country?(c.frmAddress.inputWorldwideCountry.$setValidity("country",!1),c.frmAddress.inputWorldwideCountryLabel.$setValidity("country",!1),c.stateEmpty=void 0):(c.frmAddress.inputWorldwideCountry.$setValidity("country",!0),c.frmAddress.inputWorldwideCountryLabel.$setValidity("country",!0),c.stateEmpty="valid"),c.frmAddress.$valid)c.address.preferred=!0,c.address.residential=angular.isDefined(c.address.residential)?c.address.residential:!0,c.frmAddress.$setPristine(),c.onSave();else for(var a in c.frmAddress)c.frmAddress.hasOwnProperty(a)&&a.indexOf("$")<0&&(c.frmAddress[a].$setDirty(),c.frmAddress[a].$setTouched())};var f=c.$watch("countries",function(){"undefined"!=typeof c.countries&&c.countries.length>0&&(c.setCountryToUS(),f())}),g=c.$watch("address.country",function(a){if(a&&c.countries){var d=b.find(c.countries,{name:a});d&&(e=d.name,c.onCountryChanged(d),g())}}),h=c.$watch("address.state",function(a){a&&c.address.selectedCountry&&c.address.selectedCountry.states&&(c.address.selectedState=b.find(c.address.selectedCountry.states,{code:a})||{},d=c.address.selectedState.code||"",h())}),i=c.$watch("frmAddress.$dirty",function(a){a&&(b.isFunction(c.onDirty)&&c.onDirty(),i())}),j=a.$on("vnPayment.validate",function(){c.saveAddress(),a.$emit("vnPayment.validate.continue")});c.$on("$destroy",function(){j()})}}}]),angular.module("Volusion.toolboxCommon").provider("vnAppConfig",[function(){function a(){this.AppConfig=function(){return this},this.getApiHost=function(){return b},this.getApiUrl=function(){return c},this.getLoginUrl=function(){return b+"/ajax_receiver.asp?system=login"},this.getForgotPasswordUrl=function(){return b+"/ajax_receiver.asp?system=forgotpassword"}}var b,c,d="us",e=!1,f="en",g="us",h="";this.setApiPath=function(a,d){b=a,c=a+d},this.getApiPath=function(){return c},this.getCountry=function(){return d},this.getIsLocalEnv=function(){return""!==b},this.getLang=function(){return f},this.getPrefix=function(){return h},this.getRegion=function(){return g},this.getTranslations=function(){return e},this.setCountry=function(a){d=a},this.setLang=function(a){f=a},this.setPrefix=function(a){h=a},this.setRegion=function(a){g=a},this.setTranslations=function(a){e=a},this.$get=function(){return new a}}]),angular.module("Volusion.toolboxCommon").service("vnSiteConfig",["vnApi","$q",function(a,b){var c={};return c.getConfig=function(){var c=b.defer();return a.Configuration().get().$promise.then(function(a){c.resolve(a)}),c.promise},c}]),angular.module("Volusion.toolboxCommon").controller("CategoryCtrl",["$q","$scope","$rootScope","$stateParams","$location","$route","vnApi","vnProductParams","vnAppRoute","vnContentManager",function(a,b,c,d,e,f,g,h,i,j){"use strict";b.checkForFacetFilters=function(){return h.getFacetString()?!0:void 0},b.clearAllFilters=function(){h.resetParams(),h.addCategory(b.category.id),b.queryProducts(),b.isMobileAndVisible&&b.toggleSearch()},b.dismissMobileFilters=function(){b.toggleSearch()},b.getCategory=function(a){g.Category().get({slug:a}).$promise.then(function(a){b.category=a.data,h.addCategory(a.data.id),b.queryProducts()})},b.queryProducts=function(){var a=h.getParamsObject();g.Product().get(a).$promise.then(function(a){b.products=a.data,b.facets=a.facets,b.categoryList=a.categories,b.cursor=a.cursor,b.checkFacetsAndCategories(a.categories,a.facets)})},b.toggleSearch=function(){return b.mobileDisplay?(b.mobileDisplay=!1,b.isMobileAndVisible=!1,b.isMobileAndHidden=!0,void j.showAppFooter()):(b.mobileDisplay=!0,b.isMobileAndVisible=!0,b.isMobileAndHidden=!1,void j.hideAppFooter())},b.$on("$destroy",function(){h.resetParams()}),b.$on("$viewContentLoaded",function(){i.setRouteStrategy("category"),b.getCategory(d.slug)})}]),angular.module("Volusion.toolboxCommon").controller("FooterCtrl",["$scope","vnContentManager",function(a,b){"use strict";a.$watch(function(){return b.getFooterState()},function(b){a.footerState=b},!0),a.$watch(function(){return b.getCheckoutFooterState()},function(b){a.checkoutFooterState=b},!0)}]),angular.module("Volusion.toolboxCommon").controller("OptionsCtrl",["$rootScope","$scope",function(a,b){"use strict";function c(a){var b=[];if(!a)return b;for(var c=0;c<a.length;c++){var d=a[c];d.isRequired&&d.derivesToSKU&&b.push(d.label)}return b}b.isItemAvailable=!1,b.itemToken=b.option.key+":"+b.item.key;var d=c(b.product.options).length;if(b.product.optionSKUs.length>0)for(var e=0;e<b.product.optionSKUs.length;e++){var f=1===d||b.product.optionSKUs[e].key!==b.itemToken;if(f&&b.product.optionSKUs[e].key.indexOf(b.itemToken)>-1&&b.product.optionSKUs[e].quantityInStock>0){b.isItemAvailable=!0;break}}else b.isItemAvailable=b.product.availability.allowBackOrders||null===b.product.availability.quantityInStock||b.product.availability.quantityInStock>0;b.$on("VN_PRODUCT_SELECTED",function(a,c,d){for(var e=0,f=0;f<b.product.options.length;f++)if(b.product.options[f].key===b.option.key){e=f;break}var g=d.split("|");g[e]=b.itemToken;for(var h=g.join("|"),i=0;i<b.product.optionSKUs.length;i++)h!==b.itemToken&&b.product.optionSKUs[i].key.indexOf(h)>-1&&(b.isItemAvailable=b.product.optionSKUs[i].quantityInStock>0)})}]),angular.module("Volusion.toolboxCommon").controller("ProductCtrl",["$rootScope","$scope","vnApi","$location","$stateParams","$filter","$anchorScroll","$translate","vnCart","vnAppMessageService","vnProduct",function(a,b,c,d,e,f,g,h,i,j,k){"use strict";function l(){null===k.getProductImage()&&k.setProductNoImage(["/images/theme/tcp-no-image.jpg","/images/theme/tcp-no-image.jpg","/images/theme/tcp-no-image.jpg"]),b.cartItem.options=b.cartItem.options||[],b.itemSelectionsNotInStock=k.findAvailability(),m()}function m(){var a="";b.popoverText="",b.buttonDisabled=!1;var c=k.findRequiredOptionsAreSelected();if(c.length>0){for(var d=0;d<c.length;d++)a+=f("uppercase")(c[d]),d!==c.length-1&&(a+=f("translate")("common.and"));return h("product.addToCartMissing",{missingOptions:a}).then(function(a){b.popoverText=a}),void(b.buttonDisabled=!0)}return k.isSelectionAvailable()?void 0:(b.popoverText=f("translate")("product.addToCartNotInStock"),void(b.buttonDisabled=!0))}b.accordionPanels={isopen1:!0},b.buttonWait=!1,b.carousel={interval:4e3},b.cartItem={},b.itemSelectionsNotInStock=!1,b.product={},b.tabs={relatedProducts:{active:!0},accessories:{active:!1}},c.Product().get({slug:e.slug}).$promise.then(function(c){b.product=k.set(c.data);var e=encodeURIComponent(d.absUrl()),f=encodeURIComponent(b.product.name);a.social={pageTitle:f,pageUrl:e,imageUrl:0!==b.product.imageCollections.length&&0!==b.product.imageCollections[0].images.length?b.product.imageCollections[0].images[0].medium:""},k.setSocialSharing(e,f),k.setEditable(!1),b.cartItem=k.getProductCart(),b.isInDesktopMode=a.isInDesktopMode,angular.extend(a.seo,k.getProductSEO()),l()}).then(function(){b.product.code&&c.Review().get({code:b.product.code}).$promise.then(function(a){b.ratingsAndReviews=a});var a=b.product.categories[0].id;c.Product().get({categoryIds:a,pageNumber:1,pageSize:4}).$promise.then(function(a){b.relatedProducts=a.data}),c.Product().get({accessoriesOf:b.product.code,pageNumber:1,pageSize:4}).$promise.then(function(a){b.accessories=a.data})}),a.$on("VN_PRODUCT_SELECTED",function(a,c){b.product.optionSelection=c}),b.addToCart=function(){k.findRequiredOptionsAreSelected().length>0||!k.findOptionAvailability(b.product.optionSelection.key)||(b.buttonWait=!0,i.saveCart(b.cartItem).then(function(){a.gotoSoftAdd(),b.cartItem.qty=0})["finally"](function(){b.modifyQty(1),b.buttonWait=!1}))},b.modifyQty=function(a){b.cartItem.qty+=a,k.setQuantityInStock(a)},b.postValidateQty=function(){""===b.cartItem.qty&&(b.cartItem.qty=1)},b.getImagePath=function(a){var b=f("vnProductImageFilter")(a);return""===b?"/images/theme/tcp-no-image.jpg":b},b.$watch("product.optionSelection",function(a){function c(){b.cartItem.code=b.product.code,b.cartItem.id=b.product.id}function d(){return a.isValid?((void 0===b.cartItem.qty||0===b.cartItem.qty)&&(b.cartItem.qty=1),void(a.quantityInStock-=b.cartItem.qty)):(b.cartItem.qty=1,a.quantityInStock=0,void(b.product.optionSelection.quantityInStock=0))}void 0!==a&&(c(),d(),k.setProductImage(a.option.selected),m(),b.isAddToCartButtonEnabled=a.isValid&&b.cartItem.qty>0)})}]),angular.module("Volusion.toolboxCommon").controller("SearchCtrl",["$rootScope","$scope","$stateParams","$location","$window","$filter","vnApi","vnProductParams","vnContentManager","themeSettings","vnAppRoute",function(a,b,c,d,e,f,g,h,i,j,k){"use strict";b.searchLocal=h.getSearchText(),b.searchTerms=c.q,b.clearAllFilters=function(){h.resetParams(),h.setSort("relevance"),h.updateSearch(c.q),b.minPrice="",b.maxPrice="",b.queryProducts()},b.dismissMobileFilters=function(){b.toggleSearch()},b.initParams=function(){h.setPageSize(j.getPageSize()),c.q?(h.updateSearch(c.q),b.searchTerms=c.q,b.queryProducts()):(b.searchTerms=d.search("q","All Products"),b.queryProducts())},b.queryProducts=function(){var a=h.getParamsObject();g.Product().get(a).$promise.then(function(a){b.products=a.data,b.facets=a.facets,b.categoryList=a.categories,b.cursor=a.cursor,b.checkFacetsAndCategories(a.categories,a.facets),b.searchTerms=h.getSearchText()||"All Products"})},b.searchByPrice=function(a){13===a.which&&(h.setMinPrice(b.minPrice),h.setMaxPrice(b.maxPrice),b.queryProducts())},b.toggleSearch=function(){return b.mobileDisplay?(b.mobileDisplay=!1,b.isMobileAndVisible=!1,b.isMobileAndHidden=!0,void i.showAppFooter()):(b.mobileDisplay=!0,b.isMobileAndVisible=!0,void(b.isMobileAndHidden=i.hideAppFooter()))},b.$on("$destroy",function(){h.resetParams()}),b.$on("$viewContentLoaded",function(){b.initParams(),k.setRouteStrategy("search"),h.preLoadData(c)})}]),angular.module("Volusion.toolboxCommon").controller("ShoppingCartCtrl",["$rootScope","$scope","$timeout","$filter","$window","translate","vnCart","notifications",function(a,b,c,d,e,f,g,h){"use strict";function i(a,c){b.loading=a?!0:!1,g.updateCart().then(function(){void 0!==c&&"function"==typeof c&&c()})}b.cart={},b.cartEmpty=!0,b.calcSubtotal=0,b.coupon={code:"",showApply:!1},b.couponsEmpty=!1,b.loading=!1,b.showGiftOption=!1,b.visualCue=!1,a.isCartOpen=!1,f.addParts("cart"),a.exitCartState=function(){history.back()},b.getCartItemsCount=function(){return g.getCartItemsCount()},b.deleteItem=function(a){b.cart.items=d("filter")(b.cart.items,function(b){return b.id!==a}),i(!0)},b.changeQty=function(a,d,e){a.qty=""===a.qty?1:d,c.cancel(b.debounceUpdateCart),void 0===e?i(!1):b.debounceUpdateCart=c(function(){i(!1)},e)},b.resetGiftOptions=function(){var a=!1;return this.showGiftOption?(b.visualCue=!0,void c(function(){b.visualCue=!1},3e3)):(angular.forEach(b.cart.items,function(b){b.isGiftWrapAvailable&&b.giftWrap.selected&&(b.giftWrap.selected=!1,a=!0)}),void(a&&i(!0)))},b.addGiftWrap=function(){i(!0)},b.addGiftMsg=function(){i(!0)},b.applyCoupon=function(){b.coupon.code.length>0&&(b.cart.discounts=d("filter")(b.cart.discounts,function(a){return a.couponCode!==b.coupon.code}),b.cart.discounts.push({couponCode:b.coupon.code}),i(!0,function(){b.coupon.showApply=!1,b.coupon.code="",0===b.cart.serviceErrors.length&&0===b.cart.warnings.length&&b.togglePromoList(!0)}))},b.deleteCoupon=function(a){b.cart.discounts=d("filter")(b.cart.discounts,function(b){return b.id!==a}),b.couponsEmpty=b.cart.discounts.length>0?!1:!0,i(!0)},a.$on("cartUpdated",function(){if(b.cart=g.getCart(),(b.cart.warnings&&b.cart.warnings.length>0||b.cart.serviceErrors&&b.cart.serviceErrors.length>0)&&(h.displayWarnings(b.cart.warnings),h.displayErrors(b.cart.serviceErrors),a.$emit("vnScroll.cart")),void 0!==b.cart&&(void 0!==b.cart.totals&&(b.calcSubtotal=b.cart.totals.items+b.cart.totals.discounts,b.cartEmpty=b.cart.totals.qty>0?!1:!0),void 0!==b.cart.discounts&&(b.couponsEmpty=b.cart.discounts.length>0?!1:!0),void 0!==b.cart.items))for(var c=0;c<b.cart.items.length;c++)b.cart.items[c].giftWrap.selected&&(b.showGiftOption=!0);b.loading=!1})}]),angular.module("Volusion.toolboxCommon").controller("VnProductOptionCtrl",["$rootScope","$scope",function(a,b){"use strict";function c(){d(b.product.options,null,function(a,b){a.selected=b.key})}function d(a,c,e){function f(a){return b.saveTo.filter(function(b){return b.id===a.id})}a&&(c=c||function(){return!0},angular.forEach(a,function(a){var b=a.items;if(b)for(var g=0,h=b.length;h>g;g++){var i=a.items[g],j=f(i);if(j.length>0){c(a)&&e(a,i),a.options&&a.options.length>0&&d(a.options,c,e);break}}}))}function e(){var a=[],c=function(a){return a.derivesToSKU};return d(b.product.options,c,function(b,c){a.push([b.key,c.key].join(":"))}),a.join("|")}function f(){var a=e(),c={};return c=b.product.optionSKUs.filter(function(b){return b.key===a})[0]}function g(a){if(!a)return!0;for(var b=0,c=a.length;c>b;b++){var d=a[b];if(d.isRequired&&!d.hasOwnProperty("selected"))return!1;if(d.options.length>0&&g(d.options)===!1)return!1}return!0}function h(c,d){var h=f(),i=e(),j=g(b.product.options);a.$broadcast("VN_PRODUCT_SELECTED",angular.extend({},{product:b.product,option:c,item:d,isValid:j},h),i)}b.onOptionChanged=function(a,d){b.currentSelectionText=d.text;var e=a.key,f=b.saveTo.filter(function(a){return a.id===d.id}),g=b.saveTo.filter(function(a){return a.option===e});0!==g.length&&0===f.length&&(b.saveTo=b.saveTo.filter(function(a){return a.option!==e})),0===f.length&&b.saveTo.push({id:d.id,option:e}),c(),h(a,d)},b.onCheckboxClicked=function(a,c){var d=a.key,e=b.saveTo.filter(function(a){return a.id===c.id});0===e.length?b.saveTo.push({id:c.id,option:d}):b.saveTo=b.saveTo.filter(function(a){return a.id!==c.id}),h(a,c)}}]),angular.module("Volusion.toolboxCommon").factory("ProductCollection",["Product",function(a){function b(b){angular.forEach(b.data,function(b){g.push(new a(b))});var c=new Date;f=c.getTime(),i=b.facets,k=b.cursor,j=b.categories}function c(){return g}function d(){return h}function e(){return i}var f,g=[],h=g.length,i={},j={},k={};return{updateCollection:b,getProductCollection:c,productCount:d,lastFacet:e}}]),angular.module("Volusion.toolboxCommon").factory("Product",function(){function a(a){this.id=a.id||null,this.code=a.code||null,this.name=a.name||null,this.url=a.url||null,this.slug=a.slug||null,this.pricing=a.pricing||null,this.avgRating=a.avgRating||null,this.currentImageCollection=a.imageCollection||null,this.cartItem=a.cartItem||null,this.productManufacturer=a.productManufacturer||null,this.availability=a.availability||null,this.photoAltText=a.photoAltText||null,this.shipping=a.shipping||null,this.isTaxable=a.isTaxable||null,this.isGiftWrapAvailable=a.isGiftWrapAvailable||null,this.giftWrap=a.giftWrap||null,this.descriptions=a.descriptions||null,this.pricing=a.pricing}return a}),angular.module("Volusion.toolboxCommon").value("vnApiConfigurations",{}),angular.module("Volusion.toolboxCommon").factory("vnApi",["$q","$resource","vnAppConfig","vnResourceTypes",function(a,b,c,d){"use strict";function e(){return t.resource=d.article,b(c.getApiUrl()+"/articles/:id",{id:"@id"},{get:{method:"GET",withCredentials:!0,headers:t},save:{method:"POST",withCredentials:!0,headers:t},query:{method:"GET",withCredentials:!0,isArray:!1,headers:t},remove:{method:"DELETE",withCredentials:!0,headers:t},"delete":{method:"DELETE",withCredentials:!0,headers:t}})}function f(){return t.resource=d.category,b(c.getApiUrl()+"/categories/:id",{id:"@id"},{get:{method:"GET",withCredentials:!0,headers:t},save:{method:"POST",withCredentials:!0,headers:t},query:{method:"GET",withCredentials:!0,isArray:!1,headers:t},remove:{method:"DELETE",withCredentials:!0,headers:t},"delete":{method:"DELETE",withCredentials:!0,headers:t}})}function g(){return t.resource=d.cart,b(c.getApiUrl()+"/carts",{},{get:{method:"GET",withCredentials:!0,headers:t},save:{method:"POST",withCredentials:!0,headers:t},update:{method:"PUT",withCredentials:!0,headers:t},query:{method:"GET",withCredentials:!0,isArray:!1,headers:t},remove:{method:"DELETE",withCredentials:!0,headers:t},"delete":{method:"DELETE",withCredentials:!0,headers:t}})}function h(){return t.resource=d.config,b(c.getApiUrl()+"/config",{},{get:{method:"GET",withCredentials:!0,headers:t}})}function i(){return t.resource="countries",b(c.getApiUrl()+"/countries",{},{query:{method:"GET",withCredentials:!0,isArray:!1,headers:t}})}function j(){return t.resource=d.nav,b(c.getApiUrl()+"/navs/:navId",{navId:"@navId"},{get:{method:"GET",withCredentials:!0,headers:t},save:{method:"POST",withCredentials:!0,headers:t},query:{method:"GET",withCredentials:!0,isArray:!1,headers:t},remove:{method:"DELETE",withCredentials:!0,headers:t},"delete":{method:"DELETE",withCredentials:!0,headers:t}})}function k(){return t.resource=d.product,b(c.getApiUrl()+"/products/:code",{code:"@code"},{get:{method:"GET",withCredentials:!0,headers:t},save:{method:"POST",withCredentials:!0,headers:t},query:{method:"GET",withCredentials:!0,isArray:!1,headers:t},remove:{method:"DELETE",withCredentials:!0,headers:t},"delete":{method:"DELETE",withCredentials:!0,headers:t}})}function l(){return t.resource=d.reviews,b(c.getApiUrl()+"/products/:code/reviews",{code:"@code"},{get:{method:"GET",withCredentials:!0,headers:t},save:{method:"POST",withCredentials:!0,headers:t},query:{method:"GET",withCredentials:!0,isArray:!1,headers:t},remove:{method:"DELETE",withCredentials:!0,headers:t},"delete":{method:"DELETE",withCredentials:!0,headers:t}})}function m(){return t.resource=d.themesettings,b("/settings/themeSettings.json",{},{headers:t})}function n(){return t.resource=d.user,b(c.getApiUrl()+"/users",{},{get:{method:"GET",withCredentials:!0,headers:t},save:{method:"POST",withCredentials:!0,headers:t},update:{method:"PUT",withCredentials:!0,headers:t}})}function o(){return t.resource=d.shippingaddresses, +b(c.getApiUrl()+"/users/current/shippingAddresses/:id",{id:"@id"},{get:{method:"GET",withCredentials:!0,headers:t},save:{method:"POST",withCredentials:!0,headers:t},update:{method:"PUT",withCredentials:!0,headers:t},"delete":{method:"DELETE",withCredentials:!0,headers:t}})}function p(){return t.resource=d.billingaddresses,b(c.getApiUrl()+"/users/current/billingAddresses/:id",{id:"@id"},{get:{method:"GET",withCredentials:!0,headers:t},save:{method:"POST",withCredentials:!0,headers:t},update:{method:"PUT",withCredentials:!0,headers:t},"delete":{method:"DELETE",withCredentials:!0,headers:t}})}function q(){return t.resource=d.paymentprofiles,b(c.getApiUrl()+"/users/current/paymentProfiles/:id",{id:"@id"},{get:{method:"GET",withCredentials:!0,headers:t},save:{method:"POST",withCredentials:!0,headers:t},update:{method:"PUT",withCredentials:!0,headers:t},"delete":{method:"DELETE",withCredentials:!0,headers:t}})}function r(){return t.resource=d.orders,b(c.getApiUrl()+"/orders/:id",{id:"@id"},{get:{method:"GET",withCredentials:!0,headers:t},save:{method:"POST",withCredentials:!0,headers:t}})}function s(){return t.resource=d.orders,b(c.getApiUrl()+"/users/current/orders/:id",{id:"@id"},{get:{method:"GET",withCredentials:!0,headers:t},query:{method:"GET",withCredentials:!0,isArray:!1,headers:t},save:{method:"PUT",withCredentials:!0,headers:t}})}var t={resource:""};return{Article:e,BillingAddresses:p,Category:f,Cart:g,Configuration:h,Country:i,CustomerOrders:s,Nav:j,Orders:r,PaymentProfiles:q,Product:k,Review:l,ShippingAddresses:o,ThemeSettings:m,User:n}}]),angular.module("Volusion.toolboxCommon").provider("vnDataEndpoint",function(){"use strict";function a(){this.VnDataEndpoint=function(){return this},this.getApiUrl=function(){return b}}var b="http://www.samplestore.io/api/v1";this.$get=function(){return new a},this.setApiUrl=function(a){b=a}}),angular.module("Volusion.toolboxCommon").value("vnEnvironment",{name:"Production"}),angular.module("Volusion.toolboxCommon").directive("vnScrollToTop",["$timeout",function(a){"use strict";return{restrict:"A",scope:{vnScrollToTop:"="},link:function(b,c){b.$watch("vnScrollToTop",function(b){b&&a(function(){angular.element(c)[0].scrollTop=0})})}}}]),angular.module("Volusion.toolboxCommon").directive("vnSetFocusIf",[function(){"use strict";return{restrict:"A",scope:{vnSetFocusIf:"="},link:function(a,b){a.$watch("vnSetFocusIf",function(a){void 0===a&&b[0].focus()})}}}]),angular.module("Volusion.toolboxCommon").directive("vnAutoGrow",function(){"use strict";return{restrict:"A",link:function(a,b,c){c.$set("ngTrim","false");var d=function(){b.css("height","auto"),b.css("height",b[0].scrollHeight+"px")};a.$watch(c.ngModel,function(){d()}),b.bind("keydown",d)}}}),angular.module("Volusion.toolboxCommon").directive("vnBlock",["vnBem",function(a){return{restrict:"A",controller:function(){this.getBlock=function(){return this.block},this.getModifiers=function(){return this.modifiers}},compile:function(){return{pre:function(b,c,d,e){var f=d.vnBlock,g=d.vnModifiers;a.addClasses(c,{block:f,blockModifiers:g}),e.block=f,e.modifiers=g}}}}}]),angular.module("Volusion.toolboxCommon").directive("vnCarousel",["$rootScope",function(a){"use strict";return{templateUrl:"template/carousel.html",restrict:"EA",replace:!0,scope:{currMode:"@currMode",carouselObjects:"="},link:function(b,c){void 0===b.currMode&&(b.currMode="on"),b.componentId="100001",b.componentName="carousel",b.selected=!1,b.$on("currentComponent.change",function(a,c){c&&c.id&&"off"===b.currMode&&(b.selected=c.id===b.componentId)}),c.on("click",function(c){"off"===b.currMode&&(c.preventDefault(),a.$broadcast("currentComponent.change",{id:b.componentId,name:b.componentName,action:"set"}))}),$(".carousel").carousel({interval:5e3,pause:"hover",wrap:!0}),b.prev=function(){$(".carousel").carousel("prev")},b.next=function(){$(".carousel").carousel("next")}}}}]).run(["$templateCache",function(a){"use strict";a.put("template/carousel.html",'<div id="vnCarousel" class="carousel slide" data-ride="carousel"><!-- Indicators --><ol class="carousel-indicators"><li data-ng-repeat="image in imageList" data-target="#vnCarousel" data-slide-to="{{ $index }}"></li></ol><div data-ng-repeat="image in imageList" class="carousel-inner"><div class="item active"><img data-src="" alt="First slide" src="{{ image.src }}"><div class="container"><h1>Example headline.</h1><p>Note: If you\'re viewing this page via a <code>file://</code> URL, the "next" and "previous" might not load/display properly.</p><p><a class="btn btn-lg btn-primary" href="#" role="button">Sign up today</a></p></div></div><a class="left carousel-control" href="#myCarousel" data-slide="prev"><span class="glyphicon glyphicon-chevron-left"></span></a><a class="right carousel-control" href="#myCarousel" data-slide="next"><span class="glyphicon glyphicon-chevron-right"></span></a></div></div>')}]),angular.module("Volusion.toolboxCommon").directive("vnShoppingCart",["$rootScope","$timeout",function(a,b){"use strict";return{restrict:"A",controller:"ShoppingCartCtrl",link:function(c){c.showPromoList=!1;var d=$(".th-cart"),e=$(".th-cart__header"),f=$(".th-cart__footer"),g=$(".th-cart__body");c.fixBodyHeight=function(a){a=void 0===a?0:a,b(function(){g.css({height:"calc(100% - "+(f.outerHeight()+e.outerHeight()+$(".th-cart__brand").outerHeight())+"px)","margin-top":e.outerHeight()+"px"})},a)},c.promoInputKeypress=function(a){13===a.which&&(a.currentTarget.blur(),c.applyCoupon())},c.togglePromoList=function(a){c.showPromoList=void 0!==a?a:!c.showPromoList,b(function(){c.fixBodyHeight()},275)},c.toggleApplyBtn=function(a){a===!1?b(function(){c.coupon.showApply=!c.coupon.showApply,c.togglePromoKeyboardFix()},0):a===!0?(c.coupon.showApply=!0,c.togglePromoKeyboardFix()):(c.coupon.showApply=void 0!==a?a:!c.coupon.showApply,c.togglePromoKeyboardFix()),c.fixBodyHeight()},c.toggleKeyboardFix=function(){f.toggleClass("th-cart__footer--keyboard-fix"),c.fixBodyHeight()},c.togglePromoKeyboardFix=function(){f.toggleClass("th-cart__footer--promo-keyboard-fix"),c.fixBodyHeight()},g.on("focus","input.form-control, textarea",function(){c.toggleKeyboardFix()}).on("blur","input.form-control, textarea",function(){c.toggleKeyboardFix()}),a.$on("enterCartState",function(){d.toggleClass("th-cart--active"),$("body").toggleClass("cart-active")}),a.$on("exitCartState",function(){d.toggleClass("th-cart--active"),$("body").toggleClass("cart-active")}),a.$on("cartUpdated",function(){c.fixBodyHeight()}),a.$on("enterNonDesktop",function(){c.fixBodyHeight()}),a.$on("exitNonDesktop",function(){c.fixBodyHeight()})}}}]),angular.module("Volusion.toolboxCommon").directive("vnCategorySearch",["$rootScope","$routeParams","$location","vnProductParams","vnAppRoute",function(a,b,c,d,e){"use strict";return{templateUrl:"vn-faceted-search/vn-category-search.html",restrict:"AE",scope:{categories:"=",queryProducts:"&"},link:function(a){function f(a){angular.extend(a,{displayStrategy:"categoryDisplayOne"})}function g(a){angular.extend(a,{displayStrategy:"categoryDisplayTwo"})}function h(a){angular.forEach(a,function(a){angular.extend(a,{displayStrategy:"categoryDisplayThree"}),angular.forEach(a.subCategories,function(a){angular.extend(a,{hideSubCatLink:!0})})})}function i(a,b){for(var c=!1,d=b.subCategories.length-1;d>=0;d--)a===b.subCategories[d].slug?(angular.extend(b.subCategories[d],{hideSubCatLink:!0}),c=!0):angular.extend(b.subCategories[d],{hideSubCatLink:!1});return c}function j(){function a(a){return a.replace(/&$/,"")}var b,c,f,g,h="";if(b=d.getFacetString(),c=d.getMinPrice(),f=d.getMaxPrice(),g=d.getCategoryString(),""===g&&""===b&&""===c&&""===f)return"";if(h+="?","search"===e.getRouteStrategy()&&""!==g){var i="categoryId="+g+"&";h+=i}if(""!==b){var j="facetIds="+b+"&";h+=j}if(""!==c){var k="minPrice="+c+"&";h+=k}if(""!==f){var l="maxPrice="+f+"&";h+=l}return h=a(h)}a.updateCategory=function(b){d.addCategory(b.id),a.queryProducts()},a.buildAppUrl=function(b){if("search"===e.getRouteStrategy())d.addCategory(b.id),a.queryProducts();else if("category"===e.getRouteStrategy()){var f=b.url;c.path(f)}},a.$watch(b,function(){a.currentRoute=j()},!0),a.$watch("categories",function(a){if(a&&a[0])if("/search"===c.path())h(a);else if(1===a.length&&b.slug===a[0].slug)f(a[0]);else{if(1!==a.length||!i(b.slug,a[0]))throw new Error("Is there a new display strategy for the category-search directive in toolbox?");g(a[0])}})}}}]),angular.module("Volusion.toolboxCommon").directive("vnElement",["vnBem",function(a){return{require:"^vnBlock",restrict:"A",compile:function(){return function(b,c,d,e){a.addClasses(c,{block:e.getBlock(),blockModifiers:e.getModifiers(),element:d.vnElement,elementModifiers:d.vnModifiers})}}}}]),angular.module("Volusion.toolboxCommon").directive("vnFacetSearch",["$rootScope","$window","vnProductParams",function(a,b,c){"use strict";return{templateUrl:"vn-faceted-search/vn-facet-search.html",restrict:"AE",scope:{facets:"=",queryProducts:"&"},link:function(a){enquire.register("screen and (max-width:767px)",{setup:function(){a.defaultAccordianOpen=!0},unmatch:function(){a.defaultAccordianOpen=!0},match:function(){a.defaultAccordianOpen=!1}}),a.selectProperty=function(a){return c.isFacetSelected(a.id)},a.refineFacetSearch=function(b){c.isFacetSelected(b.id)?c.removeFacet(b.id):c.addFacet(b.id),a.queryProducts()},a.$watch("facets",function(b){a.facets=b})}}}]),angular.module("Volusion.toolboxCommon").directive("vnFacetedSearch",["$window","$location","vnProductParams",function(a,b,c){"use strict";return{templateUrl:"vn-faceted-search/vn-faceted-search.html",restrict:"EA",link:function(a){a.showCategorySearch=!1,a.showFacetSearch=!0,a.showApplyButton=!1,a.checkFacetsAndCategories=function(b,c){a.hasFacetsOrCategories=b&&b.length||c&&c.length?!0:!1};var d,e=b.url();d=/^\/search/,a.onSearchPage=d.test(e),a.$watch("categoryList",function(b){b&&(a.showCategorySearch=!0)}),a.$watch("facets",function(b){b&&(a.showFacetSearch=!0)}),a.$watch(function(){return c.getSort()},function(b){a.currentSort=b}),enquire.register("screen and (max-width:767px)",{setup:function(){a.showApplyButton=!1,a.mobileDisplay=!0,a.showMobileSearch=!1,a.isMobileAndVisible=!1,a.isMobileAndHidden=!0,a.categoryAccordiansOpen=!0,a.priceAccordiansOpen=!0,a.sortAccordianIsOpen=!0},unmatch:function(){a.showApplyButton=!1,a.mobileDisplay=!0,a.showMobileSearch=!1,a.isMobileAndVisible=!1,a.isMobileAndHidden=!0,a.categoryAccordiansOpen=!0,a.priceAccordiansOpen=!0,a.sortAccordianIsOpen=!0},match:function(){a.showApplyButton=!0,a.mobileDisplay=!1,a.showMobileSearch=!0,a.isMobileAndVisible=!1,a.isMobileAndHidden=!0,a.categoryAccordiansOpen=!1,a.priceAccordiansOpen=!1,a.sortAccordianIsOpen=!1}})}}}]),angular.module("Volusion.toolboxCommon").directive("vnImage",["$rootScope",function(a){"use strict";return{templateUrl:"template/image.html",restrict:"EA",replace:!0,scope:{currMode:"@currMode",image:"="},link:function(b,c){void 0===b.currMode&&(b.currMode="on"),b.componentId="100002",b.componentName="image",b.selected=!1,b.$on("currentComponent.change",function(a,c){c&&c.id&&"off"===b.currMode&&(b.selected=c.id===b.componentId)}),c.on("click",function(c){"off"===b.currMode&&(c.preventDefault(),a.$broadcast("currentComponent.change",{id:b.componentId,name:b.componentName,action:"set"}))})}}}]).run(["$templateCache",function(a){"use strict";a.put("template/image.html",'<div class="vn-image"><p translate>VN-IMAGE-TITLE</p><img src="{{ image.src }}" alt="{{ image.alt }}" /></div>')}]),angular.module("Volusion.toolboxCommon").directive("vnLabeledRadio",function(){"use strict";return{require:"ngModel",restrict:"A",replace:!0,transclude:!0,templateUrl:"template/labeled-radio.html",scope:{ngModel:"=",name:"@",value:"@",ngValue:"=",ngChecked:"=",ngDisabled:"@",change:"&ngChange"},compile:function(a,b){var c=a.find("input"),d=b.value,e=b.ngValue;"undefined"!=typeof d&&"undefined"==typeof e&&c.removeAttr("data-ng-value")}}}).run(["$templateCache",function(a){"use strict";a.put("template/labeled-radio.html",'<label data-vn-block="vn-labeled-radio"><input data-vn-element="input" type="radio" name="{{name}}" value="{{value}}" data-ng-model="ngModel" data-ng-value="ngValue" data-ng-checked="ngChecked" data-ng-change="change()" data-ng-disabled="{{ngDisabled}}"><span data-vn-element="content" data-ng-transclude></span></label>')}]),angular.module("Volusion.toolboxCommon").directive("vnLink",["$rootScope",function(a){"use strict";return{templateUrl:"template/link.html",restrict:"EA",transclude:!0,replace:!0,scope:{currMode:"@"},link:function(b,c){void 0===b.currMode&&(b.currMode="on"),b.componentId="100003",b.componentName="link",b.selected=!1,b.$on("currentComponent.change",function(a,c){c&&c.id&&"off"===b.currMode&&(b.selected=c.id===b.componentId)}),c.on("click",function(c){"off"===b.currMode&&(c.preventDefault(),a.$broadcast("currentComponent.change",{id:b.componentId,name:b.componentName,action:"set"}))})}}}]).run(["$templateCache",function(a){"use strict";a.put("template/link.html",'<a class="vn-link" data-ng-transclude></a>')}]),angular.module("Volusion.toolboxCommon").directive("vnMetaTags",function(){"use strict";return{restrict:"EA",scope:{title:"=",description:"=",keywords:"=",toAppend:"=",robots:"=",socialPageTitle:"=",socialPageUrl:"=",socialImageUrl:"="},link:function(a,b){var c=function(a){"undefined"!=typeof a&&b.append(a)},d=function(a){var c=b.find("title");c.length>0&&c.remove(),a&&b.append(angular.element("<title/>").text(a))},e=function(a,c,d){var e=b.find("meta["+d+'="'+a+'"]');e.length>0&&e.remove(),c&&b.append(angular.element("<meta/>").attr(d,a).attr("content",c))},f=function(a){e("description",a,"name")},g=function(a){e("keywords",a,"name")},h=function(a){e("og:title",a,"property")},i=function(a){e("og:url",a,"property")},j=function(a){e("og:image",a,"property")};a.$watch("socialPageTitle",h),a.$watch("socialPageUrl",i),a.$watch("socialImageUrl",j),a.$watch("title",d),a.$watch("description",f),a.$watch("keywords",g),a.$watch("toAppend",c),a.$watch("robots",function(a){"undefined"!=typeof a&&JSON.parse(a)===!0&&(e("robots","index,follow","name"),e("GOOGLEBOT","INDEX,FOLLOW","name"))})}}}),angular.module("Volusion.toolboxCommon").directive("ngEnter",function(){return function(a,b,c){b.bind("keydown keypress",function(b){13===b.which&&(a.$apply(function(){a.$eval(c.ngEnter,{event:b})}),b.preventDefault())})}}),angular.module("Volusion.toolboxCommon").directive("vnPageName",["$rootScope",function(a){"use strict";return{restrict:"A",link:function(b,c){a.$on("$stateChangeStart",function(a,b){c.removeClass(function(a,b){return(b.match(/(^|\s)vn-page-\S+/g)||[]).join(" ")}),c.addClass("vn-page-"+b.name.split(".").join("-"))})}}}]),angular.module("Volusion.toolboxCommon").directive("vnPlaceOrderBtn",[function(){"use strict";return{restrict:"A",templateUrl:"vn-place-order-btn/vn-place-order-btn.html",link:function(a,b){a.placeOrderFixed=!1;var c=$(".th-checkout__step__review");c.on("scroll",function(){(a.placeOrderFixed===!1&&c.scrollTop()>=160||a.placeOrderFixed===!0&&c.scrollTop()<160)&&(a.placeOrderFixed=!a.placeOrderFixed,a.$apply())}),b.on("$destroy",function(){c.off("scroll")})}}}]),angular.module("Volusion.toolboxCommon").directive("vnPriceSearch",["vnProductParams",function(a){return{templateUrl:"vn-faceted-search/vn-price-search.html",restrict:"AE",scope:{queryProducts:"&"},link:function(b){b.$watch(function(){return a.getMinPrice()},function(a){b.minPrice=a}),b.$watch(function(){return a.getMaxPrice()},function(a){b.maxPrice=a}),b.searchByPrice=function(c){a.setMinPrice(b.minPrice),a.setMaxPrice(b.maxPrice),(13===c.which||"click"===c.type)&&b.queryProducts()}}}}]),angular.module("Volusion.toolboxCommon").directive("vnProductOption",function(){return{restrict:"A",replace:!0,controller:"VnProductOptionCtrl",templateUrl:"vn-product-option/index.html",scope:{option:"=",product:"=",saveTo:"="}}}),angular.module("Volusion.toolboxCommon").directive("vnRating",["$rootScope",function(a){"use strict";return{templateUrl:"template/rating.html",restrict:"EA",replace:!0,scope:{currMode:"@currMode",editable:"=",maximum:"=",ratingValue:"="},link:function(b,c,d){function e(a){return b.ratingValue%1===0&&a<b.ratingValue?g:b.ratingValue%1===.5&&b.ratingValue-a>.5?g:b.ratingValue%1===.5&&b.ratingValue-a===.5?i:h}function f(){for(b.stars=[],j=0;k>j;j++)b.stars.push({cssClass:e(j)})}var g=d.filledClass||"fa fa-star",h=d.emptyClass||"fa fa-star-o",i=d.halfFilledClass||"fa fa-star-half-o";b.title="undefined"!=typeof d.title?d.title:"Rating";var j,k=b.maximum||5;void 0===b.currMode&&(b.currMode="on"),(void 0===b.ratingValue||""===b.ratingValue)&&(b.ratingValue=0),b.componentId="100004",b.componentName="rating",b.selected=!1,b.$on("currentComponent.change",function(a,c){c&&c.id&&"off"===b.currMode&&(b.selected=c.id===b.componentId)}),c.on("click",function(c){"off"===b.currMode&&(c.preventDefault(),a.$broadcast("currentComponent.change",{id:b.componentId,name:b.componentName,action:"set"}))}),b.stars=[],b.$watch("ratingValue",function(a,b){(0===b||b)&&f()}),b.toggle=function(a){b.editable&&(b.ratingValue=a+1)}}}}]).run(["$templateCache",function(a){"use strict";a.put("template/rating.html",'<div class="vn-rating"><p class="vn-rating-title" data-ng-bind="title"></p><ul class="rating"><li data-ng-repeat="star in stars" data-ng-click="toggle($index)"><i class=" {{ star.cssClass }} " /></li></ul></div>')}]),angular.module("Volusion.toolboxCommon").directive("vnSortSearch",["vnProductParams","vnSortDefault",function(a,b){"use strict";return{templateUrl:"vn-faceted-search/vn-sort-search.html",restrict:"AE",scope:{queryProducts:"&"},link:function(c){""===a.getSort()&&a.setSort(b),c.sortBy=function(b){a.setSort(b),c.queryProducts()}}}}]),angular.module("Volusion.toolboxCommon").directive("vnShowOnDropdownHover",["$timeout",function(a){return{restrict:"A",link:function(b,c){var d,e=angular.element(c.parent().find("a")[0]);c.bind("mouseenter",function(){c.show(),a.cancel(d)}).bind("mouseleave",function(){d=a(function(){c.hide()},100)}),e.bind("mouseenter",function(){c.show(),a.cancel(d)}).bind("mouseleave",function(){d=a(function(){c.hide()},100)}).bind("click",function(){c.show()}),b.$on("$destroy",function(){a.cancel(d)})}}}]),angular.module("Volusion.toolboxCommon").directive("vnDropdown",["$window",function(){return{restrict:"E",replace:!0,scope:{availableoptions:"=",optionselect:"=",selectedOption:"=model",placeholder:"@",displayField:"@",selectedField:"@",name:"@",ngRequired:"="},templateUrl:"dropdown/vn-dropdown.tpl.html",link:function(a,b){a.button=angular.element(b).find("button"),a.options=a.availableoptions||[],a.changeOption=function(b){a.selectedOption=a.options[b],"function"==typeof a.optionselect&&a.optionselect(a.selectedOption),a.button.focus()},a.$watch("availableoptions",function(){"undefined"!=typeof a.availableoptions&&a.availableoptions.length>0&&(a.options=a.availableoptions.slice(),angular.forEach(a.options,function(b){b.displayValue=b[a.displayField||"name"],b.selectedDisplayValue=b[a.selectedField||"name"]}))}),a.$watch("selectedOption",function(b){b?a.button.focus():a.button.blur()})}}}]),angular.module("Volusion.toolboxCommon").directive("vnEasyZoom",function(){function a(a){b.standardSrc&&b.zoomSrc&&(a.swap(b.standardSrc,b.zoomSrc),b={})}var b={};return{restrict:"A",replace:!0,templateUrl:"easy-zoom/vnEasyZoom.tpl.html",scope:{ngSrc:"=",ezAdjacent:"=",ezOverlay:"=",ezZoomSrc:"=",alt:"@"},link:function(c,d){var e=d.easyZoom(),f=e.data("easyZoom");c.$watch("ngSrc",function(c){void 0!==c&&(b.standardSrc=c,a(f))}),c.$watch("ezZoomSrc",function(c){void 0!==c&&(b.zoomSrc=c,a(f))}),c.$on("$destroy",function(){f.teardown()})}}}),angular.module("Volusion.toolboxCommon").filter("vnCurrency",["$filter","$locale",function(a,b){"use strict";return function(c,d){var e=a("currency");return 0===c?"Free":"en-us"===b.id&&0>c?e(c,d).replace("(","-").replace(")",""):e(c,d)}}]),angular.module("Volusion.toolboxCommon").filter("vnProductImageFilter",function(){return function(a,b,c){function d(b,c){var d="";if(a.length>=0)for(var e=a.length-1;e>=0;e--){var f=a[e];if(b===f.key){d=f.images[0][c];break}}return d}var e="";if(a&&a.length<=0)e="";else if(1===arguments.length)e=d("default","medium");else{if(3!==arguments.length)throw new Error("vnProductImageFilter was unable to process the arguments supplied.");e=d(b,c)}return e}}),angular.module("Volusion.toolboxCommon").directive("vnFormatNumber",["$filter",function(a){"use strict";return{require:"?ngModel",link:function(b,c,d,e){e&&(e.$formatters.unshift(function(){return a("number")(e.$modelValue)}),e.$parsers.unshift(function(b){var d=b.replace(/[^\d|\-+|\.+]/g,"");return c.val(a("number")(d)),d}))}}}]).directive("vnFormatCcNumber",["$filter",function(a){"use strict";return{require:"?ngModel",link:function(b,c,d,e){e&&(e.$formatters.unshift(function(){var b=c.attr("data-vn-cc-type").toUpperCase();return a("vnCreditCard")(e.$modelValue,b)}),e.$parsers.unshift(function(b){var d="",e=c.attr("data-vn-cc-type").toUpperCase();return d=-1!==b.indexOf("*")&&"AMEX"!==e&&"AMERICAN EXPRESS"!==e&&19===b.length||("AMEX"===e||"AMERICAN EXPRESS"===e)&&18===b.length?b:b.replace(/[^\d]+/g,""),c.val(a("vnCreditCard")(d,e)),d}))}}}]).directive("vnFormatUsPhoneNumber",["$filter",function(a){"use strict";return{require:"?ngModel",link:function(b,c,d,e){e&&(e.$formatters.unshift(function(){return a("vnUsPhone")(e.$modelValue)}),e.$parsers.unshift(function(b){var d=b.replace(/[^\d]+/g,"");return c.val(a("vnUsPhone")(d)),d}))}}}]).directive("vnFormatZip",[function(){"use strict";return{require:"?ngModel",link:function(a,b,c,d){d&&(d.$formatters.unshift(function(){return d.$modelValue}),d.$parsers.unshift(function(a){var c=a.replace(/[^\d|^\-]/g,"");return b.val(c),c}))}}}]).directive("vnFormatQuantity",["$filter",function(a){"use strict";return{require:"?ngModel",link:function(b,c,d,e){e&&(e.$formatters.unshift(function(){return a("number")(e.$modelValue)}),e.$parsers.unshift(function(b){var d="";if(""!==b){b=parseInt(b.toString().replace(/\D/g,"")),(isNaN(b)||0===b)&&(b="");var f=9999999;b>f&&(b=f),d=a("number")(b),(0===parseInt(d)||void 0===parseInt(d))&&(d="")}return e.$setViewValue(b),c.val(d),b}))}}}]),angular.module("Volusion.toolboxCommon").directive("vnLegacyLink",["$window",function(a){return{restrict:"AE",link:function(b,c,d){d.$observe("vnLegacyLink",function(a){c.attr("href",a)}),c.on("click",function(b){b.preventDefault(),a.location.assign(this.href)})}}}]),angular.module("Volusion.toolboxCommon").filter("vnLegacyLinkify",function(){return function(a){var b=angular.element("<div/>").html(a);return angular.forEach(b.find("a"),function(a){var b=angular.element(a);b.attr("target",b.attr("target")||"_self")}),b.html()}}),angular.module("Volusion.toolboxCommon").controller("ForgotPasswordCtrl",["$scope","$state","vnAuthService","vnNotifications","vnModalService",function(a,b,c,d,e){"use strict";a.forgotPassword=function(){c.forgotPassword(a.email).then(function(){b.go("login"),d.displayMsg("success","An email has been sent to reset your password if you have an account.")},function(){e.showError()})}}]),angular.module("Volusion.toolboxCommon").controller("LoginCtrl",function(){"use strict"}),angular.module("Volusion.toolboxCommon").controller("LogoutCtrl",["$rootScope","$location","vnAuthService","VN_AUTH_EVENTS","vnUser",function(a,b,c,d,e){"use strict";a.$on(d.logoutSuccess,function(){b.path("/")}),e.reset(),c.logout()}]),angular.module("Volusion.toolboxCommon").directive("vnLoginLink",["$rootScope","VN_AUTH_EVENTS","vnUser",function(a,b,c){"use strict";return{restrict:"AE",templateUrl:"login/vn-login-link.html",link:function(d){d.loggedIn=!1;var e=function(){c.isLoggedIn().then(function(){d.loggedIn=!0},function(){d.loggedIn=!1})};e(),a.$on(b.loginSuccess,function(){e()}),a.$on(b.logoutSuccess,function(){e()})}}}]),angular.module("Volusion.toolboxCommon").directive("vnLogin",["$rootScope","vnUser","vnAuthService","vnCheckout","vnNotifications","VN_AUTH_EVENTS","$q","$state",function(a,b,c,d,e,f,g,h){return{restrict:"AE",templateUrl:"login/vn-login.html",scope:{allowAnonymous:"@",buttonText:"@",redirectTo:"@"},link:function(i,j,k){i.allowAnonymous=!1,i.loginError=!1,i.clearError=function(){i.loginError=!1},k.$observe("allowAnonymous",function(){k.allowAnonymous&&(i.allowAnonymous=i.$eval(k.allowAnonymous),!i.allowAnonymous&&i.user&&(i.user.anonymous=!1))}),i.buttonText=i.buttonText||"Sign In",i.user=b.getUser(),i.disabledButton=!1,i.updateUser=function(){if(!i.disabledButton)if(i.frmLogin.$valid)if(a.$on(f.loginSuccess,function(){b.getCurrentUser().then(function(){h.go(i.redirectTo)})["catch"](function(a){e.displayErrors(a),i.disabledButton=!1,i.loginError=a.message})}),a.$on(f.loginFailed,function(a,b){i.loginError="Login Failed",i.disabledButton=!1,e.displayErrors(b.Errors||b.data.Errors)}),i.disabledButton=!0,i.user.anonymous){var j={email:i.user.email,password:"",firstName:"",lastName:"",emailOptIn:!1,anonymous:!0,customFields:{},autoLogin:!0};g.all([b.createFrom(j),d.initCart().promise]).then(function(a){b.setId(a[0].data.id),d.setUser(),h.go(i.redirectTo)})["catch"](function(a){e.displayErrors(a),i.disabledButton=!1})}else{var k={CustomerNewOld:"old",Email:i.user.email,Password:i.user.password};c.login(k)}else for(var l in i.frmLogin)i.frmLogin.hasOwnProperty(l)&&l.indexOf("$")<0&&(i.frmLogin[l].$setDirty(),i.frmLogin[l].$setTouched())}}}}]),angular.module("Volusion.toolboxCommon").factory("vnModalService",["$modal",function(a){return{showError:function(b,c){return a.open({templateUrl:b||"modal/vnErrorModal.tpl.html",scope:c})},showMessage:function(b,c){return a.open({templateUrl:b||"modal/vnModalMessage.tpl.html",scope:c})}}}]),angular.module("Volusion.toolboxCommon").controller("BillingAddressesCtrl",["$scope","vnAddressUtilities","vnUser","vnModalService","$state","vnCheckout",function(a,b,c,d,e,f){function g(){c.getBillingAddresses().then(function(a){h.billingAddresses=a,h.loading=!1},function(){h.loading=!1,d.showError().result.then(function(){e.go("my-account")})})}var h=this;h.loading=!0,g(),f.getCountries().then(function(a){h.countries=a.data}),h.state="DISPLAY",h.addressToEdit=null,h.addressToAdd=null,h.pageTitles={"default":"Billing Addresses",add:"Add Address",edit:"Edit Address"},h.pageTitle=h.pageTitles["default"],h.saveEditedAddress=function(){c.updateBillingAddress(h.addressToEdit).then(function(){h.addressToEdit=!1,h.pageTitle=h.pageTitles["default"]}),b.setPreferredAddress(h.billingAddresses,h.indexOfAddressToEdit)},h.saveNewAddress=function(){c.setBillingAddress(h.addressToAdd).then(function(a){h.addressToAdd.id=a,a&&a.data&&a.data.id&&(angular.isArray(h.billingAddresses)?(h.billingAddresses.push(a.data),b.setPreferredAddress(h.billingAddresses,h.billingAddresses.length-1)):(h.billingAddresses=[],h.billingAddresses.push(a.data)),h.addressToAdd=!1,h.pageTitle=h.pageTitles["default"])})},h.addAddress=function(){h.addressToAdd||(h.addressToAdd=b.createEmptyAddress()),h.addressToEdit=!1,h.pageTitle=h.pageTitles.add},h.cancelAddAddress=function(){h.addressToAdd=!1,h.pageTitle=h.pageTitles["default"]},h.editAddress=function(a,b){h.addressToAdd=!1,h.addressToEdit=a,h.pageTitle=h.pageTitles.edit,h.indexOfAddressToEdit=b},h.cancelEditAddress=function(){h.addressToEdit=!1,h.pageTitle=h.pageTitles["default"],g()},h.makeAddressPreferred=function(a){b.setPreferredAddress(h.billingAddresses,a),c.updateBillingAddress(b.getPreferredAddress(h.billingAddresses))},h.deleteAddress=function(e){a.message="Are you sure you want to remove this billing address?",a.addressToDelete=e,a.buttonText="Yes, remove the billing address";var f=d.showMessage("modal/vnAddressDeleteConf.tpl.html",a).result;f.then(function(){c.deleteBillingAddress(e).then(function(){h.billingAddresses=b.removeAddressFromList(h.billingAddresses,e),c.getBillingAddresses()},function(){d.showError()})},angular.noop)}}]),angular.module("Volusion.toolboxCommon").controller("ChangeEmailCtrl",["$scope","$state","vnUser","vnModalService","vnNotifications",function(a,b,c,d,e){"use strict";a.user=angular.copy(c.getUser()),a.user.password="",a.changeButtonDisabled=!0,a.emailDoesNotMatch=!1,a.changeEmail=function(){a.changeButtonDisabled||a.emailDoesNotMatch||(a.user.email=a.user.changeEmail,c.updateUser().then(function(){b.go("my-account"),e.displayMsg("success","Your email was changed")},function(){d.showError()}))},a.checkValidity=function(){return a.frmChangeEmail.$pristine?(a.changeButtonDisabled=!0,void(a.emailDoesNotMatch=!1)):(a.changeButtonDisabled=a.frmChangeEmail.$valid&&a.user.changeEmail===a.user.confirmChangeEmail?!1:!0,void(a.user.changeEmail&&a.user.confirmChangeEmail&&a.user.changeEmail.length&&a.user.confirmChangeEmail.length&&(a.emailDoesNotMatch=a.user.changeEmail===a.user.confirmChangeEmail?!1:!0)))}}]),angular.module("Volusion.toolboxCommon").controller("ChangePasswordCtrl",["$scope","$state","vnUser","vnModalService","vnNotifications",function(a,b,c,d,e){"use strict";a.user=angular.copy(c.getUser()),a.user.password="",a.user.newPassword="",a.user.confirmPassword="",a.changeButtonDisabled=!0,a.passwordDoesNotMatch=!1,a.changePassword=function(){a.changeButtonDisabled||a.passwordDoesNotMatch||(a.user.password=a.user.newPassword,c.updateUser().then(function(){b.go("my-account"),e.displayMsg("success","Your password was changed")},function(){d.showError()}))},a.checkValidity=function(){return a.frmChangePassword.$pristine?(a.changeButtonDisabled=!0,void(a.passwordDoesNotMatch=!1)):(a.changeButtonDisabled=a.frmChangePassword.$valid&&a.user.newPassword===a.user.confirmPassword?!1:!0,void(a.user.newPassword&&a.user.confirmPassword&&a.user.newPassword.length&&a.user.confirmPassword.length&&(a.passwordDoesNotMatch=a.user.newPassword===a.user.confirmPassword?!1:!0)))}}]),angular.module("Volusion.toolboxCommon").controller("ListOrdersCtrl",["$rootScope","$scope","$state","vnUser","vnModalService",function(a,b,c,d,e){var f=this;f.pageSizes=[{value:5,text:"5 Per Page"},{value:10,text:"10 Per Page"}],f.getOrders=function(){f.loading=!0,f.cursor&&f.currentPage===f.cursor.totalPages&&Math.ceil(f.cursor.total/f.selectedPageSize.value)<f.currentPage&&(f.currentPage=Math.ceil(f.cursor.total/f.selectedPageSize.value)),d.getPagedOrders(f.currentPage,f.selectedPageSize.value).then(function(a){f.loading=!1,f.cursor=a.cursor,f.numPages=f.cursor.totalPages,f.orders=a.data.orders},function(){f.loading=!1,e.showError().result.then(function(){c.go("my-account")})})},f.init=function(){f.currentPage=1,f.selectedPageSize=f.pageSizes[1],f.maxSize=3,f.getOrders()}}]),angular.module("Volusion.toolboxCommon").controller("MyAccountCtrl",["$scope","vnUser","vnModalService",function(a,b,c){"use strict";function d(){a.loading=!0,a.user=b.getUser(),b.getLastThreeOrders().then(function(b){a.orders=b.orders,a.loading=!1},function(){a.loading=!1,c.showError()})}a.loading=!1,a.orders=[],d()}]),angular.module("Volusion.toolboxCommon").controller("OrdersDetailCtrl",["vnApi","$stateParams",function(a,b){function c(){d.loading=!0,a.CustomerOrders().get({id:b.id}).$promise.then(function(a){d.order=a.data,d.loading=!1},function(){d.loading=!1})}var d=this;d.order=null,d.loading=!1,c()}]),angular.module("Volusion.toolboxCommon").controller("PaymentProfilesCtrl",["$scope","$state","$q","lodash","vnCreditCardUtilities","vnUser","vnCheckout","vnModalService","vnPciaasIframe","vnCreditCardClass",function(a,b,c,d,e,f,g,h,i,j){function k(){var a={method:"Credit Card",preferred:!0,card:{cardType:l.paymentProfileToAdd.card.cardType,cardTypeName:l.paymentProfileToAdd.card.cardTypeName,holdersName:l.user.firstName+" "+l.user.lastName,last4:l.paymentProfileToAdd.card.cardNumber.slice(-4),expMonth:l.paymentProfileToAdd.card.expMonth,expYear:l.paymentProfileToAdd.card.expYear,issueMonth:"",issueYear:"",issueNumber:"",pCIaaSId:l.paymentProfileToAdd.card.pCIaaSId,cardNumber:l.paymentProfileToAdd.card.cardNumber}};g.setCCPaymentProfile(a),f.setPaymentProfile(a).then(function(a){ +if(l.paymentProfileToAdd.id=a,a&&a.data&&a.data.id){var b=j(a.data.card.cardType);a.data.card.ccCssClass=b["class"],a.data.card.last4=a.data.card.cardNumber.slice(-4),a.data.card.cardTypeName=b.name,angular.isArray(l.paymentProfiles)?(l.paymentProfiles.push(a.data),l.makePaymentProfilePreferred(l.paymentProfiles.length-1)):(l.paymentProfiles=[],l.paymentProfiles.push(a.data)),l.paymentProfileToAdd=!1,l.pageTitle=l.pageTitles["default"]}else h.showError()})}var l=this;l.user=f.getUser(),l.loading=!0,f.getPaymentProfiles().then(function(a){l.paymentProfiles=a,l.loading=!1},function(){l.loading=!1,h.showError().result.then(function(){b.go("my-account")})}),l.state="DISPLAY",l.paymentProfileToAdd=null,l.pageTitles={"default":"Payment Profiles",add:"Add Card",edit:"Edit Card"},l.pageTitle=l.pageTitles["default"],l.saveNewPaymentProfile=function(){l.processCard().then(function(a){l.paymentProfileToAdd.card.pCIaaSError="",angular.isString(a)&&(a=JSON.parse(a)),l.paymentProfileToAdd.card.cardNumber=-1===l.paymentProfileToAdd.card.cardNumber.indexOf("*")?e.maskCardValue(l.paymentProfileToAdd.card.cardNumber):l.paymentProfileToAdd.card.cardNumber,l.paymentProfileToAdd.card.pCIaaSId=a.CardId?a.CardId:l.paymentProfileToAdd.card.pCIaaSId,k()},function(){h.showError()})},l.addPaymentProfile=function(){l.paymentProfileToAdd||(l.paymentProfileToAdd={method:"Credit Card",preferred:!0,card:e.newCard()}),l.pageTitle=l.pageTitles.add},l.cancelAddPaymentProfile=function(){l.paymentProfileToAdd=!1,l.pageTitle=l.pageTitles["default"]},l.makePaymentProfilePreferred=function(a){e.setPreferredPaymentProfile(l.paymentProfiles,a),f.updatePaymentProfile(e.getPreferredPaymentProfile(l.paymentProfiles))},l.deletePaymentProfile=function(b){a.message="Are you sure you want to remove this card?",a.paymentProfileToDelete=b,a.buttonText="Yes, remove the card";var c=h.showMessage("modal/vnPaymentProfileDeleteConf.tpl.html",a).result;c.then(function(){f.deletePaymentProfile(b).then(function(){l.paymentProfiles=e.removePaymentProfileFromList(l.paymentProfiles,b),f.getPaymentProfiles()},function(){h.showError()})},angular.noop)},l.processCard=function(){return c(function(a,b){var c={CVV:"inputCreditCardCVV",HiddenCardID:"hiddenCardID",CardNumber:function(){return l.paymentProfileToAdd.card.cardNumber},CardType:function(){return{Visa:"Visa",MasterCard:"MasterCard","American Express":"Amex",Discover:"Discover"}[l.paymentProfileToAdd.card.cardTypeName]}};i.PCIaaS({settings:{merchantID:"3de067d8d96d407697da4a9559f99681",apiBase:"https://payments-qa.dev.volusion.com/paymentsv1_4"},fields:c,events:{success:a,error:b}}).process(!0)})}}]),angular.module("Volusion.toolboxCommon").controller("ShippingAddressesCtrl",["$scope","$state","vnAddressUtilities","vnUser","vnCheckout","vnModalService",function(a,b,c,d,e,f){function g(){d.getShippingAddresses().then(function(a){h.shippingAddresses=a,h.loading=!1},function(){h.loading=!1,f.showError().result.then(function(){b.go("my-account")})})}var h=this;h.loading=!0,g(),e.getCountries().then(function(a){h.countries=a.data}),h.state="DISPLAY",h.addressToEdit=null,h.addressToAdd=null,h.pageTitles={"default":"Shipping Addresses",add:"Add Address",edit:"Edit Address"},h.pageTitle=h.pageTitles["default"],h.saveEditedAddress=function(){d.updateShippingAddress(h.addressToEdit).then(function(){h.addressToEdit=!1,h.pageTitle=h.pageTitles["default"]}),c.setPreferredAddress(h.shippingAddresses,h.indexOfAddressToEdit)},h.saveNewAddress=function(){d.setShippingAddress(h.addressToAdd).then(function(a){h.addressToAdd.id=a,a&&a.data&&a.data.id&&(angular.isArray(h.shippingAddresses)?(h.shippingAddresses.push(a.data),c.setPreferredAddress(h.shippingAddresses,h.shippingAddresses.length-1)):(h.shippingAddresses=[],h.shippingAddresses.push(a.data)),h.addressToAdd=!1,h.pageTitle=h.pageTitles["default"])})},h.addAddress=function(){h.addressToAdd||(h.addressToAdd=c.createEmptyAddress()),h.addressToEdit=!1,h.pageTitle=h.pageTitles.add},h.cancelAddAddress=function(){h.addressToAdd=!1,h.pageTitle=h.pageTitles["default"]},h.editAddress=function(a,b){h.addressToAdd=!1,h.addressToEdit=a,h.pageTitle=h.pageTitles.edit,h.indexOfAddressToEdit=b},h.cancelEditAddress=function(){h.addressToEdit=!1,h.pageTitle=h.pageTitles["default"],g()},h.makeAddressPreferred=function(a){c.setPreferredAddress(h.shippingAddresses,a),d.updateShippingAddress(c.getPreferredAddress(h.shippingAddresses))},h.deleteAddress=function(b){a.message="Are you sure you want to remove this shipping address?",a.addressToDelete=b,a.buttonText="Yes, remove the shipping address";var e=f.showMessage("modal/vnAddressDeleteConf.tpl.html",a).result;e.then(function(){d.deleteShippingAddress(b).then(function(){h.shippingAddresses=c.removeAddressFromList(h.shippingAddresses,b),d.getShippingAddresses()},function(){f.showError()})},angular.noop)}}]),angular.module("Volusion.toolboxCommon").directive("vnNavMobile",["$rootScope","vnApi",function(a,b){"use strict";return{templateUrl:"nav-menu-mobile/vn-nav-mobile.tpl.html",restrict:"EA",replace:!0,scope:{currMode:"@",categoryList:"="},link:function(c,d){void 0===c.currMode&&(c.currMode="on"),c.componentId="1000051",c.componentName="navbar-mobile",c.selected=!1,c.$on("currentComponent.change",function(a,b){b&&b.id&&"off"===c.currMode&&(c.selected=b.id===c.componentId)}),d.on("click",function(b){"off"===c.currMode&&(b.preventDefault(),a.$broadcast("currentComponent.change",{id:c.componentId,name:c.componentName,action:"set"}))}),b.Nav().get({navId:1}).$promise.then(function(a){c.categories=a.data})}}}]),angular.module("Volusion.toolboxCommon").directive("vnNav",["$rootScope","$window","$timeout","vnApi",function(a,b,c,d){"use strict";return{templateUrl:"nav-menu/vn-nav.tpl.html",restrict:"EA",replace:!0,scope:{currMode:"@",categoryList:"=",useSmartNav:"@"},link:function(e,f){function g(){var a=0,b=0,c=0,d=[];-1!==i.windowWidth&&e.windowWidth>i.windowWidth&&(c=0,i.windowWidth=-1,i.position=0),-1===i.windowWidth&&angular.forEach(angular.element(".nav-top-level-menu-items"),function(d){return 0===a&&(b=angular.element(d).position().top),angular.element(d).position().top!==b?(c=a,!1):void a++}),0!==c||-1!==i.windowWidth?(-1===i.windowWidth?(i.windowWidth=e.windowWidth,i.position=c):c=i.position,e.smartNavMoreCategories=[],angular.forEach(e.smartCategories,function(a,b){b>=c-1?e.smartNavMoreCategories.push(a):d.push(a)}),e.smartNavCategories=d):e.smartNavCategories=e.smartCategories,e.displaySmartNavMoreMenuItem=0!==c}function h(a){e.smartNavCategories=e.smartCategories=a,"true"===e.useSmartNavigation&&c(function(){g()},0)}void 0===e.currMode&&(e.currMode="on"),e.useSmartNavigation=void 0===e.useSmartNav?"true":e.useSmartNav,e.componentId="100005",e.componentName="navbar",e.selected=!1,e.displaySmartNavMoreMenuItem=!1,e.$on("currentComponent.change",function(a,b){b&&b.id&&"off"===e.currMode&&(e.selected=b.id===e.componentId)}),f.on("click",function(b){"off"===e.currMode&&(b.preventDefault(),a.$broadcast("currentComponent.change",{id:e.componentId,name:e.componentName,action:"set"}))});var i={windowWidth:-1,position:0};e.initializeWindowSize=function(){e.windowWidth=b.outerWidth},e.initializeWindowSize(),"true"===e.useSmartNavigation&&angular.element(b).bind("resize",function(){e.initializeWindowSize(),e.$apply(),g()}),void 0!==e.categoryList?h(e.categoryList):d.Nav().get({navId:1}).$promise.then(function(a){h(a.data)})}}}]),angular.module("Volusion.toolboxCommon").directive("vnOrderListView",[function(){return{restrict:"AE",templateUrl:"orders/vn-order-list-view.tpl.html",scope:{orders:"="}}}]),angular.module("Volusion.toolboxCommon").directive("vnOrderTable",[function(){return{restrict:"AE",templateUrl:"orders/vn-order-table.tpl.html",scope:{orders:"="}}}]),angular.module("Volusion.toolboxCommon").directive("vnPaginator",["vnProductParams","themeSettings",function(a,b){return{templateUrl:"pagination/vnPaginator.tpl.html",restrict:"A",scope:{cursor:"=",queryFn:"&"},link:function(c,d,e){a.setPageSize(b.getPageSize()),c.nextPage=function(){c.cursor.currentPage<c.cursor.totalPages&&(a.nextPage(),c.queryFn())},c.prevPage=function(){c.cursor.currentPage>1&&(a.previousPage(),c.queryFn())},c.$watch(e.cursor,function(b){void 0!==b&&(c.currentPage=b.currentPage.toString(),a.setPage(c.currentPage))},!0)}}}]),angular.module("Volusion.toolboxCommon.templates",[]).run(["$templateCache",function(a){a.put("vn-faceted-search/vn-category-search.html",'<div class=vn-category-search__category-items data-ng-repeat="cat in categories" data-ng-class="{ \'-last\': $last }">\n\n <a href data-ng-if="cat.displayStrategy == \'categoryDisplayTwo\' || cat.displayStrategy == \'categoryDisplayThree\' " data-ng-click=buildAppUrl(cat) class=vn-category-search__category-items__category-title data-ng-class="{ \'-noborder\': $last && cat.displayStrategy == \'categoryDisplayOne\' }">\n\n <span data-ng-if="cat.displayStrategy == \'categoryDisplayTwo\' " class="glyphicon glyphicon-chevron-left"></span>\n {{ cat.name }}\n </a>\n <span class=vn-category-search__category-items__category-title data-ng-if="cat.displayStrategy == \'categoryDisplayOne\' ">{{ cat.name }}</span>\n <div class=vn-category-search__category-items__category-item data-ng-repeat="subCat in cat.subCategories" data-ng-class="{ \'-noborder\': $last }">\n\n <span data-ng-if=subCat.hideSubCatLink>{{ subCat.name }}</span>\n <a href data-ng-if=!subCat.hideSubCatLink data-ng-click=buildAppUrl(subCat)>{{ subCat.name }}</a>\n </div>\n</div>'),a.put("vn-faceted-search/vn-facet-search.html",'<div data-accordion-group class=facet-item data-ng-repeat="facet in facets track by $index" data-is-open=defaultAccordianOpen>\n <div data-accordion-heading>\n <div>\n <span>{{ facet.title }}</span>\n <i class="pull-right glyphicon" data-ng-class="{\'glyphicon-chevron-down\': defaultAccordianOpen, \'glyphicon-chevron-right\': !defaultAccordianOpen}"></i>\n </div>\n </div>\n <div data-ng-if="facet.displayType != \'swatches\'" class=facet-properties>\n <label class=facet-property data-ng-repeat="property in facet.properties track by $index" data-ng-class="{ \'-last\': $last }">\n\n <input type=checkbox name=property.name data-ng-checked=selectProperty(property) data-ng-click="refineFacetSearch(property)">\n <span class=name>{{ property.name }}</span>\n <span class=count>{{ property.count }}</span>\n </label>\n </div>\n <div data-ng-if="facet.displayType == \'swatches\'" class="facet-properties clearfix">\n <div data-ng-repeat="property in facet.properties" class=facet-property__swatch data-ng-click=refineFacetSearch(property) data-ng-class="{\'facet-property__swatch--selected\': selectProperty(property)}">\n <div class=facet-property__swatch--color data-ng-style="{\'backgroundColor\': property.color }">\n </div>\n </div>\n </div>\n</div>'),a.put("vn-faceted-search/vn-faceted-search.html",'<div class=vn-faceted-search-header data-ng-show=showApplyButton>\n <button class="btn btn-success __cancel-action" href data-ng-click=dismissMobileFilters()>Apply\n </button>\n \n <button class="btn __clear-action" href data-ng-click=clearAllFilters()>Clear\n </button>\n \n</div>\n<div class=-faceted-search data-ng-show=showFacetSearch>\n <div class=facets>\n <div data-accordion data-close-others=false>\n\n \n <div data-accordion-group class=facet-item__by-category data-is-open=categoryAccordiansOpen data-ng-show="categoryList.length > 0">\n <div data-accordion-heading>\n <div>\n <span>Category</span>\n <i class="pull-right glyphicon" data-ng-class="{\'glyphicon-chevron-down\': categoryAccordiansOpen, \'glyphicon-chevron-right\': !categoryAccordiansOpen}"></i>\n </div>\n </div>\n <div vn-category-search categories=categoryList query-products=queryProducts() data-ng-show=showCategorySearch class=category-search>\n </div>\n </div>\n\n \n <div vn-facet-search facets=facets query-products=queryProducts() data-ng-show="facets.length > 0"></div>\n\n \n <div data-accordion-group class=facet-item__by-price data-is-open=priceAccordiansOpen data-ng-show="facets.length > 0">\n <div data-accordion-heading>\n <div>\n <span>Price</span>\n <i class="pull-right glyphicon" data-ng-class="{\'glyphicon-chevron-down\': priceAccordiansOpen, \'glyphicon-chevron-right\': !priceAccordiansOpen}"></i>\n </div>\n </div>\n <div class=facet-item__by-price__inputs vn-price-search query-products=queryProducts()></div>\n </div>\n </div>\n\n \n <div class=vn-faceted-search-footer data-ng-show=!showApplyButton>\n <button class="btn __clear-action" href data-ng-click=clearAllFilters()>Reset Filters\n </button>\n \n </div>\n\n </div>\n</div>'),a.put("vn-faceted-search/vn-price-search.html",'<input data-ng-model=minPrice data-ng-keypress=searchByPrice($event) placeholder="$">\n to \n<input data-ng-model=maxPrice data-ng-keypress=searchByPrice($event) placeholder="$$">\n<button class="btn btn-default facet-item__by-price__button" type=button ng-click=searchByPrice($event)>Go\n</button>'),a.put("vn-faceted-search/vn-sort-search.html",'<div class=dropdown>\n <button class="btn btn-default dropdown-toggle" type=button id=dropdownMenu1 data-toggle=dropdown>\n Sort by\n <span class=caret></span>\n </button>\n <ul class=dropdown-menu role=menu aria-labelledby=dropdownMenu1>\n <li role=presentation>\n <a role=menuitem tabindex=-1 href="" data-ng-click="sortBy(\'relevance\')">Relevance</a>\n </li>\n <li role=presentation>\n <a role=menuitem tabindex=-1 href="" data-ng-click="sortBy(\'highest price\')">Highest price</a>\n </li>\n <li role=presentation>\n <a role=menuitem tabindex=-1 href="" data-ng-click="sortBy(\'lowest price\')">Lowest price</a>\n </li>\n <li role=presentation>\n <a role=menuitem tabindex=-1 href="" data-ng-click="sortBy(\'relevance\')">Popularity</a>\n </li>\n <li role=presentation>\n <a role=menuitem tabindex=-1 href="" data-ng-click="sortBy(\'newest\')">Newest</a>\n </li>\n <li role=presentation>\n <a role=menuitem tabindex=-1 href="" data-ng-click="sortBy(\'oldest\')">Oldest</a>\n </li>\n </ul>\n</div>'),a.put("vn-place-order-btn/vn-place-order-btn.html",'<div class=th-checkout__place-order-fixed data-ng-class="{ \'th-checkout__place-order-fixed--active\': placeOrderFixed}" data-ng-if=checkout.steps[2].active>\n <button class="btn btn-primary btn-block btn-lg th-checkout__place-order-fixed__btn" data-ng-click=placeOrder()>\n Place Order\n </button>\n</div>'),a.put("vn-product-option/checkboxes.html",'<label data-vn-block=vn-labeled-checkbox data-vn-modifiers={{option.class}} data-ng-repeat="item in option.items" data-ng-init=item>\n\n <div data-vn-element=checkbox>\n <input type=checkbox data-ng-click="onCheckboxClicked(option, item)">\n </div>\n\n <div data-vn-element=content data-ng-include=" \'vn-product-option/content.html\' "></div>\n</label>'),a.put("vn-product-option/content.html",'<div data-vn-element=color-image>\n <div data-vn-element=color data-ng-show=item.color style="background-color: {{item.color}}"></div>\n <img data-vn-element=image data-ng-show=item.swatchImage data-ng-src={{item.swatchImage}} alt={{item.text}}>\n</div>\n<div data-vn-element=text data-ng-bind=item.text data-ng-controller=OptionsCtrl data-ng-class="{ \'-disabled\': !isItemAvailable }"></div>\n<div data-vn-element=border data-ng-class="{ checked: option.selected === item.key }"></div>'),a.put("vn-product-option/index.html",'<div data-vn-block=vn-product-option>\n\n <label data-vn-element=label data-ng-if=option.label data-ng-bind=option.label></label>\n\n <div data-ng-repeat="inputType in option.inputTypes">\n <div data-vn-element=group data-vn-modifiers="{{inputType.type}} {{option.class}}" data-ng-include=" \'vn-product-option/\' + inputType.type + \'.html\' ">\n </div>\n </div>\n\n <div data-ng-if=option.selected>\n <div data-ng-repeat="option in option.options" data-ng-include=" \'vn-product-option/index.html\' ">\n </div>\n </div>\n\n</div>'),a.put("vn-product-option/radios.html",'<label data-vn-block=vn-labeled-radio data-vn-modifiers={{option.class}} data-ng-repeat="item in option.items" data-ng-init=item data-ng-controller=OptionsCtrl data-ng-class="{ \'-disabled\': !isItemAvailable }">\n\n <div data-vn-element=radio>\n\n <input type=radio name={{option.id}} data-ng-value=item.key data-ng-model=option.selected data-ng-click="onOptionChanged(option, item)">\n </div>\n\n <div data-vn-element=content data-ng-include=" \'vn-product-option/content.html\' "></div>\n\n</label>'),a.put("vn-product-option/select.html",'<div class=dropdown data-vn-element=select data-vn-modifiers="{{ option.class }}" data-ng-attr-size="{{ inputType.size }}">\n\n <button class="btn btn-default dropdown-toggle" type=button id="dropdownMenuOption{{ option.id }}" data-toggle=dropdown>\n {{ currentSelectionText }}\n <span class=caret></span>\n </button>\n <ul class=dropdown-menu role=menu aria-labelledby="dropdownMenuOption{{ option.id }}">\n <li role=presentation data-ng-repeat="item in option.items">\n <a role=menuitem tabindex=-1 href data-ng-click="onOptionChanged(option, item)" data-ng-controller=OptionsCtrl data-ng-class="{ \'-disabled\': !isItemAvailable }">\n {{ item.text }}\n </a>\n </li>\n </ul>\n</div>'),a.put("vn-product-option/text.html",'<div data-ng-if="inputType.rows > 1">\n <textarea data-vn-element=text data-vn-modifiers={{option.class}} data-ng-focus="saveTo=saveTo||{}" data-ng-model=saveTo[option.id] data-ng-maxlength={{inputType.maxlength}} placeholder={{inputType.placeholder}} rows={{inputType.rows}} cols={{inputType.cols}}></textarea>\n</div>\n\n<div data-ng-if="!inputType.rows || inputType.rows < 2">\n <input data-vn-element=text data-vn-modifiers={{option.class}} data-ng-focus="saveTo=saveTo||{}" data-ng-model=saveTo[option.id] data-ng-maxlength={{inputType.maxlength}} placeholder={{inputType.placeholder}}>\n</div>'),a.put("vn-product/vn-product-image.html",'<img data-ng-src="{{ getImagePath(product.imageCollections) }}" class=img-responsive alt="{{ product.name }}">'),a.put("address/address-display.tpl.html",'<div class=row data-ng-show="address.address1 !== \'\'" data-ng-click=onClick()>\n <div class=col-xs-10>\n <div class=th-address__display__addressPart>{{ address.firstName }} {{ address.lastName }}</div>\n <div class=th-address__display__addressPart>{{ address.address1 }}</div>\n <div data-ng-if="address.address2 != \'\'" class=th-address__display__addressPart>{{ address.address2 }}</div>\n <div class=th-address__display__addressPart data-ng-show=isLocationUS>{{ address.city }}, {{ address.state }} {{ address.postalCode }}</div>\n <div class=th-address__display__addressPart data-ng-show=isLocationUS>{{ address.phoneNumber | vnUsPhone }}</div>\n\n <div class=th-address__display__addressPart data-ng-show=!isLocationUS>{{ address.city }}</div>\n <div class=th-address__display__addressPart data-ng-show=!isLocationUS>{{ address.state }} {{ address.postalCode }}</div>\n <div class=th-address__display__addressPart data-ng-show=!isLocationUS>{{ address.country }}</div>\n <div class=th-address__display__addressPart data-ng-show=!isLocationUS>{{ address.phoneNumber }}</div>\n\n <div class=th-address__display__addressPart data-ng-if=shippingValue data-ng-show=address.residential>Type: Residential</div>\n <div class=th-address__display__addressPart data-ng-if=shippingValue data-ng-show=!address.residential>Type: Business</div>\n </div>\n <div class=col-xs-2 ng-show=showEditButton>\n <i class="fa fa-angle-right fa-2x pull-right"></i>\n </div>\n</div>'),a.put("address/vn-address-display-actions.tpl.html",'<div class=conatiner-fluid>\n <div data-ng-if="shipping==\'true\'" data-vn-address-display data-address=address data-shipping=true></div>\n <div data-ng-if="shipping!=\'true\'" data-vn-address-display data-address=address></div>\n <div class="row th-address__display__actions">\n <div class=col-xs-7>\n <span data-ng-if=!address.preferred>\n <button class="btn btn-default" data-ng-click=onMakePreferredClicked()>Make Preferred\n </button>\n </span>\n <span class=th-address__display__actions__preferred data-ng-if=address.preferred>\n <i class="fa fa-check"></i> Preferred</span>\n </div>\n <div class="col-xs-4 col-xs-offset-1 col-sm-3 col-sm-offset-2 col-md-2 col-md-offset-3">\n <div class=row>\n <div class=col-xs-6>\n <a href data-ng-click=onEditClicked({address:address})><i class="fa fa-pencil"></i></a>\n </div>\n <div class=col-xs-6>\n <a href data-ng-click=onDeleteClicked({address:address})><i class="fa fa-trash-o"></i></a>\n </div>\n </div>\n </div>\n </div>\n</div>'),a.put("address/vn-address-picker.tpl.html",'<div class="th-checkout__step__drawer -left" data-ng-class="{\'-open\': openAddressPicker}">\n\n <div class=th-checkout__step__drawer__body data-ng-show=openAddressPicker data-ng-switch=state data-ng-cloak>\n <a href class=th-checkout__step__drawer__close data-ng-click=selectAddress()>\n <i class="fa fa-close fa-2x"></i>\n </a>\n\n <div class=th-checkout__step__drawer__title>\n <span data-ng-switch-when=ADDRESSLIST>{{:: selectAddressTitle}}</span>\n <span data-ng-switch-when=NEWADDRESS>{{:: newAddressTitle}}</span>\n </div>\n\n <div class=th-address__choose data-ng-switch-when=ADDRESSLIST>\n <div class=th-address__choose__options ng-cloak>\n <label class=th-address__choose__options__option data-ng-repeat="address in addressList" for="address{{ $index }}">\n <div class=styled-optionbox-option>\n <input type=radio id="address{{ $index }}" name=billingAddress data-ng-value=true data-ng-model=address.preferred data-ng-change="setPreferredAddress({{ $index }})">\n\n <div>\n <vn-address-display data-ng-if="shipping==\'true\'" data-address=address data-show-edit-button=allowEdit data-shipping=true></vn-address-display>\n <vn-address-display data-ng-if="shipping!=\'true\'" data-address=address data-show-edit-button=allowEdit></vn-address-display>\n </div>\n </div>\n </label>\n\n <a class=th-address__choose__options__new-option ng-repeat-end data-ng-click=createNewAddress()>\n Enter a different address\n </a>\n </div>\n <button class="btn btn-primary btn-block btn-lg th-checkout__step__btn__continue" data-ng-click=selectAddress()>\n Continue <i class="fa fa-angle-right"></i>\n </button>\n </div>\n\n\n <div data-ng-switch-when=NEWADDRESS>\n <div class="th-address__same-as styled-checkbox-option" data-ng-if=showCopyAddress>\n <input type=checkbox id=chkAddressCopy name=chkAddressCopy data-ng-model=addressCopied data-ng-change="copyAddressHandler()">\n <label for=chkAddressCopy>{{:: copyAddressText}}</label>\n </div>\n <div class=th-address__enterAddress>\n <div data-ng-if="shipping==\'true\'" data-vn-address-editor="" address=newAddress countries=countries data-on-dirty=setCopyAddressFalse() data-on-save="saveAddress({newAddress: newAddress})" data-shipping=true></div>\n <div data-ng-if="shipping!=\'true\'" data-vn-address-editor="" address=newAddress countries=countries data-on-dirty=setCopyAddressFalse() data-on-save="saveAddress({newAddress: newAddress})"></div>\n </div>\n </div>\n\n\n <div class=th-checkout__step__backButton>\n <a href=javascript:void(0); data-ng-click=selectAddress()>\n <i class="fa fa-arrow-left"> {{:: backToText}}</i>\n </a>\n </div>\n </div>\n</div>'),a.put("app-messages/vnAppMessage.tpl.html",'<alert ng-repeat="alert in appMessagesCtrl.alerts track by alert.id" type="{{ alert.type }}">\n {{alert.text}}\n <br>\n <button class="btn th-alert__button" data-ng-click=appMessagesCtrl.closeAlert(alert.id)>Ok</button>\n</alert>'),a.put("billing-address/billing-address-views.html",'<div class=th-address data-ng-controller="BillingAddressViewsCtrl as vm" data-ng-switch=vm.state data-ng-init=vm.init()>\n <div class="th-checkout__section-heading th-address__heading">\n Billing Address\n </div>\n\n <div class=th-address__display data-ng-switch-when=VIEWADDRESS>\n <vn-address-display data-address=vm.billingAddress data-on-click=vm.editBillingAddress() data-show-edit-button=vm.billingAddress></vn-address-display>\n </div>\n\n <div class="th-address__same-as styled-checkbox-option" data-ng-switch-when=EDITADDRESS ng-cloak>\n <input type=checkbox id=chkBillingAddress name=chkBillingAddress data-ng-model=vm.useShippingAddress data-ng-change="vm.copyShippingAddress()">\n <label for=chkBillingAddress>Billing address same as shipping</label>\n </div>\n <div class=th-address__enterAddress data-ng-switch-when=EDITADDRESS ng-cloak>\n <div data-vn-address-editor="" address=vm.billingAddress countries=vm.countries data-on-dirty=vm.setShippingAddressFalse() data-on-save=vm.saveBillingAddress() data-show-save-button=false></div>\n </div>\n\n <div vn-address-picker data-ng-switch-when=PICKADDRESS data-address-list=vm.user.billingAddresses data-new-address-title="Add Billing Address" data-select-address-title="Choose Billing Address" data-back-to-text="back to Pay With" data-show-copy-address=vm.showCopyAddress data-countries=vm.countries data-on-address-selected=vm.onAddressSelected() data-save-address=vm.onAddressAdded(newAddress) data-address-copied=vm.useShippingAddress data-copy-address-handler=vm.copyShippingAddress() data-copy-address-text="Billing address same as shipping"></div>\n\n</div>'),a.put("busy-animation/vnBusyAnimation.tpl.html",'<ng-transclude></ng-transclude>\n<div class="{{ class }}" title=1 data-ng-if=show>\n <svg version=1.1 id=loader-1 xmlns=http://www.w3.org/2000/svg xmlns:xlink=http://www.w3.org/1999/xlink x=0px y=0px width="{{ size }}" height="{{ size }}" viewbox="0 0 50 50" style="enable-background:new 0 0 50 50" xml:space=preserve>\n\n <path fill=#000 d=M25.251,6.461c-10.318,0-18.683,8.365-18.683,18.683h4.068c0-8.071,6.543-14.615,14.615-14.615V6.461z>\n <animatetransform attributetype=xml attributename=transform type=rotate from="0 25 25" to="360 25 25" dur=.6s repeatcount="indefinite">\n </path>\n </svg>\n</div>'),a.put("checkout/checkout.html",'<div class=th-checkout>\n <div class=row>\n <div class="th-checkout__loading th-checkout__loading--ship-to" vn-busy-animation vn-busy-animation-size=80px vn-busy-animation-show="{{ stepOneLoading }}" vn-busy-animation-class=th-checkout__loading-inner data-ng-show=checkout.steps[0].active></div>\n\n <div class="th-checkout__loading th-checkout__loading--pay-with" vn-busy-animation vn-busy-animation-size=80px vn-busy-animation-show="{{ stepTwoLoading }}" vn-busy-animation-class=th-checkout__loading-inner data-ng-show=checkout.steps[1].active></div>\n\n <div class="th-checkout__loading th-checkout__loading--review" vn-busy-animation vn-busy-animation-size=80px vn-busy-animation-show="{{ stepThreeLoading }}" vn-busy-animation-class=th-checkout__loading-inner data-ng-show=checkout.steps[2].active></div>\n\n <div class="col-md-4 th-checkout__step th-checkout__step__ship-to" data-ng-show="checkout.steps[0].active || isInDesktopMode" data-ng-class="{ \'-active\' : checkout.steps[0].active, \'-no-scroll\' : checkout.steps[0].hasOpenDrawer }" data-ng-switch=isEditable(1) data-vn-scroll-to-top=checkout.steps[0].hasOpenDrawer data-ng-init="hideShippingMethods = true">\n\n <div class=th-checkout__step__overlay data-ng-class="{ \'-complete\' : checkout.steps[1].active || checkout.steps[2].active}" data-ng-click=setStep(1)></div>\n\n <div class=th-checkout__step__title>\n <div class=th-checkout__step__title__stepNumber data-ng-if=checkout.steps[0].active><span>1</span></div>\n <i class="fa fa-check-circle-o fa-2x" data-ng-if="checkout.steps[1].active || checkout.steps[2].active"></i>\n <div class=th-checkout__step__title__stepName>Ship To</div>\n </div>\n\n <div ng-include=" \'ship-to/ship-to-views.html\' "></div>\n\n <div data-ng-hide=hideShippingMethods ng-include=" \'ship-method/ship-method.html\' "></div>\n\n <button class="btn btn-primary btn-block btn-lg th-checkout__step__btn-continue" data-ng-hide=hideShippingMethods data-ng-if=checkout.steps[0].active data-ng-click=nextShippingStep() data-ng-bind-html=buildShippingStepLabel()>\n </button>\n </div>\n <div class="col-md-4 th-checkout__step th-checkout__step__pay-with" data-ng-show="checkout.steps[1].active || isInDesktopMode" data-ng-class="{ \'-active\' : checkout.steps[1].active, \'-no-scroll\' : checkout.steps[1].hasOpenDrawer }" data-ng-switch=isEditable(2) data-vn-scroll-to-top=checkout.steps[1].hasOpenDrawer>\n\n <div class=th-checkout__step__overlay data-ng-class="{ \'-complete\' : checkout.steps[2].active}" data-ng-click="checkout.steps[0].active || setStep(2)"></div>\n\n <div class=th-checkout__step__title>\n <div class=th-checkout__step__title__stepNumber data-ng-if="checkout.steps[0].active || checkout.steps[1].active"><span>2</span></div>\n <i class="fa fa-check-circle-o fa-2x" data-ng-if=checkout.steps[2].active></i>\n <div class=th-checkout__step__title__stepName>Pay With</div>\n </div>\n\n <div ng-include=" \'pay-with/credit-card-views.html\' "></div>\n\n <div ng-include=" \'billing-address/billing-address-views.html\' "></div>\n\n <div>\n <button class="btn btn-primary btn-block btn-lg th-checkout__step__btn-continue" data-ng-if=checkout.steps[1].active data-ng-click=nextBillingStep()>\n Continue <i class="fa fa-angle-right"></i>\n </button>\n\n <div class=th-checkout__step__backButton data-ng-if=checkout.steps[1].active>\n <a href=javascript:void(0); data-ng-click=prevStep()>\n <i class="fa fa-arrow-left"> back to Ship To</i>\n </a>\n </div>\n\n <br style="clear: both">\n </div>\n\n </div>\n\n <div data-vn-place-order-btn></div>\n\n <div class="col-md-4 th-checkout__step th-checkout__step__review" data-ng-show="checkout.steps[2].active || isInDesktopMode" data-ng-class="{ \'-active\' : checkout.steps[2].active, \'-no-scroll\' : checkout.steps[2].hasOpenDrawer }" data-vn-scroll-to-top=checkout.steps[2].hasOpenDrawer>\n\n <div class=th-checkout__step__overlay data-ng-click="checkout.steps[0].active || checkout.steps[1].active || setStep(3)"></div>\n\n <div class=th-checkout__step__title>\n <div class=th-checkout__step__title__stepNumber><span>3</span></div>\n <div class=th-checkout__step__title__stepName>Review</div>\n </div>\n <div class=th-checkout__thanks__title>\n Total: {{ checkout.cart.totals.grandTotal | currency }}\n </div>\n <button class="btn btn-primary btn-block btn-lg th-checkout__step__btn-continue" data-ng-if=checkout.steps[2].active data-ng-click=placeOrder()>\n {{ placeOrderBtnText }}\n </button>\n <div vn-review=checkout.cart></div>\n <div ng-include=" \'review/review-details-2.html\' " ng-if=checkout.steps[2].active></div>\n\n <button class="hidden-md hidden-lg hidden-xl btn btn-primary btn-block btn-lg th-checkout__step__btn-continue" data-ng-if=checkout.steps[2].active data-ng-click=placeOrder()>\n {{ placeOrderBtnText }}\n </button>\n\n <div class=th-checkout__step__backButton>\n <a href=javascript:void(0); data-ng-if=checkout.steps[2].active data-ng-click=prevStep()>\n <i class="fa fa-arrow-left"> back to Pay With</i>\n </a>\n </div>\n\n </div>\n </div>\n</div>'),a.put("checkout/vn-address-editor.html",'<div class="th-address container-fluid">\n\n <div>\n\n <div class=th-address__location>\n <div class=btn-group>\n <button type=button data-ng-click=setCountryToUS() class="btn btn-default" data-ng-class="{ \'btn-primary\' : isLocationUS }">United States\n </button>\n <button type=button data-ng-click=setCountryToOther() class="btn btn-default" data-ng-class="{ \'btn-primary\': !isLocationUS }">International\n </button>\n </div>\n </div>\n\n <div class=th-address__form-wrapper>\n <form id=frmAddress name=frmAddress novalidate data-ng-submit=updateAddress(address)>\n <div class=row>\n <div class=col-xs-6>\n <div class=form-group>\n <input name=inputUSFirstName class="form-control input-lg immediate-help" id=first-name data-vn-placeholder="First Name" data-ng-model=address.firstName data-vn-first-name-validate required>\n\n <data-vn-popover-first-name>\n\n </div>\n </div>\n <div class=col-xs-6>\n <div class=form-group>\n <input name=inputUSLastName class="form-control input-lg -right immediate-help" id=last-name data-vn-placeholder="Last Name" data-ng-model=address.lastName data-vn-last-name-validate required>\n\n <data-vn-popover-last-name>\n\n </div>\n </div>\n </div>\n <div class=row>\n <div class=col-xs-12>\n <div class=form-group>\n <input name=inputUSAddress1Line class="form-control input-lg immediate-help" id=address-1 data-vn-placeholder="Address Line 1" data-ng-model=address.address1 data-vn-street-validate required>\n\n <data-vn-popover-address>\n\n </div>\n </div>\n </div>\n <div class=row>\n <div class=col-xs-12>\n <div class=form-group>\n <input name=inputUSAddressLine2 class="form-control input-lg" id=address-2 data-vn-placeholder="Address Line 2" data-ng-model="address.address2">\n </div>\n </div>\n </div>\n <div class=row data-ng-show=isLocationUS data-ng-hide=check.useShippingAddress>\n <div class=col-xs-5>\n <div class=form-group>\n <input name=inputUSCity class="form-control input-lg immediate-help" id=city data-vn-placeholder=City data-ng-model=address.city data-vn-city-validate ng-required="isLocationUS">\n\n <data-vn-popover-city>\n\n </div>\n </div>\n <div class=col-xs-3>\n <div class=form-group>\n <div class="th-address__state th-dropdown">\n <vn-dropdown name=inputUSState availableoptions=address.selectedCountry.states placeholder=State optionselect=onStateChanged model=address.selectedState selected-field=code>\n <vn-dropdown>\n </vn-dropdown></vn-dropdown></div>\n </div>\n </div>\n <div class=col-xs-4>\n <div class=form-group>\n <input name=inputUSZip class="form-control input-lg immediate-help" id=zip data-vn-placeholder=Zip data-ng-model=address.postalCode data-vn-zip-validate ng-required="isLocationUS">\n\n <data-vn-popover-zip>\n\n </div>\n </div>\n </div>\n <div class=row data-ng-show=!isLocationUS>\n <div class=col-xs-12>\n <div class=form-group>\n <input name=inputWorldwideCity class="form-control input-lg immediate-help" id=international-city data-vn-placeholder=City data-ng-model=address.city data-vn-city-validate required>\n\n <data-vn-popover-city></data-vn-popover-city>\n </div>\n </div>\n </div>\n <div class=row data-ng-show=!isLocationUS>\n <div class=col-xs-6>\n <div class=form-group>\n <input name=inputWorldwideRegion class="form-control input-lg immediate-help" id=region data-vn-placeholder=Region data-ng-model=address.state data-vn-region-validate ng-required="!isLocationUS">\n <data-vn-popover-region></data-vn-popover-region>\n </div>\n </div>\n <div class=col-xs-6>\n <div class=form-group>\n <input name=inputWorldwidePostalCode class="form-control input-lg immediate-help" id=postal-code maxlength=15 data-vn-placeholder="Postal code" data-ng-model=address.postalCode data-vn-postal-code-validate ng-required="!isLocationUS">\n <data-vn-popover-postal-code>\n </data-vn-popover-postal-code></div>\n </div>\n </div>\n <div class=row data-ng-show="!isLocationUS ">\n <div class=col-xs-12>\n <div class=form-group>\n <div class="th-address__country th-dropdown">\n\n <vn-dropdown name=inputWorldwideCountry data-availableoptions=countries placeholder=Country optionselect=onCountryChanged model=address.selectedCountry>\n <vn-dropdown>\n\n </vn-dropdown></vn-dropdown></div>\n </div>\n </div>\n </div>\n\n <div class=row data-ng-show=isLocationUS>\n <div class=col-xs-12>\n <div class=form-group>\n <input name=inputUSPhoneNumber class="form-control input-lg immediate-help" id=phone-number data-vn-placeholder="Phone Number" data-ng-model=address.phoneNumber data-vn-format-us-phone-number data-vn-us-phone-validate required>\n\n <data-vn-popover-us-phone></data-vn-popover-us-phone>\n </div>\n </div>\n </div>\n\n <div class=row data-ng-show=!isLocationUS>\n <div class=col-xs-12>\n <div class=form-group>\n <input name=inputIntlPhoneNumber class="form-control input-lg immediate-help" maxlength=35 data-vn-placeholder="Phone Number" data-ng-model=address.phoneNumber data-vn-required-field-validate required>\n\n <data-vn-popover-required location=top field="Phone Number"></data-vn-popover-required>\n </div>\n </div>\n </div>\n <div class=row data-ng-if="shipping==\'true\'">\n <div class=col-xs-12>\n <div class=form-group>\n <input type=checkbox name=type class=immediate-help id=residential-1 data-ng-model=address.residential data-ng-true-value=false data-ng-false-value="true">\n <label for=residential-1 role=button tabindex=0>This is a business address</label>\n </div>\n </div>\n </div>\n </form>\n </div>\n </div>\n <div>\n <div class=row data-ng-if=showCancelButtonValue>\n <div class=col-xs-6>\n <button class="btn btn-default btn-block btn-lg" data-ng-click=onCancel()>\n {{cancelText}}\n </button>\n </div>\n <div class=col-xs-6>\n <button class="btn btn-primary btn-block btn-lg" data-ng-click=saveAddress() data-ng-enabled=frmAddress.$valid data-ng-if=showSaveButtonValue>\n {{saveText}} <i class="fa fa-angle-right"></i>\n </button>\n </div>\n </div>\n <div class=row data-ng-if=!showCancelButtonValue>\n <div class=col-xs-12>\n <button class="btn btn-primary btn-block btn-lg" data-ng-click=saveAddress() data-ng-enabled=frmAddress.$valid data-ng-if=showSaveButtonValue>\n {{saveText}} <i class="fa fa-angle-right"></i>\n </button>\n </div>\n </div>\n </div>\n\n</div>'), +a.put("dropdown/vn-dropdown.tpl.html",'<div class="vn-dropdown th-dropdown" dropdown>\n <button id=dropdownButton name="{{name + \'Label\'}}" class="vn-dropdown__trigger form-control btn btn-default btn-lg dropdown-toggle form-control" data-vn-placeholder={{placeholder}} data-ng-model=selectedOption.selectedDisplayValue dropdown-toggle data-toggle=dropdown value={{selectedOption.selectedDisplayValue}}>{{selectedOption.selectedDisplayValue}}<span class=caret></span>\n </button>\n <ul class="vn-dropdown__menu dropdown-menu" role=menu>\n <li role=presentation data-ng-repeat="option in options">\n <a role=menuitem data-ng-click=changeOption($index) href>{{option.displayValue}}</a>\n </li>\n </ul>\n <select name={{name}} class=vn-dropdown__select ng-model=selectedOption ng-options="option.selectedDisplayValue for option in options">\n </select>\n</div>'),a.put("easy-zoom/vnEasyZoom.tpl.html","<div class=easyzoom data-ng-class=\"{ 'easyzoom--adjacent': ezAdjacent, 'easyzoom--overlay': ezOverlay }\">\n <a data-ng-href={{ezZoomSrc}}>\n <img class=img-responsive data-ng-src={{ngSrc}} alt={{alt}}>\n <div class=th-product-view__zoom></div>\n </a>\n</div>"),a.put("login/forgot-password.html",'<div class=th-checkout__login>\n <div class=th-checkout__step__title>\n <div class=th-checkout__step__title__stepName>Forgot Your Password?</div>\n </div>\n <div class=container-fluid>\n <div class=row>\n <div class="col-xs-12 col-xs-offset-0 col-sm-8 col-sm-offset-2 col-md-6 col-md-offset-3 col-lg-4 col-lg-offset-4">\n <div class=th-checkout__login__form>\n <form id=frmForgotPassword name=frmForgotPassword novalidate data-ng-submit=forgotPassword()>\n <div class=row>\n <div class=col-xs-12>\n <div class=form-group>\n <input id=inputLoginEmail name=inputLoginEmail class="form-control input-lg immediate-help" data-vn-placeholder="E-mail address" data-ng-model=email data-vn-email-validate required>\n\n <div class="input-help bottom" ng-if=frmLogin.inputLoginEmail.$touched>\n <div class=arrow></div>\n <h4>E-mail must:</h4>\n <ul>\n <li ng-class=emailEmpty>Not be <strong>empty</strong></li>\n <li ng-class=validEmail>Be a <strong>valid</strong> address</li>\n </ul>\n </div>\n </div>\n </div>\n </div>\n </form>\n <button class="btn btn-primary btn-block btn-lg th-checkout__login__continue" data-ng-disabled=disabledButton data-ng-click=forgotPassword()>\n Reset Password <i class="fa fa-angle-right"></i>\n </button>\n </div>\n </div>\n </div>\n </div>\n</div>'),a.put("login/login.html",'<div data-vn-app-message=""></div>\n<div data-vn-login data-allow-anonymous=true data-redirect-to=checkout data-button-text=Continue></div>'),a.put("login/my-account-login.html",'<div data-vn-login data-allow-anonymous=false data-redirect-to=my-account data-button-text="Sign In"></div>'),a.put("login/vn-login-link.html","<div>\n <span data-ng-if=!loggedIn>\n <a data-ui-sref=my-account-login data-translate=header.signIn>Sign In</a>\n </span>\n <span data-ng-if=loggedIn>\n <a data-ui-sref=logout data-translate=header.signOut>Sign Out</a>\n </span>\n</div>"),a.put("login/vn-login.html",'<div class=th-checkout__login>\n <div class=th-checkout__step__title>\n <div class=th-checkout__step__title__stepName>Enter your e-mail to get started</div>\n </div>\n <div class=container-fluid>\n <div class=row ng-if=loginError>\n <div class="col-xs-12 col-xs-offset-0 col-sm-8 col-sm-offset-2 col-md-6 col-md-offset-3 col-lg-4 col-lg-offset-4">\n <div class=th-checkout__login__error data-ng-click=clearError()>\n Login Failed\n </div>\n </div>\n </div>\n <div class=row>\n <div class="col-xs-12 col-xs-offset-0 col-sm-8 col-sm-offset-2 col-md-6 col-md-offset-3 col-lg-4 col-lg-offset-4">\n <div class=th-checkout__login__form>\n <form id=frmLogin name=frmLogin novalidate data-ng-submit=updateUser()>\n <div class=row>\n <div class=col-xs-12>\n <div class=form-group>\n <input id=inputLoginEmail name=inputLoginEmail class="form-control input-lg immediate-help" data-vn-placeholder="E-mail address" data-ng-model=user.email data-vn-email-validate required>\n\n <div class="input-help bottom" ng-if=frmLogin.inputLoginEmail.$touched>\n <div class=arrow></div>\n <h4>E-mail must:</h4>\n <ul>\n <li ng-class=emailEmpty>Not be <strong>empty</strong></li>\n <li ng-class=validEmail>Be a <strong>valid</strong> address</li>\n </ul>\n </div>\n </div>\n </div>\n </div>\n\n <div class=row data-ng-if="!user.anonymous || !allowAnonymous">\n <div class=col-xs-12>\n <div class=form-group>\n <input type=password id=inputLoginPassword name=inputLoginPassword class="form-control input-lg immediate-help" data-vn-placeholder=Password data-ng-model=user.password data-ng-enter=updateUser() data-vn-password-validate required>\n </div>\n </div>\n </div>\n </form>\n\n <div class=th-checkout__login__user-type ng-show=allowAnonymous>\n <div class=btn-group>\n <button type=button data-ng-click="user.anonymous = true" class="btn btn-default" data-ng-class="{ \'btn-primary\' : user.anonymous }">I\'m a new customer\n </button>\n <button type=button data-ng-click="user.anonymous = false" class="btn btn-default" data-ng-class="{ \'btn-primary\': !user.anonymous }">I\'ve ordered before\n </button>\n </div>\n </div>\n\n <button class="btn btn-primary btn-block btn-lg th-checkout__login__continue" data-ng-disabled=disabledButton data-ng-click=updateUser()>\n {{buttonText}} <i class="fa fa-angle-right"></i>\n </button>\n </div>\n <a href ui-sref=forgot-password>Forgot your password?</a>\n </div>\n </div>\n </div>\n</div>'),a.put("modal/vnAddressDeleteConf.tpl.html",'<div class="th-error-wrap clearfix th-modal">\n <a href class=th-modal__close ng-click=$dismiss()>\n <i class="fa fa-times"></i>\n </a>\n <div class=th-error-details>\n <div class="th-error-details__header modal-header">\n <div class=modal-body>\n <div class=th-modal__message>\n {{ :: message }}\n </div>\n\n <div class="th-modal__body row">\n <div class=col-xs-12>\n <div class=th-message-details__section2 vn-address-display="" address=::addressToDelete></div>\n </div>\n </div>\n </div>\n <div class="modal-footer container-fluid">\n <div class=row>\n <div class="col-xs-12 col-sm-6">\n <button class="btn btn-default btn-lg th-modal__button th-modal__button--secondary" ng-click=$dismiss()>Cancel</button>\n </div>\n <div class="col-xs-12 col-sm-6">\n <button class="btn btn-primary btn-lg th-modal__button th-modal__button--primary" ng-click=$close()>{{::buttonText}}</button>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>'),a.put("modal/vnErrorModal.tpl.html",'<div class=th-error-details>\n <div class="th-error-details__header modal-header">\n <h1>Sorry, something went wrong with the page...</h1>\n\n <div class=modal-body>\n <p class=th-error-details__section1>... but it might just be a small glitch. Try refreshing the page\n to see if that fixes it.</p>\n\n <p class=th-error-details__section2>\n If the problem persists, please try again later.\n </p>\n </div>\n <div class=modal-footer>\n <button class="btn btn-warning" ng-click=$close()>Close</button>\n </div>\n </div>\n</div>'),a.put("modal/vnMessageModal.tpl.html",'<div class="th-error-wrap clearfix">\n <div class=th-error-details>\n <div class="th-error-details__header modal-header">\n <h1>This is a generic app message template</h1>\n <div class=modal-body>\n <p class=th-message-details__section1>It should be over ridden in the calling application</p>\n\n </div>\n <div class=modal-footer>\n <button class="btn btn-warning" ng-click=$dismiss()>Ok</button>\n <button class="btn btn-warning" ng-click=$close()>Cancel</button>\n </div>\n </div>\n </div>\n</div>'),a.put("modal/vnPaymentProfileDeleteConf.tpl.html",'<div class="th-error-wrap clearfix th-modal">\n <a href class=th-modal__close ng-click=$dismiss()>\n <i class="fa fa-times"></i>\n </a>\n <div class=th-error-details>\n <div class="th-error-details__header modal-header">\n <div class=modal-body>\n <div class=th-modal__message>\n {{ :: message }}\n </div>\n\n <div class="th-modal__body row">\n <div class=col-xs-12>\n <span class=th-credit-card data-ng-class=::paymentProfileToDelete.card.ccCssClass></span>\n <span>{{ ::paymentProfileToDelete.card.cardNumber.slice(-4) }}</span>\n <span>{{ ::paymentProfileToDelete.card.expMonth }}/{{ ::paymentProfileToDelete.card.expYear }}</span>\n </div>\n </div>\n\n </div>\n <div class="modal-footer container-fluid">\n <div class=row>\n <div class="col-xs-12 col-sm-6">\n <button class="btn btn-default btn-lg th-modal__button th-modal__button--secondary" ng-click=$dismiss()>Cancel</button>\n </div>\n <div class="col-xs-12 col-sm-6">\n <button class="btn btn-primary btn-lg th-modal__button th-modal__button--primary" ng-click=$close()>{{::buttonText}}</button>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>'),a.put("my-account/billing-addresses.html",'<div class="th-my-account container" data-ng-cloak="">\n\n <div class="th-my-account__breadcrumbs row">\n <div class=col-xs-12>\n <div ncy-breadcrumb></div>\n </div>\n </div>\n \n <div class=th-my-account__title>\n {{vm.pageTitle}}\n </div>\n\n <div class=row>\n <div class="col-xs-12 col-sm-7 col-md-7">\n <div class=th-my-account__overlay data-ng-if=vm.loading vn-busy-animation vn-busy-animation-show="{{ vm.loading }}" vn-busy-animation-size=80px vn-busy-animation-class=th-my-account__overlay--loader></div>\n\n <div data-ng-show="!vm.addressToEdit && !vm.addressToAdd" class="th-address__choose animate-show">\n <div class=th-address__choose__options>\n <a href class=th-address__choose__options__new-option data-ng-click=vm.addAddress() ng-repeat-end>\n <i class="fa fa-plus"></i>  Add a Billing Address</a>\n \n <div data-ng-repeat="billingAddress in vm.billingAddresses" class=th-address__choose__options__option>\n <div class=styled-optionbox-option>\n <div vn-address-display-actions="" data-address=billingAddress data-on-make-preferred-clicked=vm.makeAddressPreferred($index) data-on-delete-clicked=vm.deleteAddress(address) data-on-edit-clicked="vm.editAddress(address, $index)"></div>\n </div>\n </div>\n </div>\n </div>\n <div data-ng-show=vm.addressToEdit class="th-address__enterAddress animate-show">\n <div data-vn-address-editor="" data-ng-if=vm.addressToEdit data-countries=vm.countries data-address=vm.addressToEdit data-title="Edit Shipping Address" data-on-save=vm.saveEditedAddress() data-on-cancel=vm.cancelEditAddress() data-show-save-button=true data-save-text=save data-show-cancel-button=true>\n </div>\n </div>\n <div data-ng-show=vm.addressToAdd class="th-address__enterAddress animate-show">\n <div data-vn-address-editor="" data-ng-if=vm.addressToAdd data-countries=vm.countries data-address=vm.addressToAdd data-title="Edit Shipping Address" data-on-save=vm.saveNewAddress() data-on-cancel=vm.cancelAddAddress() data-show-save-button=true data-save-text=add data-show-cancel-button=true>\n </div>\n </div>\n\n </div>\n <div class="col-xs-12 col-sm-5 col-md-4 col-md-offset-1 th-my-account__group">\n <div class=th-my-account__title>More Addresses & Payments</div>\n <ul class=th-my-account__group__links>\n <li><a href="" data-ui-sref=my-account.shippingaddresses>Shipping Addresses</a></li>\n <li><a href="" data-ui-sref=my-account.paymentprofiles>Payment Profiles</a></li>\n </ul>\n </div>\n </div>\n <div class=th-checkout__step__backButton>\n <a ui-sref=my-account>\n <i class="fa fa-arrow-left">  Back to My Account</i>\n </a>\n </div>\n</div>'),a.put("my-account/change-email.html",'<div class="th-my-account container" data-ng-cloak="">\n <div class=th-my-account__title>\n Change Email\n </div>\n\n <div class=row>\n <div class="col-xs-12 col-sm-7 col-md-7">\n <div class=th-my-account__overlay data-ng-if=vm.loading vn-busy-animation vn-busy-animation-show="{{ vm.loading }}" vn-busy-animation-size=80px vn-busy-animation-class=th-my-account__overlay--loader></div>\n\n <form id=frmChangeEmail name=frmChangeEmail novalidate data-ng-submit="">\n <div class=row>\n <div class=col-xs-12>\n <div>\n <input id=changeEmail name=changeEmail class="form-control input-lg immediate-help" data-vn-placeholder="Updated E-mail" data-ng-model=user.changeEmail data-ng-class="{\'ng-invalid\':frmChangeEmail.confirmChangeEmail.$error.match}" data-ng-change=checkValidity() data-vn-email-validate required>\n\n <div class="input-help bottom" ng-if=frmChangeEmail.changeEmail.$touched>\n <div class=arrow></div>\n <h4>E-mail must:</h4>\n <ul>\n <li ng-class=emailEmpty>Not be <strong>empty</strong></li>\n <li ng-class=validEmail>Be a <strong>valid</strong> address</li>\n </ul>\n </div>\n </div>\n </div>\n </div>\n <div class=row>\n <div class=col-xs-12>\n <input id=confirmChangeEmail name=confirmChangeEmail class="form-control input-lg immediate-help" data-vn-placeholder="Confirm Updated E-mail" data-ng-model=user.confirmChangeEmail data-match=frmChangeEmail.changeEmail data-ng-change=checkValidity() data-vn-email-validate required>\n\n <div class="input-help bottom" ng-if=frmChangeEmail.confirmChangeEmail.$touched>\n <div class=arrow></div>\n <h4>E-mail must:</h4>\n <ul>\n <li ng-class=emailEmpty>Not be <strong>empty</strong></li>\n <li ng-class=validEmail>Be a <strong>valid</strong> address</li>\n </ul>\n </div>\n </div>\n </div>\n <div class=row>\n <div class=col-xs-12>\n <input type=password id=inputPassword name=inputPassword class="form-control input-lg immediate-help" data-vn-placeholder=Password data-ng-model=user.password data-ng-change=checkValidity() data-vn-password-validate required>\n </div>\n </div>\n <div data-ng-show=emailDoesNotMatch class=text-danger>Emails do not match!</div>\n <button class="btn btn-primary btn-block btn-lg th-checkout__login__continue" data-ng-disabled=changeButtonDisabled data-ng-click=changeEmail()>\n Change Password <i class="fa fa-angle-right"></i>\n </button>\n </form>\n </div>\n <div class="col-xs-12 col-sm-5 col-md-4 col-md-offset-1 th-my-account__group">\n <div class=th-my-account__title>More Addresses & Payments</div>\n <ul class=th-my-account__group__links>\n <li><a href="" data-ui-sref=my-account.change-password>Change Password</a></li>\n </ul>\n </div>\n </div>\n <div class=th-checkout__step__backButton>\n <a ui-sref=my-account>\n <i class="fa fa-arrow-left">  Back to My Account</i>\n </a>\n </div>\n\n</div>'),a.put("my-account/change-password.html",'<div class="th-my-account container" data-ng-cloak="">\n <div class=th-my-account__title>\n Change Password\n </div>\n\n <div class=row>\n <div class="col-xs-12 col-sm-7 col-md-7">\n <div class=th-my-account__overlay data-ng-if=vm.loading vn-busy-animation vn-busy-animation-show="{{ vm.loading }}" vn-busy-animation-size=80px vn-busy-animation-class=th-my-account__overlay--loader></div>\n\n <form id=frmChangePassword name=frmChangePassword novalidate data-ng-submit="">\n <div class=row>\n <div class=col-xs-12>\n <input type=password id=inputPassword name=inputPassword class="form-control input-lg immediate-help" data-vn-placeholder="Current Password" data-ng-model=user.password data-ng-change=checkValidity() data-vn-password-validate required>\n </div>\n </div>\n <div class=row>\n <div class=col-xs-12>\n <input type=password id=inputNewPassword name=inputNewPassword class="form-control input-lg immediate-help" data-vn-placeholder="New Password" data-ng-model=user.newPassword data-ng-change=checkValidity() data-vn-password-validate required>\n </div>\n </div>\n <div class=row>\n <div class=col-xs-12>\n <input type=password id=inputConfirmPassword name=inputConfirmPassword class="form-control input-lg immediate-help" data-vn-placeholder="Confirm Password" data-ng-model=user.confirmPassword data-ng-change=checkValidity() data-vn-password-validate required>\n </div>\n </div>\n <div data-ng-show=passwordDoesNotMatch class=text-danger>Passwords do not match!</div>\n <button class="btn btn-primary btn-block btn-lg th-checkout__login__continue" data-ng-disabled=changeButtonDisabled data-ng-click=changePassword()>\n Change Password <i class="fa fa-angle-right"></i>\n </button>\n </form>\n </div>\n <div class="col-xs-12 col-sm-5 col-md-4 col-md-offset-1 th-my-account__group">\n <div class=th-my-account__title>More Addresses & Payments</div>\n <ul class=th-my-account__group__links>\n <li><a href="" data-ui-sref=my-account.change-email>Change Email Address</a></li>\n </ul>\n </div>\n </div>\n <div class=th-checkout__step__backButton>\n <a ui-sref=my-account>\n <i class="fa fa-arrow-left">  Back to My Account</i>\n </a>\n </div>\n\n</div>'),a.put("my-account/my-account.html",'<div data-vn-app-message=""></div>\n<div ui-view>\n <div class="container th-my-account">\n <div class=row>\n <div class="col-xs-12 th-my-account__group th-my-account__group--header">\n <div class="th-my-account__title th-my-account__group--header__title">My Account</div>\n <div class=th-my-account__group--header__welcome>\n Hi, {{user.firstName}} (<a href ui-sref=logout>log out</a>)\n </div>\n </div>\n </div>\n\n <div class=row>\n <div class="col-xs-12 th-my-account__group th-my-account__group--orders">\n <div class=th-my-account__title>Orders</div>\n\n <div class=th-my-account__overlay data-ng-if=loading vn-busy-animation vn-busy-animation-show="{{ loading }}" vn-busy-animation-size=80px vn-busy-animation-class=th-my-account__overlay--loader></div>\n <div data-ng-if="orders.length == 0">\n <p class=text-muted>\n You haven\'t placed an order with us yet.\n </p>\n </div>\n\n <div data-ng-if="orders.length > 0">\n <div data-vn-order-table="" orders=orders class=hidden-xs></div>\n <div data-vn-order-list-view="" orders=orders class="hidden-sm hidden-md hidden-lg hidden-xl"></div>\n <div class=th-my-account__group__links>\n <a href data-ui-sref=my-account.orders.list>View all Orders</a>\n </div>\n </div>\n </div>\n </div>\n\n <div class=row>\n <div class="col-xs-12 col-sm-6 th-my-account__group th-my-account__group--addresses">\n <div class=th-my-account__title>Addresses & Payments</div>\n <ul class=th-my-account__group__links>\n <li><a href="" data-ui-sref=my-account.shippingaddresses>Shipping Addresses</a></li>\n <li><a href="" data-ui-sref=my-account.paymentprofiles>Payment Profiles</a></li>\n <li><a href="" data-ui-sref=my-account.billingaddresses>Billing Addresses</a></li>\n </ul>\n </div>\n <div class="col-xs-12 col-sm-6 th-my-account__group th-my-account__group--email">\n <div class=th-my-account__title>Email & Password</div>\n <ul class=th-my-account__group__links>\n <li><a href="" data-ui-sref=my-account.change-email>Change Email Address</a></li>\n <li><a href="" data-ui-sref=my-account.change-password>Change Password</a></li>\n </ul>\n </div>\n </div>\n </div>\n</div>'),a.put("my-account/orders.detail.html",'<div class="th-order-detail container">\n <div class=row>\n <div class=col-xs-12>\n \n <div class=th-my-account__overlay data-ng-if=vm.loading vn-busy-animation vn-busy-animation-show="{{ vm.loading }}" vn-busy-animation-size=80px vn-busy-animation-class=th-my-account__overlay--loader></div>\n\n <div class="th-my-account__breadcrumbs row">\n <div class=col-xs-12>\n <div ncy-breadcrumb></div>\n </div>\n </div>\n\n <div class="th-order-detail__header row">\n <div class=col-xs-12>\n <div class="th-order-detail__title th-order-detail__header__title">Order Details</div>\n </div>\n </div>\n\n <div class=row>\n <div class="col-xs-12 col-sm-6">\n <div class=th-order-detail__header__order-date>Placed on <span>{{::vm.order.orderDate | date}}</span></div>\n <div class=th-order-detail__header__order-details>\n <span class=th-order-detail__header__order-details__order-number>Order <span>#{{::vm.order.orderId}}</span></span> | <span class=th-order-detail__header__order-details__order-status>{{::vm.order.orderStatus}}</span>\n </div>\n <div class="panel panel-default th-order-detail__items">\n <div class=panel-body>\n <div class="row th-order-detail__items__product" data-ng-repeat="product in vm.order.orderItems">\n <div class="col-xs-3 col-sm-3 col-md-3 th-order-detail__items__product__img">\n <a href ui-sref="product({slug: product.slug})"><img data-ng-src={{product.imageUrl}} width=100%></a>\n </div>\n <div class="col-xs-6 col-sm-6 col-md-6">\n <div class=th-order-detail__items__product__name>\n <a href ui-sref="product({slug: product.slug})">{{::product.productName}}</a>\n </div>\n <div class=th-order-detail__items__product__qty>Qty: {{::product.quantity}}</div>\n <div class=th-order-detail__items__product__options>{{::product.options}}</div>\n </div>\n <div class="col-xs-3 col-sm-3 col-md-3">\n <div class="th-order-detail__items__product__price align-right currency">{{::product.price.subtotal | currency}}</div>\n </div>\n </div>\n </div>\n <div class=panel-footer>\n <div class="row th-order-detail__items__discount" data-ng-repeat="discount in vm.order.discounts">\n <div class=col-xs-8>{{::discount.couponCode}}</div>\n <div class="align-right col-xs-4 currency">-{{::discount.value | currency}}</div>\n </div>\n <div class="row th-order-detail__items__shipping">\n <div class=col-xs-8>Shipping</div>\n <div class="align-right col-xs-4">{{::vm.order.totals.shipping | currency}}</div>\n </div>\n <div class="row th-order-detail__items__tax">\n <div class=col-xs-8>Tax</div>\n <div class="align-right col-xs-4">{{::vm.order.totals.taxTotal | currency}}</div>\n </div>\n <div class="row th-order-detail__items__total">\n <div class=col-xs-8>Total</div>\n <div class="align-right col-xs-4">{{::vm.order.totals.grandTotal | currency}}</div>\n </div>\n </div>\n </div>\n </div>\n\n <div class="col-xs-12 col-sm-6">\n <div class=th-order-detail__paid-with>\n <div class=th-order-detail__title>Paid With</div>\n <div class="panel panel-default th-order-detail__paid-with">\n <div class=panel-body>\n'+" <div class=th-credit-card data-ng-class=\"{'th-credit-card--visa': vm.order.paymentProfile.paymentMethod == 'Visa', 'th-credit-card--amex': vm.order.paymentProfile.paymentMethod == 'American Express', 'th-credit-card--discover': vm.order.paymentProfile.paymentMethod == 'Discover', 'th-credit-card--mastercard': vm.order.paymentProfile.paymentMethod == 'MasterCard'}\"></div>\n <span class=th-order-detail__paid-with__card-number>{{::vm.order.paymentProfile.PCIaaS_MaskedCardRef}}</span>\n </div>\n </div>\n </div>\n <div class=th-order-detail__shipping>\n <div class=th-order-detail__title>Shipping</div>\n <div class=\"panel panel-default\">\n <div class=panel-body>\n <div class=th-order-detail__shipping__name>{{::vm.order.shippingAddress.firstName}} {{::vm.order.shippingAddress.lastName}}</div>\n <div class=th-order-detail__shipping__address-1>{{::vm.order.shippingAddress.address1}}</div>\n <div class=th-order-detail__shipping__address-2>{{::vm.order.shippingAddress.address2}}</div>\n <div>\n <span class=th-order-detail__shipping__city>{{::vm.order.shippingAddress.city}}</span>,\n <span class=th-order-detail__shipping__state>{{::vm.order.shippingAddress.state}}</span>\n <span class=th-order-detail__shipping__zip>{{::vm.order.shippingAddress.postalCode}}</span>\n </div>\n <div data-ng-if=\"vm.order.trackingDetails.length > 0\">\n <hr>\n <div class=th-order-detail__shipping__tracking-detail data-ng-repeat=\"tracking in vm.order.trackingDetails\">\n <div>{{::tracking.shippingMethodName}}</div>\n <div>Tracking: <a data-ng-href={{::tracking.trackingUri}} target=_blank>{{::tracking.trackingNumber}}</a></div>\n </div>\n </div>\n \n </div>\n </div>\n </div>\n <div class=th-order-detail__notes data-ng-if=\"vm.order.misc.comment != ''\">\n <div class=th-order-detail__title>Notes</div>\n <div class=\"panel panel-default\">\n <div class=panel-body>\n <div>{{::vm.order.misc.comment || \"No Notes\"}}</div>\n </div>\n </div>\n </div>\n </div>\n\n </div>\n </div>\n </div>\n</div>"),a.put("my-account/orders.html","<div ui-view></div>"),a.put("my-account/orders.list.html",'<div class="th-orders-list container" data-ng-cloak="" data-ng-init=vm.init()>\n <div class=row>\n <div class=col-xs-12>\n <div class="th-my-account__breadcrumbs row">\n <div class=col-xs-12>\n <div ncy-breadcrumb></div>\n </div>\n </div>\n \n <div class=th-my-account__title>\n Orders\n </div>\n\n <div class=th-my-account__overlay data-ng-if=vm.loading vn-busy-animation vn-busy-animation-show="{{ vm.loading }}" vn-busy-animation-size=80px vn-busy-animation-class=th-my-account__overlay--loader></div>\n\n <div data-ng-if="vm.orders.length == 0">\n <p class=text-muted>\n You haven\'t placed an order with us yet.\n </p>\n </div>\n\n <div data-ng-if="vm.orders.length > 0">\n <div class=th-orders-list__page-size>\n <select ng-options="item.text for item in vm.pageSizes" ng-model=vm.selectedPageSize ng-change=vm.getOrders()></select>\n </div>\n\n <div data-vn-order-list-view="" orders=vm.orders class="hidden-sm hidden-md hidden-lg hidden-xl"></div>\n <div data-vn-order-table="" orders=vm.orders class=hidden-xs></div>\n\n <div class="well well-sm th-orders-list__pagination">\n <span>Page: {{vm.currentPage}} / {{vm.cursor.totalPages}}</span>\n <div class=pull-right>\n <pagination total-items=vm.cursor.total ng-model=vm.currentPage class=pagination-sm previous-text=‹ next-text=› items-per-page=vm.selectedPageSize.value ng-change=vm.getOrders() max-size=vm.maxSize></pagination>\n </div>\n </div>\n </div>\n\n\n <div class=th-checkout__step__backButton>\n <a ui-sref=my-account>\n <i class="fa fa-arrow-left">  Back to My Account</i>\n </a>\n </div>\n </div>\n </div>\n</div>'),a.put("my-account/payment-profiles.html",'<div class="th-my-account th-payment-profiles container" data-ng-cloak="">\n\n <div class="th-my-account__breadcrumbs row">\n <div class=col-xs-12>\n <div ncy-breadcrumb></div>\n </div>\n </div>\n\n <div class=th-my-account__title>\n {{vm.pageTitle}}\n </div>\n\n <div class=row>\n <div class="col-xs-12 col-sm-7 col-md-7">\n <div class=th-my-account__overlay data-ng-if=vm.loading vn-busy-animation vn-busy-animation-show="{{ vm.loading }}" vn-busy-animation-size=80px vn-busy-animation-class=th-my-account__overlay--loader></div>\n <div data-ng-show="!vm.paymentProfileToEdit && !vm.paymentProfileToAdd" class=animate-show>\n <div class=th-list>\n <div class=th-list__header ng-repeat-end>\n <a class=th-list__header__item href data-ng-click=vm.addPaymentProfile()><i class="fa fa-plus"></i>  Add a\n Credit Card</a>\n </div>\n <div data-ng-repeat="paymentProfile in vm.paymentProfiles" class=th-list__item>\n <div class=styled-optionbox-option>\n <div vn-credit-card-display-actions data-payment-profile=paymentProfile data-on-make-preferred-clicked=vm.makePaymentProfilePreferred($index) data-on-delete-clicked=vm.deletePaymentProfile(paymentProfile) data-on-edit-clicked=vm.editPaymentProfile(paymentProfile)>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div data-ng-show=vm.paymentProfileToAdd class="th-address__enterAddress animate-show">\n <div data-vn-credit-card-editor="" data-ng-if=vm.paymentProfileToAdd data-card=vm.paymentProfileToAdd.card data-title="Edit Shipping Address" data-on-save=vm.saveNewPaymentProfile() data-on-cancel=vm.cancelAddPaymentProfile() data-show-save-button=true data-save-text=add data-show-cancel-button=true>\n </div>\n </div>\n\n </div>\n <div class="col-xs-12 col-sm-5 col-md-4 col-md-offset-1 th-my-account__group">\n <div class=th-my-account__title>More Addresses & Payments</div>\n <ul class=th-my-account__group__links>\n <li><a href="" data-ui-sref=my-account.shippingaddresses>Shipping Addresses</a></li>\n <li><a href="" data-ui-sref=my-account.billingaddresses>Billing Addresses</a></li>\n </ul>\n </div>\n </div>\n <div class=th-checkout__step__backButton>\n <a ui-sref=my-account>\n <i class="fa fa-arrow-left">  Back to My Account</i>\n </a>\n </div>\n\n</div>'),a.put("my-account/shipping-addresses.html",'<div class="th-my-account container" data-ng-cloak="">\n \n <div class="th-my-account__breadcrumbs row">\n <div class=col-xs-12>\n <div ncy-breadcrumb></div>\n </div>\n </div>\n\n <div class=th-my-account__title>\n {{vm.pageTitle}}\n </div>\n\n <div class=row>\n <div class="col-xs-12 col-sm-7 col-md-7">\n <div class=th-my-account__overlay data-ng-if=vm.loading vn-busy-animation vn-busy-animation-show="{{ vm.loading }}" vn-busy-animation-size=80px vn-busy-animation-class=th-my-account__overlay--loader></div>\n <div data-ng-show="!vm.addressToEdit && !vm.addressToAdd" class="th-address__choose animate-show">\n <div class=th-address__choose__options>\n <a href data-ng-click=vm.addAddress() class=th-address__choose__options__new-option ng-repeat-end>\n <i class="fa fa-plus"></i>  Add a Shipping Address\n </a>\n <div data-ng-repeat="shippingAddress in vm.shippingAddresses" class=th-address__choose__options__option>\n <div class=styled-optionbox-option>\n <div vn-address-display-actions="" data-address=shippingAddress data-on-make-preferred-clicked=vm.makeAddressPreferred($index) data-on-delete-clicked=vm.deleteAddress(address) data-on-edit-clicked="vm.editAddress(address, $index)" data-shipping=true></div>\n </div>\n </div>\n </div>\n </div>\n <div data-ng-show=vm.addressToEdit class="th-address__enterAddress animate-show">\n <div data-vn-address-editor="" data-ng-if=vm.addressToEdit data-countries=vm.countries data-address=vm.addressToEdit data-title="Edit Shipping Address" data-on-save=vm.saveEditedAddress() data-on-cancel=vm.cancelEditAddress() data-show-save-button=true data-save-text=save data-show-cancel-button=true data-shipping=true>\n </div>\n </div>\n <div data-ng-show=vm.addressToAdd class="th-address__enterAddress animate-show">\n <div data-vn-address-editor="" data-ng-if=vm.addressToAdd data-countries=vm.countries data-address=vm.addressToAdd data-title="Edit Shipping Address" data-on-save=vm.saveNewAddress() data-on-cancel=vm.cancelAddAddress() data-show-save-button=true data-save-text=add data-show-cancel-button=true data-shipping=true>\n </div>\n </div>\n\n </div>\n <div class="col-xs-12 col-sm-5 col-md-4 col-md-offset-1 th-my-account__group">\n <div class=th-my-account__title>More Addresses & Payments</div>\n <ul class=th-my-account__group__links>\n <li><a href="" data-ui-sref=my-account.billingaddresses>Billing Addresses</a></li>\n <li><a href="" data-ui-sref=my-account.paymentprofiles>Payment Profiles</a></li>\n </ul>\n </div>\n </div>\n <div class=th-checkout__step__backButton>\n <a ui-sref=my-account>\n <i class="fa fa-arrow-left">  Back to My Account</i>\n </a>\n </div>\n\n</div>'), +a.put("nav-menu-mobile/vn-nav-mobile.tpl.html",'<ul class="nav navbar-nav th-mobile-list">\n <li class="th-mobile-list__item th-mobile-list__item--header">Categories</li>\n <li class="dropdown th-mobile-list__item" ng-repeat="category in categories">\n <a href=# class="dropdown-toggle navbar-link th-dropdown-toggle th-mobile-list__link" ng-if=category.subCategories.length data-toggle=dropdown>\n {{category.name}} <span class="pull-right caret"></span>\n </a>\n <a data-ng-href={{category.url}} class="navbar-link th-dropdown-toggle th-mobile-list__link" ng-if=!category.subCategories.length>\n {{category.name}}\n </a>\n <ul class="dropdown-menu th-mobile-list th-mobile-list--sub" data-ng-if=category.subCategories.length>\n <li>\n <a data-ng-href={{category.url}} class="th-mobile-list__link th-mobile-list__link--sub">\n All {{category.name}}\n </a>\n </li>\n <li data-ng-repeat="subCategory in category.subCategories">\n <a class="th-mobile-list__link th-mobile-list__link--sub" data-ng-href={{subCategory.url}}>{{subCategory.name}}</a>\n </li>\n </ul>\n </li>\n</ul>'),a.put("nav-menu/vn-nav.tpl.html",'<div class="collapse navbar-collapse" id=th-main-menu data-ng-class="!navCollapsed && \'in\'" data-ng-click="navCollapsed=true">\n <ul class="nav navbar-nav">\n <li class="dropdown nav-top-level-menu-items" data-ng-repeat="category in smartNavCategories">\n <a class=navbar-link data-ng-href="{{ category.url }}">\n {{category.name}}\n <span data-ng-if=category.subCategories.length class="caret th-dropdown-toggle"></span>\n </a>\n <ul vn-show-on-dropdown-hover class=dropdown-menu data-ng-if=category.subCategories.length>\n <li data-ng-repeat="subCategory in category.subCategories">\n <a data-ng-href="{{ subCategory.url }}">{{subCategory.name}}</a>\n </li>\n </ul>\n </li>\n <li class=dropdown data-ng-show=displaySmartNavMoreMenuItem>\n <a href=# class=navbar-link data-translate=header.smartNavMoreLinkText>\n More\n <span class="caret th-dropdown-toggle"></span>\n </a>\n <ul vn-show-on-dropdown-hover class=dropdown-menu>\n <li data-ng-repeat="category in smartNavMoreCategories">\n <a class=navbar-link data-ng-href="{{ category.url }}">{{category.name}}</a>\n </li>\n </ul>\n </li>\n </ul>\n </div>'),a.put("orders/vn-order-list-view.tpl.html",'<div class="th-order-list-view container-fluid">\n <a href ui-sref="my-account.orders.detail({id: order.orderId})" class="th-order-list-view__item list-group-item row" data-ng-repeat="order in orders">\n <div class="col-xs-7 th-order-list-view__item-left">\n <div class=th-order-list-view__item__id data-ng-bind=::order.orderId></div>\n <div class=th-order-list-view__item__num-items>\n {{::order.orderItems.length}} Items\n </div>\n <div class=th-order-list-view__item__status data-ng-bind=::order.orderStatus></div>\n </div>\n <div class="col-xs-5 th-order-list-view__item-right">\n <div class=th-order-list-view__item__date data-ng-bind="::order.orderDate | date"></div>\n <div class=th-order-list-view__item__total data-ng-bind="::order.orderTotal | currency"></div>\n </div>\n </a>\n</div>'),a.put("orders/vn-order-table.tpl.html",'<table class="th-orders-table table table-striped table-hover">\n <thead>\n <tr>\n <th>Order #</th>\n <th>Order Date</th>\n <th>Items</th>\n <th>Order Total</th>\n <th>Status</th>\n </tr>\n </thead>\n <tbody>\n <tr data-ng-repeat="order in orders">\n <td><a href ui-sref="my-account.orders.detail({id: order.orderId})">{{ ::order.orderId }}</a></td>\n <td data-ng-bind="::order.orderDate | date"></td>\n <td data-ng-bind=::order.orderItems.length></td>\n <td data-ng-bind="::order.orderTotal | currency"></td>\n <td data-ng-bind=::order.orderStatus></td>\n </tr>\n </tbody>\n</table>'),a.put("pagination/vnPaginator.tpl.html",'<ul class=pager data-ng-if="cursor.totalPages > 1">\n <li data-ng-class="{disabled: cursor.currentPage == 1}">\n <a href data-ng-click=prevPage()><span class="glyphicon glyphicon-chevron-left"></span></a></li>\n <li data-ng-class="{disabled: cursor.currentPage == cursor.totalPages}">\n <a href data-ng-click=nextPage()><span class="glyphicon glyphicon-chevron-right"></span></a></li>\n</ul>\n\n <div class=pager>\n Page {{ cursor.currentPage }} of {{ cursor.totalPages }}\n </div>'),a.put("pay-with/credit-card-views.html",'<div class=th-checkout__credit-card data-ng-controller="CreditCardViewsCtrl as cc" data-ng-init=cc.init() data-ng-switch=cc.state>\n\n <div data-vn-credit-card-display data-ng-switch-when=VALIDCARDENTERED data-card=cc.card data-on-dirty=cc.setCardValidFalse() data-on-save=cc.saveCreditCard() data-on-click=cc.toggleChange() data-state=cc.displayCardState>\n </div>\n\n <div data-vn-credit-card-editor data-ng-switch-when=ENTERCARD data-card=cc.card data-on-dirty=cc.setCardValidFalse() data-show-save-button=false data-on-save=cc.saveCreditCard()>\n </div>\n\n <div data-vn-credit-card-picker data-ng-switch-when=PICKCARD data-state=cc.pickCardState data-card=cc.card data-card-list=cc.user.paymentProfiles data-on-select="" data-open-credit-cards=true data-close-picker=cc.closePicker() data-choose-picker=cc.choosePicker() data-enter-card=cc.enterCard() data-set-payment-profile=cc.setPaymentProfile(id) data-selected-index=cc.selectedIndex data-on-dirty-card=cc.setCardValidFalse() data-on-save-card=cc.saveCreditCard()>\n </div>\n\n</div>'),a.put("pay-with/vn-credit-card-display-action.html",'<div class=conatiner-fluid>\n <div>\n <span class=th-credit-card data-ng-class=paymentProfile.card.ccCssClass></span>\n <span>{{ paymentProfile.card.cardNumber.slice(-4) }}</span>\n <span>{{ paymentProfile.card.expMonth }}/{{ paymentProfile.card.expYear }}</span>\n </div>\n <div class="row th-address__display__actions">\n <div class="col-xs-7 th-address__display__actions__preferred">\n <span data-ng-if=!paymentProfile.preferred>\n <button class="btn btn-default" data-ng-click=onMakePreferredClicked()>Make Preferred\n </button>\n </span>\n \n <span data-ng-if=paymentProfile.preferred>\n <i class="fa fa-check"></i> Preferred</span>\n </div>\n <div class="col-xs-4 col-xs-offset-1 col-sm-3 col-sm-offset-2 col-md-2 col-md-offset-3">\n <div class=row>\n <div class=col-xs-6>\n <a href data-ng-click="onDeleteClicked({paymentProfile: paymentProfile})"><i class="fa fa-trash-o"></i></a>\n </div>\n </div>\n </div>\n </div>\n</div>'),a.put("pay-with/vn-credit-card-display.html",'<div class=th-checkout__credit-card__display data-ng-class="{ \'-verify-CVV\' : state == \'CVV\'}">\n <div class=row data-ng-class="{\'clickable\': !readonlyVal}" data-ng-cloak data-ng-click=onClick()>\n <div class=col-xs-10>\n <span class=th-credit-card data-ng-class=card.ccCssClass></span>\n <span class=th-checkout__credit-card__display__last4>{{ card.cardNumber.slice(-4) }}</span>\n <span class=th-checkout__credit-card__display__exp>{{card.expMonth }}/{{card.expYear }}</span>\n </div>\n <div class=col-xs-2 data-ng-show=showArrowVal>\n <i class="fa fa-angle-right fa-2x pull-right"></i>\n </div>\n </div>\n <form id=frmCVV name=frmCVV novalidate ng-show="state==\'CVV\'">\n <hr>\n <div class=form-group>\n <div class=row>\n <div class="col-xs-7 th-checkout__credit-card__display__verifyCVV">\n <label class=th-checkout__credit-card__display__verifyCVV__label>Please verify your card</label>\n </div>\n <div class="col-xs-4 col-sm-2 th-checkout__credit-card__display__verifyCVV">\n <input id=inputCreditCardCVV name=inputCreditCardCVV class="form-control input-lg immediate-help" data-vn-placeholder=CVV data-ng-model=card.CVV data-vn-cvv-validate data-vn-cc-type="{{ card.cardTypeName }}" required>\n <input type=hidden data-ng-model=card.pCIaaSId id=hiddenCardID value="{{ card.pCIaaSId }}" name="hiddenCardID">\n <div class="input-help top" ng-if=frmCVV.inputCreditCardCVV.$touched>\n <div class=arrow></div>\n <h4>CVV must:</h4>\n <ul>\n <li ng-class=cvvValidFormat>Be <strong>{{ cvvLength }} digits</strong> long</li>\n </ul>\n </div>\n </div>\n </div>\n </div>\n </form>\n</div>'),a.put("pay-with/vn-credit-card-editor.html",'<div>\n <div class="credit-card-error -aligned" ng-if=card.pCIaaSError ng-click="card.pCIaaSError = \'\'">\n <div class=row>{{card.pCIaaSError}}</div>\n </div>\n <div class="credit-card -aligned" ng-cloak>\n <div class=credit-card__strip></div>\n\n <form id=frmCreditCard name=frmCreditCard novalidate data-ng-submit=updateCreditCard()>\n <div class=row>\n <div class=col-xs-9>\n <div class=form-group>\n <input id=inputCreditCardNumber name=inputCreditCardNumber class="form-control input-lg immediate-help" data-vn-placeholder="Credit card number" data-ng-model=card.cardNumber data-vn-format-cc-number data-vn-cc-validate data-vn-cc-type="{{ card.cardTypeName }}" required>\n <input type=hidden data-ng-hide=true id=hiddenCardType name=hiddenCardType value="{{ card.cardTypeName }}">\n <input type=hidden data-ng-model=card.pCIaaSId id=hiddenCardID value="{{ card.pCIaaSId }}" name="hiddenCardID">\n\n <div class="input-help top-left" ng-if=frmCreditCard.inputCreditCardNumber.$touched>\n <div class=arrow></div>\n <h4>Credit card must:</h4>\n <ul>\n <li ng-class=creditCardValid>Be <strong>valid</strong> credit card number</li>\n <li ng-class=creditCardSupported>Be <strong>supported</strong> credit card issuer</li>\n </ul>\n </div>\n </div>\n </div>\n <div class=col-xs-3>\n <div class=form-group>\n <input id=inputCreditCardCVV name=inputCreditCardCVV class="form-control input-lg immediate-help" data-vn-placeholder=CVV data-ng-model=card.CVV data-ng-focus=setCCImage() data-ng-blur="setCCImage(\'reset\');" data-vn-cvv-validate data-vn-cc-type="{{ card.cardTypeName }}" required>\n\n <div class="input-help top" ng-if=frmCreditCard.inputCreditCardCVV.$touched>\n <div class=arrow></div>\n <h4>CVV must:</h4>\n <ul>\n <li ng-class=cvvValidFormat>Be <strong>{{ cvvLength }} digits</strong> long</li>\n </ul>\n </div>\n </div>\n </div>\n </div>\n\n <div class=row>\n <div class=col-xs-4>\n <div class=form-group>\n <div class="credit-card__exp-month th-dropdown" dropdown>\n <button id=inputCreditCardExpMonth name=inputCreditCardExpMonth class="btn btn-default btn-lg dropdown-toggle form-control immediate-help" type=button data-toggle=dropdown dropdown-togle aria-haspopup=true role=button aria-expanded=false data-ng-class="{ \'ng-invalid\': card.expMonth === \'\' || expDateInvalid === undefined, \'ng-valid\': expDateInvalid === \'valid\' }" data-vn-placeholder=MM data-ng-model=card.expMonth value="{{ card.expMonth }}">\n\n {{ card.expMonth }}<span class=caret></span>\n </button>\n <div class="input-help top-left -dropdown" ng-if=frmCreditCard.inputCreditCardExpMonth.$touched>\n <div class=arrow></div>\n <h4>Expiration date must:</h4>\n <ul>\n <li ng-class=expDateInvalid>Be <strong>future</strong> date</li>\n </ul>\n </div>\n <ul class=dropdown-menu role=menu aria-labelledby=inputCreditCardExpMonth>\n <li ng-repeat="month in months track by $index">\n <a role=menuitem tabindex=-1 href data-ng-click="onExpMonthChanged(month, \'inputCreditCardExpMonth\');">\n\n {{ month.label }}\n </a>\n </li>\n </ul>\n </div>\n </div>\n </div>\n <div class=col-xs-4>\n <div class=form-group>\n <div class="credit-card__exp-year th-dropdown" dropdown>\n <button id=inputCreditCardExpYear name=inputCreditCardExpYear class="btn btn-default btn-lg dropdown-toggle form-control immediate-help" type=button data-toggle=dropdown dropdown-toggle aria-haspopup=true role=button aria-expanded=false data-ng-class="{ \'ng-invalid\': card.expYear === \'\' || expDateInvalid === undefined }" data-vn-placeholder=YY data-ng-model=card.expYear value="{{ card.expYear }}">\n\n {{ card.expYear }}<span class=caret></span>\n </button>\n <div class="input-help top-left -dropdown" ng-if=frmCreditCard.inputCreditCardExpYear.$touched>\n <div class=arrow></div>\n <h4>Expiration date must:</h4>\n <ul>\n <li ng-class=expDateInvalid>Be <strong>future</strong> date</li>\n </ul>\n </div>\n <ul class=dropdown-menu role=menu aria-labelledby=inputCreditCardExpYear>\n <li ng-repeat="year in rangeYears() track by $index">\n <a role=menuitem tabindex=-1 href data-ng-click="onExpYearChanged(year, \'inputCreditCardExpYear\');">\n\n {{ year }}\n </a>\n </li>\n </ul>\n </div>\n </div>\n </div>\n <div class=col-xs-4>\n <div class=form-group>\n <span class=th-credit-card data-ng-class=card.ccCssClass></span>\n </div>\n </div>\n </div>\n\n </form>\n </div>\n <div class=container-fluid>\n <div class=row data-ng-if=showCancelButtonValue>\n <div class=col-xs-6>\n <button class="btn btn-default btn-block btn-lg th-checkout__step__cancel" data-ng-click=onCancel()>\n {{cancelText}}\n </button>\n </div>\n <div class=col-xs-6>\n <button class="btn btn-primary btn-block btn-lg th-checkout__step__btn__continue" data-ng-click=saveCard() data-ng-enabled=frmAddress.$valid data-ng-if=showSaveButtonValue>\n {{saveText}} <i class="fa fa-angle-right"></i>\n </button>\n </div>\n </div>\n <div class=row data-ng-if=!showCancelButtonValue>\n <div class=col-xs-12>\n <button class="btn btn-primary btn-block btn-lg th-checkout__step__btn__continue" data-ng-click=saveCard() data-ng-enabled=frmAddress.$valid data-ng-if=showSaveButtonValue>\n {{saveText}} <i class="fa fa-angle-right"></i>\n </button>\n </div>\n </div>\n </div>\n</div>'),a.put("pay-with/vn-credit-card-picker.html",'<div class=th-checkout__credit-card>\n\n <div class=credit-card data-ng-class="{\'-aligned\': !openCreditCards}" ng-cloak>\n\n <div class="th-checkout__step__drawer -left" data-ng-class="{\'-open\': openCreditCards}">\n\n <div class=th-checkout__step__drawer__body data-ng-show=openCreditCards data-ng-cloak data-ng-switch=state>\n\n <div data-ng-switch-when=PICK>\n <a href class=th-checkout__step__drawer__close data-ng-click=closePicker()>\n <i class="fa fa-close fa-2x"></i>\n </a>\n\n <div class=th-checkout__step__drawer__title>Choose credit card</div>\n\n <div class=th-checkout__credit-card__choose>\n <div class=th-checkout__credit-card__choose__options ng-cloak>\n <label class=th-checkout__credit-card__choose__options__option data-ng-repeat="profile in cardList" data-ng-class="{\'-first\' : $index === 0}" for="profile{{ $index }}">\n <div class=styled-optionbox-option>\n <input type=radio id="profile{{ $index }}" name=profile data-ng-value=true data-ng-model=profile.preferred data-ng-class="{\'-inactive\' : !profile.preferred, \'-selected\' : profile.preferred}" data-ng-change="setIndex({{ $index }})">\n\n <div>\n <span class=th-credit-card data-ng-class=getCssClass(profile)></span>\n <span class=th-checkout__credit-card__display__last4>{{ profile.card.last4 }}</span>\n <span class=th-checkout__credit-card__display__exp>{{ profile.card.expMonth }}/{{ profile.card.expYear }}</span>\n </div>\n </div>\n </label>\n\n <a href class=th-checkout__credit-card__choose__options__new-option ng-repeat-end ng-cloak data-ng-click=addCard()>\n Enter a different card\n </a>\n </div>\n\n <button class="btn btn-primary btn-block btn-lg th-checkout__step__btn__continue" data-ng-click=choosePicker()>\n Continue <i class="fa fa-angle-right"></i>\n </button>\n </div>\n\n <div class=th-checkout__step__backButton>\n <a href=javascript:void(0); data-ng-click=closePicker()>\n <i class="fa fa-arrow-left"> back</i>\n </a>\n </div>\n </div>\n\n <div data-ng-switch-when=ENTER>\n <div class=th-checkout__step__drawer__title>Add credit card</div>\n <div data-vn-credit-card-editor data-card=card data-on-dirty=onDirtyCard() data-on-save=onSaveCard() data-show-save-button=true>\n </div>\n <div class=th-checkout__step__backButton>\n <a href=javascript:void(0); data-ng-click=goBackFromEnter()>\n <i class="fa fa-arrow-left"> back</i>\n </a>\n </div>\n </div>\n\n </div>\n </div>\n\n </div>\n\n</div>'),a.put("popover/vn-popover.tpl.html",'<div class="input-help {{ ::location }}">\n <div class=arrow></div>\n <h4>{{ ::title }}</h4>\n</div>'),a.put("product-image/vn-product-image.tpl.html",'<img data-ng-src="{{ getImagePath(product.imageCollections) }}" class=img-responsive alt="{{ product.name }}">'),a.put("product-search/vnSearchForm.tpl.html",'<div class=th-search role=search>\n <div data-ng-show=showSearch class=th-search__popout>\n <form class=form-inline role=search name=frmSearch data-ng-submit=doSearch() novalidate>\n <div class=form-group>\n <input data-ng-model=searchTerm class=th-search__popout--input placeholder=Search...>\n <button type=button data-ng-click=doSearch() class="btn btn-xs btn-primary th-search__popout--submit">Go!\n </button>\n </div>\n </form>\n </div>\n\n <a id=search-toggle data-ng-click="showSearch = !showSearch" ng-show=allowCollapse type=button class=th-search__trigger data-ng-class="{ \'-position\' : !showSearch }">\n <span class="glyphicon glyphicon-search"></span>\n </a>\n</div>'),a.put("review/review-details-2.html",'<div data-ng-controller=ReviewDetailsCtrl>\n\n <div class=th-checkout__thanks__title>Ship To</div>\n <div class="th-address__display -readonly" data-ng-if=shippingAddress>\n <div vn-address-display data-address=shippingAddress></div>\n </div>\n\n <div class=th-checkout__thanks__title>Shipping Method</div>\n <div class=th-checkout__ship-method>\n <div class=th-checkout__ship-method__display data-ng-if=shippingMethod>\n <div class=th-checkout__ship-method__display__name data-ng-bind-html=shippingMethod.name></div>\n <div class=th-checkout__ship-method__display__price>{{ shippingMethod.price | vnCurrency }}</div>\n </div>\n </div>\n\n <div class=th-checkout__thanks__title>Paid With</div>\n <div data-vn-credit-card-display data-card=payment.card data-state=NOCVV data-show-arrow=false data-readonly=true>\n </div>\n\n <div class=th-checkout__thanks__title>Billing Address</div>\n <div class="th-address__display -readonly" data-ng-if=billingAddress>\n <div vn-address-display data-address=billingAddress></div>\n </div>\n\n</div>'),a.put("review/vn-review-details.html",'<div>\n <div class=th-checkout__thanks__title>Ship To</div>\n <div class=th-checkout__thanks__display>\n <div class=row>\n <div class=col-xs-12>\n <span>{{ shippingAddress.firstName }} {{ shippingAddress.lastName }}</span>\n <span><br>{{ shippingAddress.address1 }}</span>\n <span data-ng-if=shippingAddress.address2><br>{{ shippingAddress.address2 }}</span>\n <span data-ng-if=isShippingLocationUS>\n <span><br>{{ shippingAddress.city }}, {{ shippingAddress.state }} {{ shippingAddress.postalCode }}</span>\n <span><br>{{ shippingAddress.phoneNumber | vnUsPhone }}</span>\n </span>\n\n \n <span data-ng-if=!isShippingLocationUS>\n <span><br>{{ shippingAddress.city }}</span>\n <span><br>{{ shippingAddress.state }} {{ shippingAddress.postalCode }}</span>\n <span><br>{{ shippingAddress.country }}</span>\n <span><br>{{ shippingAddress.phoneNumber }}</span>\n </span>\n \n </div>\n </div>\n\n <br style="clear : both">\n </div>\n\n <div class=th-checkout__thanks__title>Shipping Method</div>\n <div class=th-checkout__thanks__display>\n <div class=row>\n <div class=col-xs-12>\n <div class=th-checkout__thanks__display__name data-ng-bind-html=shippingMethod.name></div>\n <div class=th-checkout__thanks__display__price>{{ shippingMethod.price | vnCurrency }}</div>\n </div>\n </div>\n\n <br style="clear : both">\n </div>\n\n <div class=th-checkout__thanks__title>Paid With</div>\n\n <div class=th-checkout__thanks__display>\n <div class=row>\n <div class=col-xs-12>\n <span class=credit-card__total>{{ payment.total.grandTotal | currency }} charged to</span>\n <span class=th-credit-card data-ng-class=payment.card.ccCssClass></span>\n <span class=th-checkout__credit-card__display__last4>{{ payment.card.cardNumber | vnCreditCard:payment.card.cardTypeName}}</span>\n <span class=th-checkout__credit-card__display__exp>{{payment.card.expMonth }}/{{payment.card.expYear }}</span>\n </div>\n </div>\n\n <br style="clear : both">\n </div>\n\n <div class=th-checkout__thanks__title>Billing Address</div>\n <div class=th-checkout__thanks__display>\n <div class=row>\n <div class=col-xs-12>\n <span>{{ billingAddress.firstName }} {{ billingAddress.lastName }}</span>\n <span><br>{{ billingAddress.address1 }}</span>\n <span data-ng-if=billingAddress.address2><br>{{ billingAddress.address2 }}</span>\n <span data-ng-if=isBillingLocationUS>\n <span><br>{{ billingAddress.city }}, {{ billingAddress.state }} {{ billingAddress.postalCode }}</span>\n <span><br>{{ billingAddress.phoneNumber | vnUsPhone }}</span>\n </span>\n\n \n <span data-ng-if=!isBillingLocationUS>\n <span><br>{{ billingAddress.city }}</span>\n <span><br>{{ billingAddress.state }} {{ billingAddress.postalCode }}</span>\n <span><br>{{ billingAddress.country }}</span>\n <span><br>{{ billingAddress.phoneNumber }}</span>\n </span>\n \n\n </div>\n </div>\n\n <br style="clear : both">\n </div>\n</div>'),a.put("review/vn-review.html",'<div class=th-checkout__review>\n\n <div class="th-checkout__review__totals clearfix">\n <div class=th-checkout__review__totals__count>{{ cart.totals.qty }} items</div>\n <div class=th-checkout__review__totals__expand ng-class="{expanded: !reviewItems}"><button data-ng-click="reviewItems = !reviewItems"><span></span></button></div>\n <div class=th-checkout__review__totals__amount>{{ cart.totals.items | currency }}</div>\n </div>\n\n <div class=th-checkout__review__items data-ng-show=!reviewItems>\n <div class="th-checkout__review__items__item clearfix" data-ng-repeat="item in cart.items | reverse" data-ng-class="{\'-last\': $last}">\n\n <div class=th-checkout__review__items__item-image>\n <img data-ng-src="{{ item.imgUrl }}">\n </div>\n\n <div class=th-checkout__review__items__item-info>\n <div class=th-checkout__review__items__item-info--name>\n <span>{{ item.name }}</span>\n </div>\n\n <div class=th-checkout__review__items__item-info--price>{{ item.pricing.unitPrice | currency }}</div>\n\n <div class=th-checkout__review__items__item-info--option data-ng-repeat="option in item.options">\n <span>{{ option.optionText }}</span>\n </div>\n\n <div class=item-info-row>\n <div class=th-checkout__review__items__item-info--qty>\n <span>Qty</span> {{ item.qty }}\n </div>\n <div class=th-checkout__review__items_-info--subtotal>{{ item.pricing.subtotal | currency }}</div>\n </div>\n\n <div class=item-info-row data-ng-if="item.giftWrap.price > 0">\n <div class=th-checkout__review__items__item-info--qty>\n <span>Gift Wrap</span>\n </div>\n <div class=th-checkout__review__items__item-info--subtotal>{{ item.giftWrap.price | currency }}</div>\n </div>\n\n <div class=item-info-row data-ng-if="item.giftWrap.message != \'\'">\n <span>Message:</span> "{{ item.giftWrap.message }}"\n </div>\n </div>\n </div>\n </div>\n\n <div class=th-checkout__review__discounts data-ng-if=cart.discounts.length>\n <div class=th-checkout__review__discounts__discount data-ng-repeat="discount in cart.discounts">\n <div class=discount-info-row>\n <div class=th-checkout__review__discounts__discount-info>\n <span>{{ discount.name }}</span>\n </div>\n <div class=th-checkout__review__discounts__discount-info--subtotal>{{ discount.value | vnCurrency }}</div>\n </div>\n </div>\n </div>\n\n <div class=th-checkout__review__store-credit data-ng-if="cart.customer.storeCredit != 0">\n <div class=store-credit-info-row>\n <div class=th-checkout__review__store-credit-info>\n <span>Store Credit</span>\n </div>\n <div class=th-checkout__review__store-credit-info--subtotal>{{ cart.customer.storeCredit | vnCurrency }}</div>\n </div>\n </div>\n\n <div class=th-checkout__review__shipping-method>\n <div class=shipping-method-info-row>\n <div class=th-checkout__review__shipping-method-info>\n <span>Shipping</span>\n \n \n \n </div>\n <div class=th-checkout__review__shipping-method-info--subtotal>{{cart.totals.shipping | vnCurrency }}</div>\n </div>\n </div>\n\n <div class=th-checkout__review__tax>\n <div class=tax-info-row>\n <div class=th-checkout__review__tax-info>\n <span>Tax</span>\n </div>\n <div class=th-checkout__review__tax-info--subtotal>{{ cart.totals.taxTotal | currency }}</div>\n </div>\n </div>\n\n <div class=th-checkout__review__grand-total>\n <div class=grand-total-info-row>\n <div class=th-checkout__review__grand-total-info>\n <span>Grand Total</span>\n </div>\n <div class=th-checkout__review__grand-total-info--subtotal>{{ cart.totals.grandTotal | currency }}</div>\n </div>\n </div>\n</div>'),a.put("ship-method/ship-method.html",'<div class="th-checkout__section-heading th-checkout__ship-method__heading" data-ng-show="checkout.cart.shippingMethods.length > 0">\n Shipping Method\n</div>\n\n<div class=th-checkout__ship-method data-ng-controller=ShipMethodCtrl data-ng-show="checkout.cart.shippingMethods.length > 0" data-ng-switch=isEditable()>\n\n\n <label class=th-checkout__ship-method__method data-ng-switch-when=edit data-ng-repeat="method in checkout.cart.shippingMethods" for="shipping{{ $index }}">\n\n <div class=styled-optionbox-option>\n <input type=radio id="shipping{{ $index }}" name=shipping data-ng-value=true data-ng-model=method.selected data-ng-change="setPreferredShippingMethod({{ $index }})">\n <div>\n <div data-ng-bind-html=method.name class=th-checkout__ship-method__name></div>\n </div>\n </div>\n <div class=th-checkout__ship-method__price>{{ method.price | vnCurrency }}</div>\n\n </label>\n\n <div class=th-checkout__ship-method__display data-ng-switch-when=show>\n <div class=th-checkout__ship-method__display__name data-ng-bind-html=checkout.cart.shippingMethods[currentShippingMethodIdx].name></div>\n <div class=th-checkout__ship-method__display__price>{{ checkout.cart.shippingMethods[currentShippingMethodIdx].price | vnCurrency }}</div>\n\n </div>\n\n</div>'),a.put("ship-to/ship-to-views.html",'<div class=th-checkout__ship-to data-ng-controller="ShipToViewsCtrl as vm" data-ng-switch=vm.state data-ng-init=vm.init()>\n\n <div class=th-address__display data-ng-switch-when=VIEWADDRESS>\n <vn-address-display data-address=vm.shippingAddress data-on-click=vm.editShippingAddress() data-shipping=true data-show-edit-button=vm.shippingAddress></vn-address-display>\n </div>\n\n <div class=th-address__enterAddress data-ng-switch-when=EDITADDRESS ng-cloak>\n <div data-vn-address-editor="" address=vm.shippingAddress countries=vm.countries data-on-save=vm.saveShippingAddress() data-show-save-button=true data-shipping=true data-save-text="Get Shipping Rates"></div>\n </div>\n\n <div vn-address-picker data-ng-switch-when=PICKADDRESS data-address-list=vm.user.shippingAddresses data-new-address-title="Add Shipping Address" data-select-address-title="Choose Shipping Address" data-back-to-text="back to Ship To" data-show-copy-address=vm.showCopyAddress data-countries=vm.countries data-on-address-selected=vm.onAddressSelected() data-shipping=true data-save-address=vm.onAddressAdded(newAddress)></div>\n\n</div>'),a.put("thank-you/thank-you.html",'<div class=th-checkout__thanks ng-cloak="">\n <div class=th-checkout__thanks__header>\n <div class=title>Thank you for your order.</div>\n <div class=order-info>Your order number is No.{{ ::orderId }}</div>\n <div class=action-info>A copy of this has been sent to<br>{{ ::userEmail }}</div>\n\n <br style="clear : both">\n </div>\n\n <div class=container-fluid>\n <div class=row>\n <div class="col-sm-12 col-sm-offset-0 col-md-10 col-md-offset-1 col-lg-8 col-lg-offset-2">\n \n <div class=row>\n <div class="th-checkout__thanks__column col-xs-12 col-sm-6 col-md-6">\n <div class=th-checkout__thanks__title>Order Details</div>\n <div vn-review=checkout.cart></div>\n </div>\n <div class="th-checkout__thanks__column -next col-xs-12 col-sm-6 col-md-6">\n <div vn-review-details shipping-address=checkout.cart.shippingAddress shipping-method=shippingMethod payment=checkout.cart.paymentProfile billing-address=checkout.cart.billingAddress></div>\n </div>\n\n <br style="clear : both">\n </div>\n\n </div>\n </div>\n </div>\n</div>')}]),angular.module("Volusion.toolboxCommon").controller("CreditCardViewsCtrl",["$rootScope","$filter","vnCheckout","vnPayment","vnUser","$q","vnPciaasIframe","vnSiteConfig","vnCreditCardClass","vnCreditCardUtilities",function(a,b,c,d,e,f,g,h,i,j){"use strict";function k(){if(o.user.paymentProfiles.length>0){for(var a=o.user.paymentProfiles[0].card,b=0,c=0,d=o.user.paymentProfiles.length;d>c;c++)o.user.paymentProfiles[c].preferred&&(b=c,a=o.user.paymentProfiles[c].card);return{index:b,card:a}}return{index:0,card:j.newCard()}}function l(a){angular.forEach(o.user.paymentProfiles,function(b){return o.user.paymentProfiles[a].id===b.id?void(b.preferred=!0):void(b.preferred=!1)})}function m(){o.preferredProfile=b("filter")(o.user.paymentProfiles,function(a){return a.preferred===!0?a:void 0})[0],d.setCardFrom(o.preferredProfile.card),c.setCCPaymentProfile(d.getCard()),c.setCreditCardValidity(!0)}function n(){var a={method:"Credit Card",preferred:!0,card:{cardType:o.card.cardType,cardTypeName:o.card.cardTypeName,holdersName:o.user.firstName+" "+o.user.lastName,last4:o.card.cardNumber.slice(-4),expMonth:o.card.expMonth,expYear:o.card.expYear,issueMonth:"",issueYear:"",issueNumber:"",pCIaaSId:o.card.pCIaaSId,cardNumber:o.card.cardNumber}};c.setCCPaymentProfile(a),o.user.anonymous||e.setPaymentProfile(a).then(function(a){var b=i(a.data.card.cardType);a.data.card.ccCssClass=b["class"],a.data.card.last4=a.data.card.cardNumber.slice(-4),a.data.card.cardTypeName=b.name,o.user.paymentProfiles.push(a.data)})}var o=this,p=null;h.getConfig().then(function(a){p=a.data.PCIaaS.merchantId});var q=2;o.state=null,o.pickCardState="PICK",o.displayCardState="CVV",o.oldSelectedIndex=null,o.selectedIndex=null,o.init=function(){o.card=j.newCard(),o.user.anonymous?(o.isUserCanEnterPaymentProfile=!0,o.state="ENTERCARD"):e.getPaymentProfiles().then(function(){if(o.user.paymentProfiles.length>0){m(),o.state="VALIDCARDENTERED";var a=k();o.oldSelectedIndex=o.selectedIndex=a.index,o.card=a.card}else o.isUserCanEnterPaymentProfile=!0,o.state="ENTERCARD"})},o.isUserCanEnterPaymentProfile=!1,o.user=e.getUser(),o.checkout=c.get(),o.payment=d.getCard(),o.openCreditCards=!1,o.user.isUserCanEnterPaymentProfile=!0,o.preferredProfile={},o.setPaymentProfile=function(){l(o.selectedIndex),m()},o.setCardValidFalse=function(){c.setCreditCardValidity(!1)},o.processCard=function(){return f(function(a,b){var c={CVV:"inputCreditCardCVV",HiddenCardID:"hiddenCardID",CardNumber:function(){return o.card.cardNumber},CardType:function(){return{Visa:"Visa",MasterCard:"MasterCard","American Express":"Amex",Discover:"Discover"}[o.card.cardTypeName]}};g.PCIaaS({settings:{merchantID:"3de067d8d96d407697da4a9559f99681",apiBase:"https://payments-qa.dev.volusion.com/paymentsv1_4"},fields:c,events:{success:a,error:b}}).process(!0)})},o.saveCreditCard=function(){ +o.processCard().then(function(b){o.card.pCIaaSError="",angular.isString(b)&&(b=JSON.parse(b)),o.card.cardNumber=-1===o.card.cardNumber.indexOf("*")?j.maskCardValue(o.card.cardNumber):o.card.cardNumber,o.card.pCIaaSId=b.CardId?b.CardId:o.card.pCIaaSId,o.card.changed=!1,n(),o.displayCardState="NOCVV",o.state="VALIDCARDENTERED",c.setCreditCardValidity(!0),a.$emit("vnPayment.validate.continue")},function(){o.card.pCIaaSError="There was a problem with saving your credit card"})},o.toggleChange=function(){c.setCreditCardValidity(!1),o.user.paymentProfiles&&o.user.paymentProfiles.length>0?(o.openCreditCards=!0,c.setHasOpenDrawer(q,!0),o.state="PICKCARD",o.pickCardState="PICK"):o.state="ENTERCARD"},o.closePicker=function(){o.user.paymentProfiles.length>0?(l(o.oldSelectedIndex),o.card=k().card,o.state="VALIDCARDENTERED",o.displayCardState="CVV",c.setCreditCardValidity(!0)):o.state="ENTERCARD"},o.choosePicker=function(){o.oldSelectedIndex=o.selectedIndex,o.setPaymentProfile(),o.card=k().card,c.setCreditCardValidity(!0),o.state="VALIDCARDENTERED",o.displayCardState="CVV"}}]),angular.module("Volusion.toolboxCommon").directive("vnCreditCardDisplayActions",["vnCreditCardClass",function(a){return{restrict:"A",scope:{paymentProfile:"=",onMakePreferredClicked:"&",onDeleteClicked:"&",onEditClicked:"&"},templateUrl:"pay-with/vn-credit-card-display-action.html",link:function(b){if(!b.paymentProfile.card.ccCssClass&&b.paymentProfile.card.cardTypeName){var c=a(b.paymentProfile.card.cardTypeName);b.paymentProfile.card.ccCssClass=c["class"],b.paymentProfile.card.cardType=c.type}}}}]),angular.module("Volusion.toolboxCommon").directive("vnCreditCardDisplay",["$rootScope","vnCreditCardClass",function(a,b){return{replace:!0,restrict:"EA",scope:{card:"=",state:"=?",onSave:"&",onDirty:"&",onClick:"&",readonly:"@",showArrow:"@"},templateUrl:"pay-with/vn-credit-card-display.html",link:function(c){function d(){for(var a in c.frmCVV)c.frmCVV.hasOwnProperty(a)&&a.indexOf("$")<0&&(c.frmCVV[a].$setDirty(),c.frmCVV[a].$setTouched())}if(c.state=c.state||"NOCVV",c.readonlyVal="true"===c.readonly?!0:!1,c.showArrowVal="false"===c.showArrow?!1:!0,c.card.expMonth=c.card.expMonth||c.card.ExpireMonth,c.card.expYear=c.card.expYear||c.card.ExpireYear,c.card.cardTypeName=c.card.cardTypeName||c.card.CardTypeName,!c.card.ccCssClass&&c.card.cardTypeName){var e=b(c.card.cardTypeName);c.card.ccCssClass=e["class"],c.card.cardType=e.type}c.validateCVV=function(){c.frmCVV.$valid?(c.frmCVV.$setPristine(),c.onSave()):(d(),c.onDirty())},c.$watch("frmCVV.$dirty",function(a){a&&angular.isFunction(c.onDirty)&&c.onDirty()});var f=a.$on("vnPayment.validate",function(){c.validateCVV(),a.$emit("vnPayment.validate.continue")});c.$on("$destroy",function(){f()})}}}]),angular.module("Volusion.toolboxCommon").directive("vnCreditCardEditor",["$rootScope","vnCreditCardClass","lodash",function(a,b,c){return{restrict:"EA",scope:{card:"=",title:"@",onSave:"&",onDirty:"&",showSaveButton:"@",saveText:"@",showCancelButton:"@",cancelText:"@",onCancel:"&"},templateUrl:"pay-with/vn-credit-card-editor.html",link:function(d){function e(){d.card&&d.card.cardTypeName&&"American Express"===d.card.cardTypeName&&(d.cvvLength=4)}function f(){if(void 0!==d.card.cardNumber&&-1!==d.card.cardNumber.indexOf("*")){var a=b(d.card.cardTypeName);return d.card.ccCssClass=a["class"],void(d.card.cardType=a.type)}if(void 0===d.card.cardNumber||""===d.card.cardNumber)return void(d.card.ccCssClass="credit-card__image--notvalid");d.card.cardTypeName="",/^(34)|^(37)/.test(d.card.cardNumber)&&(d.card.cardTypeName="American Express"),/^4/.test(d.card.cardNumber)&&(d.card.cardTypeName="Visa"),/^5[1-5]/.test(d.card.cardNumber)&&(d.card.cardTypeName="MasterCard"),/^(6011)|^(622(1(2[6-9]|[3-9][0-9])|[2-8][0-9]{2}|9([01][0-9]|2[0-5])))|^(64[4-9])|^65/.test(d.card.cardNumber)&&(d.card.cardTypeName="Discover");var c=b(d.card.cardTypeName);d.card.ccCssClass=c["class"],d.card.cardType=c.type,d.creditCardSupported=-1!==d.card.CardType&&""!==d.card.CardType?"valid":void 0}function g(){for(var a in d.frmCreditCard)d.frmCreditCard.hasOwnProperty(a)&&a.indexOf("$")<0&&(d.frmCreditCard[a].$setDirty(),d.frmCreditCard[a].$setTouched())}function h(){if(d.card.expMonth&&d.card.expYear){var a=new Date;d.expDateInvalid="valid",parseInt("20"+d.card.expYear)===a.getFullYear()&&parseInt(d.card.expMonth)<a.getMonth()+1&&(d.expDateInvalid=void 0,d.frmCreditCard.inputCreditCardExpMonth.$setValidity("expmonth",!1),d.frmCreditCard.inputCreditCardExpYear.$setValidity("expyear",!1))}}d.saveText=d.saveText||"Continue",d.cancelText=d.cancelText||"Cancel",d.showSaveButtonValue="false"===d.showSaveButton?!1:!0,d.showCancelButtonValue="true"===d.showCancelButton?!0:!1,d.cvvLength=3,e(),d.expDateInvalid="valid",d.creditCardSupported="valid",d.saveText=d.saveText||"Add Credit Card",d.months=[{num:"01",label:"01 - January"},{num:"02",label:"02 - February"},{num:"03",label:"03 - March"},{num:"04",label:"04 - April"},{num:"05",label:"05 - May"},{num:"06",label:"06 - June"},{num:"07",label:"07 - July"},{num:"08",label:"08 - August"},{num:"09",label:"09 - September"},{num:"10",label:"10 - October"},{num:"11",label:"11 - November"},{num:"12",label:"12 - December"}],d.rangeYears=function(){var a,b=[],c=(new Date).getFullYear();for(a=c;c+15>=a;a++)b.push(a);return b},d.onExpMonthChanged=function(a,b){d.card.expMonth=a.num;var c=angular.element("#"+b);c.focus(),c.triggerHandler("change"),h()},d.onExpYearChanged=function(a,b){d.card.expYear=a.toString().substring(2);var c=angular.element("#"+b);c.focus(),c.triggerHandler("change"),h()},d.setCCImage=function(a){void 0===a?d.card.ccCssClass="AMEX"===d.card.cardTypeName?"credit-card__image--amex-flipped":"credit-card__image--flipped":f()},d.displayLast4=function(){return d.card.cardNumber.slice(-4)},d.displayExpDate=function(){var a="";return a=""===d.card.expMonth?"":d.card.expMonth,a+=""===d.card.expYear?"":"/"+d.card.expYear},d.saveCard=function(){var a;return d.cvvLength=3,e(),d.expDateInvalid=void 0,-1===d.card.cardNumber.indexOf("*")&&(a=d.card.cardNumber.replace(/[^\d]+/g,""),d.frmCreditCard.inputCreditCardNumber.$setValidity("creditcard",!d.frmCreditCard.inputCreditCardNumber.$invalid&&void 0!==d.creditCardSupported)),d.card.CVV&&-1===d.card.CVV.indexOf("*")&&(a=d.card.CVV.replace(/[^\d]+/g,""),d.frmCreditCard.inputCreditCardCVV.$setValidity("cvv",a.toString().length===d.cvvLength)),d.card.expMonth?d.frmCreditCard.inputCreditCardExpMonth.$setValidity("expmonth",!0):d.frmCreditCard.inputCreditCardExpMonth.$setValidity("expmonth",!1),d.card.expYear?d.frmCreditCard.inputCreditCardExpYear.$setValidity("expyear",!0):d.frmCreditCard.inputCreditCardExpYear.$setValidity("expyear",!1),h(),d.frmCreditCard.$valid?(d.frmCreditCard.preferred=!0,d.frmCreditCard.$setPristine(),d.onSave(),!0):(g(),!1)},d.frmCreditCard.$setPristine();var i=d.$watch("frmCreditCard.$dirty",function(a){a&&(c.isFunction(d.onDirty)&&d.onDirty(),i())});d.$watch("card.cardNumber",function(){f()});var j=a.$on("vnPayment.validate",function(){d.saveCard()&&a.$emit("vnPayment.validate.continue")});d.$on("$destroy",function(){j()})}}}]),angular.module("Volusion.toolboxCommon").directive("vnCreditCardPicker",["vnCreditCardClass",function(a){return{replace:!0,restrict:"EA",scope:{cardList:"=",state:"=",openCreditCards:"@",onSelect:"&",enterCard:"&",closePicker:"&",choosePicker:"&",setPaymentProfile:"&",selectedIndex:"=",card:"=",onSaveCard:"&",onDirtyCard:"&"},templateUrl:"pay-with/vn-credit-card-picker.html",link:function(b){b.addCard=function(){b.card={cardNumber:"",expMonth:"",expYear:""},b.state="ENTER"},b.goBackFromEnter=function(){b.state="PICK"},b.setIndex=function(a){b.selectedIndex=a},b.getCssClass=function(b){return a(b.card.cardTypeName.toUpperCase())["class"]}}}}]),angular.module("Volusion.toolboxCommon").factory("vnCreditCardUtilities",["lodash",function(a){return{maskCardValue:function(a){var b=new RegExp("[\\s-]","g"),c=a.replace(b,""),d=new RegExp("^(\\d+?)\\d{4}$"),e=c.match(d),f=c,g="*",h="";if(null!==e){for(var i=1;i<e.length;i++){h="";for(var j=0;j<e[i].length;j++)h+=g;f=f.replace(e[i],h)}for(var k=f.length-1;k>=0;k--)f.charAt(k)===g;return f}return null},newCard:function(){return{cardNumber:"",expMonth:"",expYear:""}},setPreferredPaymentProfile:function(b,c){a.forEach(b,function(a,b){a.preferred=c===b})},getPreferredPaymentProfile:function(b){return a.find(b,function(a){return a.preferred})||b[0]},removePaymentProfileFromList:function(b,c){return a.reject(b,function(a){return a.id===c.id})}}}]),angular.module("Volusion.toolboxCommon").directive("vnPlaceholder",["$timeout","$interpolate",function(a,b){"use strict";return{restrict:"A",require:"ngModel",compile:function(c,d){return c.parent().append('<label class="vn-placeholder" ng-click="setFocusFor(\''+d.id+"')\" dropdown-toggle></label>"),function(c,e){function f(a,b){return a.$$phase||a.$root.$$phase?b():a.$apply(b)}function g(a){f(c,function(){void 0===a&&""===h.val()?(i.removeClass("-selected -focus"),i.html()!==b(d.vnPlaceholder)(c)&&i.html(b(d.vnPlaceholder)(c))):(i.hasClass("-selected")||i.addClass("-selected"),void 0===a||"focus"!==a.type||i.hasClass("-focus")||i.addClass("-focus"),d.vnPlaceholderShort&&d.vnPlaceholderShort.length>0&&i.html(b(d.vnPlaceholderShort)(c)))})}var h=e,i=h.closest("div").find("label.vn-placeholder");c.setFocusFor=function(a){angular.element(document.querySelector("#"+a)).focus()},f(c,function(){a(function(){i.html(b(d.vnPlaceholder)(c))},0)}),c.$watch(d.ngModel,function(){g()}),h.on("focus keyup change",function(a){g(a)}).on("blur",function(){i.removeClass("-focus"),""===h.val()&&(i.removeClass("-selected"),i.html()!==b(d.vnPlaceholder)(c)&&i.html(b(d.vnPlaceholder)(c)))})}}}}]),angular.module("Volusion.toolboxCommon").directive("vnPopoverFirstName",["$compile",function(a){"use strict";return{restrict:"E",scope:!0,templateUrl:"popover/vn-popover.tpl.html",replace:!0,link:function(b,c){b.location="bottom",b.title="First name must:";var d=[{ngclass:"firstNameMinValidLength",ngif:"",msg:"Be at least <strong>1 letter long</strong>"},{ngclass:"firstNameAllowedChars",ngif:"firstNameDisallowedChars != null",msg:'Not contain <strong>{{ firstNameDisallowedChars.join("") }}</strong>'}],e=angular.element("<ul>");angular.forEach(d,function(a){var b=angular.element("<li>");a.ngif&&""!==a.ngif&&b.attr("ng-if",a.ngif),b.attr("ng-class",a.ngclass),b.html(a.msg),e.append(b)}),a(e)(b),c.append(e)}}}]).directive("vnPopoverLastName",["$compile",function(a){"use strict";return{restrict:"E",scope:!0,templateUrl:"popover/vn-popover.tpl.html",replace:!0,link:function(b,c){b.location="bottom-right",b.title="Last name must:";var d=[{ngclass:"lastNameMinValidLength",ngif:"",msg:"Be at least <strong>1 letter long</strong>"},{ngclass:"lastNameAllowedChars",ngif:"lastNameDisallowedChars != null",msg:'Not contain <strong>{{ lastNameDisallowedChars.join("") }}</strong>'}],e=angular.element("<ul>");angular.forEach(d,function(a){var b=angular.element("<li>");a.ngif&&""!==a.ngif&&b.attr("ng-if",a.ngif),b.attr("ng-class",a.ngclass),b.html(a.msg),e.append(b)}),a(e)(b),c.append(e)}}}]).directive("vnPopoverAddress",["$compile",function(a){"use strict";return{restrict:"E",scope:!0,templateUrl:"popover/vn-popover.tpl.html",replace:!0,link:function(b,c){b.location="bottom",b.title="Address must:";var d=[{ngclass:"streetEmpty",ngif:"",msg:"Not be <strong>empty</strong>"},{ngclass:"streetAllowedChars",ngif:"streetDisallowedChars != null",msg:'Not contain <strong>{{ streetDisallowedChars.join("") }}</strong>'}],e=angular.element("<ul>");angular.forEach(d,function(a){var b=angular.element("<li>");a.ngif&&""!==a.ngif&&b.attr("ng-if",a.ngif),b.attr("ng-class",a.ngclass),b.html(a.msg),e.append(b)}),a(e)(b),c.append(e)}}}]).directive("vnPopoverCity",["$compile",function(a){"use strict";return{restrict:"E",scope:!0,templateUrl:"popover/vn-popover.tpl.html",replace:!0,link:function(b,c){b.location="top-left",b.title="City must:";var d=[{ngclass:"cityEmpty",ngif:"",msg:"Not be <strong>empty</strong>"},{ngclass:"cityAllowedChars",ngif:"cityDisallowedChars != null",msg:'Not contain <strong>{{ cityDisallowedChars.join("") }}</strong>'}],e=angular.element("<ul>");angular.forEach(d,function(a){var b=angular.element("<li>");a.ngif&&""!==a.ngif&&b.attr("ng-if",a.ngif),b.attr("ng-class",a.ngclass),b.html(a.msg),e.append(b)}),a(e)(b),c.append(e)}}}]).directive("vnPopoverRegion",["$compile",function(a){"use strict";return{restrict:"E",scope:!0,templateUrl:"popover/vn-popover.tpl.html",replace:!0,link:function(b,c){b.location="top-left",b.title="Region must:";var d=[{ngclass:"regionRequired",ngif:"",msg:"Not be <strong>empty</strong>"},{ngclass:"regionAllowedChars",ngif:"regionDisallowedChars != null",msg:'Not contain <strong>{{ regionDisallowedChars.join("") }}</strong>'}],e=angular.element("<ul>");angular.forEach(d,function(a){var b=angular.element("<li>");a.ngif&&""!==a.ngif&&b.attr("ng-if",a.ngif),b.attr("ng-class",a.ngclass),b.html(a.msg),e.append(b)}),a(e)(b),c.append(e)}}}]).directive("vnPopoverState",["$compile",function(a){"use strict";return{restrict:"E",scope:!0,templateUrl:"popover/vn-popover.tpl.html",replace:!0,link:function(b,c){b.location="top-left -dropdown",b.title="State must:";var d=[{ngclass:"stateEmpty",ngif:"",msg:"Be <strong>selected</strong>"}],e=angular.element("<ul>");angular.forEach(d,function(a){var b=angular.element("<li>");a.ngif&&""!==a.ngif&&b.attr("ng-if",a.ngif),b.attr("ng-class",a.ngclass),b.html(a.msg),e.append(b)}),a(e)(b),c.append(e)}}}]).directive("vnPopoverZip",["$compile",function(a){"use strict";return{restrict:"E",scope:!0,templateUrl:"popover/vn-popover.tpl.html",replace:!0,link:function(b,c){b.location="top",b.title="Zip code must:";var d=[{ngclass:"zipHasValidFormat",ngif:"",msg:"Be formatted as 99999[-9999]"}],e=angular.element("<ul>");angular.forEach(d,function(a){var b=angular.element("<li>");a.ngif&&""!==a.ngif&&b.attr("ng-if",a.ngif),b.attr("ng-class",a.ngclass),b.html(a.msg),e.append(b)}),a(e)(b),c.append(e)}}}]).directive("vnPopoverPostalCode",["$compile",function(a){"use strict";return{restrict:"E",scope:!0,templateUrl:"popover/vn-popover.tpl.html",replace:!0,link:function(b,c){b.location="top",b.title="Postal code must:";var d=[{ngclass:"postalCodeEmpty",ngif:"",msg:"Not be empty"},{ngclass:"postalCodeAllowedChars",ngif:"postalCodeDisallowedChars != null",msg:'Not contain <strong>{{ postalCodeDisallowedChars.join("") }}</strong>'}],e=angular.element("<ul>");angular.forEach(d,function(a){var b=angular.element("<li>");a.ngif&&""!==a.ngif&&b.attr("ng-if",a.ngif),b.attr("ng-class",a.ngclass),b.html(a.msg),e.append(b)}),a(e)(b),c.append(e)}}}]).directive("vnPopoverUsPhone",["$compile",function(a){"use strict";return{restrict:"E",scope:!0,templateUrl:"popover/vn-popover.tpl.html",replace:!0,link:function(b,c){b.location="top",b.title="Phone number must:";var d=[{ngclass:"usPhoneHasValidFormat",ngif:"",msg:"Be formatted as (999) 999-9999 ext.9999"}],e=angular.element("<ul>");angular.forEach(d,function(a){var b=angular.element("<li>");a.ngif&&""!==a.ngif&&b.attr("ng-if",a.ngif),b.attr("ng-class",a.ngclass),b.html(a.msg),e.append(b)}),a(e)(b),c.append(e)}}}]).directive("vnPopoverRequired",["$compile",function(a){"use strict";return{restrict:"E",scope:!0,templateUrl:"popover/vn-popover.tpl.html",replace:!0,link:function(b,c,d){b.location=d.location||"bottom",b.title=(d.field||"Field")+" must:";var e=[{ngclass:"requiredFieldFilled",ngif:"",msg:"Not be <strong>empty</strong>"}],f=angular.element("<ul>");angular.forEach(e,function(a){var b=angular.element("<li>");a.ngif&&""!==a.ngif&&b.attr("ng-if",a.ngif),b.attr("ng-class",a.ngclass),b.html(a.msg),f.append(b)}),a(f)(b),c.append(f)}}}]),angular.module("Volusion.toolboxCommon").directive("vnProductImage",["$filter",function(a){"use strict";return{templateUrl:"product-image/vn-product-image.tpl.html",restrict:"AE",scope:{product:"=",defaultImage:"="},replace:!0,link:function(b){b.getImagePath=function(c){var d=a("vnProductImageFilter")(c);return""===d?b.defaultImage:d}}}}]),angular.module("Volusion.toolboxCommon").directive("vnSearchForm",["vnSearchManager",function(a){return{templateUrl:"product-search/vnSearchForm.tpl.html",restrict:"AE",replace:!0,scope:{searchTerm:"=",showSearch:"="},link:function(b,c,d){c.bind("click",function(){c.find("input").focus()}),b.searchTerm=b.searchTerm||a.getSearchText(),b.allowCollapse=d.allowCollapse&&!!JSON.parse(d.allowCollapse),b.doSearch=function(){a.updateSearch(b.searchTerm),b.showSearch=!1,b.showSearch&&(b.showSearch=!1)},b.$watch(function(){return a.getSearchText()},function(a){b.searchTerm=a||""},!0)}}}]),angular.module("Volusion.toolboxCommon").factory("vnSearchManager",["$route","$location","vnProductParams",function(a,b,c){function d(){return c.getSearchText()}function e(d){c.updateSearch(d),b.search("q",d),"/search"!==b.path()&&b.path("/search"),a.reload()}return{getSearchText:d,updateSearch:e}}]),angular.module("Volusion.toolboxCommon").controller("ReviewDetailsCtrl",["$rootScope","$scope","$filter","vnCheckout","vnCreditCardClass","lodash",function(a,b,c,d,e,f){"use strict";var g=d.get();b.orderId=g.orderId,b.userEmail=g.user.email,b.isShippingLocationUS="United States"===g.cart.shippingAddress.country,b.shippingAddress=g.cart.shippingAddress,b.shippingMethod=f.find(g.cart.shippingMethods,function(a){return a.selected===!0}),b.isBillingLocationUS="United States"===g.cart.billingAddress.country,b.billingAddress=g.cart.billingAddress,b.payment=g.cart.paymentProfile,b.payment.total=g.cart.totals,b.payment.ccCssClass=e(b.payment.CardTypeName)["class"],b.$watch("checkout.cart.shippingMethods",function(){b.shippingMethod=f.find(g.cart.shippingMethods,function(a){return a.selected===!0})})}]),angular.module("Volusion.toolboxCommon").directive("vnReviewDetails",[function(){return{restrict:"A",replace:!0,templateUrl:"review/vn-review-details.html",scope:{shippingAddress:"=",shippingMethod:"=",payment:"=",billingAddress:"="}}}]),angular.module("Volusion.toolboxCommon").directive("vnReview",[function(){return{restrict:"A",replace:!0,templateUrl:"review/vn-review.html",scope:{cart:"=vnReview"}}}]),angular.module("Volusion.toolboxCommon").config(["$locationProvider","$httpProvider","$stateProvider","$urlRouterProvider",function(a,b,c,d){"use strict";function e(){return{url:"/cart",onEnter:["$rootScope",function(a){a.$emit("enterCartState")}],onExit:["$rootScope",function(a){a.$emit("exitCartState")}]}}d.otherwise("/"),c.state("home",{url:"/",templateUrl:"views/home.html",controller:"HomeCtrl",resolve:{translations:["translate",function(a){a.addParts("home"),a.addParts("product")}]}}).state("login",{url:"/login",templateUrl:"login/login.html",controller:"LoginCtrl",resolve:{emptyCart:["vnAppRoute",function(a){return a.checkEmptyCart(this.url.source)}]}}).state("logout",{url:"/logout",template:"",controller:"LogoutCtrl"}).state("forgot-password",{url:"/forget-password",templateUrl:"login/forgot-password.html",controller:"ForgotPasswordCtrl"}).state("my-account-login",{url:"/my-account-login",templateUrl:"login/my-account-login.html"}).state("my-account",{url:"/my-account",templateUrl:"my-account/my-account.html",controller:"MyAccountCtrl",resolve:{loggedIn:["vnUser",function(a){return a.isLoggedIn()}]},ncyBreadcrumb:{label:"My Account"}}).state("my-account.change-email",{url:"/change-email",templateUrl:"my-account/change-email.html",controller:"ChangeEmailCtrl",ncyBreadcrumb:{label:"Change Email"}}).state("my-account.change-password",{url:"/change-password",templateUrl:"my-account/change-password.html",controller:"ChangePasswordCtrl",ncyBreadcrumb:{label:"Change Password"}}).state("my-account.billingaddresses",{url:"/billing-addresses",templateUrl:"my-account/billing-addresses.html",controller:"BillingAddressesCtrl",controllerAs:"vm",ncyBreadcrumb:{label:"Billing Address"}}).state("my-account.shippingaddresses",{url:"/shipping-addresses",templateUrl:"my-account/shipping-addresses.html",controller:"ShippingAddressesCtrl",controllerAs:"vm",ncyBreadcrumb:{label:"Shipping Address"}}).state("my-account.paymentprofiles",{url:"/payment-profiles",templateUrl:"my-account/payment-profiles.html",controller:"PaymentProfilesCtrl",controllerAs:"vm",ncyBreadcrumb:{label:"Payment Profiles"}}).state("my-account.orders",{url:"/orders","abstract":!0,templateUrl:"my-account/orders.html"}).state("my-account.orders.list",{url:"/list",templateUrl:"my-account/orders.list.html",controller:"ListOrdersCtrl",controllerAs:"vm",ncyBreadcrumb:{label:"Orders",parent:"my-account"}}).state("my-account.orders.detail",{url:"/:id",templateUrl:"my-account/orders.detail.html",controller:"OrdersDetailCtrl",controllerAs:"vm",ncyBreadcrumb:{label:"Order Details",parent:"my-account.orders.list"}}).state("checkout",{url:"/checkout",templateUrl:"checkout/checkout.html",controller:"CheckoutCtrl",resolve:{emptyCart:["vnAppRoute",function(a){return a.checkEmptyCart(this.url.source)}],loggedInOrAnon:["vnAppRoute",function(a){return a.isLoggedInOrAnon()}]}}).state("thank-you",{url:"/thank-you",templateUrl:"thank-you/thank-you.html",controller:"ThankYouCtrl"}).state("product",{url:"/p/:slug",templateUrl:"views/product.html",controller:"ProductCtrl",resolve:{translations:["translate",function(a){return a.addParts("product")}]}}).state("category",{url:"/c/:slug",templateUrl:"views/category.html",controller:"CategoryCtrl",resolve:{params:["vnAppRoute","$location",function(a,b){return a.resolveParams(b.search())}]}}).state("search",{url:"/search",templateUrl:"views/search.html",controller:"SearchCtrl",reloadOnSearch:!1,resolve:{params:["vnAppRoute","$location",function(a,b){return a.resolveParams(b.search())}],translations:["translate",function(a){a.addParts("product")}]}}).state("allProducts",{url:"/all-products",templateUrl:"views/search.html",controller:"SearchCtrl",reloadOnSearch:!1,resolve:{params:["vnAppRoute","$location",function(a,b){return a.resolveParams(b.search())}],translations:["translate",function(a){a.addParts("product")}]}}).state("themeSettings",{url:"/theme-settings",templateUrl:"views/theme-settings.html",controller:"ThemeSettingsCtrl"}).state("article",{url:"/:slug",templateUrl:"views/article.html",controller:"PageCtrl",resolve:{article:["vnApi","$route",function(a,b){return a.Article().get({slug:b.current.params.slug}).$promise}]}}),c.state("home.cart",e()).state("product.cart",e()).state("category.cart",e()).state("search.cart",e()).state("allProducts.cart",e()).state("themeSettings.cart",e()).state("article.cart",e()).state("login.cart",e()).state("forget-password.cart",e()).state("my-account.cart",e()).state("my-account.billingaddresses.cart",e()).state("my-account.shippingaddresses.cart",e()).state("my-account.paymentprofiles.cart",e()).state("my-account.orders.cart",e()).state("my-account.orders.detail.cart",e()).state("my-account-login.cart",e()).state("my-account.change-email.cart",e()).state("my-account.change-password.cart",e()).state("thank-you.cart",e())}]),angular.module("Volusion.toolboxCommon").directive("vnScrollToAnchor",["$location","$anchorScroll",function(a,b){return{restrict:"AC",compile:function(){return function(c,d,e){d.bind("click",function(c){c.preventDefault(),a.hash(e.vnScrollToAnchor),b()})}}}}]),angular.module("Volusion.toolboxCommon").factory("notifications",["$filter","vnAppMessageService",function(a,b){"use strict";function c(a,c){b.addMessage({type:a,text:c})}function d(){c("success",a("translate")("message.CART_ADD_SUCCESS"))}function e(){c("success",a("translate")("message.CART_UPDATE_SUCCESS"))}function f(b){if(b&&b.length>0){var d,e,f=a("translate");angular.forEach(b,function(a){e="message."+a.Code,d=f(e),d=d&&d!==e?d:a.Message,c("warning",d)})}}function g(b){if(b&&b.length>0){var d,e,f=a("translate");angular.forEach(b,function(a){e="message."+a.Code,d=f(e),d=d&&d!==e?d:a.Message,d=d||f("message.CART_UNKNOWN"),c("danger",d)})}}return{displaySuccessfulAddition:d,displaySuccessfulUpdate:e,displayWarnings:f,displayErrors:g}}]),angular.module("Volusion.toolboxCommon").factory("vnAppRoute",["$q","$rootScope","$route","$location","$routeParams","vnProductParams","vnSortDefault","vnCart","vnUser","$state",function(a,b,c,d,e,f,g,h,i,j){function k(a){a&&(l(),m(),o(),n(),p(),r(),q())}function l(){"search"===t()&&""!==f.getCategoryString()?d.search("categoryId",f.getCategoryString()):d.search("categoryId",null)}function m(){""!==f.getFacetString()?d.search("facetIds",f.getFacetString()):d.search("facetIds",null)}function n(){""!==f.getMaxPrice()?d.search("maxPrice",f.getMaxPrice()):d.search("maxPrice",null)}function o(){""!==f.getMinPrice()?d.search("minPrice",f.getMinPrice()):d.search("minPrice",null)}function p(){""!==f.getPage()&&"1"!==f.getPage()?d.search("page",f.getPage()):d.search("page",null)}function q(){"/search"===d.path()&&("/search"===d.path()&&""===f.getSearchText()?d.search("q",""):d.search("q",f.getSearchText()))}function r(){""!==f.getSort()&&g!==f.getSort()?d.search("sort",f.getSort()):d.search("sort",null)}function s(a){x=a}function t(){return x}function u(b){var c=a.defer();return f.preLoadData(b),c.resolve(!0),c.promise}function v(c){var d=a.defer(),e=function(){0===h.getCart().items.length?(d.reject(),j.go("home")):"/login"===c?d.resolve():"/checkout"===c&&""===i.getUser().email?(d.reject(),j.go("login")):d.resolve()};if(0===Object.keys(h.getCart()).length)var f=b.$on("cartUpdated",function(){e(),f()});else e();return d.promise}function w(){return i.isLoggedInOrAnon()["catch"](function(){j.go("login")})}var x="";return b.$watch(function(){return f.getParamsObject()},function(){k(f.getParamsObject())},!0),{getRouteStrategy:t,setRouteStrategy:s,resolveParams:u,checkEmptyCart:v,isLoggedInOrAnon:w}}]),angular.module("Volusion.toolboxCommon").factory("vnBem",function(){function a(a,c){var d=[a];return angular.forEach(b(c),function(b){d.push(a+"--"+b)}),d}function b(a){return a=a&&a.replace(/^\s+|\s+$/g,""),a?a.split(/\s+/):[]}return{addClasses:function(b,c){c=c||{};var d=c.block;if(d){var e=a(d,c.blockModifiers),f=c.element;if(!f)return void angular.forEach(e,function(a){b.addClass(a)});var g=a("__"+f,c.elementModifiers);angular.forEach(e,function(a){angular.forEach(g,function(c){b.addClass(a+c)})})}}}}),angular.module("Volusion.toolboxCommon").service("vnCart",["$rootScope","vnApi",function(a,b){"use strict";function c(){return n}function d(){return void 0===n||void 0===n.totals?0:n.totals.qty}function e(){return b.Cart({cartId:""}).get().$promise}function f(){b.Cart({cartId:""}).get().$promise.then(function(b){n=b.data,a.$emit("cartUpdated")})}function g(a){n=a}function h(){n={}}function i(c){return b.Cart().save({cartId:n.id},c).$promise.then(function(b){angular.copy(b.data,n),n.serviceErrors=[],n.warnings=b.warnings||b.data.warnings||[],a.$emit("cartUpdated")})["catch"](function(b){angular.copy(b.data.data,n),n.serviceErrors=b.serviceErrors||b.data.serviceErrors||[],n.warnings=b.warnings||b.data.warnings||[],a.$emit("cartUpdated")})}function j(b){angular.copy(b,n.shippingAddress),a.$emit("vnShippingAddress.updated",b)}function k(b){angular.copy(b,n.billingAddress),a.$emit("vnBillingAddress.updated",b)}function l(a){angular.copy(a,n.paymentProfile)}function m(){return b.Cart().update({cartId:n.id},n).$promise.then(function(b){angular.copy(b.data,n),n.serviceErrors=[],n.warnings=b.warnings||b.data.warnings||[],a.$emit("cartUpdated")})["catch"](function(b){angular.copy(b.data.data,n),n.serviceErrors=b.serviceErrors||b.data.serviceErrors||[],n.warnings=b.warnings||b.data.warnings||[],a.$emit("cartUpdated")})}var n={};return{getCart:c,getCartItemsCount:d,init:f,initWithPromise:e,reset:h,set:g,saveCart:i,setCCPaymentProfile:l,setBillingAddress:k,setShippingAddress:j,updateCart:m}}]),angular.module("Volusion.toolboxCommon").factory("vnCheckout",["$rootScope","$location","$q","vnSiteConfig","vnCart","vnUser","vnApi","vnNotifications",function(a,b,c,d,e,f,g,h){"use strict";function i(){return g.Country().query().$promise}function j(){C.location.label="ww"===C.location.label?"us":"ww",C.location.image="us"===C.location.label?A:B}function k(a){C.billToValid=a}function l(a){C.shipToValid=a}function m(a){C.shipMethodValid=a}function n(a){C.creditCardValid=a}function o(b){angular.forEach(C.steps,function(a){a.active=!1}),void 0!==b&&(C.currentStep=b),C.steps[C.currentStep-1].active=!0,a.$emit("checkout.stepChanged")}function p(a,b){C.steps[a].hasOpenDrawer=b}function q(){return C}function r(){C.steps.length>C.currentStep&&(C.currentStep++,o())}function s(){C.user=f.getUser(),C.cart.customer.id=C.user.id}function t(){C.cart.misc.isGift=!1,C.user.anonymous&&(C.cart.customer.id=C.user.id),g.Orders().save({},C.cart).$promise.then(function(c){a.$emit("checkout.orderPlaced"),C.orderId=c.data.id,o(1),b.path("/thank-you")})["catch"](function(b){a.$emit("checkout.orderPlaced"),console.log(b),h.displayErrors(b)})}function u(){1<C.currentStep&&(C.currentStep--,o())}function v(a){e.setCCPaymentProfile(a)}function w(a){e.setBillingAddress(a)}function x(b){e.setShippingAddress(b),a.$emit("checkout.shippingaddress.changed")}function y(){e.updateCart()}function z(){var a=c.defer();return e.initWithPromise().then(function(a){e.set(a.data),C.cart=e.getCart()}).then(function(){a.resolve(C)})["catch"](function(b){a.reject(b)}),a}var A="images/us-flag.png",B="images/worldwide-flag.png",C={config:{PCIaaS:{}},location:{label:"us",image:A},cart:{},orderId:-1,currentStep:1,steps:[{active:!0,hasOpenDrawer:!1},{active:!1,hasOpenDrawer:!1},{active:!1,hasOpenDrawer:!1}],shipToValid:!1,shipMethodValid:!1,billToValid:!1,creditCardValid:!1};return d.getConfig().then(function(b){C.config=b.data.checkout,C.config.PCIaaS=b.data.PCIaaS,a.$emit("PCIaaS.updated")}),{get:q,getCountries:i,initCart:z,nextStep:r,placeOrder:t,prevStep:u,setStep:o,setCreditCardValidity:n,setBillingAddress:w,setBillToValidity:k,setCCPaymentProfile:v,setShippingAddress:x,setShipToValidity:l,setShipMethodValidity:m,setUser:s,setHasOpenDrawer:p,toggleLocation:j,updateCart:y}}]),angular.module("Volusion.toolboxCommon").factory("vnContentManager",function(){"use strict";function a(){return k}function b(){return l}function c(){return m}function d(){return n}function e(){k=!1}function f(){l=!1}function g(){k=!0,m=!1}function h(){l=!0,n=!1}function i(){k=!1,m=!0}function j(){l=!1,n=!0}var k=!0,l=!0,m=!1,n=!1;return{getFooterState:a,getHeaderState:b,getCheckoutFooterState:c,getCheckoutHeaderState:d,hideAppFooter:e,hideAppHeader:f,showAppFooter:g,showAppHeader:h,showCheckoutAppFooter:i,showCheckoutAppHeader:j}}),angular.module("Volusion.toolboxCommon").service("vnCreditCardClass",function(){return function(a){switch(angular.isString(a)?a.toUpperCase():a){case"AMEX":case"AMERICAN EXPRESS":case"7":case 7:return{type:7,"class":"th-credit-card--amex",name:"American Express"};case"VISA":case"5":case 5:return{type:5,"class":"th-credit-card--visa",name:"Visa"};case"MC":case"MASTERCARD":case"6":case 6:return{type:6,"class":"th-credit-card--mastercard",name:"MasterCard"};case"DISC":case"DISCOVER":case"8":case 8:return{type:8,"class":"th-credit-card--discover",name:"Discover"};default:return{type:0,"class":"th-credit-card--unknown",name:"Unknown"}}}}),angular.module("Volusion.toolboxCommon").factory("vnGeo",["$resource",function(a){"use strict";function b(){return a("https://freegeoip.net/json",{},{query:{method:"GET",isArray:!1}})}return{locate:b}}]),angular.module("Volusion.toolboxCommon").factory("vnHttpResponseInterceptor",["$q","$rootScope",function(a,b){return{response:function(b){return b||a.when(b)},responseError:function(c){return 401===c.status&&b.$emit("VN_UNAUTHORIZED_ERROR",{err:c},{status:c.status,message:c.data,resource:c.headers("resource")||""}),500===c.status&&b.$emit("VN_HTTP_500_ERROR",{err:c},{status:c.status,message:c.data,resource:c.headers("resource")||""}),a.reject(c)}}}]),angular.module("Volusion.toolboxCommon").factory("vnNotifications",["$filter","vnAppMessageService",function(a,b){"use strict";function c(a,c){b.addMessage({ +type:a,text:c})}function d(b){var d,e,f=a("translate");b&&b.length>0&&angular.forEach(b,function(a){e="message."+a.Code,d=f(e),d=d&&d!==e?d:a.Message,c("warning",d)})}function e(b){var d,e,f=a("translate");b&&b.length>0&&angular.forEach(b,function(a){e="message."+a.Code,d=f(e),d=d&&d!==e?d:a.Message,d=d||a,c("danger",d)})}return{displayWarnings:d,displayErrors:e,displayMsg:c}}]),angular.module("Volusion.toolboxCommon").factory("vnPayment",["$rootScope","$resource","$timeout","$q","$filter","vnCheckout","vnPCIaaS",function(a,b,c,d,e,f,g){"use strict";function h(){return A}function i(a){A.cardNumber=a.cardNumber,A.ExpireMonth=a.expMonth,A.ExpireYear=a.expYear,A.CardType=a.cardType,A.CardTypeName=a.cardTypeName,A.CardID=a.pCIaaSId}function j(a){A.CardID=a}function k(a){A.PersistCard=a}function l(a){A.CardHolderName=a}function m(a){A.cardNumber=a}function n(a){A.ExpireMonth=a}function o(a){A.ExpireYear=a}function p(a){A.CVV=a}function q(a){A.CardTypeName=a,A.CardType=e("filter")(x.config.creditCardsAccepted,function(b){return b.name.toLowerCase()===a.toLowerCase()?b.id:void 0})[0],A.CardType=void 0!==A.CardType?A.CardType.id:-1}function r(){angular.copy({cardNumber:"",mask:{},MerchantId:"",CardID:"",PersistCard:"",CardHolderName:"",ExpireMonth:"",ExpireYear:"",CVV:"",CardType:"",CardTypeName:""},A)}function s(a){return Object.getOwnPropertyNames(a).length>0?!1:!0}function t(){A.CVV=A.CVV.replace(/./g,y.maskCharacter),A.cardNumber=A.mask.display,A.mask.sent=""}function u(a){if(a&&!s(A.mask))return A.mask;var b=A.cardNumber,c=new RegExp(y.maskPattern),d=b.match(c),e=b,f=[],g=y.maskCharacter,h="";if(null!==d){for(var i=1;i<d.length;i++){h="";for(var j=0;j<d[i].length;j++)h+=g;e=e.replace(d[i],h)}for(var k=e.length-1;k>=0;k--)f.unshift(e.charAt(k)===g?b.charAt(k):g);return A.mask={display:e,sent:f.join("")},A.mask}return{display:b,sent:b}}function v(){var a={};switch(a.NumberPart=-1===A.cardNumber.indexOf(y.maskCharacter)?u(!1).sent:A.cardNumber,a.CVV=A.CVV,A.CardTypeName.toUpperCase()){case"AMERICAN EXPRESS":a.CardType="AMEX";break;case"VISA":a.CardType="VISA";break;case"MASTERCARD":a.CardType="MC";break;case"DISCOVER":a.CardType="DISC"}return JSON.stringify(a)}function w(){var a=d.defer(),b=v();return A.MerchantId=x.config.PCIaaS.merchantId,""!==A.CardID?g.Card(z.update.uri(A.CardID),A.MerchantId).update(b).$promise.then(function(){t(),a.resolve(A)})["catch"](function(b){console.log(b),a.reject(b)}):g.Card(z.save.uri(),A.MerchantId).save(b).$promise.then(function(b){console.log(b);for(var c=0,d="";b[c];)d+=b[c],c++;A.CardID=d,t(),a.resolve(A)})["catch"](function(b){console.log(b),a.reject(b)}),a.promise}var x=f.get(),y={maskPattern:"^(\\d+?)\\d{4}$",maskCharacter:"*"},z={base:{uri:function(){return x.config.PCIaaS.url+"/cards/"}},save:{uri:function(){return z.base.uri()},method:"POST"},update:{uri:function(a){return z.base.uri()+a.toString()},method:"PUT"}},A={cardNumber:"",mask:{},MerchantId:"",CardID:"",PersistCard:"",CardHolderName:"",ExpireMonth:"",ExpireYear:"",CVV:"",CardType:"",CardTypeName:""};return{getCard:h,process:w,reset:r,setCardFrom:i,setCardId:j,setPersistCard:k,setCardHolderName:l,setCardNumber:m,setCvv:p,setExpireMonth:n,setExpireYear:o,setCardType:q}}]),angular.module("Volusion.toolboxCommon").factory("vnPciaasIframe",function(){var PCIaaS=null;return window.JSON||(window.JSON={},function(){function k(a){return 10>a?"0"+a:a}function o(a){return p.lastIndex=0,p.test(a)?'"'+a.replace(p,function(a){var b=r[a];return"string"==typeof b?b:"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)})+'"':'"'+a+'"'}function l(a,b){var c,d,f,g,h,j=e,k=b[a];switch(k&&"object"==typeof k&&"function"==typeof k.toJSON&&(k=k.toJSON(a)),"function"==typeof i&&(k=i.call(b,a,k)),typeof k){case"string":return o(k);case"number":return isFinite(k)?String(k):"null";case"boolean":case"null":return String(k);case"object":if(!k)return"null";if(e+=n,h=[],"[object Array]"===Object.prototype.toString.apply(k)){for(g=k.length,c=0;g>c;c+=1)h[c]=l(c,k)||"null";return f=0===h.length?"[]":e?"[\n"+e+h.join(",\n"+e)+"\n"+j+"]":"["+h.join(",")+"]",e=j,f}if(i&&"object"==typeof i)for(g=i.length,c=0;g>c;c+=1)"string"==typeof i[c]&&(d=i[c],(f=l(d,k))&&h.push(o(d)+(e?": ":":")+f));else for(d in k)Object.prototype.hasOwnProperty.call(k,d)&&(f=l(d,k))&&h.push(o(d)+(e?": ":":")+f);return f=0===h.length?"{}":e?"{\n"+e+h.join(",\n"+e)+"\n"+j+"}":"{"+h.join(",")+"}",e=j,f}}"function"!=typeof Date.prototype.toJSON&&(Date.prototype.toJSON=function(){return isFinite(this.valueOf())?this.getUTCFullYear()+"-"+k(this.getUTCMonth()+1)+"-"+k(this.getUTCDate())+"T"+k(this.getUTCHours())+":"+k(this.getUTCMinutes())+":"+k(this.getUTCSeconds())+"Z":null},String.prototype.toJSON=Number.prototype.toJSON=Boolean.prototype.toJSON=function(){return this.valueOf()});var q=/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,p=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,e,n,r={"\b":"\\b"," ":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"},i;"function"!=typeof JSON.stringify&&(JSON.stringify=function(a,b,c){var d;if(n=e="","number"==typeof c)for(d=0;c>d;d+=1)n+=" ";else"string"==typeof c&&(n=c);if((i=b)&&"function"!=typeof b&&("object"!=typeof b||"number"!=typeof b.length))throw Error("JSON.stringify");return l("",{"":a})}),"function"!=typeof JSON.parse&&(JSON.parse=function(a,e){function c(a,b){var d,f,g=a[b];if(g&&"object"==typeof g)for(d in g)Object.prototype.hasOwnProperty.call(g,d)&&(f=c(g,d),void 0!==f?g[d]=f:delete g[d]);return e.call(a,b,g)}var d,a=String(a);if(q.lastIndex=0,q.test(a)&&(a=a.replace(q,function(a){return"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)})),/^[\],:{}\s]*$/.test(a.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]").replace(/(?:^|:|,)(?:\s*\[)+/g,"")))return d=eval("("+a+")"),"function"==typeof e?c({"":d},""):d;throw new SyntaxError("JSON.parse")})}()),function(a){var b,c,d,e,f=function(){var a=navigator.userAgent,b=/Firefox\/(\d+)/i,c=a.match(b),d=parseInt(c?c[1]||!1:!1),e=isNaN(d)?!1:d;return e}(),g={base:{uri:function(){return s(q.get("apiBase"))+"/cards/"}},save:{uri:function(){return g.base.uri()},method:"POST"},update:{uri:function(a){return g.base.uri()+a.toString()},method:"PUT"}},h=1,i=window.postMessage&&-1===navigator.userAgent.indexOf("Opera"),j="/Assets/pci_receiver.html?&parenturl="+encodeURIComponent(location.href)+"&parentdomain="+encodeURIComponent(location.protocol+"//"+location.host),k=function(a){var b=/^https?:\/\/[^/]+/i;return q.get("apiBase").match(b)[0]===a.origin.match(b)[0]},l=i?function(b){b&&(e&&l(!1),e=function(c){return c||(c=window.event),"ready"===c.data?(a.requestCallback(),!1):k(c)?void b(c):!1}),f&&4>f?window.addEventListener("message",e,!1):window.onmessage=e}:function(b){c&&clearInterval(c),c=null,c=setInterval(function(){var c=document.location.hash,e=/^#?\d+&/;return c!==d&&"ready"===c.replace(e,"")?void a.requestCallback():void(c!==d&&e.test(c)&&(d=c,b({data:c.replace(e,"")})))},100)},m=i?function(a,b){b.postMessage(a,s(q.get("apiBase")))}:function(a,b){var c=(s(q.get("apiBase"))+j).replace(/#.*$/,"")+"#"+ +new Date+h++ +"&"+a;b.location=c},n=function(c,d,e,f){var g=function(){m(c+"|||||"+d+"|||||"+e+"|||||"+f,b.contentWindow||b)};a.requestCallback=g,l(function(a){G(a.data)},s(q.get("apiBase"))),b=document.createElement("iframe"),b.style.position="absolute",b.style.left="-9999px",b.style.width="1px",b.style.height="1px",b.src=s(q.get("apiBase"))+j,document.getElementsByTagName("body")[0].appendChild(b)},o={maskPattern:"^(\\d+?)\\d{4}$",maskCharacter:"*",apiBase:window.location.protocol+"//pci."+window.location.hostname.replace("www.","")},p={error:function(a){for(var b=0;b<a.length;b++)throw"PCIaaS Error "+a[b].majorCode+": "+a[b].minorCode+": "+a[b].message}},q={get:function(a){var b=a in q?q[a]:o[a];return b?b:void x.add("-1","2",u(t.settingMissing,a))},set:function(a,b){if("object"==typeof a)for(var c in a)q[c]=a[c];else q[a]=void 0!==b?b:o[a];return q}},r=/\/$/,s=function(a){return a?a.replace(r,""):void 0},t={cardNumberInvalid:"The card number is missing or in an unrecognized format.",unknownError:"There was a processing error. Please try again.",crossDomainError:"Cannot make request due to same-origin policy. {0} cannot be accessed via AJAX from {1}.",maskFailure:"The masking pattern provided does not match the card number.",missingFields:"Missing fields object. Pass a fields object to the PCIaaS function.",fieldMissing:'Field "{0}" missing or invalid.',settingMissing:'Setting "{0}" missing or invalid.'},u=function(){for(var a=Array.prototype.slice.call(arguments,1),b=arguments[0],c=0;c<a.length;c++)b=b.replace("{"+c+"}",a[c]);return b},v=new RegExp("[\\s-]","g"),w=function(){var a=[[function(){var a=z.getValue("CardNumber",!0),b=q.get("maskCharacter");if(!a)return!1;if(-1!=a.indexOf(b))return a.match(new RegExp("[^"+b+"\\d]"))||!a.match(/\d/)?!1:!0;a=a.replace(v,"");var c,d,e,f,g;for(f="",c=0;c<a.length;c++)e=parseInt(a.charAt(c),10),e>=0&&9>=e&&(f=e+f);if(f.length<=1)return!1;for(g="",c=0;c<f.length;c++)e=parseInt(f.charAt(c),10),c%2!=0&&(e*=2),g+=e;for(d=0,c=0;c<g.length;c++)e=parseInt(g.charAt(c),10),d+=e;return 0!=d&&d%10==0?!0:!1},"-1","3",t.cardNumberInvalid]];return function(){for(var b=a.length-1;b>=0;b--)a[b][0]()||x.add(a[b][1],a[b][2],a[b][3]);return 0===x.number()}}(),x={add:function(a,b,c){c in x._register||(x._stack.push({majorCode:a,minorCode:b,message:c}),x._register[c]=!0)},clear:function(){x._stack=[],x._register={}},get:function(){var a=x._stack.slice(0);return x.clear(),a},number:function(){return x._stack.length},_register:{},_stack:[]},y=function(a){return x.add("-1","2",u(t.fieldMissing,a))},z={get:function(a,b){return b?z[a]:a in z?z[a]:y(a)},getValue:function(a,b){var c="";if(z[a])if(z[a].tagName)switch(z[a].tagName.toLowerCase()){case"select":c=z[a].getElementsByTagName("option")[z[a].selectedIndex].value;break;case"textarea":c=z[a].innerHTML;break;case"input":switch(z[a].type){case"checkbox":case"radio":c=z[a].checked;break;default:c=z[a].value}}else c="function"==typeof z[a]?z[a]():"";return b?c:""===c?y(a):c},set:function(a,b){if("object"==typeof a)for(var c in a)z.set(c,a[c]);else z[a]=b.nodeType?b:document.getElementById(b)||("function"==typeof b?b:"");return z},setValue:function(a,b){var c=z.get(a,!0);return c.nodeType?c.value=b:"function"==typeof c?c(b):"string"==typeof c||"boolean"==typeof c?z[a]=b:void 0}},A=null,B=["PersistCard","CardHolderName","ExpireMonth","ExpireYear","CVV"],C=["CardType"],D=function(a){var b={MerchantId:q.get("merchantID")},c=z.getValue("HiddenCardID",!0),d=z.getValue("CardNumber",a);if(!d)return x.add("-1","4",t.cardNumberInvalid),!1;b.NumberPart=-1===d.indexOf(q.get("maskCharacter"))?J("nocache",a).toSend:"";for(var e=0;e<C.length;e++)b[C[e]]=z.getValue(C[e],a);for(var f=0;f<B.length;f++)B[f]in z&&""!=z.getValue(B[f],!0).toString()&&(b[B[f]]=z.getValue(B[f],!0));return c&&!a&&(b.CardId=c),JSON.stringify(b)},E=function(){return D(!0)!==A},F=function(a){var b=z.getValue("HiddenCardID",!0);if(x.clear(),a||E()){if(!w())return p.error(x.get()),!1;var c,d=D();if(!d)return p.error(x.get()),!1;if(p.preprocess&&(c=p.preprocess(d)),c===!1)return!1;if("string"==typeof c&&(d=c),0!==x.number())return p.error(x.get()),!1;A=D(!0);var e=b?g.update.uri(b):g.save.uri(),f=b?g.update.method:g.save.method;n(e,d,f,q.get("merchantID"))}else p.success&&p.success(JSON.stringify({IsSuccessful:!0,CardId:b}),z.getValue("CardNumber"),null)},G=function(a){if(document.getElementsByTagName("body")[0].removeChild(b),a=JSON.parse(a),a.IsSuccessful){a.CardId&&z.setValue("HiddenCardID",a.CardId);var c=J("cached",!0);p.success&&p.success(a,c)}else H(a)},H=function(a){if(a&&a.Items)for(var b=0;b<a.Items.length;b++)x.add(a.Items[b].MajorCode,a.Items[b].MinorCode,a.Items[b].Message);else x.add("-1","-1",t.unknownError);p.error(x.get())},I="",J=function(a,b){if("cached"==a&&""!==I)return I;var c=z.getValue("CardNumber",b).replace(v,""),d=new RegExp(q.get("maskPattern")),e=c.match(d),f=c,g=[],h=q.get("maskCharacter"),i="";if(null!==e){for(var j=1;j<e.length;j++){i="";for(var k=0;k<e[j].length;k++)i+=h;f=f.replace(e[j],i)}for(var l=f.length-1;l>=0;l--)g.unshift(f.charAt(l)===h?c.charAt(l):h);return I={toDisplay:f,toSend:g.join("")}}return{toDisplay:c,toSend:c}},K=function(a){var b=a||J("cached");b&&(z.setValue("CardNumber",b.toDisplay),z.getValue("CVV")&&z.setValue("CVV",z.getValue("CVV").replace(/./g,q.get("maskCharacter"))))},L=function(a){if(a.settings&&q.set(a.settings),a.events)for(var b in a.events)p[b]=a.events[b];return a.fields?z.set(a.fields):(x.add("-1","2",t.missingFields),p.error(x.get())),{settings:q,fields:z,events:p,process:F,applyMask:K}};"function"==typeof define&&define.amd&&define(function(){return L}),PCIaaS=L}(window),{PCIaaS:PCIaaS}}),angular.module("Volusion.toolboxCommon").factory("vnPCIaaS",["$resource",function(a){"use strict";function b(b,c){var d={resource:"PCIaaS","Content-Type":"application/json",Accept:"application/json",MerchantId:c};return a(b,{},{save:{method:"POST",withCredentials:!0,headers:d},update:{method:"PUT",withCredentials:!0,headers:d}})}return{Card:b}}]),angular.module("Volusion.toolboxCommon").factory("vnImagePreloader",["$q","$rootScope",function(a,b){"use strict";function c(b){this.imageLocations=b,this.imageCount=this.imageLocations.length,this.loadCount=0,this.errorCount=0,this.states={PENDING:1,LOADING:2,RESOLVED:3,REJECTED:4},this.state=this.states.PENDING,this.deferred=a.defer(),this.promise=this.deferred.promise}return c.preloadImages=function(a){var b=new c(a);return b.load()},c.prototype={constructor:c,isInitiated:function(){return this.state!==this.states.PENDING},isRejected:function(){return this.state===this.states.REJECTED},isResolved:function(){return this.state===this.states.RESOLVED},load:function(){if(this.isInitiated())return this.promise;this.state=this.states.LOADING;for(var a=0;a<this.imageCount;a++)this.loadImageLocation(this.imageLocations[a]);return this.promise},handleImageError:function(a){this.errorCount++,this.isRejected()||(this.state=this.states.REJECTED,this.deferred.reject(a))},handleImageLoad:function(a){this.loadCount++,this.isRejected()||(this.deferred.notify({percent:Math.ceil(this.loadCount/this.imageCount*100),imageLocation:a}),this.loadCount===this.imageCount&&(this.state=this.states.RESOLVED,this.deferred.resolve(this.imageLocations)))},loadImageLocation:function(a){var c=this,d=$(new Image).load(function(a){b.$apply(function(){c.handleImageLoad(a.target.src),c=d=a=null})}).error(function(a){b.$apply(function(){c.handleImageError(a.target.src),c=d=a=null})}).prop("src",a)}},c}]),angular.module("Volusion.toolboxCommon").factory("vnProductParams",function(){"use strict";function a(a){I.length=0,I.push(a),K.categoryIds=d()}function b(a){J.push(a),K.facets=e()}function c(){return K.accessoriesOf}function d(){return I.join(",")}function e(){return J.join(",")}function f(){return K.maxPrice}function g(){return K.minPrice}function h(){return K.page}function i(){return K.pageSize}function j(){return K}function k(){return K.search}function l(){return K.sort}function m(a){return J.indexOf(a)>-1}function n(){K.page++}function o(c){if(c.categoryId&&a(parseInt(c.categoryId)),c.facetIds){var d=c.facetIds.split(",");angular.forEach(d,function(a){m(parseInt(a))||b(parseInt(a))})}c.minPrice&&D(c.minPrice),c.maxPrice&&C(c.maxPrice),c.q&&H(c.q),c.sort&&G(c.sort),c.page&&E(c.page)}function p(){K.page--}function q(){K.slug=""}function r(){K.search=""}function s(){K.minPrice=""}function t(){K.maxPrice=""}function u(){K.accessoriesOf=""}function v(a){var b=I.indexOf(a);I.splice(b,1),K.categoryIds=d()}function w(a){var b=J.indexOf(a);J.splice(b,1),K.facets=e()}function x(){K.sort=""}function y(){I=[],K.categoryIds=""}function z(){J=[],K.facets=""}function A(){I=[],J=[],K={categoryIds:"",slug:"",facets:"",minPrice:"",maxPrice:"",accessoriesOf:"",sort:"",page:"",pageSize:""}}function B(a){K.accessoriesOf=a}function C(a){K.maxPrice=a}function D(a){K.minPrice=a}function E(a){K.page=a}function F(a){K.pageSize=a}function G(a){K.sort=a}function H(a){K.search=decodeURIComponent(a)}var I=[],J=[],K={categoryIds:"",slug:"",facets:"",minPrice:"",maxPrice:"",accessoriesOf:"",sort:"",page:"",pageSize:""};return{addCategory:a,addFacet:b,getAccessoriesOf:c,getCategoryString:d,getFacetString:e,getMaxPrice:f,getMinPrice:g,getPage:h,getPageSize:i,getParamsObject:j,getSearchText:k,getSort:l,isFacetSelected:m,nextPage:n,preLoadData:o,previousPage:p,removeSlug:q,removeSearch:r,removeMinPrice:s,removeMaxPrice:t,removeAccessoriesOf:u,removeCategory:v,removeFacet:w,removeSort:x,resetCategories:y,resetFacets:z,resetParams:A,setAccessoriesOf:B,setMaxPrice:C,setMinPrice:D,setPage:E,setPageSize:F,setSort:G,updateSearch:H}}),angular.module("Volusion.toolboxCommon").factory("vnProduct",["vnImagePreloader",function(a){"use strict";function b(){var a=[];if(!q.options)return a;for(var c=0;c<q.options.length;c++){var d=q.options[c];if(d.isRequired&&!d.hasOwnProperty("selected")&&a.push(d.label),d.options.length>0)for(var e=b(d.options),f=0;f<e.length;f++)a.push(e[f].label)}return a}function c(){var a=[];if(!q.options)return a;for(var b=0;b<q.options.length;b++){var c=q.options[b];c.isRequired&&c.derivesToSKU&&a.push(c.label)}return a.length}function d(){var b=[];angular.forEach(q.imageCollections,function(a){angular.forEach(a.images,function(a){b.push(a.medium)})}),a.preloadImages(b)}function e(a){if("undefined"==typeof a)return!0;var b,d=0,e=1===c();return b=q.optionSKUs.filter(function(b){return b.key===a}),b.length>0&&(e||b[0].key.indexOf("|")>-1)?(d=b[0].quantityInStock,null===d||d>0):0===b.length?q.availability.allowBackOrders||null===q.availability.quantityInStock||q.availability.quantityInStock>0:!1}function f(){var a,b=0;if(q.options.length>0&&q.optionSKUs.length>0){for(var c=0;c<q.optionSKUs.length;c++)b|=e(q.optionSKUs[c].key);a=0===b}else a=!q.availability.allowBackOrders&&null!==q.availability.quantityInStock&&q.availability.quantityInStock<=0;return a}function g(){var a=!1;if(0===q.options.length)a=q.availability.allowBackOrders||null===q.availability.quantityInStock||q.availability.quantityInStock>0;else{var b=1===q.options.length?q.optionSelection.option.key+":"+q.optionSelection.option.selected:q.optionSelection.key;a=e(b)}return a}function h(a){return q=a,q.optionSelection={option:{selected:"default"}},q.imageCollections.length>0&&q.imageCollections[0].images.length>0&&(q.image=q.imageCollections[0].images[0]),d(),q}function i(a,b){q.sharing={facebook:"http://www.facebook.com/sharer.php?u="+a+"&t="+b,twitter:"http://twitter.com/share?url="+a+"&text="+b,tumblr:"http://www.tumblr.com/share/link?url="+a+"&name="+b,googlePlus:"https://plus.google.com/share?url="+a}}function j(a){q.isEditable=a}function k(a){angular.forEach(q.imageCollections,function(b){b.key===a&&(q.image=b.images[0],q.currentImageCollection=b.images)})}function l(a){q.optionSelection&&q.optionSelection.quantityInStock-a>=0&&(q.optionSelection.quantityInStock-=a)}function m(){return q.cartItem}function n(){return void 0!==q.image?q.image:null}function o(a){0!==a.length&&(1===a.length&&(a[1]=a[0],a[2]=a[0]),void 0===q.image&&(q.image={}),q.image.medium=a[0],q.image.large=a[1],q.image.small=a[2])}function p(){return q.seo}var q={};return{set:h,setEditable:j,setSocialSharing:i,setProductImage:k,getProductCart:m,getProductImage:n,setProductNoImage:o,setQuantityInStock:l,getProductSEO:p,findAvailability:f,findOptionAvailability:e,findRequiredOptionsAreSelected:b,isSelectionAvailable:g}}]),angular.module("Volusion.toolboxCommon").constant("vnResourceTypes",{article:"article",billingaddresses:"billingaddresses",cart:"cart",category:"category",config:"config",countries:"countries",nav:"nav",orders:"orders",paymentprofiles:"paymentprofiles",product:"product",reviews:"reviews",themesettings:"themesettings",user:"user",shippingaddresses:"shippingaddresses"}),angular.module("Volusion.toolboxCommon").constant("vnSortDefault","relevance"),angular.module("Volusion.toolboxCommon").service("vnUser",["$q","vnApi",function(a,b){"use strict";function c(){return G}function d(){return G.anonymous}function e(){var b=a.defer();return!G.anonymous&&G.email?b.resolve():b.reject(),b.promise}function f(){var b=a.defer();return G.email?b.resolve():b.reject(),b.promise}function g(a){return b.ShippingAddresses().save({},a).$promise}function h(a){return b.BillingAddresses().save({},a).$promise}function i(a){return b.BillingAddresses()["delete"]({id:a.id}).$promise}function j(a){return b.ShippingAddresses()["delete"]({id:a.id}).$promise}function k(a){return b.PaymentProfiles()["delete"]({id:a.id}).$promise}function l(a){return b.PaymentProfiles().save({},a).$promise}function m(){var c=a.defer();return b.User().get().$promise.then(function(d){angular.extend(G,d.data),a.all([b.ShippingAddresses().get().$promise,b.BillingAddresses().get().$promise,b.PaymentProfiles().get().$promise]).then(function(a){G.shippingAddresses=a[0].data,G.billingAddresses=a[1].data,G.paymentProfiles=a[2].data,c.resolve(G)})["catch"](function(a){c.reject(a)})}),c}function n(){var b=a.defer();return o(1,3).then(function(a){b.resolve(a.data)},function(a){b.reject(a)}),b.promise}function o(c,d){var e=a.defer();return b.CustomerOrders().get({page:c,pageSize:d}).$promise.then(function(a){e.resolve(a)},function(a){e.reject(a)}),e.promise}function p(){var c=a.defer();return b.PaymentProfiles().get().$promise.then(function(a){G.paymentProfiles=a.data,c.resolve(a.data)},function(a){c.reject(a)}),c.promise}function q(){var c=a.defer();return b.ShippingAddresses().get().$promise.then(function(a){G.shippingAddresses=a.data,c.resolve(a.data)},function(a){c.reject(a)}),c.promise}function r(){var c=a.defer();return b.BillingAddresses().get().$promise.then(function(a){G.billingAddresses=a.data,c.resolve(a.data)},function(a){c.reject(a)}),c.promise}function s(){var c=a.defer();return b.User().get().$promise.then(function(a){angular.extend(G,a.data),c.resolve(G)},function(a){c.reject(a)}),c.promise}function t(a){return G.email=a.email,G.password=a.password,G.firstName=a.firstName,G.lastName=a.lastName,G.emailOptIn=a.emailOptIn,G.anonymous=a.anonymous,G.autoLogin=a.autoLogin,b.User().save({},G).$promise}function u(a){G.id=a}function v(a){G.email=a}function w(a){G.password=a}function x(a){G.firstName=a}function y(a){G.lastName=a}function z(a){G.emailOptIn=a}function A(a){G.anonymous=a}function B(){G={}}function C(a){return b.BillingAddresses().update({id:a.id},a).$promise}function D(a){return b.ShippingAddresses().update({id:a.id},a).$promise}function E(a){return b.PaymentProfiles().update({id:a.id},a).$promise}function F(){var a=b.User().update({id:G.id},G).$promise;return a.then(function(a){angular.copy(a.data,G),G.serviceErrors=[],G.warnings=a.warnings||a.data.warnings||[]})["catch"](function(a){G.serviceErrors=[],G.warnings=[],a&&(a.serviceErrors&&(G.serviceErrors=a.serviceErrors),a.warnings&&(G.warnings=a.warnings),a.data&&(a.data.data&&angular.copy(a.data.data,G),a.data.serviceErrors&&(G.serviceErrors=a.data.serviceErrors),a.data.warnings&&(G.warnings=a.data.warnings)))}),a}var G={email:"",password:"",firstName:"",lastName:"",emailOptIn:!1,anonymous:!0,customFields:{},autoLogin:!0};return{createFrom:t,getUser:c,getBillingAddresses:r,setBillingAddress:h,deleteBillingAddress:i,deleteShippingAddress:j,deletePaymentProfile:k,getLastThreeOrders:n,getPagedOrders:o,getPaymentProfiles:p,getShippingAddresses:q,setShippingAddress:g,getCurrent:m,getCurrentUser:s,isAnonymous:d,isLoggedIn:e,isLoggedInOrAnon:f,reset:B,setId:u,setEmail:v,setPassword:w,setFirstName:x,setLastName:y,setEmailOptIn:z,setAnonymous:A,setPaymentProfile:l,updateBillingAddress:C,updateShippingAddress:D,updatePaymentProfile:E,updateUser:F}}]),angular.module("Volusion.toolboxCommon").factory("vnUtils",function(){"use strict";var a={};return a.checkDisallowedCharacters=function(a){return unescape(a).match(/[^\w\s!#().?\[\]'"~`\-]+/g)},a.checkDisallowedCharactersForPostalCode=function(a){return unescape(a).match(/[^\w\s\-]+/g)},a}),angular.module("Volusion.toolboxCommon").controller("ShipMethodCtrl",["$scope","vnCheckout",function(a,b){"use strict";var c=1;a.checkout=b.get(),a.currentShippingMethodIdx=0,a.isEditable=function(){return a.checkout.currentStep===c?"edit":"show"},a.setPreferredShippingMethod=function(c){angular.forEach(a.checkout.cart.shippingMethods,function(d){return a.checkout.cart.shippingMethods[c].id===d.id?(a.currentShippingMethodIdx=c,d.selected=!0,void b.setShipMethodValidity(!0)):void(d.selected=!1)}),b.updateCart()}}]),angular.module("Volusion.toolboxCommon").controller("ShipToViewsCtrl",["$scope","$rootScope","$window","vnAddressUtilities","vnCheckout","vnUser",function(a,b,c,d,e,f){var g=this;g.state=null,g.showCopyAddress=!1,g.showSaveButton=!0,g.init=function(){g.checkout=e.get(),g.user=f.getUser(),g.user.anonymous?(g.shippingAddress=d.createEmptyAddress(),g.state="EDITADDRESS"):f.getShippingAddresses().then(function(){g.user.shippingAddresses&&g.user.shippingAddresses.length?(g.shippingAddress=d.getPreferredAddress(g.user.shippingAddresses),g.saveShippingAddress()):(g.shippingAddress=d.createEmptyAddress(),g.state="EDITADDRESS")}),e.getCountries().then(function(a){g.countries=a.data})},g.editShippingAddress=function(){g.state=!g.user.anonymous&&g.user.shippingAddresses&&g.user.shippingAddresses.length?"PICKADDRESS":"EDITADDRESS",a.$emit("vnShipTo.edit")},g.onAddressSelected=function(){g.shippingAddress=d.getPreferredAddress(g.user.shippingAddresses),g.saveShippingAddress()},g.onAddressAdded=function(a){g.shippingAddress=a,g.saveShippingAddress()},g.saveShippingAddress=function(){c.scrollTo(0,0),b.$emit("checkout.stepOneLoading"),e.setShipToValidity(!0),e.setShippingAddress(g.shippingAddress),f.setShippingAddress(g.shippingAddress),e.updateCart(),g.state="VIEWADDRESS",a.$emit("vnShipTo.edit.done")};var h=b.$on("cartUpdated",function(){b.$emit("checkout.stopLoading")});a.$on("$destroy",function(){h()})}]),angular.module("Volusion.toolboxCommon").controller("ThankYouCtrl",["$scope","vnCheckout","lodash","$location",function(a,b,c,d){"use strict";var e=b.get();return"undefined"==typeof e.orderId||-1===e.orderId?void d.path("/"):(a.orderId=e.orderId,a.userEmail=e.user.email,a.checkout=angular.copy(e,{}),b.updateCart(),void(a.shippingMethod=c.find(a.checkout.cart.shippingMethods,function(a){return a.selected===!0})))}]),angular.module("Volusion.toolboxCommon").service("themeSettings",["$q","vnApi",function(a,b){function c(a){for(var b in a)if(a.hasOwnProperty(b))return!1;return!0}function d(){c(g)&&b.ThemeSettings().get().$promise.then(function(a){g=a})}function e(){return g.itemsPerPage||8}function f(){var d=a.defer();return c(g)?b.ThemeSettings().get().$promise.then(function(a){d.resolve(a),g=a}):d.resolve(g),d.promise}var g={};return{init:d,getThemeSettings:f,getPageSize:e}}]),angular.module("Volusion.toolboxCommon").factory("storage",["$window","$cookieStore",function(a,b){function c(){return{get:function(b){var c=a.localStorage.getItem(b);return null===c?d(b):c},set:function(b,c){return a.localStorage.setItem(b,c)},remove:function(b){return a.localStorage.removeItem(b)}}}function d(a){var c=b.get(a);return"undefined"==typeof c?null:c}function e(){return{get:function(a){return d(a)},set:function(a,c){return b.put(a,c)},remove:function(a){return b.remove(a)}}}return"localStorage"in a&&null!==a.localStorage?c():e()}]);var storageKey="VN_TRANSLATE";if(Translate.prototype.getConfig=function(){var a=this.storage,b=JSON.parse(a.get(storageKey))||{},c=a.get("NG_TRANSLATE_LANG_KEY");return!this.disableTranslations&&c&&"undefined"!==c&&(b.lang=c),b},Translate.prototype.configure=function(a){a=angular.extend(this.getConfig(),a),this.storage.set(storageKey,JSON.stringify(a)),this.$translate.use(a.lang)},Translate.prototype.addParts=function(){if(this.disableTranslations)return!0;var a=this.$translatePartialLoader;return angular.forEach(arguments,function(b){a.addPart(b)}),this.$translate.refresh()},TranslateProvider.prototype.$get=["$translate","$translatePartialLoader","storage",function(a,b,c){var d=this.options;return new Translate(a,b,c,{region:d.region,lang:d.lang,country:d.country},d.disableTranslations)}],TranslateProvider.prototype.configure=function(a){a=angular.extend({region:"us",lang:"en",country:"us"},a),a.lang&&this.setPreferredLanguage(a.lang),this.options=a,a.disableTranslations||this.initTranslateProvider(a.lang)},TranslateProvider.prototype.initTranslateProvider=function(a){var b=this.$translateProvider;b.useLoader("$translatePartialLoader",{urlTemplate:"/translations/{part}/{lang}.json"}),"en"===a&&b.useMessageFormatInterpolation(),b.useMissingTranslationHandlerLog(),b.useLocalStorage()},angular.module("Volusion.toolboxCommon").provider("translate",["$translateProvider",TranslateProvider]),angular.module("Volusion.toolboxCommon").filter("vnCreditCard",function(){"use strict";return function(a,b){if(void 0===a||""===a)return a;var c=[];if(b=b.toUpperCase(),(-1!==a.indexOf("*")&&"AMEX"!==b&&"AMERICAN EXPRESS"!==b&&19===a.length||("AMEX"===b||"AMERICAN EXPRESS"===b)&&18===a.length)&&(a=a.replace(/[\s]+/g,"")),"AMEX"===b||"AMERICAN EXPRESS"===b||/^(34)|^(37)/.test(a)){c=a.slice(0,15).match(/(.{0,4})(.{0,6})(.{0,5})$/),c.splice(0,1);for(var d=0;d<c.length;d++)""===c[d]&&(c.splice(d,1),d=0)}else c=a.slice(0,16).match(/.{1,4}/g);return null!==c?c.join(" "):a}}),angular.module("Volusion.toolboxCommon").filter("vnFormattedCurrency",["$filter","$locale",function(a,b){"use strict";return function(c,d){if(void 0===c||null===c)return"";var e=a("currency")(c,d),f=e.split(b.NUMBER_FORMATS.DECIMAL_SEP);return f[1].indexOf("00")>-1?f[0]+f[1].substring(2):f[0]+'<span class="th-price--cents">'+f[1]+"</span>"}}]),angular.module("Volusion.toolboxCommon").filter("html",["$sce",function(a){"use strict";return function(b){return a.trustAsHtml(b)}}]),angular.module("Volusion.toolboxCommon").filter("reverse",function(){"use strict";return function(a){return void 0===a?null:a.slice().reverse()}}),angular.module("Volusion.toolboxCommon").filter("seoFriendly",function(){"use strict";return function(a){var b=a.match(/[0-9a-z]+/gi);return b?b.join("-"):""}}),angular.module("Volusion.toolboxCommon").filter("vnUsPhone",function(){"use strict";return function(a){if(void 0===a||""===a)return a;a=a.replace(/[^\d]+/g,"");var b,c="";return b=a.slice(0,14).match(/(.{0,3})(.{0,3})(.{0,4})(.{0,4})$/),b.splice(0,1),3!==b[0].length?a:(c="("+b[0]+")",b[1].length>0&&(c+=" "+b[1]),b[2].length>0&&(c+="-"+b[2]),b[3].length>0&&(c+=" ext."+b[3]),c)}}),angular.module("Volusion.toolboxCommon").directive("vnEmailValidate",[function(){"use strict";return{require:"ngModel",link:function(a,b,c,d){d.$parsers.unshift(function(b){return a.emailEmpty=b&&b.length>0?"valid":void 0,a.validEmail=b&&/^[\w\.\-]+@[a-zA-Z\d_.-]+?\.[a-zA-Z]{2,3}$/.test(b)?"valid":void 0,a.emailEmpty&&a.validEmail?(d.$setValidity(d.$name,!0),b):void d.$setValidity(d.$name,!1)})}}}]).directive("vnPasswordValidate",["vnUtils",function(){"use strict";return{require:"ngModel",link:function(a,b,c,d){d.$parsers.unshift(function(b){return a.pwdValidLength=b&&b.length>=6?"valid":void 0,a.pwdValidLength?(d.$setValidity("password",!0),b):void d.$setValidity("password",!1)})}}}]).directive("vnFirstNameValidate",["vnUtils",function(a){"use strict";return{require:"ngModel",link:function(b,c,d,e){e.$parsers.unshift(function(c){return b.firstNameMinValidLength=c&&c.length>=1?"valid":void 0,b.firstNameDisallowedChars=a.checkDisallowedCharacters(c),b.firstNameAllowedChars=c&&null===b.firstNameDisallowedChars?"valid":void 0,b.firstNameMinValidLength&&b.firstNameAllowedChars?(e.$setValidity("firstName",!0),c):void e.$setValidity("firstName",!1)})}}}]).directive("vnLastNameValidate",["vnUtils",function(a){ +"use strict";return{require:"ngModel",link:function(b,c,d,e){e.$parsers.unshift(function(c){return b.lastNameMinValidLength=c&&c.length>=1?"valid":void 0,b.lastNameDisallowedChars=a.checkDisallowedCharacters(c),b.lastNameAllowedChars=c&&null===b.lastNameDisallowedChars?"valid":void 0,b.lastNameMinValidLength&&b.lastNameAllowedChars?(e.$setValidity("lastName",!0),c):void e.$setValidity("lastName",!1)})}}}]).directive("vnStreetValidate",["vnUtils",function(a){"use strict";return{require:"ngModel",link:function(b,c,d,e){e.$parsers.unshift(function(c){return b.streetEmpty=c&&c.length>0?"valid":void 0,b.streetDisallowedChars=a.checkDisallowedCharacters(c),b.streetAllowedChars=c&&null===b.streetDisallowedChars?"valid":void 0,b.streetAllowedChars&&b.streetEmpty?(e.$setValidity("street",!0),c):void e.$setValidity("street",!1)})}}}]).directive("vnCityValidate",["vnUtils",function(a){"use strict";return{require:"ngModel",link:function(b,c,d,e){e.$parsers.unshift(function(c){return b.cityEmpty=c&&c.length>0?"valid":void 0,b.cityDisallowedChars=a.checkDisallowedCharacters(c),b.cityAllowedChars=c&&null===b.cityDisallowedChars?"valid":void 0,b.cityAllowedChars&&b.cityEmpty?(e.$setValidity("city",!0),c):void e.$setValidity("city",!1)})}}}]).directive("vnRegionValidate",["vnUtils",function(a){"use strict";return{require:"ngModel",link:function(b,c,d,e){e.$parsers.unshift(function(c){return b.regionEmpty=c&&c.length>0?"valid":void 0,b.regionDisallowedChars=a.checkDisallowedCharacters(c),b.regionAllowedChars=c&&null===b.regionDisallowedChars?"valid":void 0,b.regionAllowedChars&&b.regionEmpty?(e.$setValidity("region",!0),c):void e.$setValidity("region",!1)})}}}]).directive("vnRequiredFieldValidate",[function(){"use strict";return{require:"ngModel",link:function(a,b,c,d){var e=(c.vnRequiredFieldValidate||d.$name||"")+"Required";d.$parsers.unshift(function(b){return a[e]=b&&b.length>=1?"valid":void 0,a[e]?(d.$setValidity(e,!0),b):void d.$setValidity(e,!1)})}}}]).directive("vnSpecialCharsValidate",["vnUtils",function(a){"use strict";return{require:"ngModel",link:function(b,c,d,e){var f=d.vnSpecialCharsValidate||e.$name;e.$parsers.unshift(function(c){var d=f+"AllowedChars",g=f+"DisallowedChars";return b[g]=a.checkDisallowedCharacters(c),b[d]=c&&null===b[g]?"valid":void 0,b[d]?(e.$setValidity(f,!0),c):void e.$setValidity(f,!1)})}}}]).directive("vnZipValidate",function(){"use strict";return{require:"ngModel",link:function(a,b,c,d){d.$parsers.unshift(function(b){return a.zipHasValidFormat=b&&/^\d{5}(-\d{4})?$/.test(b)?"valid":void 0,a.zipHasValidFormat?(d.$setValidity("zip",!0),b):void d.$setValidity("zip",!1)})}}}).directive("vnPostalCodeValidate",["vnUtils",function(a){"use strict";return{require:"ngModel",link:function(b,c,d,e){e.$parsers.unshift(function(c){return b.postalCodeEmpty=c&&c.length>0?"valid":void 0,b.postalCodeDisallowedChars=a.checkDisallowedCharactersForPostalCode(c),b.postalCodeAllowedChars=c&&null===b.postalCodeDisallowedChars?"valid":void 0,b.postalCodeAllowedChars&&b.postalCodeEmpty?(e.$setValidity("postalCode",!0),c):void e.$setValidity("postalCode",!1)})}}}]).directive("vnUsPhoneValidate",function(){"use strict";return{require:"ngModel",link:function(a,b,c,d){d.$parsers.unshift(function(b){return a.usPhoneHasValidFormat=b&&/\d{10,14}$/.test(b)?"valid":void 0,a.usPhoneHasValidFormat?(d.$setValidity("usPhone",!0),b):void d.$setValidity("usPhone",!1)})}}}).directive("vnCvvValidate",function(){"use strict";return{require:"ngModel",link:function(a,b,c,d){d.$parsers.unshift(function(c){var e="",f=b.attr("data-vn-cc-type").toUpperCase();if("AMEX"!==f&&"AMERICAN EXPRESS"!==f&&"***"===c||("AMEX"===f||"AMERICAN EXPRESS"===f)&&"****"===c)a.cvvValidFormat="valid",e=c;else{var g=/^\d{3}?$/;e=c.replace(/[^\d]+/g,""),a.cvvLength=3,("AMEX"===f||"AMERICAN EXPRESS"===f)&&(g=/^\d{4}?$/,a.cvvLength=4),b.attr("maxlength",a.cvvLength),a.cvvValidFormat=e&&g.test(e)?"valid":void 0}return d.$setValidity("cvv","valid"===a.cvvValidFormat),e})}}}).directive("vnCcValidate",function(){"use strict";function a(a){var b=[[0,2,4,6,8,1,3,5,7,9],[0,1,2,3,4,5,6,7,8,9]],c=0;return a.replace(/[\d]/g,function(a,d,e){c+=b[e.length-d&1][parseInt(a,10)]}),c%10===0&&c>0?"valid":void 0}return{require:"ngModel",link:function(b,c,d,e){e.$parsers.unshift(function(d){var f="",g=c.attr("data-vn-cc-type").toUpperCase();if(-1!==d.indexOf("*")&&"AMEX"!==g&&"AMERICAN EXPRESS"!==g&&19===d.length||("AMEX"===g||"AMERICAN EXPRESS"===g)&&18===d.length)b.creditCardValid="valid",f=d;else{var h=16,i=3;("AMEX"===g||"AMERICAN EXPRESS"===g)&&(h=15,i=2),c.attr("maxlength",h+i),f=d.replace(/[^\d]+/g,"").slice(0,h),b.creditCardValid=f.length===h?a(f):void 0}return e.$setValidity("creditcard","valid"===b.creditCardValid),c.val(f),f})}}}),angular.module("Volusion.toolboxCommon").factory("vnViewPortWatch",["$rootScope","$window",function(a,b){"use strict";return{setBreakpoints:function(c){"undefined"!=typeof b.enquire&&angular.forEach(c,function(c){c.mediaQuery&&b.enquire.register(c.mediaQuery,{match:function(){c.onMatch&&"function"==typeof c.onMatch&&c.onMatch(),a.$emit("vnViewPortWatch:Match",c)},unmatch:function(){c.onUnmatch&&"function"==typeof c.onUnmatch&&c.onUnmatch(),a.$emit("vnViewPortWatch:Unmatch",c)}})})}}}]),angular.module("Volusion.toolboxCommon.templates",[]).run(["$templateCache",function(a){a.put("vn-faceted-search/vn-category-search.html",'<div class=vn-category-search__category-items data-ng-repeat="cat in categories" data-ng-class="{ \'-last\': $last }">\n\n <a href data-ng-if="cat.displayStrategy == \'categoryDisplayTwo\' || cat.displayStrategy == \'categoryDisplayThree\' " data-ng-click=buildAppUrl(cat) class=vn-category-search__category-items__category-title data-ng-class="{ \'-noborder\': $last && cat.displayStrategy == \'categoryDisplayOne\' }">\n\n <span data-ng-if="cat.displayStrategy == \'categoryDisplayTwo\' " class="glyphicon glyphicon-chevron-left"></span>\n {{ cat.name }}\n </a>\n <span class=vn-category-search__category-items__category-title data-ng-if="cat.displayStrategy == \'categoryDisplayOne\' ">{{ cat.name }}</span>\n <div class=vn-category-search__category-items__category-item data-ng-repeat="subCat in cat.subCategories" data-ng-class="{ \'-noborder\': $last }">\n\n <span data-ng-if=subCat.hideSubCatLink>{{ subCat.name }}</span>\n <a href data-ng-if=!subCat.hideSubCatLink data-ng-click=buildAppUrl(subCat)>{{ subCat.name }}</a>\n </div>\n</div>'),a.put("vn-faceted-search/vn-facet-search.html",'<div data-accordion-group class=facet-item data-ng-repeat="facet in facets track by $index" data-is-open=defaultAccordianOpen>\n <div data-accordion-heading>\n <div>\n <span>{{ facet.title }}</span>\n <i class="pull-right glyphicon" data-ng-class="{\'glyphicon-chevron-down\': defaultAccordianOpen, \'glyphicon-chevron-right\': !defaultAccordianOpen}"></i>\n </div>\n </div>\n <div data-ng-if="facet.displayType != \'swatches\'" class=facet-properties>\n <label class=facet-property data-ng-repeat="property in facet.properties track by $index" data-ng-class="{ \'-last\': $last }">\n\n <input type=checkbox name=property.name data-ng-checked=selectProperty(property) data-ng-click="refineFacetSearch(property)">\n <span class=name>{{ property.name }}</span>\n <span class=count>{{ property.count }}</span>\n </label>\n </div>\n <div data-ng-if="facet.displayType == \'swatches\'" class="facet-properties clearfix">\n <div data-ng-repeat="property in facet.properties" class=facet-property__swatch data-ng-click=refineFacetSearch(property) data-ng-class="{\'facet-property__swatch--selected\': selectProperty(property)}">\n <div class=facet-property__swatch--color data-ng-style="{\'backgroundColor\': property.color }">\n </div>\n </div>\n </div>\n</div>'),a.put("vn-faceted-search/vn-faceted-search.html",'<div class=vn-faceted-search-header data-ng-show=showApplyButton>\n <button class="btn btn-success __cancel-action" href data-ng-click=dismissMobileFilters()>Apply\n </button>\n \n <button class="btn __clear-action" href data-ng-click=clearAllFilters()>Clear\n </button>\n \n</div>\n<div class=-faceted-search data-ng-show=showFacetSearch>\n <div class=facets>\n <div data-accordion data-close-others=false>\n\n \n <div data-accordion-group class=facet-item__by-category data-is-open=categoryAccordiansOpen data-ng-show="categoryList.length > 0">\n <div data-accordion-heading>\n <div>\n <span>Category</span>\n <i class="pull-right glyphicon" data-ng-class="{\'glyphicon-chevron-down\': categoryAccordiansOpen, \'glyphicon-chevron-right\': !categoryAccordiansOpen}"></i>\n </div>\n </div>\n <div vn-category-search categories=categoryList query-products=queryProducts() data-ng-show=showCategorySearch class=category-search>\n </div>\n </div>\n\n \n <div vn-facet-search facets=facets query-products=queryProducts() data-ng-show="facets.length > 0"></div>\n\n \n <div data-accordion-group class=facet-item__by-price data-is-open=priceAccordiansOpen data-ng-show="facets.length > 0">\n <div data-accordion-heading>\n <div>\n <span>Price</span>\n <i class="pull-right glyphicon" data-ng-class="{\'glyphicon-chevron-down\': priceAccordiansOpen, \'glyphicon-chevron-right\': !priceAccordiansOpen}"></i>\n </div>\n </div>\n <div class=facet-item__by-price__inputs vn-price-search query-products=queryProducts()></div>\n </div>\n </div>\n\n \n <div class=vn-faceted-search-footer data-ng-show=!showApplyButton>\n <button class="btn __clear-action" href data-ng-click=clearAllFilters()>Reset Filters\n </button>\n \n </div>\n\n </div>\n</div>'),a.put("vn-faceted-search/vn-price-search.html",'<input data-ng-model=minPrice data-ng-keypress=searchByPrice($event) placeholder="$">\n to \n<input data-ng-model=maxPrice data-ng-keypress=searchByPrice($event) placeholder="$$">\n<button class="btn btn-default facet-item__by-price__button" type=button ng-click=searchByPrice($event)>Go\n</button>'),a.put("vn-faceted-search/vn-sort-search.html",'<div class=dropdown>\n <button class="btn btn-default dropdown-toggle" type=button id=dropdownMenu1 data-toggle=dropdown>\n Sort by\n <span class=caret></span>\n </button>\n <ul class=dropdown-menu role=menu aria-labelledby=dropdownMenu1>\n <li role=presentation>\n <a role=menuitem tabindex=-1 href="" data-ng-click="sortBy(\'relevance\')">Relevance</a>\n </li>\n <li role=presentation>\n <a role=menuitem tabindex=-1 href="" data-ng-click="sortBy(\'highest price\')">Highest price</a>\n </li>\n <li role=presentation>\n <a role=menuitem tabindex=-1 href="" data-ng-click="sortBy(\'lowest price\')">Lowest price</a>\n </li>\n <li role=presentation>\n <a role=menuitem tabindex=-1 href="" data-ng-click="sortBy(\'relevance\')">Popularity</a>\n </li>\n <li role=presentation>\n <a role=menuitem tabindex=-1 href="" data-ng-click="sortBy(\'newest\')">Newest</a>\n </li>\n <li role=presentation>\n <a role=menuitem tabindex=-1 href="" data-ng-click="sortBy(\'oldest\')">Oldest</a>\n </li>\n </ul>\n</div>'),a.put("vn-place-order-btn/vn-place-order-btn.html",'<div class=th-checkout__place-order-fixed data-ng-class="{ \'th-checkout__place-order-fixed--active\': placeOrderFixed}" data-ng-if=checkout.steps[2].active>\n <button class="btn btn-primary btn-block btn-lg th-checkout__place-order-fixed__btn" data-ng-click=placeOrder()>\n Place Order\n </button>\n</div>'),a.put("vn-product-option/checkboxes.html",'<label data-vn-block=vn-labeled-checkbox data-vn-modifiers={{option.class}} data-ng-repeat="item in option.items" data-ng-init=item>\n\n <div data-vn-element=checkbox>\n <input type=checkbox data-ng-click="onCheckboxClicked(option, item)">\n </div>\n\n <div data-vn-element=content data-ng-include=" \'vn-product-option/content.html\' "></div>\n</label>'),a.put("vn-product-option/content.html",'<div data-vn-element=color-image>\n <div data-vn-element=color data-ng-show=item.color style="background-color: {{item.color}}"></div>\n <img data-vn-element=image data-ng-show=item.swatchImage data-ng-src={{item.swatchImage}} alt={{item.text}}>\n</div>\n<div data-vn-element=text data-ng-bind=item.text data-ng-controller=OptionsCtrl data-ng-class="{ \'-disabled\': !isItemAvailable }"></div>\n<div data-vn-element=border data-ng-class="{ checked: option.selected === item.key }"></div>'),a.put("vn-product-option/index.html",'<div data-vn-block=vn-product-option>\n\n <label data-vn-element=label data-ng-if=option.label data-ng-bind=option.label></label>\n\n <div data-ng-repeat="inputType in option.inputTypes">\n <div data-vn-element=group data-vn-modifiers="{{inputType.type}} {{option.class}}" data-ng-include=" \'vn-product-option/\' + inputType.type + \'.html\' ">\n </div>\n </div>\n\n <div data-ng-if=option.selected>\n <div data-ng-repeat="option in option.options" data-ng-include=" \'vn-product-option/index.html\' ">\n </div>\n </div>\n\n</div>'),a.put("vn-product-option/radios.html",'<label data-vn-block=vn-labeled-radio data-vn-modifiers={{option.class}} data-ng-repeat="item in option.items" data-ng-init=item data-ng-controller=OptionsCtrl data-ng-class="{ \'-disabled\': !isItemAvailable }">\n\n <div data-vn-element=radio>\n\n <input type=radio name={{option.id}} data-ng-value=item.key data-ng-model=option.selected data-ng-click="onOptionChanged(option, item)">\n </div>\n\n <div data-vn-element=content data-ng-include=" \'vn-product-option/content.html\' "></div>\n\n</label>'),a.put("vn-product-option/select.html",'<div class=dropdown data-vn-element=select data-vn-modifiers="{{ option.class }}" data-ng-attr-size="{{ inputType.size }}">\n\n <button class="btn btn-default dropdown-toggle" type=button id="dropdownMenuOption{{ option.id }}" data-toggle=dropdown>\n {{ currentSelectionText }}\n <span class=caret></span>\n </button>\n <ul class=dropdown-menu role=menu aria-labelledby="dropdownMenuOption{{ option.id }}">\n <li role=presentation data-ng-repeat="item in option.items">\n <a role=menuitem tabindex=-1 href data-ng-click="onOptionChanged(option, item)" data-ng-controller=OptionsCtrl data-ng-class="{ \'-disabled\': !isItemAvailable }">\n {{ item.text }}\n </a>\n </li>\n </ul>\n</div>'),a.put("vn-product-option/text.html",'<div data-ng-if="inputType.rows > 1">\n <textarea data-vn-element=text data-vn-modifiers={{option.class}} data-ng-focus="saveTo=saveTo||{}" data-ng-model=saveTo[option.id] data-ng-maxlength={{inputType.maxlength}} placeholder={{inputType.placeholder}} rows={{inputType.rows}} cols={{inputType.cols}}></textarea>\n</div>\n\n<div data-ng-if="!inputType.rows || inputType.rows < 2">\n <input data-vn-element=text data-vn-modifiers={{option.class}} data-ng-focus="saveTo=saveTo||{}" data-ng-model=saveTo[option.id] data-ng-maxlength={{inputType.maxlength}} placeholder={{inputType.placeholder}}>\n</div>'),a.put("vn-product/vn-product-image.html",'<img data-ng-src="{{ getImagePath(product.imageCollections) }}" class=img-responsive alt="{{ product.name }}">'),a.put("address/address-display.tpl.html",'<div class=row data-ng-show="address.address1 !== \'\'" data-ng-click=onClick()>\n <div class=col-xs-10>\n <div class=th-address__display__addressPart>{{ address.firstName }} {{ address.lastName }}</div>\n <div class=th-address__display__addressPart>{{ address.address1 }}</div>\n <div data-ng-if="address.address2 != \'\'" class=th-address__display__addressPart>{{ address.address2 }}</div>\n <div class=th-address__display__addressPart data-ng-show=isLocationUS>{{ address.city }}, {{ address.state }} {{ address.postalCode }}</div>\n <div class=th-address__display__addressPart data-ng-show=isLocationUS>{{ address.phoneNumber | vnUsPhone }}</div>\n\n <div class=th-address__display__addressPart data-ng-show=!isLocationUS>{{ address.city }}</div>\n <div class=th-address__display__addressPart data-ng-show=!isLocationUS>{{ address.state }} {{ address.postalCode }}</div>\n <div class=th-address__display__addressPart data-ng-show=!isLocationUS>{{ address.country }}</div>\n <div class=th-address__display__addressPart data-ng-show=!isLocationUS>{{ address.phoneNumber }}</div>\n\n <div class=th-address__display__addressPart data-ng-if=shippingValue data-ng-show=address.residential>Type: Residential</div>\n <div class=th-address__display__addressPart data-ng-if=shippingValue data-ng-show=!address.residential>Type: Business</div>\n </div>\n <div class=col-xs-2 ng-show=showEditButton>\n <i class="fa fa-angle-right fa-2x pull-right"></i>\n </div>\n</div>'),a.put("address/vn-address-display-actions.tpl.html",'<div class=conatiner-fluid>\n <div data-ng-if="shipping==\'true\'" data-vn-address-display data-address=address data-shipping=true></div>\n <div data-ng-if="shipping!=\'true\'" data-vn-address-display data-address=address></div>\n <div class="row th-address__display__actions">\n <div class=col-xs-7>\n <span data-ng-if=!address.preferred>\n <button class="btn btn-default" data-ng-click=onMakePreferredClicked()>Make Preferred\n </button>\n </span>\n <span class=th-address__display__actions__preferred data-ng-if=address.preferred>\n <i class="fa fa-check"></i> Preferred</span>\n </div>\n <div class="col-xs-4 col-xs-offset-1 col-sm-3 col-sm-offset-2 col-md-2 col-md-offset-3">\n <div class=row>\n <div class=col-xs-6>\n <a href data-ng-click=onEditClicked({address:address})><i class="fa fa-pencil"></i></a>\n </div>\n <div class=col-xs-6>\n <a href data-ng-click=onDeleteClicked({address:address})><i class="fa fa-trash-o"></i></a>\n </div>\n </div>\n </div>\n </div>\n</div>'),a.put("address/vn-address-picker.tpl.html",'<div class="th-checkout__step__drawer -left" data-ng-class="{\'-open\': openAddressPicker}">\n\n <div class=th-checkout__step__drawer__body data-ng-show=openAddressPicker data-ng-switch=state data-ng-cloak>\n <a href class=th-checkout__step__drawer__close data-ng-click=selectAddress()>\n <i class="fa fa-close fa-2x"></i>\n </a>\n\n <div class=th-checkout__step__drawer__title>\n <span data-ng-switch-when=ADDRESSLIST>{{:: selectAddressTitle}}</span>\n <span data-ng-switch-when=NEWADDRESS>{{:: newAddressTitle}}</span>\n </div>\n\n <div class=th-address__choose data-ng-switch-when=ADDRESSLIST>\n <div class=th-address__choose__options ng-cloak>\n <label class=th-address__choose__options__option data-ng-repeat="address in addressList" for="address{{ $index }}">\n <div class=styled-optionbox-option>\n <input type=radio id="address{{ $index }}" name=billingAddress data-ng-value=true data-ng-model=address.preferred data-ng-change="setPreferredAddress({{ $index }})">\n\n <div>\n <vn-address-display data-ng-if="shipping==\'true\'" data-address=address data-show-edit-button=allowEdit data-shipping=true></vn-address-display>\n <vn-address-display data-ng-if="shipping!=\'true\'" data-address=address data-show-edit-button=allowEdit></vn-address-display>\n </div>\n </div>\n </label>\n\n <a class=th-address__choose__options__new-option ng-repeat-end data-ng-click=createNewAddress()>\n Enter a different address\n </a>\n </div>\n <button class="btn btn-primary btn-block btn-lg th-checkout__step__btn__continue" data-ng-click=selectAddress()>\n Continue <i class="fa fa-angle-right"></i>\n </button>\n </div>\n\n\n <div data-ng-switch-when=NEWADDRESS>\n <div class="th-address__same-as styled-checkbox-option" data-ng-if=showCopyAddress>\n <input type=checkbox id=chkAddressCopy name=chkAddressCopy data-ng-model=addressCopied data-ng-change="copyAddressHandler()">\n <label for=chkAddressCopy>{{:: copyAddressText}}</label>\n </div>\n <div class=th-address__enterAddress>\n <div data-ng-if="shipping==\'true\'" data-vn-address-editor="" address=newAddress countries=countries data-on-dirty=setCopyAddressFalse() data-on-save="saveAddress({newAddress: newAddress})" data-shipping=true></div>\n <div data-ng-if="shipping!=\'true\'" data-vn-address-editor="" address=newAddress countries=countries data-on-dirty=setCopyAddressFalse() data-on-save="saveAddress({newAddress: newAddress})"></div>\n </div>\n </div>\n\n\n <div class=th-checkout__step__backButton>\n <a href=javascript:void(0); data-ng-click=selectAddress()>\n <i class="fa fa-arrow-left"> {{:: backToText}}</i>\n </a>\n </div>\n </div>\n</div>'),a.put("app-messages/vnAppMessage.tpl.html",'<alert ng-repeat="alert in appMessagesCtrl.alerts track by alert.id" type="{{ alert.type }}">\n {{alert.text}}\n <br>\n <button class="btn th-alert__button" data-ng-click=appMessagesCtrl.closeAlert(alert.id)>Ok</button>\n</alert>'),a.put("billing-address/billing-address-views.html",'<div class=th-address data-ng-controller="BillingAddressViewsCtrl as vm" data-ng-switch=vm.state data-ng-init=vm.init()>\n <div class="th-checkout__section-heading th-address__heading">\n Billing Address\n </div>\n\n <div class=th-address__display data-ng-switch-when=VIEWADDRESS>\n <vn-address-display data-address=vm.billingAddress data-on-click=vm.editBillingAddress() data-show-edit-button=vm.billingAddress></vn-address-display>\n </div>\n\n <div class="th-address__same-as styled-checkbox-option" data-ng-switch-when=EDITADDRESS ng-cloak>\n <input type=checkbox id=chkBillingAddress name=chkBillingAddress data-ng-model=vm.useShippingAddress data-ng-change="vm.copyShippingAddress()">\n <label for=chkBillingAddress>Billing address same as shipping</label>\n </div>\n <div class=th-address__enterAddress data-ng-switch-when=EDITADDRESS ng-cloak>\n <div data-vn-address-editor="" address=vm.billingAddress countries=vm.countries data-on-dirty=vm.setShippingAddressFalse() data-on-save=vm.saveBillingAddress() data-show-save-button=false></div>\n </div>\n\n <div vn-address-picker data-ng-switch-when=PICKADDRESS data-address-list=vm.user.billingAddresses data-new-address-title="Add Billing Address" data-select-address-title="Choose Billing Address" data-back-to-text="back to Pay With" data-show-copy-address=vm.showCopyAddress data-countries=vm.countries data-on-address-selected=vm.onAddressSelected() data-save-address=vm.onAddressAdded(newAddress) data-address-copied=vm.useShippingAddress data-copy-address-handler=vm.copyShippingAddress() data-copy-address-text="Billing address same as shipping"></div>\n\n</div>'),a.put("busy-animation/vnBusyAnimation.tpl.html",'<ng-transclude></ng-transclude>\n<div class="{{ class }}" title=1 data-ng-if=show>\n <svg version=1.1 id=loader-1 xmlns=http://www.w3.org/2000/svg xmlns:xlink=http://www.w3.org/1999/xlink x=0px y=0px width="{{ size }}" height="{{ size }}" viewbox="0 0 50 50" style="enable-background:new 0 0 50 50" xml:space=preserve>\n\n <path fill=#000 d=M25.251,6.461c-10.318,0-18.683,8.365-18.683,18.683h4.068c0-8.071,6.543-14.615,14.615-14.615V6.461z>\n <animatetransform attributetype=xml attributename=transform type=rotate from="0 25 25" to="360 25 25" dur=.6s repeatcount="indefinite">\n </path>\n </svg>\n</div>'),a.put("checkout/checkout.html",'<div class=th-checkout>\n <div class=row>\n <div class="th-checkout__loading th-checkout__loading--ship-to" vn-busy-animation vn-busy-animation-size=80px vn-busy-animation-show="{{ stepOneLoading }}" vn-busy-animation-class=th-checkout__loading-inner data-ng-show=checkout.steps[0].active></div>\n\n <div class="th-checkout__loading th-checkout__loading--pay-with" vn-busy-animation vn-busy-animation-size=80px vn-busy-animation-show="{{ stepTwoLoading }}" vn-busy-animation-class=th-checkout__loading-inner data-ng-show=checkout.steps[1].active></div>\n\n <div class="th-checkout__loading th-checkout__loading--review" vn-busy-animation vn-busy-animation-size=80px vn-busy-animation-show="{{ stepThreeLoading }}" vn-busy-animation-class=th-checkout__loading-inner data-ng-show=checkout.steps[2].active></div>\n\n <div class="col-md-4 th-checkout__step th-checkout__step__ship-to" data-ng-show="checkout.steps[0].active || isInDesktopMode" data-ng-class="{ \'-active\' : checkout.steps[0].active, \'-no-scroll\' : checkout.steps[0].hasOpenDrawer }" data-ng-switch=isEditable(1) data-vn-scroll-to-top=checkout.steps[0].hasOpenDrawer data-ng-init="hideShippingMethods = true">\n\n <div class=th-checkout__step__overlay data-ng-class="{ \'-complete\' : checkout.steps[1].active || checkout.steps[2].active}" data-ng-click=setStep(1)></div>\n\n <div class=th-checkout__step__title>\n <div class=th-checkout__step__title__stepNumber data-ng-if=checkout.steps[0].active><span>1</span></div>\n <i class="fa fa-check-circle-o fa-2x" data-ng-if="checkout.steps[1].active || checkout.steps[2].active"></i>\n <div class=th-checkout__step__title__stepName>Ship To</div>\n </div>\n\n <div ng-include=" \'ship-to/ship-to-views.html\' "></div>\n\n <div data-ng-hide=hideShippingMethods ng-include=" \'ship-method/ship-method.html\' "></div>\n\n <button class="btn btn-primary btn-block btn-lg th-checkout__step__btn-continue" data-ng-hide=hideShippingMethods data-ng-if=checkout.steps[0].active data-ng-click=nextShippingStep() data-ng-bind-html=buildShippingStepLabel()>\n </button>\n </div>\n <div class="col-md-4 th-checkout__step th-checkout__step__pay-with" data-ng-show="checkout.steps[1].active || isInDesktopMode" data-ng-class="{ \'-active\' : checkout.steps[1].active, \'-no-scroll\' : checkout.steps[1].hasOpenDrawer }" data-ng-switch=isEditable(2) data-vn-scroll-to-top=checkout.steps[1].hasOpenDrawer>\n\n <div class=th-checkout__step__overlay data-ng-class="{ \'-complete\' : checkout.steps[2].active}" data-ng-click="checkout.steps[0].active || setStep(2)"></div>\n\n <div class=th-checkout__step__title>\n <div class=th-checkout__step__title__stepNumber data-ng-if="checkout.steps[0].active || checkout.steps[1].active"><span>2</span></div>\n <i class="fa fa-check-circle-o fa-2x" data-ng-if=checkout.steps[2].active></i>\n <div class=th-checkout__step__title__stepName>Pay With</div>\n </div>\n\n <div ng-include=" \'pay-with/credit-card-views.html\' "></div>\n\n <div ng-include=" \'billing-address/billing-address-views.html\' "></div>\n\n <div>\n <button class="btn btn-primary btn-block btn-lg th-checkout__step__btn-continue" data-ng-if=checkout.steps[1].active data-ng-click=nextBillingStep()>\n Continue <i class="fa fa-angle-right"></i>\n </button>\n\n <div class=th-checkout__step__backButton data-ng-if=checkout.steps[1].active>\n <a href=javascript:void(0); data-ng-click=prevStep()>\n <i class="fa fa-arrow-left"> back to Ship To</i>\n </a>\n </div>\n\n <br style="clear: both">\n </div>\n\n </div>\n\n <div data-vn-place-order-btn></div>\n\n <div class="col-md-4 th-checkout__step th-checkout__step__review" data-ng-show="checkout.steps[2].active || isInDesktopMode" data-ng-class="{ \'-active\' : checkout.steps[2].active, \'-no-scroll\' : checkout.steps[2].hasOpenDrawer }" data-vn-scroll-to-top=checkout.steps[2].hasOpenDrawer>\n\n <div class=th-checkout__step__overlay data-ng-click="checkout.steps[0].active || checkout.steps[1].active || setStep(3)"></div>\n\n <div class=th-checkout__step__title>\n <div class=th-checkout__step__title__stepNumber><span>3</span></div>\n <div class=th-checkout__step__title__stepName>Review</div>\n </div>\n <div class=th-checkout__thanks__title>\n Total: {{ checkout.cart.totals.grandTotal | currency }}\n </div>\n <button class="btn btn-primary btn-block btn-lg th-checkout__step__btn-continue" data-ng-if=checkout.steps[2].active data-ng-click=placeOrder()>\n {{ placeOrderBtnText }}\n </button>\n <div vn-review=checkout.cart></div>\n <div ng-include=" \'review/review-details-2.html\' " ng-if=checkout.steps[2].active></div>\n\n <button class="hidden-md hidden-lg hidden-xl btn btn-primary btn-block btn-lg th-checkout__step__btn-continue" data-ng-if=checkout.steps[2].active data-ng-click=placeOrder()>\n {{ placeOrderBtnText }}\n </button>\n\n <div class=th-checkout__step__backButton>\n <a href=javascript:void(0); data-ng-if=checkout.steps[2].active data-ng-click=prevStep()>\n <i class="fa fa-arrow-left"> back to Pay With</i>\n </a>\n </div>\n\n </div>\n </div>\n</div>'),a.put("checkout/vn-address-editor.html",'<div class="th-address container-fluid">\n\n <div>\n\n <div class=th-address__location>\n <div class=btn-group>\n <button type=button data-ng-click=setCountryToUS() class="btn btn-default" data-ng-class="{ \'btn-primary\' : isLocationUS }">United States\n </button>\n <button type=button data-ng-click=setCountryToOther() class="btn btn-default" data-ng-class="{ \'btn-primary\': !isLocationUS }">International\n </button>\n </div>\n </div>\n\n <div class=th-address__form-wrapper>\n <form id=frmAddress name=frmAddress novalidate data-ng-submit=updateAddress(address)>\n <div class=row>\n <div class=col-xs-6>\n <div class=form-group>\n <input name=inputUSFirstName class="form-control input-lg immediate-help" id=first-name data-vn-placeholder="First Name" data-ng-model=address.firstName data-vn-first-name-validate required>\n\n <data-vn-popover-first-name>\n\n </div>\n </div>\n <div class=col-xs-6>\n <div class=form-group>\n <input name=inputUSLastName class="form-control input-lg -right immediate-help" id=last-name data-vn-placeholder="Last Name" data-ng-model=address.lastName data-vn-last-name-validate required>\n\n <data-vn-popover-last-name>\n\n </div>\n </div>\n </div>\n <div class=row>\n <div class=col-xs-12>\n <div class=form-group>\n <input name=inputUSAddress1Line class="form-control input-lg immediate-help" id=address-1 data-vn-placeholder="Address Line 1" data-ng-model=address.address1 data-vn-street-validate required>\n\n <data-vn-popover-address>\n\n </div>\n </div>\n </div>\n <div class=row>\n <div class=col-xs-12>\n <div class=form-group>\n <input name=inputUSAddressLine2 class="form-control input-lg" id=address-2 data-vn-placeholder="Address Line 2" data-ng-model="address.address2">\n </div>\n </div>\n </div>\n <div class=row data-ng-show=isLocationUS data-ng-hide=check.useShippingAddress>\n <div class=col-xs-5>\n <div class=form-group>\n <input name=inputUSCity class="form-control input-lg immediate-help" id=city data-vn-placeholder=City data-ng-model=address.city data-vn-city-validate ng-required="isLocationUS">\n\n <data-vn-popover-city>\n\n </div>\n </div>\n <div class=col-xs-3>\n <div class=form-group>\n <div class="th-address__state th-dropdown">\n <vn-dropdown name=inputUSState availableoptions=address.selectedCountry.states placeholder=State optionselect=onStateChanged model=address.selectedState selected-field=code>\n <vn-dropdown>\n </vn-dropdown></vn-dropdown></div>\n </div>\n </div>\n <div class=col-xs-4>\n <div class=form-group>\n <input name=inputUSZip class="form-control input-lg immediate-help" id=zip data-vn-placeholder=Zip data-ng-model=address.postalCode data-vn-zip-validate ng-required="isLocationUS">\n\n <data-vn-popover-zip>\n\n </div>\n </div>\n </div>\n <div class=row data-ng-show=!isLocationUS>\n <div class=col-xs-12>\n <div class=form-group>\n <input name=inputWorldwideCity class="form-control input-lg immediate-help" id=international-city data-vn-placeholder=City data-ng-model=address.city data-vn-city-validate required>\n\n <data-vn-popover-city></data-vn-popover-city>\n </div>\n </div>\n </div>\n <div class=row data-ng-show=!isLocationUS>\n <div class=col-xs-6>\n <div class=form-group>\n <input name=inputWorldwideRegion class="form-control input-lg immediate-help" id=region data-vn-placeholder=Region data-ng-model=address.state data-vn-region-validate ng-required="!isLocationUS">\n <data-vn-popover-region></data-vn-popover-region>\n </div>\n </div>\n <div class=col-xs-6>\n <div class=form-group>\n <input name=inputWorldwidePostalCode class="form-control input-lg immediate-help" id=postal-code maxlength=15 data-vn-placeholder="Postal code" data-ng-model=address.postalCode data-vn-postal-code-validate ng-required="!isLocationUS">\n <data-vn-popover-postal-code>\n </data-vn-popover-postal-code></div>\n </div>\n </div>\n <div class=row data-ng-show="!isLocationUS ">\n <div class=col-xs-12>\n <div class=form-group>\n <div class="th-address__country th-dropdown">\n\n <vn-dropdown name=inputWorldwideCountry data-availableoptions=countries placeholder=Country optionselect=onCountryChanged model=address.selectedCountry>\n <vn-dropdown>\n\n </vn-dropdown></vn-dropdown></div>\n </div>\n </div>\n </div>\n\n <div class=row data-ng-show=isLocationUS>\n <div class=col-xs-12>\n <div class=form-group>\n <input name=inputUSPhoneNumber class="form-control input-lg immediate-help" id=phone-number data-vn-placeholder="Phone Number" data-ng-model=address.phoneNumber data-vn-format-us-phone-number data-vn-us-phone-validate required>\n\n <data-vn-popover-us-phone></data-vn-popover-us-phone>\n </div>\n </div>\n </div>\n\n <div class=row data-ng-show=!isLocationUS>\n <div class=col-xs-12>\n <div class=form-group>\n <input name=inputIntlPhoneNumber class="form-control input-lg immediate-help" maxlength=35 data-vn-placeholder="Phone Number" data-ng-model=address.phoneNumber data-vn-required-field-validate required>\n\n <data-vn-popover-required location=top field="Phone Number"></data-vn-popover-required>\n </div>\n </div>\n </div>\n <div class=row data-ng-if="shipping==\'true\'">\n <div class=col-xs-12>\n <div class=form-group>\n <input type=checkbox name=type class=immediate-help id=residential-1 data-ng-model=address.residential data-ng-true-value=false data-ng-false-value="true">\n <label for=residential-1 role=button tabindex=0>This is a business address</label>\n </div>\n </div>\n </div>\n </form>\n </div>\n </div>\n <div>\n <div class=row data-ng-if=showCancelButtonValue>\n <div class=col-xs-6>\n <button class="btn btn-default btn-block btn-lg" data-ng-click=onCancel()>\n {{cancelText}}\n </button>\n </div>\n <div class=col-xs-6>\n <button class="btn btn-primary btn-block btn-lg" data-ng-click=saveAddress() data-ng-enabled=frmAddress.$valid data-ng-if=showSaveButtonValue>\n {{saveText}} <i class="fa fa-angle-right"></i>\n </button>\n </div>\n </div>\n <div class=row data-ng-if=!showCancelButtonValue>\n <div class=col-xs-12>\n <button class="btn btn-primary btn-block btn-lg" data-ng-click=saveAddress() data-ng-enabled=frmAddress.$valid data-ng-if=showSaveButtonValue>\n {{saveText}} <i class="fa fa-angle-right"></i>\n </button>\n </div>\n </div>\n </div>\n\n</div>'), +a.put("dropdown/vn-dropdown.tpl.html",'<div class="vn-dropdown th-dropdown" dropdown>\n <button id=dropdownButton name="{{name + \'Label\'}}" class="vn-dropdown__trigger form-control btn btn-default btn-lg dropdown-toggle form-control" data-vn-placeholder={{placeholder}} data-ng-model=selectedOption.selectedDisplayValue dropdown-toggle data-toggle=dropdown value={{selectedOption.selectedDisplayValue}}>{{selectedOption.selectedDisplayValue}}<span class=caret></span>\n </button>\n <ul class="vn-dropdown__menu dropdown-menu" role=menu>\n <li role=presentation data-ng-repeat="option in options">\n <a role=menuitem data-ng-click=changeOption($index) href>{{option.displayValue}}</a>\n </li>\n </ul>\n <select name={{name}} class=vn-dropdown__select ng-model=selectedOption ng-options="option.selectedDisplayValue for option in options">\n </select>\n</div>'),a.put("easy-zoom/vnEasyZoom.tpl.html","<div class=easyzoom data-ng-class=\"{ 'easyzoom--adjacent': ezAdjacent, 'easyzoom--overlay': ezOverlay }\">\n <a data-ng-href={{ezZoomSrc}}>\n <img class=img-responsive data-ng-src={{ngSrc}} alt={{alt}}>\n <div class=th-product-view__zoom></div>\n </a>\n</div>"),a.put("login/forgot-password.html",'<div class=th-checkout__login>\n <div class=th-checkout__step__title>\n <div class=th-checkout__step__title__stepName>Forgot Your Password?</div>\n </div>\n <div class=container-fluid>\n <div class=row>\n <div class="col-xs-12 col-xs-offset-0 col-sm-8 col-sm-offset-2 col-md-6 col-md-offset-3 col-lg-4 col-lg-offset-4">\n <div class=th-checkout__login__form>\n <form id=frmForgotPassword name=frmForgotPassword novalidate data-ng-submit=forgotPassword()>\n <div class=row>\n <div class=col-xs-12>\n <div class=form-group>\n <input id=inputLoginEmail name=inputLoginEmail class="form-control input-lg immediate-help" data-vn-placeholder="E-mail address" data-ng-model=email data-vn-email-validate required>\n\n <div class="input-help bottom" ng-if=frmLogin.inputLoginEmail.$touched>\n <div class=arrow></div>\n <h4>E-mail must:</h4>\n <ul>\n <li ng-class=emailEmpty>Not be <strong>empty</strong></li>\n <li ng-class=validEmail>Be a <strong>valid</strong> address</li>\n </ul>\n </div>\n </div>\n </div>\n </div>\n </form>\n <button class="btn btn-primary btn-block btn-lg th-checkout__login__continue" data-ng-disabled=disabledButton data-ng-click=forgotPassword()>\n Reset Password <i class="fa fa-angle-right"></i>\n </button>\n </div>\n </div>\n </div>\n </div>\n</div>'),a.put("login/login.html",'<div data-vn-app-message=""></div>\n<div data-vn-login data-allow-anonymous=true data-redirect-to=checkout data-button-text=Continue></div>'),a.put("login/my-account-login.html",'<div data-vn-login data-allow-anonymous=false data-redirect-to=my-account data-button-text="Sign In"></div>'),a.put("login/vn-login-link.html","<div>\n <span data-ng-if=!loggedIn>\n <a data-ui-sref=my-account-login data-translate=header.signIn>Sign In</a>\n </span>\n <span data-ng-if=loggedIn>\n <a data-ui-sref=logout data-translate=header.signOut>Sign Out</a>\n </span>\n</div>"),a.put("login/vn-login.html",'<div class=th-checkout__login>\n <div class=th-checkout__step__title>\n <div class=th-checkout__step__title__stepName>Enter your e-mail to get started</div>\n </div>\n <div class=container-fluid>\n <div class=row ng-if=loginError>\n <div class="col-xs-12 col-xs-offset-0 col-sm-8 col-sm-offset-2 col-md-6 col-md-offset-3 col-lg-4 col-lg-offset-4">\n <div class=th-checkout__login__error data-ng-click=clearError()>\n Login Failed\n </div>\n </div>\n </div>\n <div class=row>\n <div class="col-xs-12 col-xs-offset-0 col-sm-8 col-sm-offset-2 col-md-6 col-md-offset-3 col-lg-4 col-lg-offset-4">\n <div class=th-checkout__login__form>\n <form id=frmLogin name=frmLogin novalidate data-ng-submit=updateUser()>\n <div class=row>\n <div class=col-xs-12>\n <div class=form-group>\n <input id=inputLoginEmail name=inputLoginEmail class="form-control input-lg immediate-help" data-vn-placeholder="E-mail address" data-ng-model=user.email data-vn-email-validate required>\n\n <div class="input-help bottom" ng-if=frmLogin.inputLoginEmail.$touched>\n <div class=arrow></div>\n <h4>E-mail must:</h4>\n <ul>\n <li ng-class=emailEmpty>Not be <strong>empty</strong></li>\n <li ng-class=validEmail>Be a <strong>valid</strong> address</li>\n </ul>\n </div>\n </div>\n </div>\n </div>\n\n <div class=row data-ng-if="!user.anonymous || !allowAnonymous">\n <div class=col-xs-12>\n <div class=form-group>\n <input type=password id=inputLoginPassword name=inputLoginPassword class="form-control input-lg immediate-help" data-vn-placeholder=Password data-ng-model=user.password data-ng-enter=updateUser() data-vn-password-validate required>\n </div>\n </div>\n </div>\n </form>\n\n <div class=th-checkout__login__user-type ng-show=allowAnonymous>\n <div class=btn-group>\n <button type=button data-ng-click="user.anonymous = true" class="btn btn-default" data-ng-class="{ \'btn-primary\' : user.anonymous }">I\'m a new customer\n </button>\n <button type=button data-ng-click="user.anonymous = false" class="btn btn-default" data-ng-class="{ \'btn-primary\': !user.anonymous }">I\'ve ordered before\n </button>\n </div>\n </div>\n\n <button class="btn btn-primary btn-block btn-lg th-checkout__login__continue" data-ng-disabled=disabledButton data-ng-click=updateUser()>\n {{buttonText}} <i class="fa fa-angle-right"></i>\n </button>\n </div>\n <a href ui-sref=forgot-password>Forgot your password?</a>\n </div>\n </div>\n </div>\n</div>'),a.put("modal/vnAddressDeleteConf.tpl.html",'<div class="th-error-wrap clearfix th-modal">\n <a href class=th-modal__close ng-click=$dismiss()>\n <i class="fa fa-times"></i>\n </a>\n <div class=th-error-details>\n <div class="th-error-details__header modal-header">\n <div class=modal-body>\n <div class=th-modal__message>\n {{ :: message }}\n </div>\n\n <div class="th-modal__body row">\n <div class=col-xs-12>\n <div class=th-message-details__section2 vn-address-display="" address=::addressToDelete></div>\n </div>\n </div>\n </div>\n <div class="modal-footer container-fluid">\n <div class=row>\n <div class="col-xs-12 col-sm-6">\n <button class="btn btn-default btn-lg th-modal__button th-modal__button--secondary" ng-click=$dismiss()>Cancel</button>\n </div>\n <div class="col-xs-12 col-sm-6">\n <button class="btn btn-primary btn-lg th-modal__button th-modal__button--primary" ng-click=$close()>{{::buttonText}}</button>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>'),a.put("modal/vnErrorModal.tpl.html",'<div class=th-error-details>\n <div class="th-error-details__header modal-header">\n <h1>Sorry, something went wrong with the page...</h1>\n\n <div class=modal-body>\n <p class=th-error-details__section1>... but it might just be a small glitch. Try refreshing the page\n to see if that fixes it.</p>\n\n <p class=th-error-details__section2>\n If the problem persists, please try again later.\n </p>\n </div>\n <div class=modal-footer>\n <button class="btn btn-warning" ng-click=$close()>Close</button>\n </div>\n </div>\n</div>'),a.put("modal/vnMessageModal.tpl.html",'<div class="th-error-wrap clearfix">\n <div class=th-error-details>\n <div class="th-error-details__header modal-header">\n <h1>This is a generic app message template</h1>\n <div class=modal-body>\n <p class=th-message-details__section1>It should be over ridden in the calling application</p>\n\n </div>\n <div class=modal-footer>\n <button class="btn btn-warning" ng-click=$dismiss()>Ok</button>\n <button class="btn btn-warning" ng-click=$close()>Cancel</button>\n </div>\n </div>\n </div>\n</div>'),a.put("modal/vnPaymentProfileDeleteConf.tpl.html",'<div class="th-error-wrap clearfix th-modal">\n <a href class=th-modal__close ng-click=$dismiss()>\n <i class="fa fa-times"></i>\n </a>\n <div class=th-error-details>\n <div class="th-error-details__header modal-header">\n <div class=modal-body>\n <div class=th-modal__message>\n {{ :: message }}\n </div>\n\n <div class="th-modal__body row">\n <div class=col-xs-12>\n <span class=th-credit-card data-ng-class=::paymentProfileToDelete.card.ccCssClass></span>\n <span>{{ ::paymentProfileToDelete.card.cardNumber.slice(-4) }}</span>\n <span>{{ ::paymentProfileToDelete.card.expMonth }}/{{ ::paymentProfileToDelete.card.expYear }}</span>\n </div>\n </div>\n\n </div>\n <div class="modal-footer container-fluid">\n <div class=row>\n <div class="col-xs-12 col-sm-6">\n <button class="btn btn-default btn-lg th-modal__button th-modal__button--secondary" ng-click=$dismiss()>Cancel</button>\n </div>\n <div class="col-xs-12 col-sm-6">\n <button class="btn btn-primary btn-lg th-modal__button th-modal__button--primary" ng-click=$close()>{{::buttonText}}</button>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>'),a.put("my-account/billing-addresses.html",'<div class="th-my-account container" data-ng-cloak="">\n\n <div class="th-my-account__breadcrumbs row">\n <div class=col-xs-12>\n <div ncy-breadcrumb></div>\n </div>\n </div>\n \n <div class=th-my-account__title>\n {{vm.pageTitle}}\n </div>\n\n <div class=row>\n <div class="col-xs-12 col-sm-7 col-md-7">\n <div class=th-my-account__overlay data-ng-if=vm.loading vn-busy-animation vn-busy-animation-show="{{ vm.loading }}" vn-busy-animation-size=80px vn-busy-animation-class=th-my-account__overlay--loader></div>\n\n <div data-ng-show="!vm.addressToEdit && !vm.addressToAdd" class="th-address__choose animate-show">\n <div class=th-address__choose__options>\n <a href class=th-address__choose__options__new-option data-ng-click=vm.addAddress() ng-repeat-end>\n <i class="fa fa-plus"></i>  Add a Billing Address</a>\n \n <div data-ng-repeat="billingAddress in vm.billingAddresses" class=th-address__choose__options__option>\n <div class=styled-optionbox-option>\n <div vn-address-display-actions="" data-address=billingAddress data-on-make-preferred-clicked=vm.makeAddressPreferred($index) data-on-delete-clicked=vm.deleteAddress(address) data-on-edit-clicked="vm.editAddress(address, $index)"></div>\n </div>\n </div>\n </div>\n </div>\n <div data-ng-show=vm.addressToEdit class="th-address__enterAddress animate-show">\n <div data-vn-address-editor="" data-ng-if=vm.addressToEdit data-countries=vm.countries data-address=vm.addressToEdit data-title="Edit Shipping Address" data-on-save=vm.saveEditedAddress() data-on-cancel=vm.cancelEditAddress() data-show-save-button=true data-save-text=save data-show-cancel-button=true>\n </div>\n </div>\n <div data-ng-show=vm.addressToAdd class="th-address__enterAddress animate-show">\n <div data-vn-address-editor="" data-ng-if=vm.addressToAdd data-countries=vm.countries data-address=vm.addressToAdd data-title="Edit Shipping Address" data-on-save=vm.saveNewAddress() data-on-cancel=vm.cancelAddAddress() data-show-save-button=true data-save-text=add data-show-cancel-button=true>\n </div>\n </div>\n\n </div>\n <div class="col-xs-12 col-sm-5 col-md-4 col-md-offset-1 th-my-account__group">\n <div class=th-my-account__title>More Addresses & Payments</div>\n <ul class=th-my-account__group__links>\n <li><a href="" data-ui-sref=my-account.shippingaddresses>Shipping Addresses</a></li>\n <li><a href="" data-ui-sref=my-account.paymentprofiles>Payment Profiles</a></li>\n </ul>\n </div>\n </div>\n <div class=th-checkout__step__backButton>\n <a ui-sref=my-account>\n <i class="fa fa-arrow-left">  Back to My Account</i>\n </a>\n </div>\n</div>'),a.put("my-account/change-email.html",'<div class="th-my-account container" data-ng-cloak="">\n <div class=th-my-account__title>\n Change Email\n </div>\n\n <div class=row>\n <div class="col-xs-12 col-sm-7 col-md-7">\n <div class=th-my-account__overlay data-ng-if=vm.loading vn-busy-animation vn-busy-animation-show="{{ vm.loading }}" vn-busy-animation-size=80px vn-busy-animation-class=th-my-account__overlay--loader></div>\n\n <form id=frmChangeEmail name=frmChangeEmail novalidate data-ng-submit="">\n <div class=row>\n <div class=col-xs-12>\n <div>\n <input id=changeEmail name=changeEmail class="form-control input-lg immediate-help" data-vn-placeholder="Updated E-mail" data-ng-model=user.changeEmail data-ng-class="{\'ng-invalid\':frmChangeEmail.confirmChangeEmail.$error.match}" data-ng-change=checkValidity() data-vn-email-validate required>\n\n <div class="input-help bottom" ng-if=frmChangeEmail.changeEmail.$touched>\n <div class=arrow></div>\n <h4>E-mail must:</h4>\n <ul>\n <li ng-class=emailEmpty>Not be <strong>empty</strong></li>\n <li ng-class=validEmail>Be a <strong>valid</strong> address</li>\n </ul>\n </div>\n </div>\n </div>\n </div>\n <div class=row>\n <div class=col-xs-12>\n <input id=confirmChangeEmail name=confirmChangeEmail class="form-control input-lg immediate-help" data-vn-placeholder="Confirm Updated E-mail" data-ng-model=user.confirmChangeEmail data-match=frmChangeEmail.changeEmail data-ng-change=checkValidity() data-vn-email-validate required>\n\n <div class="input-help bottom" ng-if=frmChangeEmail.confirmChangeEmail.$touched>\n <div class=arrow></div>\n <h4>E-mail must:</h4>\n <ul>\n <li ng-class=emailEmpty>Not be <strong>empty</strong></li>\n <li ng-class=validEmail>Be a <strong>valid</strong> address</li>\n </ul>\n </div>\n </div>\n </div>\n <div class=row>\n <div class=col-xs-12>\n <input type=password id=inputPassword name=inputPassword class="form-control input-lg immediate-help" data-vn-placeholder=Password data-ng-model=user.password data-ng-change=checkValidity() data-vn-password-validate required>\n </div>\n </div>\n <div data-ng-show=emailDoesNotMatch class=text-danger>Emails do not match!</div>\n <button class="btn btn-primary btn-block btn-lg th-checkout__login__continue" data-ng-disabled=changeButtonDisabled data-ng-click=changeEmail()>\n Change Password <i class="fa fa-angle-right"></i>\n </button>\n </form>\n </div>\n <div class="col-xs-12 col-sm-5 col-md-4 col-md-offset-1 th-my-account__group">\n <div class=th-my-account__title>More Addresses & Payments</div>\n <ul class=th-my-account__group__links>\n <li><a href="" data-ui-sref=my-account.change-password>Change Password</a></li>\n </ul>\n </div>\n </div>\n <div class=th-checkout__step__backButton>\n <a ui-sref=my-account>\n <i class="fa fa-arrow-left">  Back to My Account</i>\n </a>\n </div>\n\n</div>'),a.put("my-account/change-password.html",'<div class="th-my-account container" data-ng-cloak="">\n <div class=th-my-account__title>\n Change Password\n </div>\n\n <div class=row>\n <div class="col-xs-12 col-sm-7 col-md-7">\n <div class=th-my-account__overlay data-ng-if=vm.loading vn-busy-animation vn-busy-animation-show="{{ vm.loading }}" vn-busy-animation-size=80px vn-busy-animation-class=th-my-account__overlay--loader></div>\n\n <form id=frmChangePassword name=frmChangePassword novalidate data-ng-submit="">\n <div class=row>\n <div class=col-xs-12>\n <input type=password id=inputPassword name=inputPassword class="form-control input-lg immediate-help" data-vn-placeholder="Current Password" data-ng-model=user.password data-ng-change=checkValidity() data-vn-password-validate required>\n </div>\n </div>\n <div class=row>\n <div class=col-xs-12>\n <input type=password id=inputNewPassword name=inputNewPassword class="form-control input-lg immediate-help" data-vn-placeholder="New Password" data-ng-model=user.newPassword data-ng-change=checkValidity() data-vn-password-validate required>\n </div>\n </div>\n <div class=row>\n <div class=col-xs-12>\n <input type=password id=inputConfirmPassword name=inputConfirmPassword class="form-control input-lg immediate-help" data-vn-placeholder="Confirm Password" data-ng-model=user.confirmPassword data-ng-change=checkValidity() data-vn-password-validate required>\n </div>\n </div>\n <div data-ng-show=passwordDoesNotMatch class=text-danger>Passwords do not match!</div>\n <button class="btn btn-primary btn-block btn-lg th-checkout__login__continue" data-ng-disabled=changeButtonDisabled data-ng-click=changePassword()>\n Change Password <i class="fa fa-angle-right"></i>\n </button>\n </form>\n </div>\n <div class="col-xs-12 col-sm-5 col-md-4 col-md-offset-1 th-my-account__group">\n <div class=th-my-account__title>More Addresses & Payments</div>\n <ul class=th-my-account__group__links>\n <li><a href="" data-ui-sref=my-account.change-email>Change Email Address</a></li>\n </ul>\n </div>\n </div>\n <div class=th-checkout__step__backButton>\n <a ui-sref=my-account>\n <i class="fa fa-arrow-left">  Back to My Account</i>\n </a>\n </div>\n\n</div>'),a.put("my-account/my-account.html",'<div data-vn-app-message=""></div>\n<div ui-view>\n <div class="container th-my-account">\n <div class=row>\n <div class="col-xs-12 th-my-account__group th-my-account__group--header">\n <div class="th-my-account__title th-my-account__group--header__title">My Account</div>\n <div class=th-my-account__group--header__welcome>\n Hi, {{user.firstName}} (<a href ui-sref=logout>log out</a>)\n </div>\n </div>\n </div>\n\n <div class=row>\n <div class="col-xs-12 th-my-account__group th-my-account__group--orders">\n <div class=th-my-account__title>Orders</div>\n\n <div class=th-my-account__overlay data-ng-if=loading vn-busy-animation vn-busy-animation-show="{{ loading }}" vn-busy-animation-size=80px vn-busy-animation-class=th-my-account__overlay--loader></div>\n <div data-ng-if="orders.length == 0">\n <p class=text-muted>\n You haven\'t placed an order with us yet.\n </p>\n </div>\n\n <div data-ng-if="orders.length > 0">\n <div data-vn-order-table="" orders=orders class=hidden-xs></div>\n <div data-vn-order-list-view="" orders=orders class="hidden-sm hidden-md hidden-lg hidden-xl"></div>\n <div class=th-my-account__group__links>\n <a href data-ui-sref=my-account.orders.list>View all Orders</a>\n </div>\n </div>\n </div>\n </div>\n\n <div class=row>\n <div class="col-xs-12 col-sm-6 th-my-account__group th-my-account__group--addresses">\n <div class=th-my-account__title>Addresses & Payments</div>\n <ul class=th-my-account__group__links>\n <li><a href="" data-ui-sref=my-account.shippingaddresses>Shipping Addresses</a></li>\n <li><a href="" data-ui-sref=my-account.paymentprofiles>Payment Profiles</a></li>\n <li><a href="" data-ui-sref=my-account.billingaddresses>Billing Addresses</a></li>\n </ul>\n </div>\n <div class="col-xs-12 col-sm-6 th-my-account__group th-my-account__group--email">\n <div class=th-my-account__title>Email & Password</div>\n <ul class=th-my-account__group__links>\n <li><a href="" data-ui-sref=my-account.change-email>Change Email Address</a></li>\n <li><a href="" data-ui-sref=my-account.change-password>Change Password</a></li>\n </ul>\n </div>\n </div>\n </div>\n</div>'),a.put("my-account/orders.detail.html",'<div class="th-order-detail container">\n <div class=row>\n <div class=col-xs-12>\n \n <div class=th-my-account__overlay data-ng-if=vm.loading vn-busy-animation vn-busy-animation-show="{{ vm.loading }}" vn-busy-animation-size=80px vn-busy-animation-class=th-my-account__overlay--loader></div>\n\n <div class="th-my-account__breadcrumbs row">\n <div class=col-xs-12>\n <div ncy-breadcrumb></div>\n </div>\n </div>\n\n <div class="th-order-detail__header row">\n <div class=col-xs-12>\n <div class="th-order-detail__title th-order-detail__header__title">Order Details</div>\n </div>\n </div>\n\n <div class=row>\n <div class="col-xs-12 col-sm-6">\n <div class=th-order-detail__header__order-date>Placed on <span>{{::vm.order.orderDate | date}}</span></div>\n <div class=th-order-detail__header__order-details>\n <span class=th-order-detail__header__order-details__order-number>Order <span>#{{::vm.order.orderId}}</span></span> | <span class=th-order-detail__header__order-details__order-status>{{::vm.order.orderStatus}}</span>\n </div>\n <div class="panel panel-default th-order-detail__items">\n <div class=panel-body>\n <div class="row th-order-detail__items__product" data-ng-repeat="product in vm.order.orderItems">\n <div class="col-xs-3 col-sm-3 col-md-3 th-order-detail__items__product__img">\n <a href ui-sref="product({slug: product.slug})"><img data-ng-src={{product.imageUrl}} width=100%></a>\n </div>\n <div class="col-xs-6 col-sm-6 col-md-6">\n <div class=th-order-detail__items__product__name>\n <a href ui-sref="product({slug: product.slug})">{{::product.productName}}</a>\n </div>\n <div class=th-order-detail__items__product__qty>Qty: {{::product.quantity}}</div>\n <div class=th-order-detail__items__product__options>{{::product.options}}</div>\n </div>\n <div class="col-xs-3 col-sm-3 col-md-3">\n <div class="th-order-detail__items__product__price align-right currency">{{::product.price.subtotal | currency}}</div>\n </div>\n </div>\n </div>\n <div class=panel-footer>\n <div class="row th-order-detail__items__discount" data-ng-repeat="discount in vm.order.discounts">\n <div class=col-xs-8>{{::discount.couponCode}}</div>\n <div class="align-right col-xs-4 currency">-{{::discount.value | currency}}</div>\n </div>\n <div class="row th-order-detail__items__shipping">\n <div class=col-xs-8>Shipping</div>\n <div class="align-right col-xs-4">{{::vm.order.totals.shipping | currency}}</div>\n </div>\n <div class="row th-order-detail__items__tax">\n <div class=col-xs-8>Tax</div>\n <div class="align-right col-xs-4">{{::vm.order.totals.taxTotal | currency}}</div>\n </div>\n <div class="row th-order-detail__items__total">\n <div class=col-xs-8>Total</div>\n <div class="align-right col-xs-4">{{::vm.order.totals.grandTotal | currency}}</div>\n </div>\n </div>\n </div>\n </div>\n\n <div class="col-xs-12 col-sm-6">\n <div class=th-order-detail__paid-with>\n <div class=th-order-detail__title>Paid With</div>\n <div class="panel panel-default th-order-detail__paid-with">\n <div class=panel-body>\n'+" <div class=th-credit-card data-ng-class=\"{'th-credit-card--visa': vm.order.paymentProfile.paymentMethod == 'Visa', 'th-credit-card--amex': vm.order.paymentProfile.paymentMethod == 'American Express', 'th-credit-card--discover': vm.order.paymentProfile.paymentMethod == 'Discover', 'th-credit-card--mastercard': vm.order.paymentProfile.paymentMethod == 'MasterCard'}\"></div>\n <span class=th-order-detail__paid-with__card-number>{{::vm.order.paymentProfile.PCIaaS_MaskedCardRef}}</span>\n </div>\n </div>\n </div>\n <div class=th-order-detail__shipping>\n <div class=th-order-detail__title>Shipping</div>\n <div class=\"panel panel-default\">\n <div class=panel-body>\n <div class=th-order-detail__shipping__name>{{::vm.order.shippingAddress.firstName}} {{::vm.order.shippingAddress.lastName}}</div>\n <div class=th-order-detail__shipping__address-1>{{::vm.order.shippingAddress.address1}}</div>\n <div class=th-order-detail__shipping__address-2>{{::vm.order.shippingAddress.address2}}</div>\n <div>\n <span class=th-order-detail__shipping__city>{{::vm.order.shippingAddress.city}}</span>,\n <span class=th-order-detail__shipping__state>{{::vm.order.shippingAddress.state}}</span>\n <span class=th-order-detail__shipping__zip>{{::vm.order.shippingAddress.postalCode}}</span>\n </div>\n <div data-ng-if=\"vm.order.trackingDetails.length > 0\">\n <hr>\n <div class=th-order-detail__shipping__tracking-detail data-ng-repeat=\"tracking in vm.order.trackingDetails\">\n <div>{{::tracking.shippingMethodName}}</div>\n <div>Tracking: <a data-ng-href={{::tracking.trackingUri}} target=_blank>{{::tracking.trackingNumber}}</a></div>\n </div>\n </div>\n \n </div>\n </div>\n </div>\n <div class=th-order-detail__notes data-ng-if=\"vm.order.misc.comment != ''\">\n <div class=th-order-detail__title>Notes</div>\n <div class=\"panel panel-default\">\n <div class=panel-body>\n <div>{{::vm.order.misc.comment || \"No Notes\"}}</div>\n </div>\n </div>\n </div>\n </div>\n\n </div>\n </div>\n </div>\n</div>"),a.put("my-account/orders.html","<div ui-view></div>"),a.put("my-account/orders.list.html",'<div class="th-orders-list container" data-ng-cloak="" data-ng-init=vm.init()>\n <div class=row>\n <div class=col-xs-12>\n <div class="th-my-account__breadcrumbs row">\n <div class=col-xs-12>\n <div ncy-breadcrumb></div>\n </div>\n </div>\n \n <div class=th-my-account__title>\n Orders\n </div>\n\n <div class=th-my-account__overlay data-ng-if=vm.loading vn-busy-animation vn-busy-animation-show="{{ vm.loading }}" vn-busy-animation-size=80px vn-busy-animation-class=th-my-account__overlay--loader></div>\n\n <div data-ng-if="vm.orders.length == 0">\n <p class=text-muted>\n You haven\'t placed an order with us yet.\n </p>\n </div>\n\n <div data-ng-if="vm.orders.length > 0">\n <div class=th-orders-list__page-size>\n <select ng-options="item.text for item in vm.pageSizes" ng-model=vm.selectedPageSize ng-change=vm.getOrders()></select>\n </div>\n\n <div data-vn-order-list-view="" orders=vm.orders class="hidden-sm hidden-md hidden-lg hidden-xl"></div>\n <div data-vn-order-table="" orders=vm.orders class=hidden-xs></div>\n\n <div class="well well-sm th-orders-list__pagination">\n <span>Page: {{vm.currentPage}} / {{vm.cursor.totalPages}}</span>\n <div class=pull-right>\n <pagination total-items=vm.cursor.total ng-model=vm.currentPage class=pagination-sm previous-text=‹ next-text=› items-per-page=vm.selectedPageSize.value ng-change=vm.getOrders() max-size=vm.maxSize></pagination>\n </div>\n </div>\n </div>\n\n\n <div class=th-checkout__step__backButton>\n <a ui-sref=my-account>\n <i class="fa fa-arrow-left">  Back to My Account</i>\n </a>\n </div>\n </div>\n </div>\n</div>'),a.put("my-account/payment-profiles.html",'<div class="th-my-account th-payment-profiles container" data-ng-cloak="">\n\n <div class="th-my-account__breadcrumbs row">\n <div class=col-xs-12>\n <div ncy-breadcrumb></div>\n </div>\n </div>\n\n <div class=th-my-account__title>\n {{vm.pageTitle}}\n </div>\n\n <div class=row>\n <div class="col-xs-12 col-sm-7 col-md-7">\n <div class=th-my-account__overlay data-ng-if=vm.loading vn-busy-animation vn-busy-animation-show="{{ vm.loading }}" vn-busy-animation-size=80px vn-busy-animation-class=th-my-account__overlay--loader></div>\n <div data-ng-show="!vm.paymentProfileToEdit && !vm.paymentProfileToAdd" class=animate-show>\n <div class=th-list>\n <div class=th-list__header ng-repeat-end>\n <a class=th-list__header__item href data-ng-click=vm.addPaymentProfile()><i class="fa fa-plus"></i>  Add a\n Credit Card</a>\n </div>\n <div data-ng-repeat="paymentProfile in vm.paymentProfiles" class=th-list__item>\n <div class=styled-optionbox-option>\n <div vn-credit-card-display-actions data-payment-profile=paymentProfile data-on-make-preferred-clicked=vm.makePaymentProfilePreferred($index) data-on-delete-clicked=vm.deletePaymentProfile(paymentProfile) data-on-edit-clicked=vm.editPaymentProfile(paymentProfile)>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div data-ng-show=vm.paymentProfileToAdd class="th-address__enterAddress animate-show">\n <div data-vn-credit-card-editor="" data-ng-if=vm.paymentProfileToAdd data-card=vm.paymentProfileToAdd.card data-title="Edit Shipping Address" data-on-save=vm.saveNewPaymentProfile() data-on-cancel=vm.cancelAddPaymentProfile() data-show-save-button=true data-save-text=add data-show-cancel-button=true>\n </div>\n </div>\n\n </div>\n <div class="col-xs-12 col-sm-5 col-md-4 col-md-offset-1 th-my-account__group">\n <div class=th-my-account__title>More Addresses & Payments</div>\n <ul class=th-my-account__group__links>\n <li><a href="" data-ui-sref=my-account.shippingaddresses>Shipping Addresses</a></li>\n <li><a href="" data-ui-sref=my-account.billingaddresses>Billing Addresses</a></li>\n </ul>\n </div>\n </div>\n <div class=th-checkout__step__backButton>\n <a ui-sref=my-account>\n <i class="fa fa-arrow-left">  Back to My Account</i>\n </a>\n </div>\n\n</div>'),a.put("my-account/shipping-addresses.html",'<div class="th-my-account container" data-ng-cloak="">\n \n <div class="th-my-account__breadcrumbs row">\n <div class=col-xs-12>\n <div ncy-breadcrumb></div>\n </div>\n </div>\n\n <div class=th-my-account__title>\n {{vm.pageTitle}}\n </div>\n\n <div class=row>\n <div class="col-xs-12 col-sm-7 col-md-7">\n <div class=th-my-account__overlay data-ng-if=vm.loading vn-busy-animation vn-busy-animation-show="{{ vm.loading }}" vn-busy-animation-size=80px vn-busy-animation-class=th-my-account__overlay--loader></div>\n <div data-ng-show="!vm.addressToEdit && !vm.addressToAdd" class="th-address__choose animate-show">\n <div class=th-address__choose__options>\n <a href data-ng-click=vm.addAddress() class=th-address__choose__options__new-option ng-repeat-end>\n <i class="fa fa-plus"></i>  Add a Shipping Address\n </a>\n <div data-ng-repeat="shippingAddress in vm.shippingAddresses" class=th-address__choose__options__option>\n <div class=styled-optionbox-option>\n <div vn-address-display-actions="" data-address=shippingAddress data-on-make-preferred-clicked=vm.makeAddressPreferred($index) data-on-delete-clicked=vm.deleteAddress(address) data-on-edit-clicked="vm.editAddress(address, $index)" data-shipping=true></div>\n </div>\n </div>\n </div>\n </div>\n <div data-ng-show=vm.addressToEdit class="th-address__enterAddress animate-show">\n <div data-vn-address-editor="" data-ng-if=vm.addressToEdit data-countries=vm.countries data-address=vm.addressToEdit data-title="Edit Shipping Address" data-on-save=vm.saveEditedAddress() data-on-cancel=vm.cancelEditAddress() data-show-save-button=true data-save-text=save data-show-cancel-button=true data-shipping=true>\n </div>\n </div>\n <div data-ng-show=vm.addressToAdd class="th-address__enterAddress animate-show">\n <div data-vn-address-editor="" data-ng-if=vm.addressToAdd data-countries=vm.countries data-address=vm.addressToAdd data-title="Edit Shipping Address" data-on-save=vm.saveNewAddress() data-on-cancel=vm.cancelAddAddress() data-show-save-button=true data-save-text=add data-show-cancel-button=true data-shipping=true>\n </div>\n </div>\n\n </div>\n <div class="col-xs-12 col-sm-5 col-md-4 col-md-offset-1 th-my-account__group">\n <div class=th-my-account__title>More Addresses & Payments</div>\n <ul class=th-my-account__group__links>\n <li><a href="" data-ui-sref=my-account.billingaddresses>Billing Addresses</a></li>\n <li><a href="" data-ui-sref=my-account.paymentprofiles>Payment Profiles</a></li>\n </ul>\n </div>\n </div>\n <div class=th-checkout__step__backButton>\n <a ui-sref=my-account>\n <i class="fa fa-arrow-left">  Back to My Account</i>\n </a>\n </div>\n\n</div>'), +a.put("nav-menu-mobile/vn-nav-mobile.tpl.html",'<ul class="nav navbar-nav th-mobile-list">\n <li class="th-mobile-list__item th-mobile-list__item--header">Categories</li>\n <li class="dropdown th-mobile-list__item" ng-repeat="category in categories">\n <a href=# class="dropdown-toggle navbar-link th-dropdown-toggle th-mobile-list__link" ng-if=category.subCategories.length data-toggle=dropdown>\n {{category.name}} <span class="pull-right caret"></span>\n </a>\n <a data-ng-href={{category.url}} class="navbar-link th-dropdown-toggle th-mobile-list__link" ng-if=!category.subCategories.length>\n {{category.name}}\n </a>\n <ul class="dropdown-menu th-mobile-list th-mobile-list--sub" data-ng-if=category.subCategories.length>\n <li>\n <a data-ng-href={{category.url}} class="th-mobile-list__link th-mobile-list__link--sub">\n All {{category.name}}\n </a>\n </li>\n <li data-ng-repeat="subCategory in category.subCategories">\n <a class="th-mobile-list__link th-mobile-list__link--sub" data-ng-href={{subCategory.url}}>{{subCategory.name}}</a>\n </li>\n </ul>\n </li>\n</ul>'),a.put("nav-menu/vn-nav.tpl.html",'<div class="collapse navbar-collapse" id=th-main-menu data-ng-class="!navCollapsed && \'in\'" data-ng-click="navCollapsed=true">\n <ul class="nav navbar-nav">\n <li class="dropdown nav-top-level-menu-items" data-ng-repeat="category in smartNavCategories">\n <a class=navbar-link data-ng-href="{{ category.url }}">\n {{category.name}}\n <span data-ng-if=category.subCategories.length class="caret th-dropdown-toggle"></span>\n </a>\n <ul vn-show-on-dropdown-hover class=dropdown-menu data-ng-if=category.subCategories.length>\n <li data-ng-repeat="subCategory in category.subCategories">\n <a data-ng-href="{{ subCategory.url }}">{{subCategory.name}}</a>\n </li>\n </ul>\n </li>\n <li class=dropdown data-ng-show=displaySmartNavMoreMenuItem>\n <a href=# class=navbar-link data-translate=header.smartNavMoreLinkText>\n More\n <span class="caret th-dropdown-toggle"></span>\n </a>\n <ul vn-show-on-dropdown-hover class=dropdown-menu>\n <li data-ng-repeat="category in smartNavMoreCategories">\n <a class=navbar-link data-ng-href="{{ category.url }}">{{category.name}}</a>\n </li>\n </ul>\n </li>\n </ul>\n </div>'),a.put("orders/vn-order-list-view.tpl.html",'<div class="th-order-list-view container-fluid">\n <a href ui-sref="my-account.orders.detail({id: order.orderId})" class="th-order-list-view__item list-group-item row" data-ng-repeat="order in orders">\n <div class="col-xs-7 th-order-list-view__item-left">\n <div class=th-order-list-view__item__id data-ng-bind=::order.orderId></div>\n <div class=th-order-list-view__item__num-items>\n {{::order.orderItems.length}} Items\n </div>\n <div class=th-order-list-view__item__status data-ng-bind=::order.orderStatus></div>\n </div>\n <div class="col-xs-5 th-order-list-view__item-right">\n <div class=th-order-list-view__item__date data-ng-bind="::order.orderDate | date"></div>\n <div class=th-order-list-view__item__total data-ng-bind="::order.orderTotal | currency"></div>\n </div>\n </a>\n</div>'),a.put("orders/vn-order-table.tpl.html",'<table class="th-orders-table table table-striped table-hover">\n <thead>\n <tr>\n <th>Order #</th>\n <th>Order Date</th>\n <th>Items</th>\n <th>Order Total</th>\n <th>Status</th>\n </tr>\n </thead>\n <tbody>\n <tr data-ng-repeat="order in orders">\n <td><a href ui-sref="my-account.orders.detail({id: order.orderId})">{{ ::order.orderId }}</a></td>\n <td data-ng-bind="::order.orderDate | date"></td>\n <td data-ng-bind=::order.orderItems.length></td>\n <td data-ng-bind="::order.orderTotal | currency"></td>\n <td data-ng-bind=::order.orderStatus></td>\n </tr>\n </tbody>\n</table>'),a.put("pagination/vnPaginator.tpl.html",'<ul class=pager data-ng-if="cursor.totalPages > 1">\n <li data-ng-class="{disabled: cursor.currentPage == 1}">\n <a href data-ng-click=prevPage()><span class="glyphicon glyphicon-chevron-left"></span></a></li>\n <li data-ng-class="{disabled: cursor.currentPage == cursor.totalPages}">\n <a href data-ng-click=nextPage()><span class="glyphicon glyphicon-chevron-right"></span></a></li>\n</ul>\n\n <div class=pager>\n Page {{ cursor.currentPage }} of {{ cursor.totalPages }}\n </div>'),a.put("pay-with/credit-card-views.html",'<div class=th-checkout__credit-card data-ng-controller="CreditCardViewsCtrl as cc" data-ng-init=cc.init() data-ng-switch=cc.state>\n\n <div data-vn-credit-card-display data-ng-switch-when=VALIDCARDENTERED data-card=cc.card data-on-dirty=cc.setCardValidFalse() data-on-save=cc.saveCreditCard() data-on-click=cc.toggleChange() data-state=cc.displayCardState>\n </div>\n\n <div data-vn-credit-card-editor data-ng-switch-when=ENTERCARD data-card=cc.card data-on-dirty=cc.setCardValidFalse() data-show-save-button=false data-on-save=cc.saveCreditCard()>\n </div>\n\n <div data-vn-credit-card-picker data-ng-switch-when=PICKCARD data-state=cc.pickCardState data-card=cc.card data-card-list=cc.user.paymentProfiles data-on-select="" data-open-credit-cards=true data-close-picker=cc.closePicker() data-choose-picker=cc.choosePicker() data-enter-card=cc.enterCard() data-set-payment-profile=cc.setPaymentProfile(id) data-selected-index=cc.selectedIndex data-on-dirty-card=cc.setCardValidFalse() data-on-save-card=cc.saveCreditCard()>\n </div>\n\n</div>'),a.put("pay-with/vn-credit-card-display-action.html",'<div class=conatiner-fluid>\n <div>\n <span class=th-credit-card data-ng-class=paymentProfile.card.ccCssClass></span>\n <span>{{ paymentProfile.card.cardNumber.slice(-4) }}</span>\n <span>{{ paymentProfile.card.expMonth }}/{{ paymentProfile.card.expYear }}</span>\n </div>\n <div class="row th-address__display__actions">\n <div class="col-xs-7 th-address__display__actions__preferred">\n <span data-ng-if=!paymentProfile.preferred>\n <button class="btn btn-default" data-ng-click=onMakePreferredClicked()>Make Preferred\n </button>\n </span>\n \n <span data-ng-if=paymentProfile.preferred>\n <i class="fa fa-check"></i> Preferred</span>\n </div>\n <div class="col-xs-4 col-xs-offset-1 col-sm-3 col-sm-offset-2 col-md-2 col-md-offset-3">\n <div class=row>\n <div class=col-xs-6>\n <a href data-ng-click="onDeleteClicked({paymentProfile: paymentProfile})"><i class="fa fa-trash-o"></i></a>\n </div>\n </div>\n </div>\n </div>\n</div>'),a.put("pay-with/vn-credit-card-display.html",'<div class=th-checkout__credit-card__display data-ng-class="{ \'-verify-CVV\' : state == \'CVV\'}">\n <div class=row data-ng-class="{\'clickable\': !readonlyVal}" data-ng-cloak data-ng-click=onClick()>\n <div class=col-xs-10>\n <span class=th-credit-card data-ng-class=card.ccCssClass></span>\n <span class=th-checkout__credit-card__display__last4>{{ card.cardNumber.slice(-4) }}</span>\n <span class=th-checkout__credit-card__display__exp>{{card.expMonth }}/{{card.expYear }}</span>\n </div>\n <div class=col-xs-2 data-ng-show=showArrowVal>\n <i class="fa fa-angle-right fa-2x pull-right"></i>\n </div>\n </div>\n <form id=frmCVV name=frmCVV novalidate ng-show="state==\'CVV\'">\n <hr>\n <div class=form-group>\n <div class=row>\n <div class="col-xs-7 th-checkout__credit-card__display__verifyCVV">\n <label class=th-checkout__credit-card__display__verifyCVV__label>Please verify your card</label>\n </div>\n <div class="col-xs-4 col-sm-2 th-checkout__credit-card__display__verifyCVV">\n <input id=inputCreditCardCVV name=inputCreditCardCVV class="form-control input-lg immediate-help" data-vn-placeholder=CVV data-ng-model=card.CVV data-vn-cvv-validate data-vn-cc-type="{{ card.cardTypeName }}" required>\n <input type=hidden data-ng-model=card.pCIaaSId id=hiddenCardID value="{{ card.pCIaaSId }}" name="hiddenCardID">\n <div class="input-help top" ng-if=frmCVV.inputCreditCardCVV.$touched>\n <div class=arrow></div>\n <h4>CVV must:</h4>\n <ul>\n <li ng-class=cvvValidFormat>Be <strong>{{ cvvLength }} digits</strong> long</li>\n </ul>\n </div>\n </div>\n </div>\n </div>\n </form>\n</div>'),a.put("pay-with/vn-credit-card-editor.html",'<div>\n <div class="credit-card-error -aligned" ng-if=card.pCIaaSError ng-click="card.pCIaaSError = \'\'">\n <div class=row>{{card.pCIaaSError}}</div>\n </div>\n <div class="credit-card -aligned" ng-cloak>\n <div class=credit-card__strip></div>\n\n <form id=frmCreditCard name=frmCreditCard novalidate data-ng-submit=updateCreditCard()>\n <div class=row>\n <div class=col-xs-9>\n <div class=form-group>\n <input id=inputCreditCardNumber name=inputCreditCardNumber class="form-control input-lg immediate-help" data-vn-placeholder="Credit card number" data-ng-model=card.cardNumber data-vn-format-cc-number data-vn-cc-validate data-vn-cc-type="{{ card.cardTypeName }}" required>\n <input type=hidden data-ng-hide=true id=hiddenCardType name=hiddenCardType value="{{ card.cardTypeName }}">\n <input type=hidden data-ng-model=card.pCIaaSId id=hiddenCardID value="{{ card.pCIaaSId }}" name="hiddenCardID">\n\n <div class="input-help top-left" ng-if=frmCreditCard.inputCreditCardNumber.$touched>\n <div class=arrow></div>\n <h4>Credit card must:</h4>\n <ul>\n <li ng-class=creditCardValid>Be <strong>valid</strong> credit card number</li>\n <li ng-class=creditCardSupported>Be <strong>supported</strong> credit card issuer</li>\n </ul>\n </div>\n </div>\n </div>\n <div class=col-xs-3>\n <div class=form-group>\n <input id=inputCreditCardCVV name=inputCreditCardCVV class="form-control input-lg immediate-help" data-vn-placeholder=CVV data-ng-model=card.CVV data-ng-focus=setCCImage() data-ng-blur="setCCImage(\'reset\');" data-vn-cvv-validate data-vn-cc-type="{{ card.cardTypeName }}" required>\n\n <div class="input-help top" ng-if=frmCreditCard.inputCreditCardCVV.$touched>\n <div class=arrow></div>\n <h4>CVV must:</h4>\n <ul>\n <li ng-class=cvvValidFormat>Be <strong>{{ cvvLength }} digits</strong> long</li>\n </ul>\n </div>\n </div>\n </div>\n </div>\n\n <div class=row>\n <div class=col-xs-4>\n <div class=form-group>\n <div class="credit-card__exp-month th-dropdown" dropdown>\n <button id=inputCreditCardExpMonth name=inputCreditCardExpMonth class="btn btn-default btn-lg dropdown-toggle form-control immediate-help" type=button data-toggle=dropdown dropdown-togle aria-haspopup=true role=button aria-expanded=false data-ng-class="{ \'ng-invalid\': card.expMonth === \'\' || expDateInvalid === undefined, \'ng-valid\': expDateInvalid === \'valid\' }" data-vn-placeholder=MM data-ng-model=card.expMonth value="{{ card.expMonth }}">\n\n {{ card.expMonth }}<span class=caret></span>\n </button>\n <div class="input-help top-left -dropdown" ng-if=frmCreditCard.inputCreditCardExpMonth.$touched>\n <div class=arrow></div>\n <h4>Expiration date must:</h4>\n <ul>\n <li ng-class=expDateInvalid>Be <strong>future</strong> date</li>\n </ul>\n </div>\n <ul class=dropdown-menu role=menu aria-labelledby=inputCreditCardExpMonth>\n <li ng-repeat="month in months track by $index">\n <a role=menuitem tabindex=-1 href data-ng-click="onExpMonthChanged(month, \'inputCreditCardExpMonth\');">\n\n {{ month.label }}\n </a>\n </li>\n </ul>\n </div>\n </div>\n </div>\n <div class=col-xs-4>\n <div class=form-group>\n <div class="credit-card__exp-year th-dropdown" dropdown>\n <button id=inputCreditCardExpYear name=inputCreditCardExpYear class="btn btn-default btn-lg dropdown-toggle form-control immediate-help" type=button data-toggle=dropdown dropdown-toggle aria-haspopup=true role=button aria-expanded=false data-ng-class="{ \'ng-invalid\': card.expYear === \'\' || expDateInvalid === undefined }" data-vn-placeholder=YY data-ng-model=card.expYear value="{{ card.expYear }}">\n\n {{ card.expYear }}<span class=caret></span>\n </button>\n <div class="input-help top-left -dropdown" ng-if=frmCreditCard.inputCreditCardExpYear.$touched>\n <div class=arrow></div>\n <h4>Expiration date must:</h4>\n <ul>\n <li ng-class=expDateInvalid>Be <strong>future</strong> date</li>\n </ul>\n </div>\n <ul class=dropdown-menu role=menu aria-labelledby=inputCreditCardExpYear>\n <li ng-repeat="year in rangeYears() track by $index">\n <a role=menuitem tabindex=-1 href data-ng-click="onExpYearChanged(year, \'inputCreditCardExpYear\');">\n\n {{ year }}\n </a>\n </li>\n </ul>\n </div>\n </div>\n </div>\n <div class=col-xs-4>\n <div class=form-group>\n <span class=th-credit-card data-ng-class=card.ccCssClass></span>\n </div>\n </div>\n </div>\n\n </form>\n </div>\n <div class=container-fluid>\n <div class=row data-ng-if=showCancelButtonValue>\n <div class=col-xs-6>\n <button class="btn btn-default btn-block btn-lg th-checkout__step__cancel" data-ng-click=onCancel()>\n {{cancelText}}\n </button>\n </div>\n <div class=col-xs-6>\n <button class="btn btn-primary btn-block btn-lg th-checkout__step__btn__continue" data-ng-click=saveCard() data-ng-enabled=frmAddress.$valid data-ng-if=showSaveButtonValue>\n {{saveText}} <i class="fa fa-angle-right"></i>\n </button>\n </div>\n </div>\n <div class=row data-ng-if=!showCancelButtonValue>\n <div class=col-xs-12>\n <button class="btn btn-primary btn-block btn-lg th-checkout__step__btn__continue" data-ng-click=saveCard() data-ng-enabled=frmAddress.$valid data-ng-if=showSaveButtonValue>\n {{saveText}} <i class="fa fa-angle-right"></i>\n </button>\n </div>\n </div>\n </div>\n</div>'),a.put("pay-with/vn-credit-card-picker.html",'<div class=th-checkout__credit-card>\n\n <div class=credit-card data-ng-class="{\'-aligned\': !openCreditCards}" ng-cloak>\n\n <div class="th-checkout__step__drawer -left" data-ng-class="{\'-open\': openCreditCards}">\n\n <div class=th-checkout__step__drawer__body data-ng-show=openCreditCards data-ng-cloak data-ng-switch=state>\n\n <div data-ng-switch-when=PICK>\n <a href class=th-checkout__step__drawer__close data-ng-click=closePicker()>\n <i class="fa fa-close fa-2x"></i>\n </a>\n\n <div class=th-checkout__step__drawer__title>Choose credit card</div>\n\n <div class=th-checkout__credit-card__choose>\n <div class=th-checkout__credit-card__choose__options ng-cloak>\n <label class=th-checkout__credit-card__choose__options__option data-ng-repeat="profile in cardList" data-ng-class="{\'-first\' : $index === 0}" for="profile{{ $index }}">\n <div class=styled-optionbox-option>\n <input type=radio id="profile{{ $index }}" name=profile data-ng-value=true data-ng-model=profile.preferred data-ng-class="{\'-inactive\' : !profile.preferred, \'-selected\' : profile.preferred}" data-ng-change="setIndex({{ $index }})">\n\n <div>\n <span class=th-credit-card data-ng-class=getCssClass(profile)></span>\n <span class=th-checkout__credit-card__display__last4>{{ profile.card.last4 }}</span>\n <span class=th-checkout__credit-card__display__exp>{{ profile.card.expMonth }}/{{ profile.card.expYear }}</span>\n </div>\n </div>\n </label>\n\n <a href class=th-checkout__credit-card__choose__options__new-option ng-repeat-end ng-cloak data-ng-click=addCard()>\n Enter a different card\n </a>\n </div>\n\n <button class="btn btn-primary btn-block btn-lg th-checkout__step__btn__continue" data-ng-click=choosePicker()>\n Continue <i class="fa fa-angle-right"></i>\n </button>\n </div>\n\n <div class=th-checkout__step__backButton>\n <a href=javascript:void(0); data-ng-click=closePicker()>\n <i class="fa fa-arrow-left"> back</i>\n </a>\n </div>\n </div>\n\n <div data-ng-switch-when=ENTER>\n <div class=th-checkout__step__drawer__title>Add credit card</div>\n <div data-vn-credit-card-editor data-card=card data-on-dirty=onDirtyCard() data-on-save=onSaveCard() data-show-save-button=true>\n </div>\n <div class=th-checkout__step__backButton>\n <a href=javascript:void(0); data-ng-click=goBackFromEnter()>\n <i class="fa fa-arrow-left"> back</i>\n </a>\n </div>\n </div>\n\n </div>\n </div>\n\n </div>\n\n</div>'),a.put("popover/vn-popover.tpl.html",'<div class="input-help {{ ::location }}">\n <div class=arrow></div>\n <h4>{{ ::title }}</h4>\n</div>'),a.put("product-image/vn-product-image.tpl.html",'<img data-ng-src="{{ getImagePath(product.imageCollections) }}" class=img-responsive alt="{{ product.name }}">'),a.put("product-search/vnSearchForm.tpl.html",'<div class=th-search role=search>\n <div data-ng-show=showSearch class=th-search__popout>\n <form class=form-inline role=search name=frmSearch data-ng-submit=doSearch() novalidate>\n <div class=form-group>\n <input data-ng-model=searchTerm class=th-search__popout--input placeholder=Search...>\n <button type=button data-ng-click=doSearch() class="btn btn-xs btn-primary th-search__popout--submit">Go!\n </button>\n </div>\n </form>\n </div>\n\n <a id=search-toggle data-ng-click="showSearch = !showSearch" ng-show=allowCollapse type=button class=th-search__trigger data-ng-class="{ \'-position\' : !showSearch }">\n <span class="glyphicon glyphicon-search"></span>\n </a>\n</div>'),a.put("review/review-details-2.html",'<div data-ng-controller=ReviewDetailsCtrl>\n\n <div class=th-checkout__thanks__title>Ship To</div>\n <div class="th-address__display -readonly" data-ng-if=shippingAddress>\n <div vn-address-display data-address=shippingAddress></div>\n </div>\n\n <div class=th-checkout__thanks__title>Shipping Method</div>\n <div class=th-checkout__ship-method>\n <div class=th-checkout__ship-method__display data-ng-if=shippingMethod>\n <div class=th-checkout__ship-method__display__name data-ng-bind-html=shippingMethod.name></div>\n <div class=th-checkout__ship-method__display__price>{{ shippingMethod.price | vnCurrency }}</div>\n </div>\n </div>\n\n <div class=th-checkout__thanks__title>Paid With</div>\n <div data-vn-credit-card-display data-card=payment.card data-state=NOCVV data-show-arrow=false data-readonly=true>\n </div>\n\n <div class=th-checkout__thanks__title>Billing Address</div>\n <div class="th-address__display -readonly" data-ng-if=billingAddress>\n <div vn-address-display data-address=billingAddress></div>\n </div>\n\n</div>'),a.put("review/vn-review-details.html",'<div>\n <div class=th-checkout__thanks__title>Ship To</div>\n <div class=th-checkout__thanks__display>\n <div class=row>\n <div class=col-xs-12>\n <span>{{ shippingAddress.firstName }} {{ shippingAddress.lastName }}</span>\n <span><br>{{ shippingAddress.address1 }}</span>\n <span data-ng-if=shippingAddress.address2><br>{{ shippingAddress.address2 }}</span>\n <span data-ng-if=isShippingLocationUS>\n <span><br>{{ shippingAddress.city }}, {{ shippingAddress.state }} {{ shippingAddress.postalCode }}</span>\n <span><br>{{ shippingAddress.phoneNumber | vnUsPhone }}</span>\n </span>\n\n \n <span data-ng-if=!isShippingLocationUS>\n <span><br>{{ shippingAddress.city }}</span>\n <span><br>{{ shippingAddress.state }} {{ shippingAddress.postalCode }}</span>\n <span><br>{{ shippingAddress.country }}</span>\n <span><br>{{ shippingAddress.phoneNumber }}</span>\n </span>\n \n </div>\n </div>\n\n <br style="clear : both">\n </div>\n\n <div class=th-checkout__thanks__title>Shipping Method</div>\n <div class=th-checkout__thanks__display>\n <div class=row>\n <div class=col-xs-12>\n <div class=th-checkout__thanks__display__name data-ng-bind-html=shippingMethod.name></div>\n <div class=th-checkout__thanks__display__price>{{ shippingMethod.price | vnCurrency }}</div>\n </div>\n </div>\n\n <br style="clear : both">\n </div>\n\n <div class=th-checkout__thanks__title>Paid With</div>\n\n <div class=th-checkout__thanks__display>\n <div class=row>\n <div class=col-xs-12>\n <span class=credit-card__total>{{ payment.total.grandTotal | currency }} charged to</span>\n <span class=th-credit-card data-ng-class=payment.card.ccCssClass></span>\n <span class=th-checkout__credit-card__display__last4>{{ payment.card.cardNumber | vnCreditCard:payment.card.cardTypeName}}</span>\n <span class=th-checkout__credit-card__display__exp>{{payment.card.expMonth }}/{{payment.card.expYear }}</span>\n </div>\n </div>\n\n <br style="clear : both">\n </div>\n\n <div class=th-checkout__thanks__title>Billing Address</div>\n <div class=th-checkout__thanks__display>\n <div class=row>\n <div class=col-xs-12>\n <span>{{ billingAddress.firstName }} {{ billingAddress.lastName }}</span>\n <span><br>{{ billingAddress.address1 }}</span>\n <span data-ng-if=billingAddress.address2><br>{{ billingAddress.address2 }}</span>\n <span data-ng-if=isBillingLocationUS>\n <span><br>{{ billingAddress.city }}, {{ billingAddress.state }} {{ billingAddress.postalCode }}</span>\n <span><br>{{ billingAddress.phoneNumber | vnUsPhone }}</span>\n </span>\n\n \n <span data-ng-if=!isBillingLocationUS>\n <span><br>{{ billingAddress.city }}</span>\n <span><br>{{ billingAddress.state }} {{ billingAddress.postalCode }}</span>\n <span><br>{{ billingAddress.country }}</span>\n <span><br>{{ billingAddress.phoneNumber }}</span>\n </span>\n \n\n </div>\n </div>\n\n <br style="clear : both">\n </div>\n</div>'),a.put("review/vn-review.html",'<div class=th-checkout__review>\n\n <div class="th-checkout__review__totals clearfix">\n <div class=th-checkout__review__totals__count>{{ cart.totals.qty }} items</div>\n <div class=th-checkout__review__totals__expand ng-class="{expanded: !reviewItems}"><button data-ng-click="reviewItems = !reviewItems"><span></span></button></div>\n <div class=th-checkout__review__totals__amount>{{ cart.totals.items | currency }}</div>\n </div>\n\n <div class=th-checkout__review__items data-ng-show=!reviewItems>\n <div class="th-checkout__review__items__item clearfix" data-ng-repeat="item in cart.items | reverse" data-ng-class="{\'-last\': $last}">\n\n <div class=th-checkout__review__items__item-image>\n <img data-ng-src="{{ item.imgUrl }}">\n </div>\n\n <div class=th-checkout__review__items__item-info>\n <div class=th-checkout__review__items__item-info--name>\n <span>{{ item.name }}</span>\n </div>\n\n <div class=th-checkout__review__items__item-info--price>{{ item.pricing.unitPrice | currency }}</div>\n\n <div class=th-checkout__review__items__item-info--option data-ng-repeat="option in item.options">\n <span>{{ option.optionText }}</span>\n </div>\n\n <div class=item-info-row>\n <div class=th-checkout__review__items__item-info--qty>\n <span>Qty</span> {{ item.qty }}\n </div>\n <div class=th-checkout__review__items_-info--subtotal>{{ item.pricing.subtotal | currency }}</div>\n </div>\n\n <div class=item-info-row data-ng-if="item.giftWrap.price > 0">\n <div class=th-checkout__review__items__item-info--qty>\n <span>Gift Wrap</span>\n </div>\n <div class=th-checkout__review__items__item-info--subtotal>{{ item.giftWrap.price | currency }}</div>\n </div>\n\n <div class=item-info-row data-ng-if="item.giftWrap.message != \'\'">\n <span>Message:</span> "{{ item.giftWrap.message }}"\n </div>\n </div>\n </div>\n </div>\n\n <div class=th-checkout__review__discounts data-ng-if=cart.discounts.length>\n <div class=th-checkout__review__discounts__discount data-ng-repeat="discount in cart.discounts">\n <div class=discount-info-row>\n <div class=th-checkout__review__discounts__discount-info>\n <span>{{ discount.name }}</span>\n </div>\n <div class=th-checkout__review__discounts__discount-info--subtotal>{{ discount.value | vnCurrency }}</div>\n </div>\n </div>\n </div>\n\n <div class=th-checkout__review__store-credit data-ng-if="cart.customer.storeCredit != 0">\n <div class=store-credit-info-row>\n <div class=th-checkout__review__store-credit-info>\n <span>Store Credit</span>\n </div>\n <div class=th-checkout__review__store-credit-info--subtotal>{{ cart.customer.storeCredit | vnCurrency }}</div>\n </div>\n </div>\n\n <div class=th-checkout__review__shipping-method>\n <div class=shipping-method-info-row>\n <div class=th-checkout__review__shipping-method-info>\n <span>Shipping</span>\n \n \n \n </div>\n <div class=th-checkout__review__shipping-method-info--subtotal>{{cart.totals.shipping | vnCurrency }}</div>\n </div>\n </div>\n\n <div class=th-checkout__review__tax>\n <div class=tax-info-row>\n <div class=th-checkout__review__tax-info>\n <span>Tax</span>\n </div>\n <div class=th-checkout__review__tax-info--subtotal>{{ cart.totals.taxTotal | currency }}</div>\n </div>\n </div>\n\n <div class=th-checkout__review__grand-total>\n <div class=grand-total-info-row>\n <div class=th-checkout__review__grand-total-info>\n <span>Grand Total</span>\n </div>\n <div class=th-checkout__review__grand-total-info--subtotal>{{ cart.totals.grandTotal | currency }}</div>\n </div>\n </div>\n</div>'),a.put("ship-method/ship-method.html",'<div class="th-checkout__section-heading th-checkout__ship-method__heading" data-ng-show="checkout.cart.shippingMethods.length > 0">\n Shipping Method\n</div>\n\n<div class=th-checkout__ship-method data-ng-controller=ShipMethodCtrl data-ng-show="checkout.cart.shippingMethods.length > 0" data-ng-switch=isEditable()>\n\n\n <label class=th-checkout__ship-method__method data-ng-switch-when=edit data-ng-repeat="method in checkout.cart.shippingMethods" for="shipping{{ $index }}">\n\n <div class=styled-optionbox-option>\n <input type=radio id="shipping{{ $index }}" name=shipping data-ng-value=true data-ng-model=method.selected data-ng-change="setPreferredShippingMethod({{ $index }})">\n <div>\n <div data-ng-bind-html=method.name class=th-checkout__ship-method__name></div>\n </div>\n </div>\n <div class=th-checkout__ship-method__price>{{ method.price | vnCurrency }}</div>\n\n </label>\n\n <div class=th-checkout__ship-method__display data-ng-switch-when=show>\n <div class=th-checkout__ship-method__display__name data-ng-bind-html=checkout.cart.shippingMethods[currentShippingMethodIdx].name></div>\n <div class=th-checkout__ship-method__display__price>{{ checkout.cart.shippingMethods[currentShippingMethodIdx].price | vnCurrency }}</div>\n\n </div>\n\n</div>'),a.put("ship-to/ship-to-views.html",'<div class=th-checkout__ship-to data-ng-controller="ShipToViewsCtrl as vm" data-ng-switch=vm.state data-ng-init=vm.init()>\n\n <div class=th-address__display data-ng-switch-when=VIEWADDRESS>\n <vn-address-display data-address=vm.shippingAddress data-on-click=vm.editShippingAddress() data-shipping=true data-show-edit-button=vm.shippingAddress></vn-address-display>\n </div>\n\n <div class=th-address__enterAddress data-ng-switch-when=EDITADDRESS ng-cloak>\n <div data-vn-address-editor="" address=vm.shippingAddress countries=vm.countries data-on-save=vm.saveShippingAddress() data-show-save-button=true data-shipping=true data-save-text="Get Shipping Rates"></div>\n </div>\n\n <div vn-address-picker data-ng-switch-when=PICKADDRESS data-address-list=vm.user.shippingAddresses data-new-address-title="Add Shipping Address" data-select-address-title="Choose Shipping Address" data-back-to-text="back to Ship To" data-show-copy-address=vm.showCopyAddress data-countries=vm.countries data-on-address-selected=vm.onAddressSelected() data-shipping=true data-save-address=vm.onAddressAdded(newAddress)></div>\n\n</div>'),a.put("thank-you/thank-you.html",'<div class=th-checkout__thanks ng-cloak="">\n <div class=th-checkout__thanks__header>\n <div class=title>Thank you for your order.</div>\n <div class=order-info>Your order number is No.{{ ::orderId }}</div>\n <div class=action-info>A copy of this has been sent to<br>{{ ::userEmail }}</div>\n\n <br style="clear : both">\n </div>\n\n <div class=container-fluid>\n <div class=row>\n <div class="col-sm-12 col-sm-offset-0 col-md-10 col-md-offset-1 col-lg-8 col-lg-offset-2">\n \n <div class=row>\n <div class="th-checkout__thanks__column col-xs-12 col-sm-6 col-md-6">\n <div class=th-checkout__thanks__title>Order Details</div>\n <div vn-review=checkout.cart></div>\n </div>\n <div class="th-checkout__thanks__column -next col-xs-12 col-sm-6 col-md-6">\n <div vn-review-details shipping-address=checkout.cart.shippingAddress shipping-method=shippingMethod payment=checkout.cart.paymentProfile billing-address=checkout.cart.billingAddress></div>\n </div>\n\n <br style="clear : both">\n </div>\n\n </div>\n </div>\n </div>\n</div>')}]),!function(a,b){b["true"]=a,angular.module("textAngularSetup",[]).value("taOptions",{toolbar:[["h1","h2","h3","h4","h5","h6","p","pre","quote"],["bold","italics","underline","ul","ol","redo","undo","clear"],["justifyLeft","justifyCenter","justifyRight","indent","outdent"],["html","insertImage","insertLink","insertVideo"]],classes:{focussed:"focussed",toolbar:"btn-toolbar",toolbarGroup:"btn-group",toolbarButton:"btn btn-default",toolbarButtonActive:"active",disabled:"disabled",textEditor:"form-control",htmlEditor:"form-control"},setup:{textEditorSetup:function(){},htmlEditorSetup:function(){}},defaultFileDropHandler:function(a,b){var c=new FileReader;return"image"===a.type.substring(0,5)?(c.onload=function(){""!==c.result&&b("insertImage",c.result,!0)},c.readAsDataURL(a),!0):!1}}).value("taSelectableElements",["a","img"]).value("taCustomRenderers",[{selector:"img",customAttribute:"ta-insert-video",renderLogic:function(a){var b=angular.element("<iframe></iframe>"),c=a.prop("attributes");angular.forEach(c,function(a){b.attr(a.name,a.value)}),b.attr("src",b.attr("ta-insert-video")),a.replaceWith(b)}}]).constant("taTranslations",{html:{buttontext:"Toggle HTML",tooltip:"Toggle html / Rich Text"},heading:{tooltip:"Heading "},p:{tooltip:"Paragraph"},pre:{tooltip:"Preformatted text"},ul:{tooltip:"Unordered List"},ol:{tooltip:"Ordered List"},quote:{tooltip:"Quote/unqoute selection or paragraph"},undo:{tooltip:"Undo"},redo:{tooltip:"Redo"},bold:{tooltip:"Bold"},italic:{tooltip:"Italic"},underline:{tooltip:"Underline"},justifyLeft:{tooltip:"Align text left"},justifyRight:{tooltip:"Align text right"},justifyCenter:{tooltip:"Center"},indent:{tooltip:"Increase indent"},outdent:{tooltip:"Decrease indent"},clear:{tooltip:"Clear formatting"},insertImage:{dialogPrompt:"Please enter an image URL to insert",tooltip:"Insert image",hotkey:"the - possibly language dependent hotkey ... for some future implementation"},insertVideo:{tooltip:"Insert video",dialogPrompt:"Please enter a youtube URL to embed"},insertLink:{tooltip:"Insert / edit link",dialogPrompt:"Please enter a URL to insert"}}).run(["taRegisterTool","$window","taTranslations","taSelection",function(a,b,c,d){a("html",{buttontext:c.html.buttontext,tooltiptext:c.html.tooltip,action:function(){this.$editor().switchView()},activeState:function(){return this.$editor().showHtml}});var e=function(a){return function(){return this.$editor().queryFormatBlockState(a)}},f=function(){return this.$editor().wrapSelection("formatBlock","<"+this.name.toUpperCase()+">")};angular.forEach(["h1","h2","h3","h4","h5","h6"],function(b){a(b.toLowerCase(),{buttontext:b.toUpperCase(),tooltiptext:c.heading.tooltip+b.charAt(1),action:f,activeState:e(b.toLowerCase())})}),a("p",{buttontext:"P",tooltiptext:c.p.tooltip,action:function(){return this.$editor().wrapSelection("formatBlock","<P>"); + +},activeState:function(){return this.$editor().queryFormatBlockState("p")}}),a("pre",{buttontext:"pre",tooltiptext:c.pre.tooltip,action:function(){return this.$editor().wrapSelection("formatBlock","<PRE>")},activeState:function(){return this.$editor().queryFormatBlockState("pre")}}),a("ul",{iconclass:"fa fa-list-ul",tooltiptext:c.ul.tooltip,action:function(){return this.$editor().wrapSelection("insertUnorderedList",null)},activeState:function(){return this.$editor().queryCommandState("insertUnorderedList")}}),a("ol",{iconclass:"fa fa-list-ol",tooltiptext:c.ol.tooltip,action:function(){return this.$editor().wrapSelection("insertOrderedList",null)},activeState:function(){return this.$editor().queryCommandState("insertOrderedList")}}),a("quote",{iconclass:"fa fa-quote-right",tooltiptext:c.quote.tooltip,action:function(){return this.$editor().wrapSelection("formatBlock","<BLOCKQUOTE>")},activeState:function(){return this.$editor().queryFormatBlockState("blockquote")}}),a("undo",{iconclass:"fa fa-undo",tooltiptext:c.undo.tooltip,action:function(){return this.$editor().wrapSelection("undo",null)}}),a("redo",{iconclass:"fa fa-repeat",tooltiptext:c.redo.tooltip,action:function(){return this.$editor().wrapSelection("redo",null)}}),a("bold",{iconclass:"fa fa-bold",tooltiptext:c.bold.tooltip,action:function(){return this.$editor().wrapSelection("bold",null)},activeState:function(){return this.$editor().queryCommandState("bold")},commandKeyCode:98}),a("justifyLeft",{iconclass:"fa fa-align-left",tooltiptext:c.justifyLeft.tooltip,action:function(){return this.$editor().wrapSelection("justifyLeft",null)},activeState:function(a){var b=!1;return a&&(b="left"===a.css("text-align")||"left"===a.attr("align")||"right"!==a.css("text-align")&&"center"!==a.css("text-align")&&!this.$editor().queryCommandState("justifyRight")&&!this.$editor().queryCommandState("justifyCenter")),b=b||this.$editor().queryCommandState("justifyLeft")}}),a("justifyRight",{iconclass:"fa fa-align-right",tooltiptext:c.justifyRight.tooltip,action:function(){return this.$editor().wrapSelection("justifyRight",null)},activeState:function(a){var b=!1;return a&&(b="right"===a.css("text-align")),b=b||this.$editor().queryCommandState("justifyRight")}}),a("justifyCenter",{iconclass:"fa fa-align-center",tooltiptext:c.justifyCenter.tooltip,action:function(){return this.$editor().wrapSelection("justifyCenter",null)},activeState:function(a){var b=!1;return a&&(b="center"===a.css("text-align")),b=b||this.$editor().queryCommandState("justifyCenter")}}),a("indent",{iconclass:"fa fa-indent",tooltiptext:c.indent.tooltip,action:function(){return this.$editor().wrapSelection("indent",null)},activeState:function(){return this.$editor().queryFormatBlockState("blockquote")}}),a("outdent",{iconclass:"fa fa-outdent",tooltiptext:c.outdent.tooltip,action:function(){return this.$editor().wrapSelection("outdent",null)},activeState:function(){return!1}}),a("italics",{iconclass:"fa fa-italic",tooltiptext:c.italic.tooltip,action:function(){return this.$editor().wrapSelection("italic",null)},activeState:function(){return this.$editor().queryCommandState("italic")},commandKeyCode:105}),a("underline",{iconclass:"fa fa-underline",tooltiptext:c.underline.tooltip,action:function(){return this.$editor().wrapSelection("underline",null)},activeState:function(){return this.$editor().queryCommandState("underline")},commandKeyCode:117}),a("clear",{iconclass:"fa fa-ban",tooltiptext:c.clear.tooltip,action:function(a,b){this.$editor().wrapSelection("removeFormat",null);var c=angular.element(d.getSelectionElement()),e=function(a){a=angular.element(a);var b=a;angular.forEach(a.children(),function(a){var c=angular.element("<p></p>");c.html(angular.element(a).html()),b.after(c),b=c}),a.remove()};angular.forEach(c.find("ul"),e),angular.forEach(c.find("ol"),e);var f=this.$editor(),g=function(a){a=angular.element(a),a[0]!==f.displayElements.text[0]&&a.removeAttr("class"),angular.forEach(a.children(),g)};angular.forEach(c,g),"li"!==c[0].tagName.toLowerCase()&&"ol"!==c[0].tagName.toLowerCase()&&"ul"!==c[0].tagName.toLowerCase()&&this.$editor().wrapSelection("formatBlock","<p>"),b()}});var g=function(a,b,c){var d=function(){c.updateTaBindtaTextElement(),c.hidePopover()};a.preventDefault(),c.displayElements.popover.css("width","375px");var e=c.displayElements.popoverContainer;e.empty();var f=angular.element('<div class="btn-group" style="padding-right: 6px;">'),g=angular.element('<button type="button" class="btn btn-default btn-sm btn-small" unselectable="on" tabindex="-1">100% </button>');g.on("click",function(a){a.preventDefault(),b.css({width:"100%",height:""}),d()});var h=angular.element('<button type="button" class="btn btn-default btn-sm btn-small" unselectable="on" tabindex="-1">50% </button>');h.on("click",function(a){a.preventDefault(),b.css({width:"50%",height:""}),d()});var i=angular.element('<button type="button" class="btn btn-default btn-sm btn-small" unselectable="on" tabindex="-1">25% </button>');i.on("click",function(a){a.preventDefault(),b.css({width:"25%",height:""}),d()});var j=angular.element('<button type="button" class="btn btn-default btn-sm btn-small" unselectable="on" tabindex="-1">Reset</button>');j.on("click",function(a){a.preventDefault(),b.css({width:"",height:""}),d()}),f.append(g),f.append(h),f.append(i),f.append(j),e.append(f),f=angular.element('<div class="btn-group" style="padding-right: 6px;">');var k=angular.element('<button type="button" class="btn btn-default btn-sm btn-small" unselectable="on" tabindex="-1"><i class="fa fa-align-left"></i></button>');k.on("click",function(a){a.preventDefault(),b.css("float","left"),d()});var l=angular.element('<button type="button" class="btn btn-default btn-sm btn-small" unselectable="on" tabindex="-1"><i class="fa fa-align-right"></i></button>');l.on("click",function(a){a.preventDefault(),b.css("float","right"),d()});var m=angular.element('<button type="button" class="btn btn-default btn-sm btn-small" unselectable="on" tabindex="-1"><i class="fa fa-align-justify"></i></button>');m.on("click",function(a){a.preventDefault(),b.css("float",""),d()}),f.append(k),f.append(m),f.append(l),e.append(f),f=angular.element('<div class="btn-group">');var n=angular.element('<button type="button" class="btn btn-default btn-sm btn-small" unselectable="on" tabindex="-1"><i class="fa fa-trash-o"></i></button>');n.on("click",function(a){a.preventDefault(),b.remove(),d()}),f.append(n),e.append(f),c.showPopover(b),c.showResizeOverlay(b)};a("insertImage",{iconclass:"fa fa-picture-o",tooltiptext:c.insertImage.tooltip,action:function(){var a;return a=b.prompt(c.insertImage.dialogPrompt,"http://"),a&&""!==a&&"http://"!==a?this.$editor().wrapSelection("insertImage",a,!0):void 0},onElementSelect:{element:"img",action:g}}),a("insertVideo",{iconclass:"fa fa-youtube-play",tooltiptext:c.insertVideo.tooltip,action:function(){var a;if(a=b.prompt(c.insertVideo.dialogPrompt,"http://"),a&&""!==a&&"http://"!==a){var d=a.match(/(\?|&)v=[^&]*/);if(d.length>0){var e="http://www.youtube.com/embed/"+d[0].substring(3),f='<img class="ta-insert-video" ta-insert-video="'+e+'" contenteditable="false" src="" allowfullscreen="true" width="300" frameborder="0" height="250"/>';return this.$editor().wrapSelection("insertHTML",f,!0)}}},onElementSelect:{element:"img",onlyWithAttrs:["ta-insert-video"],action:g}}),a("insertLink",{tooltiptext:c.insertLink.tooltip,iconclass:"fa fa-link",action:function(){var a;return a=b.prompt(c.insertLink.dialogPrompt,"http://"),a&&""!==a&&"http://"!==a?this.$editor().wrapSelection("createLink",a,!0):void 0},activeState:function(a){return a?"A"===a[0].tagName:!1},onElementSelect:{element:"a",action:function(a,d,e){a.preventDefault(),e.displayElements.popover.css("width","435px");var f=e.displayElements.popoverContainer;f.empty(),f.css("line-height","28px");var g=angular.element('<a href="'+d.attr("href")+'" target="_blank">'+d.attr("href")+"</a>");g.css({display:"inline-block","max-width":"200px",overflow:"hidden","text-overflow":"ellipsis","white-space":"nowrap","vertical-align":"middle"}),f.append(g);var h=angular.element('<div class="btn-group pull-right">'),i=angular.element('<button type="button" class="btn btn-default btn-sm btn-small" tabindex="-1" unselectable="on"><i class="fa fa-edit icon-edit"></i></button>');i.on("click",function(a){a.preventDefault();var f=b.prompt(c.insertLink.dialogPrompt,d.attr("href"));f&&""!==f&&"http://"!==f&&(d.attr("href",f),e.updateTaBindtaTextElement()),e.hidePopover()}),h.append(i);var j=angular.element('<button type="button" class="btn btn-default btn-sm btn-small" tabindex="-1" unselectable="on"><i class="fa fa-unlink icon-unlink"></i></button>');j.on("click",function(a){a.preventDefault(),d.replaceWith(d.contents()),e.updateTaBindtaTextElement(),e.hidePopover()}),h.append(j);var k=angular.element('<button type="button" class="btn btn-default btn-sm btn-small" tabindex="-1" unselectable="on">Open in New Window</button>');"_blank"===d.attr("target")&&k.addClass("active"),k.on("click",function(a){a.preventDefault(),d.attr("target","_blank"===d.attr("target")?"":"_blank"),k.toggleClass("active"),e.updateTaBindtaTextElement()}),h.append(k),f.append(h),e.showPopover(d)}}})}]),function(){"Use Strict";function a(a){try{return 0!==angular.element(a).length}catch(b){return!1}}function b(a,c){var d=[],e=a.children();return e.length&&angular.forEach(e,function(a){d=d.concat(b(angular.element(a),c))}),void 0!==a.attr(c)&&d.push(a),d}function c(b,c){if(!b||""===b||n.hasOwnProperty(b))throw"textAngular Error: A unique name is required for a Tool Definition";if(c.display&&(""===c.display||!a(c.display))||!c.display&&!c.buttontext&&!c.iconclass)throw'textAngular Error: Tool Definition for "'+b+'" does not have a valid display/iconclass/buttontext value';n[b]=c}var d=!1;/AppleWebKit\/([\d.]+)/.exec(navigator.userAgent)&&(document.addEventListener("click",function(){var a=window.event.target;if(d&&null!==a){for(var b=!1,c=a;null!==c&&"html"!==c.tagName.toLowerCase()&&!b;)b="true"===c.contentEditable,c=c.parentNode;b||(document.getElementById("textAngular-editableFix-010203040506070809").setSelectionRange(0,0),a.focus())}d=!1},!1),angular.element(document).ready(function(){angular.element(document.body).append(angular.element('<input id="textAngular-editableFix-010203040506070809" style="width:1px;height:1px;border:none;margin:0;padding:0;position:absolute; top: -10000; left: -10000;" unselectable="on" tabIndex="-1">'))}));var e=function(){var a,b=-1,c=window.navigator.userAgent,d=c.indexOf("MSIE "),e=c.indexOf("Trident/");if(d>0)b=parseInt(c.substring(d+5,c.indexOf(".",d)),10);else if(e>0){var f=c.indexOf("rv:");b=parseInt(c.substring(f+3,c.indexOf(".",f)),10)}return b>-1?b:a}();"function"!=typeof String.prototype.trim&&(String.prototype.trim=function(){return this.replace(/^\s\s*/,"").replace(/\s\s*$/,"")});var f,g,h,i,j;if(e>8||void 0===e){var k=function(){var a=document.createElement("style");return/AppleWebKit\/([\d.]+)/.exec(navigator.userAgent)&&a.appendChild(document.createTextNode("")),document.head.insertBefore(a,document.head.firstChild),a.sheet}();f=function(){var a=document.createElement("style");return/AppleWebKit\/([\d.]+)/.exec(navigator.userAgent)&&a.appendChild(document.createTextNode("")),document.head.appendChild(a),a.sheet}(),g=function(a,b){i(f,a,b)},i=function(a,b,c){var d;return a.rules?d=Math.max(a.rules.length-1,0):a.cssRules&&(d=Math.max(a.cssRules.length-1,0)),a.insertRule?a.insertRule(b+"{"+c+"}",d):a.addRule(b,c,d),d},h=function(a){j(f,a)},j=function(a,b){a.removeRule?a.removeRule(b):a.deleteRule(b)},i(k,".ta-scroll-window.form-control","height: auto; min-height: 300px; overflow: auto; font-family: inherit; font-size: 100%; position: relative; padding: 0;"),i(k,".ta-root.focussed .ta-scroll-window.form-control","border-color: #66afe9; outline: 0; -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6);"),i(k,".ta-editor.ta-html","min-height: 300px; height: auto; overflow: auto; font-family: inherit; font-size: 100%;"),i(k,".ta-scroll-window > .ta-bind","height: auto; min-height: 300px; padding: 6px 12px;"),i(k,".ta-root .ta-resizer-handle-overlay","z-index: 100; position: absolute; display: none;"),i(k,".ta-root .ta-resizer-handle-overlay > .ta-resizer-handle-info","position: absolute; bottom: 16px; right: 16px; border: 1px solid black; background-color: #FFF; padding: 0 4px; opacity: 0.7;"),i(k,".ta-root .ta-resizer-handle-overlay > .ta-resizer-handle-background","position: absolute; bottom: 5px; right: 5px; left: 5px; top: 5px; border: 1px solid black; background-color: rgba(0, 0, 0, 0.2);"),i(k,".ta-root .ta-resizer-handle-overlay > .ta-resizer-handle-corner","width: 10px; height: 10px; position: absolute;"),i(k,".ta-root .ta-resizer-handle-overlay > .ta-resizer-handle-corner-tl","top: 0; left: 0; border-left: 1px solid black; border-top: 1px solid black;"),i(k,".ta-root .ta-resizer-handle-overlay > .ta-resizer-handle-corner-tr","top: 0; right: 0; border-right: 1px solid black; border-top: 1px solid black;"),i(k,".ta-root .ta-resizer-handle-overlay > .ta-resizer-handle-corner-bl","bottom: 0; left: 0; border-left: 1px solid black; border-bottom: 1px solid black;"),i(k,".ta-root .ta-resizer-handle-overlay > .ta-resizer-handle-corner-br","bottom: 0; right: 0; border: 1px solid black; cursor: se-resize; background-color: white;")}var l=!1,m=angular.module("textAngular",["ngSanitize","textAngularSetup"]),n={};m.constant("taRegisterTool",c),m.value("taTools",n),m.config([function(){angular.forEach(n,function(a,b){delete n[b]})}]),m.directive("textAngular",["$compile","$timeout","taOptions","taSelection","taExecCommand","textAngularManager","$window","$document","$animate","$log",function(a,b,c,d,e,f,g,h,i,j){return{require:"?ngModel",scope:{},restrict:"EA",link:function(k,l,m,n){var o,p,q,r,s,t,u,v,w,x=m.serial?m.serial:Math.floor(1e16*Math.random()),y=m.name?m.name:"textAngularEditor"+x,z=function(a,c,d){b(function(){var b=function(){a.off(c,b),d()};a.on(c,b)},100)};w=e(m.taDefaultWrap),angular.extend(k,angular.copy(c),{wrapSelection:function(a,b,c){w(a,!1,b),c&&k["reApplyOnSelectorHandlerstaTextElement"+x](),k.displayElements.text[0].focus()},showHtml:!1}),m.taFocussedClass&&(k.classes.focussed=m.taFocussedClass),m.taTextEditorClass&&(k.classes.textEditor=m.taTextEditorClass),m.taHtmlEditorClass&&(k.classes.htmlEditor=m.taHtmlEditorClass),m.taTextEditorSetup&&(k.setup.textEditorSetup=k.$parent.$eval(m.taTextEditorSetup)),m.taHtmlEditorSetup&&(k.setup.htmlEditorSetup=k.$parent.$eval(m.taHtmlEditorSetup)),k.fileDropHandler=m.taFileDrop?k.$parent.$eval(m.taFileDrop):k.defaultFileDropHandler,u=l[0].innerHTML,l[0].innerHTML="",k.displayElements={forminput:angular.element("<input type='hidden' tabindex='-1' style='display: none;'>"),html:angular.element("<textarea></textarea>"),text:angular.element("<div></div>"),scrollWindow:angular.element("<div class='ta-scroll-window'></div>"),popover:angular.element('<div class="popover fade bottom" style="max-width: none; width: 305px;"></div>'),popoverArrow:angular.element('<div class="arrow"></div>'),popoverContainer:angular.element('<div class="popover-content"></div>'),resize:{overlay:angular.element('<div class="ta-resizer-handle-overlay"></div>'),background:angular.element('<div class="ta-resizer-handle-background"></div>'),anchors:[angular.element('<div class="ta-resizer-handle-corner ta-resizer-handle-corner-tl"></div>'),angular.element('<div class="ta-resizer-handle-corner ta-resizer-handle-corner-tr"></div>'),angular.element('<div class="ta-resizer-handle-corner ta-resizer-handle-corner-bl"></div>'),angular.element('<div class="ta-resizer-handle-corner ta-resizer-handle-corner-br"></div>')],info:angular.element('<div class="ta-resizer-handle-info"></div>')}},k.displayElements.popover.append(k.displayElements.popoverArrow),k.displayElements.popover.append(k.displayElements.popoverContainer),k.displayElements.scrollWindow.append(k.displayElements.popover),k.displayElements.popover.on("mousedown",function(a,b){return b&&angular.extend(a,b),a.preventDefault(),!1}),k.showPopover=function(a){k.displayElements.popover.css("display","block"),k.reflowPopover(a),i.addClass(k.displayElements.popover,"in"),z(l,"click keyup",function(){k.hidePopover()})},k.reflowPopover=function(a){k.displayElements.text[0].offsetHeight-51>a[0].offsetTop?(k.displayElements.popover.css("top",a[0].offsetTop+a[0].offsetHeight+"px"),k.displayElements.popover.removeClass("top").addClass("bottom")):(k.displayElements.popover.css("top",a[0].offsetTop-54+"px"),k.displayElements.popover.removeClass("bottom").addClass("top"));var b=k.displayElements.text[0].offsetWidth-k.displayElements.popover[0].offsetWidth,c=a[0].offsetLeft+a[0].offsetWidth/2-k.displayElements.popover[0].offsetWidth/2;k.displayElements.popover.css("left",Math.max(0,Math.min(b,c))+"px"),k.displayElements.popoverArrow.css("margin-left",Math.min(c,Math.max(0,c-b))-11+"px")},k.hidePopover=function(){i.removeClass(k.displayElements.popover,"in",function(){k.displayElements.popover.css("display",""),k.displayElements.popoverContainer.attr("style",""),k.displayElements.popoverContainer.attr("class","popover-content")})},k.displayElements.resize.overlay.append(k.displayElements.resize.background),angular.forEach(k.displayElements.resize.anchors,function(a){k.displayElements.resize.overlay.append(a)}),k.displayElements.resize.overlay.append(k.displayElements.resize.info),k.displayElements.scrollWindow.append(k.displayElements.resize.overlay),k.reflowResizeOverlay=function(a){a=angular.element(a)[0],k.displayElements.resize.overlay.css({display:"block",left:a.offsetLeft-5+"px",top:a.offsetTop-5+"px",width:a.offsetWidth+10+"px",height:a.offsetHeight+10+"px"}),k.displayElements.resize.info.text(a.offsetWidth+" x "+a.offsetHeight)},k.showResizeOverlay=function(a){var b=function(b){var c={width:parseInt(a.attr("width")),height:parseInt(a.attr("height")),x:b.clientX,y:b.clientY};void 0===c.width&&(c.width=a[0].offsetWidth),void 0===c.height&&(c.height=a[0].offsetHeight),k.hidePopover();var d=c.height/c.width,e=function(b){var e={x:Math.max(0,c.width+(b.clientX-c.x)),y:Math.max(0,c.height+(b.clientY-c.y))},f=function(a,b){a=angular.element(a),"img"===a[0].tagName.toLowerCase()&&(b.height&&(a.attr("height",b.height),delete b.height),b.width&&(a.attr("width",b.width),delete b.width)),a.css(b)};if(b.shiftKey){var g=e.y/e.x;f(a,{width:d>g?e.x:e.y/d,height:d>g?e.x*d:e.y})}else f(a,{width:e.x,height:e.y});k.reflowResizeOverlay(a)};h.find("body").on("mousemove",e),z(k.displayElements.resize.overlay,"mouseup",function(){h.find("body").off("mousemove",e),k.showPopover(a)}),b.stopPropagation(),b.preventDefault()};k.displayElements.resize.anchors[3].on("mousedown",b),k.reflowResizeOverlay(a),z(l,"click",function(){k.hideResizeOverlay()})},k.hideResizeOverlay=function(){k.displayElements.resize.overlay.css("display","")},k.setup.htmlEditorSetup(k.displayElements.html),k.setup.textEditorSetup(k.displayElements.text),k.displayElements.html.attr({id:"taHtmlElement"+x,"ng-show":"showHtml","ta-bind":"ta-bind","ng-model":"html"}),k.displayElements.text.attr({id:"taTextElement"+x,contentEditable:"true","ta-bind":"ta-bind","ng-model":"html"}),k.displayElements.scrollWindow.attr({"ng-hide":"showHtml"}),m.taDefaultWrap&&k.displayElements.text.attr("ta-default-wrap",m.taDefaultWrap),m.taUnsafeSanitizer&&(k.displayElements.text.attr("ta-unsafe-sanitizer",m.taUnsafeSanitizer),k.displayElements.html.attr("ta-unsafe-sanitizer",m.taUnsafeSanitizer)),k.displayElements.scrollWindow.append(k.displayElements.text),l.append(k.displayElements.scrollWindow),l.append(k.displayElements.html),k.displayElements.forminput.attr("name",y),l.append(k.displayElements.forminput),m.tabindex&&(l.removeAttr("tabindex"),k.displayElements.text.attr("tabindex",m.tabindex),k.displayElements.html.attr("tabindex",m.tabindex)),m.placeholder&&(k.displayElements.text.attr("placeholder",m.placeholder),k.displayElements.html.attr("placeholder",m.placeholder)),m.taDisabled&&(k.displayElements.text.attr("ta-readonly","disabled"),k.displayElements.html.attr("ta-readonly","disabled"),k.disabled=k.$parent.$eval(m.taDisabled),k.$parent.$watch(m.taDisabled,function(a){k.disabled=a,k.disabled?l.addClass(k.classes.disabled):l.removeClass(k.classes.disabled)})),a(k.displayElements.scrollWindow)(k),a(k.displayElements.html)(k),k.updateTaBindtaTextElement=k["updateTaBindtaTextElement"+x],k.updateTaBindtaHtmlElement=k["updateTaBindtaHtmlElement"+x],l.addClass("ta-root"),k.displayElements.scrollWindow.addClass("ta-text ta-editor "+k.classes.textEditor),k.displayElements.html.addClass("ta-html ta-editor "+k.classes.htmlEditor),k._actionRunning=!1;var A=!1;if(k.startAction=function(){return k._actionRunning=!0,g.rangy&&g.rangy.saveSelection?(A=g.rangy.saveSelection(),function(){A&&g.rangy.restoreSelection(A)}):void 0},k.endAction=function(){k._actionRunning=!1,A&&g.rangy.removeMarkers(A),A=!1,k.updateSelectedStyles(),k.showHtml||k["updateTaBindtaTextElement"+x]()},s=function(){l.addClass(k.classes.focussed),v.focus()},k.displayElements.html.on("focus",s),k.displayElements.text.on("focus",s),t=function(a){return k._actionRunning||h[0].activeElement===k.displayElements.html[0]||h[0].activeElement===k.displayElements.text[0]||(l.removeClass(k.classes.focussed),v.unfocus(),b(function(){l.triggerHandler("blur")},0)),a.preventDefault(),!1},k.displayElements.html.on("blur",t),k.displayElements.text.on("blur",t),k.queryFormatBlockState=function(a){return!k.showHtml&&a.toLowerCase()===h[0].queryCommandValue("formatBlock").toLowerCase()},k.queryCommandState=function(a){return k.showHtml?"":h[0].queryCommandState(a)},k.switchView=function(){k.showHtml=!k.showHtml,k.showHtml?b(function(){return k.displayElements.html[0].focus()},100):b(function(){return k.displayElements.text[0].focus()},100)},m.ngModel){var B=!0;n.$render=function(){if(B){B=!1;var a=k.$parent.$eval(m.ngModel);void 0!==a&&null!==a||!u||""===u||n.$setViewValue(u)}k.displayElements.forminput.val(n.$viewValue),k._elementSelectTriggered||h[0].activeElement===k.displayElements.html[0]||h[0].activeElement===k.displayElements.text[0]||(k.html=n.$viewValue||"")};var C=function(a){return m.required&&n.$setValidity("required",!(!a||""===a.trim())),a};n.$parsers.push(C),n.$formatters.push(C)}else k.displayElements.forminput.val(u),k.html=u;if(k.$watch("html",function(a,b){a!==b&&(m.ngModel&&n.$viewValue!==a&&n.$setViewValue(a),k.displayElements.forminput.val(a))}),m.taTargetToolbars)v=f.registerEditor(y,k,m.taTargetToolbars.split(","));else{var D=angular.element('<div text-angular-toolbar name="textAngularToolbar'+x+'">');m.taToolbar&&D.attr("ta-toolbar",m.taToolbar),m.taToolbarClass&&D.attr("ta-toolbar-class",m.taToolbarClass),m.taToolbarGroupClass&&D.attr("ta-toolbar-group-class",m.taToolbarGroupClass),m.taToolbarButtonClass&&D.attr("ta-toolbar-button-class",m.taToolbarButtonClass),m.taToolbarActiveButtonClass&&D.attr("ta-toolbar-active-button-class",m.taToolbarActiveButtonClass),m.taFocussedClass&&D.attr("ta-focussed-class",m.taFocussedClass),l.prepend(D),a(D)(k.$parent),v=f.registerEditor(y,k,["textAngularToolbar"+x])}k.$on("$destroy",function(){f.unregisterEditor(y)}),k.$on("ta-element-select",function(a,b){v.triggerElementSelect(a,b)}),k.$on("ta-drop-event",function(a,b,c,d){k.displayElements.text[0].focus(),d&&d.files&&d.files.length>0&&(angular.forEach(d.files,function(a){try{return k.fileDropHandler(a,k.wrapSelection)||k.fileDropHandler!==k.defaultFileDropHandler&&k.defaultFileDropHandler(a,k.wrapSelection)}catch(b){j.error(b)}}),c.preventDefault(),c.stopPropagation())}),k._bUpdateSelectedStyles=!1,k.updateSelectedStyles=function(){var a;void 0!==(a=d.getSelectionElement())&&a.parentNode!==k.displayElements.text[0]?v.updateSelectedStyles(angular.element(a)):v.updateSelectedStyles(),k._bUpdateSelectedStyles&&b(k.updateSelectedStyles,200)},o=function(){k._bUpdateSelectedStyles||(k._bUpdateSelectedStyles=!0,k.$apply(function(){k.updateSelectedStyles()}))},k.displayElements.html.on("keydown",o),k.displayElements.text.on("keydown",o),p=function(){k._bUpdateSelectedStyles=!1},k.displayElements.html.on("keyup",p),k.displayElements.text.on("keyup",p),q=function(a,b){b&&angular.extend(a,b),k.$apply(function(){return v.sendKeyCommand(a)?(k._bUpdateSelectedStyles||k.updateSelectedStyles(),a.preventDefault(),!1):void 0})},k.displayElements.html.on("keypress",q),k.displayElements.text.on("keypress",q),r=function(){k._bUpdateSelectedStyles=!1,k.$apply(function(){k.updateSelectedStyles()})},k.displayElements.html.on("mouseup",r),k.displayElements.text.on("mouseup",r)}}}]).factory("taBrowserTag",[function(){return function(a){return a?""===a?void 0===e?"div":8>=e?"P":"p":8>=e?a.toUpperCase():a:8>=e?"P":"p"}}]).factory("taExecCommand",["taSelection","taBrowserTag","$document",function(a,b,c){var d=/^(address|article|aside|audio|blockquote|canvas|dd|div|dl|fieldset|figcaption|figure|footer|form|h1|h2|h3|h4|h5|h6|header|hgroup|hr|noscript|ol|output|p|pre|section|table|tfoot|ul|video)$/gi,e=/^(ul|li|ol)$/gi,f=function(b,c){var d,e,f=b.find("li");for(e=f.length-1;e>=0;e--)d=angular.element("<"+c+">"+f[e].innerHTML+"</"+c+">"),b.after(d);b.remove(),a.setSelectionToElementEnd(d[0])},g=function(b,c){var d=angular.element("<"+c+">"+b[0].innerHTML+"</"+c+">");b.after(d),b.remove(),a.setSelectionToElementEnd(d.find("li")[0])},h=function(c,d,e){for(var f="",g=0;g<c.length;g++)f+="<"+b("li")+">"+c[g].innerHTML+"</"+b("li")+">";var h=angular.element("<"+e+">"+f+"</"+e+">");d.after(h),d.remove(),a.setSelectionToElementEnd(h.find("li")[0])};return function(i){return i=b(i),function(j,k,l){var m,n,o,p,q,r=angular.element("<"+i+">"),s=a.getSelectionElement(),t=angular.element(s);if(void 0!==s){var u=s.tagName.toLowerCase();if("insertorderedlist"===j.toLowerCase()||"insertunorderedlist"===j.toLowerCase()){var v=b("insertorderedlist"===j.toLowerCase()?"ol":"ul");if(u===v)return f(t,i);if("li"===u&&t.parent()[0].tagName.toLowerCase()===v&&1===t.parent().children().length)return f(t.parent(),i);if("li"===u&&t.parent()[0].tagName.toLowerCase()!==v&&1===t.parent().children().length)return g(t.parent(),v);if(u.match(d)&&!t.hasClass("ta-bind")){if("ol"===u||"ul"===u)return g(t,v);var w=!1;return angular.forEach(t.children(),function(a){a.tagName.match(d)&&(w=!0)}),w?h(t.children(),t,v):h([angular.element("<div>"+s.innerHTML+"</div>")[0]],t,v)}if(u.match(d)){if(p=a.getOnlySelectedElements(),1===p.length&&("ol"===p[0].tagName.toLowerCase()||"ul"===p[0].tagName.toLowerCase()))return p[0].tagName.toLowerCase()===v?f(angular.element(p[0]),i):g(angular.element(p[0]),v);o="";var x=[];for(m=0;m<p.length;m++)if(3!==p[m].nodeType){var y=angular.element(p[m]);o+="<"+b("li")+">"+y[0].innerHTML+"</"+b("li")+">",x.unshift(y)}return n=angular.element("<"+v+">"+o+"</"+v+">"),x.pop().replaceWith(n),angular.forEach(x,function(a){a.remove()}),void a.setSelectionToElementEnd(n[0])}}else if("formatblock"===j.toLowerCase()){var z=l.toLowerCase().replace(/[<>]/gi,"");for(n="li"===u?t.parent():t;!n[0].tagName.match(d);)n=n.parent(),u=n[0].tagName.toLowerCase();if(u===z){p=n.children();var A=!1;for(m=0;m<p.length;m++)A=A||p[m].tagName.match(d);A?(n.after(p),q=n.next(),n.remove(),n=q):(r.append(n[0].childNodes),n.after(r),n.remove(),n=r)}else if(n.parent()[0].tagName.toLowerCase()!==z||n.parent().hasClass("ta-bind"))if(u.match(e))n.wrap(l);else{p=a.getOnlySelectedElements(),0===p.length&&(p=[n[0]]);var B=!1;if(angular.forEach(p,function(a){3!==a.nodeType&&a.tagName.match(d)||(B=!0)}),B)for(;3===p[0].nodeType||!p[0].tagName.match(d);)p=[p[0].parentNode];if(angular.element(p[0]).hasClass("ta-bind"))n=angular.element(l),n[0].innerHTML=p[0].innerHTML,p[0].innerHTML=n[0].outerHTML;else if("blockquote"===z){for(o="",m=0;m<p.length;m++)o+=p[m].outerHTML;n=angular.element(l),n[0].innerHTML=o,p[0].parentNode.insertBefore(n[0],p[0]),angular.forEach(p,function(a){a.parentNode.removeChild(a)})}else for(m=0;m<p.length;m++)n=angular.element(l),n[0].innerHTML=p[m].innerHTML,p[m].parentNode.insertBefore(n[0],p[m]),p[m].parentNode.removeChild(p[m])}else{var C=n.parent(),D=C.contents();for(m=0;m<D.length;m++)C.parent().hasClass("ta-bind")&&3===D[m].nodeType&&(r=angular.element("<"+i+">"),r[0].innerHTML=D[m].outerHTML,D[m]=r[0]),C.parent()[0].insertBefore(D[m],C[0]);C.remove()}return void a.setSelectionToElementEnd(n[0])}}try{c[0].execCommand(j,k,l)}catch(E){}}}}]).directive("taBind",["taSanitize","$timeout","$window","$document","taFixChrome","taBrowserTag","taSelection","taSelectableElements","taApplyCustomRenderers","taOptions",function(a,b,c,f,i,j,k,m,n,o){return{require:"ngModel",scope:{},link:function(j,p,q,r){var s,t,u=void 0!==p.attr("contenteditable")&&p.attr("contenteditable"),v=u||"textarea"===p[0].tagName.toLowerCase()||"input"===p[0].tagName.toLowerCase(),w=!1,x=!1,y=q.taUnsafeSanitizer||o.disableSanitizer;void 0===q.taDefaultWrap&&(q.taDefaultWrap="p"),""===q.taDefaultWrap?(s="",t=void 0===e?"<div><br></div>":e>=11?"<p><br></p>":8>=e?"<P> </P>":"<p> </p>"):(s=void 0===e||e>=11?"<"+q.taDefaultWrap+"><br></"+q.taDefaultWrap+">":8>=e?"<"+q.taDefaultWrap.toUpperCase()+"></"+q.taDefaultWrap.toUpperCase()+">":"<"+q.taDefaultWrap+"></"+q.taDefaultWrap+">",t=void 0===e||e>=11?"<"+q.taDefaultWrap+"><br></"+q.taDefaultWrap+">":8>=e?"<"+q.taDefaultWrap.toUpperCase()+"> </"+q.taDefaultWrap.toUpperCase()+">":"<"+q.taDefaultWrap+"> </"+q.taDefaultWrap+">"),p.addClass("ta-bind");var z=function(){if(u)return p[0].innerHTML;if(v)return p.val();throw"textAngular Error: attempting to update non-editable taBind"},A=function(a){a||(a=z()),a===t?""!==r.$viewValue&&r.$setViewValue(""):r.$viewValue!==a&&r.$setViewValue(a)};if(j.$parent["updateTaBind"+(q.id||"")]=function(){w||A()},v)if(u){if(p.on("cut",function(a){w?a.preventDefault():b(function(){A()},0)}),p.on("paste",function(a,b){b&&angular.extend(a,b);var d;if(a.clipboardData||a.originalEvent&&a.originalEvent.clipboardData?d=(a.originalEvent||a).clipboardData.getData("text/plain"):c.clipboardData&&(d=c.clipboardData.getData("Text")),!d&&!w)return!0;if(a.preventDefault(),!w){var e=angular.element("<div></div>");if(e[0].innerHTML=d,d=e.text(),f[0].selection){var g=f[0].selection.createRange();g.pasteHTML(d)}else f[0].execCommand("insertText",!1,d);A()}}),p.on("keyup",function(a,b){if(b&&angular.extend(a,b),!w){if(""!==s&&13===a.keyCode&&!a.shiftKey){var c=k.getSelectionElement();if(c.tagName.toLowerCase()!==q.taDefaultWrap&&"li"!==c.tagName.toLowerCase()&&(""===c.innerHTML.trim()||"<br>"===c.innerHTML.trim())){var d=angular.element(s);angular.element(c).replaceWith(d),k.setSelectionToElementStart(d[0])}}var e=z();""!==s&&""===e.trim()&&(p[0].innerHTML=s,k.setSelectionToElementStart(p.children()[0])),A(e)}}),p.on("blur",function(){x=!1,w||A(),r.$render()}),q.placeholder&&(e>8||void 0===e)){var B;if(!q.id)throw"textAngular Error: An unique ID is required for placeholders to work";B=g("#"+q.id+".placeholder-text:before",'content: "'+q.placeholder+'"'),j.$on("$destroy",function(){h(B)})}p.on("focus",function(){x=!0,r.$render()}),p.on("mousedown",function(a,b){b&&angular.extend(a,b),a.stopPropagation()})}else p.on("paste cut",function(){w||b(function(){r.$setViewValue(z())},0)}),p.on("change blur",function(){w||r.$setViewValue(z())});var C=function(b){return r.$oldViewValue=a(i(b),r.$oldViewValue,y)},D=function(a){return q.required&&r.$setValidity("required",!(!a||a.trim()===t||""===a.trim())),a};r.$parsers.push(C),r.$parsers.push(D),r.$formatters.push(C),r.$formatters.push(D);var E=function(a){return j.$emit("ta-element-select",this),a.preventDefault(),!1},F=function(a,c){if(c&&angular.extend(a,c),!l&&!w){l=!0;var d;d=a.originalEvent?a.originalEvent.dataTransfer:a.dataTransfer,j.$emit("ta-drop-event",this,a,d),b(function(){l=!1},100)}};j.$parent["reApplyOnSelectorHandlers"+(q.id||"")]=function(){w||angular.forEach(m,function(a){p.find(a).off("click",E).on("click",E); + +})};var G=function(a){p[0].innerHTML=a};r.$render=function(){var a=r.$viewValue||"";f[0].activeElement!==p[0]?u?(q.placeholder?""===a?(x?p.removeClass("placeholder-text"):p.addClass("placeholder-text"),G(s)):(p.removeClass("placeholder-text"),G(a)):G(""===a?s:a),w?p.off("drop",F):(angular.forEach(m,function(a){p.find(a).on("click",E)}),p.on("drop",F))):"textarea"!==p[0].tagName.toLowerCase()&&"input"!==p[0].tagName.toLowerCase()?G(n(a)):p.val(a):u&&p.removeClass("placeholder-text")},q.taReadonly&&(w=j.$parent.$eval(q.taReadonly),w?(p.addClass("ta-readonly"),("textarea"===p[0].tagName.toLowerCase()||"input"===p[0].tagName.toLowerCase())&&p.attr("disabled","disabled"),void 0!==p.attr("contenteditable")&&p.attr("contenteditable")&&p.removeAttr("contenteditable")):(p.removeClass("ta-readonly"),"textarea"===p[0].tagName.toLowerCase()||"input"===p[0].tagName.toLowerCase()?p.removeAttr("disabled"):u&&p.attr("contenteditable","true")),j.$parent.$watch(q.taReadonly,function(a,b){b!==a&&(a?(p.addClass("ta-readonly"),("textarea"===p[0].tagName.toLowerCase()||"input"===p[0].tagName.toLowerCase())&&p.attr("disabled","disabled"),void 0!==p.attr("contenteditable")&&p.attr("contenteditable")&&p.removeAttr("contenteditable"),angular.forEach(m,function(a){p.find(a).on("click",E)}),p.off("drop",F)):(p.removeClass("ta-readonly"),"textarea"===p[0].tagName.toLowerCase()||"input"===p[0].tagName.toLowerCase()?p.removeAttr("disabled"):u&&p.attr("contenteditable","true"),angular.forEach(m,function(a){p.find(a).off("click",E)}),p.on("drop",F)),w=a)})),u&&!w&&(angular.forEach(m,function(a){p.find(a).on("click",E)}),p.on("drop",F),p.on("blur",function(){/AppleWebKit\/([\d.]+)/.exec(navigator.userAgent)&&(d=!0)}))}}}]).factory("taApplyCustomRenderers",["taCustomRenderers",function(a){return function(c){var d=angular.element("<div></div>");return d[0].innerHTML=c,angular.forEach(a,function(a){var c=[];a.selector&&""!==a.selector?c=d.find(a.selector):a.customAttribute&&""!==a.customAttribute&&(c=b(d,a.customAttribute)),angular.forEach(c,function(b){b=angular.element(b),a.selector&&""!==a.selector&&a.customAttribute&&""!==a.customAttribute?void 0!==b.attr(a.customAttribute)&&a.renderLogic(b):a.renderLogic(b)})}),d[0].innerHTML}}]).directive("taMaxText",function(){return{restrict:"A",require:"ngModel",link:function(a,b,c,d){function e(a){var b=angular.element("<div/>");b.html(a);var c=b.text().length;return f>=c?(d.$setValidity("taMaxText",!0),a):void d.$setValidity("taMaxText",!1)}var f=parseInt(a.$eval(c.taMaxText));if(isNaN(f))throw"Max text must be an integer";c.$observe("taMaxText",function(a){if(f=parseInt(a),isNaN(f))throw"Max text must be an integer";d.$dirty&&d.$setViewValue(d.$viewValue)}),d.$parsers.unshift(e)}}}).directive("taMinText",function(){return{restrict:"A",require:"ngModel",link:function(a,b,c,d){function e(a){var b=angular.element("<div/>");b.html(a);var c=b.text().length;return!c||c>=f?(d.$setValidity("taMinText",!0),a):void d.$setValidity("taMinText",!1)}var f=parseInt(a.$eval(c.taMinText));if(isNaN(f))throw"Min text must be an integer";c.$observe("taMinText",function(a){if(f=parseInt(a),isNaN(f))throw"Min text must be an integer";d.$dirty&&d.$setViewValue(d.$viewValue)}),d.$parsers.unshift(e)}}}).factory("taFixChrome",function(){var a=function(a){for(var b=angular.element("<div>"+a+"</div>"),c=angular.element(b).find("span"),d=0;d<c.length;d++){var e=angular.element(c[d]);e.attr("style")&&e.attr("style").match(/line-height: 1.428571429;|color: inherit; line-height: 1.1;/i)&&(e.attr("style",e.attr("style").replace(/( |)font-family: inherit;|( |)line-height: 1.428571429;|( |)line-height:1.1;|( |)color: inherit;/gi,"")),e.attr("style")&&""!==e.attr("style")||(e.next().length>0&&"BR"===e.next()[0].tagName&&e.next().remove(),e.replaceWith(e[0].innerHTML)))}var f=b[0].innerHTML.replace(/style="[^"]*?(line-height: 1.428571429;|color: inherit; line-height: 1.1;)[^"]*"/gi,"");return f!==b[0].innerHTML&&(b[0].innerHTML=f),b[0].innerHTML};return a}).factory("taSanitize",["$sanitize",function(a){return function(c,d,e){var f=angular.element("<div>"+c+"</div>");angular.forEach(b(f,"align"),function(a){a.css("text-align",a.attr("align")),a.removeAttr("align")});var g;c=f[0].innerHTML;try{g=a(c),e&&(g=c)}catch(h){g=d||""}return g}}]).directive("textAngularToolbar",["$compile","textAngularManager","taOptions","taTools","taToolExecuteAction","$window",function(a,b,c,d,e,f){return{scope:{name:"@"},restrict:"EA",link:function(g,h,i){if(!g.name||""===g.name)throw"textAngular Error: A toolbar requires a name";angular.extend(g,angular.copy(c)),i.taToolbar&&(g.toolbar=g.$parent.$eval(i.taToolbar)),i.taToolbarClass&&(g.classes.toolbar=i.taToolbarClass),i.taToolbarGroupClass&&(g.classes.toolbarGroup=i.taToolbarGroupClass),i.taToolbarButtonClass&&(g.classes.toolbarButton=i.taToolbarButtonClass),i.taToolbarActiveButtonClass&&(g.classes.toolbarButtonActive=i.taToolbarActiveButtonClass),i.taFocussedClass&&(g.classes.focussed=i.taFocussedClass),g.disabled=!0,g.focussed=!1,g._$element=h,h[0].innerHTML="",h.addClass("ta-toolbar "+g.classes.toolbar),g.$watch("focussed",function(){g.focussed?h.addClass(g.classes.focussed):h.removeClass(g.classes.focussed)});var j=function(b,c){var d;if(d=angular.element(b&&b.display?b.display:"<button type='button'>"),d.addClass(g.classes.toolbarButton),d.attr("name",c.name),d.attr("unselectable","on"),d.attr("ng-disabled","isDisabled()"),d.attr("tabindex","-1"),d.attr("ng-click","executeAction()"),d.attr("ng-class","displayActiveToolClass(active)"),b&&b.tooltiptext&&d.attr("title",b.tooltiptext),d.on("mousedown",function(a,b){return b&&angular.extend(a,b),a.preventDefault(),!1}),b&&!b.display&&!c._display&&(d[0].innerHTML="",b.buttontext&&(d[0].innerHTML=b.buttontext),b.iconclass)){var e=angular.element("<i>"),f=d[0].innerHTML;e.addClass(b.iconclass),d[0].innerHTML="",d.append(e),f&&""!==f&&d.append(" "+f)}return c._lastToolDefinition=angular.copy(b),a(d)(c)};g.tools={},g._parent={disabled:!0,showHtml:!1,queryFormatBlockState:function(){return!1},queryCommandState:function(){return!1}};var k={$window:f,$editor:function(){return g._parent},isDisabled:function(){return this.$eval("disabled")||this.$eval("disabled()")||"html"!==this.name&&this.$editor().showHtml||this.$parent.disabled||this.$editor().disabled},displayActiveToolClass:function(a){return a?g.classes.toolbarButtonActive:""},executeAction:e};angular.forEach(g.toolbar,function(a){var b=angular.element("<div>");b.addClass(g.classes.toolbarGroup),angular.forEach(a,function(a){g.tools[a]=angular.extend(g.$new(!0),d[a],k,{name:a}),g.tools[a].$element=j(d[a],g.tools[a]),b.append(g.tools[a].$element)}),h.append(b)}),g.updateToolDisplay=function(a,b,c){var d=g.tools[a];if(d){if(d._lastToolDefinition&&!c&&(b=angular.extend({},d._lastToolDefinition,b)),null===b.buttontext&&null===b.iconclass&&null===b.display)throw'textAngular Error: Tool Definition for updating "'+a+'" does not have a valid display/iconclass/buttontext value';null===b.buttontext&&delete b.buttontext,null===b.iconclass&&delete b.iconclass,null===b.display&&delete b.display;var e=j(b,d);d.$element.replaceWith(e),d.$element=e}},g.addTool=function(a,b,c,e){g.tools[a]=angular.extend(g.$new(!0),d[a],k,{name:a}),g.tools[a].$element=j(d[a],g.tools[a]);var f;void 0===c&&(c=g.toolbar.length-1),f=angular.element(h.children()[c]),void 0===e?(f.append(g.tools[a].$element),g.toolbar[c][g.toolbar[c].length-1]=a):(f.children().eq(e).after(g.tools[a].$element),g.toolbar[c][e]=a)},b.registerToolbar(g),g.$on("$destroy",function(){b.unregisterToolbar(g.name)})}}}]).service("taToolExecuteAction",["$q",function(a){return function(b){void 0!==b&&(this.$editor=function(){return b});var c=a.defer(),d=c.promise,e=this.$editor();d["finally"](function(){e.endAction.call(e)});var f;try{f=this.action(c,e.startAction())}catch(g){}(f||void 0===f)&&c.resolve()}}]).service("textAngularManager",["taToolExecuteAction","taTools","taRegisterTool",function(a,b,c){var d={},e={};return{registerEditor:function(c,f,g){if(!c||""===c)throw"textAngular Error: An editor requires a name";if(!f)throw"textAngular Error: An editor requires a scope";if(e[c])throw'textAngular Error: An Editor with name "'+c+'" already exists';var h=[];return angular.forEach(g,function(a){d[a]&&h.push(d[a])}),e[c]={scope:f,toolbars:g,_registerToolbar:function(a){this.toolbars.indexOf(a.name)>=0&&h.push(a)},editorFunctions:{disable:function(){angular.forEach(h,function(a){a.disabled=!0})},enable:function(){angular.forEach(h,function(a){a.disabled=!1})},focus:function(){angular.forEach(h,function(a){a._parent=f,a.disabled=!1,a.focussed=!0})},unfocus:function(){angular.forEach(h,function(a){a.disabled=!0,a.focussed=!1})},updateSelectedStyles:function(a){angular.forEach(h,function(b){angular.forEach(b.tools,function(b){b.activeState&&(b.active=b.activeState(a))})})},sendKeyCommand:function(c){var d=!1;return(c.ctrlKey||c.metaKey)&&angular.forEach(b,function(b,e){if(b.commandKeyCode&&b.commandKeyCode===c.which)for(var g=0;g<h.length;g++)if(void 0!==h[g].tools[e]){a.call(h[g].tools[e],f),d=!0;break}}),d},triggerElementSelect:function(a,c){var d=function(a,b){for(var c=!0,d=0;d<b.length;d++)c=c&&a.attr(b[d]);return c},e=[],g={},i=!1;c=angular.element(c);var j=!1;if(angular.forEach(b,function(a,b){a.onElementSelect&&a.onElementSelect.element&&a.onElementSelect.element.toLowerCase()===c[0].tagName.toLowerCase()&&(!a.onElementSelect.filter||a.onElementSelect.filter(c))&&(j=j||angular.isArray(a.onElementSelect.onlyWithAttrs)&&d(c,a.onElementSelect.onlyWithAttrs),(!a.onElementSelect.onlyWithAttrs||d(c,a.onElementSelect.onlyWithAttrs))&&(g[b]=a))}),j?(angular.forEach(g,function(a,b){a.onElementSelect.onlyWithAttrs&&d(c,a.onElementSelect.onlyWithAttrs)&&e.push({name:b,tool:a})}),e.sort(function(a,b){return b.tool.onElementSelect.onlyWithAttrs.length-a.tool.onElementSelect.onlyWithAttrs.length})):angular.forEach(g,function(a,b){e.push({name:b,tool:a})}),e.length>0)for(var k=0;k<e.length;k++){for(var l=e[k].tool,m=e[k].name,n=0;n<h.length;n++)if(void 0!==h[n].tools[m]){l.onElementSelect.action.call(h[n].tools[m],a,c,f),i=!0;break}if(i)break}return i}}},e[c].editorFunctions},retrieveEditor:function(a){return e[a]},unregisterEditor:function(a){delete e[a]},registerToolbar:function(a){if(!a)throw"textAngular Error: A toolbar requires a scope";if(!a.name||""===a.name)throw"textAngular Error: A toolbar requires a name";if(d[a.name])throw'textAngular Error: A toolbar with name "'+a.name+'" already exists';d[a.name]=a,angular.forEach(e,function(b){b._registerToolbar(a)})},retrieveToolbar:function(a){return d[a]},retrieveToolbarsViaEditor:function(a){var b=[],c=this;return angular.forEach(this.retrieveEditor(a).toolbars,function(a){b.push(c.retrieveToolbar(a))}),b},unregisterToolbar:function(a){delete d[a]},updateToolsDisplay:function(a){var b=this;angular.forEach(a,function(a,c){b.updateToolDisplay(c,a)})},resetToolsDisplay:function(){var a=this;angular.forEach(b,function(b,c){a.resetToolDisplay(c)})},updateToolDisplay:function(a,b){var c=this;angular.forEach(d,function(d,e){c.updateToolbarToolDisplay(e,a,b)})},resetToolDisplay:function(a){var b=this;angular.forEach(d,function(c,d){b.resetToolbarToolDisplay(d,a)})},updateToolbarToolDisplay:function(a,b,c){if(!d[a])throw'textAngular Error: No Toolbar with name "'+a+'" exists';d[a].updateToolDisplay(b,c)},resetToolbarToolDisplay:function(a,c){if(!d[a])throw'textAngular Error: No Toolbar with name "'+a+'" exists';d[a].updateToolDisplay(c,b[c],!0)},removeTool:function(a){delete b[a],angular.forEach(d,function(b){delete b.tools[a];for(var c=0;c<b.toolbar.length;c++){for(var d,e=0;e<b.toolbar[c].length;e++){if(b.toolbar[c][e]===a){d={group:c,index:e};break}if(void 0!==d)break}void 0!==d&&(b.toolbar[d.group].slice(d.index,1),b._$element.children().eq(d.group).children().eq(d.index).remove())}})},addTool:function(a,b,e,f){c(a,b),angular.forEach(d,function(c){c.addTool(a,b,e,f)})},addToolToToolbar:function(a,b,e,f,g){c(a,b),d[e].addTool(a,b,f,g)},refreshEditor:function(a){if(!e[a])throw'textAngular Error: No Editor with name "'+a+'" exists';e[a].scope.updateTaBindtaTextElement(),e[a].scope.$$phase||e[a].scope.$digest()}}}]).service("taSelection",["$window","$document",function(a,b){var c=b[0],d=function(a){if(a.hasChildNodes())return a.firstChild;for(;a&&!a.nextSibling;)a=a.parentNode;return a?a.nextSibling:null},e=function(a){var b=a.startContainer,c=a.endContainer;if(b===c)return[b];for(var e=[];b&&b!==c;)b=d(b),b.parentNode===a.commonAncestorContainer&&e.push(b);for(b=a.startContainer;b&&b!==a.commonAncestorContainer;)b.parentNode===a.commonAncestorContainer&&e.unshift(b),b=b.parentNode;return e};return{getOnlySelectedElements:function(){if(window.getSelection){var b=a.getSelection();if(!b.isCollapsed)return e(b.getRangeAt(0))}return[]},getSelectionElement:function(){var b,d,e;return c.selection&&c.selection.createRange?(b=c.selection.createRange(),b.parentElement()):a.getSelection&&(d=a.getSelection(),d.getRangeAt?d.rangeCount>0&&(b=d.getRangeAt(0)):(b=c.createRange(),b.setStart(d.anchorNode,d.anchorOffset),b.setEnd(d.focusNode,d.focusOffset),b.collapsed!==d.isCollapsed&&(b.setStart(d.focusNode,d.focusOffset),b.setEnd(d.anchorNode,d.anchorOffset))),b)?(e=b.commonAncestorContainer,3===e.nodeType?e.parentNode:e):void 0},setSelectionToElementStart:function(b){if(c.createRange&&a.getSelection){var d=c.createRange();d.selectNodeContents(b),d.setStart(b,0),d.setEnd(b,0);var e=a.getSelection();e.removeAllRanges(),e.addRange(d)}else if(c.selection&&c.body.createTextRange){var f=c.body.createTextRange();f.moveToElementText(b),f.collapse(!0),f.moveEnd("character",0),f.moveStart("character",0),f.select()}},setSelectionToElementEnd:function(b){if(c.createRange&&a.getSelection){var d=c.createRange();d.selectNodeContents(b),d.collapse(!1);var e=a.getSelection();e.removeAllRanges(),e.addRange(d)}else if(c.selection&&c.body.createTextRange){var f=c.body.createTextRange();f.moveToElementText(b),f.collapse(!1),f.select()}}}}])}()}({},function(){return this}()),"undefined"==typeof jQuery)throw new Error("Bootstrap's JavaScript requires jQuery");+function(a){"use strict";var b=a.fn.jquery.split(" ")[0].split(".");if(b[0]<2&&b[1]<9||1==b[0]&&9==b[1]&&b[2]<1)throw new Error("Bootstrap's JavaScript requires jQuery version 1.9.1 or higher")}(jQuery),+function(a){"use strict";function b(){var a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var c in b)if(void 0!==a.style[c])return{end:b[c]};return!1}a.fn.emulateTransitionEnd=function(b){var c=!1,d=this;a(this).one("bsTransitionEnd",function(){c=!0});var e=function(){c||a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this},a(function(){a.support.transition=b(),a.support.transition&&(a.event.special.bsTransitionEnd={bindType:a.support.transition.end,delegateType:a.support.transition.end,handle:function(b){return a(b.target).is(this)?b.handleObj.handler.apply(this,arguments):void 0}})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var c=a(this),e=c.data("bs.alert");e||c.data("bs.alert",e=new d(this)),"string"==typeof b&&e[b].call(c)})}var c='[data-dismiss="alert"]',d=function(b){a(b).on("click",c,this.close)};d.VERSION="3.3.4",d.TRANSITION_DURATION=150,d.prototype.close=function(b){function c(){g.detach().trigger("closed.bs.alert").remove()}var e=a(this),f=e.attr("data-target");f||(f=e.attr("href"),f=f&&f.replace(/.*(?=#[^\s]*$)/,""));var g=a(f);b&&b.preventDefault(),g.length||(g=e.closest(".alert")),g.trigger(b=a.Event("close.bs.alert")),b.isDefaultPrevented()||(g.removeClass("in"),a.support.transition&&g.hasClass("fade")?g.one("bsTransitionEnd",c).emulateTransitionEnd(d.TRANSITION_DURATION):c())};var e=a.fn.alert;a.fn.alert=b,a.fn.alert.Constructor=d,a.fn.alert.noConflict=function(){return a.fn.alert=e,this},a(document).on("click.bs.alert.data-api",c,d.prototype.close)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.button"),f="object"==typeof b&&b;e||d.data("bs.button",e=new c(this,f)),"toggle"==b?e.toggle():b&&e.setState(b)})}var c=function(b,d){this.$element=a(b),this.options=a.extend({},c.DEFAULTS,d),this.isLoading=!1};c.VERSION="3.3.4",c.DEFAULTS={loadingText:"loading..."},c.prototype.setState=function(b){var c="disabled",d=this.$element,e=d.is("input")?"val":"html",f=d.data();b+="Text",null==f.resetText&&d.data("resetText",d[e]()),setTimeout(a.proxy(function(){d[e](null==f[b]?this.options[b]:f[b]),"loadingText"==b?(this.isLoading=!0,d.addClass(c).attr(c,c)):this.isLoading&&(this.isLoading=!1,d.removeClass(c).removeAttr(c))},this),0)},c.prototype.toggle=function(){var a=!0,b=this.$element.closest('[data-toggle="buttons"]');if(b.length){var c=this.$element.find("input");"radio"==c.prop("type")&&(c.prop("checked")&&this.$element.hasClass("active")?a=!1:b.find(".active").removeClass("active")),a&&c.prop("checked",!this.$element.hasClass("active")).trigger("change")}else this.$element.attr("aria-pressed",!this.$element.hasClass("active"));a&&this.$element.toggleClass("active")};var d=a.fn.button;a.fn.button=b,a.fn.button.Constructor=c,a.fn.button.noConflict=function(){return a.fn.button=d,this},a(document).on("click.bs.button.data-api",'[data-toggle^="button"]',function(c){var d=a(c.target);d.hasClass("btn")||(d=d.closest(".btn")),b.call(d,"toggle"),c.preventDefault()}).on("focus.bs.button.data-api blur.bs.button.data-api",'[data-toggle^="button"]',function(b){a(b.target).closest(".btn").toggleClass("focus",/^focus(in)?$/.test(b.type))})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.carousel"),f=a.extend({},c.DEFAULTS,d.data(),"object"==typeof b&&b),g="string"==typeof b?b:f.slide;e||d.data("bs.carousel",e=new c(this,f)),"number"==typeof b?e.to(b):g?e[g]():f.interval&&e.pause().cycle()})}var c=function(b,c){this.$element=a(b),this.$indicators=this.$element.find(".carousel-indicators"),this.options=c,this.paused=null,this.sliding=null,this.interval=null,this.$active=null,this.$items=null,this.options.keyboard&&this.$element.on("keydown.bs.carousel",a.proxy(this.keydown,this)),"hover"==this.options.pause&&!("ontouchstart"in document.documentElement)&&this.$element.on("mouseenter.bs.carousel",a.proxy(this.pause,this)).on("mouseleave.bs.carousel",a.proxy(this.cycle,this))};c.VERSION="3.3.4",c.TRANSITION_DURATION=600,c.DEFAULTS={interval:5e3,pause:"hover",wrap:!0,keyboard:!0},c.prototype.keydown=function(a){if(!/input|textarea/i.test(a.target.tagName)){switch(a.which){case 37:this.prev();break;case 39:this.next();break;default:return}a.preventDefault()}},c.prototype.cycle=function(b){return b||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval)),this},c.prototype.getItemIndex=function(a){return this.$items=a.parent().children(".item"),this.$items.index(a||this.$active)},c.prototype.getItemForDirection=function(a,b){var c=this.getItemIndex(b),d="prev"==a&&0===c||"next"==a&&c==this.$items.length-1;if(d&&!this.options.wrap)return b;var e="prev"==a?-1:1,f=(c+e)%this.$items.length;return this.$items.eq(f)},c.prototype.to=function(a){var b=this,c=this.getItemIndex(this.$active=this.$element.find(".item.active"));return a>this.$items.length-1||0>a?void 0:this.sliding?this.$element.one("slid.bs.carousel",function(){b.to(a)}):c==a?this.pause().cycle():this.slide(a>c?"next":"prev",this.$items.eq(a))},c.prototype.pause=function(b){return b||(this.paused=!0),this.$element.find(".next, .prev").length&&a.support.transition&&(this.$element.trigger(a.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},c.prototype.next=function(){return this.sliding?void 0:this.slide("next")},c.prototype.prev=function(){return this.sliding?void 0:this.slide("prev")},c.prototype.slide=function(b,d){var e=this.$element.find(".item.active"),f=d||this.getItemForDirection(b,e),g=this.interval,h="next"==b?"left":"right",i=this;if(f.hasClass("active"))return this.sliding=!1;var j=f[0],k=a.Event("slide.bs.carousel",{relatedTarget:j,direction:h});if(this.$element.trigger(k),!k.isDefaultPrevented()){if(this.sliding=!0,g&&this.pause(),this.$indicators.length){this.$indicators.find(".active").removeClass("active");var l=a(this.$indicators.children()[this.getItemIndex(f)]);l&&l.addClass("active")}var m=a.Event("slid.bs.carousel",{relatedTarget:j,direction:h});return a.support.transition&&this.$element.hasClass("slide")?(f.addClass(b),f[0].offsetWidth,e.addClass(h),f.addClass(h),e.one("bsTransitionEnd",function(){f.removeClass([b,h].join(" ")).addClass("active"),e.removeClass(["active",h].join(" ")),i.sliding=!1,setTimeout(function(){i.$element.trigger(m)},0)}).emulateTransitionEnd(c.TRANSITION_DURATION)):(e.removeClass("active"),f.addClass("active"),this.sliding=!1,this.$element.trigger(m)),g&&this.cycle(),this}};var d=a.fn.carousel;a.fn.carousel=b,a.fn.carousel.Constructor=c,a.fn.carousel.noConflict=function(){return a.fn.carousel=d,this};var e=function(c){var d,e=a(this),f=a(e.attr("data-target")||(d=e.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,""));if(f.hasClass("carousel")){var g=a.extend({},f.data(),e.data()),h=e.attr("data-slide-to");h&&(g.interval=!1),b.call(f,g),h&&f.data("bs.carousel").to(h),c.preventDefault()}};a(document).on("click.bs.carousel.data-api","[data-slide]",e).on("click.bs.carousel.data-api","[data-slide-to]",e),a(window).on("load",function(){a('[data-ride="carousel"]').each(function(){var c=a(this);b.call(c,c.data())})})}(jQuery),+function(a){"use strict";function b(b){var c,d=b.attr("data-target")||(c=b.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,"");return a(d)}function c(b){return this.each(function(){var c=a(this),e=c.data("bs.collapse"),f=a.extend({},d.DEFAULTS,c.data(),"object"==typeof b&&b);!e&&f.toggle&&/show|hide/.test(b)&&(f.toggle=!1),e||c.data("bs.collapse",e=new d(this,f)),"string"==typeof b&&e[b]()})}var d=function(b,c){this.$element=a(b),this.options=a.extend({},d.DEFAULTS,c),this.$trigger=a('[data-toggle="collapse"][href="#'+b.id+'"],[data-toggle="collapse"][data-target="#'+b.id+'"]'),this.transitioning=null,this.options.parent?this.$parent=this.getParent():this.addAriaAndCollapsedClass(this.$element,this.$trigger),this.options.toggle&&this.toggle()};d.VERSION="3.3.4",d.TRANSITION_DURATION=350,d.DEFAULTS={toggle:!0},d.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},d.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var b,e=this.$parent&&this.$parent.children(".panel").children(".in, .collapsing");if(!(e&&e.length&&(b=e.data("bs.collapse"),b&&b.transitioning))){var f=a.Event("show.bs.collapse");if(this.$element.trigger(f),!f.isDefaultPrevented()){e&&e.length&&(c.call(e,"hide"),b||e.data("bs.collapse",null));var g=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[g](0).attr("aria-expanded",!0),this.$trigger.removeClass("collapsed").attr("aria-expanded",!0),this.transitioning=1;var h=function(){this.$element.removeClass("collapsing").addClass("collapse in")[g](""),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return h.call(this);var i=a.camelCase(["scroll",g].join("-"));this.$element.one("bsTransitionEnd",a.proxy(h,this)).emulateTransitionEnd(d.TRANSITION_DURATION)[g](this.$element[0][i])}}}},d.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var b=a.Event("hide.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse in").attr("aria-expanded",!1),this.$trigger.addClass("collapsed").attr("aria-expanded",!1),this.transitioning=1;var e=function(){this.transitioning=0,this.$element.removeClass("collapsing").addClass("collapse").trigger("hidden.bs.collapse")};return a.support.transition?void this.$element[c](0).one("bsTransitionEnd",a.proxy(e,this)).emulateTransitionEnd(d.TRANSITION_DURATION):e.call(this)}}},d.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()},d.prototype.getParent=function(){return a(this.options.parent).find('[data-toggle="collapse"][data-parent="'+this.options.parent+'"]').each(a.proxy(function(c,d){var e=a(d);this.addAriaAndCollapsedClass(b(e),e)},this)).end()},d.prototype.addAriaAndCollapsedClass=function(a,b){var c=a.hasClass("in");a.attr("aria-expanded",c),b.toggleClass("collapsed",!c).attr("aria-expanded",c)};var e=a.fn.collapse;a.fn.collapse=c,a.fn.collapse.Constructor=d,a.fn.collapse.noConflict=function(){return a.fn.collapse=e,this},a(document).on("click.bs.collapse.data-api",'[data-toggle="collapse"]',function(d){var e=a(this);e.attr("data-target")||d.preventDefault();var f=b(e),g=f.data("bs.collapse"),h=g?"toggle":e.data();c.call(f,h)})}(jQuery),+function(a){"use strict";function b(b){b&&3===b.which||(a(e).remove(),a(f).each(function(){var d=a(this),e=c(d),f={relatedTarget:this};e.hasClass("open")&&(e.trigger(b=a.Event("hide.bs.dropdown",f)),b.isDefaultPrevented()||(d.attr("aria-expanded","false"),e.removeClass("open").trigger("hidden.bs.dropdown",f)))}))}function c(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#[A-Za-z]/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}function d(b){return this.each(function(){var c=a(this),d=c.data("bs.dropdown");d||c.data("bs.dropdown",d=new g(this)),"string"==typeof b&&d[b].call(c)})}var e=".dropdown-backdrop",f='[data-toggle="dropdown"]',g=function(b){a(b).on("click.bs.dropdown",this.toggle)};g.VERSION="3.3.4",g.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=c(e),g=f.hasClass("open");if(b(),!g){"ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a('<div class="dropdown-backdrop"/>').insertAfter(a(this)).on("click",b);var h={relatedTarget:this};if(f.trigger(d=a.Event("show.bs.dropdown",h)),d.isDefaultPrevented())return;e.trigger("focus").attr("aria-expanded","true"),f.toggleClass("open").trigger("shown.bs.dropdown",h)}return!1}},g.prototype.keydown=function(b){if(/(38|40|27|32)/.test(b.which)&&!/input|textarea/i.test(b.target.tagName)){var d=a(this);if(b.preventDefault(),b.stopPropagation(),!d.is(".disabled, :disabled")){var e=c(d),g=e.hasClass("open");if(!g&&27!=b.which||g&&27==b.which)return 27==b.which&&e.find(f).trigger("focus"),d.trigger("click");var h=" li:not(.disabled):visible a",i=e.find('[role="menu"]'+h+', [role="listbox"]'+h);if(i.length){var j=i.index(b.target);38==b.which&&j>0&&j--,40==b.which&&j<i.length-1&&j++,~j||(j=0),i.eq(j).trigger("focus")}}}};var h=a.fn.dropdown;a.fn.dropdown=d,a.fn.dropdown.Constructor=g,a.fn.dropdown.noConflict=function(){return a.fn.dropdown=h,this},a(document).on("click.bs.dropdown.data-api",b).on("click.bs.dropdown.data-api",".dropdown form",function(a){a.stopPropagation()}).on("click.bs.dropdown.data-api",f,g.prototype.toggle).on("keydown.bs.dropdown.data-api",f,g.prototype.keydown).on("keydown.bs.dropdown.data-api",'[role="menu"]',g.prototype.keydown).on("keydown.bs.dropdown.data-api",'[role="listbox"]',g.prototype.keydown)}(jQuery),+function(a){"use strict";function b(b,d){return this.each(function(){var e=a(this),f=e.data("bs.modal"),g=a.extend({},c.DEFAULTS,e.data(),"object"==typeof b&&b);f||e.data("bs.modal",f=new c(this,g)),"string"==typeof b?f[b](d):g.show&&f.show(d)})}var c=function(b,c){this.options=c,this.$body=a(document.body),this.$element=a(b),this.$dialog=this.$element.find(".modal-dialog"),this.$backdrop=null,this.isShown=null,this.originalBodyPad=null,this.scrollbarWidth=0,this.ignoreBackdropClick=!1,this.options.remote&&this.$element.find(".modal-content").load(this.options.remote,a.proxy(function(){this.$element.trigger("loaded.bs.modal")},this))};c.VERSION="3.3.4",c.TRANSITION_DURATION=300,c.BACKDROP_TRANSITION_DURATION=150,c.DEFAULTS={backdrop:!0,keyboard:!0,show:!0},c.prototype.toggle=function(a){return this.isShown?this.hide():this.show(a)},c.prototype.show=function(b){var d=this,e=a.Event("show.bs.modal",{relatedTarget:b});this.$element.trigger(e),this.isShown||e.isDefaultPrevented()||(this.isShown=!0,this.checkScrollbar(),this.setScrollbar(),this.$body.addClass("modal-open"),this.escape(),this.resize(),this.$element.on("click.dismiss.bs.modal",'[data-dismiss="modal"]',a.proxy(this.hide,this)),this.$dialog.on("mousedown.dismiss.bs.modal",function(){d.$element.one("mouseup.dismiss.bs.modal",function(b){a(b.target).is(d.$element)&&(d.ignoreBackdropClick=!0)})}),this.backdrop(function(){var e=a.support.transition&&d.$element.hasClass("fade");d.$element.parent().length||d.$element.appendTo(d.$body),d.$element.show().scrollTop(0),d.adjustDialog(),e&&d.$element[0].offsetWidth,d.$element.addClass("in").attr("aria-hidden",!1),d.enforceFocus();var f=a.Event("shown.bs.modal",{relatedTarget:b});e?d.$dialog.one("bsTransitionEnd",function(){d.$element.trigger("focus").trigger(f)}).emulateTransitionEnd(c.TRANSITION_DURATION):d.$element.trigger("focus").trigger(f)}))},c.prototype.hide=function(b){b&&b.preventDefault(),b=a.Event("hide.bs.modal"),this.$element.trigger(b),this.isShown&&!b.isDefaultPrevented()&&(this.isShown=!1,this.escape(),this.resize(),a(document).off("focusin.bs.modal"),this.$element.removeClass("in").attr("aria-hidden",!0).off("click.dismiss.bs.modal").off("mouseup.dismiss.bs.modal"),this.$dialog.off("mousedown.dismiss.bs.modal"),a.support.transition&&this.$element.hasClass("fade")?this.$element.one("bsTransitionEnd",a.proxy(this.hideModal,this)).emulateTransitionEnd(c.TRANSITION_DURATION):this.hideModal())},c.prototype.enforceFocus=function(){a(document).off("focusin.bs.modal").on("focusin.bs.modal",a.proxy(function(a){this.$element[0]===a.target||this.$element.has(a.target).length||this.$element.trigger("focus")},this))},c.prototype.escape=function(){this.isShown&&this.options.keyboard?this.$element.on("keydown.dismiss.bs.modal",a.proxy(function(a){27==a.which&&this.hide()},this)):this.isShown||this.$element.off("keydown.dismiss.bs.modal")},c.prototype.resize=function(){this.isShown?a(window).on("resize.bs.modal",a.proxy(this.handleUpdate,this)):a(window).off("resize.bs.modal")},c.prototype.hideModal=function(){var a=this;this.$element.hide(),this.backdrop(function(){a.$body.removeClass("modal-open"),a.resetAdjustments(),a.resetScrollbar(),a.$element.trigger("hidden.bs.modal")})},c.prototype.removeBackdrop=function(){this.$backdrop&&this.$backdrop.remove(),this.$backdrop=null},c.prototype.backdrop=function(b){var d=this,e=this.$element.hasClass("fade")?"fade":"";if(this.isShown&&this.options.backdrop){var f=a.support.transition&&e;if(this.$backdrop=a('<div class="modal-backdrop '+e+'" />').appendTo(this.$body),this.$element.on("click.dismiss.bs.modal",a.proxy(function(a){return this.ignoreBackdropClick?void(this.ignoreBackdropClick=!1):void(a.target===a.currentTarget&&("static"==this.options.backdrop?this.$element[0].focus():this.hide()))},this)),f&&this.$backdrop[0].offsetWidth,this.$backdrop.addClass("in"),!b)return;f?this.$backdrop.one("bsTransitionEnd",b).emulateTransitionEnd(c.BACKDROP_TRANSITION_DURATION):b()}else if(!this.isShown&&this.$backdrop){this.$backdrop.removeClass("in");var g=function(){d.removeBackdrop(),b&&b()};a.support.transition&&this.$element.hasClass("fade")?this.$backdrop.one("bsTransitionEnd",g).emulateTransitionEnd(c.BACKDROP_TRANSITION_DURATION):g()}else b&&b()},c.prototype.handleUpdate=function(){this.adjustDialog()},c.prototype.adjustDialog=function(){var a=this.$element[0].scrollHeight>document.documentElement.clientHeight;this.$element.css({paddingLeft:!this.bodyIsOverflowing&&a?this.scrollbarWidth:"",paddingRight:this.bodyIsOverflowing&&!a?this.scrollbarWidth:"" +})},c.prototype.resetAdjustments=function(){this.$element.css({paddingLeft:"",paddingRight:""})},c.prototype.checkScrollbar=function(){var a=window.innerWidth;if(!a){var b=document.documentElement.getBoundingClientRect();a=b.right-Math.abs(b.left)}this.bodyIsOverflowing=document.body.clientWidth<a,this.scrollbarWidth=this.measureScrollbar()},c.prototype.setScrollbar=function(){var a=parseInt(this.$body.css("padding-right")||0,10);this.originalBodyPad=document.body.style.paddingRight||"",this.bodyIsOverflowing&&this.$body.css("padding-right",a+this.scrollbarWidth)},c.prototype.resetScrollbar=function(){this.$body.css("padding-right",this.originalBodyPad)},c.prototype.measureScrollbar=function(){var a=document.createElement("div");a.className="modal-scrollbar-measure",this.$body.append(a);var b=a.offsetWidth-a.clientWidth;return this.$body[0].removeChild(a),b};var d=a.fn.modal;a.fn.modal=b,a.fn.modal.Constructor=c,a.fn.modal.noConflict=function(){return a.fn.modal=d,this},a(document).on("click.bs.modal.data-api",'[data-toggle="modal"]',function(c){var d=a(this),e=d.attr("href"),f=a(d.attr("data-target")||e&&e.replace(/.*(?=#[^\s]+$)/,"")),g=f.data("bs.modal")?"toggle":a.extend({remote:!/#/.test(e)&&e},f.data(),d.data());d.is("a")&&c.preventDefault(),f.one("show.bs.modal",function(a){a.isDefaultPrevented()||f.one("hidden.bs.modal",function(){d.is(":visible")&&d.trigger("focus")})}),b.call(f,g,this)})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.tooltip"),f="object"==typeof b&&b;(e||!/destroy|hide/.test(b))&&(e||d.data("bs.tooltip",e=new c(this,f)),"string"==typeof b&&e[b]())})}var c=function(a,b){this.type=null,this.options=null,this.enabled=null,this.timeout=null,this.hoverState=null,this.$element=null,this.init("tooltip",a,b)};c.VERSION="3.3.4",c.TRANSITION_DURATION=150,c.DEFAULTS={animation:!0,placement:"top",selector:!1,template:'<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',trigger:"hover focus",title:"",delay:0,html:!1,container:!1,viewport:{selector:"body",padding:0}},c.prototype.init=function(b,c,d){if(this.enabled=!0,this.type=b,this.$element=a(c),this.options=this.getOptions(d),this.$viewport=this.options.viewport&&a(this.options.viewport.selector||this.options.viewport),this.$element[0]instanceof document.constructor&&!this.options.selector)throw new Error("`selector` option must be specified when initializing "+this.type+" on the window.document object!");for(var e=this.options.trigger.split(" "),f=e.length;f--;){var g=e[f];if("click"==g)this.$element.on("click."+this.type,this.options.selector,a.proxy(this.toggle,this));else if("manual"!=g){var h="hover"==g?"mouseenter":"focusin",i="hover"==g?"mouseleave":"focusout";this.$element.on(h+"."+this.type,this.options.selector,a.proxy(this.enter,this)),this.$element.on(i+"."+this.type,this.options.selector,a.proxy(this.leave,this))}}this.options.selector?this._options=a.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.getOptions=function(b){return b=a.extend({},this.getDefaults(),this.$element.data(),b),b.delay&&"number"==typeof b.delay&&(b.delay={show:b.delay,hide:b.delay}),b},c.prototype.getDelegateOptions=function(){var b={},c=this.getDefaults();return this._options&&a.each(this._options,function(a,d){c[a]!=d&&(b[a]=d)}),b},c.prototype.enter=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c&&c.$tip&&c.$tip.is(":visible")?void(c.hoverState="in"):(c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),clearTimeout(c.timeout),c.hoverState="in",c.options.delay&&c.options.delay.show?void(c.timeout=setTimeout(function(){"in"==c.hoverState&&c.show()},c.options.delay.show)):c.show())},c.prototype.leave=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),clearTimeout(c.timeout),c.hoverState="out",c.options.delay&&c.options.delay.hide?void(c.timeout=setTimeout(function(){"out"==c.hoverState&&c.hide()},c.options.delay.hide)):c.hide()},c.prototype.show=function(){var b=a.Event("show.bs."+this.type);if(this.hasContent()&&this.enabled){this.$element.trigger(b);var d=a.contains(this.$element[0].ownerDocument.documentElement,this.$element[0]);if(b.isDefaultPrevented()||!d)return;var e=this,f=this.tip(),g=this.getUID(this.type);this.setContent(),f.attr("id",g),this.$element.attr("aria-describedby",g),this.options.animation&&f.addClass("fade");var h="function"==typeof this.options.placement?this.options.placement.call(this,f[0],this.$element[0]):this.options.placement,i=/\s?auto?\s?/i,j=i.test(h);j&&(h=h.replace(i,"")||"top"),f.detach().css({top:0,left:0,display:"block"}).addClass(h).data("bs."+this.type,this),this.options.container?f.appendTo(this.options.container):f.insertAfter(this.$element);var k=this.getPosition(),l=f[0].offsetWidth,m=f[0].offsetHeight;if(j){var n=h,o=this.options.container?a(this.options.container):this.$element.parent(),p=this.getPosition(o);h="bottom"==h&&k.bottom+m>p.bottom?"top":"top"==h&&k.top-m<p.top?"bottom":"right"==h&&k.right+l>p.width?"left":"left"==h&&k.left-l<p.left?"right":h,f.removeClass(n).addClass(h)}var q=this.getCalculatedOffset(h,k,l,m);this.applyPlacement(q,h);var r=function(){var a=e.hoverState;e.$element.trigger("shown.bs."+e.type),e.hoverState=null,"out"==a&&e.leave(e)};a.support.transition&&this.$tip.hasClass("fade")?f.one("bsTransitionEnd",r).emulateTransitionEnd(c.TRANSITION_DURATION):r()}},c.prototype.applyPlacement=function(b,c){var d=this.tip(),e=d[0].offsetWidth,f=d[0].offsetHeight,g=parseInt(d.css("margin-top"),10),h=parseInt(d.css("margin-left"),10);isNaN(g)&&(g=0),isNaN(h)&&(h=0),b.top=b.top+g,b.left=b.left+h,a.offset.setOffset(d[0],a.extend({using:function(a){d.css({top:Math.round(a.top),left:Math.round(a.left)})}},b),0),d.addClass("in");var i=d[0].offsetWidth,j=d[0].offsetHeight;"top"==c&&j!=f&&(b.top=b.top+f-j);var k=this.getViewportAdjustedDelta(c,b,i,j);k.left?b.left+=k.left:b.top+=k.top;var l=/top|bottom/.test(c),m=l?2*k.left-e+i:2*k.top-f+j,n=l?"offsetWidth":"offsetHeight";d.offset(b),this.replaceArrow(m,d[0][n],l)},c.prototype.replaceArrow=function(a,b,c){this.arrow().css(c?"left":"top",50*(1-a/b)+"%").css(c?"top":"left","")},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle();a.find(".tooltip-inner")[this.options.html?"html":"text"](b),a.removeClass("fade in top bottom left right")},c.prototype.hide=function(b){function d(){"in"!=e.hoverState&&f.detach(),e.$element.removeAttr("aria-describedby").trigger("hidden.bs."+e.type),b&&b()}var e=this,f=a(this.$tip),g=a.Event("hide.bs."+this.type);return this.$element.trigger(g),g.isDefaultPrevented()?void 0:(f.removeClass("in"),a.support.transition&&f.hasClass("fade")?f.one("bsTransitionEnd",d).emulateTransitionEnd(c.TRANSITION_DURATION):d(),this.hoverState=null,this)},c.prototype.fixTitle=function(){var a=this.$element;(a.attr("title")||"string"!=typeof a.attr("data-original-title"))&&a.attr("data-original-title",a.attr("title")||"").attr("title","")},c.prototype.hasContent=function(){return this.getTitle()},c.prototype.getPosition=function(b){b=b||this.$element;var c=b[0],d="BODY"==c.tagName,e=c.getBoundingClientRect();null==e.width&&(e=a.extend({},e,{width:e.right-e.left,height:e.bottom-e.top}));var f=d?{top:0,left:0}:b.offset(),g={scroll:d?document.documentElement.scrollTop||document.body.scrollTop:b.scrollTop()},h=d?{width:a(window).width(),height:a(window).height()}:null;return a.extend({},e,g,h,f)},c.prototype.getCalculatedOffset=function(a,b,c,d){return"bottom"==a?{top:b.top+b.height,left:b.left+b.width/2-c/2}:"top"==a?{top:b.top-d,left:b.left+b.width/2-c/2}:"left"==a?{top:b.top+b.height/2-d/2,left:b.left-c}:{top:b.top+b.height/2-d/2,left:b.left+b.width}},c.prototype.getViewportAdjustedDelta=function(a,b,c,d){var e={top:0,left:0};if(!this.$viewport)return e;var f=this.options.viewport&&this.options.viewport.padding||0,g=this.getPosition(this.$viewport);if(/right|left/.test(a)){var h=b.top-f-g.scroll,i=b.top+f-g.scroll+d;h<g.top?e.top=g.top-h:i>g.top+g.height&&(e.top=g.top+g.height-i)}else{var j=b.left-f,k=b.left+f+c;j<g.left?e.left=g.left-j:k>g.width&&(e.left=g.left+g.width-k)}return e},c.prototype.getTitle=function(){var a,b=this.$element,c=this.options;return a=b.attr("data-original-title")||("function"==typeof c.title?c.title.call(b[0]):c.title)},c.prototype.getUID=function(a){do a+=~~(1e6*Math.random());while(document.getElementById(a));return a},c.prototype.tip=function(){return this.$tip=this.$tip||a(this.options.template)},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},c.prototype.enable=function(){this.enabled=!0},c.prototype.disable=function(){this.enabled=!1},c.prototype.toggleEnabled=function(){this.enabled=!this.enabled},c.prototype.toggle=function(b){var c=this;b&&(c=a(b.currentTarget).data("bs."+this.type),c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c))),c.tip().hasClass("in")?c.leave(c):c.enter(c)},c.prototype.destroy=function(){var a=this;clearTimeout(this.timeout),this.hide(function(){a.$element.off("."+a.type).removeData("bs."+a.type)})};var d=a.fn.tooltip;a.fn.tooltip=b,a.fn.tooltip.Constructor=c,a.fn.tooltip.noConflict=function(){return a.fn.tooltip=d,this}}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.popover"),f="object"==typeof b&&b;(e||!/destroy|hide/.test(b))&&(e||d.data("bs.popover",e=new c(this,f)),"string"==typeof b&&e[b]())})}var c=function(a,b){this.init("popover",a,b)};if(!a.fn.tooltip)throw new Error("Popover requires tooltip.js");c.VERSION="3.3.4",c.DEFAULTS=a.extend({},a.fn.tooltip.Constructor.DEFAULTS,{placement:"right",trigger:"click",content:"",template:'<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'}),c.prototype=a.extend({},a.fn.tooltip.Constructor.prototype),c.prototype.constructor=c,c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle(),c=this.getContent();a.find(".popover-title")[this.options.html?"html":"text"](b),a.find(".popover-content").children().detach().end()[this.options.html?"string"==typeof c?"html":"append":"text"](c),a.removeClass("fade top bottom left right in"),a.find(".popover-title").html()||a.find(".popover-title").hide()},c.prototype.hasContent=function(){return this.getTitle()||this.getContent()},c.prototype.getContent=function(){var a=this.$element,b=this.options;return a.attr("data-content")||("function"==typeof b.content?b.content.call(a[0]):b.content)},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")};var d=a.fn.popover;a.fn.popover=b,a.fn.popover.Constructor=c,a.fn.popover.noConflict=function(){return a.fn.popover=d,this}}(jQuery),+function(a){"use strict";function b(c,d){this.$body=a(document.body),this.$scrollElement=a(a(c).is(document.body)?window:c),this.options=a.extend({},b.DEFAULTS,d),this.selector=(this.options.target||"")+" .nav li > a",this.offsets=[],this.targets=[],this.activeTarget=null,this.scrollHeight=0,this.$scrollElement.on("scroll.bs.scrollspy",a.proxy(this.process,this)),this.refresh(),this.process()}function c(c){return this.each(function(){var d=a(this),e=d.data("bs.scrollspy"),f="object"==typeof c&&c;e||d.data("bs.scrollspy",e=new b(this,f)),"string"==typeof c&&e[c]()})}b.VERSION="3.3.4",b.DEFAULTS={offset:10},b.prototype.getScrollHeight=function(){return this.$scrollElement[0].scrollHeight||Math.max(this.$body[0].scrollHeight,document.documentElement.scrollHeight)},b.prototype.refresh=function(){var b=this,c="offset",d=0;this.offsets=[],this.targets=[],this.scrollHeight=this.getScrollHeight(),a.isWindow(this.$scrollElement[0])||(c="position",d=this.$scrollElement.scrollTop()),this.$body.find(this.selector).map(function(){var b=a(this),e=b.data("target")||b.attr("href"),f=/^#./.test(e)&&a(e);return f&&f.length&&f.is(":visible")&&[[f[c]().top+d,e]]||null}).sort(function(a,b){return a[0]-b[0]}).each(function(){b.offsets.push(this[0]),b.targets.push(this[1])})},b.prototype.process=function(){var a,b=this.$scrollElement.scrollTop()+this.options.offset,c=this.getScrollHeight(),d=this.options.offset+c-this.$scrollElement.height(),e=this.offsets,f=this.targets,g=this.activeTarget;if(this.scrollHeight!=c&&this.refresh(),b>=d)return g!=(a=f[f.length-1])&&this.activate(a);if(g&&b<e[0])return this.activeTarget=null,this.clear();for(a=e.length;a--;)g!=f[a]&&b>=e[a]&&(void 0===e[a+1]||b<e[a+1])&&this.activate(f[a])},b.prototype.activate=function(b){this.activeTarget=b,this.clear();var c=this.selector+'[data-target="'+b+'"],'+this.selector+'[href="'+b+'"]',d=a(c).parents("li").addClass("active");d.parent(".dropdown-menu").length&&(d=d.closest("li.dropdown").addClass("active")),d.trigger("activate.bs.scrollspy")},b.prototype.clear=function(){a(this.selector).parentsUntil(this.options.target,".active").removeClass("active")};var d=a.fn.scrollspy;a.fn.scrollspy=c,a.fn.scrollspy.Constructor=b,a.fn.scrollspy.noConflict=function(){return a.fn.scrollspy=d,this},a(window).on("load.bs.scrollspy.data-api",function(){a('[data-spy="scroll"]').each(function(){var b=a(this);c.call(b,b.data())})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.tab");e||d.data("bs.tab",e=new c(this)),"string"==typeof b&&e[b]()})}var c=function(b){this.element=a(b)};c.VERSION="3.3.4",c.TRANSITION_DURATION=150,c.prototype.show=function(){var b=this.element,c=b.closest("ul:not(.dropdown-menu)"),d=b.data("target");if(d||(d=b.attr("href"),d=d&&d.replace(/.*(?=#[^\s]*$)/,"")),!b.parent("li").hasClass("active")){var e=c.find(".active:last a"),f=a.Event("hide.bs.tab",{relatedTarget:b[0]}),g=a.Event("show.bs.tab",{relatedTarget:e[0]});if(e.trigger(f),b.trigger(g),!g.isDefaultPrevented()&&!f.isDefaultPrevented()){var h=a(d);this.activate(b.closest("li"),c),this.activate(h,h.parent(),function(){e.trigger({type:"hidden.bs.tab",relatedTarget:b[0]}),b.trigger({type:"shown.bs.tab",relatedTarget:e[0]})})}}},c.prototype.activate=function(b,d,e){function f(){g.removeClass("active").find("> .dropdown-menu > .active").removeClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!1),b.addClass("active").find('[data-toggle="tab"]').attr("aria-expanded",!0),h?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu").length&&b.closest("li.dropdown").addClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!0),e&&e()}var g=d.find("> .active"),h=e&&a.support.transition&&(g.length&&g.hasClass("fade")||!!d.find("> .fade").length);g.length&&h?g.one("bsTransitionEnd",f).emulateTransitionEnd(c.TRANSITION_DURATION):f(),g.removeClass("in")};var d=a.fn.tab;a.fn.tab=b,a.fn.tab.Constructor=c,a.fn.tab.noConflict=function(){return a.fn.tab=d,this};var e=function(c){c.preventDefault(),b.call(a(this),"show")};a(document).on("click.bs.tab.data-api",'[data-toggle="tab"]',e).on("click.bs.tab.data-api",'[data-toggle="pill"]',e)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.affix"),f="object"==typeof b&&b;e||d.data("bs.affix",e=new c(this,f)),"string"==typeof b&&e[b]()})}var c=function(b,d){this.options=a.extend({},c.DEFAULTS,d),this.$target=a(this.options.target).on("scroll.bs.affix.data-api",a.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",a.proxy(this.checkPositionWithEventLoop,this)),this.$element=a(b),this.affixed=null,this.unpin=null,this.pinnedOffset=null,this.checkPosition()};c.VERSION="3.3.4",c.RESET="affix affix-top affix-bottom",c.DEFAULTS={offset:0,target:window},c.prototype.getState=function(a,b,c,d){var e=this.$target.scrollTop(),f=this.$element.offset(),g=this.$target.height();if(null!=c&&"top"==this.affixed)return c>e?"top":!1;if("bottom"==this.affixed)return null!=c?e+this.unpin<=f.top?!1:"bottom":a-d>=e+g?!1:"bottom";var h=null==this.affixed,i=h?e:f.top,j=h?g:b;return null!=c&&c>=e?"top":null!=d&&i+j>=a-d?"bottom":!1},c.prototype.getPinnedOffset=function(){if(this.pinnedOffset)return this.pinnedOffset;this.$element.removeClass(c.RESET).addClass("affix");var a=this.$target.scrollTop(),b=this.$element.offset();return this.pinnedOffset=b.top-a},c.prototype.checkPositionWithEventLoop=function(){setTimeout(a.proxy(this.checkPosition,this),1)},c.prototype.checkPosition=function(){if(this.$element.is(":visible")){var b=this.$element.height(),d=this.options.offset,e=d.top,f=d.bottom,g=a(document.body).height();"object"!=typeof d&&(f=e=d),"function"==typeof e&&(e=d.top(this.$element)),"function"==typeof f&&(f=d.bottom(this.$element));var h=this.getState(g,b,e,f);if(this.affixed!=h){null!=this.unpin&&this.$element.css("top","");var i="affix"+(h?"-"+h:""),j=a.Event(i+".bs.affix");if(this.$element.trigger(j),j.isDefaultPrevented())return;this.affixed=h,this.unpin="bottom"==h?this.getPinnedOffset():null,this.$element.removeClass(c.RESET).addClass(i).trigger(i.replace("affix","affixed")+".bs.affix")}"bottom"==h&&this.$element.offset({top:g-b-f})}};var d=a.fn.affix;a.fn.affix=b,a.fn.affix.Constructor=c,a.fn.affix.noConflict=function(){return a.fn.affix=d,this},a(window).on("load",function(){a('[data-spy="affix"]').each(function(){var c=a(this),d=c.data();d.offset=d.offset||{},null!=d.offsetBottom&&(d.offset.bottom=d.offsetBottom),null!=d.offsetTop&&(d.offset.top=d.offsetTop),b.call(c,d)})})}(jQuery); \ No newline at end of file diff --git a/scripts/e2faded6.scripts.js b/scripts/e2faded6.scripts.js deleted file mode 100644 index bf1399e9..00000000 --- a/scripts/e2faded6.scripts.js +++ /dev/null @@ -1,4 +0,0 @@ -"use strict";angular.module("config",[]).constant("ENV",{name:"samplestore",host:"",apiEndpoint:"/api/v1"}),angular.module("Volusion.templates",[]),angular.module("Volusion.services",[]),angular.module("Volusion.controllers",[]),angular.module("methodApp",["ngAnimate","ngCookies","ngResource","ngSanitize","ngTouch","ui.bootstrap","pascalprecht.translate","snap","textAngular","ui.router","ngRoute","config","seo","angulartics","Volusion.toolboxCommon","Volusion.controllers","Volusion.services","Volusion.templates"]).config(["$locationProvider","translateProvider","vnAppConfigProvider","ENV","$stateProvider","$urlRouterProvider",function(a,b,c,d,e,f){function g(){return{url:"/cart",onEnter:["$rootScope",function(a){a.$emit("enterCartState")}],onExit:["$rootScope",function(a){a.$emit("exitCartState")}]}}a.html5Mode(!0),c.setApiPath(d.host,d.apiEndpoint);var h={urlPrefix:c.getPrefix(),region:c.getRegion(),lang:c.getLang(),country:c.getCountry(),disableTranslations:c.getTranslations()};b.configure(h),f.otherwise("/"),e.state("home",{url:"/",templateUrl:"views/home.html",controller:"HomeCtrl",resolve:{translations:["translate",function(a){a.addParts("home"),a.addParts("product")}]}}).state("login",{url:"/login",templateUrl:"login/login.html",controller:"LoginCtrl",resolve:{emptyCart:["vnAppRoute",function(a){return a.checkEmptyCart(this.url.source)}]}}).state("checkout",{url:"/checkout",templateUrl:"checkout/checkout.html",controller:"CheckoutCtrl",resolve:{emptyCart:["vnAppRoute",function(a){return a.checkEmptyCart(this.url.source)}]}}).state("thank-you",{url:"/thank-you",templateUrl:"thank-you/thank-you.html",controller:"ThankYouCtrl"}).state("product",{url:"/p/:slug",templateUrl:"views/product.html",controller:"ProductCtrl",resolve:{translations:["translate",function(a){return a.addParts("product")}]}}).state("category",{url:"/c/:slug",templateUrl:"views/category.html",controller:"CategoryCtrl",resolve:{params:["vnAppRoute","$location",function(a,b){return a.resolveParams(b.search())}],translations:["translate",function(a){a.addParts("product")}]}}).state("search",{url:"/search",templateUrl:"views/search.html",controller:"SearchCtrl",reloadOnSearch:!1,resolve:{params:["vnAppRoute","$location",function(a,b){return a.resolveParams(b.search())}],translations:["translate",function(a){a.addParts("product")}]}}).state("allProducts",{url:"/all-products",templateUrl:"views/search.html",controller:"SearchCtrl",reloadOnSearch:!1,resolve:{params:["vnAppRoute","$location",function(a,b){return a.resolveParams(b.search())}],translations:["translate",function(a){a.addParts("product")}]}}).state("themeSettings",{url:"/theme-settings",templateUrl:"views/theme-settings.html",controller:"ThemeSettingsCtrl"}).state("article",{url:"/:slug",templateUrl:"views/article.html",controller:"PageCtrl",resolve:{article:["vnApi","$route",function(a,b){return a.Article().get({slug:b.current.params.slug}).$promise}]}}),e.state("home.cart",g()).state("product.cart",g()).state("category.cart",g()).state("search.cart",g()).state("allProducts.cart",g()).state("themeSettings.cart",g()).state("article.cart",g()).state("login.cart",g()).state("thank-you.cart",g())}]).run(["snapRemote","$rootScope","$window","themeSettings","vnCart","translate","vnModalService","vnViewPortWatch",function(a,b,c,d,e,f,g,h){b.defaultProductImage="/images/theme/tcp-no-image.jpg",e.init(),f.addParts("message"),h.setBreakpoints([{name:"Non-Desktop",mediaQuery:"screen and (max-width: 991px)",onMatch:function(){b.isInDesktopMode=!1,b.$emit("enterNonDesktop")},onUnmatch:function(){a.close(),b.isInDesktopMode=!0,b.$emit("exitNonDesktop")}}]),b.$on("$stateChangeStart",function(b,d,e,f){c.scrollTo(0,0),-1===f.name.indexOf(".cart")&&a.close()}),b.$on("$stateChangeSuccess",function(a,c){b.currentState=c.name}),b.$on("VN_HTTP_500_ERROR",function(){g.showError("views/server-error.html")})}]),angular.module("Volusion.controllers").directive("vnScrollTop",["$rootScope",function(a){return{restrict:"A",scope:{},link:function(b,c){a.$on("vnScroll.cart",function(){c[0].scrollTop=0})}}}]),angular.module("Volusion.controllers").directive("vnShoppingCart",["$rootScope","$timeout",function(a,b){return{restrict:"A",controller:"ShoppingCartCtrl",link:function(c){c.showPromoList=!1;var d=$(".th-cart"),e=$(".th-cart__header"),f=$(".th-cart__footer"),g=$(".th-cart__body");c.fixBodyHeight=function(a){a=void 0===a?0:a,b(function(){g.css({height:"calc(100% - "+(f.outerHeight()+e.outerHeight()+$(".th-cart__brand").outerHeight())+"px)","margin-top":e.outerHeight()+"px"})},a)},c.promoInputKeypress=function(a){13===a.which&&(a.currentTarget.blur(),c.applyCoupon())},c.togglePromoList=function(a){c.showPromoList=void 0!==a?a:!c.showPromoList,b(function(){c.fixBodyHeight()},275)},c.toggleApplyBtn=function(a){a===!1?b(function(){c.coupon.showApply=!c.coupon.showApply,c.togglePromoKeyboardFix()},0):a===!0?(c.coupon.showApply=!0,c.togglePromoKeyboardFix()):(c.coupon.showApply=void 0!==a?a:!c.coupon.showApply,c.togglePromoKeyboardFix()),c.fixBodyHeight()},c.toggleKeyboardFix=function(){f.toggleClass("th-cart__footer--keyboard-fix"),c.fixBodyHeight()},c.togglePromoKeyboardFix=function(){f.toggleClass("th-cart__footer--promo-keyboard-fix"),c.fixBodyHeight()},g.on("focus","input.form-control, textarea",function(){c.toggleKeyboardFix()}).on("blur","input.form-control, textarea",function(){c.toggleKeyboardFix()}),a.$on("enterCartState",function(){d.toggleClass("th-cart--active"),$("body").toggleClass("cart-active")}),a.$on("exitCartState",function(){d.toggleClass("th-cart--active"),$("body").toggleClass("cart-active")}),a.$on("cartUpdated",function(){c.fixBodyHeight()}),a.$on("enterNonDesktop",function(){c.fixBodyHeight()}),a.$on("exitNonDesktop",function(){c.fixBodyHeight()})}}}]).directive("vnFormatQuantity",["$filter",function(a){return{require:"?ngModel",link:function(b,c,d,e){e&&(e.$formatters.unshift(function(){return a("number")(e.$modelValue)}),e.$parsers.unshift(function(b){var d="";if(""!==b){b=parseInt(b.toString().replace(/\D/g,"")),(isNaN(b)||0===b)&&(b="");var f=9999999;b>f&&(b=f),d=a("number")(b),(0===parseInt(d)||void 0===parseInt(d))&&(d="")}return e.$setViewValue(b),c.val(d),b}))}}}]),angular.module("Volusion.controllers").controller("MainCtrl",["$scope","$rootScope","$location","$window","$timeout","vnApi","themeSettings","vnSiteConfig","vnImagePreloader",function(a,b,c,d,e,f,g,h,i){b.seo={},h.getConfig().then(function(b){a.config=b.data}),g.getThemeSettings().then(function(b){a.themeSettings=b;var c=[];angular.forEach(a.themeSettings.pages.home.slider.slides,function(a){c.push(a.imageUrl)}),i.preloadImages(c)})}]),angular.module("Volusion.controllers").controller("HeaderCtrl",["$rootScope","$scope","$timeout","$filter","translate","vnCart","vnContentManager","vnAppConfig","vnSearchManager","snapRemote","$state",function(a,b,c,d,e,f,g,h,i,j,k){b.showSearchMobile=!0,b.showSearchDesktop=!1,b.searchLocal=i.getSearchText()||"",e.addParts("common"),e.addParts("header"),b.getCartItemsCount=function(){return f.getCartItemsCount()},a.gotoSoftAdd=function(){k.go(a.currentState+".cart")},a.snapToggle=function(b){a.isInDesktopMode?j.toggle(b):j.getSnapper().then(function(a){b===a.state().state?a.close():a.expand(b)})},a.openLeftNav=function(){a.exitCartState(),j.getSnapper().then(function(a){a.open("left")})},b.$watch(function(){return g.getHeaderState()},function(a){b.headerState=a},!0),b.$watch(function(){return g.getCheckoutHeaderState()},function(a){b.checkoutHeaderState=a},!0)}]),angular.module("Volusion.controllers").controller("FooterCtrl",["$scope","vnContentManager",function(a,b){a.$watch(function(){return b.getFooterState()},function(b){a.footerState=b},!0),a.$watch(function(){return b.getCheckoutFooterState()},function(b){a.checkoutFooterState=b},!0)}]),angular.module("Volusion.controllers").controller("HomeCtrl",["$scope","$filter","vnApi",function(a,b,c){c.Product().get({filter:"featured",pageSize:4}).$promise.then(function(b){a.featuredProducts=b.data}),a.getImagePath=function(a){var c=b("vnProductImageFilter")(a);return""===c?"/images/theme/tcp-no-image.jpg":c}}]),angular.module("Volusion.controllers").controller("CategoryCtrl",["$q","$scope","$rootScope","$stateParams","$location","$route","vnApi","vnProductParams","vnAppRoute","vnContentManager",function(a,b,c,d,e,f,g,h,i,j){b.checkForFacetFilters=function(){return h.getFacetString()?!0:void 0},b.clearAllFilters=function(){h.resetParams(),h.addCategory(b.category.id),b.queryProducts(),b.isMobileAndVisible&&b.toggleSearch()},b.dismissMobileFilters=function(){b.toggleSearch()},b.getCategory=function(a){g.Category().get({slug:a}).$promise.then(function(a){b.category=a.data,h.addCategory(a.data.id),b.queryProducts()})},b.queryProducts=function(){var a=h.getParamsObject();g.Product().get(a).$promise.then(function(a){b.products=a.data,b.facets=a.facets,b.categoryList=a.categories,b.cursor=a.cursor,b.checkFacetsAndCategories(a.categories,a.facets)})},b.toggleSearch=function(){return b.mobileDisplay?(b.mobileDisplay=!1,b.isMobileAndVisible=!1,b.isMobileAndHidden=!0,void j.showAppFooter()):(b.mobileDisplay=!0,b.isMobileAndVisible=!0,b.isMobileAndHidden=!1,void j.hideAppFooter())},b.$on("$destroy",function(){h.resetParams()}),b.$on("$viewContentLoaded",function(){i.setRouteStrategy("category"),b.getCategory(d.slug)})}]),angular.module("Volusion.controllers").controller("ProductCtrl",["$rootScope","$scope","vnApi","$location","$stateParams","$filter","$anchorScroll","$translate","vnCart","vnAppMessageService","vnProduct",function(a,b,c,d,e,f,g,h,i,j,k){function l(){null===k.getProductImage()&&k.setProductNoImage(["/images/theme/tcp-no-image.jpg","/images/theme/tcp-no-image.jpg","/images/theme/tcp-no-image.jpg"]),b.cartItem.options=b.cartItem.options||[],b.itemSelectionsNotInStock=k.findAvailability(),m()}function m(){var a="";b.popoverText="",b.buttonDisabled=!1;var c=k.findRequiredOptionsAreSelected();if(c.length>0){for(var d=0;d<c.length;d++)a+=f("uppercase")(c[d]),d!==c.length-1&&(a+=f("translate")("common.and"));return h("product.addToCartMissing",{missingOptions:a}).then(function(a){b.popoverText=a}),void(b.buttonDisabled=!0)}return k.isSelectionAvailable()?void 0:(b.popoverText=f("translate")("product.addToCartNotInStock"),void(b.buttonDisabled=!0))}b.accordionPanels={isopen1:!0},b.buttonWait=!1,b.carousel={interval:4e3},b.cartItem={},b.itemSelectionsNotInStock=!1,b.product={},b.tabs={relatedProducts:{active:!0},accessories:{active:!1}},c.Product().get({slug:e.slug}).$promise.then(function(c){b.product=k.set(c.data);var e=encodeURIComponent(d.absUrl()),f=encodeURIComponent(b.product.name);a.social={pageTitle:f,pageUrl:e,imageUrl:0!==b.product.imageCollections.length&&0!==b.product.imageCollections[0].images.length?b.product.imageCollections[0].images[0].medium:""},k.setSocialSharing(e,f),k.setEditable(!1),b.cartItem=k.getProductCart(),b.isInDesktopMode=a.isInDesktopMode,angular.extend(a.seo,k.getProductSEO()),l()}).then(function(){b.product.code&&c.Review().get({code:b.product.code}).$promise.then(function(a){b.ratingsAndReviews=a});var a=b.product.categories[0].id;c.Product().get({categoryIds:a,pageNumber:1,pageSize:4}).$promise.then(function(a){b.relatedProducts=a.data}),c.Product().get({accessoriesOf:b.product.code,pageNumber:1,pageSize:4}).$promise.then(function(a){b.accessories=a.data})}),a.$on("VN_PRODUCT_SELECTED",function(a,c){b.product.optionSelection=c}),b.addToCart=function(){k.findRequiredOptionsAreSelected().length>0||!k.findOptionAvailability(b.product.optionSelection.key)||(b.buttonWait=!0,i.saveCart(b.cartItem).then(function(){a.gotoSoftAdd(),b.cartItem.qty=0})["finally"](function(){b.modifyQty(1),b.buttonWait=!1}))},b.modifyQty=function(a){b.cartItem.qty+=a,k.setQuantityInStock(a)},b.postValidateQty=function(){""===b.cartItem.qty&&(b.cartItem.qty=1)},b.getImagePath=function(a){var b=f("vnProductImageFilter")(a);return""===b?"/images/theme/tcp-no-image.jpg":b},b.$watch("product.optionSelection",function(a){function c(){b.cartItem.code=b.product.code,b.cartItem.id=b.product.id}function d(){return a.isValid?((void 0===b.cartItem.qty||0===b.cartItem.qty)&&(b.cartItem.qty=1),void(a.quantityInStock-=b.cartItem.qty)):(b.cartItem.qty=1,a.quantityInStock=0,void(b.product.optionSelection.quantityInStock=0))}void 0!==a&&(c(),d(),k.setProductImage(a.option.selected),m(),b.isAddToCartButtonEnabled=a.isValid&&b.cartItem.qty>0)})}]),angular.module("methodApp").controller("SearchCtrl",["$rootScope","$scope","$stateParams","$location","$window","$filter","vnApi","vnProductParams","vnContentManager","themeSettings","vnAppRoute",function(a,b,c,d,e,f,g,h,i,j,k){b.searchLocal=h.getSearchText(),b.searchTerms=c.q,b.clearAllFilters=function(){h.resetParams(),h.setSort("relevance"),h.updateSearch(c.q),b.minPrice="",b.maxPrice="",b.queryProducts()},b.dismissMobileFilters=function(){b.toggleSearch()},b.initParams=function(){h.setPageSize(j.getPageSize()),c.q?(h.updateSearch(c.q),b.searchTerms=c.q,b.queryProducts()):(b.searchTerms=d.search("q","All Products"),b.queryProducts())},b.queryProducts=function(){var a=h.getParamsObject();g.Product().get(a).$promise.then(function(a){b.products=a.data,b.facets=a.facets,b.categoryList=a.categories,b.cursor=a.cursor,b.checkFacetsAndCategories(a.categories,a.facets),b.searchTerms=h.getSearchText()||"All Products"})},b.searchByPrice=function(a){13===a.which&&(h.setMinPrice(b.minPrice),h.setMaxPrice(b.maxPrice),b.queryProducts())},b.toggleSearch=function(){return b.mobileDisplay?(b.mobileDisplay=!1,b.isMobileAndVisible=!1,b.isMobileAndHidden=!0,void i.showAppFooter()):(b.mobileDisplay=!0,b.isMobileAndVisible=!0,void(b.isMobileAndHidden=i.hideAppFooter()))},b.$on("$destroy",function(){h.resetParams()}),b.$on("$viewContentLoaded",function(){b.initParams(),k.setRouteStrategy("search"),h.preLoadData(c)})}]),angular.module("Volusion.controllers").controller("PageCtrl",["$rootScope","$scope","article",function(a,b,c){b.article=c.data,a.seo=angular.extend(a.seo||{},b.article.seo)}]),angular.module("methodApp").controller("ThemeSettingsCtrl",["$scope","$http","$location","vnContentManager",function(a,b,c,d){var e,f;if(d.hideAppHeader(),d.hideAppFooter(),c.absUrl().indexOf("127.0.0.1")>=0||c.absUrl().indexOf("localhost")>=0)f="dev",e="/settings/themeSettings.json",a.debug=!0;else{f="prod";var g=c.search();e="/api/v1/themes/"+g.themeName+"/versions/"+g.themeVersion+"/settings"}b.get(e).success(function(b){a.settings="dev"===f?b:b.data}),a.addSlide=function(){a.settings.pages.home.slider.slides.push({headline:"",subHeadline:"",imageUrl:"",linksTo:""})},a.save=function(){"dev"===f?(console.info("would be saved if you were in production"),window.alert("would be saved if you were in production, but since you're not:=, simply copy the debug output to your themeSettings.json file manually.")):b.put(e,a.settings).success(function(){console.log("successfully saved")})},a.$on("$destroy",function(){d.showAppHeader(),d.showAppFooter()})}]),angular.module("Volusion.controllers").controller("ShoppingCartCtrl",["$rootScope","$scope","$timeout","$filter","$window","translate","vnCart","notifications",function(a,b,c,d,e,f,g,h){function i(a,c){b.loading=a?!0:!1,g.updateCart().then(function(){void 0!==c&&"function"==typeof c&&c()})}b.cart={},b.cartEmpty=!0,b.calcSubtotal=0,b.coupon={code:"",showApply:!1},b.couponsEmpty=!1,b.loading=!1,b.showGiftOption=!1,b.visualCue=!1,a.isCartOpen=!1,f.addParts("shopping-card"),a.exitCartState=function(){history.back()},b.getCartItemsCount=function(){return g.getCartItemsCount()},b.deleteItem=function(a){b.cart.items=d("filter")(b.cart.items,function(b){return b.id!==a}),i(!0)},b.changeQty=function(a,d,e){a.qty=""===a.qty?1:d,c.cancel(b.debounceUpdateCart),void 0===e?i(!1):b.debounceUpdateCart=c(function(){i(!1)},e)},b.resetGiftOptions=function(){var a=!1;return this.showGiftOption?(b.visualCue=!0,void c(function(){b.visualCue=!1},3e3)):(angular.forEach(b.cart.items,function(b){b.isGiftWrapAvailable&&b.giftWrap.selected&&(b.giftWrap.selected=!1,a=!0)}),void(a&&i(!0)))},b.addGiftWrap=function(){i(!0)},b.addGiftMsg=function(){i(!0)},b.applyCoupon=function(){b.coupon.code.length>0&&(b.cart.discounts=d("filter")(b.cart.discounts,function(a){return a.couponCode!==b.coupon.code}),b.cart.discounts.push({couponCode:b.coupon.code}),i(!0,function(){b.coupon.showApply=!1,b.coupon.code="",0===b.cart.serviceErrors.length&&0===b.cart.warnings.length&&b.togglePromoList(!0)}))},b.deleteCoupon=function(a){b.cart.discounts=d("filter")(b.cart.discounts,function(b){return b.id!==a}),b.couponsEmpty=b.cart.discounts.length>0?!1:!0,i(!0)},a.$on("cartUpdated",function(){if(b.cart=g.getCart(),(b.cart.warnings&&b.cart.warnings.length>0||b.cart.serviceErrors&&b.cart.serviceErrors.length>0)&&(h.displayWarnings(b.cart.warnings),h.displayErrors(b.cart.serviceErrors),a.$emit("vnScroll.cart")),void 0!==b.cart&&(void 0!==b.cart.totals&&(b.calcSubtotal=b.cart.totals.items+b.cart.totals.discounts,b.cartEmpty=b.cart.totals.qty>0?!1:!0),void 0!==b.cart.discounts&&(b.couponsEmpty=b.cart.discounts.length>0?!1:!0),void 0!==b.cart.items))for(var c=0;c<b.cart.items.length;c++)b.cart.items[c].giftWrap.selected&&(b.showGiftOption=!0);b.loading=!1})}]),angular.module("Volusion.services").factory("notifications",["$filter","vnAppMessageService",function(a,b){function c(a,c){b.addMessage({type:a,text:c})}function d(){c("success",a("translate")("message.CART_ADD_SUCCESS"))}function e(){c("success",a("translate")("message.CART_UPDATE_SUCCESS"))}function f(b){if(b&&b.length>0){var d,e,f=a("translate");angular.forEach(b,function(a){e="message."+a.Code,d=f(e),d=d&&d!==e?d:a.Message,c("warning",d)})}}function g(b){if(b&&b.length>0){var d,e,f=a("translate");angular.forEach(b,function(a){e="message."+a.Code,d=f(e),d=d&&d!==e?d:a.Message,d=d||f("message.CART_UNKNOWN"),c("danger",d)})}}return{displaySuccessfulAddition:d,displaySuccessfulUpdate:e,displayWarnings:f,displayErrors:g}}]),angular.module("Volusion.templates",[]).run(["$templateCache",function(a){a.put("views/about.html","<section class=container><p>This is the about view.</p></section>"),a.put("views/article.html",'<article data-ng-cloak class=container data-vn-block=article><header><hgroup><h1 data-vn-element=title data-ng-bind-html="article.title | vnLegacyLinkify | html"></h1><h2 data-vn-element=caption data-ng-bind-html="article.caption | vnLegacyLinkify | html"></h2></hgroup></header><div data-vn-element=body data-ng-bind-html="article.body | vnLegacyLinkify | html"></div></article>'),a.put("views/category.html",'<div class="container categories"><div class=row><div class="col-sm-3 col-lg-2 vn-faceted-search" ng-class="{ isMobileAndVisible: true == isMobileAndVisible }" data-ng-hide=!hasFacetsOrCategories><h3 data-ng-show=!showMobileSearch>Narrow By</h3><div vn-faceted-search categories=categoryList facets=facets data-ng-show=mobileDisplay class=vn-faceted-search-control></div></div><div class="col-sm-9 col-lg-10 vn-category-product-tiles" ng-class="{ \'isMobileAndHidden\': true == !isMobileAndHidden }"><div class=row><div class=col-sm-10><div class=page-header><h1>{{category.name}}</h1></div></div><div vn-sort-search class="col-sm-2 vn-sort-desktop-search" data-ng-show=mobileDisplay query-products=queryProducts()></div></div><div class=row><img class="img-responsive center-block" ng-hide=checkForFacetFilters() ng-src={{category.bannerImgUrl}}><p class="col-sm-12 lead" itemprop=description ng-hide=checkForFacetFilters() data-ng-bind-html="category.description | vnLegacyLinkify | html"></p></div><div class="row mobile-filters" data-ng-hide=mobileDisplay ng-class="{ isMobileAndVisible: true == isMobileAndVisible }"><a class="col-xs-6 text-right" href data-ng-click=toggleSearch()><button class="btn btn-default">Filter</button></a> <span class="col-xs-6 text-left" vn-sort-search query-products=queryProducts()></span></div><div class="row th-product__container"><div class="-product-tile-animation col-sm-6 col-md-4 col-lg-3" data-ng-repeat="product in products track by product.id" data-ng-include=" \'views/partials/product-tile.html\' "></div></div><div class=row data-ng-if="cursor.totalPages > 1"><div class=col-sm-12><div vn-paginator cursor=cursor current-page=currentPage query-fn=queryProducts()></div></div></div></div></div></div>'),a.put("views/contact.html","<section class=container><p>This is the contact view.</p></section>"),a.put("views/home.html",'<div class="container th-content-slider" data-ng-if=themeSettings.pages.home.slider.isEnabled><div class=vn-slider><carousel data-interval=themeSettings.pages.home.slider.interval><slide data-ng-repeat="slide in themeSettings.pages.home.slider.slides" data-active=slide.active><a href={{slide.linksTo}} title="{{slide.headline}} - {{slide.subHeadline}}"><div class=vn-slider__slide data-ng-style="{\'background-image\':\'url({{slide.imageUrl}})\' }"></div></a></slide></carousel></div></div><div class="container th-home-content"><div data-ng-bind-html="themeSettings.pages.home.content1 | vnLegacyLinkify | html"></div><div data-ng-if=themeSettings.pages.home.tiles.isEnabled><div class="visible-xs-block visible-sm-block"><div class=row><div class="col-sm-6 hidden-xs"><a data-ng-href={{themeSettings.pages.home.tiles.tiles.tile1.linkTo}} class="th-promo th-p1"><img ng-src={{themeSettings.pages.home.tiles.tiles.tile1.imageUrl}} class=img-responsive alt=""></a></div><div class=col-sm-6><a data-ng-href={{themeSettings.pages.home.tiles.tiles.tile2.linkTo}} class="th-promo th-p2"><span class=th-title data-translate=home.promoCategoryHeading>Now Stocking Herschel Bags.</span> <span class=th-text data-translate=home.promoCategoryDescription>Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. <span class=th-link data-translate=home.shopNow>Shop Now ></span></span> <img data-ng-src={{themeSettings.pages.home.tiles.tiles.tile2.imageUrl}} class=img-responsive alt=""></a></div></div></div><div class=visible-xs-block><div class=row><div class="col-xs-6 th-p-pad"><a data-ng-href={{themeSettings.pages.home.tiles.tiles.tile1.linkTo}} class="th-promo th-p1-sm"><img ng-src={{themeSettings.pages.home.tiles.tiles.tile1.imageUrl}} class=img-responsive alt=""></a></div><div class="col-xs-6 th-p-pad"><a data-ng-href={{themeSettings.pages.home.tiles.tiles.tile3.linkTo}} class="th-promo th-p3-sm"><img ng-src={{themeSettings.pages.home.tiles.tiles.tile3.imageUrl}} class=img-responsive alt=""></a></div></div></div><div class="visible-xs-block visible-sm-block"><div class=th-last><div class=row><div class="col-sm-6 hidden-xs"><a data-ng-href={{themeSettings.pages.home.tiles.tiles.tile3.linkTo}} class="th-promo th-p3"><img ng-src={{themeSettings.pages.home.tiles.tiles.tile3.imageUrl}} class="img-responsive"></a></div><div class="col-sm-6 th-p-pad"><a data-ng-href={{themeSettings.pages.home.tiles.tiles.tile4.linkTo}} class="th-promo th-b1"><img ng-src={{themeSettings.pages.home.tiles.tiles.tile4.imageUrl}} class=img-responsive alt=""></a> <a data-ng-href={{themeSettings.pages.home.tiles.tiles.tile5.linkTo}} class="th-promo th-b2"><img ng-src={{themeSettings.pages.home.tiles.tiles.tile5.imageUrl}} class=img-responsive alt=""></a> <a data-ng-href={{themeSettings.pages.home.tiles.tiles.tile6.linkTo}} class="th-promo th-b3"><img ng-src={{themeSettings.pages.home.tiles.tiles.tile6.imageUrl}} class=img-responsive alt=""></a></div></div></div></div><div class="visible-md-block visible-lg-block"><div class=row><div class=col-md-4><a data-ng-href={{themeSettings.pages.home.tiles.tiles.tile1.linkTo}} class="th-promo th-p1"><img ng-src={{themeSettings.pages.home.tiles.tiles.tile1.imageUrl}} class=img-responsive alt=""></a></div><div class=col-md-4><a data-ng-href={{themeSettings.pages.home.tiles.tiles.tile2.linkTo}} class="th-promo th-p2"><div class=th-title>Now Stocking Herschel Bags.</div><div class=th-text>Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old.<div class=th-link data-translate=home.shopNow>Shop Now ></div></div><img data-ng-src={{themeSettings.pages.home.tiles.tiles.tile2.imageUrl}} class=img-responsive alt=""></a></div><div class=col-md-4><a data-ng-href={{themeSettings.pages.home.tiles.tiles.tile3.linkTo}} class="th-promo th-p3"><img ng-src={{themeSettings.pages.home.tiles.tiles.tile3.imageUrl}} class=img-responsive alt=""></a></div></div></div><div class="visible-md-block visible-lg-block"><div class=th-last><div class=row><div class=col-md-4><a data-ng-href={{themeSettings.pages.home.tiles.tiles.tile4.linkTo}} class="th-promo th-b1"><img data-ng-src={{themeSettings.pages.home.tiles.tiles.tile4.imageUrl}} class=img-responsive alt=""><span class=th-category>New Sunglasses ></span></a></div><div class=col-md-4><a data-ng-href={{themeSettings.pages.home.tiles.tiles.tile5.linkTo}} class="th-promo th-b2"><img data-ng-src={{themeSettings.pages.home.tiles.tiles.tile5.imageUrl}} class=img-responsive alt=""><span class=th-category>Townsend Shoes ></span></a></div><div class=col-md-4><a data-ng-href={{themeSettings.pages.home.tiles.tiles.tile6.linkTo}} class="th-promo th-b3"><img ng-src={{themeSettings.pages.home.tiles.tiles.tile6.imageUrl}} class=img-responsive alt=""></a></div></div></div></div></div><div data-ng-bind-html="themeSettings.pages.home.content2 | vnLegacyLinkify | html"></div><div data-ng-if=themeSettings.pages.home.featuredProducts.isEnabled><div data-tabset><div data-tab><div data-tab-heading data-translate=home.featured>Featured</div><div class="th-products-wrap clearfix"><div class="col-xs-12 col-sm-3 col-md-3" data-ng-repeat="product in featuredProducts" data-ng-include=" \'views/partials/product-tile.html\' "></div></div></div></div></div><div data-ng-bind-html="themeSettings.pages.home.content3 | vnLegacyLinkify | html"></div></div>'),a.put("views/partials/footer.html",'<div data-ng-controller=FooterCtrl><footer class=th-footer data-ng-show=footerState><div class="hidden-lg th-elist"><div class="hidden-xs th-elist__title">Sign-Up for Our Newsletter</div><form class="form-inline th-elist__form" role=form name=MailingList method=post action=/MailingList_subscribe.asp><div class="form-group th-elist__group"><input type=email name=emailaddress class="form-control th-elist__input" placeholder="Sign-up for promotions"></div><button type=submit class="btn btn-default th-elist__submit">Go</button></form></div><div class="container visible-lg-block th-footer__top"><div class=row><div class=col-md-8><div class=th-footer__site-links><div class=col-md-4><div data-ng-bind-html="themeSettings.general.footer.content.column1 | vnLegacyLinkify | html"></div></div><div class=col-md-4><div data-ng-bind-html="themeSettings.general.footer.content.column2 | vnLegacyLinkify | html"></div></div><div class=col-md-4><div data-ng-bind-html="themeSettings.general.footer.content.column3 | vnLegacyLinkify | html"></div></div></div></div><div class=col-md-4><div class=th-footer__more-info><div class=th-elist ng-if=themeSettings.general.footer.newsletterSignup.isEnabled><div class=th-elist__title>Sign-up for our Newsletter</div><div class=th-elist__text>Get our latest news and exclusive offers</div><form class="form-inline th-elist__form" role=form name=MailingList method=post action=/MailingList_subscribe.asp><div class="form-group th-elist__group"><input type=email name=emailaddress class="form-control th-elist__input" placeholder="Sign-up for promotions"></div><button type=submit class="btn btn-default th-elist__submit">GO</button></form></div><div data-ng-bind-html="themeSettings.general.footer.content.column4 | vnLegacyLinkify | html"></div></div></div></div></div><div class=container><div class="row th-footer__bottom"><div data-ng-bind-html="themeSettings.general.footer.content.bottomRow | vnLegacyLinkify | html"></div></div></div></footer><footer class=th-checkout-footer data-ng-show=checkoutFooterState><div class=container><div class="row th-footer__bottom"><div data-ng-bind-html="themeSettings.general.footer.content.bottomRow | vnLegacyLinkify | html"></div></div></div></footer></div>'),a.put("views/partials/header.html",'<div data-ng-controller=HeaderCtrl><nav class="navbar navbar-default navbar-static-top th-navbar" role=navigation data-ng-show=headerState><div class="container-fluid hidden-xs hidden-sm th-header-top"><div class=container><div class=row><div class="col-md-6 text-left text-uppercase th-header-top__text"><span data-ng-bind-html="themeSettings.general.header.content.topPromo | vnLegacyLinkify | html"></span></div><div class="col-md-6 text-right th-header-top__text"><a data-vn-legacy-link=/login.asp data-translate=header.signIn>Sign In</a></div></div></div></div><div class="container th-menu-container"><div class=row><div class="col-xs-3 hidden-md hidden-lg"><button type=button class=navbar-toggle data-ng-init="navCollapsed = true" snap-toggle=left><span class=sr-only data-translate=header.toggleNavigation>Toggle Navigation</span> <span class=icon-bar></span> <span class=icon-bar></span> <span class=icon-bar></span></button></div><div class="col-md-2 hidden-xs hidden-sm"><div class=th-navbar__logo><a href="/"><img data-ng-src="{{config.general.logoUrl }}"></a></div></div><div class="col-xs-6 hidden-md hidden-lg"><div class=th-navbar__logo><a data-ng-href="/"><img data-ng-src="{{config.general.mobileLogoUrl }}"></a></div></div><div class="col-md-8 hidden-xs hidden-sm"><div vn-nav category-list=""></div></div><div class="col-xs-3 col-md-2"><div class="pull-right th-cart-summary"><div class="hidden-xs hidden-sm th-search-popout"><div vn-search-form search-term=searchLocal allow-collapse=true show-search=showSearchDesktop></div></div><div class=th-my-cart><a href class=th-my-cart__link data-ng-click=gotoSoftAdd()><span class=th-my-cart__text data-translate=header.myCart>My Bag</span> <span class=th-my-cart__number>{{ getCartItemsCount() | number}}</span></a></div></div></div></div></div></nav><nav class=th-checkout-header role=navigation data-ng-show=checkoutHeaderState><a data-ng-href="/"><img data-ng-src="{{config.general.mobileLogoUrl }}"></a></nav></div>'),a.put("views/partials/mobile-menu.html",'<div data-snap-drawer class=th-mobile-menu data-ng-controller=HeaderCtrl><div class="hidden-md hidden-lg th-search"><div vn-search-form search-term=searchLocal allow-collapse=false show-search=showSearchMobile></div></div><div class=th-mobile-menu__list><div vn-nav-mobile></div></div><div class="th-mobile-menu__list th-mobile-menu__list--footer" data-ng-bind-html="themeSettings.general.footer.content.column1 | vnLegacyLinkify | html"></div><div class="th-mobile-menu__list th-mobile-menu__list--footer" data-ng-bind-html="themeSettings.general.footer.content.column2 | vnLegacyLinkify | html"></div><div class="th-mobile-menu__list th-mobile-menu__list--footer" data-ng-bind-html="themeSettings.general.footer.content.column3 | vnLegacyLinkify | html"></div></div>'),a.put("views/partials/product-descriptions.html",'<div data-accordion data-close-others=true><div data-accordion-group data-is-open=accordionPanels.isopen1 data-ng-show=product.descriptions.detail><div data-accordion-heading><span data-translate=product.description>Description</span> <i class="pull-right glyphicon" data-ng-class="{\'glyphicon-chevron-down\': accordionPanels.isopen1, \'glyphicon-chevron-right\': !accordionPanels.isopen1}"></i></div><span class=th-product-description__accordion-text itemprop=description data-ng-bind-html="product.descriptions.detail | vnLegacyLinkify | html"></span></div><div data-accordion-group data-is-open=accordionPanels.isopen2 data-ng-show=product.descriptions.features><div data-accordion-heading><span data-translate=product.features>Features</span> <i class="pull-right glyphicon" data-ng-class="{\'glyphicon-chevron-down\': accordionPanels.isopen2, \'glyphicon-chevron-right\': !accordionPanels.isopen2}"></i></div><span class=th-product-description__accordion-text data-ng-bind-html="product.descriptions.features | vnLegacyLinkify | html"></span></div><div data-accordion-group data-is-open=accordionPanels.isopen3 data-ng-show=product.descriptions.techSpecs><div data-accordion-heading><span data-translate=product.techSpecs>Tech Specs</span> <i class="pull-right glyphicon" data-ng-class="{\'glyphicon-chevron-down\': accordionPanels.isopen3, \'glyphicon-chevron-right\': !accordionPanels.isopen3}"></i></div><span class=th-product-description__accordion-text data-ng-bind-html="product.descriptions.techSpecs | vnLegacyLinkify | html"></span></div><div data-accordion-group data-is-open=accordionPanels.isopen4 data-ng-show=product.descriptions.extendedInfo><div data-accordion-heading><span data-translate=product.extendedInfo>Extended Info</span> <i class="pull-right glyphicon" data-ng-class="{\'glyphicon-chevron-down\': accordionPanels.isopen4, \'glyphicon-chevron-right\': !accordionPanels.isopen4}"></i></div><span class=th-product-description__accordion-text data-ng-bind-html="product.descriptions.extendedInfo | vnLegacyLinkify | html"></span></div></div>'), -a.put("views/partials/product-tile.html",'<div class=th-product><span class="hidden-xs icon-th-product__sale" data-ng-show=product.isOnSale></span> <span class="hidden-xs icon-th-product__new" data-ng-show=product.isNew></span><div class=th-product__image><a data-ng-href="{{ product.url }}"><img vn-product-image product=product default-image=defaultProductImage></a></div><div class=th-product__name><a data-ng-href={{product.url}}>{{product.name}}</a></div><div class=th-product__price><span class=th-price--reg data-ng-show="product.pricing.regularPrice > 0"><span class=th-price data-ng-class="{strike: product.pricing.salePrice > 0}">{{product.pricing.regularPrice | currency}}</span> <span class="th-price-text th-text-left" data-translate=product.regularPriceLabel></span></span> <span class=th-price--now data-ng-show="product.pricing.salePrice > 0"><span class=th-price>{{product.pricing.salePrice | currency}}</span> <span class=th-price-text data-translate=product.nowPriceLabel></span></span></div></div>'),a.put("views/partials/shopping-cart.html",'<div data-vn-shopping-cart class=th-cart><a data-ng-click=exitCartState() class=th-cart__overlay></a><div class=th-cart__panel><div class=th-cart__brand data-ng-if=!isInDesktopMode><button type=button class="navbar-toggle th-cart__brand--search" data-ng-init="navCollapsed = true" data-ng-click=openLeftNav()><span class=sr-only data-translate=header.toggleNavigation>Toggle Navigation</span> <span class=icon-bar></span> <span class=icon-bar></span> <span class=icon-bar></span></button> <img class=th-cart__brand--image data-ng-src="{{ config.general.logoUrl }}" class="img-responsive"><br style="clear: both"></div><div class=th-cart__header><a data-ng-click=exitCartState() class=th-cart__header-back tabindex=-1></a> <span class=th-cart__header-title data-translate=shopping-card.lblYourCart>Your Cart</span></div><div class=th-cart__body data-vn-scroll-top><div class=th-cart__body--overlay data-ng-if=loading vn-busy-animation vn-busy-animation-show="{{ loading }}" vn-busy-animation-size=80px vn-busy-animation-class=th-cart__body--overlay--loader></div><div class=th-alert-container><div data-vn-app-message=""></div></div><div class=th-cart__noitems--label data-translate=shopping-card.lblYourCartIsEmpty data-ng-if=cartEmpty>Your cart is empty</div><div class=th-cart__items data-ng-if=!cartEmpty><div class=th-cart__items--gift><input type=checkbox data-ng-model=showGiftOption data-ng-change=resetGiftOptions() id=showGiftOptionInput><label data-translate=shopping-card.lblGift for=showGiftOptionInput>This is a gift</label></div><div class=th-cart__items__item data-ng-repeat="item in cart.items | reverse"><div class=th-cart__items__item--close><button data-ng-click=deleteItem(item.id)><span></span></button></div><div><a data-ng-href="{{ item.productUrl }}"><img class=th-cart__items__item--image data-ng-src="{{ item.imgUrl }}"></a><div><div class=th-cart__items__item--name><a data-ng-href="{{ item.productUrl }}">{{ item.name }}</a></div><div class=th-cart__items__item--price>{{ item.pricing.unitPrice | currency }}</div><div class=th-cart__items__item--option data-ng-repeat="option in item.options"><span>{{ option.optionText }}</span></div></div><br style="clear: both"></div><div class=inline-block-wrap><div class=th-cart__items__item--qty><div data-vn-block=th-qty-counter class=input-group><span class=input-group-btn><button data-vn-element=btn class="btn btn-default" data-ng-click="changeQty(item, item.qty - 1, 500)" data-ng-disabled="item.qty <= 1 || item.qty === \'\'"><span class="glyphicon glyphicon-minus"></span></button></span> <input data-vn-element=input class=form-control data-ng-model=item.qty data-ng-blur="changeQty(item, item.qty)" data-vn-format-quantity> <span class=input-group-btn><button data-vn-element=btn class="btn btn-default" data-ng-disabled="item.qty === 9999999 || item.qty === \'\'" data-ng-click="changeQty(item, item.qty + 1, 500)"><span class="glyphicon glyphicon-plus"></span></button></span></div></div><div class=th-cart__items__item--subtotal>{{ item.pricing.subtotal | vnCurrency }}</div></div><br style="clear: both"><div class="th-cart__items__item__gift animate-if" data-ng-if="showGiftOption && item.isGiftWrapAvailable"><div class=th-cart__items__item__gift--option data-ng-class="{\'-visual-cue\' : visualCue}"><input type=checkbox data-ng-model=item.giftWrap.selected data-ng-change=addGiftWrap()> <span data-translate=shopping-card.lblGiftOption>Add gift wrap for</span> {{ item.giftWrap.price | currency }}</div><textarea class="th-cart__items__item__gift--message animate-if" maxlength=255 data-vn-auto-grow data-ng-trim=false data-ng-if=item.giftWrap.selected data-ng-model=item.giftWrap.message data-ng-blur=addGiftMsg() placeholder="{{ \'shopping-card.lblGiftMessage\' | translate }}"></textarea><div class=th-cart__items__item__gift--message-count data-ng-if=item.giftWrap.selected><span>{{255 - item.giftWrap.message.length}}</span></div></div></div></div></div><div class=th-cart__footer><div class=th-cart__promo-wrap data-ng-if=!cartEmpty><div class=th-cart__promo-add><input class="form-control th-cart__promo-add__input" maxlength=25 data-ng-model=coupon.code data-ng-focus=toggleApplyBtn(true) data-ng-blur=toggleApplyBtn(false) data-ng-keypress=promoInputKeypress($event) placeholder="{{ \'shopping-card.lblAddCoupon\' | translate }}"> <button class="btn btn-primary th-cart__promo-add__apply" data-translate=shopping-card.btnApply data-ng-click=applyCoupon() data-ng-class="{\'th-cart__promo-add__apply--active\': coupon.showApply == true}">Apply</button></div><div class=th-cart__promo-summary data-ng-if=!couponsEmpty data-ng-click=togglePromoList() data-ng-class="{\'th-cart__promo-summary--active\': showPromoList == true}"><span class=th-cart__promo-summary__arrow><span class="glyphicon glyphicon-chevron-down" aria-hidden=true></span></span> <span class=th-cart__promo-summary__count><span class=th-cart__promo-summary__count-number>{{cart.discounts.length | number}}</span>  <span data-ng-if="cart.discounts.length === 1" data-translate=shopping-card.lblPromoApplied>promo applied</span> <span data-ng-if="cart.discounts.length > 1" data-translate=shopping-card.lblPromosApplied>promos applied</span></span> <span class=th-cart__promo-summary__total>{{ cart.totals.discounts | vnCurrency }}</span></div><div class=th-cart__promo-list data-ng-class="{\'th-cart__promo-list--active\': showPromoList == true}" data-ng-if=!couponsEmpty><div class="th-cart__promo inline-block-wrap" data-ng-repeat="coupon in cart.discounts | reverse:orderBy:\'couponCode\'" data-ng-class="{\'-last\': $last}"><div class=th-cart__promo--left><div class=th-cart__promo__close data-ng-if="coupon.couponCode !== \'\'"><button data-ng-click="deleteCoupon(\'{{coupon.id}}\')"><span></span></button></div><div class=th-cart__promo__name><span>{{ coupon.name }}</span></div></div><div class=th-cart__promo--right><div class=th-cart__promo__value><span>{{ coupon.value | vnCurrency }}</span></div></div></div><br style="clear: both"></div></div><div class=th-cart__subtotal data-ng-if=!cartEmpty><div class=th-cart__subtotal--label data-translate=shopping-card.lblSubtotal>Subtotal</div><div class=th-cart__subtotal--price>{{ calcSubtotal | currency }}</div><br style="clear: both"></div><div class=th-cart__checkout><a href=/login class="th-cart__checkout-button btn btn-primary" data-translate=shopping-card.btnCheckout data-ng-disabled=cartEmpty>Checkout</a></div></div></div></div>'),a.put("views/partials/social-sharing.html","<a href={{product.sharing.facebook}} class=\"th-social__icon icon-th-social__icon--facebook\" target=_blank></a> <a href={{product.sharing.twitter}} class=\"th-social__icon icon-th-social__icon--twitter\" target=_blank></a> <a href={{product.sharing.tumblr}} class=\"th-social__icon icon-th-social__icon--tumblr\" target=_blank></a> <a href=\"javascript:void((function()%7Bvar%20e=document.createElement('script');e.setAttribute('type','text/javascript');e.setAttribute('charset','UTF-8');e.setAttribute('src','http://assets.pinterest.com/js/pinmarklet.js?r='+Math.random()*99999999);document.body.appendChild(e)%7D)());\" class=\"th-social__icon icon-th-social__icon--pinterest\" target=_blank></a> <a href={{product.sharing.googlePlus}} class=\"th-social__icon icon-th-social__icon--google\" target=_blank></a>"),a.put("views/product.html",'<div class=container itemscope itemtype=http://schema.org/Product><div class=row><div class="col-sm-12 visible-sm-block th-product-details__title"><span itemprop=name data-ng-bind=product.name></span></div></div><div class=row><div class="col-sm-6 col-md-5"><div class="visible-xs-block th-product"><div class="vn-slider vn-slider--product"><carousel data-interval=carousel.interval><slide data-ng-repeat="image in product.currentImageCollection | filter: \'!youtube.com\'" data-active=image.active><div class=vn-slider__slide><img itemprop=image data-ng-src="{{ image.medium }}" class="img-responsive"></div></slide></carousel></div></div><div class=hidden-xs><div class="clearfix th-product-view vn-zoom"><img vn-easy-zoom ng-src=product.image.medium ez-zoom-src=product.image.large ez-adjacent=isInDesktopMode ez-overlay=!isInDesktopMode alt={{product.name}}><div class=th-product-view__alts><span data-ng-click="product.image=image" ng-repeat="image in product.currentImageCollection | filter: \'!youtube.com\'" class="col-xs-3 th-product-view__thumbnail"><img data-ng-src="{{ image.medium }}" class=img-responsive alt=""></span></div></div></div></div><div class="col-sm-6 col-md-7 th-product-details"><div class="row visible-md-block visible-lg-block"><div class="col-xs-12 th-product-details__title"><h1 itemprop=name data-ng-bind=product.name></h1></div></div><div class=row><div class="col-xs-12 col-md-6"><div class="th-product-details__title visible-xs-block"><span itemprop=name data-ng-bind=product.name></span></div><div class=th-product__price--large><span class=th-price--reg data-ng-show="product.pricing.regularPrice > 0"><span class=th-price data-ng-class="{strike: product.pricing.salePrice > 0}"><span itemprop=price data-ng-bind="product.pricing.regularPrice | currency"></span></span> <span class=th-price-text data-translate=product.regularPriceLabel>Reg</span></span> <span class=th-price--now itemscope itemtype=http://schema.org/Offer data-ng-show="product.pricing.salePrice > 0"><span class=th-price><span itemprop=price data-ng-bind="product.pricing.salePrice | currency"></span></span> <span class=th-price-text data-translate=product.nowPriceLabel>Now</span></span></div><div class="hidden-xs th-write-review" data-ng-if=product.avgRating><div data-vn-rating rating-value=product.avgRating editable=isEditable></div></div><div class=th-product__availability data-ng-if=itemSelectionsNotInStock data-ng-cloak>Not in stock</div></div><div class="col-xs-12 col-md-6"><div class=th-product-details__options><div data-vn-product-option data-ng-repeat="option in product.options" data-option=option data-product=product data-save-to=cartItem.options></div></div><div class=row><div class="col-xs-12 col-sm-4 th-qty-wrap"><div data-vn-block=th-qty-counter class=input-group><span class=input-group-btn><button data-vn-element=btn class="btn btn-default" data-ng-click=modifyQty(-1) data-ng-disabled="cartItem.qty <= 1 || cartItem.qty === \'\'"><span class="glyphicon glyphicon-minus"></span></button></span> <input data-vn-element=input class=form-control data-ng-model=cartItem.qty data-ng-blur=postValidateQty() data-vn-format-quantity> <span class=input-group-btn><button data-vn-element=btn class="btn btn-default" data-ng-click=modifyQty(1) data-ng-disabled="cartItem.qty === 9999999 || cartItem.qty === \'\'"><span class="glyphicon glyphicon-plus"></span></button></span></div></div><div class="col-xs-12 col-sm-8 th-product-details__add-to-cart"><button class="btn btn-primary btn-lg btn-block" data-ng-class="{ \'-disabled\' : buttonDisabled }" data-ng-click=addToCart() data-popover="{{ popoverText }}" data-popover-placement=bottom data-analytics-category="element click" data-analytics-label="Add to Cart" data-analytics-location=body-product data-analytics-description="Add to Cart Button" vn-busy-animation vn-busy-animation-show="{{ buttonWait }}" vn-busy-animation-class=th-product-details__add-to-cart--loader><span data-ng-if=!buttonWait data-translate=product.addToCart>Add to Cart</span></button></div></div></div><div class="hidden-xs hidden-sm col-md-12 th-product-description" data-ng-include=" \'views/partials/product-descriptions.html\' "></div><div class="hidden-xs col-sm-12 th-social" data-ng-include=" \'views/partials/social-sharing.html\' "></div></div></div></div><div class="row hidden-md hidden-lg"><div class="col-sm-12 th-product-description" data-ng-include=" \'views/partials/product-descriptions.html\' "></div></div><div class=row><div class="th-social col-xs-12 visible-xs-block" data-ng-include=" \'views/partials/social-sharing.html\' "></div></div><div class=row data-ng-if="relatedProducts.length > 0 || accessories.length > 0"><div class="col-xs-12 th-related-wrap"><div data-tabset><div data-tab data-ng-if="relatedProducts.length > 0" data-active=tabs.relatedProducts.active><div data-tab-heading data-translate=product.related>Related</div><div class="th-products-wrap clearfix"><div class="col-xs-12 col-sm-3 col-md-3" data-ng-repeat="product in relatedProducts | filter: \'!\' + product.id" data-ng-include=" \'views/partials/product-tile.html\' "></div></div></div><div data-tab data-ng-if="accessories.length > 0" data-active=tabs.accessories.active><div data-tab-heading data-translate=product.accessories>Accessories</div><div class="th-products-wrap clearfix"><div class="col-xs-12 col-sm-3 col-md-3" data-ng-repeat="product in accessories" data-ng-include=" \'views/partials/product-tile.html\' "></div></div></div></div></div></div><div class="row th-reviews" data-ng-if=config.general.enableCustomerReviews><div class="col-xs-12 th-reviews__totals"><div class=th-reviews__heading data-translate=product.reviews>Reviews</div><div class=th-reviews__totals--left data-ng-if="ratingsAndReviews.data.reviews.length < 1">Be the first to review!</div><div class=th-reviews__totals--left data-ng-if="ratingsAndReviews.data.reviews.length > 0"><div itemprop=aggregateRating itemscope itemtype=http://schema.org/AggregateRating class=th-reviews__count><meta itemprop=worstRating content=1>This product has received <span itemprop=ratingValue data-ng-bind=ratingsAndReviews.data.avgRating></span> out of <span itemprop=bestRating data-ng-bind=ratingsAndReviews.data.maxRating></span> stars based on <span itemprop=reviewCount data-ng-bind=ratingsAndReviews.cursor.total></span> customer reviews</div><div class=th-reviews__avg><div data-vn-rating rating-value=ratingsAndReviews.data.avgRating maximum=ratingsAndReviews.data.maxRating editable=isEditable></div></div></div><div class=th-reviews__totals--right><a legacy-link="/reviewnew.asp?productcode={{product.code}}" class="btn btn-default btn-grey-sm" data-translate=product.writeAReview>Write a Review ></a></div></div></div><div class="row th-reviews" data-ng-if=config.general.enableCustomerReviews><div data-ng-if="ratingsAndReviews.data.reviews.length > 0" class="col-md-6 th-reviews" itemprop=review itemscope itemtype=http://schema.org/Review data-ng-repeat="review in ratingsAndReviews.data.reviews"><div class=th-reviews__helpful><span data-ng-bind=review.helpful></span> people found the following review helpful</div><div class=th-reviews__ratings><div class=th-reviews__star-group data-vn-rating rating-value=review.rating maximum=ratingsAndReviews.data.maxRating editable=isEditable></div><span class=th-rating-text itemprop=reviewRating itemscope itemtype=http://schema.org/Rating><meta itemprop=worstRating content=1><span itemprop=ratingValue data-ng-bind=review.rating></span> out of <span itemprop=bestRating data-ng-bind=ratingsAndReviews.data.maxRating></span></span> By <span itemprop=author class=th-review__ratings__author data-ng-bind="review.nameOfReviewer || \'Anonymous\'"></span> <span itemprop=datePublished class="th-rating-date hidden-xs pull-right" data-ng-bind=review.date></span></div><div itemprop=name class=th-reviews__title data-ng-bind=review.title></div><div itemprop=description class=th-rating-description data-ng-bind=review.body></div><div class=th-reviews__helpful><span data-translate=product.wasThisReviewHelpfulToYou>Was this review helpful for you?</span> <a legacy-link="/reviewhelpful.asp?ProductCode={{product.code}}&ID={{review.id}}&yes=yes" class="btn btn-default btn-grey-sm" data-translate=common.yes>Yes</a> <a legacy-link="/reviewhelpful.asp?ProductCode={{product.code}}&ID={{review.id}}&yes=no" class="btn btn-default btn-grey-sm" data-translate=common.no>No</a></div></div></div></div>'),a.put("views/search.html",'<div class="container categories"><div class=row><div class="col-sm-3 col-lg-2 vn-faceted-search" ng-class="{ isMobileAndVisible: true == isMobileAndVisible }" data-ng-hide=!hasFacetsOrCategories><h3 data-ng-show=!showMobileSearch>Narrow By</h3><div vn-faceted-search categories=categoryList facets=facets data-ng-show=mobileDisplay class=vn-faceted-search-control></div></div><div class="col-sm-9 col-lg-10 vn-category-product-tiles" ng-class="{ \'isMobileAndHidden\': true == !isMobileAndHidden }"><div class=row><div class=col-sm-10><div class=page-header><h1><span ng-if="products.length > 1">{{cursor.total}} results for <ins>{{searchTerms}}</ins></span> <span ng-if="products.length < 1">No results for <ins>{{searchTerms}}</ins></span> <span ng-if="products.length === 1">1 result for <ins>{{searchTerms}}</ins></span></h1></div></div><div vn-sort-search class="col-sm-2 vn-sort-desktop-search" data-ng-show=mobileDisplay query-products=queryProducts() ng-if="products.length > 0"></div></div><div class="row mobile-filters" data-ng-hide=mobileDisplay ng-class="{ isMobileAndVisible: true == isMobileAndVisible }"><a class="col-xs-6 text-right" href data-ng-click=toggleSearch()><button class="btn btn-default">Filter</button></a> <span class="col-xs-6 text-left" vn-sort-search query-products=queryProducts()></span></div><div class="row th-product__container"><div class="-product-tile-animation col-sm-6 col-md-4 col-lg-3" data-ng-repeat="product in products track by product.id" data-ng-include=" \'views/partials/product-tile.html\' "></div></div><div class=row data-ng-if="cursor.totalPages > 1"><div class=col-sm-12><div vn-paginator cursor=cursor current-page=currentPage query-fn=queryProducts() ng-if="products.length > 0"></div></div></div></div></div></div>'),a.put("views/server-error.html",'<div class="th-error-wrap clearfix"><div class=th-error-details><div class="th-error-details__header modal-header"><h1 data-translate=message.SERVER_ERROR_HEADING></h1><div class=modal-body><p class=th-error-details__section1 data-translate=message.SERVER_ERROR_SECTION1></p><p class=th-error-details__section2 data-translate=message.SERVER_ERROR_SECTION2></p></div><div class=modal-footer><button class="btn btn-warning" ng-click=$close()>Close</button></div></div></div></div>'),a.put("views/style-guide.html",'<section class=container><div class=jumbotron><h1>Hello, world!</h1><p>This is a template for a simple marketing or informational website. It includes a large callout called a jumbotron and three supporting pieces of content. Use it as a starting point to create something more unique.</p><p><a href=# class="btn btn-primary btn-lg" role=button><span>Learn More</span> »</a></p></div><div class=page-header><h1>Buttons</h1></div><p><button type=button class="btn btn-lg btn-default">Default</button> <button type=button class="btn btn-lg btn-primary">Primary</button> <button type=button class="btn btn-lg btn-success">Success</button> <button type=button class="btn btn-lg btn-info">Info</button> <button type=button class="btn btn-lg btn-warning">Warning</button> <button type=button class="btn btn-lg btn-danger">Danger</button> <button type=button class="btn btn-lg btn-link">Link</button></p><p><button type=button class="btn btn-default">Default</button> <button type=button class="btn btn-primary">Primary</button> <button type=button class="btn btn-success">Success</button> <button type=button class="btn btn-info">Info</button> <button type=button class="btn btn-warning">Warning</button> <button type=button class="btn btn-danger">Danger</button> <button type=button class="btn btn-link">Link</button></p><p><button type=button class="btn btn-sm btn-default">Default</button> <button type=button class="btn btn-sm btn-primary">Primary</button> <button type=button class="btn btn-sm btn-success">Success</button> <button type=button class="btn btn-sm btn-info">Info</button> <button type=button class="btn btn-sm btn-warning">Warning</button> <button type=button class="btn btn-sm btn-danger">Danger</button> <button type=button class="btn btn-sm btn-link">Link</button></p><p><button type=button class="btn btn-xs btn-default">Default</button> <button type=button class="btn btn-xs btn-primary">Primary</button> <button type=button class="btn btn-xs btn-success">Success</button> <button type=button class="btn btn-xs btn-info">Info</button> <button type=button class="btn btn-xs btn-warning">Warning</button> <button type=button class="btn btn-xs btn-danger">Danger</button> <button type=button class="btn btn-xs btn-link">Link</button></p><div class=page-header><h1>Thumbnails</h1></div><img src=holder.js/200x200 class=img-thumbnail alt=200x200 style="width: 200px; height: 200px" src=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAYAAACtWK6eAAAG/ElEQVR4Xu3ZvU8UDQCE8UVQYmFhwUdCRWylNCT++1Y0hM7YkRja62hAwOwla+69yPHuiCFxflTq3WRvntmH3T23FovFw+AHAQR+S2CLIM4MBB4nQBBnBwIbCBDE6YEAQZwDCGQEXEEyblIlBAhSMrSaGQGCZNykSggQpGRoNTMCBMm4SZUQIEjJ0GpmBAiScZMqIUCQkqHVzAgQJOMmVUKAICVDq5kRIEjGTaqEAEFKhlYzI0CQjJtUCQGClAytZkaAIBk3qRICBCkZWs2MAEEyblIlBAhSMrSaGQGCZNykSggQpGRoNTMCBMm4SZUQIEjJ0GpmBAiScZMqIUCQkqHVzAgQJOMmVUKAICVDq5kRIEjGTaqEAEFKhlYzI0CQjJtUCQGClAytZkaAIBk3qRICBCkZWs2MAEEyblIlBAhSMrSaGQGCZNykSggQpGRoNTMCBMm4SZUQIEjJ0GpmBAiScZMqIUCQkqHVzAgQJOMmVUKAICVDq5kRIEjGTaqEAEFKhlYzI0CQjJtUCQGClAytZkaAIBk3qRICBCkZWs2MAEEyblIlBAhSMrSaGQGCZNykSggQpGRoNTMCBMm4SZUQIEjJ0GpmBAiScZMqIUCQkqHVzAgQJOMmVUKAICVDq5kRIEjGTaqEAEFKhlYzI0CQjJtUCQGClAytZkaAIBk3qRICBCkZWs2MAEEyblIlBAhSMrSaGQGCZNykSggQpGRoNTMCBMm4SZUQIEjJ0GpmBAiScZMqIUCQkqHVzAgQJOMmVUKAICVDq5kRIEjGTaqEAEFKhlYzI0CQjJtUCQGClAytZkaAIBk3qRICBCkZWs2MAEEyblIlBAhSMrSaGQGCZNykSggQpGRoNTMCBMm4SZUQIEjJ0GpmBAiScZMqIUCQkqHVzAgQJOMmVUKAICVDq5kRIMhMbufn58NisfiVOj4+Hj58+LD8+/jvFxcXw/39/bC1tTV8/vx5ePv27ZOvPfURXuKYT32mltcJMmPpr1+/DldXV8MkxXTifvz4cdjf3x/Ozs6GV69eDZ8+fVr++e7ubjg9PR22t7cffe3169cbP8FLHHMGkn/+rQT5g4m/f/8+fPv2bTg4OBiOjo6WV4+9vb3h5ORkmE7sUZ43b948+trh4eGsT/ASx5z1Af+xNxPkDwZd/e0+SjDKMl1dphN5/Pum196/f7+U5+HhYXlLtru7u7zaXF9fD6Nc6wI9xzGnW8I/qF4TJUg49Y8fP4YvX74snzfGE/vy8vI/t1+rv+l3dnYefW31ajNeidbfu/rxnvOYYe26GEHCyafnj+mKsf6sMEeQUbLpqjF+nHfv3i2fXdZ/nvOYYe26GEGCyScZxt/44xVg/Fm9pRpvYf7vLdbvvgHbdGv1nMcMqtdFCDJz8unEX/8tv3rFWH9Iv729/fUwv/7a+Iwx3TqN33aNf56eR6aviP/GMWfWrn07QWZMP53I49e367/lp9uk5Gve1a+LJ5kmAf/WMWfUrn4rQWbMP91arUem257Vk3n9Pwofe+13V4fVZ42bm5vlA/5zHnNG5fq3EqT+FABgEwGCOD8Q2ECAIE4PBAjiHEAgI+AKknGTKiFAkJKh1cwIECTjJlVCgCAlQ6uZESBIxk2qhABBSoZWMyNAkIybVAkBgpQMrWZGgCAZN6kSAgQpGVrNjABBMm5SJQQIUjK0mhkBgmTcpEoIEKRkaDUzAgTJuEmVECBIydBqZgQIknGTKiFAkJKh1cwIECTjJlVCgCAlQ6uZESBIxk2qhABBSoZWMyNAkIybVAkBgpQMrWZGgCAZN6kSAgQpGVrNjABBMm5SJQQIUjK0mhkBgmTcpEoIEKRkaDUzAgTJuEmVECBIydBqZgQIknGTKiFAkJKh1cwIECTjJlVCgCAlQ6uZESBIxk2qhABBSoZWMyNAkIybVAkBgpQMrWZGgCAZN6kSAgQpGVrNjABBMm5SJQQIUjK0mhkBgmTcpEoIEKRkaDUzAgTJuEmVECBIydBqZgQIknGTKiFAkJKh1cwIECTjJlVCgCAlQ6uZESBIxk2qhABBSoZWMyNAkIybVAkBgpQMrWZGgCAZN6kSAgQpGVrNjABBMm5SJQQIUjK0mhkBgmTcpEoIEKRkaDUzAgTJuEmVECBIydBqZgQIknGTKiFAkJKh1cwIECTjJlVCgCAlQ6uZESBIxk2qhABBSoZWMyNAkIybVAkBgpQMrWZGgCAZN6kSAgQpGVrNjABBMm5SJQQIUjK0mhkBgmTcpEoIEKRkaDUzAgTJuEmVECBIydBqZgQIknGTKiFAkJKh1cwIECTjJlVCgCAlQ6uZESBIxk2qhABBSoZWMyNAkIybVAkBgpQMrWZGgCAZN6kSAgQpGVrNjABBMm5SJQR+AvP6XRytYjPeAAAAAElFTkSuQmCC><div class=page-header><h1>Dropdown menus</h1></div><div class="dropdown theme-dropdown clearfix"><a id=dropdownMenu1 href=# role=button class="sr-only dropdown-toggle" toggle=dropdown>Dropdown <b class=caret></b></a><ul class=dropdown-menu role=menu aria-labelledby=dropdownMenu1><li class=active role=presentation><a role=menuitem tabindex=-1 href=#>Action</a></li><li role=presentation><a role=menuitem tabindex=-1 href=#>Another action</a></li><li role=presentation><a role=menuitem tabindex=-1 href=#>Something else here</a></li><li role=presentation class=divider></li><li role=presentation><a role=menuitem tabindex=-1 href=#>Separated link</a></li></ul></div><div class=page-header><h1>Navbars</h1></div><div class="navbar navbar-default"><div class=container><div class=navbar-header><button type=button class=navbar-toggle toggle=collapse target=.navbar-collapse><span class=sr-only>Toggle navigation</span> <span class=icon-bar></span> <span class=icon-bar></span> <span class=icon-bar></span></button> <a class=navbar-brand href=#>Project name</a></div><div class="navbar-collapse collapse"><ul class="nav navbar-nav"><li class=active><a href=#>Home</a></li><li><a href=#about>About</a></li><li><a href=#contact>Contact</a></li><li class=dropdown><a href=# class=dropdown-toggle toggle=dropdown>Dropdown <b class=caret></b></a><ul class=dropdown-menu><li><a href=#>Action</a></li><li><a href=#>Another action</a></li><li><a href=#>Something else here</a></li><li class=divider></li><li class=dropdown-header>Nav header</li><li><a href=#>Separated link</a></li><li><a href=#>One more separated link</a></li></ul></li></ul></div></div></div><div class="navbar navbar-inverse"><div class=container><div class=navbar-header><button type=button class=navbar-toggle toggle=collapse target=.navbar-collapse><span class=sr-only>Toggle navigation</span> <span class=icon-bar></span> <span class=icon-bar></span> <span class=icon-bar></span></button> <a class=navbar-brand href=#>Project name</a></div><div class="navbar-collapse collapse"><ul class="nav navbar-nav"><li class=active><a href=#>Home</a></li><li><a href=#about>About</a></li><li><a href=#contact>Contact</a></li><li class=dropdown><a href=# class=dropdown-toggle toggle=dropdown>Dropdown <b class=caret></b></a><ul class=dropdown-menu><li><a href=#>Action</a></li><li><a href=#>Another action</a></li><li><a href=#>Something else here</a></li><li class=divider></li><li class=dropdown-header>Nav header</li><li><a href=#>Separated link</a></li><li><a href=#>One more separated link</a></li></ul></li></ul></div></div></div><div class=page-header><h1>Alerts</h1></div><div class="alert alert-success"><strong>Well done!</strong> You successfully read this important alert message.</div><div class="alert alert-info"><strong>Heads up!</strong> This alert needs your attention, but it\'s not super important.</div><div class="alert alert-warning"><strong>Warning!</strong> Best check yo self, you\'re not looking too good.</div><div class="alert alert-danger"><strong>Oh snap!</strong> Change a few things up and try submitting again.</div><div class=page-header><h1>Progress bars</h1></div><div class=progress><div class=progress-bar role=progressbar aria-valuenow=60 aria-valuemin=0 aria-valuemax=100 style="width: 60%"><span class=sr-only>60% Complete</span></div></div><div class=progress><div class="progress-bar progress-bar-success" role=progressbar aria-valuenow=40 aria-valuemin=0 aria-valuemax=100 style="width: 40%"><span class=sr-only>40% Complete (success)</span></div></div><div class=progress><div class="progress-bar progress-bar-info" role=progressbar aria-valuenow=20 aria-valuemin=0 aria-valuemax=100 style="width: 20%"><span class=sr-only>20% Complete</span></div></div><div class=progress><div class="progress-bar progress-bar-warning" role=progressbar aria-valuenow=60 aria-valuemin=0 aria-valuemax=100 style="width: 60%"><span class=sr-only>60% Complete (warning)</span></div></div><div class=progress><div class="progress-bar progress-bar-danger" role=progressbar aria-valuenow=80 aria-valuemin=0 aria-valuemax=100 style="width: 80%"><span class=sr-only>80% Complete (danger)</span></div></div><div class=progress><div class="progress-bar progress-bar-success" style="width: 35%"><span class=sr-only>35% Complete (success)</span></div><div class="progress-bar progress-bar-warning" style="width: 20%"><span class=sr-only>20% Complete (warning)</span></div><div class="progress-bar progress-bar-danger" style="width: 10%"><span class=sr-only>10% Complete (danger)</span></div></div><div class=page-header><h1>List groups</h1></div><div class=row><div class=col-sm-4><ul class=list-group><li class=list-group-item>Cras justo odio</li><li class=list-group-item>Dapibus ac facilisis in</li><li class=list-group-item>Morbi leo risus</li><li class=list-group-item>Porta ac consectetur ac</li><li class=list-group-item>Vestibulum at eros</li></ul></div><div class=col-sm-4><div class=list-group><a href=# class="list-group-item active">Cras justo odio</a> <a href=# class=list-group-item>Dapibus ac facilisis in</a> <a href=# class=list-group-item>Morbi leo risus</a> <a href=# class=list-group-item>Porta ac consectetur ac</a> <a href=# class=list-group-item>Vestibulum at eros</a></div></div><div class=col-sm-4><div class=list-group><a href=# class="list-group-item active"><h4 class=list-group-item-heading>List group item heading</h4><p class=list-group-item-text>Donec id elit non mi porta gravida at eget metus. Maecenas sed diam eget risus varius blandit.</p></a> <a href=# class=list-group-item><h4 class=list-group-item-heading>List group item heading</h4><p class=list-group-item-text>Donec id elit non mi porta gravida at eget metus. Maecenas sed diam eget risus varius blandit.</p></a> <a href=# class=list-group-item><h4 class=list-group-item-heading>List group item heading</h4><p class=list-group-item-text>Donec id elit non mi porta gravida at eget metus. Maecenas sed diam eget risus varius blandit.</p></a></div></div></div><div class=page-header><h1>Panels</h1></div><div class=row><div class=col-sm-4><div class="panel panel-default"><div class=panel-heading><h3 class=panel-title>Panel title</h3></div><div class=panel-body>Panel content</div></div><div class="panel panel-primary"><div class=panel-heading><h3 class=panel-title>Panel title</h3></div><div class=panel-body>Panel content</div></div></div><div class=col-sm-4><div class="panel panel-success"><div class=panel-heading><h3 class=panel-title>Panel title</h3></div><div class=panel-body>Panel content</div></div><div class="panel panel-info"><div class=panel-heading><h3 class=panel-title>Panel title</h3></div><div class=panel-body>Panel content</div></div></div><div class=col-sm-4><div class="panel panel-warning"><div class=panel-heading><h3 class=panel-title>Panel title</h3></div><div class=panel-body>Panel content</div></div><div class="panel panel-danger"><div class=panel-heading><h3 class=panel-title>Panel title</h3></div><div class=panel-body>Panel content</div></div></div></div><div class=page-header><h1>Wells</h1></div><div class=well><p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas sed diam eget risus varius blandit sit amet non magna. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Cras mattis consectetur purus sit amet fermentum. Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Aenean lacinia bibendum nulla sed consectetur.</p></div></section>'),a.put("views/theme-settings.html",'<link href=//maxcdn.bootstrapcdn.com/font-awesome/4.1.0/css/font-awesome.min.css rel=stylesheet><style>.tab-content {\n padding-top:10px;\n}</style><section class=container><div><form><h1>Theme Settings</h1><div data-tabset><div data-tab><div data-tab-heading>General</div><h3>Header Content</h3><div class=form-group><label class=control-label>Promo</label><div data-text-angular ng-model=settings.general.header.content.topPromo></div></div><h3>Footer Content</h3><div class=form-group><label class=control-label>Column 1</label><div data-text-angular ng-model=settings.general.footer.content.column1></div></div><div class=form-group><label class=control-label>Column 2</label><div data-text-angular ng-model=settings.general.footer.content.column2></div></div><div class=form-group><label class=control-label>Column 3</label><div data-text-angular ng-model=settings.general.footer.content.column3></div></div><div class=form-group><label class=control-label>Column 4</label><div data-text-angular ng-model=settings.general.footer.content.column4></div></div><div class=form-group><label class=control-label>Bottom Row</label><div data-text-angular ng-model=settings.general.footer.content.bottomRow></div></div></div><div data-tab><div data-tab-heading>Home</div><h3>Content</h3><div class=form-group><label class=control-label>Content 1</label><textarea class=form-control data-ng-model=settings.pages.home.content1></textarea></div><div class=form-group><label class=control-label>Content 2</label><textarea class=form-control data-ng-model=settings.pages.home.content2></textarea></div><div class=form-group><label class=control-label>Content 3</label><textarea class=form-control data-ng-model=settings.pages.home.content3></textarea></div><input type=checkbox data-ng-model=settings.pages.home.featuredProducts.isEnabled> Display Featured Products<h3>Content Tiles</h3><input type=checkbox data-ng-model=settings.pages.home.tiles.isEnabled> Display Content Tiles<div data-tabset><div data-tab data-ng-repeat="(key, obj) in settings.pages.home.tiles.tiles"><div data-tab-heading>{{$index}}</div><div class=form-group><label class=control-label>Image Url</label><input class=form-control data-ng-model="settings.pages.home.tiles.tiles[key].imageUrl"></div><div class=form-group><label class=control-label>Link To</label><input class=form-control data-ng-model="settings.pages.home.tiles.tiles[key].linkTo"></div></div></div><h3>Home Page Slideshow</h3><input type=checkbox data-ng-model=settings.pages.home.slider.isEnabled> Display Slide Show<br><br><div data-tabset><button type=button class="btn btn-info" data-ng-click=addSlide()>Add Slide</button><div data-tab data-ng-repeat="slide in settings.pages.home.slider.slides"><div data-tab-heading>Slide {{$index + 1}}    <span class="glyphicon glyphicon-remove" data-ng-click="settings.slider.slides.splice($index, 1)"></span></div><div><div class=form-group><label class=control-label>Headline</label><input class=form-control data-ng-model="slide.headline"></div><div class=form-group><label class=control-label>Image Url</label><input class=form-control data-ng-model="slide.imageUrl"></div><div class=form-group><label class=control-label>Sub Headline</label><input class=form-control data-ng-model="slide.subHeadline"></div><div class=form-group><label class=control-label>Links To</label><input class=form-control data-ng-model="slide.linksTo"></div></div></div></div></div><div data-tab><div data-tab-heading>Category</div>TODO</div></div><hr><div class=form-group><button class="btn btn-primary" data-ng-click=save()>Save</button></div></form></div><style>.debugPanel {\n position:absolute;\n right:0;\n top:0;\n width:500px;\n padding:10px;\n background-color:#ff7e47;\n }\n body {\n margin-right:500px;\n }</style><div class=debugPanel data-ng-show=debug><h1>Debug</h1><span class="pull-right glyphicon glyphicon-remove" data-ng-click="debug = false"></span><p>We\'ve detected you\'re running locally, so only you see this debug window. Watch your theme settings json model change in real time.</p><div><textarea style=width:100% rows=50>{{settings | json}}</textarea></div></div><div data-ng-hide=debug><span class="pull-right glyphicon glyphicon-add" data-ng-click="debug = false"></span></div></section>'); - -}]); \ No newline at end of file diff --git a/settings/themeInfo.json b/settings/themeInfo.json index df65b3f7..6cbccad2 100644 --- a/settings/themeInfo.json +++ b/settings/themeInfo.json @@ -1,7 +1,7 @@ { "name": "Method", - "version": "1.0.13", - "source": "https://github.com/volusion-angular-themes/method/archive/v1.0.13.zip", + "version": "1.0.16", + "source": "https://github.com/volusion-angular-themes/method/archive/v1.0.16.zip", "author": { "name": "John Smith", "email": "test@test.com", diff --git a/styles/89aed37d.vendor.css b/styles/89aed37d.vendor.css new file mode 100644 index 00000000..79bf76bd --- /dev/null +++ b/styles/89aed37d.vendor.css @@ -0,0 +1,4 @@ +body,html{margin:0;padding:0;width:100%;height:100%;overflow:hidden}.snap-content,.snap-drawers,.x-snap-content,.x-snap-drawers,[data-snap-content],[data-snap-drawers],[snap-content],[snap-drawers],[snap\:content],[snap\:drawers],[x-snap-content],[x-snap-drawers],snap-content,snap-drawers{position:absolute;height:auto;top:0;bottom:0;width:auto;left:0;right:0}.snap-drawer,.x-snap-drawer,[data-snap-drawer],[snap-drawer],[snap\:drawer],[x-snap-drawer],snap-drawer{position:absolute;height:auto;top:0;bottom:0;overflow:auto;-webkit-transition:bottom .2s linear;-moz-transition:bottom .2s linear;-o-transition:bottom .2s linear;transition:bottom .2s linear;-webkit-overflow-scrolling:touch;-moz-overflow-scrolling:touch;-o-overflow-scrolling:touch;overflow-scrolling:touch;width:265px}.snap-content{z-index:2;-webkit-transform:translate3d(0,0,0);-moz-transform:translate3d(0,0,0);-o-transform:translate3d(0,0,0);transform:translate3d(0,0,0);overflow:auto;-webkit-overflow-scrolling:touch;-moz-overflow-scrolling:touch;-o-overflow-scrolling:touch;overflow-scrolling:touch}.snap-drawer-left{left:0;z-index:1}.snap-drawer-right{right:0;z-index:1}.snapjs-left .snap-drawer-right,.snapjs-right .snap-drawer-left{display:none}.snapjs-expand-left .snap-drawer-left,.snapjs-expand-right .snap-drawer-right{width:100%}/*! + * Font Awesome 4.2.0 by @davegandy - http://fontawesome.io - @fontawesome + * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) + */@font-face{font-family:FontAwesome;src:url(../fonts/fontawesome-webfont.eot?v=4.2.0);src:url(../fonts/fontawesome-webfont.eot?#iefix&v=4.2.0) format('embedded-opentype'),url(../fonts/fontawesome-webfont.woff?v=4.2.0) format('woff'),url(../fonts/fontawesome-webfont.ttf?v=4.2.0) format('truetype'),url(../fonts/fontawesome-webfont.svg?v=4.2.0#fontawesomeregular) format('svg');font-weight:400;font-style:normal}.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:.08em solid #eee;border-radius:.1em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1);-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2);-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3);-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1);-webkit-transform:scale(-1,1);-ms-transform:scale(-1,1);transform:scale(-1,1)}.fa-flip-vertical{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1);-webkit-transform:scale(1,-1);-ms-transform:scale(1,-1);transform:scale(1,-1)}:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-rotate-90{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:"\f000"}.fa-music:before{content:"\f001"}.fa-search:before{content:"\f002"}.fa-envelope-o:before{content:"\f003"}.fa-heart:before{content:"\f004"}.fa-star:before{content:"\f005"}.fa-star-o:before{content:"\f006"}.fa-user:before{content:"\f007"}.fa-film:before{content:"\f008"}.fa-th-large:before{content:"\f009"}.fa-th:before{content:"\f00a"}.fa-th-list:before{content:"\f00b"}.fa-check:before{content:"\f00c"}.fa-close:before,.fa-remove:before,.fa-times:before{content:"\f00d"}.fa-search-plus:before{content:"\f00e"}.fa-search-minus:before{content:"\f010"}.fa-power-off:before{content:"\f011"}.fa-signal:before{content:"\f012"}.fa-cog:before,.fa-gear:before{content:"\f013"}.fa-trash-o:before{content:"\f014"}.fa-home:before{content:"\f015"}.fa-file-o:before{content:"\f016"}.fa-clock-o:before{content:"\f017"}.fa-road:before{content:"\f018"}.fa-download:before{content:"\f019"}.fa-arrow-circle-o-down:before{content:"\f01a"}.fa-arrow-circle-o-up:before{content:"\f01b"}.fa-inbox:before{content:"\f01c"}.fa-play-circle-o:before{content:"\f01d"}.fa-repeat:before,.fa-rotate-right:before{content:"\f01e"}.fa-refresh:before{content:"\f021"}.fa-list-alt:before{content:"\f022"}.fa-lock:before{content:"\f023"}.fa-flag:before{content:"\f024"}.fa-headphones:before{content:"\f025"}.fa-volume-off:before{content:"\f026"}.fa-volume-down:before{content:"\f027"}.fa-volume-up:before{content:"\f028"}.fa-qrcode:before{content:"\f029"}.fa-barcode:before{content:"\f02a"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-book:before{content:"\f02d"}.fa-bookmark:before{content:"\f02e"}.fa-print:before{content:"\f02f"}.fa-camera:before{content:"\f030"}.fa-font:before{content:"\f031"}.fa-bold:before{content:"\f032"}.fa-italic:before{content:"\f033"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-align-left:before{content:"\f036"}.fa-align-center:before{content:"\f037"}.fa-align-right:before{content:"\f038"}.fa-align-justify:before{content:"\f039"}.fa-list:before{content:"\f03a"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-indent:before{content:"\f03c"}.fa-video-camera:before{content:"\f03d"}.fa-image:before,.fa-photo:before,.fa-picture-o:before{content:"\f03e"}.fa-pencil:before{content:"\f040"}.fa-map-marker:before{content:"\f041"}.fa-adjust:before{content:"\f042"}.fa-tint:before{content:"\f043"}.fa-edit:before,.fa-pencil-square-o:before{content:"\f044"}.fa-share-square-o:before{content:"\f045"}.fa-check-square-o:before{content:"\f046"}.fa-arrows:before{content:"\f047"}.fa-step-backward:before{content:"\f048"}.fa-fast-backward:before{content:"\f049"}.fa-backward:before{content:"\f04a"}.fa-play:before{content:"\f04b"}.fa-pause:before{content:"\f04c"}.fa-stop:before{content:"\f04d"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before{content:"\f050"}.fa-step-forward:before{content:"\f051"}.fa-eject:before{content:"\f052"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-plus-circle:before{content:"\f055"}.fa-minus-circle:before{content:"\f056"}.fa-times-circle:before{content:"\f057"}.fa-check-circle:before{content:"\f058"}.fa-question-circle:before{content:"\f059"}.fa-info-circle:before{content:"\f05a"}.fa-crosshairs:before{content:"\f05b"}.fa-times-circle-o:before{content:"\f05c"}.fa-check-circle-o:before{content:"\f05d"}.fa-ban:before{content:"\f05e"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-down:before{content:"\f063"}.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-expand:before{content:"\f065"}.fa-compress:before{content:"\f066"}.fa-plus:before{content:"\f067"}.fa-minus:before{content:"\f068"}.fa-asterisk:before{content:"\f069"}.fa-exclamation-circle:before{content:"\f06a"}.fa-gift:before{content:"\f06b"}.fa-leaf:before{content:"\f06c"}.fa-fire:before{content:"\f06d"}.fa-eye:before{content:"\f06e"}.fa-eye-slash:before{content:"\f070"}.fa-exclamation-triangle:before,.fa-warning:before{content:"\f071"}.fa-plane:before{content:"\f072"}.fa-calendar:before{content:"\f073"}.fa-random:before{content:"\f074"}.fa-comment:before{content:"\f075"}.fa-magnet:before{content:"\f076"}.fa-chevron-up:before{content:"\f077"}.fa-chevron-down:before{content:"\f078"}.fa-retweet:before{content:"\f079"}.fa-shopping-cart:before{content:"\f07a"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-arrows-v:before{content:"\f07d"}.fa-arrows-h:before{content:"\f07e"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:"\f080"}.fa-twitter-square:before{content:"\f081"}.fa-facebook-square:before{content:"\f082"}.fa-camera-retro:before{content:"\f083"}.fa-key:before{content:"\f084"}.fa-cogs:before,.fa-gears:before{content:"\f085"}.fa-comments:before{content:"\f086"}.fa-thumbs-o-up:before{content:"\f087"}.fa-thumbs-o-down:before{content:"\f088"}.fa-star-half:before{content:"\f089"}.fa-heart-o:before{content:"\f08a"}.fa-sign-out:before{content:"\f08b"}.fa-linkedin-square:before{content:"\f08c"}.fa-thumb-tack:before{content:"\f08d"}.fa-external-link:before{content:"\f08e"}.fa-sign-in:before{content:"\f090"}.fa-trophy:before{content:"\f091"}.fa-github-square:before{content:"\f092"}.fa-upload:before{content:"\f093"}.fa-lemon-o:before{content:"\f094"}.fa-phone:before{content:"\f095"}.fa-square-o:before{content:"\f096"}.fa-bookmark-o:before{content:"\f097"}.fa-phone-square:before{content:"\f098"}.fa-twitter:before{content:"\f099"}.fa-facebook:before{content:"\f09a"}.fa-github:before{content:"\f09b"}.fa-unlock:before{content:"\f09c"}.fa-credit-card:before{content:"\f09d"}.fa-rss:before{content:"\f09e"}.fa-hdd-o:before{content:"\f0a0"}.fa-bullhorn:before{content:"\f0a1"}.fa-bell:before{content:"\f0f3"}.fa-certificate:before{content:"\f0a3"}.fa-hand-o-right:before{content:"\f0a4"}.fa-hand-o-left:before{content:"\f0a5"}.fa-hand-o-up:before{content:"\f0a6"}.fa-hand-o-down:before{content:"\f0a7"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-globe:before{content:"\f0ac"}.fa-wrench:before{content:"\f0ad"}.fa-tasks:before{content:"\f0ae"}.fa-filter:before{content:"\f0b0"}.fa-briefcase:before{content:"\f0b1"}.fa-arrows-alt:before{content:"\f0b2"}.fa-group:before,.fa-users:before{content:"\f0c0"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-cloud:before{content:"\f0c2"}.fa-flask:before{content:"\f0c3"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-copy:before,.fa-files-o:before{content:"\f0c5"}.fa-paperclip:before{content:"\f0c6"}.fa-floppy-o:before,.fa-save:before{content:"\f0c7"}.fa-square:before{content:"\f0c8"}.fa-bars:before,.fa-navicon:before,.fa-reorder:before{content:"\f0c9"}.fa-list-ul:before{content:"\f0ca"}.fa-list-ol:before{content:"\f0cb"}.fa-strikethrough:before{content:"\f0cc"}.fa-underline:before{content:"\f0cd"}.fa-table:before{content:"\f0ce"}.fa-magic:before{content:"\f0d0"}.fa-truck:before{content:"\f0d1"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-square:before{content:"\f0d3"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-plus:before{content:"\f0d5"}.fa-money:before{content:"\f0d6"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-up:before{content:"\f0d8"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-columns:before{content:"\f0db"}.fa-sort:before,.fa-unsorted:before{content:"\f0dc"}.fa-sort-desc:before,.fa-sort-down:before{content:"\f0dd"}.fa-sort-asc:before,.fa-sort-up:before{content:"\f0de"}.fa-envelope:before{content:"\f0e0"}.fa-linkedin:before{content:"\f0e1"}.fa-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-gavel:before,.fa-legal:before{content:"\f0e3"}.fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"}.fa-comment-o:before{content:"\f0e5"}.fa-comments-o:before{content:"\f0e6"}.fa-bolt:before,.fa-flash:before{content:"\f0e7"}.fa-sitemap:before{content:"\f0e8"}.fa-umbrella:before{content:"\f0e9"}.fa-clipboard:before,.fa-paste:before{content:"\f0ea"}.fa-lightbulb-o:before{content:"\f0eb"}.fa-exchange:before{content:"\f0ec"}.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-upload:before{content:"\f0ee"}.fa-user-md:before{content:"\f0f0"}.fa-stethoscope:before{content:"\f0f1"}.fa-suitcase:before{content:"\f0f2"}.fa-bell-o:before{content:"\f0a2"}.fa-coffee:before{content:"\f0f4"}.fa-cutlery:before{content:"\f0f5"}.fa-file-text-o:before{content:"\f0f6"}.fa-building-o:before{content:"\f0f7"}.fa-hospital-o:before{content:"\f0f8"}.fa-ambulance:before{content:"\f0f9"}.fa-medkit:before{content:"\f0fa"}.fa-fighter-jet:before{content:"\f0fb"}.fa-beer:before{content:"\f0fc"}.fa-h-square:before{content:"\f0fd"}.fa-plus-square:before{content:"\f0fe"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-down:before{content:"\f107"}.fa-desktop:before{content:"\f108"}.fa-laptop:before{content:"\f109"}.fa-tablet:before{content:"\f10a"}.fa-mobile-phone:before,.fa-mobile:before{content:"\f10b"}.fa-circle-o:before{content:"\f10c"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-spinner:before{content:"\f110"}.fa-circle:before{content:"\f111"}.fa-mail-reply:before,.fa-reply:before{content:"\f112"}.fa-github-alt:before{content:"\f113"}.fa-folder-o:before{content:"\f114"}.fa-folder-open-o:before{content:"\f115"}.fa-smile-o:before{content:"\f118"}.fa-frown-o:before{content:"\f119"}.fa-meh-o:before{content:"\f11a"}.fa-gamepad:before{content:"\f11b"}.fa-keyboard-o:before{content:"\f11c"}.fa-flag-o:before{content:"\f11d"}.fa-flag-checkered:before{content:"\f11e"}.fa-terminal:before{content:"\f120"}.fa-code:before{content:"\f121"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f123"}.fa-location-arrow:before{content:"\f124"}.fa-crop:before{content:"\f125"}.fa-code-fork:before{content:"\f126"}.fa-chain-broken:before,.fa-unlink:before{content:"\f127"}.fa-question:before{content:"\f128"}.fa-info:before{content:"\f129"}.fa-exclamation:before{content:"\f12a"}.fa-superscript:before{content:"\f12b"}.fa-subscript:before{content:"\f12c"}.fa-eraser:before{content:"\f12d"}.fa-puzzle-piece:before{content:"\f12e"}.fa-microphone:before{content:"\f130"}.fa-microphone-slash:before{content:"\f131"}.fa-shield:before{content:"\f132"}.fa-calendar-o:before{content:"\f133"}.fa-fire-extinguisher:before{content:"\f134"}.fa-rocket:before{content:"\f135"}.fa-maxcdn:before{content:"\f136"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-html5:before{content:"\f13b"}.fa-css3:before{content:"\f13c"}.fa-anchor:before{content:"\f13d"}.fa-unlock-alt:before{content:"\f13e"}.fa-bullseye:before{content:"\f140"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-rss-square:before{content:"\f143"}.fa-play-circle:before{content:"\f144"}.fa-ticket:before{content:"\f145"}.fa-minus-square:before{content:"\f146"}.fa-minus-square-o:before{content:"\f147"}.fa-level-up:before{content:"\f148"}.fa-level-down:before{content:"\f149"}.fa-check-square:before{content:"\f14a"}.fa-pencil-square:before{content:"\f14b"}.fa-external-link-square:before{content:"\f14c"}.fa-share-square:before{content:"\f14d"}.fa-compass:before{content:"\f14e"}.fa-caret-square-o-down:before,.fa-toggle-down:before{content:"\f150"}.fa-caret-square-o-up:before,.fa-toggle-up:before{content:"\f151"}.fa-caret-square-o-right:before,.fa-toggle-right:before{content:"\f152"}.fa-eur:before,.fa-euro:before{content:"\f153"}.fa-gbp:before{content:"\f154"}.fa-dollar:before,.fa-usd:before{content:"\f155"}.fa-inr:before,.fa-rupee:before{content:"\f156"}.fa-cny:before,.fa-jpy:before,.fa-rmb:before,.fa-yen:before{content:"\f157"}.fa-rouble:before,.fa-rub:before,.fa-ruble:before{content:"\f158"}.fa-krw:before,.fa-won:before{content:"\f159"}.fa-bitcoin:before,.fa-btc:before{content:"\f15a"}.fa-file:before{content:"\f15b"}.fa-file-text:before{content:"\f15c"}.fa-sort-alpha-asc:before{content:"\f15d"}.fa-sort-alpha-desc:before{content:"\f15e"}.fa-sort-amount-asc:before{content:"\f160"}.fa-sort-amount-desc:before{content:"\f161"}.fa-sort-numeric-asc:before{content:"\f162"}.fa-sort-numeric-desc:before{content:"\f163"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbs-down:before{content:"\f165"}.fa-youtube-square:before{content:"\f166"}.fa-youtube:before{content:"\f167"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-youtube-play:before{content:"\f16a"}.fa-dropbox:before{content:"\f16b"}.fa-stack-overflow:before{content:"\f16c"}.fa-instagram:before{content:"\f16d"}.fa-flickr:before{content:"\f16e"}.fa-adn:before{content:"\f170"}.fa-bitbucket:before{content:"\f171"}.fa-bitbucket-square:before{content:"\f172"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-long-arrow-down:before{content:"\f175"}.fa-long-arrow-up:before{content:"\f176"}.fa-long-arrow-left:before{content:"\f177"}.fa-long-arrow-right:before{content:"\f178"}.fa-apple:before{content:"\f179"}.fa-windows:before{content:"\f17a"}.fa-android:before{content:"\f17b"}.fa-linux:before{content:"\f17c"}.fa-dribbble:before{content:"\f17d"}.fa-skype:before{content:"\f17e"}.fa-foursquare:before{content:"\f180"}.fa-trello:before{content:"\f181"}.fa-female:before{content:"\f182"}.fa-male:before{content:"\f183"}.fa-gittip:before{content:"\f184"}.fa-sun-o:before{content:"\f185"}.fa-moon-o:before{content:"\f186"}.fa-archive:before{content:"\f187"}.fa-bug:before{content:"\f188"}.fa-vk:before{content:"\f189"}.fa-weibo:before{content:"\f18a"}.fa-renren:before{content:"\f18b"}.fa-pagelines:before{content:"\f18c"}.fa-stack-exchange:before{content:"\f18d"}.fa-arrow-circle-o-right:before{content:"\f18e"}.fa-arrow-circle-o-left:before{content:"\f190"}.fa-caret-square-o-left:before,.fa-toggle-left:before{content:"\f191"}.fa-dot-circle-o:before{content:"\f192"}.fa-wheelchair:before{content:"\f193"}.fa-vimeo-square:before{content:"\f194"}.fa-try:before,.fa-turkish-lira:before{content:"\f195"}.fa-plus-square-o:before{content:"\f196"}.fa-space-shuttle:before{content:"\f197"}.fa-slack:before{content:"\f198"}.fa-envelope-square:before{content:"\f199"}.fa-wordpress:before{content:"\f19a"}.fa-openid:before{content:"\f19b"}.fa-bank:before,.fa-institution:before,.fa-university:before{content:"\f19c"}.fa-graduation-cap:before,.fa-mortar-board:before{content:"\f19d"}.fa-yahoo:before{content:"\f19e"}.fa-google:before{content:"\f1a0"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-square:before{content:"\f1a2"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-stumbleupon:before{content:"\f1a4"}.fa-delicious:before{content:"\f1a5"}.fa-digg:before{content:"\f1a6"}.fa-pied-piper:before{content:"\f1a7"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-drupal:before{content:"\f1a9"}.fa-joomla:before{content:"\f1aa"}.fa-language:before{content:"\f1ab"}.fa-fax:before{content:"\f1ac"}.fa-building:before{content:"\f1ad"}.fa-child:before{content:"\f1ae"}.fa-paw:before{content:"\f1b0"}.fa-spoon:before{content:"\f1b1"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-recycle:before{content:"\f1b8"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-tree:before{content:"\f1bb"}.fa-spotify:before{content:"\f1bc"}.fa-deviantart:before{content:"\f1bd"}.fa-soundcloud:before{content:"\f1be"}.fa-database:before{content:"\f1c0"}.fa-file-pdf-o:before{content:"\f1c1"}.fa-file-word-o:before{content:"\f1c2"}.fa-file-excel-o:before{content:"\f1c3"}.fa-file-powerpoint-o:before{content:"\f1c4"}.fa-file-image-o:before,.fa-file-photo-o:before,.fa-file-picture-o:before{content:"\f1c5"}.fa-file-archive-o:before,.fa-file-zip-o:before{content:"\f1c6"}.fa-file-audio-o:before,.fa-file-sound-o:before{content:"\f1c7"}.fa-file-movie-o:before,.fa-file-video-o:before{content:"\f1c8"}.fa-file-code-o:before{content:"\f1c9"}.fa-vine:before{content:"\f1ca"}.fa-codepen:before{content:"\f1cb"}.fa-jsfiddle:before{content:"\f1cc"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-ring:before,.fa-life-saver:before,.fa-support:before{content:"\f1cd"}.fa-circle-o-notch:before{content:"\f1ce"}.fa-ra:before,.fa-rebel:before{content:"\f1d0"}.fa-empire:before,.fa-ge:before{content:"\f1d1"}.fa-git-square:before{content:"\f1d2"}.fa-git:before{content:"\f1d3"}.fa-hacker-news:before{content:"\f1d4"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-qq:before{content:"\f1d6"}.fa-wechat:before,.fa-weixin:before{content:"\f1d7"}.fa-paper-plane:before,.fa-send:before{content:"\f1d8"}.fa-paper-plane-o:before,.fa-send-o:before{content:"\f1d9"}.fa-history:before{content:"\f1da"}.fa-circle-thin:before{content:"\f1db"}.fa-header:before{content:"\f1dc"}.fa-paragraph:before{content:"\f1dd"}.fa-sliders:before{content:"\f1de"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-bomb:before{content:"\f1e2"}.fa-futbol-o:before,.fa-soccer-ball-o:before{content:"\f1e3"}.fa-tty:before{content:"\f1e4"}.fa-binoculars:before{content:"\f1e5"}.fa-plug:before{content:"\f1e6"}.fa-slideshare:before{content:"\f1e7"}.fa-twitch:before{content:"\f1e8"}.fa-yelp:before{content:"\f1e9"}.fa-newspaper-o:before{content:"\f1ea"}.fa-wifi:before{content:"\f1eb"}.fa-calculator:before{content:"\f1ec"}.fa-paypal:before{content:"\f1ed"}.fa-google-wallet:before{content:"\f1ee"}.fa-cc-visa:before{content:"\f1f0"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-bell-slash:before{content:"\f1f6"}.fa-bell-slash-o:before{content:"\f1f7"}.fa-trash:before{content:"\f1f8"}.fa-copyright:before{content:"\f1f9"}.fa-at:before{content:"\f1fa"}.fa-eyedropper:before{content:"\f1fb"}.fa-paint-brush:before{content:"\f1fc"}.fa-birthday-cake:before{content:"\f1fd"}.fa-area-chart:before{content:"\f1fe"}.fa-pie-chart:before{content:"\f200"}.fa-line-chart:before{content:"\f201"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-bicycle:before{content:"\f206"}.fa-bus:before{content:"\f207"}.fa-ioxhost:before{content:"\f208"}.fa-angellist:before{content:"\f209"}.fa-cc:before{content:"\f20a"}.fa-ils:before,.fa-shekel:before,.fa-sheqel:before{content:"\f20b"}.fa-meanpath:before{content:"\f20c"}/*! vn-toolbox-common - ver.1.0.6 (2015-03-27) */ \ No newline at end of file diff --git a/styles/26436eca.main.css b/styles/cf65ef82.main.css similarity index 81% rename from styles/26436eca.main.css rename to styles/cf65ef82.main.css index 3e2b6c6b..bfa540e8 100644 --- a/styles/26436eca.main.css +++ b/styles/cf65ef82.main.css @@ -39,7 +39,7 @@ bottom: 0; margin: auto; } -.th-elist__submit, .th-product-details__add-to-cart, .th-cart__body--overlay, .btn.btn-primary, .btn.btn-success { +.th-my-account__overlay, .th-elist__submit, .th-product-details__add-to-cart, .th-cart__body--overlay, .btn.btn-primary, .btn.btn-success { -moz-osx-font-smoothing: grayscale; -webkit-font-smoothing: antialiased; } @@ -1125,12 +1125,24 @@ td, th { .glyphicon-bitcoin:before { content: "\e227"; } +.glyphicon-btc:before { + content: "\e227"; } + +.glyphicon-xbt:before { + content: "\e227"; } + .glyphicon-yen:before { content: "\00a5"; } +.glyphicon-jpy:before { + content: "\00a5"; } + .glyphicon-ruble:before { content: "\20bd"; } +.glyphicon-rub:before { + content: "\20bd"; } + .glyphicon-scale:before { content: "\e230"; } @@ -1309,6 +1321,9 @@ hr { overflow: visible; clip: auto; } +[role="button"] { + cursor: pointer; } + h1, h2, h3, h4, h5, h6, .h1, .h2, .h3, .h4, .h5, .h6 { font-family: "antonio-bold", "robotocondensed-regular", sans-serif; font-weight: 400; @@ -1386,7 +1401,7 @@ mark, .mark { .text-lowercase { text-transform: lowercase; } -.text-uppercase { +.text-uppercase, .initialism { text-transform: uppercase; } .text-capitalize { @@ -1517,8 +1532,7 @@ abbr[title], abbr[data-original-title] { border-bottom: 1px dotted #777777; } .initialism { - font-size: 90%; - text-transform: uppercase; } + font-size: 90%; } blockquote { padding: 6px 12px; @@ -2307,9 +2321,10 @@ output { .form-control::-webkit-input-placeholder { color: #777777; } .form-control[disabled], .form-control[readonly], fieldset[disabled] .form-control { - cursor: false; background-color: #eeeeee; opacity: 1; } + .form-control[disabled], fieldset[disabled] .form-control { + cursor: false; } textarea.form-control { height: auto; } @@ -2349,6 +2364,7 @@ input[type="search"] { margin-top: -5px; } .radio-inline, .checkbox-inline { + position: relative; display: inline-block; padding-left: 20px; margin-bottom: 0; @@ -2372,7 +2388,8 @@ input[type="radio"][disabled], input[type="radio"].disabled, fieldset[disabled] .form-control-static { padding-top: 7px; padding-bottom: 7px; - margin-bottom: 0; } + margin-bottom: 0; + min-height: 24px; } .form-control-static.input-lg, .input-group-lg > .form-control-static.form-control, .input-group-lg > .form-control-static.input-group-addon, .input-group-lg > .input-group-btn > .form-control-static.btn, .form-control-static.input-sm, .input-group-sm > .form-control-static.form-control, .input-group-sm > .form-control-static.input-group-addon, .input-group-sm > .input-group-btn > .form-control-static.btn { padding-left: 0; padding-right: 0; } @@ -2406,7 +2423,8 @@ textarea.input-sm, .input-group-sm > textarea.form-control, .input-group-sm > te height: 28px; padding: 5px 10px; font-size: 11px; - line-height: 1.5; } + line-height: 1.5; + min-height: 23px; } .input-lg, .input-group-lg > .form-control, .input-group-lg > .input-group-addon, .input-group-lg > .input-group-btn > .btn { height: 42px; @@ -2437,7 +2455,8 @@ textarea.input-lg, .input-group-lg > textarea.form-control, .input-group-lg > te height: 42px; padding: 10px 16px; font-size: 15px; - line-height: 1.33; } + line-height: 1.33; + min-height: 27px; } .has-feedback { position: relative; } @@ -2775,11 +2794,9 @@ input[type="submit"].btn-block, input[type="reset"].btn-block, input[type="butto opacity: 1; } .collapse { - display: none; - visibility: hidden; } + display: none; } .collapse.in { - display: block; - visibility: visible; } + display: block; } tr.collapse.in { display: table-row; } @@ -2801,7 +2818,7 @@ tbody.collapse.in { height: 0; margin-left: 2px; vertical-align: middle; - border-top: 4px solid; + border-top: 4px dashed; border-right: 4px solid transparent; border-left: 4px solid transparent; } @@ -3231,11 +3248,9 @@ tbody.collapse.in { border-bottom-color: #fff; } } .tab-content > .tab-pane { - display: none; - visibility: hidden; } + display: none; } .tab-content > .active { - display: block; - visibility: visible; } + display: block; } .nav-tabs .dropdown-menu { margin-top: -1px; @@ -3286,7 +3301,6 @@ tbody.collapse.in { box-shadow: none; } .navbar-collapse.collapse { display: block !important; - visibility: visible !important; height: auto !important; padding-bottom: 0; overflow: visible !important; } @@ -3790,7 +3804,7 @@ a.label:hover, a.label:focus { .btn .badge { position: relative; top: -1px; } - .btn-xs .badge, .btn-group-xs > .btn .badge { + .btn-xs .badge, .btn-group-xs > .btn .badge, .btn-group-xs > .btn .badge { top: 0; padding: 1px 5px; } .list-group-item.active > .badge, .nav-pills > .active > a > .badge { @@ -4349,10 +4363,12 @@ a.list-group-item-danger { height: 100%; width: 100%; border: 0; } - .embed-responsive.embed-responsive-16by9 { - padding-bottom: 56.25%; } - .embed-responsive.embed-responsive-4by3 { - padding-bottom: 75%; } + +.embed-responsive-16by9 { + padding-bottom: 56.25%; } + +.embed-responsive-4by3 { + padding-bottom: 75%; } .well { min-height: 20px; @@ -4440,10 +4456,12 @@ button.close { outline: 0; } .modal-backdrop { - position: absolute; + position: fixed; top: 0; right: 0; + bottom: 0; left: 0; + z-index: 1040; background-color: #000; } .modal-backdrop.fade { opacity: 0; @@ -4509,7 +4527,6 @@ button.close { position: absolute; z-index: 1030; display: block; - visibility: visible; font-family: "roboto-regular", Helvetica, Arial, sans-serif; font-size: 11px; font-weight: normal; @@ -4902,8 +4919,7 @@ button.close { border: 0; } .hidden { - display: none !important; - visibility: hidden !important; } + display: none !important; } .affix { position: fixed; } @@ -5137,16 +5153,6 @@ button.close { .th-alert-container.ng-hide-remove.ng-hide-remove-active { opacity: 1; } -.th-checkout__step__overlay { - opacity: 0.8; - filter: alpha(opacity=80); } - .th-checkout__step__overlay.-complete { - opacity: 0.6; - filter: alpha(opacity=60); } - .th-checkout__step__overlay.-complete:hover { - opacity: 0.3; - filter: alpha(opacity=30); } - .vn-dropzone { position: relative; } @@ -5331,135 +5337,1661 @@ button.close { .vn-zoom__image { display: block; } -.th-cart-summary { - position: relative; - right: 0; - text-align: right; - top: 8px; - white-space: nowrap; } - @media only screen and (min-width: 768px) and (max-width: 991px) { - .th-cart-summary { - top: 23px; } } - @media only screen and (min-width: 992px) { - .th-cart-summary { - right: 13px; - top: 29px; } } - -.th-my-cart { - display: -moz-inline-stack; - display: inline-block; - vertical-align: middle; - *vertical-align: auto; - zoom: 1; - *display: inline; - margin-left: 10px; - padding: 6px 0; } - .th-my-cart__number { - color: #f63e34; } - .th-my-cart__number:before { - content: "("; } - .th-my-cart__number:after { - content: ")"; } - -/* -Animation for products as facets of search are applied. [rough draft] -*/ -.-product-tile-animation.ng-enter, .-product-tile-animation.ng-leave { - transition: 100ms ease-out all; } +/* Toolbox Imports */ +.th-address__enterAddress { + margin: 10px 0px 10px 0px; + padding: 20px 5px; + background: #fafafa; + /* was $gray-lighter */ + border: 1px solid #ebebeb; + box-shadow: rgba(0, 0, 0, 0.14902) 0px 1px 1px 0px, rgba(0, 0, 0, 0.09804) 0px 1px 2px 0px; } + @media (max-width: 480px) { + .th-address__enterAddress { + padding: 10px 0px; } } + .th-address__enterAddress__title { + text-align: center; + padding-bottom: 13px; + font-weight: bold; + font-size: 1.3em; } +.th-address__display { + cursor: pointer; + margin: 10px 0px 10px 0px; + padding: 20px 20px 10px 20px; + background: #fafafa; + /* was $gray-lighter */ + border: 1px solid #ebebeb; + box-shadow: rgba(0, 0, 0, 0.14902) 0px 1px 1px 0px, rgba(0, 0, 0, 0.09804) 0px 1px 2px 0px; } + .th-address__display.-readonly { + cursor: default; } + .th-address__display.-readonly:hover { + cursor: default; } + .th-address__display.-readonly:hover > .row:hover { + cursor: default; } + .th-address__display .row { + display: -webkit-flex; + display: flex; + -webkit-align-items: center; + align-items: center; } + .th-address__display:hover { + background: #fff; + color: #777; } + .th-address__display__addressPart { + margin-bottom: 5px; + font-size: 14px; } + .th-address__display .styled-optionbox-option { + border-bottom: 1px solid #CCC; + margin-bottom: 10px; } + .th-address__display__actions { + padding-top: 15px; } + .th-address__display__actions__preferred { + color: #5cb85c; + line-height: 26px; } +.th-address__choose__options { + margin: 10px 0px 10px 0px; + padding: 0; + background: #fafafa; + /* was $gray-lighter */ + border: 1px solid #ebebeb; + box-shadow: rgba(0, 0, 0, 0.14902) 0px 1px 1px 0px, rgba(0, 0, 0, 0.09804) 0px 1px 2px 0px; } + .th-address__choose__options__option { + position: relative; + margin: 0px; + width: 100%; + cursor: pointer; } + .th-address__choose__options__option [vn-address-display] { + cursor: default; } + .th-address__choose__options__new-option { + padding: 20px; + display: inline-block; + width: 100%; + cursor: pointer; } + .th-address__choose__options .styled-optionbox-option { + width: 100%; } + .th-address__choose__options__editBtn { + position: absolute; + top: 50%; + -webkit-transform: translateY(-50%); + transform: translateY(-50%); + right: 20px; } +.th-address__form-wrapper { + padding: 20px 10px 0px 10px; } + .th-address__form-wrapper div[class^="col-"] { + padding-left: 8px; + padding-right: 8px; } + @media (max-width: 480px) { + .th-address__form-wrapper div[class^="col-"] { + padding-left: 5px; + padding-right: 5px; } } + .th-address__form-wrapper [name="type"] + label { + color: #999; + font-size: 14px; } +.th-address__change { + text-align: center; + margin-bottom: 40px; } +.th-address__location { + text-align: center; + padding: 0 0 10px 0; } + @media (max-width: 350px) { + .th-address__location button.btn { + font-size: 14px; } } +.th-address__country { + position: relative; } + .th-address__country .dropdown-menu { + min-width: 150px; + width: 100%; } +.th-address__same-as { + text-align: center; + padding: 0 20px; } +.th-address__state { + position: relative; } + @media (max-width: 480px) { + .th-address__state .vn-dropdown__menu { + position: absolute; + left: 50%; + margin-left: -90px; } } + +.-faceted-search .panel-body { + padding: 0 !important; } +.-faceted-search .panel-group .panel { + border-bottom: none; } +.-faceted-search .panel-default > .panel-heading .panel-title { + font-size: 1.6rem; + letter-spacing: 1px; } + +.vn-category-search { + padding: 5px 0; + border-top: 1px solid #E6E6E6; + border-bottom: 1px solid #E6E6E6; } + .vn-category-search__category-title, .vn-category-search__category-items { + text-align: left; } + .vn-category-search__category-title__category-item, .vn-category-search__category-items__category-item { + padding: 3px 5px 3px 20px !important; } + .vn-category-search__category-items { + text-align: left; + word-wrap: break-word; } + .vn-category-search__category-items.-last { + margin-bottom: 15px; } + .vn-category-search__category-items__category-title { + display: block; + font-size: 1.3rem; + padding: 3px 5px 3px 15px; + border-bottom: 1px solid #E6E6E6; } + .vn-category-search__category-items__category-item { + border-bottom: 1px solid #E6E6E6; } + .vn-category-search__category-items__category-title.-noborder, .vn-category-search__category-items__category-item.-noborder { + border: none; } + +.facet-item__by-category { + border-bottom: none !important; } + +.th-checkout { + background-color: #fafafa; + height: inherit; + margin-top: -20px; + margin-bottom: -20px; + margin-left: 15px; + margin-right: 15px; + font-size: 1.5rem; } + .th-checkout__place-order-fixed { + position: absolute; + top: 99px; + right: 0px; + width: 33.3333%; + z-index: 100; + padding: 10px 30px 10px 15px; + background-color: #FFFFFF; + box-shadow: 3px 2px 8px 0px rgba(0, 0, 0, 0.3); + display: none; } + @media (min-width: 992px) { + .th-checkout__place-order-fixed--active { + display: block; } } + .th-checkout__place-order-fixed__btn { + margin: 0px; } + .th-checkout__loading { + display: none; + position: absolute; + z-index: 200; + top: 99px; + width: 33.3333333%; + height: calc(100% - 161px); + background-color: rgba(255, 255, 255, 0.8); } + @media (max-width: 992px) { + .th-checkout__loading { + width: 100%; } } + .th-checkout__loading[vn-busy-animation-show="true"] { + display: block; } + .th-checkout__loading--ship-to { + left: 0%; } + .th-checkout__loading--pay-with { + left: 33.3333%; } + .th-checkout__loading--review { + left: 66.6666%; } + .th-checkout__loading-inner { + height: 20px; + width: 20px; + text-align: center; + margin: 0 auto; + display: inline-block; + vertical-align: top; } + .th-checkout__loading svg { + position: absolute; + left: 50%; + top: 50%; + margin-top: -40px; + margin-left: -40px; } + @media (max-width: 992px) { + .th-checkout__loading svg { + top: 20%; + margin-top: 0px; } } + .th-checkout__loading svg path, .th-checkout__loading svg rect { + fill: #333; } + .th-checkout__section-heading { + text-align: center; + margin: 40px 0 20px 0; + font-size: 2.4rem; + font-weight: bold; + text-transform: uppercase; } + .th-checkout__step { + color: #333; + padding: 20px 20px; + height: 100%; + border-top: 1px solid #ccc; + position: relative; } + .th-checkout__step__btn-continue { + margin-top: 20px; } + .th-checkout__step.-active { + overflow-y: auto; + border: none; + border-top: 1px solid orange; + background-color: #eee; + height: 840px; } + .th-checkout__step.-active .th-checkout__step__overlay { + display: none; } + .th-checkout__step.-active .th-checkout__step__edit { + display: none; } + .th-checkout__step.-active.-no-scroll { + overflow-y: hidden; } + .th-checkout__step__overlay { + z-index: 999; + position: absolute; + height: 100%; + width: 100%; + background-color: #fafafa; + top: 0px; + bottom: 0px; + left: 0px; + right: 0px; + cursor: default; + opacity: 0.8; + filter: alpha(opacity=80); + transition: opacity .15s; } + .th-checkout__step__overlay.-complete { + opacity: 0.6; + filter: alpha(opacity=60); } + .th-checkout__step__overlay.-complete:hover { + opacity: 0.3; + filter: alpha(opacity=30); } + .th-checkout__step__overlay:hover { + cursor: default; } + .th-checkout__step__overlay.-complete { + cursor: pointer; } + .th-checkout__step__drawer { + z-index: 888; + position: absolute; + height: 100%; + width: 0; + background-color: #eee; + top: 0; + bottom: 0; + left: 0; + right: 0; + padding: 0; + border: none; + transition: width 500ms ease; } + .th-checkout__step__drawer.-left { + left: 0; + right: auto; } + .th-checkout__step__drawer.-right { + right: 0; + left: auto; } + .th-checkout__step__drawer.-open { + width: 100%; } + .th-checkout__step__drawer.-open .th-checkout__step__drawer__body { + transition: opacity 1000ms ease; + opacity: 1; } + .th-checkout__step__drawer__close { + position: absolute; + top: 10px; + right: 15px; } + .th-checkout__step__drawer__body { + opacity: 0; + overflow-y: scroll; + height: 100%; + overflow-x: hidden; + padding: 20px; } + .th-checkout__step__drawer__title { + font-weight: bold; + text-transform: uppercase; + margin-top: 10px; + margin-bottom: 20px; } + .th-checkout__step__drawer__form-wrapper { + padding: 40px; } + .th-checkout__step__edit { + z-index: 999; + position: absolute; + bottom: 50%; + left: 50%; + margin-left: -20px; } + .th-checkout__step__edit .fa-pencil { + display: none; } + .th-checkout__step__title { + text-align: center; + font-size: 2.4rem; + margin-bottom: 20px; } + .th-checkout__step__title__stepNumber span { + border-radius: 50%; + width: 41px; + height: 41px; + padding: 8px 0 0 2px; + background-color: #333333; + color: white; + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + *vertical-align: auto; + zoom: 1; + *display: inline; } + .th-checkout__step__title__stepName { + font-weight: bold; + text-transform: uppercase; + margin-top: 10px; } + .th-checkout__step__title .fa-check-circle-o { + height: 41px; } + .th-checkout__step__backButton { + margin-top: 20px; + font-size: 1.6rem; } + .th-checkout .img-responsive { + margin: 0 auto; } + .th-checkout .img-responsive > .row { + background-color: white; + height: 100%; + overflow: auto; + margin: 0px; } + .th-checkout .row { + height: inherit; } -/* ending enter and move styling - (this is what the element will animate from */ -.-product-tile-animation.ng-enter { - opacity: 0; } +@keyframes cardSlideLeft { + from { + margin-left: auto; } -/* ending enter and move styling - (this is what the element will animate towards */ -.-product-tile-animation.ng-enter.ng-enter-active { - opacity: 1; } + to { + margin-left: 0; } } -/* starting leave animation */ -.-product-tile-animation.ng-leave { - opacity: 1; } +@-webkit-keyframes cardSlideLeft { + from { + margin-left: auto; } -/* ending leave animation */ -.-product-tile-animation.ng-leave.ng-leave-active { - opacity: 0; } + to { + margin-left: 0; } } -.categories { - min-height: 400px; } +@keyframes cardSlideRight { + from { + margin-left: 0; } -.th-dropdown .vn-placeholder { - margin-left: -10px; } -.th-dropdown .btn { - text-align: left; } -.th-dropdown-toggle { - margin-left: 5px; - margin-top: -3px; } + to { + margin-left: auto; } } -.th-dropdown.open button.btn-default.dropdown-toggle { - background: none; } +@-webkit-keyframes cardSlideRight { + from { + margin-left: 0; } -.th-elist { - border-bottom: 1px solid #d9d9d9; - padding: 12px 0; } - .th-elist__form { - display: -moz-inline-stack; - display: inline-block; - vertical-align: middle; - *vertical-align: auto; - zoom: 1; - *display: inline; - white-space: nowrap; } - .th-elist__group { - display: -moz-inline-stack; - display: inline-block; - vertical-align: middle; - *vertical-align: auto; - zoom: 1; - *display: inline; - margin: 0; } - .th-elist__input { - display: -moz-inline-stack; + to { + margin-left: auto; } } + +.th-checkout__credit-card__display { + margin: 10px 0px 10px 0px; + padding: 20px 20px 20px 20px; + background: #fafafa; + /* was $gray-lighter */ + border: 1px solid #ebebeb; + box-shadow: rgba(0, 0, 0, 0.14902) 0px 1px 1px 0px, rgba(0, 0, 0, 0.09804) 0px 1px 2px 0px; } + .th-checkout__credit-card__display:hover { + background: #fff; } + .th-checkout__credit-card__display__last4 { display: inline-block; - vertical-align: middle; - *vertical-align: auto; - zoom: 1; - *display: inline; - border-color: #d9d9d9; - height: 31px; - margin: 0; - min-width: 162px; } - .th-elist__input:focus { - border-color: #737373; } - .th-elist__submit { - display: -moz-inline-stack; + font-weight: bold; + margin-left: 5px; } + .th-checkout__credit-card__display__exp { + margin-right: 10px; display: inline-block; - vertical-align: middle; - *vertical-align: auto; - zoom: 1; - *display: inline; - background: #000000; - border: 0; - color: white; - font-size: 1.5rem; - padding: 5px 10px; } - .th-elist__submit:hover { - background: #000000; - color: white; } - .th-elist__title { - display: -moz-inline-stack; + margin-left: 15px; } + .th-checkout__credit-card__display.-verify-CVV .form-group { + margin-bottom: 0px; } + .th-checkout__credit-card__display__verifyCVV { + line-height: 40px; + height: 40px; + display: inline-block; } + .th-checkout__credit-card__display__verifyCVV__label { + line-height: normal; + width: 100%; + text-align: right; } + .th-checkout__credit-card__display__verifyCVV__label { + margin-top: 10px; } +.th-checkout__credit-card__heading { + text-align: center; + margin: 0 0 20px 0; + font-size: 2.4rem; + font-weight: bold; + text-transform: uppercase; } +.th-checkout__credit-card__change { + text-align: center; + margin-bottom: 20px; + margin-top: 10px; } +.th-checkout__credit-card__tile { + position: relative; } +.th-checkout__credit-card__choose__options { + margin: 10px 0px 10px 0px; + padding: 0; + background: #fafafa; + border: 1px solid #ebebeb; + box-shadow: rgba(0, 0, 0, 0.14902) 0px 1px 1px 0px, rgba(0, 0, 0, 0.09804) 0px 1px 2px 0px; } + .th-checkout__credit-card__choose__options__option { + position: relative; + width: 100%; + margin: 0px; + cursor: pointer; } + .th-checkout__credit-card__choose__options__new-option { + padding: 20px; display: inline-block; - vertical-align: middle; - *vertical-align: auto; - zoom: 1; - *display: inline; - font-family: "RobotoCondensed-Regular"; - font-size: 1.4rem; - font-weight: normal; - margin-right: 13px; - text-transform: uppercase; } + width: 100%; + cursor: pointer; } + .th-checkout__credit-card__choose__options .styled-optionbox-option { + width: 100%; } + .th-checkout__credit-card__choose__options__editBtn { + position: absolute; + top: 50%; + -webkit-transform: translateY(-50%); + transform: translateY(-50%); + right: 20px; } +.th-checkout__credit-card .credit-card-error { + border-radius: 0; + color: #a94442; + background-color: #f2dede; + width: 300px; + border: 1px solid #ebebeb; + box-shadow: rgba(0, 0, 0, 0.14902) 0px 1px 1px 0px, rgba(0, 0, 0, 0.09804) 0px 1px 2px 0px; + margin-bottom: 10px; + padding: 15px; } + .th-checkout__credit-card .credit-card-error.-aligned { + margin: 0 auto 5px auto; } -@media only screen and (min-width: 1200px) { +.styled-optionbox-option .th-credit-card { + margin-left: 32px; } + +.th-payment-profiles .th-credit-card { + margin-left: 0px; } + +.credit-card { + border-radius: 10px; + background-color: #fff; + height: 200px; + max-width: 300px; + margin: 0px 0px 20px; + cursor: pointer; + border: 1px solid #ebebeb; + box-shadow: rgba(0, 0, 0, 0.14902) 0px 1px 1px 0px, rgba(0, 0, 0, 0.09804) 0px 1px 2px 0px; } + .credit-card.-aligned { + margin: 0px auto 20px; } + .credit-card.-inactive { + color: #777777; + margin-left: 0px; } + .credit-card.-inactive-add-active { + -webkit-animation: 0.5s cardSlideLeft; + animation: 0.5s cardSlideLeft; } + .credit-card.-inactive .credit-card__display__image { + opacity: 0.6; + filter: alpha(opacity=60); } + .credit-card.-selected { + border: 1px solid #777777; + color: #222222; + text-shadow: -2px 2px 3px #aaa; + margin-left: auto; } + .credit-card.-selected-add-active { + -webkit-animation: 0.5s cardSlideRight; + animation: 0.5s cardSlideRight; } + .credit-card.-selected .credit-card__display__image { + opacity: 1; + filter: alpha(opacity=100); } + .credit-card #frmCreditCard { + margin: 30px 0px 0px 0px; } + .credit-card .row { + padding: 0; + margin: 0; } + .credit-card__strip { + margin: 15px 0; + height: 30px; + background-color: #ccc; } + .credit-card__exp-month { + position: relative; } + .credit-card__exp-month .dropdown-menu { + min-width: 150px; + width: 150px; + max-height: 150px; + overflow-y: auto; } + .credit-card__exp-year { + position: relative; } + .credit-card__exp-year .dropdown-menu { + min-width: 80px; + width: 100%; + max-height: 150px; + overflow-y: auto; } + .credit-card__exp-year .dropdown-menu a { + padding: 3px 15px; } + +.th-credit-card { + height: 30px; + width: 44px; + background: url('/images/sprites/creditcards-b.png') -166px 0; + -webkit-transform-style: preserve-3d; + /* transform-style:preserve-3d; */ + transition: -webkit-transform .3s; + transition: transform .3s; + display: inline-block; + margin: 0; + vertical-align: middle; } + .th-credit-card--notvalid { + -webkit-filter: grayscale(100%); + -moz-filter: grayscale(100%); + filter: grayscale(100%); } + .th-credit-card--flipped { + background: url('/images/sprites/creditcards-b.png') -291px 0; } + .th-credit-card--unknown { + background: url('/images/sprites/creditcards-b.png') -166px 0; } + .th-credit-card--amex { + background: url('/images/sprites/creditcards-b.png') 1px 0; } + .th-credit-card--amex-flipped { + background: url('/images/sprites/creditcards-b.png') -333px 0; } + .th-credit-card--visa { + border: 1px solid #ddd; + background: url('/images/sprites/creditcards-b.png') -42px 0; } + .th-credit-card--mastercard { + background: url('/images/sprites/creditcards-b.png') -81px 0; } + .th-credit-card--discover { + background: url('/images/sprites/creditcards-b.png') -208px 0; } + +.-faceted-search .panel-body { + padding: 0 !important; } +.-faceted-search .panel-group .panel { + border-bottom: none; } +.-faceted-search .panel-default > .panel-heading .panel-title { + font-size: 1.6rem; + letter-spacing: 1px; } + +.vn-faceted-search-header { + text-align: center; } + .vn-faceted-search-header .__cancel-action, .vn-faceted-search-header .__clear-action { + width: 96%; + margin: 15px auto; + display: inline-block; } + @media (max-width: 767px) { + .vn-faceted-search-header .__cancel-action, .vn-faceted-search-header .__clear-action { + width: 44%; } } + +.vn-faceted-search-footer .__clear-action { + display: block; + margin: 0 auto; + width: 80%; } + +.vn-facet-search-control { + border-bottom: 1px solid #333333; } + +.vn-faceted-search label { + display: block; + padding: 2px 0; + position: relative; } + .vn-faceted-search label.-last { + margin-bottom: 15px; } + .vn-faceted-search label .name { + display: inline-block; } + .vn-faceted-search label .count { + position: absolute; + top: 4px; + right: 0; + margin-left: 2px; + padding: 0 5px; + background-color: #999999; + color: white; + display: block; + border-radius: 2px; + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; } +.vn-faceted-search input { + width: 35px; } + .vn-faceted-search input:focus { + outline: 0; } +@media (max-width: 767px) { + .vn-faceted-search.isMobileAndVisible { + position: relative; + left: 0; + right: 0; + top: 0; + bottom: 0; + z-index: 1001; + background-color: #FFFFFF; } } + +.mobile-filters { + align: center; + text-align: center; + margin-top: 10px; } + +.vn-category-product-tiles.isMobileAndHidden { + display: none; } + +.facet-properties { + margin: 10px; } + +.facet-property label { + display: block; + position: relative; } + .facet-property label .count { + position: absolute; + top: 2px; + right: 0; + margin-left: 2px; + padding: 0 5px; + background-color: #999999; + color: white; + display: block; + border-radius: 2px; } +.facet-property input[type="checkbox"] { + display: none; } +.facet-property input[type="checkbox"] + span:before { + margin: 0; + padding: 0; + font-family: 'Glyphicons Halflings' !important; + padding-right: 3px !important; + margin-top: 3px !important; + font-size: 12px !important; + vertical-align: text-top; } +.facet-property input[type="checkbox"] + span:before { + content: "\e157" !important; + /* check-empty */ } +.facet-property input[type="checkbox"]:checked + span:before { + content: "\e067" !important; + /* check */ } +@media (max-width: 767px) { + .facet-property.isMobileAndVisible { + position: relative; + left: 0; + right: 0; + top: 0; + bottom: 0; + z-index: 1001; + background-color: #FFFFFF; } } + +.facet-item__by-price { + border-top: none !important; } + +.facet-item .ng-enter, .facet-item .ng-leave { + transition: 100ms ease-out all; } +.facet-item .ng-leave.ng-leave-active, .facet-item .ng-enter { + opacity: 0; } +.facet-item .ng-enter.ng-enter-active, .facet-item .ng-leave { + opacity: 1; } +.facet-item__by-price__inputs { + text-align: left; + margin: 0; + padding: 5px 15px; } +.facet-item__by-price__button { + float: right; + padding: 2px 5px !important; } + +.align-right { + text-align: right; } + +.align-left { + text-align: left; } + +.currency { + color: green; } + +.th-my-account .form-group .form-control, .th-checkout .form-group .form-control { + background-color: transparent; + height: 35px; + padding: 0px 3px; + font-size: 1.8rem; } + .th-my-account .form-group .form-control.btn-lg, .th-my-account .form-group .btn-group-lg > .form-control.btn, .th-checkout .form-group .form-control.btn-lg, .th-checkout .form-group .btn-group-lg > .form-control.btn { + /* This is the dropdown input control */ + height: 35px; + padding: 0px 3px; } +.th-my-account .form-group .th-dropdown .dropdown-toggle .caret, .th-checkout .form-group .th-dropdown .dropdown-toggle .caret { + position: absolute; + right: 4px; + top: 18px; } +.th-my-account .form-group .dropdown-menu, .th-checkout .form-group .dropdown-menu { + font-size: 15px; } +.th-my-account .form-group .vn-placeholder, .th-checkout .form-group .vn-placeholder { + left: 6px; } + .th-my-account .form-group .vn-placeholder.-selected, .th-checkout .form-group .vn-placeholder.-selected { + left: 6px; } +.th-my-account .form-group .th-dropdown .vn-placeholder, .th-checkout .form-group .th-dropdown .vn-placeholder { + left: 0px; + margin-left: 0px; } + +div[data-ng-click]:focus { + outline: none; } + +.clickable { + cursor: pointer; } + +/* */ +/*! IMAGE */ +/*!***************************************************************************/ +/*!***************************************************************************/ +/* */ +/*! LINK */ +/*!***************************************************************************/ +/*!***************************************************************************/ +.th-list { + margin: 10px 0px 10px 0px; + padding: 0; + background: #fafafa; + /* was $gray-lighter */ + border: 1px solid #ebebeb; + box-shadow: rgba(0, 0, 0, 0.14902) 0px 1px 1px 0px, rgba(0, 0, 0, 0.09804) 0px 1px 2px 0px; } + .th-list__item { + position: relative; } + .th-list__item [vn-address-display] { + cursor: default; } + .th-list__item__editBtn { + position: absolute; + top: 50%; + -webkit-transform: translateY(-50%); + transform: translateY(-50%); + right: 20px; } + .th-list__item:last-child .styled-optionbox-option { + border-bottom: 0px; } + .th-list__header__item { + padding: 20px; + border-bottom: 1px solid #ddd; + display: block; } + .th-list .styled-optionbox-option { + width: 100%; } + +.th-modal { + position: relative; } + .th-modal__button { + font-size: 12px !important; + width: 100%; + margin: 5px 0px; } + .th-modal__message { + font-size: 14px; + margin-bottom: 5px; } + .th-modal__body { + padding-top: 10px; } + .th-modal__close { + position: absolute; + z-index: 1; + top: 7px; + right: 10px; + font-size: 22px; } + .th-modal .styled-optionbox-option { + border-bottom: 0px; } + .th-modal .modal-header { + padding: 0px; } + .th-modal .modal-body { + padding: 25px 25px 10px 25px; } + .th-modal .modal-footer { + padding: 10px 20px; } + +.styled-optionbox-option { + text-align: left; + border-bottom: 1px solid #ddd; + padding: 20px 20px 20px 20px; } + .styled-optionbox-option:hover { + background-color: #fff; } + .styled-optionbox-option input { + display: none !important; } + .styled-optionbox-option input + div { + cursor: pointer; + margin: 0; + position: relative; + width: 100%; } + .styled-optionbox-option input + div > div { + margin: 0 0 0 20px; } + .styled-optionbox-option input + div:before { + content: '\f10c'; + font-family: 'FontAwesome'; + font-size: 16px; + display: inline-block; + line-height: 18px; + vertical-align: middle; + text-align: center; + color: #000; + margin-right: 5px; + font-weight: normal; + position: absolute; + top: 50%; + -webkit-transform: translateY(-50%); + transform: translateY(-50%); } + .styled-optionbox-option input:checked + div:before { + content: '\f192'; + font-family: 'FontAwesome'; } + +.vn-placeholder { + transition-property: font-size top; + transition-duration: .2s; + transition-timing-function: ease; + position: absolute; + font-family: 'roboto-light'; + font-size: 14px; + color: #999; + top: 14px; + left: 12px; + line-height: 14px; + cursor: text; } + .vn-placeholder.-selected { + top: -10px; + left: 12px; + font-size: 11px; + color: #999; } + .vn-placeholder.-focus { + color: #000; + font-family: 'roboto-bold'; } + +.input-help.bottom, .input-help.bottom-right { + top: 35px; } + +.input-help.top, .input-help.top-left { + bottom: 70px; } + +/* */ +/*! POPOVER +/*!---------------------------------------------------*/ +.input-help { + display: none; + position: absolute; + z-index: 999; + width: 240px; + padding: 10px; + background-color: #fff; + border: 1px solid rgba(0, 0, 0, 0.2); + border-radius: 0; + box-shadow: white 0 0 2px 2px; + /* */ + /*&.right { + bottom: 50px; + right: 0px; + + .arrow { + //top: 50%; + top: 17px; + left: -$popover-arrow-outer-width; + margin-top: -$popover-arrow-outer-width; + border-left-width: 0; + border-right-color: #999; + // IE8 fallback + border-right-color: $popover-arrow-outer-color; + &:after { + left: 1px; + bottom: -$popover-arrow-width; + border-left-width: 0; + border-right-color: $popover-arrow-color; + } + } + }*/ + /* */ + /*&.left { + bottom: 50px; + right: 0px; + + .arrow { + top: 50%; + right: -$popover-arrow-outer-width; + margin-top: -$popover-arrow-outer-width; + border-right-width: 0; + border-left-color: #999; + // IE8 fallback + border-left-color: $popover-arrow-outer-color; + &:after { + right: 1px; + border-right-width: 0; + border-left-color: $popover-arrow-color; + bottom: -$popover-arrow-width; + } + } + }*/ } + .input-help ul { + margin: 5px; + padding: 0; } + .input-help ul li { + font-size: 11px; } + .input-help .arrow, .input-help .arrow:after { + position: absolute; + display: block; + width: 0 !important; + height: 0 !important; + border-color: transparent; + border-style: solid; } + .input-help .arrow { + border-width: 11px; } + .input-help .arrow:after { + border-width: 10px; + content: ""; } + .input-help.top { + bottom: 60px; + right: 5px; } + .input-help.top .arrow { + right: 20px; + border-bottom-width: 0; + border-top-color: #999999; + border-top-color: fadein(rgba(0, 0, 0, 0.2), 5%); + bottom: -11px; } + .input-help.top .arrow:after { + bottom: 1px; + margin-left: -10px; + border-bottom-width: 0; + border-top-color: #fff; } + .input-help.top-left { + bottom: 60px; + left: 5px; } + .input-help.top-left.-dropdown { + bottom: 42px; + left: 0; } + .input-help.top-left .arrow { + left: 20px; + border-bottom-width: 0; + border-top-color: #999999; + border-top-color: fadein(rgba(0, 0, 0, 0.2), 5%); + bottom: -11px; } + .input-help.top-left .arrow:after { + bottom: 1px; + margin-left: -10px; + border-bottom-width: 0; + border-top-color: #fff; } + .input-help.bottom { + top: 42px; } + .input-help.bottom .arrow { + left: 20px; + border-top-width: 0; + border-bottom-color: #999999; + border-bottom-color: fadein(rgba(0, 0, 0, 0.2), 5%); + top: -11px; } + .input-help.bottom .arrow:after { + top: 1px; + margin-left: -10px; + border-top-width: 0; + border-bottom-color: #fff; } + .input-help.bottom-right { + top: 42px; + right: 5px; } + .input-help.bottom-right .arrow { + right: 20px; + border-top-width: 0; + border-bottom-color: #999999; + border-bottom-color: fadein(rgba(0, 0, 0, 0.2), 5%); + top: -11px; } + .input-help.bottom-right .arrow:after { + top: 1px; + margin-left: -10px; + border-top-width: 0; + border-bottom-color: #fff; } + +.input-help h4 { + margin: 0; + padding: 0; + font-family: "roboto-regular", Helvetica, Arial, sans-serif; + font-weight: bold; + font-size: 11px; + text-align: left; } + +/* Always hide the input help when it's pristine */ +input.ng-pristine + .input-help { + display: none !important; } + +/* Hide the invalid box while the input has focus */ +/*.ng-invalid:focus + .input-help { + display: none; +}*/ +/* */ +/* Show a blue border while an input has focus, make sure it overrides everything else */ +/* Overriding Twitter Bootstrap cuz I don't agree we need to alarm the user while they're typing */ +/*input:focus { + color: black !important; + border-color: rgba(82, 168, 236, 0.8) !important; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6) !important; + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6) !important; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6) !important; +}*/ +/* Show green border when stuff has been typed in, and its valid */ +.ng-dirty.ng-valid { + /*border-color:#3a7d34;*/ } + +/* Show red border when stuff has been typed in, but its invalid. Only after the first blur. */ +.ng-touched.ng-dirty.ng-invalid { + border-color: #EC3F41; + border-width: 2px; } + +/* Show the help box once it has focus */ +.immediate-help:focus + .input-help { + display: block; } + +.immediate-help.ng-valid:focus + .input-help { + display: none; } + +/* Immediate help should be red when pristine */ +.immediate-help.ng-pristine:focus + .input-help { + /*border-color:#ec3f41;*/ } + +.immediate-help.ng-pristine:focus + .input-help::before { + /*color:#ec3f41;*/ } + +/* Help hould be green when input is valid */ +.ng-valid + .input-help { + /*border-color:#3a7d34;*/ } + +.ng-valid + .input-help::before { + /*color:#3a7d34;*/ } + +/* Help should show and be red when invalid */ +.ng-invalid + .input-help { + /*border-color: #ec3f41;*/ + /*Change following row block for debugging input-help element*/ + display: none; } + +.ng-invalid + .input-help::before { + /*color: #ec3f41;*/ } + +/* Style input help requirement bullets */ +.input-help ul { + list-style: none; + margin: 10px 0 0 0; } + +/* Default each bullet to be invalid with a red cross and text */ +.input-help li { + padding-left: 22px; + line-height: 24px; + color: #EC3F41; + background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAA1CAYAAABIkmvkAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAAJwAAACcBKgmRTwAAABZ0RVh0Q3JlYXRpb24gVGltZQAxMC8wOS8xMlhq+BkAAAAcdEVYdFNvZnR3YXJlAEFkb2JlIEZpcmV3b3JrcyBDUzVxteM2AAAEA0lEQVRIie2WW2jbVRzHv//zT5rkn0ub61zaNdEiPqTC9EFRhtgJk63qg3Wr0806pswNiYgDUXxwyryCEB8UBevtaSCCDHQoboKyoVvVzfRmL2napU0mrdbl8s//dy4+dM1M28n64FsPnIdz+XzO75zfOXA0pRRWU7o/uS9FxOc+3/vlIQBgq4F3fHxvKuIPJ9cFwi9uTXU8BwDa1Uaw/aN7UusCkWRbPI5yxcTI2Bgy49kXrkrwwIedqYg/nGyLXwsJiYHBYWTGs7Cq5Kpt4cA3PXft+2rX40vhrt7OVLgplIzHYuBKoH9gCKMjGVE1LdfJl86YDAAOfN2ziZP4NODyv9/z2fanFuH7P9iWCjcFk/FYK4QSGLgEk0WeUy/3mQCgPXFs9xbBRW883NrssDvQN3hWcOLPEPGWiD94MBaPQymBoaERjI9mBSfu+fHwL+biItpjR3e6JFfloDeAaGQ9SpUycvlp6ExHJBKGYsDvgyMYH81KTsL90yuX4VoWdh3pMqSQpWBjAC3RZkgpYEkCFDA8NIqJ0UlFxI3Tr/5aB9elsau305BcloKBAFpjLeBSYGRwDBNjk4oTN06/dnYZXCcAgK1vbzYkl6VwOATihOzYlOLEjTOvn1sRXiYAgDsP32YIKUuWaXFOwtP3xrnqleAVBQBwy/M3GZy4+PnN3/4TvqJgNWVVj2lNsCZYE6wJ1gRrgv9dYAMAHHw2Bl2fUEpBVavtLPVW/78nVR/Zk4CupzVHA6zChSOK0yHv0S8GFyK4BMPhAJxOgLE03/9kYhE2dz+agKaldY8bDaEQ7D5ft7Roy+UIlCooy5LQdaZ5vVBEgGmmrT172yVxaIylmdcDm9cHc2oK1Zm8kETvLAo0pRRk8mmnEqKouVw68zVCzP8F/uccFHHoXi/sjT6Y53Mw83mhOHn8J7416wQAwPftd0ouiswwdJu/CRASkBKQAmYuBzNfWIC/O173W6llwfbeu6Yi8tDsrAQJYGICyGQAIWDO5KUkaxlcJwAASdSmaWAQHCACOAc4h6YzJi1qWymNNUHlwYcT0JDWXQbACYhGgeh6gHM4Ghuh2/R0YePNiaUCTSmFcvdDCY1paZvhht3nQ2VmGmahICSR5vQHmDt6DcozeZSnp2FdLLZHhwdq94SVd+xMaJqWtrkM2L1uVHILpy0t8igidymXExfHMzBCQbhCIdga7Onz8etqkdgkUYTZbYCSqORmULlQEIq4J3jyexMA8jdu9BRzuaKyLN3udkNjDEqICID+2hbm797Wwez24/T3vJTE3aFTP9Sd9vT1NziVEMUGr1c35+Y2b5jKnqgNKqWglMLspjs6/rj1dudie2mdao07J5s3dCzt/werJTyI1yYqpQAAAABJRU5ErkJggg==) no-repeat 2px -34px; + font-family: "roboto-regular", Helvetica, Arial, sans-serif; + font-weight: normal; + font-size: 11px; + text-align: left; } + +/* Set to green check and text when valid */ +.input-help li.valid { + color: #3A7D34; + background-position: 2px 6px; } + +.vn-product-option__select button { + min-width: 100px; } + .vn-product-option__select button span { + margin-left: 5px !important; } +.vn-product-option__select ul { + min-width: 100px; + left: 71px; + text-align: center; } + +/* */ +/*! RATING */ +/*!***************************************************************************/ +.tick:before { + content: '\2605'; } + +.rating { + margin: 0; + padding: 0; } + +ul.rating { + display: inline-block; } + +.rating li { + list-style-type: none; + display: inline-block; + padding: 1px; + text-align: center; + font-weight: bold; + cursor: pointer; + color: #000; } + +/*!***************************************************************************/ +.styled-optionbox-option .displayAddress .row div { + margin-bottom: 0px; } + +.displayAddress .row { + margin: 0 0 0 0; } +.displayAddress .row div { + margin-bottom: 10px; + margin-left: 0px; + margin-right: 0px; } + .displayAddress .row div:last { + margin-bottom: 0px; } + +.th-checkout__ship-method { + margin: 10px 0px 10px 0px; + background: #fafafa; + /* was $gray-lighter */ + border: 1px solid #ebebeb; + box-shadow: rgba(0, 0, 0, 0.14902) 0px 1px 1px 0px, rgba(0, 0, 0, 0.09804) 0px 1px 2px 0px; } + .th-checkout__ship-method__method { + position: relative; + margin: 0px; + width: 100%; + cursor: pointer; } + .th-checkout__ship-method__method .styled-optionbox-option label div { + margin-right: 70px; } + .th-checkout__ship-method__method:last-child .styled-optionbox-option { + border-bottom: 0; } + .th-checkout__ship-method__price { + position: absolute; + top: 50%; + -webkit-transform: translateY(-50%); + transform: translateY(-50%); + right: 20px; } + .th-checkout__ship-method__name { + margin: 0px 80px 0px 25px !important; } + .th-checkout__ship-method__display { + position: relative; + overflow: auto; } + .th-checkout__ship-method__display__name { + float: left; + padding: 20px; + padding-right: 90px; } + .th-checkout__ship-method__display__price { + position: absolute; + top: 22px; + right: 20px; + text-align: right; } + .th-checkout__ship-method .styled-checkbox-option input + label { + padding-right: 55px; + margin-left: 30px; } + .th-checkout__ship-method .styled-checkbox-option input + label:before { + margin-left: -30px; } + +.vn-dropdown { + position: relative; } + .vn-dropdown__menu.dropdown-menu { + width: 100%; + min-width: 180px; + max-height: 150px; + overflow-y: auto; + padding: 8px; } + .vn-dropdown__menu.dropdown-menu > li > a { + padding-left: 5px; + padding-right: 5px; } + @media (max-width: 992px) { + .vn-dropdown__menu.dropdown-menu > li > a { + padding-top: 8px; + padding-bottom: 8px; } } + .vn-dropdown__select { + display: none; + height: 1px; + width: 1px; } + +.th-checkout__login { + text-align: center; + background-color: white; + height: 100%; + margin: 50px 0px; } + .th-checkout__login__form { + margin: 20px; } + @media (max-width: 480px) { + .th-checkout__login__form { + margin: 0px; } } + .th-checkout__login__form .form-control { + font-size: 1.8rem; } + .th-checkout__login__error { + border-radius: 0; + color: #a94442; + background-color: #f2dede; + border: 1px solid #ebebeb; + box-shadow: rgba(0, 0, 0, 0.14902) 0px 1px 1px 0px, rgba(0, 0, 0, 0.09804) 0px 1px 2px 0px; + margin-bottom: 10px; + padding: 15px; } + @media (max-width: 480px) { + .th-checkout__login__error { + margin: 0px; } } + .th-checkout__login__user-type { + text-align: center; + padding: 0px 0px 20px 0px; } + .th-checkout__login__user-type .btn-group { + width: 100%; } + .th-checkout__login__user-type .btn-group button { + width: 50%; } + @media (max-width: 480px) { + .th-checkout__login__user-type .btn-group button { + font-size: 14px; } } + .th-checkout__login__continue { + margin-top: 20px; } + +.th-checkout__review__discounts__discount-info--subtotal, .th-checkout__review__store-credit-info--subtotal, .th-checkout__review__shipping-method-info--subtotal, .th-checkout__review__tax-info--subtotal, .th-checkout__review__grand-total-info--subtotal, .th-checkout__review__items__item-info--subtotal { + font-size: 1.5rem; + position: absolute; + right: 0; + top: 0; } + +.vn-page-checkout #main-content-area { + height: calc(100% - 160px); + overflow: hidden; } + @media (max-width: 992px) { + .vn-page-checkout #main-content-area { + height: auto; } } +.vn-page-checkout .th-checkout { + height: 100%; + margin-top: 0px; + margin-bottom: 0px; } + .vn-page-checkout .th-checkout__step { + height: 100%; } +.vn-page-checkout .th-checkout-footer { + margin-top: 0px; } + +.th-checkout__review { + padding: 17px; + margin-top: 20px; + background: #fafafa; + /* was $gray-lighter */ + border: 1px solid #ebebeb; + box-shadow: rgba(0, 0, 0, 0.14902) 0px 1px 1px 0px, rgba(0, 0, 0, 0.09804) 0px 1px 2px 0px; } + .th-checkout__review__totals { + border-bottom: 1px solid #ddd; + padding: 0px 0px 14px 0px; } + .th-checkout__review__totals__expand { + float: left; + margin-top: -4px; } + .th-checkout__review__totals__expand button { + border: none; + background-color: transparent; + outline: 0; + outline: none; } + .th-checkout__review__totals__expand span:after { + font-family: 'FontAwesome'; + content: '\f078'; + margin: 0 5px; } + .th-checkout__review__totals__expand.expanded span:after { + font-family: 'FontAwesome'; + content: '\f077'; + margin: 0 5px; } + .th-checkout__review__totals__count { + float: left; } + .th-checkout__review__totals__amount { + float: right; + font-size: 1.5rem; } + .th-checkout__review__discounts { + border-bottom: 1px solid #CCC; } + .th-checkout__review__discounts__discount { + margin: 14px 0; } + .th-checkout__review__discounts__discount .discount-info-row { + position: relative; } + .th-checkout__review__discounts__discount-info { + text-align: left; } + .th-checkout__review__store-credit { + border-bottom: 1px solid #ddd; } + .th-checkout__review__store-credit .store-credit-info-row { + position: relative; + margin: 14px 0; + text-align: left; } + .th-checkout__review__shipping-method { + border-bottom: 1px solid #ddd; } + .th-checkout__review__shipping-method .shipping-method-info-row { + position: relative; + margin: 14px 0; + text-align: left; } + .th-checkout__review__tax { + border-bottom: 1px solid #ddd; } + .th-checkout__review__tax .tax-info-row { + position: relative; + margin: 14px 0; + text-align: left; } + .th-checkout__review__grand-total .grand-total-info-row { + position: relative; + margin-top: 14px; + text-align: left; + font-size: 20px; + font-weight: bold; } + .th-checkout__review__grand-total-info--subtotal { + font-size: 20px; + font-weight: bold; } + .th-checkout__review__items { + padding: 10px 0; + overflow-y: auto; + height: 100%; + /*-webkit-transition : all linear 0.5s; + transition : all linear 0.5s;*/ + /*&.ng-hide-add { + -webkit-transition : all linear 0.5s; + transition : all linear 0.5s; + } + &.ng-hide-remove { + -webkit-transition : all linear 0.5s; + transition : all linear 0.5s; + }*/ } + .th-checkout__review__items--label { + text-transform: uppercase; } + .th-checkout__review__items__item { + position: relative; + margin-bottom: 10px; + border-bottom: 1px solid #CCC; } + .th-checkout__review__items__item.-last { + margin-bottom: 0; + border-bottom: 1px solid transparent; } + .th-checkout__review__items__item-image { + float: left; + margin-right: 10px; } + .th-checkout__review__items__item-image img { + max-height: 80px; + max-width: 80px; } + .th-checkout__review__items__item-info { + line-height: 1.2; + text-align: left; + margin-bottom: 5px; } + .th-checkout__review__items__item-info .item-info-row { + position: relative; } + .th-checkout__review__items__item-info--name { + white-space: nowrap; + overflow: hidden; + -ms-text-overflow: ellipsis; + -o-text-overflow: ellipsis; + text-overflow: ellipsis; } + +.th-checkout__thanks__header { + text-align: center; + font-size: 15px; + margin: 20px 0px; } + @media (max-width: 768px) { + .th-checkout__thanks__header { + margin-bottom: 0px; } } + .th-checkout__thanks__header .title { + font-weight: bold; + font-size: 21px; } + .th-checkout__thanks__header .action-info { + margin-top: 10px; + font-size: 12px; } +.th-checkout__thanks__column { + width: 50%; + float: left; + padding: 20px; } + @media (max-width: 768px) { + .th-checkout__thanks__column { + padding-top: 0px; + padding-bottom: 0px; } } + .th-checkout__thanks__column.-next { + border-left: 1px solid #ddd; } + .th-checkout__thanks__column .title { + margin-top: 20px; + font-weight: bold; + font-size: 15px; } +.th-checkout__thanks__display .row { + margin: 0; + padding: 0; } +.th-checkout__thanks__display .credit-card__number { + font-weight: bold; } +.th-checkout__thanks__display .credit-card__image { + border: none; + height: 30px; + width: 44px; + position: absolute; + top: 10px; + left: 170px; + background: url('/images/sprites/creditcards-b.png') -166px 0; } + .th-checkout__thanks__display .credit-card__image--notvalid { + -webkit-filter: grayscale(100%); + -moz-filter: grayscale(100%); + filter: grayscale(100%); } + .th-checkout__thanks__display .credit-card__image--flipped { + background: url('/images/sprites/creditcards-b.png') -291px 0; } + .th-checkout__thanks__display .credit-card__image--unknown { + background: url('/images/sprites/creditcards-b.png') -166px 0; } + .th-checkout__thanks__display .credit-card__image--amex { + background: url('/images/sprites/creditcards-b.png') 1px 0; } + .th-checkout__thanks__display .credit-card__image--amex-flipped { + background: url('/images/sprites/creditcards-b.png') -333px 0; } + .th-checkout__thanks__display .credit-card__image--visa { + background: url('/images/sprites/creditcards-b.png') -41px 0; } + .th-checkout__thanks__display .credit-card__image--mastercard { + background: url('/images/sprites/creditcards-b.png') -83px 0; } + .th-checkout__thanks__display .credit-card__image--discover { + background: url('/images/sprites/creditcards-b.png') -208px 0; } +.th-checkout__thanks__title { + font-weight: bold; + text-transform: uppercase; + text-align: center; + font-size: 2rem; + margin-top: 20px; } +.th-checkout__thanks__display { + margin: 10px; + padding: 20px 20px 10px 20px; + background: #fafafa; + /* was $gray-lighter */ + border: 1px solid #ebebeb; + box-shadow: rgba(0, 0, 0, 0.14902) 0px 1px 1px 0px, rgba(0, 0, 0, 0.09804) 0px 1px 2px 0px; + font-family: roboto-regular, Helvetica, Arial, sans-serif; + font-size: 15px; + line-height: 20px; + margin-bottom: 10px; } + .th-checkout__thanks__display__name { + float: left; + padding-right: 90px; } + .th-checkout__thanks__display__price { + position: absolute; + right: 20px; + text-align: right; } + +.th-my-account { + font-family: 'roboto-light'; + font-weight: normal; + font-size: 16px; } + .th-my-account__title { + font-size: 2rem; + padding-bottom: 10px; + margin-top: 10px; + margin-bottom: 10px; + border-bottom: 1px solid #EEE; } + .th-my-account__group { + margin-bottom: 30px; } + .th-my-account__group__links { + list-style: none; + margin: 0; + padding: 0; } + .th-my-account__group__links li { + margin-bottom: 10px; } + .th-my-account__group--header__title { + font-size: 25px; } + .th-my-account__overlay { + width: 100%; + height: 100%; + position: absolute; + top: 0px; + background-color: #fff; + z-index: 9999; + text-align: center; + opacity: 0.8; + filter: alpha(opacity=80); } + .th-my-account__overlay--loader { + position: absolute; + height: 80px; + width: 80px; + margin-top: -40px; + top: 50%; + left: 40%; } + .th-my-account__overlay svg path, .th-my-account__overlay svg rect { + fill: #333333; } + .th-my-account .animate-show { + opacity: 1; } + .th-my-account .animate-show.ng-hide-add.ng-hide-add-active, .th-my-account .animate-show.ng-hide-remove.ng-hide-remove-active { + transition: all linear 0.3s; } + .th-my-account .animate-show.ng-hide { + opacity: 0; } + .th-my-account .th-address__display__actions { + cursor: default; } + .th-my-account .th-address__choose__options__new-option { + border-bottom: 1px solid #ddd; } + .th-my-account .th-address__choose__options__option { + cursor: default; } + .th-my-account .th-address__choose__options__option:last-child .styled-optionbox-option { + border-bottom: 0px; } + +.th-orders-list { + font-size: 14px; + line-height: 1.5; + position: relative; } + .th-orders-list__page-size { + margin-bottom: 10px; } + .th-orders-list__pagination .pagination { + margin-top: 0px; } + +.th-order-list-view { + padding-left: 15px; + padding-right: 15px; + margin-bottom: 20px; } + .th-order-list-view__item { + font-size: 14px; + line-height: 1.5; + padding-left: 0px !important; + padding-right: 0px !important; } + .th-order-list-view__item-right { + text-align: right; } + .th-order-list-view__item__status { + font-style: italic; } + @media (max-width: 420px) { + .th-order-list-view__item { + font-size: 12px; } } + +.th-order-detail { + line-height: 1.3; + font-size: 14px; } + .th-order-detail__title { + font-size: 1.8rem; + margin-top: 10px; + margin-bottom: 10px; } + .th-order-detail__header__title { + font-size: 2.5rem; } + .th-order-detail__header__order-details { + font-size: 16px; } + .th-order-detail__header__order-details__order-status { + font-style: italic; } + .th-order-detail__header__order-date { + font-size: 16px; } + .th-order-detail .panel-footer > .row { + margin-bottom: 5px; } + .th-order-detail__items { + margin-top: 20px; } + .th-order-detail__items__product { + border-bottom: 1px solid #ddd; + padding: 15px 0px; } + .th-order-detail__items__product:first-child { + padding-top: 0px; } + .th-order-detail__items__product:last-child { + padding-bottom: 0px; + border-bottom: 0px; } + @media (max-width: 480px) { + .th-order-detail__items__product__name { + font-size: 12px; } } + .th-order-detail__items__product__qty { + font-size: 12px; } + .th-order-detail__items__product__options { + font-size: 12px; } + .th-order-detail__items__discount:last-child { + margin-bottom: 10px; } + .th-order-detail__paid-with__card-number { + padding-left: 20px; } + .th-order-detail__shipping__tracking-detail { + margin-bottom: 10px; } + +.breadcrumb { + padding: 0px; + font-size: 12px; } + .breadcrumb > li + li:before { + padding: 0 0px 0px 5px; } + +.th-cart-summary { + position: relative; + right: 0; + text-align: right; + top: 8px; + white-space: nowrap; } + @media only screen and (min-width: 768px) and (max-width: 991px) { + .th-cart-summary { + top: 23px; } } + @media only screen and (min-width: 992px) { + .th-cart-summary { + right: 13px; + top: 29px; } } + +.th-my-cart { + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + *vertical-align: auto; + zoom: 1; + *display: inline; + margin-left: 10px; + padding: 6px 0; } + .th-my-cart__number { + color: #f63e34; } + .th-my-cart__number:before { + content: "("; } + .th-my-cart__number:after { + content: ")"; } + +/* +Animation for products as facets of search are applied. [rough draft] +*/ +.-product-tile-animation.ng-enter, .-product-tile-animation.ng-leave { + transition: 100ms ease-out all; } + +/* ending enter and move styling + (this is what the element will animate from */ +.-product-tile-animation.ng-enter { + opacity: 0; } + +/* ending enter and move styling + (this is what the element will animate towards */ +.-product-tile-animation.ng-enter.ng-enter-active { + opacity: 1; } + +/* starting leave animation */ +.-product-tile-animation.ng-leave { + opacity: 1; } + +/* ending leave animation */ +.-product-tile-animation.ng-leave.ng-leave-active { + opacity: 0; } + +.categories { + min-height: 400px; } + +.th-dropdown .vn-placeholder { + margin-left: -10px; } +.th-dropdown .btn { + text-align: left; } +.th-dropdown-toggle { + margin-left: 5px; + margin-top: -3px; } + +.th-dropdown.open button.btn-default.dropdown-toggle { + background: none; } + +.th-elist { + border-bottom: 1px solid #d9d9d9; + padding: 12px 0; } + .th-elist__form { + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + *vertical-align: auto; + zoom: 1; + *display: inline; + white-space: nowrap; } + .th-elist__group { + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + *vertical-align: auto; + zoom: 1; + *display: inline; + margin: 0; } + .th-elist__input { + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + *vertical-align: auto; + zoom: 1; + *display: inline; + border-color: #d9d9d9; + height: 31px; + margin: 0; + min-width: 162px; } + .th-elist__input:focus { + border-color: #737373; } + .th-elist__submit { + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + *vertical-align: auto; + zoom: 1; + *display: inline; + background: #000000; + border: 0; + color: white; + font-size: 1.5rem; + padding: 5px 10px; } + .th-elist__submit:hover { + background: #000000; + color: white; } + .th-elist__title { + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + *vertical-align: auto; + zoom: 1; + *display: inline; + font-family: "RobotoCondensed-Regular"; + font-size: 1.4rem; + font-weight: normal; + margin-right: 13px; + text-transform: uppercase; } + +@media only screen and (min-width: 1200px) { .th-elist { border-bottom: 0; padding: 0 0 25px 35px; } @@ -5793,6 +7325,12 @@ html, body { .th-navbar .navbar-toggle { display: none; } } +.input-help.bottom, .input-help.bottom-right { + top: 35px; } + +.input-help.top, .input-help.top-left { + bottom: 70px; } + /* */ /*! POPOVER /*!---------------------------------------------------*/ @@ -6906,7 +8444,7 @@ label { .btn:focus { outline: 0; } .btn.btn-lg, .btn-group-lg > .btn { - font-size: 1.8rem; + font-size: 1.6rem; letter-spacing: 1px; } .btn.btn-grey-sm { background: #f0f0f0; diff --git a/styles/e1633f8e.vendor.css b/styles/e1633f8e.vendor.css deleted file mode 100644 index c770a7cc..00000000 --- a/styles/e1633f8e.vendor.css +++ /dev/null @@ -1,4 +0,0 @@ -body,html{margin:0;padding:0;width:100%;overflow:hidden}.snap-content,.snap-drawers,.x-snap-content,.x-snap-drawers,[data-snap-content],[data-snap-drawers],[snap-content],[snap-drawers],[snap\:content],[snap\:drawers],[x-snap-content],[x-snap-drawers],snap-content,snap-drawers{position:absolute;height:auto;top:0;bottom:0;width:auto;left:0;right:0}.snap-drawer,.x-snap-drawer,[data-snap-drawer],[snap-drawer],[snap\:drawer],[x-snap-drawer],snap-drawer{position:absolute;height:auto;top:0;bottom:0;overflow:auto;-webkit-transition:bottom .2s linear;-moz-transition:bottom .2s linear;-o-transition:bottom .2s linear;transition:bottom .2s linear;-webkit-overflow-scrolling:touch;-moz-overflow-scrolling:touch;-o-overflow-scrolling:touch;overflow-scrolling:touch;width:265px}.snap-content{z-index:2;-webkit-transform:translate3d(0,0,0);-moz-transform:translate3d(0,0,0);-o-transform:translate3d(0,0,0);transform:translate3d(0,0,0);overflow:auto;-webkit-overflow-scrolling:touch;-moz-overflow-scrolling:touch;-o-overflow-scrolling:touch;overflow-scrolling:touch}.snap-drawer-left{left:0;z-index:1}.snap-drawer-right{right:0;z-index:1}.snapjs-left .snap-drawer-right,.snapjs-right .snap-drawer-left{display:none}.snapjs-expand-left .snap-drawer-left,.snapjs-expand-right .snap-drawer-right{width:100%}/*! - * Font Awesome 4.2.0 by @davegandy - http://fontawesome.io - @fontawesome - * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) - */@font-face{font-family:FontAwesome;src:url(../fonts/fontawesome-webfont.eot?v=4.2.0);src:url(../fonts/fontawesome-webfont.eot?#iefix&v=4.2.0) format('embedded-opentype'),url(../fonts/fontawesome-webfont.woff?v=4.2.0) format('woff'),url(../fonts/fontawesome-webfont.ttf?v=4.2.0) format('truetype'),url(../fonts/fontawesome-webfont.svg?v=4.2.0#fontawesomeregular) format('svg');font-weight:400;font-style:normal}.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:.08em solid #eee;border-radius:.1em}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1);-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2);-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3);-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1);-webkit-transform:scale(-1,1);-ms-transform:scale(-1,1);transform:scale(-1,1)}.fa-flip-vertical{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1);-webkit-transform:scale(1,-1);-ms-transform:scale(1,-1);transform:scale(1,-1)}:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-rotate-90{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:"\f000"}.fa-music:before{content:"\f001"}.fa-search:before{content:"\f002"}.fa-envelope-o:before{content:"\f003"}.fa-heart:before{content:"\f004"}.fa-star:before{content:"\f005"}.fa-star-o:before{content:"\f006"}.fa-user:before{content:"\f007"}.fa-film:before{content:"\f008"}.fa-th-large:before{content:"\f009"}.fa-th:before{content:"\f00a"}.fa-th-list:before{content:"\f00b"}.fa-check:before{content:"\f00c"}.fa-close:before,.fa-remove:before,.fa-times:before{content:"\f00d"}.fa-search-plus:before{content:"\f00e"}.fa-search-minus:before{content:"\f010"}.fa-power-off:before{content:"\f011"}.fa-signal:before{content:"\f012"}.fa-cog:before,.fa-gear:before{content:"\f013"}.fa-trash-o:before{content:"\f014"}.fa-home:before{content:"\f015"}.fa-file-o:before{content:"\f016"}.fa-clock-o:before{content:"\f017"}.fa-road:before{content:"\f018"}.fa-download:before{content:"\f019"}.fa-arrow-circle-o-down:before{content:"\f01a"}.fa-arrow-circle-o-up:before{content:"\f01b"}.fa-inbox:before{content:"\f01c"}.fa-play-circle-o:before{content:"\f01d"}.fa-repeat:before,.fa-rotate-right:before{content:"\f01e"}.fa-refresh:before{content:"\f021"}.fa-list-alt:before{content:"\f022"}.fa-lock:before{content:"\f023"}.fa-flag:before{content:"\f024"}.fa-headphones:before{content:"\f025"}.fa-volume-off:before{content:"\f026"}.fa-volume-down:before{content:"\f027"}.fa-volume-up:before{content:"\f028"}.fa-qrcode:before{content:"\f029"}.fa-barcode:before{content:"\f02a"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-book:before{content:"\f02d"}.fa-bookmark:before{content:"\f02e"}.fa-print:before{content:"\f02f"}.fa-camera:before{content:"\f030"}.fa-font:before{content:"\f031"}.fa-bold:before{content:"\f032"}.fa-italic:before{content:"\f033"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-align-left:before{content:"\f036"}.fa-align-center:before{content:"\f037"}.fa-align-right:before{content:"\f038"}.fa-align-justify:before{content:"\f039"}.fa-list:before{content:"\f03a"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-indent:before{content:"\f03c"}.fa-video-camera:before{content:"\f03d"}.fa-image:before,.fa-photo:before,.fa-picture-o:before{content:"\f03e"}.fa-pencil:before{content:"\f040"}.fa-map-marker:before{content:"\f041"}.fa-adjust:before{content:"\f042"}.fa-tint:before{content:"\f043"}.fa-edit:before,.fa-pencil-square-o:before{content:"\f044"}.fa-share-square-o:before{content:"\f045"}.fa-check-square-o:before{content:"\f046"}.fa-arrows:before{content:"\f047"}.fa-step-backward:before{content:"\f048"}.fa-fast-backward:before{content:"\f049"}.fa-backward:before{content:"\f04a"}.fa-play:before{content:"\f04b"}.fa-pause:before{content:"\f04c"}.fa-stop:before{content:"\f04d"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before{content:"\f050"}.fa-step-forward:before{content:"\f051"}.fa-eject:before{content:"\f052"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-plus-circle:before{content:"\f055"}.fa-minus-circle:before{content:"\f056"}.fa-times-circle:before{content:"\f057"}.fa-check-circle:before{content:"\f058"}.fa-question-circle:before{content:"\f059"}.fa-info-circle:before{content:"\f05a"}.fa-crosshairs:before{content:"\f05b"}.fa-times-circle-o:before{content:"\f05c"}.fa-check-circle-o:before{content:"\f05d"}.fa-ban:before{content:"\f05e"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-down:before{content:"\f063"}.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-expand:before{content:"\f065"}.fa-compress:before{content:"\f066"}.fa-plus:before{content:"\f067"}.fa-minus:before{content:"\f068"}.fa-asterisk:before{content:"\f069"}.fa-exclamation-circle:before{content:"\f06a"}.fa-gift:before{content:"\f06b"}.fa-leaf:before{content:"\f06c"}.fa-fire:before{content:"\f06d"}.fa-eye:before{content:"\f06e"}.fa-eye-slash:before{content:"\f070"}.fa-exclamation-triangle:before,.fa-warning:before{content:"\f071"}.fa-plane:before{content:"\f072"}.fa-calendar:before{content:"\f073"}.fa-random:before{content:"\f074"}.fa-comment:before{content:"\f075"}.fa-magnet:before{content:"\f076"}.fa-chevron-up:before{content:"\f077"}.fa-chevron-down:before{content:"\f078"}.fa-retweet:before{content:"\f079"}.fa-shopping-cart:before{content:"\f07a"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-arrows-v:before{content:"\f07d"}.fa-arrows-h:before{content:"\f07e"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:"\f080"}.fa-twitter-square:before{content:"\f081"}.fa-facebook-square:before{content:"\f082"}.fa-camera-retro:before{content:"\f083"}.fa-key:before{content:"\f084"}.fa-cogs:before,.fa-gears:before{content:"\f085"}.fa-comments:before{content:"\f086"}.fa-thumbs-o-up:before{content:"\f087"}.fa-thumbs-o-down:before{content:"\f088"}.fa-star-half:before{content:"\f089"}.fa-heart-o:before{content:"\f08a"}.fa-sign-out:before{content:"\f08b"}.fa-linkedin-square:before{content:"\f08c"}.fa-thumb-tack:before{content:"\f08d"}.fa-external-link:before{content:"\f08e"}.fa-sign-in:before{content:"\f090"}.fa-trophy:before{content:"\f091"}.fa-github-square:before{content:"\f092"}.fa-upload:before{content:"\f093"}.fa-lemon-o:before{content:"\f094"}.fa-phone:before{content:"\f095"}.fa-square-o:before{content:"\f096"}.fa-bookmark-o:before{content:"\f097"}.fa-phone-square:before{content:"\f098"}.fa-twitter:before{content:"\f099"}.fa-facebook:before{content:"\f09a"}.fa-github:before{content:"\f09b"}.fa-unlock:before{content:"\f09c"}.fa-credit-card:before{content:"\f09d"}.fa-rss:before{content:"\f09e"}.fa-hdd-o:before{content:"\f0a0"}.fa-bullhorn:before{content:"\f0a1"}.fa-bell:before{content:"\f0f3"}.fa-certificate:before{content:"\f0a3"}.fa-hand-o-right:before{content:"\f0a4"}.fa-hand-o-left:before{content:"\f0a5"}.fa-hand-o-up:before{content:"\f0a6"}.fa-hand-o-down:before{content:"\f0a7"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-globe:before{content:"\f0ac"}.fa-wrench:before{content:"\f0ad"}.fa-tasks:before{content:"\f0ae"}.fa-filter:before{content:"\f0b0"}.fa-briefcase:before{content:"\f0b1"}.fa-arrows-alt:before{content:"\f0b2"}.fa-group:before,.fa-users:before{content:"\f0c0"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-cloud:before{content:"\f0c2"}.fa-flask:before{content:"\f0c3"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-copy:before,.fa-files-o:before{content:"\f0c5"}.fa-paperclip:before{content:"\f0c6"}.fa-floppy-o:before,.fa-save:before{content:"\f0c7"}.fa-square:before{content:"\f0c8"}.fa-bars:before,.fa-navicon:before,.fa-reorder:before{content:"\f0c9"}.fa-list-ul:before{content:"\f0ca"}.fa-list-ol:before{content:"\f0cb"}.fa-strikethrough:before{content:"\f0cc"}.fa-underline:before{content:"\f0cd"}.fa-table:before{content:"\f0ce"}.fa-magic:before{content:"\f0d0"}.fa-truck:before{content:"\f0d1"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-square:before{content:"\f0d3"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-plus:before{content:"\f0d5"}.fa-money:before{content:"\f0d6"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-up:before{content:"\f0d8"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-columns:before{content:"\f0db"}.fa-sort:before,.fa-unsorted:before{content:"\f0dc"}.fa-sort-desc:before,.fa-sort-down:before{content:"\f0dd"}.fa-sort-asc:before,.fa-sort-up:before{content:"\f0de"}.fa-envelope:before{content:"\f0e0"}.fa-linkedin:before{content:"\f0e1"}.fa-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-gavel:before,.fa-legal:before{content:"\f0e3"}.fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"}.fa-comment-o:before{content:"\f0e5"}.fa-comments-o:before{content:"\f0e6"}.fa-bolt:before,.fa-flash:before{content:"\f0e7"}.fa-sitemap:before{content:"\f0e8"}.fa-umbrella:before{content:"\f0e9"}.fa-clipboard:before,.fa-paste:before{content:"\f0ea"}.fa-lightbulb-o:before{content:"\f0eb"}.fa-exchange:before{content:"\f0ec"}.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-upload:before{content:"\f0ee"}.fa-user-md:before{content:"\f0f0"}.fa-stethoscope:before{content:"\f0f1"}.fa-suitcase:before{content:"\f0f2"}.fa-bell-o:before{content:"\f0a2"}.fa-coffee:before{content:"\f0f4"}.fa-cutlery:before{content:"\f0f5"}.fa-file-text-o:before{content:"\f0f6"}.fa-building-o:before{content:"\f0f7"}.fa-hospital-o:before{content:"\f0f8"}.fa-ambulance:before{content:"\f0f9"}.fa-medkit:before{content:"\f0fa"}.fa-fighter-jet:before{content:"\f0fb"}.fa-beer:before{content:"\f0fc"}.fa-h-square:before{content:"\f0fd"}.fa-plus-square:before{content:"\f0fe"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-down:before{content:"\f107"}.fa-desktop:before{content:"\f108"}.fa-laptop:before{content:"\f109"}.fa-tablet:before{content:"\f10a"}.fa-mobile-phone:before,.fa-mobile:before{content:"\f10b"}.fa-circle-o:before{content:"\f10c"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-spinner:before{content:"\f110"}.fa-circle:before{content:"\f111"}.fa-mail-reply:before,.fa-reply:before{content:"\f112"}.fa-github-alt:before{content:"\f113"}.fa-folder-o:before{content:"\f114"}.fa-folder-open-o:before{content:"\f115"}.fa-smile-o:before{content:"\f118"}.fa-frown-o:before{content:"\f119"}.fa-meh-o:before{content:"\f11a"}.fa-gamepad:before{content:"\f11b"}.fa-keyboard-o:before{content:"\f11c"}.fa-flag-o:before{content:"\f11d"}.fa-flag-checkered:before{content:"\f11e"}.fa-terminal:before{content:"\f120"}.fa-code:before{content:"\f121"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f123"}.fa-location-arrow:before{content:"\f124"}.fa-crop:before{content:"\f125"}.fa-code-fork:before{content:"\f126"}.fa-chain-broken:before,.fa-unlink:before{content:"\f127"}.fa-question:before{content:"\f128"}.fa-info:before{content:"\f129"}.fa-exclamation:before{content:"\f12a"}.fa-superscript:before{content:"\f12b"}.fa-subscript:before{content:"\f12c"}.fa-eraser:before{content:"\f12d"}.fa-puzzle-piece:before{content:"\f12e"}.fa-microphone:before{content:"\f130"}.fa-microphone-slash:before{content:"\f131"}.fa-shield:before{content:"\f132"}.fa-calendar-o:before{content:"\f133"}.fa-fire-extinguisher:before{content:"\f134"}.fa-rocket:before{content:"\f135"}.fa-maxcdn:before{content:"\f136"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-html5:before{content:"\f13b"}.fa-css3:before{content:"\f13c"}.fa-anchor:before{content:"\f13d"}.fa-unlock-alt:before{content:"\f13e"}.fa-bullseye:before{content:"\f140"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-rss-square:before{content:"\f143"}.fa-play-circle:before{content:"\f144"}.fa-ticket:before{content:"\f145"}.fa-minus-square:before{content:"\f146"}.fa-minus-square-o:before{content:"\f147"}.fa-level-up:before{content:"\f148"}.fa-level-down:before{content:"\f149"}.fa-check-square:before{content:"\f14a"}.fa-pencil-square:before{content:"\f14b"}.fa-external-link-square:before{content:"\f14c"}.fa-share-square:before{content:"\f14d"}.fa-compass:before{content:"\f14e"}.fa-caret-square-o-down:before,.fa-toggle-down:before{content:"\f150"}.fa-caret-square-o-up:before,.fa-toggle-up:before{content:"\f151"}.fa-caret-square-o-right:before,.fa-toggle-right:before{content:"\f152"}.fa-eur:before,.fa-euro:before{content:"\f153"}.fa-gbp:before{content:"\f154"}.fa-dollar:before,.fa-usd:before{content:"\f155"}.fa-inr:before,.fa-rupee:before{content:"\f156"}.fa-cny:before,.fa-jpy:before,.fa-rmb:before,.fa-yen:before{content:"\f157"}.fa-rouble:before,.fa-rub:before,.fa-ruble:before{content:"\f158"}.fa-krw:before,.fa-won:before{content:"\f159"}.fa-bitcoin:before,.fa-btc:before{content:"\f15a"}.fa-file:before{content:"\f15b"}.fa-file-text:before{content:"\f15c"}.fa-sort-alpha-asc:before{content:"\f15d"}.fa-sort-alpha-desc:before{content:"\f15e"}.fa-sort-amount-asc:before{content:"\f160"}.fa-sort-amount-desc:before{content:"\f161"}.fa-sort-numeric-asc:before{content:"\f162"}.fa-sort-numeric-desc:before{content:"\f163"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbs-down:before{content:"\f165"}.fa-youtube-square:before{content:"\f166"}.fa-youtube:before{content:"\f167"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-youtube-play:before{content:"\f16a"}.fa-dropbox:before{content:"\f16b"}.fa-stack-overflow:before{content:"\f16c"}.fa-instagram:before{content:"\f16d"}.fa-flickr:before{content:"\f16e"}.fa-adn:before{content:"\f170"}.fa-bitbucket:before{content:"\f171"}.fa-bitbucket-square:before{content:"\f172"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-long-arrow-down:before{content:"\f175"}.fa-long-arrow-up:before{content:"\f176"}.fa-long-arrow-left:before{content:"\f177"}.fa-long-arrow-right:before{content:"\f178"}.fa-apple:before{content:"\f179"}.fa-windows:before{content:"\f17a"}.fa-android:before{content:"\f17b"}.fa-linux:before{content:"\f17c"}.fa-dribbble:before{content:"\f17d"}.fa-skype:before{content:"\f17e"}.fa-foursquare:before{content:"\f180"}.fa-trello:before{content:"\f181"}.fa-female:before{content:"\f182"}.fa-male:before{content:"\f183"}.fa-gittip:before{content:"\f184"}.fa-sun-o:before{content:"\f185"}.fa-moon-o:before{content:"\f186"}.fa-archive:before{content:"\f187"}.fa-bug:before{content:"\f188"}.fa-vk:before{content:"\f189"}.fa-weibo:before{content:"\f18a"}.fa-renren:before{content:"\f18b"}.fa-pagelines:before{content:"\f18c"}.fa-stack-exchange:before{content:"\f18d"}.fa-arrow-circle-o-right:before{content:"\f18e"}.fa-arrow-circle-o-left:before{content:"\f190"}.fa-caret-square-o-left:before,.fa-toggle-left:before{content:"\f191"}.fa-dot-circle-o:before{content:"\f192"}.fa-wheelchair:before{content:"\f193"}.fa-vimeo-square:before{content:"\f194"}.fa-try:before,.fa-turkish-lira:before{content:"\f195"}.fa-plus-square-o:before{content:"\f196"}.fa-space-shuttle:before{content:"\f197"}.fa-slack:before{content:"\f198"}.fa-envelope-square:before{content:"\f199"}.fa-wordpress:before{content:"\f19a"}.fa-openid:before{content:"\f19b"}.fa-bank:before,.fa-institution:before,.fa-university:before{content:"\f19c"}.fa-graduation-cap:before,.fa-mortar-board:before{content:"\f19d"}.fa-yahoo:before{content:"\f19e"}.fa-google:before{content:"\f1a0"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-square:before{content:"\f1a2"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-stumbleupon:before{content:"\f1a4"}.fa-delicious:before{content:"\f1a5"}.fa-digg:before{content:"\f1a6"}.fa-pied-piper:before{content:"\f1a7"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-drupal:before{content:"\f1a9"}.fa-joomla:before{content:"\f1aa"}.fa-language:before{content:"\f1ab"}.fa-fax:before{content:"\f1ac"}.fa-building:before{content:"\f1ad"}.fa-child:before{content:"\f1ae"}.fa-paw:before{content:"\f1b0"}.fa-spoon:before{content:"\f1b1"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-recycle:before{content:"\f1b8"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-tree:before{content:"\f1bb"}.fa-spotify:before{content:"\f1bc"}.fa-deviantart:before{content:"\f1bd"}.fa-soundcloud:before{content:"\f1be"}.fa-database:before{content:"\f1c0"}.fa-file-pdf-o:before{content:"\f1c1"}.fa-file-word-o:before{content:"\f1c2"}.fa-file-excel-o:before{content:"\f1c3"}.fa-file-powerpoint-o:before{content:"\f1c4"}.fa-file-image-o:before,.fa-file-photo-o:before,.fa-file-picture-o:before{content:"\f1c5"}.fa-file-archive-o:before,.fa-file-zip-o:before{content:"\f1c6"}.fa-file-audio-o:before,.fa-file-sound-o:before{content:"\f1c7"}.fa-file-movie-o:before,.fa-file-video-o:before{content:"\f1c8"}.fa-file-code-o:before{content:"\f1c9"}.fa-vine:before{content:"\f1ca"}.fa-codepen:before{content:"\f1cb"}.fa-jsfiddle:before{content:"\f1cc"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-ring:before,.fa-life-saver:before,.fa-support:before{content:"\f1cd"}.fa-circle-o-notch:before{content:"\f1ce"}.fa-ra:before,.fa-rebel:before{content:"\f1d0"}.fa-empire:before,.fa-ge:before{content:"\f1d1"}.fa-git-square:before{content:"\f1d2"}.fa-git:before{content:"\f1d3"}.fa-hacker-news:before{content:"\f1d4"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-qq:before{content:"\f1d6"}.fa-wechat:before,.fa-weixin:before{content:"\f1d7"}.fa-paper-plane:before,.fa-send:before{content:"\f1d8"}.fa-paper-plane-o:before,.fa-send-o:before{content:"\f1d9"}.fa-history:before{content:"\f1da"}.fa-circle-thin:before{content:"\f1db"}.fa-header:before{content:"\f1dc"}.fa-paragraph:before{content:"\f1dd"}.fa-sliders:before{content:"\f1de"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-bomb:before{content:"\f1e2"}.fa-futbol-o:before,.fa-soccer-ball-o:before{content:"\f1e3"}.fa-tty:before{content:"\f1e4"}.fa-binoculars:before{content:"\f1e5"}.fa-plug:before{content:"\f1e6"}.fa-slideshare:before{content:"\f1e7"}.fa-twitch:before{content:"\f1e8"}.fa-yelp:before{content:"\f1e9"}.fa-newspaper-o:before{content:"\f1ea"}.fa-wifi:before{content:"\f1eb"}.fa-calculator:before{content:"\f1ec"}.fa-paypal:before{content:"\f1ed"}.fa-google-wallet:before{content:"\f1ee"}.fa-cc-visa:before{content:"\f1f0"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-bell-slash:before{content:"\f1f6"}.fa-bell-slash-o:before{content:"\f1f7"}.fa-trash:before{content:"\f1f8"}.fa-copyright:before{content:"\f1f9"}.fa-at:before{content:"\f1fa"}.fa-eyedropper:before{content:"\f1fb"}.fa-paint-brush:before{content:"\f1fc"}.fa-birthday-cake:before{content:"\f1fd"}.fa-area-chart:before{content:"\f1fe"}.fa-pie-chart:before{content:"\f200"}.fa-line-chart:before{content:"\f201"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-bicycle:before{content:"\f206"}.fa-bus:before{content:"\f207"}.fa-ioxhost:before{content:"\f208"}.fa-angellist:before{content:"\f209"}.fa-cc:before{content:"\f20a"}.fa-ils:before,.fa-shekel:before,.fa-sheqel:before{content:"\f20b"}.fa-meanpath:before{content:"\f20c"}/*! vn-toolbox-common - ver.1.0.6 (2015-03-11) *//*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,:after,:before{background:0 0!important;color:#000!important;box-shadow:none!important;text-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="#"]:after,a[href^="javascript:"]:after{content:""}blockquote,pre{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}img{max-width:100%!important}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}select{background:#fff!important}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #ddd!important}}@font-face{font-family:'Glyphicons Halflings';src:url(../fonts/bootstrap/glyphicons-halflings-regular.eot);src:url(../fonts/bootstrap/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(../fonts/bootstrap/glyphicons-halflings-regular.woff2) format('woff2'),url(../fonts/bootstrap/glyphicons-halflings-regular.woff) format('woff'),url(../fonts/bootstrap/glyphicons-halflings-regular.ttf) format('truetype'),url(../fonts/bootstrap/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format('svg')}@media (min-width:768px){.lead{font-size:21px}}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}@media (min-width:768px){.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9{float:left}.col-sm-1{width:8.3333333333%}.col-sm-2{width:16.6666666667%}.col-sm-3{width:25%}.col-sm-4{width:33.3333333333%}.col-sm-5{width:41.6666666667%}.col-sm-6{width:50%}.col-sm-7{width:58.3333333333%}.col-sm-8{width:66.6666666667%}.col-sm-9{width:75%}.col-sm-10{width:83.3333333333%}.col-sm-11{width:91.6666666667%}.col-sm-12{width:100%}.col-sm-pull-0{right:auto}.col-sm-pull-1{right:8.3333333333%}.col-sm-pull-2{right:16.6666666667%}.col-sm-pull-3{right:25%}.col-sm-pull-4{right:33.3333333333%}.col-sm-pull-5{right:41.6666666667%}.col-sm-pull-6{right:50%}.col-sm-pull-7{right:58.3333333333%}.col-sm-pull-8{right:66.6666666667%}.col-sm-pull-9{right:75%}.col-sm-pull-10{right:83.3333333333%}.col-sm-pull-11{right:91.6666666667%}.col-sm-pull-12{right:100%}.col-sm-push-0{left:auto}.col-sm-push-1{left:8.3333333333%}.col-sm-push-2{left:16.6666666667%}.col-sm-push-3{left:25%}.col-sm-push-4{left:33.3333333333%}.col-sm-push-5{left:41.6666666667%}.col-sm-push-6{left:50%}.col-sm-push-7{left:58.3333333333%}.col-sm-push-8{left:66.6666666667%}.col-sm-push-9{left:75%}.col-sm-push-10{left:83.3333333333%}.col-sm-push-11{left:91.6666666667%}.col-sm-push-12{left:100%}.col-sm-offset-0{margin-left:0}.col-sm-offset-1{margin-left:8.3333333333%}.col-sm-offset-2{margin-left:16.6666666667%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-4{margin-left:33.3333333333%}.col-sm-offset-5{margin-left:41.6666666667%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-7{margin-left:58.3333333333%}.col-sm-offset-8{margin-left:66.6666666667%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-10{margin-left:83.3333333333%}.col-sm-offset-11{margin-left:91.6666666667%}.col-sm-offset-12{margin-left:100%}}@media (min-width:992px){.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9{float:left}.col-md-1{width:8.3333333333%}.col-md-2{width:16.6666666667%}.col-md-3{width:25%}.col-md-4{width:33.3333333333%}.col-md-5{width:41.6666666667%}.col-md-6{width:50%}.col-md-7{width:58.3333333333%}.col-md-8{width:66.6666666667%}.col-md-9{width:75%}.col-md-10{width:83.3333333333%}.col-md-11{width:91.6666666667%}.col-md-12{width:100%}.col-md-pull-0{right:auto}.col-md-pull-1{right:8.3333333333%}.col-md-pull-2{right:16.6666666667%}.col-md-pull-3{right:25%}.col-md-pull-4{right:33.3333333333%}.col-md-pull-5{right:41.6666666667%}.col-md-pull-6{right:50%}.col-md-pull-7{right:58.3333333333%}.col-md-pull-8{right:66.6666666667%}.col-md-pull-9{right:75%}.col-md-pull-10{right:83.3333333333%}.col-md-pull-11{right:91.6666666667%}.col-md-pull-12{right:100%}.col-md-push-0{left:auto}.col-md-push-1{left:8.3333333333%}.col-md-push-2{left:16.6666666667%}.col-md-push-3{left:25%}.col-md-push-4{left:33.3333333333%}.col-md-push-5{left:41.6666666667%}.col-md-push-6{left:50%}.col-md-push-7{left:58.3333333333%}.col-md-push-8{left:66.6666666667%}.col-md-push-9{left:75%}.col-md-push-10{left:83.3333333333%}.col-md-push-11{left:91.6666666667%}.col-md-push-12{left:100%}.col-md-offset-0{margin-left:0}.col-md-offset-1{margin-left:8.3333333333%}.col-md-offset-2{margin-left:16.6666666667%}.col-md-offset-3{margin-left:25%}.col-md-offset-4{margin-left:33.3333333333%}.col-md-offset-5{margin-left:41.6666666667%}.col-md-offset-6{margin-left:50%}.col-md-offset-7{margin-left:58.3333333333%}.col-md-offset-8{margin-left:66.6666666667%}.col-md-offset-9{margin-left:75%}.col-md-offset-10{margin-left:83.3333333333%}.col-md-offset-11{margin-left:91.6666666667%}.col-md-offset-12{margin-left:100%}}@media (min-width:1200px){.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9{float:left}.col-lg-1{width:8.3333333333%}.col-lg-2{width:16.6666666667%}.col-lg-3{width:25%}.col-lg-4{width:33.3333333333%}.col-lg-5{width:41.6666666667%}.col-lg-6{width:50%}.col-lg-7{width:58.3333333333%}.col-lg-8{width:66.6666666667%}.col-lg-9{width:75%}.col-lg-10{width:83.3333333333%}.col-lg-11{width:91.6666666667%}.col-lg-12{width:100%}.col-lg-pull-0{right:auto}.col-lg-pull-1{right:8.3333333333%}.col-lg-pull-2{right:16.6666666667%}.col-lg-pull-3{right:25%}.col-lg-pull-4{right:33.3333333333%}.col-lg-pull-5{right:41.6666666667%}.col-lg-pull-6{right:50%}.col-lg-pull-7{right:58.3333333333%}.col-lg-pull-8{right:66.6666666667%}.col-lg-pull-9{right:75%}.col-lg-pull-10{right:83.3333333333%}.col-lg-pull-11{right:91.6666666667%}.col-lg-pull-12{right:100%}.col-lg-push-0{left:auto}.col-lg-push-1{left:8.3333333333%}.col-lg-push-2{left:16.6666666667%}.col-lg-push-3{left:25%}.col-lg-push-4{left:33.3333333333%}.col-lg-push-5{left:41.6666666667%}.col-lg-push-6{left:50%}.col-lg-push-7{left:58.3333333333%}.col-lg-push-8{left:66.6666666667%}.col-lg-push-9{left:75%}.col-lg-push-10{left:83.3333333333%}.col-lg-push-11{left:91.6666666667%}.col-lg-push-12{left:100%}.col-lg-offset-0{margin-left:0}.col-lg-offset-1{margin-left:8.3333333333%}.col-lg-offset-2{margin-left:16.6666666667%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-4{margin-left:33.3333333333%}.col-lg-offset-5{margin-left:41.6666666667%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-7{margin-left:58.3333333333%}.col-lg-offset-8{margin-left:66.6666666667%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-10{margin-left:83.3333333333%}.col-lg-offset-11{margin-left:91.6666666667%}.col-lg-offset-12{margin-left:100%}}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>td,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>thead>tr>th{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}}@media screen and (-webkit-min-device-pixel-ratio:0){input[type=date],input[type=datetime-local],input[type=month],input[type=time]{line-height:34px}.input-group-sm input[type=date],.input-group-sm input[type=datetime-local],.input-group-sm input[type=month],.input-group-sm input[type=time],.input-group-sm>.input-group-btn>input[type=date].btn,.input-group-sm>.input-group-btn>input[type=datetime-local].btn,.input-group-sm>.input-group-btn>input[type=month].btn,.input-group-sm>.input-group-btn>input[type=time].btn,.input-group-sm>input[type=date].form-control,.input-group-sm>input[type=date].input-group-addon,.input-group-sm>input[type=datetime-local].form-control,.input-group-sm>input[type=datetime-local].input-group-addon,.input-group-sm>input[type=month].form-control,.input-group-sm>input[type=month].input-group-addon,.input-group-sm>input[type=time].form-control,.input-group-sm>input[type=time].input-group-addon,input[type=date].input-sm,input[type=datetime-local].input-sm,input[type=month].input-sm,input[type=time].input-sm{line-height:30px}.input-group-lg input[type=date],.input-group-lg input[type=datetime-local],.input-group-lg input[type=month],.input-group-lg input[type=time],.input-group-lg>.input-group-btn>input[type=date].btn,.input-group-lg>.input-group-btn>input[type=datetime-local].btn,.input-group-lg>.input-group-btn>input[type=month].btn,.input-group-lg>.input-group-btn>input[type=time].btn,.input-group-lg>input[type=date].form-control,.input-group-lg>input[type=date].input-group-addon,.input-group-lg>input[type=datetime-local].form-control,.input-group-lg>input[type=datetime-local].input-group-addon,.input-group-lg>input[type=month].form-control,.input-group-lg>input[type=month].input-group-addon,.input-group-lg>input[type=time].form-control,.input-group-lg>input[type=time].input-group-addon,input[type=date].input-lg,input[type=datetime-local].input-lg,input[type=month].input-lg,input[type=time].input-lg{line-height:46px}}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .form-control,.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .checkbox,.form-inline .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .checkbox label,.form-inline .radio label{padding-left:0}.form-inline .checkbox input[type=checkbox],.form-inline .radio input[type=radio]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}@media (min-width:768px){.form-horizontal .control-label{text-align:right;margin-bottom:0;padding-top:7px}}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:14.33px}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:6px}}@media (min-width:768px){.navbar-right .dropdown-menu{right:0;left:auto}.navbar-right .dropdown-menu-left{left:0;right:auto}}@media (min-width:768px){.nav-justified>li,.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a,.nav-tabs.nav-justified>li>a{margin-bottom:0}}@media (min-width:768px){.nav-tabs-justified>li>a,.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border-bottom-color:#fff}}@media (min-width:768px){.navbar{border-radius:4px}}@media (min-width:768px){.navbar-header{float:left}}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;box-shadow:none}.navbar-collapse.collapse{display:block!important;visibility:visible!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse{padding-left:0;padding-right:0}}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:200px}}@media (min-width:768px){.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:0;margin-left:0}}@media (min-width:768px){.navbar-static-top{border-radius:0}}@media (min-width:768px){.navbar-fixed-bottom,.navbar-fixed-top{border-radius:0}}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}@media (min-width:768px){.navbar-toggle{display:none}}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;box-shadow:none}.navbar-nav .open .dropdown-menu .dropdown-header,.navbar-nav .open .dropdown-menu>li>a{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:focus,.navbar-nav .open .dropdown-menu>li>a:hover{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .form-control,.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .checkbox,.navbar-form .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .checkbox label,.navbar-form .radio label{padding-left:0}.navbar-form .checkbox input[type=checkbox],.navbar-form .radio input[type=radio]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:768px){.navbar-form{width:auto;border:0;margin-left:0;margin-right:0;padding-top:0;padding-bottom:0;-webkit-box-shadow:none;box-shadow:none}}@media (min-width:768px){.navbar-text{float:left;margin-left:15px;margin-right:15px}}@media (min-width:768px){.navbar-left{float:left!important}.navbar-right{float:right!important;margin-right:-15px}.navbar-right~.navbar-right{margin-right:0}}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#ccc;background-color:transparent}}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#090909}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#090909}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-color:#090909}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#444;background-color:transparent}}@media screen and (min-width:768px){.jumbotron{padding:48px 0}.container .jumbotron,.container-fluid .jumbotron{padding-left:60px;padding-right:60px}.jumbotron .h1,.jumbotron h1{font-size:63px}}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;-moz-transition:-moz-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:transform .6s ease-in-out;-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000;-moz-perspective:1000;perspective:1000}.carousel-inner>.item.active.right,.carousel-inner>.item.next{-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0);left:0}.carousel-inner>.item.active.left,.carousel-inner>.item.prev{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0);left:0}.carousel-inner>.item.active,.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);left:0}}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{width:30px;height:30px;margin-top:-15px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-15px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-15px}.carousel-caption{left:20%;right:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}@-ms-viewport{width:device-width}@media (max-width:767px){.visible-xs{display:block!important}table.visible-xs{display:table}tr.visible-xs{display:table-row!important}td.visible-xs,th.visible-xs{display:table-cell!important}}@media (max-width:767px){.visible-xs-block{display:block!important}}@media (max-width:767px){.visible-xs-inline{display:inline!important}}@media (max-width:767px){.visible-xs-inline-block{display:inline-block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block!important}table.visible-sm{display:table}tr.visible-sm{display:table-row!important}td.visible-sm,th.visible-sm{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-block{display:block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline{display:inline!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline-block{display:inline-block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block!important}table.visible-md{display:table}tr.visible-md{display:table-row!important}td.visible-md,th.visible-md{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-block{display:block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline{display:inline!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline-block{display:inline-block!important}}@media (min-width:1200px){.visible-lg{display:block!important}table.visible-lg{display:table}tr.visible-lg{display:table-row!important}td.visible-lg,th.visible-lg{display:table-cell!important}}@media (min-width:1200px){.visible-lg-block{display:block!important}}@media (min-width:1200px){.visible-lg-inline{display:inline!important}}@media (min-width:1200px){.visible-lg-inline-block{display:inline-block!important}}@media (max-width:767px){.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-lg{display:none!important}}@media print{.visible-print{display:block!important}table.visible-print{display:table}tr.visible-print{display:table-row!important}td.visible-print,th.visible-print{display:table-cell!important}}@media print{.visible-print-block{display:block!important}}@media print{.visible-print-inline{display:inline!important}}@media print{.visible-print-inline-block{display:inline-block!important}}@media print{.hidden-print{display:none!important}}.th-checkout__address__change{text-align:center;margin-bottom:40px}.th-checkout__address__form-wrapper{padding:20px}.th-checkout__address__form-wrapper div[class^=col-]{padding-left:8px;padding-right:8px}@media (max-width:480px){.th-checkout__address__form-wrapper div[class^=col-]{padding-left:5px;padding-right:5px}}.th-checkout__address__form-wrapper .vn-placeholder,.th-checkout__address__form-wrapper .vn-placeholder.-selected{left:6px}.th-checkout__address__form-wrapper .th-dropdown .vn-placeholder{left:0;margin-left:0}.th-checkout__address__location{text-align:center;padding:0 0 40px}@media (max-width:350px){.th-checkout__address__location{padding-bottom:20px}.th-checkout__address__location button.btn{font-size:14px}}.th-checkout__address__country{position:relative}.th-checkout__address__country .dropdown-menu{min-width:150px;width:100%}.th-checkout__address__same-as{text-align:center;padding:0 20px}.th-checkout__address__state{position:relative}@media (max-width:480px){.th-checkout__address__state .vn-dropdown__menu{position:absolute;left:50%;margin-left:-90px}}.th-checkout__address__heading{text-align:center;margin:40px 0 20px;font-size:2.4rem;font-weight:700;text-transform:uppercase}.th-checkout__address__enterAddress{margin:10px 0;padding:10px 10px 0;background:#fafafa;border:1px solid #ebebeb;box-shadow:rgba(0,0,0,.14902) 0 1px 1px 0,rgba(0,0,0,.09804) 0 1px 2px 0}.th-checkout__address__display{cursor:pointer;margin:10px 0;padding:20px 20px 10px;background:#fafafa;border:1px solid #ebebeb;box-shadow:rgba(0,0,0,.14902) 0 1px 1px 0,rgba(0,0,0,.09804) 0 1px 2px 0}.th-checkout__address__display .row{display:flex;align-items:center}.th-checkout__address__display:hover{background:#fff;color:#777}.th-checkout__address__display__addressPart{margin-bottom:10px}.th-checkout__address__display .styled-optionbox-option{border-bottom:1px solid #CCC;margin-bottom:10px}.th-checkout__billing-address__same-as{text-align:center}.th-checkout__billing-address__change{text-align:center;margin-bottom:40px}.th-checkout__billing-address__location{text-align:center;padding:0 0 40px}.th-checkout__billing-address__country{position:relative}.th-checkout__billing-address__country .dropdown-menu{min-width:150px;width:100%}.th-checkout__billing-address__state{position:relative}.th-checkout__billing-address__heading{text-align:center;margin:40px 0 20px;font-size:2.4rem;font-weight:700;text-transform:uppercase}.th-checkout__billing-address__enterAddress{margin:10px 0;padding:20px;background:#fafafa;border:1px solid #ebebeb;box-shadow:rgba(0,0,0,.14902) 0 1px 1px 0,rgba(0,0,0,.09804) 0 1px 2px 0}.th-checkout__billing-address__display{margin:10px 0;padding:20px 20px 10px;background:#fafafa;border:1px solid #ebebeb;box-shadow:rgba(0,0,0,.14902) 0 1px 1px 0,rgba(0,0,0,.09804) 0 1px 2px 0}.th-checkout__billing-address__display:hover{background:#fff}.th-checkout__billing-address__display__addressPart{margin-bottom:10px}.th-checkout__billing-address__display .styled-optionbox-option{border-bottom:1px solid #CCC;margin-bottom:10px}.vn-category-search{padding:5px 0;border-top:1px solid #E6E6E6;border-bottom:1px solid #E6E6E6}.vn-category-search__category-items,.vn-category-search__category-title{text-align:left}.vn-category-search__category-items__category-item,.vn-category-search__category-title__category-item{padding:3px 5px 3px 20px!important}.vn-category-search__category-items{text-align:left;word-wrap:break-word}.vn-category-search__category-items.-last{margin-bottom:15px}.vn-category-search__category-items__category-title{display:block;font-size:1.3rem;padding:3px 5px 3px 15px;border-bottom:1px solid #E6E6E6}.vn-category-search__category-items__category-item{border-bottom:1px solid #E6E6E6}.vn-category-search__category-items__category-item.-noborder,.vn-category-search__category-items__category-title.-noborder{border:none}.facet-item__by-category{border-bottom:none!important}div[data-ng-click]:focus{outline:0}body,html{height:100%}.wrapper{position:fixed;height:100%;width:100%;padding-bottom:75px}.mainView{height:inherit}.clickable{cursor:pointer}.th-checkout-content{background-color:#fafafa;height:inherit;margin:-20px 15px;font-size:1.5rem}.th-checkout-content .img-responsive{margin:0 auto}.th-checkout-content .img-responsive>.row{background-color:#fff;height:100%;overflow:auto;margin:0}.th-checkout-content .row{height:inherit}.th-checkout__step{color:#333;padding:20px;height:100%;border-top:1px solid #ccc;position:relative}.th-checkout__step__btn__continue{margin-top:20px}.th-checkout__step.-active{overflow-y:auto;border:none;border-top:1px solid orange;background-color:#eee;height:840px}.th-checkout__step.-active .th-checkout__step__edit,.th-checkout__step.-active .th-checkout__step__overlay{display:none}.th-checkout__step.-active.-no-scroll{overflow-y:hidden;height:690px}.th-checkout__step:hover .fa-pencil{display:inline}.th-checkout__step .fa-check-circle-o{height:43px}.th-checkout__step__overlay{z-index:999;position:absolute;height:100%;width:100%;background-color:#fafafa;top:0;bottom:0;left:0;right:0}.th-checkout__step__overlay.-complete{cursor:pointer}.th-checkout__step__drawer{z-index:888;position:absolute;height:100%;width:0;background-color:#eee;top:0;bottom:0;left:0;right:0;padding:0;border:none;-webkit-transition:width 500ms;-webkit-transition-delay:ease;-moz-transition:width 500ms ease;-o-transition:width 500ms ease;transition:width 500ms ease}.th-checkout__step__drawer.-left{left:0;right:auto}.th-checkout__step__drawer.-right{right:0;left:auto}.th-checkout__step__drawer.-open{width:100%}.th-checkout__step__drawer.-open .th-checkout__step__drawer__body{-webkit-transition:opacity 1000ms;-webkit-transition-delay:ease;-moz-transition:opacity 1000ms ease;-o-transition:opacity 1000ms ease;transition:opacity 1000ms ease;opacity:1}.th-checkout__step__drawer__close{position:absolute;top:10px;right:15px}.th-checkout__step__drawer__body{opacity:0;overflow-y:scroll;height:100%;overflow-x:hidden;padding:20px}.th-checkout__step__drawer__title{font-weight:700;text-transform:uppercase;margin-top:10px;margin-bottom:20px}.th-checkout__step__drawer__form-wrapper{padding:40px}.th-checkout__step__edit{z-index:999;position:absolute;bottom:50%;left:50%;margin-left:-20px}.th-checkout__step__edit .fa-pencil{display:none}.th-checkout__step__title{text-align:center;font-size:2.4rem;margin-bottom:20px}.th-checkout__step__title__stepNumber span{border-radius:50%;width:41px;height:43px;padding:8px 0 0 2px;background-color:#333;color:#fff;display:-moz-inline-stack;display:inline-block;vertical-align:middle;zoom:1}.th-checkout__step__title__stepName{font-weight:700;text-transform:uppercase;margin-top:10px}.th-checkout__step .form-group{margin-bottom:10px}.th-checkout__step .form-group .form-control{font-size:1.8rem;background-color:transparent}.th-checkout__step .form-group .btn-group-lg>.form-control.btn,.th-checkout__step .form-group .form-control.btn-lg{height:35px;padding:0 3px}.th-checkout__step .form-group .dropdown-menu{font-size:15px}.th-checkout__step .th-dropdown .dropdown-toggle .caret{position:absolute;right:4px;top:18px}.th-checkout__step__backButton{margin-top:20px;font-size:1.6rem}.th-checkout__ship-to__overlay{width:100%;height:100%;position:absolute;background-color:#fff;z-index:9999;text-align:center;top:0;left:0;filter:alpha(Opacity=80);opacity:.8}.th-checkout__ship-to__overlay-spinner{position:absolute;height:80px;width:80px;top:30%;left:50%;margin-left:-40px;margin-top:-40px}.th-checkout__ship-to__overlay svg path,.th-checkout__ship-to__overlay svg rect{fill:#333}.th-checkout__ship-to__form-wrapper .row{padding:0 20px}.th-checkout__ship-to__form-wrapper .vn-placeholder,.th-checkout__ship-to__form-wrapper .vn-placeholder.-selected{left:6px}.th-checkout__ship-to__form-wrapper .th-dropdown .vn-placeholder{left:0;margin-left:0}.th-checkout__ship-to__choose__options{margin:10px 0;padding:0;background:#fafafa;border:1px solid #ebebeb;box-shadow:rgba(0,0,0,.14902) 0 1px 1px 0,rgba(0,0,0,.09804) 0 1px 2px 0}.th-checkout__ship-to__choose__options__option{position:relative}.th-checkout__ship-to__choose__options .styled-optionbox-option label{display:block}.th-checkout__ship-to__choose__options .styled-optionbox-option label div{margin-right:40px;margin-left:10px;line-height:2.4rem}.th-checkout__ship-to__choose__options__editBtn{position:absolute;top:50%;transform:translateY(-50%);right:20px}.th-checkout__ship-to .dropdown-menu{min-width:200px;width:100%;padding:10px 10px 20px}.th-checkout__ship-to__enterAddress{padding:20px;background:#fafafa;border:1px solid #ebebeb;box-shadow:rgba(0,0,0,.14902) 0 1px 1px 0,rgba(0,0,0,.09804) 0 1px 2px 0}@media (max-width:480px){.th-checkout__ship-to__enterAddress{padding:10px}}.th-checkout__ship-to__display{margin:10px 0;padding:20px 20px 10px;background:#fafafa;border:1px solid #ebebeb;box-shadow:rgba(0,0,0,.14902) 0 1px 1px 0,rgba(0,0,0,.09804) 0 1px 2px 0}.th-checkout__ship-to__display:hover{background:#fff}.th-checkout__ship-to__display__addressPart{margin-bottom:10px}.th-checkout__ship-to__display__new-option{margin:10px 0 10px 40px;padding:10px 10px 10px 20px}.th-checkout__ship-to__change{text-align:center;margin-bottom:40px}.th-checkout__ship-to__location{text-align:center;padding:0 0 40px}.th-checkout__ship-to__country{position:relative}.th-checkout__ship-to__country .dropdown-menu{min-width:150px;width:100%}.th-checkout__ship-to__state{position:relative}.th-checkout__thanks__title{font-weight:700;text-transform:uppercase;text-align:center;font-size:2rem;margin-top:20px}.th-checkout__thanks__display{margin:10px;padding:20px 20px 10px;background:#fafafa;border:1px solid #ebebeb;box-shadow:rgba(0,0,0,.14902) 0 1px 1px 0,rgba(0,0,0,.09804) 0 1px 2px 0;font-family:roboto-regular,Helvetica,Arial,sans-serif;font-size:15px;line-height:20px}@keyframes cardSlideLeft{from{margin-left:auto}to{margin-left:0}}@-webkit-keyframes cardSlideLeft{from{margin-left:auto}to{margin-left:0}}@-moz-keyframes cardSlideLeft{from{margin-left:auto}to{margin-left:0}}@-o-keyframes cardSlideLeft{from{margin-left:auto}to{margin-left:0}}@keyframes cardSlideRight{from{margin-left:0}to{margin-left:auto}}@-webkit-keyframes cardSlideRight{from{margin-left:0}to{margin-left:auto}}@-moz-keyframes cardSlideRight{from{margin-left:0}to{margin-left:auto}}@-o-keyframes cardSlideRight{from{margin-left:0}to{margin-left:auto}}.styled-optionbox-option .th-checkout__credit-card__display__image{margin:0 0 0 40px}.th-checkout__credit-card__display{margin:10px 0;padding:20px;background:#fafafa;border:1px solid #ebebeb;box-shadow:rgba(0,0,0,.14902) 0 1px 1px 0,rgba(0,0,0,.09804) 0 1px 2px 0}.th-checkout__credit-card__display:hover{background:#fff}.th-checkout__credit-card__display__image{display:inline-block;margin:0;vertical-align:middle;height:30px;width:44px;background:url(/images/sprites/creditcards-b.png) -166px 0}.th-checkout__credit-card__display__last4{display:inline-block;font-weight:700;margin-left:5px}.th-checkout__credit-card__display__exp{margin-right:10px;display:inline-block;margin-left:15px}.th-checkout__credit-card__display.-verify-CVV .form-group{margin-bottom:0}.th-checkout__credit-card__display__verifyCVV{line-height:40px;height:40px;display:inline-block}.th-checkout__credit-card__display__verifyCVV__label{line-height:normal;width:100%;text-align:right;margin-top:10px}.th-checkout__credit-card__heading{text-align:center;margin:0 0 20px;font-size:2.4rem;font-weight:700;text-transform:uppercase}.th-checkout__credit-card__change{text-align:center;margin-bottom:20px;margin-top:10px}.th-checkout__credit-card__tile{position:relative}.th-checkout__credit-card__choose__options{margin:10px 0;padding:0;background:#fafafa;border:1px solid #ebebeb;box-shadow:rgba(0,0,0,.14902) 0 1px 1px 0,rgba(0,0,0,.09804) 0 1px 2px 0}.th-checkout__credit-card__choose__options__option{position:relative}.th-checkout__credit-card__choose__options__new-option{margin:10px 0 10px 40px;padding:10px 10px 10px 20px}.th-checkout__credit-card__choose__options .styled-optionbox-option{width:100%}.th-checkout__credit-card__choose__options__editBtn{position:absolute;top:50%;transform:translateY(-50%);right:20px}.th-checkout__credit-card .credit-card-error{border-radius:4px;color:#a94442;background-color:#f2dede;width:300px;border:1px solid #ebebeb;box-shadow:rgba(0,0,0,.14902) 0 1px 1px 0,rgba(0,0,0,.09804) 0 1px 2px 0;margin-bottom:10px;padding:15px}.th-checkout__credit-card .credit-card-error.-aligned{margin:0 auto 5px}.credit-card{-webkit-border-radius:10px;-moz-border-radius:10px;-ms-border-radius:10px;-o-border-radius:10px;border-radius:10px;background-color:#fff;height:200px;max-width:300px;margin:0;cursor:pointer;border:1px solid #ebebeb;box-shadow:rgba(0,0,0,.14902) 0 1px 1px 0,rgba(0,0,0,.09804) 0 1px 2px 0}.credit-card.-aligned{margin:0 auto}.credit-card.-inactive{color:#777;margin-left:0}.credit-card.-inactive-add-active{-webkit-animation:.5s cardSlideLeft;-moz-animation:.5s cardSlideLeft;-o-animation:.5s cardSlideLeft;animation:.5s cardSlideLeft}.credit-card.-inactive .credit-card__display__image{filter:alpha(Opacity=60);opacity:.6}.credit-card.-selected{border:1px solid #777;color:#222;text-shadow:-2px 2px 3px #aaa;margin-left:auto}.credit-card.-selected-add-active{-webkit-animation:.5s cardSlideRight;-moz-animation:.5s cardSlideRight;-o-animation:.5s cardSlideRight;animation:.5s cardSlideRight}.credit-card.-selected .credit-card__display__image{filter:alpha(Opacity=100);opacity:1}.credit-card #frmCreditCard{margin:30px 0 0}.credit-card .row{padding:0;margin:0}.credit-card__strip{margin:15px 0;height:30px;background-color:#ccc}.credit-card__exp-month{position:relative}.credit-card__exp-month .dropdown-menu{min-width:150px;width:150px;max-height:150px;overflow-y:auto}.credit-card__exp-year{position:relative}.credit-card__exp-year .dropdown-menu{min-width:80px;width:100%;max-height:150px;overflow-y:auto}.credit-card__exp-year .dropdown-menu a{padding:3px 15px}.credit-card__image{height:30px;width:44px;position:absolute;bottom:30px;right:15px;background:url(/images/sprites/creditcards-b.png) -166px 0;-webkit-transform-style:preserve-3d;-webkit-transition:-webkit-transform .3s;-moz-transition:-moz-transform .3s;transition:transform .3s}.credit-card__image--notvalid{-webkit-filter:grayscale(100%);-moz-filter:grayscale(100%);filter:grayscale(100%)}.credit-card__image--flipped{background:url(/images/sprites/creditcards-b.png) -291px 0}.credit-card__image--unknown{background:url(/images/sprites/creditcards-b.png) -166px 0}.credit-card__image--amex{background:url(/images/sprites/creditcards-b.png) 1px 0}.credit-card__image--amex-flipped{background:url(/images/sprites/creditcards-b.png) -333px 0}.credit-card__image--visa{background:url(/images/sprites/creditcards-b.png) -41px 0}.credit-card__image--mastercard{background:url(/images/sprites/creditcards-b.png) -83px 0}.credit-card__image--discover{background:url(/images/sprites/creditcards-b.png) -208px 0}.-faceted-search .panel-body{padding:0!important}.-faceted-search .panel-group .panel{border-bottom:none}.-faceted-search .panel-default>.panel-heading .panel-title{font-size:1.6rem;letter-spacing:1px}.vn-faceted-search-header{text-align:center}.vn-faceted-search-header .__cancel-action,.vn-faceted-search-header .__clear-action{width:96%;margin:15px auto;display:inline-block}@media (max-width:767px){.vn-faceted-search-header .__cancel-action,.vn-faceted-search-header .__clear-action{width:44%}}.vn-faceted-search-footer .__clear-action{display:block;margin:0 auto;width:80%}.vn-facet-search-control{border-bottom:1px solid #333}.vn-faceted-search label{display:block;padding:2px 0;position:relative}.vn-faceted-search label.-last{margin-bottom:15px}.vn-faceted-search label .name{display:inline-block}.vn-faceted-search label .count{position:absolute;top:4px;right:0;margin-left:2px;padding:0 5px;background-color:#999;color:#fff;display:block;border-radius:2px;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased}.vn-faceted-search input{width:35px}.vn-faceted-search input:focus{outline:0}@media (max-width:767px){.vn-faceted-search.isMobileAndVisible{position:relative;left:0;right:0;top:0;bottom:0;z-index:1001;background-color:#FFF}}.mobile-filters{align:center;text-align:center;margin-top:10px}.vn-category-product-tiles.isMobileAndHidden{display:none}.facet-properties{margin:10px}.facet-property label{display:block;position:relative}.facet-property label .count{position:absolute;top:2px;right:0;margin-left:2px;padding:0 5px;background-color:#999;color:#fff;display:block;border-radius:2px}.facet-property input[type=checkbox]{display:none}.facet-property input[type=checkbox]+span:before{margin:0;padding:0;font-family:'Glyphicons Halflings'!important;padding-right:3px!important;margin-top:3px!important;font-size:12px!important;vertical-align:text-top;content:"\e157"!important}.facet-property input[type=checkbox]:checked+span:before{content:"\e067"!important}@media (max-width:767px){.facet-property.isMobileAndVisible{position:relative;left:0;right:0;top:0;bottom:0;z-index:1001;background-color:#FFF}}.facet-item__by-price{border-top:none!important}.facet-item .ng-enter,.facet-item .ng-leave{-webkit-transition:100ms ease-out all;-moz-transition:100ms ease-out all;-ms-transition:100ms ease-out all;-o-transition:100ms ease-out all;transition:100ms ease-out all}.facet-item .ng-enter,.facet-item .ng-leave.ng-leave-active{opacity:0}.facet-item .ng-enter.ng-enter-active,.facet-item .ng-leave{opacity:1}.facet-item__by-price__inputs{text-align:left;margin:0;padding:5px 15px}.facet-item__by-price__button{float:right;padding:2px 5px!important}/*! IMAGE *//*!***************************************************************************//*!***************************************************************************//*! LINK *//*!***************************************************************************//*!***************************************************************************/.styled-optionbox-option{text-align:left;border-bottom:1px solid #ccc;padding:20px}.styled-optionbox-option:hover{background-color:#fff}.styled-optionbox-option input{display:none!important}.styled-optionbox-option input+label{cursor:pointer;margin:0;position:relative}.styled-optionbox-option input+label div{margin:0 0 0 34px}.styled-optionbox-option input+label:before{content:'\f10c';font-family:FontAwesome;font-size:16px;display:inline-block;line-height:18px;vertical-align:middle;text-align:center;color:#000;margin-right:5px;font-weight:400;position:absolute;top:50%;transform:translateY(-50%)}.styled-optionbox-option input:checked+label:before{content:'\f192';font-family:FontAwesome}/*! normalize.css v3.0.2 | MIT License | git.io/normalize */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}b,strong{font-weight:700}dfn{font-style:italic}h1{margin:.67em 0}mark{background:#ff0;color:#000}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}textarea{overflow:auto}optgroup{font-weight:700}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,:after,:before{background:0 0!important;color:#000!important;box-shadow:none!important;text-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="#"]:after,a[href^="javascript:"]:after{content:""}blockquote,pre{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}img{max-width:100%!important}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}select{background:#fff!important}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #ddd!important}}@font-face{font-family:'Glyphicons Halflings';src:url(../fonts/bootstrap/glyphicons-halflings-regular.eot);src:url(../fonts/bootstrap/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(../fonts/bootstrap/glyphicons-halflings-regular.woff2) format('woff2'),url(../fonts/bootstrap/glyphicons-halflings-regular.woff) format('woff'),url(../fonts/bootstrap/glyphicons-halflings-regular.ttf) format('truetype'),url(../fonts/bootstrap/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\2a"}.glyphicon-plus:before{content:"\2b"}.glyphicon-eur:before,.glyphicon-euro:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.glyphicon-cd:before{content:"\e201"}.glyphicon-save-file:before{content:"\e202"}.glyphicon-open-file:before{content:"\e203"}.glyphicon-level-up:before{content:"\e204"}.glyphicon-copy:before{content:"\e205"}.glyphicon-paste:before{content:"\e206"}.glyphicon-alert:before{content:"\e209"}.glyphicon-equalizer:before{content:"\e210"}.glyphicon-king:before{content:"\e211"}.glyphicon-queen:before{content:"\e212"}.glyphicon-pawn:before{content:"\e213"}.glyphicon-bishop:before{content:"\e214"}.glyphicon-knight:before{content:"\e215"}.glyphicon-baby-formula:before{content:"\e216"}.glyphicon-tent:before{content:"\26fa"}.glyphicon-blackboard:before{content:"\e218"}.glyphicon-bed:before{content:"\e219"}.glyphicon-apple:before{content:"\f8ff"}.glyphicon-erase:before{content:"\e221"}.glyphicon-hourglass:before{content:"\231b"}.glyphicon-lamp:before{content:"\e223"}.glyphicon-duplicate:before{content:"\e224"}.glyphicon-piggy-bank:before{content:"\e225"}.glyphicon-scissors:before{content:"\e226"}.glyphicon-bitcoin:before{content:"\e227"}.glyphicon-yen:before{content:"\00a5"}.glyphicon-ruble:before{content:"\20bd"}.glyphicon-scale:before{content:"\e230"}.glyphicon-ice-lolly:before{content:"\e231"}.glyphicon-ice-lolly-tasted:before{content:"\e232"}.glyphicon-education:before{content:"\e233"}.glyphicon-option-horizontal:before{content:"\e234"}.glyphicon-option-vertical:before{content:"\e235"}.glyphicon-menu-hamburger:before{content:"\e236"}.glyphicon-modal-window:before{content:"\e237"}.glyphicon-oil:before{content:"\e238"}.glyphicon-grain:before{content:"\e239"}.glyphicon-sunglasses:before{content:"\e240"}.glyphicon-text-size:before{content:"\e241"}.glyphicon-text-color:before{content:"\e242"}.glyphicon-text-background:before{content:"\e243"}.glyphicon-object-align-top:before{content:"\e244"}.glyphicon-object-align-bottom:before{content:"\e245"}.glyphicon-object-align-horizontal:before{content:"\e246"}.glyphicon-object-align-left:before{content:"\e247"}.glyphicon-object-align-vertical:before{content:"\e248"}.glyphicon-object-align-right:before{content:"\e249"}.glyphicon-triangle-right:before{content:"\e250"}.glyphicon-triangle-left:before{content:"\e251"}.glyphicon-triangle-bottom:before{content:"\e252"}.glyphicon-triangle-top:before{content:"\e253"}.glyphicon-console:before{content:"\e254"}.glyphicon-superscript:before{content:"\e255"}.glyphicon-subscript:before{content:"\e256"}.glyphicon-menu-left:before{content:"\e257"}.glyphicon-menu-right:before{content:"\e258"}.glyphicon-menu-down:before{content:"\e259"}.glyphicon-menu-up:before{content:"\e260"}*,:after,:before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:transparent}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.428571429;color:#333;background-color:#fff}button,input,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#337ab7;text-decoration:none}a:focus,a:hover{color:#23527c;text-decoration:underline}a:focus{outline:dotted thin;outline:-webkit-focus-ring-color auto 5px;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.img-responsive{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{padding:4px;line-height:1.428571429;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out;display:inline-block;max-width:100%;height:auto}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-weight:400;line-height:1;color:#777}.h1,.h2,.h3,h1,h2,h3{margin-top:20px;margin-bottom:10px}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small{font-size:65%}.h4,.h5,.h6,h4,h5,h6{margin-top:10px;margin-bottom:10px}.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-size:75%}.h1,h1{font-size:36px}.h2,h2{font-size:30px}.h3,h3{font-size:24px}.h4,h4{font-size:18px}.h5,h5{font-size:14px}.h6,h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}.small,small{font-size:85%}.mark,mark{background-color:#fcf8e3;padding:.2em}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#777}.text-primary{color:#337ab7}a.text-primary:hover{color:#286090}.text-success{color:#3c763d}a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:hover{color:#843534}.bg-primary{color:#fff;background-color:#337ab7}a.bg-primary:hover{background-color:#286090}.bg-success{background-color:#dff0d8}a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:hover{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ol,ul{margin-top:0;margin-bottom:10px}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none;margin-left:-5px}.list-inline>li{display:inline-block;padding-left:5px;padding-right:5px}dl{margin-top:0;margin-bottom:20px}dd,dt{line-height:1.428571429}dt{font-weight:700}dd{margin-left:0}.dl-horizontal dd:after,.dl-horizontal dd:before{content:" ";display:table}.dl-horizontal dd:after{clear:both}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[data-original-title],abbr[title]{cursor:help;border-bottom:1px dotted #777}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote ol:last-child,blockquote p:last-child,blockquote ul:last-child{margin-bottom:0}blockquote .small,blockquote footer,blockquote small{display:block;font-size:80%;line-height:1.428571429;color:#777}blockquote .small:before,blockquote footer:before,blockquote small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0;text-align:right}.blockquote-reverse .small:before,.blockquote-reverse footer:before,.blockquote-reverse small:before,blockquote.pull-right .small:before,blockquote.pull-right footer:before,blockquote.pull-right small:before{content:''}.blockquote-reverse .small:after,.blockquote-reverse footer:after,.blockquote-reverse small:after,blockquote.pull-right .small:after,blockquote.pull-right footer:after,blockquote.pull-right small:after{content:'\00A0 \2014'}address{margin-bottom:20px;font-style:normal;line-height:1.428571429}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}kbd kbd{padding:0;font-size:100%;font-weight:700;box-shadow:none}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.428571429;word-break:break-all;word-wrap:break-word;color:#333;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}.container:after,.container:before{content:" ";display:table}.container:after{clear:both}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}.container-fluid:after,.container-fluid:before{content:" ";display:table}.container-fluid:after{clear:both}.row{margin-left:-15px;margin-right:-15px}.row:after,.row:before{content:" ";display:table}.row:after{clear:both}.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{position:relative;min-height:1px;padding-left:15px;padding-right:15px}.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{float:left}.col-xs-1{width:8.3333333333%}.col-xs-2{width:16.6666666667%}.col-xs-3{width:25%}.col-xs-4{width:33.3333333333%}.col-xs-5{width:41.6666666667%}.col-xs-6{width:50%}.col-xs-7{width:58.3333333333%}.col-xs-8{width:66.6666666667%}.col-xs-9{width:75%}.col-xs-10{width:83.3333333333%}.col-xs-11{width:91.6666666667%}.col-xs-12{width:100%}.col-xs-pull-0{right:auto}.col-xs-pull-1{right:8.3333333333%}.col-xs-pull-2{right:16.6666666667%}.col-xs-pull-3{right:25%}.col-xs-pull-4{right:33.3333333333%}.col-xs-pull-5{right:41.6666666667%}.col-xs-pull-6{right:50%}.col-xs-pull-7{right:58.3333333333%}.col-xs-pull-8{right:66.6666666667%}.col-xs-pull-9{right:75%}.col-xs-pull-10{right:83.3333333333%}.col-xs-pull-11{right:91.6666666667%}.col-xs-pull-12{right:100%}.col-xs-push-0{left:auto}.col-xs-push-1{left:8.3333333333%}.col-xs-push-2{left:16.6666666667%}.col-xs-push-3{left:25%}.col-xs-push-4{left:33.3333333333%}.col-xs-push-5{left:41.6666666667%}.col-xs-push-6{left:50%}.col-xs-push-7{left:58.3333333333%}.col-xs-push-8{left:66.6666666667%}.col-xs-push-9{left:75%}.col-xs-push-10{left:83.3333333333%}.col-xs-push-11{left:91.6666666667%}.col-xs-push-12{left:100%}.col-xs-offset-0{margin-left:0}.col-xs-offset-1{margin-left:8.3333333333%}.col-xs-offset-2{margin-left:16.6666666667%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-4{margin-left:33.3333333333%}.col-xs-offset-5{margin-left:41.6666666667%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-7{margin-left:58.3333333333%}.col-xs-offset-8{margin-left:66.6666666667%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-10{margin-left:83.3333333333%}.col-xs-offset-11{margin-left:91.6666666667%}.col-xs-offset-12{margin-left:100%}@media (min-width:768px){.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9{float:left}.col-sm-1{width:8.3333333333%}.col-sm-2{width:16.6666666667%}.col-sm-3{width:25%}.col-sm-4{width:33.3333333333%}.col-sm-5{width:41.6666666667%}.col-sm-6{width:50%}.col-sm-7{width:58.3333333333%}.col-sm-8{width:66.6666666667%}.col-sm-9{width:75%}.col-sm-10{width:83.3333333333%}.col-sm-11{width:91.6666666667%}.col-sm-12{width:100%}.col-sm-pull-0{right:auto}.col-sm-pull-1{right:8.3333333333%}.col-sm-pull-2{right:16.6666666667%}.col-sm-pull-3{right:25%}.col-sm-pull-4{right:33.3333333333%}.col-sm-pull-5{right:41.6666666667%}.col-sm-pull-6{right:50%}.col-sm-pull-7{right:58.3333333333%}.col-sm-pull-8{right:66.6666666667%}.col-sm-pull-9{right:75%}.col-sm-pull-10{right:83.3333333333%}.col-sm-pull-11{right:91.6666666667%}.col-sm-pull-12{right:100%}.col-sm-push-0{left:auto}.col-sm-push-1{left:8.3333333333%}.col-sm-push-2{left:16.6666666667%}.col-sm-push-3{left:25%}.col-sm-push-4{left:33.3333333333%}.col-sm-push-5{left:41.6666666667%}.col-sm-push-6{left:50%}.col-sm-push-7{left:58.3333333333%}.col-sm-push-8{left:66.6666666667%}.col-sm-push-9{left:75%}.col-sm-push-10{left:83.3333333333%}.col-sm-push-11{left:91.6666666667%}.col-sm-push-12{left:100%}.col-sm-offset-0{margin-left:0}.col-sm-offset-1{margin-left:8.3333333333%}.col-sm-offset-2{margin-left:16.6666666667%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-4{margin-left:33.3333333333%}.col-sm-offset-5{margin-left:41.6666666667%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-7{margin-left:58.3333333333%}.col-sm-offset-8{margin-left:66.6666666667%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-10{margin-left:83.3333333333%}.col-sm-offset-11{margin-left:91.6666666667%}.col-sm-offset-12{margin-left:100%}}@media (min-width:992px){.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9{float:left}.col-md-1{width:8.3333333333%}.col-md-2{width:16.6666666667%}.col-md-3{width:25%}.col-md-4{width:33.3333333333%}.col-md-5{width:41.6666666667%}.col-md-6{width:50%}.col-md-7{width:58.3333333333%}.col-md-8{width:66.6666666667%}.col-md-9{width:75%}.col-md-10{width:83.3333333333%}.col-md-11{width:91.6666666667%}.col-md-12{width:100%}.col-md-pull-0{right:auto}.col-md-pull-1{right:8.3333333333%}.col-md-pull-2{right:16.6666666667%}.col-md-pull-3{right:25%}.col-md-pull-4{right:33.3333333333%}.col-md-pull-5{right:41.6666666667%}.col-md-pull-6{right:50%}.col-md-pull-7{right:58.3333333333%}.col-md-pull-8{right:66.6666666667%}.col-md-pull-9{right:75%}.col-md-pull-10{right:83.3333333333%}.col-md-pull-11{right:91.6666666667%}.col-md-pull-12{right:100%}.col-md-push-0{left:auto}.col-md-push-1{left:8.3333333333%}.col-md-push-2{left:16.6666666667%}.col-md-push-3{left:25%}.col-md-push-4{left:33.3333333333%}.col-md-push-5{left:41.6666666667%}.col-md-push-6{left:50%}.col-md-push-7{left:58.3333333333%}.col-md-push-8{left:66.6666666667%}.col-md-push-9{left:75%}.col-md-push-10{left:83.3333333333%}.col-md-push-11{left:91.6666666667%}.col-md-push-12{left:100%}.col-md-offset-0{margin-left:0}.col-md-offset-1{margin-left:8.3333333333%}.col-md-offset-2{margin-left:16.6666666667%}.col-md-offset-3{margin-left:25%}.col-md-offset-4{margin-left:33.3333333333%}.col-md-offset-5{margin-left:41.6666666667%}.col-md-offset-6{margin-left:50%}.col-md-offset-7{margin-left:58.3333333333%}.col-md-offset-8{margin-left:66.6666666667%}.col-md-offset-9{margin-left:75%}.col-md-offset-10{margin-left:83.3333333333%}.col-md-offset-11{margin-left:91.6666666667%}.col-md-offset-12{margin-left:100%}}@media (min-width:1200px){.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9{float:left}.col-lg-1{width:8.3333333333%}.col-lg-2{width:16.6666666667%}.col-lg-3{width:25%}.col-lg-4{width:33.3333333333%}.col-lg-5{width:41.6666666667%}.col-lg-6{width:50%}.col-lg-7{width:58.3333333333%}.col-lg-8{width:66.6666666667%}.col-lg-9{width:75%}.col-lg-10{width:83.3333333333%}.col-lg-11{width:91.6666666667%}.col-lg-12{width:100%}.col-lg-pull-0{right:auto}.col-lg-pull-1{right:8.3333333333%}.col-lg-pull-2{right:16.6666666667%}.col-lg-pull-3{right:25%}.col-lg-pull-4{right:33.3333333333%}.col-lg-pull-5{right:41.6666666667%}.col-lg-pull-6{right:50%}.col-lg-pull-7{right:58.3333333333%}.col-lg-pull-8{right:66.6666666667%}.col-lg-pull-9{right:75%}.col-lg-pull-10{right:83.3333333333%}.col-lg-pull-11{right:91.6666666667%}.col-lg-pull-12{right:100%}.col-lg-push-0{left:auto}.col-lg-push-1{left:8.3333333333%}.col-lg-push-2{left:16.6666666667%}.col-lg-push-3{left:25%}.col-lg-push-4{left:33.3333333333%}.col-lg-push-5{left:41.6666666667%}.col-lg-push-6{left:50%}.col-lg-push-7{left:58.3333333333%}.col-lg-push-8{left:66.6666666667%}.col-lg-push-9{left:75%}.col-lg-push-10{left:83.3333333333%}.col-lg-push-11{left:91.6666666667%}.col-lg-push-12{left:100%}.col-lg-offset-0{margin-left:0}.col-lg-offset-1{margin-left:8.3333333333%}.col-lg-offset-2{margin-left:16.6666666667%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-4{margin-left:33.3333333333%}.col-lg-offset-5{margin-left:41.6666666667%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-7{margin-left:58.3333333333%}.col-lg-offset-8{margin-left:66.6666666667%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-10{margin-left:83.3333333333%}.col-lg-offset-11{margin-left:91.6666666667%}.col-lg-offset-12{margin-left:100%}}table{background-color:transparent}caption{padding-top:8px;padding-bottom:8px;color:#777;text-align:left}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:20px}.table>tbody>tr>td,.table>tbody>tr>th,.table>tfoot>tr>td,.table>tfoot>tr>th,.table>thead>tr>td,.table>thead>tr>th{padding:8px;line-height:1.428571429;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>td,.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>td,.table>thead:first-child>tr:first-child>th{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>tbody>tr>td,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>td,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>thead>tr>th{padding:5px}.table-bordered,.table-bordered>tbody>tr>td,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>td,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border:1px solid #ddd}.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border-bottom-width:2px}.table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover{background-color:#f5f5f5}table col[class*=col-]{position:static;float:none;display:table-column}table td[class*=col-],table th[class*=col-]{position:static;float:none;display:table-cell}.table>tbody>tr.active>td,.table>tbody>tr.active>th,.table>tbody>tr>td.active,.table>tbody>tr>th.active,.table>tfoot>tr.active>td,.table>tfoot>tr.active>th,.table>tfoot>tr>td.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>thead>tr.active>th,.table>thead>tr>td.active,.table>thead>tr>th.active{background-color:#f5f5f5}.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr.active:hover>th,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover{background-color:#e8e8e8}.table>tbody>tr.success>td,.table>tbody>tr.success>th,.table>tbody>tr>td.success,.table>tbody>tr>th.success,.table>tfoot>tr.success>td,.table>tfoot>tr.success>th,.table>tfoot>tr>td.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>thead>tr.success>th,.table>thead>tr>td.success,.table>thead>tr>th.success{background-color:#dff0d8}.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr.success:hover>th,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover{background-color:#d0e9c6}.table>tbody>tr.info>td,.table>tbody>tr.info>th,.table>tbody>tr>td.info,.table>tbody>tr>th.info,.table>tfoot>tr.info>td,.table>tfoot>tr.info>th,.table>tfoot>tr>td.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>thead>tr.info>th,.table>thead>tr>td.info,.table>thead>tr>th.info{background-color:#d9edf7}.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr.info:hover>th,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover{background-color:#c4e3f3}.table>tbody>tr.warning>td,.table>tbody>tr.warning>th,.table>tbody>tr>td.warning,.table>tbody>tr>th.warning,.table>tfoot>tr.warning>td,.table>tfoot>tr.warning>th,.table>tfoot>tr>td.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>thead>tr.warning>th,.table>thead>tr>td.warning,.table>thead>tr>th.warning{background-color:#fcf8e3}.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr.warning:hover>th,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover{background-color:#faf2cc}.table>tbody>tr.danger>td,.table>tbody>tr.danger>th,.table>tbody>tr>td.danger,.table>tbody>tr>th.danger,.table>tfoot>tr.danger>td,.table>tfoot>tr.danger>th,.table>tfoot>tr>td.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>thead>tr.danger>th,.table>thead>tr>td.danger,.table>thead>tr>th.danger{background-color:#f2dede}.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr.danger:hover>th,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover{background-color:#ebcccc}.table-responsive{overflow-x:auto;min-height:.01%}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>td,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>thead>tr>th{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}}fieldset{padding:0;margin:0;border:0;min-width:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:700}input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type=checkbox],input[type=radio]{margin:4px 0 0;line-height:normal}input[type=file]{display:block}input[type=range]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type=checkbox]:focus,input[type=file]:focus,input[type=radio]:focus{outline:dotted thin;outline:-webkit-focus-ring-color auto 5px;outline-offset:-2px}output{display:block;padding-top:7px;font-size:14px;line-height:1.428571429;color:#555}.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.428571429;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.form-control::-moz-placeholder{color:#999;opacity:1}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{cursor:not-allowed;background-color:#eee;opacity:1}textarea.form-control{height:auto}input[type=search]{-webkit-appearance:none}@media screen and (-webkit-min-device-pixel-ratio:0){input[type=date],input[type=datetime-local],input[type=month],input[type=time]{line-height:34px}.input-group-sm input[type=date],.input-group-sm input[type=datetime-local],.input-group-sm input[type=month],.input-group-sm input[type=time],.input-group-sm>.input-group-btn>input[type=date].btn,.input-group-sm>.input-group-btn>input[type=datetime-local].btn,.input-group-sm>.input-group-btn>input[type=month].btn,.input-group-sm>.input-group-btn>input[type=time].btn,.input-group-sm>input[type=date].form-control,.input-group-sm>input[type=date].input-group-addon,.input-group-sm>input[type=datetime-local].form-control,.input-group-sm>input[type=datetime-local].input-group-addon,.input-group-sm>input[type=month].form-control,.input-group-sm>input[type=month].input-group-addon,.input-group-sm>input[type=time].form-control,.input-group-sm>input[type=time].input-group-addon,input[type=date].input-sm,input[type=datetime-local].input-sm,input[type=month].input-sm,input[type=time].input-sm{line-height:30px}.input-group-lg input[type=date],.input-group-lg input[type=datetime-local],.input-group-lg input[type=month],.input-group-lg input[type=time],.input-group-lg>.input-group-btn>input[type=date].btn,.input-group-lg>.input-group-btn>input[type=datetime-local].btn,.input-group-lg>.input-group-btn>input[type=month].btn,.input-group-lg>.input-group-btn>input[type=time].btn,.input-group-lg>input[type=date].form-control,.input-group-lg>input[type=date].input-group-addon,.input-group-lg>input[type=datetime-local].form-control,.input-group-lg>input[type=datetime-local].input-group-addon,.input-group-lg>input[type=month].form-control,.input-group-lg>input[type=month].input-group-addon,.input-group-lg>input[type=time].form-control,.input-group-lg>input[type=time].input-group-addon,input[type=date].input-lg,input[type=datetime-local].input-lg,input[type=month].input-lg,input[type=time].input-lg{line-height:46px}}.form-group{margin-bottom:15px}.checkbox,.radio{position:relative;display:block;margin-top:10px;margin-bottom:10px}.checkbox label,.radio label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer}.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox],.radio input[type=radio],.radio-inline input[type=radio]{position:absolute;margin-left:-20px}.checkbox+.checkbox,.radio+.radio{margin-top:-5px}.checkbox-inline,.radio-inline{display:inline-block;padding-left:20px;margin-bottom:0;vertical-align:middle;font-weight:400;cursor:pointer}.checkbox-inline+.checkbox-inline,.radio-inline+.radio-inline{margin-top:0;margin-left:10px}.checkbox-inline.disabled,.checkbox.disabled label,.radio-inline.disabled,.radio.disabled label,fieldset[disabled] .checkbox label,fieldset[disabled] .checkbox-inline,fieldset[disabled] .radio label,fieldset[disabled] .radio-inline,fieldset[disabled] input[type=checkbox],fieldset[disabled] input[type=radio],input[type=checkbox].disabled,input[type=checkbox][disabled],input[type=radio].disabled,input[type=radio][disabled]{cursor:not-allowed}.form-control-static{padding-top:7px;padding-bottom:7px;margin-bottom:0}.form-control-static.input-lg,.form-control-static.input-sm,.input-group-lg>.form-control-static.form-control,.input-group-lg>.form-control-static.input-group-addon,.input-group-lg>.input-group-btn>.form-control-static.btn,.input-group-sm>.form-control-static.form-control,.input-group-sm>.form-control-static.input-group-addon,.input-group-sm>.input-group-btn>.form-control-static.btn{padding-left:0;padding-right:0}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn,.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.input-group-sm>.input-group-btn>select.btn,.input-group-sm>select.form-control,.input-group-sm>select.input-group-addon,select.input-sm{height:30px;line-height:30px}.input-group-sm>.input-group-btn>select[multiple].btn,.input-group-sm>.input-group-btn>textarea.btn,.input-group-sm>select[multiple].form-control,.input-group-sm>select[multiple].input-group-addon,.input-group-sm>textarea.form-control,.input-group-sm>textarea.input-group-addon,select[multiple].input-sm,textarea.input-sm{height:auto}.form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.form-group-sm select.form-control{height:30px;line-height:30px}.form-group-sm select[multiple].form-control,.form-group-sm textarea.form-control{height:auto}.form-group-sm .form-control-static{height:30px;padding:5px 10px;font-size:12px;line-height:1.5}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn,.input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.input-group-lg>.input-group-btn>select.btn,.input-group-lg>select.form-control,.input-group-lg>select.input-group-addon,select.input-lg{height:46px;line-height:46px}.input-group-lg>.input-group-btn>select[multiple].btn,.input-group-lg>.input-group-btn>textarea.btn,.input-group-lg>select[multiple].form-control,.input-group-lg>select[multiple].input-group-addon,.input-group-lg>textarea.form-control,.input-group-lg>textarea.input-group-addon,select[multiple].input-lg,textarea.input-lg{height:auto}.form-group-lg .form-control{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.form-group-lg select.form-control{height:46px;line-height:46px}.form-group-lg select[multiple].form-control,.form-group-lg textarea.form-control{height:auto}.form-group-lg .form-control-static{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:34px;height:34px;line-height:34px;text-align:center;pointer-events:none}.input-group-lg>.form-control+.form-control-feedback,.input-group-lg>.input-group-addon+.form-control-feedback,.input-group-lg>.input-group-btn>.btn+.form-control-feedback,.input-lg+.form-control-feedback{width:46px;height:46px;line-height:46px}.input-group-sm>.form-control+.form-control-feedback,.input-group-sm>.input-group-addon+.form-control-feedback,.input-group-sm>.input-group-btn>.btn+.form-control-feedback,.input-sm+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .checkbox,.has-success .checkbox-inline,.has-success .control-label,.has-success .help-block,.has-success .radio,.has-success .radio-inline,.has-success.checkbox label,.has-success.checkbox-inline label,.has-success.radio label,.has-success.radio-inline label{color:#3c763d}.has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;border-color:#3c763d;background-color:#dff0d8}.has-success .form-control-feedback{color:#3c763d}.has-warning .checkbox,.has-warning .checkbox-inline,.has-warning .control-label,.has-warning .help-block,.has-warning .radio,.has-warning .radio-inline,.has-warning.checkbox label,.has-warning.checkbox-inline label,.has-warning.radio label,.has-warning.radio-inline label{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;border-color:#8a6d3b;background-color:#fcf8e3}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .checkbox,.has-error .checkbox-inline,.has-error .control-label,.has-error .help-block,.has-error .radio,.has-error .radio-inline,.has-error.checkbox label,.has-error.checkbox-inline label,.has-error.radio label,.has-error.radio-inline label{color:#a94442}.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;border-color:#a94442;background-color:#f2dede}.has-error .form-control-feedback{color:#a94442}.has-feedback label~.form-control-feedback{top:25px}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .form-control,.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .checkbox,.form-inline .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .checkbox label,.form-inline .radio label{padding-left:0}.form-inline .checkbox input[type=checkbox],.form-inline .radio input[type=radio]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .checkbox,.form-horizontal .checkbox-inline,.form-horizontal .radio,.form-horizontal .radio-inline{margin-top:0;margin-bottom:0;padding-top:7px}.form-horizontal .checkbox,.form-horizontal .radio{min-height:27px}.form-horizontal .form-group{margin-left:-15px;margin-right:-15px}.form-horizontal .form-group:after,.form-horizontal .form-group:before{content:" ";display:table}.form-horizontal .form-group:after{clear:both}@media (min-width:768px){.form-horizontal .control-label{text-align:right;margin-bottom:0;padding-top:7px}}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:14.33px}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:6px}}.btn{display:inline-block;margin-bottom:0;font-weight:400;text-align:center;vertical-align:middle;touch-action:manipulation;cursor:pointer;background-image:none;border:1px solid transparent;white-space:nowrap;padding:6px 12px;font-size:14px;line-height:1.428571429;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.btn.active.focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn:active:focus,.btn:focus{outline:dotted thin;outline:-webkit-focus-ring-color auto 5px;outline-offset:-2px}.btn.focus,.btn:focus,.btn:hover{color:#333;text-decoration:none}.btn.active,.btn:active{outline:0;background-image:none;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;pointer-events:none;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default.active,.btn-default.focus,.btn-default:active,.btn-default:focus,.btn-default:hover,.open>.btn-default.dropdown-toggle{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default.active,.btn-default:active,.open>.btn-default.dropdown-toggle{background-image:none}.btn-default.disabled,.btn-default.disabled.active,.btn-default.disabled.focus,.btn-default.disabled:active,.btn-default.disabled:focus,.btn-default.disabled:hover,.btn-default[disabled],.btn-default[disabled].active,.btn-default[disabled].focus,.btn-default[disabled]:active,.btn-default[disabled]:focus,.btn-default[disabled]:hover,fieldset[disabled] .btn-default,fieldset[disabled] .btn-default.active,fieldset[disabled] .btn-default.focus,fieldset[disabled] .btn-default:active,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:hover{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary{color:#fff;background-color:#337ab7;border-color:#2e6da4}.btn-primary.active,.btn-primary.focus,.btn-primary:active,.btn-primary:focus,.btn-primary:hover,.open>.btn-primary.dropdown-toggle{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary.active,.btn-primary:active,.open>.btn-primary.dropdown-toggle{background-image:none}.btn-primary.disabled,.btn-primary.disabled.active,.btn-primary.disabled.focus,.btn-primary.disabled:active,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled],.btn-primary[disabled].active,.btn-primary[disabled].focus,.btn-primary[disabled]:active,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-primary.active,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:active,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#337ab7;border-color:#2e6da4}.btn-primary .badge{color:#337ab7;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success.active,.btn-success.focus,.btn-success:active,.btn-success:focus,.btn-success:hover,.open>.btn-success.dropdown-toggle{color:#fff;background-color:#449d44;border-color:#398439}.btn-success.active,.btn-success:active,.open>.btn-success.dropdown-toggle{background-image:none}.btn-success.disabled,.btn-success.disabled.active,.btn-success.disabled.focus,.btn-success.disabled:active,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled],.btn-success[disabled].active,.btn-success[disabled].focus,.btn-success[disabled]:active,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success,fieldset[disabled] .btn-success.active,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:active,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info.active,.btn-info.focus,.btn-info:active,.btn-info:focus,.btn-info:hover,.open>.btn-info.dropdown-toggle{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info.active,.btn-info:active,.open>.btn-info.dropdown-toggle{background-image:none}.btn-info.disabled,.btn-info.disabled.active,.btn-info.disabled.focus,.btn-info.disabled:active,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled],.btn-info[disabled].active,.btn-info[disabled].focus,.btn-info[disabled]:active,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info,fieldset[disabled] .btn-info.active,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:active,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning.active,.btn-warning.focus,.btn-warning:active,.btn-warning:focus,.btn-warning:hover,.open>.btn-warning.dropdown-toggle{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning.active,.btn-warning:active,.open>.btn-warning.dropdown-toggle{background-image:none}.btn-warning.disabled,.btn-warning.disabled.active,.btn-warning.disabled.focus,.btn-warning.disabled:active,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled],.btn-warning[disabled].active,.btn-warning[disabled].focus,.btn-warning[disabled]:active,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning,fieldset[disabled] .btn-warning.active,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:active,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger.active,.btn-danger.focus,.btn-danger:active,.btn-danger:focus,.btn-danger:hover,.open>.btn-danger.dropdown-toggle{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger.active,.btn-danger:active,.open>.btn-danger.dropdown-toggle{background-image:none}.btn-danger.disabled,.btn-danger.disabled.active,.btn-danger.disabled.focus,.btn-danger.disabled:active,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled],.btn-danger[disabled].active,.btn-danger[disabled].focus,.btn-danger[disabled]:active,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger,fieldset[disabled] .btn-danger.active,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:active,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{color:#337ab7;font-weight:400;border-radius:0}.btn-link,.btn-link.active,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:active,.btn-link:focus,.btn-link:hover{border-color:transparent}.btn-link:focus,.btn-link:hover{color:#23527c;text-decoration:underline;background-color:transparent}.btn-link[disabled]:focus,.btn-link[disabled]:hover,fieldset[disabled] .btn-link:focus,fieldset[disabled] .btn-link:hover{color:#777;text-decoration:none}.btn-group-lg>.btn,.btn-lg{padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.btn-group-sm>.btn,.btn-sm{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-group-xs>.btn,.btn-xs{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none;visibility:hidden}.collapse.in{display:block;visibility:visible}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-property:height,visibility;transition-property:height,visibility;-webkit-transition-duration:.35s;transition-duration:.35s;-webkit-transition-timing-function:ease;transition-timing-function:ease}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px solid;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown,.dropup{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;font-size:14px;text-align:left;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175);background-clip:padding-box}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.428571429;color:#333;white-space:nowrap}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{text-decoration:none;color:#262626;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;outline:0;background-color:#337ab7}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{color:#777}.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{text-decoration:none;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);cursor:not-allowed}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{left:auto;right:0}.dropdown-menu-left{left:0;right:auto}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.428571429;color:#777;white-space:nowrap}.dropdown-backdrop{position:fixed;left:0;right:0;bottom:0;top:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px solid;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width:768px){.navbar-right .dropdown-menu{right:0;left:auto}.navbar-right .dropdown-menu-left{left:0;right:auto}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;float:left}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar:after,.btn-toolbar:before{content:" ";display:table}.btn-toolbar:after{clear:both}.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-left:8px;padding-right:8px}.btn-group-lg.btn-group>.btn+.dropdown-toggle,.btn-group>.btn-lg+.dropdown-toggle{padding-left:12px;padding-right:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-group-lg>.btn .caret,.btn-lg .caret{border-width:5px 5px 0}.dropup .btn-group-lg>.btn .caret,.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group:after,.btn-group-vertical>.btn-group:before{content:" ";display:table}.btn-group-vertical>.btn-group:after{clear:both}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-bottom-left-radius:4px;border-top-right-radius:0;border-top-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{float:none;display:table-cell;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle=buttons]>.btn input[type=checkbox],[data-toggle=buttons]>.btn input[type=radio],[data-toggle=buttons]>.btn-group>.btn input[type=checkbox],[data-toggle=buttons]>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*=col-]{float:none;padding-left:0;padding-right:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group .form-control,.input-group-addon,.input-group-btn{display:table-cell}.input-group .form-control:not(:first-child):not(:last-child),.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:400;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.input-group-addon.btn{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.input-group-addon.btn{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type=checkbox],.input-group-addon input[type=radio]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn-group:not(:last-child)>.btn,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:first-child>.btn-group:not(:first-child)>.btn,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle{border-bottom-left-radius:0;border-top-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:active,.input-group-btn>.btn:focus,.input-group-btn>.btn:hover{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{margin-left:-1px}.nav{margin-bottom:0;padding-left:0;list-style:none}.nav:after,.nav:before{content:" ";display:table}.nav:after{clear:both}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:focus,.nav>li>a:hover{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#777}.nav>li.disabled>a:focus,.nav>li.disabled>a:hover{color:#777;text-decoration:none;background-color:transparent;cursor:not-allowed}.nav .open>a,.nav .open>a:focus,.nav .open>a:hover{background-color:#eee;border-color:#337ab7}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.428571429;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:focus,.nav-tabs>li.active>a:hover{color:#555;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent;cursor:default}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:focus,.nav-pills>li.active>a:hover{color:#fff;background-color:#337ab7}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified,.nav-tabs.nav-justified{width:100%}.nav-justified>li,.nav-tabs.nav-justified>li{float:none}.nav-justified>li>a,.nav-tabs.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li,.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a,.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified,.nav-tabs.nav-justified{border-bottom:0}.nav-tabs-justified>li>a,.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs-justified>li>a,.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none;visibility:hidden}.tab-content>.active{display:block;visibility:visible}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}.navbar:after,.navbar:before{content:" ";display:table}.navbar:after{clear:both}@media (min-width:768px){.navbar{border-radius:4px}}.navbar-header:after,.navbar-header:before{content:" ";display:table}.navbar-header:after{clear:both}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{overflow-x:visible;padding-right:15px;padding-left:15px;border-top:1px solid transparent;box-shadow:inset 0 1px 0 rgba(255,255,255,.1);-webkit-overflow-scrolling:touch}.navbar-collapse:after,.navbar-collapse:before{content:" ";display:table}.navbar-collapse:after{clear:both}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;box-shadow:none}.navbar-collapse.collapse{display:block!important;visibility:visible!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse{padding-left:0;padding-right:0}}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:340px}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:200px}}.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-bottom,.navbar-fixed-top{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-bottom,.navbar-fixed-top{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;padding:15px;font-size:18px;line-height:20px;height:50px}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;margin-right:15px;padding:9px 10px;margin-top:8px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;box-shadow:none}.navbar-nav .open .dropdown-menu .dropdown-header,.navbar-nav .open .dropdown-menu>li>a{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:focus,.navbar-nav .open .dropdown-menu>li>a:hover{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}}.navbar-form{margin:8px -15px;padding:10px 15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1)}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .form-control,.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .checkbox,.navbar-form .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .checkbox label,.navbar-form .radio label{padding-left:0}.navbar-form .checkbox input[type=checkbox],.navbar-form .radio input[type=radio]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:768px){.navbar-form{width:auto;border:0;margin-left:0;margin-right:0;padding-top:0;padding-bottom:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-radius:4px 4px 0 0}.navbar-btn{margin-top:8px;margin-bottom:8px}.btn-group-sm>.navbar-btn.btn,.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.btn-group-xs>.navbar-btn.btn,.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:768px){.navbar-text{float:left;margin-left:15px;margin-right:15px}}@media (min-width:768px){.navbar-left{float:left!important}.navbar-right{float:right!important;margin-right:-15px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:focus,.navbar-default .navbar-brand:hover{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-nav>li>a,.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a:focus,.navbar-default .navbar-nav>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:focus,.navbar-default .navbar-nav>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:focus,.navbar-default .navbar-nav>.disabled>a:hover{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:focus,.navbar-default .navbar-toggle:hover{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:focus,.navbar-default .navbar-nav>.open>a:hover{background-color:#e7e7e7;color:#555}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-default .btn-link{color:#777}.navbar-default .btn-link:focus,.navbar-default .btn-link:hover{color:#333}.navbar-default .btn-link[disabled]:focus,.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:focus,fieldset[disabled] .navbar-default .btn-link:hover{color:#ccc}.navbar-inverse{background-color:#222;border-color:#090909}.navbar-inverse .navbar-brand{color:#9d9d9d}.navbar-inverse .navbar-brand:focus,.navbar-inverse .navbar-brand:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>li>a,.navbar-inverse .navbar-text{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a:focus,.navbar-inverse .navbar-nav>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:focus,.navbar-inverse .navbar-nav>.active>a:hover{color:#fff;background-color:#090909}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:focus,.navbar-inverse .navbar-nav>.disabled>a:hover{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:focus,.navbar-inverse .navbar-toggle:hover{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:focus,.navbar-inverse .navbar-nav>.open>a:hover{background-color:#090909;color:#fff}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#090909}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#090909}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-color:#090909}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#9d9d9d}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link{color:#9d9d9d}.navbar-inverse .btn-link:focus,.navbar-inverse .btn-link:hover{color:#fff}.navbar-inverse .btn-link[disabled]:focus,.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:focus,fieldset[disabled] .navbar-inverse .btn-link:hover{color:#444}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{content:"/\00a0";padding:0 5px;color:#ccc}.breadcrumb>.active{color:#777}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;line-height:1.428571429;text-decoration:none;color:#337ab7;background-color:#fff;border:1px solid #ddd;margin-left:-1px}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-bottom-left-radius:4px;border-top-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-bottom-right-radius:4px;border-top-right-radius:4px}.pagination>li>a:focus,.pagination>li>a:hover,.pagination>li>span:focus,.pagination>li>span:hover{color:#23527c;background-color:#eee;border-color:#ddd}.pagination>.active>a,.pagination>.active>a:focus,.pagination>.active>a:hover,.pagination>.active>span,.pagination>.active>span:focus,.pagination>.active>span:hover{z-index:2;color:#fff;background-color:#337ab7;border-color:#337ab7;cursor:default}.pagination>.disabled>a,.pagination>.disabled>a:focus,.pagination>.disabled>a:hover,.pagination>.disabled>span,.pagination>.disabled>span:focus,.pagination>.disabled>span:hover{color:#777;background-color:#fff;border-color:#ddd;cursor:not-allowed}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-bottom-left-radius:6px;border-top-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-bottom-right-radius:6px;border-top-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-bottom-left-radius:3px;border-top-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-bottom-right-radius:3px;border-top-right-radius:3px}.pager{padding-left:0;margin:20px 0;list-style:none;text-align:center}.pager:after,.pager:before{content:" ";display:table}.pager:after{clear:both}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:focus,.pager li>a:hover{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:focus,.pager .disabled>a:hover,.pager .disabled>span{color:#777;background-color:#fff;cursor:not-allowed}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}.label:empty{display:none}.btn .label{position:relative;top:-1px}a.label:focus,a.label:hover{color:#fff;text-decoration:none;cursor:pointer}.label-default{background-color:#777}.label-default[href]:focus,.label-default[href]:hover{background-color:#5e5e5e}.label-primary{background-color:#337ab7}.label-primary[href]:focus,.label-primary[href]:hover{background-color:#286090}.label-success{background-color:#5cb85c}.label-success[href]:focus,.label-success[href]:hover{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:focus,.label-info[href]:hover{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:focus,.label-warning[href]:hover{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:focus,.label-danger[href]:hover{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:700;color:#fff;line-height:1;vertical-align:baseline;white-space:nowrap;text-align:center;background-color:#777;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-group-xs>.btn .badge,.btn-xs .badge{top:0;padding:1px 5px}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#337ab7;background-color:#fff}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}a.badge:focus,a.badge:hover{color:#fff;text-decoration:none;cursor:pointer}.jumbotron{padding:30px 15px;margin-bottom:30px;color:inherit;background-color:#eee}.jumbotron .h1,.jumbotron h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.jumbotron>hr{border-top-color:#d5d5d5}.container .jumbotron,.container-fluid .jumbotron{border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding:48px 0}.container .jumbotron,.container-fluid .jumbotron{padding-left:60px;padding-right:60px}.jumbotron .h1,.jumbotron h1{font-size:63px}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.428571429;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out}.thumbnail a>img,.thumbnail>img{display:block;max-width:100%;height:auto;margin-left:auto;margin-right:auto}.thumbnail .caption{padding:9px;color:#333}a.thumbnail.active,a.thumbnail:focus,a.thumbnail:hover{border-color:#337ab7}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:700}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{background-color:#dff0d8;border-color:#d6e9c6;color:#3c763d}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{background-color:#d9edf7;border-color:#bce8f1;color:#31708f}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{background-color:#fcf8e3;border-color:#faebcc;color:#8a6d3b}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{background-color:#f2dede;border-color:#ebccd1;color:#a94442}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{overflow:hidden;height:20px;margin-bottom:20px;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.progress-bar{float:left;width:0;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#337ab7;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress-bar-striped,.progress-striped .progress-bar{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:40px 40px}.progress-bar.active,.progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.media{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{zoom:1;overflow:hidden}.media-body{width:10000px}.media-object{display:block}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-body,.media-left,.media-right{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{margin-bottom:20px;padding-left:0}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-right-radius:4px;border-top-left-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}a.list-group-item{color:#555}a.list-group-item .list-group-item-heading{color:#333}a.list-group-item:focus,a.list-group-item:hover{text-decoration:none;color:#555;background-color:#f5f5f5}.list-group-item.disabled,.list-group-item.disabled:focus,.list-group-item.disabled:hover{background-color:#eee;color:#777;cursor:not-allowed}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text{color:#777}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{z-index:2;color:#fff;background-color:#337ab7;border-color:#337ab7}.list-group-item.active .list-group-item-heading,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:focus .list-group-item-text,.list-group-item.active:hover .list-group-item-text{color:#c7ddef}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:focus,a.list-group-item-success:hover{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:focus,a.list-group-item-success.active:hover{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:focus,a.list-group-item-info:hover{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:focus,a.list-group-item-info.active:hover{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:focus,a.list-group-item-warning:hover{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:focus,a.list-group-item-warning.active:hover{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:focus,a.list-group-item-danger:hover{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:focus,a.list-group-item-danger.active:hover{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05);box-shadow:0 1px 1px rgba(0,0,0,.05)}.panel-body{padding:15px}.panel-body:after,.panel-body:before{content:" ";display:table}.panel-body:after{clear:both}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:3px;border-top-left-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>.small,.panel-title>.small>a,.panel-title>a,.panel-title>small,.panel-title>small>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-right-radius:3px;border-top-left-radius:3px}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.list-group+.panel-footer,.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.panel>.panel-collapse>.table,.panel>.table,.panel>.table-responsive>.table{margin-bottom:0}.panel>.panel-collapse>.table caption,.panel>.table caption,.panel>.table-responsive>.table caption{padding-left:15px;padding-right:15px}.panel>.table-responsive:first-child>.table:first-child,.panel>.table:first-child{border-top-right-radius:3px;border-top-left-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table:first-child>thead:first-child>tr:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table-responsive:last-child>.table:last-child,.panel>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-left-radius:3px;border-bottom-right-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child td,.panel>.table>tbody:first-child>tr:first-child th{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th{border-bottom:0}.panel>.table-responsive{border:0;margin-bottom:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.list-group,.panel-group .panel-heading+.panel-collapse>.panel-body{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#333}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#337ab7}.panel-primary>.panel-heading{color:#fff;background-color:#337ab7;border-color:#337ab7}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#337ab7}.panel-primary>.panel-heading .badge{color:#337ab7;background-color:#fff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#337ab7}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d6e9c6}.panel-success>.panel-heading .badge{color:#dff0d8;background-color:#3c763d}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#bce8f1}.panel-info>.panel-heading .badge{color:#d9edf7;background-color:#31708f}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#faebcc}.panel-warning>.panel-heading .badge{color:#fcf8e3;background-color:#8a6d3b}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ebccd1}.panel-danger>.panel-heading .badge{color:#f2dede;background-color:#a94442}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ebccd1}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;left:0;bottom:0;height:100%;width:100%;border:0}.embed-responsive.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.2;filter:alpha(opacity=20)}.close:focus,.close:hover{color:#000;text-decoration:none;cursor:pointer;opacity:.5;filter:alpha(opacity=50)}button.close{padding:0;cursor:pointer;background:0 0;border:0;-webkit-appearance:none}.modal-open{overflow:hidden}.modal{display:none;overflow:hidden;position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);-o-transform:translate(0,-25%);transform:translate(0,-25%);-webkit-transition:-webkit-transform .3s ease-out;-moz-transition:-moz-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out}.modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5);background-clip:padding-box;outline:0}.modal-backdrop{position:absolute;top:0;right:0;left:0;background-color:#000}.modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.modal-backdrop.in{opacity:.5;filter:alpha(opacity=50)}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5;min-height:16.43px}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.428571429}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer:after,.modal-footer:before{content:" ";display:table}.modal-footer:after{clear:both}.modal-footer .btn+.btn{margin-left:5px;margin-bottom:0}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;visibility:visible;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:12px;font-weight:400;line-height:1.4;opacity:0;filter:alpha(opacity=0)}.tooltip.in{opacity:.9;filter:alpha(opacity=90)}.tooltip.top{margin-top:-3px;padding:5px 0}.tooltip.right{margin-left:3px;padding:0 5px}.tooltip.bottom{margin-top:3px;padding:5px 0}.tooltip.left{margin-left:-3px;padding:0 5px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;text-decoration:none;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-left .tooltip-arrow{bottom:0;right:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;font-weight:400;line-height:1.428571429;text-align:left;background-color:#fff;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2);white-space:normal}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{margin:0;padding:8px 14px;font-size:14px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{border-width:10px;content:""}.popover.top>.arrow{left:50%;margin-left:-11px;border-bottom-width:0;border-top-color:#999;border-top-color:rgba(0,0,0,.25);bottom:-11px}.popover.top>.arrow:after{content:" ";bottom:1px;margin-left:-10px;border-bottom-width:0;border-top-color:#fff}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-left-width:0;border-right-color:#999;border-right-color:rgba(0,0,0,.25)}.popover.right>.arrow:after{content:" ";left:1px;bottom:-10px;border-left-width:0;border-right-color:#fff}.popover.bottom>.arrow{left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25);top:-11px}.popover.bottom>.arrow:after{content:" ";top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.25)}.popover.left>.arrow:after{content:" ";right:1px;border-right-width:0;border-left-color:#fff;bottom:-10px}.carousel{position:relative}.carousel-inner{position:relative;overflow:hidden;width:100%}.carousel-inner>.item{display:none;position:relative;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>a>img,.carousel-inner>.item>img{display:block;max-width:100%;height:auto;line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;-moz-transition:-moz-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:transform .6s ease-in-out;-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000;-moz-perspective:1000;perspective:1000}.carousel-inner>.item.active.right,.carousel-inner>.item.next{-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0);left:0}.carousel-inner>.item.active.left,.carousel-inner>.item.prev{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0);left:0}.carousel-inner>.item.active,.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);left:0}}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;left:0;bottom:0;width:15%;opacity:.5;filter:alpha(opacity=50);font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.carousel-control.left{background-image:-webkit-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1)}.carousel-control.right{left:auto;right:0;background-image:-webkit-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1)}.carousel-control:focus,.carousel-control:hover{outline:0;color:#fff;text-decoration:none;opacity:.9;filter:alpha(opacity=90)}.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{position:absolute;top:50%;z-index:5;display:inline-block}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{left:50%;margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{right:50%;margin-right:-10px}.carousel-control .icon-next,.carousel-control .icon-prev{width:20px;height:20px;margin-top:-10px;line-height:1;font-family:serif}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;margin-left:-30%;padding-left:0;list-style:none;text-align:center}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;border:1px solid #fff;border-radius:10px;cursor:pointer;background-color:transparent}.carousel-indicators .active{margin:0;width:12px;height:12px;background-color:#fff}.carousel-caption{position:absolute;left:15%;right:15%;bottom:20px;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{width:30px;height:30px;margin-top:-15px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-15px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-15px}.carousel-caption{left:20%;right:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.clearfix:after,.clearfix:before{content:" ";display:table}.clearfix:after{clear:both}.center-block{display:block;margin-left:auto;margin-right:auto}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none!important;visibility:hidden!important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-lg,.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block,.visible-md,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-print,.visible-print-block,.visible-print-inline,.visible-print-inline-block,.visible-sm,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-xs,.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block{display:none!important}@media (max-width:767px){.visible-xs{display:block!important}table.visible-xs{display:table}tr.visible-xs{display:table-row!important}td.visible-xs,th.visible-xs{display:table-cell!important}}@media (max-width:767px){.visible-xs-block{display:block!important}}@media (max-width:767px){.visible-xs-inline{display:inline!important}}@media (max-width:767px){.visible-xs-inline-block{display:inline-block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block!important}table.visible-sm{display:table}tr.visible-sm{display:table-row!important}td.visible-sm,th.visible-sm{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-block{display:block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline{display:inline!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline-block{display:inline-block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block!important}table.visible-md{display:table}tr.visible-md{display:table-row!important}td.visible-md,th.visible-md{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-block{display:block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline{display:inline!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline-block{display:inline-block!important}}@media (min-width:1200px){.visible-lg{display:block!important}table.visible-lg{display:table}tr.visible-lg{display:table-row!important}td.visible-lg,th.visible-lg{display:table-cell!important}}@media (min-width:1200px){.visible-lg-block{display:block!important}}@media (min-width:1200px){.visible-lg-inline{display:inline!important}}@media (min-width:1200px){.visible-lg-inline-block{display:inline-block!important}}@media (max-width:767px){.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-lg{display:none!important}}@media print{.visible-print{display:block!important}table.visible-print{display:table}tr.visible-print{display:table-row!important}td.visible-print,th.visible-print{display:table-cell!important}}@media print{.visible-print-block{display:block!important}}@media print{.visible-print-inline{display:inline!important}}@media print{.visible-print-inline-block{display:inline-block!important}}@media print{.hidden-print{display:none!important}}.vn-placeholder{-webkit-transition-property:font-size top;transition-property:font-size top;-webkit-transition-duration:.2s;transition-duration:.2s;-webkit-transition-timing-function:ease;transition-timing-function:ease;position:absolute;font-family:roboto-light;font-size:14px;color:#999;top:14px;left:12px;line-height:14px;cursor:text}.vn-placeholder.-selected{top:-10px;left:12px;font-size:11px;color:#999}.vn-placeholder.-focus{color:#000;font-family:roboto-bold}.input-help.bottom,.input-help.bottom-right{top:35px}.input-help.top,.input-help.top-left{bottom:70px}.vn-product-option__select button{min-width:100px}.vn-product-option__select button span{margin-left:5px!important}.vn-product-option__select ul{min-width:100px;left:71px;text-align:center}/*! RATING *//*!***************************************************************************/.tick:before{content:'\2605'}.rating{margin:0;padding:0}ul.rating{display:inline-block}.rating li{list-style-type:none;display:inline-block;padding:1px;text-align:center;font-weight:700;cursor:pointer;color:#000}/*!***************************************************************************/.styled-optionbox-option .displayAddress .row div{margin-bottom:0}.displayAddress .row{margin:0}.displayAddress .row div{margin-bottom:10px;margin-left:0;margin-right:0}.displayAddress .row div:last{margin-bottom:0}.th-checkout__ship-method{margin:10px 0;background:#fafafa;border:1px solid #ebebeb;box-shadow:rgba(0,0,0,.14902) 0 1px 1px 0,rgba(0,0,0,.09804) 0 1px 2px 0}.th-checkout__ship-method__heading{text-align:center;margin:20px 0;font-size:2.4rem;font-weight:700;text-transform:uppercase}.th-checkout__ship-method__method{position:relative}.th-checkout__ship-method__method .styled-optionbox-option label div{margin-right:70px}.th-checkout__ship-method__method:last-child .styled-optionbox-option{border-bottom:0}.th-checkout__ship-method__price{position:absolute;top:50%;transform:translateY(-50%);right:20px}.th-checkout__ship-method__display{position:relative;overflow:auto}.th-checkout__ship-method__display__name{float:left;padding:20px 90px 20px 20px}.th-checkout__ship-method__display__price{position:absolute;top:22px;right:20px;text-align:right}.th-checkout__ship-method .styled-checkbox-option input+label{padding-right:55px;margin-left:30px}.th-checkout__ship-method .styled-checkbox-option input+label:before{margin-left:-30px}.vn-dropdown{position:relative}.vn-dropdown__menu.dropdown-menu{width:100%;min-width:180px;max-height:150px;overflow-y:auto;padding:8px}.vn-dropdown__menu.dropdown-menu>li>a{padding-left:5px;padding-right:5px}@media (max-width:992px){.vn-dropdown__menu.dropdown-menu>li>a{padding-top:8px;padding-bottom:8px}}.vn-dropdown__select{display:none;height:1px;width:1px}.th-checkout__login{text-align:center;background-color:#fff;height:100%}.th-checkout__login__form{margin:20px}@media (max-width:480px){.th-checkout__login__form{margin:0}}.th-checkout__login__form .form-control{font-size:1.8rem}.th-checkout__login__user-type{text-align:center;padding:0 0 20px}.th-checkout__login__user-type .btn-group{width:100%}.th-checkout__login__user-type .btn-group button{width:50%}@media (max-width:480px){.th-checkout__login__user-type .btn-group button{font-size:14px}}.th-checkout__login__continue{margin-top:20px}.th-checkout__review .review__discounts__discount-info--subtotal,.th-checkout__review .review__grand-total-info--subtotal,.th-checkout__review .review__items__item-info--subtotal,.th-checkout__review .review__shipping-method-info--subtotal,.th-checkout__review .review__store-credit-info--subtotal,.th-checkout__review .review__tax-info--subtotal{font-size:1.5rem;position:absolute;right:0;top:0}.th-checkout__review{padding:17px;margin:10px;background:#fafafa;border:1px solid #ebebeb;box-shadow:rgba(0,0,0,.14902) 0 1px 1px 0,rgba(0,0,0,.09804) 0 1px 2px 0}.th-checkout__review .review__totals{border-bottom:1px solid #CCC;padding:0 0 14px}.th-checkout__review .review__totals__expand{float:left;margin-top:-4px}.th-checkout__review .review__totals__expand button{border:none;background-color:transparent;outline:0}.th-checkout__review .review__totals__expand span:after{font-family:FontAwesome;content:'\f078';margin:0 5px}.th-checkout__review .review__totals__expand.expanded span:after{font-family:FontAwesome;content:'\f077';margin:0 5px}.th-checkout__review .review__totals__count{float:left}.th-checkout__review .review__totals__amount{float:right;font-size:1.5rem}.th-checkout__review .review__discounts{border-bottom:1px solid #CCC}.th-checkout__review .review__discounts__discount{margin:14px 0}.th-checkout__review .review__discounts__discount .discount-info-row{position:relative}.th-checkout__review .review__discounts__discount-info{text-align:left}.th-checkout__review .review__store-credit{border-bottom:1px solid #CCC}.th-checkout__review .review__store-credit .store-credit-info-row{position:relative;margin:14px 0;text-align:left}.th-checkout__review .review__shipping-method{border-bottom:1px solid #CCC}.th-checkout__review .review__shipping-method .shipping-method-info-row{position:relative;margin:14px 0;text-align:left}.th-checkout__review .review__tax{border-bottom:1px solid #CCC}.th-checkout__review .review__tax .tax-info-row{position:relative;margin:14px 0;text-align:left}.th-checkout__review .review__grand-total .grand-total-info-row{position:relative;margin-top:14px;text-align:left;font-size:20px;font-weight:700}.th-checkout__review .review__grand-total-info--subtotal{font-size:20px;font-weight:700}.th-checkout__review .review__items{padding:10px 0;overflow-y:auto;height:100%}.th-checkout__review .review__items--label{text-transform:uppercase}.th-checkout__review .review__items__item{position:relative;margin-bottom:10px;border-bottom:1px solid #CCC}.th-checkout__review .review__items__item.-last{margin-bottom:0;border-bottom:1px solid transparent}.th-checkout__review .review__items__item-image{float:left;margin-right:10px}.th-checkout__review .review__items__item-image img{max-height:80px;max-width:80px}.th-checkout__review .review__items__item-info{line-height:1.2;text-align:left;margin-bottom:5px}.th-checkout__review .review__items__item-info .item-info-row{position:relative}.th-checkout__review .review__items__item-info--name{white-space:nowrap;overflow:hidden;-ms-text-overflow:ellipsis;-o-text-overflow:ellipsis;text-overflow:ellipsis;text-transform:uppercase}.th-checkout__thanks__header{text-align:center;font-size:18px}.th-checkout__thanks__header .title{font-weight:700;font-size:24px}.th-checkout__thanks__header .action-info{margin-top:10px;font-size:14px}.th-checkout__thanks__column{width:50%;float:left;padding:20px}.th-checkout__thanks__column.-next{border-left:1px solid #777}.th-checkout__thanks__column .title{margin-top:20px;font-weight:700;font-size:18px}.th-checkout__thanks__display .row{margin:0;padding:0}.th-checkout__thanks__display .credit-card__number{font-weight:700}.th-checkout__thanks__display .credit-card__image{border:none;height:30px;width:44px;position:absolute;top:10px;left:170px;background:url(/images/sprites/creditcards-b.png) -166px 0}.th-checkout__thanks__display .credit-card__image--notvalid{-webkit-filter:grayscale(100%);-moz-filter:grayscale(100%);filter:grayscale(100%)}.th-checkout__thanks__display .credit-card__image--flipped{background:url(/images/sprites/creditcards-b.png) -291px 0}.th-checkout__thanks__display .credit-card__image--unknown{background:url(/images/sprites/creditcards-b.png) -166px 0}.th-checkout__thanks__display .credit-card__image--amex{background:url(/images/sprites/creditcards-b.png) 1px 0}.th-checkout__thanks__display .credit-card__image--amex-flipped{background:url(/images/sprites/creditcards-b.png) -333px 0}.th-checkout__thanks__display .credit-card__image--visa{background:url(/images/sprites/creditcards-b.png) -41px 0}.th-checkout__thanks__display .credit-card__image--mastercard{background:url(/images/sprites/creditcards-b.png) -83px 0}.th-checkout__thanks__display .credit-card__image--discover{background:url(/images/sprites/creditcards-b.png) -208px 0} \ No newline at end of file diff --git a/translations/shopping-card/en.json b/translations/cart/en.json similarity index 95% rename from translations/shopping-card/en.json rename to translations/cart/en.json index 7a4480b9..cd1fae62 100644 --- a/translations/shopping-card/en.json +++ b/translations/cart/en.json @@ -1,5 +1,5 @@ { - "shopping-card": { + "cart": { "priceFree": "Free", "btnKeepShopping": "Keep Shopping", "btnCheckout": "Checkout", @@ -15,4 +15,4 @@ "lblGiftOption" : "Add gift wrap for", "lblGiftMessage" : "Add personal message ... (optional)" } -} +} \ No newline at end of file diff --git a/translations/header/en.json b/translations/header/en.json index 8473dafa..1bb4b9a1 100644 --- a/translations/header/en.json +++ b/translations/header/en.json @@ -3,6 +3,7 @@ "toggleNavigation" : "Toggle Navigation", "myCart" : "My Bag", "signIn" : "Sign In", + "signOut" : "Sign Out", "smartNavMoreLinkText" : "More" } }