UNPKG

sp-jsom-node

Version:

SharePoint JavaScript Object Model for Node.js

1,232 lines (1,146 loc) 714 kB
function $_global_init() { { if ("undefined" == typeof g_all_modules) { g_all_modules = {}; } g_all_modules["init.js"] = { "version": { "rmj": 16, "rmm": 0, "rup": 21319, "rpr": 12007 } }; } if (-1 != navigator.userAgent.indexOf('ProfilerMark') && 'function' == typeof msWriteProfilerMark) { spWriteProfilerMark = function(m) { window.msWriteProfilerMark(m); }; } if (typeof spWriteProfilerMark == 'function') spWriteProfilerMark("perfMarkBegin_" + "init.js"); if (typeof OffSwitch == 'undefined') { OffSwitch = { "__namespace": true }; OffSwitch_module_def(); } if (typeof RuntimeErrors == 'undefined') { RuntimeErrors = { "__namespace": true }; RuntimeErrors_module_def(); } if (typeof Verify == 'undefined') { Verify = { "__namespace": true }; Verify_module_def(); } if (typeof Define == 'undefined') { Define = { "__namespace": true }; Define_module_def(); } if (typeof BrowserDetection == 'undefined') { BrowserDetection = { "__namespace": true }; BrowserDetection_module_def(); } (function() { BrowserisOld.prototype = { firefox: undefined, firefox36up: undefined, firefox3up: undefined, firefox4up: undefined, ie: undefined, ie55up: undefined, ie5up: undefined, ie7down: undefined, ie8down: undefined, ie8standard: undefined, ie8standardUp: undefined, ie9down: undefined, ie9standardUp: undefined, ipad: undefined, windowsphone: undefined, chrome: undefined, chrome7up: undefined, chrome8up: undefined, chrome9up: undefined, chrome81up: undefined, iever: undefined, mac: undefined, major: undefined, msTouch: undefined, isTouch: undefined, nav: undefined, nav6: undefined, nav6up: undefined, nav7up: undefined, osver: undefined, safari: undefined, safari125up: undefined, safari3up: undefined, verIEFull: undefined, w3c: undefined, webKit: undefined, win: undefined, win8AppHost: undefined, win32: undefined, win64bit: undefined, winnt: undefined, armProcessor: undefined }; Browseris.prototype = BrowserisOld.prototype; Browseris.prototype.ie10standardUp = undefined; Browseris.prototype.ie11 = undefined; Browseris.prototype.ie11up = undefined; Browseris.prototype.msEdge = undefined; function Browseris() { var agt = navigator.userAgent.toLowerCase(); var navIdx; this.osver = 1.0; if (Boolean(agt)) { var stOSVer = agt.substring(agt.indexOf("windows ") + 11); this.osver = parseFloat(stOSVer); } this.major = parseInt(navigator.appVersion); this.msEdge = agt.indexOf("edge/") != -1; var msieIdx = agt.indexOf("msie"); var tridentIdx = agt.indexOf("trident"); this.ie = msieIdx != -1 || tridentIdx != -1; var stIEVer = "0"; if (this.ie) { if (msieIdx != -1) { stIEVer = agt.substring(msieIdx + 5); } else { var rvIdx = agt.indexOf("rv:"); if (rvIdx != -1) { stIEVer = agt.substring(rvIdx + 3); } } } this.iever = parseInt(stIEVer); this.verIEFull = parseFloat(stIEVer); this.ie4up = this.ie && this.major >= 4; this.ie5up = this.ie && this.iever >= 5; this.ie55up = this.ie && this.verIEFull >= 5.5; this.ie6up = this.ie && this.iever >= 6; this.ie7down = this.ie && this.iever <= 7; this.ie8down = this.ie && this.iever <= 8; this.ie9down = this.ie && this.iever <= 9; this.ie7up = this.ie && this.iever >= 7; this.ie8standard = this.ie && Boolean(document.documentMode) && document.documentMode == 8; this.ie8standardUp = this.ie && (Boolean(document.documentMode) && document.documentMode >= 8); this.ie9standardUp = this.ie && (Boolean(document.documentMode) && document.documentMode >= 9); this.ie10standardUp = this.ie && (Boolean(document.documentMode) && document.documentMode >= 10); this.ie11 = this.ie && Boolean(document.documentMode) && document.documentMode == 11; this.ie11up = this.ie && (Boolean(document.documentMode) && document.documentMode >= 11); this.nav = agt.indexOf('mozilla') != -1 && agt.indexOf('spoofer') == -1 && agt.indexOf('compatible') == -1 && !this.ie; this.nav6 = this.nav && this.major == 5; this.nav6up = this.nav && this.major >= 5; this.nav7up = false; if (this.nav6up) { navIdx = agt.indexOf("netscape/"); if (navIdx >= 0) this.nav7up = parseInt(agt.substring(navIdx + 9)) >= 7; } this.winnt = agt.indexOf("winnt") != -1 || agt.indexOf("windows nt") != -1; this.win32 = this.major >= 4 && navigator.platform == "Win32" || agt.indexOf("win32") != -1 || agt.indexOf("32bit") != -1; this.win64bit = agt.indexOf("win64") != -1; this.win = this.winnt || this.win32 || this.win64bit; this.safari = agt.indexOf("webkit") != -1 && !this.ie && !this.msEdge; this.safari125up = false; this.safari3up = false; if (this.safari && this.major >= 5) { navIdx = agt.indexOf("webkit/"); if (navIdx >= 0) this.safari125up = parseInt(agt.substring(navIdx + 7)) >= 125; var verIdx = agt.indexOf("version/"); if (verIdx >= 0) this.safari3up = parseInt(agt.substring(verIdx + 8)) >= 3; } this.firefox = this.nav && agt.indexOf("firefox") != -1; this.firefox3up = false; this.firefox36up = false; this.firefox4up = false; if (this.firefox && this.major >= 5) { var ffVerIdx = agt.indexOf("firefox/"); if (ffVerIdx >= 0) { var firefoxVStr = agt.substring(ffVerIdx + 8); this.firefox3up = parseInt(firefoxVStr) >= 3; this.firefox36up = parseFloat(firefoxVStr) >= 3.6; this.firefox4up = parseInt(firefoxVStr) >= 4; } } this.chrome = this.nav && agt.indexOf("chrome") != -1 && !this.ie && !this.msEdge; this.chrome7up = false; this.chrome8up = false; this.chrome9up = false; this.chrome81up = false; if (this.chrome && this.major >= 5) { var chmVerIdx = agt.indexOf("chrome/"); if (chmVerIdx >= 0) { var chmVerStr = agt.substring(chmVerIdx + 7); var chmVerInt = parseInt(chmVerStr); this.chrome7up = chmVerInt >= 7; this.chrome8up = chmVerInt >= 8; this.chrome9up = chmVerInt >= 9; this.chrome81up = chmVerInt >= 81; } } this.ipad = agt.indexOf("ipad") != -1; this.windowsphone = agt.indexOf("windows phone") != -1; this.aol = this.ie && agt.indexOf(" aol ") != -1; this.mac = agt.indexOf("mac") != -1; this.w3c = this.nav6up; this.webKit = agt.indexOf("webkit") != -1 && !this.ie && !this.msEdge; this.win8AppHost = agt.indexOf("msapphost") != -1; this.msTouch = typeof navigator.msMaxTouchPoints != "undefined" && navigator.msMaxTouchPoints > 0; this.isTouch = this.msTouch || "ontouchstart" in document.documentElement; this.armProcessor = agt.indexOf("arm") != -1; } function BrowserisOld() { var agt = navigator.userAgent.toLowerCase(); var navIdx; this.osver = 1.0; if (Boolean(agt)) { var stOSVer = agt.substring(agt.indexOf("windows ") + 11); this.osver = parseFloat(stOSVer); } this.major = parseInt(navigator.appVersion); this.nav = agt.indexOf('mozilla') != -1 && (agt.indexOf('spoofer') == -1 && agt.indexOf('compatible') == -1); this.nav6 = this.nav && this.major == 5; this.nav6up = this.nav && this.major >= 5; this.nav7up = false; if (this.nav6up) { navIdx = agt.indexOf("netscape/"); if (navIdx >= 0) this.nav7up = parseInt(agt.substring(navIdx + 9)) >= 7; } this.ie = agt.indexOf("msie") != -1; this.ipad = agt.indexOf("ipad") != -1; this.windowsphone = agt.indexOf("windows phone") != -1; this.aol = this.ie && agt.indexOf(" aol ") != -1; if (this.ie) { var stIEVer = agt.substring(agt.indexOf("msie ") + 5); this.iever = parseInt(stIEVer); this.verIEFull = parseFloat(stIEVer); } else this.iever = 0; this.ie4up = this.ie && this.major >= 4; this.ie5up = this.ie && this.iever >= 5; this.ie55up = this.ie && this.verIEFull >= 5.5; this.ie6up = this.ie && this.iever >= 6; this.ie7down = this.ie && this.iever <= 7; this.ie8down = this.ie && this.iever <= 8; this.ie9down = this.ie && this.iever <= 9; this.ie7up = this.ie && this.iever >= 7; this.ie8standard = this.ie && Boolean(document.documentMode) && document.documentMode == 8; this.ie8standardUp = this.ie && Boolean(document.documentMode) && document.documentMode >= 8; this.ie9standardUp = this.ie && Boolean(document.documentMode) && document.documentMode >= 9; this.ie10standardUp = this.ie && Boolean(document.documentMode) && document.documentMode >= 10; this.winnt = agt.indexOf("winnt") != -1 || agt.indexOf("windows nt") != -1; this.win32 = this.major >= 4 && navigator.platform == "Win32" || agt.indexOf("win32") != -1 || agt.indexOf("32bit") != -1; this.win64bit = agt.indexOf("win64") != -1; this.win = this.winnt || this.win32 || this.win64bit; this.mac = agt.indexOf("mac") != -1; this.w3c = this.nav6up; this.webKit = agt.indexOf("webkit") != -1; this.safari = agt.indexOf("webkit") != -1; this.safari125up = false; this.safari3up = false; if (this.safari && this.major >= 5) { navIdx = agt.indexOf("webkit/"); if (navIdx >= 0) this.safari125up = parseInt(agt.substring(navIdx + 7)) >= 125; var verIdx = agt.indexOf("version/"); if (verIdx >= 0) this.safari3up = parseInt(agt.substring(verIdx + 8)) >= 3; } this.firefox = this.nav && agt.indexOf("firefox") != -1; this.firefox3up = false; this.firefox36up = false; this.firefox4up = false; if (this.firefox && this.major >= 5) { var ffVerIdx = agt.indexOf("firefox/"); if (ffVerIdx >= 0) { var firefoxVStr = agt.substring(ffVerIdx + 8); this.firefox3up = parseInt(firefoxVStr) >= 3; this.firefox36up = parseFloat(firefoxVStr) >= 3.6; this.firefox4up = parseInt(firefoxVStr) >= 4; } } this.win8AppHost = agt.indexOf("msapphost") != -1; this.chrome = this.nav && agt.indexOf("chrome") != -1; this.chrome7up = false; this.chrome8up = false; this.chrome9up = false; this.chrome81up = false; if (this.chrome && this.major >= 5) { var chmVerIdx = agt.indexOf("chrome/"); if (chmVerIdx >= 0) { var chmVerStr = agt.substring(chmVerIdx + 7); var chmVerInt = parseInt(chmVerStr); this.chrome7up = chmVerInt >= 7; this.chrome8up = chmVerInt >= 8; this.chrome9up = chmVerInt >= 9; this.chrome81up = chmVerInt >= 81; } } this.msTouch = typeof navigator.msMaxTouchPoints != "undefined" && navigator.msMaxTouchPoints > 0; this.isTouch = this.msTouch || "ontouchstart" in document.documentElement; this.armProcessor = agt.indexOf("arm") != -1; } if (typeof _browserisFlight !== "undefined") { BrowserDetection.userAgent = new Browseris(); } else { BrowserDetection.userAgent = new BrowserisOld(); } })(); browseris = BrowserDetection.userAgent; bis = BrowserDetection.userAgent; if (typeof BrowserStorage == 'undefined') { BrowserStorage = { "__namespace": true }; BrowserStorage_module_def(); } if (typeof CSSUtil == 'undefined') { CSSUtil = { "__namespace": true }; CSSUtil_module_def(); } ; pxToNum = CSSUtil.pxToNum; GetWidthFromPxString = CSSUtil.pxToFloat; GetCurrentEltStyle = CSSUtil.getCurrentStyle; GetCurrentEltStyleByNames = CSSUtil.getCurrentEltStyleByNames; GetOpacity = CSSUtil.getOpacity; SetOpacity = CSSUtil.setOpacity; HasCssClass = CSSUtil.HasClass; AddCssClassToElement = CSSUtil.AddClass; RemoveCssClassFromElement = CSSUtil.RemoveClass; getCurrentEltStyleByNames = CSSUtil.getCurrentEltStyleByNames; if (typeof DOM == 'undefined') { DOM = { "__namespace": true }; DOM_module_def(); } fRightToLeft = DOM.rightToLeft; cancelDefault = DOM.cancelDefault; AbsLeft = DOM.AbsLeft; AbsTop = DOM.AbsTop; CancelEvent = DOM.CancelEvent; GetElementsByName = DOM.GetElementsByName; GetEventCoords = DOM.GetEventCoords; GetEventSrcElement = DOM.GetEventSrcElement; GetInnerText = DOM.GetInnerText; PreventDefaultNavigation = DOM.PreventDefaultNavigation; SetEvent = DOM.SetEvent; if (typeof Encoding == 'undefined') { Encoding = { "__namespace": true }; Encoding_module_def(); } encodeScriptQuote = Encoding.EncodeScriptQuote; STSHtmlEncode = Encoding.HtmlEncode; STSHtmlEncodeEx = Encoding.HtmlEncodeEx; STSHtmlDecode = Encoding.HtmlDecode; StAttrQuote = Encoding.AttrQuote; STSScriptEncode = Encoding.ScriptEncode; STSScriptEncodeWithQuote = Encoding.ScriptEncodeWithQuote; CanonicalizeUrlEncodingCase = Encoding.CanonicalizeUrlEncodingCase; EncodePath = Encoding.EncodePath; if (typeof ExpFlighting == 'undefined') { ExpFlighting = { "__namespace": true }; ExpFlighting_module_def(); } if (typeof IE8Support == 'undefined') { IE8Support = { "__namespace": true }; IE8Support_module_def(); } if (typeof RequestUtil == 'undefined') { RequestUtil = { "__namespace": true }; RequestUtil_module_def(); } if (typeof StringUtil == 'undefined') { StringUtil = { "__namespace": true }; StringUtil_module_def(); } StBuildParam = StringUtil.BuildParam; if (typeof TypeUtil == 'undefined') { TypeUtil = { "__namespace": true }; TypeUtil_module_def(); } IsArray = TypeUtil.IsArray; IsNullOrUndefined = TypeUtil.IsNullOrUndefined; ObjectUtil = { "__namespace": true }; ObjectUtil_module_def(); URI = function(uriString, options) { var that = this; var URI_POUND = "#"; var URI_COLON = ":"; var URI_FORWARDSLASH = "/"; var URI_DOUBLE_FORWARDSLASHES = "//"; var URI_QUESTIONMARK = "?"; var URI_SEMICOLON = ";"; var URI_AMPERSAND = "&"; var URI_AT = "@"; var URI_EQUAL = "="; var URI_DELIMITERS = ";/?:@&=$,"; var URI_AUTHORITY_TERMINATORS = "/?"; var m_queryCaseInsensitive = false; if (typeof options !== "undefined" && typeof options.queryCaseInsensitive === 'boolean') { m_queryCaseInsensitive = options.queryCaseInsensitive; } var m_disableEncodingDecodingForLegacyCode = false; if (typeof options !== "undefined" && typeof options.disableEncodingDecodingForLegacyCode === 'boolean') { m_disableEncodingDecodingForLegacyCode = options.disableEncodingDecodingForLegacyCode; } var m_pathCaseInsensitive = false; if (typeof options !== "undefined" && typeof options.pathCaseInsensitive === 'boolean') { m_pathCaseInsensitive = options.pathCaseInsensitive; } var m_scheme = ""; var m_user = ""; var m_host = ""; var m_port = ""; var m_path = ""; var m_pathEncoded = ""; var m_parameters = ""; var m_query = {}; var m_fragment = ""; this.getScheme = function() { return m_scheme; }; this.setScheme = function(scheme) { m_scheme = decodeURIComponentIfNecessary(scheme); }; this.getAuthority = function() { return getAuthority(false); }; this.setAuthority = function(authority) { parseAuthority(authority); }; this.getUser = function() { return m_user; }; this.getHost = function() { return m_host; }; this.getPort = function() { return m_port; }; this.getPath = function(trimTrailingSlash) { var retPath = m_path; if (typeof trimTrailingSlash === 'boolean' && trimTrailingSlash) { if (retPath !== null && retPath.lastIndexOf(URI_FORWARDSLASH) === retPath.length - 1) { retPath = retPath.slice(0, -1); } } return retPath; }; this.setPath = function(path) { if (path.indexOf(URI_FORWARDSLASH) !== 0) { path = URI_FORWARDSLASH + path; } parsePath(path); }; this.getPathSegments = function() { if (m_path === null) { return []; } var ret = m_path.split(URI_FORWARDSLASH); if (ret.length > 0) { if (ret[0] === "") { ret.shift(); } else if (ret[ret.length - 1] === "") { ret.pop(); } } return ret; }; this.getLastPathSegment = function(includeParameters) { var pathSegments = that.getPathSegments(); if (pathSegments.length === 0) { return ""; } else { var retPath = pathSegments[pathSegments.length - 1]; if (typeof includeParameters !== 'boolean' || !includeParameters) { var paramBeginPos = retPath.indexOf(URI_SEMICOLON); if (paramBeginPos >= 0) { retPath = retPath.substring(0, paramBeginPos); } } return retPath; } }; this.getParameters = function() { return m_parameters; }; this.getQuery = function() { return serializeQuery(m_query); }; this.setQuery = function(query) { var queryObject = deserializeQuery(query); that.setQueryFromObject(queryObject); }; this.getQueryAsObject = function() { return m_query; }; this.setQueryFromObject = function(queryObj) { m_query = {}; for (var queryKey in queryObj) { if (queryObj.hasOwnProperty(queryKey)) { that.setQueryParameter(queryKey, queryObj[queryKey]); } } }; this.getQueryParameter = function(queryKey) { var ret = null; var query = that.getQueryAsObject(); if (m_queryCaseInsensitive) { for (var key in query) { if (m_query.hasOwnProperty(key) && key.toLowerCase() === queryKey.toLowerCase()) { ret = query[key]; } } } else { ret = query[queryKey]; } if (typeof ret !== 'undefined') { return ret; } else { return null; } }; this.setQueryParameter = function(queryKey, queryValue) { var queryKeyDecoded = decodeURIComponentIfNecessary(queryKey); var queryValueDecoded = decodeURIComponentIfNecessary(queryValue); m_query[queryKeyDecoded] = queryValueDecoded; }; this.removeQueryParameter = function(queryKey) { var queryKeyDecoded = decodeURIComponentIfNecessary(queryKey); delete m_query[queryKeyDecoded]; }; this.getFragment = function() { return m_fragment; }; this.setFragment = function(fragment) { if (fragment.indexOf(URI_POUND) === 0) { fragment = fragment.substring(1); } m_fragment = decodeURIComponentIfNecessary(fragment); }; var isStringEqualInsensitive = function(a, b) { if (a != null && b != null) { return a.toLowerCase() === b.toLowerCase(); } else { return a === b; } }; var isStringEqual = function(a, b) { return a === b; }; this.equals = function(uri) { return m_scheme.toLowerCase() === (uri.getScheme()).toLowerCase() && m_user === uri.getUser() && m_host.toLowerCase() === (uri.getHost()).toLowerCase() && m_port === uri.getPort() && (m_pathCaseInsensitive ? isStringEqualInsensitive : isStringEqual)(that.getPath(true), uri.getPath(true)) && m_parameters === uri.getParameters() && (m_queryCaseInsensitive ? isStringEqualInsensitive : isStringEqual)(that.getQuery(), uri.getQuery()) && m_fragment === uri.getFragment(); }; this.equivalent = function(uri) { return isStringEqualInsensitive(m_scheme, uri.getScheme()) && isStringEqualInsensitive(m_user, uri.getUser()) && isStringEqualInsensitive(m_host, uri.getHost()) && isStringEqualInsensitive(m_port, uri.getPort()) && isStringEqualInsensitive(that.getPath(true), uri.getPath(true)) && isStringEqualInsensitive(m_parameters, uri.getParameters()) && ObjectUtil.deepCompare(that.getQueryAsObject(), uri.getQueryAsObject(), DecodeCompare) && isStringEqualInsensitive(m_fragment, uri.getFragment()); function DecodeCompare(l, r) { var ll = URI.decodeURIComponent(l); var rr = URI.decodeURIComponent(r); return ll === rr; } }; this.getString = function(outputOptions) { return getStringInternal(true, outputOptions); }; this.getDecodedStringForDisplay = function() { return getStringInternal(false); }; this.getStringWithoutQueryAndFragment = function() { return getStringWithoutQueryAndFragmentInternal(true); }; var getStringInternal = function(encoded, outputOptions) { var ret = getStringWithoutQueryAndFragmentInternal(encoded, outputOptions); var query = serializeQuery(m_query, encoded); if (query !== "") { ret += URI_QUESTIONMARK + query; } if (m_fragment !== "") { ret += URI_POUND + (encoded ? encodeURIComponentIfNecessary(m_fragment) : m_fragment); } return ret; }; var getStringWithoutQueryAndFragmentInternal = function(encoded, outputOptions) { var ret = ""; if (m_scheme !== "") { ret += (encoded ? encodeURIComponentIfNecessary(m_scheme) : m_scheme) + URI_COLON; } var authority = getAuthority(encoded, outputOptions); if (authority !== "") { ret += URI_DOUBLE_FORWARDSLASHES + authority; } if (m_pathEncoded !== "") { ret += encoded ? m_pathEncoded : m_path; } return ret; }; var normalizeQueryKey = function(queryKey) { var key = queryKey; if (m_queryCaseInsensitive) { key = key.toLowerCase(); } return key; }; var deserializeQuery = function(queryStr) { var queryObj = {}; if (queryStr.indexOf(URI_QUESTIONMARK) === 0) { queryStr = queryStr.substring(1); } var queryParts = queryStr.split(/[;&]+/); for (var queryIdx = 0; queryIdx < queryParts.length; queryIdx++) { var queryPart = queryParts[queryIdx]; var queryPartSegments = queryPart.split(URI_EQUAL); if (queryPartSegments.length > 0) { var queryKey = queryPartSegments[0]; if (queryKey.length > 0) { var queryValue = ""; if (queryPartSegments.length == 2) { queryValue = queryPartSegments[1]; } queryObj[queryKey] = queryValue; } } } return queryObj; }; var serializeQuery = function(queryObj, encoded) { encoded = typeof encoded === "undefined" ? false : encoded; var queryStr = ""; for (var queryKey in queryObj) { if (queryObj.hasOwnProperty(queryKey)) { var key = queryKey; var value = queryObj[queryKey]; if (encoded) { key = encodeURIComponentIfNecessary(key); value = encodeURIComponentIfNecessary(value); } if (value === null || value === "") { queryStr += key + URI_EQUAL + URI_AMPERSAND; } else { queryStr += key + URI_EQUAL + value + URI_AMPERSAND; } } } if (queryStr !== "") { queryStr = queryStr.slice(0, -1); } return queryStr; }; var parseURI = function() { var remainingString = uriString; var fragmentBeginPos = remainingString.indexOf(URI_POUND); if (fragmentBeginPos >= 0) { var fragment = remainingString.substring(fragmentBeginPos + 1); that.setFragment(fragment); remainingString = remainingString.substring(0, fragmentBeginPos); } var schemeEndPos = findOneOf(remainingString, URI_DELIMITERS); if (schemeEndPos >= 0) { var firstColonPos = remainingString.indexOf(URI_COLON); if (firstColonPos >= 0 && firstColonPos === schemeEndPos) { m_scheme = remainingString.substring(0, schemeEndPos); remainingString = remainingString.substring(schemeEndPos + 1); } } else { parsePath(remainingString); return; } var authority = ""; var doubleSlashPos = remainingString.indexOf(URI_DOUBLE_FORWARDSLASHES); if (doubleSlashPos >= 0 && doubleSlashPos === 0) { remainingString = remainingString.substring(2); var nothingElseLeft; var authorityEndPos = findOneOf(remainingString, URI_AUTHORITY_TERMINATORS); if (authorityEndPos >= 0) { authority = remainingString.substring(0, authorityEndPos); remainingString = remainingString.substring(authorityEndPos); nothingElseLeft = false; } else { authority = remainingString; nothingElseLeft = true; } parseAuthority(authority); if (nothingElseLeft) { return; } } var queryBeginPos = remainingString.indexOf(URI_QUESTIONMARK); if (queryBeginPos >= 0) { that.setQuery(remainingString.substring(queryBeginPos + 1)); remainingString = remainingString.substring(0, queryBeginPos); } parsePath(remainingString); }; var parseAuthority = function(authority) { m_host = authority; var userNameEndPos = authority.lastIndexOf(URI_AT); if (userNameEndPos >= 0) { m_host = m_host.substring(userNameEndPos + 1); } var hostPortSeparatorPos = m_host.indexOf(URI_COLON); if (userNameEndPos < 0 && hostPortSeparatorPos < 0) { return; } var authorityComponents = authority; if (userNameEndPos < 0) { m_host = authorityComponents; } else { m_user = authorityComponents.substring(0, userNameEndPos); m_host = authorityComponents.substring(userNameEndPos + 1); } if (hostPortSeparatorPos >= 0) { m_port = m_host.substring(hostPortSeparatorPos + 1); m_host = m_host.substring(0, hostPortSeparatorPos); } m_user = decodeURIComponentIfNecessary(m_user); m_host = decodeURIComponentIfNecessary(m_host); }; var parsePath = function(remainingString) { var paramBeginPos = remainingString.indexOf(URI_SEMICOLON); if (paramBeginPos >= 0) { m_parameters = decodeURIComponentIfNecessary(remainingString.substring(paramBeginPos + 1)); } m_path = decodeURIComponentIfNecessary(remainingString); var encodedPathSegments = remainingString.split(URI_FORWARDSLASH); for (var i = 0; i < encodedPathSegments.length; ++i) { var segment = encodedPathSegments[i]; var segmentAndParameters = segment.split(URI_SEMICOLON); var decodedSegment = decodeURIComponentIfNecessary(segmentAndParameters[0]); encodedPathSegments[i] = encodeURIComponentIfNecessary(decodedSegment); for (var j = 1; j < segmentAndParameters.length; ++j) { var decodedParameter = decodeURIComponentIfNecessary(segmentAndParameters[j]); encodedPathSegments[i] += URI_SEMICOLON + encodeURIComponentIfNecessary(decodedParameter); } } m_pathEncoded = encodedPathSegments.join(URI_FORWARDSLASH); }; var findOneOf = function(str, searchValues) { for (var strIdx = 0; strIdx < str.length; strIdx++) { var c = str[strIdx]; for (var delimIdx = 0; delimIdx < searchValues.length; delimIdx++) { if (c === searchValues[delimIdx]) { return strIdx; } } } return -1; }; var getUserEncodedIfNecessary = function() { var user; if (m_disableEncodingDecodingForLegacyCode) { user = m_user; } else { user = encodeURIComponentIfNecessary(m_user); user = user.replace("%3A", ":"); } return user; }; var getAuthority = function(encoded, outputOptions) { var doNotPercentEncodeHost = false; if (typeof outputOptions !== "undefined" && typeof outputOptions.doNotPercentEncodeHost === 'boolean') { doNotPercentEncodeHost = outputOptions.doNotPercentEncodeHost; } var authority = ""; var user; var host; var port; if (encoded) { user = getUserEncodedIfNecessary(); if (doNotPercentEncodeHost) { host = m_host; } else { host = encodeURIComponentIfNecessary(m_host); } port = encodeURIComponentIfNecessary(m_port); } else { user = m_user; host = m_host; port = m_port; } if (user !== "") { authority = user + URI_AT; } if (m_host !== "") { authority += host; } if (m_port !== "") { authority += URI_COLON + port; } return authority; }; var encodeURIComponentIfNecessary = function(component) { return m_disableEncodingDecodingForLegacyCode ? component : encodeURIComponent(component); }; var decodeURIComponentIfNecessary = function(component) { return m_disableEncodingDecodingForLegacyCode ? component : URI.decodeURIComponent(component); }; parseURI(); }; (function() { var g_rgdwchMinEncoded = [0x00000000, 0x00000080, 0x00000800, 0x00010000, 0x00200000, 0x04000000, 0x80000000]; function Vutf8ToUnicode(rgBytes) { var ix = 0; var strResult = ""; var dwch, wch, uch; var nTrailBytes, nTrailBytesOrig; while (ix < rgBytes.length) { if (rgBytes[ix] <= 0x007f) { strResult += String.fromCharCode(rgBytes[ix++]); } else { uch = rgBytes[ix++]; nTrailBytes = Boolean(uch & 0x20) ? Boolean(uch & 0x10) ? 3 : 2 : 1; nTrailBytesOrig = nTrailBytes; dwch = uch & 0xff >>> 2 + nTrailBytes; while (Boolean(nTrailBytes) && ix < rgBytes.length) { --nTrailBytes; uch = rgBytes[ix++]; if (uch == 0) { return strResult; } if ((uch & 0xC0) != 0x80) { strResult += '?'; break; } dwch = dwch << 6 | uch & 0x003f; } if (Boolean(nTrailBytes)) { strResult += '?'; break; } if (dwch < g_rgdwchMinEncoded[nTrailBytesOrig]) { strResult += '?'; break; } else if (dwch <= 0xffff) { strResult += String.fromCharCode(dwch); } else if (dwch <= 0x10ffff) { dwch -= 0x10000; strResult += String.fromCharCode(0xD800 | dwch >>> 10); strResult += String.fromCharCode(0xDC00 | dwch & 0x003FF); } else { strResult += '?'; } } } return strResult; } function unescapeProperlyInternal(str) { if (str == null) return "null"; var ix = 0, ixEntity = 0; var strResult = ""; var rgUTF8Bytes = []; var ixUTF8Bytes = 0; var hexString, hexCode; while (ix < str.length) { if (str.charAt(ix) == '%') { if (str.charAt(++ix) == 'u') { hexString = ""; for (ixEntity = 0; ixEntity < 4 && ix < str.length; ++ixEntity) { hexString += str.charAt(++ix); } while (hexString.length < 4) { hexString += '0'; } hexCode = parseInt(hexString, 16); if (isNaN(hexCode)) { strResult += '?'; } else { strResult += String.fromCharCode(hexCode); } } else { hexString = ""; for (ixEntity = 0; ixEntity < 2 && ix < str.length; ++ixEntity) { hexString += str.charAt(ix++); } while (hexString.length < 2) { hexString += '0'; } hexCode = parseInt(hexString, 16); if (isNaN(hexCode)) { if (Boolean(ixUTF8Bytes)) { strResult += Vutf8ToUnicode(rgUTF8Bytes); ixUTF8Bytes = 0; rgUTF8Bytes.length = ixUTF8Bytes; } strResult += '?'; } else { rgUTF8Bytes[ixUTF8Bytes++] = hexCode; } } } else { if (Boolean(ixUTF8Bytes)) { strResult += Vutf8ToUnicode(rgUTF8Bytes); ixUTF8Bytes = 0; rgUTF8Bytes.length = ixUTF8Bytes; } strResult += str.charAt(ix++); } } if (Boolean(ixUTF8Bytes)) { strResult += Vutf8ToUnicode(rgUTF8Bytes); ixUTF8Bytes = 0; rgUTF8Bytes.length = ixUTF8Bytes; } return strResult; } function URI_unescapeProperly(str) { var strResult = null; try { strResult = decodeURIComponent(str); } catch (e) { strResult = unescapeProperlyInternal(str); } return strResult; } function URI_GetAbsoluteUrl(url) { var dummyAnchor = document.createElement('a'); dummyAnchor.href = url; var retVal = dummyAnchor.href; dummyAnchor = null; return retVal; } ; function URI_RemoveQueryParameterFromUrl(stURL, stParameterName) { var startArg = stURL.indexOf("?"); var startFragment = stURL.indexOf("#"); if (-1 == startArg) return stURL; if (-1 == startFragment) startFragment = stURL.length; if (startFragment <= startArg) return stURL; var stUrlArgs = stURL.substr(startArg, startFragment - startArg); var re = new RegExp("[&?]" + stParameterName + "=[^&]*", ""); stUrlArgs = stUrlArgs.replace(re, ""); if (stUrlArgs.length > 0 && "&" == stUrlArgs[0]) { stUrlArgs = "?" + stUrlArgs.substr(1); } return stURL.substr(0, startArg) + stUrlArgs + stURL.substr(startFragment); } function URI_RemoveUrlKeyValue(keyName, url) { var re = new RegExp(keyName + "=[^&]*&"); url = url.replace(re, ""); re = new RegExp(keyName + "=[^&]*"); url = url.replace(re, ""); return url; } function URI_RemoveParametersFromUrl(url) { var paramsBeginPos = url.indexOf('?'); if (paramsBeginPos == -1) return url; else return url.substr(0, paramsBeginPos); } function URI_StURLSetVar2(stURL, stVar, stValue) { var stNewSet = stVar + "=" + stValue; var ichQ = stURL.indexOf("?"); var ichH = stURL.indexOf("#"); if (ichQ != -1) { var ich = stURL.indexOf("?" + stVar + "=", ichQ); if (ich == -1) { ich = stURL.indexOf("&" + stVar + "=", ichQ); if (ich != -1) stNewSet = "&" + stNewSet; } else { stNewSet = "?" + stNewSet; } if (ich != -1) { var re = new RegExp("[&?]" + stVar + "=[^&#]*", ""); stURL = stURL.replace(re, stNewSet); } else { if (ichH == -1) stURL = stURL + "&" + stNewSet; else stURL = stURL.substr(0, ichH) + "&" + stNewSet + stURL.substr(ichH); } } else { if (ichH == -1) stURL = stURL + "?" + stNewSet; else stURL = stURL.substr(0, ichH) + "?" + stNewSet + stURL.substr(ichH); } return stURL; } function URI_CompleteDecode(strIn) { if (typeof strIn == 'undefined' || strIn == null) return strIn; var strOut = strIn; var dStr = URI_unescapeProperly(strOut); while (strOut != dStr) { strOut = dStr; dStr = URI_unescapeProperly(strOut); } return strOut; } function URI_RestructureFilterUrl(strDocUrl, filterNo) { var j = filterNo + 1; var filterArray = strDocUrl.match(new RegExp("FilterField" + String(j) + "=[^&]*")); var isMultipleFilter = false; if (!Boolean(filterArray)) { filterArray = strDocUrl.match(new RegExp("FilterFields" + String(j) + "=[^&]*")); isMultipleFilter = filterArray != null; } for (var i = filterNo; filterArray != null; i++) { var strNew = isMultipleFilter ? "FilterFields" + String(i) : "FilterField" + String(i); var strOld = isMultipleFilter ? "FilterFields" + String(j) : "FilterField" + String(j); strDocUrl = strDocUrl.replace(strOld, strNew); strNew = isMultipleFilter ? "FilterValues" + String(i) : "FilterValue" + String(i); strOld = isMultipleFilter ? "FilterValues" + String(j) : "FilterValue" + String(j); strDocUrl = strDocUrl.replace(strOld, strNew); strNew = "FilterOp" + String(i); strOld = "FilterOp" + String(j); strDocUrl = strDocUrl.replace(strOld, strNew); strNew = "FilterLookupId" + String(i); strOld = "FilterLookupId" + String(j); strDocUrl = strDocUrl.replace(strOld, strNew); strNew = "FilterData" + String(i); strOld = "FilterData" + String(j); strDocUrl = strDocUrl.replace(strOld, strNew); j++; filterArray = strDocUrl.match(new RegExp("FilterField" + String(j) + "=[^&]*")); if (!Boolean(filterArray)) filterArray = strDocUrl.match(new RegExp("FilterFields" + String(j) + "=[^&]*")); } return strDocUrl; } function URI_ParseMultiColumnValue(fieldValue, delimiter, bIncludeEmpty) { var strSubColumn; var subColumnValues = []; if (delimiter == null) delimiter = ';#'; var lead = delimiter.charCodeAt(0); var trail = delimiter.charCodeAt(1); if (fieldValue == null || fieldValue.length == 0) return subColumnValues; var strLead = delimiter.charAt(0); var strLeadLead = strLead + strLead; var escaped = new RegExp(strLeadLead, "g"); var unescaped = delimiter.charAt(0); var startLocal = 0; if (fieldValue.substr(0, 2) == delimiter) { if (Boolean(bIncludeEmpty)) subColumnValues.push(''); startLocal = 2; } var end = startLocal; var bContainEscapedCharacters = false; var totalLength = fieldValue.length; while (end < totalLength) { var index = fieldValue.indexOf(strLead, end); if (index >= 0) { end = index; end++; if (fieldValue.charCodeAt(end) == trail) { if (end - 1 > startLocal) { strSubColumn = fieldValue.substr(startLocal, end - startLocal - 1); if (bContainEscapedCharacters) strSubColumn = strSubColumn.replace(escaped, unescaped); subColumnValues.push(strSubColumn); bContainEscapedCharacters = false; } else { subColumnValues.push(''); } end++; startLocal = end; continue; } else if (fieldValue.charCodeAt(end) == lead) { end++; bContainEscapedCharacters = true; continue; } else { throw "ArgumentException"; } } else { end = totalLength; } } if (end > startLocal) { strSubColumn = fieldValue.substr(startLocal, end - startLocal); if (bContainEscapedCharacters) strSubColumn = strSubColumn.replace(escaped, unescaped); subColumnValues.push(strSubColumn); } else if (Boolean(bIncludeEmpty)) subColumnValues.push(''); return subColumnValues; } function URI_ConvertMultiColumnValueToString(subColumnValues, delimiter, bAddLeadingTailingDelimiter) { if (delimiter == null) delimiter = ";#"; if (bAddLeadingTailingDelimiter == null) bAddLeadingTailingDelimiter = true; var strLead = delimiter.charAt(0); var strLeadLead = strLead + strLead; var escaped = new RegExp(delimiter.charAt(0), "g"); var bHasValue = false; var sb = ''; for (var i = 0; i < subColumnValues.length; i++) { var strSubColumn = subColumnValues[i]; if (strSubColumn != null && strSubColumn.length > 0) strSubColumn = strSubColumn.replace(escaped, strLeadLead); if (strSubColumn != null && strSubColumn.length > 0) bHasValue = true; if (bAddLeadingTailingDelimiter || i