Element.addMethods(
  {
    enableButton: function(element)
    {
      element = $(element);
      
      element.enable().value = 'Verzenden';
      
      if(Prototype.Browser.IE)
      {
        element.removeClassName('disabled');
        
        if(element.hasClassName("hover"))
        {
          element.removeClassName("disabledhover");
        }
      }
                
      return element;
    },
    disableButton: function(element)
    {
      element = $(element);
      
      element.disable().value = 'Bezig met verzenden...';
      
      if(Prototype.Browser.IE)
      {
        element.addClassName('disabled');
        
        if(element.hasClassName("hover"))
        {
          element.addClassName("disabledhover");
        }
      }
      
      return element;
    }
  }
);

function refreshCaptcha()
{
  $('ContactCaptchaImage').setStyle(
    {
      backgroundImage: 'url(/images/captcha.png?' + Math.round(new Date().getTime() / 1000) + ')'
    }
  );
  $('ContactCaptchaInput').value = '';
}

document.observe(
  "dom:loaded",
  function()
  {
    $('ContactStatus').hide();
    
    if(Prototype.Browser.MobileSafari)
    {
      $('ContactCaptchaLocation').update("eronder");
    }
  
    $('ContactForm').observe(
      'submit',
      function(e)
      {
        this.request(
          {
            onCreate: function()
            {
              $('ContactSubmitButton').disableButton();
            },
            
            onFailure: function()
            {
              $('ContactSubmitButton').enableButton();
              refreshCaptcha();
              
              $('ContactStatusIn').update("Er ging iets fout tijdens het verzenden van het bericht. Probeer het later nog eens.");
             
              $('ContactStatus').hide();
              new Effect.SlideDown('ContactStatus');
            },
            
            onSuccess: function(transport)
            {
              var json = transport.responseJSON;
              
              if(json.status == "OK")
              { 
                $('ContactStatusIn').addClassName('OK').addClassName('last').update(json.message);
                
                $('ContactStatus').hide();
                new Effect.SlideDown('ContactStatus');
                new Effect.SlideUp('ContactForm');
              }
              else if(json.status == "E")
              {
                $('ContactSubmitButton').enableButton();
                refreshCaptcha();
                
                $('ContactStatusIn').update(json.error);
               
                $('ContactStatus').hide();
                new Effect.SlideDown('ContactStatus');
              }
              else
              {
                $('ContactSubmitButton').enableButton();
                refreshCaptcha();
                              
                $('ContactStatusIn').update("Er ging iets fout tijdens het verzenden van het bericht. Probeer het later nog eens.");
               
                $('ContactStatus').hide();
                new Effect.SlideDown('ContactStatus');
              }
            }
          }
        );
        
        e.stop();
      }
    );
    
    if(Prototype.Browser.IE)
    {    
      $('ContactSubmitButton').observe(
        'mouseover',
        function()
        {
          this.addClassName('hover');
        
          if(this.disabled)
          {
            this.addClassName("disabledhover");
          }
        }
      ).observe(
        'mouseout',
        function()
        {
          this.removeClassName('hover');
        
          if(this.disabled)
          {
            this.removeClassName("disabledhover");
          }
        }
      );
    }
    
    
    $('ContactCaptchaImage').observe(
      'click',
      function()
      {
        refreshCaptcha();
      }
    )
  }
);