Current Path : /home/bitrix/ext_www/klimatlend.ua/bitrix/js/main/ |
Current File : /home/bitrix/ext_www/klimatlend.ua/bitrix/js/main/session.js |
function CBXSession() { var _this = this; this.mess = {}; this.timeout = null; this.sessid = null; this.bShowMess = true; this.dateStart = new Date(); this.dateInput = new Date(); this.dateCheck = new Date(); this.activityInterval = 0; this.notifier = null; this.Expand = function(timeout, sessid, bShowMess, key) { this.timeout = timeout; this.sessid = sessid; this.bShowMess = bShowMess; this.key = key; BX.ready(function(){ BX.bind(document, "keypress", _this.OnUserInput); BX.bind(document.body, "mousemove", _this.OnUserInput); BX.bind(document.body, "click", _this.OnUserInput); setTimeout(_this.CheckSession, (_this.timeout-60)*1000); }) }; this.OnUserInput = function() { var curr = new Date(); _this.dateInput.setTime(curr.valueOf()); }; this.CheckSession = function() { var curr = new Date(); if(curr.valueOf() - _this.dateCheck.valueOf() < 30000) return; _this.activityInterval = Math.round((_this.dateInput.valueOf() - _this.dateStart.valueOf())/1000); _this.dateStart.setTime(_this.dateInput.valueOf()); var interval = (_this.activityInterval > _this.timeout? (_this.timeout-60) : _this.activityInterval); var config = { 'method': 'GET', 'dataType': 'html', 'url': '/bitrix/tools/public_session.php?sessid='+_this.sessid+'&interval='+interval+'&k='+_this.key, 'data': '', 'onsuccess': function(data){_this.CheckResult(data)}, 'lsId': 'sess_expand', //caching the result in the local storage for multiple tabs 'lsTimeout': 60 }; if(interval > 0) { //forced request config.lsForce = true; } BX.ajax(config); }; this.CheckResult = function(data) { if(data == 'SESSION_EXPIRED') { if(_this.bShowMess) { if(!_this.notifier) { _this.notifier = document.body.appendChild(BX.create('DIV', { props: {className: 'bx-session-message'}, style: { top: '0px', backgroundColor: '#FFEB41', border: '1px solid #EDDA3C', width: '630px', fontFamily: 'Arial,Helvetica,sans-serif', fontSize: '13px', fontWeight: 'bold', textAlign: 'center', color: 'black', position: 'absolute', zIndex: '10000', padding: '10px' }, html: '<a class="bx-session-message-close" style="display:block; width:12px; height:12px; background:url(/bitrix/js/main/core/images/close.gif) center no-repeat; float:right;" href="javascript:bxSession.Close()"></a>'+_this.mess.messSessExpired })); var windowScroll = BX.GetWindowScrollPos(); var windowSize = BX.GetWindowInnerSize(); _this.notifier.style.left = parseInt(windowScroll.scrollLeft + windowSize.innerWidth / 2 - parseInt(_this.notifier.clientWidth) / 2) + 'px'; if(BX.browser.IsIE()) { _this.notifier.style.top = windowScroll.scrollTop + 'px'; BX.bind(window, 'scroll', function() { var windowScroll = BX.GetWindowScrollPos(); _this.notifier.style.top = windowScroll.scrollTop + 'px'; }); } else { _this.notifier.style.position='fixed'; } } _this.notifier.style.display = ''; } } else { var timeout; if(data == 'SESSION_CHANGED') timeout = (_this.timeout-60); else timeout = (_this.activityInterval < 60? 60 : (_this.activityInterval > _this.timeout? (_this.timeout-60) : _this.activityInterval)); var curr = new Date(); _this.dateCheck.setTime(curr.valueOf()); setTimeout(_this.CheckSession, timeout*1000); } }; this.Close = function() { this.notifier.style.display = 'none'; } } var bxSession = new CBXSession();