Filter = Class.create({ initialize: function (container, options){ this.container = $(container); this.options = Object.extend({ afterFilter: Prototype.emptyFunction }, options || {}); }, attachHandlers: function(aElements){ aElements.invoke('observe', 'click', function(evt){ var eltURI = evt.element().href; if(eltURI.include('/shop/asp/')) { eltURI +='/ajax/yes'; } else { eltURI = eltURI + "&ajax=yes"; } this.doFilter(eltURI); Event.stop(evt); return false; }.bindAsEventListener(this)); }, attachFormHandler: function(formId){ this.formElement = $(formId); if(this.formElement) { var hidden = $(Builder.node('input', { type: 'hidden', name: 'ajax', value: 'yes' })); this.formElement.appendChild(hidden); this.formElement.getInputs('submit').invoke('remove') if($('sort') != null){ $('sort').observe('change', function() { this.doFormFilter(this.formElement.action); }.bind(this)) } } }, attachShowTenureLinksHandlers: function(aElements){ aElements.invoke('observe', 'click', function(evt){ var link = evt.element(); var link2 = link.next('.plan_tenure_link'); var parent = link.getOffsetParent(link); var plans = parent.getElementsBySelector('.plansItem'); plans.each(function(div, index){ if(index>0) { div.removeClassName("displayNone"); } }); link.addClassName("displayNone"); link2.removeClassName("displayNone"); }.bindAsEventListener(this)); }, attachHideTenureLinksHandlers: function(aElements){ aElements.invoke('observe', 'click', function(evt){ var link = evt.element(); var link2 = link.previous('.plan_tenure_link'); var parent = link.getOffsetParent(link); var plans = parent.getElementsBySelector('.plansItem'); plans.each(function(div, index){ if(index>0) { div.addClassName("displayNone"); } }); link.addClassName("displayNone"); link2.removeClassName("displayNone"); }.bindAsEventListener(this)); }, doFilter: function(url){ new Ajax.Updater(this.container, url, { evalScripts: true, onLoading: function () { $('sandglass').show(); }.bind(this), method: 'get', onComplete: function(){ this.container.hide(); Effect.Appear(this.container, {duration: 1.0}); this.notify('afterFilter'); $('sandglass').hide(); }.bindAsEventListener(this) }); }, doFormFilter: function(url){ new Ajax.Updater(this.container, url, { evalScripts: true, onLoading: function () { $('sandglass').show(); }.bind(this), method: 'get', parameters: this.formElement.serialize(true), onComplete: function(){ this.container.hide(); Effect.Appear(this.container, {duration: 1.0}); this.notify('afterFilter'); $('sandglass').hide(); }.bindAsEventListener(this) }); }, notify: function(event_name){ try{ if(this.options[event_name]) return [this.options[event_name].apply(this.options[event_name],$A(arguments).slice(1))]; }catch(e){ if(e != $break) throw e; else return false; } } });