var objAngelTab = "";
layui.use(["element", "layer", "angelUtils", "angelTab", "angelLayer", "angelContextMenu", "angelHoliday"], function () {
	var angelUtils = layui.angelUtils;
	var $ = layui.jquery;
	var layer = layui.layer;
	var angelLayer = layui.angelLayer;
	var angelHoliday = layui.angelHoliday;

	var angelTab = layui.angelTab({
		// 菜单请求路径
	    url: "/api/amenuapi/navList",
		// 允许同时选项卡的个数
		openTabNum: 30,
		// 如果返回的结果和navs.json中的数据结构一致可省略这个方法
		parseData: function (data) {
		    return data.data;
		}
	});
	objAngelTab = angelTab;
	angelLoading.close();/**关闭加载动画*/
	/**
	 * 左侧导航渲染完成之后的操作
	 */
	angelTab.render(function () {
		/**tab栏的鼠标右键事件**/
		$("body .angel-tab").angelContextMenu({
			width: 'auto',
			itemHeight: 30,
			menu: [
				{
					text: "定位所在页",
					icon: "angel-icon angel-icon-location",
					callback: function () {
						angelTab.positionTab();
					}
				},
				{
					text: "关闭当前页",
					icon: "angel-icon angel-icon-roundclose",
					callback: function () {
						angelTab.tabClose(1);
					}
				},
				{
					text: "关闭其他页",
					icon: "angel-icon angel-icon-roundclose",
					callback: function () {
						angelTab.tabClose(2);
					}
				},
				{
					text: "关闭所有页",
					icon: "angel-icon angel-icon-roundclose",
					callback: function () {

						angelTab.tabClose(3);
					}
				}
			]
		});
	});

	/**
	 * 添加新窗口
	 */
	$("body").on("click", "#navBar .layui-nav-item a, #userInfo a", function () {
		// 如果不存在子级
		if ($(this).siblings().length == 0) {
			angelTab.tabAdd($(this));
		}
		// 关闭其他展开的二级标签
		$(this).parent("li").siblings().removeClass("layui-nav-itemed");
		if (!$(this).attr("lay-id")) {
			var topLevelEle = $(this).parents("li.layui-nav-item");
			var childs = $("#navBar > li > dl.layui-nav-child").not(topLevelEle.children("dl.layui-nav-child"));
			childs.removeAttr("style");
		}
	});

	/**
	 * 左侧菜单展开动画
	 */
	$("#navBar").on("click", ".layui-nav-item a", function () {
		if (!$(this).attr("lay-id")) {
			var superEle = $(this).parent();
			var ele = $(this).next('.layui-nav-child');
			var height = ele.height();
			ele.css({"display": "block"});
			// 是否是展开状态
			if (superEle.is(".layui-nav-itemed")) {
				ele.height(0);
				ele.animate({height: height + "px"}, function () {
					ele.css({height: "auto"});
				});
			} else {
				ele.animate({height: 0}, function () {
					ele.removeAttr("style");
				});
			}
		}
	});

	/**
	 * 左边菜单显隐功能
	 */
	$(".angel-menu").click(function () {
		$(".layui-layout-admin").toggleClass("angel-left-hide");
		$(this).find("i").toggleClass("angel-menu-hide");
		localStorage.setItem("isResize", false);
		setTimeout(function () {
			localStorage.setItem("isResize", true);
		}, 1200);
	});

	/**
	 * 移动端的处理事件
	 */
	$("body").on("click", ".layui-layout-admin .angel-left a[data-url], .angel-make", function () {
		if ($(".layui-layout-admin").hasClass("angel-left-hide")) {
			$(".layui-layout-admin").removeClass("angel-left-hide");
			$(".angel-menu").find('i').removeClass("angel-menu-hide");
		}
	});

	/**
	 * tab左右移动
	 */
	$("body").on("click", ".angelNavMove", function () {
		var moveId = $(this).attr("data-id");
		var that = this;
		angelTab.navMove(moveId, that);
	});

	/**
	 * 刷新当前tab页
	 */
	$("body").on("click", ".angel-refresh", function () {
		angelTab.refresh(this, function (angelTab) {
			//刷新之后所处理的事件
		});
	});

	/**
	 * 关闭tab页
	 */
	$("body").on("click", "#tabAction a", function () {
		var num = $(this).attr("data-num");
		angelTab.tabClose(num);
	});

	/**
	 * 键盘的事件监听
	 */
	$("body").on("keydown", function (event) {
		event = event || window.event || arguments.callee.caller.arguments[0];

		// 按 Esc
		if (event && event.keyCode === 27) {
			console.log("Esc");
			$("#fullScreen").children("i").eq(0).removeClass("layui-icon-screen-restore");
		}
		// 按 F11
		if (event && event.keyCode == 122) {
			console.log("F11");
			$("#fullScreen").children("i").eq(0).addClass("layui-icon-screen-restore");
		}
	});

	/**
	 * 全屏/退出全屏
	 */
	$("body").on("click", "#fullScreen", function () {
		if ($(this).children("i").hasClass("layui-icon-screen-restore")) {
			screenFun(2).then(function () {
				$("#fullScreen").children("i").eq(0).removeClass("layui-icon-screen-restore");
			});
		} else {
			screenFun(1).then(function () {
				$("#fullScreen").children("i").eq(0).addClass("layui-icon-screen-restore");
			});
		}
	});

	/**
	 * 全屏和退出全屏的方法
	 * @param num 1代表全屏 2代表退出全屏
	 * @returns {Promise}
	 */
	function screenFun(num) {
		num = num || 1;
		num = num * 1;
		var docElm = document.documentElement;

		switch (num) {
			case 1:
				if (docElm.requestFullscreen) {
					docElm.requestFullscreen();
				} else if (docElm.mozRequestFullScreen) {
					docElm.mozRequestFullScreen();
				} else if (docElm.webkitRequestFullScreen) {
					docElm.webkitRequestFullScreen();
				} else if (docElm.msRequestFullscreen) {
					docElm.msRequestFullscreen();
				}
				break;
			case 2:
				if (document.exitFullscreen) {
					document.exitFullscreen();
				} else if (document.mozCancelFullScreen) {
					document.mozCancelFullScreen();
				} else if (document.webkitCancelFullScreen) {
					document.webkitCancelFullScreen();
				} else if (document.msExitFullscreen) {
					document.msExitFullscreen();
				}
				break;
		}

		return new Promise(function (res, rej) {
			res("返回值");
		});
	}

	/**
	 * 系统公告
	 */
	$(document).on("click", "#notice", noticeFun);
	!function () {
		var notice = sessionStorage.getItem("notice");
		if (notice != "true") {
			noticeFun();
		}
	}();

	function noticeFun() {
		var srcWidth = angelUtils.getBodyWidth();
		layer.open({
			type: 0, title: "系统公告", btn: "我知道啦", btnAlign: 'c', content: angelHoliday.getContent(),
			yes: function (index) {
				if (srcWidth > 800) {
					layer.tips('公告跑到这里去啦', '#notice', {
						tips: [1, '#000'],
						time: 2000
					});
				}
				sessionStorage.setItem("notice", "true");
				layer.close(index);
			},
			cancel: function (index) {
				if (srcWidth > 800) {
					layer.tips('公告跑到这里去啦', '#notice', {
						tips: [1, '#000'],
						time: 2000
					});
				}
			}
		});
	}

	/**
	 * 退出操作
	 */
	$("#logout").click(function () {
		angelLayer.confirm("确定要退出吗？", function (index) {
			angelTab.removeTabStorage(function (res) {
				angelTab.removeTabStorage();
				window.location = "/Admin/Login/";
			});
		});
	});

	/**
	 * 锁定账户
	 */
	$("#lock").click(function () {
		angelLayer.confirm("确定要锁定账户吗？", function (index) {
			layer.close(index);
			$(".yy").show();
			layer.prompt({
				btn: ['确定'],
				title: '输入密码解锁(123456)',
				closeBtn: 0,
				formType: 1
			}, function (value, index, elem) {
				if (value == "123456") {
					layer.close(index);
					$(".yy").hide();
				} else {
					layer.msg('密码错误', {anim: 6, time: 1000});
				}
			});
		});
	});

});
