let messages;
var language = "AUTO";
let index_info;
///Change language///
let currentLangFile = '';
function loadLanguage(language) {
const langFile = `/js/langu/${language === "AUTO" ? checkUserLang() : language}.js`;
sessionStorage.setItem("lang", language === "AUTO" ? "AUTO" : language);
const langURL = window.location.origin + langFile;
if (currentLangFile !== langURL) {
if (currentLangFile) removeOldLanguageFile(currentLangFile);
loadScript(langURL).then( ()=>{
messages = langObj;
console.log('loadLanguage done');
login_changeLanguage();
});
} else {
login_changeLanguage();
}
}
function loadScript(url) {
return new Promise((resolve, reject) => {
const script = document.createElement("script");
script.src = url;
script.type = "text/javascript";
script.async = true;
script.onload = () => resolve(`Script loaded: ${url}`);
script.onerror = () => reject(new Error(`Failed to load script: ${url}`));
document.head.appendChild(script);
});
}
function checkUserLang() {
const userLangMap = {
"zh-TW": "TCH", "zh-CN": "SCH", "cs": "CZE", "da": "DAN", "nl": "DUT", "fi": "FIN",
"fr": "FRE", "de": "GER", "el": "GRK", "hu": "HUN", "it": "ITA", "ja": "JPN", "ko": "KOR",
"no": "NOR", "pl": "POL", "pt": "POR", "ro": "ROM", "ru": "RUS", "sv": "SWE", "th": "THA", "tr": "TUR"
};
const langCode = userLangMap[navigator.language] || userLangMap[navigator.language.split('-')[0]] || "EN";
return langCode;
}
function login_changeLanguage() {
const elementsToTranslate = document.querySelectorAll('[langId]');
const languageData = messages;
elementsToTranslate.forEach(element => {
const key = element.getAttribute('langId');
if (languageData[key]) element.innerHTML = languageData[key];
});
$(".account-user-password").attr("placeholder", messages['login__passwordText']);
}
///End Change language///
function checkLoginStatus(count) {
if(count-- < 0 )
{
$(".div-err-msg").removeClass("hide").text(messages['login__authorizedError']);
return ;
}
$.ajax({
url: './cgi/get.cgi?cmd=home_loginStatus',
type: 'GET',
dataType: 'json',
timeout:5000,
success: (response) => {
if (response.data.status == "fail") {
$(".div-err-msg").removeClass("hide").text(messages['login__authorizedError']);
} else if (response.data.status == "ok") {
response.data.default?$('.popup_dialog.syspassword').removeClass('hide'):window.location.href = './home.html';
} else {
setTimeout(checkLoginStatus, 1000,count);
}
},
error: () => {
console.log("get login status failed");
setTimeout(checkLoginStatus, 1000,count);
}
});
}
function loginClick() {
let str = ""
let oldPwd = $('#loginForm input#password')[0].value;
str = paramAppend("", "username", "admin");
str = paramAppend(str, "password", encodeURIComponent(oldPwd));
str = paramAppend(str, "priv", 15);
let formData = genPOST_FormData(str);
$.ajax({
url: "/cgi/set.cgi?cmd=home_loginAuth",
type: 'POST',
data: JSON.stringify(formData),
dataType: "json",
success: (res) => {
//console.log(res);
//console.log("sent login success");
setTimeout(checkLoginStatus, 200 ,3);
},
error: () => {
console.log("sent login failed");
},
complete: () => {
},
});
}
function get_basicInfo() {
function get_basicInfo_cb(jsonObj) {
if(jsonObj.data.hostname)
document.title = jsonObj.data.hostname
else if(jsonObj.data.modelName)
document.title = jsonObj.data.modelName
if (jsonObj.data.fwVer)
{
if (localStorage.index_info == JSON.stringify(jsonObj.data)) {
index_info = jsonObj.data;
return;
}
else {
localStorage.index_info = JSON.stringify(jsonObj.data);
}
}
//window.location.reload(true);
}//get_basicInfo_cb
$.ajax({
url: '/cgi/get.cgi?cmd=sys_sysinfo_non_Login',
type: 'GET',
dataType: 'json',
success: (response) => {
get_basicInfo_cb(response);
},
error: () => {
console.log("get sys_sysinfo_non_Login failed");
}
});
}//get_basicInfo
function add_index_loading(e, type, msg) {
let div;
switch (type) {
case "other_msg":
div = '
';
break;
}
$(e).find('div.loading_bg').length==0?$(e).prepend(div):null;
msg?$(e).find('div.loading_bg').find('div.loading_text').html(msg):null;
}
function remove_loading(div) {
$(div).find(".loading_bg").remove();
}
function varify_new_password(){
function password_test(string) {
//const pwd_regex = new RegExp("^[A-Za-z\d~!@#$%^&*()_+=\-`[\]\\{}|;':",./<>? ]{8,20}$");
//return/^ [A - Za - z\d~!@#$ %^&* ()_ +=\-`[\]\\{}|;':",./<>? ]{0,20}$/
return /^[A-Za-z\d~!@#$%^&*()_+=\-`[\]\\{} |; ':",./<>? ]{8,20}$/.test(string)
}//password_test
let anyError = 0;
let errMsg = messages.errorMessage__password;//default error string
let newPwd = $('.syspassword [name="new_pwd"]')[0].value;
let cfmPwd = $('.syspassword [name="Password2"]')[0].value;
$('.syspassword .new_pwd .errorMessage').addClass("invisible");
$('.syspassword .new_pwd_comfirm .errorMessage').addClass("invisible");
/* new pwd */
if (password_test(newPwd) != true) {
anyError = 1;
$('.syspassword .new_pwd .errorMessage').text(errMsg);
$('.syspassword .new_pwd .errorMessage').removeClass("invisible")
}
/* comfirm pwd */
if (password_test(cfmPwd) != true) {
anyError = 1;
$('.syspassword .new_pwd_comfirm .errorMessage').text(errMsg);
$('.syspassword .new_pwd_comfirm .errorMessage').removeClass("invisible")
}
else if (newPwd != cfmPwd) {
anyError = 1;
$('.syspassword .new_pwd_comfirm .errorMessage').text(messages.systemPwd__notMatch);
$('.syspassword .new_pwd_comfirm .errorMessage').removeClass("invisible")
}
/* apply button */
if (anyError) {
$('.syspassword .modal-footer .q-button').attr("disabled", "disabled");
} else {
$('.syspassword .modal-footer .q-button').removeAttr("disabled");
}
return anyError;
}
function set_index_new_pwd() {
function set_index_new_pwd_add_loading(countdownSec){
if(countdownSec === 0)
return remove_loading("#app", "other_msg");
let msg = messages.header__logout + " " + countdownSec;
add_index_loading("#app", "other_msg" , msg );
setTimeout( set_index_new_pwd_add_loading , 1000 , countdownSec-1 );
}
let str = ""
let oldPwd = $('#loginForm input#password')[0].value;
let newPwd = $('.syspassword [name="new_pwd"]')[0].value;
str = paramAppend("", "userName", "admin");
if(varify_new_password() != 0 )
return ;
str = paramAppend(str, "old_password", encodeURIComponent(oldPwd));
str = paramAppend(str, "password", encodeURIComponent(newPwd));
str = paramAppend(str, "priv", 15);
let formData = genPOST_FormData(str);
$.ajax({
url: '/cgi/set.cgi?cmd=sys_acctEdit',
type: 'POST',
data: JSON.stringify(formData),
processData: false,
contentType: false,
dataType: "json",
success: (res) => {
console.log(res);
if (res.status == "ok") {
set_index_new_pwd_add_loading(5);
setTimeout(index_logout, 5000)
}
else if(res.msg) {
$('.syspassword .new_pwd_comfirm .errorMessage').text(res.msg);
$('.syspassword .new_pwd_comfirm .errorMessage').removeClass("invisible");
}
},
error: () => {
$('.syspassword .new_pwd_comfirm .errorMessage').text("set_index_new_pwd fail");
$('.syspassword .new_pwd_comfirm .errorMessage').removeClass("invisible");
},
complete: () => {
},
});
}//set_index_new_pwd
function index_logout(new_ip) {
function logout_cb(new_ip) {
if(new_ip){
//console.log("goto :" + new_ip );
window.location = new_ip;
}
else{
window.location.href = "/";
}
}
let str = ""
let formData = genPOST_FormData(str);
$.ajax({
url: '/cgi/set.cgi?cmd=home_logout',
type: 'POST',
data: JSON.stringify(formData),
processData: false,
contentType: false,
timeout: 20000,
success: (res) => {
let jsonObj = JSON.parse(res);
if (jsonObj["status"] == "ok") {
console.log("logout ok");
}
},
error: () => {
console.log("logout fail");
},
complete: () => {
logout_cb(new_ip);
},
});
}//index_logout
function ready_init(){
//history.pushState({}, "", "/");
get_basicInfo();
langObj?(messages=langObj):null;
if (localStorage.language) {
language = localStorage.language;
}
loadLanguage(language);
localStorage.removeItem('chek_fw_new_when_doc_ready');
}
function varify_login_password()
{
const regex = /^[A-Za-z\d~!@#$%^&*()_+=\-`[\]\\{} |; ':",./<>? ]{8,20}$/;
el = $('[name="password"]');
if( el && regex.test(el.val()) ){
$('#loginForm .div-err-msg').addClass('hide');
return true;
}
else{
$('#loginForm .div-err-msg').html(messages.login__authorizedError);
$('#loginForm .div-err-msg').removeClass('hide');
return false;
}
}//varify_login_password
$(document).ready(function () {
ready_init();
/* Login */
$('.content').on('click', '#btnLogin', function () {
varify_login_password()?loginClick():null;
});
$('.content').on("keydown", '[name="password"]', function (event) {
//console.log("event.keyCode: " + event.keyCode);
if (event.keyCode == 13 ) {
varify_login_password()?loginClick():null;
}
else {
$('#loginForm .div-err-msg').addClass('hide');
}
});
$('.content').on('click', '.checkbox', function () {
if ($('.content .checkbox').hasClass('checked') === false) {
$('.content .checkbox').addClass('checked');
}
else { //default
$('.content .checkbox').removeClass('checked');
}
});
$('.syspassword, .login_pwd').on('click', '.div-password-eye.icon-view', function (e) {
let inputField = $(this).closest('div').find(".form-control, .account-user-password");
if (inputField.attr("type") === "text") {
inputField.attr("type", "password");
} else {
inputField.attr("type", "text");
}
$(this).toggleClass("active");
});
$('.syspassword').on("input propertychange", 'input', function () {
varify_new_password();
});
$('.syspassword').on('click', '.modal-footer .q-button', function (e) {
console.log("click")
if(varify_new_password)
set_index_new_pwd();
});
$('.account-user-password').on('focus', function() {
$(".div-password-eye.icon-view").removeClass("hide");
});
$('.account-user-password').on('blur', function() {
setTimeout(function() {
if (!$(".div-password-eye.icon-view").is(":focus")) {
$(".div-password-eye.icon-view").addClass("hide");
}else{
$(this).addClass("hide");
}
}, 0);
});
$('.div-password-eye.icon-view').on('mousedown', function(e) {
let LogInPwdInput = $('.account-user-password');
LogInPwdInput.onblur = null;
setTimeout(function() {
LogInPwdInput.focus();
LogInPwdInput.onblur = blur;
}, 1);
});
})//document.ready