(function($) {
  $.fn.newsletterSubscribe = function(sitename, options)
  {
    var defaults = {
      subscribeUrl:     '/index.php?module=newsletter&action=subscribe&email=:email&sitename=:sitename',
      emailInputClass:  'nl_email',
      triggerClass:     'nl_submit',
      messageZoneClass: 'nl_message',
      emailRegexp:      /[a-z0-9\-\.]+@[a-z0-9\-\.]+\.[a-z\.]{2,}/i,
      colorSuccess:     '#7CA910',
      colorError:       '#FF0000',
      textSuccess:      "Inscription enregistrée, merci",
      textError:        "Echec de l'inscription",
      textAlready:      "Adresse déjà enregistrée"
    }

    var settings = $.extend(defaults, options);

    var container = this;
    this.find('.' + settings.triggerClass).click(function()
    {

      //Vérification de l'email
      var email = container.find('.' + settings.emailInputClass).val();
      if(!email.match(settings.emailRegexp))
      {
        alert('Format de l\'adresse email incorrect');
        return false;
      }

      //Appel du webservice de souscription
      var url = settings.subscribeUrl;
      url = url.replace(':email', email);
      url = url.replace(':sitename', sitename);
      $.getJSON(url + '&callback=?', {}, function(data)
      {

        var color = settings.colorError;
        var text = settings.textError;
        if(data.result == 'SUCCESS')
        {
          color = settings.colorSuccess;
          text = settings.textSuccess;
        }
        else if(data.result == 'ALREADY')
        {
          text = settings.textAlready;
        }
        container.find('.' + settings.messageZoneClass).css('color', color)
          .html(text);

      });
      return false;
    });

    return this;
  };
})(jQuery);
