Yosemite.Slider=function(){this.stop=!1};Yosemite.Slider.prototype={defaultConfig:{index:0,auto:!0,delay:5e3,restart:1e4},init:function(){this.index=ko.observable(this.index);this.items=this.list.children();this.start()},afterInit:function(){var n=null;$(window).resize($.proxy(function(){this.list.stop(!0);this.clearTimeout();clearTimeout(n);n=setTimeout($.proxy(this.start,this),500)},this));Modernizr.touch||this.element.hover($.proxy(function(){this.stop=!0;this.clearTimeout()},this),$.proxy(function(){this.stop=!1;this.autoUpdate()},this))},start:function(){this.setListWidth();this.update(0,!0)},autoUpdate:function(){this.auto&&!this.stop&&this.scheduleNext()},scheduleNext:function(){this.timeout=setTimeout($.proxy(function(){this.update(1);this.wait=!1},this),this.wait?this.restart:this.delay)},clearTimeout:function(){clearTimeout(this.timeout)},update:function(n,t){var i,r;this.list.stop(!0);this.clearTimeout();i=this.index()+n;i<0?i=this.items.length-1:i>=this.items.length&&(i=0);(i!=this.index()||n==0)&&(r={marginLeft:this.getDistance(i)*-1+(this.viewport.width()-this.getWidth(i))/2},t?(this.list.css(r),this.autoUpdate()):this.list.animate(r,"slow",$.proxy(function(){this.autoUpdate();this.index(i)},this)))},setListWidth:function(){this.list.width(this.getDistance(this.items.length))},getDistance:function(n){for(var i=0,t=0;t<n;t++)i+=this.getWidth(t);return i},getWidth:function(n){return this.items.eq(n).outerWidth()},previous:function(){this.move(-1)},next:function(){this.move(1)},move:function(n){this.wait=Modernizr.touch;this.update(n)}};Yosemite.Sorting=function(){this.direction=ko.observable();this.expression=ko.observable()};Yosemite.Sorting.prototype={defaultConfig:{directionPattern:"{direction}",expressionPattern:"{expression}"},afterInit:function(){var n=$.proxy(this.changed,this);this.direction.subscribe(n);this.expression.subscribe(n)},changed:function(){this.url&&Yosemite.redirect(this.url.replace(this.expressionPattern,this.expression()).replace(this.directionPattern,this.direction()))}};Yosemite.PageSize=function(){this.size=ko.observable()};Yosemite.PageSize.prototype={defaultConfig:{minPage:1,allPage:-1,pagePattern:"{page}",sizePattern:"{size}"},afterInit:function(){this.initial=parseInt(this.size());this.size.subscribe($.proxy(this.changed,this))},changed:function(n){this.url&&(n=parseInt(n),Yosemite.redirect(this.url.replace(this.sizePattern,n).replace(this.pagePattern,n>this.initial||n==this.allPage?this.minPage:this.page)))}};Yosemite.ProductList=function(){this.display=ko.observable();this.productId=ko.observable()};Yosemite.ProductList.prototype={defaultConfig:{initialDisplay:"grid",cookieDisplayKey:"product-list-display"},afterInit:function(){this.display.subscribe($.proxy(this.changed,this));this.display($.cookie(this.cookieDisplayKey)||this.initialDisplay)},displayGrid:function(){this.display("grid")},displayList:function(){this.display("list");this.hideProduct()},changed:function(n){$.cookie(this.cookieDisplayKey,n,{path:"/"})},hideProduct:function(){this.productId(null)},showProduct:function(n){this.productId(n)}};Yosemite.Filters=function(){};Yosemite.Filters.prototype={defaultConfig:{opened:!1,filtersPattern:"{filters}"},init:function(){this.open=ko.observable(this.opened)},getFilters:function(){var n={};return this.element.find("[data-model]").each(function(){var t=ko.dataFor(this),i;t&&t.code&&$.isFunction(t.getFilter)&&(i=t.getFilter(),i&&(n[t.code]=i))}),n},toggle:function(){this.open(!this.open())},apply:function(){if(this.url){var n=this.getFilters(),t=$.isEmptyObject(n)?"":Base64.encode(JSON.stringify(n)),i=this.url.replace(this.filtersPattern,encodeURI(t));Yosemite.redirect(i)}}};Yosemite.Filters.ListFilter=function(){this.value=ko.observable()};Yosemite.Filters.ListFilter.prototype={getFilter:function(){return this.value()}};Yosemite.Filters.PriceFilter=function(){this.minPrice=ko.observable();this.maxPrice=ko.observable()};Yosemite.Filters.PriceFilter.prototype={code:"price",defaultConfig:{noUiSliderCssClass:"noUiSlider",sliderContainerCssClass:"container"},afterInit:function(){this.minPrice()||this.minPrice(this.lowerPrice);this.maxPrice()||this.maxPrice(this.greaterPrice);var t=$("<div/>").addClass(this.sliderContainerCssClass).appendTo(this.element),n=$("<div/>").addClass(this.noUiSliderCssClass).appendTo(t).noUiSlider({step:1,handles:2,range:[this.lowerPrice,this.greaterPrice],start:[this.minPrice(),this.maxPrice()],slide:$.proxy(function(){var t=n.val();this.minPrice(Math.round(t[0]));this.maxPrice(Math.round(t[1]))},this)});this.minPriceField.appendTo(n.find("div").first()).keypress(function(){return!1});this.maxPriceField.appendTo(n.find("div").last()).keypress(function(){return!1})},getFilter:function(){var t=this.minPrice(),i=this.maxPrice(),r=t!=this.lowerPrice,u=i!=this.greaterPrice,n;if(r||u)return n={},r&&(n.min=t),u&&(n.max=i),n}};Yosemite.Filters.StringFilter=function(){this.value=ko.observable()};Yosemite.Filters.StringFilter.prototype={getFilter:function(){return this.value()}};Yosemite.Filters.BooleanFilter=function(){this.value=ko.observable()};Yosemite.Filters.BooleanFilter.prototype={getFilter:function(){return this.value()}};Yosemite.Filters.DecimalFilter=function(){this.minValue=ko.observable();this.maxValue=ko.observable()};Yosemite.Filters.DecimalFilter.prototype={defaultConfig:{noUiSliderCssClass:"noUiSlider",sliderContainerCssClass:"container"},afterInit:function(){this.minValue()||this.minValue(parseFloat(this.lowerValue));this.maxValue()||this.maxValue(parseFloat(this.greaterValue));var t=$("<div/>").addClass(this.sliderContainerCssClass).appendTo(this.element),n=$("<div/>").addClass(this.noUiSliderCssClass).appendTo(t).noUiSlider({handles:2,range:[this.lowerValue,this.greaterValue],start:[this.minValue(),this.maxValue()],slide:$.proxy(function(){var t=n.val();this.minValue(t[0]);this.maxValue(t[1])},this)});this.minDecimalField.appendTo(n.find("div").first()).keypress(function(){return!1});this.maxDecimalField.appendTo(n.find("div").last()).keypress(function(){return!1})},normalize:function(n){return n.toString().replace(".","$")},getFilter:function(){var t=this.minValue(),i=this.maxValue(),r=t!=this.lowerValue,u=i!=this.greaterValue,n;if(r||u)return n={},r&&(n.min=t),u&&(n.max=i),n}};Yosemite.Filters.IntegerFilter=function(){this.minValue=ko.observable();this.maxValue=ko.observable()};Yosemite.Filters.IntegerFilter.prototype={defaultConfig:{noUiSliderCssClass:"noUiSlider",sliderContainerCssClass:"container"},afterInit:function(){this.minValue()||this.minValue(this.lowerValue);this.maxValue()||this.maxValue(this.greaterValue);var t=$("<div/>").addClass(this.sliderContainerCssClass).appendTo(this.element),n=$("<div/>").addClass(this.noUiSliderCssClass).appendTo(t).noUiSlider({step:1,handles:2,range:[this.lowerValue,this.greaterValue],start:[this.minValue(),this.maxValue()],slide:$.proxy(function(){var t=n.val();this.minValue(t[0]);this.maxValue(t[1])},this)});this.minDecimalField.appendTo(n.find("div").first()).keypress(function(){return!1});this.maxDecimalField.appendTo(n.find("div").last()).keypress(function(){return!1})},getFilter:function(){var t=this.minValue(),i=this.maxValue(),r=t!=this.lowerValue,u=i!=this.greaterValue,n;if(r||u)return n={},r&&(n.min=parseInt(t)),u&&(n.max=parseInt(i)),n}};Yosemite.Filters.DateTimeFilter=function(){this.initializedDateInput=0};Yosemite.Filters.DateTimeFilter.prototype={init:function(){this.getDateElements().bind({initialized:$.proxy(this.dateElementInitialized,this)})},dateElementInitialized:function(){++this.initializedDateInput==2&&this.setDatesEventHandlers()},setDatesEventHandlers:function(){var n=this.getMinDateModel(),t=this.getMaxDateModel();n.date.subscribe(function(){n.updateMyself(!0);t.updateMaxDate(n.date(),n)});t.date.subscribe(function(){t.updateMyself(!1);n.updateMinDate(t.date(),t)})},getDateElements:function(){return this.element.find('[data-model="Yosemite.DateInput"]')},getDateModel:function(n){var t=this.getDateElements(),i=n?t.first():t.last();return ko.dataFor(i.get(0))},getMinDateModel:function(){return this.getDateModel(!0)},getMaxDateModel:function(){return this.getDateModel(!1)},getFilter:function(){var t=this.getMinDateModel().date(),i=this.getMaxDateModel().date(),n;if(t||i)return n={},t&&(n.min=t),i&&(n.max=i),n}};Yosemite.Filters.DrowdownListFilter=function(){this.value=ko.observable()};Yosemite.Filters.DrowdownListFilter.prototype={getFilter:function(){return this.value()}}