Frontend_Feedback_Form = function(action) {
  var self = this;
  self.is_active = false;

  self.executeAdd = function() {
    var init = this;
    if (self.is_active) {
      return false;
    }
    self.makeActive();
    self.showAjax();

    $.post(
      $(init).attr('action'),
      $(init).serialize(),
      function (data) {
        self.setData(data);
        
        self.hideAjax();
        self.initSubmit();
        self.makeInactive();
      }
    );
    return false;
  }

  self.makeActive = function() {
    $('.feedback_form').find('button[type=submit]').attr('disabled', 'disabled');
    self.is_active = true;
  }

  self.makeInactive = function() {
    $('.feedback_form').find('button[type=submit]').removeAttr('disabled');
    self.is_active = false;
  }

  self.executeReload = function() {
    var init = $('.feedback_form_div');
    $.get(
     action,
     function (data) {
        self.setData(data);
        self.initSubmit();
      }
    );
    return false;
  }

  self.showAjax = function() {
    $('.feedback_form_ajax').show();
  }

  self.hideAjax = function() {
    $('.feedback_form_ajax').hide();
  }

  self.setData = function(data) {
    $('.feedback_form_div').html(data);
    
    if( $('.feedback_form').length ) { 
      } else {
      setTimeout("parent.feedback_layer.executeHide();", 1800);
     
    }    
  }

  self.initSubmit = function(data) {
    $('.feedback_form').submit(self.executeAdd);
  }

  self.__init__ = function() {
    self.executeReload();
    self.initSubmit();
  }

  self.__init__();
}
