/* /_js/templates/home.js purpose: scripts for home page */ // - service areas switcher (function($) { var is_init = true; var selected; var $items = $('#service-areas-items-dynamic [data-service-area]'); var $select = $('#service-areas-items-select'); var ajax_url = $select.attr('data-ajax-url'); $select.on('change.service-items', function() { selected = $select.val(); $items.each(function(i) { if ($items.eq(i).attr('data-service-area') == selected) { $items.eq(i).show(); } else { $items.eq(i).hide(); } }); $.fn.matchHeight._update($('[data-mh="home-intro-service-areas"]')); if (is_init) { is_init = false; } else { ajaxUpdate(selected); } }).trigger('change.service-items'); // -- ajax updater function ajaxUpdate(selected_region_code) { // -- if ajax errors (meaning we do not receive data.status 'success' or 'fail') flag this to true var ajax_errored = false; // -- submit via ajax (POST) var msg, i; $.ajax({ type : 'POST', url : ajax_url, data : { ajax : true, selected_region_code : selected_region_code }, success : function(response) { switch (response.status) { default: // --- invalid response (maybe a 404?) ajax_errored = true; break; case 'success': // --- all good! // ---- output messages, if there are any msg = ''; for (i in response.messages) { msg += response.messages[i]+"\n"; } if (msg) { console.log(msg); } break; case 'fail': // --- ajax succeeded, but our request was declined // ---- output errors, if there are any (there must be!) msg = ''; for (i in response.errors) { msg += response.errors[i]+"\n"; } if (msg) { console.log(msg); } break; } }, error : function() { ajax_errored = true; // something else went wrong }, complete : function() { if (ajax_errored) { console.log('something went wrong. check for js errors'); } }, dataType : 'json', async : true//false }); } })(jQuery);