var wgtVer = null;
// var checkUrl = "http://192.168.1.172:8848/0.0/json/data.json"; //检测版本是否有更新的地址
var wgtUrl = "";
var dtask;
var num;
var container;
var timer;
var bodyWidth = window.screen.width;


window.addEventListener('refresh', function(msg) {
	openIndex();
});

function openIndex() {
	plus.runtime.getProperty(plus.runtime.appid, function(inf) {
		wgtVer = inf.version;
		$.setLocal({
			"appVersion": wgtVer
		});

		checkUpdate()
	});
}

function checkUpdate() {
	console.log(appUrl + "/app/update2");
	console.log("getAppVersion:" + $.getAppVersion());
	console.log("getResVersion:" + $.getResVersion());
	console.log("edei url:" + $.getUrl())
	console.log("ID:" + plus.webview.currentWebview().id)
	console.log("opener:" + plus.webview.currentWebview().opener())
	if(plus.webview.currentWebview().opener()){
		console.log("opener:" + plus.webview.currentWebview().opener().id + "  url:" + plus.webview.currentWebview().opener().getURL())
	}
	
	if (!$.getUrl()) {
		//第一次加载，还没有绑定，跳转到绑定页面
		setTimeout(function() {
			mui.openWindow({
				url: "/html/login/bindServer.html",
				id: "bindingServer_login.html"
			})
		}, 300);
		return;
	}
	mui.ajax({
		// url: "http://192.168.1.172:8848/0.0/json/data.json", //检查网络情况，并发送检查更新请求
		url: appUrl + "/app/update2", //检查网络情况，并发送检查更新请求
		data: {
			"appOuterVersion": $.getAppVersion(),
			"appResVersion": $.getResVersion()||"",
			"os": plus.os.name,
			"body": "student",
			"edeiUrl": $.getUrl()
		},
		timeout: 6000,
		async: true,
		dataType: "json",
		success: function(data) {
			console.log(JSON.stringify(data))
			//返回的值应该是包括包的类型和下载地址
			//将appOuterVersion和appInnerVersion传入后台，后台判断是更新appOuterVersion,还是更新appInnerVersion
			//后台先判断大版本即apk是否有更新，如果有，则直接返回大版本的版本号和地址，将本地的壳升级，
			//如果大版本没有更新，比较小版本
			//如果update为true,表示需要进行更新，具体的更新有更详细的data信息来描述
			var version = data.version;
			$.set("resVersion", version);
			if (data.update) {
				wgtUrl = data.downUrl;
				if (data.resType == "zip") {
					//如果是资源更新，就切换资源路径,注释掉原来的下载down(data.resType, data.version);
					// down(data.resType, data.version);
					//进入主页
					// startIndex(version);
					mui.alert("资源有更新，重启后将进入新版本！",function(){
						plus.runtime.restart();
					});
					
				} else {
					mui.confirm("版本有更新，需要升级，请确认！", "版本更新", ["确定"], function(e) {
						if (e.index == 0) {
							if (plus.os.name == "iOS") {
								plus.runtime.openURL("itms-apps://" +
									wgtUrl); //判断地址，和系统决定是打开APPStore进行大版本的更新，还是进行Android,widget升级
								plus.runtime.restart();
							} else {
								down(data.resType, data.version); // 下载升级包
							}
						}
					})
				}

			} else {
				startIndex(version);
			}
		},
		error: function() {
			//mui.toast('不可连接服务器!');
			$.setLocal({
				"appVersion": $.getOldAppVersion(),
				"apkVersion": wgtVer
			})
		}
	})

}


function startIndex(version) {
	var dirPath = plus.io.convertLocalFileSystemURL("_www/res/" + version);
	console.log('资源目录：' + dirPath);
	// 转换为绝对URL
	plus.io.resolveLocalFileSystemURL(dirPath, function(entry) {
		if (location.href.indexOf("/my.html") > -1) {
			//说明是检查更新
			var oldResVersion = $(".resVersion").text();
			console.log("oldResVersion：" + oldResVersion)
			if (oldResVersion != version) {
				mui.toast("资源切换成功！")
			} else {
				mui.toast("没有新版本！")
				return;
			}
		}
		// 成功回调，entry存在说明目录存在
		if ($.getUserName()) {
			console.log('进入主界面，用户名：' + $.getUserName())
			setTimeout(function() {
				var indexWin = plus.webview.getWebviewById("index0");
				if(indexWin){
					indexWin.show();
					mui.fire(indexWin,"refresh");
				}else{
					mui.openWindow({
						url: "file://" + dirPath + "/index.html",
						id: "index0"
					})
				}
			}, 300);

		} else {
			console.log('进入登录界面' + "file://" + dirPath + "/html/login/login.html")
			setTimeout(function() {
				var loginWin = plus.webview.getWebviewById("login");
				if(loginWin){
					loginWin.show();
					mui.fire(loginWin,"updateServerName");
				}else{
					mui.openWindow({
						url: "file://" + dirPath + "/html/login/login.html",
						id: 'login'
					})
				}
			}, 300)
		}
	}, function(e) {
		console.log(JSON.stringify(e))
		// 错误回调
		mui.alert(dirPath + "资源不存在，请联系管理员",function(){
			$.setLocal({
				"appVersion": $.getOldAppVersion(),
				"apkVersion": wgtVer
			})
			setTimeout(function() {
				console.log(plus.io.convertLocalFileSystemURL("_www") + "/html/login/bindServer.html")
				mui.openWindow({
					url: plus.io.convertLocalFileSystemURL("_www") + "/html/login/bindServer.html",
					id: "bindingServer_login.html"
				})
			}, 300);
		});
		
	});
}

function printAllWebview(){
	// 获取所有 WebView
	var allWebviews = plus.webview.all(); 
	 
	// 遍历并打印 ID 和 URL 
	for (var i = 0; i < allWebviews.length;  i++) {
	  var webview = allWebviews[i];
	  var id = webview.id  || "未命名 ID";
	  var url = webview.getURL();  // 获取当前加载的 URL
	  // 打印到控制台
	  console.log("WebView  ID: " + id + ", URL: " + url);
	  // 可选：添加到页面显示 
	  var outputDiv = document.getElementById("output"); 
	  if (outputDiv) {
	    outputDiv.innerHTML  += "<p>ID: " + id + "<br>URL: " + url + "</p>";
	  }
	}
}

function closeAllWebview(){
	// 1. 获取所有 WebView 
	var allViews = plus.webview.all(); 
	// 2. 安全关闭策略 
	for (var i = 0; i < allViews.length;  i++) {
	  var view = allViews[i];
	  // 跳过入口页面（防止应用退出）
	  if (view.id  !== plus.runtime.appid)  { 
	    view.close('none');  // 无动画关闭 
	    view = null; // 释放内存 
	  }
	}
}


function down(type, version) {
	var index = -1;
	var aliyunUrl = wgtUrl;
	if (index = wgtUrl.indexOf("url=") > -1) {
		aliyunUrl = wgtUrl.substr(index + 4);
	}

	dtask = plus.downloader.createDownload(aliyunUrl, {
		filename: "_doc/update/",
		timeout: 30
	}, function(d, status) {
		if (status == 200) {
			installApk(d.filename, version); // 安装wgt包  
		} else {
			dtask = plus.downloader.createDownload(wgtUrl, {
				filename: "_doc/update/",
				timeout: 30
			}, function(d, status) {
				if (status == 200) {
					installApk(d.filename, version); // 安装wgt包  
				} else {
					//下载失败,
					plus.nativeUI.alert("下载失败：" + wgtUrl);
					$.setLocal({
						"appVersion": $.getOldAppVersion(),
						"apkVersion": wgtVer
					})
					setTimeout(function() {
						mui.openWindow({
							url: "html/login/bindServer.html",
							id: "bindingServer_login.html"
						})
					}, 300)
				}
			})
			dtask.addEventListener("statechanged", onStateChanged, false);
			dtask.start();
		}
	})
	dtask.addEventListener("statechanged", onStateChanged, false);
	$("#canvas1").removeClass("active");
	$("#canvas2").addClass("active");
	container = mui(".mui-content p");
	container.progressbar({
		progress: 0
	}).show(); //显示进度条
	$("#canvas2 h4").html("正在下载：0%")
	dtask.start();
	timer = setInterval(function() {
		if (num < 100) {
			$("#canvas2 h4").html("正在下载：" + parseInt(num) + " %")
			mui(container).progressbar().setProgress(parseInt(num));
		} else {
			clearInterval(timer);
			$("#canvas2 h4").html("正在下载：100%")
			$("#canvas2").hide();
			mui(container).progressbar().hide();
		}
	}, 200)
}

function onStateChanged() {
	if (dtask.totalSize == 0) {
		num = 0;
	} else {
		num = (dtask.downloadedSize / dtask.totalSize) * 100;
	}
}

function installApk(path, version) {
	plus.nativeUI.showWaiting("安装文件...");
	plus.runtime.install(path, {}, function() {
		plus.nativeUI.closeWaiting();
		setTimeout(function() {
			$.setLocal({
				"apkPath": path,
				"apkVersion": version
			});
			$.each(plus.storage, function(i, item) {
				console.log(item.key + "---" + item.value);
			})

			//plus.runtime.restart();
		}, 300);
	}, function(e) {
		plus.nativeUI.closeWaiting();
		plus.nativeUI.alert("安装文件失败[" + e.code + "]：" + e.message, function() {
			$.setLocal({
				"apkPath": path,
				"apkVersion": version
			});
			//plus.runtime.restart();
		});
	});
}

function delApk(dirPath) {
	plus.io.resolveLocalFileSystemURL("_doc/", function(entry) {
		//读取这个目录对象   
		var directoryReader = entry.createReader();
		//读取这个目录下的所有文件    
		directoryReader.readEntries(function(entries) {
			if (entries.length > 0) {
				//删除目录将会删除其下的所有文件及子目录 不能删除根目录，如果操作删除根目录  
				//将会删除目录下的文件及子目录，不会删除根目录自身。 删除目录成功通过succesCB  
				//回调返回，失败则通过errorCB返回。  
				entry.removeRecursively(function(entry) {
					$.setLocal({ //删除成功后,将apk的路径使用字符1清除掉
						"apkPath": "1"
					})
					//删除成功回调    
				}, function(e) {
					mui.toast(e.message + ' ?!');
				})
			} else {
				$.setLocal({ //如果没有子文件，那么也进行重置
					"apkPath": "1"
				})
			}
		}, function(e) {
			mui.toast('读取文件失败：' + e.message + ",请等待重启，重新下载!");
			$.setLocal({ //读取文件失败，那么清空路径，等待之后某一次成功就可以一次将文件夹清空
				"apkPath": "1"
			})

		})
	}, function(e) {
		mui.toast('读取目录失败：' + e.message + ",请等待重启，重新下载!");
		$.setLocal({
			"apkPath": "1"
		})
	})

}