
window.addEvent('domready', function() {
  
  $('contacts').setStyle('display', 'block');
  var form = $('contact-form');
  if (form) {
    var fields = form.getElements('input[type="text"],textarea');
    fields.each(function(f) {
      f.addEvents({
        focus: function() {
          $('feedback-submit-btn').setStyle('display', 'inline');
          $('feedback-error').setStyle('display', 'none');
        }
      });
    });
    
    //form.action = '/feedback/send';
    new FormValidator(form, {
      evaluateFieldsOnBlur: false,
      evaluateFieldsOnChange: false,
      onElementPass: function(field) {
        $('feedback-submit-btn').setStyle('display', 'inline');
        $('feedback-error').setStyle('display', 'none');
      },
      onElementValidate: function(isValid, field, className, warn) {
        $('feedback-submit-btn').setStyle('display', 'inline');
        $('feedback-error').setStyle('display', 'none');
      },
      onFormValidate: function(isValid, form, event) {
        event.stop();
        $('feedback-submit-btn').blur();

        if (!isValid) {
          $('feedback-submit-btn').setStyle('display', 'none');
          $('feedback-error').setStyle('display', 'inline-block');
        } else {
          $('feedback-submit-btn').setStyle('display', 'inline');
          $('feedback-error').setStyle('display', 'none');
          
          $('feedback-sending-indicator').setStyle('display', 'inline-block');
          $('feedback-submit-btn').set('value', 'Отправляется...');
          
          var bounds = $('contact-form-cell').getCoordinates();
          $('feedback-sending').setStyles({
            display: 'block',
            left: bounds.left,
            top: bounds.top,
            width: bounds.width,
            height: bounds.height
          });
          
          new Request.JSON({
            url: '/feedback/send',
            method: 'post',
            data: form.toQueryString(),
            secure: false,
            onComplete: function() {
              $('feedback-sending').setStyle('display', 'none');
              $('feedback-sending-indicator').setStyle('display', 'none');
              $('feedback-submit-btn').set('value', 'Отправить сообщение');
            },
            onSuccess: function(json, text) {
              $('feedback-submit-btn').setStyle('display', 'none');
              $('feedback-again-btn').setStyle('display', 'inline');
              var fields = form.getElements('input[type="text"],textarea');
              fields.each(function(f) {
                f.set('disabled', 'disabled');
              });
            },
            onFailure: function(xhr) {
              var json = JSON.decode(xhr.responseText, false);
              $('feedback-submit-btn').setStyle('display', 'none');
              $('feedback-error').setStyle('display', 'inline-block').set('text', json.message);
            }
          }).send();
        }
      }
    });

    var resetButton = function() {
      $('feedback-submit-btn').setStyle('display', 'inline');
      $('feedback-error').setStyle('display', 'none');
    }
    var fields = form.getElements('input[type="text"],textarea');
    fields.each(function(f) {
      f.addEvents({
        change: resetButton,
        blur: resetButton
      });
    });

    $('feedback-again-btn').addEvent('click', function(event) {
      event.stop();
      $('feedback-submit-btn').setStyle('display', 'inline');
      $('feedback-again-btn').setStyle('display', 'none');
      var fields = form.getElements('input[type="text"],textarea');
      fields.each(function(f) {
        f.value = '';
        f.set('disabled', null);
      });
    });
  }
  
});

