var Participations = {
  onSubmit: function(form, group_id) {
    //console.log("participation_id = %o", $('participation_id'));
    if ($('participation_id')) {      
      //console.log("Updating participation id %s", $F('participation_id'));
      //console.log('_method should be put, is %s', $('form_method').value);
      $('edit_participation_submitter').hide();
      $('edit_participation_spinner').show();
      new Ajax.Request('/admin/groups/' + group_id + '/participations/' + $F('participation_id'), {
        asynchronous:true, evalScripts:true, parameters:Form.serialize(form)
      });       
    } else {
      //console.log('POSTing a new participation (and user)');
      $('form_method').value = 'post';
      new Ajax.Request('/admin/groups/' + group_id + '/participations', {
        asynchronous:true, evalScripts:true, parameters:Form.serialize(form)
      });       
      $('form_method').value = 'put';      
    }
  }
  
}


Element.ApplicationMethods = {
  toggleActive: function(element) {
    element = $(element);
    if (element.active()) {
      element.deactivate();
    } else {
      element.activate();
    }
    return element;
  },
  active: function(element) {
    return element['application:active'];
  },
  activate: function(element) {
    element = $(element)
    if (element.active()) return element;
    element['application:inactive_text'] = element.innerHTML;
    element.innerHTML = element.getAttribute('application:active_text');
    element.addClassName(element.getAttribute('application:active_class') || 'active');
    element['application:active'] = true;
    return element;
  },
  deactivate: function(element) {
    element = $(element)
    if (!element.active()) return element;
    element.innerHTML = element['application:inactive_text'];
    element.removeClassName(element.getAttribute('application:active_class') || 'active');
    element['application:active'] = false;
    return element;
  },
  disableButton: function(element) {
    element = $(element);
    element.disabled = 'true';
    if (element.getAttribute('application:disabled_value')) {
      if (element.tagName == "BUTTON") {
        element['application:enabled_value'] = element.innerHTML;
        element.innerHTML = element.getAttribute('application:disabled_value');        
      } else {
        element['application:enabled_value'] = element.value;
        element.value = element.getAttribute('application:disabled_value');        
      }
    }
    return element;
  },
  enableButton: function(element) {
    element.disabled = '';
    if (element.getAttribute('application:disabled_value') && element['application:enabled_value']) {
      element.value = element['application:enabled_value'];
    }
    return element;
  }  
}
 
Object.extend(Element, Element.ApplicationMethods);
Object.extend(Element.Methods, Element.ApplicationMethods);
Element.addMethods();


Object.extend(String.prototype, {
  upcase: function() {
    return this.toUpperCase();
  },

  downcase: function() {
    return this.toLowerCase();
  },
  
  toInteger: function() {
    return parseInt(this);
  },
  
  toSlug: function() {
    return this.strip().downcase().replace(/[^-a-z0-9~\s\.:;+=_]/g, '').replace(/[\s\.:;=+]+/g, '-');
  }
});
