window.console = window.console || function() {
    var e = {};
    return e.log = e.warn = e.debug = e.info = e.error = e.time = e.dir = e.profile = e.clear = e.exception = e.trace = e.assert = function() {}, 
    e;
}(), log = function() {
    args = 1 <= arguments.length ? [].slice.call(arguments, 0) : [], "undefined" != typeof console && null !== console && console.log.apply(console, args);
}, window.host = [ "http://www.51shuobo.com", "http://192.168.5.192:8015", "http://192.168.5.227:8015", "http://127.0.0.1:8015", "http://localhost:8015", "http://sztest.51shuobo.com" ].includes(location.origin) ? location.origin : "http://www.51shuobo.com", 
"http://localhost:9000" !== location.origin && "http://192.168.5.227:9000" !== location.origin || (host = "http://sztest.51shuobo.com"), 
Date.prototype.Format = function(e) {
    var t, o = {
        "M+": this.getMonth() + 1,
        "d+": this.getDate(),
        "h+": this.getHours(),
        "m+": this.getMinutes(),
        "s+": this.getSeconds(),
        "q+": Math.floor((this.getMonth() + 3) / 3),
        S: this.getMilliseconds()
    };
    for (t in /(y+)/.test(e) && (e = e.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length))), 
    o) new RegExp("(" + t + ")").test(e) && (e = e.replace(RegExp.$1, 1 == RegExp.$1.length ? o[t] : ("00" + o[t]).substr(("" + o[t]).length)));
    return e;
}, Date.prototype.getAge = function(e) {
    var t, e = e || new Date();
    return (e = new Date(e.toString().replace(/-/g, "/"))).getTime() < this.getTime() ? -1 : (t = e.getFullYear() - this.getFullYear(), 
    parseFloat(e.Format("M.dd")) < parseFloat(this.Format("M.dd")) && (t -= 1), 
    t);
}, Array.prototype.indexOf = function(e) {
    for (var t = 0; t < this.length; t++) if (this[t] == e) return t;
    return -1;
}, Array.prototype.remove = function(e) {
    e = this.indexOf(e);
    return -1 < e && this.splice(e, 1), e;
}, window.common || (window.common = {}), common.debug = !0, common.namespace = function(e) {
    for (var t = e.split("."), o = window, n = 0, a = t.length; n < a; n++) {
        var i = t[n];
        void 0 === o[i] && (o[i] = {}), o = o[i];
    }
    return o;
}, common.emailReg = /^(([a-z]|\d)([a-z]|\d|-|\.|_|~)*([a-z]|\d))@((([a-z]|\d)|(([a-z]|\d)([a-z]|\d|-|\.|_|~)*([a-z]|\d)))\.)+(([a-z])|(([a-z])([a-z]|\d|-|\.|_|~)*([a-z])))$/i, 
common.log = function() {
    var e;
    common.debug && (e = "[debug] " + Array.prototype.join.call(arguments, ""), 
    window.console && window.console.log ? window.console.log(e) : window.opera && window.opera.postError && window.opera.postError(e));
}, common.isIE = function(e) {
    var t, o;
    return !!(window.ActiveXObject || "ActiveXObject" in window) && (t = /(msie\s|trident.*rv:)([\w.]+)/.exec(navigator.userAgent.toLowerCase())[2], 
    o = parseFloat(t) < 7, 6 == e ? o : !(6 < e) || parseFloat(t) == e);
}, common.checkIEAction = function() {
    var e = 0;
    common.isIE(6) && (e = 6), 6 != (e = common.isIE(7) ? 7 : e) && 7 != e || ($("body").prepend('<div class="update_browsers_tip"><div class="fl">您的浏览器版本过低，为了获得更好的浏览体验和操作顺畅，建议您<a class="btnUpdate" id="btnUpdateBrowsers">马上升级</a>浏览器！</div><a class="btnClose fr" title="关闭" onclick="$(this).parent().remove();">关闭</a><a href="http://www.51shuobo.com/about/article?acrId=121160" target="_blank" class="fr">了解详情</a></div>'), 
    $("#btnUpdateBrowsers").on("click", function() {
        return $.jBox('<div class="update_browsers"><p class="title">请使用以下浏览器之一：</p><div class="box"><a class="br1" target="_blank" href="https://www.google.com/intl/cn/chrome/browser/">Chrome</a><a class="br2" target="_blank" href="http://www.mozilla.org/zh-CN/firefox/new/">Firefox</a><a class="br3" target="_blank" href="http://www.apple.com/safari/">Safari</a><a class="br4" target="_blank" href="http://windows.microsoft.com/zh-CN/internet-explorer/download-ie">IE 8/9/10</a></div></div>', {
            id: "jBox_updateBrowsers",
            title: "浏览器升级选择",
            width: 400,
            height: 215,
            top: 30
        }), $("#jBox_updateBrowsers").find(".jbox-button-panel").remove(), !1;
    }));
}, common.loadPGVCountV3 = function(e) {
    var t = window.document.getElementsByTagName("HEAD").item(0), o = window.document.createElement("script");
    o.src = "/static/js/v1/ztPGVCountV3.js", t.appendChild(o), "function" == typeof e && setTimeout(e, 100);
}, common.isOnlineHost = function() {
    return -1 != window.location.host.indexOf("job5156.com");
}, common.hrefAddRandomParam = function() {
    function e(e) {
        var t, o = e.attr("href");
        "#" == o || 0 == o.length || -1 < o.indexOf("javascript") || /&\d/g.test(o) || (t = "", 
        -1 < o.indexOf("#") && (t = "#" + (hrefArr = o.split("#"))[1], o = hrefArr[0]), 
        -1 < o.indexOf("?") ? o += "&" + n : o += "?" + n, o += t, t = e.html(), 
        e.attr("href", o).html(t));
    }
    var n = new Date().getTime();
    $(".a_tnow").each(function() {
        $(this).is("a") ? e($(this)) : $(this).find("a").each(function() {
            e($(this));
        });
    });
}, common.hasJsFile = function(e) {
    for (var t = window.document.getElementsByTagName("script"), o = !1, n = 0; n < t.length; n++) if (-1 !== (me = document.querySelector ? t[n].src : t[n].getAttribute("src", 4)).substr(me.lastIndexOf("/")).indexOf(e)) {
        o = !0;
        break;
    }
    return o;
}, common.loadJBoxJs = function(t) {
    var e = window.document.getElementsByTagName("HEAD").item(0);
    if (common.hasJsFile("jquery.jBox")) {
        if ("function" != typeof t) return !0;
        t();
    } else {
        var o, n = common.isOnlineHost() ? "http://www.51shuobo.com" : "", a = window.document.createElement("script");
        a.src = n + "/static/js/v1/third/plug/jBox/jquery.jBox.min.js", e.appendChild(a), 
        "function" == typeof t && (o = function() {
            var e = 0 == e ? 0 : e++;
            10 < e || setTimeout(function() {
                (common.hasJsFile("jquery.jBox") ? t : o)();
            }, 100);
        })();
    }
}, common.loadValidationJs = function(t) {
    var e = window.document.getElementsByTagName("HEAD").item(0);
    if (common.hasJsFile("jquery.validate")) {
        if ("function" != typeof t) return !0;
        t();
    } else {
        var o, n = common.isOnlineHost() ? "http://www.51shuobo.com" : "", a = window.document.createElement("script"), a = (a.src = n + "/static/js/v1/third/plug/validation/jquery.validate.min.js", 
        e.appendChild(a), window.document.createElement("script")), a = (a.src = n + "/static/js/v1/third/plug/validation/additional-methods.min.js?v=1576659048950", 
        e.appendChild(a), window.document.createElement("script"));
        a.src = n + "/static/js/v1/third/plug/validation/messages_zh.min.js", e.appendChild(a), 
        "function" == typeof t && (o = function() {
            var e = 0 == e ? 0 : e++;
            10 < e || setTimeout(function() {
                (common.hasJsFile("messages_zh") ? t : o)();
            }, 100);
        })();
    }
}, common.UnixToDate = function(e, t) {
    var o;
    return common.str.isInt(e) && (t = t || 9, o = 6e4 * new Date().getTimezoneOffset(), 
    e = parseInt(e, 10) + o + 36e5 * t), new Date(e);
}, common.Cache = {
    _cache: {},
    _size: 0,
    set: function(e, t) {
        if (common.Cache.contains(e)) {
            for (var o = t.length, n = 0; n < o; n++) common.Cache._cache[e].push(t[n]);
            common.Cache._cache[e] = common.arr.unique(common.Cache._cache[e]);
        } else common.Cache._cache[e] = t;
        return t;
    },
    get: function(e, t) {
        var o = common.Cache, n = o._cache[e];
        return n || ("function" == typeof t ? (n = t(), o._cache[e] = n) : t ? o._cache[e] = n = t : (n = jQuery(e), 
        o._cache[e] = n), o._size++), n;
    },
    remove: function(e) {
        common.Cache._size--, common.Cache._cache[e] = null;
    },
    contains: function(e) {
        return common.Cache._cache[e];
    }
}, common.localData = {
    hname: location.hostname || "localStatus",
    isLocalStorage: !!window.localStorage,
    dataDom: null,
    initDom: function() {
        if (!this.dataDom) try {
            this.dataDom = document.createElement("input"), this.dataDom.type = "hidden", 
            this.dataDom.style.display = "none", this.dataDom.addBehavior("#default#userData"), 
            document.body.appendChild(this.dataDom);
            var e = (e = new Date()).getDate() + 30;
            this.dataDom.expires = e.toUTCString();
        } catch (e) {
            return !1;
        }
        return !0;
    },
    set: function(e, t) {
        this.isLocalStorage ? window.localStorage.setItem(e, t) : this.initDom() && (this.dataDom.load(this.hname), 
        this.dataDom.setAttribute(e, t), this.dataDom.save(this.hname));
    },
    get: function(e) {
        return this.isLocalStorage ? window.localStorage.getItem(e) : this.initDom() ? (this.dataDom.load(this.hname), 
        this.dataDom.getAttribute(e)) : void 0;
    },
    remove: function(e) {
        this.isLocalStorage ? localStorage.removeItem(e) : this.initDom() && (this.dataDom.load(this.hname), 
        this.dataDom.removeAttribute(e), this.dataDom.save(this.hname));
    }
}, common.Cookie = {
    set: function(e, t, o) {
        var n, a, i = {
            hours: 8640,
            path: null,
            domain: -1 != window.location.host.indexOf("job5156.com") ? "job5156.com" : null,
            secure: !1
        }, i = $.extend(i, o), o = "";
        null != i.hours && (n = new Date(), a = 3600 * i.hours * 1e3, n.setTime(n.getTime() + a), 
        o = "; expires=" + n.toGMTString()), document.cookie = e + "=" + escape(t) + o + (null == i.path ? "" : "; path=" + i.path) + (null == i.domain ? "" : "; domain=" + i.domain) + (i.secure ? "; secure" : "");
    },
    get: function(e) {
        e = document.cookie.match(new RegExp("(^| )" + e + "=([^;]*)(;|$)"));
        return null != e ? unescape(e[2]) : null;
    },
    remove: function(e, t, o) {
        t = t || -1 != window.location.host.indexOf("job5156.com") ? "job5156.com" : null;
        var n = new Date(), a = (n.setTime(n.getTime() - 1), this.get(e));
        null != a && (document.cookie = e + "=" + a + ";expires=" + n.toGMTString() + "path=" + (o || "/") + "; " + (t ? "domain=" + t + ";" : ""));
    }
}, common.tab = function(e, t, o, n, a) {
    function i() {
        r.on(s, function(e) {
            return r.removeClass(o), c.hide(), $(this).addClass(o), c.eq($(this).index()).show(), 
            "function" == typeof a && a(c.eq($(this).index())), !1;
        });
    }
    var s = n || "mouseover", r = e, c = t;
    "mouseover" == s ? (setTimeout(i, 100), clearTimeout(this.t)) : i();
}, common.focusSlide = function(t, e, o, n) {
    var o = o || "slow", n = n || 4e3, a = 0, i = t.find(".item").length;
    if (i < 2) t.find(".item").show(); else {
        e && t.find(".item").each(function() {
            var e = $(this), t = e.find("img").attr("alt") || "";
            e.append('<div class="title"><strong>' + t + "</strong></div>");
        });
        var e = !!t.find(".btns")[0], s = e ? t.find(".btns") : $('<div class="btns"></div>'), r = "";
        if (!e) {
            for (var c = 0; c < i; c++) r += '<a href="javascript:;">' + (c + 1) + "</a>";
            s.html(r), t.append(s);
        }
        function l(e) {
            p.hide(), p.eq(e).stop().fadeIn(o), m.removeClass("on"), m.eq(e).addClass("on");
        }
        function d() {
            var e = a;
            e = p.eq(e).find("img").attr("src"), t.find(".ad").css({
                background: "url(" + e + ") no-repeat center"
            }), l(a = ++a == i ? 0 : a);
        }
        var p = t.find(".item"), m = s.find("a"), u = (p.eq(a).show(), m.eq(a).addClass("on"), 
        t.find(".btns a").each(function(e, t) {
            $(this).on("click", function() {
                return l(a = e), !1;
            });
        }), setInterval(d, n));
        t.on({
            mouseenter: function() {
                clearInterval(u);
            },
            mouseleave: function() {
                u = setInterval(d, n);
            }
        });
    }
}, common.focusSlide1 = function(o, e, n, t) {
    var a, i, n = n || "slow", t = t || 4e3, s = o.find(".item").length;
    s < 2 ? o.find(".item").show() : (e && o.find(".item").each(function() {
        $(this).append('<div class="title"><strong>' + $(this).find("img").attr("alt") + "</strong></div>");
    }), e = $('<div class="btns"></div>'), e.html('<a href="javascript:void(0);" class="left">&lt;</a><a href="javascript:void(0);" class="right">&gt;</a>'), 
    o.append(e), e.css({
        top: (o.height() - 45) / 2
    }), a = function() {
        var e = o.find(".item"), t = e.eq(0).width();
        e.eq(0).stop().animate({
            marginLeft: -t
        }, n, function() {
            ($temp = $("<div></div>")).append(e.eq(0)), $temp.find(".item").css({
                "margin-left": "0"
            }), o.find(".ad").append($temp.html()), e.eq(0).remove();
        });
    }, 1 < s && o.hover(function() {
        o.find(".btns .right").stop().animate({
            right: 0
        }), o.find(".btns .left").stop().animate({
            left: 0
        });
    }, function() {
        o.find(".btns .right").stop().animate({
            right: -20
        }), o.find(".btns .left").stop().animate({
            left: -20
        });
    }), o.find(".btns .right").on("click", function() {
        a();
    }), o.find(".btns .left").on("click", function() {
        var e, t;
        e = o.find(".item"), t = e.eq(0).width(), ($temp = $("<div></div>")).append(e.eq(e.length - 1)), 
        $temp.find(".item").css({
            "margin-left": -t
        }), o.find(".ad").prepend($temp.html()), o.find(".item").eq(0).stop().animate({
            marginLeft: 0
        }, n, function() {
            e.eq(s - 1).remove();
        });
    }), i = setInterval(a, t), o.on({
        mouseenter: function() {
            clearInterval(i);
        },
        mouseleave: function() {
            i = setInterval(a, t);
        }
    }));
}, common.scrollTop = function(e, t, o, n) {
    var a = e[0], i = t[0], s = o[0];
    function r() {
        s.offsetTop - a.scrollTop <= 0 ? a.scrollTop -= i.offsetHeight : a.scrollTop++;
    }
    n = n || 30, s.innerHTML = i.innerHTML;
    var c = setInterval(r, n);
    a.onmouseover = function() {
        clearInterval(c);
    }, a.onmouseout = function() {
        c = setInterval(r, n);
    };
}, common.markCurrentStatus = function(e, t, o, n) {
    n = n || "current";
    ("unFixed" == e.attr("data-type") ? e.find('[data-id="' + o + '"]') : e.find(t).eq(o)).addClass(n);
}, common.getSelectedAttr = function(e, t) {
    var o = null;
    return e.find("option").each(function() {
        $(this).prop("selected") && (o = $(this).attr(t));
    }), o;
}, common.checkBox = function(t, o, n, e, a) {
    t.off("change"), o.off("change"), t.change(function() {
        t.prop("checked", this.checked), o.prop("checked", this.checked), i();
    }), o.change(function(e) {
        e.stopPropagation(), t.prop("checked", o.size() == o.filter(":checked").size()), 
        i();
    });
    var i = function() {
        var e;
        "function" == typeof a && a(), null != n && (e = [], o.filter(":checked").each(function() {
            e.push($(this).val());
        }), n.val(e + ""));
    };
    null != e && (o.prop("checked", !1), ("all" == e ? o : o.filter('[data-mark="' + e + '"]')).prop("checked", !0), 
    t.prop("checked", o.size() == o.filter(":checked").size()), i());
}, common.loadImage = function(e, t) {
    var o = new Image();
    o.src = e, o.complete ? t.call(o) : o.onload = function() {
        t.call(o);
    };
}, common.zoomParam = function(e, t, o, n) {
    var a = {
        top: 0,
        left: 0,
        width: o,
        height: n
    };
    return (e < o || t < n) && (rateWidth = o / e, rateHeight = n / t, rateWidth > rateHeight ? (a.width = e, 
    a.height = Math.round(n / rateWidth)) : (a.width = Math.round(o / rateHeight), 
    a.height = t)), a.left = Math.round((e - a.width) / 2), a.top = Math.round((t - a.height) / 2), 
    a;
}, common.eoStyleList = function(e, t, o, n, a, s) {
    var r, c = e.find(t);
    for (c.off("mouseenter mouseleave"), i = s || 0; i < c.length; i++) {
        var l = i % 2 == 0 ? n : o;
        c.eq(i).css("background-color", l).on({
            mouseenter: function() {
                r = $(this).css("background-color"), $(this).css("background-color", a);
            },
            mouseleave: function() {
                $(this).css("background-color", r);
            }
        });
    }
}, common.limitToggle = function(e, t) {
    $(e);
    $(e).each(function() {
        var e = $(this);
        e.find(".more").click(function() {
            $(this).toggleClass("active"), e.toggleClass("selected");
        });
    });
}, common.remove = function() {
    for (var e = 0, t = arguments.length; e < t; e++) arguments[e].fadeOut("fast").remove();
}, common.big5Link = function(e) {
    var t = document.location.href, o = (t = (t = t.replace("ht", "")).replace("tp://", "")).indexOf("."), n = t.substring(0, o), o = t.substring(o);
    newTitle = "job5156" == n.toLowerCase() ? (newUrl = "javascript:location.href='http://big5." + t + "'", 
    "繁体版") : "big5" == n.toLowerCase() ? (newUrl = "javascript:location.href='http://www" + o + "'", 
    "简体版") : (newUrl = "javascript:location.href='http://big5" + o + "'", "繁体版"), 
    e.text(newTitle).attr("href", newUrl);
}, common.setHome = function(e, t) {
    try {
        e.style.behavior = "url(#default#homepage)", e.setHomePage(t);
    } catch (e) {
        if (window.netscape) {
            try {
                netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
            } catch (e) {
                alert("此操作被浏览器拒绝！\n请在浏览器地址栏输入“about:config”并回车\n然后将[signed.applets.codebase_principal_support]设置为'true'");
            }
            Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch).setCharPref("browser.startup.homepage", t);
        }
    }
}, common.copyText = function(e) {
    e.is(":visible") && e.focus(), e.select(), function() {
        if (window.clipboardData) window.clipboardData.clearData(), window.clipboardData.setData("Text", txt); else if (-1 != navigator.userAgent.indexOf("Opera")) window.location = txt; else if (window.netscape) {
            try {
                netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
            } catch (e) {
                alert("您使用的浏览器不支持此复制功能，请使用ctrl+c或者浏览器右键复制");
            }
            var e = Components.classes["@mozilla.org/widget/clipboard;1"].createInstance(Components.interfaces.nsIClipboard);
            if (!e) return;
            var t = Components.classes["@mozilla.org/widget/transferable;1"].createInstance(Components.interfaces.nsITransferable);
            if (!t) return;
            t.addDataFlavor("text/unicode");
            var o = new Object(), o = (new Object(), Components.classes["@mozilla.org/supports-string;1"].createInstance(Components.interfaces.nsISupportsString)), n = txt, o = (o.data = n, 
            t.setTransferData("text/unicode", o, 2 * n.length), Components.interfaces.nsIClipboard);
            if (!e) return;
            e.setData(t, null, o.kGlobalClipboard);
        }
    }(e.val()), alert("复制成功！");
}, common.namespace("common.str"), common.str.isInt = function(e) {
    return /^\d+$/.test(e);
}, common.str.delHtmlTag = function(e) {
    return null != e && "" != e ? e.replace(/<[^>]+>/g, "") : "";
}, common.str.dTrim = function(e) {
    return null != e && "" != e ? e.replace(/(^\n+)|(\n+$)|(^\s*)|(\s*$)|(^　*)|(　*$)/g, "") : "";
}, common.str.len = function(e, t) {
    var o = 0;
    if (0 < arguments.length) {
        if (2 == t) for (var n = 0; n < e.length; n++) o += 128 < e.charCodeAt(n) ? 2 : 1; else for (n = 0; n < e.length; n++) o += 128 < e.charCodeAt(n) ? 1 : .5;
        return Math.ceil(o);
    }
    return null;
}, common.str.cutstr = function(e, t, o, n) {
    var i, s = 0;
    if (str_cut = new String(), i = e.length, 2 == n) {
        for (var r = 0; r < i; r++) if (a = e.charAt(r), s++, 4 < escape(a).length && s++, 
        str_cut = str_cut.concat(a), t < s) return str_cut = str_cut.concat(o);
    } else if (t - 1 < s) return str_cut = (str_cut = e.substr(0, t)).concat(o);
    if (s <= t) return str_cut;
}, common.str.toHalf = function(e) {
    for (var t = "", o = 0; o < e.length; o++) 65248 < e.charCodeAt(o) && e.charCodeAt(o) < 65375 ? t += String.fromCharCode(e.charCodeAt(o) - 65248) : t += String.fromCharCode(e.charCodeAt(o));
    return t;
}, common.str.htmlencode = function(e, t) {
    return e = (e = (e = e.replace(/&/g, "&amp;")).replace(/</g, "&lt;")).replace(/>/g, "&gt;"), 
    e = (e = (e = (e = (e = (e = (e = (e = (e = 1 == t ? e.replace(/(?:t| |v|r)*n/g, "") : e.replace(/(?:t| |v|r)*n/g, "<br />")).replace(/  /g, "&nbsp; ")).replace(/\t/g, "&nbsp; &nbsp; ")).replace(/x22/g, "&quot;")).replace(/x27/g, "&#39;")).replace(/\u003c/g, "&lt;")).replace(/\u003e/g, "&gt;")).replace(/"/g, "”")).replace(/'/g, "‘");
}, common.str.htmldecode = function(e) {
    return e = (e = (e = (e = (e = (e = (e = e.replace(/&amp;/gi, "&")).replace(/&nbsp;/gi, " ")).replace(/&quot;/gi, '"')).replace(/&#39;/g, "'")).replace(/&lt;/gi, "<")).replace(/&gt;/gi, ">")).replace(/<br[^>]*>(?:(rn)|r|n)?/gi, "n");
}, common.str.textencode = function(e) {
    return e = (e = (e = e.replace(/&amp;/gi, "&")).replace(/</g, "&lt;")).replace(/>/g, "&gt;");
}, common.str.textdecode = function(e) {
    return e = (e = (e = e.replace(/&amp;/gi, "&")).replace(/&lt;/gi, "<")).replace(/&gt;/gi, ">");
}, common.str.strengthPwd = function(e, t) {
    var n = t;
    e.keyup(function(e) {
        var t = new RegExp("^(?=.{8,})(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])(?=.*\\W).*$", "g"), o = new RegExp("^(?=.{7,})(((?=.*[A-Z])(?=.*[a-z]))|((?=.*[A-Z])(?=.*[0-9]))|((?=.*[a-z])(?=.*[0-9]))).*$", "g");
        return !1 === new RegExp("(?=.{6,}).*", "g").test($(this).val()) ? n.find("span").removeClass().addClass("weak").html("弱") : t.test($(this).val()) ? n.find("span").removeClass().addClass("strong").html("强!") : o.test($(this).val()) ? n.find("span").removeClass().addClass("medium").html("中!") : n.find("span").removeClass().addClass("weak").html("弱!"), 
        !0;
    });
}, common.namespace("common.url"), common.url.par2Json = function(e, o) {
    var n, a, i = {}, e = e.split("&"), s = decodeURIComponent;
    return $.each(e, function(e, t) {
        t = t.split("="), n = s(t[0]), a = s(t[1]), i[n] = o || !i[n] ? a : [].concat(i[n]).concat(a);
    }), i;
}, common.url.json2Par = function(e, t) {
    e = $.extend({}, e), e = $.param(e, !0);
    return (t = t || "") + decodeURIComponent(e);
}, common.url.filterXss = function(e) {
    var t, o, n, a;
    return -1 == e.indexOf("?") ? e : (t = e.substring(0, e.indexOf("?")), e = e.substring(e.indexOf("?")).split("&"), 
    a = t, $.each(e, function(e, t) {
        if (null == t || "" == t) return !0;
        t = t.split("="), o = t[0], n = (n = (n = (n = (n = (n = (n = (n = decodeURIComponent(t[1])).replace(/<.*script.*>/g, "")).replace(/eval\((.*)\)/g, "")).replace(/["']javascript:(.*)["']/g, '""')).replace(/</g, "&lt;")).replace(/>/g, "&gt;")).replace(/'/g, "&#39;")).replace(/"/g, "&quot;"), 
        a += (0 == e ? "" : "&") + o + "=" + encodeURIComponent(n);
    }), a);
}, common.isArray = function(e) {
    return "[object Array]" === Object.prototype.toString.call(e);
}, common.isEmptyObj = function(e) {
    var t = !0;
    if ("object" == typeof e) for (var o in e) {
        t = !1;
        break;
    } else t = !1;
    return t;
}, common.namespace("common.arr"), common.arr.unique = function(e) {
    for (var t = [], o = {}, n = e.length, a = 0; a < n; a++) o[e[a]] || ("" != e[a] && t.push(e[a]), 
    o[e[a]] = !0);
    return t;
}, common.arr.combination = function(e, t) {
    var s = [];
    return function e(t, o, n) {
        if (0 == n) return s.push(t);
        for (var a = 0, i = o.length; a <= i - n; a++) e(t.concat(o[a]), o.slice(a + 1), n - 1);
    }([], e, t), s;
}, common.arr.permutation = function(e, t) {
    var s = [];
    return function e(t, o, n) {
        if (0 == n) return s.push(t);
        for (var a = 0, i = o.length; a < i; a++) e(t.concat(o[a]), o.slice(0, a).concat(o.slice(a + 1)), n - 1);
    }([], e, t), s;
}, common.arr.contains = function(e, t) {
    for (var o = 0; o < e.length; o++) if (e[o] == t) return !0;
    return !1;
}, common.namespace("common.json"), common.json.toStr = function(e) {
    var t = [], o = "";
    if ("[object Array]" === Object.prototype.toString.apply(e)) {
        for (var n = 0; n < e.length; n++) t.push(common.json.toStr(e[n]));
        o = "[" + t.join(",") + "]";
    } else if ("[object Date]" === Object.prototype.toString.apply(e)) o = "new Date(" + e.getTime() + ")"; else if ("[object RegExp]" === Object.prototype.toString.apply(e) || "[object Function]" === Object.prototype.toString.apply(e)) o = e.toString(); else if ("[object Object]" === Object.prototype.toString.apply(e)) {
        for (var n in e) e[n] = "string" == typeof e[n] ? '"' + e[n] + '"' : "object" == typeof e[n] ? common.json.toStr(e[n]) : e[n], 
        t.push('"' + n + '":' + e[n]);
        o = "{" + t.join(",") + "}";
    }
    return o;
}, common.json.compArray = function(e, t) {
    if (e && t && e.constructor === Array && t.constructor === Array) {
        if ("object" != typeof e || e.constructor !== Array || "object" != typeof t || t.constructor !== Array) return !1;
        if (e.length != t.length) return !1;
        for (var o = 0; o < e.length; o++) if (!common.json.compObj(e[o], t[o])) return !1;
        return !0;
    }
}, common.json.compObj = function(e, t) {
    if (e && "object" == typeof e && t && "object" == typeof t) {
        if (common.json.propertyLength(e) != common.json.propertyLength(t)) return !1;
        for (var o in e) {
            if (!e.hasOwnProperty(o) || !t.hasOwnProperty(o)) return !1;
            if (e[o].constructor == Array && t[o].constructor == Array) {
                if (!common.json.compArray(e[o], t[o])) return !1;
            } else if ("string" == typeof e[o] && "string" == typeof t[o]) {
                if (e[o] !== t[o]) return !1;
            } else {
                if ("object" != typeof e[o] || "object" != typeof t[o]) return !1;
                if (!common.json.compObj(e[o], t[o])) return !1;
            }
        }
    }
    return !0;
}, common.json.propertyLength = function(e) {
    var t = 0;
    if (e && "object" == typeof e) {
        for (var o in e) e.hasOwnProperty(o) && t++;
        return t;
    }
    throw new Error("argunment can not be null;");
}, common.getNumberOptions = function(e, t, o) {
    function n(e, t) {
        a.push('<option value="' + e + '"'), e == t && a.push(" selected"), a.push(">"), 
        a.push(e), a.push("</options>");
    }
    var a = [];
    if (t < e) for (var i = e; t <= i; i--) n(i, o); else for (i = e; i <= t; i++) n(i, o);
    return a.join("");
}, common.json.toOptions = function(e, t, o, n) {
    var a, i, s = [], r = e.length, c = [];
    "string" == typeof n && -1 !== n.indexOf(",") && (c = n.split(","));
    for (var l = 0; l < r; l++) {
        if (a = e[l][t] + "", i = e[l][o], s.push('<option value="' + a + '"'), 
        c.length) for (var d = 0, p = c.length; d < p; d++) c[d] === a && s.push(" selected"); else n === a && s.push(" selected");
        s.push(">"), s.push(i), s.push("</options>");
    }
    return s.join("");
}, common.json.getOptions = function(e, t, o) {
    var n = "name", a = "id";
    return "string" == typeof resumeLang && (n = "cn" == resumeLang ? "name" : "en"), 
    "name" == o && (a = n), common.json.toOptions(e, a, n, t);
}, common.json.getRadios = function(e, t, o, n) {
    var a, i, s = [], r = e, c = "name";
    "string" == typeof resumeLang && (c = "cn" == resumeLang ? "name" : "en"), n = "name" == n ? c : "id";
    for (var l = 0, d = r.length; l < d; l++) i = r[l][n], a = r[l][c], s.push('<label><input name="' + o + '" type="radio" id="' + o + l + '" value="' + i + '"'), 
    "" !== t && t == i && s.push(" checked"), s.push(" />"), s.push(a), s.push("</label>");
    return s.join("");
}, common.json.getCheckboxGroup = function(e, t, o, n) {
    var a, i, s, r = [], c = e, l = "name";
    "string" == typeof resumeLang && (l = "cn" == resumeLang ? "name" : "en"), n = "name" == n ? l : "id", 
    null != t && "" != t && (s = (t = t.split(",")).length);
    for (var d = 0, p = c.length; d < p; d++) {
        if (i = c[d][n], a = c[d][l], r.push('<label><input name="' + o + '" type="checkbox" id="' + o + d + '" value="' + i + '"'), 
        null != t && "" != t) for (var m = 0; m < s; m++) t[m] == i && r.push(" checked");
        r.push(" />"), r.push(a), r.push("</label>");
    }
    return r.join("");
}, common.json.getNameById = function(e, t) {
    function o(e) {
        for (var t = [], o = 0, n = s.length; o < n; o++) if (i = s[o].id, a = s[o][r], 
        e == i) {
            t.push(a);
            break;
        }
        return t.join();
    }
    var a, i, n = [], s = e, r = "name";
    "string" == typeof resumeLang && (r = "cn" == resumeLang ? "name" : "en");
    if (!isNaN(t)) return o(t);
    if (t.indexOf(",")) {
        for (var c = (t = t.split(",")).length, l = 0; l < c; l++) /^[0-9]+$/.test(t[l]) && n.push(o(t[l]));
        return n.join();
    }
}, common.json.getNameByIds = function(e) {
    var t = e.id.split(",");
    const o = [], n = {}, a = e => {
        e.map(e => {
            (n[e.id] = e).child.length && a(e.child);
        });
    };
    return a(e.data), t.map(e => {
        o.push(n[e].name);
    }), o;
}, common.json.getIndexByFile = function(e, t, o) {
    for (var n = e.length, a = 0; a < n; a++) if (e[a][t] == o) return a;
    return -1;
}, common.json.getAreaCodeById = function(e) {
    var t = datajson.City;
    if (null != (e = 2 < common.getAreaType(e) ? e.toString().substr(0, 4) + "0000" : e) && "" != e && 0 < e) for (var o = t.length, n = 0; n < o; n++) if (0 < e && e == t[n].id && null != t[n].a && "" != t[n].a) return t[n].a;
    return -1;
}, common.json.getCityObjByAreaCode = function(e) {
    var t = datajson.City;
    return null != e && "" != e ? t[common.json.getIndexByFile(t, "a", e)] : -1;
}, common.getAreaType = function(e) {
    return null == e || "" == e || 0 == e ? 0 : (e = e.toString(), 0 == parseInt(e.substr(2), 10) ? 1 : 4 == e.length || 0 == parseInt(e.substr(4), 10) ? 2 : 0 == parseInt(e.substr(6), 10) ? 3 : 0 < parseInt(e.substr(6), 10) ? 4 : void 0);
}, common.json.getAreaById = function(e) {
    function t(e) {
        4 == (e = e.toString()).length && (e += "0000"), -1 != e.indexOf(".") && (e = e.replace(".0", "") + "00");
        var t, o = datajson.City;
        return 0 < parseInt(e.substr(4, 2), 10) && 0 == parseInt(e.substr(6), 10) ? (t = parseInt(e.substr(0, 4) + "0000", 10), 
        e = parseInt(e, 10), common.json.getNameById(o, t) + "-" + common.json.getNameById(datajson.town, e)) : (e = parseInt(e, 10), 
        common.json.getNameById(o, e));
    }
    if ("" == e || null == e) return "";
    if (isNaN(e)) {
        for (var o = [], n = 0, a = (e = "[object Array]" != Object.prototype.toString.call(e) && e.indexOf(",") ? e.split(",") : e).length; n < a; n++) /^[0-9]+$/.test(e[n]) && o.push(t(e[n]));
        return o.join();
    }
    return t(e);
}, common.json.getTownIndexList = function(e) {
    if (common.json.hasTownData(e)) {
        for (var t = datajson.town, o = e.toString(), n = [], a = t.length, i = 0; i < a; i++) t[i].id.toString().substr(0, 4) + "0000" == o && n.push(i);
        return n;
    }
    return -1;
}, common.json.hasTownData = function(e) {
    for (var t = datajson.town, o = e.toString(), n = !1, a = 0, i = t.length; a < i; a++) if (t[a].id.toString().substr(0, 4) + "0000" == o) {
        n = !0;
        break;
    }
    return n;
}, common.json.getIndexById = function(e, t) {
    return common.json.getIndexByFile(e, "id", t);
}, common.json.getReplyTemplate = function(e, t) {
    var o = common.json.getIndexByFile(e, "templateType", t), e = (-1 < o ? e : (common.json.getIndexByFile(Constant.defaultReplyTemplate, "templateType", t), 
    Constant.defaultReplyTemplate))[o];
    return e;
}, common.json.del = function(e, t) {
    e.splice(common.json.getIndexById(e, t), 1);
}, common.json.area = function(e) {
    function t() {
        var e = common.getSelectedAttr(s, "data-id") || 0;
        if (r.empty().attr("disabled", !0), c.empty().attr("disabled", !0), e <= 0) "none" == i.nodata ? (r.css("display", "none"), 
        c.css("display", "none")) : "hidden" == i.nodata && (r.css("visibility", "hidden"), 
        c.css("visibility", "hidden")); else {
            if (temp_html = d, 4100 <= parseInt(e.substr(0, 4), 10) || parseInt(e.substr(0, 4), 10) <= 1300) for (var t = 0, o = p.length; t < o; t++) p[t].id == e && "" != p[t].s && (temp_html += '<option value="' + p[t][i.fv] + a(p[t].s) + '" data-id="' + p[t].id + '">' + p[t][l] + a(p[t].s) + "</option>"); else {
                for (var n = 0, t = 0, o = p.length; t < o; t++) p[t].id.toString().substr(0, 2) == e.toString().substr(0, 2) && p[t].id != e && "" != p[t].s && (temp_html += '<option value="' + p[t][i.fv] + a(p[t].s) + '" data-id="' + p[t].id + '">' + p[t][l] + a(p[t].s) + "</option>", 
                n++);
                0 == n && ("none" == i.nodata ? (r.css("display", "none"), c.css("display", "none")) : "hidden" == i.nodata && (r.css("visibility", "hidden"), 
                c.css("visibility", "hidden")));
            }
            r.html(temp_html).attr("disabled", !1).css({
                display: "",
                visibility: ""
            }), u();
        }
    }
    var i = $.extend({}, {
        boxId: "areaBox",
        prov: null,
        city: null,
        dist: null,
        nodata: null,
        hasSuffix: !0,
        fv: "id",
        required: !0
    }, e), e = $("#" + i.boxId), s = e.find(".prov"), r = e.find(".city"), c = e.find(".dist"), l = "name", e = "请选择", d = ("string" == typeof resumeLang && "en" == resumeLang && (l = "en", 
    e = "select"), i.required ? "" : "<option value=''>" + e + "</option>"), p = datajson.City, m = datajson.town, a = ("name" == i.fv ? i.fv = l : i.fv = "id", 
    function(e) {
        var t = "";
        return t = i.hasSuffix && (t = e, "string" == typeof resumeLang) ? "cn" == resumeLang ? e : "" : t;
    }), u = function() {
        var e = common.getSelectedAttr(s, "data-id"), t = common.getSelectedAttr(r, "data-id");
        if (c.empty().attr("disabled", !0), 0 < !e || 0 < !t) "none" == i.nodata ? c.css("display", "none") : "hidden" == i.nodata && c.css("visibility", "hidden"); else {
            temp_html = d;
            for (var o = 0, n = 0, a = m.length; n < a; n++) m[n].id.toString().substr(0, 4) == t.toString().substr(0, 4) && (temp_html += '<option value="' + m[n][i.fv] + '" data-id="' + m[n].id + '">' + m[n][l] + "</option>", 
            o++);
            0 == o ? "none" == i.nodata ? c.css("display", "none") : "hidden" == i.nodata && c.css("visibility", "hidden") : c.html(temp_html).attr("disabled", !1).css({
                display: "",
                visibility: ""
            });
        }
    };
    temp_html = d;
    for (var o = 0, n = p.length; o < n; o++) "00" == p[o].id.toString().substr(2, 2) && "" != p[o].s && (temp_html += '<option value="' + p[o][i.fv] + '" data-id="' + p[o].id + '">' + p[o][l] + "</option>");
    s.html(temp_html), setTimeout(function() {
        null != i.prov && (s.val(i.prov), t(), setTimeout(function() {
            var e;
            null != i.city && (e = function(e, t) {
                var o = !1, n = e;
                if (null == e || "" == e) return "";
                for (var a = 0, i = t.length; a < i; a++) if (-1 != e.indexOf(t[a])) {
                    o = !0;
                    break;
                }
                if (!o) for (var s = 0, i = p.length; s < i; s++) if (p[s].name == e) {
                    n = e + p[s].s;
                    break;
                }
                return n;
            }(i.city, [ "市", "地区", "州" ]), r.val(e), u(), setTimeout(function() {
                null != i.dist && c.val(i.dist);
            }, 1));
        }, 1));
    }, 1), s.off("change").on("change", function() {
        t();
    }), r.off("change").on("change", function() {
        u();
    });
}, common.namespace("common.fn"), common.fn.getSeoDomain = function(e) {
    var t;
    return "" == e ? -1 != (t = window.location.href).split("?")[0].indexOf("job5156") && -1 == t.split("?")[0].indexOf("test") ? "http://www.51shuobo.com" : "" : e;
}, common.fn.getPath = function(e, t, o) {
    e = parseFloat(t.replace("-", ".")) < 2014.1 ? "per_photo" == e || "per_attachment" == e || "per_certification" == e ? "http://www.51shuobo.com/content/upload/resource/" + t + "/" + o : "com_logo" == e || "com_extra" == e ? "http://www.51shuobo.com/content/upload/company/" + t + "/" + o : "http://www.51shuobo.com/content/" + e + "/" + t + "/" + o : "http://www.51shuobo.com/content/" + e + "/" + t + "/" + o;
    return e;
}, common.fn.template = {
    sDelimiter: "\x3c!--",
    eDelimiter: "--\x3e",
    templateIsCache: !1,
    load: function(e, n, a) {
        var i = this, s = "";
        n = n || "template", "string" == typeof resumeLang && (s = resumeLang), 
        $.ajax({
            url: e,
            type: "get",
            success: function(e) {
                var t = new RegExp(i.sDelimiter + "#template \\S+\\s*\\w*" + i.eDelimiter + "[\\s\\S]*?" + i.sDelimiter + "/#template" + i.eDelimiter, "g"), o = "en" == s ? /\[(.*?)\|.*?\]/gi : /\[.*?\|(.*?)\]/gi, e = e.replace(o, "$1").match(t);
                common.Cache.set(n, e), "function" == typeof a && a(e), i.templateIsCache = !0;
            },
            error: function() {
                throw "模板载入失败，请刷新！";
            }
        });
    },
    get: function(e, t) {
        for (var o = this.sDelimiter + "#template $" + e + "$ data" + this.eDelimiter, n = new RegExp("(" + this.sDelimiter + "(/?)#([\\s\\S]*?)" + this.eDelimiter + ")|(')|([\r\n\t])|({#([^}]*?)})", "g"), a = 0; a < t.length; a++) if (-1 < t[a].toString().indexOf(o)) return t[a].replace(n, "");
    },
    parseHtml: function(e, t, o, n) {
        var a = this;
        if (e = e || "template", !a.templateIsCache) return 10 < (i = 0 == i ? 0 : i++) ? void 0 : void setTimeout(function() {
            a.parseHtml(e, t, o, n);
        }, 100);
        var i = common.Cache.get(e), s = o;
        i = a.get(t, i), i = TrimPath.parseTemplate(i, t).process(s, {
            throwExceptions: !0,
            keepWhitespace: !0
        }), "function" == typeof n && n(i);
    }
}, common.fn.formStatus = {
    data: [],
    getData: [],
    add: function(e) {
        var t = {};
        t.id = e, t.query = $("#" + e).serialize(), this.data.push(t);
    },
    del: function(e) {
        for (var t = this.data.length, o = 0; o < t; o++) if (this.data[o].id == e) {
            index = o;
            break;
        }
        this.data.splice(index, 1);
    },
    get: function(e) {
        var t = this;
        e.each(function() {
            var e = {};
            e.id = $(this).attr("id"), e.query = $(this).serialize(), t.getData.push(e);
        });
    },
    isChange: function(e) {
        this.get(e);
        e = common.json.compArray(this.data, this.getData);
        return this.getData = [], e;
    }
}, common.fn.toolbarFixer = function(e, n) {
    $Toolbar = e, $(window).scroll(function() {
        var e, t, o = $(window).scrollTop();
        n < o ? $Toolbar.addClass("onFixed") : $Toolbar.removeClass("onFixed"), 
        common.isIE(6) ? (e = {}, (t = $("html")).css("background-image") && "none" != t.css("background-image") || (e["background-image"] = "url(about:blank)"), 
        t.css(e), n < o ? $Toolbar.css({
            position: "absolute",
            top: o
        }) : $Toolbar.css({
            position: "relative",
            top: 0
        })) : n < o ? $Toolbar.css({
            position: "fixed"
        }) : $Toolbar.css({
            position: "relative"
        });
    });
}, common.fn.readOnlyDisBackSpace = function() {
    document.documentElement.onkeydown = function(e) {
        var t, o = !!e, e = e || window.event;
        8 == e.keyCode && (t = o ? e.target : e.srcElement, /^(input|textarea)$/i.test(t.nodeName) && /^(text|textarea)$/i.test(t.type) && !t.readOnly && !t.disabled || (o ? e.stopPropagation() : (e.cancelBubble = !0, 
        e.keyCode = 0, e.returnValue = !1)));
    };
}, common.fn.loading = function(e) {
    var t = $('<div class="loading"></div>');
    t.bgiframe(), e.append(t);
}, common.fn.testFile = function(e, t) {
    var e = e[0], o = e.value.match(/[^\/\\]+$/gi)[0];
    return !!new RegExp("(?:" + t + ")$", "gi").test(o) || (window.ActiveXObject || (window.opera ? (e.type = "text", 
    e.type = "file") : e.value = ""), $.jBox.error("只允许上传" + t.replace(/\|/g, "、") + "格式的图片", "错误提示", {
        closed: function() {
            $(".uploading").hide();
        }
    }), !1);
}, common.fn.uploadImageBox = function(e, n) {
    var t = {
        $imgObj: $("#myAvatarImg"),
        width: 120,
        height: 160,
        boxWidth: 500
    }, h = $.extend({}, t, e), g = {
        x: null,
        y: null,
        w: null,
        h: null,
        path: null,
        filename: null
    };
    h.$btnObj.on("click", function() {
        var e = "", e = (e = (e = (e = (e = (e = (e = (e = (e = (e = (e = (e = (e += '<div class="imgFarme">') + '\t<div class="crop">' + '\t\t<div id="destination" style="display:none;"></div>') + '\t\t<div id="uploadFile" style="padding-top:100px; text-align:center;">' + '\t\t\t<form id="imgForm" name="imgForm" action="" enctype="multipart/form-data" method="post">') + '    \t\t\t<div class="uploading" style="display:none;"></div>' + '\t\t\t\t<div class="btn">') + '        \t\t\t<a href="#" class="btnBlue" style="height:36px; line-height:36px; font-size:16px;" title="选择照片"><span>选择照片</span></a>' + '        \t\t\t<input type="file" id="file" name="file" class="fileBar" accept="image/gif, image/jpeg, image/jpg, image/png" />') + "    \t\t\t</div>" + '    \t\t\t<div class="cGray" style="text-align:left; margin:0 30px; line-height:20px;">支持jpg、jpeg、gif、png格式，不超过1M<br />请勿上传艺术照</div>') + "\t\t\t</form>" + "\t\t</div>") + "\t</div>" + '\t<div class="preview">') + '\t\t<p style="height:30px; line-height:30px;">照片预览：(<span class="cGray">请注意清晰度</span>)</p>' + ('\t\t<div class="previewFrame" style="width:' + h.width + "px; height:" + h.height + 'px; overflow:hidden;"><img id="show_photo" width="' + h.width + '" height="' + h.height + '" /></div>')) + ('\t\t<p style="height:40px; line-height:40px;">' + h.width + "*" + h.height + "px</p>") + '\t\t<p style="width:150px;" class="cGray">若截取部分显示不完全，请调整原图片的背景高度等于或大于宽度，再重新上传。</p>') + '\t\t<p><a href="#" id="btnreUpload" style="display:none;">重新上传</a></p>' + "\t</div>") + '\t<div class="clearer"></div>' + "</div>", 
        $.jBox(e, {
            id: "jBoxUploadImg",
            width: h.boxWidth,
            height: 370,
            title: "头像上传",
            submit: function(e, t, o) {
                return e ? (e && null != g.x && null != g.y && null != g.w && null != g.h && null != g.path && null != g.filename && $.ajax({
                    type: "post",
                    dataType: "json",
                    url: h.cropAjaxUrl,
                    data: g,
                    success: function(e) {
                        "function" == typeof n && n(e);
                    },
                    error: function() {
                        $.jBox.error("裁图保存不成功，请重试！", "错误提示");
                    }
                }), !0) : (g.x = null, g.y = null, g.w = null, g.h = null, g.path = null, 
                !(g.filename = null));
            },
            buttons: {
                "确定": !0,
                "取消": !1
            }
        }), $("#jBoxUploadImg").find(".jbox-content").css({
            "overflow-y": "hidden"
        }), h.$imgObj.attr("src")), t = ($("#show_photo").attr("src", e), $(".uploading").ajaxStart(function() {
            $(this).show();
        }).ajaxComplete(function() {
            $(this).hide();
        }), {
            url: h.uploadAjaxUrl,
            secureuri: !1,
            fileElementId: "file",
            dataType: "json",
            success: function(e, t) {
                var f, o, n, a, i, s, r;
                $("#uploadFile").hide(), $(".uploading").hide(), $("#btnreUpload").show(), 
                $("#destination").show(), void 0 !== e.errorcode ? (o = Constant.uploadFileEorr[e.errorcode], 
                $("#destination").html('<p style="color:red;padding:10px;margin:1px;background:#FFC;font-size:14px;"><strong>上传提示：</strong><br />' + o + "</p>")) : (g.path = e.path, 
                g.filename = e.filename, f = h.width / h.height, o = e.fileUrl, 
                a = n = 300, i = function(e, t, o, i) {
                    function n(e) {
                        var t = Math.round(e.w / i), o = Math.round(e.h / i), n = Math.round(e.x / i), e = Math.round(e.y / i), a = h.width / t;
                        $("#show_photo").css({
                            width: p * a,
                            height: m * a,
                            "margin-left": -n * a,
                            "margin-top": -e * a
                        }), g.x = n, g.y = e, g.w = t, g.h = o;
                    }
                    var a, s, r, c, l, d, p = t / i, m = o / i, u = ($("#show_photo").attr("src", $("#" + e).attr("src")), 
                    t = t, o = o, a = f, s = h.width, r = o, c = t, d = l = 0, (a = a || h.width / h.height) < t / o ? l = (t - (c = o * a)) / 2 : t / o != a && (d = (o - (r = t * a)) / 2), 
                    [ l += o = (c - s) / 2, d += (r - s / a) / 2, l + s, d + s / a ]);
                    window.setTimeout(function() {
                        $("#" + e).Jcrop({
                            setSelect: u,
                            aspectRatio: f,
                            allowSelect: !1,
                            onChange: n,
                            onSelect: n
                        });
                    }, 10);
                }, s = $("#" + "destination"), (r = $('<img id="editImg" src="' + o + '" />')).on("load", function() {
                    var e = r.width(), t = r.height(), t = common.zoomParam(n, a, e, t), o = (r.width(t.width).height(t.height), 
                    s.css({
                        width: t.width,
                        height: t.height,
                        "margin-left": t.left,
                        "margin-top": t.top
                    }), r.attr("id")), e = t.width / e;
                    i(o, t.width, t.height, e);
                }), s.html(r));
            },
            error: function(e, t, o) {
                $.jBox.error("上传失败，错误信息：" + o, "错误提示"), $(".uploading").hide();
            }
        });
        return $("#imgForm").on("change", '[name="file"]', function() {
            $(".uploading").show(), common.fn.testFile($(this), "jpg|gif|jpeg|png") && $.ajaxFileUpload(t);
        }), $("#btnreUpload").click(function() {
            return $("#destination").empty().hide(), $("#uploadFile").show(), !1;
        }), !1;
    });
}, common.fn.reloadcode = function(e, t) {
    e.attr("src", t + "?t=" + new Date().getTime());
}, common.fn.dateAdd = function(e, t, o) {
    switch (e) {
      case "y":
        o.setFullYear(o.getFullYear() + t);
        break;

      case "q":
        o.setMonth(o.getMonth() + 3 * t);
        break;

      case "m":
        o.setMonth(o.getMonth() + t);
        break;

      case "w":
        o.setDate(o.getDate() + 7 * t);
        break;

      case "d":
        o.setDate(o.getDate() + t);
        break;

      case "h":
        o.setHours(o.getHours() + t);
        break;

      case "M":
        o.setMinutes(o.getMinutes() + t);
        break;

      case "s":
        o.setSeconds(o.getSeconds() + t);
        break;

      default:
        o.setDate(d.getDate() + t);
    }
    return o;
}, common.fn.dateDiff = function(e, t, o) {
    e = e.toUpperCase(), t = common.str.isInt(t) ? t : new Date(t.toString().replace(/-/g, "/")).getTime(), 
    o = common.str.isInt(o) ? o : new Date(o.toString().replace(/-/g, "/")).getTime();
    try {
        return Math.round((o - t) / {
            D: 864e5,
            H: 36e5,
            M: 6e4,
            S: 1e3,
            T: 1
        }[e]);
    } catch (e) {
        return e.message;
    }
}, common.fn.dateDiffToStr = function(e, t) {
    var o;
    return common.fn.dateDiff("S", e, t) < 60 ? "刚刚" : (o = common.fn.dateDiff("M", e, t)) < 60 ? o + "分钟前" : (o = common.fn.dateDiff("H", e, t)) < 24 ? o + "小时前" : (o = common.fn.dateDiff("D", e, t)) <= 31 ? o + "天前" : o < 365 ? parseInt(o / 30) + "个月前" : new Date(e).Format("yyyy-MM-dd");
}, common.fn.loadSecond = function(e, t, o) {
    var n = t, a = setInterval(function() {
        e.text(--n), 0 == n && (clearInterval(a), "function" == typeof o) && o();
    }, 1e3);
}, common.fn.numFormat = function(e) {
    var t = 1e4, o = 1e8;
    return e < t ? e : t <= e && e < 1e5 ? (e / t).toFixed(1) + "万" : 1e5 <= e && e < 1e7 ? Math.floor(e / t) + "万" : 1e7 <= e && e < o ? Math.floor(e / 1e3 * t) + "千万" : o <= e && e < 1e9 ? (e / o).toFixed(1) + "亿" : 1e9 <= e && e < 1e11 ? Math.floor(e / o) + "亿" : 1e11 <= e && e < 1e12 ? Math.floor(e / 1e3 * o) + "千亿" : 1e12 <= e && e < 1e13 ? Math.floor(e / t * o) + "万亿" : "NaN!";
}, common.fn.bothDate = function(e, t, o, n, a) {
    var i = e || $(document), s = t || "begin", r = o || "end", n = n || "yyyy-MM-dd", a = $.extend({}, {
        b_minDate: "",
        b_maxDate: "%y-%M-%d",
        e_maxDate: "%y-%M-%d",
        b2e_maxDate: "",
        e2b_minDate: ""
    }, a);
    i.find('[data-rel="sDate"]').focus(function() {
        var e = i.find('[data-rel="eDate"]');
        WdatePicker({
            dateFmt: n,
            onpicked: function() {
                e.focus();
            },
            minDate: a.b_minDate,
            maxDate: "#F{$dp.$D('" + r + "',{" + a.b2e_maxDate + "})||'" + a.b_maxDate + "'}"
        });
    }), i.find('[data-rel="eDate"]').focus(function() {
        WdatePicker({
            dateFmt: n,
            minDate: "#F{$dp.$D('" + s + "',{" + a.e2b_minDate + "})}",
            maxDate: a.e_maxDate
        });
    });
}, common.fn.languageSkill = function(e, t) {
    var r = "name", o = "请选择", c = ("string" == typeof resumeLang && (r = "cn" == resumeLang ? "name" : "en", 
    o = "cn" == resumeLang ? "请选择" : "select"), datajson.language), n = e.attr("data-def"), a = t.attr("data-def");
    t.attr("data-parent");
    e.append(function(e) {
        for (var t, o, n = [], a = c.length, i = 0; i < a; i++) "00" == c[i].id.toString().substr(2, 2) && (t = c[i][r], 
        o = c[i].id, n.push('<option value="' + o + '"'), e == o && n.push(" selected"), 
        n.push(">"), n.push(t), n.push("</options>"));
        return n.join("");
    }(n)), e.on("change", function() {
        var e = common.getSelectedAttr($(this), "value");
        null != e && "" != e && 0 != e ? t.html(function(e, t) {
            for (var o, n, a = [], i = c.length, s = 0; s < i; s++) (c[s].id < 5 || c[s].id.toString().substr(0, 2) == e.toString().substr(0, 2) && "00" != c[s].id.toString().substr(2, 2)) && (o = c[s][r], 
            n = c[s].id, a.push('<option value="' + n + '"'), t == n && a.push(" selected"), 
            a.push(">"), a.push(o), a.push("</options>"));
            return a.join("");
        }(e, a)) : t.html('<option value="">' + o + "</options>");
    }), e.change();
}, common.fn.placeEditingFramework = function(e) {
    this.options = {
        $panel: $("body"),
        url: {
            loadTemplet: null,
            del: null,
            save: null,
            update: null
        },
        showFormId: null,
        mod: null,
        listData: null,
        blankData: null,
        noDataTip: "暂无记录",
        size: 0,
        loadListed: null,
        creatFormed: null,
        validateForm: null,
        submitBefore: null,
        success: null
    }, $.extend(this.options, e), this.init();
}, common.fn.placeEditingFramework.prototype = {
    init: function() {
        var e = this, t = (window.onbeforeunload = function() {
            if (!common.fn.formStatus.isChange(e.options.$panel.find("form"))) return "部分内容还没保存，是否继续？";
        }, window.location.hash.replace("#", ""));
        t && "" != (t = t.replace("editId=", "")) && (this.options.showFormId = t, 
        window.location.hash = "!"), this.loadList();
    },
    noData: function(e, t) {
        var o = this.options.listData;
        "add" != t || null != o && 0 != o.length || e.append('<div class="noData">' + this.options.noDataTip + "</div>"), 
        "remove" == t && e.find(".noData").remove();
    },
    loadList: function() {
        var a = this, n = this.options.$panel.find('[data-id="listPanel"]'), i = this.options.listData;
        this.noData(n, "add"), common.fn.template.load(this.options.url.loadTemplet + "?t=" + new Date().getTime(), "template", function() {
            for (var t = 0, e = i.length, o = 0; o < e; o++) common.fn.template.parseHtml("template", a.options.mod + "List", i[o], function(e) {
                n.append(e), ++t == i.length && (n.find('.item [data-id="no."]').each(function(e, t) {
                    $(this).text(e + 1);
                }), n.setListBgColor({
                    trSelector: ".item"
                }), 0 < a.options.showFormId && a.checkForm(a.options.showFormId), 
                "function" == typeof a.options.loadListed) && a.options.loadListed(n);
            });
        }), 0 == a.options.showFormId && (0 == a.options.size || a.options.size > i.length) && a.checkForm(0), 
        0 < a.options.size && a.options.size <= i.length ? $("#addToForm").hide() : $("#addToForm").show(), 
        $("#addToForm").on("click", function() {
            return 0 < a.options.size && a.options.size <= i.length ? ($.jBox.info('<p class="cRed">对不起，最多只能添加' + a.options.size + "条记录</p>", "操作提示"), 
            $(this).hide()) : $("#addForm").length || a.checkForm(0), !1;
        }), n.on("click", function(e) {
            var n, e = $(e.target), t = e.attr("data-act");
            return "modify" == t ? (n = e.attr("data-id"), $("#editForm-" + n).length || a.checkForm(n), 
            !1) : "copy" == t ? (n = e.attr("data-id"), a.checkForm(0, n), !1) : "del" == t ? (n = e.attr("data-id"), 
            $.jBox.confirm("是否删除记录？", "操作提示", function(e, t, o) {
                return !0 === e && a.del(n), !0;
            }, {
                id: "jBoxDel",
                width: 320,
                buttons: {
                    "确定": !0,
                    "取消": !1
                }
            }), !1) : void 0;
        });
    },
    creatForm: function(t, e) {
        var o, n, a, i, s = this, r = (this.options.$panel.find(".item").removeClass("setStyleList_trChecked"), 
        0 < t ? (o = "editForm-" + t, n = $("#item-" + t), i = common.json.getIndexById(this.options.listData, t), 
        a = this.options.listData[i], n.addClass("setStyleList_trChecked")) : (o = "addForm", 
        n = $("#addToForm"), a = this.options.blankData, 0 < e && (i = common.json.getIndexById(this.options.listData, e), 
        a = this.options.listData[i])), this.options.$panel.find("form").each(function(e, t) {
            var o = $(this).attr("id");
            $(this).remove(), common.fn.formStatus.del(o);
        }), $('<form action="" id="' + o + '" data-id="form" method="post" style=" border:solid 1px #ccc; padding:10px 0; background:#f9f9f9;"></form>'));
        n.after(r), common.fn.template.parseHtml("template", this.options.mod + "Form", a, function(e) {
            r.html(e), s.options.validateForm(r, a, function() {
                s.save(t, r);
            }), r.find('[data-act="submit"]').on("click", function() {
                return r.submit(), !1;
            }), r.find('[data-act="cancel"]').on("click", function() {
                return r.remove(), common.fn.formStatus.del(o), s.options.$panel.find(".item").removeClass("setStyleList_trChecked"), 
                !1;
            }), "function" == typeof s.options.creatFormed && s.options.creatFormed(r, a), 
            setTimeout(function() {
                common.fn.formStatus.add(o);
            }, 500);
        });
    },
    checkForm: function(n, a) {
        var i = this;
        common.fn.formStatus.isChange(this.options.$panel.find("form")) ? i.creatForm(n, a) : $.jBox.confirm("部分内容还没保存，是否继续？", "操作提示", function(e, t, o) {
            return !0 === e && i.creatForm(n, a), !0;
        }, {
            id: "jBoxOP",
            width: 320,
            buttons: {
                "确定": !0,
                "取消": !1
            }
        });
    },
    save: function(i, s) {
        var e, r = this, c = s.attr("id"), l = this.options.$panel.find('[data-id="listPanel"]'), d = 0 < i ? (e = this.options.url.update.replace(/{id}/g, i), 
        "修改成功！") : (e = this.options.url.save, "新增成功！"), t = {
            url: e,
            dataType: "json",
            beforeSubmit: function(e, t, o) {
                common.fn.loading(t);
            },
            success: function(e, t) {
                var o, n, a;
                null != e && t ? null != e.error && "" != e.error ? (s.find(".loading").remove(), 
                $.jBox.info('<p class="cRed">' + e.error + "</p>", "操作提示")) : (t = e[r.options.mod + "List"], 
                s.remove(), r.noData(l, "remove"), common.fn.formStatus.del(c), 
                0 < i ? (o = common.json.getIndexById(r.options.listData, i), $.extend(r.options.listData[o], t), 
                (n = $("#item-" + i)).removeClass("setStyleList_trChecked"), a = n.find('[data-id="no."]').text(), 
                common.fn.template.parseHtml("template", r.options.mod + "List", t, function(e) {
                    n.html(e), n.find('[data-id="no."]').text(a);
                })) : (r.options.listData.push(t), common.fn.template.parseHtml("template", r.options.mod + "List", t, function(e) {
                    l.append(e);
                    e = l.find('[data-id="no."]').size();
                    l.find('[data-id="no."]').last().text(e), l.setListBgColor({
                        trSelector: ".item"
                    });
                })), 0 < r.options.size && r.options.size <= r.options.listData.length ? $("#addToForm").hide() : $("#addToForm").show(), 
                "function" == typeof r.options.success && r.options.success(e), 
                $.jBox.tip(d, "success")) : common.log("系统出错！操作不成功！");
            },
            timeout: 3e3,
            error: function(e, t, o) {
                var n = "", n = "timeout" == t ? "操作超时！" : "请求失败！";
                $.jBox.error('<p class="cRed">' + n + "</p>", "错误提示", {
                    closed: function() {
                        s.find(".loading").remove();
                    }
                }), window.console && console.error(e, t);
            }
        };
        "function" == typeof this.options.submitBefore && this.options.submitBefore(function() {
            s.ajaxSubmit(t);
        });
    },
    del: function(t) {
        var o = this, n = "editForm-" + t, a = this.options.$panel.find('[data-id="listPanel"]');
        $.ajax({
            url: o.options.url.del.replace(/{id}/g, t),
            type: "post",
            dataType: "json",
            success: function(e) {
                common.json.del(o.options.listData, t), $("#" + n).length && ($("#" + n).remove(), 
                common.fn.formStatus.del(n)), $("#item-" + t).remove(), o.noData(a, "add"), 
                o.options.$panel.find('.item [data-id="no."]').each(function(e, t) {
                    $(this).text(e + 1);
                }), a.setListBgColor({
                    trSelector: ".item"
                }), 0 < o.options.size && o.options.size > o.options.listData.length && $("#addToForm").show(), 
                "function" == typeof o.options.success && o.options.success(e);
            }
        });
    }
}, common.fn.listFormSubmits = function(e) {
    function i() {
        var e;
        s.isAjax ? (e = {
            type: s.method,
            url: s.actionUrl,
            dataType: "json",
            beforeSubmit: function(e, t, o) {
                common.fn.loading(t);
            },
            success: function(e, t) {
                e && (null == e.result || e.result ? ("function" == typeof s.success && s.success(r, e), 
                r.find("input").filter('[name="' + s.itemCheckboxName + '"]').prop("checked", !1).change()) : (e = e.message || "操作出错啦！", 
                $.jBox.info(e, "温馨提示")));
            },
            timeout: 3e3
        }, r.ajaxSubmit(e)) : (r.attr("action", s.actionUrl).attr("method", s.method).attr("target", s.target).submit(), 
        r.removeAttr("action").removeAttr("method").removeAttr("target"), r.find("input").filter('[name="' + s.itemCheckboxName + '"]').prop("checked", !1).change());
    }
    var s = $.extend({}, {
        $form: null,
        itemCheckboxName: "id",
        checkLoginType: null,
        btnAct: "",
        actionUrl: "",
        method: "post",
        target: null,
        tip: null,
        isAjax: !1,
        submitFn: null,
        success: null
    }, e || {}), r = s.$form;
    r.find('[data-act="' + s.btnAct + '"]').on("click", function() {
        var e, t = $(this), a = $(this).attr("data-id");
        if (0 < a) r.find("input").filter('[name="selectAll"]').prop("checked", !1), 
        r.find("input").filter('[name="' + s.itemCheckboxName + '"]').prop("checked", !1).change().filter('[value="' + a + '"]').prop("checked", !0).change(); else if (0 == (e = 0, 
        r.find("input").filter('[name="' + s.itemCheckboxName + '"]').each(function() {
            $(this).prop("checked") && e++;
        }), e)) return $.jBox.info("<p>请选择记录</p>", "操作提示", {
            width: 220,
            top: "45%"
        }), !1;
        function o() {
            function n() {
                null == s.submitFn ? i() : s.submitFn(t);
            }
            null != s.tip ? $.jBox.confirm("<p>" + s.tip + "</p>", "操作提示", function(e, t, o) {
                return "ok" == e ? n() : 0 < a && r.find("input").filter('[name="' + s.itemCheckboxName + '"]').prop("checked", !1).change(), 
                !0;
            }, {
                width: 300,
                top: "45%"
            }) : n();
        }
        return null == s.checkLoginType ? o() : "per" == s.checkLoginType || "com" == s.checkLoginType ? common.fn.checkLogin(s.checkLoginType, function(e) {
            e.state ? o() : common.fn[s.checkLoginType + "Login"](function() {
                o();
            });
        }) : $.jBox.error("参数不对", "系统提示"), !1;
    });
}, common.fn.selDown = function() {
    $(document).on("click", function(e) {
        e.stopPropagation(), $(".selDropDown").removeClass("open");
    }), $("body").on("click", ".selDropDown .seltoggle", function(e) {
        e.stopPropagation();
        var e = $(this).closest(".selDropDown"), t = e.find("select"), o = e.find(".sel-ul"), i = (e.find(".seltoggle"), 
        e.find(".hidden-txt"), "");
        0 === o.find("li").length && (t.find("option").each(function(e, t) {
            var o = $(this), n = o.val(), a = o.text(), o = o.attr("selected");
            i += '<li> <a href="javascript:;" class="' + (o ? "selected" : "") + '" data-value="' + n + '">' + a + "</a></li>";
        }), o.length || (o = $('<ul class="sel-ul">'), e.append(o)), o.html(i)), 
        $(".selDropDown").not(e).removeClass("open"), e.toggleClass("open");
    }), $("body").on("click", ".selDropDown .btnSelect,.selDropDown .wrap-placeholder", function(e) {
        e.stopPropagation(), $(this).closest(".selDropDown").find(".seltoggle").trigger("click");
    }), $("body").on("click", ".sel-ul a", function(e) {
        var t = $(this), o = t.closest(".selDropDown"), n = o.find(".sel-ul"), a = o.find(".seltoggle"), i = o.find(".hidden-txt"), n = n.find("a"), s = o.data("type"), r = t.data("value"), c = $.trim(t.text());
        e.stopPropagation(), "multi" !== s ? (n.removeClass("selected"), t.addClass("selected"), 
        o.removeClass("open")) : (t.toggleClass("selected"), "不限" == c ? n.not(t).removeClass("selected") : (e = n.eq(0), 
        "不限" == $.trim(e.text()) && e.removeClass("selected")), r = c = "", n.filter(".selected").each(function(e, t) {
            var o = $(this);
            c += "," + o.text(), r += "," + o.data("value");
        }), r = r.substring(1), c = c.substring(1)), common.fn.updateSelect(o.find("select option"), r + ""), 
        i.val(r), a.val(c);
    });
}, common.fn.updateSelect = function(e, t) {
    var n = common.isArray(t) ? t : (t + "").split(",");
    e.removeAttr("selected"), e.each(function() {
        var t = $(this), o = this.value;
        $.each(n, function(e) {
            if (o === n[e]) return t.attr("selected", "selected"), !1;
        });
    });
}, common.fn.updateSelectList = function(e, t) {
    var n = common.isArray(t) ? t : (t + "").split(",");
    e.removeClass("selected"), e.each(function() {
        var t = $(this), o = t.data("value") + "";
        $.each(n, function(e) {
            if (o === n[e]) return t.addClass("selected"), !1;
        });
    });
}, common.fn.initSel = function() {
    $(".selDropDown select").each(function(e, t) {
        var o = $(this), n = o.closest(".selDropDown"), a = n.find(".seltoggle"), i = n.find(".hidden-txt"), s = [], r = [];
        o.find("option").each(function(e, t) {
            var o = $(this), n = o.val(), a = o.text();
            o.attr("selected") && (s.push(n), r.push(a));
        }), n.find(".sel-ul").length && common.fn.updateSelectList(n.find(".sel-ul a"), s), 
        i.val(s.join(",")), a.val(r.join(","));
    });
}, common.fn.searchHandle = {
    btnSearch: function(s, r, c) {
        c = void 0 === c || c, r = r || "pos";
        s.submit(function(e) {
            return function() {
                var e = s.find('[name="keyword"]'), t = e.val(), o = s.serializeArray();
                if (200 < t.length) return $.jBox.tip("关键字不能超过200个", "error"), !1;
                if (common.fn.searchHandle.submitHandel(s, r), "s" == $(this).attr("data-st") && "" == t && "" == s.find('[name="locationList"]').val() && c) return "" == t && e.focus(), 
                s.find(".tip").fadeIn("fast", function() {
                    setTimeout(function() {
                        s.find(".tip").fadeOut("slow");
                    }, 3e3);
                }), !1;
                for (var n = 0, a = o.length; n < a; n++) if ("keyword" == o[n].name) {
                    var i = o[n].value;
                    -1 !== t.indexOf("~") && (i = i.replace(/~/gi, escape("~"))), 
                    o[n].value = i.replace(/[\/*%\\]/gi, "");
                    break;
                }
                e = "/s/result/" + common.searchURL(o);
                return s.attr("action", e), !0;
            }();
        }), s.find('[data-act="search"]').on("click", function() {
            return s.submit(), !1;
        }), "pos" == r ? s.find('[name="keyword"]').keydown(function(e) {
            13 == ((e = e || window.event).keyCode || e.which) && s.submit();
        }).focus() : s.find('[name="keyword"]').keydown(function(e) {
            13 == ((e = e || window.event).keyCode || e.which) && s.submit();
        });
    },
    tabKeyType: function(e, o, n) {
        e = e || 0;
        function t(e) {
            var t;
            switch (e) {
              case 0:
                t = "请输入关键字/职位名/企业名";
                break;

              case 1:
                t = "请输入职位名";
                break;

              case 2:
                t = "请输入公司名";
            }
            a.find('[data-value="' + e + '"]').addClass("on"), a.find('[name="keywordType"]').val(e), 
            n.find('[for="keyword"]').remove(), n.find('[for="keywordA"]').remove(), 
            n.find('[name="keyword"]').attr("placeholder", t), "function" == typeof placeHolderInit ? placeHolderInit() : i || n.find('[name="keyword"]').placeholder({
                labelMode: !0,
                labelAlpha: !0,
                labelAcross: !0,
                labelStyle: o
            }).focus().blur();
        }
        var a = (n = n || $("#searchForm")).find('[data-id="tabKeyType"]'), i = "placeholder" in document.createElement("input");
        t(e), a.find("a").on("click", function() {
            var e = $(this).attr("data-value");
            return a.find("a").removeClass("on"), t(parseInt(e, 10)), !1;
        });
    },
    getHistory: function(e, t, o) {
        var n, a, i = "", s = o ? 'target="_blank"' : "";
        switch (t = t || "pos") {
          case "res":
            n = common.localData.get("resHisKey"), a = "/s/r/result?";
            break;

          case "post":
            n = common.localData.get("postHisKey");
            break;

          case "pos":
            n = common.localData.get("hisKey"), a = "/s/p/result?";
        }
        if (null == n) return "";
        var r = jQuery.parseJSON(n);
        if ("json" == e) return r;
        for (var c = r.length - 1; 0 <= c; c--) i += '<li><a href="' + a + encodeURI(decodeURIComponent(r[c].query)) + '" title="' + r[c].title + '" ' + s + ">" + r[c].title + "</a></li>";
        if (!e) return i;
        e.html(i);
    },
    removeHistory: function(e, t) {
        if (e = e || "pos", !(0 < (t = t || 0))) switch (e) {
          case "res":
            common.localData.remove("resHisKey");
            break;

          case "post":
            common.localData.remove("postHisKey");
            break;

          case "pos":
            common.localData.remove("hisKey");
        }
    },
    searcherTitleFn: function(e, t) {
        var o = "";
        if ("pos" == t) for (var n = [ "keyword", "locationList", "degreeFrom", "degreeTo", "workyearFrom", "workyearTo", "salary", "updateIn", "posTypeList", "industryList" ], a = "", i = (null == e.keywordType || "" == e.keyType || 0 == e.keywordType ? a = "全文" : 1 == e.keywordType ? a = "职位" : 2 == e.keywordType && (a = "公司"), 
        n.length), s = 0; s < i; s++) null != e[r = n[s]] && "" != e[r] && ("keyword" == r && (o = (o += "[" + a + "]") + e[r] + "+"), 
        "locationList" == r && (o = o + common.json.getAreaById(e[r]) + "+"), "degreeFrom" == r && (o = o + common.json.getNameById(datajson.degree, e[r]) + "-"), 
        "degreeTo" == r && (o = o + common.json.getNameById(datajson.degree, e[r]) + "+"), 
        "workyearFrom" == r && (o = o + common.json.getNameById(datajson.workyear, e[r]) + "-"), 
        "workyearTo" == r && (o = o + common.json.getNameById(datajson.workyear, e[r]) + "+"), 
        "salary" == r && (o = o + common.json.getNameById(datajson.salary, e[r]) + "+"), 
        "updateIn" == r && (o = o + common.json.getNameById(datajson.timeLevel, e[r]) + "+"), 
        "posTypeList" == r && (o = o + common.json.getNameById(datajson.jobFun, e[r]) + "+"), 
        "industryList" == r) && (o = o + common.json.getNameById(datajson.industry, e[r]) + "+");
        if ("res" == t) {
            hisKeyName = "resHisKey";
            for (var r, i = (n = [ "keyword", "posTypeList", "location", "workyearFrom", "workyearTo", "degreeFrom", "degreeTo", "locationList", "updateIn" ]).length, s = 0; s < i; s++) null != e[r = n[s]] && "" != e[r] && ("keyword" == r && (o = o + e[r] + "+"), 
            "posTypeList" == r && (o = o + common.json.getNameById(datajson.jobFun, e[r]) + "+"), 
            "location" == r && (o = o + common.json.getAreaById(e[r]) + "+"), "workyearFrom" == r && (o = o + common.json.getNameById(datajson.workyear, e[r]) + "-"), 
            "workyearTo" == r && (o = o + common.json.getNameById(datajson.workyear, e[r]) + "+"), 
            "degreeFrom" == r && (o = o + common.json.getNameById(datajson.degree, e[r]) + "-"), 
            "degreeTo" == r && (o = o + common.json.getNameById(datajson.degree, e[r]) + "+"), 
            "locationList" == r && (o = o + common.json.getAreaById(e[r]) + "+"), 
            "updateIn" == r) && (o = o + common.json.getNameById(datajson.timeLevel, e[r]) + "+");
        }
        return o = o.replace(/\+$/, "");
    },
    saveHistory: function(e, t, o, n) {
        o = o || "pos";
        var a = 0, i = new Date().getTime(), s = this.searcherTitleFn(e, o), r = [], c = "res" == o ? "resHisKey" : "hisKey";
        switch (o) {
          case "res":
            c = "resHisKey";
            break;

          case "post":
            s = e, c = "postHisKey";
            break;

          case "pos":
            s = e, c = "hisKey";
        }
        if (t = t.replace(/pn=\d+/gi, "").replace(/\w*=&/gi, "").replace(/&\w*=$/gi, "").replace(/&$/gi, ""), 
        hisKey = common.localData.get(c)) {
            try {
                r = jQuery.parseJSON(hisKey);
            } catch (e) {}
            for (var a = r.length, l = 0; l < a; l++) if (r[l].title == s) {
                r.splice(l, 1);
                break;
            }
            15 <= (a = r.length) && r.splice(0, 1);
        }
        "" != s && ((obj = {}).id = i, obj.title = s, "res" == o ? obj.query = t : obj.url = t, 
        "post" == o && (obj.pay = n), r.push(obj), obj = null, common.localData.set(c, common.json.toStr(r)));
    },
    submitHandel: function(e, t) {
        t = t || "pos";
        var a, o = e.find('[name="keyword"]');
        if (o.val().indexOf("　") && o.val(common.str.dTrim(o.val().replace(/[\u3000]/g, " ")).replace(/\s+/g, " ")), 
        "pos" == t) {
            var n = [ "name_locationListA", "searchCityName", "name_posTypeList", "name_industryList" ], o = e.find('[name="locationList"]').val();
            if ("" != o && -1 != o.toString().indexOf(".")) {
                for (var i = o.split(","), s = i.length, r = [], c = 0; c < s; c++) {
                    var l = common.json.getNameById(datajson.town, i[c]);
                    "" != l && r.push(l);
                }
                e.find('[name="locationList"]').after('<input type="hidden" name="locationAddr" value="' + r.join(",") + '" />');
            }
        }
        for (c in "res" == t && (n = [ "name_posTypeList", "name_location", "searchCityName", "name_locationList", "name_latestIndustry", "name_latestJob", "name_hometown" ], 
        e.find('[name="location"]').length && "" != (o = e.find('[name="location"]').val()) && -1 != o.toString().indexOf(".") && e.find('[name="location"]').after('<input type="hidden" name="locationAddr" value="' + common.json.getNameById(datajson.town, o) + '" />'), 
        a = [], $("#languageBox").find("p").each(function() {
            var e = $(this).find('[name="lanType"]'), t = $(this).find('[name="lanlevel"]'), o = common.getSelectedAttr(e, "value"), n = common.getSelectedAttr(t, "value");
            0 < o && a.push(o + "-" + n), e.prop("disabled", !0), t.prop("disabled", !0);
        }), 0 < a.length ? $("#languageLevel").val(a.join(",")) : $("#languageLevel").prop("disabled", !0)), 
        n) {
            var d = e.find('[name="' + n[c] + '"]');
            d && d.prop("disabled", !0);
        }
    }
}, common.fn.bindShareList = function(e) {
    var t = {
        $panel: $(document),
        link: encodeURIComponent(document.location),
        title: document.title.substring(0, 76),
        topic: "#求职#",
        desc: "好工作 ，找智通！",
        summary: "",
        source: "智通硕博网",
        windowName: "share",
        site: "http://" + document.location.host,
        qZoneTitle: encodeURIComponent(document.title.substring(0, 76))
    }, i = $.extend({}, t, e || {}), s = (-1 != document.location.host.indexOf("sjzt") && (i.source = "世纪智通硕博网"), 
    encodeURIComponent(i.topic + i.title + "（分享自@" + i.source + "）好工作 ，找智通！"));
    i.$panel.find("a").on("click", function() {
        var e, t, o;
        switch ($(this).attr("data-id")) {
          case "Qzone-share":
            e = "http://sns.qzone.qq.com/cgi-bin/qzshare/cgi_qzshare_onekey?url=" + i.link + "&title=" + i.qZoneTitle + "&desc=" + i.desc + "&summary=" + i.summary + "&site=" + i.site, 
            o = 600, t = 500;
            break;

          case "sina-share":
            e = "http://v.t.sina.com.cn/share/share.php?url=" + i.link + "&title=" + s, 
            o = 607, t = 523;
            break;

          case "tencent-share":
            e = "http://v.t.qq.com/share/share.php?title=" + s + "&url=" + i.link + "&site=" + i.site, 
            o = 634, t = 668;
            break;

          case "email-share":
            return $.jBox('<div><p><em class="cRed">*</em>邮箱地址：<input type="text" class="inpt" name="email" id="email" /></p><p style="margin-left:10px;">分享说明：</p></div>', {
                id: "jEmailShareBox",
                title: "分享职位",
                width: 430
            }), !1;
        }
        var n, a = [ "toolbar=0,status=0,resizable=1,width=" + (a = o) + ",height=" + (n = t) + ",left=", (screen.width - a) / 2, ",top=", (screen.height - n) / 2 ].join("");
        return window.open(e, i.windowName, a), !1;
    });
}, common.fn.checkResumeToView = function(t, e, o) {
    $.ajax({
        async: !1,
        type: "get",
        url: "/resume/view/check.json?t=" + new Date().getTime(),
        data: {
            resumeIds: t,
            modType: e
        },
        dataType: "json",
        success: function(e) {
            -1 == t.indexOf(",") ? e.error ? $.jBox.info(e.error, "查看简历") : "function" == typeof o && o(t, "all") : e.error ? $.jBox.info(e.error, "查看简历", {
                closed: function() {
                    "function" == typeof o && o(e.resumeIds, "error");
                }
            }) : "function" == typeof o && o(t, "all");
        }
    });
}, common.fn.feedbackPop = function(e, t) {
    var o = null != t && "" != t ? decodeURIComponent(window.location.protocol + "//" + window.location.host + window.location.port + t) : decodeURIComponent(window.location.href), t = [ "意见反馈", "意见反馈", "纠错反馈", "投诉举报" ];
    title = -1 != (e = e || "all").toString().indexOf("all") ? t[0] : t[e], common.loadJBoxJs(function() {
        $.jBox("iframe:/pub/feedback?mode=pop&type=" + e + "&url=" + o, {
            id: "jFeedbackBox",
            title: title,
            width: 460,
            height: 450
        }), $("#jFeedbackBox").find(".jbox-button-panel").remove(), $("#jFeedbackBox").find(".jbox-content").css({
            "overflow-y": "hidden"
        });
    });
}, common.fn.weixinQR = function(e) {
    function t() {
        var e = $(window).width();
        e < 1220 ? o.css({
            left: "auto",
            right: 0
        }) : o.css({
            left: e / 2 + 510,
            right: "auto"
        });
    }
    var e = '<div class="weixinQR" style="top:' + (e = e || 200) + 'px" id="js_weixinQR">', o = (e = (e = e + '<div class="titBar"><span class="tit">微信服务号</span><a href="#" class="btnClose" title="点击关闭"></a></div>' + '<div class="qr"></div>') + '<div class="txt">微信扫一扫</div>' + "</div>", 
    $("body").append(e), $("#js_weixinQR"));
    o.find(".btnClose").on("click", function() {
        return o.remove(), !1;
    });
    t(), $(window).on("resize", function(e) {
        t();
    });
}, common.fn.kf53 = function() {
    var e, t = 1, o = "job5156com", n = "2833,oa3973,3345,fs262", a = "53kf_" + 61424254 + "_keyword";
    return "" == (e = void 0 === e ? common.Cookie.get(a) : e) && (e = document.referrer, 
    common.Cookie.set(a, e)), '<a  data-act="load_53kf" href="javascript:void(0);" onclick="window.open(\'' + ("http://chat.53kf.com/webCompany.php?arg=" + o + "&style=" + t + "&keyword=" + escape(e) + "&kf=" + n) + "','_blank','height=473,width=703,top=200,left=200,status=yes,toolbar=no,menubar=no,resizable=yes,scrollbars=no,location=no,titlebar=no');\"></a>";
}, common.fn.toolBar = function() {
    function e() {
        0 < $(window).scrollTop() ? a.show() : a.hide();
    }
    "undefined" != typeof toolBarJson && toolBarJson && (t = toolBarJson.phone);
    var t, o = '<div class="helpOpTool" id="jToolBar">', n = (o = (o += '<a href="" class="goTop" title="回到顶部"><span>回到顶部</span></a>') + '<div class="consult" title="网上客服" style="text-indent:0;position:relative;"><a href="javascript:void(0);"><span>在线客服</span></a><div class="box_53kf"  style="display:none;position:absolute;width:50px;height:50px;right:0;top:25;"></div></div>' + '<a href="#" class="feedback" title="意见反馈"><span>意见反馈</span></a>', 
    void 0 !== t && t && (o += '<a href="#" class="toolBarPhone" title="联系方式"><span>联系方式</span><strong>' + toolBarPhone + "</strong></a>"), 
    o = o + '<a class="toorbar-tel"><span class="tel-left"></span></a>' + "</div>", 
    $("body").append(o), $("#jToolBar")), a = n.find(".goTop");
    common.isIE(6) && n.css({
        position: "absolute"
    });
    e(), $(window).scroll(function() {
        common.isIE(6) && n.css({
            top: $(window).height() - 255 + $(document).scrollTop()
        }), e();
    }), a.on("click", function() {
        return $("body,html").animate({
            scrollTop: 0
        }, 500), !1;
    }), n.find(".feedback").on("click", function() {
        return common.fn.feedbackPop(), !1;
    });
    var i, s, r = 500, c = n.find(".box_53kf");
    n.find(".consult").on({
        mouseenter: function() {
            clearTimeout(s), i = setTimeout(function() {
                "" == c.html() ? c.html('<iframe src="/help/feedback?mode=53kf" scrolling="no" frameborder="0" style="overflow: hidden;height:89px;width:100px;background:#eee;overflow:hidden;"></iframe>') : r = 100, 
                c.show("fast", function() {
                    $(this).animate({
                        top: -25,
                        width: "+100",
                        height: "+89"
                    }, "fast");
                });
            }, r);
        },
        mouseleave: function() {
            clearTimeout(i), s = setTimeout(function() {
                c.animate({
                    top: 25,
                    width: "-50",
                    height: "-50"
                }, "fast").hide();
            }, r);
        }
    });
}, common.fn.userLog = function(e, t) {
    var t = t || {}, o = decodeURIComponent(window.location.href);
    t.url = o, $.ajax({
        url: "/log/method/call.json?callMethod=" + e,
        data: t,
        type: "post",
        dataType: "json",
        success: function() {}
    });
}, common.fn.ajaxSessionTimeout = function(a) {
    $(document).ajaxError(function(e, t, o, n) {
        /<title>.*?登录.*?<\/title>/.test(t.responseText) && $.jBox.error('<p style="color:red;">登录超时</p>', "错误提示", {
            closed: function() {
                "function" == typeof a && a(o), window.location.reload();
            }
        });
    });
}, common.fn.getApplyStauts = function(e, t, o) {
    $.ajax({
        type: "get",
        url: t,
        data: e,
        timeout: 3e4
    }).done(function(e) {
        !0 === e.loginStatu && o && "function" == typeof o && o(e);
    });
}, common.fn.getContact = function(e, t, o) {
    $.ajax({
        type: "post",
        url: t,
        data: e,
        timeout: 3e4
    }).done(function(e) {
        !0 === e.loginStatu && o && "function" == typeof o && o(e);
    });
}, common.fn.toggleContact = function(e, t) {
    var o = phoneHtml = emailHtml = phoneStr = mobileStr = "", n = [], a = "", t = 1 != t;
    e && (o = common.isEmptyObj(e) ? "" : (1 == e.hidePhone ? phoneStr = "保密" : "" !== e.contactPhone && n.push(e.contactPhone), 
    1 == e.hideMobile ? mobileStr = "保密" : "" !== e.mobile && n.push(e.mobile), 
    1 == e.hideEmail ? a = "保密" : "" !== e.email && (a = e.email), n.length ? (phoneStr = n.join("，"), 
    phoneHtml = '<p class="phone"><span class="cGray">联系电话：</span> ' + (t ? "联系电话：" : "") + phoneStr + "</p>") : "保密" !== phoneStr && "保密" !== mobileStr || (phoneHtml = '<p class="phone"><span class="cGray">联系电话：</span> ' + (t ? "联系电话：" : "") + "保密</p>"), 
    "" !== a && (emailHtml = '<p class="email"><span class="cGray">Email：</span> ' + (t ? "Email：" : "") + a + "</p>"), 
    phoneHtml + emailHtml), $(".J_contact-box").each(function() {
        $(this).html(o);
    }));
}, common.fn.checkLogin = function(e, t) {
    if ("per" == e || "com" == e) return $.ajax({
        url: `/check/login/${e}.json?t=` + new Date().getTime(),
        type: "get",
        time: 6e4,
        success: function(e) {
            if ("function" != typeof t) return e.state;
            t(e);
        }
    });
    common.log("参数不对！");
}, common.fn.topLoginInfo = function(t, e, o) {
    $("#perIn").remove(), $("#perInfo").show(), e && $("#identification .loginName").html(e), 
    o && $("#topPerUserId").val(o), $(".hide-after-login").hide();
    var e = $(".J_contact-box").eq(0), o = e.data("id"), n = e.data("type"), e = (e.data("status"), 
    e.data("url") || "/comp/contact.json"), a = (o && common.fn.getContact({
        posType: n,
        id: o
    }, e, function(e) {
        common.fn.toggleContact(e.contact, n);
    }), $('[data-act="apply"],[data-act="reserve"]').eq(0)), o = a.data("id"), t = "apply" == a.data("act") ? 1 : 2, e = a.data("url") || "/pos/detail/applyJob/statues.json";
    data = {
        posId: o,
        posType: t
    }, a[0] && common.fn.getApplyStauts(data, e, function(e) {
        !0 === e.applyStatus ? ($(".has-apply").removeClass("dn"), (1 == t && 2 <= e.applyCount || 2 == t) && $(".wx-code").hide()) : $(".has-apply").addClass("dn");
    });
}, common.callback = {}, common.fn.perLogin = function(e, t, c, o) {
    var l = $.extend({}, {
        winWidth: 430,
        reSet: null,
        close: null,
        data: {}
    }, o || {}), c = c || "", o = "", n = (common.callback.perLogin = e, o += `
  <div class="login_dialog LoginDialog">
    <div class="login_dialog_left">
      <img width="100%" src="/static/suobo/style/images/login_left_bg.png" alt="背景" />
      <div class="left_part one">
        <div class="line_a">实时更新</div>
        <div class="line_b">快速推荐职位</div>
      </div>
      <div class="left_part two">
        <div class="line_a">名企直招</div>
        <div class="line_b">海量真实岗位</div>
      </div>
      <div class="left_part three">
        <div class="line_a">智能匹配</div>
        <div class="line_b">高效快捷找工作</div>
      </div>
    </div>
    <div class="login_dialog_right">
      <div class="change_type">
        <img class="type_img TypeImg TypePC" src="/static/suobo/style/images/change_code.png" alt="扫码" />
        <img class="type_img TypeImg TypeCode hide" src="/static/suobo/style/images/change_pc.png" alt="验证码" />
        <div class="type_tip">
            <i class="angle"></i>
            <span class="TypePC">微信扫码快捷登录</span>
            <span class="TypeCode hide">切换验证码登录</span>
        </div>
      </div>
      <div class="type_wrap TypePC">
        <div class="login_title">欢迎来到智通硕博网</div>
        <div class="login_tip">首次登录将自动注册</div>
        <ul class="tab_ul">
            <li class="tab_li TabLi on">验证码登录/注册</li>
            <li class="tab_li TabLi">账密登录</li>
        </ul>

        <form class="TypeForm" onsubmit="reture false">
          <div class="type_block">
            <input type="text" class="type_input Mobile" placeholder="手机号" />
          </div>

          <div class="type_block">
            <input type="text" class="type_input MobileMessageCode" placeholder="短信验证码" />
            <span class="captcha_btn CaptchatBtn">获取验证码</span>
          </div>

          <button type="button" class="type_btn MobileLoginSubmit">登录/注册</button>

          <div class="agreementBox AgreementBox">
            <input type="hidden" name="agreement" class="Agreement"/>
            <i class="simIcon SimIcon"></i>
            <p class="sim_p">我已阅读并同意
              <a href="/about/agreement" target="_blank" class="userLink">《用户协议》</a>
              和
              <a href="/about/privacy" target="_blank" class="userLink">《隐私协议》</a>
            </p>
          </div>
        </form>

        <form class="TypeForm hide" onsubmit="reture false">
          <div class="type_block">
            <input type="text" class="type_input" placeholder="登录名" id="username" name="username" />
          </div>

          <div class="type_block">
            <input type="password" class="type_input" placeholder="密码" id="password" name="password" />
          </div>

          <div class="type_block hide" id="captcha-box">
            <input type="text" class="type_input Captcha" placeholder="验证码" name="captcha" />
            <img class="captcha-img" src="/captcha/show/byUvCookie?t=${new Date().getTime()}" onclick="document.getElementById('captcha').value='';this.src='${host}/captcha/show/byUvCookie?t=${new Date().getTime()}" style="width: 110px;margin-left: 10px;position: relative;height: 50px;vertical-align: top;" />
          </div>

          <button type="button" class="type_btn" id="js_loginSubmit">登录/注册</button>

          <div class="agreementBox AgreementBox">
            <input type="hidden" name="agreement" class="Agreement"/>
            <i class="simIcon SimIcon"></i>
            <p class="sim_p">我已阅读并同意
              <a href="/about/agreement" target="_blank" class="userLink">《用户协议》</a>
              和
              <a href="/about/privacy" target="_blank" class="userLink">《隐私协议》</a>
            </p>
          </div>

          <div class="option_box">
            <a href="/forget/per/step1">忘记密码</a>
            <a href="/register/per/" class="main_color">立即注册 ></a>
          </div>
        </form>
      </div>
      <div class="type_wrap TypeCode hide">
        <ul class="tab_ul wechat">
          <li class="tab_li on">微信登录</li>
        </ul>

        <div class="code_box">
          <img class="login_code LoginCode" src="/static/suobo/style/images/code.png" alt="登录二维码">
          <img class="login_code login_fail LoginFail RegetCode" src="/static/suobo/style/images/code_fail.png" alt="登录二维码">

          <div class="login_scan LoginScan hide">
              <img class="login_scan_img" src="/static/suobo/style/images/code_scan.png" alt="登录二维码">
              <p class="login_scan_p">扫描成功</p>
          </div>
        </div>

        <div class="code_tip CodeTip">请使用微信 “ 扫一扫 ” <br>扫描上方二维码快速完成登录</div>
        <div class="code_tip p-b-0 LoginScan hide">请在微信小程序中确认登录</div>
        <div class="code_tip_reget LoginScan hide RegetCode">重新扫码</div>
      </div>
    </div>
  </div>`, t = t || o, $(document)), d = ($.jBox(t, {
        id: "jLoginBox",
        width: 740,
        title: "",
        opacity: .5,
        loaded: function() {
            layui.use([ "common" ], function(n) {
                var e = $("#jLoginBox .TabLi"), t = $("#jLoginBox .TypeImg"), o = $("#jLoginBox .SimIcon"), a = $("#jLoginBox .RegetCode");
                const i = $("#jLoginBox .TypePC"), s = $("#jLoginBox .TypeCode"), r = $("#jLoginBox .LoginFail"), c = $("#jLoginBox .LoginScan"), l = $("#jLoginBox .CodeTip"), d = $("#jLoginBox .LoginCode"), p = $("#jLoginBox .CaptchatBtn"), m = $("#jLoginBox .Mobile"), u = $("#jLoginBox .MobileMessageCode");
                var f = $("#jLoginBox .MobileLoginSubmit");
                let h = 0, g = 0, v = 0;
                const y = 2e3;
                function b() {
                    n.ajax({
                        url: "/new-api/session/per/applet/scan/qr_code",
                        data: {
                            page: "pages/login/pc/pcLogin",
                            width: 114,
                            version: [ "www.51shuobo.com" ].includes(location.host) ? "release" : "trial",
                            base64: !0,
                            lineColor: ""
                        },
                        success(e, t) {
                            var o;
                            d.attr("src", e.content), r.addClass("hide"), c.addClass("hide"), 
                            l.removeClass("hide"), g = 0, clearInterval(v), o = e.uuid, 
                            v = setInterval(function() {
                                h ? n.ajax({
                                    url: "/new-api/session/per/applet/scan",
                                    data: {
                                        uuid: o
                                    },
                                    success(e) {
                                        e && e.scaned ? (c.removeClass("hide"), 
                                        r.addClass("hide"), l.addClass("hide")) : e && e.token ? (clearInterval(v), 
                                        location.reload()) : g == 12e4 / y ? w() : (r.addClass("hide"), 
                                        c.addClass("hide"), l.removeClass("hide"));
                                    },
                                    error() {
                                        w();
                                    }
                                }) : w();
                            }, y);
                        }
                    });
                }
                function w() {
                    c.addClass("hide"), r.removeClass("hide"), l.removeClass("hide"), 
                    g = 0, clearInterval(v);
                }
                e.click(function() {
                    var e = $(this), t = e.parents(".LoginDialog"), o = e.index();
                    e.addClass("on").siblings(".TabLi").removeClass("on"), t.find(".TypeForm").eq(o).removeClass("hide").siblings(".TypeForm").addClass("hide");
                }), t.click(function() {
                    $(this).hasClass("TypePC") ? (i.addClass("hide"), s.removeClass("hide"), 
                    h = 1, b()) : (i.removeClass("hide"), s.addClass("hide"), h = 0);
                }), a.click(function() {
                    b();
                }), o.on("click", function() {
                    var e = $(this), t = $(this).parents(".AgreementBox"), o = t.find(".Agreement");
                    t.is(".on") ? (t.removeClass("on"), o.val("")) : (t.addClass("on"), 
                    o.val("1")), e.removeClass("error");
                });
                let x = !1;
                p.click(function() {
                    var e, o = $(this);
                    return 0 != o.attr("act") && ((e = $(".Mobile").val()) ? /^1\d{10}$/.test(e) ? void $.ajax({
                        url: "/api/per/dynamic/sendCode?t=" + new Date().getTime(),
                        headers: {
                            "Content-Type": "application/x-www-form-urlencoded"
                        },
                        data: {
                            mobile: e,
                            verifyType: "login",
                            isCheckAccount: !1,
                            autoRegister: !0
                        },
                        success: function(e) {
                            var t;
                            200 == e.code ? (x = e.data.isRegister, layer.msg("验证码已发送，注意查收！", {
                                icon: 6
                            }), o.attr("act", 0), o.html("验证码已发出(<span id='js_times'>60</span>)"), 
                            t = $("#js_times"), common.fn.loadSecond(t, 60, function() {
                                p.text("重新获取").attr("act", 1);
                            })) : (402 == e.code && "动态码已发送" == e.cede ? layer.alert(e.msg, {
                                icon: 6,
                                title: "提示"
                            }) : layer.alert(e.msg, {
                                icon: 5,
                                title: "提示"
                            }), o.data("act", !1));
                        },
                        error: function() {
                            return layer.alert("手机验证码获取失败，请稍后重试!", {
                                icon: 2,
                                title: "提示"
                            }), !1;
                        }
                    }) : (layer.alert("请输入正确的手机号码!", {
                        icon: 5,
                        title: "提示"
                    }), !1) : (layer.alert("手机号码不能为空!", {
                        icon: 5,
                        title: "提示"
                    }), !1));
                }), f.click(function() {
                    var e = $(this).parents(".TypeForm"), t = m.val(), o = u.val();
                    return t ? /^1\d{10}$/.test(t) ? o ? e.find(".AgreementBox").hasClass("on") ? void n.ajax({
                        type: "post",
                        url: "/api/per/session/dynamic/mobile/login?t=" + new Date().getTime(),
                        headers: {
                            posTypeNewFlag: !0,
                            AppType: "pc",
                            openid: n.createopenid()
                        },
                        contentType: "application/json; charset=UTF-8",
                        data: JSON.stringify({
                            mobile: t,
                            dynamicCode: o,
                            autoRegister: !0
                        }),
                        success: function(e) {
                            location.href = x ? "/per/perfect/view/step1" : "/";
                        },
                        fail(e) {
                            layer.alert(e.msg || "登录失败，请稍后重试!", {
                                icon: 2,
                                title: "提示"
                            });
                        }
                    }) : (e.find(".SimIcon").addClass("error"), layer.alert("请阅读用户协议和隐私协议!", {
                        icon: 5,
                        title: "提示"
                    }), !1) : (layer.alert("请输入正确的验证码!", {
                        icon: 5,
                        title: "提示"
                    }), !1) : (layer.alert("请输入正确的手机号码!", {
                        icon: 5,
                        title: "提示"
                    }), !1) : (layer.alert("手机号码不能为空!", {
                        icon: 5,
                        title: "提示"
                    }), !1);
                });
            });
        },
        closed: function() {
            "function" == typeof l.close && l.close(), n.off("keyup.login");
        }
    }), n.on("keyup.login", function(e) {
        13 === e.keyCode && $("#js_loginSubmit").trigger("click");
    }), $("#jLoginBox")), p = d.find(".errorTips"), e = (d.find(".jbox-button-panel").remove(), 
    "function" == typeof l.reSet && l.reSet(d), $("#jLoginBox .bigInput"));
    function a(e) {
        var e = $(e), t = e.val(), e = e.parent().find(".icon-iclose");
        "" === t ? e.hide() : e.show();
    }
    e.focus(function(e) {
        a(this), p.hide();
    }), e.keyup(function(e) {
        a(this);
    }), e.blur(function(e) {
        var t = $(this);
        setTimeout(function() {
            t.parent().find(".icon-iclose").hide();
        }, 300);
    }), "function" == typeof placeHolderInit && placeHolderInit(), $("#jLoginBox .icon-iclose").click(function(e) {
        var t = $(this);
        $(this).parent().find(".bigInput").val(""), t.hide(), "function" == typeof l.close && l.close();
    }), $("#keepLogin").change(function() {
        var e = $(this), t = e.parent();
        e.is(":checked") ? t.addClass("checked") : t.removeClass("checked");
    });
    const i = $("#jLoginBox #js_loginSubmit");
    i.on("click", function(e) {
        var o = $(this), t = o.parents(".TypeForm"), n = $.trim(t.find('[name="username"]').val()), a = $.trim(t.find('[name="password"]').val()), i = o.data("ajaxstatus") || !1, s = t.find(".Captcha"), r = s.val();
        return s.prop("required") && "" == r ? (p.html("请输入验证码").show(), !1) : "" == n ? (layer.alert("请输入您的登录名!", {
            icon: 5,
            title: "提示"
        }), !1) : "" == a ? (layer.alert("请输入您的密码!", {
            icon: 5,
            title: "提示"
        }), !1) : t.find(".AgreementBox").hasClass("on") ? i ? void 0 : (o.data("ajaxstatus", !0), 
        o.addClass("disabled").find("span").text("登录中..."), common.cryptogram.encryption(a, function(e) {
            $.ajax({
                url: "/login/per/post.json?t=" + new Date().getTime(),
                type: "post",
                data: {
                    username: n,
                    password: e,
                    keepLogin: !1,
                    captcha: r
                },
                dataType: "json",
                timeout: 3e4,
                error: function(e) {
                    layer.alert("登录超时，请重新登录!", {
                        icon: 2,
                        title: "提示"
                    }), o.removeClass("disabled").find("span").text("重新登录"), o.data("ajaxstatus", !1);
                },
                success: function(e) {
                    var t = common.callback.perLogin;
                    e.showCaptcha && (s.prop("required", !0), s.find("#captcha-box").show().find(".captcha-img").click()), 
                    e.state ? (common.fn.topLoginInfo("per", e.name || e.userLoginFormVo.username, e.perId), 
                    "function" == typeof t && (t(e), common.callback.perLogin = null), 
                    $.jBox.close("jLoginBox"), t = $.extend({}, {
                        userName: n
                    }, l.data || {}), logPerBehavWeb("login", "/login/per/post.json?t=" + new Date().getTime(), t), 
                    location.reload()) : (layer.alert(e.errmsg || "用户名或密码错误，请注意区分密码的大小写", {
                        icon: 2,
                        title: "提示"
                    }), o.removeClass("disabled"), t = parseInt(d.find(".jbox-close").attr("data-eNum") || 0), 
                    d.find(".jbox-close").attr("data-eNum", t + 1), "apply" == c && (e = new Date().getTime(), 
                    common.fn.userLog("apply_login_failure", {
                        groupId: e,
                        log: "应聘登录失败：" + (t + 1)
                    }))), o.data("ajaxstatus", !1);
                }
            });
        }), !1) : (t.find(".SimIcon").addClass("error"), layer.alert("请阅读用户协议和隐私协议!", {
            icon: 5,
            title: "提示"
        }), !1);
    }), d.find('[name="password"]').keydown(function(e) {
        13 == ((e = e || window.event).keyCode || e.which) && i.click();
    }), d.find('[data-id="btnForget"]').on("click", function() {
        var e = d.find('[name="username"]').val();
        e && (e = $(this).attr("href") + "?username=" + e, $(this).attr("href", e));
    });
}, common.fn.comLogin = function(n, e, a) {
    var t = "", i = (t = (t = (t = (t = (t += '<div class="hidden errorTips" style="width:auto;"></div>') + '<div class="loginBox">' + '<p class="clearfix"><span class="label fl">用户名</span><span class="fl"><input class="bigInput" style="ime-mode:disabled;" type="text" id="username" name="username" placeholder="请输入用户名" /></span></p>') + '<p class="clearfix"><span class="label fl">密　码</span><span class="fl"><input class="bigInput" style="ime-mode:disabled;" type="password" id="password" name="password" placeholder="请输入密码，区分大小写" /></span></p>' + '<p><span class="label">验证码</span><label><input class="bigInput" type="input" id="captcha" name="captcha" style="width:100px;ime-mode:disabled;" placeholder="请输入验证码" /><img src="/vcode/show" id="captcha_image" style="padding:0 10px;" title="请输入此验证码&nbsp;" align="top"/><a id="js_reloadcode" href="#">看不清</a> </label></p>') + '<div class="op clearfix"><a href="#" class="btnBlue btnlogin" id="js_loginSubmit"><span>登  录</span></a>' + ('<div class="fl" style="margin:2px 0 0 10px;"><a data-id="btnForget" data-rel="' + (a = a || "") + '" href="/forget/com/step1">忘记密码</a><br /><a href="/about/detect">登录不了怎么办？</a></div>')) + '</div><div class="bottom"><span class="tel">服务热线：025-68275588</span>您还不是会员？ <a href="/register/com" target="_blank">马上注册</a></div>' + "</div>", 
    e = e || t, $.jBox(e, {
        id: "jLoginBox",
        width: 430,
        title: "企业登录"
    }), $("#jLoginBox"));
    i.find(".jbox-button-panel").remove(), i.find("input").placeholder({
        labelMode: !0,
        labelAlpha: !0,
        labelAcross: !0,
        labelStyle: {
            "font-family": "宋体",
            padding: 5,
            "font-size": 14
        }
    }), $("#js_loginSubmit").on("click", function() {
        var e = i.find('[name="username"]').val(), t = i.find('[name="password"]').val(), o = i.find('[name="captcha"]').val();
        return "" == e ? ($.jBox.tip("请输入您的用户名。", "error", {
            focusId: "username"
        }), !1) : "" == t ? ($.jBox.tip("请输入您的密码。", "error", {
            focusId: "password"
        }), !1) : "" == o ? ($.jBox.tip("请输入您的验证码。", "error", {
            focusId: "captcha"
        }), !1) : ($.ajax({
            url: host + "/login/com/post.json?t=" + new Date().getTime(),
            type: "post",
            data: {
                username: e,
                password: t,
                captcha: o
            },
            dataType: "json",
            beforeSend: function() {
                $("#js_loginSubmit").find("span").text("登录中...");
            },
            success: function(e) {
                e.state ? (common.fn.topLoginInfo("com", e.name), "function" == typeof n && n(e), 
                $.jBox.close("jLoginBox")) : ("登录出错" == (e = e.errmsg) && (e = '用户名或密码错误，请注意区分密码的大小写。<a data-id="btnForget" data-rel="' + a + '" href="/forget/com/step1" target="_blank">忘记密码</a>!'), 
                $("#js_loginSubmit").find("span").text("重新登录"), $("#jLoginBox").find(".errorTips").html(e).show());
            }
        }), !0);
    }), i.find('[name="captcha"]').keydown(function(e) {
        13 == ((e = e || window.event).keyCode || e.which) && $("#js_loginSubmit").click();
    }), $("#js_reloadcode").on("click", function() {
        var e = $("#captcha_image").attr("src").split("?")[0];
        return common.fn.reloadcode($("#captcha_image"), e), !1;
    });
}, common.fn.doToLogin = function(e, t) {
    function o() {
        $.ajax({
            url: n.url,
            data: n.data,
            type: n.type,
            dataType: "json",
            success: function(e) {
                e.state ? (e.errmsg && $.jBox.error('<p style="color:red;">' + e.errmsg + "</p>", "信息提示"), 
                "function" == typeof n.success && n.success(e)) : (common.fn[n.loginType + "Login"](function(e) {
                    "function" == typeof n.logined && n.logined(e), o();
                }, n.loginHTML, t), "function" == typeof n.unLogin && n.unLogin());
            }
        });
    }
    var n = $.extend({}, {
        url: null,
        data: null,
        type: "post",
        loginHTML: null,
        loginType: "per",
        unLogin: null,
        logined: null,
        success: null
    }, e);
    o();
}, common.namespace("common.per"), common.per.apply = function(l, c) {
    var d = new Date().getTime(), p = (common.fn.userLog("apply_click", {
        groupId: d,
        times: 0,
        posId: l,
        log: "点击应聘"
    }), !1), m = function(n, a, i, e, o, s) {
        var r = "/apply/job/" + a + "/by/" + i + ".json?t=" + new Date().getTime();
        $.ajax({
            url: r,
            type: "post",
            async: !1,
            data: {
                confirm: e
            },
            beforeSend: function() {
                0 == n && (common.fn.loading(o.find(".jbox-state")), s.attr("data-active", !1));
            },
            success: function(e) {
                if (0 == n && o.find(".loading").remove(), e.state) {
                    if (e.secondApply) return t = new Date().getTime(), common.fn.userLog("apply_tip_twice", {
                        groupId: d,
                        times: t - d,
                        posId: l,
                        log: "应聘状况：遇到30天内第2次应聘提醒"
                    }), $.jBox.confirm("您30天内第2次应聘该职位了<br />是否确认再次应聘？", "职位应聘", function(e, t, o) {
                        return !0 === e && (p = !0, e = new Date().getTime(), common.fn.userLog("apply_to_twice", {
                            groupId: d,
                            times: e - d,
                            posId: l,
                            log: "应聘状况：30天内第2次应聘，确定再次应聘"
                        }), 0 == n ? (s.attr("data-active", !0), p = !0, s.click()) : m(1, a, i, p)), 
                        !0;
                    }, {
                        buttons: {
                            "确定": !0,
                            "取消": !1
                        },
                        closed: function() {
                            0 == n && s.attr("data-active", !0);
                        }
                    }), !1;
                    var t = new Date().getTime();
                    e.errmsg ? (e.errType && common.fn.userLog(e.errType, {
                        groupId: d,
                        times: t - d,
                        posId: l,
                        log: "应聘状况：" + e.errmsg
                    }), $.jBox.error('<p style="color:red;">' + e.errmsg + "</p>", "职位应聘", {
                        closed: function() {
                            0 == n && s.attr("data-active", !0);
                        }
                    })) : (logPerBehavWeb("applyPos", r, {
                        posId: a,
                        resumeId: i
                    }), $.jBox.close("jSelectResumeBox"), $.jBox.tip(e.msg, "success", {
                        top: "50%"
                    }), common.fn.userLog("apply_success", {
                        groupId: d,
                        times: t - d,
                        posId: l,
                        log: "应聘状况：" + e.msg
                    }));
                } else {
                    $.jBox.error('<p style="color:red;">用户未登录或登录超时</p>', "职位应聘", {
                        closed: function() {
                            0 == n && s.attr("data-active", !0);
                        }
                    });
                    t = new Date().getTime();
                    common.fn.userLog("apply_failure_unlogin", {
                        groupId: d,
                        times: t - d,
                        posId: l,
                        log: "应聘状况：用户未登录或登录超时"
                    });
                }
                "function" == typeof c && c(e);
            }
        });
    };
    common.fn.doToLogin({
        url: "/apply/job/" + l + "/select/resume.json?t=" + new Date().getTime(),
        unLogin: function() {
            var e = $("#jLoginBox"), n = e.find(".jbox-close");
            e.on("click", function(e) {
                var t, o;
                "btnForget" == $(event.target).attr("data-id") && (t = n.attr("data-eNum"), 
                o = new Date().getTime(), 0 < t ? common.fn.userLog("apply_login_failure_forget", {
                    groupId: d,
                    times: o - d,
                    posId: l,
                    log: "点击忘记密码:登录失败后，登录次数：" + t
                }) : common.fn.userLog("apply_login_forget", {
                    groupId: d,
                    times: o - d,
                    posId: l,
                    log: "点击忘记密码:未登录"
                }));
            }), n.on("click", function() {
                var e = $(this).attr("data-eNum"), t = new Date().getTime();
                0 < e ? common.fn.userLog("apply_login_failure_close", {
                    groupId: d,
                    times: t - d,
                    posId: l,
                    log: "登录失败后关闭登录窗口，登录次数：" + e
                }) : common.fn.userLog("apply_login_close", {
                    groupId: d,
                    times: t - d,
                    posId: l,
                    log: "未登录就关闭登录窗口"
                });
            });
        },
        success: function(e) {
            if (e.resumeList && 0 < e.resumeList.length) {
                var t = new Date().getTime(), n = (common.fn.userLog("apply_login_success", {
                    groupId: d,
                    times: t - d,
                    posId: l,
                    log: "登录进入简历选择,简历数" + e.resumeList.length
                }), l), o = e.resumeList;
                if (1 == o.length) {
                    t = o[0].id;
                    m(1, n, t, p);
                } else {
                    for (var a = "", i = (a = (a += '<div class="content">') + "<p><strong>选择投递的简历：</strong></p>" + '<select name="resumeId" id="resumeId" style="width:99%;">', 
                    o.length), s = 0; s < i; s++) {
                        var r = o[s].isDefault ? "  [ * 默认简历 ]" : "";
                        a += '<option value="' + o[s].id + '" data-rel="' + o[s].perfectNum + '"', 
                        o[s].isDefault && (a += " selected"), a += ">" + o[s].resumeName + r + "</options>";
                    }
                    a = (a += "</select>") + '<p style="padding-top:10px;"><strong>简历完整度：</strong><span id="js_perfectNum"></span></p>' + "</div>", 
                    $.jBox(a, {
                        id: "jSelectResumeBox",
                        title: "我要应聘",
                        width: 300
                    });
                    var c = $("#jSelectResumeBox");
                    c.find('[name="resumeId"]').on("change", function() {
                        var e = common.getSelectedAttr($(this), "data-rel");
                        $("#js_perfectNum").text(e + "%");
                    }), c.find('[name="resumeId"]').change(), c.find("button").after('<a href="#" class="btnBlue" style="width:80px; float:right;" data-act="submit" data-active="true"><span>确 定</span></a>').remove(), 
                    c.find('[data-act="submit"]').on("click", function() {
                        var e, t = $(this), o = common.getSelectedAttr(c.find('[name="resumeId"]'), "value");
                        return "true" == $(this).attr("data-active") && (e = new Date().getTime(), 
                        common.fn.userLog("apply_select_resume", {
                            groupId: d,
                            times: e - d,
                            posId: l,
                            log: "选择简历 （" + o + "）应聘"
                        }), m(0, n, o, p, c, t)), !1;
                    }), c.find('[data-act="cancel"]').on("click", function() {
                        return $.jBox.close("jSelectResumeBox"), !1;
                    });
                }
            }
        }
    }, "apply");
}, common.namespace("common.act"), common.act.didi = function(e) {
    (e = e || $("body")).append('<div class="dedebg"><div class="dede"><a class="close"></a></div></div>');
    var t = $(window).height(), o = $("body").height(), t = t / 2 - 200;
    e.find(".dedebg").css("height", o + "px"), e.find(".dede").css("top", t + "px").find(".close").on("click", function() {
        e.find(".dedebg").remove();
    });
}, common.per.reserve = function(t, o, n) {
    function a(e) {
        common.fn.doToLogin({
            url: "/reserve/pos/" + e + ".json",
            success: function(e) {
                e.state && !e.errmsg && ($.jBox.tip(e.msg, "success", {
                    top: "50%"
                }), "function" == typeof o) && o(e), n && n.data("flag", !1);
            }
        });
    }
    common.fn.checkLogin("per", function(e) {
        e.state ? a(t) : common.fn.perLogin(function(e) {
            a(t);
        }, "", "", {
            close: function() {
                n && n.data("flag", !1);
            }
        });
    });
}, common.per.applyAll = function(p) {
    function l(e, t) {
        var d = "";
        $.ajax({
            url: "/apply/job/batch/" + t + ".json?t=" + new Date().getTime(),
            type: "post",
            async: !1,
            data: {
                posIdList: e
            },
            success: function(e) {
                if (e.state) {
                    $.jBox.close("jSelectResumeBox");
                    for (var t = e.resultVoList, o = "", n = 0, a = 0, i = t.length, s = 0; s < i; s++) {
                        var r = t[s], c = (r.result ? (d = "errorToOk", n++) : (d = "error", 
                        a++), new Date().getTime()), l = r.posName || "职位不存在";
                        common.fn.userLog(r.errType, {
                            groupId: m,
                            times: c - m,
                            posId: r.posId,
                            log: "应聘状况：" + r.resultMsg
                        }), o += '<div class="item"><div class="item_f"><p class="cBlue">' + l + "</p><p>" + r.comName + '</p></div><div class="item_r ' + d + '"><p>' + r.resultMsg + "</p></div></div>";
                    }
                    c = new Date().getTime();
                    common.fn.userLog("applyAll_success", {
                        groupId: m,
                        times: c - m,
                        posId: p,
                        log: "应聘状况：共应聘" + t.length + "个职位。其中" + n + "个职位发送应聘意向成功，" + a + "个职位发送应聘意向失败"
                    }), e = '<div class="applyBox"><div class="apply_t">您共应聘<span class="cRed">' + t.length + '</span>个职位。其中<span class="cRed">' + n + '</span>个职位发送应聘意向成功，<span class="cRed">' + a + '</span>个职位发送应聘意向失败，应聘报告如下：</div><div class="apply_c">' + o + '</div><div class="apply_b"><strong class="cGreen">[温馨提示]</strong>国家明文规定，禁止用人单位招用人员时有以下列行为：<br/>1.提供虚假招聘信息；2.向求职者收取招聘费用；3.向录用人员收取保证金或抵押金；4.扣押被录用人员的身份证等证件；5.以招用人员为名牟取不正当利益或进行其他违法活动。<br/>——详情见《劳动法市场管理规定》第十条</div></div>', 
                    $.jBox(e, {
                        id: "apply",
                        title: "投递简历",
                        width: 600,
                        height: 410
                    });
                } else {
                    $.jBox.error('<p style="color:red;">用户未登录或登录超时</p>', "职位应聘", {
                        closed: function() {
                            0 == type && $btn.attr("data-active", !0);
                        }
                    });
                    c = new Date().getTime();
                    common.fn.userLog("apply_failure_unlogin", {
                        groupId: m,
                        times: c - m,
                        posId: p,
                        log: "应聘状况：用户未登录或登录超时"
                    });
                }
            }
        });
    }
    var m = new Date().getTime();
    common.fn.userLog("applyAll_click", {
        groupId: m,
        times: 0,
        posId: p,
        log: "点击批量应聘"
    });
    common.fn.doToLogin({
        url: "/apply/job/0/select/resume.json?t=" + new Date().getTime(),
        unLogin: function() {
            var e = $("#jLoginBox"), n = e.find(".jbox-close");
            e.on("click", function(e) {
                var t, o;
                "btnForget" == $(event.target).attr("data-id") && (t = n.attr("data-eNum"), 
                o = new Date().getTime(), 0 < t ? common.fn.userLog("apply_login_failure_forget", {
                    groupId: m,
                    times: o - m,
                    posId: p,
                    log: "点击忘记密码:登录失败后，登录次数：" + t
                }) : common.fn.userLog("apply_login_forget", {
                    groupId: m,
                    times: o - m,
                    posId: p,
                    log: "点击忘记密码:未登录"
                }));
            }), n.on("click", function() {
                var e = $(this).attr("data-eNum"), t = new Date().getTime();
                0 < e ? common.fn.userLog("apply_login_failure_close", {
                    groupId: m,
                    times: t - m,
                    posId: p,
                    log: "登录失败后关闭登录窗口，登录次数：" + e
                }) : common.fn.userLog("apply_login_close", {
                    groupId: m,
                    times: t - m,
                    posId: p,
                    log: "未登录就关闭登录窗口"
                });
            });
        },
        success: function(e) {
            if (e.resumeList && 0 < e.resumeList.length) {
                var t = new Date().getTime(), o = (common.fn.userLog("apply_login_success", {
                    groupId: m,
                    times: t - m,
                    posId: p,
                    log: "登录进入简历选择,简历数" + e.resumeList.length
                }), p), n = e.resumeList;
                if (1 == n.length) {
                    t = n[0].id;
                    l(o, t);
                } else {
                    for (var a = "", i = (a = (a += '<div class="content">') + "<p><strong>选择投递的简历：</strong></p>" + '<select name="resumeId" id="resumeId" style="width:99%;">', 
                    n.length), s = 0; s < i; s++) {
                        var r = n[s].isDefault ? "  [ * 默认简历 ]" : "";
                        a += '<option value="' + n[s].id + '" data-rel="' + n[s].perfectNum + '"', 
                        n[s].isDefault && (a += " selected"), a += ">" + n[s].resumeName + r + "</options>";
                    }
                    a = (a += "</select>") + '<p style="padding-top:10px;"><strong>简历完整度：</strong><span id="js_perfectNum"></span></p>' + "</div>", 
                    $.jBox(a, {
                        id: "jSelectResumeBox",
                        title: "我要应聘",
                        width: 300
                    });
                    var c = $("#jSelectResumeBox");
                    c.find('[name="resumeId"]').on("change", function() {
                        var e = common.getSelectedAttr($(this), "data-rel");
                        $("#js_perfectNum").text(e + "%");
                    }), c.find('[name="resumeId"]').change(), c.find("button").after('<a href="#" class="btnBlue" style="width:80px; float:right;" data-act="submit" data-active="true"><span>确 定</span></a>').remove(), 
                    c.find('[data-act="submit"]').on("click", function() {
                        $(this);
                        var e, t = common.getSelectedAttr(c.find('[name="resumeId"]'), "value");
                        return "true" == $(this).attr("data-active") && (e = new Date().getTime(), 
                        common.fn.userLog("apply_select_resume", {
                            groupId: m,
                            times: e - m,
                            posId: p,
                            log: "选择简历 （" + t + "）应聘"
                        }), l(o, t)), !1;
                    }), c.find('[data-act="cancel"]').on("click", function() {
                        return $.jBox.close("jSelectResumeBox"), !1;
                    });
                }
            }
        }
    }, "apply");
}, common.per.favorite = function(e, t) {
    common.fn.doToLogin({
        url: "/favorite/job/add.json?t=" + new Date().getTime(),
        data: {
            Ids: e
        },
        success: function(e) {
            "function" == typeof t && t(e), $.jBox.tip(e.message, "info");
        }
    });
}, common.per.addAttention = function(o, e, t) {
    $.ajax({
        url: "/follow/com/save.json?t=" + new Date().getTime(),
        type: "post",
        data: {
            comId: o,
            comName: e
        },
        typeData: "json",
        success: function(e) {
            e.followFlag ? ($.jBox.info("您已经关注过", "信息提示"), t(e.id)) : e.status ? ($.jBox.tip("关注成功", "success"), 
            layui.use([ "common", "api" ], function(e, t) {
                t.addBehavior({
                    cmd: "com:follow",
                    cmdCn: "关注企业",
                    comId: o
                });
            }), "function" == typeof t && t(e.id)) : $.jBox.error("关注失败", "操作提示");
        }
    });
}, common.per.disAttention = function(n, a, i) {
    $.jBox.confirm("确定取消对该企业的关注吗？", "操作提示", function(e, t, o) {
        return !0 === e && $.ajax({
            url: "/follow/com/cancel.json?t=" + new Date().getTime(),
            type: "post",
            data: {
                id: n
            },
            typeData: "json",
            success: function(e) {
                e.status ? ($.jBox.tip("成功取消关注", "success"), layui.use([ "common", "api" ], function(e, t) {
                    t.addBehavior({
                        cmd: "com:follow:cancel",
                        cmdCn: "取消关注企业",
                        comId: i || 0
                    });
                }), "function" == typeof a && a()) : $.jBox.error("操作失败", "取消关注");
            }
        }), !0;
    }, {
        id: "jBoxDel",
        width: 320,
        buttons: {
            "确定": !0,
            "取消": !1
        }
    });
}, common.searchURL = function(e) {
    var t = [];
    if ("string" == typeof e && "" != e) {
        for (var o = [], n = e.split("&"), a = 0; a < n.length; a++) {
            var i = n[a].split("="), s = {
                name: i[0],
                value: i[1]
            };
            o.push(s);
        }
        e = o;
    }
    for (var r = {
        keywordType: "kt",
        keyword: "kw",
        locationList: "wl",
        posTypeList: "pt",
        industryList: "in",
        salary: "sa",
        degreeFrom: "df",
        degreeTo: "dt",
        workyearFrom: "yf",
        workyearTo: "yt",
        age: "ag",
        gender: "ge",
        propertyList: "pr",
        updateIn: "ud",
        degreeUnlimit: "dul",
        workyearUnlimit: "wyul",
        salaryUnPublic: "sup",
        speciality: "sp"
    }, a = 0; a < e.length; a++) {
        var c = r[(s = e[a]).name], l = (d = s.value).split(","), d = d.replace(/#/g, "").replace(/%/g, "").replace(/_/g, "");
        c && "" !== d && null !== d && ("kw" == c || "sp" == c ? d = "-" + d : 1 == l.length ? d = l[0] : 1 < l.length && (d = l.join("-")), 
        t.push(c + d));
    }
    return t.join("_") + "/";
}, common.namespace("common.cryptogram"), common.cryptogram = {
    encryption: function(t, o) {
        common.cryptogram.getKeys(function(e) {
            $.jCryption.encrypt(t, e, o);
        });
    },
    encryptions: function(o, n) {
        var a, i, s, r, c;
        $.isArray(o) ? (a = 0, i = o.length, r = !(s = []), c = function(e, t) {
            r || (r = !0, $.jCryption.encrypt(e, t, function(e) {
                s.push(e), s.length < i ? (r = !1, c(o[++a], t)) : $.isFunction(n) && n(s);
            }));
        }, common.cryptogram.getKeys(function(e) {
            c(o[0], e);
        })) : common.cryptogram.encryption(o, n);
    },
    keys: null,
    getKeys: function(t) {
        common.cryptogram.keys ? "function" == typeof t && t(common.cryptogram.keys) : $.jCryption.getKeys("/security/getKeypair.json", function(e) {
            common.cryptogram.keys = e, "function" == typeof t && t(e);
        });
    }
}, common.namespace("Constant"), Constant.uploadFileEorr = {
    nofile: "请先选择需要上传的文件",
    oversize: "上传文件的大小不能大于1MB",
    typeerror: "上传文件的类型获取不正确，请刷新页面后重试",
    illegal: "系统检测这是非法调用，请重新登录后再试"
}, Constant.BlankPhoto = "/static/img/photoBlank.gif", Constant.FileRoot = "/content", 
Constant.FileRootPath = "/content", Constant.PhotoDir = "per_photo", Constant.CertDir = "per_certification", 
Constant.AttachmentDir = "per_attachment", Constant.ComLogoPhotoDir = "com_logo", 
Constant.BlankLogo = "/static/img/comLogoBlank.gif", Constant.BlankLogo2 = "/static/img/comLogoBlank2.gif", 
Constant.ComLicense = "com_license", Constant.ComExtra = "com_extra", Constant.PhotoAct = "act_tmp", 
common.namespace("Constant.helpTipText"), Constant.helpTipText.schedule = {
    title: "什么是简历完整度？",
    content: "<p>依据简历完整度评分细则显示</p>"
}, common.namespace("Constant.ExampleText"), Constant.ExampleText.jobDesc1 = '<p><strong>主要职责： </strong>（<span class="cRed">阐明负责的具体事务</span>）</p><p>1、负责公司网站的品牌推广、改版更新以及后台管理工作。</p><p> 2、负责公司在阿里巴巴中文站、国际商贸平台的旺铺以及公司四个企业网站的运营和推广。  </p><p>3、负责公司电子商务的实施和规划，包括网站形象设计，版块内容建设，网络广告投放、监控及优化等。</p><p> 4、通过网络营销手段（SEO优化、百度、软文、渠道合作等）提高公司网站访问量，推广公司产品和服务。</p><p> 5、负责根据商品特色和促销活动，进行有针对性的营销推广，跟踪网络营销、网站推广优化的效果并适当调整营销和推广优化策略。</p><p> 6、负责统计、分析网络推广数据及效果，并不断做出优化方案，提升有效UV/PV。  </p><p>7、承担公司***网页的整体改版，从结构设计到上线运营的系列工作。</p><p><strong>主要业绩：</strong>（<span class="cRed">多用详细数据说明业绩，或获过的奖励</span>） </p><p>1、成功主导公司网站改版更新工作，改版后网站好评率上升至**%。</p><p>2、制定并实施的**营销推广计划为公司网站平台增加**的营业额。</p><p>3、通过网络营销手段（SEO优化、百度排名等）使公司网站访问量由提升至**%。（<span class="cRed">通过数据说明自身业绩</span>）</p><p> 4、成功推行邮件营销：以使用效果跟踪调查、产品优惠信息、新品发布等形式给客户发布邮件，加深其对公司的印象，对问卷类反馈的问题进行分析，对提升产品和服务质量做参考，所获数据为公司战略规划提供有效支持，并成为公司定期推行营销手段之一。（<span class="cRed">突出个人贡献</span>）</p><p> 5、通过对统计后台的数据分析，增加长尾关键词数量，使百度搜索引擎关键词自然排名、公司产品信息在B2B、B2C平台的排名分别提升至**位及**位。</p>', 
Constant.ExampleText.jobDesc2 = '<p><strong>社会经验：</strong>（<span class="cRed">阐明负责的具体事务，并强调个人实践成绩。</span>） </p><p>1、在做物理化学实验助教期间，独立进行备课、书写教案、实验操作讲解与演示及批改作业等教学活动，因工作认真负责，多次获得学校领导、学生表扬。</p><p>2、在厦门大学学生公寓工作期间，协助辅导员处理学生管理相关工作。</p><p><strong>校内职务：</strong>（<span class="cRed">阐明负责的具体事务，并强调个人实践成绩。</span>） </p><p>1、担任班级学习委员期间，负责任课老师和同学之间的相关工作协调，并成功策划举办班级元旦晚会活动。</p><p>2、 担任外联部部长期间，负责学生活动与外界的联系，例如为系庆举办的活动拉赞助商，并被选为系庆礼仪小姐。</p>', 
Constant.ExampleText.jobDescEn1 = '<p><strong>Main responsibilities:</strong>(<span class="cRed">to clarify specific transaction charge</span>)</p><p>1, responsible for the company\'s Web site brand promotion, website updated and background management.</p><p> 2, responsible for the operation and marketing company in Chinese international trade platform Alibaba stand, the flourishing shop and company four enterprise website.</p><p>3, responsible for the implementation and planning company of electronic commerce, including website design, content construction, network advertising, monitoring and optimization.</p><p> 4, through the network marketing means (SEO optimization, Baidu, soft, channel cooperation) to improve the company site visits, promote company products and services.</p><p> 5, responsible for product according to the characteristics and promotion, targeted marketing, network marketing, website promotion optimization effect and adjust the marketing and promotion strategy.</p><p> 6, responsible for statistics, analysis of data and network promotion effect, and continue to make optimization scheme, improving the effective UV/PV.</p><p> The overall revision 7, assume the company * * * webpage, from the structural design of the series of on-line operation of.</p><p><strong>Main results: </strong>(<span class="cRed">with more detailed data illustrate the performance, and won the award</span>)</p><p>Revision 1, successful lead firms website update, after the revision rate rose to **% website.</p><p>2, the formulation and implementation of marketing plans to increase the * * * * turnover for the company website platform.</p><p>3, through the network marketing means (SEO optimization, baidu ranking) the company site visits by up to **%. (<span class="cRed">description of its performance through the data.</span>)</p><p> 4, the successful implementation of email marketing: direct mail to the customer to use the effect of tracking survey, product information, new product launches and other forms, to deepen the impression of the company, the analysis of the questionnaire feedback problems, to enhance the quality of products and services as the reference, the data required to provide effective support to strategic planning, and become the company regularly carry out one of the marketing tools. (<span class="cRed">outstanding individual contribution</span>)</p><p> 5, through the statistical analysis of the background data, increase the number of the long tail keywords, Baidu search engine keyword ranking, natural product information in the B2B platform, B2C rankings were upgraded to * * and * *.</p>', 
Constant.ExampleText.jobDescEn2 = '<p><strong>Social experience: </strong>(<span class="cRed">to clarify specific affairs, responsible and emphasized the practical results.</span>)</p><p>1, I do in physical chemistry experiment teaching, writing teaching, independent preparation, experimental operation on correcting homework, teaching and demonstration and, due to the work of a conscientious and responsible, has won the praise of school leaders, students.</p><p>2, during the Xiamen University student apartments, student management work related to assist counselors.</p><p><strong>The school duty:</strong>(<span class="cRed">to clarify specific affairs, responsible and emphasized the practical results.</span>)</p><p>1, served as member of the class to learn, work coordination between responsible teacher and classmates, and successfully planned and organized the class\'s new year\'s party activities.</p><p>2, served as Minister of liaison, responsible for the student activities of contact with the outside world, such as the Department of celebration activities to pull sponsorship, and was selected as the Department of Qing miss etiquette.</p>', 
Constant.defaultReplyTemplate = [ {
    id: 1,
    msgType: 1,
    templateType: 1,
    templateName: "邀请面试",
    content: "    我们（#companyName#）已经收到您通过Job5156.com（智通硕博网）发来的应聘资料，经过我们的评估，觉得您适合我们的职位（#position#）,现诚邀面试。请根据提示的时间、地点前来面试。\n谢谢！\n广东智通人才连锁股份有限公司"
}, {
    id: 2,
    msgType: 1,
    templateType: 4,
    templateName: "待定",
    content: "    我们（#companyName#）已经收到您通过Job5156.com（智通硕博网）发来的应聘资料，感谢应聘本公司职位。 在未来的一周时间内，我们会认真的阅读及评估您的资料。如果有进一步接触的必要，我们会及时与您联系。您已经成功对本公司职位投递了简历，除非您应聘不同职位或者本人的工作经历有了重大变化，否则不需要投递第二份简历。如果在一个月内未收到我们的答复，您可以自行处理自己的资料。\n广东智通人才连锁股份有限公司"
}, {
    id: 3,
    msgType: 1,
    templateType: 5,
    templateName: "婉拒",
    content: "    我们（#companyName#）已经收到您通过Job5156.com（智通硕博网）发来的应聘资料，感谢应聘本公司职位。 我们认为您的条件暂时并不符合本公司要求。不过我们已经将您的简历输入本公司人才储备库，今后如有适合您的职位空缺，我们会在第一时间与您联系。同时因您已经成功对本公司职位投递了简历，除非您应聘不同职位或者本人的工作经历有了重大变化，否则您不需要投递第二份简历。\n广东智通人才连锁股份有限公司"
}, {
    id: 4,
    msgType: 1,
    templateType: 6,
    templateName: "自动回复",
    content: "    我们（#companyName#）已经收到您通过Job5156.com（智通硕博网）发来的应聘资料，我们会及时与您联系。您已经对本公司职位投放了简历，除非您应聘不同职位或者本人的工作经历有了变化，否则不需要投第二份简历。如果在一个月内未收到我们的答复，您可以自行处理自己的资料。  谢谢！\n广东智通人才连锁股份有限公司"
} ], common.checkIEAction(), common.hrefAddRandomParam(), window.console && console.log("\n       __        __     ______  __  ______ _____ \n      / /____   / /_   / ____/ / / / ____// ___/   _____ ____   ____ ___   \n __  / // __ | / __ | /___ |  / / /___ | / /_ |   / ___// __ | / __ `__ | \n/ /_/ // /_/ // /_/ /____/ / / / ____/ // /_/ /_ / /__ / /_/ // / / / / / \n|____/ |____/ |____/ |____/ /_/  |____/ |____/(_)|___/ |____//_/ /_/ /_/  \n------------------------------------------------------欢迎访问Job5156.com\n".replace(/\|/g, "\\"));

const $FixedBox = $(".FixedBox");

function dealFixedBox() {
    var e, t, o, n = $("#item1");
    n.length && (n = n.length ? n.offset().top : 0, e = $(document).scrollTop(), 
    t = $FixedBox.height(), o = $(window).height(), $FixedBox.css({
        top: (t / 2 < e ? (o - t) / 2 : n - e) + "px"
    }), $FixedBox.is(":visible") || $FixedBox.animate({
        opacity: "show"
    }, 100));
}

$FixedBox.length && (dealFixedBox(), $(window).scroll(function() {
    var e = $("#item1"), t = (dealFixedBox(), $(".FixedBox")), o = $(document).scrollTop(), n = $(document).height(), a = $(window).height(), i = $("body").find(".item"), s = "", e = e && e.length ? e.offset().top : 0;
    o + a == n ? s = "#" + i.last().attr("id") : i.each(function() {
        var e = $(this);
        e.offset().top - 10 < o && (s = "#" + e.attr("id"));
    }), s != $(".left_menu").find(".current").attr("href") && ($(".left_menu").find(".current").removeClass("current"), 
    $(".left_menu").find("[href=" + s + "]").addClass("current")), e - 60 < o ? t.css({
        top: "320px"
    }) : t.css({
        top: e - o + "px"
    });
}));