(function($){ "use strict"; var selector = '.aws-container'; var instance = 0; var pluginPfx = 'aws_opts'; $.fn.aws_search = function( options ) { instance++; var self = $(this), $searchForm = self.find('.aws-search-form'), $searchField = self.find('.aws-search-field'), haveResults = false, requests = Array(), searchFor = '', cachedResponse = new Array(); var ajaxUrl = ( self.data('url') !== undefined ) ? self.data('url') : false; //var siteUrl = ( self.data('siteurl') !== undefined ) ? self.data('siteurl') : false; self.data( pluginPfx, { minChars : ( self.data('min-chars') !== undefined ) ? self.data('min-chars') : 1, showLoader: ( self.data('show-loader') !== undefined ) ? self.data('show-loader') : true, instance: instance, resultBlock: '#aws-search-result-' + instance }); var d = self.data(pluginPfx); var methods = { init: function() { $('body').append('
'); setTimeout(function() { methods.resultLayout(); }, 500) }, onKeyup: function(e) { searchFor = $searchField.val(); searchFor = searchFor.trim(); searchFor = searchFor.replace( /[`~!@#$%^&*()_|+\?;:'",.<>\{\}\[\]\\\/]/gi, '' ); searchFor = searchFor.replace( /\s\s+/g, ' ' ); for ( var i = 0; i < requests.length; i++ ) { requests[i].abort(); } if ( searchFor === '' ) { $(d.resultBlock).html(''); return; } if ( typeof cachedResponse[searchFor] != 'undefined') { methods.showResults( cachedResponse[searchFor] ); return; } if ( searchFor.length < d.minChars ) { $(d.resultBlock).html(''); return; } if ( d.showLoader ) { $searchForm.addClass('processing'); } var data = { action: 'aws_action', keyword : searchFor, page: 0 }; requests.push( $.ajax({ type: 'POST', url: ajaxUrl, data: data, success: function( response ) { var response = $.parseJSON( response ); cachedResponse[searchFor] = response; methods.showResults( response ); $(d.resultBlock).show(); }, error: function (data, dummy) { } }) ); }, showResults: function( response ) { var html = '