Your IP : 3.144.34.97
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();