$(function () { // Collects all form values and submits. function doSearch() { var data, dropdowns, searchInput, query; data = {}; dropdowns = $('.browse-filter select, .browse-sort-select select'); searchInput = $('.search-input'); // Disable the inputs. dropdowns.prop('disabled', true).trigger("chosen:updated"); searchInput.prop('disabled', true); // Put inputs into `data` dropdowns.each(function() { data[$(this).attr('name')] = $(this).val(); }); data['q'] = searchInput.val(); // Build query string query = $.query; for (var key in data) { if (!data.hasOwnProperty(key)) continue; if (data[key]) query = query.set(key, data[key]); else query = query.remove(key); } window.location.search = query; } var searchTimeout; function staggeredSearch() { if (searchTimeout) clearTimeout(searchTimeout); searchTimeout = setTimeout(function() { doSearch(); }, 100); } // Use custom dropdown menus and submit form on selection $('.browse-filter-select select, .browse-sort-select select').chosen({disable_search_threshold: 10}) .change(function () { var sel = $(this); var event = {}; event[sel.attr('name')] = sel.val(); analytics.track('Filtered Products', event); staggeredSearch(); }); // Handle product searches $('.browse-search').submit(function () { var search = $('.search-input').val(); if (search || search.length) analytics.track('Searched Products', {query: search}); staggeredSearch(); return false; }); var categoryData = { layout: $('[name=sort]').val(), paid: $('[name=paid_or_free]').val(), asset: $('[name=asset_class]').val(), skill: $('[name=skill_level]').val() }; // Track views of product categories analytics.track('Viewed Product Category', categoryData); analytics.trackLink($('.product-box'), 'Clicked Product', function (ele) { var event = categoryData; event['product'] = $(ele).data('name'); return event; }); });