function more(clicked) {
  
  if (clicked.innerHTML.indexOf('+') != -1) {

    // blind down every hidden element that is within the
    // parent of the "more [+]" link that was just pressed
    $A(clicked.parentNode.getElementsByTagName('*')).each(function(el){
      if (el.className == 'dotdotdot') {Element.hide(el); return;}
      if (Element.visible(el) || el.className == 'hidden') return;
      new Effect.Appear(el, {duration: .4});
      Element.addClassName(el, 'revealed');
    });  

    clicked.innerHTML = clicked.innerHTML.replace('More', 'Less').replace('+', '-');

  } else {

    // blind up every visible element that is within the
    // parent of the "more [+]" link that was just pressed
    // and has the class "revealed"
    $(clicked.parentNode).select('.revealed').each(function(el){
      new Effect.Fade(el, {duration: .4});
      
      Element.removeClassName(el, 'revealed');
    });
    
    setTimeout(function() {
      $(clicked.parentNode).select('.dotdotdot').each(function(el){
        Element.show(el);
      });
    }, 400);

    clicked.innerHTML = clicked.innerHTML.replace('Less', 'More').replace('-', '+');    

  }
  
  return false;
};

var Admin = {  
  'show' : function() {
    Effect.Appear('AdminForm', {duration: 0.3, afterFinish: function(){
      $('AdminPassword').focus();
    }});
  },
  
  
  'login' : function() {
    $('AdminMessage').hide();
    
    var password = $('AdminPassword').value;
    var type = $('AdminType').value;
    
    new Ajax.Request('/admin/login', {
      method: 'post',
      postBody: 'p=' + encodeURIComponent(password) + '&t=' + encodeURIComponent(type),
      onSuccess: function(req) {
        var results = eval('('+req.responseText+')');
        if(results) {
          if(type == 'manager')
            window.location.href = '/mug_club/manage';
          else
            window.location.href = window.location.href.split('#')[0];
        } else {
          $('AdminMessage').show();
        }
      }
    });
  }
}

function lunch() {
  Element.removeClassName('DinnerLink', 'active');
  Element.addClassName('LunchLink', 'active');
  new Effect.Appear('LunchSpecials', {duration: .4, afterSetup: function() {
    $('DinnerSpecials').hide();
  }});
  return false;
};

function dinner() {
  Element.removeClassName('LunchLink', 'active');
  Element.addClassName('DinnerLink', 'active');
  new Effect.Appear('DinnerSpecials', {duration: .4, afterSetup: function() {
    $('LunchSpecials').hide();
  }});
  return false;
};


// Thomas Fuch's defaultValueActsAsHint 
// from http://github.com/madrobby/prototype_helpers/
(function(){
  var methods = {
    defaultValueActsAsHint: function(element){
      element = $(element);
      if(element.defaultValue) element.value = element.defaultValue;
      element._default = element.value;
      element.blur();
      
      return element.observe('focus', function(){
        if(element._default != element.value) return;
        element.removeClassName('hint').value = '';
      }).observe('blur', function(){
        if(element.value.strip() != '') return;
        element.addClassName('hint').value = element._default;
      }).addClassName('hint');
    }
  };
   
  $w('input textarea').each(function(tag){ Element.addMethods(tag, methods) });
})();

var Tapline = function() {
  
  var _email_elem
  var _form_elem
  var _option_elem
  var _submit_elem
  var _success_elem

  var setup = function() {

    _form_elem = $$('#Tapline form').first()
    
    if(!_form_elem) return false
    
    _email_elem = $('TaplineEmailInput')
    _option_elem = $('TaplineIncludeDailyLabel')
    _submit_elem = $('TaplineSubmitButton')
    _success_elem = $('TaplineSuccessMessage')
    _not_valid_email_elem = $('TaplineEmailNotValidMessage');
    
    _email_elem.defaultValueActsAsHint()
    Event.observe(_email_elem, 'focus', reveal)
    
    Event.observe(_form_elem, 'submit', submit)
    
  }
  Event.observe(document, 'dom:loaded', setup)


  var submit = function(e) {
    
    Event.stop(e)
            
    new Ajax.Request('/contact/daily_email', {
      onComplete: on_complete,
      parameters: _form_elem.serialize()
    })
    
    $$('.taplineResponseMessage').invoke('hide')
    _form_elem.disable()

  }
  
  
  var on_complete = function(r) {
    
    _form_elem.enable()
    
    if(r.responseText == 'true') {
      _form_elem.reset()
      _email_elem.addClassName('hint').blur()
      Effect.Appear(_success_elem)
    }
    else if(r.responseText == 'invalid_email_address') {
      _email_elem.select()
      Effect.Appear(_not_valid_email_elem)
    }
    
  }


  var reveal = function() {

    if(_option_elem.visible()) return false
    
    new Effect.Parallel([
      Effect.BlindDown(_option_elem, {sync: true}),
      Effect.Appear(_option_elem, {sync: true})
    ], {duration: .5})
  
  }


}();