//--- URL encoding helpers var Url = { // public method for url encoding encode : function (string) { return escape(this._utf8_encode(string)); }, // public method for url decoding decode : function (string) { return this._utf8_decode(unescape(string)); }, // private method for UTF-8 encoding _utf8_encode : function (string) { string = string.replace(/\r\n/g,"\n"); var utftext = ""; for (var n = 0; n < string.length; n++) { var c = string.charCodeAt(n); if (c < 128) { utftext += String.fromCharCode(c); } else if((c > 127) && (c < 2048)) { utftext += String.fromCharCode((c >> 6) | 192); utftext += String.fromCharCode((c & 63) | 128); } else { utftext += String.fromCharCode((c >> 12) | 224); utftext += String.fromCharCode(((c >> 6) & 63) | 128); utftext += String.fromCharCode((c & 63) | 128); } } return utftext; }, // private method for UTF-8 decoding _utf8_decode : function (utftext) { var string = ""; var i = 0; var c = c1 = c2 = 0; while ( i < utftext.length ) { c = utftext.charCodeAt(i); if (c < 128) { string += String.fromCharCode(c); i++; } else if((c > 191) && (c < 224)) { c2 = utftext.charCodeAt(i+1); string += String.fromCharCode(((c & 31) << 6) | (c2 & 63)); i += 2; } else { c2 = utftext.charCodeAt(i+1); c3 = utftext.charCodeAt(i+2); string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63)); i += 3; } } return string; } } //--- this flag controls, if the url parameters shall be URL encopded //--- Set this flag to true if the connector uses the URL mapping //--- with a native portal URL for accessing the liveserver content iView //--- Set this flag to false if the connector uses the URL mapping //--- with a pcd: URL for accessing the liveserver content iView var urlParamsPatch = false; //--- get connector URL from plain content URL function getConnectorUrl(url, connectorId) { if (url.length > 0) { return ('XMLNAVURL' + connectorId + '://' + url); } return(url); } //--- navigate to node that has the given launch url (on specified connector) //--- and show the page with the provided url function portalNavigateUrl(url, connectorId) { portalNavigateUrlWithContext(url, '', connectorId); } //--- navigate to node that has the given contextUrl (on specified connector) //--- and show the page with the provided url. The parameter winmode can be used //--- to control the target window: //--- mode 0 for internal window, //--- mode 1 for external window with content, //--- mode 2 for external window with full navigation function portalNavigateUrlWithContext(url, contextUrl, connectorId, winmode) { //alert('portalNavigateUrlWithContext url=' +url); //--- check if url contains parameters if (urlParamsPatch && url.indexOf("?") != -1 && (contextUrl === undefined || contextUrl == "")) { contextUrl = url.substring(0, url.indexOf("?")); url = Url.encode(url); } if (connectorId === undefined) { connectorId = "1"; } if (winmode === undefined) { winmode = 0; } if (winmode == 3) { top.document.location = "/irj/portal?NavigationTarget=" + escape(getConnectorUrl(url, connectorId)) + "&NavigationContext=" + escape(getConnectorUrl(contextUrl, connectorId)); } else { var postArray = new Array(); //alert('parent.EPCM.doNavigate(' + getConnectorUrl(url, connectorId) + ', ' + winmode + ', ' + getConnectorUrl(contextUrl, connectorId) + ', postArray=' + postArray + ')'); parent.EPCM.doNavigate(getConnectorUrl(url, connectorId), winmode, '', '', '', '', getConnectorUrl(contextUrl, connectorId), postArray); } } //--- relax document domain function relaxDocumentDomain () { if (!document.domain.search(/^\d+\.\d+\.\d+\.\d+$/) >=0 ) { var lnDotPos = document.domain.indexOf( "." ); if (lnDotPos >= 0) { document.domain = document.domain.substr( lnDotPos + 1 ); } } } relaxDocumentDomain();