(function (app) {
    //工具类服务
    app.factory("util", function () {
        var obj = {
            trim: function (e) {
                var e = e.replace(/^\s\s*/, ""),
                    t = /\s/,
                    i = e.length;
                while (t.test(e.charAt(--i)));
                return e.slice(0, i + 1)
            },
            rtrim: function (e, t) {
                if (e[e.length - 1] === t) return e.substr(0, e.length - 1);
                return e
            },
            format: function () {
                if (arguments.length == 0) return ""; 
                if (arguments.length == 1) return arguments[0];
                var e = arguments[0];
                var t = Array.prototype.slice.call(arguments).splice(1);
                return e.replace(/{(\d+)}/g, function () {
                    return t[arguments[1]]
                })
            },
            empty: function (t) {
                if (!t) return true;
                if (Array.isArray(t) && t.length == 0) return true;
                for (var i in t) if (t.hasOwnProperty(i)) return false;
                return false;
            },
            sub: function (e, t, i) {
                i = i || "";
                var o = /[^\x00-\xff]/g;
                if (e.replace(o, "mm").length <= t) return e;
                var n = Math.floor(t / 2);
                for (var a = n; a < e.length; a++) {
                    if (e.substr(0, a).replace(o, "mm").length >= t) return e.substr(0, a) + i
                }
                return e
            },
            test: function (e, t) {
                return new RegExp(e, "i").test(t)
            },
            leftPad: function (e, t, i) {
                return Array(t - String(e).length + 1).join(i || "0") + e
            },
            unixTime: function (e) {
                e = e || new Date;
                return Math.round(+e / 1e3)
            },
            extend: function (e, t) {
                if (!t || typeof t !== "object") return e;
                var i = Object.keys(t);
                var o = i.length;
                while (o--) e[i[o]] = t[i[o]];
                return e
            },
            isString: function (e) {
                return Object.prototype.toString.call(e) === "[object String]"
            },
            isFunction: function (e) {
                return typeof e === "function"
            },
            isObject: function (e) {
                return typeof e === "object"
            },
            isArray: function (e) {
                return Array.isArray(e)
            },
            rand: function (e, t) {
                return Math.floor(Math.random() * (t - e)) + e
            },
            isMobile: function (e) {
                return e.match(/^(^(13\d|14[57]|15[^4,\D]|17[678]|18\d)\d{8}|170[059]\d{7})$/gi)
            }
        };
        return obj;
    });
})(angular.module('app.services'));