/*!
 * Copyright (c) 2013-Now 华夏ERP All rights reserved.
 * 
 * 通用公共JavaScript，注意：项目请不要修改公共CSS样式，若需要新增或调整，请在common.js中覆盖
 * @author jishenghua
 * @version 2019-9-14
 */
if (typeof jQuery === "undefined") {
    throw new Error("JSHERP's JavaScript requires jQuery")
}
(function($, window, undefined) {
    parent.$("iframe.ui-layout-content").each(function() {
        if (document.body.ownerDocument === this.contentWindow.document) {
            $("body").addClass("ui-layout-content");
            return
        }
    });
    $(function() {
        if ($.fn.iCheck !== undefined) {
            $("input[type=checkbox].form-control:not(.noicheck),input[type=radio].form-control:not(.noicheck)").each(function() {
                $(this).iCheck({
                    checkboxClass: "icheckbox_" + ($(this).data("style") || "minimal-grey"),
                    radioClass: "iradio_" + ($(this).data("style") || "minimal-grey")
                }).on("ifChanged", function() {
                    try {
                        $(this).resetValid()
                    } catch (e) {}
                })
            })
        }
        if ($.fn.select2 !== undefined) {
            $("select.form-control:not(.noselect2)").each(function() {
                $(this).select2({
                    minimumResultsForSearch: 10,
                    templateResult: function(result, container) {
                        var element = $(result.element)
                          , parent = $(container)
                          , style = element.attr("style")
                          , clazz = element.attr("class");
                        if (style && style != "") {
                            parent.attr("style", style)
                        }
                        if (clazz && clazz != "") {
                            parent.addClass(clazz)
                        }
                        return result.text
                    }
                }).on("change", function() {
                    try {
                        $(this).resetValid()
                    } catch (e) {}
                })
            })
        }
        if (js.ie) {
            $("a").bind("focus", function() {
                if (this.blur) {
                    this.blur()
                }
            })
        }
        $("#inputForm input[type=text]:not([readonly]):not([disabled]):not(.nofocus):eq(0)").focus();
        $("textarea.autoHeight").textareaAutoHieght();
        $(document).on("click", ".addTabPage", function(e) {
            var $this = $(this)
              , href = $this.data("href") || $this.attr("href")
              , title = $this.data("title") || $this.attr("title") || $this.text();
            if (href && href != "" && href != "blank") {
                js.addTabPage($this, $.trim(title || js.text("tabpanel.newTabPage")), href);
                if ($this.parent().hasClass("treeview")) {
                    window.funId = $this.data("code"); //功能id
                    top.window.isMenuClickFlag = true;
                    top.window.location.hash = href.replace("#", "")
                }
                return false
            }
            return true
        });
        if (js.ie && js.ie <= 9) {
            setTimeout(function() {
                $("input[placeholder],textarea[placeholder]").placeholder()
            }, 500)
        }
        if ($("#scroll-up").length > 0) {
            var btnScrollTop = $("#scroll-up")
              , isVisible = false;
            $(window).on("scroll.btnScrollTop", function() {
                var scroll = $(document).scrollTop()
                  , h = $(window).height()
                  , sh = document.body.scrollHeight;
                if (scroll > parseInt(h / 4) || (scroll > 0 && sh >= h && h + scroll >= sh - 1)) {
                    if (!isVisible) {
                        btnScrollTop.addClass("display");
                        isVisible = true
                    }
                } else {
                    if (isVisible) {
                        btnScrollTop.removeClass("display");
                        isVisible = false
                    }
                }
            }).triggerHandler("scroll.btnScrollTop");
            btnScrollTop.on("click", function() {
                $("html,body").animate({
                    scrollTop: 0
                }, 500);
                return false
            })
        }
        if (typeof FastClick != "undefined") {
            FastClick.attach(document.body)
        }
    });
    var js = {
        log: function(msg) {
            if (typeof (console) !== "undefined") {
                console.log(msg)
            }
        },
        error: function(msg) {
            if (typeof (console) !== "undefined") {
                console.error(msg)
            }
        },
        encodeUrl: function(url) {
            return encodeURIComponent(url)
        },
        decodeUrl: function(url) {
            return decodeURIComponent(url)
        },
        ie: function() {
            var agent = navigator.userAgent.toLowerCase();
            return (!!window.ActiveXObject || "ActiveXObject"in window) ? ((agent.match(/msie\s(\d+)/) || [])[1] || (agent.match(/Trident/i) && agent.match(/rv:(\d+)/) || [])[1] || false) : false
        }(),
        val: function(jsonObj, attrName) {
            if (jsonObj === undefined) {
                return ""
            }
            if (attrName === undefined || attrName == "") {
                return typeof jsonObj === "string" ? jsonObj : ""
            }
            var ret = jsonObj[attrName], prm = [], p, i;
            if (ret === undefined) {
                try {
                    if (typeof attrName === "string") {
                        prm = attrName.split(".")
                    }
                    i = prm.length;
                    if (i) {
                        ret = jsonObj;
                        while (ret && i--) {
                            p = prm.shift();
                            ret = ret[p]
                        }
                    }
                } catch (e) {}
            }
            if (ret === undefined) {
                return ""
            }
            return ret
        },
        hashCode: function(str, caseSensitive) {
            if (caseSensitive != true) {
                str = str.toLowerCase()
            }
            var hash = 1315423911, i, ch;
            for (i = str.length - 1; i >= 0; i--) {
                ch = str.charCodeAt(i);
                hash ^= ((hash << 5) + ch + (hash >> 2))
            }
            return (hash & 2147483647)
        },
        loadFile: function(file, callback, error) {
            callback = callback || function() {}
            ;
            error = error || function(data) {
                js.showMessage(data)
            }
            ;
            var files = typeof file == "string" ? [file] : file;
            var htmlDoc = document.getElementsByTagName("head")[0], okCounts = 0, fileCounts = files.length, i, loadFilePath = null;
            for (i = 0; i < fileCounts; i++) {
                var includeFile = null, att = null, ext, hash;
                loadFilePath = files[i];
                hash = js.hashCode(loadFilePath);
                if (document.getElementById("loadHash_" + hash)) {
                    okCounts += 1;
                    if (okCounts == fileCounts) {
                        callback();
                        return true
                    }
                    continue
                }
                att = loadFilePath.split("?")[0].split(".");
                ext = att[att.length - 1].toLowerCase();
                switch (ext) {
                case "css":
                    includeFile = document.createElement("link");
                    includeFile.setAttribute("rel", "stylesheet");
                    includeFile.setAttribute("type", "text/css");
                    includeFile.setAttribute("href", loadFilePath);
                    break;
                case "js":
                    includeFile = document.createElement("script");
                    includeFile.setAttribute("type", "text/javascript");
                    includeFile.setAttribute("src", loadFilePath);
                    break;
                case "jpg":
                case "jpeg":
                case "png":
                case "gif":
                    includeFile = document.createElement("img");
                    includeFile.setAttribute("src", loadFilePath);
                    break;
                default:
                    error("载入的格式不支持:" + loadFilePath);
                    return false
                }
                if (typeof includeFile != "undefined") {
                    includeFile.setAttribute("id", "loadHash_" + hash);
                    htmlDoc.appendChild(includeFile);
                    includeFile.onreadystatechange = function() {
                        if (includeFile.readyState == "loaded" || includeFile.readyState == "complete") {
                            okCounts += 1;
                            if (okCounts == fileCounts) {
                                callback();
                                return true
                            }
                        }
                    }
                    ;
                    includeFile.onload = function() {
                        okCounts += 1;
                        if (okCounts == fileCounts) {
                            callback();
                            return true
                        }
                    }
                    ;
                    includeFile.onerror = function() {
                        $("#loadhash_" + hash).remove();
                        return false
                    }
                }
            }
        },
        windowOpen: function(url, name, width, height) {
            if (!(width && height)) {
                width = window.screen.width - 200;
                height = window.screen.height - 150
            }
            var top = parseInt((window.screen.height - height) / 2 - 20, 10)
              , left = parseInt((window.screen.width - width) / 2, 10)
              , options = "location=no,menubar=no,toolbar=no,dependent=yes,minimizable=no,modal=yes,alwaysRaised=yes,resizable=yes,scrollbars=yes,width=" + width + ",height=" + height + ",top=" + top + ",left=" + left;
            window.open(url, name, options)
        },
        windowClose: function() {
            setTimeout(function() {
                window.opener = null;
                window.open("", "_self");
                window.close()
            }, 100)
        },
        addParam: function(url, params) {
            if (params != "") {
                url += (url.indexOf("?") == -1 ? "?" : "&");
                url += params
            }
            return url
        },
        getParam: function(paramName, url) {
            var reg = new RegExp("(^|&)" + paramName + "=([^&]*)(&|$)","i");
            if (!url || url == "") {
                url = window.location.search
            } else {
                url = url.substring(url.indexOf("?"))
            }
            var val = url.substr(1).match(reg);
            if (val != null) {
                return unescape(val[2])
            }
            return null
        },
        removeParam: function(paramName, url) {
            var reg = new RegExp("(^|&)" + paramName + "=([^&]*)(&|$)","i"), params;
            if (!url || url == "") {
                params = window.location.search
            } else {
                params = url.substring(url.indexOf("?"))
            }
            if (params != "") {
                if (js.startsWith(params, "?") || js.startsWith(params, "&")) {
                    params = params.substr(1)
                }
                url = url.substring(0, url.indexOf("?") + 1) + params.replace(reg, "$1");
                if (js.endsWith(url, "?") || js.endsWith(url, "&")) {
                    return url.substring(0, url.length - 1)
                }
            }
            return url
        },
        alertObj: function(obj) {
            var ob = eval(obj);
            var index = 1
              , property = "";
            for (var p in ob) {
                property += (index++) + "、" + p + " = " + ob[p] + "\n"
            }
            alert(property)
        },
        text: function(code, params) {
            if (code) {
                js.i18n = js.i18n || {};
                var text = js.i18n[code];
                if (!(text && text != "")) {
                    text = code
                }
                if (params) {
                    for (var i = 1; i < arguments.length; i++) {
                        var re = new RegExp("\\{" + (i - 1) + "\\}","gm");
                        text = text.replace(re, arguments[i])
                    }
                }
                return text
            }
            return code
        },
        getDictLabel: function(dictListJson, value, defaultValue, inCss) {
            var result = [];
            for (var i = 0; i < dictListJson.length; i++) {
                var row = dictListJson[i];
                if (("," + value + ",").indexOf("," + row.dictValue + ",") != -1) {
                    var str = "";
                    if (inCss && (row.cssClass || row.cssStyle)) {
                        str += "<span";
                        if (row.cssClass) {
                            str += ' class="' + row.cssClass + '"'
                        }
                        if (row.cssStyle) {
                            str += ' style="' + row.cssStyle + '"'
                        }
                        result.push(str + ">" + row.dictLabel + "</span>")
                    } else {
                        result.push(row.dictLabel)
                    }
                }
            }
            return result.length > 0 ? result.join(",") : defaultValue
        },
        loading: function(message, ignoreMessageIfExists) {
            var topJs;
            try {
                top.loadingFlag = true;
                topJs = top.js || parent.parent.js || parent.js
            } catch (e) {}
            if (typeof loadingFlag == "undefined" && topJs) {
                if (typeof topJs.loading == "function") {
                    topJs.loading(message);
                    return
                }
            }
            if (message == undefined || message == "") {
                message = js.text("loading.message")
            }
            if (message == "none") {
                return
            }
            setTimeout(function() {
                if (!js.pageLoadingNum) {
                    js.pageLoadingNum = 0
                }
                if (!js.pageLoadingStyle) {
                    if ($("body").hasClass("loading-topline")) {
                        js.pageLoadingStyle = 2
                    } else {
                        js.pageLoadingStyle = 1
                    }
                }
                if (js.pageLoadingStyle == 1) {
                    message += '<em onclick="js.closeLoading(0, true)">×</em>';
                    if ($("#page-loading").length == 0) {
                        $("body").append('<div id="page-loading" onmouseover="$(this).find(\'em\').show()" onmouseout="$(this).find(\'em\').hide()">' + message + "</div>")
                    } else {
                        if (!(ignoreMessageIfExists == true)) {
                            $("#page-loading").html(message)
                        }
                    }
                } else {
                    if (js.pageLoadingStyle == 2) {
                        if ($("#page-loading-top").length == 0) {
                            $("body").append('<div id="page-loading-top" class="page-loading-top"></div>');
                            $("#page-loading-top").animate({
                                width: "65%"
                            }, 2000, function() {
                                $(this).animate({
                                    width: "85%"
                                }, 8000)
                            })
                        }
                    }
                }
                js.pageLoadingNum++
            }, 0)
        },
        closeLoading: function(timeout, forceClose) {
            var topJs;
            try {
                top.loadingFlag = true;
                topJs = top.js || parent.parent.js || parent.js
            } catch (e) {}
            if (typeof loadingFlag == "undefined" && topJs) {
                if (typeof topJs.closeLoading == "function") {
                    topJs.closeLoading(timeout, forceClose);
                    return
                }
            }
            setTimeout(function() {
                if (!js.pageLoadingNum) {
                    js.pageLoadingNum = 0
                }
                js.pageLoadingNum--;
                if (forceClose || js.pageLoadingNum <= 0) {
                    if (js.pageLoadingStyle == 1) {
                        $("#page-loading").remove()
                    } else {
                        if (js.pageLoadingStyle == 2) {
                            $("#page-loading-top").stop().animate({
                                width: "100%"
                            }, 200, function() {
                                $(this).fadeOut(300, function() {
                                    $(this).remove()
                                })
                            })
                        }
                    }
                    js.pageLoadingNum = 0
                }
            }, timeout == undefined ? 0 : timeout)
        },
        layer: function() {
            try {
                if (top.layer && top.layer.window) {
                    return top.layer
                }
                if (parent.parent.layer && parent.parent.layer.window) {
                    return parent.parent.layer
                }
                if (parent.layer && parent.layer.window) {
                    return parent.layer
                }
            } catch (e) {}
            if (window.layer) {
                return layer
            }
            return null
        }(),
        showMessage: function(message, title, type, timeout) {
            var msgType, layerIcon, msg = String(message), msgTimeout = timeout == undefined ? 4000 : timeout;
            var contains = function(str, searchs) {
                if (searchs) {
                    var ss = searchs.split(",");
                    for (var i = 0; i < ss.length; i++) {
                        if (msg.indexOf(ss[i]) >= 0) {
                            return true
                        }
                    }
                }
                return false
            };
            if (type == "error" || contains(msg, js.text("showMessage.error"))) {
                msgType = "error";
                layerIcon = 2
            } else {
                if (type == "warning" || contains(msg, js.text("showMessage.warning"))) {
                    msgType = "warning";
                    layerIcon = 5
                } else {
                    if (type == "success" || contains(msg, js.text("showMessage.success"))) {
                        msgType = "success";
                        layerIcon = 1
                    } else {
                        msgType = "info";
                        layerIcon = 6
                    }
                }
            }
            try {
                if (top.toastr) {
                    var positionClass = "toast-bottom-right";
                    if (msg && msg.length >= 8 && msg.indexOf("posfull:") >= 0) {
                        if (timeout == undefined) {
                            msgTimeout = 0
                        }
                        positionClass = "toast-top-full-width";
                        msg = msg.substring(8);
                        js.log(msg)
                    }
                    top.toastr.options = {
                        closeButton: true,
                        positionClass: positionClass,
                        timeOut: msgTimeout
                    };
                    top.toastr[msgType](msg, title);
                    return
                }
            } catch (e) {}
            if (!js.layer) {
                alert(msg);
                return
            }
            if (layerIcon) {
                js.layer.msg(msg, {
                    icon: layerIcon,
                    time: msgTimeout
                })
            } else {
                js.layer.msg(msg, {
                    time: msgTimeout
                })
            }
        },
        showErrorMessage: function(responseText) {
            if (responseText && responseText != "") {
                js.error(js.abbr(responseText, 500));
                if (responseText.indexOf("<html ") != -1 || responseText.indexOf("<head ") != -1 || responseText.indexOf("<body ") != -1) {
                    js.showMessage("未知错误，F12查看异常信息！", null, "error")
                } else {
                    try {
                        var json = JSON.parse(responseText);
                        if (typeof json == "object" && typeof json.message != "undefined") {
                            js.showMessage(json.message, null, "error");
                            return
                        }
                    } catch (e) {}
                    js.showMessage(responseText, null, "error")
                }
            }
        },
        closeMessage: function() {
            try {
                if (top.toastr) {
                    top.toastr.clear()
                }
            } catch (e) {}
        },
        alert: function(message, options, closed) {
            if (typeof options != "object") {
                closed = options;
                options = {
                    icon: 1
                }
            }
            if (!js.layer) {
                alert(message);
                if (typeof closed == "function") {
                    closed()
                }
                return
            }
            js.layer.alert(message, options, function(index) {
                if (typeof closed == "function") {
                    closed(index)
                }
                js.layer.close(index)
            })
        },
        confirm: function(message, urlOrFun, data, callback, dataType, async, loadingMessage) {
            if (typeof data == "function") {
                loadingMessage = async;
                async = dataType;
                dataType = callback;
                callback = data;
                data = undefined
            }
            var sendAjax = function() {
                js.loading(loadingMessage == undefined ? js.text("loading.submitMessage") : loadingMessage);
                $.ajax({
                    type: "POST",
                    url: urlOrFun,
                    data: data,
                    dataType: dataType == undefined ? "json" : dataType,
                    async: async == undefined ? true : async,
                    error: function(data) {
                        js.showErrorMessage(data.responseText);
                        js.closeLoading(0, true)
                    },
                    success: function(data) {
                        if (typeof callback == "function") {
                            callback(data)
                        }
                        js.closeLoading()
                    }
                })
            };
            if (!js.layer) {
                if (confirm(message)) {
                    if (typeof urlOrFun == "function") {
                        urlOrFun()
                    } else {
                        sendAjax()
                    }
                }
                return
            }
            var options = {
                icon: 3
            };
            js.layer.confirm(message, options, function(index) {
                if (typeof urlOrFun == "function") {
                    urlOrFun()
                } else {
                    sendAjax()
                }
                js.layer.close(index)
            });
            return false
        },
        template: function(id, data, callback) {
            var tpl = String($("#" + id).html()).replace(/(\/\/\<!\-\-)|(\/\/\-\->)/g, "")
              , data = data || [];
            if (typeof callback == "function") {
                laytpl(tpl).render(data || [], function(render) {
                    callback(render)
                });
                return null
            }
            return laytpl(tpl).render(data || [])
        },
        ajaxSubmit: function(url, data, callback, dataType, async, message) {
            $(".btn").attr("disabled", true);
            if (typeof data == "function") {
                message = async;
                async = dataType;
                dataType = callback;
                callback = data;
                data = undefined
            }
            var options = {};
            if (typeof callback == "object") {
                options = callback;
                callback = options.callback;
                dataType = options.dataType;
                async = options.async;
                message = options.message
            }
            js.loading(message == undefined ? js.text("loading.submitMessage") : message);
            $.ajax($.extend(true, {
                type: "POST",
                url: url,
                data: data,
                dataType: dataType == undefined ? "json" : dataType,
                async: async == undefined ? true : async,
                error: function(data) {
                    $(".btn").attr("disabled", false);
                    js.showErrorMessage(data.responseText);
                    js.closeLoading(0, true)
                },
                success: function(data, status, xhr) {
                    $(".btn").attr("disabled", false);
                    js.closeLoading();
                    if (typeof callback == "function") {
                        callback(data, status, xhr)
                    } else {
                        js.log(data)
                    }
                }
            }, options))
        },
        ajaxSubmitForm: function(formJqueryObj, callback, dataType, async, message) {
            $(".btn").attr("disabled", true);
            var options = {};
            if (typeof callback == "object") {
                options = callback;
                callback = options.callback;
                dataType = options.dataType;
                async = options.async;
                message = options.message
            }
            js.loading(message == undefined ? js.text("loading.submitMessage") : message);
            if (options.downloadFile === true) {
                options.iframe = true
            }
            formJqueryObj.ajaxSubmit($.extend(true, {
                type: "POST",
                xhrFields: {
                    withCredentials: true
                },
                url: formJqueryObj.attr("action"),
                dataType: dataType == undefined ? "json" : dataType,
                async: async == undefined ? true : async,
                error: function(data) {
                    $(".btn").attr("disabled", false);
                    js.showErrorMessage(data.responseText);
                    js.closeLoading(0, true)
                },
                success: function(data, status, xhr) {
                    $(".btn").attr("disabled", false);
                    js.closeLoading();
                    if (typeof callback == "function") {
                        callback(data, status, xhr)
                    } else {
                        js.log(data)
                    }
                }
            }, options));
            if (options.downloadFile === true) {
                $(".btn").attr("disabled", false);
                js.closeLoading()
            }
        },
        trim: function(str) {
            return jQuery.trim(str)
        },
        startWith: function(str, start) {
            var reg = new RegExp("^" + start);
            return reg.test(str)
        },
        startsWith: function(str, prefix) {
            if (!str || !prefix || str.length < prefix.length) {
                return false
            }
            return str.slice(0, prefix.length) === prefix
        },
        endWith: function(str, end) {
            var reg = new RegExp(end + "$");
            return reg.test(str)
        },
        endsWith: function(str, suffix) {
            if (!str || !suffix || str.length < suffix.length) {
                return false
            }
            return str.indexOf(suffix, str.length - suffix.length) !== -1
        },
        abbr: function(name, maxLength) {
            if (!maxLength) {
                maxLength = 20
            }
            if (name == null || name.length < 1) {
                return ""
            }
            var w = 0;
            var s = 0;
            var p = false;
            var b = false;
            var nameSub;
            for (var i = 0; i < name.length; i++) {
                if (i > 1 && b == false) {
                    p = false
                }
                if (i > 1 && b == true) {
                    p = true
                }
                var c = name.charCodeAt(i);
                if ((c >= 1 && c <= 126) || (65376 <= c && c <= 65439)) {
                    w++;
                    b = false
                } else {
                    w += 2;
                    s++;
                    b = true
                }
                if (w > maxLength && i <= name.length - 1) {
                    if (b == true && p == true) {
                        nameSub = name.substring(0, i - 2) + "..."
                    }
                    if (b == false && p == false) {
                        nameSub = name.substring(0, i - 3) + "..."
                    }
                    if (b == true && p == false) {
                        nameSub = name.substring(0, i - 2) + "..."
                    }
                    if (p == true) {
                        nameSub = name.substring(0, i - 2) + "..."
                    }
                    break
                }
            }
            if (w <= maxLength) {
                return name
            }
            return nameSub
        },
        formatNumber: function(num, cent, isThousand, defaultValue) {
            if (typeof num == "undefined" || num == null || num === "") {
                return defaultValue || ""
            }
            num = String(num).replace(/\$|\,/g, "");
            if (isNaN(num)) {
                num = "0"
            }
            var sign = (num == (num = Math.abs(num)));
            num = Math.floor(num * Math.pow(10, cent) + 0.50000000001);
            var cents = num % Math.pow(10, cent);
            num = Math.floor(num / Math.pow(10, cent)).toString();
            cents = cents.toString();
            while (cents.length < cent) {
                cents = "0" + cents
            }
            if (isThousand) {
                for (var i = 0; i < Math.floor((num.length - (1 + i)) / 3); i++) {
                    num = num.substring(0, num.length - (4 * i + 3)) + "," + num.substring(num.length - (4 * i + 3))
                }
            }
            if (cent > 0) {
                return (((sign) ? "" : "-") + num + "." + cents)
            } else {
                return (((sign) ? "" : "-") + num)
            }
        },
        formatMoney: function(s, n) {
            if (s == undefined || s == "") {
                return "0.00"
            }
            n = n >= 0 && n <= 20 ? n : 2;
            s = parseFloat((s + "").replace(/[^\d\.-]/g, "")).toFixed(n) + "";
            var l = s.split(".")[0].split("").reverse(), r = s.split(".")[1], i, t = "";
            for (i = 0; i < l.length; i++) {
                t += l[i] + ((i + 1) % 3 == 0 && (i + 1) != l.length ? "," : "")
            }
            return t.split("").reverse().join("") + (r ? "." + r : "")
        },
        numberPad: function(num, n) {
            var len = num.toString().length;
            while (len < n) {
                num = "0" + num;
                len++
            }
            return num
        },
        formatDate: function(date, f) {
            if (date == undefined) {
                return ""
            }
            if (f == undefined) {
                f = "yyyy-MM-dd HH:mm"
            }
            var o = {
                "M+": date.getMonth() + 1,
                "d+": date.getDate(),
                "H+": date.getHours(),
                "m+": date.getMinutes(),
                "s+": date.getSeconds(),
                "q+": Math.floor((date.getMonth() + 3) / 3),
                S: date.getMilliseconds()
            };
            if (/(y+)/.test(f)) {
                f = f.replace(RegExp.$1, (date.getFullYear() + "").substr(4 - RegExp.$1.length))
            }
            for (var k in o) {
                if (new RegExp("(" + k + ")").test(f)) {
                    f = f.replace(RegExp.$1, RegExp.$1.length == 1 ? o[k] : ("00" + o[k]).substr(("" + o[k]).length))
                }
            }
            return f
        },
        parseDate: function(date) {
            if (date == undefined) {
                return null
            }
            return new Date(date.replace(/-/g, "/"))
        },
        addDate: function(date, dadd) {
            date = date.valueOf();
            date = date + dadd * 24 * 60 * 60 * 1000;
            return new Date(date)
        },
        quickSelectDate: function(type, beginDateId, endDateId) {
            var now = new Date()
              , nowYear = now.getFullYear()
              , nowMonth = now.getMonth()
              , nowDay = now.getDate()
              , nowDayOfWeek = now.getDay()
              , beginDate = $("#" + beginDateId)
              , endDate = $("#" + endDateId)
              , formatDate = function(date) {
                return js.formatDate(date, "yyyy-MM-dd")
            }
              , getMonthDays = function(myMonth) {
                var monthStartDate = new Date(nowYear,myMonth,1);
                var monthEndDate = new Date(nowYear,myMonth + 1,1);
                var days = (monthEndDate - monthStartDate) / (1000 * 60 * 60 * 24);
                return days
            };
            if (type == "1") {
                beginDate.val(formatDate(now));
                endDate.val(beginDate.val())
            } else {
                if (type == "2") {
                    nowDayOfWeek = nowDayOfWeek == 0 ? 6 : nowDayOfWeek - 1;
                    var weekStartDate = new Date(nowYear,nowMonth,nowDay - nowDayOfWeek);
                    var weekEndDate = new Date(nowYear,nowMonth,nowDay + (6 - nowDayOfWeek));
                    beginDate.val(formatDate(weekStartDate));
                    endDate.val(formatDate(weekEndDate))
                } else {
                    if (type == "3") {
                        var monthStartDate = new Date(nowYear,nowMonth,1);
                        var monthEndDate = new Date(nowYear,nowMonth,getMonthDays(nowMonth));
                        beginDate.val(formatDate(monthStartDate));
                        endDate.val(formatDate(monthEndDate))
                    } else {
                        if (type == "4") {
                            var quarterStartMonth = 0;
                            if (nowMonth < 3) {
                                quarterStartMonth = 0
                            }
                            if (2 < nowMonth && nowMonth < 6) {
                                quarterStartMonth = 3
                            }
                            if (5 < nowMonth && nowMonth < 9) {
                                quarterStartMonth = 6
                            }
                            if (nowMonth > 8) {
                                quarterStartMonth = 9
                            }
                            var quarterEndMonth = quarterStartMonth + 2;
                            var quarterStartDate = new Date(nowYear,quarterStartMonth,1);
                            var quarterEndDate = new Date(nowYear,quarterEndMonth,getMonthDays(quarterEndMonth));
                            beginDate.val(formatDate(quarterStartDate));
                            endDate.val(formatDate(quarterEndDate))
                        } else {
                            if (type == "5") {
                                var lastMonthDate = new Date();
                                lastMonthDate.setDate(1);
                                lastMonthDate.setMonth(lastMonthDate.getMonth() - 1);
                                var lastYear = lastMonthDate.getYear();
                                var lastMonth = lastMonthDate.getMonth();
                                var lastMonthStartDate = new Date(nowYear,lastMonth,1);
                                var lastMonthEndDate = new Date(nowYear,lastMonth,getMonthDays(lastMonth));
                                beginDate.val(formatDate(lastMonthStartDate));
                                endDate.val(formatDate(lastMonthEndDate))
                            }
                        }
                    }
                }
            }
            beginDate.change();
            endDate.change()
        },
        cookie: function(name, value, options) {
            if (typeof value != "undefined") {
                options = options || {};
                if (value === null) {
                    value = "";
                    options.expires = -1
                }
                var expires = "";
                if (options.expires && (typeof options.expires == "number" || options.expires.toUTCString)) {
                    var date;
                    if (typeof options.expires == "number") {
                        date = new Date();
                        date.setTime(date.getTime() + (options.expires * 24 * 60 * 60 * 1000))
                    } else {
                        date = options.expires
                    }
                    expires = "; expires=" + date.toUTCString()
                }
                var path = "; path=" + (options.path ? options.path : (window.ctxPath ? window.ctxPath : "/"));
                var domain = options.domain ? "; domain=" + options.domain : "";
                var secure = options.secure ? "; secure" : "";
                document.cookie = [name, "=", encodeURIComponent(value), expires, path, domain, secure].join("")
            } else {
                var cookieValue = null;
                if (document.cookie && document.cookie != "") {
                    var cookies = document.cookie.split(";");
                    for (var i = 0; i < cookies.length; i++) {
                        var cookie = jQuery.trim(cookies[i]);
                        if (cookie.substring(0, name.length + 1) == (name + "=")) {
                            cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
                            break
                        }
                    }
                }
                return cookieValue
            }
        },
        tabPage: function() {
            if (window.tabPage) {
                return tabPage
            }
            try {
                if (parent.tabPage) {
                    return parent.tabPage
                }
                if (parent.parent.tabPage) {
                    return parent.parent.tabPage
                }
                if (top.tabPage) {
                    return top.tabPage
                }
            } catch (e) {}
            return null
        }(),
        initTabPage: function(id, options) {
            if (js.cookie("tabPageModel") == "true") {
                options.maxLength = 1
            }
            var tabPage = window.tabPage;
            return tabPage.initTabPage(id, options)
        },
        addTabPage: function($this, title, url, closeable, refresh) {
            top.prevWindow = window;
            var tabPage = js.tabPage;
            if (!tabPage || typeof tabPage.addTabPage != "function" || (js.cookie("formLayerModel") == "true" && $this && $this.data("layer") != false && ($this.hasClass("btnTool") || $this.hasClass("btnList"))) || ($this && $this.data("layer") == true)) {
                if (js.layer) {
                    var layerWidth, layerHeight, layerLeft, layerTop;
                    if ($this) {
                        layerWidth = $this.data("layerWidth");
                        layerHeight = $this.data("layerHeight");
                        layerLeft = $this.data("layerLeft");
                        layerTop = $this.data("layerTop")
                    }
                    if (layerWidth == null || layerWidth == "") {
                        layerWidth = $(top.window).width();
                        if (layerLeft != null && layerLeft != "") {
                            layerWidth -= parseInt(layerLeft) * 2
                        } else {
                            layerWidth -= 100 * 2
                        }
                    }
                    if (layerHeight == null || layerHeight == "") {
                        layerHeight = $(top.window).height();
                        if (layerTop != null && layerTop != "") {
                            layerHeight -= parseInt(layerTop) * 2
                        } else {
                            layerHeight -= 50 * 2
                        }
                    }
                    js.layer.open({
                        type: 2,
                        maxmin: true,
                        shadeClose: false,
                        title: title,
                        area: [layerWidth + "px", layerHeight + "px"],
                        content: url,
                        contentFormData: {
                            __layer: true
                        },
                        success: function(layero, index) {
                            if ($(js.layer.window).width() < layerWidth || $(js.layer.window).height() < layerHeight) {
                                js.layer.full(index)
                            }
                        }
                    })
                } else {
                    js.windowOpen(url, title, "auto", "auto")
                }
                return
            }
            return tabPage.addTabPage($this, title, url, closeable, refresh)
        },
        getCurrentTabPage: function(currentTabCallback) {
            var tabPage = js.tabPage;
            if (!tabPage || typeof tabPage.getCurrentTabPage != "function") {
                return
            }
            tabPage.getCurrentTabPage(currentTabCallback)
        },
        getPrevTabPage: function(preTabCallback, isCloseCurrentTab) {
            var tabPage = js.tabPage;
            if (!tabPage || typeof tabPage.getPrevTabPage != "function") {
                return
            }
            tabPage.getPrevTabPage(preTabCallback, isCloseCurrentTab)
        },
        closeCurrentTabPage: function(preTabCallback) {
            var tabPage = js.tabPage;
            if (!tabPage || typeof tabPage.closeCurrentTabPage != "function" || window.name.indexOf("layui-layer") != -1) {
                var layerIndex;
                if (js.layer) {
                    layerIndex = js.layer.getFrameIndex(window.name)
                }
                if (layerIndex) {
                    js.layer.close(layerIndex)
                } else {
                    js.windowClose()
                }
                if (typeof preTabCallback == "function") {
                    try {
                        preTabCallback(top.prevWindow)
                    } catch (e) {
                        js.error(e)
                    }
                }
                return
            }
            tabPage.closeCurrentTabPage(preTabCallback)
        }
    };
    window.js = js;
    window.log = js.log;
    window.error = js.error;
    window.lang = window.lang || "zh_CN";
    window.text = js.text
}
)(window.jQuery, window);
+function(d) {
    var b = "lte.boxwidget";
    var g = {
        animationSpeed: 500,
        collapseTrigger: '[data-widget="collapse"]',
        removeTrigger: '[data-widget="remove"]',
        collapseIcon: "fa-minus",
        expandIcon: "fa-plus",
        removeIcon: "fa-times"
    };
    var a = {
        data: ".box",
        collapsed: ".collapsed-box",
        body: ".box-body",
        footer: ".box-footer",
        tools: ".box-tools"
    };
    var i = {
        collapsed: "collapsed-box"
    };
    var j = {
        collapsed: "collapsed.boxwidget",
        expanded: "expanded.boxwidget",
        removed: "removed.boxwidget"
    };
    var f = function(l, k) {
        this.element = l;
        this.options = k;
        this._setUpListeners()
    };
    f.prototype.toggle = function() {
        var k = !d(this.element).is(a.collapsed);
        if (k) {
            this.collapse()
        } else {
            this.expand()
        }
    }
    ;
    f.prototype.expand = function() {
        var m = d.Event(j.expanded);
        var l = this.options.collapseIcon;
        var k = this.options.expandIcon;
        d(this.element).removeClass(i.collapsed);
        d(this.element).find(a.tools).find("." + k).removeClass(k).addClass(l);
        d(this.element).find(a.body + ", " + a.footer).slideDown(this.options.animationSpeed, function() {
            d(this.element).trigger(m)
        }
        .bind(this))
    }
    ;
    f.prototype.collapse = function() {
        var l = d.Event(j.collapsed);
        var m = this.options.collapseIcon;
        var k = this.options.expandIcon;
        d(this.element).find(a.tools).find("." + m).removeClass(m).addClass(k);
        d(this.element).find(a.body + ", " + a.footer).slideUp(this.options.animationSpeed, function() {
            d(this.element).addClass(i.collapsed);
            d(this.element).trigger(l)
        }
        .bind(this))
    }
    ;
    f.prototype.remove = function() {
        var k = d.Event(j.removed);
        d(this.element).slideUp(this.options.animationSpeed, function() {
            d(this.element).trigger(k);
            d(this.element).remove()
        }
        .bind(this))
    }
    ;
    f.prototype._setUpListeners = function() {
        var k = this;
        d(this.element).on("click", this.options.collapseTrigger, function(l) {
            if (l) {
                l.preventDefault()
            }
            k.toggle()
        });
        d(this.element).on("click", this.options.removeTrigger, function(l) {
            if (l) {
                l.preventDefault()
            }
            k.remove()
        });
        d(this.options.collapseTrigger).css({
            cursor: "pointer"
        });
        d(this.options.removeTrigger).css({
            cursor: "pointer"
        })
    }
    ;
    function h(k) {
        return this.each(function() {
            var n = d(this);
            var m = n.data(b);
            if (!m) {
                var l = d.extend({}, g, n.data(), typeof k == "object" && k);
                n.data(b, (m = new f(n,l)))
            }
            if (typeof k == "string") {
                if (typeof m[k] == "undefined") {
                    throw new Error("No method named " + k)
                }
                m[k]()
            }
        })
    }
    var c = d.fn.boxWidget;
    d.fn.boxWidget = h;
    d.fn.boxWidget.Constructor = f;
    d.fn.boxWidget.noConflict = function() {
        d.fn.boxWidget = c;
        return this
    }
    ;
    d(function() {
        d(a.data).each(function() {
            h.call(d(this))
        });
        d(".box-child").boxWidget({
            collapseTrigger: '[data-widget="collapse-child"]',
            removeTrigger: '[data-widget="remove-child"]'
        })
    })
}(jQuery);
!(function(a) {
    a.fn.extend({
        placeholder: function(b) {
            b = a.extend({
                placeholderColor: "#ACA899",
                isUseSpan: true,
                onInput: true,
                noFixClass: "placeholder-no-fix"
            }, b);
            a(this).each(function() {
                var h = this;
                var c = "placeholder"in document.createElement("input");
                if (!c) {
                    if (a(h).hasClass(b.noFixClass)) {
                        return
                    }
                    var i = a(h).attr("placeholder");
                    var d = a(h).css("color");
                    if (b.isUseSpan == false) {
                        a(h).focus(function() {
                            var n = new RegExp("^" + i + "$|^$");
                            n.test(a(h).val()) && a(h).val("").css("color", d)
                        }).blur(function() {
                            if (a(h).val() == i) {
                                a(h).css("color", d)
                            } else {
                                if (a(h).val().length == 0) {
                                    a(h).val(i).css("color", b.placeholderColor)
                                }
                            }
                        }).trigger("blur")
                    } else {
                        var f = "";
                        if (a(h).parent().hasClass("input-group")) {
                            f = "left:" + a(h).position().left + "px;"
                        }
                        var k = a(h).width() == 0 ? 150 : a(h).width();
                        var l = a(h).hasClass("input-sm") ? a(h).height() : a(h).outerHeight();
                        var m = a('<span class="wrap-placeholder" style="position:absolute;display:inline-block;overflow:hidden;z-index:1000;color:' + b.placeholderColor + "; width:" + k + "px; height:" + l + "px;" + f + '">' + i + "</span>");
                        m.css({
                            "margin-left": a(h).css("margin-left"),
                            "margin-top": a(h).css("margin-top"),
                            "font-size": a(h).css("font-size"),
                            "font-family": a(h).css("font-family"),
                            "font-weight": a(h).css("font-weight"),
                            "line-height": h.nodeName.toLowerCase() == "textarea" ? a(h).css("line-weight") : l + "px",
                            "padding-left": parseInt(a(h).css("padding-left")) + 2 + "px",
                            "padding-top": h.nodeName.toLowerCase() == "textarea" ? parseInt(a(h).css("padding-top")) + 2 : 0
                        });
                        var g = a(h).prev();
                        if (g.hasClass("wrap-placeholder")) {
                            g.remove()
                        }
                        a(h).before(m.click(function() {
                            a(h).trigger("focus")
                        }));
                        a(h).val().length != 0 && m.hide();
                        if (b.onInput) {
                            var j = typeof (h.oninput) == "object" ? "input" : "propertychange";
                            a(h).bind(j, function() {
                                m[0].style.display = a(h).val().length != 0 ? "none" : "inline-block"
                            })
                        } else {
                            a(h).focus(function() {
                                m.hide()
                            }).blur(function() {
                                /^$/.test(a(h).val()) && m.show()
                            })
                        }
                    }
                }
            });
            return this
        }
    })
}
)(jQuery);
(function(a) {
    a.fn.textareaAutoHieght = function(b) {
        var d = {
            maxHeight: null,
            minHeight: a(this).attr("rows") * 18
        };
        var c = a.extend({}, d, b);
        return a(this).each(function() {
            a(this).bind("paste cut keydown keyup focus blur", function() {
                var f, g = this.style;
                this.style.height = c.minHeight + "px";
                if (this.scrollHeight > c.minHeight) {
                    if (c.maxHeight && this.scrollHeight > c.maxHeight) {
                        f = c.maxHeight;
                        g.overflowY = "scroll"
                    } else {
                        f = this.scrollHeight;
                        g.overflowY = "hidden"
                    }
                    g.height = f + "px"
                }
            }).trigger("blur")
        })
    }
}
)(jQuery);
(function(a) {
    a.fn.iframeWindow = function() {
        var b = a(this).find("iframe");
        if (b.length > 0) {
            return b[0].contentWindow
        }
        return null
    }
}
)(jQuery);
(function(W) {
    function B(k, h, n) {
        var p = k[0]
          , m = /er/.test(n) ? T : /bl/.test(n) ? O : U
          , l = n == j ? {
            checked: p[U],
            disabled: p[O],
            indeterminate: "true" == k.attr(T) || "false" == k.attr(o)
        } : p[m];
        if (/^(ch|di|in)/.test(n) && !l) {
            P(k, m)
        } else {
            if (/^(un|en|de)/.test(n) && l) {
                N(k, m)
            } else {
                if (n == j) {
                    for (m in l) {
                        l[m] ? P(k, m, !0) : N(k, m, !0)
                    }
                } else {
                    if (!h || "toggle" == n) {
                        if (!h) {
                            k[R]("ifClicked")
                        }
                        l ? p[S] !== C && N(k, m) : P(k, m)
                    }
                }
            }
        }
    }
    function P(y, x, u) {
        var v = y[0]
          , t = y.parent()
          , q = x == U
          , n = x == T
          , m = x == O
          , w = n ? o : q ? K : "enabled"
          , l = V(y, w + i(v[S]))
          , s = V(y, x + i(v[S]));
        if (!0 !== v[x]) {
            if (!u && x == U && v[S] == C && v.name) {
                var k = y.closest("form")
                  , h = 'input[name="' + v.name + '"]'
                  , h = k.length ? k.find(h) : W(h);
                h.each(function() {
                    this !== v && W(this).data(Q) && N(W(this), x)
                })
            }
            n ? (v[x] = !0,
            v[U] && N(y, U, "force")) : (u || (v[x] = !0),
            q && v[T] && N(y, T, !1));
            b(y, q, x, u)
        }
        v[O] && V(y, f, !0) && t.find("." + g).css(f, "default");
        t[A](s || V(y, x) || "");
        m ? t.attr("aria-disabled", "true") : t.attr("aria-checked", n ? "mixed" : "true");
        t[c](l || V(y, w) || "")
    }
    function N(y, x, v) {
        var w = y[0]
          , s = y.parent()
          , n = x == U
          , m = x == T
          , k = x == O
          , l = m ? o : n ? K : "enabled"
          , D = V(y, l + i(w[S]))
          , z = V(y, x + i(w[S]));
        if (!1 !== w[x]) {
            if (m || !v || "force" == v) {
                w[x] = !1
            }
            b(y, n, l, v)
        }
        !w[O] && V(y, f, !0) && s.find("." + g).css(f, "pointer");
        s[c](z || V(y, x) || "");
        k ? s.attr("aria-disabled", "false") : s.attr("aria-checked", "false");
        s[A](D || V(y, l) || "")
    }
    function a(k, h) {
        if (k.data(Q)) {
            k.parent().html(k.attr("style", k.data(Q).s || ""));
            if (h) {
                k[R](h)
            }
            k.off(".i").unwrap();
            W(r + '[for="' + k[0].id + '"]').add(k.closest(r)).off(".i")
        }
    }
    function V(k, h, l) {
        if (k.data(Q)) {
            return k.data(Q).o[h + (l ? "" : "Class")]
        }
    }
    function i(h) {
        return h.charAt(0).toUpperCase() + h.slice(1)
    }
    function b(k, h, l, m) {
        if (!m) {
            if (h) {
                k[R]("ifToggled")
            }
            k[R]("ifChanged")[R]("if" + i(l))
        }
    }
    var Q = "iCheck"
      , g = Q + "-helper"
      , C = "radio"
      , U = "checked"
      , K = "un" + U
      , O = "disabled"
      , o = "determinate"
      , T = "in" + o
      , j = "update"
      , S = "type"
      , A = "addClass"
      , c = "removeClass"
      , R = "trigger"
      , r = "label"
      , f = "cursor"
      , d = /ipad|iphone|ipod|android|blackberry|windows phone|opera mini|silk/i.test(navigator.userAgent);
    W.fn[Q] = function(D, v) {
        var s = 'input[type="checkbox"], input[type="' + C + '"]'
          , t = W()
          , q = function(k) {
            k.each(function() {
                var w = W(this);
                t = w.is(s) ? t.add(w) : t.add(w.find(s))
            })
        };
        if (/^(check|uncheck|toggle|indeterminate|determinate|disable|enable|update|destroy)$/i.test(D)) {
            return D = D.toLowerCase(),
            q(this),
            t.each(function() {
                var k = W(this);
                "destroy" == D ? a(k, "ifDestroyed") : B(k, !0, D);
                W.isFunction(v) && v()
            })
        }
        if ("object" != typeof D && D) {
            return this
        }
        var p = W.extend({
            checkedClass: U,
            disabledClass: O,
            indeterminateClass: T,
            checkboxClass: "icheckbox_minimal-grey",
            radioClass: "iradio_minimal-grey",
            labelHover: !0,
            aria: !1
        }, D)
          , n = p.handle
          , m = p.hoverClass || "hover"
          , z = p.focusClass || "focus"
          , E = p.activeClass || "active"
          , u = !!p.labelHover
          , l = p.labelHoverClass || "hover"
          , h = ("" + p.increaseArea).replace("%", "") | 0;
        if ("checkbox" == n || n == C) {
            s = 'input[type="' + n + '"]'
        }
        -50 > h && (h = -50);
        q(this);
        return t.each(function() {
            var L = W(this);
            a(L);
            var I = this
              , J = I.id
              , G = -h + "%"
              , H = 100 + 2 * h + "%"
              , H = {
                position: "absolute",
                top: G,
                left: G,
                display: "block",
                width: H,
                height: H,
                margin: 0,
                padding: 0,
                background: "#fff",
                border: 0,
                opacity: 0
            }
              , G = d ? {
                position: "absolute",
                visibility: "hidden"
            } : h ? H : {
                position: "absolute",
                opacity: 0
            }
              , y = "checkbox" == I[S] ? p.checkboxClass || "icheckbox" : p.radioClass || "i" + C
              , x = W(r + '[for="' + J + '"]').add(L.closest(r))
              , w = !!p.aria
              , M = Q + "-" + Math.random().toString(36).replace("0.", "")
              , F = '<div class="' + y + '" ' + (w ? 'role="' + I[S] + '" ' : "");
            x.length && w && x.each(function() {
                F += 'aria-labelledby="';
                this.id ? F += this.id : (this.id = M,
                F += M);
                F += '"'
            });
            F = L.wrap(F + "/>")[R]("ifCreated").parent().append(p.insert);
            H = W('<ins class="' + g + '"/>').css(H).appendTo(F);
            L.data(Q, {
                o: p,
                s: L.attr("style")
            }).css(G);
            p.inheritClass && F[A](I.className || "");
            p.inheritID && J && F.attr("id", Q + "-" + J);
            "static" == F.css("position") && F.css("position", "relative");
            B(L, !0, j);
            if (x.length) {
                x.on("click.i mouseover.i mouseout.i touchbegin.i touchend.i", function(k) {
                    var Y = k[S]
                      , X = W(this);
                    if (!I[O]) {
                        if ("click" == Y) {
                            if (W(k.target).is("a")) {
                                return
                            }
                            B(L, !1, !0)
                        } else {
                            u && (/ut|nd/.test(Y) ? (F[c](m),
                            X[c](l)) : (F[A](m),
                            X[A](l)))
                        }
                        if (d) {
                            k.stopPropagation()
                        } else {
                            return !1
                        }
                    }
                })
            }
            L.on("click.i focus.i blur.i keyup.i keydown.i keypress.i", function(k) {
                var X = k[S];
                k = k.keyCode;
                if ("click" == X) {
                    return !1
                }
                if ("keydown" == X && 32 == k) {
                    return I[S] == C && I[U] || (I[U] ? N(L, U) : P(L, U)),
                    !1
                }
                if ("keyup" == X && I[S] == C) {
                    !I[U] && P(L, U)
                } else {
                    if (/us|ur/.test(X)) {
                        F["blur" == X ? c : A](z)
                    }
                }
            });
            H.on("click mousedown mouseup mouseover mouseout touchbegin.i touchend.i", function(k) {
                var Y = k[S]
                  , X = /wn|up/.test(Y) ? E : m;
                if (!I[O]) {
                    if ("click" == Y) {
                        B(L, !1, !0)
                    } else {
                        if (/wn|er|in/.test(Y)) {
                            F[A](X)
                        } else {
                            F[c](X + " " + E)
                        }
                        if (x.length && u && X == m) {
                            x[/ut|nd/.test(Y) ? c : A](l)
                        }
                    }
                    if (d) {
                        k.stopPropagation()
                    } else {
                        return !1
                    }
                }
            })
        })
    }
}
)(window.jQuery || window.Zepto);
(function(f, d, a) {
    var b, g, c;
    c = "resizeEnd";
    g = {
        delay: 150
    };
    b = function(i, h, j) {
        if (typeof h === "function") {
            j = h;
            h = {}
        }
        j = j || null;
        this.element = i;
        this.settings = f.extend({}, g, h);
        this._defaults = g;
        this._name = c;
        this._timeout = false;
        this._callback = j;
        return this.init()
    }
    ;
    b.prototype = {
        init: function() {
            var h, i;
            i = this;
            h = f(this.element);
            return h.on("resize", function() {
                return i.initResize()
            })
        },
        getUTCDate: function(i) {
            var h;
            i = i || new Date();
            h = Date.UTC(i.getUTCFullYear(), i.getUTCMonth(), i.getUTCDate(), i.getUTCHours(), i.getUTCMinutes(), i.getUTCSeconds(), i.getUTCMilliseconds());
            return h
        },
        initResize: function() {
            var h;
            h = this;
            h.controlTime = h.getUTCDate();
            if (h._timeout === false) {
                h._timeout = true;
                return setTimeout(function() {
                    return h.runCallback(h)
                }, h.settings.delay)
            }
        },
        runCallback: function(i) {
            var h;
            h = i.getUTCDate();
            if (h - i.controlTime < i.settings.delay) {
                return setTimeout(function() {
                    return i.runCallback(i)
                }, i.settings.delay)
            } else {
                i._timeout = false;
                return i._callback()
            }
        }
    };
    return f.fn[c] = function(h, i) {
        return this.each(function() {
            if (!f.data(this, "plugin_" + c)) {
                return f.data(this, "plugin_" + c, new b(this,h,i))
            }
        })
    }
}
)(jQuery, window, document);
!function(a) {
    "function" == typeof define && define.amd ? define(["jquery"], a) : a("undefined" != typeof jQuery ? jQuery : window.Zepto)
}(function(e) {
    function t(t) {
        var r = t.data;
        t.isDefaultPrevented() || (t.preventDefault(),
        e(t.target).ajaxSubmit(r))
    }
    function r(t) {
        var r = t.target
          , a = e(r);
        if (!a.is("[type=submit],[type=image]")) {
            var n = a.closest("[type=submit]");
            if (0 === n.length) {
                return
            }
            r = n[0]
        }
        var i = this;
        if (i.clk = r,
        "image" == r.type) {
            if (void 0 !== t.offsetX) {
                i.clk_x = t.offsetX,
                i.clk_y = t.offsetY
            } else {
                if ("function" == typeof e.fn.offset) {
                    var o = a.offset();
                    i.clk_x = t.pageX - o.left,
                    i.clk_y = t.pageY - o.top
                } else {
                    i.clk_x = t.pageX - r.offsetLeft,
                    i.clk_y = t.pageY - r.offsetTop
                }
            }
        }
        setTimeout(function() {
            i.clk = i.clk_x = i.clk_y = null
        }, 100)
    }
    function a() {
        if (e.fn.ajaxSubmit.debug) {
            var t = "[jquery.form] " + Array.prototype.join.call(arguments, "");
            window.console && window.console.log ? window.console.log(t) : window.opera && window.opera.postError && window.opera.postError(t)
        }
    }
    var n = {};
    n.fileapi = void 0 !== e("<input type='file'/>").get(0).files,
    n.formdata = void 0 !== window.FormData;
    var i = !!e.fn.prop;
    e.fn.attr2 = function() {
        if (!i) {
            return this.attr.apply(this, arguments)
        }
        var e = this.prop.apply(this, arguments);
        return e && e.jquery || "string" == typeof e ? e : this.attr.apply(this, arguments)
    }
    ,
    e.fn.ajaxSubmit = function(t) {
        function r(r) {
            var a, n, i = e.param(r, t.traditional).split("&"), o = i.length, s = [];
            for (a = 0; o > a; a++) {
                i[a] = i[a].replace(/\+/g, " "),
                n = i[a].split("="),
                s.push([decodeURIComponent(n[0]), decodeURIComponent(n[1])])
            }
            return s
        }
        function o(a) {
            for (var n = new FormData, i = 0; i < a.length; i++) {
                n.append(a[i].name, a[i].value)
            }
            if (t.extraData) {
                var o = r(t.extraData);
                for (i = 0; i < o.length; i++) {
                    o[i] && n.append(o[i][0], o[i][1])
                }
            }
            t.data = null;
            var s = e.extend(!0, {}, e.ajaxSettings, t, {
                contentType: !1,
                processData: !1,
                cache: !1,
                type: u || "POST"
            });
            t.uploadProgress && (s.xhr = function() {
                var r = e.ajaxSettings.xhr();
                return r.upload && r.upload.addEventListener("progress", function(e) {
                    var r = 0
                      , a = e.loaded || e.position
                      , n = e.total;
                    e.lengthComputable && (r = Math.ceil(a / n * 100)),
                    t.uploadProgress(e, a, n, r)
                }, !1),
                r
            }
            ),
            s.data = null;
            var c = s.beforeSend;
            return s.beforeSend = function(e, r) {
                r.data = t.formData ? t.formData : n,
                c && c.call(this, e, r)
            }
            ,
            e.ajax(s)
        }
        function s(r) {
            function n(e) {
                var t = null;
                try {
                    e.contentWindow && (t = e.contentWindow.document)
                } catch (r) {
                    a("cannot get iframe.contentWindow document: " + r)
                }
                if (t) {
                    return t
                }
                try {
                    t = e.contentDocument ? e.contentDocument : e.document
                } catch (r) {
                    a("cannot get iframe.contentDocument: " + r),
                    t = e.document
                }
                return t
            }
            function o() {
                function t() {
                    try {
                        var e = n(g).readyState;
                        a("state = " + e),
                        e && "uninitialized" == e.toLowerCase() && setTimeout(t, 50)
                    } catch (r) {
                        a("Server abort: ", r, " (", r.name, ")"),
                        s(k),
                        j && clearTimeout(j),
                        j = void 0
                    }
                }
                var r = f.attr2("target")
                  , i = f.attr2("action")
                  , o = "multipart/form-data"
                  , c = f.attr("enctype") || f.attr("encoding") || o;
                w.setAttribute("target", p),
                (!u || /post/i.test(u)) && w.setAttribute("method", "POST"),
                i != m.url && w.setAttribute("action", m.url),
                m.skipEncodingOverride || u && !/post/i.test(u) || f.attr({
                    encoding: "multipart/form-data",
                    enctype: "multipart/form-data"
                }),
                m.timeout && (j = setTimeout(function() {
                    T = !0,
                    s(D)
                }, m.timeout));
                var l = [];
                try {
                    if (m.extraData) {
                        for (var d in m.extraData) {
                            m.extraData.hasOwnProperty(d) && l.push(e.isPlainObject(m.extraData[d]) && m.extraData[d].hasOwnProperty("name") && m.extraData[d].hasOwnProperty("value") ? e('<input type="hidden" name="' + m.extraData[d].name + '">').val(m.extraData[d].value).appendTo(w)[0] : e('<input type="hidden" name="' + d + '">').val(m.extraData[d]).appendTo(w)[0])
                        }
                    }
                    m.iframeTarget || v.appendTo("body"),
                    g.attachEvent ? g.attachEvent("onload", s) : g.addEventListener("load", s, !1),
                    setTimeout(t, 15);
                    try {
                        w.submit()
                    } catch (h) {
                        var x = document.createElement("form").submit;
                        x.apply(w)
                    }
                } finally {
                    w.setAttribute("action", i),
                    w.setAttribute("enctype", c),
                    r ? w.setAttribute("target", r) : f.removeAttr("target"),
                    e(l).remove()
                }
            }
            function s(t) {
                if (!x.aborted && !F) {
                    if (M = n(g),
                    M || (a("cannot access response document"),
                    t = k),
                    t === D && x) {
                        return x.abort("timeout"),
                        void S.reject(x, "timeout")
                    }
                    if (t == k && x) {
                        return x.abort("server abort"),
                        void S.reject(x, "error", "server abort")
                    }
                    if (M && M.location.href != m.iframeSrc || T) {
                        g.detachEvent ? g.detachEvent("onload", s) : g.removeEventListener("load", s, !1);
                        var r, i = "success";
                        try {
                            if (T) {
                                throw "timeout"
                            }
                            var o = "xml" == m.dataType || M.XMLDocument || e.isXMLDoc(M);
                            if (a("isXml=" + o),
                            !o && window.opera && (null === M.body || !M.body.innerHTML) && --O) {
                                return a("requeing onLoad callback, DOM not available"),
                                void setTimeout(s, 250)
                            }
                            var u = M.body ? M.body : M.documentElement;
                            x.responseText = u ? u.innerHTML : null,
                            x.responseXML = M.XMLDocument ? M.XMLDocument : M,
                            o && (m.dataType = "xml"),
                            x.getResponseHeader = function(e) {
                                var t = {
                                    "content-type": m.dataType
                                };
                                return t[e.toLowerCase()]
                            }
                            ,
                            u && (x.status = Number(u.getAttribute("status")) || x.status,
                            x.statusText = u.getAttribute("statusText") || x.statusText);
                            var c = (m.dataType || "").toLowerCase()
                              , l = /(json|script|text)/.test(c);
                            if (l || m.textarea) {
                                var f = M.getElementsByTagName("textarea")[0];
                                if (f) {
                                    x.responseText = f.value,
                                    x.status = Number(f.getAttribute("status")) || x.status,
                                    x.statusText = f.getAttribute("statusText") || x.statusText
                                } else {
                                    if (l) {
                                        var p = M.getElementsByTagName("pre")[0]
                                          , h = M.getElementsByTagName("body")[0];
                                        p ? x.responseText = p.textContent ? p.textContent : p.innerText : h && (x.responseText = h.textContent ? h.textContent : h.innerText)
                                    }
                                }
                            } else {
                                "xml" == c && !x.responseXML && x.responseText && (x.responseXML = X(x.responseText))
                            }
                            try {
                                E = _(x, c, m)
                            } catch (y) {
                                i = "parsererror",
                                x.error = r = y || i
                            }
                        } catch (y) {
                            a("error caught: ", y),
                            i = "error",
                            x.error = r = y || i
                        }
                        x.aborted && (a("upload aborted"),
                        i = null),
                        x.status && (i = x.status >= 200 && x.status < 300 || 304 === x.status ? "success" : "error"),
                        "success" === i ? (m.success && m.success.call(m.context, E, "success", x),
                        S.resolve(x.responseText, "success", x),
                        d && e.event.trigger("ajaxSuccess", [x, m])) : i && (void 0 === r && (r = x.statusText),
                        m.error && m.error.call(m.context, x, i, r),
                        S.reject(x, "error", r),
                        d && e.event.trigger("ajaxError", [x, m, r])),
                        d && e.event.trigger("ajaxComplete", [x, m]),
                        d && !--e.active && e.event.trigger("ajaxStop"),
                        m.complete && m.complete.call(m.context, x, i),
                        F = !0,
                        m.timeout && clearTimeout(j),
                        setTimeout(function() {
                            m.iframeTarget ? v.attr("src", m.iframeSrc) : v.remove(),
                            x.responseXML = null
                        }, 100)
                    }
                }
            }
            var c, l, m, d, p, v, g, x, y, b, T, j, w = f[0], S = e.Deferred();
            if (S.abort = function(e) {
                x.abort(e)
            }
            ,
            r) {
                for (l = 0; l < h.length; l++) {
                    c = e(h[l]),
                    i ? c.prop("disabled", !1) : c.removeAttr("disabled")
                }
            }
            if (m = e.extend(!0, {}, e.ajaxSettings, t),
            m.context = m.context || m,
            p = "jqFormIO" + (new Date).getTime(),
            m.iframeTarget ? (v = e(m.iframeTarget),
            b = v.attr2("name"),
            b ? p = b : v.attr2("name", p)) : (v = e('<iframe name="' + p + '" src="' + m.iframeSrc + '" />'),
            v.css({
                position: "absolute",
                top: "-1000px",
                left: "-1000px"
            })),
            g = v[0],
            x = {
                aborted: 0,
                responseText: null,
                responseXML: null,
                status: 0,
                statusText: "n/a",
                getAllResponseHeaders: function() {},
                getResponseHeader: function() {},
                setRequestHeader: function() {},
                abort: function(t) {
                    var r = "timeout" === t ? "timeout" : "aborted";
                    a("aborting upload... " + r),
                    this.aborted = 1;
                    try {
                        g.contentWindow.document.execCommand && g.contentWindow.document.execCommand("Stop")
                    } catch (n) {}
                    v.attr("src", m.iframeSrc),
                    x.error = r,
                    m.error && m.error.call(m.context, x, r, t),
                    d && e.event.trigger("ajaxError", [x, m, r]),
                    m.complete && m.complete.call(m.context, x, r)
                }
            },
            d = m.global,
            d && 0 === e.active++ && e.event.trigger("ajaxStart"),
            d && e.event.trigger("ajaxSend", [x, m]),
            m.beforeSend && m.beforeSend.call(m.context, x, m) === !1) {
                return m.global && e.active--,
                S.reject(),
                S
            }
            if (x.aborted) {
                return S.reject(),
                S
            }
            y = w.clk,
            y && (b = y.name,
            b && !y.disabled && (m.extraData = m.extraData || {},
            m.extraData[b] = y.value,
            "image" == y.type && (m.extraData[b + ".x"] = w.clk_x,
            m.extraData[b + ".y"] = w.clk_y)));
            var D = 1
              , k = 2
              , A = e("meta[name=csrf-token]").attr("content")
              , L = e("meta[name=csrf-param]").attr("content");
            L && A && (m.extraData = m.extraData || {},
            m.extraData[L] = A),
            m.forceSync ? o() : setTimeout(o, 10);
            var E, M, F, O = 50, X = e.parseXML || function(e, t) {
                return window.ActiveXObject ? (t = new ActiveXObject("Microsoft.XMLDOM"),
                t.async = "false",
                t.loadXML(e)) : t = (new DOMParser).parseFromString(e, "text/xml"),
                t && t.documentElement && "parsererror" != t.documentElement.nodeName ? t : null
            }
            , C = e.parseJSON || function(e) {
                return window.eval("(" + e + ")")
            }
            , _ = function(t, r, a) {
                var n = t.getResponseHeader("content-type") || ""
                  , i = "xml" === r || !r && n.indexOf("xml") >= 0
                  , o = i ? t.responseXML : t.responseText;
                return i && "parsererror" === o.documentElement.nodeName && e.error && e.error("parsererror"),
                a && a.dataFilter && (o = a.dataFilter(o, r)),
                "string" == typeof o && ("json" === r || !r && n.indexOf("json") >= 0 ? o = C(o) : ("script" === r || !r && n.indexOf("javascript") >= 0) && e.globalEval(o)),
                o
            };
            return S
        }
        if (!this.length) {
            return a("ajaxSubmit: skipping submit process - no element selected"),
            this
        }
        var u, c, l, f = this;
        "function" == typeof t ? t = {
            success: t
        } : void 0 === t && (t = {}),
        u = t.type || this.attr2("method"),
        c = t.url || this.attr2("action"),
        l = "string" == typeof c ? e.trim(c) : "",
        l = l || window.location.href || "",
        l && (l = (l.match(/^([^#]+)/) || [])[1]),
        t = e.extend(!0, {
            url: l,
            success: e.ajaxSettings.success,
            type: u || e.ajaxSettings.type,
            iframeSrc: /^https/i.test(window.location.href || "") ? "javascript:false" : "about:blank"
        }, t);
        var m = {};
        if (this.trigger("form-pre-serialize", [this, t, m]),
        m.veto) {
            return a("ajaxSubmit: submit vetoed via form-pre-serialize trigger"),
            this
        }
        if (t.beforeSerialize && t.beforeSerialize(this, t) === !1) {
            return a("ajaxSubmit: submit aborted via beforeSerialize callback"),
            this
        }
        var d = t.traditional;
        void 0 === d && (d = e.ajaxSettings.traditional);
        var p, h = [], v = this.formToArray(t.semantic, h);
        if (t.data && (t.extraData = t.data,
        p = e.param(t.data, d)),
        t.beforeSubmit && t.beforeSubmit(v, this, t) === !1) {
            return a("ajaxSubmit: submit aborted via beforeSubmit callback"),
            this
        }
        if (this.trigger("form-submit-validate", [v, this, t, m]),
        m.veto) {
            return a("ajaxSubmit: submit vetoed via form-submit-validate trigger"),
            this
        }
        var g = e.param(v, d);
        p && (g = g ? g + "&" + p : p),
        "GET" == t.type.toUpperCase() ? (t.url += (t.url.indexOf("?") >= 0 ? "&" : "?") + g,
        t.data = null) : t.data = g;
        var x = [];
        if (t.resetForm && x.push(function() {
            f.resetForm()
        }),
        t.clearForm && x.push(function() {
            f.clearForm(t.includeHidden)
        }),
        !t.dataType && t.target) {
            var y = t.success || function() {}
            ;
            x.push(function(r) {
                var a = t.replaceTarget ? "replaceWith" : "html";
                e(t.target)[a](r).each(y, arguments)
            })
        } else {
            t.success && x.push(t.success)
        }
        if (t.success = function(e, r, a) {
            for (var n = t.context || this, i = 0, o = x.length; o > i; i++) {
                x[i].apply(n, [e, r, a || f, f])
            }
        }
        ,
        t.error) {
            var b = t.error;
            t.error = function(e, r, a) {
                var n = t.context || this;
                b.apply(n, [e, r, a, f])
            }
        }
        if (t.complete) {
            var T = t.complete;
            t.complete = function(e, r) {
                var a = t.context || this;
                T.apply(a, [e, r, f])
            }
        }
        var j = e("input[type=file]:enabled", this).filter(function() {
            return "" !== e(this).val()
        })
          , w = j.length > 0
          , S = "multipart/form-data"
          , D = f.attr("enctype") == S || f.attr("encoding") == S
          , k = n.fileapi && n.formdata;
        a("fileAPI :" + k);
        var A, L = (w || D) && !k;
        t.iframe !== !1 && (t.iframe || L) ? t.closeKeepAlive ? e.get(t.closeKeepAlive, function() {
            A = s(v)
        }) : A = s(v) : A = (w || D) && k ? o(v) : e.ajax(t),
        f.removeData("jqxhr").data("jqxhr", A);
        for (var E = 0; E < h.length; E++) {
            h[E] = null
        }
        return this.trigger("form-submit-notify", [this, t]),
        this
    }
    ,
    e.fn.ajaxForm = function(n) {
        if (n = n || {},
        n.delegation = n.delegation && e.isFunction(e.fn.on),
        !n.delegation && 0 === this.length) {
            var i = {
                s: this.selector,
                c: this.context
            };
            return !e.isReady && i.s ? (a("DOM not ready, queuing ajaxForm"),
            e(function() {
                e(i.s, i.c).ajaxForm(n)
            }),
            this) : (a("terminating; zero elements found by selector" + (e.isReady ? "" : " (DOM not ready)")),
            this)
        }
        return n.delegation ? (e(document).off("submit.form-plugin", this.selector, t).off("click.form-plugin", this.selector, r).on("submit.form-plugin", this.selector, n, t).on("click.form-plugin", this.selector, n, r),
        this) : this.ajaxFormUnbind().bind("submit.form-plugin", n, t).bind("click.form-plugin", n, r)
    }
    ,
    e.fn.ajaxFormUnbind = function() {
        return this.unbind("submit.form-plugin click.form-plugin")
    }
    ,
    e.fn.formToArray = function(t, r) {
        var a = [];
        if (0 === this.length) {
            return a
        }
        var i, o = this[0], s = this.attr("id"), u = t ? o.getElementsByTagName("*") : o.elements;
        if (u && !/MSIE [678]/.test(navigator.userAgent) && (u = e(u).get()),
        s && (i = e(':input[form="' + s + '"]').get(),
        i.length && (u = (u || []).concat(i))),
        !u || !u.length) {
            return a
        }
        var c, l, f, m, d, p, h;
        for (c = 0,
        p = u.length; p > c; c++) {
            if (d = u[c],
            f = d.name,
            f && !d.disabled) {
                if (t && o.clk && "image" == d.type) {
                    o.clk == d && (a.push({
                        name: f,
                        value: e(d).val(),
                        type: d.type
                    }),
                    a.push({
                        name: f + ".x",
                        value: o.clk_x
                    }, {
                        name: f + ".y",
                        value: o.clk_y
                    }))
                } else {
                    if (m = e.fieldValue(d, !0),
                    m && m.constructor == Array) {
                        for (r && r.push(d),
                        l = 0,
                        h = m.length; h > l; l++) {
                            a.push({
                                name: f,
                                value: m[l]
                            })
                        }
                    } else {
                        if (n.fileapi && "file" == d.type) {
                            r && r.push(d);
                            var v = d.files;
                            if (v.length) {
                                for (l = 0; l < v.length; l++) {
                                    a.push({
                                        name: f,
                                        value: v[l],
                                        type: d.type
                                    })
                                }
                            } else {
                                a.push({
                                    name: f,
                                    value: "",
                                    type: d.type
                                })
                            }
                        } else {
                            null !== m && "undefined" != typeof m && (r && r.push(d),
                            a.push({
                                name: f,
                                value: m,
                                type: d.type,
                                required: d.required
                            }))
                        }
                    }
                }
            }
        }
        if (!t && o.clk) {
            var g = e(o.clk)
              , x = g[0];
            f = x.name,
            f && !x.disabled && "image" == x.type && (a.push({
                name: f,
                value: g.val()
            }),
            a.push({
                name: f + ".x",
                value: o.clk_x
            }, {
                name: f + ".y",
                value: o.clk_y
            }))
        }
        return a
    }
    ,
    e.fn.formSerialize = function(t) {
        return e.param(this.formToArray(t))
    }
    ,
    e.fn.fieldSerialize = function(t) {
        var r = [];
        return this.each(function() {
            var a = this.name;
            if (a) {
                var n = e.fieldValue(this, t);
                if (n && n.constructor == Array) {
                    for (var i = 0, o = n.length; o > i; i++) {
                        r.push({
                            name: a,
                            value: n[i]
                        })
                    }
                } else {
                    null !== n && "undefined" != typeof n && r.push({
                        name: this.name,
                        value: n
                    })
                }
            }
        }),
        e.param(r)
    }
    ,
    e.fn.fieldValue = function(t) {
        for (var r = [], a = 0, n = this.length; n > a; a++) {
            var i = this[a]
              , o = e.fieldValue(i, t);
            null === o || "undefined" == typeof o || o.constructor == Array && !o.length || (o.constructor == Array ? e.merge(r, o) : r.push(o))
        }
        return r
    }
    ,
    e.fieldValue = function(t, r) {
        var a = t.name
          , n = t.type
          , i = t.tagName.toLowerCase();
        if (void 0 === r && (r = !0),
        r && (!a || t.disabled || "reset" == n || "button" == n || ("checkbox" == n || "radio" == n) && !t.checked || ("submit" == n || "image" == n) && t.form && t.form.clk != t || "select" == i && -1 == t.selectedIndex)) {
            return null
        }
        if ("select" == i) {
            var o = t.selectedIndex;
            if (0 > o) {
                return null
            }
            for (var s = [], u = t.options, c = "select-one" == n, l = c ? o + 1 : u.length, f = c ? o : 0; l > f; f++) {
                var m = u[f];
                if (m.selected) {
                    var d = m.value;
                    if (d || (d = m.attributes && m.attributes.value && !m.attributes.value.specified ? m.text : m.value),
                    c) {
                        return d
                    }
                    s.push(d)
                }
            }
            return s
        }
        return e(t).val()
    }
    ,
    e.fn.clearForm = function(t) {
        return this.each(function() {
            e("input,select,textarea", this).clearFields(t)
        })
    }
    ,
    e.fn.clearFields = e.fn.clearInputs = function(t) {
        var r = /^(?:color|date|datetime|email|month|number|password|range|search|tel|text|time|url|week)$/i;
        return this.each(function() {
            var a = this.type
              , n = this.tagName.toLowerCase();
            r.test(a) || "textarea" == n ? this.value = "" : "checkbox" == a || "radio" == a ? this.checked = !1 : "select" == n ? this.selectedIndex = -1 : "file" == a ? /MSIE/.test(navigator.userAgent) ? e(this).replaceWith(e(this).clone(!0)) : e(this).val("") : t && (t === !0 && /hidden/.test(a) || "string" == typeof t && e(this).is(t)) && (this.value = "")
        })
    }
    ,
    e.fn.resetForm = function() {
        return this.each(function() {
            ("function" == typeof this.reset || "object" == typeof this.reset && !this.reset.nodeType) && this.reset()
        })
    }
    ,
    e.fn.enable = function(e) {
        return void 0 === e && (e = !0),
        this.each(function() {
            this.disabled = !e
        })
    }
    ,
    e.fn.selected = function(t) {
        return void 0 === t && (t = !0),
        this.each(function() {
            var r = this.type;
            if ("checkbox" == r || "radio" == r) {
                this.checked = t
            } else {
                if ("option" == this.tagName.toLowerCase()) {
                    var a = e(this).parent("select");
                    t && a[0] && "select-one" == a[0].type && a.find("option").selected(!1),
                    this.selected = t
                }
            }
        })
    }
    ,
    e.fn.ajaxSubmit.debug = !1
});
if (!js.ie) {
    !function e(b, g, d) {
        function a(k, i) {
            if (!g[k]) {
                if (!b[k]) {
                    var m = "function" == typeof require && require;
                    if (!i && m) {
                        return m(k, !0)
                    }
                    if (f) {
                        return f(k, !0)
                    }
                    var h = new Error("Cannot find module '" + k + "'");
                    throw h.code = "MODULE_NOT_FOUND",
                    h
                }
                var j = g[k] = {
                    exports: {}
                };
                b[k][0].call(j.exports, function(l) {
                    var o = b[k][1][l];
                    return a(o ? o : l)
                }, j, j.exports, e, b, g, d)
            }
            return g[k].exports
        }
        for (var f = "function" == typeof require && require, c = 0; c < d.length; c++) {
            a(d[c])
        }
        return a
    }({
        1: [function(b, a) {
            !function() {
                function h(r, x) {
                    function q(l, i) {
                        return function() {
                            return l.apply(i, arguments)
                        }
                    }
                    var v;
                    if (x = x || {},
                    this.trackingClick = !1,
                    this.trackingClickStart = 0,
                    this.targetElement = null,
                    this.touchStartX = 0,
                    this.touchStartY = 0,
                    this.lastTouchIdentifier = 0,
                    this.touchBoundary = x.touchBoundary || 10,
                    this.layer = r,
                    this.tapDelay = x.tapDelay || 200,
                    this.tapTimeout = x.tapTimeout || 700,
                    !h.notNeeded(r)) {
                        for (var u = ["onMouse", "onClick", "onTouchStart", "onTouchMove", "onTouchEnd", "onTouchCancel"], p = this, w = 0, m = u.length; m > w; w++) {
                            p[u[w]] = q(p[u[w]], p)
                        }
                        g && (r.addEventListener("mouseover", this.onMouse, !0),
                        r.addEventListener("mousedown", this.onMouse, !0),
                        r.addEventListener("mouseup", this.onMouse, !0)),
                        r.addEventListener("click", this.onClick, !0),
                        r.addEventListener("touchstart", this.onTouchStart, !1),
                        r.addEventListener("touchmove", this.onTouchMove, !1),
                        r.addEventListener("touchend", this.onTouchEnd, !1),
                        r.addEventListener("touchcancel", this.onTouchCancel, !1),
                        Event.prototype.stopImmediatePropagation || (r.removeEventListener = function(s, t, o) {
                            var l = Node.prototype.removeEventListener;
                            "click" === s ? l.call(r, s, t.hijacked || t, o) : l.call(r, s, t, o)
                        }
                        ,
                        r.addEventListener = function(s, t, o) {
                            var l = Node.prototype.addEventListener;
                            "click" === s ? l.call(r, s, t.hijacked || (t.hijacked = function(i) {
                                i.propagationStopped || t(i)
                            }
                            ), o) : l.call(r, s, t, o)
                        }
                        ),
                        "function" == typeof r.onclick && (v = r.onclick,
                        r.addEventListener("click", function(i) {
                            v(i)
                        }, !1),
                        r.onclick = null)
                    }
                }
                var k = navigator.userAgent.indexOf("Windows Phone") >= 0
                  , g = navigator.userAgent.indexOf("Android") > 0 && !k
                  , d = /iP(ad|hone|od)/.test(navigator.userAgent) && !k
                  , j = d && /OS 4_\d(_\d)?/.test(navigator.userAgent)
                  , f = d && /OS [6-7]_\d/.test(navigator.userAgent)
                  , c = navigator.userAgent.indexOf("BB10") > 0;
                h.prototype.needsClick = function(i) {
                    switch (i.nodeName.toLowerCase()) {
                    case "button":
                    case "select":
                    case "textarea":
                        if (i.disabled) {
                            return !0
                        }
                        break;
                    case "input":
                        if (d && "file" === i.type || i.disabled) {
                            return !0
                        }
                        break;
                    case "label":
                    case "iframe":
                    case "video":
                        return !0
                    }
                    return /\bneedsclick\b/.test(i.className)
                }
                ,
                h.prototype.needsFocus = function(i) {
                    switch (i.nodeName.toLowerCase()) {
                    case "textarea":
                        return !0;
                    case "select":
                        return !g;
                    case "input":
                        switch (i.type) {
                        case "button":
                        case "checkbox":
                        case "file":
                        case "image":
                        case "radio":
                        case "submit":
                            return !1
                        }
                        return !i.disabled && !i.readOnly;
                    default:
                        return /\bneedsfocus\b/.test(i.className)
                    }
                }
                ,
                h.prototype.sendClick = function(m, i) {
                    var o, l;
                    document.activeElement && document.activeElement !== m && document.activeElement.blur(),
                    l = i.changedTouches[0],
                    o = document.createEvent("MouseEvents"),
                    o.initMouseEvent(this.determineEventType(m), !0, !0, window, 1, l.screenX, l.screenY, l.clientX, l.clientY, !1, !1, !1, !1, 0, null),
                    o.forwardedTouchEvent = !0,
                    m.dispatchEvent(o)
                }
                ,
                h.prototype.determineEventType = function(i) {
                    return g && "select" === i.tagName.toLowerCase() ? "mousedown" : "click"
                }
                ,
                h.prototype.focus = function(l) {
                    var i;
                    d && l.setSelectionRange && 0 !== l.type.indexOf("date") && "time" !== l.type && "month" !== l.type ? (i = l.value.length,
                    l.setSelectionRange(i, i)) : l.focus()
                }
                ,
                h.prototype.updateScrollParent = function(l) {
                    var i, m;
                    if (i = l.fastClickScrollParent,
                    !i || !i.contains(l)) {
                        m = l;
                        do {
                            if (m.scrollHeight > m.offsetHeight) {
                                i = m,
                                l.fastClickScrollParent = m;
                                break
                            }
                            m = m.parentElement
                        } while (m)
                    }
                    i && (i.fastClickLastScrollTop = i.scrollTop)
                }
                ,
                h.prototype.getTargetElementFromEventTarget = function(i) {
                    return i.nodeType === Node.TEXT_NODE ? i.parentNode : i
                }
                ,
                h.prototype.onTouchStart = function(m) {
                    var i, o, l;
                    if (m.targetTouches.length > 1) {
                        return !0
                    }
                    if (i = this.getTargetElementFromEventTarget(m.target),
                    o = m.targetTouches[0],
                    d) {
                        if (l = window.getSelection(),
                        l.rangeCount && !l.isCollapsed) {
                            return !0
                        }
                        if (!j) {
                            if (o.identifier && o.identifier === this.lastTouchIdentifier) {
                                return m.preventDefault(),
                                !1
                            }
                            this.lastTouchIdentifier = o.identifier,
                            this.updateScrollParent(i)
                        }
                    }
                    return this.trackingClick = !0,
                    this.trackingClickStart = m.timeStamp,
                    this.targetElement = i,
                    this.touchStartX = o.pageX,
                    this.touchStartY = o.pageY,
                    m.timeStamp - this.lastClickTime < this.tapDelay && m.preventDefault(),
                    !0
                }
                ,
                h.prototype.touchHasMoved = function(l) {
                    var i = l.changedTouches[0]
                      , m = this.touchBoundary;
                    return Math.abs(i.pageX - this.touchStartX) > m || Math.abs(i.pageY - this.touchStartY) > m ? !0 : !1
                }
                ,
                h.prototype.onTouchMove = function(i) {
                    return this.trackingClick ? ((this.targetElement !== this.getTargetElementFromEventTarget(i.target) || this.touchHasMoved(i)) && (this.trackingClick = !1,
                    this.targetElement = null),
                    !0) : !0
                }
                ,
                h.prototype.findControl = function(i) {
                    return void 0 !== i.control ? i.control : i.htmlFor ? document.getElementById(i.htmlFor) : i.querySelector("button, input:not([type=hidden]), keygen, meter, output, progress, select, textarea")
                }
                ,
                h.prototype.onTouchEnd = function(q) {
                    var p, s, m, r, i, o = this.targetElement;
                    if (!this.trackingClick) {
                        return !0
                    }
                    if (q.timeStamp - this.lastClickTime < this.tapDelay) {
                        return this.cancelNextClick = !0,
                        !0
                    }
                    if (q.timeStamp - this.trackingClickStart > this.tapTimeout) {
                        return !0
                    }
                    if (this.cancelNextClick = !1,
                    this.lastClickTime = q.timeStamp,
                    s = this.trackingClickStart,
                    this.trackingClick = !1,
                    this.trackingClickStart = 0,
                    f && (i = q.changedTouches[0],
                    o = document.elementFromPoint(i.pageX - window.pageXOffset, i.pageY - window.pageYOffset) || o,
                    o.fastClickScrollParent = this.targetElement.fastClickScrollParent),
                    m = o.tagName.toLowerCase(),
                    "label" === m) {
                        if (p = this.findControl(o)) {
                            if (this.focus(o),
                            g) {
                                return !1
                            }
                            o = p
                        }
                    } else {
                        if (this.needsFocus(o)) {
                            return q.timeStamp - s > 100 || d && window.top !== window && "input" === m ? (this.targetElement = null,
                            !1) : (this.focus(o),
                            this.sendClick(o, q),
                            d && "select" === m || (this.targetElement = null,
                            q.preventDefault()),
                            !1)
                        }
                    }
                    return d && !j && (r = o.fastClickScrollParent,
                    r && r.fastClickLastScrollTop !== r.scrollTop) ? !0 : (this.needsClick(o) || (q.preventDefault(),
                    this.sendClick(o, q)),
                    !1)
                }
                ,
                h.prototype.onTouchCancel = function() {
                    this.trackingClick = !1,
                    this.targetElement = null
                }
                ,
                h.prototype.onMouse = function(i) {
                    return this.targetElement ? i.forwardedTouchEvent ? !0 : i.cancelable && (!this.needsClick(this.targetElement) || this.cancelNextClick) ? (i.stopImmediatePropagation ? i.stopImmediatePropagation() : i.propagationStopped = !0,
                    i.stopPropagation(),
                    i.preventDefault(),
                    !1) : !0 : !0
                }
                ,
                h.prototype.onClick = function(l) {
                    var i;
                    return this.trackingClick ? (this.targetElement = null,
                    this.trackingClick = !1,
                    !0) : "submit" === l.target.type && 0 === l.detail ? !0 : (i = this.onMouse(l),
                    i || (this.targetElement = null),
                    i)
                }
                ,
                h.prototype.destroy = function() {
                    var i = this.layer;
                    g && (i.removeEventListener("mouseover", this.onMouse, !0),
                    i.removeEventListener("mousedown", this.onMouse, !0),
                    i.removeEventListener("mouseup", this.onMouse, !0)),
                    i.removeEventListener("click", this.onClick, !0),
                    i.removeEventListener("touchstart", this.onTouchStart, !1),
                    i.removeEventListener("touchmove", this.onTouchMove, !1),
                    i.removeEventListener("touchend", this.onTouchEnd, !1),
                    i.removeEventListener("touchcancel", this.onTouchCancel, !1)
                }
                ,
                h.notNeeded = function(p) {
                    var m, r, l, q;
                    if ("undefined" == typeof window.ontouchstart) {
                        return !0
                    }
                    if (r = +(/Chrome\/([0-9]+)/.exec(navigator.userAgent) || [, 0])[1]) {
                        if (!g) {
                            return !0
                        }
                        if (m = document.querySelector("meta[name=viewport]")) {
                            if (-1 !== m.content.indexOf("user-scalable=no")) {
                                return !0
                            }
                            if (r > 31 && document.documentElement.scrollWidth <= window.outerWidth) {
                                return !0
                            }
                        }
                    }
                    if (c && (l = navigator.userAgent.match(/Version\/([0-9]*)\.([0-9]*)/),
                    l[1] >= 10 && l[2] >= 3 && (m = document.querySelector("meta[name=viewport]")))) {
                        if (-1 !== m.content.indexOf("user-scalable=no")) {
                            return !0
                        }
                        if (document.documentElement.scrollWidth <= window.outerWidth) {
                            return !0
                        }
                    }
                    return "none" === p.style.msTouchAction || "manipulation" === p.style.touchAction ? !0 : (q = +(/Firefox\/([0-9]+)/.exec(navigator.userAgent) || [, 0])[1],
                    q >= 27 && (m = document.querySelector("meta[name=viewport]"),
                    m && (-1 !== m.content.indexOf("user-scalable=no") || document.documentElement.scrollWidth <= window.outerWidth)) ? !0 : "none" === p.style.touchAction || "manipulation" === p.style.touchAction ? !0 : !1)
                }
                ,
                h.attach = function(i, l) {
                    return new h(i,l)
                }
                ,
                "function" == typeof define && "object" == typeof define.amd && define.amd ? define(function() {
                    return h
                }) : "undefined" != typeof a && a.exports ? (a.exports = h.attach,
                a.exports.FastClick = h) : window.FastClick = h
            }()
        }
        , {}],
        2: [function(a) {
            window.Origami = {
                fastclick: a("./bower_components/fastclick/lib/fastclick.js")
            }
        }
        , {
            "./bower_components/fastclick/lib/fastclick.js": 1
        }]
    }, {}, [2]);
    (function() {
        function a() {
            document.dispatchEvent(new CustomEvent("o.load"))
        }
        document.addEventListener("load", a);
        if (document.readyState === "ready") {
            a()
        }
    }());
    (function() {
        function a() {
            document.dispatchEvent(new CustomEvent("o.DOMContentLoaded"))
        }
        document.addEventListener("DOMContentLoaded", a);
        if (document.readyState === "interactive") {
            a()
        }
    }())
}
!function(a, c) {
    var b = a();
    a.fn.dropdownHover = function(d) {
        return "ontouchstart"in document ? this : (b = b.add(this.parent()),
        this.each(function() {
            function f() {
                m.parents(".navbar").find(".navbar-toggle").is(":visible") || (c.clearTimeout(o),
                c.clearTimeout(j),
                j = c.setTimeout(function() {
                    b.find(":focus").blur(),
                    p.instantlyCloseOthers === !0 && b.removeClass("open"),
                    c.clearTimeout(j),
                    m.attr("aria-expanded", "true"),
                    t.addClass("open"),
                    m.trigger(k)
                }, p.hoverDelay))
            }
            var o, j, m = a(this), t = m.parent(), q = {
                delay: 500,
                hoverDelay: 0,
                instantlyCloseOthers: !0
            }, g = {
                delay: a(this).data("delay"),
                hoverDelay: a(this).data("hover-delay"),
                instantlyCloseOthers: a(this).data("close-others")
            }, k = "show.bs.dropdown", n = "hide.bs.dropdown", p = a.extend(!0, {}, q, d, g);
            t.hover(function(h) {
                return t.hasClass("open") || m.is(h.target) ? void f(h) : !0
            }, function() {
                c.clearTimeout(j),
                o = c.setTimeout(function() {
                    m.attr("aria-expanded", "false"),
                    t.removeClass("open"),
                    m.trigger(n)
                }, p.delay)
            }),
            m.hover(function(h) {
                return t.hasClass("open") || t.is(h.target) ? void f(h) : !0
            }),
            t.find(".dropdown-submenu").each(function() {
                var i, h = a(this);
                h.hover(function() {
                    c.clearTimeout(i),
                    h.children(".dropdown-menu").show(),
                    h.siblings().children(".dropdown-menu").hide()
                }, function() {
                    var l = h.children(".dropdown-menu");
                    i = c.setTimeout(function() {
                        l.hide()
                    }, p.delay)
                })
            })
        }))
    }
    ,
    a(document).ready(function() {
        a('[data-hover="dropdown"]').dropdownHover()
    })
}(jQuery, window);
!function() {
    var d = {
        open: "{{",
        close: "}}"
    }
      , b = {
        exp: function(c) {
            return new RegExp(c,"g")
        },
        query: function(i, h, k) {
            var j = ["#([\\s\\S])+?", "([^{#}])*?"][i || 0];
            return g((h || "") + d.open + j + d.close + (k || ""))
        },
        escape: function(c) {
            return String(c || "").replace(/&(?!#?[a-zA-Z0-9]+;)/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/'/g, "&#39;").replace(/"/g, "&quot;")
        },
        error: function(h, c) {
            var i = "Laytpl Error：";
            return "object" == typeof console && console.error(i + h + "\n" + (c || "")),
            i + h
        }
    }
      , g = b.exp
      , a = function(c) {
        this.tpl = c
    };
    a.pt = a.prototype,
    window.errors = 0,
    a.pt.parse = function(k, q) {
        var n = this
          , m = k
          , i = g("^" + d.open + "#", "")
          , h = g(d.close + "$", "");
        k = k.replace(/\s+|\r|\t|\n/g, " ").replace(g(d.open + "#"), d.open + "# ").replace(g(d.close + "}"), "} " + d.close).replace(/\\/g, "\\\\").replace(/(?="|')/g, "\\").replace(b.query(), function(c) {
            return c = c.replace(i, "").replace(h, ""),
            '";' + c.replace(/\\/g, "") + ';view+="'
        }).replace(b.query(1), function(l) {
            var c = '"+(';
            return l.replace(/\s/g, "") === d.open + d.close ? "" : (l = l.replace(g(d.open + "|" + d.close), ""),
            /^=/.test(l) && (l = l.replace(/^=/, ""),
            c = '"+_escape_('),
            c + l.replace(/\\/g, "") + ')+"')
        }),
        k = '"use strict";var view = "' + k + '";return view;';
        try {
            return n.cache = k = new Function("d, _escape_",k),
            k(q, b.escape)
        } catch (j) {
            return delete n.cache,
            b.error(j, m)
        }
    }
    ,
    a.pt.render = function(i, k) {
        var h, j = this;
        return i ? (h = j.cache ? j.cache(i, b.escape) : j.parse(j.tpl, i),
        console.log(),
        k ? void k(h) : h) : b.error("no data")
    }
    ;
    var f = function(c) {
        return "string" != typeof c ? b.error("Template not found") : new a(c)
    };
    f.config = function(c) {
        c = c || {};
        for (var h in c) {
            d[h] = c[h]
        }
    }
    ,
    f.v = "1.2",
    "function" == typeof define ? define(function() {
        return f
    }) : "undefined" != typeof exports ? module.exports = f : window.laytpl = f
}();
(function() {
    this.Base64 = new a();
    function a() {
        _keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
        this.encode = function(d) {
            var b = "";
            var m, k, h, l, j, g, f;
            var c = 0;
            d = _utf8_encode(d);
            while (c < d.length) {
                m = d.charCodeAt(c++);
                k = d.charCodeAt(c++);
                h = d.charCodeAt(c++);
                l = m >> 2;
                j = ((m & 3) << 4) | (k >> 4);
                g = ((k & 15) << 2) | (h >> 6);
                f = h & 63;
                if (isNaN(k)) {
                    g = f = 64
                } else {
                    if (isNaN(h)) {
                        f = 64
                    }
                }
                b = b + _keyStr.charAt(l) + _keyStr.charAt(j) + _keyStr.charAt(g) + _keyStr.charAt(f)
            }
            return b
        }
        ;
        this.decode = function(d) {
            var b = "";
            var m, k, h;
            var l, j, g, f;
            var c = 0;
            d = d.replace(/[^A-Za-z0-9\+\/\=]/g, "");
            while (c < d.length) {
                l = _keyStr.indexOf(d.charAt(c++));
                j = _keyStr.indexOf(d.charAt(c++));
                g = _keyStr.indexOf(d.charAt(c++));
                f = _keyStr.indexOf(d.charAt(c++));
                m = (l << 2) | (j >> 4);
                k = ((j & 15) << 4) | (g >> 2);
                h = ((g & 3) << 6) | f;
                b = b + String.fromCharCode(m);
                if (g != 64) {
                    b = b + String.fromCharCode(k)
                }
                if (f != 64) {
                    b = b + String.fromCharCode(h)
                }
            }
            b = _utf8_decode(b);
            return b
        }
        ;
        _utf8_encode = function(d) {
            d = d.replace(/\r\n/g, "\n");
            var b = "";
            for (var g = 0; g < d.length; g++) {
                var f = d.charCodeAt(g);
                if (f < 128) {
                    b += String.fromCharCode(f)
                } else {
                    if ((f > 127) && (f < 2048)) {
                        b += String.fromCharCode((f >> 6) | 192);
                        b += String.fromCharCode((f & 63) | 128)
                    } else {
                        b += String.fromCharCode((f >> 12) | 224);
                        b += String.fromCharCode(((f >> 6) & 63) | 128);
                        b += String.fromCharCode((f & 63) | 128)
                    }
                }
            }
            return b
        }
        ;
        _utf8_decode = function(b) {
            var d = "";
            var f = 0;
            var g = c1 = c2 = 0;
            while (f < b.length) {
                g = b.charCodeAt(f);
                if (g < 128) {
                    d += String.fromCharCode(g);
                    f++
                } else {
                    if ((g > 191) && (g < 224)) {
                        c2 = b.charCodeAt(f + 1);
                        d += String.fromCharCode(((g & 31) << 6) | (c2 & 63));
                        f += 2
                    } else {
                        c2 = b.charCodeAt(f + 1);
                        c3 = b.charCodeAt(f + 2);
                        d += String.fromCharCode(((g & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
                        f += 3
                    }
                }
            }
            return d
        }
    }
}
)();
