// 'use strict'; if (!getCookie('role') && !getCookie('id') && window.location.pathname != '/login.html'){ window.location.href = '/login.html'; } if(!Array.prototype.indexOf) { Array.prototype.indexOf = function(what, i) { i = i || 0; var L = this.length; while (i < L) { if(this[i] === what) return i; ++i; } return -1; }; } function createSubNavigation(){ var subnav = document.createElement('div'); subnav.className = 'subnav'; var ul = document.createElement('ul'); ul.className = 'nav navbar-nav'; subnav.appendChild(ul); var li = [document.createElement('li'), document.createElement('li')]; li[0].innerHTML = 'События Контроллера'; li[1].innerHTML = 'Состояние ИБП'; if(window.location.pathname == '/history.html') { li[0].className = 'active'; } else if (window.location.pathname == '/ups_history.html') { li[1].className = 'active'; } ul.appendChild(li[0]); ul.appendChild(li[1]); $('subnavf').appendChild(subnav); } function $(id) {return document.getElementById(id);} var timeout; function clockinit(timeS) { clearInterval(timeout); customClock(timeS); timeout = setInterval(customClock, 1000); } var customClock = (function() { var timeDiff; function addZ(n) { return (n < 10? '0' : '') + n; } function formatTime(d) { //Format 'dd.mm.yyyy hh:mm:ss' return addZ(d.getDate()) + '.' + addZ(d.getMonth() + 1) + '.' + d.getFullYear() + ' ' + addZ(d.getHours()) + ':' + addZ(d.getMinutes()) + ':' + addZ(d.getSeconds()); } return function (s) { var now = new Date(); var then; // Get the time difference if first run if (s) { document.getElementById('clockbox').style.opacity = '1'; then = new Date(now); //Set time in mileseconds and reset OS timezone then.setTime( parseInt(s) * 1000 + (then.getTimezoneOffset()*60000)); timeDiff = now - then; } now = new Date(now - timeDiff); if(document.getElementById('clockbox') ){ document.getElementById('clockbox').innerHTML = formatTime(now); } }; }()); window.onload = function(){ if (window.location.pathname !== '/login.html' && getCookie('auth') !== '0'){ var navId = document.getElementById('nav'); var li = document.createElement('li'); var logout = document.createElement('a'); logout.href = 'javascript:void(0);'; logout.innerHTML = 'Выход (' + getCookie('uname') + ')'; logout.onclick = logOut; li.id = 'logout'; li.className = 'logout'; li.appendChild(logout); navId.appendChild(li); } }; function logOut() { loadXMLDoc('logout.cgi'+'?'+Math.random(), 'GET', function(){ deleteCookie('role'); deleteCookie('id'); window.location.href = '/login.html'; }); return false; } function loadXMLDoc(url, method, callback, body) { var xmlhttp; if (window.XMLHttpRequest) { xmlhttp = new XMLHttpRequest(); } else { xmlhttp = new window.ActiveXObject('Microsoft.XMLHTTP'); } xmlhttp.open(method, url, true); xmlhttp.setRequestHeader('Content-Type', 'application/json'); var status; xmlhttp.onreadystatechange = function () { if (xmlhttp.readyState == 4) { status = xmlhttp.status; if (status == 200) { pwdIsCorrect = xmlhttp.responseText; if (typeof callback == 'function') { callback.apply(xmlhttp); } } else { console.log('Error'); } } }; xmlhttp.send(body); } function addSort(page){ var sortButton = document.getElementsByClassName('sortable'); for (var i = 0; i < sortButton.length; i++) { sortButton[i].addEventListener('click', function(){ var name = this.getAttribute('sort'); var direction = this.getAttribute('direction'); switch(page){ case 'alarms': var target = location.hash.split('#')[1]; getAlarms(target, name, direction); break; case 'dryinputs': getDryInputs(name, direction); break; case 'relais': getRelais(name, direction); break; } if(direction == 1){ this.setAttribute('direction', '-1'); } else { this.setAttribute('direction', '1'); } }); } } function getCookie(name){ var strCookie, arrCookie; strCookie = document.cookie, arrCookie = strCookie.split('; '); for (var i = 0; i < arrCookie.length; i++){ var arr = arrCookie[i].split('='); if (arr[0] == name) return unescape(arr[1]); } return ''; } function setCookie(name,value,expirehours){ var cookieString = name + '=' + escape(value); if (expirehours > 0) { var date = new Date(); date.setTime(date.getTime() + expirehours * 3600 * 1000); cookieString = cookieString + '; expires=' + date.toGMTString(); } document.cookie = cookieString; } function deleteCookie(name) { document.cookie = name + '=; expires=Thu, 01 Jan 1970 00:00:01 GMT;'; } function getJSON(url, successHandler, errorHandler) { var xhr; xhr = window.XMLHttpRequest ? new XMLHttpRequest() : new window.ActiveXObject('Microsoft.XMLHTTP'); var fURL = url.split('.').pop() == 'cgi' ? url+'?' : url+'&'; xhr.open('GET', fURL+'_=' + new Date().getTime(), true); xhr.onreadystatechange = function () { var status, data; if (xhr.readyState == 4) { status = xhr.status; if (status == 200) { data = JSON.parse(xhr.responseText); successHandler(data); } else { errorHandler(status); } } }; xhr.send(); } function checkNotify() { ( getCookie('netsettings_changed') == 'true' ) ? apply_settings.init() : apply_settings.close(); ( getCookie('device-error') == '1' ) ? device_error.init() : device_error.close(); } function getParam(e,x) { switch (x) { case 0: return (e.snmp === 'true'); case 1: return (e.sms === 'true'); case 2: return (e.email === 'true'); } } function decimalToBinary(decimal) { return (decimal >>> 0).toString(2); } function binaryToDecimal(binaryString) { return parseInt(binaryString, 2); } function cbToBit(id, n){ var bit = $(id).checked ? 1 : 0; return bit << n; } function arrayToBitMask(id){ // var parent = $(id).id; var snmp = cbToBit('cb0'+id, 0); var sms = cbToBit('cb1'+id, 1); // var email = cbToBit('cb2'+id, 2); return binaryToDecimal( decimalToBinary( (snmp | sms) ) ); } function NotificationBox (id, options) { this.id = id; this.options = (options ? options : {}); if(! ('message' in this.options)) this.options.message = 'NotificationBox: Hello World!'; if(! ('bgcolor' in this.options)) this.options.bgcolor = '#009966'; if(! ('textcolor' in this.options)) this.options.textcolor = '#fff'; if(! ('show' in this.options)) this.options.show = true; if(! ('url' in this.options)) this.options.url = false; } NotificationBox.prototype.init = function(){ if (!$(this.id)) { if (this.options.show) { var maindiv = document.createElement('div'); maindiv.id = this.id; maindiv.className = 'notify-box'; maindiv.style.backgroundColor = this.options.bgcolor; maindiv.style.color = this.options.textcolor; var string = document.createElement('p'); string.textContent = this.options.message; maindiv.appendChild(string); if (this.options.url) { var confirm = document.createElement('button'); confirm.className = 'btn btn-danger-inverted'; confirm.textContent = 'Подтвердить'; confirm.setAttribute('onclick', 'loadXMLDoc(\''+ this.options.url +'\',\'GET\', updatepage)'); maindiv.appendChild(confirm); } if (this.options.cancelButton) { var cancel = document.createElement('button'); cancel.className = 'btn btn-warning-inverted'; cancel.style.marginLeft = '5px'; cancel.textContent = 'Отмена'; cancel.setAttribute('onclick', 'loadXMLDoc(\''+ this.options.cancelUrl +'\',\'GET\', updatepage)'); maindiv.appendChild(cancel); } document.body.insertBefore(maindiv, document.body.childNodes[0]); fadeIn($(this.id)); } } }; NotificationBox.prototype.close = function(){ if ($(this.id) ){ var set = $(this.id); document.body.removeChild(set); } };