
function MaillistUnsubscribeInitEnterInformation(wizard, properties)
{
  var container = $("#template-maillist-unsubscribe-form").tmpl();
    
  container.find("form").bind("submit", function(event)
  {
    event.preventDefault();
    wizard.Next();
  });
  
  wizard.Show(container);
}

function MaillistUnsubscribeValidateEnterInformation(wizard, properties)
{
  var email = "";
  
  jQuery.each($(".popup-form-input"), function(n, element)
  {
    element = $(element);

    if (element.attr("name") == "email")
    {
      email = element.val();
    }
  });

  if ("" == email)
  {
    return false;
  }

  properties["email"] = email;

  return true;
}

function MaillistUnsubscribeInitSelectList(wizard, properties)
{
  db.SearchNodes({ "type" : "maillist" }, function(transaction_id, result_code, node_list)
  {
    var container = $("#template-maillist-lists").tmpl(node_list); 
    
    container.find(".popup-list-item-container").bind("click", function(event)
    {
      var element = $(event.currentTarget);
      
      properties["node_maillist"] = node_list[element.attr("data")]; 
      
      wizard.Next();
    });
    
    wizard.Show(container);
  });
}


function MaillistUnsubscribeInitUnsubscribe(wizard, properties)
{
  db.SearchNodes({ "type" : "maillist_subscriber", "attributes" : { "Email" : properties["email"] } }, function(transaction_id, result_code, node_list)
  {
    var node_maillist_subscriber = null;
    
    jQuery.each(node_list, function(n, node_subscriber)
    {
      jQuery.each(properties["node_maillist"]["links_up"], function(n, link)
      {
        if ("subscriber" == link["role"] && node_subscriber["id"] == link["node_id"])
        {
          node_maillist_subscriber = node_subscriber;
        }
      });
    });
    
    if (null == node_maillist_subscriber)
    {
      wizard.Show($("#template-maillist-unsubscribe-notfound").tmpl({ "maillist" : properties["node_maillist"], "email" : properties["email"] }));
    }
    else
    {
      db.DeleteNode(node_maillist_subscriber["id"], function(transaction_id, result_code, node)
      {
        if (MURRIX_RESULT_CODE_OK == result_code)
        {
          wizard.Show($("#template-maillist-unsubscribe-done").tmpl({ "maillist" : properties["node_maillist"], "subscriber" : node }));
        }
        else
        {
          wizard.Show($("#template-maillist-unsubscribe-error").tmpl({ "maillist" : properties["node_maillist"], "result_code" : result_code }));
        }
      });
    }
  });  
}

var maillist_unsubscribe_wizard = [
  { "init" : MaillistUnsubscribeInitEnterInformation, "validate" : MaillistUnsubscribeValidateEnterInformation },
  { "init" : MaillistUnsubscribeInitSelectList,       "validate" : null },
  { "init" : MaillistUnsubscribeInitUnsubscribe,      "validate" : null }
];


