function LiveSearch(url, searchprompt) { var self = this; this.url = url; this.searchPrompt = searchprompt; this.input = jQuery('input#s'); // Hide the submit button jQuery('#searchform input[@type=submit]').hide(); // Insert reset and loading elements this.input.after(''); this.reset = jQuery('#searchreset'); this.loading = jQuery('#searchload'); this.input.addClass('livesearch').val(this.searchPrompt) this.loading.hide(); this.reset.show().fadeTo('fast', 0.3); // Bind events to the search input this.input .focus(function() { if (self.input.val() == self.searchPrompt) { self.input.val(''); } }) .blur(function() { if (self.input.val() == '') { self.input.val(self.searchPrompt); } }) .keyup(function(event) { var code = event.keyCode; if (self.input.val() == '') { return false; } else if (code == 27) { self.input.val(''); } else if (code != 13) { if (self.timer) { clearTimeout(self.timer); } self.timer = setTimeout(function(){ self.doSearch(self); }, 500); } }); }; LiveSearch.prototype.doSearch = function(self) { if (self.input.val() == self.prevSearch) return; self.reset.fadeTo('fast', 0.3); self.loading.fadeIn('fast'); if (!self.active) { self.active = true; if (typeof K2.RollingArchives != 'undefined' && K2.RollingArchives.saveState) { K2.RollingArchives.saveState(); } } self.prevSearch = self.input.val(); K2.ajaxGet(self.url, self.input.serialize() + '&k2dynamic=init', function(data) { jQuery('#current-content').hide(); jQuery('#dynamic-content').show().html(data); self.loading.fadeOut('fast'); self.reset.click(function(){ self.resetSearch(self); }).fadeTo('fast', 1.0).css('cursor', 'pointer'); } ); }; LiveSearch.prototype.resetSearch = function(self) { self.active = false; self.prevSearch = ''; self.input.val(self.searchPrompt); self.reset.unbind('click').fadeTo('fast', 0.3).css('cursor', 'default'); if ( jQuery('#current-content').length ) { jQuery('#dynamic-content').hide().html(''); jQuery('#current-content').show(); } if (typeof K2.RollingArchives != 'undefined' && K2.RollingArchives.restoreState) { K2.RollingArchives.restoreState(); } };