var TvAccount = $.klass({
  
  initialize: function(link)
    {
    var obj = this;
    
    this.link = $(link);
    this.link.fancybox({
      transitionIn:	  'elastic',
      transitionOut:	'elastic',
      hideOnOverlayClick: false,
      scrolling:      'no',
      autoScale:      false,
      overlayColor:   "#00468C",
      hideOnOverlayClick: false,
      onComplete: function(){
        obj.initialize_box.apply(obj);
        }
      });
    },
  
  initialize_box: function()
    {
    this.box = $("#fancybox-inner");
    
    /* tabs */
    this.box.find("div.section").hide().removeClass("hidden").first().show();
    this.box.find("ul.tabs a").removeClass("current").first().addClass("current");
    this.box.find("ul.tabs a").bind("click", this, function(e){
      e.preventDefault();
      e.data.box.find("div.section").hide();
      e.data.box.find("ul.tabs a").removeClass("current");
      
      var target = ($(e.target).attr("nodeName").toLowerCase() == "a")? $(e.target) : $(e.target).parent("a");
      target.addClass("current");
      e.data.box.find("#"+ target.attr("href").split("#")[1]).show();
      
      $.fancybox.resize();
      });
    
    this.initialize_alerts();
    
    $.fancybox.resize();
    
    this.initialize_form(this.box);
    },
  
  initialize_form: function(scope)
    {
    scope.find("div.checkbox").disableSelection();
    scope.find("form[method=post]").bind("submit", this, function(e){
      e.data.submit.apply(e.data, [e]);
      });
    scope.find('a.delete').bind("click", this, function(e){
      e.data.delete_element.apply(e.data, [e]);
      });
    },
  
  submit: function(e)
    {
    e.preventDefault();

    var form = $(e.target);
    var data = form.serialize();
    var obj = this;
    
    form.addClass("loading");
    
    $.ajax({
      url: form.attr("action"),
      type: "post",
      data: data,
      success: function(response)
        {
        Nav.check(response);
        var container = form.parent();
        container.html(response.html);
        obj.initialize_form(container);
        if(container.is("#myalerts")) obj.initialize_alerts();
        $.fancybox.resize();
        }
      });
    },
  
  initialize_alerts: function()
    {
    this.box.find("#add_alert").hide();
    
    this.box.find("#myalerts p.add a").bind("click", this, function(e){
      e.data.toggle_alerts.apply(this, [e]);
      });
    
    this.box.find("#myalerts p.cancel a").bind("click", this, function(e){
      e.data.toggle_alerts.apply(this, [e]);
      });
    },
  
  toggle_alerts: function(e)
    {
    e.preventDefault();
    
    if($("#add_alert").is(":visible"))
      {
      $("#myalerts form").first().slideDown();
      $("#add_alert").slideUp();
      }
    else
      {
      $("#myalerts form").first().slideUp();
      $("#add_alert").slideDown();
      }
    },
  
  delete_element: function(e)
    {
    e.preventDefault();
    
    var obj = this;
    if(confirm("Êtes vous sûr(e) ?"))
      {
      $(e.target).parents('li').addClass('loading');
      
      $.ajax({
        url: $(e.target).attr("href"),
        success: function(response)
          {
          var section = $(e.target).parents('div.section');
          section.html(response.html);
          obj.initialize_form(section);
          obj.initialize_alerts();
          $.fancybox.resize();
          }
        });
      }
    }
    
  });
