// Generated by CoffeeScript 1.6.3
(function () {
  !(function (window) {
    var Toolbar;
    var currUser = {
      //use to join avator
      AU: ""
    };
    var isNotifyShowed = false;
    var AUtoAvatar = function (AU) {
      _AUPath = AU.split("").join("/");
      return "http://avatar.csdn.net/" + _AUPath + "/2_" + currUser.userName + ".jpg";
    }
    var getActive = function () {
      return document.activeElement;
    }
    Toolbar = function (opts) {
      this.opts = opts;
      this.Doms = {};
      this.Curr = null;
      this.init.apply(this, [opts]);
    };
    Toolbar.prototype = {
      init: function (opts) {
        opts = opts || this.opts;
        this.getDoms(opts).bindEvent();
        this.initFavor();
        this.initNotify();
        this.initProfile();
      },

      /*
       * 聚合所有dom抓取
       */
      getDoms: function (opts) {
        opts = opts || this.opts;
        this.Doms.wraper = opts.wraper;
        this.folded = true;
        this.Doms.listBtns = $(opts.wraper + " ul.btns>li");
        this.Doms.profile = $(opts.wraper + " .profile");
        return this;
      },
      bindEvent: function (opts) {
        var _this = this;
        var $loginWrap = $(this.Doms.wraper + " .login-wrap");
        opts = opts || this.opts;

        this.Doms.listBtns.bind('mouseover', function (event) {
          _this.Curr = $(this).parent().children().filter(".on")[0];

          if ($(event.target).hasClass("notify") || $(event.target).parents().filter(".notify").length) {
           
            if (!isNotifyShowed || opts.notifyInst.isHasNewMsg()) {
              $("#header_notice_num").trigger("click");
              isNotifyShowed = true;
            }
          }
          if (_this.Curr == this) {
            return;
          }
          $(_this.Curr).removeClass("on");
          $(this).addClass("on");
          _this.folded = false;
        });
        $(this.Doms.wraper).bind('mouseout',function(e){
            if($(getActive()).parents().filter(_this.Doms.wraper).length>0){
              return;
            }
            $(document.body).trigger("toolbar-fold");
        });
        $(document).bind("click", function (e) {
          if ($(e.target).parents().filter(_this.Doms.wraper).length <= 0) {
            $(document.body).trigger("toolbar-fold");
          }
        });

        $(document.body).bind("toolbar-fold", function (e) {
          _this.Doms.listBtns.filter(".on").removeClass("on");
        });
        $(this.Doms.wraper + " .search form").bind("keyup", function (e) {
          if (e.keycode == 13) {
            this.submit();
          }
        });
        // $(document).bind("userLogined",function(e,userData){
        //   $loginWrap.removeClass("unlogin");
        //   userData.userName&&$loginWrap.show();
        // });

        // $(document).bind("userLoginOut",function(e,username){
        //   $loginWrap.addClass("unlogin").removeClass("hide").show();
        // });


        return this;
      },
      initLogo: function (opts) {},
      initFavor: function () {
        var _wraper = this.Doms.wraper + " .favor"
        var _title = document.title;
        var _url = document.location.href;
        var $description = $(_wraper + " .description");
        var $title = $(_wraper + " .title");
        var $url = $(_wraper + " .url");
        var $tag = $(_wraper + " .tag");
        var $share = $(_wraper + " .share");
        var $cancel = $(_wraper + " .cancel");
        var $submit = $(_wraper + " .submit");
        var $ok = $(_wraper + " .ok");


        //set value
        $title.val(_title);
        $url.val(_url);
        $share.attr("checked", true);

        //bind event
        $cancel.bind("click", function (e) {
          $(document.body).trigger("toolbar-fold");
        });

        $ok.bind("click", function (e) {
          $(_wraper + " .favor-failed").hide();
          $(_wraper + " .favor-success").hide();
          $(_wraper + " .favor-form").show();
          $(document.body).trigger("toolbar-fold");
        });


        $submit.bind("click", function (e) {
          var _data = {
            title: $title.val(),
            //url:encodeURIComponent($url.val()),
            url: $url.val(),
            description: $description.val(),
            tag: $tag.val(),
            share: $share[0].checked
          }

            function resetForm() {
              $(_wraper + " .title").val($title.val());
              $(_wraper + " .url").val(window.location.href);
              $(_wraper + " .tag").val("");
              $(_wraper + " .description").val("");
            }

            function cbSuccess() {
              $(_wraper + " .favor-failed").show();
              $(_wraper + " .favor-success").hide();
              $(_wraper + " .favor-form").hide();
            }

            function cbError() {
              $(_wraper + " .favor-failed").hide();
              $(_wraper + " .favor-success").show();
              $(_wraper + " .favor-form").hide();
            }
          $.ajax({
            data: _data,
            jsonp: "jsonpcallback",
            dataType: "jsonp",
            url: "http://my.csdn.net/service/favorite/add_favorite",
            success: function (data) {
              if (data.success == "-1") {
                cbSuccess();
                resetForm();
              }
              if (data.success == "1") {
                cbError();
                resetForm();
              }
            }
          });

          return false;
        });

      },
      initNotify: function (opts) {
        var _this = this;
        var opts = opts || this.opts;
        if (!opts.notifyInst) {
          $(opts.wraper + " .notify").hide();
          throw "notify.js not loaded!";
        }
        $(document).bind("toolbar-setNotesNum", function (e, num) {
          var $number = $(_this.Doms.wraper + " .number");
          var $hasnotes = $(_this.Doms.wraper + " .icon-hasnotes-sm");
          if (num <= 0) {
            $hasnotes.hide();
            return;
          } else if (num > 0) {
            $hasnotes.show();
          }
        });
        if (opts.notifyInst) {
          opts.notifyInst.on("receive_unreads", function (e, data) {
            var num = opts.notifyInst.getlocalUnread().length;
            $(document).trigger("toolbar-setNotesNum", num);
          });
          opts.notifyInst.on("receive_setreaded", function (e, data) {
            var num = opts.notifyInst.getlocalUnread().length;
            $(document).trigger("toolbar-setNotesNum", num);
          });
        }
      },
      initProfile: function (userData) {
        var _this = this;
      }
    };
    return window["Toolbar"] = Toolbar;
  })(window);

  var $oScriptTag = $("#csdn-toolbar-id");
  var inst = typeof csdn_note == 'undefined' ? null : csdn_note;
  new Toolbar({
    wraper: ".csdn-toolbar",
    notifyInst: inst
  });
}).call(this);