// Smooth scrolling jQuery.fn.smoothScrollTo = function() { if(this.length === 0) return; $('body').animate({ scrollTop: this.offset().top - 60 // Adjust to change final scroll position top margin }, 800); // Adjust to change animations speed (ms) return this; }; // Making contains text expression not worry about casing $.expr[":"].contains = $.expr.createPseudo(function(arg) { return function( elem ) { return $(elem).text().toUpperCase().indexOf(arg.toUpperCase()) >= 0; }; }); // Show a success message after the element it's called upon. jQuery.fn.showSuccess = function (message) { var elem = $(this); var success = $(''); elem.after(success); success.slideDown(400, function () { setTimeout(function () { success.slideUp(400, function () { success.remove(); }) }, 2000); }); }; // Show a failure messages from laravel. Searches for the name of the inputs. jQuery.fn.showFailure = function (messageMap) { var elem = $(this); $.each(messageMap, function (key, messages) { var input = elem.find('[name="' + key + '"]').last(); var fail = $(''); input.after(fail); fail.slideDown(400, function () { setTimeout(function () { fail.slideUp(400, function () { fail.remove(); }) }, 2000); }); }); }; // Submit the form that the called upon element sits in. jQuery.fn.submitForm = function() { $(this).closest('form').submit(); }; // Dropdown menu display jQuery.fn.dropDown = function() { var container = $(this), menu = container.find('ul'); container.find('[data-dropdown-toggle]').on('click', function() { menu.show().addClass('anim menuIn'); container.mouseleave(function() { menu.hide(); menu.removeClass('anim menuIn'); }); }); };