- var CatalogFilter = function()
- {
- return {
- DOM:{
- control:'ul.catalog_filter li.filter_control',
- content:'li.filter_links',
- modal:'div.catalog-filter-modal'
- },
- init:function(obj)
- {
- var self = this;
- $(self.DOM.control).click(
- function()
- {
- $(self.DOM.modal).html($(this).parent().find(self.DOM.content).html()).modal();
- }
- );
- }
- };
- }
- var CategoriesMenu = function()
- {
- return {
- DOM:{
- control:'ul.catalog-menu-category-item li.category-item-top',
- content:'li.category-item-subs',
- link:'a.category-item-top'
- },
- toggle:function(obj)
- {
- var self = this;
- $(obj.element).parent().find(self.DOM.content).toggle();
- },
- init:function(obj)
- {
- var self = this;
- $(self.DOM.link).click(
- function()
- {
- if ($(this).closest('ul.catalog-menu-category-item').find('li.category-sub').attr('itemprop'))
- {
- self.toggle({element:$(this).parent()});
- return false;
- }
- }
- );
- $(self.DOM.control).click(
- function()
- {
- if ($(this).closest('ul.catalog-menu-category-item').find('li.category-sub').attr('itemprop'))
- {
- self.toggle({element:$(this)});
- }
- else
- {
- location.href = $(self.DOM.link).attr('href');
- }
- }
- );
- }
- }
- }
- var SearchByCode = function()
- {
- return {
- DOM:{
- field: 'input.product-code',
- container: 'ul.search-by-code li.search-by-code-result'
- },
- init:function(obj)
- {
- var self = this;
- $(self.DOM.field).keyup(
- function(a)
- {
- if ($(this).val().length > 3)
- {
- var req = {
- action: 'productsearchbycode',
- code: $(this).val()
- };
- var request = JSON.stringify(req);
- $.ajax({
- url: AJAX_URL,
- type: 'POST',
- data: request
- }).
- done(
- function(response)
- {
- var res = JSON.parse(response);
- $(self.DOM.container).html(res.data);
- $(self.DOM.container).show();
- }
- );
- }
- else
- {
- $(self.DOM.container).hide();
- }
- }
- );
- }
- }
- }
- var FilterDisplayControl = function()
- {
- return {
- DOM:{
- },
- init:function(obj)
- {
- var self = this;
- self.DOM.control = obj.control;
- self.DOM.view = obj.view;
- $(self.DOM.control).click(
- function()
- {
- $(this).parent().find(self.DOM.view).toggle();
- }
- );
- }
- }
- }
- $(document).ready(
- function()
- {
- var categoriesMenu = new CategoriesMenu();
- categoriesMenu.init({});
- var catalogFilter = new CatalogFilter();
- catalogFilter.init({});
- var searchByCode = new SearchByCode();
- searchByCode.init({});
- var sortDisplayControl = new FilterDisplayControl();
- sortDisplayControl.init({
- control:'span.filter-display-control',
- view: 'div.catalog-filters'
- });
- var filterDisplayControl = new FilterDisplayControl();
- filterDisplayControl.init({
- control:'ul.filter-control',
- view: 'ul.catalog_filter'
- });
- }
- );
Raw Paste