$.signin = function(opts){
  var $o = {i18n:{}};
  $.extend($o, opts);
  var $obj = {
    init: function(){
      $("A[ref=register]").click(function(e){e.preventDefault();$obj.register_dialog($(this).attr("href"));});
      $("A[ref=forgot-password]").click(function(e){e.preventDefault();$obj.forgot_dialog($(this).attr("href"));});
    },
    register_dialog: function(url){
      $.ajax({
        url: url,
        success: function(r){
          var $template = $(r).not("script");
          $obj.register_dialog_template = $template.dialog({width: 500, modal: true, buttons: $template.get_buttons()});
          $("FORM", $obj.register_dialog_template).ajax_form({
            callbacks: {
              redirect: $obj.register_callback,
              after_success: $obj.register_success
            }
          });
          $obj.register_success();
          // open inside dialogs
          $("A[ref=dialog]", $obj.register_dialog_template).live("click", function(e){
            var $link = $(this);
            e.preventDefault();
            var $template = $(document.createElement("div")).attr({title: $link.attr("title")});
            var $buttons = {} ;
            $buttons[$o.i18n.close] = function(){$(this).remove()};
            $.ajax({
              url: $link.attr("href"),
              success: function(r){
                $template.html(r).dialog({
                  width: 800,
                  height: 600,
                  buttons: $buttons
                });
              }
            });
          });
        }
      });
    },
    forgot_dialog: function(url){
      $.ajax({
        url: url,
        success: function(r){
          var $template = $(r);
          $("INPUT[type=submit], INPUT[type=reset], H1", $template).remove();
          $obj.register_dialog_template = $template.dialog({width: 500, modal: true, buttons: $template.get_buttons()});
          $("FORM", $obj.register_dialog_template).ajax_form({
            callbacks: {
              redirect: $obj.register_callback,
              after_success: $obj.register_success
            }
          });
        }
      });
    },
    register_success_dialog: function(){
      var $template = $(".template[ref=registration_complete_dialog]").clone().removeClass("hidden");
      var $buttons = {} ;
      $buttons[$o.i18n.close] = function(){$(this).remove()};
      var $dialog = $template.dialog({
        width: 400,
        buttons: $buttons
      });
    },
    register_callback: function(request){
      if(request.status.toString()=='306'){
        $obj.register_dialog_template.dialog("close").remove();
        $obj.register_success_dialog();
      }
    },
    register_success: function(r){
      $obj.register_dialog_template.dialog("option", "position", "center");
      $("INPUT[type=submit], INPUT[type=reset]", $obj.register_dialog_template).remove();
    }
  }
  $obj.init();
};



