/*
 * @class   Form
 * @author  EtienneLem
 * @company Hatem+D
 */

var Form = function() { this.initialize.apply(this, arguments) };
Form.prototype = (function() { var pro = {};

  //  Contants
  
  //  Variables
      var btnLivraison    = $('#btn-livraison'),
          duplicables     = $('.duplicable'),
          specifications  = $('#specifications');
  
  //  public
  pro.initialize = function(opts) {
      initialize();
  };
  
  
  //  private
  var initialize = function()
  {
      initSubmit();
      initDuplicables();
      initBtnLivraison();
  };
  
  var initSubmit = function()
  {
      $('#form-commander').submit(function(){
        var form  = $(this),
            valid = Validation.validate(form);
        
        if ( valid ) {
          if ( specifications.html() == specifications.data('placeholder') ) specifications.html('');
          
          form.find('.submit').addClass('loading');
          
          $.ajax({
            type: 'post',
            data: form.serialize(),
      			url: '_commander.php',
      			success: onFormSubmited
      		});
        }
        return false;
      });
  };
  
  var onFormSubmited = function ( data )
  {
      var informations = $('#informations');
      if ( data == 1 ) {
        informations.fadeOut(300, function(){
          informations.children('h3').html('<span>4</span> Confirmation');
          informations.addClass('confirmation');
          
          var p = document.createElement('p');
          p.innerHTML = "Merci d'avoir commandé chez La Mangue Verte!</p><p>Vous recevrez sous peu un courriel de confirmation, et nous vous contacterons par la suite par téléphone.</p><p>Bonne journée!";
          informations.append(p);
          
          informations.delay(250).fadeIn(300);
        });
      } else {
        $('.submit').removeClass('loading');
      }
  };
  
  var initDuplicables = function()
  {
      duplicables.each(function(i){
        var duplicable  = $(this),
            copy        = $('#' + this.id.replace('facturation', 'livraison'));
        
        duplicable.data('copy', copy);
        
        // Duplicable events
        duplicable.bind('keyup', function(e){
          if ( btnLivraison.hasClass('checked') ) { 
            copy.val(duplicable.val());
            copy.trigger('blur');
          }
        });
        
        duplicable.bind('blur', function(e){
          if ( btnLivraison.hasClass('checked') ) duplicable.trigger('keyup');
        });
        
        // Copy events
        copy.bind('keyup', function(e) { btnLivraison.removeClass('checked'); });
      });
  };
  
  var initBtnLivraison = function()
  {
      btnLivraison.bind('click', function(e){
        var btn = $(this);
        btn.toggleClass('checked');
        if ( btn.hasClass('checked') ) {
          duplicables.each(function(e){
            var duplicable  = $(this),
                copy        = duplicable.data('copy');
                
            duplicable.trigger('keyup');
            copy.trigger('blur');
          });
        }
      });
  };
  
  
return pro })();
