/**
* Comment manager
* @author Altiplano.fr
* @date 10/06/2009
*/

var Comment = {

  /**
  * Action to perform when comment form is submitted
  * Save the comment and display message
  * @param siteUrl The site url
  */
  add : function(form){
    
    form.addClass('ajax-loading');
  
    form.set('send', {
      onComplete: function(response){
        form.removeClass('ajax-loading');
        form.getChildren('fieldset').getChildren('ul').each(function(ul) {
          ul.getChildren('li').each(function(li) {        
            li.removeClass('error');
            li.getChildren('p').each(function(p){
              p.destroy();
            });
          });
        });
        var messages = eval('(' + response + ')');
        if(messages['success']){
          var messageDiv = new Element('div', {
           'class': 'form-result',
           'html': '<p>'+messages['successMessage']+'</p>'
          });
          messageDiv.inject(form, 'before');
          form.destroy();
        }
        else{
          for(var error in messages['errors']){
            var input = (error == 'captcha') ? 'captcha-input' : error;
            var nextSibling = new Element('p');
            nextSibling.inject(input, 'after');
            nextSibling.getParent().addClass('error');
            for(var message in messages['errors'][error])
              nextSibling.set('text', messages['errors'][error][message]);
          }
        }
      }
    });
    form.send();
  },
  
  
  /**
  * Make a server call to generate a new captcha id
  * @param el The click element
  * @param siteUrl The site url
  */
  reloadCaptcha : function(el, siteUrl){
    var that = this;
    
    // Retrieve captcha input
    var captchaInput = el.getPrevious('input');
  
    // Retrieve the hidden element that contains captcha's id
    var hidden = captchaInput.getPrevious('input');
    
    // Retrieve the image captcha element
    var img = hidden.getPrevious('img');
  
    // Send request to server with form id
    // Ajax request
    var url = siteUrl + 'nedm/comment/reload-captcha';
    img.set('src','');
      
    var ajaxRequest = new Request.HTML({
      url : url,
      method: 'post',
      encoding: 'uft-8',
      onSuccess: function(responseTree, responseElements, responseHTML, responseJavaScript){
        
        // If we have a result generate chart
        if(responseHTML){
          img.src = siteUrl + 'public/ui/gfx/captcha/' + responseHTML + '.png';
          hidden.value = responseHTML;
          // Reset captcha input
          captchaInput.value = '';
        }
      }
    });
  
    ajaxRequest.send();
  }
};
