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();
}
};