var Toggle = Class.create({
  initialize: function(options) {
    this.options = Object.extend({
      toggleClass: 'toggle',
      selectedClass: 'arrowselected',
      deleteClass: 'delete',
      deleteMessage: 'Are you sure you want to delete this item?',
      deleteCallback: Prototype.emptyFunction,
      prefix: ''
    }, options || {});
    
    
    Event.observe(window, 'load', function() {
      this.initToggles();
      this.initDeletes();
    }.bind(this));
  },
  
  initToggles: function() {
    $$('a.'+this.options.toggleClass).each(function(link) {
      link.observe('click', function(event) {
        var link = Event.element(event);
        var targetDiv = this.getLinkTarget(link);
        
        if (link.hasClassName(this.options.selectedClass)) {
          link.removeClassName(this.options.selectedClass); // hide
        } else {
          link.addClassName(this.options.selectedClass); //show
        }

        Effect.toggle(this.options.prefix+targetDiv, 'slide', {queue: 'end'});
        event.stop();
      }.bind(this));
    }.bind(this));
  },
  
  initDeletes: function() {
    $$('a.'+this.options.deleteClass).each(function(link) {
      link.observe('click', function(event) {
        if (confirm(this.options.deleteMessage)) {
          var link = Event.element(event);
          var targetDiv = this.getLinkTarget(link);
          if (!$(targetDiv)) return;          
          new Effect.Parallel([
            Effect.Fade(targetDiv),
            Effect.Fade(link.up())
          ]);
          this.options.deleteCallback(link);
        }
        event.stop();
      }.bind(this));
    }.bind(this));
  },
    
  getLinkTarget: function(link) {
    return link.href.substring(link.href.indexOf('#')+1);
  }
});

var bgmdToggle = new Toggle({toggleClass:'multiselect', selectedClass: 'multiunselect'});