// 是否登录的变量
let _userInfo = getStorage('userInfo') ? getStorage('userInfo') : '';
// 懒加载
function lazyLoad(preloadHeight = 1000) {
	const elements = document.querySelectorAll('[data-original]');
	const type = judgeClient();
	const loadImage = function (element) {
		if (element.nodeName == 'IMG' || element.nodeName == 'IFRAME') {
			if (element.src) {
				element.src = element.getAttribute('data-original');
			} else {
				element.setAttribute('src', element.getAttribute('data-original'))
			}
			element.addEventListener('load', function () {
				element.removeAttribute("data-original");
			})
		} else {
			const datasrc = element.getAttribute('data-original');
			if (!datasrc.includes('`')) {
				element.style.backgroundImage = "url(" + element.getAttribute('data-original') + ")";
			} else {
				const srcArr = datasrc.split('`');
				let bgStr = '';
				srcArr.forEach(item => {
					bgStr += "url(" + item + "),"
				})
				bgStr = bgStr.substring(0, bgStr.lastIndexOf(','));
				element.style.backgroundImage = bgStr;
			}

			if (datasrc.includes('---')) {
				var srcArr = datasrc.split('---');
				if (type === 'pc') {
					element.style.backgroundImage = "url(" + srcArr[0] + ")";
				} else {
					element.style.backgroundImage = "url(" + srcArr[1] + ")";
				}
			}

			element.addEventListener('load', function () {
				element.removeAttribute("data-original");
			})
		}
	}
	let intersectionObserver = new IntersectionObserver(function (elements, observer) {
		elements.forEach(function (element) {
			if (element.isIntersecting) {
				loadImage(element.target);
				observer.unobserve(element.target);
			}
		});
	}, {
		rootMargin: `0px 0px ${preloadHeight}px 0px`,
	});
	elements.forEach((element) => {
		intersectionObserver.observe(element);
	})
}
// 获取浏览器语言
function userAgentLocale() {
	const browserLang = navigator.language.toLowerCase().substr(0, 2);
	let locale = '';
	const supportedLocale = ['en', 'fr', 'de', 'es', 'ar', 'it', 'pt'];
	for (let i = 0; i < supportedLocale.length; i++) {
		if (supportedLocale[i] === browserLang) {
			locale = supportedLocale[i];
			break;
		} else {
			locale = 'en';
		}
	}
	return locale;
}

// 取当前页面名称(不带参数)
function getPageName() {
	var a = location.href;
	var b = a.split("/");
	var c = b.slice(b.length - 1, b.length).toString(String).split("?") || b.slice(b.length - 1, b.length).toString(String).split("&");
	return c.slice(0, 1);
}

// 获取 URL 里的参数
function getUrlParam(name) {
	var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
	var r = window.location.search.substr(1).match(reg);
	if (r != null) return encodeURI(r[2]);
	return null;
}

// 获取url参数2
function getQueryVariable(variable) {
	let query = window.location.search.substring(1);
	let vars = query.split("&");
	for (let i = 0; i < vars.length; i++) {
		let pair = vars[i].split("=");
		if (pair[0] == variable) { return pair[1]; }
	}
	return (false);
}

// 解密
function decodeParams(e) {
	e = (e.indexOf("%") != -1) ? decodeURIComponent(e) : e
	return Base64.btou(getXor(Base64.atob(e), "ax40oznp8sowqnnc06mfy0ngz2y6rlbv"));
}
// 加密
function encryptionParams(e) {
	return Base64.btoa(getXor(Base64.utob(e), "ax40oznp8sowqnnc06mfy0ngz2y6rlbv"));
}

// xor 解密
function getXor(decodeStr, key) {
	var strlength = decodeStr.length;
	const keylength = key.length;
	let decryptStr = ''
	for (let index = 0; index < strlength; index++) {
		let m = index % keylength;
		const n = decodeStr.charCodeAt(index) ^ key.charCodeAt(m);
		decryptStr += String.fromCharCode(n);
	}
	return decryptStr;
}

// 检测开头和结尾的空格
function myTrim(str) {
	//return str.replace(/^\s+/,"").replace(/\s+$/,"");
	if (String.prototype.trim) {
		return str.trim();
	} else {
		return str.replace(/^\s+/, "").replace(/\s+$/, "");
	}
}

// 补全 0
function formatZeroNum(num, length) {
	length = length ? length : 2
	return (Array(length).join("0") + num).slice(-length);
}

// 检测 URL 地址里是否含有某个参数
function GetUrlQueryString(name) {
	var reg = eval("/" + name + "/g");
	var r = window.location.search.substr(1);
	var flag = reg.test(r);
	if (flag) {
		return true;
	} else {
		return false;
	}
}

// 使用 localStorage 保存数据
function getStorage(name) {
	var nameStorage = localStorage.getItem(name);
	var result = null;
	var cartList = [];
	if (name === 'GetInsta_cartList') {
		if (!nameStorage) {
			result = null;
		} else {
			result = !JSON.parse(nameStorage).value.length ? null : JSON.parse(nameStorage).value;
		}
	} else {
		if (!nameStorage || nameStorage === 'null' || nameStorage === null) {
			result = null;
		} else {
			result = typeof nameStorage === 'number' || name === 'textareaVal' || name === 'user_account' || name === 'token' || name === 'end_cursor' ? nameStorage : JSON.parse(nameStorage);
		}
	}
	return result;
}

// 设置cookie
function setCookie(cname, cvalue, exdays) {
	let d = new Date();
	d.setTime(d.getTime() + (exdays * 24 * 60 * 60 * 1000));
	let expires = "expires=" + d.toGMTString();
	document.cookie = cname + "=" + cvalue + ";expires=" + expires +
		";path=/;domain=.itopvpn.com";
}

//获取cookie
function getCookie(cname) {
	let name = cname + "=";
	let ca = document.cookie.split(';');
	for (let i = 0; i < ca.length; i++) {
		let c = ca[i].trim();
		if (c.indexOf(name) == 0) { return c.substring(name.length, c.length); }
	}
	return "";
}

// 使用 localStorage  读取数据
function setStorage(name, param) {
	if (typeof param === 'number' || typeof param === 'string') {
		localStorage.setItem(name, param);
	} else if (name === 'GetInsta_cartList') {
		var arr = {
			"value": param,
			"ttl": 0
		}
		localStorage.setItem(name, JSON.stringify(arr));
	} else {
		localStorage.setItem(name, JSON.stringify(param));
	}
}

// 使用 localStorage 删除数据
function removeStorage(name) {
	if (!name) {
		localStorage.clear();
	} else {
		localStorage.removeItem(name);
	}
}

// 使用 localStorage 删除多条数据
function removeMulStorage(mulname) {
	if (mulname.indexOf(',') == -1) {
		localStorage.removeItem(mulname);
	} else {
		var mulnameArr = mulname.split(',');
		mulnameArr.forEach(function (item) {
			localStorage.removeItem(item);
		})
	}
}

// 判断访问设备的类型
function getDeviceType() {
	var sUserAgent = navigator.userAgent.toLowerCase();
	var res;
	if (/ipad|iphone|midp|rv:1.2.3.4|ucweb|android|windows ce|windows mobile/.test(sUserAgent)) {
		res = true;
	} else {
		res = false;
	}
	return res;
}

// 格式化时间
function formateDate(time) {
	time = time * 1000;
	var date = new Date(time);
	Y = date.getFullYear() + '-';
	M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '-';
	D = date.getDate() + ' ';
	h = date.getHours() + ':';
	m = date.getMinutes() + ':';
	s = date.getSeconds();
	return Y + M + D;
}

function formatScoecond(second) {
	const hours = Math.floor((second % 86400) / 3600);
	return hours;
}

function datapost(param) {
	var params = JSON.stringify(param);
	let key = '5jd4yen6qbj9z8vw1bvmw1egua08qoxfx07thotfk9ni72sualcpylsidpc2364h';
	var hash = CryptoJS.HmacSHA256(params, key);
	return {
		signed_body: hash + '.' + params,
		sign_version: 1,
	}
}

function deleteCache() {
	localStorage.removeItem('token');
}

// function jqPostAjaxPromise(param) {
// 	// var globalApi = getApiUrl();
// 	// const url = globalApi + '/api' + param.url;
// 	// var globalApi = "https://www.itopvpn.com";
// 	const url = param.url;
// 	return new Promise(function (resolve, reject) {
// 		$.ajax({
// 			url: url,
// 			type: param.type || 'get',
// 			data: param.data || '',
// 			cache: false,
// 			async: false,
// 			success: function (data) {
// 				// $('.mark').hide();
// 				resolve(data);
// 			},
// 			error: function (error) {
// 				// $('.mark').hide();
// 				reject(error)
// 			}
// 		});
// 	}).catch((e) => { });
// }

// ajax-callback
// var userTtoken = getStorage('user_token') ? getStorage('user_token') : '';
// console.log(userTtoken);
function ajaxCallback(request, callback) {
	let lang = $('html').attr('lang') ? $('html').attr('lang') : "www";
	// let href = "https://" + lang + ".itopvpn.com/";
	let href = location.host.includes("itopvpn.com") ? "https://" + lang + ".itopvpn.com/" : "http://192.168.6.72:8001/vpn_web_de/";
	//let href = location.host.includes("itopvpn.com") ? "https://" + lang + ".itopvpn.com/" : "http://192.168.7.34:8088/";
	if (typeof callback === 'function') {
		$.ajax({
			url: href + request.url,
			type: request.type,
			data: JSON.stringify(request.data) || {},
			contentType: "application/json;charset=UTF-8",
			dataType: "json",
			headers: { 'Authorization': request.headers } || {},
			// headers: { Authorization: request.token },
			success: function (data) {
				callback(data)
			},
			error: function (err) {
				callback(err)
			}
		});
	}
}

// 判断设备类型
function judgeClient() {
	let client = '';
	if (/(iPhone|iPad|iPod|iOS)/i.test(navigator.userAgent)) {
		client = 'ios';
	} else if (/(Android)/i.test(navigator.userAgent)) {
		client = 'android';
	} else {
		client = 'pc';
	}
	return client;
}

// 获取 URL 地址最后一个斜杠前的地址
// function getUrlHost() {
// 	var url = window.location.href;
// 	var index = url.lastIndexOf("\/");
// 	str = url.substring(0, index + 1);
// 	return str;
// 	window.location.href = "/login";
// }

// 邮箱的格式严格验证
function isEmails(value) {
	var emails = [
		"gmail.com",
		"hotmail.com",
		"yahoo.com",
		"gamil.com",
		"email.com",
		"fear.com",
		"outlook.com",
		"icloud.com",
		"smlmail.com",
		"mailboxt.com",
		"mail.com",
		"mail.ru",
		"live.com",
		"yahoo.com.br",
		"hotmail.es",
		"yahoo.com.tw",
		"qq.com",
		"outlook.es",
		"yopmail.com",
		"gmail.com.br",
		"yahoo.co.id",
		"ttirv.net",
		"hotmail.fr",
		"ymail.com",
		"yandex.com",
		"outlook.fr",
		"bol.com.br",
		"rediffmail.com",
		"bk.ru",
		"brave.com",
		"outlook.com.br",
		"hotmail.com.br",
		"yahoo.in",
		"alrmail.com",
		"facebook.com",
		"live.fr",
		"googlemail.com",
		"msn.com",
		"yahoo.fr",
		"me.com",
		"163.com",
		"126.com"
	], emailh = value.split('@')[1];
	if (emails.indexOf(emailh) == -1) {
		return false;
	} else {
		return true;
	}
}

// 点击下载后，跳转到 thankyou-download
function gotoThankyou(e) {
	var _downHref = e.attr("data-href");
	if (window.innerWidth <= 768) {
		window.open(_downHref, '_self');
	} else {
		var params = '',
			idx = window.location.href.indexOf('?')
		pageName = getPageName();
		if (idx !== -1) {
			params = window.location.href.slice(idx)
		}
		window.open(_downHref, 'openWindow', '');
		window.location.href = '/thankyou-download' + params;
		// 保存当前页面
		setStorage('pageName', pageName);
		// setTimeout(gotoIndex('/thankyou-download'), 300);
		// console.log(e.attr("data-href"));
		// var _downHref = e.attr("data-href");
		// window.open(_downHref, "/thankyou-download");
		// // console.log(_downHref);
		// window.location.href = _downHref;
		// setTimeout(function () {
		// 	window.open("/thankyou-download", "_self");
		// 	// window.location.href = _downHref;
		// 	// window.location.href = 'http://127.0.0.1:90/vpn_web/thankyou-download';
		// 	//window.location.hash = 'http://127.0.0.1:90/vpn_web/thankyou-download';
		// }, 1200);
	}
}

function gotoThankyouURL(e, url) {
	var _downHref = e.attr("data-href");
	if (window.innerWidth <= 768) {
		window.open(_downHref, '_self');
	} else {
		var params = '',
			idx = window.location.href.indexOf('?')
		pageName = getPageName();
		if (idx !== -1) {
			params = window.location.href.slice(idx)
		}
		window.open(_downHref, 'openWindow', '');
		window.location.href = url + params;
		// 保存当前页面
		setStorage('pageName', pageName);
	}
}

// 获取session Storage
function getSessionStorage(name) {
	var nameStorage = window.sessionStorage.getItem(name);
	if (!nameStorage || nameStorage === 'null' || nameStorage === null) {
		return false;
	}
	return nameStorage;
}

// 保存 session storage
function setSessionStorage(name, param) {
	if (typeof param === 'number' || typeof param === 'string') {
		window.sessionStorage.setItem(name, param);
	} else {
		window.sessionStorage.setItem(name, JSON.stringify(param));
	}
}

// 进入页面判断是否有 ref 参数
saveRefParam()
function saveRefParam() {
	var _ref = getUrlParam('ref'),
		pageName = getPageName()[0],
		pageRefName = getSessionStorage('pageRefName');
	if (_ref && !pageRefName && pageName !== 'blackfriday') {
		setSessionStorage('pageRefName', _ref);
	}
}
// 点击购买时，判断 ref 参数
function gotoPurchase(e) {
	var _href = e.attr("data-href"),
		refName = getUrlParam('ref', _href.substring(_href.indexOf('?'))),
		pageName = getPageName(_href)[0],
		pageRefName = getSessionStorage('pageRefName');
	if (pageName === 'blackfriday') {
		window.location.href = updateUrlParam(_href, 'ref', refName);
	} else {
		if (refName && !pageRefName) {
			setSessionStorage('pageRefName', refName);
			window.location.href = updateUrlParam(_href, 'ref', refName);
		} else {
			window.location.href = updateUrlParam(_href, 'ref', pageRefName);
		}
	}
}

// 在url中添加参数
function updateUrlParam(url, key, value) {
	if (!value) {
		return url;
	}
	var re = new RegExp("([?&])" + key + "=.*?(&|$)", "i");
	var separator = url.indexOf('?') !== -1 ? "&" : "?";
	if (url.match(re)) {
		return url.replace(re, '$1' + key + "=" + value + '$2');
	}
	else {
		return url + separator + key + "=" + value;
	}
}

// 购买时验证邮箱
var purchase_validator = new Validator(),
	purchase_e_result = false;
function emailPurchaseCheck(name, type, err) {
	var purchase_e_value = myTrim($(name + " ._input").val());
	purchase_e_result = purchase_validator.isEmail(purchase_e_value);
	if (purchase_e_result === true) {
		$(name + " .err-box").html(tipswords[0]["email"][type]).removeClass("error");
	} else {
		$(name + " .err-box").html(tipswords[0]["email"][type]).addClass("error");
	}
	if (purchase_e_value === "") {
		$(name + " .err-box").html(tipswords[0]["email"][err]).addClass("error");
	}

	// if (email_result === true) {
	// 	return true;
	// } else {
	// 	return false;
	// }
}
function validateEmail(email) {
	var reg = /^[A-Za-z0-9]+([_\.][A-Za-z0-9]+)*@([A-Za-z0-9\-]+\.)+[A-Za-z]{2,6}$/;
	return reg.test(email);
}


// 点击购买后向后台发送邮箱
// let getOrderLink = {
// 	product_id: param.proId,
// 	email: param.email,
// 	ref: param.ref,
// 	device_id: "",
// 	origin: "web",
// 	channel: "web",
// 	client_type: 2,
// }
// function buylinkJump(params) {
// 	ajaxCallback({
// 		url: 'api/goto-pay',
// 		type: 'post',
// 		data: params,
// 	}, function (res) {
// 		if (res.status === 'ok') {
// 		}
// 	});
// }

// 验证用户信息
// 判断 mkvip 邮箱
// 10 -> mkvip
// expire -> 1是过期 0是没过期
function requestEmailInfo(params, callback) {
	ajaxCallback({
		url: 'api/get-user-info',
		type: 'post',
		data: params
	}, function (res) {
		if (!res.data) return;
		callback && callback(res.data);
	});
}

// 获取产品信息
let product_info = [];
function getProductInfo(name, num, key) {
	ajaxCallback({
		url: 'api/products',
		type: 'post',
		//data: { key },
		data: { platform_key: key || "" } // platform_key = ac-register --- ac-register
	}, function (res) {
		// console.log(res);
		if (res.status === 'ok') {
			product_info = eval(res.data.subscribe_info);
			// console.log(res);
			if (num === 1) { // 1 代表是 purchase 的促销产品
				$(name + " .product-sixmon").attr({
					"data-id": product_info[1].id,
					"data-total": product_info[1].product_price
				});
				$(name + " .product-onemon").attr({
					"data-id": product_info[0].id,
					"data-total": product_info[0].product_price
				});
				$(name + " .product-year").attr({
					"data-id": product_info[2].id,
					"data-total": product_info[2].product_price
				});
				if ($(name + " .submit-box .button-link").hasClass("submit-btn")) {
					$(name + "  .submit-box .button-link").attr({
						"data-id": product_info[2].id,
						"data-total": product_info[2].product_price
					});
				}
			} else {
				// $(name + " .product-sixmon").attr("data-id", product_info[0].id);
				// $(name + " .product-onemon").attr("data-id", product_info[2].id);
				// $(name + " .product-year").attr("data-id", product_info[1].id);

				$(name + " .product-sixmon").attr({
					"data-id": product_info[0].id,
					"data-total": product_info[0].product_price
				});
				$(name + " .product-onemon").attr({
					"data-id": product_info[2].id,
					"data-total": product_info[2].product_price
				});
				$(name + " .product-year").attr({
					"data-id": product_info[1].id,
					"data-total": product_info[1].product_price
				});

				if ($(name + " .button-link").hasClass("submit-btn")) {
					$(name + " .button-link").attr({
						"data-id": product_info[1].id,
						"data-total": product_info[1].product_price
					});

				}
			}
		} else {
			console.log("error");
		}
	});
}

// 显示产品信息
// function showProductInfo() {
// 	var _pagename = getPageName();
// 	// console.log(_pagename);
// 	if (_pagename == "what-is-my-ip") {
// 		getProductInfo("#commodity .pro_lsit", 1, 'purchase');
// 		$(".itop-ad").remove();
// 	} else if (_pagename == "purchase") {
// 		getProductInfo("body.purchase", 1, 'purchase');
// 		$(".itop-ad").remove();
// 	} else if (_pagename == "pricing") {
// 		getProductInfo("body.pricing", 0, '');
// 		$(".itop-ad").remove();
// 	} else if (_pagename == "purchaseb") {
// 		$(".itop-ad").remove();
// 	}
// 	// switch (_pagename) {
// 	// 	case "what-is-my-ip":
// 	// 		console.log(_pagename);
// 	// 		// getProductInfo("#commodity .pro_lsit");
// 	// 		break;
// 	// }
// }
function showProductInfo() {
	if ($("body").hasClass("what-is-my-ip")) {
		getProductInfo("#commodity .pro_lsit", 1, 'purchase-de');
		$(".itop-ad").remove();
	} else if ($("body").hasClass("purchase")) {
		getProductInfo("body.purchase", 1, 'purchase-de');
		$(".itop-ad").remove();
	} else if ($("body").hasClass("pricing")) {
		getProductInfo("body.pricing", 0, '');
		$(".itop-ad").remove();
	} else if ($("body").hasClass("purchaseb")) {
		$(".itop-ad").remove();
	} else if ($("body").hasClass("purchasec")) {
		$(".itop-ad").remove();
	}
}

// 获取购买链接后跳转到购物车
function purchaseBuylink(params, callback) {
	// console.log(params);
	ajaxCallback({
		url: 'api/goto-pay',
		type: 'post',
		data: params,
		// headers: { 'Authorization': params.token },
	}, function (res) {
		if (!res.data) return;
		callback && callback(res.data);
		// console.log(res);
		// if (res.status === 'ok') {
		// 	console.log(res.data.post_params);
		// 	// window.location.href = res.data.url;
		// } else {
		// 	console.log("error!");
		// }
	});
}

// 补全 0
function formatZeroNum(num, length) {
	length = length ? length : 2
	return (Array(length).join("0") + num).slice(-length);
}

// 点击购买
// function purchaseGoPay(name) {
// 	// console.log(name);
// 	$(name + " .button-link").on("click", function () {
// 		if (purchase_e_result === true || _userInfo !== "") {
// 			var _product_id = $(name).attr("data-id"),
// 				_product_email = $(name + " ._input").val();
// 			let purchaseParams = {
// 				product_id: _product_id,
// 				email: _product_email,
// 				ref: "itop",
// 				device_id: "",
// 				origin: "web",
// 				channel: "web",
// 				client_type: 2,
// 			};
// 			purchaseBuylink(purchaseParams, function (res) {
// 				console.log(res);
// 			});
// 		}
// 	});
// }

// 验证是否有登录,设置全站跟登录后有关的信息
function loginCheckAll() {
	var _loginAll = null;
	_loginAll = getStorage('userInfo');
	// console.log(_loginAll);

	if ($("#header .nav-login").length > 0) {

		if (_loginAll !== null) {
			var _out = $("#header .nav-login").eq(0).attr("data-out");
			var _acount = $("#header .nav-login").eq(0).attr("data-acount");
			// console.log(_acount);
			$("#header .nav-login").html(_acount).attr({
				"href": $("#header .nav-login").eq(0).attr("data-acount-link"),
				"onclick": $("#header .nav-login").eq(0).attr(" data-acount-ga"),
			});
			if ($("body").hasClass("user-account")) {
				$("#header .nav-login").html(_out).attr("href", "javascript: void(0);");
				$("#header .nav-login").html(_out).attr({
					"href": "javascript: void(0);",
					"onclick": $("#header .nav-login").eq(0).attr(" data-out-ga"),
				});
				//$("#header .nav-login").html(_out).attr("href", $("#header .nav-login").eq(0).attr("data-in-link"));
				$(".account-banner .expiredBtn").find(".expired-date").removeClass("on");
				$(".account-banner .expiredBtn").find(".btn-account").addClass("on");
				$("input.purchase-email").val(_loginAll.email);
				$("#header .nav-login").on("click", function () {
					loginout();
					// setTimeout(() => {
					// 	gotoIndex("/login");
					// }, 300);
				});
			}
		} else {
			var _in = $("#header .nav-login").eq(0).attr("data-in");
			$("#header .nav-login").html(_in).attr({
				"href": $("#header .nav-login").eq(0).attr("data-in-link"),
				"onclick": $("#header .nav-login").eq(0).attr(" data-in-ga"),
			});
			//$("input.purchase-email").val("");
		}
	}
}
// 验证是否有注册
function signupCheck() {
	// console.log(1)
	// let signupemail = getStorage('userInfoSign');
	//let _signUp = getStorage('signUp') ? getStorage('signUp') : '';
	var _signupemail = null;
	_signupemail = localStorage.getItem("signUpEmail");
	//console.log(_signupemail);

	if (_signupemail !== null) {
		// console.log(2);
		//$("body.purchase .puchase-input").find("._input").val(_signupemail.email);
		$(".login-info .form-email").find(".input.email").val(_signupemail);
	} else {
		//$("body.purchase .puchase-input").find("._input").val("");
		$(".login-info .form-email").find(".input.email").val("");
		// var _in = $("#header .nav-login").eq(0).attr("data-in");
		// $("#header .nav-login").html(_in).attr("href", $("#header .nav-login").eq(0).attr("data-in-link"));
		// //$("input.purchase-email").val("");
	}
}

//用户数据
function userdata(params, callback) {
	ajaxCallback({
		url: 'api/get-login-user-info',
		type: 'post',
		data: params,
		headers: params.token
	}, function (res) {
		if (res.status === 'ok') {
			callback && callback(res.data);
			setStorage('userInfo', res.data);
		}
	});
}


// 登录登出时的跳转
function gotoIndex(name) {
	// var goto_globalUrl = getUrlHost();
	// window.location.href = goto_globalUrl + name;
	window.location.href = name;
	// window.location.href = "http://127.0.0.1:90/vpn_web/login";
	// window.location.href = "http://127.0.0.1:90/vpn_web" + name;
	window.event.returnvalue = false;
}
// 登出
function loginout() {
	var _loginoutUserInfo = getStorage('userInfo') ? getStorage('userInfo') : '';
	// console.log(_loginoutUserInfo.token);
	//removeStorage("userInfo");
	// setTimeout(() => {
	// 	var out_globalUrl = getUrlHost();
	// 	window.location.href = out_globalUrl + "login";
	// 	window.event.returnvalue = false;
	// }, 300);
	if (_loginoutUserInfo !== "") {
		ajaxCallback({
			url: 'api/logout',
			type: 'post',
			data: _loginoutUserInfo,
			headers: _loginoutUserInfo.token,
		}, function (res) {
			// console.log(res);
			if (res.status === 'ok') {
				// console.log(res);
				// console.log(_loginoutUserInfo);
				removeStorage("userInfo");
				$(".account-banner .expiredBtn").find(".expired-date").removeClass("on");
				$(".account-banner .expiredBtn").find(".btn-account").addClass("on");
				setTimeout(function () {
					// gotoIndex($("#header .nav-login").eq(0).attr("data-in-link"));
					var loginname = $(".header-nav .nav-login").eq(0).attr("data-in-link");
					loginname = loginname.replace(/auto/g, "");
					gotoIndex(loginname);
				}, 300);
				// var out_globalUrl = getUrlHost();
				// var _in = $("#header .nav-login").attr("data-in");
				// $("#header .nav-login").html(_in).attr("href", out_globalUrl + "login");
			} else {
				console.log("login out error!");
			}
		});
	}
}

// 公用评论
function reviewTechUser(name, dot, prev, next, num, space) {
	// num 代表是否有手机端，1代表有；0代表没有；
	$(name + " .review-dots").removeClass("on");
	$(dot).removeClass("on");

	$(name + " .tab_head ._lab").on("click", function () {
		var _tabIndex = $(this).index();
		$(this).addClass("on").siblings().removeClass("on");
		$(name + " .tab_cnt ._list").eq(_tabIndex).addClass("on").siblings().removeClass("on");
		if (_tabIndex === 1) {
			let swiper = new Swiper(name + ' .swiper-container', {
				autoplay: false,
				// direction: "vertical",
				slidesPerView: 3,
				breakpoints: {
					768: {
						//当屏幕宽度大于等于320
						slidesPerView: 1,
					},
					769: {
						//当屏幕宽度大于等于1280
						slidesPerView: 3,
					},
				},
				loop: true,
				paginationClickable: true,
				spaceBetween: space,
				nextButton: prev,
				prevButton: next,
				pagination: dot,
			});
		}

		let _w = $(window).width();

		if (num == 1) {
			if (_w <= 768) {
				if (_tabIndex === 1) {
					$(name + " .review-dots").addClass("on");
					$(dot).addClass("on");
				} else {
					$(name + " .review-dots").removeClass("on");
					$(dot).removeClass("on");
				}
			}
		}
	});
}

// 公用媒体评论手机端
function techReview(name) {
	$(name + " .review-dots > span").on("click", function () {
		var _dotIndex = $(this).index();
		$(this).addClass("on").siblings().removeClass("on");
		$(name + " .tab_cnt .tech_tab").eq(_dotIndex).addClass("on").siblings().removeClass("on");
	});
}



// let discount = getStorage('discount') ? getStorage('discount') : '';
// let discount_off = $("body.purchase .product-year .discount").attr("data-off");
// // console.log(discount);
// if (discount === "") {
// 	// console.log(discount);
// 	setStorage('discount', discount_off);
// }
// // console.log(getStorage('discount'));

// 语言切换
// function selectLanguage(name, _event) {
// 	$(name + " .my-select").on("click", function (e) {
// 		if ($(name + " .my-select").hasClass("isOpen")) {
// 			$(name + " .my-select").removeClass('isOpen').find('.select-options.directionUp').removeClass('open');
// 			return;
// 		}
// 		e.stopPropagation();
// 		$(name + " .my-select").addClass("isOpen").find('.select-options.directionUp').addClass('open');
// 	});

// 	$(name + " .my-select").on(_event, function () {
// 		$(name + " .my-select").removeClass('isOpen').find('.select-options.directionUp').removeClass('open');
// 	});
// }

// 页面浏览比例统计
// document.addEventListener('scroll', function () {
// 	var h = document.documentElement,
// 		b = document.body,
// 		st = 'scrollTop',
// 		sh = 'scrollHeight',
// 		percent_url = window.location.href;

// 	// console.log(percent_url);

// 	var percent = parseInt((h[st] || b[st]) / ((h[sh] || b[sh]) - h.clientHeight) * 100);

// 	// console.log(percent);

// 	switch (percent) {
// 		case 25:
// 			ga('send', 'event', 'Scroll', '25%', percent_url);
// 			break;
// 		case 50:
// 			ga('send', 'event', 'Scroll', '50%', percent_url);
// 			break;
// 		case 75:
// 			ga('send', 'event', 'Scroll', '75%', percent_url);
// 			break;
// 		case 100:
// 			ga('send', 'event', 'Scroll', '100%', percent_url);
// 			break;
// 	}
// });
function getPreferredLanguage() {
	let countriesArrLang = ["en", "ru", "it", "de", "jp", "es", "sv", "ar", "nl", "fr", "dk", "pt", "pl"];
	let getUILanguage = "";
	getUILanguage = $("html").attr("lang").substring(0, 2);
	if (getUILanguage == 'ja') getUILanguage = 'jp';
	var countriesLangName = countriesArrLang.filter(function (item) {
		if (item === getUILanguage) {
			return true;
		}
		return false;
	});
	if (countriesLangName.length > 0) {
		// return 'sv';
		return countriesLangName[0];
	} else {
		return "en";
	}
}

function removeDuplicateLink(url) {
	url = decodeURIComponent(url);
	var query = url.split('?')[1];
	var parts = query.split('&');
	var params = {};
	for (var i = 0; i < parts.length; i++) {
		var nv = parts[i].split('=');
		if (!nv[0]) continue;
		var value = nv[1] || true;
		if (params[nv[0]] && params[nv[0]].indexOf(value)) {
			params[nv[0]].push(value);
		} else {
			params[nv[0]] = [value];
		}
	}

	url = url.split('?')[0] + '?';
	var keys = Object.keys(params);
	for (var i = 0; i < keys.length; i++) {
		url += keys[i] + '=' + params[keys[i]].join('+');

		if (i !== keys.length - 1) url += '&';
	}
	return url;
}

$(function () {
	lazyLoad();
	var hrefema = getQueryVariable('ema');
	var hrefemail;
	var hreforigin = getQueryVariable('origin') ? getQueryVariable('origin') : '';
	var hrefuserInfoPurchase = getStorage('userInfo') ? getStorage('userInfo') : '';
	if (hrefema || hrefuserInfoPurchase !== "") {
		if (hrefema) {
			hrefemail = decodeParams(hrefema);
		} else {
			if (hrefuserInfoPurchase !== "") {
				hrefemail = hrefuserInfoPurchase.email;
			}
		}
		ajaxCallback({
			url: 'api/get-user-info',
			type: 'post',
			data: {
				username: hrefemail
			}
		}, function (res) {
			if (res.status === 'ok') {
				var hrefs = document.getElementsByTagName('a');
				var userid = res.data.id;
				vpn_userinfo = {
					email: hrefemail,
					id: userid
				}
				for (var i = 0, len = hrefs.length; i < len; i++) {
					if (hrefs[i].href.indexOf("goto.itopvpn.com/buy") != -1) {
						var ss = new URL(hrefs[i].href);
						if (hrefs[i].href.indexOf("x-src") != -1) {
							itop_info = "&email=" + hrefemail + "&user_id=" + userid + "&x-email=" + hrefemail + "&x-user_id=" + userid + "&x-lan=" + getPreferredLanguage() + "&x-origin=" + hreforigin;
						} else {
							itop_info = "&email=" + hrefemail + "&user_id=" + userid;
						}
						ss = ss + itop_info;
						hrefs[i].href = ss.toString();
						hrefs[i].setAttribute("data-info", itop_info);
					}
				}
			}
		});
	} else {
		let itop_info = "";
		var hrefs = document.getElementsByTagName('a');
		for (var i = 0, len = hrefs.length; i < len; i++) {
			if (hrefs[i].href.indexOf("x-src=") != -1) {
				hrefs[i].href = removeDuplicateLink(hrefs[i].href);
				var ss = new URL(hrefs[i].href);
				itop_info = "&x-lan=" + getPreferredLanguage() + "&x-origin=" + hreforigin;
				ss = ss + itop_info;
				hrefs[i].href = ss.toString();
				hrefs[i].setAttribute("data-info", itop_info);
			}
		}
	}

	// if (judgeClient() == 'android') {
	// 	$(".button,a").each(function () {
	// 		var adrhref = $(this).attr("href");
	// 		var data_href = $(this).attr("data-href");
	// 		if (data_href != undefined) {
	// 			if (data_href.indexOf("product=de-itop") != -1) {
	// 				$(this).remove();
	// 			}
	// 		} else {
	// 			if (adrhref != undefined) {
	// 				if (adrhref.indexOf("product=de-itop") != -1) {
	// 					$(this).remove();
	// 				}
	// 				if (adrhref.indexOf("download") != -1) {
	// 					$(this).remove();
	// 				}
	// 			}
	// 		}
	// 	});
	// }

	// 懒加载
	Echo.init({
		offset: -100,
		throttle: 0
	});

	// 登录相关检查
	loginCheckAll();

	// 是否注册
	signupCheck();


	// 显示产品信息
	showProductInfo();

	// if ($("body").hasClass("what-is-my-ip") || $("body").hasClass("purchase")) {
	// 	getProductInfo();
	// }

	// $('.footer_select.my-select').click(function(){
	// 	$(this).addClass('isOpen').find('.select-options.directionUp').addClass('open')
	// })
	// $('.select-options.directionUp').click(function () {
	// 	$('.footer_select._value').text($(this).find('p').text())
	// })
	// document.addEventListener("click", function (e) {
	// 	is = $('.footer_select.my-select').hasClass('isOpen')
	// 	if (is) $('.footer_select.my-select').removeClass('isOpen').find('.select-options.directionUp').removeClass('open')
	// 	if (!is && e.target.getAttribute('name')) $('.footer_select.my-select').addClass('isOpen').find('.select-options.directionUp').addClass('open')
	// })

	$('.footer-mobile .nav-list').click(function () {
		if ($(this).hasClass('active')) {
			$(this).removeClass('active')
			return
		}
		$(this).addClass('active').siblings().removeClass('active')
	})

	$('.header-nav .nav-list a').click(function () {
		var className = $(this).attr('data-href');
		if (className) {
			$('html, body').animate({
				scrollTop: $('.' + className).offset().top - 80
			}, 500);
		}
		if (window.innerWidth <= 768) {
			$(".header-product .mobile-bg").removeClass("show");
			$(".header-product .nav-menu").removeClass("show");
			$(".header-product .nav-btns").removeClass("show");
			$(".header-product .mobile-close").removeClass("show");
			$("body").removeClass("open");
			$(".header-product .mobile-nav").removeClass("hide");
			$(".header-product .nav-menu .nav-list .nav-item").css({
				height: 0,
				maxHeight: 0
			})
			setTimeout(function () {
				$(".header-product .nav-menu .nav-list").removeClass("active");
			}, 500)
		}
	})

	// Mobile
	if (window.innerWidth <= 768) {
		$("totopetc").remove();

		//selectLanguage(".footer-mobile", "touchmove");

		$(".footer-mobile .my-select").on("click", function (e) {
			if ($(".footer-mobile .my-select").hasClass("isOpen")) {
				$(".footer-mobile .my-select").removeClass('isOpen').find('.select-options.directionUp').removeClass('open');
				return;
			}
			e.stopPropagation();
			$(".footer-mobile .my-select").addClass("isOpen").find('.select-options.directionUp').addClass('open');
		});


		// 导航
		$("#header .mobile-nav").click(function (e) {
			e.stopPropagation();
			handleHeaderNav('#header ');
		})
		$(".header-product .mobile-nav").click(function (e) {
			e.stopPropagation();
			handleHeaderNav('.header-product ');
		})
		function handleHeaderNav(name) {
			if ($("body").hasClass("open")) {
				if (name === '#header ') {
					$(name + ".mobile-bg").removeClass("show");
				}
				$(name + ".nav-menu").removeClass("show");
				$(name + ".nav-btns").removeClass("show");
				$(name + ".mobile-close").removeClass("show");
				$("body").removeClass("open");
				return;
			}
			if (name === '#header ') {
				$(name + ".mobile-bg").addClass("show");
			}
			$(name + ".nav-menu").addClass("show");
			$(name + ".nav-btns").addClass("show");
			$(name + ".mobile-close").addClass("show");
			$(name + ".mobile-nav").addClass("hide");
			$("body").addClass("open");
		}

		// nav list
		$("#header .nav-menu .nav-list").click(function (e) {
			e.stopPropagation();
			handleNavList('#header ', this);
		})
		$(".header-product .nav-menu .nav-list").click(function (e) {
			e.stopPropagation();
			handleNavList('.header-product ', this);
		})

		function handleNavList(name, that) {
			$(name + ".nav-menu .nav-list .nav-item").css({
				height: 0,
				maxHeight: 0
			})
			if ($(that).hasClass("active")) {
				$(that).removeClass("active").siblings().removeClass("active");
				return;
			}
			var len = $(that).find('.nav-item > a').length;
			$(that).find('.nav-item').css({
				height: 50 * len + 20,
				maxHeight: 50 * len + 20
			})
			$(that).addClass("active").siblings().removeClass("active");
		}

		// nav close
		$("#header .nav-item  a,#header .mobile-close, #header .mobile-bg").click(function (e) {
			e.stopPropagation();
			handleHeaderClose('#header ');
		});

		$(".header-product .nav-item  a,.header-product .mobile-close, .header-product .mobile-bg").click(function (e) {
			e.stopPropagation();
			handleHeaderClose('.header-product ');
		});

		function handleHeaderClose(name) {
			$(name + ".mobile-bg").removeClass("show");
			$(name + ".nav-menu").removeClass("show");
			$(name + ".nav-btns").removeClass("show");
			$(name + ".mobile-close").removeClass("show");
			$("body").removeClass("open");
			$(name + ".mobile-nav").removeClass("hide");
		}

		if ($('body').hasClass('scroll-header')) {
			$('.scroll-header .itop-ad-main').remove();
		}

	} else {
		//selectLanguage(".footer", "mouseleave");

		$(".footer .my-select").on("mouseenter", function () {
			$(".footer .my-select").addClass("isOpen").find('.select-options.directionUp').addClass('open');
		});
		$(".footer .my-select").on("mouseleave", function () {
			$(".footer .my-select").removeClass('isOpen').find('.select-options.directionUp').removeClass('open');
		});
	}
});


function isMobile() {
	var userAgentInfo = navigator.userAgent;

	var mobileAgents = ["Android", "iPhone", "SymbianOS", "Windows Phone", "iPad", "iPod"];

	var mobile_flag = false;

	for (var v = 0; v < mobileAgents.length; v++) {
		if (userAgentInfo.indexOf(mobileAgents[v]) > 0) {
			mobile_flag = true;
			break;
		}
	}
	var screen_width = window.screen.width;
	var screen_height = window.screen.height;

	if (screen_width > 325 && screen_height < 750) {
		mobile_flag = true;
	}

	return mobile_flag;
}


function binding_value(which) {
	document.getElementById('subscribeNewsletterEmailLeft').value = which.value;
	if (isMobile()) {
		$(".subscribe-zone .email-bar").removeClass('onerror');
	}
}

function onSubscribeSend() {
	$(".subscribe-zone .email-bar").hide();
	$(".subscribe-result").addClass('on');
	// $(".subscribe-zone .subscribe-result").stop(true, true).fadeIn('400', function () {
	// 	$(".subscribe-result").addClass('on');
	// });
	$(".subscribe-btn").attr('disabled', true);
}

function onSubscribeFailure(type) {
	$(".zone-describe").hide();
	switch (type) {
		// email already exists
		case 1001:
		case '1001':
			$(".zone-describe.error").html($(".zone-describe.error").attr('data-already')).show();
			break;
		case 1000:
		case '1000':
			// E-mail format error
			$(".zone-describe.error").html($(".zone-describe.error").attr('data-valid')).show();
			break;
		default:
			$(".zone-describe.tips").show();
			break;
	}
	$(".subscribe-zone .email-bar").addClass('onerror');
	$(".subscribe-zone .subscribe-result").hide().removeClass('onsuss on');
	$(".subscribe-zone .email-bar").show();
	$(".subscribe-result").removeClass('on');
	// $(".subscribe-zone .subscribe-result").stop(true, true).fadeOut('400', function () {
	// 	$(".subscribe-result").removeClass('on');
	// });
	$(".subscribe-btn").attr('disabled', false);
}

function onSubscribeSuccess() {
	$(".subscribe-zone .email-bar").hide().removeClass('onerror');
	$(".subscribe-result").removeClass('on').addClass('onsuss');
	$(".zone-describe").hide();
	$(".zone-describe.succ").show();
	$(".subscribe-btn").attr('disabled', false);
}

function onSubscribeInit() {
	$(".subscribe-zone .email-bar").show().removeClass('onerror');
	$(".subscribe-zone .subscribe-result").hide().removeClass('onsuss on');
	$(".subscribe-btn").attr('disabled', false);
	$(".zone-describe").hide();
	$(".zone-describe.tips").show();
}

function ajaxCallbackN(request, callback) {
	var href = 'https://www.itopvpn.com/';
	if (typeof callback === 'function') {
		$.ajax({
			url: href + request.url,
			type: request.type,
			data: JSON.stringify(request.data) || {},
			contentType: "application/json;charset=UTF-8",
			dataType: "json",
			headers: { 'Authorization': request.headers } || {},
			// headers: { Authorization: request.token },
			success: function (data) {
				callback(data)
			}
		});
	}
}


var mailVal = '';
var mainLang = 'de';
var subemail = null
function onSubscribe_Event() {
	mailVal = $("#subscribeNewsletterEmailLeft").val();
	// console.log(!MApp(2.2).check.isEmail(mailVal));
	subemail = localStorage.getItem('subscribemail') ? localStorage.getItem('subscribemail') : null;
	// console.log(subemail);
	if (!MApp(2.2).check.isEmail(mailVal)
		|| (!MApp(2.2).check.isNull(subemail) && subemail == mailVal)) {
		if (!MApp(2.2).check.isNull(subemail) && subemail == mailVal) {
			onSubscribeFailure(1001);
		} else {
			onSubscribeFailure(1000);
		}
	} else {
		onSubscribeSend();
		ajaxCallbackN({
			url: 'api/subscription-email',
			type: 'post',
			data: {
				email: mailVal,
				lang: "de"
			}
		}, function (res) {
			if (res.status == false
				|| res.status == 'false') {
				if (res.data == 1001) setStorage('subscribemail', mailVal);
				onSubscribeFailure(res.data);
				return false;
			} else {
				onSubscribeSuccess();
			}
		});
	}
}

$(function () {
	var eflag = true;

	if (document.querySelector('#subscribeNewsletterEmail')) {
		var subscribeinput = document.querySelector('#subscribeNewsletterEmail');
		subscribeinput.addEventListener('compositionstart', function () {
			eflag = false;
		});
		subscribeinput.addEventListener('compositionend', function () {
			eflag = true;
			$(".subscribe-zone .email-bar").removeClass('onerror');
		})
		subscribeinput.addEventListener('input', function () {
			// console.log(eflag);
			// console.log('input');
			setTimeout(function () {
				if (eflag) {
					$(".subscribe-zone .email-bar").removeClass('onerror');
				}
			}, 0);
		});
	}
});

if (!isMobile()) {
	$(function () {
		onSubscribeInit();

		if (document.querySelector('.email-input')) {
			document.querySelector('.email-input').onfocus = function (e) {
				$(".subscribe-zone .email-bar").removeClass('onerror');
			}
		}

		if (document.getElementById('subscribeBtn')) {
			document.getElementById('subscribeBtn').onclick = onSubscribe_Event;
		}

		// 监听输入框的键盘事件
		if (document.querySelector('.email-input')) {
			document.querySelector('.email-input').addEventListener("keydown", function (event) {
				// 检查是否是回车键
				if (event.key === "Enter" || event.keyCode === 13) {
					// 阻止回车键的默认行为（例如，提交表单）
					event.preventDefault();
					// 触发按钮的点击事件
					document.getElementById('subscribeBtn').click();
				}
			});
		}

		// document.onkeydown = function (event) {
		// 	e = event ? event : (window.event ? window.event : null);
		// 	if (e.keyCode == 13 && e.target.id == 'subscribeNewsletterEmail') {
		// 		if (document.getElementById('subscribeBtn')) {
		// 			onSubscribe_Event();
		// 		}
		// 	}
		// }
	});
} else {
	// console.log(isMobile());
	function loadMobile() {
		document.addEventListener('touchstart', touchMobile, false);
		document.addEventListener('touchmove', touchMobile, false);
		document.addEventListener('touchend', touchMobile, false);

		function touchMobile(event) {
			var event = event || window.event;
			switch (event.type) {
				case "touchstart":
					// console.log('touchstart');
					if (event.touches[0].target.classList.contains('subscribe-btn') && document.getElementById('subscribeBtn')) {
						onSubscribe_Event();
					}
					break;
				case "touchend":
					// console.log('touchend');
					break;
				case "touchmove":
					event.preventDefault();
					event.stopPropagation();
					// console.log('touchmove');
					break;
			}
		}
	}
	window.addEventListener('load', loadMobile, false);
}