var userLang = navigator.language || navigator.userLanguage; var curr_lng=userLang.substr(0, 2); $(document).ready(function() { // default button clicks on enter $(document).keypress(function(event) { if (event.which == 13) { event.preventDefault(); $('.btn-default:enabled').trigger('click'); } }); loadConf(curr_lng, false, function(_langs, _conf, ws) { $('.select2').on('select2:closing', function(e) { $(this).parent().find('ul.select2-selection__rendered').css('height',''); $(this).parent().find('.select2-search.select2-search--inline').hide(); // if ($(this).val().length == 0) { if (e.currentTarget.value.length == 0) { $(this).parent().find('.select2-search.select2-search--inline').show(); } }).on('select2:opening', function(e) { $(this).parent().find('ul.select2-selection__rendered').css('height','initial'); $(this).parent().find('.select2-search.select2-search--inline').show(); }).on('select2:select select2:unselect', function() { var select2=$(this); if (select2.val().length == select2.data('select2').options.options.maximumSelectionLength) { select2.select2('close'); } }); var url = window.location.pathname; if (url == '/' && $('input[type=hidden]#_login').val() == "1") { document.location = '/'+_conf.modules[0]; } var _page = document.getElementById('_page'); $('.navbar-brand img').attr('src',_conf.navbarLogo); $('img.mapLogo').attr('src',_conf.loginLogo); $('.customLogo img, img.customLogo').attr('src',_conf.customLogo); $('head #colorStyle').attr('href','/css/'+_conf.themeColors[Object.keys(_conf.themeColors)[0]]); var modules_li=''; $.each(_conf.modules, function(k,v) { if (v) { if (url=='/'+v) { var active='active'; } else { var active=''; } modules_li+='
  • '+_langs[v]+'
  • '; } }); $('.nav.navbar-nav.modules').html(modules_li); // user settings $('.nav .user_settings').bind('click', function() { $('.modal .modal-header .modal-title').text(_langs.settings); var settings_html='
    '; settings_html+='
    '; settings_html+='
    '; settings_html+='
    '; settings_html+='
    '; $('.modal .modal-body').html(settings_html); $('.modal').modal(); var name=$('.modal .name'); var pass=$('.modal .password'); var pass1=$('.modal .password1'); pass.bind('keydown', function() { pass.css('color',''); }); pass1.bind('keydown', function() { pass1.css('color',''); }); $('.modal .changeTheme').bind('click', function() { $('.modal .changeTheme').removeClass('sel'); var thisBtn=$(this); thisBtn.addClass('sel'); var theme=thisBtn.attr('id'); $('head #colorStyle').attr('href','/css/'+theme); }); $('.modal .modal-footer .ok').bind('click', function() { if (pass.val() || pass1.val()) { if (pass.val().length<8) { pass.addClass('shakeX').css('color','#f00'); setTimeout(function() { pass.removeClass('shakeX'); }, 750); return false; } else if (pass.val()!=pass1.val()) { pass.addClass('shakeX').css('color','#f00'); pass1.addClass('shakeX').css('color','#f00'); setTimeout(function() { pass.removeClass('shakeX'); pass1.removeClass('shakeX'); }, 750); return false; } else { var out=userEditData('pass',pass.val()); } } else { var out=userEditData('name',name.val()); } var out=userEditData('colorTheme',$('.modal .changeTheme.sel').attr('id')); $('.navbar .nav .dropdown .user_real_name').html(name.val()+''); $('.modal').modal('hide'); }); $('.modal .modal-footer .cancel').bind('click', function() { $('head #colorStyle').attr('href','/css/'+$('.modal .changeTheme.orig').attr('id')); }); $('.clear_recent_searches').bind('click', function() { if (confirm(_langs.clear_recent_searches+' ?')) { var out=clearRecentSearches($(this)); } }); }); $(document).ajaxComplete(function(e,xhr,set) { if (xhr.status == 408) { $('.modal .modal-header .modal-title').text(_langs.session_expired); $('.modal .modal-body').text(_langs.login_again); $('.modal .modal-footer .cancel').addClass('hide'); $('.modal .modal-footer .ok').bind('click', function() { window.location=window.location.pathname; }); $('.modal').modal(); } }); if ($('.nav .user_settings').length>0) { getUserData(); } $('.muteToggle').bind('click', function() { $('.muteToggle.glyphicon-volume-up').toggle(); $('.muteToggle.glyphicon-volume-off').toggle(); var out=userEditData('muteAlarm',$(this).attr('value')); }); function userEditData(param,value) { var out; $.ajax({ url: "/api/v2/userEditData", data: JSON.stringify({ "param" : param, "value" : value }), success: function(res) { out=res; } }); return out; } function clearRecentSearches(el) { var out; $.ajax({ url: "/api/v2/clearRecentSearches", beforeSend: function() { el.removeClass('btn btn-warning').attr('disabled', true); }, success: function(res) { out=res; } }); return out; } }); var _userData; function getUserData() { $.ajax({ url: "/api/v2/getUserData", data: '', success: function(userData) { if (userData.data) { var userDet=userData.data.user; } _userData=userDet; if (userData.data.user.colorTheme != null) { $('head #colorStyle').attr('href','/css/'+userData.data.user.colorTheme); } if (userData.data.user.muteAlarm == 1) { $('.muteToggle.glyphicon-volume-up').toggle(); $('.muteToggle.glyphicon-volume-off').toggle(); } $('input[type=text]._user, input[type=password]._user').each(function(k,v) { var this_el=$(v); var lang_label=userDet[this_el.attr('alt')]; this_el.prop('placeholder', lang_label); }); $('input[type=button]._user, input[type=submit]._user').each(function(k,v) { var this_el=$(v); var lang_label=userDet[this_el.attr('alt')]; this_el.val(lang_label); }); $('div._user, span._user, a._user, label._user').each(function(k,v) { var this_el=$(v); var lang_label=userDet[this_el.attr('alt')]; this_el.html(lang_label); }); } }); } $('ul._lang_switch').delegate('li a', 'click', function() { loadLang($(this).text().toLowerCase()); }); // date from/to $('.navbar .datetimepicker2').datetimepicker({ minDate: moment().add(-1, 'years'), maxDate: 'now', allowInputToggle: true, format: 'YYYY-MM-DD', locale: curr_lng, ignoreReadonly: true, defaultDate: moment() // keepOpen: true }); $(".navbar .datetimepicker2 .date_from").val(moment().subtract(1, 'days').format('YYYY-MM-DD')); }); $.ajaxSetup({ dataType: "json", method: "POST", contentType: "application/json; charset=utf-8", complete: function() { $('.preloader').addClass('hide'); }, error: function(res) { $('.preloader').addClass('hide'); } }); function isJson(text){ if (typeof text !== "string") { return false; } try { var json = JSON.parse(text); return (typeof json === 'object'); } catch (error){ return false; } } function showConnectionLostReload(_langs, why = false) { $('.mainMenu .devicesList li.li_search_for_dev').nextAll().remove(); $('.mainMenu .deviceCount b').html(''); if (why !== false) { $.ajax({ url: "/api/v2/sendServiceEmail", data: JSON.stringify({ "why" : 'modalAlertEvent : ' + why }) }); } $('.modal .modal-header .modal-title').text(_langs.connection_lost); $('.modal .modal-body').html(_langs.need_reload); $('.modal .modal-footer .cancel').addClass('hide'); $('.modal .modal-footer .ok').bind('click', function() { window.location=window.location.pathname; }); $('.modal').modal(); } function wakeUpHideModal() { $('.modal').modal('hide'); $('.modal, .modal-backdrop').hide(); } function loadConf(lng, connectToWs = false, callback) { var ws; var wsTimeout; var _conf; var _langs; var _lng; $.ajax({ url: "/api/v2/loadConf/"+lng, cache: true, beforeSend: function() { $('.preloader').removeClass('hide'); }, complete: function(res) { if (res.status == 200) { $('.preloader').addClass('hide'); res = res.responseJSON; _conf=res.data; _langs=res.data.lang; _lng=res.data.lng; if (connectToWs === true) { // ws = new WebSocket(_conf.socketServerUrl+'?wsa='+_conf.auth); ws = new ReconnectingWebSocket(_conf.socketServerUrl+'?wsa='+_conf.auth, null, { reconnectInterval: 1000, reconnectDecay: 1 }); // re/connect window.addEventListener('online', e => { ws.send('___ping___', { binary: false }); wakeUpHideModal(); clearTimeout(wsTimeout); }); // sleep or disconnect window.addEventListener('offline', e => { wsTimeout = setTimeout(function() { ws.send('___ping___', { binary: false }); showConnectionLostReload(_langs, 'offlineEvent'); }, _conf.socketConnectionCheckIsLiveSecondsTimeOut*1000); }); // wakeup var lastTime = (new Date()).getTime(); setInterval(function() { var currentTime = (new Date()).getTime(); if (currentTime > (lastTime + 1000*2)) { wakeUpHideModal(); ws.send('___ping___', { binary: false }); } lastTime = currentTime; }, 1000); // ping-pong setInterval(function() { ws.send('___ping___', { binary: false }); wsTimeout = setTimeout(function() { ws.send('___ping___', { binary: false }); showConnectionLostReload(_langs); }, _conf.socketConnectionCheckIsLiveSecondsTimeOut*1000); }, _conf.socketConnectionCheckIsLiveSeconds*1000); var reconnectAttemptsCount; ws.onclose = function() { reconnectAttemptsCount = setInterval(function() { if (ws.reconnectAttempts >= 10) { showConnectionLostReload(_langs, 'ws.onclose'); clearInterval(reconnectAttemptsCount); } }, ws.reconnectInterval); } ws.onopen = function() { clearInterval(reconnectAttemptsCount); } var devLis; ws.addEventListener("message", function(message) { clearTimeout(wsTimeout); wakeUpHideModal(); if (isJson(message.data)) { var message=JSON.parse(message.data); var event=Object.keys(message)[0]; var data=Object.values(message)[0]; switch (event) { case 'deviceList': $('.mainMenu .devicesList li.li_search_for_dev').nextAll().remove(); $('.mainMenu .deviceCount b').text('0'); if ( data.length>0 ) { $('.mainMenu .deviceCount b').text(data.length); $('.mainMenu .devicesList li.li_search_for_dev').removeClass('hide').nextAll().remove(); $.each(data, function(k,v) { $('.mainMenu .devicesList li.li_search_for_dev').after('
  • '+v.devID+' - '+todHHMMSS(parseInt(new Date()-new Date(v.connectionDate))/1000, _langs)+'
  • '); }); } clearInterval(devLis); devLis = setInterval(function() { $.each(data, function(k,v) { $('.mainMenu .devicesList li#'+v.id+' i').text(todHHMMSS(parseInt(new Date()-new Date(v.connectionDate))/1000, _langs)); }); }, 1000); break; case 'deviceListAdd': $('.mainMenu .devicesList li.li_search_for_dev').removeClass('hide').after('
  • '+data.devID+' - '+todHHMMSS(parseInt(new Date()-new Date(data.connectionDate))/1000, _langs)+'
  • '); clearInterval(devLis); devLis = setInterval(function() { $.each($('.mainMenu .devicesList li[id]'), function(k,v) { let connData=$(v).find('i').attr('alt'); $(v).find('i').text(todHHMMSS(parseInt(new Date()-new Date(connData))/1000, _langs)); }); }, 1000); $('.mainMenu .deviceCount b').text($('.mainMenu .devicesList li[id]').length); $('#search4connectedDev').trigger('keyup'); break; case 'deviceListDel': $('.mainMenu .devicesList li#'+data.id).fadeOut('', function() { $('.mainMenu .devicesList li#'+data.id).remove(); $('.mainMenu .deviceCount b').text($('.mainMenu .devicesList li[id]').length); }); break; case 'newData': $('.mainMenu .devicesList li.'+data.devID).addClass('blink_fst').find('a').css('color',_conf.mapAlarmColors[data.alarm]); setTimeout(function() { $('.mainMenu .devicesList li.'+data.devID).removeClass('blink_fst'); }, 1000); break; case 'newDataImg': var devID=data.substring(0, data.indexOf('|')); $('.mainMenu .devicesList li.'+devID).addClass('blink_fst'); setTimeout(function() { $('.mainMenu .devicesList li.'+devID).removeClass('blink_fst'); }, 1000); break; } } else if (message.data == "e401") { showConnectionLostReload(_langs, 'authFail e401'); } }); } $('#search4connectedDev').bind('keyup', function() { let searchDev=$(this).val(); var count=0; $('.mainMenu .devicesList li a b').each(function(k,v) { if ($(v).text().toUpperCase().indexOf(searchDev.toUpperCase()) == -1) { $(v).parent().parent().hide(); } else { $(v).parent().parent().show(); count++; } }); if (searchDev != '') { $('#search4connectedDev').parent().find('span').text(count); } else { $('#search4connectedDev').parent().find('span').empty(); } }); renderLang(_langs,_lng); if (typeof callback==="function") { callback(_langs,_conf,ws); } } } }); } function loadLang(lng) { $.ajax({ url: "/api/v2/loadLang/"+lng, cache: true, beforeSend: function() { $('.preloader').removeClass('hide'); }, success: function(langs) { var _langs=langs.data; renderLang(_langs,lng); } }); } function renderLang(langs,lng) { $('input[type=text]._lang, input[type=password]._lang').each(function(k,v) { var this_el=$(v); var lang_label=langs[this_el.attr('alt')]; this_el.prop('placeholder', lang_label); }); $('input[type=button]._lang, input[type=submit]._lang').each(function(k,v) { var this_el=$(v); var lang_label=langs[this_el.attr('alt')]; this_el.val(lang_label); }); $('img._lang').each(function(k,v) { var this_el=$(v); var lang_label=langs[this_el.attr('alt')]; this_el.prop('src', lang_label); }); $('div._lang, span._lang, a._lang, label._lang, button._lang, th._lang, td._lang').each(function(k,v) { var this_el=$(v); var lang_tag=this_el.attr('alt'); var lang_tag_sub=''; if (lang_tag) { if (lang_tag.indexOf('[')>-1) { lang_tag_sub=lang_tag.substr(lang_tag.indexOf('['), lang_tag.length); lang_tag=lang_tag.substr(0, lang_tag.indexOf('[')); eval('var lang_label=langs[lang_tag]'+lang_tag_sub+';'); } else { var lang_label=langs[lang_tag]; } } this_el.html(lang_label); }); $('select._lang.select2').each(function(k,v) { var this_el=$(v); var lang_label=langs[this_el.attr('alt')]; this_el.next("span.select2:first").find("input.select2-search__field").attr('placeholder',lang_label); }); $('._lang.curr_lng').html(lng.toUpperCase()); $.each(langs._langs, function(k,v) { if (v!=lng) { $('ul._lang_switch').empty().append('
  • '+v.toUpperCase()+'
  • '); } }); $('.loading').fadeOut(); } function validateEmail(email) { var re = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,4}))$/; return re.test(String(email).toLowerCase()); } function validateUser(user) { var re=/^[a-zA-Z0-9\_]{6,255}$/; return re.test(String(user)); } function validateParam(param) { var re=/^[a-zA-Z0-9\_]{2,255}$/; return re.test(String(param)); } function validateDev(dev) { var re=/^[A-Z0-9\_]{4,10}$/; return re.test(String(dev)); } function toHHMMSS(total_seconds) { if (total_seconds<0) { total_seconds=0; } var sec_num = parseInt(total_seconds, 10); // don't forget the second param var hours = Math.floor(sec_num / 3600); var minutes = Math.floor((sec_num - (hours * 3600)) / 60); var seconds = sec_num - (hours * 3600) - (minutes * 60); if (hours>0) { if (hours < 10) { hours = "0"+hours+":"; } else { hours = hours+":"; } } else { hours=''; } if (minutes < 10) {minutes = "0"+minutes;} if (seconds < 10) {seconds = "0"+seconds;} return hours+minutes+':'+seconds; } function todHHMMSS(total_seconds,lang) { var days = Math.floor(total_seconds / 86400), hours = (total_seconds-(days*86400)) / 3600, minutes = (hours % 1) * 60, seconds = (minutes % 1) * 60; var time=("00" + Math.floor(hours)).slice(-2)+':'+("00" + Math.floor(minutes)).slice(-2)+':'+("00" + Math.floor(seconds)).slice(-2); if (days>0) { return days +' '+lang.days+', '+time; } else { return time; } } function saveRecentSearches(nosafe=false) { if (!nosafe) { var groups = []; $(".navbar .select_groups option:selected").each(function(){ groups.push($(this).text()); }); $.ajax({ url: "/api/v2/saveRecentSearches", data: JSON.stringify({ "page" : $('input[type=hidden]#_page').val(), "devices" : $(".navbar .select_devices").val(), "groups" : { "val" : $(".navbar .select_groups").val(), "name" : groups }, "params" : $(".navbar .select_parameters").val(), "from_date" : $(".navbar .datetimepicker2 .date_from").val(), "to_date" : $(".navbar .datetimepicker2 .date_to").val(), "params" : $(".navbar .select_parameters").val(), // "smooth" : $(".navbar #smooth").val(), "autoscale" : $(".navbar #autoscale").is(':checked'), // "rought_graph" : $(".navbar #rough-graph").is(':checked'), "displayBy" : $('.navbar .btn-group.displayBy button.btn.sel').attr('alt'), "waveBand" : $('.glyphicon.waveBand.On').is(':visible'), "catch" : $(".navbar #catch").is(':checked'), "bycatch" : $(".navbar #bycatch").is(':checked') }), success: function(res) { } }); } } function loadRecentSearches(devID) { $.ajax({ url: "/api/v2/loadRecentSearches", data: JSON.stringify({ "page" : $('input[type=hidden]#_page').val(), // "device" : $(".navbar .select_devices").val() }), success: function(res) { $('.recent_searches_menu').empty(); $.each(res.data.recentSearches, function(k,v) { var data=v; var li_search='
  • '; if (data.from_date && data.to_date) { li_search+=data.from_date+' | '+data.to_date; } else { li_search+=data.from_date; } if (data.devices.length) { li_search+=' | '; li_search+=data.devices; } if (data.groups.name.length) { li_search+=' | '; li_search+=''+data.groups.name+''; } if (data.params) { if (data.params.length) { li_search+=' | '; li_search+=data.params } } li_search+='
  • '; li_search+=''; $('.recent_searches_menu').append(li_search); }); $('.recent_searches_menu li:last-child').remove(); if (devID) { var li=$('.recent_searches_menu li a:contains("| '+devID+' |")').parent().prop('id'); if (li) { setTimeout(function() { $('.recent_searches_menu li#'+li+'').trigger('click'); }, 10); } else { $(".navbar .select_devices").html('').val(devID).trigger('change').trigger('select2:select'); $.ajax({ url: "/api/v2/searchParams", dataType: "json", data: JSON.stringify({ "devices" : [devID], "groups": [], "searchStr" : "" }), method: "POST", success: function(res) { var firstParams=res.data.params[0]; $(".navbar .select_parameters").html('').val(Object.keys(firstParams)[0]).trigger('change').trigger('select2:select'); setTimeout(function() { $(".navbar .datetimepicker2 .date_from").val(moment().subtract(1, 'days').format('YYYY-MM-DD')); }, 10); $(".reports .navbar .do_chart").trigger('click'); } }); } } $('.recent_searches_menu li').bind('click', function() { var this_li=$(this); var id=this_li.prop('id'); var data=res.data.recentSearches[id]; // tracks $(".navbar #catch").prop('checked', data.catch); $(".navbar #bycatch").prop('checked', data.bycatch); // common $(".navbar .select_devices").html(data.devices.map(name=>'')).val(data.devices);//.trigger('change');//.trigger('select2:select'); $(".navbar .select_groups").html(data.groups.name.map(function(name,i) { return ''; } )).val(data.groups.val);//.trigger('change');//.trigger('select2:select'); $(".navbar .datetimepicker2 .date_from").val(data.from_date).trigger('dp.change'); $(".navbar .datetimepicker2 .date_to").val(data.to_date).trigger('dp.change'); // reports & table if ($(".navbar .select_parameters").length>0) { setTimeout(function() { $(".navbar .select_parameters").html(data.params.map(name=>'')).val(data.params);//.trigger('change').trigger('select2:select'); $(".navbar #smooth").val(data.smooth), $(".navbar #autoscale").prop('checked', data.autoscale); $(".navbar #rough-graph").prop('checked', data.rought_graph); $('.navbar .btn-group.displayBy button.btn').removeClass('sel'); if (data.waveBand === true) { $('.glyphicon.waveBand.On').css('display', 'inline'); $('.glyphicon.waveBand.Off').css('display', 'none'); } else { $('.glyphicon.waveBand.On').css('display', 'none'); $('.glyphicon.waveBand.Off').css('display', 'inline'); } $('.navbar .btn-group.displayBy button.btn[alt="'+data.displayBy+'"]').addClass('sel').trigger('click'); $(".reports .navbar .do_chart").trigger('click', true); $(".reportsTable .navbar .do_table").trigger('click', true); }, 10); } }); check_do_chart(); } }); } function check_do_chart() { if ($('.reports').length>0) { if ($('.navbar .select_devices').val().length>0 || $('.navbar .select_groups').val().length>0) { $('.navbar .select_parameters').prop('disabled', false); if ($('.navbar .select_parameters').val().length>0) { $(".navbar .do_chart").prop('disabled', false); return true; } else { $(".navbar .do_chart").prop('disabled', true); return false; } } else { setTimeout(function() { $('.navbar .select_parameters').val(null).prop('disabled', true).trigger('change').trigger('select2:select'); $(".navbar .do_chart").prop('disabled', true); return false; }, 0); // agains maximum call exceed exception } } else if ($('.reportsTable').length>0) { if ($('.navbar .select_devices').val().length>0) { $('.navbar .select_parameters').prop('disabled', false); if ($('.navbar .select_parameters').val().length>0) { $(".navbar .do_table").prop('disabled', false); return true; } else { $(".navbar .do_table").prop('disabled', true); return false; } } else { setTimeout(function() { $('.navbar .select_parameters').val(null).prop('disabled', true).trigger('change').trigger('select2:select'); $(".navbar .do_table").prop('disabled', true); return false; }, 0); // agains maximum call exceed exception } } } function delay(callback, ms=500) { var timer = 0; return function() { var context = this, args = arguments; clearTimeout(timer); timer = setTimeout(function () { callback.apply(context, args); }, ms || 0); }; } function escapeHtml(text) { return text .replace(/&/g, "&") .replace(//g, ">") .replace(/"/g, """) .replace(/'/g, "'"); } function isMobile() { let check = false; (function(a){if(/(android|bb\d+|meego).+mobile|avantgo|bada\/|ipad|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(a)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(a.substr(0,4))) check = true;})(navigator.userAgent||navigator.vendor||window.opera); return check; }; function dateStr(frmt=false) { var date = new Date(); var year = date.getFullYear(); var month = date.getMonth()+1; month = (month < 10 ? '0' : '')+month; var day = date.getDate(); day = (day < 10 ? '0' : '')+day; var hours = date.getHours(); hours = (hours < 10 ? '0' : '')+hours; var minutes = date.getMinutes(); minutes = (minutes < 10 ? '0' : '')+minutes; var seconds = date.getSeconds(); seconds = (seconds < 10 ? '0' : '')+seconds; if (frmt) { var data = year+'-'+month+'-'+day+' '+hours+':'+minutes+':'+seconds; } else { var data = year+''+month+''+day+''+hours+''+minutes+''+seconds; } return data; }