(function (global, $) {
    var factory = function ($) {
        return {
            cataid: "100000006",
            init: function (cataid) {
                this.cataid = cataid || "100000006";
                var gid = $.cookie("groupId");
                if (gid == 0 || !gid) {
                    gid = $.cookie("groupdxid");
                }
                if (gid == "713") {
                    this.domainOptions.login = "http://passport.study.dcjy.net?refer=";
                    this.domainOptions.fxdomain = "qikan.study.dcjy.net" + (location.port ? ":" + location.port: "");
                    this.domainOptions.qkdomain = "qikan.study.dcjy.net" + (location.port ? ":10070": "");
                }
                this.loginCheck();
            },
            domainOptions : {
                login : '',
                fxdomain: "ss.chaoxing.com",
                qkdomain: "qk.chaoxing.com"
            },
            loginState: false,
            domain: location.host.replace(/[^\.]+\.([^:]+)(:\d+)?$/, '$1'),
            content: function (appid) {
                return nSubscribe.getSubMessage(appid, this.cataid);
            },
            loginCheck: function(){
                var url = "/checkLogin";
                var _f = this;
                $.ajax({
                    cache: false,
                    dataType: 'json',
                    type: 'post',
                    url: url,
                    success: function (data) {
                    	_f.loginState = data.islogin;
                    }
                });
            },
            subscribeWin: function (appid, cls) { // cls == 'author' 学者库定制
                if (!this.loginState){
                    if(window.confirm("收藏需要登录，是否现在登录？")){
                    	this.domainOptions.login = "https://share.zjlib.cn/sso/login/custom/zj-library2?refer=" 
            			+ encodeURIComponent("https://share.zjlib.cn/cookie/cname?url=" + encodeURIComponent("https://share.zjlib.cn") + "&refer=" + encodeURIComponent(window.location.origin + window.location.pathname + encodeURIComponent(window.location.search)));
                        location.href = this.domainOptions.login;
                        return;
                    } else {
                        return;
                    }
                }
                var _this = collect;
                var contentObj = _this.content(appid).content;
                contentObj.appurl = contentObj.appurl;
                // 外部js方法
                collectToSpace(this.cataid, appid, encodeURIComponent(JSON.stringify(contentObj)), (function(key){
                    return function () {
                        _this.subscribeCallback(true, 1, key, cls);
                    }
                })(appid));
            },
            cancelSubscribeWin: function (appid, cls) { // cls == 'author' 学者库定制
                var _this = collect;
                var contentObj = _this.content(appid).content;
                contentObj.appurl = contentObj.appurl;
                // 外部js方法
                cancelCollect(this.cataid, appid, (function(key){
                    return function () {
                        _this.subscribeCallback(true, 2, key, cls);
                    }
                })(appid));
            },
            checkSubscribeStatus: function (ids, callback) {
                var _this = this;
                var searchurl = "/collectionstatus?ids=" + encodeURIComponent(ids);
                if (this.cataid){
                    searchurl += "&cataid=" + this.cataid;
                }
                $.ajax({
                    url: searchurl,
                    dataType: "jsonp",
                    cache: false,
                    success: function (data) {
                        if (data.result) {
                        	var cls = callback && typeof callback === 'string'? callback : undefined;
                            var f = (callback && typeof callback === 'function') ?
                                callback : 
                                function (i, bean) {
                                    _this.subscribeCallback(bean.status, 1, bean.resourceId, cls);
                                };
                            $.each(data.data, f);
                        }
                    }
                });
            },
            subscribeCallback: function (flag, type, key, cls) { // cls == 'author' 学者库定制
                if(!flag) {//失败
                    return ;
                }
                if(cls && cls == 'author') {
                	if(type == 1) {
                        $("#"+key).attr("onclick", "collect.cancelSubscribeWin('"+key+"', 'author');");
                    }else{
                        $("#"+key).attr("onclick", "collect.subscribeWin('"+key+"', 'author');");
                    }
                	return;
                }
                if(cls && cls === 'magnavDetail') {
                	if(type == 1) {
                        $("#"+key).attr({"onclick":"collect.cancelSubscribeWin('"+key+"', 'magnavDetail');", "title":"取消收藏"});
                        $("#" + key).css("backgroundPosition", "-20px 0");
                    }else{
                        $("#"+key).attr({"onclick" : "collect.subscribeWin('"+key+"', 'magnavDetail');", "title": "收藏到学习空间"});
                        $("#" + key).css("backgroundPosition", "-20px -20px");
                    }
                	return;
                }
                if(type == 1) {
                	$("#"+key+"_list").removeClass('shoucang').addClass('cancel_shoucang');
                    $("#"+key+"_list").attr({"onclick": "collect.cancelSubscribeWin('"+key+"');", "title": "取消收藏"});
                    $("#"+key).text("已收藏").addClass("ysc").removeClass("sc");
                    $("#"+key).attr("onclick", "collect.cancelSubscribeWin('"+key+"');");
                }else{
                    $("#"+key+"_list").attr({"onclick": "collect.subscribeWin('"+key+"');", "title": "收藏到学习空间"});
                    $("#"+key+"_list").removeClass('cancel_shoucang').addClass('shoucang');
                    $("#"+key).text("收藏").addClass("sc").removeClass("ysc");
                    $("#"+key).attr("onclick", "collect.subscribeWin('"+key+"');");
                }
            }
        };
    };
    typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory($) :
    typeof define === 'function' && define.amd ? define([$], factory) :
            (global.collect = factory($) , global.collectFactory = factory);
})(window, jQuery)