window.addEvent('load', function() {
  if ($('miAccount_Message')) {
    var close = new Element('a', {
      'class': 'miAccount_Close',
      href: 'javascript:void(0)',
      html: 'close',
      events: {
        click: function() {
          $('miAccount_Message').fade('out');
        }
      }
    });
    $('miAccount_Message').fade('hide');
    var setMessage = function(type, content) {
      close.dispose();
      $('miAccount_Message').set({
        'class': type,
        html: content
      }).fade('in');
      close.inject($('miAccount_Message'));
      (function(){
        $('miAccount_Message').fade('out');
      }).delay(5000);
    };
    var clearMessage = function(type, content) {
      $('miAccount_Message').set({
        'class':'',
        html: '&nbsp;'
      }).fade('out');
    };
    $('miAccount_Login').addEvent('submit', function(e) {
      clearMessage();
      new Request.JSON({
        url: this.get('action'),
        data: this.toQueryString(),
        onComplete: function(json) {
          if (json) {
            if (json.success) {
              setMessage('success','Login successful.');
              // track logins
              var pt = _gaq._getAsyncTracker();
              pt._trackPageview('/virtual/login');
              (function() {
                window.location = json.values.url;
              }).delay(1);
            } else {
              setMessage('error', json.errorMessages[0]);
            }
          } else {
            setMessage('error','An unknown error occurred, please try later.');
          }
        }
      }).send();
      return false;
    });
    $('miAccount_Register').addEvent('submit', function(e) {
      clearMessage();
      new Request.JSON({
        url: this.get('action'),
        data: this.toQueryString(),
        onComplete: function(json) {
          if (json) {
            if (json.success) {
              // track new member registration
              var pt = _gaq._getAsyncTracker();
              pt._trackPageview('/virtual/newmember');
              
              setMessage('success','New account created. Check your email for your password.');
              $('miAccount_username').set('value',  $("miAccount_new_username").get('value'));
              $$('#miAccount_Register input[type="text"]').set('value', '');
            } else {
              setMessage('error', json.errorMessages[0]);
            }
          } else {
            setMessage('error','An unknown error occurred, please try later.');
          }
        }
      }).send();
      return false;
    });
    $('miAccount_Reset').addEvent('submit', function(e) {
      clearMessage();
      new Request.JSON({
        url: this.get('action'),
        data: this.toQueryString(),
        onComplete: function(json) {
          if (json) {
            if (json.success) {
              setMessage('success','An email has been sent to you with instructions on resetting your password.');
            } else {
              setMessage('error', json.errorMessages[0]);
            }
          } else {
            setMessage('error','An unknown error occurred, please try later.');
          }
        }
      }).send();
      return false;
    });
  
    $('miAccount_Forgot').addEvent('click', function() {
      $('miAccount_Login').setStyle('display','none');
      $('miAccount_Reset').setStyle('display','block');
    });
    $('miAccount_Signin').addEvent('click', function() {
      $('miAccount_Reset').setStyle('display','none');
      $('miAccount_Login').setStyle('display','block');
    });
  }
});
