{"version":3,"file":"inet-core.mjs","sources":["../../src/lib/inet-core.js","../../src/iNet.ts","../../src/model/error-message.ts","../../src/model/response-data.ts","../../src/http-url-encoding-codec.ts","../../src/loading-indicator.service.ts","../../src/http-client.service.ts","../../src/core.service.ts","../../src/suggestion.service.ts","../../src/infinite-scroller.directive.ts","../../src/model/new-password.ts","../../src/notification.service.ts","../../src/security.service.ts","../../src/role-access.directive.ts","../../src/ssourl.pipe.ts","../../src/user-profile.service.ts","../../src/accent.service.ts","../../src/cache-storage.service.ts","../../src/autosize.directive.ts","../../src/avatar.directive.ts","../../src/resource-loader.service.ts","../../src/init-app.ts","../../src/core.module.ts","../../src/websocket/websocket-abstract.ts","../../src/websocket/websocket-jboss.ts","../../src/websocket/websocket-vertx.ts","../../src/websocket/websocket-client.ts","../../src/websocket/websocket-client.service.ts","../../src/utils/HtmlUtils.ts","../../src/uploader.service.ts","../../inet-core.ts"],"sourcesContent":["( function( global, factory ) {\n\n  \"use strict\";\n\n  if ( typeof module === \"object\" && typeof module.exports === \"object\" ) {\n\n    // For CommonJS and CommonJS-like environments where a proper `window`\n    // is present, execute the factory and get iNet.\n    // For environments that do not have a `window` with a `document`\n    // (such as Node.js), expose a factory as module.exports.\n    // This accentuates the need for the creation of a real `window`.\n    // e.g. var iNet = require(\"iNet\")(window);\n    module.exports = global.document ?\n      factory( global, true ) :\n      function( w ) {\n        return factory( w );\n      };\n  } else {\n    factory( global );\n  }\n\n// Pass this if window is not defined yet\n} )( typeof window !== \"undefined\" ? window : this, function( window, noGlobal ) {\n  /*--------------------------------------------\n   |         C O N S T R U C T O R S           |\n   ============================================*/\n  /**\n   * Define the iNet instance.\n   */\n  /**\n   * iNet core utilities and functions.\n   *\n   * The iNet namespace (global object) encapsulates all classes, singletons, and utility methods provided by iNet Solution's libraries.\n   * @class iNet\n   * @singleton\n   */\n  var iNet = {\n    /**\n     * @property {String}\n     * @readonly\n     * The version of the framework\n     * @type String Major[.Minor[.Patch[.Build[Release]]]]\n     *\n     */\n    version: '6.0.0.1',\n    /**\n     * The date release the framework\n     * @property {String}\n     * @readonly\n     */\n    build_date: '14/06/2022',\n    /**\n     * @property {String} BLANK_IMAGE_URL\n     * URL to a 1x1 transparent gif image used by iNet to create inline icons with\n     * CSS background images.\n     */\n    BLANK_IMAGE_URL: 'data:image/gif;base64,R0lGODlhAQABAID/AMDAwAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw=='\n  };\n\n  /*--------------------------------------------\n   |               M E T H O D S               |\n   ============================================*/\n  /**\n   * Copies all the properties of config to obj.\n   * Example:\n   *\n   *      var a = {a:1,b:2,c:5};\n   *      var b = {b:3,d:7};\n   *      iNet.apply(a, b);\n   *      // a ={ a: 1, b: 3, c: 5, d: 7};\n   *\n   * @param {Object} obj The receiver of the properties\n   * @param {Object} config The source of the properties\n   * @param {Object} defaults A different object that will also be applied for default values\n   * @return {Object} returns obj\n   * @member iNet apply\n   */\n  iNet.apply = function (o, c, defaults) {\n    // no \"this\" reference for friendly out of scope calls\n    if (defaults) {\n      iNet.apply(o, defaults);\n    }\n    if (o && c && typeof c == 'object') {\n      for (var p in c) {\n        o[p] = c[p];\n      }\n    }\n    return o;\n  };\n  (function () {\n    var ua = navigator.userAgent.toLowerCase(), toString = Object.prototype.toString,\n      check = function (r) {\n        return r.test(ua);\n      },\n      DOC = document,\n      isStrict = DOC.compatMode == \"CSS1Compat\",\n      docMode = document.documentMode,\n      isOpera = check(/opera/),\n      isChrome = check(/chrome/),\n      isWebKit = check(/webkit/),\n      isSafari = !isChrome && check(/safari/),\n      isSafari2 = isSafari && check(/applewebkit\\/4/), // unique to Safari 2\n      isSafari3 = isSafari && check(/version\\/3/),\n      isSafari4 = isSafari && check(/version\\/4/),\n      isIE = !isOpera && check(/msie/),\n      isIE7 = isIE && (check(/msie 7/) || docMode == 7),\n      isIE8 = isIE && (check(/msie 8/) && docMode != 7 && docMode != 9 && docMode != 10 || docMode == 8),\n      isIE9 = isIE && (check(/msie 9/) && docMode != 7 && docMode != 8 && docMode != 10 || docMode == 9),\n      isIE10 = isIE && (check(/msie 10/) && docMode != 7 && docMode != 8 && docMode != 9 || docMode == 10),\n      isIE6 = isIE && !isIE7 && !isIE8 && !isIE9 && !isIE10,\n      isSupport = (isIE && (docMode && !(docMode >= 7))) || !isIE,\n      isGecko = !isWebKit && check(/gecko/),\n      isGecko2 = isGecko && check(/rv:1\\.8/),\n      isGecko3 = isGecko && check(/rv:1\\.9/),\n      isGecko4 = isGecko && check(/rv:2\\.0/),\n      isBorderBox = isIE && !isStrict,\n      isWindows = check(/windows|win32/),\n      isMac = check(/macintosh|mac os x/),\n      isAir = check(/adobeair/),\n      isLinux = check(/linux/),\n      isSecure = /^https/i.test(window.location.protocol),\n      propertyNameSplitRe= /[,;\\s]+/;\n    iNet.apply(iNet, {\n      /**\n       * Returns true if the passed object is a JavaScript Function, otherwise false.\n       * @param {Object} object The object to test\n       * @return {Boolean}\n       */\n      isFunction: function (v) {\n        return toString.apply(v) === '[object Function]';\n      },\n      /**\n       * Returns the current context path.\n       *\n       * @return {String} The current context path\n       */\n      getContextPath: function () {\n        var pathname = window.location.pathname;\n        if (pathname == '/') {\n          return '/';\n        }\n\n        var position = pathname.indexOf('/', 1);\n        if (position == 0) {\n          position = pathname.length;\n        }\n        return pathname.substr(0, position);\n      },\n      /**\n       * return a new MediaQueryList object.\n       * @param {String} media Is a string mediaQueryString\n       * @return MediaQueryList object\n       */\n      matchMedia: function(media){\n        return window.matchMedia(media);\n      },\n      /**\n       * Returns the true if viewport is match with width value, otherwise false.\n       * @param {Number} v The width to test\n       * @returns {Boolean}\n       */\n      matchWidth: function(v){\n        return iNet.matchMedia(\"(min-width:\"+v+\"px)\").matches;\n      },\n      /**\n       * Returns the full url from the given relative path.\n       *\n       * @param {String} relativePath (required) The given relative path.\n       *\n       * @return {String} The string URL\n       */\n      getUrl: function (relativePath) {\n        relativePath = relativePath || '';\n        var url = window.location.protocol + '//';\n        url += window.location.hostname;\n        var __port = window.location.port;\n\n        if (!iNet.isEmpty(__port)) {\n          if (isSecure && (__port != 443)) {\n            url += ':' + __port;\n          }\n          else if (!isSecure && __port != 80) {\n            url += ':' + __port;\n          }\n        }\n        // append the context path.\n        var pathname = window.location.pathname;\n        if (pathname.length > 1) {\n          var position = pathname.indexOf('/', 1);\n          if (position == 0)\n            position = pathname.length;\n          url += pathname.substr(0, position);\n        }\n        var prefix = iNet.prefix || 'smartcloud';\n        var extension = iNet.extension || '.cpx';\n        if (relativePath.indexOf('/') == 0) {\n          return url + '/' + prefix + relativePath + extension;\n        }\n        else {\n          return url + '/' + prefix + '/' + relativePath + extension;\n        }\n      },\n      /**\n       * Returns full url form given relative path with pattern\n       * @param {String} url The URL\n       * @param {String} pattern (optional) The pattern of module\n       * @return {String} The string URL\n       */\n      getXUrl: function (url, pattern) {\n        var __pattern = !iNet.isEmpty(pattern) ? pattern : iNet.pattern;\n        if (!iNet.isEmpty(__pattern)) {\n          return iNet.getUrl(__pattern + \"/\" + url)\n        }\n        return iNet.getUrl(url);\n      },\n      /**\n       * Returns full url form given relative path with firm prefix\n       * @param {String} path (required) The URL\n       * @return {String} The string URL\n       */\n      getPUrl: function (path) {\n        path = path || '';\n        var url = window.location.protocol + '//';\n        url += window.location.hostname;\n        var __port = window.location.port;\n\n        if (!iNet.isEmpty(__port)) {\n          if (isSecure && (__port != 443)) {\n            url += ':' + __port;\n          }\n          else if (!isSecure && __port != 80) {\n            url += ':' + __port;\n          }\n        }\n        // append the context path.\n        var pathname = window.location.pathname;\n        if (pathname.length > 1) {\n          var position = pathname.indexOf('/', 1);\n          if (position == 0)\n            position = pathname.length;\n          url += pathname.substr(0, position);\n        }\n        var prefix = iNet.firmPrefix || iNet.prefix || 'smartcloud';\n        var extension = iNet.extension || '.cpx';\n        if(prefix==='icloud') {\n          prefix = 'smartcloud';\n        }\n        if (path.indexOf('/') == 0) {\n          return url + '/' + prefix + path + extension;\n        }\n        else {\n          return url + '/' + prefix + '/' + path + extension;\n        }\n      },\n      /**\n       * Returns the SSO redirect url from the given url path.\n       *\n       * @param {String} url (required) The given url.\n       * @param {String} app (option) The given application.\n       *\n       * @return {String} The string SSO redirect URL\n       */\n      getSSOUrl: function(url, app){\n        if(iNet.isEmpty(url)) {\n          return '';\n        }\n        return iNet.urlAppend(iNet.getUrl('ssorequest/redirect'), (!iNet.isEmpty(app) ? 'application=' + app + '&' : '') + 'url=' + encodeURIComponent(url));\n      },\n      /**\n       * Returns the Discovery redirect url from the given url path.\n       *\n       * @param {String} url (required) The given url.\n       * @param {String} app (option) The given application.\n       *\n       * @return {String} The string SSO Discovery redirect URL\n       */\n      getSSODiscoveryUrl: function(url, app){\n        if(iNet.isEmpty(url)) {\n          return '';\n        }\n        return iNet.urlAppend(iNet.getUrl('ssodiscovery/redirect'), (!iNet.isEmpty(app) ? 'application=' + app + '&' : '') + 'url=' + encodeURIComponent(url));\n      },\n      /**\n       * Returns the Discovery redirect url from the given url path.\n       *\n       * @param {String} app (option) The given application.\n       * @param {Object} params (option) The given params.\n       *\n       * @return {String} The string SSO Callback redirect URL\n       */\n      getSSOCallback: function(app, params){\n        var __params = params || {};\n        if(!iNet.isEmpty(app)) {\n          __params.application = app;\n        }\n        var __pairs= Object.keys(__params).map(function(k) {\n          return encodeURIComponent(k) + \"=\" + encodeURIComponent(__params[k]);\n        }).join('&');\n\n        return iNet.urlAppend(iNet.getPUrl('ssocallback/redirect'), __pairs);\n      },\n      /**\n       * Appends content to the query string of a URL, handling logic for whether to place\n       * a question mark or ampersand.\n       * @param {String} url The URL to append to.\n       * @param {String} s The content to append to the URL.\n       * @return (String) The resulting URL\n       */\n      urlAppend: function (url, s) {\n        if (!iNet.isEmpty(s)) {\n          return url + (url.indexOf('?') === -1 ? '?' : '&') + s;\n        }\n        return url;\n      },\n      /**\n       * Clone simple variables including array, {}-like objects, DOM nodes and Date without keeping the old reference.\n       * A reference for the object itself is returned if it's not a direct descendant of Object.\n       *\n       * @param {Object} obj The object to clone\n       * @return {Object} The new object\n       */\n      clone: function (obj) {\n        if (null == obj || \"object\" != typeof obj) {\n          return obj;\n        }\n        var copy = obj.constructor();\n        if(copy) {\n          for (var attr in obj) {\n            if (obj.hasOwnProperty(attr)) {\n              copy[attr] = obj[attr];\n            }\n          }\n        }\n        return copy;\n      },\n      /**\n       * @method copy\n       * @member iNet\n       * Copies a set of named properties fom the source object to the destination object.\n       *\n       * Example:\n       *\n       *      var foo = { a: 1, b: 2, c: 3 };\n       *      var bar = iNet.copy({}, foo, 'a,c');\n       *      // bar = { a: 1, c: 3 };\n       *\n       * @param {Object} dest The destination object.\n       * @param {Object} source The source object.\n       * @param {String/String[]} names Either an Array of property names, or a comma-delimited list\n       * of property names to copy.\n       * @param {Boolean} [usePrototypeKeys=false] Pass `true` to copy keys off of the\n       * prototype as well as the instance.\n       * @return {Object} The `dest` object.\n       */\n      copy: function (dest, source, names, usePrototypeKeys) {\n        if (typeof names === 'string') {\n          names = names.split(propertyNameSplitRe);\n        }\n        for (var name, i = 0, n = names ? names.length : 0; i < n; i++) {\n          name = names[i];\n          // Only copy a property if the source actually *has* that property.\n          // If we are including prototype properties, then ensure that a property of\n          // that name can be found *somewhere* in the prototype chain (otherwise we'd be copying undefined in which may break things)\n          if (source.hasOwnProperty(name) || (usePrototypeKeys && name in source)) {\n            dest[name] = source[name];\n          }\n        }\n        return dest;\n      },\n      /**\n       * @method copyToIf\n       * @member iNet\n       * Copies a set of named properties fom the source object to the destination object\n       * if the destination object does not already have them.\n       *\n       * Example:\n       *\n       *      var foo = { a: 1, b: 2, c: 3 };\n       *      var bar = iNet.copyIf({ a:115 }, foo, 'a,c');\n       *      // bar = { a: 115, c: 3 };\n       *\n       * @param {Object} destination The destination object.\n       * @param {Object} source The source object.\n       * @param {String/String[]} names Either an Array of property names, or a single string\n       * with a list of property names separated by \",\", \";\" or spaces.\n       * @return {Object} The `dest` object.\n       */\n      copyIf: function (destination, source, names) {\n        if (typeof names === 'string') {\n          names = names.split(propertyNameSplitRe);\n        }\n        for (var name, i = 0, n = names ? names.length : 0; i < n; i++) {\n          name = names[i];\n          if (destination[name] === undefined) {\n            destination[name] = source[name];\n          }\n        }\n        return destination;\n      },\n      /**\n       * Returns true if the passed object is a JavaScript Object, otherwise false.\n       *\n       * @param {Object} v The object to test\n       * @return {Boolean}\n       */\n      isObject: function (v) {\n        return v && typeof v == \"object\";\n      },\n      /**\n       * Returns true if the passed object is a string.\n       *\n       * @param {Object} v The object to test\n       * @return {Boolean}\n       */\n      isString: function (v) {\n        return typeof v === 'string';\n      },\n      /**\n       * Returns true if the passed object is a number. Returns false for\n       * non-finite numbers.\n       *\n       * @param {Object} v The object to test\n       * @return {Boolean}\n       */\n      isNumber: function (v) {\n        return typeof v === 'number' && isFinite(v);\n      },\n      /**\n       * Returns true if the passed object is a boolean.\n       *\n       * @param {Object} v The object to test\n       * @return {Boolean}\n       */\n      isBoolean: function (v) {\n        return typeof v === 'boolean';\n      },\n      /**\n       * Returns true if the passed object is a JavaScript array, otherwise false.\n       *\n       * @param {Object} v The object to test\n       * @return {Boolean}\n       */\n      isArray: function (v) {\n        return toString.apply(v) === '[object Array]';\n      },\n      /**\n       * Returns true if the passed object is not undefined.\n       *\n       * @param {Object} v The object to test\n       * @return {Boolean}\n       */\n      isDefined: function (v) {\n        return typeof v !== 'undefined';\n      },\n      /**\n       * Returns true if the passed value is iterable, false otherwise\n       * @param {Mixed} value The value to test\n       * @return {Boolean}\n       */\n      isIterable: function(value) {\n        return (value && typeof value !== 'string') ? value.length !== undefined : false;\n      },\n      /**\n       * Returns true if the passed value is empty. The value is deemed to be\n       * empty if it is * null * undefined * an empty array * a zero length * an empty object\n       * string (Unless the allowBlank parameter is true)\n       *\n       * @param {Mixed} value The value to test\n       * @param {Boolean} allowBlank (optional) true to allow empty strings (defaults to false)\n       * @return {Boolean}\n       */\n      isEmpty: function (v, allowBlank) {\n        return v === null || v === undefined || ((iNet.isArray(v) && !v.length)) || (!allowBlank ? v === '' : false) || iNet.isEmptyObject(v);\n      },\n      /**\n       * Returns the given value itself if it's not empty, as described in {@link iNet#isEmpty}; returns the default\n       * value (second argument) otherwise.\n       *\n       * @param {Object} value The value to test.\n       * @param {Object} defaultValue The value to return if the original value is empty.\n       * @param {Boolean} [allowBlank=false] `true` to allow zero length strings to qualify as non-empty.\n       * @return {Object} value, if non-empty, else defaultValue.\n       */\n      valueFrom: function(value, defaultValue, allowBlank){\n        return iNet.isEmpty(value, allowBlank) ? defaultValue : value;\n      },\n      /**\n       * Return true if passed object is empty.\n       * @param {Mixed} value The value to test\n       * @returns {boolean}\n       */\n      isEmptyObject: function(v){\n        if(!iNet.isObject(v)) {\n          return false;\n        }\n        for(var key in v){\n          return false;\n        }\n        return true;\n      },\n      /**\n       * Returns true if the passed object is a email.\n       *\n       * @param {Object} v The object to test\n       * @return {Boolean}\n       */\n      isEmail: function (v) {\n        return /^(([^<>()[\\]\\\\.,;:\\s@\\\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\\\"]+)*)|(\\\".+\\\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/.test(v);\n      },\n      /**\n       * Returns true if the passed value is a JavaScript Date object, false otherwise.\n       * @param {Object} v The object to test\n       * @return {Boolean}\n       */\n      isDate: function(v) {\n        return toString.call(v) === '[object Date]';\n      },\n      /**\n       * Returns true if the passed value is a JavaScript 'primitive', a string, number or boolean.\n       * @param {Mixed} value The value to test\n       * @return {Boolean}\n       */\n      isPrimitive: function(value) {\n        var type = typeof value;\n        return type === 'string' || type === 'number' || type === 'boolean';\n      },\n      /**\n       * Returns `true` if the passed value is an HTMLElement\n       * @param {Object} value The value to test.\n       * @return {Boolean}\n       */\n      isElement: function(value) {\n        return value ? value.nodeType === 1 : false;\n      },\n      /**\n       * True if the detected browser is Opera.\n       *\n       * @type Boolean\n       */\n      isOpera: isOpera,\n      /**\n       * True if the detected browser uses WebKit.\n       *\n       * @type Boolean\n       */\n      isWebKit: isWebKit,\n      /**\n       * True if the detected browser is Chrome.\n       *\n       * @type Boolean\n       */\n      isChrome: isChrome,\n      /**\n       * True if the detected browser is Safari.\n       *\n       * @type Boolean\n       */\n      isSafari: isSafari,\n      /**\n       * True if the detected browser is Safari 3.x.\n       *\n       * @type Boolean\n       */\n      isSafari3: isSafari3,\n      /**\n       * True if the detected browser is Safari 4.x.\n       *\n       * @type Boolean\n       */\n      isSafari4: isSafari4,\n      /**\n       * True if the detected browser is Safari 2.x.\n       *\n       * @type Boolean\n       */\n      isSafari2: isSafari2,\n      /**\n       * True if the detected browser is Internet Explorer.\n       *\n       * @type Boolean\n       */\n      isIE: isIE,\n      /**\n       * True if the detected browser is Internet Explorer 6.x.\n       *\n       * @type Boolean\n       */\n      isIE6: isIE6,\n      /**\n       * True if the detected browser is Internet Explorer 7.x.\n       *\n       * @type Boolean\n       */\n      isIE7: isIE7,\n      /**\n       * True if the detected browser is Internet Explorer 8.x.\n       *\n       * @type Boolean\n       */\n      isIE8: isIE8,\n      /**\n       * True if the detected browser is Internet Explorer 9.x.\n       *\n       * @type Boolean\n       */\n      isIE9: isIE9,\n      /**\n       * True if the detected browser is Internet Explorer 10.x.\n       *\n       * @type Boolean\n       */\n      isIE10: isIE10,\n      /**\n       * True if the detected browser uses the Gecko layout engine (e.g. Mozilla,\n       * Firefox).\n       *\n       * @type Boolean\n       */\n      isGecko: isGecko,\n      /**\n       * True if the detected browser uses a pre-Gecko 1.9 layout engine (e.g.\n       * Firefox 2.x).\n       *\n       * @type Boolean\n       */\n      isGecko2: isGecko2,\n      /**\n       * True if the detected browser uses a Gecko 1.9+ layout engine (e.g.\n       * Firefox 3.x).\n       *\n       * @type Boolean\n       */\n      isGecko3: isGecko3,\n      /**\n       * True if the detected browser uses a Gecko 1.9+ layout engine (e.g.\n       * Firefox 4.x).\n       *\n       * @type Boolean\n       */\n      isGecko4: isGecko4,\n      /**\n       * True if the detected browser is Internet Explorer running in non-strict\n       * mode.\n       *\n       * @type Boolean\n       */\n      isBorderBox: isBorderBox,\n      /**\n       * True if the detected platform is Linux.\n       *\n       * @type Boolean\n       */\n      isLinux: isLinux,\n      /**\n       * True if the detected platform is Windows.\n       *\n       * @type Boolean\n       */\n      isWindows: isWindows,\n      /**\n       * True if the detected platform is Mac OS.\n       *\n       * @type Boolean\n       */\n      isMac: isMac,\n      /**\n       * True if the detected platform is Adobe Air.\n       *\n       * @type Boolean\n       */\n      isAir: isAir,\n      /**\n       * True if the detected browser is Support.\n       *\n       * @type Boolean\n       */\n      isSupport: isSupport,\n      /**\n       * Converts any iterable (numeric indices and a length property) into a\n       * true array Don't use this on strings. IE doesn't support \"abc\"[0]\n       * which this implementation depends on. For strings, use this instead:\n       * \"abc\".match(/./g) => [a,b,c];\n       *\n       * @param {Iterable} the iterable object to be turned into a true Array.\n       * @return (Array) array\n       */\n      toArray: function () {\n        return isIE ? function (a, i, j, res) {\n          res = [];\n          iNet.each(a, function (v) {\n            res.push(v);\n          });\n          return res.slice(i || 0, j || res.length);\n        } : function (a, i, j) {\n          return Array.prototype.slice.call(a, i || 0, j || a.length);\n        };\n      }(),\n      /**\n       * Copies all the properties of config to obj if they don't already exist.\n       *\n       * @param {Object} obj The receiver of the properties\n       * @param {Object} config The source of the properties\n       * @return {Object} returns obj\n       */\n      applyIf: function (o, c) {\n        if (o) {\n          for (var p in c) {\n            if (iNet.isEmpty(o[p])) {\n              o[p] = c[p];\n            }\n          }\n        }\n        return o;\n      },\n      /**\n       * Iterates an array or an iterable value and invoke the given callback function for each item.\n       *\n       * @param {Object} array The item at the current index in the passed array\n       * @param {Object} fn The callback function\n       * @param {Object} scope (optional) The scope (this reference) in which the specified function is executed.\n       */\n      each: function (array, fn, scope) {\n        if (iNet.isEmpty(array, true)) {\n          return;\n        }\n        for (var i = 0, len = array.length; i < len; i++) {\n          if (fn.call(scope || array[i], array[i], i, array) === false) {\n            return i;\n          }\n        }\n      },\n      /**\n       * Creates namespaces to be used for scoping variables and classes so that they are not global. Specifying the last node of a namespace implicitly creates all other nodes.\n       * Usage:\n       *\n       *     iNet.namespace('iNet.ui', 'iNet.ui.form');\n       *\n       *     // equivalent and preferable to the above syntax\n       *     iNet.ns('iNet.ui',, 'iNet.ui.form');\n       *\n       *     iNet.ui.form.Control = function() { ... };\n       *\n       * @param {String...} namespaces\n       * @return {Object} The (last) namespace object created.\n       * @member iNet\n       * @method namespace\n       */\n      namespace: function () {\n        var o, d;\n        iNet.each(arguments, function (v) {\n          d = v.split(\".\");\n          o = window[d[0]] = window[d[0]] || {};\n          iNet.each(d.slice(1), function (v2) {\n            o = o[v2] = o[v2] || {};\n          });\n        });\n        return o;\n      },\n      /**\n       * Get parameter from URL\n       *\n       * @param {String} name The parameter name\n       * @param {String} url (optional) The URL\n       *\n       * @return {String} Returns the value of param\n       */\n      getParam: function (name, url) {\n        if(!!window['ctx_'+ name]) {\n          return window['ctx_'+ name];\n        }\n        name = name.replace(/[\\[]/, \"\\\\\\[\").replace(/[\\]]/, \"\\\\\\]\");\n        var regexS = \"[\\\\?&]\" + name + \"=([^&#]*)\";\n        var regex = new RegExp(regexS);\n        var results = regex.exec(url || window.location.href);\n        if (!results) {\n          return \"\";\n        }\n        else {\n          return results[1];\n        }\n      },\n      /**\n       * Parser html to string\n       *\n       * @param {String} v the given value\n       * @return {String} The new string\n       */\n      parserHtml: function (v) {\n        if (v === undefined || v === null || v.length === undefined) {\n          return '';\n        }\n        v.replace(/</g, \"&lt;\");\n        v.replace(/>/g, \"&gt;\");\n        v.replace(/\\n/g, '<br />');\n        return v;\n      },\n      /**\n       * Generate the identifier.\n       * @return {String} The string\n       */\n      generateId: function () {\n        var sid=\"\";\n        for (var i=0; i<24; i++)\n        {\n          sid+=Math.floor(Math.random()*0xF).toString(0xF);\n        }\n        return sid;\n      },\n      /**\n       * Generate the UUID.\n       * @return {String} The string UUID\n       */\n      generateUUID: function () {\n        var d = new Date().getTime();\n        var uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\n          var r = (d + Math.random() * 16) % 16 | 0;\n          d = Math.floor(d / 16);\n          return (c == 'x' ? r : (r & 0x3 | 0x8)).toString(16);\n        });\n        return uuid;\n      },\n      /**\n       * Generate the identifier as alphabet.\n       * @return {String} The string\n       */\n      alphaGenerateId: function () {\n        var __id = '';\n        var __alphabet = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';\n        var len = __alphabet.length;\n        for (var index = 0; index < len; index++) {\n          __id += __alphabet.charAt(Math.floor(Math.random() * len));\n        }\n        // return the identifier 24 character\n        return __id.substr(len - 24);\n      },\n      /**\n       * Returns the current timestamp\n       * @param {Number} time (optional) the timestamp\n       * @return {Number}  The current timestamp\n       */\n      getDate: function (time) {\n        var __time = time || new Date().getTime();\n        try {\n          return (new Date(__time)).getTime();\n        }\n        catch (e) {\n          return (new Date()).getTime();\n        }\n      },\n      /**\n       * Get layout of framework\n       * @returns {window} The given window document\n       */\n      getLayout: function () {\n        return window.parent;\n      },\n      /**\n       * Get current Application\n       * @return {iNet.app.Application} The current application\n       */\n      getApp: function(){\n        var layout = iNet.getLayout();\n        var app= null;\n        if(layout && layout.iNet) {\n          app = layout.iNet.APP;\n        }\n        return app;\n      },\n      /**\n       * Return number item of object\n       * @param {Object} v The object to get size\n       * @return {Number}\n       */\n      getSize: function (v) {\n        var size = 0, key;\n        if (iNet.isArray(v)) {\n          size = v.length;\n        } else if(iNet.isObject(v)) {\n          for (key in v) {\n            if (v.hasOwnProperty(key)) {\n              size++;\n            }\n          }\n        } else {\n          size = v.length;\n        }\n        return size;\n      },\n      /**\n       * Return currency with currency code\n       * @deprecated 5.6\n       * @param {Number} v The number of currency\n       * @returns {String}\n       */\n      getCurrency: function (v) {\n        var __lang = iNet.lang || iNet.language;\n        var __numberArr = v.toString().split('.');\n        __numberArr[0] = __numberArr[0].replace(/(\\d)(?=(\\d\\d\\d)+(?!\\d))/g, '$1,');\n        var __result = __numberArr.join('.');\n        switch (__lang) {\n          case 'en' : return String.format('{0} USD', __result); break;\n          default : return String.format('{0} VND', __result);\n        }\n      },\n      /**\n       * Returns the given value itself if it's not empty, as described in {@link iNet#isEmpty}; returns the default\n       * value (second argument) otherwise.\n       *\n       * @param {Object} value The value to test.\n       * @param {Object} defaultValue The value to return if the original value is empty.\n       * @param {Boolean} [allowBlank=false] `true` to allow zero length strings to qualify as non-empty.\n       * @return {Object} value, if non-empty, else defaultValue.\n       */\n      valueFrom: function(value, defaultValue, allowBlank){\n        return iNet.isEmpty(value, allowBlank) ? defaultValue : value;\n      },\n      /**\n       * @property {Function}\n       * A reusable empty function.\n       */\n      emptyFn: function () {},\n      /**\n       * Create a new function from the provided `fn`, the arguments of which are pre-set to `args`.\n       * New arguments passed to the newly created callback when it's invoked are appended after the pre-set ones.\n       * This is especially useful when creating callbacks.\n       * @param {Function} fn The original function.\n       * @param {Array} args The arguments to pass to new callback.\n       * @param {Object} scope (optional) The scope (`this` reference) in which the function is executed.\n       * @return {Function} The new callback function.\n       */\n      pass: function(fn, args, scope) {\n        if (!iNet.isArray(args)) {\n          if (iNet.isIterable(args)) {\n            args = iNet.Array.clone(args);\n          } else {\n            args = args !== undefined ? [args] : [];\n          }\n        }\n\n        return function() {\n          var fnArgs = args.slice();\n          fnArgs.push.apply(fnArgs, arguments);\n          return fn.apply(scope || this, fnArgs);\n        };\n      },\n      /**\n       * Overrides members of the specified target with the given values.\n       * @param {Object} origclass The class to override\n       * @param {Object} overrides The list of functions to add to origClass.\n       * This should be specified as an object literal containing one or more methods.\n       * @method override\n       */\n      override: function (origclass, overrides) {\n        if (overrides) {\n          var p = origclass.prototype;\n          iNet.apply(p, overrides);\n          if (iNet.isIE && overrides.toString != origclass.toString) {\n            p.toString = overrides.toString;\n          }\n        }\n      },\n      /**\n       * Defines a class or override\n       * @param {Function} subclass The class inheriting the functionality\n       * @param {Function} superclass The class being extended\n       * @param {Object} overrides (optional) A literal with members which are copied\n       * into the subclass's prototype, and are therefore shared between all instances of the new class.\n       * @return {Function} The subclass constructor.\n       * @method extend\n       */\n      extend: function () {\n        // inline overrides\n        var io = function (o) {\n          for (var m in o) {\n            this[m] = o[m];\n          }\n        };\n        var oc = Object.prototype.constructor;\n\n        return function (sb, sp, overrides) {\n          if (iNet.isObject(sp)) {\n            overrides = sp;\n            sp = sb;\n            sb = overrides.constructor != oc ? overrides.constructor : function () {\n              sp.apply(this, arguments);\n            };\n          }\n          var F = function () {\n          }, sbp, spp = sp.prototype;\n\n          F.prototype = spp;\n          sbp = sb.prototype = new F();\n          sbp.constructor = sb;\n          sb.superclass = spp;\n          if (spp.constructor == oc) {\n            spp.constructor = sp;\n          }\n          sb.override = function (o) {\n            iNet.override(sb, o);\n          };\n          sbp.superclass = sbp.supr = (function () {\n            return spp;\n          });\n          sbp.override = io;\n          iNet.override(sb, overrides);\n          sb.extend = function (o) {\n            iNet.extend(sb, o);\n          };\n          return sb;\n        };\n      }(),\n      getIconByAppName: function (appName, domain) {\n        if(iNet.isEmpty(domain) || iNet.isEmpty(appName))\n          throw new Error(\"Domain or application name must not empty\");\n        var url = new URL(domain);\n        var __iconFile = appName.toLowerCase() + '.png';\n        return url.origin + url.pathname.substring(0, url.pathname.indexOf(\"/\",2)) +'/images/' + __iconFile;\n      },\n      /*\n      * Load JavaScript file (asynchronously)\n      * @param {String} src The URL of an Javascript\n      * @return {Function} onLoad The new callback function.\n       */\n      loadScript: function(src, onLoad) {\n        var script = document.createElement('script');\n        script.type = 'text/javascript';\n        script.src = src;\n        if (script.readyState) {\n          script.onreadystatechange = function () {\n            var state = this.readyState;\n            if (state === 'loaded' || state === 'complete') {\n              script.onreadystatechange = null;\n              onLoad();\n            }\n          };\n        } else {\n          script.onload = onLoad;\n        }\n        document.getElementsByTagName('head')[0].appendChild(script);\n      }\n    });\n    /**\n     * Convenient alias for {@link iNet#namespace iNet.namespace}.\n     * @inheritdoc iNet#namespace\n     * @member iNet\n     * @method ns\n     */\n    iNet.ns = iNet.namespace;\n  })();\n\n  /**\n   * Support URL decode, encode.\n   *\n   * @class iNet.Url\n   *\n   */\n  iNet.Url = {\n    /**\n     * URL encoding strings\n     * @param string The string to encode\n     * @returns {String} The new String\n     */\n    encode: function (string) {\n      return escape(this._utf8_encode(string));\n    },\n\n    /**\n     * URL decoding to string\n     * @param string  the String to decode\n     * @returns {String} The new String\n     */\n    decode: function (string) {\n      return this._utf8_decode(unescape(string));\n    },\n    //\n    /**\n     * private method for UTF-8 encoding\n     * @param string The string to encode\n     * @returns {string} The new String\n     * @private\n     */\n    _utf8_encode: function (string) {\n      string = string.replace(/\\r\\n/g, \"\\n\");\n      var utftext = \"\";\n\n      for (var n = 0; n < string.length; n++) {\n\n        var c = string.charCodeAt(n);\n\n        if (c < 128) {\n          utftext += String.fromCharCode(c);\n        }\n        else if ((c > 127) && (c < 2048)) {\n          utftext += String.fromCharCode((c >> 6) | 192);\n          utftext += String.fromCharCode((c & 63) | 128);\n        }\n        else {\n          utftext += String.fromCharCode((c >> 12) | 224);\n          utftext += String.fromCharCode(((c >> 6) & 63) | 128);\n          utftext += String.fromCharCode((c & 63) | 128);\n        }\n      }\n      return utftext;\n    },\n    /**\n     *  private method for UTF-8 decoding\n     * @param utftext The string to decode\n     * @returns {string} The new String\n     * @private\n     */\n    _utf8_decode: function (utftext) {\n      var string = \"\";\n      var i = 0;\n      var c = 0, c1 = 0, c2 = 0, c3=0;\n\n      while (i < utftext.length) {\n\n        c = utftext.charCodeAt(i);\n\n        if (c < 128) {\n          string += String.fromCharCode(c);\n          i++;\n        }\n        else if ((c > 191) && (c < 224)) {\n          c2 = utftext.charCodeAt(i + 1);\n          string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));\n          i += 2;\n        }\n        else {\n          c2 = utftext.charCodeAt(i + 1);\n          c3 = utftext.charCodeAt(i + 2);\n          string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));\n          i += 3;\n        }\n      }\n      return string;\n    }\n  };\n\n  iNet.Template = {\n    parse: function (templateId, obj) {\n      var templateElement = document.getElementById(templateId);\n      var converter = function (data) {\n        return data;\n      };\n\n      function getTemplateText(element) {\n        return element.innerHTML.toString();\n      }\n\n      if (iNet.isFunction(templateElement['converter']))\n        converter = templateElement['converter'];\n\n      var item = converter(obj);\n\n      return getTemplateText(templateElement).replace(/{(\\w+)}/g, function (str, key) {\n        return (typeof item[key] !== 'undefined') ? item[key] : '';\n      });\n    }\n  };\n\n  /*--------------------------------------------\n   |           S C O P E  F U N C T I O N      |\n   ============================================*/\n  /**\n   * These functions are available on every Function object (any JavaScript function).\n   * @class Function\n   */\n  iNet.apply(Function.prototype, {\n    /**\n     * Creates an interceptor function. The passed fcn is called before the\n     * original one. If it returns false, the original one is not called. The\n     * resulting function returns the results of the original function. The passed\n     * fcn is called with the parameters of the original function.\n     *\n     * @param {Function} fcn The function to call before the original\n     * @param {Object} scope (optional) The scope of the passed fcn (Defaults to scope of original function or window)\n     * @return {Function} The new function\n     */\n    createInterceptor: function (fcn, scope) {\n      var method = this;\n      return !iNet.isFunction(fcn) ? this : function () {\n        var me = this, args = arguments;\n        fcn.target = me;\n        fcn.method = method;\n        return (fcn.apply(scope || me || window, args) !== false) ? method.apply(me || window, args) : null;\n      };\n    },\n\n    /**\n     * Creates a callback that passes arguments[0], arguments[1], arguments[2],\n     * ... Call directly on any function. Example:\n     *        myFunction.createCallback(arg1, arg2);\n     *        //Will create a function that is bound to those 2 args. executes in the window scope.\n     *\n     * @return {Function} The new function\n     */\n    createCallback: function () {\n      // make args available, in function below\n      var args = arguments, method = this;\n      return function () {\n        return method.apply(window, args);\n      };\n    },\n\n    /**\n     * Creates a delegate (callback) that sets the scope to obj. Call directly\n     * on any function.\n     * Example:\n     *\n     *       this.myFunction.createDelegate(this, [arg1, arg2]);\n     *       //Will create a function that is automatically scoped to obj so that the <tt>this</tt> variable inside the callback points to obj.\n     *\n     * @param {Object} obj (optional) The object for which the scope is set\n     * @param {Array} args (optional) Overrides arguments for the call. (Defaults to the arguments passed by the caller)\n     * @param {Boolean/Number} appendArgs (optional) if True args are appended to call args instead of overriding,\n     * if a number the args are inserted at the specified position\n     * @return {Function} The new function\n     */\n    createDelegate: function (obj, args, appendArgs) {\n      var method = this;\n      return function () {\n        var callArgs = args || arguments;\n        if (appendArgs === true) {\n          callArgs = Array.prototype.slice.call(arguments, 0);\n          callArgs = callArgs.concat(args);\n        }\n        else if (iNet.isNumber(appendArgs)) {\n          callArgs = Array.prototype.slice.call(arguments, 0); // copy arguments first\n          var applyArgs = [appendArgs, 0].concat(args); // create method call params\n          Array.prototype.splice.apply(callArgs, applyArgs); // splice them in\n        }\n        return method.apply(obj || window, callArgs);\n      };\n    },\n\n    /**\n     * Calls this function after the number of millseconds specified, optionally\n     * in a specific scope. Example usage:\n     *\n     *     var sayHi = function(name){\n     *         alert('Hi, ' + name);\n     *     }\n     *\n     *     // executes immediately:\n     *     sayHi('Fred');\n     *\n     *     // executes after 2 seconds:\n     *     Function.defer(sayHi, 2000, this, ['Fred']);\n     *\n     *     // this syntax is sometimes useful for deferring\n     *     // execution of an anonymous function:\n     *     Function.defer(function(){\n     *         alert('Anonymous');\n     *     }, 100);\n     *\n     * @param {Number} millis The number of milliseconds for the setTimeout call (if\n     *          less than or equal to 0 the function is executed immediately)\n     * @param {Object} obj (optional) The object for which the scope is set\n     * @param {Array} args (optional) Overrides arguments for the call. (Defaults to the arguments passed by the caller)\n     * @param {Boolean/Number} appendArgs (optional) if True args are appended to call args instead of overriding,\n     * if a number the args are inserted at the specified position\n     * @return {Number} The timeout id that can be used with clearTimeout\n     */\n    defer: function (millis, obj, args, appendArgs) {\n      var fn = this.createDelegate(obj, args, appendArgs);\n      if (millis > 0) {\n        return setTimeout(fn, millis);\n      }\n      fn();\n      return 0;\n    }\n  });\n\n  /**\n   * Provides the methods of sending messages. Recieving messages is the same in both of available Plugin classes\n   * @class iNet.PluginManager\n   */\n  iNet.PluginManager = {\n    /**\n     * Add EventListener to Listen to message from window\n     * @param element - A DOM element\n     * @param eventName - The event to listen\n     * @param eventHandler - The callback to execute\n     */\n    bindEvent: function (element, eventName, eventHandler) {\n      if (element.addEventListener) {\n        element.addEventListener(eventName, eventHandler, false);\n      } else if (element.attachEvent) {\n        element.attachEvent('on' + eventName, eventHandler);\n      }\n    },\n    /**\n     * Send a message to the window\n     * @param msg - The data to send\n     * @param contentWindow - The window object\n     */\n    sendMessageTo: function (msg, contentWindow) {\n      contentWindow = contentWindow || window.parent;\n      // Make sure you are sending a string, and to stringify JSON\n      contentWindow.postMessage(msg, '*');\n    },\n    /**\n     * Send message to parent window\n     * @param msg - The data to send\n     */\n    sendMessage: function(msg) {\n      iNet.PluginManager.sendMessageTo(msg, window.parent);\n    }\n  };\n  /**\n   * Copyright (c) 2016 by Vy Nguyen (ntvy@inetcloud.vn)\n   *\n   * Created by ntvy on 14:55 25/03/2016\n   *\n   */\n\n  /*--------------------------------------------\n   |               S T R I N G                   |\n   ============================================*/\n  /**\n   * A collection of useful static methods to deal with strings.\n   *\n   * `String` is a global object that may be used to construct String instances.\n   *\n   * For example:\n   *\n   *     var s1 = \"2 + 2\";               // creates a string primitive\n   *     var s2 = new String(\"2 + 2\");  // creates a String object\n   *     eval(s1);                     // returns the number 4\n   *     eval(s2).toString();         // returns the string \"2 + 2\"\n   *     eval(s2.valueOf());         // returns the number 4\n   *\n   * @class String\n   */\n  iNet.applyIf(String, {\n    /**\n     * @property {Number} length\n     * Reflects the length of the string.\n     */\n    /**\n     * @method charAt\n     * Returns the character at the specified index.\n     */\n    /**\n     * @method charCodeAt\n     * Returns a number indicating the Unicode value of the character at the given index.\n     */\n    /**\n     * @method concat\n     * Combines combines the text from one or more strings and returns a new string. Changes to the text in\n     * one string do not affect the other string.\n     */\n    /**\n     * @method indexOf\n     * Returns the index within the calling `String` object of the first occurrence of the specified value,\n     * or -1 if not found.\n     */\n    /**\n     * @method lastIndexOf\n     * Returns the index within the calling String object of the last occurrence of\n     * the specified value, or -1 if not found. The calling string is searched\n     * backward, starting at fromIndex.\n     */\n    /**\n     * @method replace\n     * Used to find a match between a regular expression and a string, and to replace the matched substring\n     * with a new substring.\n     */\n    /**\n     * @method search\n     * Executes the search for a match between a regular expression and a specified string.\n     */\n    /**\n     * @method slice\n     * Extracts a section of a string and returns a new string.\n     */\n    /**\n     * @method split\n     * Splits a `String` object into an array of strings by separating the string into substrings.\n     */\n    /**\n     * @method substr\n     * Returns the characters in a string beginning at the specified location through the specified number\n     * of characters.\n     */\n    /**\n     * @method substring\n     * Returns the characters in a string between two indexes into the string.\n     */\n    /**\n     * @method toLocaleLowerCase\n     * The characters within a string are converted to lower case while respecting the current locale. For\n     * most languages, this will return the same as `toLowerCase`.\n     */\n    /**\n     * @method toLowerCase\n     * Returns the calling string value converted to lower case.\n     */\n    /**\n     * @method toString\n     * Returns a string representing the specified object. Overrides the `Object.toString` method.\n     */\n    /**\n     * @method toUpperCase\n     * Returns the calling string value converted to uppercase.\n     */\n    /**\n     * @method valueOf\n     * Returns the primitive value of the specified object. Overrides the `Object.valueOf` method.\n     */\n    /**\n     * Allows you to define a tokenized string and pass an arbitrary number of\n     * arguments to replace the tokens.\n     *  Example usage:\n     *\n     *     var cls = 'my-class',\n     *         text = 'Some text';\n     *     var s = String.format('<div class=\"{0}\">{1}</div>', cls, text);\n     *     // s now contains the string: '<div class=\"my-class\">Some text</div>'\n     * @param {String} format The values to replace tokens `{0}`, `{1}`, etc in order.\n     * @return {String} The formatted string.\n     */\n    format: function (format) {\n      var args = iNet.toArray(arguments, 1);\n      return format.replace(/\\{(\\d+)\\}/g, function (m, i) {\n        return args[i];\n      });\n    },\n    /**\n     * Parse a template with list keys defined of an Object.\n     *\n     * Example usage:\n     *\n     *   - HTML Template:\n     *\n     *     <script id=\"template-id\" type=\"text/template\"\n     *             data-keys=\"title|content|time\"\n     *             data-fn=\"convertTitle||convertTime\">\n     *       <div title=\"{0}\">{1} - <span class=\"time\">{2}</span></div>\n     *     </script>\n     *\n     *   - Javascript:\n     *\n     *     var templateEl = $('#template-id');\n     *     var template = templateEl[0];\n     *\n     *     template.convertTitle = function(title) {\n     *       return 'Title of Object is ' + title;\n     *     };\n     *     template.convertTime = function(time) {\n     *       return '<span>' + new Date(time) + '</span>';\n     *     };\n     *\n     *     var obj = {title: 'Any Title', content: 'Short Content', time: 1476179064156};\n     *\n     *     var str = String.parseTemplate('template-id', obj);\n     *     // str now contains the string:\n     *     '<div title=\"Title of Object is Any Title\">Short Content - <span class=\"time\">Tue Oct 11 2016 16:44:24 GMT+0700 (ICT)</span></div>'\n     *\n     *     // Pass param keys if you want to override list keys on template\n     *     // Pass param convertFn if you want to override function has been implement on templateEl DOM\n     *\n     * @param {String} templateId\n     * @param {Object} obj\n     * @param {Array} [keys] (optional)\n     * @param {Array|Function} [convertFn] (optional)\n     * @returns {string|void|XML}\n     * @public\n     */\n    parseTemplate: function (templateId, obj, keys, convertFn) {\n      var _this = this;\n      var item = obj;\n      var tplEl = document.getElementById(templateId);\n      var converter = tplEl.getAttribute('data-converter');\n      var renderFn = tplEl.getAttribute('data-fn');\n      if (!keys)\n        keys = tplEl.getAttribute('data-keys').split('|');\n\n      if (converter && iNet.isFunction(tplEl[converter]))\n        converter = tplEl[converter];\n\n      if (convertFn && iNet.isFunction(convertFn))\n        converter = convertFn;\n      else {\n        if (renderFn)\n          convertFn = renderFn.split('|');\n      }\n\n      if (iNet.isFunction(converter))\n        item = converter(obj);\n\n      return tplEl.innerHTML.replace(/\\{(\\d+)\\}/g, function (m, i) {\n        if (convertFn)\n          if (convertFn[i] && iNet.isFunction(tplEl[convertFn[i]]))\n            return tplEl[convertFn[i]].call(_this, item[keys[i]] || '', item, keys[i]);\n        return item[keys[i]] || '';\n      });\n    },\n\n    /**\n     * Trims whitespace from either end of a string, leaving spaces within the string intact\n     *\n     * @return {String} Returns a string that trim all white spaces at the begining and the end of this string.\n     */\n    trim: function () {\n      return this.replace(/^[\\s\\xA0]+/, \"\").replace(/[\\s\\xA0]+$/, \"\");\n    },\n\n    /**\n     * Checks if a string starts with a substring\n     *\n     * @param str the given string to check.\n     * @return {Boolean} Returns true if this string starts with the given string.\n     */\n    startsWith: function (str) {\n      return (this.match(\"^\" + str) == str);\n    },\n\n    /**\n     *\n     * Checks if a string ends with a substring\n     *\n     * @param str the given string to check.\n     * @return {Boolean} Returns true if this string ends with the given string.\n     */\n    endsWith: function (str) {\n      return (this.match(str + \"$\") == str);\n    }\n  });\n  iNet.applyIf(String.prototype, {\n    /**\n     * Escapes the passed string quotes\n     *\n     * @return {String} The escaped string\n     */\n    escapeHtml: function () {\n      //return escape(this);\n      return (this.replace(/&/g, '&amp;').replace(/>/g, '&gt;').replace(/</g, '&lt;').replace(/\"/g, '&quot;'));\n    },\n    /**\n     * Returns an unescaped HTML trimmed string\n     * @returns {XML|string} The new string\n     */\n    unEscapeHtml: function () {\n      return (this.replace(/&amp;/g, '&').replace(/&gt;/g, '>').replace(/&lt;/g, '<').replace(/&quot;/g, '\"'));\n    },\n    /**\n     * Replace all line breaks in a string with br tags\n     * @returns {String} The new string\n     */\n    replaceBreak: function () {\n      return this.replace(/\\r\\n|\\r|\\n/g, \"<br />\");\n      //return (iNet.isEmpty(this) ? '' : this.replace(/\\r\\n|\\r|\\n/g, \"<br />\"));\n    },\n    /**\n     * Capitalize the given string\n     * @returns {string} The new string\n     */\n    capitalize: function () {\n      return this.charAt(0).toUpperCase() + this.slice(1);\n    },\n    /**\n     * @method removeAccents\n     * Change characters Vietnamese to English\n     * @returns {string} The new string\n     */\n    removeAccents: function () {\n      var accents_arr = [\n        \"à\", \"á\", \"ạ\", \"ả\", \"ã\", \"â\", \"ầ\", \"ấ\", \"ậ\", \"ẩ\", \"ẫ\", \"ă\", \"ằ\", \"ắ\", \"ặ\", \"ẳ\", \"ẵ\",\n        \"è\", \"é\", \"ẹ\", \"ẻ\", \"ẽ\", \"ê\", \"ề\", \"ế\", \"ệ\", \"ể\", \"ễ\",\n        \"ì\", \"í\", \"ị\", \"ỉ\", \"ĩ\",\n        \"ò\", \"ó\", \"ọ\", \"ỏ\", \"õ\", \"ô\", \"ồ\", \"ố\", \"ộ\", \"ổ\", \"ỗ\", \"ơ\", \"ờ\", \"ớ\", \"ợ\", \"ở\", \"ỡ\",\n        \"ù\", \"ú\", \"ụ\", \"ủ\", \"ũ\", \"ư\", \"ừ\", \"ứ\", \"ự\", \"ử\", \"ữ\",\n        \"ỳ\", \"ý\", \"ỵ\", \"ỷ\", \"ỹ\",\n        \"đ\",\n        \"À\", \"Á\", \"Ạ\", \"Ả\", \"Ã\", \"Â\", \"Ầ\", \"Ấ\", \"Ậ\", \"Ẩ\", \"Ẫ\", \"Ă\", \"Ằ\", \"Ắ\", \"Ặ\", \"Ẳ\", \"Ẵ\",\n        \"È\", \"É\", \"Ẹ\", \"Ẻ\", \"Ẽ\", \"Ê\", \"Ề\", \"Ế\", \"Ệ\", \"Ể\", \"Ễ\",\n        \"Ì\", \"Í\", \"Ị\", \"Ỉ\", \"Ĩ\",\n        \"Ò\", \"Ó\", \"Ọ\", \"Ỏ\", \"Õ\", \"Ô\", \"Ồ\", \"Ố\", \"Ộ\", \"Ổ\", \"Ỗ\", \"Ơ\", \"Ờ\", \"Ớ\", \"Ợ\", \"Ở\", \"Ỡ\",\n        \"Ù\", \"Ú\", \"Ụ\", \"Ủ\", \"Ũ\", \"Ư\", \"Ừ\", \"Ứ\", \"Ự\", \"Ử\", \"Ữ\",\n        \"Ỳ\", \"Ý\", \"Ỵ\", \"Ỷ\", \"Ỹ\",\n        \"Đ\"\n      ];\n      var no_accents_arr = [\n        \"a\", \"a\", \"a\", \"a\", \"a\", \"a\", \"a\", \"a\", \"a\", \"a\", \"a\", \"a\", \"a\", \"a\", \"a\", \"a\", \"a\",\n        \"e\", \"e\", \"e\", \"e\", \"e\", \"e\", \"e\", \"e\", \"e\", \"e\", \"e\",\n        \"i\", \"i\", \"i\", \"i\", \"i\",\n        \"o\", \"o\", \"o\", \"o\", \"o\", \"o\", \"o\", \"o\", \"o\", \"o\", \"o\", \"o\",\n        \"o\", \"o\", \"o\", \"o\", \"o\",\n        \"u\", \"u\", \"u\", \"u\", \"u\", \"u\", \"u\", \"u\", \"u\", \"u\", \"u\",\n        \"y\", \"y\", \"y\", \"y\", \"y\",\n        \"d\",\n        \"A\", \"A\", \"A\", \"A\", \"A\", \"A\", \"A\", \"A\", \"A\", \"A\", \"A\", \"A\",\n        \"A\", \"A\", \"A\", \"A\", \"A\",\n        \"E\", \"E\", \"E\", \"E\", \"E\", \"E\", \"E\", \"E\", \"E\", \"E\", \"E\",\n        \"I\", \"I\", \"I\", \"I\", \"I\",\n        \"O\", \"O\", \"O\", \"O\", \"O\", \"O\", \"O\", \"O\", \"O\", \"O\", \"O\", \"O\",\n        \"O\", \"O\", \"O\", \"O\", \"O\",\n        \"U\", \"U\", \"U\", \"U\", \"U\", \"U\", \"U\", \"U\", \"U\", \"U\", \"U\",\n        \"Y\", \"Y\", \"Y\", \"Y\", \"Y\",\n        \"D\"\n      ];\n      return this.replace(/[^\\u0000-\\u007E]/g, function (a) {\n        var index = accents_arr.indexOf(a);\n        return index < 0 ? a : no_accents_arr[index];\n      });\n    },\n    /**\n     * @method replaceSpace\n     * Replace all space in a string with special seperator\n     * @param {string} (optional) seperator Default with \"-\"\n     * @returns {string|*|XML|void}\n     */\n    replaceSpace: function (seperator) {\n      return this.replace(/ /g, seperator || '-');\n    },\n    /**\n     * @method cutStr\n     * Sub-String with space\n     * @param {int} length\n     * @returns {String}\n     */\n    cutStr: function (length) {\n      var arr = this.split(' ');\n      var subStr = '';\n      length = length - 3;\n      for (var i = 0; i < arr.length; i++) {\n        var tmpStr = subStr + (subStr.length > 0 ? ' ' : '') + arr[i];\n        if (tmpStr.length <= length)\n          subStr = tmpStr;\n        else\n          break;\n      }\n      return subStr + (this.length > length ? '...' : '');\n    }\n  });/**\n   * Copyright (c) 2016 by Vy Nguyen (ntvy@inetcloud.vn)\n   *\n   * Created by ntvy on 14:48 25/03/2016\n   *\n   */\n  /*--------------------------------------------\n   |                    D A T E                |\n   ============================================*/\n  /**\n   * Creates Date instances which let you work with dates and times.\n   *\n   * Formats a date given the supplied format string.\n   *\n   * The `Date` object provides uniform behavior across platforms.\n   * @class Date\n   *\n   *\n   * The following is a list of all currently supported formats:\n   * <pre class=\"\">\n   Format  Description                                                             Example returned values\n   ----  -----------------------------------------------------------------------   -----------------------\n   d     Day of the month, 2 digits with leading zeros                             01 to 31\n   D     A short textual representation of the day of the week                     Mon to Sun\n   j     Day of the month without leading zeros                                    1 to 31\n   l     A full textual representation of the day of the week                      Sunday to Saturday\n   N     ISO-8601 numeric representation of the day of the week                    1 (for Monday) through 7 (for Sunday)\n   S     English ordinal suffix for the day of the month, 2 characters             st, nd, rd or th. Works well with j\n   w     Numeric representation of the day of the week                             0 (for Sunday) to 6 (for Saturday)\n   z     The day of the year (starting from 0)                                     0 to 364 (365 in leap years)\n   W     ISO-8601 week number of year, weeks starting on Monday                    01 to 53\n   F     A full textual representation of a month, such as January or March        January to December\n   m     Numeric representation of a month, with leading zeros                     01 to 12\n   M     A short textual representation of a month                                 Jan to Dec\n   n     Numeric representation of a month, without leading zeros                  1 to 12\n   t     Number of days in the given month                                         28 to 31\n   L     Whether it&#39;s a leap year 1 if it is a leap year, 0 otherwise.\n   o     ISO-8601 year number (identical to (Y), but if the ISO week number (W)    Examples: 1998 or 2004\n   belongs to the previous or next year, that year is used instead)\n   Y     A full numeric representation of a year, 4 digits                         Examples: 1999 or 2003\n   y     A two digit representation of a year                                      Examples: 99 or 03\n   a     Lowercase Ante meridiem and Post meridiem                                 am or pm\n   A     Uppercase Ante meridiem and Post meridiem                                 AM or PM\n   g     12-hour format of an hour without leading zeros                           1 to 12\n   G     24-hour format of an hour without leading zeros                           0 to 23\n   h     12-hour format of an hour with leading zeros                              01 to 12\n   H     24-hour format of an hour with leading zeros                              00 to 23\n   i     Minutes, with leading zeros                                               00 to 59\n   s     Seconds, with leading zeros                                               00 to 59\n   u     Decimal fraction of a second                                              Examples:\n   (minimum 1 digit, arbitrary number of digits allowed)                      001 (i.e. 0.001s) or\n   100 (i.e. 0.100s) or\n   999 (i.e. 0.999s) or\n   999876543210 (i.e. 0.999876543210s)\n   O     Difference to Greenwich time (GMT) in hours and minutes                   Example: +1030\n   P     Difference to Greenwich time (GMT) with colon between hours and minutes   Example: -08:00\n   T     Timezone abbreviation of the machine running the code                     Examples: EST, MDT, PDT ...\n   Z     Timezone offset in seconds (negative if west of UTC, positive if east)    -43200 to 50400\n   c     ISO 8601 date\n   </pre>\n   *\n   * Example usage:\n   *\n   *      // Sample date:\n   *      // 'Wed Jan 10 2007 15:05:01 GMT-0600 (Central Standard Time)'\n   *      var dt = new Date('1/10/2007 03:05:01 PM GMT-0600');\n   *      console.log(dt.format('Y-m-d'));                          // 2007-01-10\n   *      console.log(dt.format('F j, Y, g:i a'));                  // January 10, 2007, 3:05 pm\n   *      console.log(dt.format('d/m/Y H:i:s'));                    // 11/01/2007 04:05:01\n   */\n  /**\n   * Date constant.\n   * @readonly\n   * @private\n   */\n  Date.replaceChars = {\n    shortMonths: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n    longMonths: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],\n    shortDays: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n    longDays: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],\n    // Day\n    d: function () {\n      return (this.getDate() < 10 ? '0' : '') + this.getDate();\n    },\n    D: function () {\n      return Date.replaceChars.shortDays[this.getDay()];\n    },\n    j: function () {\n      return this.getDate();\n    },\n    l: function () {\n      return Date.replaceChars.longDays[this.getDay()];\n    },\n    N: function () {\n      return this.getDay() + 1;\n    },\n    S: function () {\n      return (this.getDate() % 10 == 1 && this.getDate() != 11 ? 'st' : (this.getDate() % 10 == 2 && this.getDate() != 12 ? 'nd' : (this.getDate() % 10 == 3 && this.getDate() != 13 ? 'rd' : 'th')));\n    },\n    w: function () {\n      return this.getDay();\n    },\n    z: function () {\n      return \"Not Yet Supported\";\n    },\n    // Week\n    W: function () {\n      return \"Not Yet Supported\";\n    },\n    // Month\n    F: function () {\n      return Date.replaceChars.longMonths[this.getMonth()];\n    },\n    m: function () {\n      return (this.getMonth() < 9 ? '0' : '') + (this.getMonth() + 1);\n    },\n    M: function () {\n      return Date.replaceChars.shortMonths[this.getMonth()];\n    },\n    n: function () {\n      return this.getMonth() + 1;\n    },\n    t: function () {\n      return \"Not Yet Supported\";\n    },\n    // Year\n    L: function () {\n      return (((this.getFullYear() % 4 == 0) && (this.getFullYear() % 100 != 0)) || (this.getFullYear() % 400 == 0)) ? '1' : '0';\n    },\n    o: function () {\n      return \"Not Supported\";\n    },\n    Y: function () {\n      return this.getFullYear();\n    },\n    y: function () {\n      return ('' + this.getFullYear()).substr(2);\n    },\n    // Time\n    a: function () {\n      return this.getHours() < 12 ? 'am' : 'pm';\n    },\n    A: function () {\n      return this.getHours() < 12 ? 'AM' : 'PM';\n    },\n    B: function () {\n      return \"Not Yet Supported\";\n    },\n    g: function () {\n      return this.getHours() % 12 || 12;\n    },\n    G: function () {\n      return this.getHours();\n    },\n    h: function () {\n      return ((this.getHours() % 12 || 12) < 10 ? '0' : '') + (this.getHours() % 12 || 12);\n    },\n    H: function () {\n      return (this.getHours() < 10 ? '0' : '') + this.getHours();\n    },\n    i: function () {\n      return (this.getMinutes() < 10 ? '0' : '') + this.getMinutes();\n    },\n    s: function () {\n      return (this.getSeconds() < 10 ? '0' : '') + this.getSeconds();\n    },\n    // Timezone\n    e: function () {\n      return \"Not Yet Supported\";\n    },\n    I: function () {\n      return \"Not Supported\";\n    },\n    O: function () {\n      return (-this.getTimezoneOffset() < 0 ? '-' : '+') + (Math.abs(this.getTimezoneOffset() / 60) < 10 ? '0' : '') + (Math.abs(this.getTimezoneOffset() / 60)) + '00';\n    },\n    P: function () {\n      return (-this.getTimezoneOffset() < 0 ? '-' : '+') + (Math.abs(this.getTimezoneOffset() / 60) < 10 ? '0' : '') + (Math.abs(this.getTimezoneOffset() / 60)) + (Math.abs(this.getTimezoneOffset() % 60) < 10 ? '0' : '') + (Math.abs(this.getTimezoneOffset() % 60));\n    },\n    T: function () {\n      var m = this.getMonth();\n      this.setMonth(0);\n      var result = this.toTimeString().replace(/^.+ \\(?([^\\)]+)\\)?$/, '$1');\n      this.setMonth(m);\n      return result;\n    },\n    Z: function () {\n      return -this.getTimezoneOffset() * 60;\n    },\n    // Full Date/Time\n    c: function () {\n      return this.format(\"Y-m-d\") + \"T\" + this.format(\"H:i:sP\");\n    },\n    r: function () {\n      return this.toString();\n    },\n    U: function () {\n      return this.getTime() / 1000;\n    }\n  };\n  /**\n   * Formats a date given the supplied format string.\n   * @param {String} format The format string\n   * @return {String} The formatted date\n   */\n  Date.prototype.format = function (format) {\n    var returnStr = '';\n    var replace = Date.replaceChars;\n    for (var i = 0; i < format.length; i++) {\n      var curChar = format.charAt(i);\n      if (replace[curChar]) {\n        returnStr += replace[curChar].call(this);\n      }\n      else {\n        returnStr += curChar;\n      }\n    }\n    return returnStr;\n  };\n  /**\n   * Get the numeric day number of the year, adjusted for leap year.\n   * @returns {Number} 0 to 364 (365 in leap years).\n   */\n  Date.prototype.getDayOfYear = function () {\n    var start = new Date(this.getFullYear(), 0, 0),\n      now = new Date(this.getFullYear(), this.getMonth(), this.getDate()),\n      diff = now - start,\n      oneDate = 1000 * 60 * 60 * 24;\n    return Math.ceil(diff / oneDate);\n  };\n  /**\n   * Get the numeric week number of the year\n   * @returns {Number} Week number of the year.\n   */\n  Date.prototype.getWeek = function () {\n    var start = new Date(this.getFullYear(), 0, 0),\n      day = this.getDayOfYear();\n    return Math.ceil((day + start.getDay() + 1) / 7);\n  };\n  /**\n   * Get the numeric week number of the month\n   * @returns {number} Week number of the month\n   */\n  Date.prototype.getWeekOfMonth = function () {\n    var firstDay = new Date(this.getFullYear(), this.getMonth(), 1).getDay();\n    return Math.ceil((this.getDate() + firstDay) / 7);\n  };\n  /**\n   * Get the numeric day number of the year, adjusted for leap year.\n   * @param {Number} dayOfYear The date of year\n   * @returns {Date} The date\n   */\n  Date.prototype.getDateByDayOfYear = function (dayOfYear) {\n    var year = this.getFullYear();\n    var curDate = new Date(year, 0);\n    return new Date(curDate.setDate(dayOfYear || 0));\n  };\n  /*--------------------------------------------\n   |               J S O N                     |\n   ============================================*/\n  /**\n   * @class iNet.JSON\n   * @singleton\n   * iNet.JSON.encode( json-serializble ) Converts the given argument into a JSON respresentation.\n   *\n   * If an object has a \"toJSON\" function, that will be used to get the\n   * representation. Non-integer/string keys are skipped in the object, as are\n   * keys that point to a function.\n   *\n   */\n  iNet.JSON = {\n    /**\n     * Encodes an Object, Array or other value.\n     * @param {Object} o The variable to encode.\n     * @returns {String} The JSON string\n     */\n    encode: function (o) {\n      if (typeof(JSON) == 'object' && JSON.stringify) {\n        return JSON.stringify(o);\n      }\n      var type = typeof(o);\n      if (o === null) {\n        return \"null\";\n      }\n      if (type == \"undefined\") {\n        return undefined;\n      }\n      if (type == \"number\" || type == \"boolean\") {\n        return o + \"\";\n      }\n      if (type == \"string\") {\n        return this.quoteString(o);\n      }\n      if (type == 'object') {\n        if (typeof o.toJSON == \"function\") {\n          return this.encode(o.toJSON());\n        }\n        if (o.constructor === Date) {\n          var month = o.getUTCMonth() + 1;\n          if (month < 10) {\n            month = '0' + month;\n          }\n          var day = o.getUTCDate();\n          if (day < 10) {\n            day = '0' + day;\n          }\n          var year = o.getUTCFullYear();\n\n          var hours = o.getUTCHours();\n          if (hours < 10) {\n            hours = '0' + hours;\n          }\n          var minutes = o.getUTCMinutes();\n          if (minutes < 10) {\n            minutes = '0' + minutes;\n          }\n          var seconds = o.getUTCSeconds();\n          if (seconds < 10) {\n            seconds = '0' + seconds;\n          }\n          var milli = o.getUTCMilliseconds();\n          if (milli < 100) {\n            milli = '0' + milli;\n          }\n          if (milli < 10) {\n            milli = '0' + milli;\n          }\n          return '\"' + year + '-' + month + '-' + day + 'T' + hours + ':' +\n              minutes +\n              ':' +\n              seconds +\n              '.' +\n              milli +\n              'Z\"';\n        }\n        if (o.constructor === Array) {\n          var ret = [];\n          for (var i = 0; i < o.length; i++) {\n            ret.push(this.encode(o[i]) || \"null\");\n          }\n          return \"[\" + ret.join(\",\") + \"]\";\n        }\n\n        var pairs = [];\n        for (var k in o) {\n          var name;\n          var stype = typeof k;\n          if (stype == \"number\") {\n            name = '\"' + k + '\"';\n          }\n          else if (stype == \"string\") {\n            name = this.quoteString(k);\n          }\n          else {\n            continue;// skip non-string or number keys\n          }\n          if (typeof o[k] == \"function\") {\n            continue; // skip pairs where the value is a function.\n          }\n          var val = this.encode(o[k]);\n          pairs.push(name + \":\" + val);\n        }\n        return \"{\" + pairs.join(\", \") + \"}\";\n      }\n    },\n\n    /**\n     * Decodes (parses) a JSON string to an object.\n     * @param {String} src The JSON string.\n     *\n     * iNet.JSON.decode(src) Evaluates a given piece of json source.\n     *\n     * @returns {Object} The resulting object\n     */\n    decode: function (src) {\n      if (typeof(JSON) == 'object' && JSON.parse) {\n        return JSON.parse(src);\n      }\n      return eval(\"(\" + src + \")\");\n    },\n    /**\n     * Decodes (parses) a JSON string to an object with secure.\n     * @param {String} src The JSON string.\n     *\n     * @returns {Object} The resulting object\n     */\n    decodeSecure: function (src) {\n      if (typeof(JSON) == 'object' && JSON.parse) {\n        return JSON.parse(src);\n      }\n      var filtered = src;\n      filtered = filtered.replace(/\\\\[\"\\\\\\/bfnrtu]/g, '@');\n      filtered = filtered.replace(/\"[^\"\\\\\\n\\r]*\"|true|false|null|-?\\d+(?:\\.\\d*)?(?:[eE][+\\-]?\\d+)?/g, ']');\n      filtered = filtered.replace(/(?:^|:|,)(?:\\s*\\[)+/g, '');\n      if (/^[\\],:{}\\s]*$/.test(filtered)) {\n        return eval(\"(\" + src + \")\");\n      }\n      else {\n        throw new SyntaxError(\"Error parsing JSON, source is not valid.\");\n      }\n    },\n\n    /**\n     * iNet.JSON.quoteString(string) Returns a string-repr of a string, escaping\n     * quotes intelligently. Mostly a support function for JSON.encode.\n     *\n     * Examples:\n     *\n     *      iNet.JSON.quoteString(\"apple\");\n     *      // \"apple\"\n     *      iNet.JSON.quoteString('\"Where are we going?\", she asked.');\n     *      // \"\\\"Where are we going?\\\", she asked.\"\n     */\n    quoteString: function (string) {\n      if (string.match(this._escapeable)) {\n        return '\"' +\n            string.replace(this._escapeable, function (a) {\n              var c = this._meta[a];\n              if (typeof c === 'string') {\n                return c;\n              }\n              c = a.charCodeAt();\n              return '\\\\u00' + Math.floor(c / 16).toString(16) +\n                  (c % 16).toString(16);\n            }) +\n            '\"';\n      }\n      return '\"' + string + '\"';\n    },\n\n    _escapeable: /[\"\\\\\\x00-\\x1f\\x7f-\\x9f]/g,\n\n    _meta: {\n      '\\b': '\\\\b',\n      '\\t': '\\\\t',\n      '\\n': '\\\\n',\n      '\\f': '\\\\f',\n      '\\r': '\\\\r',\n      '\"': '\\\\\"',\n      '\\\\': '\\\\\\\\'\n    }\n  };/**\n   * Copyright (c) 2016 by Vy Nguyen (ntvy@inetcloud.vn)\n   *\n   * Created by ntvy on 14:49 25/03/2016\n   *\n   */\n  // Register as a named AMD module, since iNet can be concatenated with other\n// files that may use define, but not via a proper concatenation script that\n// understands anonymous AMD modules. A named AMD is safest and most robust\n// way to register. Lowercase jquery is used because AMD module names are\n// derived from file names, and iNet is normally delivered in a lowercase\n// file name. Do this after creating the global so that if an AMD module wants\n// to call noConflict to hide this version of iNet, it will work.\n\n// Note that for maximum portability, libraries that are not iNet should\n// declare themselves as anonymous modules, and avoid setting a global if an\n// AMD loader is present. iNet is a special case. For more information, see\n// https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon\n\n  if ( typeof define === \"function\" && define.amd ) {\n    define( \"iNet\", [], function() {\n      return iNet;\n    } );\n  }\n  if ( typeof noGlobal === \"undefined\" ) {\n    window.iNet = iNet;\n  }\n\n  if(window['webConfig'] && typeof window['webConfig']===\"object\") {\n    iNet.apply(iNet, window['webConfig']);\n  }\n  return iNet;\n\n} );\n\n","// @ts-ignore\n/**\n * Copyright (c) 2022 by Vy Nguyen (ntvy@inetcloud.vn)\n *\n * Created by ntvy on 16:14 10/06/2022\n *\n */\nimport * as _iNet from './lib/inet-core';\n\nexport class iNet{\n    /**\n     * Either global variable or required library\n     */\n    private static iNetGlobal() {\n        if(window['iNet']) {\n            return window['iNet'];\n        }\n        return  _iNet;\n    }\n    /**\n     * Returns the full url from the given relative path.\n     *\n     * @param {String} relativePath (required) The given relative path.\n     *\n     * @return {String} The string URL\n     */\n    static getUrl (relativePath): string {\n        return this.iNetGlobal()['getUrl'](relativePath);\n    }\n    /**\n     * Returns full url form given relative path with firm prefix\n     * @param {String} path (required) The URL\n     * @return {String} The string URL\n     */\n    static getPUrl (path: string): string {\n        return this.iNetGlobal()['getPUrl'](path);\n    }\n\n    /**\n     * Returns the SSO redirect url from the given url path.\n     *\n     * @param {String} url (required) The given url.\n     * @param {String} app (option) The given application.\n     *\n     * @return {String} The string SSO redirect URL\n     */\n    static getSSOUrl (url: string, app: string = ''): string {\n        return this.iNetGlobal()['getSSOUrl'](url, app);\n    }\n\n    /**\n     * Gets the username of user logged\n     */\n    static getUserName (): string {\n        return this.iNetGlobal()['username'];\n    }\n\n    /**\n     * Gets the displayName of user logged\n     */\n    static getDisplayName (): string {\n        return this.iNetGlobal()['displayName'];\n    }\n    /**\n     * Gets the url of file server\n     */\n    static getFileServer (): string {\n        return this.iNetGlobal()['fileServer'];\n    }\n\n    /**\n     * Gets the image folder path of module inside cloud\n     */\n    static getImageFolder (): string {\n        return this.iNetGlobal()['imgFolder'];\n    }\n\n    /**\n     * Gets the prefix of server\n     */\n    static getPrefix (): string {\n        return this.iNetGlobal()['prefix'];\n    }\n\n    /**\n     * Checks if inet layout is enabled\n     */\n    static isEnableLayout(): boolean {\n        return !!this.iNetGlobal()['enableLayout']\n    }\n\n    /**\n     * Gets the id of organization\n     */\n    static getOrganId(): string {\n        return this.iNetGlobal()['organId']\n    }\n\n    /**\n     * Encodes an Object, Array or other value.\n     * @param {Object} o The variable to encode.\n     * @returns {String} The JSON string\n     */\n    static encodeJSON(o: any): string {\n        if (this.iNetGlobal()['JSON']) {\n            return this.iNetGlobal()['JSON']['encode'](o)\n        }\n        return '';\n    }\n\n    /**\n     * Decodes (parses) a JSON string to an object.\n     * @param {String} src The JSON string.\n     * @returns {Object} The resulting object\n     */\n    static decodeJSON(src: string): any {\n        if (this.iNetGlobal()['JSON']) {\n            return this.iNetGlobal()['JSON']['decode'](src);\n        }\n        return {};\n    }\n\n    /**\n     * Gets the plugin manager\n     */\n    static getPluginManager(): any {\n        return this.iNetGlobal()['PluginManager']\n    }\n\n    /**\n     * Gets the query param from url\n     */\n    static getParam(param: string): string {\n        return this.iNetGlobal()['getParam'](param);\n    }\n\n   /**\n   * Gets the media path of file server\n   */\n    static getMediaPath(): string {\n        return this.iNetGlobal()['mediaPath'];\n    }\n\n    /**\n   * The instances of global object\n   */\n    static getInstances(): any {\n        return this.iNetGlobal();\n    }\n}\n","export const ErrorMessage = {\n  CLIENT: 'Client-side error occurred',\n  SERVER:'Server-side error occurred',\n  TYPE: 'ERROR'\n};","export interface WebResponse {\n\n}\n\nexport class ErrorResponse {\n  errors: any[];\n  type: string;\n}\n\nexport class ResponseData extends ErrorResponse implements WebResponse {\n  total: number;\n  items: any[];\n}\n\nexport class ResponseElementsData extends ErrorResponse implements WebResponse {\n  elements: any[];\n}","/**\n * Copyright (c) 2019 by Vy Nguyen (ntvy@inetcloud.vn)\n *\n * Created by ntvy on 14:21 28/02/2019\n *\n */\nimport {HttpParameterCodec} from \"@angular/common/http\";\nexport class HttpUrlEncodingCodec implements HttpParameterCodec {\n    encodeKey(k: string): string { return standardEncoding(k); }\n    encodeValue(v: string): string { return standardEncoding(v); }\n    decodeKey(k: string): string { return decodeURIComponent(k); }\n    decodeValue(v: string) { return decodeURIComponent(v); }\n}\nfunction standardEncoding(v: string): string {\n    return encodeURIComponent(v);\n}\n","import {Injectable, OnDestroy} from '@angular/core';\n@Injectable({\n    providedIn: 'platform'\n})\nexport class LoadingIndicatorService implements OnDestroy {\n    static instance: LoadingIndicatorService = null;  // Create a singleton service\n    elementId: string =  'loading-indicator';\n    private static loadingIndicator: LoadingIndicator = null;\n\n    constructor() {\n    }\n    setElementId(elementId: string){\n        this.elementId = elementId;\n    }\n\n    getElementId (): string {\n        return this.elementId;\n    }\n\n    /**\n     * Get DOM of loading indicator\n     */\n    private getIndicator(): LoadingIndicator {\n        if (LoadingIndicatorService.loadingIndicator && LoadingIndicatorService.loadingIndicator.container) {\n            return LoadingIndicatorService.loadingIndicator;\n        }\n        // If Loading indicator not exist\n        const container = document.getElementById(this.getElementId()) as HTMLElement;\n        let loadingElement: HTMLElement;\n        let message: string;\n        if (container) {\n            const elements = container.getElementsByTagName('span');\n            if (elements && elements.length > 0) {\n                loadingElement = container.getElementsByTagName('span')[0] as HTMLElement;\n                if (loadingElement && loadingElement.innerText) {\n                    message = loadingElement.innerText;\n                }\n            }\n        }\n        // cache Loading indicator\n        LoadingIndicatorService.loadingIndicator = new LoadingIndicator(container, loadingElement, message);\n        return LoadingIndicatorService.loadingIndicator;\n    }\n\n    private getLoadingIndicator(): Promise<LoadingIndicator> {\n        return new Promise((resolve, reject) => {\n            setTimeout(() => resolve(this.getIndicator()));\n        });\n    }\n\n    showLoading(message?: string) {\n        this.getLoadingIndicator().then(loadingIndicator => {\n            if (loadingIndicator && loadingIndicator.container) {\n                if (loadingIndicator.element) {\n                    loadingIndicator.element.innerText = message || loadingIndicator.message || loadingIndicator.container.title;\n                }\n                loadingIndicator.container.style.display = 'block';\n            }\n        });\n    }\n\n    hideLoading() {\n        this.getLoadingIndicator().then(loadingIndicator => {\n            if(loadingIndicator && loadingIndicator.container) {\n                loadingIndicator.container.style.display = 'none';\n            }\n        });\n    }\n\n    complete() {\n        this.hideLoading();\n    }\n\n    ngOnDestroy() {\n        this.complete();\n    }\n}\n\nexport class LoadingIndicator {\n    container: HTMLElement;\n    element: HTMLElement;\n    message: string;\n\n    constructor(container: HTMLElement, el: HTMLElement, msg: string = '') {\n        this.container = container;\n        this.element = el;\n        this.message = msg;\n    }\n}\n","import {Injectable} from '@angular/core';\nimport {HttpClient, HttpHandler, HttpHeaders, HttpParams} from '@angular/common/http';\nimport {Observable} from 'rxjs';\nimport {LoadingIndicatorService} from \"./loading-indicator.service\";\nimport {HttpUrlEncodingCodec} from \"./http-url-encoding-codec\";\nimport {iNet} from \"./iNet\";\n\n@Injectable()\nexport class HttpClientService extends HttpClient {\n    private headers = new HttpHeaders({'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'});\n\n    constructor(handler: HttpHandler, private loadingService: LoadingIndicatorService) {\n        super(handler);\n    }\n\n    convertToHttpParams(obj: any): HttpParams {\n        if (!obj) {\n            return null;\n        }\n        return Object.getOwnPropertyNames(obj).reduce((p, key) => p.set(key, obj[key] == undefined ? '' : obj[key]), new HttpParams({encoder: new HttpUrlEncodingCodec()}));\n    }\n\n    getJSON(url: string, body?: any | null): Observable<any> {\n        return this.get(url, {params: this.convertToHttpParams(body), headers: this.headers});\n    }\n\n    postJSON(url: string, body?: any | null): Observable<any> {\n        return this.post(url, this.convertToHttpParams(body), {headers: this.headers});\n    }\n\n    putJSON(url: string, body?: any | null): Observable<any> {\n        return this.put(url, this.convertToHttpParams(body), {headers: this.headers});\n    }\n\n    deleteJSON(url: string, body?: any | null): Observable<any> {\n        return this.delete(url, {params: this.convertToHttpParams(body), headers: this.headers});\n    }\n\n    convertToFormData(obj: any): FormData {\n        //console.log('[convertToFormData]', obj);\n        let formData = new FormData();\n        if (!obj) {\n            return formData;\n        }\n        Object.keys(obj).forEach(k => {\n            //console.log('[key]', k , '=', obj[k]==undefined ? '' : obj[k]);\n            formData.append(k, obj[k] == undefined ? '' : obj[k]);\n        });\n        //console.log('[formData]', formData);\n        return formData;\n    }\n\n    downloadFile(url: string, obj?: any) {\n        if (!obj) {\n            return;\n        }\n        let form = document.createElement('form');\n        form.method = 'POST';\n        form.action = url;\n        form.enctype = 'multipart/form-data';\n\n        Object.keys(obj).forEach(k => {\n            //console.log('[key]', k , '=', obj[k]==undefined ? '' : obj[k]);\n            let input = document.createElement(\"input\");\n            input.name = k;\n            input.value = obj[k] == undefined ? '' : obj[k];\n            input.type = 'hidden';\n            form.appendChild(input);\n        });\n        document.body.appendChild(form);\n        form.submit();\n        document.body.removeChild(form);\n    }\n\n    showLoading(message?: string) {\n        this.loadingService.showLoading(message);\n    }\n\n    hideLoading() {\n        this.loadingService.hideLoading()\n    }\n\n    getUrl(relativePath: string) {\n        if (!window['iNet']) {\n            return iNet.getPUrl(relativePath);\n        }\n        return relativePath;\n    }\n}\n","import {Injectable} from '@angular/core';\nimport {HttpErrorResponse} from '@angular/common/http';\nimport {Observable, of} from 'rxjs';\nimport {HttpClientService} from './http-client.service';\nimport {map, shareReplay, tap} from 'rxjs/operators';\nimport {iNet} from \"./iNet\";\n\n@Injectable({\n    providedIn: 'platform'\n})\nexport class CoreService {\n    static instance: CoreService = null;  // Create a singleton service\n    private static environment = {production: false};\n    private $appCache: Observable<Object>;\n    private applications: Array<any>;\n\n    constructor(private http: HttpClientService) {\n        return CoreService.instance = CoreService.instance || this;\n    }\n\n    logout() {\n        if(iNet.getUserName()) {\n            this.http.post(iNet.getPUrl('system/logout'), {'username': iNet.getUserName()}).subscribe(\n                (data: LogoutData) => {\n                    const iFrame = document.createElement('iframe');\n                    //iFrame.setAttribute('width', '0');\n                    iFrame.style.display = 'none';\n                    iFrame.setAttribute('src', data?.uuid);\n                    iFrame.addEventListener('load', function () {\n                        location.reload();\n                    });\n                    document.body.appendChild(iFrame);\n                }, (err: HttpErrorResponse) => {\n                }\n            );\n        }\n    }\n\n    /*\n    * Gets the avatar URL with the username\n    * @deprecated Use UserProfileService.getAvatarUrlByUsername() instead\n    */\n    getAvatar(usercode: string, thumbnail?: number): string {\n        thumbnail = thumbnail || 50;\n        return iNet.getPUrl('system/userprofile/photo') +\n            `?usercode=${usercode}&thumbnail=${thumbnail}`;\n    }\n\n    isExternalUser(): boolean {\n        return false;\n    }\n\n    isCommunity(): boolean {\n       return false;\n    }\n\n    getOrg(): Observable<Object> {\n        return this.http.get(iNet.getPUrl('plugin/organization/list'))\n            .pipe(map((res: CustomResponse) => res.elements));\n    }\n\n    searchOrgan(params: any = {}): Observable<Object> {\n        return this.http.postJSON(iNet.getPUrl('plugin/organization/search'), params)\n            .pipe(map((res: CustomResponse) => res.elements));\n    }\n\n    getSystemApplication(): Observable<Object> {\n        if (this.applications) {\n            return of(this.applications);\n        }\n        if (!this.$appCache) {\n            this.$appCache = this.http.postJSON(iNet.getPUrl('system/application/list'))\n                .pipe(tap((res: CustomResponse) => this.applications = res.elements))\n                .pipe(map((res: CustomResponse) => res.elements))\n                .pipe(shareReplay(1));\n        }\n        return this.$appCache;\n    }\n\n    searchFirmAccount(params, callback: Function) {\n        this.http.postJSON(iNet.getPUrl('plugin/firmaccount/list'), params).subscribe(\n            (data) => {\n                callback(data);\n            },\n            (err) => {\n                callback(null, err);\n            }\n        );\n    }\n\n    updateLanguage(lang: string, callback?: Function) {\n        this.http.postJSON(iNet.getPUrl('system/userprofile/languageupdate'), {intl: lang}).subscribe(\n            (data) => {\n                if (callback) {\n                    callback(lang);\n                }\n            }, (err) => {\n                if (callback) {\n                    callback(lang);\n                }\n            }\n        );\n    }\n\n    /**\n     * Get the Image URL for the current app\n     * @param fileName - the file name\n     */\n    getImageUrl(fileName: string): string {\n        if (!fileName) {\n            return '';\n        }\n        if (fileName.indexOf('/') === 0) {\n            return this.getAssetsPath() + fileName;\n        }\n        return `${this.getAssetsPath()}/${fileName}`;\n    }\n\n    /**\n     * Build the file URL for the file server request\n     * @param fileName - the given file name\n     */\n    getFileUrl(fileName: string): string {\n        if (!fileName) {\n            return '';\n        }\n        if (fileName.indexOf('/') === 0) {\n            return this.getFileServerPath() + fileName;\n        }\n        return `${this.getFileServerPath()}/${fileName}`;\n    }\n\n    getSsoRedirect(data: SsoRedirectData): string {\n        const params = Object.keys(data).map(key => {\n            return `${key}=${data[key]}`;\n        })\n        return iNet.getPUrl('ssorequest/redirect') + '?' + params.join('&');\n    }\n\n    convergePlugins(): Observable<any> {\n        return this.convergeSearch({converge: 'plugins'});\n    }\n\n    convergeSearch(params): Observable<any> {\n        return this.http.postJSON(iNet.getPUrl('converge/search'), params);\n    }\n\n    setEnvironment(v: any = {production: false}) {\n        CoreService.environment = v;\n    }\n\n    getEnvironment(): any {\n        return CoreService.environment;\n    }\n\n    private getPath(path: string = ''): string {\n        const lastIndex = path.lastIndexOf('/');\n        if (lastIndex === path.length - 1) {\n            return path.substring(0, lastIndex);\n        }\n        return path;\n    }\n\n    /**\n     * Gets File server path\n     */\n    getFileServerPath(): string {\n        return this.getPath(iNet.getFileServer());\n    }\n\n    /**\n     * Gets assets path of current app\n     */\n    getAssetsPath(): string {\n        return this.getPath(iNet.getImageFolder());\n    }\n}\n\nexport interface LogoutData {\n    uuid: string;\n}\n\ninterface CustomResponse extends Response {\n    elements: any[];\n}\n\nexport interface SsoRedirectData {\n    url: string;\n    application: string;\n    redirect?: boolean;\n}\n\nexport interface PathRedirectData {\n    path: string;\n    application: string;\n    organId?: string;\n    firmPrefix?: string;\n}\n","import {Injectable} from '@angular/core';\nimport {HttpClientService} from './http-client.service';\nimport {Subscription} from 'rxjs';\nimport {iNet} from \"./iNet\";\n@Injectable()\nexport class SuggestionService {\n    static instance: SuggestionService = null;  // Create a singleton service\n\n    constructor(private http: HttpClientService) {\n        return SuggestionService.instance = SuggestionService.instance || this;\n    }\n\n    saveSuggestion(params: SuggestionParamData, callback?: Function): Subscription {\n        if (!params.keyword) {\n            return;\n        }\n        return this.http.postJSON(iNet.getPUrl('system/suggestion/update'), params).subscribe(\n            (data) => {\n                if (callback) {\n                    callback(data);\n                }\n            },\n            (err) => {\n                if (callback) {\n                    callback(null, err);\n                }\n            }\n        );\n    }\n\n    loadSuggestion(params: SuggestionParamData, callback: Function): Subscription {\n        return this.http.postJSON(iNet.getPUrl('system/suggestion/hint'), params).subscribe(\n            (data: SuggestionResponse) => {\n                callback(data && data.items || []);\n            },\n            err => {\n                callback([], err);\n            }\n        );\n    }\n}\nexport interface SuggestionParamData {\n    content: string;\n    keyword: string;\n}\n\nexport interface SuggestionResponse {\n    items: SuggestionItem[];\n    total: number;\n}\n\nexport interface SuggestionItem {\n    content: string;\n    keyword: string;\n    ownercode: string;\n    usage: number;\n    uuid: string;\n}\n","import { Directive, AfterViewInit, ElementRef, Input } from '@angular/core';\nimport {fromEvent} from \"rxjs\";\n\ninterface ScrollPosition {\n  sH: number;\n  sT: number;\n  cH: number;\n}\n\nconst DEFAULT_SCROLL_POSITION: ScrollPosition = {\n  sH: 0,\n  sT: 0,\n  cH: 0\n};\n\n@Directive({\n  selector: '[appInfiniteScroller]'\n})\nexport class InfiniteScrollerDirective implements AfterViewInit {\n\n  private scrollEvent$;\n  private userScrolledDown$;\n  private requestOnScroll$;\n\n  @Input()\n  scrollCallback;\n\n  @Input()\n  immediateCallback;\n\n  @Input()\n  scrollPercent = 70;\n\n  @Input()\n  isSubmit = false;\n\n  constructor(private elm: ElementRef) { }\n\n  ngAfterViewInit() {\n    this.registerScrollEvent();\n    this.streamScrollEvents();\n    this.requestCallbackOnScroll();\n\n  }\n\n  private registerScrollEvent() {\n\n    this.scrollEvent$ = fromEvent(this.elm.nativeElement, 'scroll');\n\n  }\n\n  private streamScrollEvents() {\n    this.userScrolledDown$ = this.scrollEvent$\n      .map((e: any): ScrollPosition => ({\n        sH: e.target.scrollHeight,\n        sT: e.target.scrollTop,\n        cH: e.target.clientHeight\n      }))\n      .pairwise()\n      .filter(positions => this.isUserScrollingDown(positions) && this.isScrollExpectedPercent(positions[1]))\n  }\n\n  private requestCallbackOnScroll() {\n    this.requestOnScroll$ = this.userScrolledDown$;\n\n    if (this.immediateCallback) {\n      this.requestOnScroll$ = this.requestOnScroll$\n        .startWith([DEFAULT_SCROLL_POSITION, DEFAULT_SCROLL_POSITION]);\n    }\n\n    this.requestOnScroll$\n      .exhaustMap(() => {\n        return this.scrollCallback();\n      })\n      .subscribe((data) => { console.log(data) }, (err) => console.log(err));\n\n  }\n\n  private isUserScrollingDown = (positions) => {\n    return positions[0].sT < positions[1].sT;\n  };\n\n  private isScrollExpectedPercent = (position) => {\n    return ((position.sT + position.cH) / position.sH) > (this.scrollPercent / 100);\n  };\n\n  private isScrollSubmit() {\n    return this.isSubmit;\n  };\n\n}\n","export class NewPassword {\n  oldpass: string;\n  newpass: string;\n  confirmpass: string;\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable()\nexport class NotificationService {\n\n  constructor() { }\n\n  showMessage(msg: string, type?:string, title?: string, config?: any){\n\n  }\n}\n","import {Injectable} from '@angular/core';\nimport {HttpClientService} from \"./http-client.service\";\nimport {HttpErrorResponse} from \"@angular/common/http\";\nimport {iNet} from \"./iNet\";\n@Injectable()\nexport class SecurityService {\n    static instance: SecurityService = null;\n    private roles: Array<string> = [];\n\n    constructor(private http: HttpClientService) {\n        if (!SecurityService.instance) {\n            this.roles = this.parserRoleFrom({});\n        }\n        return SecurityService.instance = SecurityService.instance || this;\n    }\n\n    public load(): Promise<any> {\n        return new Promise(resolve => {\n            if(!iNet.getPrefix() || !iNet.getUserName()) {\n                resolve({});\n            } else {\n                this.http.postJSON(iNet.getPUrl('system/userrole/list'))\n                    .subscribe((obj: any) => {\n                        for (let key in obj) {\n                            this.append(obj[key]);\n                        }\n                        resolve(obj);\n                    }, (err: HttpErrorResponse) => {\n                        resolve({});\n                    });\n            }\n        });\n    }\n\n    private parserRoleFrom(obj: Object): Array<string> {\n        let roles: Array<string> = [];\n        for (let key in obj) {\n            if (obj[key] === \"true\" || obj[key] === true) {\n                roles.push(key);\n            }\n        }\n        return roles;\n    }\n\n    private uniqueArray(arrArg) {\n        return arrArg.filter(function(elem, pos,arr) {\n            return arr.indexOf(elem) == pos;\n        });\n    };\n\n    private append(v: Array<string>): Array<string> {\n        //console.log('[append]roles', v);\n        this.roles = this.uniqueArray(this.roles.concat(v));\n        return this.roles;\n    }\n\n    hasRole(v: string): boolean {\n        //console.log('[checkRole]=', v);\n        let roles = v.split(',');\n        if (roles.length > 1) {\n            let __items = roles.filter(role => this.roles.indexOf(role) > -1);\n            return (__items.length > 0);\n        }\n        return (this.roles.indexOf(v) > -1);\n    }\n\n    /**\n     * Check session timeout when system is idle\n     */\n    ping() {\n        if(!iNet.getUserName()) {\n            return;\n        }\n        let iframe = document.createElement('iframe');\n        iframe.style.display = \"none\";\n        iframe.setAttribute(\"src\", iNet.getPUrl('common/page/ping'));\n        iframe.onload = function () {\n            const __loginUrl = 'cas/login';\n            try {\n                let __path = iframe.contentWindow.location.pathname || '';\n                let __isLogin = (__loginUrl.match(__path) || []).length > 0 || __path.includes(__loginUrl);\n                if (__isLogin) {\n                    window.location.reload();\n                }\n            } catch (ex) {\n                window.location.reload();\n            }\n            document.body.removeChild(iframe);\n        };\n        document.body.appendChild(iframe);\n    }\n\n}\n","import {Directive, Input, OnInit, TemplateRef, ViewContainerRef} from '@angular/core';\nimport {SecurityService} from './security.service';\n\n@Directive({\n  selector: '[roleAccess]'\n})\nexport class RoleAccessDirective implements OnInit {\n\n  @Input('roleAccess') roleAccess: string;\n\n  constructor(private templateRef: TemplateRef<any>,\n              private viewContainer: ViewContainerRef,\n              private securityService: SecurityService) {\n  }\n\n  ngOnInit(): void {\n    this.applyPermission();\n  }\n\n  private applyPermission(): void {\n    if(this.securityService.hasRole(this.roleAccess)){\n      this.viewContainer.createEmbeddedView(this.templateRef);\n    } else {\n      this.viewContainer.clear();\n    }\n  }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport {iNet} from \"./iNet\";\n@Pipe({\n  name: 'ssoUrl'\n})\nexport class SSOUrlPipe implements PipeTransform {\n\n  transform(url: string): string {\n    return iNet.getSSOUrl(url);\n  }\n\n}\n","import {Injectable} from '@angular/core';\nimport {UserProfile} from './model/user-profile';\nimport {HttpClientService} from './http-client.service';\nimport {Observable, of} from 'rxjs';\nimport {UserResponseData} from \"./model/user-response-data\";\nimport {NewPassword} from \"./model/new-password\";\nimport {map, shareReplay, tap} from 'rxjs/operators';\nimport {HttpErrorResponse} from \"@angular/common/http\";\nimport {CoreService} from \"./core.service\";\nimport {iNet} from \"./iNet\";\n\nconst AVATAR_VERSION_KEY = 'avatarVersion';\n@Injectable({\n    providedIn: 'platform'\n})\nexport class UserProfileService {\n    static instance: UserProfileService = null;\n    static readonly DEFAULT_AVATAR_URL = 'data:image/jpeg;base64,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';\n    private $cache: Observable<Object>;\n    private profile: UserProfile = null;\n\n    private $systemProfileCache: Observable<Object>;\n    private systemProfile: UserResponseData = null;\n\n    private $profileObservableCache: any = {};\n    private inventory: any = {};\n\n    private url = {\n        get: iNet.getPUrl('gl/contact/load'),\n        view: iNet.getPUrl('system/userprofile/view'),\n        update: iNet.getPUrl('system/userprofile/update'),\n        change_password: iNet.getPUrl('system/account/passsword'),\n        photo: iNet.getPUrl('system/userprofile/photo')\n    };\n\n    constructor(private http: HttpClientService,\n                private coreService: CoreService) {\n    }\n\n    /*\n    private loadProfile(): Observable<Object> {\n        return this.http.postJSON(this.url.get)\n            .map((res: UserProfile) => res)\n            .do(profile => this.profile = profile);\n    }\n     */\n\n    private loadSystemProfile(): Observable<Object> {\n        return this.http.postJSON(this.url.view).pipe(\n            map((res: UserResponseData) => res),\n            tap((profile: any) => {\n                this.systemProfile = profile;\n                this.profile = profile.user as UserProfile;\n            })\n        );\n    }\n\n    /**\n     * Gets the currently LDAP profile of user logged\n     */\n    getSystemProfile(): Observable<Object> {\n        if (this.systemProfile) {\n            return of(this.systemProfile);\n        }\n        if (!this.$systemProfileCache) {\n            this.$systemProfileCache = this.loadSystemProfile().pipe(shareReplay(1));\n        }\n        return this.$systemProfileCache;\n    }\n\n    /**\n     * Gets the curently profile of user logged\n     */\n    getProfile(): Observable<Object> {\n        if (this.profile) {\n            return of(this.profile);\n        }\n        return this.getSystemProfile().pipe(map((res: UserResponseData) => res.user));\n    }\n\n    update(user: UserProfile): Observable<Object> {\n        this.$cache = null;\n        return this.http.postJSON(this.url.update, user);\n    }\n\n    changePassword(password: NewPassword): Observable<Object> {\n        return this.http.postJSON(this.url.change_password, password);\n    }\n\n    getAvatarUrlByProfile(userProfile: UserProfile): string {\n        let avatarUrl: string;\n        avatarUrl = this.coreService.getFileUrl(userProfile.avatar);\n        if (this.getAvatarVersion() > 0) {\n            avatarUrl = `${avatarUrl}?version=${this.getAvatarVersion()}`;\n        }\n        return avatarUrl;\n    }\n\n    getAvatarUrl(): Promise<string> {\n        return new Promise(resolve => {\n            resolve(this.url.photo);\n            /*\n            this.getProfile().subscribe((obj: UserProfile) => {\n                // resolve(this.getAvatarUrlByProfile(obj));\n            }, (err: HttpErrorResponse) => {\n                resolve();\n            });\n\n             */\n        });\n    }\n\n    getFullName(): Promise<string> {\n        return new Promise(resolve => {\n            if (!iNet.getPrefix() || !iNet.isEnableLayout()) {\n                resolve(iNet.getDisplayName());\n            } else {\n                this.getProfile().subscribe((profile: UserProfile) => {\n                    let fullName: string = '';\n                    if (profile.lastName) {\n                        fullName += profile.lastName;\n                    }\n                    if (profile.middleName) {\n                        fullName += ' ' + profile.middleName;\n                    }\n                    if (profile.firstName) {\n                        fullName += ' ' + profile.firstName;\n                    }\n                    profile.name = fullName || iNet.getDisplayName() || iNet.getUserName();\n                    resolve(profile.name.trim());\n                }, (err: HttpErrorResponse) => {\n                    resolve('');\n                });\n            }\n        });\n    }\n\n    getSignPictureId(): Promise<string> {\n        return new Promise(resolve => {\n            this.getSystemProfile().subscribe((data: UserResponseData) => {\n                let signPictureId: string = '';\n                if (data.user && data.user.signPictureID) {\n                    signPictureId = data.user.signPictureID;\n                }\n                resolve(signPictureId);\n            }, (err: HttpErrorResponse) => {\n                resolve('');\n            });\n        });\n    }\n\n    getSignVerifyNumber(): Promise<string> {\n        return new Promise(resolve => {\n            this.getSystemProfile().subscribe((data: UserResponseData) => {\n                let signVerify: string = '';\n                if (data.user && data.user.signVerify) {\n                    signVerify = data.user.signVerify;\n                }\n                resolve(signVerify);\n            }, (err: HttpErrorResponse) => {\n                resolve('');\n            });\n        });\n    }\n\n    increaseAvatarVersion() {\n        localStorage.setItem(AVATAR_VERSION_KEY, (this.getAvatarVersion() + 1).toString());\n    }\n\n    getAvatarVersion(): number {\n        return Number(localStorage.getItem(AVATAR_VERSION_KEY));\n    }\n\n    /**\n     * Returns the profile associated with the username.\n     * @param username - {string} The username variable\n     */\n    getProfileByUsername(username: string): Observable<any> {\n        //console.log('[getProfileByUsername]--username, inventory', username, this.inventory);\n        if (this.inventory.hasOwnProperty(username)) {\n            return of(this.inventory[username]);\n        }\n        if (!this.$profileObservableCache[username]) {\n            this.$profileObservableCache[username] = this.http.getJSON(this.url.get, {username: username})\n                .pipe(tap((res) => this.inventory[username] = res), shareReplay(1))\n        }\n        return this.$profileObservableCache[username];\n    }\n\n    /**\n     * Returns the avatar URL  with the username.\n     * @param username - {string} The username variable\n     */\n    getAvatarUrlByUsername(username: string): Promise<string> {\n        return new Promise(resolve => {\n            this.getProfileByUsername(username).subscribe((obj: UserProfile) => {\n                if (obj.avatar) {\n                    resolve(this.coreService.getFileUrl(obj.avatar));\n                } else {\n                    resolve('');\n                }\n            }, (err: HttpErrorResponse) => {\n                resolve('');\n            });\n        });\n    }\n\n    getDefaultAvatarUrl(): string {\n        return UserProfileService.DEFAULT_AVATAR_URL;\n    }\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable()\nexport class AccentService {\n\n  private _vi_accents = [\n    \"à\",\"á\",\"ạ\",\"ả\",\"ã\",\"â\",\"ầ\",\"ấ\",\"ậ\",\"ẩ\",\"ẫ\",\"ă\",\n    \"ằ\",\"ắ\",\"ặ\",\"ẳ\",\"ẵ\",\"è\",\"é\",\"ẹ\",\"ẻ\",\"ẽ\",\"ê\",\"ề\",\n    \"ế\",\"ệ\",\"ể\",\"ễ\",\n    \"ì\",\"í\",\"ị\",\"ỉ\",\"ĩ\",\n    \"ò\",\"ó\",\"ọ\",\"ỏ\",\"õ\",\"ô\",\"ồ\",\"ố\",\"ộ\",\"ổ\",\"ỗ\",\"ơ\",\n    \"ờ\",\"ớ\",\"ợ\",\"ở\",\"ỡ\",\n    \"ù\",\"ú\",\"ụ\",\"ủ\",\"ũ\",\"ư\",\"ừ\",\"ứ\",\"ự\",\"ử\",\"ữ\",\n    \"ỳ\",\"ý\",\"ỵ\",\"ỷ\",\"ỹ\",\n    \"đ\",\n    \"À\",\"Á\",\"Ạ\",\"Ả\",\"Ã\",\"Â\",\"Ầ\",\"Ấ\",\"Ậ\",\"Ẩ\",\"Ẫ\",\"Ă\",\n    \"Ằ\",\"Ắ\",\"Ặ\",\"Ẳ\",\"Ẵ\",\n    \"È\",\"É\",\"Ẹ\",\"Ẻ\",\"Ẽ\",\"Ê\",\"Ề\",\"Ế\",\"Ệ\",\"Ể\",\"Ễ\",\n    \"Ì\",\"Í\",\"Ị\",\"Ỉ\",\"Ĩ\",\n    \"Ò\",\"Ó\",\"Ọ\",\"Ỏ\",\"Õ\",\"Ô\",\"Ồ\",\"Ố\",\"Ộ\",\"Ổ\",\"Ỗ\",\"Ơ\",\n    \"Ờ\",\"Ớ\",\"Ợ\",\"Ở\",\"Ỡ\",\n    \"Ù\",\"Ú\",\"Ụ\",\"Ủ\",\"Ũ\",\"Ư\",\"Ừ\",\"Ứ\",\"Ự\",\"Ử\",\"Ữ\",\n    \"Ỳ\",\"Ý\",\"Ỵ\",\"Ỷ\",\"Ỹ\",\n    \"Đ\"\n  ];\n\n  private _en_accents = [\n    \"a\",\"a\",\"a\",\"a\",\"a\",\"a\",\"a\",\"a\",\"a\",\"a\",\"a\",\n    \"a\",\"a\",\"a\",\"a\",\"a\",\"a\",\n    \"e\",\"e\",\"e\",\"e\",\"e\",\"e\",\"e\",\"e\",\"e\",\"e\",\"e\",\n    \"i\",\"i\",\"i\",\"i\",\"i\",\n    \"o\",\"o\",\"o\",\"o\",\"o\",\"o\",\"o\",\"o\",\"o\",\"o\",\"o\",\"o\",\n    \"o\",\"o\",\"o\",\"o\",\"o\",\n    \"u\",\"u\",\"u\",\"u\",\"u\",\"u\",\"u\",\"u\",\"u\",\"u\",\"u\",\n    \"y\",\"y\",\"y\",\"y\",\"y\",\n    \"d\",\n    \"A\",\"A\",\"A\",\"A\",\"A\",\"A\",\"A\",\"A\",\"A\",\"A\",\"A\",\"A\",\n    \"A\",\"A\",\"A\",\"A\",\"A\",\n    \"E\",\"E\",\"E\",\"E\",\"E\",\"E\",\"E\",\"E\",\"E\",\"E\",\"E\",\n    \"I\",\"I\",\"I\",\"I\",\"I\",\n    \"O\",\"O\",\"O\",\"O\",\"O\",\"O\",\"O\",\"O\",\"O\",\"O\",\"O\",\"O\",\n    \"O\",\"O\",\"O\",\"O\",\"O\",\n    \"U\",\"U\",\"U\",\"U\",\"U\",\"U\",\"U\",\"U\",\"U\",\"U\",\"U\",\n    \"Y\",\"Y\",\"Y\",\"Y\",\"Y\",\n    \"D\"\n  ];\n\n  constructor() { }\n\n  viToEn(str: string) {\n    return str.replace(/[^\\u0000-\\u007E]/g, (a) => {\n      var index = this._vi_accents.indexOf(a);\n      return index < 0 ? a : this._en_accents[index];\n    });\n  }\n}","import { Injectable } from '@angular/core';\n\n@Injectable()\nexport class CacheStorageService {\n\n  // Time cache data. Default 5 minutes.\n  timeCache: number = 5 * 60 * 1000;\n\n  private __storage = {};\n  private __queue = {};\n\n  constructor() { }\n\n  promiseQueue(name: string, promise: Function, resovle: Function) {\n    if (this.__queue[name]) {\n      this.__queue[name].push(resovle);\n    } else {\n      this.__queue[name] = [resovle];\n      promise(name);\n    }\n  }\n\n  resolveQueue(name: string, context: any, args?: any[]) {\n    if (this.__queue[name]) {\n      this.__queue[name].forEach(fn => {\n        try {\n          fn.apply(context, args);\n        } catch (e) {\n\n        }\n      });\n      delete this.__queue[name];\n    }\n  }\n\n  getData(key: string) {\n    const data: CacheStorageItem = this.__storage[key];\n    // Check data expired\n    if (data && new Date().getTime() - data.time <= data.timeCache) {\n      return data.value;\n    }\n  }\n\n  setData(key: string, data: any, options?: CacheStorageOptions) {\n    const timeCache = options && options.timeCache || this.timeCache;\n    this.__storage[key] = <CacheStorageItem>{\n      time: new Date().getTime(),\n      timeCache: timeCache,\n      value: data\n    };\n  }\n\n  removeData(key: string) {\n    delete this.__storage[key];\n  }\n\n  clearData() {\n    this.__storage = {};\n  }\n\n}\n\nexport interface CacheStorageOptions {\n  timeCache?: number;\n  resolveData?: boolean;\n}\n\nexport interface CacheStorageItem {\n  time: number;\n  timeCache: number;\n  value: any;\n}\n","/**\n * Inspired from: https://stevepapa.com/ng-autosize/\n */\nimport { Input, AfterViewInit, ElementRef, HostListener, Directive} from '@angular/core';\n\n@Directive({\n  selector: 'textarea[appAutoSize]',\n  exportAs: 'appAutoSize'\n})\n\nexport class AutoSizeDirective implements AfterViewInit {\n\n  private el: HTMLElement;\n  private _minHeight: string;\n  private _maxHeight: string;\n  private _lastHeight: number;\n  private _clientWidth: number;\n\n  @Input('minHeight')\n  get minHeight() {\n    return this._minHeight;\n  }\n  set minHeight(val: string) {\n    this._minHeight = val;\n    this.updateMinHeight();\n  }\n\n  @Input('maxHeight')\n  get maxHeight() {\n    return this._maxHeight;\n  }\n  set maxHeight(val: string) {\n    this._maxHeight = val;\n    this.updateMaxHeight();\n  }\n\n  @HostListener('window:resize')\n  onResize() {\n    //Only apply adjustment if element width had changed.\n    if (this.el.clientWidth === this._clientWidth) return;\n    this._clientWidth = this.element.nativeElement.clientWidth;\n    this.adjust();\n  }\n\n  @HostListener('input')\n  onInput(): void {\n    this.adjust();\n  }\n\n  constructor(public element: ElementRef){\n    this.el = element.nativeElement;\n    this._clientWidth = this.el.clientWidth;\n  }\n\n  ngAfterViewInit(): void{\n    // set element resize allowed manually by user\n    const style = window.getComputedStyle(this.el, null);\n    if (style.resize === 'both') {\n      this.el.style.resize = 'horizontal';\n    }\n    else if (style.resize === 'vertical') {\n      this.el.style.resize = 'none';\n    }\n    // run first adjust\n    this.adjust();\n  }\n\n  adjust(): void{\n    // perform height adjustments after input changes, if height is different\n    // if (this.el.style.height == this.element.nativeElement.scrollHeight + \"px\") return;\n    this.el.style.overflow = 'hidden';\n    this.el.style.height = 'auto';\n    this.el.style.height = this.el.scrollHeight + \"px\";\n  }\n\n  updateMinHeight(): void{\n    // Set textarea min height if input defined\n    this.el.style.minHeight = this._minHeight + 'px';\n  }\n\n  updateMaxHeight(): void{\n    // Set textarea max height if input defined\n    this.el.style.maxHeight = this._maxHeight + 'px';\n  }\n\n}","import {Directive, ElementRef, Input, OnChanges, OnInit} from '@angular/core';\nimport {UserProfileService} from \"./user-profile.service\";\nimport {iNet} from \"./iNet\";\n\n@Directive({\n    selector: 'img[userAvatar]'\n})\nexport class AvatarDirective implements OnInit, OnChanges {\n    @Input() usercode: string = iNet.getUserName();\n\n    constructor(private _el: ElementRef) {\n    }\n\n    ngOnInit() {\n        this._el.nativeElement.addEventListener('error', this._loadAvatarError.bind(this));\n        this._setAvatar();\n    }\n\n    ngOnChanges() {\n        this._setAvatar();\n    }\n\n    private _setAvatar() {\n        if (!this.usercode) {\n            this._loadAvatarError();\n            return;\n        }\n        this._el.nativeElement.src = iNet.getPUrl('system/userprofile/photo') + '?usercode=' + encodeURIComponent(this.usercode);\n    }\n\n    private _loadAvatarError() {\n        this._el.nativeElement.src = UserProfileService.DEFAULT_AVATAR_URL;\n    }\n}\n","import {Injectable} from '@angular/core';\nimport {iNet} from \"./iNet\";\n\n@Injectable()\nexport class ResourceLoaderService {\n\n    private _loaded = [];\n    private _version: string = '';\n\n    constructor() {\n\n    }\n\n    load(resources: Resource[], callback: Function) {\n        if (resources.length < 1) {\n            return callback();\n        }\n        this._loadResources(resources, callback);\n    }\n\n    loadJS(url: string, callback: Function) {\n        this._loadWithTagName('script', {\n            type: 'text/javascript',\n            src: this.getFullUrlJS(url)\n        }, callback);\n    }\n\n    loadCSS(url: string, callback: Function) {\n        this._loadWithTagName('link', {\n            type: 'text/css',\n            rel: 'stylesheet',\n            href: url\n        }, callback);\n    }\n\n    getFullUrlJS(url: string) {\n        if (url.indexOf('//') < 0 && iNet.getFileServer()) {\n            if (url.startsWith('/')) {\n                url = url.substr(1, url.length);\n            }\n            return iNet.getFileServer() + url;\n        }\n        return url;\n    }\n\n    isLoaded(url: string) {\n        return this._loaded.indexOf(url) > -1;\n    }\n\n    private _loadResources(resources: Resource[], callback: Function) {\n        let splitGroups = this._groupResources(resources);\n        let fn = () => {\n            if (splitGroups.length < 1) {\n                return callback();\n            }\n            this._loadGroups(splitGroups.splice(0, 1)[0], fn);\n        };\n        fn();\n    }\n\n    //  Split group resources by sync/async\n    private _groupResources(resources: Resource[]) {\n        let splitGroups = [];\n        let groups;\n\n        //  Split group resources by sync/async\n        for (let i = 0; i < resources.length; i++) {\n            if (!groups) {\n                groups = [];\n                splitGroups.push(groups);\n            }\n\n            groups.push(resources[i]);\n\n            if (resources[i].sync) {\n                groups = null;\n            }\n        }\n        return splitGroups;\n    }\n\n    private _loadGroups(resources: Resource[], callback: Function) {\n        let promises = [];\n        resources.forEach(item => promises.push(this._load(item)));\n        Promise.all(promises).then(() => {\n            callback();\n        });\n    }\n\n    private _load(resource: Resource): Promise<any> {\n        return new Promise((resolve) => {\n            if (resource.type === 'css') {\n                this.loadCSS(resource.url, resolve);\n            } else {\n                this.loadJS(resource.url, resolve);\n            }\n        });\n    }\n\n    private _loadWithTagName(tagName: string, properties, callback: Function) {\n        let url = properties.src || properties.href;\n        // Loaded\n        if (this.isLoaded(url)) {\n            return callback();\n        }\n\n\n        let tagEl = document.createElement(tagName);\n        for (let k in properties) {\n            tagEl[k] = properties[k];\n        }\n\n        tagEl.onload = () => {\n            this._loaded.push(url);\n            callback();\n        };\n        tagEl.onerror = (e) => {\n            console.warn(\"Load resource error: \" + url);\n            console.warn(e);\n            this._loaded.push(url);\n            callback();\n        };\n\n        document.head.appendChild(tagEl);\n    }\n}\n\nexport interface Resource {\n    url: string;\n    sync?: boolean;\n    loaded?: boolean;\n    type?: string;\n}\n","import {SecurityService} from \"./security.service\";\n\nexport function initApp(config: SecurityService){\n    return () => {\n        return config.load();\n    }\n}","import {NgModule, APP_INITIALIZER} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {HttpClientModule} from '@angular/common/http';\nimport {CoreService} from \"./core.service\";\nimport {HttpClientService} from \"./http-client.service\";\nimport {NotificationService} from \"./notification.service\";\nimport {AccentService} from \"./accent.service\";\nimport {UserProfileService} from \"./user-profile.service\";\nimport {CacheStorageService} from \"./cache-storage.service\";\nimport {RoleAccessDirective} from \"./role-access.directive\";\nimport {InfiniteScrollerDirective} from \"./infinite-scroller.directive\";\nimport {AutoSizeDirective} from \"./autosize.directive\";\nimport {AvatarDirective} from \"./avatar.directive\";\nimport {SecurityService} from \"./security.service\";\nimport {SSOUrlPipe} from \"./ssourl.pipe\";\nimport {ResourceLoaderService} from \"./resource-loader.service\";\nimport {initApp} from \"./init-app\";\nimport {LoadingIndicatorService} from \"./loading-indicator.service\";\n\n@NgModule({\n    imports: [\n        CommonModule,\n        HttpClientModule\n    ],\n    declarations: [\n        RoleAccessDirective,\n        InfiniteScrollerDirective,\n        AutoSizeDirective,\n        AvatarDirective,\n        SSOUrlPipe\n    ],\n    exports: [\n        RoleAccessDirective,\n        InfiniteScrollerDirective,\n        AutoSizeDirective,\n        AvatarDirective,\n        SSOUrlPipe\n    ],\n    providers: [\n        CoreService,\n        HttpClientService,\n        NotificationService,\n        AccentService,\n        UserProfileService,\n        CacheStorageService,\n        ResourceLoaderService,\n        {\n            'provide': APP_INITIALIZER,\n            'useFactory': initApp,\n            'multi': true,\n            'deps': [SecurityService]\n        },\n        SecurityService,\n        LoadingIndicatorService\n    ]\n})\nexport class CoreModule {\n}\n","import { Subject } from 'rxjs';\n\nexport abstract class WebSocketAbstract {\n    // receive message from socket server\n    onMessage: Subject<EnvelopBody> = new Subject();\n    onStateChange: Subject<number> = new Subject();\n\n    // update readyState\n    stateChange () {\n        this.onStateChange.next(this.readyState);\n    }\n\n    constructor(options: any, username: string) {\n        this.connect(options, username);\n    }\n\n    // WebSocket readyState\n    abstract readyState: number;\n\n    // connect to socket server\n    abstract connect(options: any, username: string): any;\n\n    // close socket server\n    abstract close(): any;\n\n    // send message to socket server\n    abstract send(envelop: WebSocketEnvelop): Promise<boolean>;\n}\n\nexport enum WebSocketType {\n\n    // send to the first address\n    SEND = 'send',\n\n    // publish to the all address\n    PUBLISH = 'publish',\n}\n\nexport class WebSocketEnvelop {\n    type: WebSocketType | string = WebSocketType.PUBLISH;\n    address: string;\n    socialOrgid?: string;\n    body: EnvelopBody | CustomEnvelopBody<any>;\n}\n\nexport class EnvelopBody {\n    uuid: string;\n    application: string;\n    message: EnvelopMessage;\n    sender: string;\n    alias: string[]; // receivers\n    sent: number;\n    channelIds?: string;\n    socialOrgid?: string;\n    categories?: string | string[]\n}\n\nexport class EnvelopMessage {\n    sender: string;\n    alert: string;\n    content: string;\n    joins: string;\n    duration: string;\n    channelIds?: string;\n    constructor(sender: string, content: string, joins?: string, duration?: string) {\n        this.content = this.alert = content;\n        this.sender = sender;\n        if(!!joins ){\n            this.joins = joins || sender;\n        }\n        this.duration = duration || \"0\";\n    }\n}\n\nexport class CustomEnvelopBody<T>{\n    uuid: string;\n    application: string;\n    message: T;\n    sender: string;\n    alias: string[]; // receivers\n    sent: number;\n    channelIds?: string;\n    socialOrgid?: string;\n    categories?: string | string[]\n}\n\n","import {EnvelopBody, WebSocketAbstract, WebSocketEnvelop} from './websocket-abstract';\n\nexport class WebSocketJboss extends WebSocketAbstract {\n    private _socket: WebSocket;\n\n    get readyState(): number {\n        return this._socket ? this._socket.readyState : null;\n    }\n\n    stateChange() {\n        if (this.readyState === WebSocket.OPEN) {\n            this._ping();\n        }\n        super.stateChange();\n    }\n\n    connect(options: string, username: string) {\n        this._socket = new WebSocket(options);\n        this._socket.onmessage = (event) => {\n            // const envelop: WebSocketEnvelop = JSON.parse(event.data);\n            // if (envelop.body) {\n            //     this.onMessage.next(envelop.body);\n            // }\n            const envelopBody: EnvelopBody = JSON.parse(event.data);\n            if (envelopBody.sender) {\n                this.onMessage.next(envelopBody);\n            }\n        };\n        this._socket.onopen = () => this.stateChange();\n        this._socket.onerror = () => this.stateChange();\n        this._socket.onclose = () => this.stateChange();\n    }\n\n    close() {\n        this._socket.close();\n    }\n\n    send(envelop: WebSocketEnvelop): Promise<boolean> {\n        return new Promise(resolve => {\n            try {\n                this._socket.send(JSON.stringify(envelop));\n                resolve(true);\n            } catch(e) {\n                resolve(false);\n                console.warn('Send message failed', e);\n            }\n        });\n    }\n\n    private _ping() {\n        if (this.readyState === WebSocket.OPEN) {\n            this._socket.send(JSON.stringify({type: 'ping'}));\n            setTimeout(() => this._ping(), 10000);\n        }\n    }\n}\n","import { WebSocketAbstract, WebSocketEnvelop } from './websocket-abstract';\nimport * as EventBus from '@vertx/eventbus-bridge-client.js'\n\nexport class WebSocketVertx extends WebSocketAbstract {\n    private _eventbus: EventBus;\n\n    get readyState(): number {\n        return this._eventbus ? this._eventbus.state : null;\n    };\n\n    connect(options: any, username: string) {\n        if (options && options.length === 2) {\n            var url = options[0];\n            var headers = {\n                keyapi: options[1]\n            };\n            this._connect(url, headers, username);\n        }\n    }\n\n    private _connect(url: string, headers: any, username: string) {\n        this._eventbus = new EventBus(url, {\n            transports: 'websocket'\n        });\n        this._eventbus.onopen = () => {\n            // Channel receive chat message\n            this._eventbus.registerHandler(username, headers, (err: any, msg: any) => {\n                if (msg) {\n                    this.onMessage.next(msg.body);\n                }\n            });\n            // Channel receive online message\n            // this._eventbus.registerHandler('news-feed', headers, (err: any, msg: any) => {\n            //     if (msg) {\n            //         this.onMessage.next(msg);\n            //     }\n            // });\n            this.stateChange();\n        };\n        this._eventbus.onclose = () => this.stateChange();\n        this._eventbus.onerror = () => this.stateChange();\n    }\n\n    close() {\n        this._eventbus.close();\n    }\n\n    send(envelop: WebSocketEnvelop): Promise<boolean> {\n        return new Promise(resolve => {\n            try {\n                this._eventbus.publish(envelop.address, envelop.body);\n                resolve(true);\n            } catch(e) {\n                resolve(false);\n                console.warn('Send message failed', e);\n            }\n        });\n    }\n}\n","import { WebSocketAbstract, WebSocketEnvelop, EnvelopBody, EnvelopMessage } from './websocket-abstract';\nimport { WebSocketJboss } from './websocket-jboss';\nimport { WebSocketVertx } from './websocket-vertx';\nimport { Subject } from 'rxjs';\nimport {iNet} from \"../iNet\";\n\ndeclare let $: any;\n\nexport class WebSocketClient {\n    static instance: WebSocketClient = null;\n    socket: WebSocketAbstract;\n    // message from socket server\n    onMessage: Subject<EnvelopBody> = new Subject();\n    // socket state change\n    onStateChange: Subject<any> = new Subject();\n    // envelop send will be timeout after 30s\n    sendTimeout: number = 30000;\n    private _username: string;\n    private _autoconnect: boolean;\n    private _autoconnectAfter: number = 5000; // 5s\n    private _autoconnectRepeat: number = 4; // 5 times\n    private _autoconnectRetryAfter: number = 30000; // 30s\n    private _autoconectCount: number;\n    private _autoconectTimer: any;\n    private _envelopQueue = [];\n\n    get readyState(): number {\n        return this.socket ? this.socket.readyState : null;\n    }\n\n    get connecting(): boolean {\n        return this.readyState === WebSocket.CONNECTING || this.readyState === null;\n    }\n\n    get connected(): boolean {\n        return this.readyState === WebSocket.OPEN;\n    }\n\n    get closing(): boolean {\n        return this.readyState === WebSocket.CLOSING;\n    }\n\n    get closed(): boolean {\n        return this.readyState === WebSocket.CLOSED;\n    }\n\n    get autoconnect(): boolean {\n        return this._autoconnect;\n    }\n\n    constructor() {\n        if (!WebSocketClient.instance) {\n            this._getAccountInfo(() => this._register());\n        }\n        return WebSocketClient.instance = WebSocketClient.instance || this;\n\n\n    }\n\n    // close websocket client\n    close() {\n        this.socket.close();\n    }\n\n    send(address: string, message: string, application: string = ''): Promise<boolean> {\n        return this.sendEnvelop(this.buildEnvelop(address, message, application));\n    }\n\n    sendEnvelop(envelop: WebSocketEnvelop): Promise<boolean> {\n        if (this.connected) {\n            return this.socket.send(envelop);\n        } else {\n            return new Promise((resolve) => {\n                // Add to queue and waiting socket connected to send\n                let data: any = {\n                    e: envelop,\n                    f: resolve\n                };\n                data.timer = setTimeout(() => this._completeEnvelopQueue(data, false), this.sendTimeout);\n                this._envelopQueue.push(data);\n            });\n        }\n    }\n\n    buildEnvelop(address: string, message: string, application: string = '', join?: string): WebSocketEnvelop {\n        let envelop = new WebSocketEnvelop();\n        envelop.address = address;\n        envelop.body = new EnvelopBody();\n        envelop.body.application = application;\n        envelop.body.sender = this._username;\n        envelop.body.alias = [address];\n        envelop.body.message = new EnvelopMessage(this._username, message, join || '');\n        return envelop;\n    }\n\n    private _sendEnvelopQueue() {\n        this._envelopQueue.forEach((data) => {\n            this.sendEnvelop(data.e).then((status) => this._completeEnvelopQueue(data, status));\n        });\n    }\n\n    private _completeEnvelopQueue(data: any, status: boolean) {\n        const index = this._envelopQueue.indexOf(data);\n        if (index >= 0) {\n            this._envelopQueue.splice(index, 1);\n        }\n        data.f(status);\n    }\n\n    private _register(callback?: Function) {\n        $.ajax({\n            type: 'POST',\n            url: iNet.getPUrl('account/register'),\n            success: (data: string | string[]) => {\n                if (typeof data === 'string') {\n                    this.socket = new WebSocketJboss(data, this._username);\n                } else {\n                    this.socket = new WebSocketVertx(data, this._username);\n                }\n                this.socket.onStateChange.subscribe(() => this._stateChange());\n                this.socket.onMessage.subscribe((body: EnvelopBody) => {\n                    this.onMessage.next(body);\n                });\n                callback && callback();\n            },\n            error: () => {\n                callback && callback();\n                throw new Error(\"Account register error\");\n            }\n        });\n    }\n\n    private _getAccountInfo(callback: Function) {\n        if (this._username) {\n            return callback(this._username);\n        }\n        if(iNet.getUserName()) {\n            this._username = iNet.getUserName();\n            callback(this._username);\n            return ;\n        } else {\n            $.ajax({\n                url: iNet.getPUrl('system/userprofile/view'),\n                success: (data: any) => {\n                    this._username = data && data.user && (data.user.usercode || data.user.username) || '';\n                    callback(this._username);\n                },\n                error: () => callback(null)\n            });\n        }\n    }\n\n    private _stateChange() {\n        if (this.closed && !this.autoconnect) {\n            this._runAutoConnect();\n        }\n        if (this._autoconnect) {\n            return;\n        }\n        if (this.connected) {\n            this._sendEnvelopQueue();\n        }\n        this._cancelAutoConnect();\n        this.onStateChange.next({});\n    }\n\n    private _runAutoConnect() {\n        this._autoconnect = true;\n        this._autoconectTimer = setTimeout(() => {\n            if (this.connected) {\n                this._cancelAutoConnect();\n                return;\n            }\n            if (this._autoconectCount >= this._autoconnectRepeat) {\n                this._cancelAutoConnect();\n                // Sleep and retry connect after 30s\n                setTimeout(() => this._runAutoConnect(), this._autoconnectRetryAfter);\n                return;\n            }\n\n\n            this._register(() => {\n                this._autoconectCount++;\n                if (!this.connected) {\n                    this._runAutoConnect();\n                }\n            });\n        }, this._autoconnectAfter);\n    }\n\n    private _cancelAutoConnect() {\n        this._autoconnect = false;\n        this._autoconectCount = 0;\n        clearTimeout(this._autoconectTimer);\n    }\n}\n","import { Injectable } from '@angular/core';\nimport { WebSocketClient } from './websocket-client';\n\n@Injectable()\nexport class WebSocketClientService extends WebSocketClient {\n    \n}","export class HtmlUtils {\n\n    static formatPattern: RegExp = new RegExp('(\\\\n)|(\\\\\\\\n)|(\\\\\\\\\\\\\\\\n)|↵', 'g');\n\n    // Escape html to display\n    static formatHtmlDisplay(html: string): string {\n        return html.replace(HtmlUtils.formatPattern, '<br>');\n    }\n}","import { HttpRequest } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { forkJoin } from 'rxjs';\nimport { HttpClientService } from './http-client.service';\nimport { iNet } from './iNet';\nimport { FileUploadOptions } from './model/upload-options.interface';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class UploaderService {\n\n  constructor(private http: HttpClientService) { }\n\n\n  private uploadFile(url: string, formData: FormData, options: FileUploadOptions): Promise<any[]> {\n    if (formData) {\n      const req = new HttpRequest('POST', url, formData, {\n        reportProgress: true\n      });\n      return new Promise((resolve, reject) => {\n        this.http.request(req).subscribe(\n          {\n            next: (event: any) => {\n              if (event?.body) {\n                const files = event?.body[options.elementKey]?.map((item: any) => {\n                  return !!options.fileKey ? item[options.fileKey] : item;\n                });\n                resolve(files);\n              }\n            },\n            error: (error: any) => {\n              this.http.hideLoading();\n              reject('FILE_UPLOAD_FAILED');\n            }\n          }\n        );\n      })\n    } else {\n      throw new Error('Invalid File');\n    }\n  }\n\n  private uploadChunk(url: string, formData: FormData): Promise<any> {\n    if (formData) {\n      //this.http.showLoading();\n      const req = new HttpRequest('POST', url, formData, {\n        reportProgress: true\n      });\n      return new Promise((resolve, reject) => {\n        this.http.request(req).subscribe(\n          {\n            next: (event: any) => {\n              if (event?.body) {\n                resolve(event?.body);\n              }\n            },\n            error: (error: any) => {\n              reject('FILE_UPLOAD_FAILED');\n            }\n          }\n        );\n      })\n    } else {\n      throw new Error('Invalid File');\n    }\n  }\n\n  private uploadChunks(url: string, chunks: Blob[], partitionID: string, formData: FormData, fieldName: string, options: FileUploadOptions): Promise<any> {\n    let chunkRequest$ = chunks.map((chunk, index) => {\n      formData.delete(fieldName);\n      formData.delete(`${fieldName}_chunk`);\n      formData.delete('partitionID');\n\n      formData.append(fieldName, chunk)\n      formData.append(`${fieldName}_chunk`, (index + 1).toString());\n      formData.append('partitionID', partitionID);\n      return this.uploadChunk(url, formData);\n\n    })\n    return new Promise((resolve, reject) => {\n      forkJoin([...chunkRequest$]).subscribe({\n        next: (results: any[]) => {\n          //console.log('reponse', results);\n          results.forEach((response: any, index: number) => {\n            if (response[options.elementKey]) {\n              //Check SUM\n              const files = response[options.elementKey]?.map((item: any) => {\n                return !!options.fileKey ? item[options.fileKey] : item;\n              });\n              if (files && files.length > 0) {\n                resolve(files[0]);\n              } else {\n                resolve(response[options.elementKey]);\n              }\n            }\n          })\n        },\n        error: (error: any) => {\n          reject(error);\n        }\n      });\n    })\n  }\n\n  private uploadChunkFile(url: string, file: File, formData: FormData, index: number, options: FileUploadOptions): Promise<any[]> {\n    const maxSizeUpload = (Number(iNet.getInstances()['maxSizeUpload']) || options.maxSizeUpload || 2000000)\n    const chunkSize = maxSizeUpload * 0.75;\n    let chunkIndex = 0, chunkCount = Math.ceil(file.size / chunkSize);\n    /*\n    console.log('[maxSizeUpload]', maxSizeUpload);\n    console.log('[chunkSize]', chunkSize);\n    console.log('[chunkCount]', chunkCount);\n    */\n    //console.log('[file]', file, file.size);\n    let fieldName = `file${index}`;\n    return new Promise((resolve, reject) => {\n      if (chunkCount == 1) {\n        formData.append(fieldName, file);\n        this.uploadFile(url, formData, options).then(files => {\n          resolve(files);\n        })\n      } else if (chunkCount > 1) {\n        let chunks: Blob[] = [];\n        for (let start = 0; start < file.size; start += chunkSize) {\n          const chunk = file.slice(start, start + chunkSize);\n          chunkIndex += 1;\n          if (chunkIndex === 1) {\n            formData.append(fieldName, chunk);\n            formData.append(`${fieldName}_filename`, file.name);\n            formData.append(`${fieldName}_minetype`, file.type);\n            formData.append(`${fieldName}_chunk`, chunkCount.toString())\n          } else {\n            chunks.push(chunk);\n          }\n        }\n        //Upload first chunk\n        this.uploadChunk(url, formData).then((data: any) => {\n          //Upload chunks\n          this.uploadChunks(url, chunks, data?.uuid, formData, fieldName, options).then((file) => {\n            resolve([file]);\n          }).catch(reason => {\n            reject(reason);\n          });\n        }).catch(reason => {\n          reject(reason);\n        })\n      }\n    })\n  }\n\n  /**\n   *  Send files to a server\n   * @param url  - URL of server to receive the file\n   * @param files - the input files\n   * @param formData - the FormData object \n   * @param options - the file upload options\n   */\n  upload(url: string, files: File[], params: any = {},\n    options: FileUploadOptions = { elementKey: 'elements', fileKey: 'document' }): Promise<any[]> {\n    let requests$ = files.map((file, index) => {\n      return this.uploadChunkFile(url, file, this.http.convertToFormData(params), index + 1, options)\n    })\n    return new Promise((resolve, reject) => {\n      forkJoin([...requests$]).subscribe({\n        next: (results: any[]) => {\n          let files: any[] = [];\n          results.forEach((_files: any[], index: number) => {\n            if (_files.length > 0) {\n              files = files.concat(_files);\n            }\n          })\n          resolve(files);\n        },\n        error: (error: any) => {\n          //console.log('[upload]' , error);\n          if (typeof error === 'string') {\n            reject(error);\n          }\n        }\n      });\n    })\n  }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["this","i2.LoadingIndicatorService","i1.HttpClientService","i1.SecurityService","i2.CoreService"],"mappings":"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"}