// Globals var debugConsoleLog = 0; if (getCookie('workspace-debugging') != "") { // set to 1 for debug debugConsoleLog = 1; } var wrkSettingsArray = {}; var vpnStatus = "unknown"; var numVpnOfflineConfirm = 0; var vpnCheckIntervalId = null; var servicesURL = null; var spinnerOpts = { line: 13, length: 22, width: 23, radius: 50, corners: 1, scale: 1, corners: 1, color: '#374649', opacity: 0.25, rotate: 0, direction: 1, speed: 1, trail: 60, fps: 20, zIndex: 2e9, className: 'spinner', top: '50%', left: '50%', shadow: false, hwaccel: false, position: 'absolute' } var spinner; var selfServiceResourceList = []; var activatedSelfServiceList = []; var globalMessageBannerDefault = '\
\ \ \ \ \ \ \
\

\ \

\
\
\
\ \
\
\
'; ///////////////////////////////////////////////////////////////////////// // myConsoleLog(args) // Logs if debugConsoleLog is 1 ///////////////////////////////////////////////////////////////////////// function myConsoleLog(args) { if (debugConsoleLog == 1) { console.log(args); } } ///////////////////////////////////////////////////////////////////////// // myCreateAndAppendNode(parent, tagname, nodeId, classString) // Creates and append node with tagname type, and nodeId ID // and classString classes at bottom of parent element ///////////////////////////////////////////////////////////////////////// function myCreateAndAppendNode(parentNode, tagName, id, className) { var node = document.createElement(tagName); if (id != "") { node.id = id; } if (className != "") { node.className = className; } return parentNode.appendChild(node); } ///////////////////////////////////////////////////////////////////////// // scrollToElementId(id) // Scroll up to specified element ID position in document ///////////////////////////////////////////////////////////////////////// function scrollToElementId(elId){ var el = $("#" + elId); $('html,body').animate({scrollTop: el.offset().top},'slow'); } ///////////////////////////////////////////////////////////////////////// // htmlEncode(val) & htmlDecode(val) // encodes/decodes string into html compatible string ///////////////////////////////////////////////////////////////////////// function htmlEncode(value){ //create a in-memory div, set it's inner text(which jQuery automatically encodes) //then grab the encoded contents back out. The div never exists on the page. return $('
').text(value).html(); } function htmlDecode(value){ return $('
').html(value).text(); } ///////////////////////////////////////////////////////////////////////// // removeAccents(str) // converts accented chars from arg string to standard iso99 ascii chars ///////////////////////////////////////////////////////////////////////// function removeAccents(str) { var defaultDiacriticsRemovalMap = [ {'base':'A', 'letters':/[\u0041\u24B6\uFF21\u00C0\u00C1\u00C2\u1EA6\u1EA4\u1EAA\u1EA8\u00C3\u0100\u0102\u1EB0\u1EAE\u1EB4\u1EB2\u0226\u01E0\u00C4\u01DE\u1EA2\u00C5\u01FA\u01CD\u0200\u0202\u1EA0\u1EAC\u1EB6\u1E00\u0104\u023A\u2C6F]/g}, {'base':'AA','letters':/[\uA732]/g}, {'base':'AE','letters':/[\u00C6\u01FC\u01E2]/g}, {'base':'AO','letters':/[\uA734]/g}, {'base':'AU','letters':/[\uA736]/g}, {'base':'AV','letters':/[\uA738\uA73A]/g}, {'base':'AY','letters':/[\uA73C]/g}, {'base':'B', 'letters':/[\u0042\u24B7\uFF22\u1E02\u1E04\u1E06\u0243\u0182\u0181]/g}, {'base':'C', 'letters':/[\u0043\u24B8\uFF23\u0106\u0108\u010A\u010C\u00C7\u1E08\u0187\u023B\uA73E]/g}, {'base':'D', 'letters':/[\u0044\u24B9\uFF24\u1E0A\u010E\u1E0C\u1E10\u1E12\u1E0E\u0110\u018B\u018A\u0189\uA779]/g}, {'base':'DZ','letters':/[\u01F1\u01C4]/g}, {'base':'Dz','letters':/[\u01F2\u01C5]/g}, {'base':'E', 'letters':/[\u0045\u24BA\uFF25\u00C8\u00C9\u00CA\u1EC0\u1EBE\u1EC4\u1EC2\u1EBC\u0112\u1E14\u1E16\u0114\u0116\u00CB\u1EBA\u011A\u0204\u0206\u1EB8\u1EC6\u0228\u1E1C\u0118\u1E18\u1E1A\u0190\u018E]/g}, {'base':'F', 'letters':/[\u0046\u24BB\uFF26\u1E1E\u0191\uA77B]/g}, {'base':'G', 'letters':/[\u0047\u24BC\uFF27\u01F4\u011C\u1E20\u011E\u0120\u01E6\u0122\u01E4\u0193\uA7A0\uA77D\uA77E]/g}, {'base':'H', 'letters':/[\u0048\u24BD\uFF28\u0124\u1E22\u1E26\u021E\u1E24\u1E28\u1E2A\u0126\u2C67\u2C75\uA78D]/g}, {'base':'I', 'letters':/[\u0049\u24BE\uFF29\u00CC\u00CD\u00CE\u0128\u012A\u012C\u0130\u00CF\u1E2E\u1EC8\u01CF\u0208\u020A\u1ECA\u012E\u1E2C\u0197]/g}, {'base':'J', 'letters':/[\u004A\u24BF\uFF2A\u0134\u0248]/g}, {'base':'K', 'letters':/[\u004B\u24C0\uFF2B\u1E30\u01E8\u1E32\u0136\u1E34\u0198\u2C69\uA740\uA742\uA744\uA7A2]/g}, {'base':'L', 'letters':/[\u004C\u24C1\uFF2C\u013F\u0139\u013D\u1E36\u1E38\u013B\u1E3C\u1E3A\u0141\u023D\u2C62\u2C60\uA748\uA746\uA780]/g}, {'base':'LJ','letters':/[\u01C7]/g}, {'base':'Lj','letters':/[\u01C8]/g}, {'base':'M', 'letters':/[\u004D\u24C2\uFF2D\u1E3E\u1E40\u1E42\u2C6E\u019C]/g}, {'base':'N', 'letters':/[\u004E\u24C3\uFF2E\u01F8\u0143\u00D1\u1E44\u0147\u1E46\u0145\u1E4A\u1E48\u0220\u019D\uA790\uA7A4]/g}, {'base':'NJ','letters':/[\u01CA]/g}, {'base':'Nj','letters':/[\u01CB]/g}, {'base':'O', 'letters':/[\u004F\u24C4\uFF2F\u00D2\u00D3\u00D4\u1ED2\u1ED0\u1ED6\u1ED4\u00D5\u1E4C\u022C\u1E4E\u014C\u1E50\u1E52\u014E\u022E\u0230\u00D6\u022A\u1ECE\u0150\u01D1\u020C\u020E\u01A0\u1EDC\u1EDA\u1EE0\u1EDE\u1EE2\u1ECC\u1ED8\u01EA\u01EC\u00D8\u01FE\u0186\u019F\uA74A\uA74C]/g}, {'base':'OI','letters':/[\u01A2]/g}, {'base':'OO','letters':/[\uA74E]/g}, {'base':'OU','letters':/[\u0222]/g}, {'base':'P', 'letters':/[\u0050\u24C5\uFF30\u1E54\u1E56\u01A4\u2C63\uA750\uA752\uA754]/g}, {'base':'Q', 'letters':/[\u0051\u24C6\uFF31\uA756\uA758\u024A]/g}, {'base':'R', 'letters':/[\u0052\u24C7\uFF32\u0154\u1E58\u0158\u0210\u0212\u1E5A\u1E5C\u0156\u1E5E\u024C\u2C64\uA75A\uA7A6\uA782]/g}, {'base':'S', 'letters':/[\u0053\u24C8\uFF33\u1E9E\u015A\u1E64\u015C\u1E60\u0160\u1E66\u1E62\u1E68\u0218\u015E\u2C7E\uA7A8\uA784]/g}, {'base':'T', 'letters':/[\u0054\u24C9\uFF34\u1E6A\u0164\u1E6C\u021A\u0162\u1E70\u1E6E\u0166\u01AC\u01AE\u023E\uA786]/g}, {'base':'TZ','letters':/[\uA728]/g}, {'base':'U', 'letters':/[\u0055\u24CA\uFF35\u00D9\u00DA\u00DB\u0168\u1E78\u016A\u1E7A\u016C\u00DC\u01DB\u01D7\u01D5\u01D9\u1EE6\u016E\u0170\u01D3\u0214\u0216\u01AF\u1EEA\u1EE8\u1EEE\u1EEC\u1EF0\u1EE4\u1E72\u0172\u1E76\u1E74\u0244]/g}, {'base':'V', 'letters':/[\u0056\u24CB\uFF36\u1E7C\u1E7E\u01B2\uA75E\u0245]/g}, {'base':'VY','letters':/[\uA760]/g}, {'base':'W', 'letters':/[\u0057\u24CC\uFF37\u1E80\u1E82\u0174\u1E86\u1E84\u1E88\u2C72]/g}, {'base':'X', 'letters':/[\u0058\u24CD\uFF38\u1E8A\u1E8C]/g}, {'base':'Y', 'letters':/[\u0059\u24CE\uFF39\u1EF2\u00DD\u0176\u1EF8\u0232\u1E8E\u0178\u1EF6\u1EF4\u01B3\u024E\u1EFE]/g}, {'base':'Z', 'letters':/[\u005A\u24CF\uFF3A\u0179\u1E90\u017B\u017D\u1E92\u1E94\u01B5\u0224\u2C7F\u2C6B\uA762]/g}, {'base':'a', 'letters':/[\u0061\u24D0\uFF41\u1E9A\u00E0\u00E1\u00E2\u1EA7\u1EA5\u1EAB\u1EA9\u00E3\u0101\u0103\u1EB1\u1EAF\u1EB5\u1EB3\u0227\u01E1\u00E4\u01DF\u1EA3\u00E5\u01FB\u01CE\u0201\u0203\u1EA1\u1EAD\u1EB7\u1E01\u0105\u2C65\u0250]/g}, {'base':'aa','letters':/[\uA733]/g}, {'base':'ae','letters':/[\u00E6\u01FD\u01E3]/g}, {'base':'ao','letters':/[\uA735]/g}, {'base':'au','letters':/[\uA737]/g}, {'base':'av','letters':/[\uA739\uA73B]/g}, {'base':'ay','letters':/[\uA73D]/g}, {'base':'b', 'letters':/[\u0062\u24D1\uFF42\u1E03\u1E05\u1E07\u0180\u0183\u0253]/g}, {'base':'c', 'letters':/[\u0063\u24D2\uFF43\u0107\u0109\u010B\u010D\u00E7\u1E09\u0188\u023C\uA73F\u2184]/g}, {'base':'d', 'letters':/[\u0064\u24D3\uFF44\u1E0B\u010F\u1E0D\u1E11\u1E13\u1E0F\u0111\u018C\u0256\u0257\uA77A]/g}, {'base':'dz','letters':/[\u01F3\u01C6]/g}, {'base':'e', 'letters':/[\u0065\u24D4\uFF45\u00E8\u00E9\u00EA\u1EC1\u1EBF\u1EC5\u1EC3\u1EBD\u0113\u1E15\u1E17\u0115\u0117\u00EB\u1EBB\u011B\u0205\u0207\u1EB9\u1EC7\u0229\u1E1D\u0119\u1E19\u1E1B\u0247\u025B\u01DD]/g}, {'base':'f', 'letters':/[\u0066\u24D5\uFF46\u1E1F\u0192\uA77C]/g}, {'base':'g', 'letters':/[\u0067\u24D6\uFF47\u01F5\u011D\u1E21\u011F\u0121\u01E7\u0123\u01E5\u0260\uA7A1\u1D79\uA77F]/g}, {'base':'h', 'letters':/[\u0068\u24D7\uFF48\u0125\u1E23\u1E27\u021F\u1E25\u1E29\u1E2B\u1E96\u0127\u2C68\u2C76\u0265]/g}, {'base':'hv','letters':/[\u0195]/g}, {'base':'i', 'letters':/[\u0069\u24D8\uFF49\u00EC\u00ED\u00EE\u0129\u012B\u012D\u00EF\u1E2F\u1EC9\u01D0\u0209\u020B\u1ECB\u012F\u1E2D\u0268\u0131]/g}, {'base':'j', 'letters':/[\u006A\u24D9\uFF4A\u0135\u01F0\u0249]/g}, {'base':'k', 'letters':/[\u006B\u24DA\uFF4B\u1E31\u01E9\u1E33\u0137\u1E35\u0199\u2C6A\uA741\uA743\uA745\uA7A3]/g}, {'base':'l', 'letters':/[\u006C\u24DB\uFF4C\u0140\u013A\u013E\u1E37\u1E39\u013C\u1E3D\u1E3B\u017F\u0142\u019A\u026B\u2C61\uA749\uA781\uA747]/g}, {'base':'lj','letters':/[\u01C9]/g}, {'base':'m', 'letters':/[\u006D\u24DC\uFF4D\u1E3F\u1E41\u1E43\u0271\u026F]/g}, {'base':'n', 'letters':/[\u006E\u24DD\uFF4E\u01F9\u0144\u00F1\u1E45\u0148\u1E47\u0146\u1E4B\u1E49\u019E\u0272\u0149\uA791\uA7A5]/g}, {'base':'nj','letters':/[\u01CC]/g}, {'base':'o', 'letters':/[\u006F\u24DE\uFF4F\u00F2\u00F3\u00F4\u1ED3\u1ED1\u1ED7\u1ED5\u00F5\u1E4D\u022D\u1E4F\u014D\u1E51\u1E53\u014F\u022F\u0231\u00F6\u022B\u1ECF\u0151\u01D2\u020D\u020F\u01A1\u1EDD\u1EDB\u1EE1\u1EDF\u1EE3\u1ECD\u1ED9\u01EB\u01ED\u00F8\u01FF\u0254\uA74B\uA74D\u0275]/g}, {'base':'oi','letters':/[\u01A3]/g}, {'base':'ou','letters':/[\u0223]/g}, {'base':'oo','letters':/[\uA74F]/g}, {'base':'p','letters':/[\u0070\u24DF\uFF50\u1E55\u1E57\u01A5\u1D7D\uA751\uA753\uA755]/g}, {'base':'q','letters':/[\u0071\u24E0\uFF51\u024B\uA757\uA759]/g}, {'base':'r','letters':/[\u0072\u24E1\uFF52\u0155\u1E59\u0159\u0211\u0213\u1E5B\u1E5D\u0157\u1E5F\u024D\u027D\uA75B\uA7A7\uA783]/g}, {'base':'s','letters':/[\u0073\u24E2\uFF53\u00DF\u015B\u1E65\u015D\u1E61\u0161\u1E67\u1E63\u1E69\u0219\u015F\u023F\uA7A9\uA785\u1E9B]/g}, {'base':'t','letters':/[\u0074\u24E3\uFF54\u1E6B\u1E97\u0165\u1E6D\u021B\u0163\u1E71\u1E6F\u0167\u01AD\u0288\u2C66\uA787]/g}, {'base':'tz','letters':/[\uA729]/g}, {'base':'u','letters':/[\u0075\u24E4\uFF55\u00F9\u00FA\u00FB\u0169\u1E79\u016B\u1E7B\u016D\u00FC\u01DC\u01D8\u01D6\u01DA\u1EE7\u016F\u0171\u01D4\u0215\u0217\u01B0\u1EEB\u1EE9\u1EEF\u1EED\u1EF1\u1EE5\u1E73\u0173\u1E77\u1E75\u0289]/g}, {'base':'v','letters':/[\u0076\u24E5\uFF56\u1E7D\u1E7F\u028B\uA75F\u028C]/g}, {'base':'vy','letters':/[\uA761]/g}, {'base':'w','letters':/[\u0077\u24E6\uFF57\u1E81\u1E83\u0175\u1E87\u1E85\u1E98\u1E89\u2C73]/g}, {'base':'x','letters':/[\u0078\u24E7\uFF58\u1E8B\u1E8D]/g}, {'base':'y','letters':/[\u0079\u24E8\uFF59\u1EF3\u00FD\u0177\u1EF9\u0233\u1E8F\u00FF\u1EF7\u1E99\u1EF5\u01B4\u024F\u1EFF]/g}, {'base':'z','letters':/[\u007A\u24E9\uFF5A\u017A\u1E91\u017C\u017E\u1E93\u1E95\u01B6\u0225\u0240\u2C6C\uA763]/g} ]; for(var i=0; i 0 || ua.indexOf('Trident') > 0) && typeof screen.deviceXDPI != undefined){ var z = document.body.style.zoom; if(z == '') { z = screen.deviceXDPI /screen.logicalXDPI; } else { z = parseFloat(document.body.style.zoom); } } else { z = $("body").css('zoom'); } if (ua.indexOf('Firefox') > 0) { z = 1; } return z; }; ///////////////////////////////////////////////////////////////////////// // Workspace menu and footer insertion ///////////////////////////////////////////////////////////////////////// function generateMenusAndFooter() { var menuList = '\ \ \ \ '; var burgerMenuList = '\ \ \ \ '; var footerContent = '\
\ \
Workspace© 2024 Total Global IT Services SAS\
\
\ \ '; // check if IE : if IE compatible version (>= 10) var ieVersion = detectIE(); // if (ieVersion !== false) { // if (ieVersion < 10) { // window.location.href = '/public/share/pages/unsupportedbrowser.html'; // return; // } // } $('#localwebsites').attr('href', 'https://www.total.com/en/info/company-websites'); $('#main-menu-list').hide(); $('#main-menu-list').html(menuList); $('#main-menu-list').find('.last-submenu').width('135px'); $('#burger-menu-list').html(burgerMenuList); $('#page-footer').html(footerContent); $('#page-footer').show(); if (window.location.href.indexOf('webtop.eui') > 0) { $('#main-menu-list').find('#menu-list-login').hide(); $('#burger-menu-list').find('#menu-list-login').hide(); $('#main-menu-list').find('#menu-list-logout').show(); $('#burger-menu-list').find('#menu-list-logout').show(); $('#main-menu-list').show(); } else { $.ajax({ url: '/services/isSessionConnected', method: "GET", timeout: 2000, dataType: "text", success: function(data, status, jHqr) { if (data == "true") { $('#main-menu-list').find('#menu-list-login').hide(); $('#burger-menu-list').find('#menu-list-login').hide(); $('#main-menu-list').find('#menu-list-logout').show(); $('#burger-menu-list').find('#menu-list-logout').show(); } }, complete: function(jHqr, status) { if (window.location.href.indexOf('webtop.eui') > 0) { $('#main-menu-list').fadeIn(300); } else { $('#main-menu-list').fadeIn(300); } } }); } } ///////////////////////////////////////////////////////////////////////// // checkBrowserOS() ///////////////////////////////////////////////////////////////////////// function checkBrowserOS() { if( /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent) ) { return "mobile"; } if (/Mac OS/i.test(navigator.userAgent)) { return "MacOS"; } if (/Linux/i.test(navigator.userAgent)) { return "Linux"; } if (/Win/i.test(navigator.userAgent)) { return "Win"; } return "unknown"; } ///////////////////////////////////////////////////////////////////////// // detectIE() ///////////////////////////////////////////////////////////////////////// function detectIE() { var ua = window.navigator.userAgent; var msie = ua.indexOf('MSIE '); if (msie > 0) { // IE 10 or older => return version number return parseInt(ua.substring(msie + 5, ua.indexOf('.', msie)), 10); } var trident = ua.indexOf('Trident/'); if (trident > 0) { // IE 11 => return version number var rv = ua.indexOf('rv:'); return parseInt(ua.substring(rv + 3, ua.indexOf('.', rv)), 10); } var edge = ua.indexOf('Edge/'); if (edge > 0) { // Edge (IE 12+) => return version number return parseInt(ua.substring(edge + 5, ua.indexOf('.', edge)), 10); } // other browser return false; } ///////////////////////////////////////////////////////////////////////// // workspace-settings cookie and settings option-box management ///////////////////////////////////////////////////////////////////////// // getCookie reads argument cookie name and return its value or empty if not found function getCookie(cname) { var name = cname + "="; var ca = document.cookie.split(';'); for(var i = 0; i < ca.length; i++) { var c = ca[i]; while (c.charAt(0) == ' ') { c = c.substring(1); } if (c.indexOf(name) == 0) { return c.substring(name.length, c.length); } } return ""; } // setPermanentCookie sets cname cookie with cvalue value for 20 years (no never // possible in JS) function setCookie(cname, cvalue) { var d = new Date(); // 20 (years) * 365 (days) * 24 (hours) * 60 (minutes) * 60 (seconds) * 1000 (milli) d.setTime(d.getTime() + (20*365*24*60*60*1000)); var expires = "expires="+ d.toUTCString(); document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/"; } // createWorkspaceSettingsCookie : for initial cookie preferences setup function createWorkspaceSettingsCookie() { var prefString = "has-red-faq:0|webtop-sess-timeout:7200|buttons-no-border:0|buttons-rounded-corners:1|buttons-shadows:1|buttons-oneline:0|buttons-long-caption:1|banners-disable:0|buttons-theme:gradient-lightblue|disable-vpn-autolaunch:0|disable-vpn-wrapper:0|disable-rdp-java:0|disable-rdp-gateway:0|enable-workspace-extensions:1"; if (getCookie('workspace-settings') == "") { setCookie('workspace-settings', prefString); } } // updateWorkspaceSettingsFromCookie : read preferences and setup pref array from cookie // if found function updateWorkspaceSettingsFromCookie() { var wrkSettingsCookie = getCookie('workspace-settings'); if (wrkSettingsCookie != "") { var keypairList = wrkSettingsCookie.split('|'); for (var i = 0; i < keypairList.length; i++) { var keypair = keypairList[i].split(':'); wrkSettingsArray[keypair[0]] = keypair[1]; } } } // get values from workspace-selfservice cookie into selfservice ovbox function displaySelfServiceBox() { var selfServiceCookie = getCookie('workspace-selfservice'); var sContainer = document.getElementById('selfservicelist-container'); sContainer.innerHTML = ""; var sResString = ""; var sResArray = []; $.ajax({ url: '/services/getSelfServiceResources', method: 'GET', timeout: 2000, dataType: 'json', async: false, error: function(jqXHR,textStatus,errorThrown) { alert('Exception:'+errorThrown ); }, success: function(data, status, jHqr) { // alert("success"); var d = ['paResources', 'paResourcesNoRw', 'rdResources', 'samlResources', 'wtLinks']; d.forEach(function(rT) { sResArray[rT] = ""; data[rT].forEach(function(el) { if (sResArray[rT] != "") { sResArray[rT] += "+"; } sResArray[rT] += el.replace(/\/Common\//, "").replace(/:.*$/, ""); }); switch(rT) { case 'paResources': sResString += "&wa_res="; break; case 'paResourcesNoRw': sResString += "&wa_res2="; break; case 'rdResources': sResString += "&rd_res="; break; case 'samlResources': sResString += "&saml_res="; break; case 'wtLinks': sResString += "&wl_list="; break; } sResString += sResArray[rT]; }); // convert wa_res2 (fake norw) to wa_res if wa_res2 exists, depending // on wa_res existing also if (sResString.indexOf("&wa_res2=") >= 0) { if (sResString.indexOf("&wa_res=") >= 0) { sResString = sResString.replace(/&wa_res2=/, "+"); } else { sResString = sResString.replace(/&wa_res2=/, "&wa_res="); } } // strip eventual +& sResString = sResString.replace(/\+&/, "&"); myConsoleLog("sResString=" + sResString); $.ajax({ url: '/vdesk/resource_info_v2.xml?prtn=/Common/' + sResString, method: "GET", timeout: 5000, dataType: "xml", async: false, success: function(xml, status, jHqr) { myConsoleLog("get info_v2.xml success"); var items = xml.getElementsByTagName('item'); for (var i = 0; i < items.length; i++) { myConsoleLog("i=" + i); myConsoleLog(items[i]); var itemId = items[i].getElementsByTagName('id')[0].childNodes[0].nodeValue; var rowDiv = myCreateAndAppendNode(sContainer, 'div', '', 'row-form'); var inputCtrl = myCreateAndAppendNode(rowDiv, 'input', 'input_' + itemId.replace(/\/Common\//, ""), ""); inputCtrl.name = inputCtrl.id; inputCtrl.type = "checkbox"; inputCtrl.value = 0; var labelCtrl = myCreateAndAppendNode(rowDiv, 'label', '', "options"); labelCtrl.htmlFor = inputCtrl.id; var resDiv = myCreateAndAppendNode(labelCtrl, 'span', itemId, 'selffavoritediv'); var imgSpan = myCreateAndAppendNode(resDiv, 'span', '', 'image'); var imgSrc = myCreateAndAppendNode(imgSpan, 'img', '', ''); myConsoleLog(items[i].getElementsByTagName('custom_img_path')[0]); imgSrc.src = items[i].getElementsByTagName('custom_img_path')[0].childNodes[0].nodeValue; var capSpan = myCreateAndAppendNode(resDiv, 'span', '', 'caption'); capSpan.innerHTML = items[i].getElementsByTagName('caption')[0].childNodes[0].nodeValue; var desc = items[i].getElementsByTagName('description')[0].childNodes[0]; myConsoleLog(desc); if ((typeof desc !== 'undefined') && (desc !== undefined)) { var desSpan = myCreateAndAppendNode(capSpan, 'span', '', ''); desSpan.innerHTML = desc.nodeValue; } }; // var rArray = sContainer.getElementsByClassName('selffavoritediv'); } // end second ajax }); } // end main ajax }); if (selfServiceCookie != "") { var keypairList = selfServiceCookie.split(','); //myConsoleLog(keypairList); for (var i = 0; i < keypairList.length; i++) { var tmpKey = keypairList[i].replace(/=.*$/, ""); var tmpVal = keypairList[i].replace(/^.*=/, ""); myConsoleLog("key=" + tmpKey + " tmpval=" + tmpVal); tmpVal.split('|').forEach(function(el, i) { var sVal = 'input_' + el.replace(/:.*$/, "").replace(/\/Common\//, ""); myConsoleLog("sVal=" + sVal); $('#selfservicelist-container').find('input').each(function() { if ($(this).attr("id") == sVal) { $(this).prop('checked', true); } }); }); } } WAFDisplayOverlay('ovbox-selfservicebox'); } // selfServiceBoxToDefaults : reset self-service box function selfServiceBoxToDefaults() { $('#selfservicelist-container').find('input').each(function() { $(this).prop('checked', false); }); } // selfServiceCheckIfActivate : checks if resource is self-service and if to activate // it or not function selfServiceCheckIfActivate(resId) { // get allowed self service resouces IDs into array // if list has not been previously computed by previous call to this function if (selfServiceResourceList.length == 0) { $.ajax({ url: '/services/getSelfServiceResources', method: 'GET', timeout: 2000, dataType: 'json', async: false, error: function(jqXHR,textStatus,errorThrown) { alert('Exception:'+errorThrown ); }, success: function(data, status, jHqr) { // alert("success"); var d = ['paResources', 'paResourcesNoRw', 'rdResources', 'samlResources', 'wtLinks']; d.forEach(function(rT) { data[rT].forEach(function(el) { selfServiceResourceList.push(el.replace(/:.*$/, "")); }); }); } // end ajax }); // get activated self service resouces IDs into array // if list has not been previously computed by previous call to this function if (activatedSelfServiceList.length == 0) { var selfServiceCookie = getCookie('workspace-selfservice'); if (selfServiceCookie != "") { var keypairList = selfServiceCookie.split(','); //myConsoleLog(keypairList); for (var i = 0; i < keypairList.length; i++) { var tmpVal = keypairList[i].replace(/^.*=/, ""); tmpVal.split('|').forEach(function(el, i) { activatedSelfServiceList.push('/Common/' + el.replace(/:.*$/, "")); }); } } } } // by default resource will be displayed var result = 1; // if resource is in allowed self service list if (selfServiceResourceList.indexOf(resId) > -1) { // if resource is not in activated self service list, then hide (result = 0) if (activatedSelfServiceList.indexOf(resId) < 0) { result = 0; } // myConsoleLog("selfService resId: " + resId + " / check/activated result: " + result); } return result; } // applyOptionsBox : update selfservice cookie with settings selfservice-box values function applySelfServiceBox() { $.ajax({ url: '/services/getSelfServiceResources', method: 'GET', timeout: 2000, dataType: 'json', async: false, success: function(data, status, jHqr) { var d = ['paResources', 'paResourcesNoRw', 'rdResources', 'samlResources', 'wtLinks']; var cString = ""; d.forEach(function(rT) { var tmpRes = ""; data[rT].forEach(function(el) { $('#selfservicelist-container input[type=checkbox]').each(function() { if ($(this).is(':checked')) { var resName = "/Common/" + $(this).attr('id'); resName = resName.replace(/\/Common\/input_/, ""); if (el.indexOf(resName) >= 0) { if (tmpRes != '') { tmpRes += "|"; } tmpRes += resName; return false; } } }); }); if (tmpRes != "") { if (cString != "") { cString += ","; } cString += rT + "=" + tmpRes; } }); setCookie('workspace-selfservice', cString); WAFHideOverlay('ovbox-selfservicebox'); if (wrkSettingsArray['banners-disable'] == 0) { setTimeout(function() { setTimeout(function() { WAFHideBanner("banner-selfservice-saved", "top", 0, 4); }, 5000); WAFDisplayBanner("banner-selfservice-saved", "top", 0, 4); }, 800); } } }); } // get values from workspace-settings cookie into preferences ovbox function displayOptionsBox() { var wrkSettingsCookie = getCookie('workspace-settings'); var keypairList = wrkSettingsCookie.split('|'); for (var i = 0; i < keypairList.length; i++) { var keypair = keypairList[i].split(':'); if (keypair[0] != "had-red-faq") { if (keypair[1] == 1) { $('#' + keypair[0]).prop('checked', true); } else { $('#' + keypair[0]).val(keypair[1]); } } } var browserOS = checkBrowserOS(); myConsoleLog(browserOS); if (browserOS != "Win") { $('#enable-workspace-extensions-div').hide(); } if (browserOS == "mobile" || browserOS == "unknown") { $('#workspace-nonmobile-options').hide(); } WAFDisplayOverlay('ovbox-optionsbox'); } // optionsBoxToDefaults : reset option box options to default values function optionsBoxToDefaults() { var prefString = "has-red-faq:0|webtop-sess-timeout:7200|buttons-no-border:0|buttons-rounded-corners:1|buttons-shadows:1|buttons-oneline:0|buttons-long-caption:1|banners-disable:0|buttons-theme:gradient-lightblue|disable-vpn-autolaunch:0|disable-vpn-wrapper:0|disable-rdp-java:0|disable-rdp-gateway:0|enable-workspace-extensions:1"; var keypairList = prefString.split('|'); for (var i = 0; i < keypairList.length; i++) { var keypair = keypairList[i].split(':'); if (keypair[0] != "had-red-faq") { if (keypair[1] == 1) { $('#' + keypair[0]).prop('checked', true); } else { if (keypair[1] == 0) { $('#' + keypair[0]).prop('checked', false); } else { $('#' + keypair[0]).val(keypair[1]); } } } } } // applyOptionsBox : update workspace-settings cookie with settings option-box values function applyOptionsBox() { var prefString = "has-red-faq:" + wrkSettingsArray['has-red-faq'] + "|"; $('#ovbox-optionsbox input[type=checkbox]').each(function(i, el) { if ($(this).is(':checked')) { prefString += $(this).attr('name') + ":1|"; } else { prefString += $(this).attr('name') + ":0|"; } }); prefString += "webtop-sess-timeout:" + $('#webtop-sess-timeout').val() + "|"; prefString += "buttons-theme:" + $('#buttons-theme').val(); setCookie('workspace-settings', prefString); WAFHideOverlay('ovbox-optionsbox'); if (wrkSettingsArray['banners-disable'] == 0) { setTimeout(function() { setTimeout(function() { WAFHideBanner("banner-settings-saved", "top", 0, 4); }, 5000); WAFDisplayBanner("banner-settings-saved", "top", 0, 4); }, 800); } } // loads workspace option cookie into array if webtop launched // updates servicesURL as soon as possible if (window.location.href.indexOf('webtop.eui') > 0) { updateWorkspaceSettingsFromCookie(); getServicesURL(); } ///////////////////////////////////////////////////////////////////////// // getServicesURL() // returns workspace-services URL ///////////////////////////////////////////////////////////////////////// function getServicesURL() { var res = null; $.ajax({ url: '/services/getServicesURL', method: "GET", timeout: 2000, dataType: "text", async: false, error: function(jHqr, status, error) { myConsoleLog("get error"); res = null; }, success: function(data, status, jHqr) { myConsoleLog("get success"); res = data; }, complete: function(jHqr, status) { servicesURL = res; } }); } ///////////////////////////////////////////////////////////////////////// // screenfull polyfill ///////////////////////////////////////////////////////////////////////// (function () { 'use strict'; var document = typeof window !== 'undefined' && typeof window.document !== 'undefined' ? window.document : {}; var isCommonjs = typeof module !== 'undefined' && module.exports; var keyboardAllowed = typeof Element !== 'undefined' && 'ALLOW_KEYBOARD_INPUT' in Element; var fn = (function () { var val; var fnMap = [ [ 'requestFullscreen', 'exitFullscreen', 'fullscreenElement', 'fullscreenEnabled', 'fullscreenchange', 'fullscreenerror' ], // New WebKit [ 'webkitRequestFullscreen', 'webkitExitFullscreen', 'webkitFullscreenElement', 'webkitFullscreenEnabled', 'webkitfullscreenchange', 'webkitfullscreenerror' ], // Old WebKit (Safari 5.1) [ 'webkitRequestFullScreen', 'webkitCancelFullScreen', 'webkitCurrentFullScreenElement', 'webkitCancelFullScreen', 'webkitfullscreenchange', 'webkitfullscreenerror' ], [ 'mozRequestFullScreen', 'mozCancelFullScreen', 'mozFullScreenElement', 'mozFullScreenEnabled', 'mozfullscreenchange', 'mozfullscreenerror' ], [ 'msRequestFullscreen', 'msExitFullscreen', 'msFullscreenElement', 'msFullscreenEnabled', 'MSFullscreenChange', 'MSFullscreenError' ] ]; var i = 0; var l = fnMap.length; var ret = {}; for (; i < l; i++) { val = fnMap[i]; if (val && val[1] in document) { for (i = 0; i < val.length; i++) { ret[fnMap[0][i]] = val[i]; } return ret; } } return false; })(); var eventNameMap = { change: fn.fullscreenchange, error: fn.fullscreenerror }; var screenfull = { request: function (elem) { return new Promise(function (resolve, reject) { var request = fn.requestFullscreen; var onFullScreenEntered = function () { this.off('change', onFullScreenEntered); resolve(); }.bind(this); this.on('change', onFullScreenEntered); elem = elem || document.documentElement; var promise; // Work around Safari 5.1 bug: reports support for // keyboard in fullscreen even though it doesn't. // Browser sniffing, since the alternative with // setTimeout is even worse. if (/ Version\/5\.1(?:\.\d+)? Safari\//.test(navigator.userAgent)) { promise = elem[request](); } else { promise = elem[request](keyboardAllowed ? Element.ALLOW_KEYBOARD_INPUT : {}); } Promise.resolve(promise).catch(reject); }.bind(this)); }, exit: function () { return new Promise(function (resolve) { if (!this.isFullscreen) { resolve(); return; } var onFullScreenExit = function () { this.off('change', onFullScreenExit); resolve(); }.bind(this); document[fn.exitFullscreen](); this.on('change', onFullScreenExit); }.bind(this)); }, toggle: function (elem) { return this.isFullscreen ? this.exit() : this.request(elem); }, onchange: function (callback) { this.on('change', callback); }, onerror: function (callback) { this.on('error', callback); }, on: function (event, callback) { var eventName = eventNameMap[event]; if (eventName) { document.addEventListener(eventName, callback, false); } }, off: function (event, callback) { var eventName = eventNameMap[event]; if (eventName) { document.removeEventListener(eventName, callback, false); } }, raw: fn }; if (!fn) { if (isCommonjs) { module.exports = false; } else { window.screenfull = false; } return; } Object.defineProperties(screenfull, { isFullscreen: { get: function () { return Boolean(document[fn.fullscreenElement]); } }, element: { enumerable: true, get: function () { return document[fn.fullscreenElement]; } }, enabled: { enumerable: true, get: function () { // Coerce to boolean in case of old WebKit return Boolean(document[fn.fullscreenEnabled]); } } }); if (isCommonjs) { module.exports = screenfull; // TODO: remove this in the next major version module.exports.default = screenfull; } else { window.screenfull = screenfull; } })(); ///////////////////////////////////////////////////////////////////////// // Document Ready handler // interface functions ///////////////////////////////////////////////////////////////////////// $(document).ready(function () { $('head').append(''); $('head').append(''); $('.burger').click(function (e) { if ($(".open").css('display') == 'inline') { $(".open").hide(); $(".close").show(); slide('down', $(".menu_responsive_container")); } else { closeMenu(); } e.stopPropagation(); }); // // MENUS // var hoverFlying = $('.menu .hover-flying'); // line menu title click disable $(".menu .menu_list .dropdown").click(function (e) { e.preventDefault(); }); $(".menu .menu_list .dropdown li").click(function (e) { e.stopPropagation(); }); // Line menu hovering behavior // underline with HoverFlying class $('.menu .menu_list li').hover(function (e) { if ($(this).parent().attr('class') == 'menu_list') { $('.submenu').hide(); // Main javascript code override object prototype // which breaks jQuery animation $(this).find('ul').slideDown(200); // liWidth = $(this).width() - 10; liWidth = $(this).children("a").width(); liPositionLeft = $(this).position(); liPaddingValue = $(this).css('padding-left'); if (liPaddingValue == "15px") { liPaddingValue = 15; } if (liPaddingValue == "7px") { liPaddingValue = 7; } hoverFlying.stop() .animate({ width : liWidth, // left : [liPositionLeft.left + 5 + 13, "swing"], left : [liPositionLeft.left + 5 + liPaddingValue, "swing"], opacity: 1 }, 200); } e.preventDefault(); }, // complement function to display dropdown subclass menu // on hovering action function () { if ($(this).attr('class') == 'dropdown' || $(this).parent().attr('class') == 'menu_list') { $('.submenu').hide(); // Main javascript code override object prototype // which breaks jQuery animation hoverFlying.stop() .animate({ width : 0, left : [-100, "swing"], opacity: 0 }, 200); } }); // usermenu management var hoverFlyingUserMenu = $('.usermenu .hover-flying'); // Line menu hovering behavior // underline with HoverFlying class $('.usermenu .menu_list li').hover(function (e) { if ($(this).parent().attr('class') == 'menu_list') { $('.usermenu .menu_list li .submenu').hide(); // force red highlight of menu while browsing submenu by setting // the child a element color to red $(this).find('#usermenu-href').css('color', '#ed0000'); $(this).find('ul').slideDown(200); /* before 01/11/18 liWidth = $(this).width(); liPositionLeft = $(this).position(); hoverFlyingUserMenu.stop() .animate({ width : liWidth, left : [liPositionLeft.left + 10, "swing"], opacity: 1 }, 200); */ liWidth = $(this).width() - 4; liPositionLeft = $(this).position(); hoverFlyingUserMenu.stop() .animate({ width : liWidth, left : [liPositionLeft.left + 4, "swing"], opacity: 1 }, 200); } e.preventDefault(); }, // complement function to display dropdown subclass menu // on hovering action function () { if ($(this).attr('class') == 'dropdown' || $(this).parent().attr('class') == 'menu_list') { $('.usermenu .menu_list li .submenu').hide(); // force normal highlight of menu while browsing submenu by setting // the child a element color to red $(this).find('#usermenu-href').css('color', '#374649'); hoverFlyingUserMenu.stop() .animate({ width : 0, left : [-100, "swing"], opacity: 0 }, 200); } }); // Burger responsive menu management $('.menu_responsive .dropdown').click(function (e) { var submenu = $(this).find('.submenu'); if (submenu.css('display') != 'none') { slide('up', submenu); } else { slide('down', submenu); } e.preventDefault(); }); $(".menu_responsive .dropdown li").click(function (e) { e.stopPropagation(); }); function closeMenu() { $(".open").show(); $(".close").hide(); slide('up', $(".menu_responsive_container")); } function slide(directon, element) { if(directon == 'up') { element.slideUp(); } else { element.slideDown(); } } // fullscreen toggle $('#fullscreen').on("click", function(e) { if (screenfull.enabled) { screenfull.toggle(); var ua = navigator.userAgent; if (ua.indexOf('MSIE') > 0 || ua.indexOf('Trident') > 0) { document.body.style.zoom = zoom + 0.05; } e.stopPropagation(); } }); // font-size larger / smaller buttons $(".font-size a").on("click", function() { var ua = navigator.userAgent; var matched = 0; var zoom = zoomFactor(); if (ua.indexOf('MSIE') > 0 || ua.indexOf('Trident') > 0) { matched = 1; } if(matched && typeof screen.deviceXDPI != undefined){ if(this.id == 'large') { document.body.style.zoom = zoom + 0.05; }else { document.body.style.zoom = zoom - 0.05; } }else { if(this.id == 'large') { zoom *= 1.1; } else if (this.id == 'small'){ zoom *= 0.9; } if(matched) { $("body").css('-ms-zoom', zoom); } else { $("body").css('zoom', zoom); } } if (ua.indexOf('Firefox') > 0) { $('body').css('MozTransform','scale(' + zoom + ')'); } }); // Nav up button /* $('#nav_up').click(function (e) { // fix var old = Object.prototype.each; delete Object.prototype.each; //end fix $('html, body').animate({scrollTop: '5px'}, 500); Object.prototype.each = old; }); $(window).scroll(function () { if ($(this).scrollTop() > 50) { $('#nav_up').show(); } else { $('#nav_up').hide(); } }); */ $('#nav_up').click(function (e) { $('html, body').animate({scrollTop: '5px'}, 500); }); $('#nav_up').hover( function () { $('#nav_up-background').css({ opacity: 1 }); }, function () { $('#nav_up-background').css({ opacity: 0.4 }); } ); $(window).scroll(function () { if ($(this).scrollTop() > 50) { $('#nav_up').show(); } else { $('#nav_up').hide(); } }); // helper function for href opening // open links in new window if webtop is launched, open in current window // if not $('.openlink').click(function() { var hrefLocation = window.location.href; if (hrefLocation.indexOf('webtop.eui') > 0) { $(this).attr('target', '_blank'); } }); // webtop.eui specifics if (window.location.href.indexOf('webtop.eui') > 0) { // disable back / forward buttons history.pushState(null, null, location.href); window.onpopstate = function () { history.go(1); }; // WAFDisplayOverlay("ovbox-unsupportedbrowser"); // VPN status handler // check VPN status every 8 sec and update VPN status div // only if naActivateNa is defined if ((typeof naActivateNa !== "undefined") && (naActivateNa == "Yes")) { // add border to contact link and show vpn block if ((typeof naAutoLaunch !== "undefined") && (naAutoLaunch == "Yes")) { $('#header-vpn-unknown').show(); } else { $('#header-vpn-unknown').hide(); $('#header-vpn-offline').show(); } $('#vpnblock').css('display', 'inline-block'); $('#top-contact-link').addClass('border-right'); // periodic function setup if not previously defined // fix in case of multiple document.ready() calls if (vpnCheckIntervalId === null) { var delayUnknownStatus = 0; var oldVpnStatus = "unknown"; var oldProto; vpnCheckIntervalId = setInterval(function() { // try to recover null or undefined servicesURL var if ((typeof servicesURL === "undefined") || (servicesURL === null)) { getServicesURL(); } // ajax call to Ping services $.ajax({ url: 'https://' + servicesURL + '/services/Ping', method: "GET", timeout: 2000, dataType: "text", complete: function(jHqr, status) { if (vpnStatus != oldVpnStatus) { naSemaphore = 0; if (oldVpnStatus == "online" && vpnStatus == "offline" && numVpnOfflineConfirm < 2) { numVpnOfflineConfirm++; } else { numVpnOfflineConfirm = 0; if (oldVpnStatus == "unknown" && delayUnknownStatus < 5 && vpnStatus == "offline") { delayUnknownStatus++; myConsoleLog("returning, delayStatus=" + delayUnknownStatus); } else { // display banner info if (wrkSettingsArray['banners-disable'] == 0) { setTimeout(function() { WAFHideBanner("banner-vpn-" + vpnStatus, "bottom", 0, 3); // garbaging banners that have changed vpnStatus before // this delayed event will be proceeded setTimeout(function() { var tmpBannerId = document.getElementById("banner-vpn-offline"); tmpBannerId.style.bottom = 0-tmpBannerId.offsetHeight-200; tmpBannerId.style.display = "none"; tmpBannerId = document.getElementById("banner-vpn-online"); tmpBannerId.style.bottom = 0-tmpBannerId.offsetHeight-200; tmpBannerId.style.display = "none"; }, 500); }, 6000); WAFDisplayBanner("banner-vpn-" + vpnStatus, "bottom", 0, 3); } // change top right header vpn status $("#header-vpn-unknown").hide(); // modified 220818 // $("#header-vpn-" + oldVpnStatus).hide(); $("#header-vpn-online").hide(); $("#header-vpn-offline").hide(); // end modified 220818 $("#header-vpn-" + vpnStatus).show(); oldVpnStatus = vpnStatus; } } } }, error: function(jHqr, status, error) { // myConsoleLog("vpn offline, status: " + status + " error: " + error); myConsoleLog("returning error: " + error); vpnStatus = "offline"; }, success: function(data, status, jHqr) { if (data == "Pong") { myConsoleLog("vpn online"); vpnStatus = "online"; } else { if (delayUnknownStatus < 5) { delayUnknownStatus++; } myConsoleLog("success but not Pong, delayStatus=" + delayUnknownStatus); } } }); }, 7000); } } } });