diff --git a/public/demo/cn/demo.html b/public/demo/cn/demo.html deleted file mode 100644 index 51553588..00000000 --- a/public/demo/cn/demo.html +++ /dev/null @@ -1,440 +0,0 @@ - - - - - - - - - - - -
-
- -
- 登录 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
IP地址端口号
用户名密码
设备端口(可选参数) - 窗口分割数  - -
RTSP端口(可选参数)
- - - -
已登录设备 - - 通道列表 - -
- - - - - -
-
-
- 数字通道 - - - - - - - -
-
-
-
-
-
-
- 本地配置 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
播放性能 - - 图像尺寸 - -
规则信息 - - 抓图文件格式 - -
录像文件打包大小 - - 协议类型 - -
码流秘钥 - -
录像文件保存路径 
回放下载保存路径 
预览抓图保存路径 
回放抓图保存路径 
回放剪辑保存路径 
   修改参数后,需要刷新界面后生效。
-
-
-
-
- 预览 - - - - - - - - - - - - - - - - - - - - - - -
码流类型 - -
音量 -  (范围:0~100) - - - -
对讲通道 - - - - - -
- - - - -
- - - - - -
-
-
- 绘图 - - - - - - - - - - -
- - -
- 图形ID: - 名称: -
- - - - - -
-
-
- 云台控制 - - - - - - - - - - -
- - - -
- - - -
- - - -
- - - - - - - - - - - - -
云台速度 - -
预置点号
- - -
- - - - - - - - - - - - - -
-
-
- 回放 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
码流类型 - -
开始时间 - (时间格式:2013-11-11 12:34:56) -
结束时间 - - - -
按时间下载开始时间 - (时间格式:2013-11-11 12:34:56) -
按时间下载结束时间 - - (相机不支持) -
-
-
-
-
- - - - -
- - - - -
- - - -   -
-
-
- 系统维护 - - - - - - - -
- - -
-    -
-
-
-
-
- 操作信息 -
-
-
- 事件回调信息 -
-
-
- - - - - \ No newline at end of file diff --git a/public/demo/cn/demo.js b/public/demo/cn/demo.js deleted file mode 100644 index ea440a23..00000000 --- a/public/demo/cn/demo.js +++ /dev/null @@ -1,1969 +0,0 @@ -// 初始化插件 - -// 全局保存当前选中窗口 -var g_iWndIndex = 0; //可以不用设置这个变量,有窗口参数的接口中,不用传值,开发包会默认使用当前选择窗口 -var g_oLocalConfig = null; //本地配置 - -//错误码 -//通用错误 -var ERROR_CODE_UNKNOWN = 1000; //未知错误 -var ERROR_CODE_NETWORKERROR = 1001; //网络错误 -var ERROR_CODE_PARAMERROR = 1002; //缺少插件元素 - -//登录模块 -var ERROR_CODE_LOGIN_NOLOGIN = 2000; // 未登录 -var ERROR_CODE_LOGIN_REPEATLOGIN = 2001; //设备已登录,重复登录 -var ERROR_CODE_LOGIN_NOSUPPORT = 2002; //当前设备不支持Digest登录 - -//预览播放 -var ERROR_CODE_PLAY_PLUGININITFAIL = 3000; //插件初始化失败 -var ERROR_CODE_PLAY_NOREPEATPLAY = 3001; //当前窗口已经在预览 -var ERROR_CODE_PLAY_PLAYBACKABNORMAL = 3002; //回放异常 -var ERROR_CODE_PLAY_PLAYBACKSTOP = 3003; //回放停止 -var ERROR_CODE_PLAY_NOFREESPACE = 3004; //录像过程中,硬盘容量不足 - -//对讲 -var ERROR_CODE_TALK_FAIL = 5000; //语音对讲失败 - - -var version="V3.3.0build20230322" -$(function () { - // 初始化插件参数及插入插件 - WebVideoCtrl.I_InitPlugin({ - bWndFull: true, //是否支持单窗口双击全屏,默认支持 true:支持 false:不支持 - iWndowType: 1, - cbSelWnd: function (xmlDoc) { - g_iWndIndex = parseInt($(xmlDoc).find("SelectWnd").eq(0).text(), 10); - var szInfo = "当前选择的窗口编号:" + g_iWndIndex; - showCBInfo(szInfo); - }, - cbDoubleClickWnd: function (iWndIndex, bFullScreen) { - var szInfo = "当前放大的窗口编号:" + iWndIndex; - if (!bFullScreen) { - szInfo = "当前还原的窗口编号:" + iWndIndex; - } - showCBInfo(szInfo); - }, - cbEvent: function (iEventType, iParam1, iParam2) { - if (2 == iEventType) {// 回放正常结束 - showCBInfo("窗口" + iParam1 + "回放结束!"); - } else if (-1 == iEventType) { - showCBInfo("设备" + iParam1 + "网络错误!"); - } else if (3001 == iEventType) { - clickStopRecord(g_szRecordType, iParam1); - } - }, - cbInitPluginComplete: function () { - WebVideoCtrl.I_InsertOBJECTPlugin("divPlugin").then(() => { - // 检查插件是否最新 - WebVideoCtrl.I_CheckPluginVersion().then((bFlag) => { - if (bFlag) { - alert("检测到新的插件版本,双击开发包目录里的HCWebSDKPlugin.exe升级!"); - } - }); - }, () => { - alert("插件初始化失败,请确认是否已安装插件;如果未安装,请双击开发包目录里的HCWebSDKPlugin.exe安装!"); - }); - } - }); - - // 窗口事件绑定 - $(window).bind({ - resize: function () { - //WebVideoCtrl.I_Resize($("body").width(), $("body").height()); - } - }); - - //初始化日期时间 - var szCurTime = dateFormat(new Date(), "yyyy-MM-dd"); - $("#starttime").val(szCurTime + " 00:00:00"); - $("#endtime").val(szCurTime + " 23:59:59"); - $("#downloadstarttime").val(szCurTime + " 00:00:00"); - $("#downloadendtime").val(szCurTime + " 23:59:59"); -}); - -// 显示操作信息 -function showOPInfo(szInfo, status, xmlDoc) { - var szTip = "
" + dateFormat(new Date(), "yyyy-MM-dd hh:mm:ss") + " " + szInfo; - if (typeof status != "undefined" && status != 200) { - var szStatusString = $(xmlDoc).find("statusString").eq(0).text(); - var szSubStatusCode = $(xmlDoc).find("subStatusCode").eq(0).text(); - if ("" === szSubStatusCode) { - if("" === szSubStatusCode && "" === szStatusString){ - szTip += "(" + status + ")"; - } - else{ - szTip += "(" + status + ", " + szStatusString + ")"; - } - } else { - szTip += "(" + status + ", " + szSubStatusCode + ")"; - } - } - szTip += "
"; - - $("#opinfo").html(szTip + $("#opinfo").html()); -} - -// 显示回调信息 -function showCBInfo(szInfo) { - szInfo = "
" + dateFormat(new Date(), "yyyy-MM-dd hh:mm:ss") + " " + szInfo + "
"; - $("#cbinfo").html(szInfo + $("#cbinfo").html()); -} - -// 格式化时间 -function dateFormat(oDate, fmt) { - var o = { - "M+": oDate.getMonth() + 1, //月份 - "d+": oDate.getDate(), //日 - "h+": oDate.getHours(), //小时 - "m+": oDate.getMinutes(), //分 - "s+": oDate.getSeconds(), //秒 - "q+": Math.floor((oDate.getMonth() + 3) / 3), //季度 - "S": oDate.getMilliseconds()//毫秒 - }; - if (/(y+)/.test(fmt)) { - fmt = fmt.replace(RegExp.$1, (oDate.getFullYear() + "").substr(4 - RegExp.$1.length)); - } - for (var k in o) { - if (new RegExp("(" + k + ")").test(fmt)) { - fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length))); - } - } - return fmt; -} - -// 获取窗口尺寸 -function getWindowSize() { - var nWidth = $(this).width() + $(this).scrollLeft(), - nHeight = $(this).height() + $(this).scrollTop(); - - return {width: nWidth, height: nHeight}; -} - -// 打开选择框 0:文件夹 1:文件 -function clickOpenFileDlg(id, iType) { - WebVideoCtrl.I_OpenFileDlg(iType).then(function(szDirPath){ - if (szDirPath != -1 && szDirPath != "" && szDirPath != null) { - $("#" + id).val(szDirPath); - } - }, function() { - showOPInfo("打开文件路径失败"); - }); -} - -// 获取本地参数 -function clickGetLocalCfg() { - WebVideoCtrl.I_GetLocalCfg().then((oLocalConfig) => { - g_oLocalConfig = oLocalConfig; - $("#netsPreach").val(oLocalConfig.buffNumberType); - $("#wndSize").val(oLocalConfig.playWndType); - $("#rulesInfo").val(oLocalConfig.ivsMode); - $("#captureFileFormat").val(oLocalConfig.captureFileFormat); - $("#packSize").val(oLocalConfig.packgeSize); - $("#recordPath").val(oLocalConfig.recordPath); - $("#downloadPath").val(oLocalConfig.downloadPath); - $("#previewPicPath").val(oLocalConfig.capturePath); - $("#playbackPicPath").val(oLocalConfig.playbackPicPath); - $("#devicePicPath").val(oLocalConfig.deviceCapturePath); - $("#playbackFilePath").val(oLocalConfig.playbackFilePath); - $("#protocolType").val(oLocalConfig.protocolType); - $("#secretKey").val("\x7F\x7F\x7F\x7F\x7F\x7F\x7F\x7F"); - showOPInfo("本地配置获取成功!"); - }, (oError) => { - var szInfo = "本地配置获取失败!"; - showOPInfo(szInfo, oError.errorCode, oError.errorMsg); - }); -} - -// 设置本地参数 -async function clickSetLocalCfg() { - g_oLocalConfig.buffNumberType = $("#netsPreach").val(); - g_oLocalConfig.playWndType = $("#wndSize").val(); - g_oLocalConfig.ivsMode = $("#rulesInfo").val(); - g_oLocalConfig.captureFileFormat = $("#captureFileFormat").val(); - g_oLocalConfig.packgeSize = $("#packSize").val(); - g_oLocalConfig.recordPath = $("#recordPath").val(); - g_oLocalConfig.downloadPath = $("#downloadPath").val(); - g_oLocalConfig.capturePath = $("#previewPicPath").val(); - g_oLocalConfig.playbackPicPath = $("#playbackPicPath").val(); - g_oLocalConfig.deviceCapturePath = $("#devicePicPath").val(); - g_oLocalConfig.playbackFilePath = $("#playbackFilePath").val(); - g_oLocalConfig.protocolType = $("#protocolType").val(); - if ("\x7F\x7F\x7F\x7F\x7F\x7F\x7F\x7F" !== $("#secretKey").val()) { - g_oLocalConfig.secretKey = await WebVideoCtrl.I_GetEncryptString($("#secretKey").val()); - } - WebVideoCtrl.I_SetLocalCfg(g_oLocalConfig).then(() => { - showOPInfo("本地配置设置成功!"); - }, (oError) => { - var szInfo = "本地配置设置失败!"; - showOPInfo(szInfo, oError.errorCode, oError.errorMsg); - }); -} - -// 窗口分割数 -function changeWndNum(iType) { - iType = parseInt(iType, 10); - WebVideoCtrl.I_ChangeWndNum(iType).then(() => { - showOPInfo("窗口分割成功!"); - }, (oError) => { - var szInfo = "窗口分割失败!"; - showOPInfo(szInfo, oError.errorCode, oError.errorMsg); - }); -} - -// 登录 -function clickLogin() { - var szIP = $("#loginip").val(), - szPort = $("#port").val(), - szUsername = $("#username").val(), - szPassword = $("#password").val(); - - if ("" == szIP || "" == szPort) { - return; - } - - var szDeviceIdentify = szIP + "_" + szPort; - - WebVideoCtrl.I_Login(szIP, 1, szPort, szUsername, szPassword, { - timeout: 3000, - success: function (xmlDoc) { - showOPInfo(szDeviceIdentify + " 登录成功!"); - $("#ip").prepend(""); - setTimeout(function () { - $("#ip").val(szDeviceIdentify); - setTimeout(function() { - getChannelInfo(); - }, 1000); - getDevicePort(); - }, 10); - }, - error: function (oError) { - if (ERROR_CODE_LOGIN_REPEATLOGIN === status) { - showOPInfo(szDeviceIdentify + " 已登录过!"); - } else { - showOPInfo(szDeviceIdentify + " 登录失败!", oError.errorCode, oError.errorMsg); - } - } - }); -} - -// 退出 -function clickLogout() { - var szDeviceIdentify = $("#ip").val(); - - if (null == szDeviceIdentify) { - return; - } - - WebVideoCtrl.I_Logout(szDeviceIdentify).then(() => { - showOPInfo(szDeviceIdentify + " " + "退出成功!"); - }, () => { - showOPInfo(szDeviceIdentify + " " + "退出失败!"); - }); -} - -// 获取设备信息 -function clickGetDeviceInfo() { - var szDeviceIdentify = $("#ip").val(); - - if (null == szDeviceIdentify) { - return; - } - - WebVideoCtrl.I_GetDeviceInfo(szDeviceIdentify, { - success: function (xmlDoc) { - var arrStr = []; - arrStr.push("设备名称:" + $(xmlDoc).find("deviceName").eq(0).text() + "\r\n"); - arrStr.push("设备ID:" + $(xmlDoc).find("deviceID").eq(0).text() + "\r\n"); - arrStr.push("型号:" + $(xmlDoc).find("model").eq(0).text() + "\r\n"); - arrStr.push("设备序列号:" + $(xmlDoc).find("serialNumber").eq(0).text() + "\r\n"); - arrStr.push("MAC地址:" + $(xmlDoc).find("macAddress").eq(0).text() + "\r\n"); - arrStr.push("主控版本:" + $(xmlDoc).find("firmwareVersion").eq(0).text() + " " + $(xmlDoc).find("firmwareReleasedDate").eq(0).text() + "\r\n"); - arrStr.push("编码版本:" + $(xmlDoc).find("encoderVersion").eq(0).text() + " " + $(xmlDoc).find("encoderReleasedDate").eq(0).text() + "\r\n"); - - showOPInfo(szDeviceIdentify + " 获取设备信息成功!"); - alert(arrStr.join("")); - }, - error: function (oError) { - showOPInfo(szDeviceIdentify + " 获取设备信息失败!", oError.errorCode, oError.errorMsg); - } - }); -} - -// 获取通道 -function getChannelInfo() { - var szDeviceIdentify = $("#ip").val(), - oSel = $("#channels").empty(); - - if (null == szDeviceIdentify) { - return; - } - - // 模拟通道 - WebVideoCtrl.I_GetAnalogChannelInfo(szDeviceIdentify, { - success: function (xmlDoc) { - var oChannels = $(xmlDoc).find("VideoInputChannel"); - - $.each(oChannels, function (i) { - var id = $(this).find("id").eq(0).text(), - name = $(this).find("name").eq(0).text(); - if ("" == name) { - name = "Camera " + (i < 9 ? "0" + (i + 1) : (i + 1)); - } - oSel.append(""); - }); - showOPInfo(szDeviceIdentify + " 获取模拟通道成功!"); - }, - error: function (oError) { - showOPInfo(szDeviceIdentify + " 获取模拟通道失败!", oError.errorCode, oError.errorMsg); - } - }); - // 数字通道 - WebVideoCtrl.I_GetDigitalChannelInfo(szDeviceIdentify, { - success: function (xmlDoc) { - var oChannels = $(xmlDoc).find("InputProxyChannelStatus"); - - $.each(oChannels, function (i) { - var id = $(this).find("id").eq(0).text(), - name = $(this).find("name").eq(0).text(), - online = $(this).find("online").eq(0).text(); - if ("false" == online) {// 过滤禁用的数字通道 - return true; - } - if ("" == name) { - name = "IPCamera " + (i < 9 ? "0" + (i + 1) : (i + 1)); - } - oSel.append(""); - }); - showOPInfo(szDeviceIdentify + " 获取数字通道成功!"); - }, - error: function (oError) { - showOPInfo(szDeviceIdentify + " 获取数字通道失败!", oError.errorCode, oError.errorMsg); - } - }); - // 零通道 - WebVideoCtrl.I_GetZeroChannelInfo(szDeviceIdentify, { - success: function (xmlDoc) { - var oChannels = $(xmlDoc).find("ZeroVideoChannel"); - - $.each(oChannels, function (i) { - var id = $(this).find("id").eq(0).text(), - name = $(this).find("name").eq(0).text(); - if ("" == name) { - name = "Zero Channel " + (i < 9 ? "0" + (i + 1) : (i + 1)); - } - if ("true" == $(this).find("enabled").eq(0).text()) {// 过滤禁用的零通道 - oSel.append(""); - } - }); - showOPInfo(szDeviceIdentify + " 获取零通道成功!"); - }, - error: function (oError) { - showOPInfo(szDeviceIdentify + " 获取零通道失败!", oError.errorCode, oError.errorMsg); - } - }); -} - -// 获取端口 -function getDevicePort() { - var szDeviceIdentify = $("#ip").val(); - - if (null == szDeviceIdentify) { - return; - } - - WebVideoCtrl.I_GetDevicePort(szDeviceIdentify).then((oPort) => { - $("#deviceport").val(oPort.iDevicePort); - $("#rtspport").val(oPort.iRtspPort); - - showOPInfo(szDeviceIdentify + " 获取端口成功!"); - }, (oError) => { - var szInfo = "获取端口失败!"; - showOPInfo(szDeviceIdentify + szInfo, oError.errorCode, oError.errorMsg); - }); -} - -// 获取数字通道 -async function clickGetDigitalChannelInfo() { - var szDeviceIdentify = $("#ip").val(), - iAnalogChannelNum = 0; - - $("#digitalchannellist").empty(); - - if (null == szDeviceIdentify) { - return; - } - - // 模拟通道 - try { - var oAnalogChannelInfo = await WebVideoCtrl.I_GetAnalogChannelInfo(szDeviceIdentify, {}); - iAnalogChannelNum = $(oAnalogChannelInfo).find("VideoInputChannel").length; - } finally { - // 数字通道 - WebVideoCtrl.I_GetDigitalChannelInfo(szDeviceIdentify, { - success: function (xmlDoc) { - var oChannels = $(xmlDoc).find("InputProxyChannelStatus"); - - $.each(oChannels, function () { - var id = parseInt($(this).find("id").eq(0).text(), 10), - ipAddress = $(this).find("ipAddress").eq(0).text(), - srcInputPort = $(this).find("srcInputPort").eq(0).text(), - managePortNo = $(this).find("managePortNo").eq(0).text(), - online = $(this).find("online").eq(0).text(), - proxyProtocol = $(this).find("proxyProtocol").eq(0).text(); - - var objTr = $("#digitalchannellist").get(0).insertRow(-1); - var objTd = objTr.insertCell(0); - objTd.innerHTML = (id - iAnalogChannelNum) < 10 ? "D0" + (id - iAnalogChannelNum) : "D" + (id - iAnalogChannelNum); - objTd = objTr.insertCell(1); - objTd.width = "25%"; - objTd.innerHTML = ipAddress; - objTd = objTr.insertCell(2); - objTd.width = "15%"; - objTd.innerHTML = srcInputPort; - objTd = objTr.insertCell(3); - objTd.width = "20%"; - objTd.innerHTML = managePortNo; - objTd = objTr.insertCell(4); - objTd.width = "15%"; - objTd.innerHTML = "true" == online ? "在线" : "离线"; - objTd = objTr.insertCell(5); - objTd.width = "25%"; - objTd.innerHTML = proxyProtocol; - }); - showOPInfo(szDeviceIdentify + " 获取数字通道成功!"); - }, - error: function (oError) { - showOPInfo(szDeviceIdentify + " 没有数字通道!", oError.errorCode, oError.errorMsg); - } - }); - } -} -// 开始预览 -function clickStartRealPlay(iStreamType) { - var oWndInfo = WebVideoCtrl.I_GetWindowStatus(g_iWndIndex), - szDeviceIdentify = $("#ip").val(), - iRtspPort = parseInt($("#rtspport").val(), 10), - iChannelID = parseInt($("#channels").val(), 10), - bZeroChannel = $("#channels option").eq($("#channels").get(0).selectedIndex).attr("bZero") == "true" ? true : false, - szInfo = ""; - - if ("undefined" === typeof iStreamType) { - iStreamType = parseInt($("#streamtype").val(), 10); - } - - if (null == szDeviceIdentify) { - return; - } - var startRealPlay = function () { - WebVideoCtrl.I_StartRealPlay(szDeviceIdentify, { - iStreamType: iStreamType, - iChannelID: iChannelID, - bZeroChannel: bZeroChannel, - success: function () { - szInfo = "开始预览成功!"; - showOPInfo(szDeviceIdentify + " " + szInfo); - }, - error: function (oError) { - showOPInfo(szDeviceIdentify + " 开始预览失败!", oError.errorCode, oError.errorMsg); - } - }); - }; - - if (oWndInfo != null) {// 已经在播放了,先停止 - WebVideoCtrl.I_Stop({ - success: function () { - startRealPlay(); - } - }); - } else { - startRealPlay(); - } -} -function setTextOverlay() { - var szDeviceIdentify = $("#ip").val(); - var szInfo = ""; - var that = this; - var iChannelID = parseInt($("#channels").val(), 10); - var szUrl = "ISAPI/System/Video/inputs/channels/" + iChannelID + "/overlays"; - WebVideoCtrl.I_GetTextOverlay(szUrl,szDeviceIdentify,{ - success:function(data){ - $(data).find("TextOverlay").eq(0).find("displayText").eq(0).text("我tet"); - $(data).find("TextOverlay").eq(0).find("positionX").eq(0).text("20"); - $(data).find("TextOverlay").eq(0).find("positionY").eq(0).text("30"); - var xmldoc = toXMLStr(data); - var newOptions = { - type: "PUT", - data: xmldoc, - success: function(){ - szInfo = "绘制osd信息成功"; - showOPInfo(szDeviceIdentify + " " + szInfo); - }, - error: function(oError){ - showOPInfo(szDeviceIdentify + " 设置osd信息失败!", oError.errorCode, oError.errorMsg); - } - }; - - WebVideoCtrl.I_SendHTTPRequest(szDeviceIdentify,szUrl,newOptions); - }, - error: function(oError){ - showOPInfo(szDeviceIdentify + " 设置osd信息失败!", oError.errorCode, oError.errorMsg); - } - }); - } -// 停止预览 -function clickStopRealPlay() { - var oWndInfo = WebVideoCtrl.I_GetWindowStatus(g_iWndIndex), - szInfo = ""; - - if (oWndInfo != null) { - WebVideoCtrl.I_Stop({ - success: function () { - szInfo = "停止预览成功!"; - showOPInfo(oWndInfo.szDeviceIdentify + " " + szInfo); - }, - error: function (oError) { - showOPInfo(szDeviceIdentify + " 停止预览失败!", oError.errorCode, oError.errorMsg); - } - }); - } -} - -// 打开声音 -function clickOpenSound() { - var oWndInfo = WebVideoCtrl.I_GetWindowStatus(g_iWndIndex), - szInfo = ""; - - if (oWndInfo != null) { - var allWndInfo = WebVideoCtrl.I_GetWindowStatus(); - // 循环遍历所有窗口,如果有窗口打开了声音,先关闭 - for (var i = 0, iLen = allWndInfo.length; i < iLen; i++) { - oWndInfo = allWndInfo[i]; - if (oWndInfo.bSound) { - WebVideoCtrl.I_CloseSound(oWndInfo.iIndex); - break; - } - } - - WebVideoCtrl.I_OpenSound().then(() => { - showOPInfo(oWndInfo.szDeviceIdentify + " " + "打开声音成功!"); - }, (oError) => { - var szInfo = " 打开声音失败!"; - showOPInfo(oWndInfo.szDeviceIdentify + szInfo, oError.errorCode, oError.errorMsg); - }); - } -} - -// 关闭声音 -function clickCloseSound() { - var oWndInfo = WebVideoCtrl.I_GetWindowStatus(g_iWndIndex), - szInfo = ""; - - if (oWndInfo != null) { - WebVideoCtrl.I_CloseSound().then(() => { - showOPInfo(oWndInfo.szDeviceIdentify + " " + "关闭声音成功!"); - }, (oError) => { - var szInfo = " 关闭声音失败!"; - showOPInfo(oWndInfo.szDeviceIdentify + szInfo, oError.errorCode, oError.errorMsg); - }); - } -} - -// 设置音量 -function clickSetVolume() { - var oWndInfo = WebVideoCtrl.I_GetWindowStatus(g_iWndIndex), - iVolume = parseInt($("#volume").val(), 10), - szInfo = ""; - - if (oWndInfo != null) { - WebVideoCtrl.I_SetVolume(iVolume).then(() => { - showOPInfo(oWndInfo.szDeviceIdentify + " " + "设置音量成功"); - }, (oError) => { - var szInfo = " 设置音量失败!"; - showOPInfo(oWndInfo.szDeviceIdentify + szInfo, oError.errorCode, oError.errorMsg); - }); - } -} - -// 抓图 -async function clickCapturePic(szType) { - var oWndInfo = WebVideoCtrl.I_GetWindowStatus(g_iWndIndex), - szInfo = ""; - - if (oWndInfo != null) { - var oLocalConfig = await WebVideoCtrl.I_GetLocalCfg(); - var szCaptureFileFormat = "0"; - if (oLocalConfig) { - szCaptureFileFormat = oLocalConfig.captureFileFormat; - } - - var szChannelID = $("#channels").val(); - var szPicName = oWndInfo.szDeviceIdentify + "_" + szChannelID + "_" + new Date().getTime(); - //如果是回放抓图,需要增加如下前缀:"playback_" - if ("playback" === szType) { - szPicName = "playback_" + oWndInfo.szDeviceIdentify + "_" + szChannelID + "_" + new Date().getTime(); - } - - szPicName += ("0" === szCaptureFileFormat) ? ".jpg": ".bmp"; - - WebVideoCtrl.I_CapturePic(szPicName, { - bDateDir: true //是否生成日期文件 - }).then(function(){ - szInfo = "抓图成功!"; - showOPInfo(oWndInfo.szDeviceIdentify + " " + szInfo); - }, function(oError){ - szInfo = " 抓图失败!"; - showOPInfo(oWndInfo.szDeviceIdentify + szInfo, oError.errorCode, oError.errorMsg); - }); - } -} -// 抓图 -function clickCapturePicData() { - var oWndInfo = WebVideoCtrl.I_GetWindowStatus(g_iWndIndex), - szInfo = ""; - if (oWndInfo != null) { - WebVideoCtrl.I_CapturePicData().then(function(data){ - console.log(data); - szInfo = "抓图上传成功!"; - showOPInfo(oWndInfo.szDeviceIdentify + " " + szInfo); - },function(){ - szInfo = "抓图失败!"; - showOPInfo(oWndInfo.szDeviceIdentify + " " + szInfo); - }); - } -} - -// 开始录像 -var g_szRecordType = ""; -function clickStartRecord(szType) { - var oWndInfo = WebVideoCtrl.I_GetWindowStatus(g_iWndIndex), - szInfo = ""; - - g_szRecordType = szType; - - if (oWndInfo != null) { - var szChannelID = $("#channels").val(), - szFileName = oWndInfo.szDeviceIdentify + "_" + szChannelID + "_" + new Date().getTime(); - - WebVideoCtrl.I_StartRecord(szFileName, { - bDateDir: true, //是否生成日期文件 - success: function () { - if ('realplay' === szType) { - szInfo = "开始录像成功!"; - } else if ('playback' === szType) { - szInfo = "开始剪辑成功!"; - } - showOPInfo(oWndInfo.szDeviceIdentify + " " + szInfo); - }, - error: function (oError) { - if ('realplay' === szType) { - szInfo = " 开始录像失败!"; - } else if ('playback' === szType) { - szInfo = " 开始剪辑失败!"; - } - showOPInfo(szDeviceIdentify + szInfo, oError.errorCode, oError.errorMsg); - } - }); - } -} - -// 停止录像 -function clickStopRecord(szType, iWndIndex) { - if ("undefined" === typeof iWndIndex) { - iWndIndex = g_iWndIndex; - } - var oWndInfo = WebVideoCtrl.I_GetWindowStatus(iWndIndex), - szInfo = ""; - - if (oWndInfo != null) { - WebVideoCtrl.I_StopRecord({ - success: function () { - if ('realplay' === szType) { - szInfo = "停止录像成功!"; - } else if ('playback' === szType) { - szInfo = "停止剪辑成功!"; - } - showOPInfo(oWndInfo.szDeviceIdentify + " " + szInfo); - }, - error: function (oError) { - if ('realplay' === szType) { - szInfo = "停止录像失败!"; - } else if ('playback' === szType) { - szInfo = "停止剪辑失败!"; - } - sshowOPInfo(szDeviceIdentify + szInfo, oError.errorCode, oError.errorMsg); - } - }); - } -} - -// 获取对讲通道 -function clickGetAudioInfo() { - var szDeviceIdentify = $("#ip").val(); - - if (null == szDeviceIdentify) { - return; - } - - WebVideoCtrl.I_GetAudioInfo(szDeviceIdentify, { - success: function (xmlDoc) { - var oAudioChannels = $(xmlDoc).find("TwoWayAudioChannel"), - oSel = $("#audiochannels").empty(); - $.each(oAudioChannels, function () { - var id = $(this).find("id").eq(0).text(); - - oSel.append(""); - }); - showOPInfo(szDeviceIdentify + " 获取对讲通道成功!"); - }, - error: function (oError) { - showOPInfo(szDeviceIdentify + " 获取对讲通道失败!", oError.errorCode, oError.errorMsg); - } - }); -} - -// 开始对讲 -function clickStartVoiceTalk() { - var szDeviceIdentify = $("#ip").val(), - iAudioChannel = parseInt($("#audiochannels").val(), 10), - szInfo = ""; - - if (null == szDeviceIdentify) { - return; - } - - if (isNaN(iAudioChannel)) { - alert("请选择对讲通道!"); - return; - } - - WebVideoCtrl.I_StartVoiceTalk(szDeviceIdentify, iAudioChannel).then(() => { - szInfo = "开始对讲成功!"; - showOPInfo(szDeviceIdentify + " " + szInfo); - }, (oError) => { - var szInfo = " 开始对讲失败!"; - showOPInfo(szDeviceIdentify + szInfo, oError.errorCode, oError.errorMsg); - }); -} - -// 停止对讲 -function clickStopVoiceTalk() { - var szDeviceIdentify = $("#ip").val(); - WebVideoCtrl.I_StopVoiceTalk().then(() => { - szInfo = "停止对讲成功!"; - showOPInfo(szDeviceIdentify + " " + szInfo); - }, (oError) => { - var szInfo = " 停止对讲失败!"; - showOPInfo(szDeviceIdentify + szInfo, oError.errorCode, oError.errorMsg); - }); -} - -// 启用电子放大 -function clickEnableEZoom() { - var szDeviceIdentify = $("#ip").val(); - var oWndInfo = WebVideoCtrl.I_GetWindowStatus(g_iWndIndex), - szInfo = ""; - - if (oWndInfo != null) { - WebVideoCtrl.I_EnableEZoom().then(() => { - szInfo = "启用电子放大成功!"; - showOPInfo(szDeviceIdentify + " " + szInfo); - }, (oError) => { - szInfo = "启用电子放大失败!"; - showOPInfo(szDeviceIdentify + szInfo, oError.errorCode, oError.errorMsg); - - }); - } -} - -// 禁用电子放大 -function clickDisableEZoom() { - var szDeviceIdentify = $("#ip").val(); - var oWndInfo = WebVideoCtrl.I_GetWindowStatus(g_iWndIndex), - szInfo = ""; - - if (oWndInfo != null) { - WebVideoCtrl.I_DisableEZoom().then(() => { - szInfo = "禁用电子放大成功!"; - showOPInfo(szDeviceIdentify + " " + szInfo); - }, (oError) => { - szInfo = "禁用电子放大失败!"; - showOPInfo(szDeviceIdentify + szInfo, oError.errorCode, oError.errorMsg); - }); - } -} - -// 启用3D放大 -function clickEnable3DZoom() { - var oWndInfo = WebVideoCtrl.I_GetWindowStatus(g_iWndIndex), - szInfo = ""; - var szDeviceIdentify = $("#ip").val(); - - if (oWndInfo != null) { - WebVideoCtrl.I_Enable3DZoom().then(() => { - szInfo = "启用3D放大成功!"; - showOPInfo(szDeviceIdentify + " " + szInfo); - }, (oError) => { - szInfo = "启用3D放大失败!"; - showOPInfo(szDeviceIdentify + szInfo, oError.errorCode, oError.errorMsg); - }); - } -} - -// 禁用3D放大 -function clickDisable3DZoom() { - var oWndInfo = WebVideoCtrl.I_GetWindowStatus(g_iWndIndex), - szInfo = ""; - var szDeviceIdentify = $("#ip").val(); - - if (oWndInfo != null) { - WebVideoCtrl.I_Disable3DZoom().then(() => { - szInfo = "禁用3D放大成功!"; - showOPInfo(szDeviceIdentify + " " + szInfo); - }, (oError) => { - szInfo = "禁用3D放大失败!"; - showOPInfo(szDeviceIdentify + szInfo, oError.errorCode, oError.errorMsg); - }); - } -} - -// 全屏 -function clickFullScreen() { - WebVideoCtrl.I_FullScreen(true).then(() => { - showOPInfo("全屏成功"); - }, (oError) => { - showOPInfo("全屏失败!", oError.errorCode, oError.errorMsg); - }); -} - -// PTZ控制 9为自动,1,2,3,4,5,6,7,8为方向PTZ -var g_bPTZAuto = false; -function mouseDownPTZControl(iPTZIndex) { - var oWndInfo = WebVideoCtrl.I_GetWindowStatus(g_iWndIndex), - bZeroChannel = $("#channels option").eq($("#channels").get(0).selectedIndex).attr("bZero") == "true" ? true : false, - iPTZSpeed = $("#ptzspeed").val(); - - if (bZeroChannel) {// 零通道不支持云台 - return; - } - - if (oWndInfo != null) { - if (9 == iPTZIndex && g_bPTZAuto) { - iPTZSpeed = 0;// 自动开启后,速度置为0可以关闭自动 - } else { - g_bPTZAuto = false;// 点击其他方向,自动肯定会被关闭 - } - - WebVideoCtrl.I_PTZControl(iPTZIndex, false, { - iPTZSpeed: iPTZSpeed, - success: function (xmlDoc) { - if (9 == iPTZIndex && g_bPTZAuto) { - showOPInfo(oWndInfo.szDeviceIdentify + " 停止云台成功!"); - } else { - showOPInfo(oWndInfo.szDeviceIdentify + " 开启云台成功!"); - } - if (9 == iPTZIndex) { - g_bPTZAuto = !g_bPTZAuto; - } - }, - error: function (oError) { - showOPInfo(oWndInfo.szDeviceIdentify + " 开启云台失败!", oError.errorCode, oError.errorMsg); - } - }); - } -} - -// 方向PTZ停止 -function mouseUpPTZControl() { - var oWndInfo = WebVideoCtrl.I_GetWindowStatus(g_iWndIndex); - - if (oWndInfo != null) { - WebVideoCtrl.I_PTZControl(1, true, { - success: function (xmlDoc) { - showOPInfo(oWndInfo.szDeviceIdentify + " 停止云台成功!"); - }, - error: function (oError) { - showOPInfo(oWndInfo.szDeviceIdentify + " 停止云台失败!", oError.errorCode, oError.errorMsg); - } - }); - } -} - -// 设置预置点 -function clickSetPreset() { - var oWndInfo = WebVideoCtrl.I_GetWindowStatus(g_iWndIndex), - iPresetID = parseInt($("#preset").val(), 10); - - if (oWndInfo != null) { - WebVideoCtrl.I_SetPreset(iPresetID, { - success: function (xmlDoc) { - showOPInfo(oWndInfo.szDeviceIdentify + " 设置预置点成功!"); - }, - error: function (oError) { - showOPInfo(oWndInfo.szDeviceIdentify + " 设置预置点失败!", oError.errorCode, oError.errorMsg); - } - }); - } -} - -// 调用预置点 -function clickGoPreset() { - var oWndInfo = WebVideoCtrl.I_GetWindowStatus(g_iWndIndex), - iPresetID = parseInt($("#preset").val(), 10); - - if (oWndInfo != null) { - WebVideoCtrl.I_GoPreset(iPresetID, { - success: function (xmlDoc) { - showOPInfo(oWndInfo.szDeviceIdentify + " 调用预置点成功!"); - }, - error: function (oError) { - showOPInfo(oWndInfo.szDeviceIdentify + " 调用预置点失败!", oError.errorCode, oError.errorMsg); - } - }); - } -} - -// 搜索录像 -var g_iSearchTimes = 0; -function clickRecordSearch(iType) { - var szDeviceIdentify = $("#ip").val(), - iChannelID = parseInt($("#channels").val(), 10), - bZeroChannel = $("#channels option").eq($("#channels").get(0).selectedIndex).attr("bZero") == "true" ? true : false, - iStreamType = parseInt($("#record_streamtype").val(), 10), - szStartTime = $("#starttime").val(), - szEndTime = $("#endtime").val(); - if (Date.parse(szEndTime.replace(/-/g, "/")) - Date.parse(szStartTime.replace(/-/g, "/")) < 0) { - alert("开始时间大于结束时间"); - return; - } - if (null == szDeviceIdentify) { - return; - } - - if (bZeroChannel) {// 零通道不支持录像搜索 - return; - } - - if (0 == iType) {// 首次搜索 - $("#searchlist").empty(); - g_iSearchTimes = 0; - } - - //如果是前端设备,需要将搜索时间转换为UTC时间 - WebVideoCtrl.I_RecordSearch(szDeviceIdentify, iChannelID, szStartTime, szEndTime, { - iStreamType: iStreamType, - iSearchPos: g_iSearchTimes, - success: function (xmlDoc) { - if ("MORE" === $(xmlDoc).find("responseStatusStrg").eq(0).text()) { - for(var i = 0, nLen = $(xmlDoc).find("searchMatchItem").length; i < nLen; i++) { - var szPlaybackURI = $(xmlDoc).find("playbackURI").eq(i).text(); - if(szPlaybackURI.indexOf("name=") < 0) { - break; - } - var szStartTime = $(xmlDoc).find("startTime").eq(i).text(); - var szEndTime = $(xmlDoc).find("endTime").eq(i).text(); - var szFileName = szPlaybackURI.substring(szPlaybackURI.indexOf("name=") + 5, szPlaybackURI.indexOf("&size=")); - - var objTr = $("#searchlist").get(0).insertRow(-1); - var objTd = objTr.insertCell(0); - objTd.id = "downloadTd" + i; - objTd.innerHTML = g_iSearchTimes + 1; - objTd = objTr.insertCell(1); - objTd.width = "30%"; - objTd.innerHTML = szFileName; - objTd = objTr.insertCell(2); - objTd.width = "30%"; - objTd.innerHTML = (szStartTime.replace("T", " ")).replace("Z", ""); - objTd = objTr.insertCell(3); - objTd.width = "30%"; - objTd.innerHTML = (szEndTime.replace("T", " ")).replace("Z", ""); - objTd = objTr.insertCell(4); - objTd.width = "10%"; - objTd.innerHTML = "下载"; - $("#downloadTd" + g_iSearchTimes).data("fileName", szFileName); - $("#downloadTd" + g_iSearchTimes).data("playbackURI", szPlaybackURI); - ++g_iSearchTimes; - } - - clickRecordSearch(1);// 继续搜索 - } else if ("OK" === $(xmlDoc).find("responseStatusStrg").eq(0).text()) { - var iLength = $(xmlDoc).find("searchMatchItem").length; - for(var i = 0; i < iLength; i++) { - var szPlaybackURI = $(xmlDoc).find("playbackURI").eq(i).text(); - if(szPlaybackURI.indexOf("name=") < 0) { - break; - } - var szStartTime = $(xmlDoc).find("startTime").eq(i).text(); - var szEndTime = $(xmlDoc).find("endTime").eq(i).text(); - var szFileName = szPlaybackURI.substring(szPlaybackURI.indexOf("name=") + 5, szPlaybackURI.indexOf("&size=")); - - var objTr = $("#searchlist").get(0).insertRow(-1); - var objTd = objTr.insertCell(0); - objTd.id = "downloadTd" + i; - objTd.innerHTML = g_iSearchTimes + 1; - objTd = objTr.insertCell(1); - objTd.width = "30%"; - objTd.innerHTML = szFileName; - objTd = objTr.insertCell(2); - objTd.width = "30%"; - objTd.innerHTML = (szStartTime.replace("T", " ")).replace("Z", ""); - objTd = objTr.insertCell(3); - objTd.width = "30%"; - objTd.innerHTML = (szEndTime.replace("T", " ")).replace("Z", ""); - objTd = objTr.insertCell(4); - objTd.width = "10%"; - objTd.innerHTML = "下载"; - $("#downloadTd" + g_iSearchTimes).data("fileName", szFileName); - $("#downloadTd" + g_iSearchTimes).data("playbackURI", szPlaybackURI); - ++g_iSearchTimes; - } - showOPInfo(szDeviceIdentify + " 搜索录像文件成功!"); - } else if("NO MATCHES" === $(xmlDoc).find("responseStatusStrg").eq(0).text()) { - setTimeout(function() { - g_iSearchTimes = 0; - showOPInfo(szDeviceIdentify + " 没有录像文件!"); - }, 50); - } - }, - error: function (oError) { - g_iSearchTimes = 0; - showOPInfo(szDeviceIdentify + " 搜索录像文件失败!", oError.errorCode, oError.errorMsg); - } - }); -} - -// 开始回放 -function clickStartPlayback() { - var oWndInfo = WebVideoCtrl.I_GetWindowStatus(g_iWndIndex), - szDeviceIdentify = $("#ip").val(), - iRtspPort = parseInt($("#rtspport").val(), 10), - iStreamType = parseInt($("#record_streamtype").val(), 10), - bZeroChannel = $("#channels option").eq($("#channels").get(0).selectedIndex).attr("bZero") == "true" ? true : false, - iChannelID = parseInt($("#channels").val(), 10), - szStartTime = $("#starttime").val(), - szEndTime = $("#endtime").val(), - szInfo = "", - bChecked = $("#transstream").prop("checked"), - iRet = -1; - - if (null == szDeviceIdentify) { - return; - } - - if (bZeroChannel) {// 零通道不支持回放 - return; - } - - var startPlayback = function () { - if (bChecked) {// 启用转码回放 - var oTransCodeParam = { - TransFrameRate: "14",// 0:全帧率,5:1,6:2,7:4,8:6,9:8,10:10,11:12,12:16,14:15,15:18,13:20,16:22 - TransResolution: "1",// 255:Auto,3:4CIF,2:QCIF,1:CIF - TransBitrate: "19"// 2:32K,3:48K,4:64K,5:80K,6:96K,7:128K,8:160K,9:192K,10:224K,11:256K,12:320K,13:384K,14:448K,15:512K,16:640K,17:768K,18:896K,19:1024K,20:1280K,21:1536K,22:1792K,23:2048K,24:3072K,25:4096K,26:8192K - }; - WebVideoCtrl.I_StartPlayback(szDeviceIdentify, { - iRtspPort: iRtspPort, - iStreamType: iStreamType, - iChannelID: iChannelID, - szStartTime: szStartTime, - szEndTime: szEndTime, - oTransCodeParam: oTransCodeParam, - success: function () { - szInfo = "开始回放成功!"; - showOPInfo(szDeviceIdentify + " " + szInfo); - }, - error: function (oError) { - szInfo = "开始回放失败!"; - showOPInfo(szDeviceIdentify + szInfo, oError.errorCode, oError.errorMsg); - } - }); - } else { - WebVideoCtrl.I_StartPlayback(szDeviceIdentify, { - iRtspPort: iRtspPort, - iStreamType: iStreamType, - iChannelID: iChannelID, - szStartTime: szStartTime, - szEndTime: szEndTime, - success: function () { - szInfo = "开始回放成功!"; - showOPInfo(szDeviceIdentify + " " + szInfo); - }, - error: function (oError) { - szInfo = "开始回放失败!"; - showOPInfo(szDeviceIdentify + szInfo, oError.errorCode, oError.errorMsg); - } - }); - } - }; - - if (oWndInfo != null) {// 已经在播放了,先停止 - WebVideoCtrl.I_Stop({ - success: function () { - startPlayback(); - } - }); - } else { - startPlayback(); - } -} - -// 停止回放 -function clickStopPlayback() { - var oWndInfo = WebVideoCtrl.I_GetWindowStatus(g_iWndIndex), - szInfo = ""; - - if (oWndInfo != null) { - WebVideoCtrl.I_Stop({ - success: function () { - szInfo = "停止回放成功!"; - showOPInfo(oWndInfo.szDeviceIdentify + " " + szInfo); - }, - error: function (oError) { - szInfo = "停止回放失败!"; - showOPInfo(szDeviceIdentify + szInfo, oError.errorCode, oError.errorMsg); - } - }); - } -} - -// 开始倒放 -function clickReversePlayback() { - var oWndInfo = WebVideoCtrl.I_GetWindowStatus(g_iWndIndex), - szDeviceIdentify = $("#ip").val(), - iRtspPort = parseInt($("#rtspport").val(), 10), - iStreamType = parseInt($("#record_streamtype").val(), 10), - bZeroChannel = $("#channels option").eq($("#channels").get(0).selectedIndex).attr("bZero") == "true" ? true : false, - iChannelID = parseInt($("#channels").val(), 10), - szStartTime = $("#starttime").val(), - szEndTime = $("#endtime").val(), - szInfo = ""; - - if (null == szDeviceIdentify) { - return; - } - - if (bZeroChannel) {// 零通道不支持倒放 - return; - } - - var reversePlayback = function () { - WebVideoCtrl.I_ReversePlayback(szDeviceIdentify, { - iRtspPort: iRtspPort, - iStreamType: iStreamType, - iChannelID: iChannelID, - szStartTime: szStartTime, - szEndTime: szEndTime - }).then(() => { - szInfo = "开始倒放成功!"; - showOPInfo(szDeviceIdentify + " " + szInfo); - }, (oError) => { - szInfo = "开始倒放失败!"; - showOPInfo(szDeviceIdentify + szInfo, oError.errorCode, oError.errorMsg); - }); - }; - - if (oWndInfo != null) {// 已经在播放了,先停止 - WebVideoCtrl.I_Stop({ - success: function () { - reversePlayback(); - } - }); - } else { - reversePlayback(); - } -} - -// 单帧 -function clickFrame() { - var oWndInfo = WebVideoCtrl.I_GetWindowStatus(g_iWndIndex), - szInfo = ""; - - if (oWndInfo != null) { - WebVideoCtrl.I_Frame({ - success: function () { - szInfo = "单帧播放成功!"; - showOPInfo(oWndInfo.szDeviceIdentify + " " + szInfo); - }, - error: function (oError) { - szInfo = "单帧播放失败!"; - showOPInfo(szDeviceIdentify + szInfo, oError.errorCode, oError.errorMsg); - } - }); - } -} - -// 暂停 -function clickPause() { - var oWndInfo = WebVideoCtrl.I_GetWindowStatus(g_iWndIndex), - szInfo = ""; - - if (oWndInfo != null) { - WebVideoCtrl.I_Pause({ - success: function () { - szInfo = "暂停成功!"; - showOPInfo(oWndInfo.szDeviceIdentify + " " + szInfo); - }, - error: function (oError) { - szInfo = "暂停失败!"; - showOPInfo(oWndInfo.szDeviceIdentify + szInfo, oError.errorCode, oError.errorMsg); - } - }); - } -} - -// 恢复 -function clickResume() { - var oWndInfo = WebVideoCtrl.I_GetWindowStatus(g_iWndIndex), - szInfo = ""; - - if (oWndInfo != null) { - WebVideoCtrl.I_Resume({ - success: function () { - szInfo = "恢复成功!"; - showOPInfo(oWndInfo.szDeviceIdentify + " " + szInfo); - }, - error: function (oError) { - szInfo = "恢复失败!"; - showOPInfo(oWndInfo.szDeviceIdentify + szInfo, oError.errorCode, oError.errorMsg); - } - }); - } -} - -// 慢放 -function clickPlaySlow() { - var oWndInfo = WebVideoCtrl.I_GetWindowStatus(g_iWndIndex), - szInfo = ""; - - if (oWndInfo != null) { - WebVideoCtrl.I_PlaySlow({ - success: function () { - szInfo = "慢放成功!"; - showOPInfo(oWndInfo.szDeviceIdentify + " " + szInfo); - }, - error: function (oError) { - szInfo = "慢放失败!"; - showOPInfo(oWndInfo.szDeviceIdentify + szInfo, oError.errorCode, oError.errorMsg); - } - }); - } -} - -// 快放 -function clickPlayFast() { - var oWndInfo = WebVideoCtrl.I_GetWindowStatus(g_iWndIndex), - szInfo = ""; - - if (oWndInfo != null) { - WebVideoCtrl.I_PlayFast({ - success: function () { - szInfo = "快放成功!"; - showOPInfo(oWndInfo.szDeviceIdentify + " " + szInfo); - }, - error: function (oError) { - szInfo = "快放失败!"; - showOPInfo(oWndInfo.szDeviceIdentify + szInfo, oError.errorCode, oError.errorMsg); - } - }); - } -} - -// OSD时间 -function clickGetOSDTime() { - var oWndInfo = WebVideoCtrl.I_GetWindowStatus(g_iWndIndex); - - if (oWndInfo != null) { - WebVideoCtrl.I_GetOSDTime({ - success: function (szOSDTime) { - $("#osdtime").val(szOSDTime); - showOPInfo(oWndInfo.szDeviceIdentify + " 获取OSD时间成功!"); - }, - error: function (oError) { - showOPInfo(oWndInfo.szDeviceIdentify + " 获取OSD时间失败!", oError.errorCode, oError.errorMsg); - } - }); - } -} - -// 下载录像 -var g_iDownloadID = -1; -var g_tDownloadProcess = 0; -function clickStartDownloadRecord(i) { - var szDeviceIdentify = $("#ip").val(), - szChannelID = $("#channels").val(), - szFileName = $("#downloadTd" + i).data("fileName"), - szPlaybackURI = $("#downloadTd" + i).data("playbackURI"); - - if (null == szDeviceIdentify) { - return; - } - - WebVideoCtrl.I_StartDownloadRecord(szDeviceIdentify, szPlaybackURI, szFileName, { - bDateDir: true //是否生成日期文件 - }).then((iDownloadID) => { - g_iDownloadID = iDownloadID; - $("
").appendTo("body"); - g_tDownloadProcess = setInterval("downProcess(" + i + ")", 1000); - }, (oError) => { - WebVideoCtrl.I_GetLastError().then((iErrorValue) => { - if (34 == iErrorValue) { - showOPInfo(szDeviceIdentify + " 已下载!"); - } else if (33 == iErrorValue) { - showOPInfo(szDeviceIdentify + " 空间不足!"); - } else { - showOPInfo(szDeviceIdentify + " 下载失败!"); - } - }); - }); -} -function clickStartDownloadRecordByTime() { - var szDeviceIdentify = $("#ip").val(), - szChannelID = $("#channels").val(), - szFileName = $("#downloadTd0").data("fileName"), - szPlaybackURI = $("#downloadTd0").data("playbackURI"), - szStartTime = $("#downloadstarttime").val(), - szEndTime = $("#downloadendtime").val(); - if (null == szDeviceIdentify) { - return; - } - if (Date.parse(szEndTime.replace(/-/g, "/")) - Date.parse(szStartTime.replace(/-/g, "/")) < 0) { - alert("开始时间大于结束时间"); - return; - } - WebVideoCtrl.I_StartDownloadRecordByTime(szDeviceIdentify, szPlaybackURI, szFileName, szStartTime,szEndTime,{ - bDateDir: true //是否生成日期文件 - }).then((iDownloadID) => { - g_iDownloadID = iDownloadID; - $("
").appendTo("body"); - g_tDownloadProcess = setInterval("downProcess(" + 0 + ")", 1000); - }, (oError) => { - showOPInfo(szDeviceIdentify + " 下载失败!"); - }); -} - -function clickStopDownload() { - WebVideoCtrl.I_StopDownloadRecord(g_iDownloadID).then(() => { - showOPInfo("停止下载成功!"); - clearInterval(g_tDownloadProcess); - g_tDownloadProcess = 0; - g_iDownloadID = -1; - $("#downProcess").remove(); - }, (oError) => { - showOPInfo(szDeviceIdentify + " 停止下载失败!", oError.errorCode, oError.errorMsg); - }); -} -// 下载进度 -async function downProcess() { - var iStatus = await WebVideoCtrl.I_GetDownloadStatus(g_iDownloadID); - if (0 == iStatus) { - $("#downProcess").css({ - width: $("#searchlist").width() + "px", - height: "100px", - lineHeight: "100px", - left: $("#searchdiv").offset().left + "px", - top: $("#searchdiv").offset().top + "px" - }); - var iProcess = await WebVideoCtrl.I_GetDownloadProgress(g_iDownloadID); - if (iProcess < 0) { - clearInterval(g_tDownloadProcess); - g_tDownloadProcess = 0; - g_iDownloadID = -1; - } else if (iProcess < 100) { - $("#downProcess").text(iProcess + "%"); - } else { - $("#downProcess").text("100%"); - setTimeout(function () { - $("#downProcess").remove(); - }, 1000); - - await WebVideoCtrl.I_StopDownloadRecord(g_iDownloadID); - - showOPInfo("录像下载完成!"); - clearInterval(g_tDownloadProcess); - g_tDownloadProcess = 0; - g_iDownloadID = -1; - } - } else { - await WebVideoCtrl.I_StopDownloadRecord(g_iDownloadID); - - clearInterval(g_tDownloadProcess); - g_tDownloadProcess = 0; - g_iDownloadID = -1; - } -} - -// 导出配置文件 -function clickExportDeviceConfig() { - var szDeviceIdentify = $("#ip").val(), - szInfo = ""; - - if (null == szDeviceIdentify) { - return; - } - var szDevicePassWord = $("#edfpassword").val(); - - WebVideoCtrl.I_ExportDeviceConfig(szDeviceIdentify,szDevicePassWord).then(() => { - szInfo = "导出配置文件成功!"; - showOPInfo(szDeviceIdentify + " " + szInfo); - }, (oError) => { - szInfo = "导出配置文件失败!"; - showOPInfo(szDeviceIdentify + szInfo, oError.errorCode, oError.errorMsg); - }); -} - -// 导入配置文件 -function clickImportDeviceConfig() { - var szDeviceIdentify = $("#ip").val(), - szFileName = $("#configFile").val(), - szDevicePassWord = $("#edfpassword").val(), - szInfo = ""; - if (null == szDeviceIdentify) { - return; - } - - if ("" == szFileName) { - alert("请选择配置文件!"); - return; - } - - WebVideoCtrl.I_ImportDeviceConfig(szDeviceIdentify, szFileName,szDevicePassWord).then(() => { - szInfo = "导入成功!"; - showOPInfo(szDeviceIdentify + " " + szInfo); - WebVideoCtrl.I_Restart(szDeviceIdentify, { - success: function (xmlDoc) { - $("
重启中...
").appendTo("body"); - var oSize = getWindowSize(); - $("#restartDiv").css({ - width: oSize.width + "px", - height: oSize.height + "px", - lineHeight: oSize.height + "px", - left: 0, - top: 0 - }); - setTimeout("reconnect('" + szDeviceIdentify + "')", 20000); - }, - error: function (oError) { - showOPInfo(szDeviceIdentify + " 重启失败!", oError.errorCode, oError.errorMsg); - } - }); - }, (oError) => { - szInfo = "导入失败!"; - showOPInfo(szDeviceIdentify + szInfo, oError.errorCode, oError.errorMsg); - }); -} - -// 重连 -function reconnect(szDeviceIdentify) { - WebVideoCtrl.I_Reconnect(szDeviceIdentify, { - timeout: 3000, - success: function (xmlDoc) { - $("#restartDiv").remove(); - }, - error: function () { - setTimeout(function () {reconnect(szDeviceIdentify);}, 5000); - } - }); -} - -// 开始升级 -var g_tUpgrade = 0; -function clickStartUpgrade(szDeviceIdentify) { - var szDeviceIdentify = $("#ip").val(), - szFileName = $("#upgradeFile").val(); - - if (null == szDeviceIdentify) { - return; - } - - if ("" == szFileName) { - alert("请选择升级文件!"); - return; - } - WebVideoCtrl.I_StartUpgrade(szDeviceIdentify, szFileName).then(function(){ - g_tUpgrade = setInterval("getUpgradeStatus('" + szDeviceIdentify + "')", 1000); - },function(){ - clearInterval(g_tUpgrade); - showOPInfo(szDeviceIdentify + " 升级失败!"); - }); -} - -// 获取升级状态 -async function getUpgradeStatus(szDeviceIdentify) { - var bUpdating = await WebVideoCtrl.I_UpgradeStatus(szDeviceIdentify); - if (bUpdating) { - var iProcess = await WebVideoCtrl.I_UpgradeProgress(szDeviceIdentify); - if (iProcess < 0) { - clearInterval(g_tUpgrade); - g_tUpgrade = 0; - showOPInfo(szDeviceIdentify + " 获取进度失败!"); - return; - } else if (iProcess < 100) { - if (0 == $("#restartDiv").length) { - $("
").appendTo("body"); - var oSize = getWindowSize(); - $("#restartDiv").css({ - width: oSize.width + "px", - height: oSize.height + "px", - lineHeight: oSize.height + "px", - left: 0, - top: 0 - }); - } - $("#restartDiv").text(iProcess + "%"); - } else { - await WebVideoCtrl.I_StopUpgrade(); - clearInterval(g_tUpgrade); - g_tUpgrade = 0; - - $("#restartDiv").remove(); - - WebVideoCtrl.I_Restart(szDeviceIdentify, { - success: function (xmlDoc) { - $("
重启中...
").appendTo("body"); - var oSize = getWindowSize(); - $("#restartDiv").css({ - width: oSize.width + "px", - height: oSize.height + "px", - lineHeight: oSize.height + "px", - left: 0, - top: 0 - }); - setTimeout("reconnect('" + szDeviceIdentify + "')", 20000); - }, - error: function (oError) { - showOPInfo(szDeviceIdentify + " 重启失败!", oError.errorCode, oError.errorMsg); - } - }); - } - } else { - await WebVideoCtrl.I_StopUpgrade(); - clearInterval(g_tUpgrade); - g_tUpgrade = 0; - - $("#restartDiv").remove(); - - WebVideoCtrl.I_Restart(szDeviceIdentify, { - success: function () { - $("
重启中...
").appendTo("body"); - var oSize = getWindowSize(); - $("#restartDiv").css({ - width: oSize.width + "px", - height: oSize.height + "px", - lineHeight: oSize.height + "px", - left: 0, - top: 0 - }); - setTimeout("reconnect('" + szDeviceIdentify + "')", 20000); - }, - error: function (oError) { - showOPInfo(szDeviceIdentify + " 重启失败!", oError.errorCode, oError.errorMsg); - } - }); - } -} - -// 检查插件版本 -function clickCheckPluginVersion() { - var szDeviceIdentify = $("#ip").val(); - WebVideoCtrl.I_CheckPluginVersion().then((bNeedUpdate) => { - if (bNeedUpdate) { - alert("检测到新的插件版本!"); - } else { - alert("您的插件版本已经是最新的!"); - } - }, () => { - showOPInfo(szDeviceIdentify + " 检测插件新版本失败"); - }); -} - -function clickRestoreDefault() { - var szDeviceIdentify = $("#ip").val(), - szMode = "basic"; - WebVideoCtrl.I_RestoreDefault(szDeviceIdentify, szMode).then(() => { - $("#restartDiv").remove(); - showOPInfo(szDeviceIdentify + " 恢复默认参数成功!"); - }, (oError) => { - showOPInfo(szDeviceIdentify + " 恢复默认参数失败!", oError.errorCode, oError.errorMsg); - }); -} - -function PTZZoomIn() { - var oWndInfo = WebVideoCtrl.I_GetWindowStatus(g_iWndIndex); - - if (oWndInfo != null) { - WebVideoCtrl.I_PTZControl(10, false, { - iWndIndex: g_iWndIndex, - success: function (xmlDoc) { - showOPInfo(oWndInfo.szDeviceIdentify + " 调焦+成功!"); - }, - error: function (oError) { - showOPInfo(oWndInfo.szDeviceIdentify + " 调焦+失败!", oError.errorCode, oError.errorMsg); - } - }); - } -} - -function PTZZoomout() { - var oWndInfo = WebVideoCtrl.I_GetWindowStatus(g_iWndIndex); - - if (oWndInfo != null) { - WebVideoCtrl.I_PTZControl(11, false, { - iWndIndex: g_iWndIndex, - success: function (xmlDoc) { - showOPInfo(oWndInfo.szDeviceIdentify + " 调焦-成功!"); - }, - error: function (oError) { - showOPInfo(oWndInfo.szDeviceIdentify + " 调焦-失败!", oError.errorCode, oError.errorMsg); - } - }); - } -} - -function PTZZoomStop() { - var oWndInfo = WebVideoCtrl.I_GetWindowStatus(g_iWndIndex); - - if (oWndInfo != null) { - WebVideoCtrl.I_PTZControl(11, true, { - iWndIndex: g_iWndIndex, - success: function (xmlDoc) { - showOPInfo(oWndInfo.szDeviceIdentify + " 调焦停止成功!"); - }, - error: function (oError) { - showOPInfo(oWndInfo.szDeviceIdentify + " 调焦停止失败!", oError.errorCode, oError.errorMsg); - } - }); - } -} - -function PTZFocusIn() { - var oWndInfo = WebVideoCtrl.I_GetWindowStatus(g_iWndIndex); - - if (oWndInfo != null) { - WebVideoCtrl.I_PTZControl(12, false, { - iWndIndex: g_iWndIndex, - success: function (xmlDoc) { - showOPInfo(oWndInfo.szDeviceIdentify + " 聚焦+成功!"); - }, - error: function (oError) { - showOPInfo(oWndInfo.szDeviceIdentify + " 聚焦+失败!", oError.errorCode, oError.errorMsg); - } - }); - } -} - -function PTZFoucusOut() { - var oWndInfo = WebVideoCtrl.I_GetWindowStatus(g_iWndIndex); - - if (oWndInfo != null) { - WebVideoCtrl.I_PTZControl(13, false, { - iWndIndex: g_iWndIndex, - success: function (xmlDoc) { - showOPInfo(oWndInfo.szDeviceIdentify + " 聚焦-成功!"); - }, - error: function (oError) { - showOPInfo(oWndInfo.szDeviceIdentify + " 聚焦-失败!", oError.errorCode, oError.errorMsg); - } - }); - } -} - -function PTZFoucusStop() { - var oWndInfo = WebVideoCtrl.I_GetWindowStatus(g_iWndIndex); - - if (oWndInfo != null) { - WebVideoCtrl.I_PTZControl(12, true, { - iWndIndex: g_iWndIndex, - success: function (xmlDoc) { - showOPInfo(oWndInfo.szDeviceIdentify + " 聚焦停止成功!"); - }, - error: function (oError) { - showOPInfo(oWndInfo.szDeviceIdentify + " 聚焦停止失败!", oError.errorCode, oError.errorMsg); - } - }); - } -} - -function PTZIrisIn() { - var oWndInfo = WebVideoCtrl.I_GetWindowStatus(g_iWndIndex); - - if (oWndInfo != null) { - WebVideoCtrl.I_PTZControl(14, false, { - iWndIndex: g_iWndIndex, - success: function (xmlDoc) { - showOPInfo(oWndInfo.szDeviceIdentify + " 光圈+成功!"); - }, - error: function (oError) { - showOPInfo(oWndInfo.szDeviceIdentify + " 光圈+失败!", oError.errorCode, oError.errorMsg); - } - }); - } -} - -function PTZIrisOut() { - var oWndInfo = WebVideoCtrl.I_GetWindowStatus(g_iWndIndex); - - if (oWndInfo != null) { - WebVideoCtrl.I_PTZControl(15, false, { - iWndIndex: g_iWndIndex, - success: function (xmlDoc) { - showOPInfo(oWndInfo.szDeviceIdentify + " 光圈-成功!"); - }, - error: function (oError) { - showOPInfo(oWndInfo.szDeviceIdentify + " 光圈-失败!", oError.errorCode, oError.errorMsg); - } - }); - } -} - -function PTZIrisStop() { - var oWndInfo = WebVideoCtrl.I_GetWindowStatus(g_iWndIndex); - - if (oWndInfo != null) { - WebVideoCtrl.I_PTZControl(14, true, { - iWndIndex: g_iWndIndex, - success: function (xmlDoc) { - showOPInfo(oWndInfo.szDeviceIdentify + " 光圈停止成功!"); - }, - error: function (oError) { - showOPInfo(oWndInfo.szDeviceIdentify + " 光圈停止失败!", oError.errorCode, oError.errorMsg); - } - }); - } -} - -// 切换模式 -function changeIPMode(iType) { - var arrPort = [0, 7071, 80]; - - $("#serverport").val(arrPort[iType]); -} - -// 获取设备IP,B1暂不支持 -// function clickGetDeviceIP() { -// var iDeviceMode = parseInt($("#devicemode").val(), 10), -// szAddress = $("#serveraddress").val(), -// iPort = parseInt($("#serverport").val(), 10) || 0, -// szDeviceID = $("#deviceid").val(), -// szDeviceInfo = ""; - -// szDeviceInfo = WebVideoCtrl.I_GetIPInfoByMode(iDeviceMode, szAddress, iPort, szDeviceID); - -// if ("" == szDeviceInfo) { -// showOPInfo("设备IP和端口解析失败!"); -// } else { -// showOPInfo("设备IP和端口解析成功!"); - -// var arrTemp = szDeviceInfo.split("-"); -// $("#loginip").val(arrTemp[0]); -// $("#deviceport").val(arrTemp[1]); -// } -// } - -// 启用多边形绘制 -var g_bEnableDraw = false; -function clickEnableDraw() { - WebVideoCtrl.I_SetPlayModeType(6).then(() => { - g_bEnableDraw = true; - showOPInfo("启用绘制成功!"); - }, (oError) => { - showOPInfo("启用绘制失败!", oError.errorCode, oError.errorMsg); - }); -} - -// 禁用多边形绘制 -function clickDisableDraw() { - WebVideoCtrl.I_SetSnapDrawMode(0, -1).then(() => { - g_bEnableDraw = false; - showOPInfo("禁用绘制成功!"); - }, (oError) => { - showOPInfo("禁用绘制失败!", oError.errorCode, oError.errorMsg); - }); -} - -// 添加图形,最多不超过16个图形 -function clickAddSnapPolygon() { - if (!g_bEnableDraw) { - return; - } - - var szId = $("#snapId").val(); - var szName = encodeString($("#snapName").val()); - - var szInfo = ""; - szInfo += ""; - szInfo += ""; - szInfo += "" + szId + ""; // [1, 32] - szInfo += "0"; //如果想绘制多边形,polygonType指需要改为1 - szInfo += "17"; // [MinClosed, 17] - szInfo += "4"; // [4, 17] - szInfo += "#" + szId + "#" + szName + ""; - szInfo += "false"; - szInfo += "02550"; - szInfo += ""; - szInfo += ""; - szInfo += ""; - - WebVideoCtrl.I_SetSnapPolygonInfo(g_iWndIndex, szInfo).then(() => { - showOPInfo("添加图形成功!"); - }); - WebVideoCtrl.I_SetSnapDrawMode(g_iWndIndex, 2); -} - -// 删除图形 -function clickDelSnapPolygon() { - if (!g_bEnableDraw) { - return; - } - - var szId = $("#snapId").val(); - var aShapes = []; - aShapes.push({ - polygonType: 0, - id: szId - }); - - WebVideoCtrl.I_ClearSnapInfo(g_iWndIndex, aShapes); -} - -// 获取图形,保存到自己数据库中 -function clickGetSnapPolygon() { - WebVideoCtrl.I_GetSnapPolygonInfo(g_iWndIndex).then((szXml) => { - alert(szXml); - }); -} - -// 设置图形,页面打开时可以设置以前设置过的图形 -function clickSetSnapPolygon() { - if (!g_bEnableDraw) { - return; - } - - WebVideoCtrl.I_ClearSnapInfo(g_iWndIndex); - - var szInfo = ""; - szInfo += ""; - szInfo += ""; - szInfo += "1"; - szInfo += "1"; - szInfo += "#1#设置1"; - szInfo += "true"; - szInfo += "02550"; - szInfo += ""; - szInfo += "0.7379030.229730"; - szInfo += "0.9475810.804054"; - szInfo += "0.3629030.777027"; - szInfo += ""; - szInfo += ""; - szInfo += ""; - szInfo += "2"; - szInfo += "0"; - szInfo += "#2#设置2"; - szInfo += "true"; - szInfo += "2552550"; - szInfo += ""; - szInfo += "0.20.2"; - szInfo += "0.80.2"; - szInfo += "0.80.8"; - szInfo += "0.20.8"; - szInfo += ""; - szInfo += ""; - szInfo += ""; - - WebVideoCtrl.I_SetSnapPolygonInfo(g_iWndIndex, szInfo).then(() => { - showOPInfo("设置图形成功!"); - }, (oError) => { - showOPInfo("设置图形失败!", oError.errorCode, oError.errorMsg); - }); -} - -// 清空图形 -function clickDelAllSnapPolygon() { - if (!g_bEnableDraw) { - return; - } - - WebVideoCtrl.I_ClearSnapInfo(g_iWndIndex).then(() => { - showOPInfo("清空图形成功!"); - }, (oError) => { - showOPInfo("清空图形失败!", oError.errorCode, oError.errorMsg); - }); -} - -// 设备抓图 -function clickDeviceCapturePic() { - var szInfo = ""; - var szDeviceIdentify = $("#ip").val(); - var bZeroChannel = $("#channels option").eq($("#channels").get(0).selectedIndex).attr("bZero") == "true" ? true : false; - var iChannelID = parseInt($("#channels").val(), 10); - var iResolutionWidth = parseInt($("#resolutionWidth").val(), 10); - var iResolutionHeight = parseInt($("#resolutionHeight").val(), 10); - - if (null == szDeviceIdentify) { - return; - } - - if (bZeroChannel) {// 零通道不支持设备抓图 - return; - } - - var szPicName = szDeviceIdentify + "_" + iChannelID + "_" + new Date().getTime(); - var iRet = WebVideoCtrl.I_DeviceCapturePic(szDeviceIdentify, iChannelID, szPicName, { - bDateDir: true, //是否生成日期文件 - iResolutionWidth: iResolutionWidth, - iResolutionHeight: iResolutionHeight - }); - - if (0 == iRet) { - szInfo = "设备抓图成功!"; - } else { - szInfo = "设备抓图失败!"; - } - showOPInfo(szDeviceIdentify + " " + szInfo); -} - -function loadXML(szXml) { - if(null == szXml || "" == szXml) { - return null; - } - - var oXmlDoc = null; - - if (window.DOMParser) { - var oParser = new DOMParser(); - oXmlDoc = oParser.parseFromString(szXml, "text/xml"); - } else { - oXmlDoc = new ActiveXObject("Microsoft.XMLDOM"); - oXmlDoc.async = false; - oXmlDoc.loadXML(szXml); - } - - return oXmlDoc; -} - -function toXMLStr(oXmlDoc) { - var szXmlDoc = ""; - - try { - var oSerializer = new XMLSerializer(); - szXmlDoc = oSerializer.serializeToString(oXmlDoc); - } catch (e) { - try { - szXmlDoc = oXmlDoc.xml; - } catch (e) { - return ""; - } - } - if (szXmlDoc.indexOf("" + szXmlDoc; - } - - return szXmlDoc; -} - -function encodeString(str) { - if (str) { - return str.replace(/&/g, '&').replace(//g, '>'); - } else { - return ""; - } -} \ No newline at end of file diff --git a/public/demo/codebase/jsVideoPlugin-1.0.0.min.js b/public/demo/codebase/jsVideoPlugin-1.0.0.min.js deleted file mode 100644 index 861380e7..00000000 --- a/public/demo/codebase/jsVideoPlugin-1.0.0.min.js +++ /dev/null @@ -1,37 +0,0 @@ -/*! {"version":"V1.0.0 build230210","playCrtl":"V7.4.0.1","pluginVersion":"V3.0.7.50","localServiceVersion":"V1.0.38"} */ -(function webpackUniversalModuleDefinition(e,t){if(typeof exports==="object"&&typeof module==="object")module.exports=t();else if(typeof define==="function"&&define.amd)define([],t);else{var n=t();for(var i in n)(typeof exports==="object"?exports:e)[i]=n[i]}})(window,function(){return function(n){var i={};function r(e){if(i[e]){return i[e].exports}var t=i[e]={i:e,l:false,exports:{}};n[e].call(t.exports,t,t.exports,r);t.l=true;return t.exports}r.m=n;r.c=i;r.d=function(e,t,n){if(!r.o(e,t)){Object.defineProperty(e,t,{enumerable:true,get:n})}};r.r=function(e){if(typeof Symbol!=="undefined"&&Symbol.toStringTag){Object.defineProperty(e,Symbol.toStringTag,{value:"Module"})}Object.defineProperty(e,"__esModule",{value:true})};r.t=function(t,e){if(e&1)t=r(t);if(e&8)return t;if(e&4&&typeof t==="object"&&t&&t.__esModule)return t;var n=Object.create(null);r.r(n);Object.defineProperty(n,"default",{enumerable:true,value:t});if(e&2&&typeof t!="string")for(var i in t)r.d(n,i,function(e){return t[e]}.bind(null,i));return n};r.n=function(e){var t=e&&e.__esModule?function n(){return e["default"]}:function i(){return e};r.d(t,"a",t);return t};r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)};r.p="";return r(r.s=60)}([function(e,t){(function(){e.exports={Element:1,Attribute:2,Text:3,CData:4,EntityReference:5,EntityDeclaration:6,ProcessingInstruction:7,Comment:8,Document:9,DocType:10,DocumentFragment:11,NotationDeclaration:12,Declaration:201,Raw:202,AttributeDeclaration:203,ElementDeclaration:204,Dummy:205}}).call(this)},function(nn,rn,e){var on,sn; -/*! - * jQuery JavaScript Library v3.6.0 - * https://jquery.com/ - * - * Includes Sizzle.js - * https://sizzlejs.com/ - * - * Copyright OpenJS Foundation and other contributors - * Released under the MIT license - * https://jquery.org/license - * - * Date: 2021-03-02T17:08Z - */ -(function(e,t){"use strict";if(true&&typeof nn.exports==="object"){nn.exports=e.document?t(e,true):function(e){if(!e.document){throw new Error("jQuery requires a window with a document")}return t(e)}}else{t(e)}})(typeof window!=="undefined"?window:this,function(C,L){"use strict";var t=[];var F=Object.getPrototypeOf;var a=t.slice;var W=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)};var N=t.push;var B=t.indexOf;var z={};var J=z.toString;var H=z.hasOwnProperty;var U=H.toString;var j=U.call(Object);var v={};var m=function m(e){return typeof e==="function"&&typeof e.nodeType!=="number"&&typeof e.item!=="function"};var y=function y(e){return e!=null&&e===e.window};var k=C.document;var G={type:true,src:true,nonce:true,noModule:true};function V(e,t,n){n=n||k;var i,r,o=n.createElement("script");o.text=e;if(t){for(i in G){r=t[i]||t.getAttribute&&t.getAttribute(i);if(r){o.setAttribute(i,r)}}}n.head.appendChild(o).parentNode.removeChild(o)}function g(e){if(e==null){return e+""}return typeof e==="object"||typeof e==="function"?z[J.call(e)]||"object":typeof e}var Y="3.6.0",T=function(e,t){return new T.fn.init(e,t)};T.fn=T.prototype={jquery:Y,constructor:T,length:0,toArray:function(){return a.call(this)},get:function(e){if(e==null){return a.call(this)}return e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=T.merge(this.constructor(),e);t.prevObject=this;return t},each:function(e){return T.each(this,e)},map:function(n){return this.pushStack(T.map(this,function(e,t){return n.call(e,t,e)}))},slice:function(){return this.pushStack(a.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},even:function(){return this.pushStack(T.grep(this,function(e,t){return(t+1)%2}))},odd:function(){return this.pushStack(T.grep(this,function(e,t){return t%2}))},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(n>=0&&n0&&t-1 in e}var e= -/*! - * Sizzle CSS Selector Engine v2.3.6 - * https://sizzlejs.com/ - * - * Copyright JS Foundation and other contributors - * Released under the MIT license - * https://js.foundation/ - * - * Date: 2021-02-16 - */ -function(L){var e,p,w,o,F,v,W,N,S,u,l,_,b,r,C,m,s,a,y,k="sizzle"+1*new Date,f=L.document,T=0,B=0,z=i(),J=i(),H=i(),g=i(),U=function(e,t){if(e===t){l=true}return 0},j={}.hasOwnProperty,t=[],G=t.pop,V=t.push,R=t.push,Y=t.slice,P=function(e,t){var n=0,i=e.length;for(;n+~]|"+c+")"+c+"*"),te=new RegExp(c+"|>"),ne=new RegExp(K),ie=new RegExp("^"+n+"$"),h={ID:new RegExp("^#("+n+")"),CLASS:new RegExp("^\\.("+n+")"),TAG:new RegExp("^("+n+"|[*])"),ATTR:new RegExp("^"+Z),PSEUDO:new RegExp("^"+K),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+c+"*(even|odd|(([+-]|)(\\d*)n|)"+c+"*(?:([+-]|)"+c+"*(\\d+)|))"+c+"*\\)|)","i"),bool:new RegExp("^(?:"+X+")$","i"),needsContext:new RegExp("^"+c+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+c+"*((?:-\\d)?\\d*)"+c+"*\\)|)(?=[^-]|$)","i")},re=/HTML$/i,oe=/^(?:input|select|textarea|button)$/i,se=/^h\d$/i,d=/^[^{]+\{\s*\[native \w/,ae=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ue=/[+~]/,x=new RegExp("\\\\[\\da-fA-F]{1,6}"+c+"?|\\\\([^\\r\\n\\f])","g"),I=function(e,t){var n="0x"+e.slice(1)-65536;return t?t:n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,n&1023|56320)},le=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,fe=function(e,t){if(t){if(e==="\0"){return"�"}return e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" "}return"\\"+e},ce=function(){_()},he=Se(function(e){return e.disabled===true&&e.nodeName.toLowerCase()==="fieldset"},{dir:"parentNode",next:"legend"});try{R.apply(t=Y.call(f.childNodes),f.childNodes);t[f.childNodes.length].nodeType}catch(M){R={apply:t.length?function(e,t){V.apply(e,Y.call(t))}:function(e,t){var n=e.length,i=0;while(e[n++]=t[i++]){}e.length=n-1}}}function E(e,t,n,i){var r,o,s,a,u,l,f,c=t&&t.ownerDocument,h=t?t.nodeType:9;n=n||[];if(typeof e!=="string"||!e||h!==1&&h!==9&&h!==11){return n}if(!i){_(t);t=t||b;if(C){if(h!==11&&(u=ae.exec(e))){if(r=u[1]){if(h===9){if(s=t.getElementById(r)){if(s.id===r){n.push(s);return n}}else{return n}}else{if(c&&(s=c.getElementById(r))&&y(t,s)&&s.id===r){n.push(s);return n}}}else if(u[2]){R.apply(n,t.getElementsByTagName(e));return n}else if((r=u[3])&&p.getElementsByClassName&&t.getElementsByClassName){R.apply(n,t.getElementsByClassName(r));return n}}if(p.qsa&&!g[e+" "]&&(!m||!m.test(e))&&(h!==1||t.nodeName.toLowerCase()!=="object")){f=e;c=t;if(h===1&&(te.test(e)||ee.test(e))){c=ue.test(e)&&ge(t.parentNode)||t;if(c!==t||!p.scope){if(a=t.getAttribute("id")){a=a.replace(le,fe)}else{t.setAttribute("id",a=k)}}l=v(e);o=l.length;while(o--){l[o]=(a?"#"+a:":scope")+" "+we(l[o])}f=l.join(",")}try{R.apply(n,c.querySelectorAll(f));return n}catch(d){g(e,true)}finally{if(a===k){t.removeAttribute("id")}}}}}return N(e.replace(D,"$1"),t,n,i)}function i(){var n=[];function i(e,t){if(n.push(e+" ")>w.cacheLength){delete i[n.shift()]}return i[e+" "]=t}return i}function q(e){e[k]=true;return e}function A(e){var t=b.createElement("fieldset");try{return!!e(t)}catch(M){return false}finally{if(t.parentNode){t.parentNode.removeChild(t)}t=null}}function de(e,t){var n=e.split("|"),i=n.length;while(i--){w.attrHandle[n[i]]=t}}function pe(e,t){var n=t&&e,i=n&&e.nodeType===1&&t.nodeType===1&&e.sourceIndex-t.sourceIndex;if(i){return i}if(n){while(n=n.nextSibling){if(n===t){return-1}}}return e?1:-1}function ve(n){return function(e){var t=e.nodeName.toLowerCase();return t==="input"&&e.type===n}}function me(n){return function(e){var t=e.nodeName.toLowerCase();return(t==="input"||t==="button")&&e.type===n}}function ye(t){return function(e){if("form"in e){if(e.parentNode&&e.disabled===false){if("label"in e){if("label"in e.parentNode){return e.parentNode.disabled===t}else{return e.disabled===t}}return e.isDisabled===t||e.isDisabled!==!t&&he(e)===t}return e.disabled===t}else if("label"in e){return e.disabled===t}return false}}function O(s){return q(function(o){o=+o;return q(function(e,t){var n,i=s([],e.length,o),r=i.length;while(r--){if(e[n=i[r]]){e[n]=!(t[n]=e[n])}}})})}function ge(e){return e&&typeof e.getElementsByTagName!=="undefined"&&e}p=E.support={};F=E.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!re.test(t||n&&n.nodeName||"HTML")};_=E.setDocument=function(e){var t,n,i=e?e.ownerDocument||e:f;if(i==b||i.nodeType!==9||!i.documentElement){return b}b=i;r=b.documentElement;C=!F(b);if(f!=b&&(n=b.defaultView)&&n.top!==n){if(n.addEventListener){n.addEventListener("unload",ce,false)}else if(n.attachEvent){n.attachEvent("onunload",ce)}}p.scope=A(function(e){r.appendChild(e).appendChild(b.createElement("div"));return typeof e.querySelectorAll!=="undefined"&&!e.querySelectorAll(":scope fieldset div").length});p.attributes=A(function(e){e.className="i";return!e.getAttribute("className")});p.getElementsByTagName=A(function(e){e.appendChild(b.createComment(""));return!e.getElementsByTagName("*").length});p.getElementsByClassName=d.test(b.getElementsByClassName);p.getById=A(function(e){r.appendChild(e).id=k;return!b.getElementsByName||!b.getElementsByName(k).length});if(p.getById){w.filter["ID"]=function(e){var t=e.replace(x,I);return function(e){return e.getAttribute("id")===t}};w.find["ID"]=function(e,t){if(typeof t.getElementById!=="undefined"&&C){var n=t.getElementById(e);return n?[n]:[]}}}else{w.filter["ID"]=function(e){var n=e.replace(x,I);return function(e){var t=typeof e.getAttributeNode!=="undefined"&&e.getAttributeNode("id");return t&&t.value===n}};w.find["ID"]=function(e,t){if(typeof t.getElementById!=="undefined"&&C){var n,i,r,o=t.getElementById(e);if(o){n=o.getAttributeNode("id");if(n&&n.value===e){return[o]}r=t.getElementsByName(e);i=0;while(o=r[i++]){n=o.getAttributeNode("id");if(n&&n.value===e){return[o]}}}return[]}}}w.find["TAG"]=p.getElementsByTagName?function(e,t){if(typeof t.getElementsByTagName!=="undefined"){return t.getElementsByTagName(e)}else if(p.qsa){return t.querySelectorAll(e)}}:function(e,t){var n,i=[],r=0,o=t.getElementsByTagName(e);if(e==="*"){while(n=o[r++]){if(n.nodeType===1){i.push(n)}}return i}return o};w.find["CLASS"]=p.getElementsByClassName&&function(e,t){if(typeof t.getElementsByClassName!=="undefined"&&C){return t.getElementsByClassName(e)}};s=[];m=[];if(p.qsa=d.test(b.querySelectorAll)){A(function(e){var t;r.appendChild(e).innerHTML=""+"";if(e.querySelectorAll("[msallowcapture^='']").length){m.push("[*^$]="+c+"*(?:''|\"\")")}if(!e.querySelectorAll("[selected]").length){m.push("\\["+c+"*(?:value|"+X+")")}if(!e.querySelectorAll("[id~="+k+"-]").length){m.push("~=")}t=b.createElement("input");t.setAttribute("name","");e.appendChild(t);if(!e.querySelectorAll("[name='']").length){m.push("\\["+c+"*name"+c+"*="+c+"*(?:''|\"\")")}if(!e.querySelectorAll(":checked").length){m.push(":checked")}if(!e.querySelectorAll("a#"+k+"+*").length){m.push(".#.+[+~]")}e.querySelectorAll("\\\f");m.push("[\\r\\n\\f]")});A(function(e){e.innerHTML=""+"";var t=b.createElement("input");t.setAttribute("type","hidden");e.appendChild(t).setAttribute("name","D");if(e.querySelectorAll("[name=d]").length){m.push("name"+c+"*[*^$|!~]?=")}if(e.querySelectorAll(":enabled").length!==2){m.push(":enabled",":disabled")}r.appendChild(e).disabled=true;if(e.querySelectorAll(":disabled").length!==2){m.push(":enabled",":disabled")}e.querySelectorAll("*,:x");m.push(",.*:")})}if(p.matchesSelector=d.test(a=r.matches||r.webkitMatchesSelector||r.mozMatchesSelector||r.oMatchesSelector||r.msMatchesSelector)){A(function(e){p.disconnectedMatch=a.call(e,"*");a.call(e,"[s!='']:x");s.push("!=",K)})}m=m.length&&new RegExp(m.join("|"));s=s.length&&new RegExp(s.join("|"));t=d.test(r.compareDocumentPosition);y=t||d.test(r.contains)?function(e,t){var n=e.nodeType===9?e.documentElement:e,i=t&&t.parentNode;return e===i||!!(i&&i.nodeType===1&&(n.contains?n.contains(i):e.compareDocumentPosition&&e.compareDocumentPosition(i)&16))}:function(e,t){if(t){while(t=t.parentNode){if(t===e){return true}}}return false};U=t?function(e,t){if(e===t){l=true;return 0}var n=!e.compareDocumentPosition-!t.compareDocumentPosition;if(n){return n}n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1;if(n&1||!p.sortDetached&&t.compareDocumentPosition(e)===n){if(e==b||e.ownerDocument==f&&y(f,e)){return-1}if(t==b||t.ownerDocument==f&&y(f,t)){return 1}return u?P(u,e)-P(u,t):0}return n&4?-1:1}:function(e,t){if(e===t){l=true;return 0}var n,i=0,r=e.parentNode,o=t.parentNode,s=[e],a=[t];if(!r||!o){return e==b?-1:t==b?1:r?-1:o?1:u?P(u,e)-P(u,t):0}else if(r===o){return pe(e,t)}n=e;while(n=n.parentNode){s.unshift(n)}n=t;while(n=n.parentNode){a.unshift(n)}while(s[i]===a[i]){i++}return i?pe(s[i],a[i]):s[i]==f?-1:a[i]==f?1:0};return b};E.matches=function(e,t){return E(e,null,null,t)};E.matchesSelector=function(e,t){_(e);if(p.matchesSelector&&C&&!g[t+" "]&&(!s||!s.test(t))&&(!m||!m.test(t))){try{var n=a.call(e,t);if(n||p.disconnectedMatch||e.document&&e.document.nodeType!==11){return n}}catch(M){g(t,true)}}return E(t,b,null,[e]).length>0};E.contains=function(e,t){if((e.ownerDocument||e)!=b){_(e)}return y(e,t)};E.attr=function(e,t){if((e.ownerDocument||e)!=b){_(e)}var n=w.attrHandle[t.toLowerCase()],i=n&&j.call(w.attrHandle,t.toLowerCase())?n(e,t,!C):undefined;return i!==undefined?i:p.attributes||!C?e.getAttribute(t):(i=e.getAttributeNode(t))&&i.specified?i.value:null};E.escape=function(e){return(e+"").replace(le,fe)};E.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)};E.uniqueSort=function(e){var t,n=[],i=0,r=0;l=!p.detectDuplicates;u=!p.sortStable&&e.slice(0);e.sort(U);if(l){while(t=e[r++]){if(t===e[r]){i=n.push(r)}}while(i--){e.splice(n[i],1)}}u=null;return e};o=E.getText=function(e){var t,n="",i=0,r=e.nodeType;if(!r){while(t=e[i++]){n+=o(t)}}else if(r===1||r===9||r===11){if(typeof e.textContent==="string"){return e.textContent}else{for(e=e.firstChild;e;e=e.nextSibling){n+=o(e)}}}else if(r===3||r===4){return e.nodeValue}return n};w=E.selectors={cacheLength:50,createPseudo:q,match:h,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:true}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:true},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){e[1]=e[1].replace(x,I);e[3]=(e[3]||e[4]||e[5]||"").replace(x,I);if(e[2]==="~="){e[3]=" "+e[3]+" "}return e.slice(0,4)},CHILD:function(e){e[1]=e[1].toLowerCase();if(e[1].slice(0,3)==="nth"){if(!e[3]){E.error(e[0])}e[4]=+(e[4]?e[5]+(e[6]||1):2*(e[3]==="even"||e[3]==="odd"));e[5]=+(e[7]+e[8]||e[3]==="odd")}else if(e[3]){E.error(e[0])}return e},PSEUDO:function(e){var t,n=!e[6]&&e[2];if(h["CHILD"].test(e[0])){return null}if(e[3]){e[2]=e[4]||e[5]||""}else if(n&&ne.test(n)&&(t=v(n,true))&&(t=n.indexOf(")",n.length-t)-n.length)){e[0]=e[0].slice(0,t);e[2]=n.slice(0,t)}return e.slice(0,3)}},filter:{TAG:function(e){var t=e.replace(x,I).toLowerCase();return e==="*"?function(){return true}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=z[e+" "];return t||(t=new RegExp("(^|"+c+")"+e+"("+c+"|$)"))&&z(e,function(e){return t.test(typeof e.className==="string"&&e.className||typeof e.getAttribute!=="undefined"&&e.getAttribute("class")||"")})},ATTR:function(n,i,r){return function(e){var t=E.attr(e,n);if(t==null){return i==="!="}if(!i){return true}t+="";return i==="="?t===r:i==="!="?t!==r:i==="^="?r&&t.indexOf(r)===0:i==="*="?r&&t.indexOf(r)>-1:i==="$="?r&&t.slice(-r.length)===r:i==="~="?(" "+t.replace($," ")+" ").indexOf(r)>-1:i==="|="?t===r||t.slice(0,r.length+1)===r+"-":false}},CHILD:function(p,e,t,v,m){var y=p.slice(0,3)!=="nth",g=p.slice(-4)!=="last",P=e==="of-type";return v===1&&m===0?function(e){return!!e.parentNode}:function(e,t,n){var i,r,o,s,a,u,l=y!==g?"nextSibling":"previousSibling",f=e.parentNode,c=P&&e.nodeName.toLowerCase(),h=!n&&!P,d=false;if(f){if(y){while(l){s=e;while(s=s[l]){if(P?s.nodeName.toLowerCase()===c:s.nodeType===1){return false}}u=l=p==="only"&&!u&&"nextSibling"}return true}u=[g?f.firstChild:f.lastChild];if(g&&h){s=f;o=s[k]||(s[k]={});r=o[s.uniqueID]||(o[s.uniqueID]={});i=r[p]||[];a=i[0]===T&&i[1];d=a&&i[2];s=a&&f.childNodes[a];while(s=++a&&s&&s[l]||(d=a=0)||u.pop()){if(s.nodeType===1&&++d&&s===e){r[p]=[T,a,d];break}}}else{if(h){s=e;o=s[k]||(s[k]={});r=o[s.uniqueID]||(o[s.uniqueID]={});i=r[p]||[];a=i[0]===T&&i[1];d=a}if(d===false){while(s=++a&&s&&s[l]||(d=a=0)||u.pop()){if((P?s.nodeName.toLowerCase()===c:s.nodeType===1)&&++d){if(h){o=s[k]||(s[k]={});r=o[s.uniqueID]||(o[s.uniqueID]={});r[p]=[T,d]}if(s===e){break}}}}}d-=m;return d===v||d%v===0&&d/v>=0}}},PSEUDO:function(e,o){var t,s=w.pseudos[e]||w.setFilters[e.toLowerCase()]||E.error("unsupported pseudo: "+e);if(s[k]){return s(o)}if(s.length>1){t=[e,e,"",o];return w.setFilters.hasOwnProperty(e.toLowerCase())?q(function(e,t){var n,i=s(e,o),r=i.length;while(r--){n=P(e,i[r]);e[n]=!(t[n]=i[r])}}):function(e){return s(e,0,t)}}return s}},pseudos:{not:q(function(e){var i=[],r=[],a=W(e.replace(D,"$1"));return a[k]?q(function(e,t,n,i){var r,o=a(e,null,i,[]),s=e.length;while(s--){if(r=o[s]){e[s]=!(t[s]=r)}}}):function(e,t,n){i[0]=e;a(i,null,n,r);i[0]=null;return!r.pop()}}),has:q(function(t){return function(e){return E(t,e).length>0}}),contains:q(function(t){t=t.replace(x,I);return function(e){return(e.textContent||o(e)).indexOf(t)>-1}}),lang:q(function(n){if(!ie.test(n||"")){E.error("unsupported lang: "+n)}n=n.replace(x,I).toLowerCase();return function(e){var t;do{if(t=C?e.lang:e.getAttribute("xml:lang")||e.getAttribute("lang")){t=t.toLowerCase();return t===n||t.indexOf(n+"-")===0}}while((e=e.parentNode)&&e.nodeType===1);return false}}),target:function(e){var t=L.location&&L.location.hash;return t&&t.slice(1)===e.id},root:function(e){return e===r},focus:function(e){return e===b.activeElement&&(!b.hasFocus||b.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:ye(false),disabled:ye(true),checked:function(e){var t=e.nodeName.toLowerCase();return t==="input"&&!!e.checked||t==="option"&&!!e.selected},selected:function(e){if(e.parentNode){e.parentNode.selectedIndex}return e.selected===true},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling){if(e.nodeType<6){return false}}return true},parent:function(e){return!w.pseudos["empty"](e)},header:function(e){return se.test(e.nodeName)},input:function(e){return oe.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return t==="input"&&e.type==="button"||t==="button"},text:function(e){var t;return e.nodeName.toLowerCase()==="input"&&e.type==="text"&&((t=e.getAttribute("type"))==null||t.toLowerCase()==="text")},first:O(function(){return[0]}),last:O(function(e,t){return[t-1]}),eq:O(function(e,t,n){return[n<0?n+t:n]}),even:O(function(e,t){var n=0;for(;nt?t:n;for(;--i>=0;){e.push(i)}return e}),gt:O(function(e,t,n){var i=n<0?n+t:n;for(;++i1?function(e,t,n){var i=r.length;while(i--){if(!r[i](e,t,n)){return false}}return true}:r[0]}function be(e,t,n){var i=0,r=t.length;for(;i-1){e[r]=!(t[r]=s)}}}}else{h=Ce(h===t?h.splice(l,h.length):h);if(y){y(null,t,h,i)}else{R.apply(t,h)}}})}function Te(e){var r,t,n,i=e.length,o=w.relative[e[0].type],s=o||w.relative[" "],a=o?1:0,u=Se(function(e){return e===r},s,true),l=Se(function(e){return P(r,e)>-1},s,true),f=[function(e,t,n){var i=!o&&(n||t!==S)||((r=t).nodeType?u(e,t,n):l(e,t,n));r=null;return i}];for(;a1&&_e(f),a>1&&we(e.slice(0,a-1).concat({value:e[a-2].type===" "?"*":""})).replace(D,"$1"),t,a0,P=m.length>0,e=function(e,t,n,i,r){var o,s,a,u=0,l="0",f=e&&[],c=[],h=S,d=e||P&&w.find["TAG"]("*",r),p=T+=h==null?1:Math.random()||.1,v=d.length;if(r){S=t==b||t||r}for(;l!==v&&(o=d[l])!=null;l++){if(P&&o){s=0;if(!t&&o.ownerDocument!=b){_(o);n=!C}while(a=m[s++]){if(a(o,t||b,n)){i.push(o);break}}if(r){T=p}}if(g){if(o=!a&&o){u--}if(e){f.push(o)}}}u+=l;if(g&&l!==u){s=0;while(a=y[s++]){a(f,c,t,n)}if(e){if(u>0){while(l--){if(!(f[l]||c[l])){c[l]=G.call(i)}}}c=Ce(c)}R.apply(i,c);if(r&&!e&&c.length>0&&u+y.length>1){E.uniqueSort(i)}}if(r){T=p;S=h}return f};return g?q(e):e}W=E.compile=function(e,t){var n,i=[],r=[],o=H[e+" "];if(!o){if(!t){t=v(e)}n=t.length;while(n--){o=Te(t[n]);if(o[k]){i.push(o)}else{r.push(o)}}o=H(e,Re(r,i));o.selector=e}return o};N=E.select=function(e,t,n,i){var r,o,s,a,u,l=typeof e==="function"&&e,f=!i&&v(e=l.selector||e);n=n||[];if(f.length===1){o=f[0]=f[0].slice(0);if(o.length>2&&(s=o[0]).type==="ID"&&t.nodeType===9&&C&&w.relative[o[1].type]){t=(w.find["ID"](s.matches[0].replace(x,I),t)||[])[0];if(!t){return n}else if(l){t=t.parentNode}e=e.slice(o.shift().value.length)}r=h["needsContext"].test(e)?0:o.length;while(r--){s=o[r];if(w.relative[a=s.type]){break}if(u=w.find[a]){if(i=u(s.matches[0].replace(x,I),ue.test(o[0].type)&&ge(t.parentNode)||t)){o.splice(r,1);e=i.length&&we(o);if(!e){R.apply(n,i);return n}break}}}}(l||W(e,f))(i,t,!C,n,!t||ue.test(e)&&ge(t.parentNode)||t);return n};p.sortStable=k.split("").sort(U).join("")===k;p.detectDuplicates=!!l;_();p.sortDetached=A(function(e){return e.compareDocumentPosition(b.createElement("fieldset"))&1});if(!A(function(e){e.innerHTML="";return e.firstChild.getAttribute("href")==="#"})){de("type|href|height|width",function(e,t,n){if(!n){return e.getAttribute(t,t.toLowerCase()==="type"?1:2)}})}if(!p.attributes||!A(function(e){e.innerHTML="";e.firstChild.setAttribute("value","");return e.firstChild.getAttribute("value")===""})){de("value",function(e,t,n){if(!n&&e.nodeName.toLowerCase()==="input"){return e.defaultValue}})}if(!A(function(e){return e.getAttribute("disabled")==null})){de(X,function(e,t,n){var i;if(!n){return e[t]===true?t.toLowerCase():(i=e.getAttributeNode(t))&&i.specified?i.value:null}})}return E}(C);T.find=e;T.expr=e.selectors;T.expr[":"]=T.expr.pseudos;T.uniqueSort=T.unique=e.uniqueSort;T.text=e.getText;T.isXMLDoc=e.isXML;T.contains=e.contains;T.escapeSelector=e.escape;var i=function(e,t,n){var i=[],r=n!==undefined;while((e=e[t])&&e.nodeType!==9){if(e.nodeType===1){if(r&&T(e).is(n)){break}i.push(e)}}return i};var Z=function(e,t){var n=[];for(;e;e=e.nextSibling){if(e.nodeType===1&&e!==t){n.push(e)}}return n};var K=T.expr.match.needsContext;function l(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var $=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function Q(e,n,i){if(m(n)){return T.grep(e,function(e,t){return!!n.call(e,t,e)!==i})}if(n.nodeType){return T.grep(e,function(e){return e===n!==i})}if(typeof n!=="string"){return T.grep(e,function(e){return B.call(n,e)>-1!==i})}return T.filter(n,e,i)}T.filter=function(e,t,n){var i=t[0];if(n){e=":not("+e+")"}if(t.length===1&&i.nodeType===1){return T.find.matchesSelector(i,e)?[i]:[]}return T.find.matches(e,T.grep(t,function(e){return e.nodeType===1}))};T.fn.extend({find:function(e){var t,n,i=this.length,r=this;if(typeof e!=="string"){return this.pushStack(T(e).filter(function(){for(t=0;t1?T.uniqueSort(n):n},filter:function(e){return this.pushStack(Q(this,e||[],false))},not:function(e){return this.pushStack(Q(this,e||[],true))},is:function(e){return!!Q(this,typeof e==="string"&&K.test(e)?T(e):e||[],false).length}});var ee,te=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/,ne=T.fn.init=function(e,t,n){var i,r;if(!e){return this}n=n||ee;if(typeof e==="string"){if(e[0]==="<"&&e[e.length-1]===">"&&e.length>=3){i=[null,e,null]}else{i=te.exec(e)}if(i&&(i[1]||!t)){if(i[1]){t=t instanceof T?t[0]:t;T.merge(this,T.parseHTML(i[1],t&&t.nodeType?t.ownerDocument||t:k,true));if($.test(i[1])&&T.isPlainObject(t)){for(i in t){if(m(this[i])){this[i](t[i])}else{this.attr(i,t[i])}}}return this}else{r=k.getElementById(i[2]);if(r){this[0]=r;this.length=1}return this}}else if(!t||t.jquery){return(t||n).find(e)}else{return this.constructor(t).find(e)}}else if(e.nodeType){this[0]=e;this.length=1;return this}else if(m(e)){return n.ready!==undefined?n.ready(e):e(T)}return T.makeArray(e,this)};ne.prototype=T.fn;ee=T(k);var ie=/^(?:parents|prev(?:Until|All))/,re={children:true,contents:true,next:true,prev:true};T.fn.extend({has:function(e){var t=T(e,this),n=t.length;return this.filter(function(){var e=0;for(;e-1:n.nodeType===1&&T.find.matchesSelector(n,e))){o.push(n);break}}}}return this.pushStack(o.length>1?T.uniqueSort(o):o)},index:function(e){if(!e){return this[0]&&this[0].parentNode?this.first().prevAll().length:-1}if(typeof e==="string"){return B.call(T(e),this[0])}return B.call(this,e.jquery?e[0]:e)},add:function(e,t){return this.pushStack(T.uniqueSort(T.merge(this.get(),T(e,t))))},addBack:function(e){return this.add(e==null?this.prevObject:this.prevObject.filter(e))}});function oe(e,t){while((e=e[t])&&e.nodeType!==1){}return e}T.each({parent:function(e){var t=e.parentNode;return t&&t.nodeType!==11?t:null},parents:function(e){return i(e,"parentNode")},parentsUntil:function(e,t,n){return i(e,"parentNode",n)},next:function(e){return oe(e,"nextSibling")},prev:function(e){return oe(e,"previousSibling")},nextAll:function(e){return i(e,"nextSibling")},prevAll:function(e){return i(e,"previousSibling")},nextUntil:function(e,t,n){return i(e,"nextSibling",n)},prevUntil:function(e,t,n){return i(e,"previousSibling",n)},siblings:function(e){return Z((e.parentNode||{}).firstChild,e)},children:function(e){return Z(e.firstChild)},contents:function(e){if(e.contentDocument!=null&&F(e.contentDocument)){return e.contentDocument}if(l(e,"template")){e=e.content||e}return T.merge([],e.childNodes)}},function(i,r){T.fn[i]=function(e,t){var n=T.map(this,r,e);if(i.slice(-5)!=="Until"){t=e}if(t&&typeof t==="string"){n=T.filter(t,n)}if(this.length>1){if(!re[i]){T.uniqueSort(n)}if(ie.test(i)){n.reverse()}}return this.pushStack(n)}});var R=/[^\x20\t\r\n\f]+/g;function se(e){var n={};T.each(e.match(R)||[],function(e,t){n[t]=true});return n}T.Callbacks=function(i){i=typeof i==="string"?se(i):T.extend({},i);var r,e,t,n,o=[],s=[],a=-1,u=function(){n=n||i.once;t=r=true;for(;s.length;a=-1){e=s.shift();while(++a-1){o.splice(n,1);if(n<=a){a--}}});return this},has:function(e){return e?T.inArray(e,o)>-1:o.length>0},empty:function(){if(o){o=[]}return this},disable:function(){n=s=[];o=e="";return this},disabled:function(){return!o},lock:function(){n=s=[];if(!e&&!r){o=e=""}return this},locked:function(){return!!n},fireWith:function(e,t){if(!n){t=t||[];t=[e,t.slice?t.slice():t];s.push(t);if(!r){u()}}return this},fire:function(){l.fireWith(this,arguments);return this},fired:function(){return!!t}};return l};function c(e){return e}function ae(e){throw e}function ue(e,t,n,i){var r;try{if(e&&m(r=e.promise)){r.call(e).done(t).fail(n)}else if(e&&m(r=e.then)){r.call(e,t,n)}else{t.apply(undefined,[e].slice(i))}}catch(e){n.apply(undefined,[e])}}T.extend({Deferred:function(e){var o=[["notify","progress",T.Callbacks("memory"),T.Callbacks("memory"),2],["resolve","done",T.Callbacks("once memory"),T.Callbacks("once memory"),0,"resolved"],["reject","fail",T.Callbacks("once memory"),T.Callbacks("once memory"),1,"rejected"]],r="pending",s={state:function(){return r},always:function(){a.done(arguments).fail(arguments);return this},"catch":function(e){return s.then(null,e)},pipe:function(){var r=arguments;return T.Deferred(function(i){T.each(o,function(e,t){var n=m(r[t[4]])&&r[t[4]];a[t[1]](function(){var e=n&&n.apply(this,arguments);if(e&&m(e.promise)){e.promise().progress(i.notify).done(i.resolve).fail(i.reject)}else{i[t[0]+"With"](this,n?[e]:arguments)}})});r=null}).promise()},then:function(t,n,i){var l=0;function f(o,s,a,u){return function(){var n=this,i=arguments,t=function(){var e,t;if(o=l){if(a!==ae){n=undefined;i=[e]}s.rejectWith(n,i)}}};if(o){r()}else{if(T.Deferred.getStackHook){r.stackTrace=T.Deferred.getStackHook()}C.setTimeout(r)}}}return T.Deferred(function(e){o[0][3].add(f(0,e,m(i)?i:c,e.notifyWith));o[1][3].add(f(0,e,m(t)?t:c));o[2][3].add(f(0,e,m(n)?n:ae))}).promise()},promise:function(e){return e!=null?T.extend(e,s):s}},a={};T.each(o,function(e,t){var n=t[2],i=t[5];s[t[1]]=n.add;if(i){n.add(function(){r=i},o[3-e][2].disable,o[3-e][3].disable,o[0][2].lock,o[0][3].lock)}n.add(t[3].fire);a[t[0]]=function(){a[t[0]+"With"](this===a?undefined:this,arguments);return this};a[t[0]+"With"]=n.fireWith});s.promise(a);if(e){e.call(a,a)}return a},when:function(e){var n=arguments.length,t=n,i=Array(t),r=a.call(arguments),o=T.Deferred(),s=function(t){return function(e){i[t]=this;r[t]=arguments.length>1?a.call(arguments):e;if(!--n){o.resolveWith(i,r)}}};if(n<=1){ue(e,o.done(s(t)).resolve,o.reject,!n);if(o.state()==="pending"||m(r[t]&&r[t].then)){return o.then()}}while(t--){ue(r[t],s(t),o.reject)}return o.promise()}});var le=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;T.Deferred.exceptionHook=function(e,t){if(C.console&&C.console.warn&&e&&le.test(e.name)){C.console.warn("jQuery.Deferred exception: "+e.message,e.stack,t)}};T.readyException=function(e){C.setTimeout(function(){throw e})};var fe=T.Deferred();T.fn.ready=function(e){fe.then(e)["catch"](function(e){T.readyException(e)});return this};T.extend({isReady:false,readyWait:1,ready:function(e){if(e===true?--T.readyWait:T.isReady){return}T.isReady=true;if(e!==true&&--T.readyWait>0){return}fe.resolveWith(k,[T])}});T.ready.then=fe.then;function ce(){k.removeEventListener("DOMContentLoaded",ce);C.removeEventListener("load",ce);T.ready()}if(k.readyState==="complete"||k.readyState!=="loading"&&!k.documentElement.doScroll){C.setTimeout(T.ready)}else{k.addEventListener("DOMContentLoaded",ce);C.addEventListener("load",ce)}var f=function(e,t,n,i,r,o,s){var a=0,u=e.length,l=n==null;if(g(n)==="object"){r=true;for(a in n){f(e,t,a,n[a],true,o,s)}}else if(i!==undefined){r=true;if(!m(i)){s=true}if(l){if(s){t.call(e,i);t=null}else{l=t;t=function(e,t,n){return l.call(T(e),n)}}}if(t){for(;a1,null,true)},removeData:function(e){return this.each(function(){d.remove(this,e)})}});T.extend({queue:function(e,t,n){var i;if(e){t=(t||"fx")+"queue";i=w.get(e,t);if(n){if(!i||Array.isArray(n)){i=w.access(e,t,T.makeArray(n))}else{i.push(n)}}return i||[]}},dequeue:function(e,t){t=t||"fx";var n=T.queue(e,t),i=n.length,r=n.shift(),o=T._queueHooks(e,t),s=function(){T.dequeue(e,t)};if(r==="inprogress"){r=n.shift();i--}if(r){if(t==="fx"){n.unshift("inprogress")}delete o.stop;r.call(e,s,o)}if(!i&&o){o.empty.fire()}},_queueHooks:function(e,t){var n=t+"queueHooks";return w.get(e,n)||w.access(e,n,{empty:T.Callbacks("once memory").add(function(){w.remove(e,[t+"queue",n])})})}});T.fn.extend({queue:function(t,n){var e=2;if(typeof t!=="string"){n=t;t="fx";e--}if(arguments.length\x20\t\r\n\f]*)/i;var Te=/^$|^module$|\/(?:java|ecma)script/i;(function(){var e=k.createDocumentFragment(),t=e.appendChild(k.createElement("div")),n=k.createElement("input");n.setAttribute("type","radio");n.setAttribute("checked","checked");n.setAttribute("name","t");t.appendChild(n);v.checkClone=t.cloneNode(true).cloneNode(true).lastChild.checked;t.innerHTML="";v.noCloneChecked=!!t.cloneNode(true).lastChild.defaultValue;t.innerHTML="";v.option=!!t.lastChild})();var x={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};x.tbody=x.tfoot=x.colgroup=x.caption=x.thead;x.th=x.td;if(!v.option){x.optgroup=x.option=[1,""]}function I(e,t){var n;if(typeof e.getElementsByTagName!=="undefined"){n=e.getElementsByTagName(t||"*")}else if(typeof e.querySelectorAll!=="undefined"){n=e.querySelectorAll(t||"*")}else{n=[]}if(t===undefined||t&&l(e,t)){return T.merge([e],n)}return n}function Re(e,t){var n=0,i=e.length;for(;n-1){if(r){r.push(o)}continue}l=b(o);s=I(c.appendChild(o),"script");if(l){Re(s)}if(n){f=0;while(o=s[f++]){if(Te.test(o.type||"")){n.push(o)}}}}return c}var Ie=/^([^.]*)(?:\.(.+)|)/;function s(){return true}function u(){return false}function Ee(e,t){return e===qe()===(t==="focus")}function qe(){try{return k.activeElement}catch(e){}}function Ae(e,t,n,i,r,o){var s,a;if(typeof t==="object"){if(typeof n!=="string"){i=i||n;n=undefined}for(a in t){Ae(e,a,n,i,t[a],o)}return e}if(i==null&&r==null){r=n;i=n=undefined}else if(r==null){if(typeof n==="string"){r=i;i=undefined}else{r=i;i=n;n=undefined}}if(r===false){r=u}else if(!r){return e}if(o===1){s=r;r=function(e){T().off(e);return s.apply(this,arguments)};r.guid=s.guid||(s.guid=T.guid++)}return e.each(function(){T.event.add(this,t,r,i,n)})}T.event={global:{},add:function(t,e,n,i,r){var o,s,a,u,l,f,c,h,d,p,v,m=w.get(t);if(!P(t)){return}if(n.handler){o=n;n=o.handler;r=o.selector}if(r){T.find.matchesSelector(_,r)}if(!n.guid){n.guid=T.guid++}if(!(u=m.events)){u=m.events=Object.create(null)}if(!(s=m.handle)){s=m.handle=function(e){return typeof T!=="undefined"&&T.event.triggered!==e.type?T.event.dispatch.apply(t,arguments):undefined}}e=(e||"").match(R)||[""];l=e.length;while(l--){a=Ie.exec(e[l])||[];d=v=a[1];p=(a[2]||"").split(".").sort();if(!d){continue}c=T.event.special[d]||{};d=(r?c.delegateType:c.bindType)||d;c=T.event.special[d]||{};f=T.extend({type:d,origType:v,data:i,handler:n,guid:n.guid,selector:r,needsContext:r&&T.expr.match.needsContext.test(r),namespace:p.join(".")},o);if(!(h=u[d])){h=u[d]=[];h.delegateCount=0;if(!c.setup||c.setup.call(t,i,p,s)===false){if(t.addEventListener){t.addEventListener(d,s)}}}if(c.add){c.add.call(t,f);if(!f.handler.guid){f.handler.guid=n.guid}}if(r){h.splice(h.delegateCount++,0,f)}else{h.push(f)}T.event.global[d]=true}},remove:function(e,t,n,i,r){var o,s,a,u,l,f,c,h,d,p,v,m=w.hasData(e)&&w.get(e);if(!m||!(u=m.events)){return}t=(t||"").match(R)||[""];l=t.length;while(l--){a=Ie.exec(t[l])||[];d=v=a[1];p=(a[2]||"").split(".").sort();if(!d){for(d in u){T.event.remove(e,d+t[l],n,i,true)}continue}c=T.event.special[d]||{};d=(i?c.delegateType:c.bindType)||d;h=u[d]||[];a=a[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)");s=o=h.length;while(o--){f=h[o];if((r||v===f.origType)&&(!n||n.guid===f.guid)&&(!a||a.test(f.namespace))&&(!i||i===f.selector||i==="**"&&f.selector)){h.splice(o,1);if(f.selector){h.delegateCount--}if(c.remove){c.remove.call(e,f)}}}if(s&&!h.length){if(!c.teardown||c.teardown.call(e,p,m.handle)===false){T.removeEvent(e,d,m.handle)}delete u[d]}}if(T.isEmptyObject(u)){w.remove(e,"handle events")}},dispatch:function(e){var t,n,i,r,o,s,a=new Array(arguments.length),u=T.event.fix(e),l=(w.get(this,"events")||Object.create(null))[u.type]||[],f=T.event.special[u.type]||{};a[0]=u;for(t=1;t=1)){for(;l!==this;l=l.parentNode||this){if(l.nodeType===1&&!(e.type==="click"&&l.disabled===true)){o=[];s={};for(n=0;n-1:T.find(r,this,null,[l]).length}if(s[r]){o.push(i)}}if(o.length){a.push({elem:l,handlers:o})}}}}l=this;if(u\s*$/g;function We(e,t){if(l(e,"table")&&l(t.nodeType!==11?t:t.firstChild,"tr")){return T(e).children("tbody")[0]||e}return e}function Ne(e){e.type=(e.getAttribute("type")!==null)+"/"+e.type;return e}function Be(e){if((e.type||"").slice(0,5)==="true/"){e.type=e.type.slice(5)}else{e.removeAttribute("type")}return e}function ze(e,t){var n,i,r,o,s,a,u;if(t.nodeType!==1){return}if(w.hasData(e)){o=w.get(e);u=o.events;if(u){w.remove(t,"handle events");for(r in u){for(n=0,i=u[r].length;n1&&typeof d==="string"&&!v.checkClone&&Le.test(d)){return n.each(function(e){var t=n.eq(e);if(p){i[0]=d.call(this,e,t.html())}E(t,i,r,o)})}if(c){e=xe(i,n[0].ownerDocument,false,n,o);t=e.firstChild;if(e.childNodes.length===1){e=t}if(t||o){s=T.map(I(e,"script"),Ne);a=s.length;for(;f0){Re(s,!u&&I(e,"script"))}return a},cleanData:function(e){var t,n,i,r=T.event.special,o=0;for(;(n=e[o])!==undefined;o++){if(P(n)){if(t=n[w.expando]){if(t.events){for(i in t.events){if(r[i]){T.event.remove(n,i)}else{T.removeEvent(n,i,t.handle)}}}n[w.expando]=undefined}if(n[d.expando]){n[d.expando]=undefined}}}}});T.fn.extend({detach:function(e){return He(this,e,true)},remove:function(e){return He(this,e)},text:function(e){return f(this,function(e){return e===undefined?T.text(this):this.empty().each(function(){if(this.nodeType===1||this.nodeType===11||this.nodeType===9){this.textContent=e}})},null,e,arguments.length)},append:function(){return E(this,arguments,function(e){if(this.nodeType===1||this.nodeType===11||this.nodeType===9){var t=We(this,e);t.appendChild(e)}})},prepend:function(){return E(this,arguments,function(e){if(this.nodeType===1||this.nodeType===11||this.nodeType===9){var t=We(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return E(this,arguments,function(e){if(this.parentNode){this.parentNode.insertBefore(e,this)}})},after:function(){return E(this,arguments,function(e){if(this.parentNode){this.parentNode.insertBefore(e,this.nextSibling)}})},empty:function(){var e,t=0;for(;(e=this[t])!=null;t++){if(e.nodeType===1){T.cleanData(I(e,false));e.textContent=""}}return this},clone:function(e,t){e=e==null?false:e;t=t==null?e:t;return this.map(function(){return T.clone(this,e,t)})},html:function(e){return f(this,function(e){var t=this[0]||{},n=0,i=this.length;if(e===undefined&&t.nodeType===1){return t.innerHTML}if(typeof e==="string"&&!Me.test(e)&&!x[(ke.exec(e)||["",""])[1].toLowerCase()]){e=T.htmlPrefilter(e);try{for(;n=0){u+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-o-u-a-.5))||0}return u}function at(e,t,n){var i=je(e),r=!v.boxSizingReliable()||n,o=r&&T.css(e,"boxSizing",false,i)==="border-box",s=o,a=Ye(e,t,i),u="offset"+t[0].toUpperCase()+t.slice(1);if(Ue.test(a)){if(!n){return a}a="auto"}if((!v.boxSizingReliable()&&o||!v.reliableTrDimensions()&&l(e,"tr")||a==="auto"||!parseFloat(a)&&T.css(e,"display",false,i)==="inline")&&e.getClientRects().length){o=T.css(e,"boxSizing",false,i)==="border-box";s=u in e;if(s){a=e[u]}}a=parseFloat(a)||0;return a+st(e,t,n||(o?"border":"content"),s,i,a)+"px"}T.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Ye(e,"opacity");return n===""?"1":n}}}},cssNumber:{animationIterationCount:true,columnCount:true,fillOpacity:true,flexGrow:true,flexShrink:true,fontWeight:true,gridArea:true,gridColumn:true,gridColumnEnd:true,gridColumnStart:true,gridRow:true,gridRowEnd:true,gridRowStart:true,lineHeight:true,opacity:true,order:true,orphans:true,widows:true,zIndex:true,zoom:true},cssProps:{},style:function(e,t,n,i){if(!e||e.nodeType===3||e.nodeType===8||!e.style){return}var r,o,s,a=h(t),u=nt.test(t),l=e.style;if(!u){t=et(a)}s=T.cssHooks[t]||T.cssHooks[a];if(n!==undefined){o=typeof n;if(o==="string"&&(r=p.exec(n))&&r[1]){n=_e(e,t,r);o="number"}if(n==null||n!==n){return}if(o==="number"&&!u){n+=r&&r[3]||(T.cssNumber[a]?"":"px")}if(!v.clearCloneStyle&&n===""&&t.indexOf("background")===0){l[t]="inherit"}if(!s||!("set"in s)||(n=s.set(e,n,i))!==undefined){if(u){l.setProperty(t,n)}else{l[t]=n}}}else{if(s&&"get"in s&&(r=s.get(e,false,i))!==undefined){return r}return l[t]}},css:function(e,t,n,i){var r,o,s,a=h(t),u=nt.test(t);if(!u){t=et(a)}s=T.cssHooks[t]||T.cssHooks[a];if(s&&"get"in s){r=s.get(e,true,n)}if(r===undefined){r=Ye(e,t,i)}if(r==="normal"&&t in rt){r=rt[t]}if(n===""||n){o=parseFloat(r);return n===true||isFinite(o)?o||0:r}return r}});T.each(["height","width"],function(e,l){T.cssHooks[l]={get:function(e,t,n){if(t){return tt.test(T.css(e,"display"))&&(!e.getClientRects().length||!e.getBoundingClientRect().width)?Ge(e,it,function(){return at(e,l,n)}):at(e,l,n)}},set:function(e,t,n){var i,r=je(e),o=!v.scrollboxSize()&&r.position==="absolute",s=o||n,a=s&&T.css(e,"boxSizing",false,r)==="border-box",u=n?st(e,l,n,a,r):0;if(a&&o){u-=Math.ceil(e["offset"+l[0].toUpperCase()+l.slice(1)]-parseFloat(r[l])-st(e,l,"border",false,r)-.5)}if(u&&(i=p.exec(t))&&(i[3]||"px")!=="px"){e.style[l]=t;t=T.css(e,l)}return ot(e,t,u)}}});T.cssHooks.marginLeft=Xe(v.reliableMarginLeft,function(e,t){if(t){return(parseFloat(Ye(e,"marginLeft"))||e.getBoundingClientRect().left-Ge(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+"px"}});T.each({margin:"",padding:"",border:"Width"},function(r,o){T.cssHooks[r+o]={expand:function(e){var t=0,n={},i=typeof e==="string"?e.split(" "):[e];for(;t<4;t++){n[r+S[t]+o]=i[t]||i[t-2]||i[0]}return n}};if(r!=="margin"){T.cssHooks[r+o].set=ot}});T.fn.extend({css:function(e,t){return f(this,function(e,t,n){var i,r,o={},s=0;if(Array.isArray(t)){i=je(e);r=t.length;for(;s1)}});function o(e,t,n,i,r){return new o.prototype.init(e,t,n,i,r)}T.Tween=o;o.prototype={constructor:o,init:function(e,t,n,i,r,o){this.elem=e;this.prop=n;this.easing=r||T.easing._default;this.options=t;this.start=this.now=this.cur();this.end=i;this.unit=o||(T.cssNumber[n]?"":"px")},cur:function(){var e=o.propHooks[this.prop];return e&&e.get?e.get(this):o.propHooks._default.get(this)},run:function(e){var t,n=o.propHooks[this.prop];if(this.options.duration){this.pos=t=T.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration)}else{this.pos=t=e}this.now=(this.end-this.start)*t+this.start;if(this.options.step){this.options.step.call(this.elem,this.now,this)}if(n&&n.set){n.set(this)}else{o.propHooks._default.set(this)}return this}};o.prototype.init.prototype=o.prototype;o.propHooks={_default:{get:function(e){var t;if(e.elem.nodeType!==1||e.elem[e.prop]!=null&&e.elem.style[e.prop]==null){return e.elem[e.prop]}t=T.css(e.elem,e.prop,"");return!t||t==="auto"?0:t},set:function(e){if(T.fx.step[e.prop]){T.fx.step[e.prop](e)}else if(e.elem.nodeType===1&&(T.cssHooks[e.prop]||e.elem.style[et(e.prop)]!=null)){T.style(e.elem,e.prop,e.now+e.unit)}else{e.elem[e.prop]=e.now}}}};o.propHooks.scrollTop=o.propHooks.scrollLeft={set:function(e){if(e.elem.nodeType&&e.elem.parentNode){e.elem[e.prop]=e.now}}};T.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"};T.fx=o.prototype.init;T.fx.step={};var q,ut,lt=/^(?:toggle|show|hide)$/,ft=/queueHooks$/;function ct(){if(ut){if(k.hidden===false&&C.requestAnimationFrame){C.requestAnimationFrame(ct)}else{C.setTimeout(ct,T.fx.interval)}T.fx.tick()}}function ht(){C.setTimeout(function(){q=undefined});return q=Date.now()}function dt(e,t){var n,i=0,r={height:e};t=t?1:0;for(;i<4;i+=2-t){n=S[i];r["margin"+n]=r["padding"+n]=e}if(t){r.opacity=r.width=e}return r}function pt(e,t,n){var i,r=(A.tweeners[t]||[]).concat(A.tweeners["*"]),o=0,s=r.length;for(;o1)},removeAttr:function(e){return this.each(function(){T.removeAttr(this,e)})}});T.extend({attr:function(e,t,n){var i,r,o=e.nodeType;if(o===3||o===8||o===2){return}if(typeof e.getAttribute==="undefined"){return T.prop(e,t,n)}if(o!==1||!T.isXMLDoc(e)){r=T.attrHooks[t.toLowerCase()]||(T.expr.match.bool.test(t)?yt:undefined)}if(n!==undefined){if(n===null){T.removeAttr(e,t);return}if(r&&"set"in r&&(i=r.set(e,n,t))!==undefined){return i}e.setAttribute(t,n+"");return n}if(r&&"get"in r&&(i=r.get(e,t))!==null){return i}i=T.find.attr(e,t);return i==null?undefined:i},attrHooks:{type:{set:function(e,t){if(!v.radioValue&&t==="radio"&&l(e,"input")){var n=e.value;e.setAttribute("type",t);if(n){e.value=n}return t}}}},removeAttr:function(e,t){var n,i=0,r=t&&t.match(R);if(r&&e.nodeType===1){while(n=r[i++]){e.removeAttribute(n)}}}});yt={set:function(e,t,n){if(t===false){T.removeAttr(e,n)}else{e.setAttribute(n,n)}return n}};T.each(T.expr.match.bool.source.match(/\w+/g),function(e,t){var s=gt[t]||T.find.attr;gt[t]=function(e,t,n){var i,r,o=t.toLowerCase();if(!n){r=gt[o];gt[o]=i;i=s(e,t,n)!=null?o:null;gt[o]=r}return i}});var Pt=/^(?:input|select|textarea|button)$/i,wt=/^(?:a|area)$/i;T.fn.extend({prop:function(e,t){return f(this,T.prop,e,t,arguments.length>1)},removeProp:function(e){return this.each(function(){delete this[T.propFix[e]||e]})}});T.extend({prop:function(e,t,n){var i,r,o=e.nodeType;if(o===3||o===8||o===2){return}if(o!==1||!T.isXMLDoc(e)){t=T.propFix[t]||t;r=T.propHooks[t]}if(n!==undefined){if(r&&"set"in r&&(i=r.set(e,n,t))!==undefined){return i}return e[t]=n}if(r&&"get"in r&&(i=r.get(e,t))!==null){return i}return e[t]},propHooks:{tabIndex:{get:function(e){var t=T.find.attr(e,"tabindex");if(t){return parseInt(t,10)}if(Pt.test(e.nodeName)||wt.test(e.nodeName)&&e.href){return 0}return-1}}},propFix:{"for":"htmlFor","class":"className"}});if(!v.optSelected){T.propHooks.selected={get:function(e){var t=e.parentNode;if(t&&t.parentNode){t.parentNode.selectedIndex}return null},set:function(e){var t=e.parentNode;if(t){t.selectedIndex;if(t.parentNode){t.parentNode.selectedIndex}}}}}T.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){T.propFix[this.toLowerCase()]=this});function O(e){var t=e.match(R)||[];return t.join(" ")}function M(e){return e.getAttribute&&e.getAttribute("class")||""}function St(e){if(Array.isArray(e)){return e}if(typeof e==="string"){return e.match(R)||[]}return[]}T.fn.extend({addClass:function(t){var e,n,i,r,o,s,a,u=0;if(m(t)){return this.each(function(e){T(this).addClass(t.call(this,e,M(this)))})}e=St(t);if(e.length){while(n=this[u++]){r=M(n);i=n.nodeType===1&&" "+O(r)+" ";if(i){s=0;while(o=e[s++]){if(i.indexOf(" "+o+" ")<0){i+=o+" "}}a=O(i);if(r!==a){n.setAttribute("class",a)}}}}return this},removeClass:function(t){var e,n,i,r,o,s,a,u=0;if(m(t)){return this.each(function(e){T(this).removeClass(t.call(this,e,M(this)))})}if(!arguments.length){return this.attr("class","")}e=St(t);if(e.length){while(n=this[u++]){r=M(n);i=n.nodeType===1&&" "+O(r)+" ";if(i){s=0;while(o=e[s++]){while(i.indexOf(" "+o+" ")>-1){i=i.replace(" "+o+" "," ")}}a=O(i);if(r!==a){n.setAttribute("class",a)}}}}return this},toggleClass:function(r,t){var o=typeof r,s=o==="string"||Array.isArray(r);if(typeof t==="boolean"&&s){return t?this.addClass(r):this.removeClass(r)}if(m(r)){return this.each(function(e){T(this).toggleClass(r.call(this,e,M(this),t),t)})}return this.each(function(){var e,t,n,i;if(s){t=0;n=T(this);i=St(r);while(e=i[t++]){if(n.hasClass(e)){n.removeClass(e)}else{n.addClass(e)}}}else if(r===undefined||o==="boolean"){e=M(this);if(e){w.set(this,"__className__",e)}if(this.setAttribute){this.setAttribute("class",e||r===false?"":w.get(this,"__className__")||"")}}})},hasClass:function(e){var t,n,i=0;t=" "+e+" ";while(n=this[i++]){if(n.nodeType===1&&(" "+O(M(n))+" ").indexOf(t)>-1){return true}}return false}});var _t=/\r/g;T.fn.extend({val:function(n){var i,e,r,t=this[0];if(!arguments.length){if(t){i=T.valHooks[t.type]||T.valHooks[t.nodeName.toLowerCase()];if(i&&"get"in i&&(e=i.get(t,"value"))!==undefined){return e}e=t.value;if(typeof e==="string"){return e.replace(_t,"")}return e==null?"":e}return}r=m(n);return this.each(function(e){var t;if(this.nodeType!==1){return}if(r){t=n.call(this,e,T(this).val())}else{t=n}if(t==null){t=""}else if(typeof t==="number"){t+=""}else if(Array.isArray(t)){t=T.map(t,function(e){return e==null?"":e+""})}i=T.valHooks[this.type]||T.valHooks[this.nodeName.toLowerCase()];if(!i||!("set"in i)||i.set(this,t,"value")===undefined){this.value=t}})}});T.extend({valHooks:{option:{get:function(e){var t=T.find.attr(e,"value");return t!=null?t:O(T.text(e))}},select:{get:function(e){var t,n,i,r=e.options,o=e.selectedIndex,s=e.type==="select-one",a=s?null:[],u=s?o+1:r.length;if(o<0){i=u}else{i=s?o:0}for(;i-1){n=true}}if(!n){e.selectedIndex=-1}return o}}}});T.each(["radio","checkbox"],function(){T.valHooks[this]={set:function(e,t){if(Array.isArray(t)){return e.checked=T.inArray(T(e).val(),t)>-1}}};if(!v.checkOn){T.valHooks[this].get=function(e){return e.getAttribute("value")===null?"on":e.value}}});v.focusin="onfocusin"in C;var bt=/^(?:focusinfocus|focusoutblur)$/,Ct=function(e){e.stopPropagation()};T.extend(T.event,{trigger:function(e,t,n,i){var r,o,s,a,u,l,f,c,h=[n||k],d=H.call(e,"type")?e.type:e,p=H.call(e,"namespace")?e.namespace.split("."):[];o=c=s=n=n||k;if(n.nodeType===3||n.nodeType===8){return}if(bt.test(d+T.event.triggered)){return}if(d.indexOf(".")>-1){p=d.split(".");d=p.shift();p.sort()}u=d.indexOf(":")<0&&"on"+d;e=e[T.expando]?e:new T.Event(d,typeof e==="object"&&e);e.isTrigger=i?2:3;e.namespace=p.join(".");e.rnamespace=e.namespace?new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"):null;e.result=undefined;if(!e.target){e.target=n}t=t==null?[e]:T.makeArray(t,[e]);f=T.event.special[d]||{};if(!i&&f.trigger&&f.trigger.apply(n,t)===false){return}if(!i&&!f.noBubble&&!y(n)){a=f.delegateType||d;if(!bt.test(a+d)){o=o.parentNode}for(;o;o=o.parentNode){h.push(o);s=o}if(s===(n.ownerDocument||k)){h.push(s.defaultView||s.parentWindow||C)}}r=0;while((o=h[r++])&&!e.isPropagationStopped()){c=o;e.type=r>1?a:f.bindType||d;l=(w.get(o,"events")||Object.create(null))[e.type]&&w.get(o,"handle");if(l){l.apply(o,t)}l=u&&o[u];if(l&&l.apply&&P(o)){e.result=l.apply(o,t);if(e.result===false){e.preventDefault()}}}e.type=d;if(!i&&!e.isDefaultPrevented()){if((!f._default||f._default.apply(h.pop(),t)===false)&&P(n)){if(u&&m(n[d])&&!y(n)){s=n[u];if(s){n[u]=null}T.event.triggered=d;if(e.isPropagationStopped()){c.addEventListener(d,Ct)}n[d]();if(e.isPropagationStopped()){c.removeEventListener(d,Ct)}T.event.triggered=undefined;if(s){n[u]=s}}}}return e.result},simulate:function(e,t,n){var i=T.extend(new T.Event,n,{type:e,isSimulated:true});T.event.trigger(i,null,t)}});T.fn.extend({trigger:function(e,t){return this.each(function(){T.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n){return T.event.trigger(e,t,n,true)}}});if(!v.focusin){T.each({focus:"focusin",blur:"focusout"},function(n,i){var r=function(e){T.event.simulate(i,e.target,T.event.fix(e))};T.event.special[i]={setup:function(){var e=this.ownerDocument||this.document||this,t=w.access(e,i);if(!t){e.addEventListener(n,r,true)}w.access(e,i,(t||0)+1)},teardown:function(){var e=this.ownerDocument||this.document||this,t=w.access(e,i)-1;if(!t){e.removeEventListener(n,r,true);w.remove(e,i)}else{w.access(e,i,t)}}}})}var kt=C.location;var Tt={guid:Date.now()};var Rt=/\?/;T.parseXML=function(e){var t,n;if(!e||typeof e!=="string"){return null}try{t=(new C.DOMParser).parseFromString(e,"text/xml")}catch(i){}n=t&&t.getElementsByTagName("parsererror")[0];if(!t||n){T.error("Invalid XML: "+(n?T.map(n.childNodes,function(e){return e.textContent}).join("\n"):e))}return t};var Dt=/\[\]$/,xt=/\r?\n/g,It=/^(?:submit|button|image|reset|file)$/i,Et=/^(?:input|select|textarea|keygen)/i;function qt(n,e,i,r){var t;if(Array.isArray(e)){T.each(e,function(e,t){if(i||Dt.test(n)){r(n,t)}else{qt(n+"["+(typeof t==="object"&&t!=null?e:"")+"]",t,i,r)}})}else if(!i&&g(e)==="object"){for(t in e){qt(n+"["+t+"]",e[t],i,r)}}else{r(n,e)}}T.param=function(e,t){var n,i=[],r=function(e,t){var n=m(t)?t():t;i[i.length]=encodeURIComponent(e)+"="+encodeURIComponent(n==null?"":n)};if(e==null){return""}if(Array.isArray(e)||e.jquery&&!T.isPlainObject(e)){T.each(e,function(){r(this.name,this.value)})}else{for(n in e){qt(n,e[n],t,r)}}return i.join("&")};T.fn.extend({serialize:function(){return T.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=T.prop(this,"elements");return e?T.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!T(this).is(":disabled")&&Et.test(this.nodeName)&&!It.test(e)&&(this.checked||!r.test(e))}).map(function(e,t){var n=T(this).val();if(n==null){return null}if(Array.isArray(n)){return T.map(n,function(e){return{name:t.name,value:e.replace(xt,"\r\n")}})}return{name:t.name,value:n.replace(xt,"\r\n")}}).get()}});var At=/%20/g,Ot=/#.*$/,Mt=/([?&])_=[^&]*/,Lt=/^(.*?):[ \t]*([^\r\n]*)$/gm,Ft=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Wt=/^(?:GET|HEAD)$/,Nt=/^\/\//,Bt={},zt={},Jt="*/".concat("*"),Ht=k.createElement("a");Ht.href=kt.href;function Ut(o){return function(e,t){if(typeof e!=="string"){t=e;e="*"}var n,i=0,r=e.toLowerCase().match(R)||[];if(m(t)){while(n=r[i++]){if(n[0]==="+"){n=n.slice(1)||"*";(o[n]=o[n]||[]).unshift(t)}else{(o[n]=o[n]||[]).push(t)}}}}}function jt(t,r,o,s){var a={},u=t===zt;function l(e){var i;a[e]=true;T.each(t[e]||[],function(e,t){var n=t(r,o,s);if(typeof n==="string"&&!u&&!a[n]){r.dataTypes.unshift(n);l(n);return false}else if(u){return!(i=n)}});return i}return l(r.dataTypes[0])||!a["*"]&&l("*")}function Gt(e,t){var n,i,r=T.ajaxSettings.flatOptions||{};for(n in t){if(t[n]!==undefined){(r[n]?e:i||(i={}))[n]=t[n]}}if(i){T.extend(true,e,i)}return e}function Vt(e,t,n){var i,r,o,s,a=e.contents,u=e.dataTypes;while(u[0]==="*"){u.shift();if(i===undefined){i=e.mimeType||t.getResponseHeader("Content-Type")}}if(i){for(r in a){if(a[r]&&a[r].test(i)){u.unshift(r);break}}}if(u[0]in n){o=u[0]}else{for(r in n){if(!u[0]||e.converters[r+" "+u[0]]){o=r;break}if(!s){s=r}}o=o||s}if(o){if(o!==u[0]){u.unshift(o)}return n[o]}}function Yt(e,t,n,i){var r,o,s,a,u,l={},f=e.dataTypes.slice();if(f[1]){for(s in e.converters){l[s.toLowerCase()]=e.converters[s]}}o=f.shift();while(o){if(e.responseFields[o]){n[e.responseFields[o]]=t}if(!u&&i&&e.dataFilter){t=e.dataFilter(t,e.dataType)}u=o;o=f.shift();if(o){if(o==="*"){o=u}else if(u!=="*"&&u!==o){s=l[u+" "+o]||l["* "+o];if(!s){for(r in l){a=r.split(" ");if(a[1]===o){s=l[u+" "+a[0]]||l["* "+a[0]];if(s){if(s===true){s=l[r]}else if(l[r]!==true){o=a[0];f.unshift(a[1])}break}}}}if(s!==true){if(s&&e["throws"]){t=s(t)}else{try{t=s(t)}catch(c){return{state:"parsererror",error:s?c:"No conversion from "+u+" to "+o}}}}}}}return{state:"success",data:t}}T.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:kt.href,type:"GET",isLocal:Ft.test(kt.protocol),global:true,processData:true,"async":true,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Jt,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":true,"text json":JSON.parse,"text xml":T.parseXML},flatOptions:{url:true,context:true}},ajaxSetup:function(e,t){return t?Gt(Gt(e,T.ajaxSettings),t):Gt(T.ajaxSettings,e)},ajaxPrefilter:Ut(Bt),ajaxTransport:Ut(zt),ajax:function(e,t){if(typeof e==="object"){t=e;e=undefined}t=t||{};var f,c,h,n,d,i,p,v,r,o,m=T.ajaxSetup({},t),y=m.context||m,g=m.context&&(y.nodeType||y.jquery)?T(y):T.event,P=T.Deferred(),w=T.Callbacks("once memory"),S=m.statusCode||{},s={},a={},u="canceled",_={readyState:0,getResponseHeader:function(e){var t;if(p){if(!n){n={};while(t=Lt.exec(h)){n[t[1].toLowerCase()+" "]=(n[t[1].toLowerCase()+" "]||[]).concat(t[2])}}t=n[e.toLowerCase()+" "]}return t==null?null:t.join(", ")},getAllResponseHeaders:function(){return p?h:null},setRequestHeader:function(e,t){if(p==null){e=a[e.toLowerCase()]=a[e.toLowerCase()]||e;s[e]=t}return this},overrideMimeType:function(e){if(p==null){m.mimeType=e}return this},statusCode:function(e){var t;if(e){if(p){_.always(e[_.status])}else{for(t in e){S[t]=[S[t],e[t]]}}}return this},abort:function(e){var t=e||u;if(f){f.abort(t)}l(0,t);return this}};P.promise(_);m.url=((e||m.url||kt.href)+"").replace(Nt,kt.protocol+"//");m.type=t.method||t.type||m.method||m.type;m.dataTypes=(m.dataType||"*").toLowerCase().match(R)||[""];if(m.crossDomain==null){i=k.createElement("a");try{i.href=m.url;i.href=i.href;m.crossDomain=Ht.protocol+"//"+Ht.host!==i.protocol+"//"+i.host}catch(b){m.crossDomain=true}}if(m.data&&m.processData&&typeof m.data!=="string"){m.data=T.param(m.data,m.traditional)}jt(Bt,m,t,_);if(p){return _}v=T.event&&m.global;if(v&&T.active++===0){T.event.trigger("ajaxStart")}m.type=m.type.toUpperCase();m.hasContent=!Wt.test(m.type);c=m.url.replace(Ot,"");if(!m.hasContent){o=m.url.slice(c.length);if(m.data&&(m.processData||typeof m.data==="string")){c+=(Rt.test(c)?"&":"?")+m.data;delete m.data}if(m.cache===false){c=c.replace(Mt,"$1");o=(Rt.test(c)?"&":"?")+"_="+Tt.guid+++o}m.url=c+o}else if(m.data&&m.processData&&(m.contentType||"").indexOf("application/x-www-form-urlencoded")===0){m.data=m.data.replace(At,"+")}if(m.ifModified){if(T.lastModified[c]){_.setRequestHeader("If-Modified-Since",T.lastModified[c])}if(T.etag[c]){_.setRequestHeader("If-None-Match",T.etag[c])}}if(m.data&&m.hasContent&&m.contentType!==false||t.contentType){_.setRequestHeader("Content-Type",m.contentType)}_.setRequestHeader("Accept",m.dataTypes[0]&&m.accepts[m.dataTypes[0]]?m.accepts[m.dataTypes[0]]+(m.dataTypes[0]!=="*"?", "+Jt+"; q=0.01":""):m.accepts["*"]);for(r in m.headers){_.setRequestHeader(r,m.headers[r])}if(m.beforeSend&&(m.beforeSend.call(y,_,m)===false||p)){return _.abort()}u="abort";w.add(m.complete);_.done(m.success);_.fail(m.error);f=jt(zt,m,t,_);if(!f){l(-1,"No Transport")}else{_.readyState=1;if(v){g.trigger("ajaxSend",[_,m])}if(p){return _}if(m["async"]&&m.timeout>0){d=C.setTimeout(function(){_.abort("timeout")},m.timeout)}try{p=false;f.send(s,l)}catch(b){if(p){throw b}l(-1,b)}}function l(e,t,n,i){var r,o,s,a,u,l=t;if(p){return}p=true;if(d){C.clearTimeout(d)}f=undefined;h=i||"";_.readyState=e>0?4:0;r=e>=200&&e<300||e===304;if(n){a=Vt(m,_,n)}if(!r&&T.inArray("script",m.dataTypes)>-1&&T.inArray("json",m.dataTypes)<0){m.converters["text script"]=function(){}}a=Yt(m,a,_,r);if(r){if(m.ifModified){u=_.getResponseHeader("Last-Modified");if(u){T.lastModified[c]=u}u=_.getResponseHeader("etag");if(u){T.etag[c]=u}}if(e===204||m.type==="HEAD"){l="nocontent"}else if(e===304){l="notmodified"}else{l=a.state;o=a.data;s=a.error;r=!s}}else{s=l;if(e||!l){l="error";if(e<0){e=0}}}_.status=e;_.statusText=(t||l)+"";if(r){P.resolveWith(y,[o,l,_])}else{P.rejectWith(y,[_,l,s])}_.statusCode(S);S=undefined;if(v){g.trigger(r?"ajaxSuccess":"ajaxError",[_,m,r?o:s])}w.fireWith(y,[_,l]);if(v){g.trigger("ajaxComplete",[_,m]);if(!--T.active){T.event.trigger("ajaxStop")}}}return _},getJSON:function(e,t,n){return T.get(e,t,n,"json")},getScript:function(e,t){return T.get(e,undefined,t,"script")}});T.each(["get","post"],function(e,r){T[r]=function(e,t,n,i){if(m(t)){i=i||n;n=t;t=undefined}return T.ajax(T.extend({url:e,type:r,dataType:i,data:t,success:n},T.isPlainObject(e)&&e))}});T.ajaxPrefilter(function(e){var t;for(t in e.headers){if(t.toLowerCase()==="content-type"){e.contentType=e.headers[t]||""}}});T._evalUrl=function(e,t,n){return T.ajax({url:e,type:"GET",dataType:"script",cache:true,"async":false,global:false,converters:{"text script":function(){}},dataFilter:function(e){T.globalEval(e,t,n)}})};T.fn.extend({wrapAll:function(e){var t;if(this[0]){if(m(e)){e=e.call(this[0])}t=T(e,this[0].ownerDocument).eq(0).clone(true);if(this[0].parentNode){t.insertBefore(this[0])}t.map(function(){var e=this;while(e.firstElementChild){e=e.firstElementChild}return e}).append(this)}return this},wrapInner:function(n){if(m(n)){return this.each(function(e){T(this).wrapInner(n.call(this,e))})}return this.each(function(){var e=T(this),t=e.contents();if(t.length){t.wrapAll(n)}else{e.append(n)}})},wrap:function(t){var n=m(t);return this.each(function(e){T(this).wrapAll(n?t.call(this,e):t)})},unwrap:function(e){this.parent(e).not("body").each(function(){T(this).replaceWith(this.childNodes)});return this}});T.expr.pseudos.hidden=function(e){return!T.expr.pseudos.visible(e)};T.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)};T.ajaxSettings.xhr=function(){try{return new C.XMLHttpRequest}catch(e){}};var Xt={0:200,1223:204},Zt=T.ajaxSettings.xhr();v.cors=!!Zt&&"withCredentials"in Zt;v.ajax=Zt=!!Zt;T.ajaxTransport(function(o){var s,a;if(v.cors||Zt&&!o.crossDomain){return{send:function(e,t){var n,i=o.xhr();i.open(o.type,o.url,o["async"],o.username,o.password);if(o.xhrFields){for(n in o.xhrFields){i[n]=o.xhrFields[n]}}if(o.mimeType&&i.overrideMimeType){i.overrideMimeType(o.mimeType)}if(!o.crossDomain&&!e["X-Requested-With"]){e["X-Requested-With"]="XMLHttpRequest"}for(n in e){i.setRequestHeader(n,e[n])}s=function(e){return function(){if(s){s=a=i.onload=i.onerror=i.onabort=i.ontimeout=i.onreadystatechange=null;if(e==="abort"){i.abort()}else if(e==="error"){if(typeof i.status!=="number"){t(0,"error")}else{t(i.status,i.statusText)}}else{t(Xt[i.status]||i.status,i.statusText,(i.responseType||"text")!=="text"||typeof i.responseText!=="string"?{binary:i.response}:{text:i.responseText},i.getAllResponseHeaders())}}}};i.onload=s();a=i.onerror=i.ontimeout=s("error");if(i.onabort!==undefined){i.onabort=a}else{i.onreadystatechange=function(){if(i.readyState===4){C.setTimeout(function(){if(s){a()}})}}}s=s("abort");try{i.send(o.hasContent&&o.data||null)}catch(r){if(s){throw r}}},abort:function(){if(s){s()}}}}});T.ajaxPrefilter(function(e){if(e.crossDomain){e.contents.script=false}});T.ajaxSetup({accepts:{script:"text/javascript, application/javascript, "+"application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){T.globalEval(e);return e}}});T.ajaxPrefilter("script",function(e){if(e.cache===undefined){e.cache=false}if(e.crossDomain){e.type="GET"}});T.ajaxTransport("script",function(n){if(n.crossDomain||n.scriptAttrs){var i,r;return{send:function(e,t){i=T(" - - -
-
- -
- Digital channel - - - - - - - -
-
-
-
-
-
-
- Local configuration - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Play performance - - Image size - -
Rules - - Snapshot format - -
Package size - - Protocol - -
Save record files to 
Save downloaded files to 
Save snapshots in live view to 
Save snapshots when playback to 
Save clips to 
Save device snapshots to 
 
-
-
-
-
- Browse - - - - - - - - - - - - - - - - - - - - - -
Stream type - -
Volume -  (Range:0~100) - - - -
Voice channel - - - - - -
- - - - -
- - - - - -
-
-
- drawing - - - - - - - - - - - - - -
- - -
- Graph ID: - Name: -
- - - - -
- -
-
-
- PTZ control - - - - - - - - - - -
- - - -
- - - -
- - - -
- - - - - - - - - - - - -
PTZ speed - -
Preset
- - -
- - - - - - - - - - - - - -
-
-
- Playback - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Stream type - -
Start time - (Time format:2013-11-11 12:34:56) -
End time - - -
downloadBytime starttime - (Time format:2013-11-11 12:34:56) -
downloadBytime endtime - - -
-
-
-
-
- - - - -
- - - - -
- - - -   -
-
-
- System maintenance - - - - - - - -
- - -
-    -
-
-
-
-
- Operation information -
-
-
- Event callback information -
-
-
- - - - - - - - - \ No newline at end of file diff --git a/public/demo/en/demo.js b/public/demo/en/demo.js deleted file mode 100644 index 28b6616c..00000000 --- a/public/demo/en/demo.js +++ /dev/null @@ -1,1844 +0,0 @@ -// Init plugin - -// overall save the current selected window -var g_iWndIndex = 0; //don't have to set the variable; default to use the current selected window without transmiting value when the interface has window parameters -var g_oLocalConfig = null; //local configuration variable - -//Error Code -var ERROR_CODE_UNKNOWN = 1000; -var ERROR_CODE_NETWORKERROR = 1001; -var ERROR_CODE_PARAMERROR = 1002; - -//login -var ERROR_CODE_LOGIN_NOLOGIN = 2000; -var ERROR_CODE_LOGIN_REPEATLOGIN = 2001; -var ERROR_CODE_LOGIN_NOSUPPORT = 2002; - -//preview and playback -var ERROR_CODE_PLAY_PLUGININITFAIL = 3000; -var ERROR_CODE_PLAY_NOREPEATPLAY = 3001; -var ERROR_CODE_PLAY_PLAYBACKABNORMAL = 3002; -var ERROR_CODE_PLAY_PLAYBACKSTOP = 3003; -var ERROR_CODE_PLAY_NOFREESPACE = 3004; - -//talk -var ERROR_CODE_TALK_FAIL = 5000; - - -var version="V3.3.0build20230322" -$(function () { - // Init plugin parameters and insert the plugin - WebVideoCtrl.I_InitPlugin({ - bWndFull: true, //Wether support doule clicking to switch the full-screen mode: it's supported by default; true:support, false:not support - iWndowType: 1, - cbSelWnd: function (xmlDoc) { - g_iWndIndex = parseInt($(xmlDoc).find("SelectWnd").eq(0).text(), 10); - var szInfo = "the selected window index: " + g_iWndIndex; - showCBInfo(szInfo); - }, - cbDoubleClickWnd: function (iWndIndex, bFullScreen) { - var szInfo = "present window number to zoom: " + iWndIndex; - if (!bFullScreen) { - szInfo = "present window number to restore: " + iWndIndex; - } - showCBInfo(szInfo); - }, - cbEvent: function (iEventType, iParam1, iParam2) { - if (2 == iEventType) { - showCBInfo("window " + iParam1 + "playback finished!"); - } else if (-1 == iEventType) { - showCBInfo("device " + iParam1 + "network error!"); - } else if (3001 == iEventType) { - clickStopRecord(g_szRecordType, iParam1); - } - }, - cbInitPluginComplete: function () { - WebVideoCtrl.I_InsertOBJECTPlugin("divPlugin").then(() => { - WebVideoCtrl.I_CheckPluginVersion().then((bFlag) => { - if (bFlag) { - alert("Detect the latest version, please double click HCWebSDKPlugin.exe to update!"); - } - }); - }, () => { - alert("The plugin initialization failed. Please confirm if the plugin has been installed; If not installed, please double click on HCWebSDKPlugin.exe to install it!"); - }); - } - }); - - // window event binding - $(window).bind({ - resize: function () { - //WebVideoCtrl.I_Resize($("body").width(), $("body").height()); - } - }); - - //init date - var szCurTime = dateFormat(new Date(), "yyyy-MM-dd"); - $("#starttime").val(szCurTime + " 00:00:00"); - $("#endtime").val(szCurTime + " 23:59:59"); - $("#downloadstarttime").val(szCurTime + " 00:00:00"); - $("#downloadendtime").val(szCurTime + " 23:59:59"); -}); - -// display operation info -function showOPInfo(szInfo, status, xmlDoc) { - var szTip = "
" + dateFormat(new Date(), "yyyy-MM-dd hh:mm:ss") + " " + szInfo; - if (typeof status != "undefined" && status != 200) { - var szStatusString = $(xmlDoc).find("statusString").eq(0).text(); - var szSubStatusCode = $(xmlDoc).find("subStatusCode").eq(0).text(); - if ("" === szSubStatusCode) { - if("" === szSubStatusCode && "" === szStatusString){ - szTip += "(" + status + ")"; - } - else{ - szTip += "(" + status + ", " + szStatusString + ")"; - } - } else { - szTip += "(" + status + ", " + szSubStatusCode + ")"; - } - } - szTip += "
"; - - $("#opinfo").html(szTip + $("#opinfo").html()); -} - -// display callback info -function showCBInfo(szInfo) { - szInfo = "
" + dateFormat(new Date(), "yyyy-MM-dd hh:mm:ss") + " " + szInfo + "
"; - $("#cbinfo").html(szInfo + $("#cbinfo").html()); -} - -// time format -function dateFormat(oDate, fmt) { - var o = { - "M+": oDate.getMonth() + 1, //month - "d+": oDate.getDate(), //day - "h+": oDate.getHours(), //hour - "m+": oDate.getMinutes(), //minute - "s+": oDate.getSeconds(), //second - "q+": Math.floor((oDate.getMonth() + 3) / 3), //quarter - "S": oDate.getMilliseconds()//millisecond - }; - if (/(y+)/.test(fmt)) { - fmt = fmt.replace(RegExp.$1, (oDate.getFullYear() + "").substr(4 - RegExp.$1.length)); - } - for (var k in o) { - if (new RegExp("(" + k + ")").test(fmt)) { - fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length))); - } - } - return fmt; -} - -// get window size -function getWindowSize() { - var nWidth = $(this).width() + $(this).scrollLeft(), - nHeight = $(this).height() + $(this).scrollTop(); - - return {width: nWidth, height: nHeight}; -} - -// open option dialog 0: folder, 1: file -function clickOpenFileDlg(id, iType) { - WebVideoCtrl.I_OpenFileDlg(iType).then(function(szDirPath){ - if (szDirPath != -1 && szDirPath != "" && szDirPath != null) { - $("#" + id).val(szDirPath); - } - }, function() { - showOPInfo("Failed to open file path."); - }); -} - -// get local parameters -function clickGetLocalCfg() { - WebVideoCtrl.I_GetLocalCfg().then((oLocalConfig) => { - g_oLocalConfig = oLocalConfig; - $("#netsPreach").val(oLocalConfig.buffNumberType); - $("#wndSize").val(oLocalConfig.playWndType); - $("#rulesInfo").val(oLocalConfig.ivsMode); - $("#captureFileFormat").val(oLocalConfig.captureFileFormat); - $("#packSize").val(oLocalConfig.packgeSize); - $("#recordPath").val(oLocalConfig.recordPath); - $("#downloadPath").val(oLocalConfig.downloadPath); - $("#previewPicPath").val(oLocalConfig.capturePath); - $("#playbackPicPath").val(oLocalConfig.playbackPicPath); - $("#devicePicPath").val(oLocalConfig.deviceCapturePath); - $("#playbackFilePath").val(oLocalConfig.playbackFilePath); - $("#protocolType").val(oLocalConfig.protocolType); - $("#secretKey").val("\x7F\x7F\x7F\x7F\x7F\x7F\x7F\x7F"); - showOPInfo("Get local configuration success."); - }, (oError) => { - var szInfo = "Get local configuration failed."; - showOPInfo(szInfo, oError.errorCode, oError.errorMsg); - }); -} - -// set local parameters -async function clickSetLocalCfg() { - g_oLocalConfig.buffNumberType = $("#netsPreach").val(); - g_oLocalConfig.playWndType = $("#wndSize").val(); - g_oLocalConfig.ivsMode = $("#rulesInfo").val(); - g_oLocalConfig.captureFileFormat = $("#captureFileFormat").val(); - g_oLocalConfig.packgeSize = $("#packSize").val(); - g_oLocalConfig.recordPath = $("#recordPath").val(); - g_oLocalConfig.downloadPath = $("#downloadPath").val(); - g_oLocalConfig.capturePath = $("#previewPicPath").val(); - g_oLocalConfig.playbackPicPath = $("#playbackPicPath").val(); - g_oLocalConfig.deviceCapturePath = $("#devicePicPath").val(); - g_oLocalConfig.playbackFilePath = $("#playbackFilePath").val(); - g_oLocalConfig.protocolType = $("#protocolType").val(); - if ("\x7F\x7F\x7F\x7F\x7F\x7F\x7F\x7F" !== $("#secretKey").val()) { - g_oLocalConfig.secretKey = await WebVideoCtrl.I_GetEncryptString($("#secretKey").val()); - } - WebVideoCtrl.I_SetLocalCfg(g_oLocalConfig).then(() => { - showOPInfo("Set local configuration success."); - }, (oError) => { - var szInfo = "Set local configuration failed."; - showOPInfo(szInfo, oError.errorCode, oError.errorMsg); - }); -} - -// windows number -function changeWndNum(iType) { - iType = parseInt(iType, 10); - WebVideoCtrl.I_ChangeWndNum(iType).then(() => { - showOPInfo("Change window number successful!"); - }, (oError) => { - var szInfo = "Change window number failed!"; - showOPInfo(szInfo, oError.errorCode, oError.errorMsg); - }); -} - -// login -function clickLogin() { - var szIP = $("#loginip").val(), - szPort = $("#port").val(), - szUsername = $("#username").val(), - szPassword = $("#password").val(); - - if ("" == szIP || "" == szPort) { - return; - } - - var szDeviceIdentify = szIP + "_" + szPort; - - WebVideoCtrl.I_Login(szIP, 1, szPort, szUsername, szPassword, { - timeout: 3000, - success: function (xmlDoc) { - showOPInfo(szDeviceIdentify + " login successful"); - $("#ip").prepend(""); - setTimeout(function () { - $("#ip").val(szDeviceIdentify); - setTimeout(function() { - getChannelInfo(); - }, 1000); - getDevicePort(); - }, 10); - }, - error: function (oError) { - if (ERROR_CODE_LOGIN_REPEATLOGIN === status) { - showOPInfo(szDeviceIdentify + " is already login"); - } else { - showOPInfo(szDeviceIdentify + " login failed", oError.errorCode, oError.errorMsg); - } - } - }); -} - -//logout -function clickLogout() { - var szDeviceIdentify = $("#ip").val(); - - if (null == szDeviceIdentify) { - return; - } - - WebVideoCtrl.I_Logout(szDeviceIdentify).then(() => { - showOPInfo(szDeviceIdentify + " " + "logout successful"); - }, () => { - showOPInfo(szDeviceIdentify + " " + "logout failed"); - }); -} - -// get deivce info -function clickGetDeviceInfo() { - var szDeviceIdentify = $("#ip").val(); - - if (null == szDeviceIdentify) { - return; - } - - WebVideoCtrl.I_GetDeviceInfo(szDeviceIdentify, { - success: function (xmlDoc) { - var arrStr = []; - arrStr.push("device name: " + $(xmlDoc).find("deviceName").eq(0).text() + "\r\n"); - arrStr.push("device ID: " + $(xmlDoc).find("deviceID").eq(0).text() + "\r\n"); - arrStr.push("model: " + $(xmlDoc).find("model").eq(0).text() + "\r\n"); - arrStr.push("serial number: " + $(xmlDoc).find("serialNumber").eq(0).text() + "\r\n"); - arrStr.push("MAC address: " + $(xmlDoc).find("macAddress").eq(0).text() + "\r\n"); - arrStr.push("firmware version: " + $(xmlDoc).find("firmwareVersion").eq(0).text() + " " + $(xmlDoc).find("firmwareReleasedDate").eq(0).text() + "\r\n"); - arrStr.push("encoder version: " + $(xmlDoc).find("encoderVersion").eq(0).text() + " " + $(xmlDoc).find("encoderReleasedDate").eq(0).text() + "\r\n"); - - showOPInfo(szDeviceIdentify + " get deivce info success."); - alert(arrStr.join("")); - }, - error: function (oError) { - showOPInfo(szDeviceIdentify + " get device info failed ", oError.errorCode, oError.errorMsg); - } - }); -} - -// get channel info -function getChannelInfo() { - var szDeviceIdentify = $("#ip").val(), - oSel = $("#channels").empty(); - - if (null == szDeviceIdentify) { - return; - } - - // analog channel - WebVideoCtrl.I_GetAnalogChannelInfo(szDeviceIdentify, { - success: function (xmlDoc) { - var oChannels = $(xmlDoc).find("VideoInputChannel"); - - $.each(oChannels, function (i) { - var id = $(this).find("id").eq(0).text(), - name = $(this).find("name").eq(0).text(); - if ("" == name) { - name = "Camera " + (i < 9 ? "0" + (i + 1) : (i + 1)); - } - oSel.append(""); - }); - showOPInfo(szDeviceIdentify + " get analog channel success."); - }, - error: function (oError) { - showOPInfo(szDeviceIdentify + " get analog channel failed ", oError.errorCode, oError.errorMsg); - } - }); - // IP channel - WebVideoCtrl.I_GetDigitalChannelInfo(szDeviceIdentify, { - success: function (xmlDoc) { - var oChannels = $(xmlDoc).find("InputProxyChannelStatus"); - - $.each(oChannels, function (i) { - var id = $(this).find("id").eq(0).text(), - name = $(this).find("name").eq(0).text(), - online = $(this).find("online").eq(0).text(); - if ("false" == online) { - return true; - } - if ("" == name) { - name = "IPCamera " + (i < 9 ? "0" + (i + 1) : (i + 1)); - } - oSel.append(""); - }); - showOPInfo(szDeviceIdentify + " get IP channel success."); - }, - error: function (oError) { - showOPInfo(szDeviceIdentify + " get IP channel failed ", oError.errorCode, oError.errorMsg); - } - }); - // zero-channel info - WebVideoCtrl.I_GetZeroChannelInfo(szDeviceIdentify, { - success: function (xmlDoc) { - var oChannels = $(xmlDoc).find("ZeroVideoChannel"); - - $.each(oChannels, function (i) { - var id = $(this).find("id").eq(0).text(), - name = $(this).find("name").eq(0).text(); - if ("" == name) { - name = "Zero Channel " + (i < 9 ? "0" + (i + 1) : (i + 1)); - } - if ("true" == $(this).find("enabled").eq(0).text()) { - oSel.append(""); - } - }); - showOPInfo(szDeviceIdentify + " get zero-channel success."); - }, - error: function (oError) { - showOPInfo(szDeviceIdentify + " get zero-channel failed ", oError.errorCode, oError.errorMsg); - } - }); -} - -//get port -function getDevicePort() { - var szDeviceIdentify = $("#ip").val(); - - if (null == szDeviceIdentify) { - return; - } - - WebVideoCtrl.I_GetDevicePort(szDeviceIdentify).then((oPort) => { - $("#deviceport").val(oPort.iDevicePort); - $("#rtspport").val(oPort.iRtspPort); - - showOPInfo(szDeviceIdentify + " get port success."); - }, (oError) => { - var szInfo = "get port failed."; - showOPInfo(szDeviceIdentify + szInfo, oError.errorCode, oError.errorMsg); - }); -} - -// get IP channel -async function clickGetDigitalChannelInfo() { - var szDeviceIdentify = $("#ip").val(), - iAnalogChannelNum = 0; - - $("#digitalchannellist").empty(); - - if (null == szDeviceIdentify) { - return; - } - - try { - var oAnalogChannelInfo = await WebVideoCtrl.I_GetAnalogChannelInfo(szDeviceIdentify, {}); - iAnalogChannelNum = $(oAnalogChannelInfo).find("VideoInputChannel").length; - } finally { - WebVideoCtrl.I_GetDigitalChannelInfo(szDeviceIdentify, { - success: function (xmlDoc) { - var oChannels = $(xmlDoc).find("InputProxyChannelStatus"); - - $.each(oChannels, function () { - var id = parseInt($(this).find("id").eq(0).text(), 10), - ipAddress = $(this).find("ipAddress").eq(0).text(), - srcInputPort = $(this).find("srcInputPort").eq(0).text(), - managePortNo = $(this).find("managePortNo").eq(0).text(), - online = $(this).find("online").eq(0).text(), - proxyProtocol = $(this).find("proxyProtocol").eq(0).text(); - - var objTr = $("#digitalchannellist").get(0).insertRow(-1); - var objTd = objTr.insertCell(0); - objTd.innerHTML = (id - iAnalogChannelNum) < 10 ? "D0" + (id - iAnalogChannelNum) : "D" + (id - iAnalogChannelNum); - objTd = objTr.insertCell(1); - objTd.width = "25%"; - objTd.innerHTML = ipAddress; - objTd = objTr.insertCell(2); - objTd.width = "15%"; - objTd.innerHTML = srcInputPort; - objTd = objTr.insertCell(3); - objTd.width = "20%"; - objTd.innerHTML = managePortNo; - objTd = objTr.insertCell(4); - objTd.width = "15%"; - objTd.innerHTML = "true" == online ? "online" : "offline"; - objTd = objTr.insertCell(5); - objTd.width = "25%"; - objTd.innerHTML = proxyProtocol; - }); - showOPInfo(szDeviceIdentify + " get IP channel success."); - }, - error: function (oError) { - showOPInfo(szDeviceIdentify + " no IP channel ", oError.errorCode, oError.errorMsg); - } - }); - } -} -// strat real play -function clickStartRealPlay(iStreamType) { - var oWndInfo = WebVideoCtrl.I_GetWindowStatus(g_iWndIndex), - szDeviceIdentify = $("#ip").val(), - iRtspPort = parseInt($("#rtspport").val(), 10), - iChannelID = parseInt($("#channels").val(), 10), - bZeroChannel = $("#channels option").eq($("#channels").get(0).selectedIndex).attr("bZero") == "true" ? true : false, - szInfo = ""; - - if ("undefined" === typeof iStreamType) { - iStreamType = parseInt($("#streamtype").val(), 10); - } - - if (null == szDeviceIdentify) { - return; - } - var startRealPlay = function () { - WebVideoCtrl.I_StartRealPlay(szDeviceIdentify, { - iStreamType: iStreamType, - iChannelID: iChannelID, - bZeroChannel: bZeroChannel, - success: function () { - szInfo = "start real play success."; - showOPInfo(szDeviceIdentify + " " + szInfo); - }, - error: function (oError) { - showOPInfo(szDeviceIdentify + " start real play failed ", oError.errorCode, oError.errorMsg); - } - }); - }; - - if (oWndInfo != null) { - WebVideoCtrl.I_Stop({ - success: function () { - startRealPlay(); - } - }); - } else { - startRealPlay(); - } -} -function setTextOverlay() { - var szDeviceIdentify = $("#ip").val(); - var szInfo = ""; - var that = this; - var iChannelID = parseInt($("#channels").val(), 10); - var szUrl = "ISAPI/System/Video/inputs/channels/" + iChannelID + "/overlays"; - WebVideoCtrl.I_GetTextOverlay(szUrl,szDeviceIdentify,{ - success:function(data){ - $(data).find("TextOverlay").eq(0).find("displayText").eq(0).text("test"); - $(data).find("TextOverlay").eq(0).find("positionX").eq(0).text("20"); - $(data).find("TextOverlay").eq(0).find("positionY").eq(0).text("30"); - var xmldoc = toXMLStr(data); - var newOptions = { - type: "PUT", - data: xmldoc, - success: function(){ - szInfo = "set osd info successful"; - showOPInfo(szDeviceIdentify + " " + szInfo); - }, - error: function(oError){ - showOPInfo(szDeviceIdentify + " set osd info failed", oError.errorCode, oError.errorMsg); - } - }; - - WebVideoCtrl.I_SendHTTPRequest(szDeviceIdentify,szUrl,newOptions); - }, - error: function(oError){ - showOPInfo(szDeviceIdentify + " set osd info failed ", oError.errorCode, oError.errorMsg); - } - }); -} -// stop real play -function clickStopRealPlay() { - var oWndInfo = WebVideoCtrl.I_GetWindowStatus(g_iWndIndex), - szInfo = ""; - - if (oWndInfo != null) { - WebVideoCtrl.I_Stop({ - success: function () { - szInfo = "stop real play success."; - showOPInfo(oWndInfo.szDeviceIdentify + " " + szInfo); - }, - error: function (oError) { - showOPInfo(szDeviceIdentify + " stop real play failed ", oError.errorCode, oError.errorMsg); - } - }); - } -} - -// open sound -function clickOpenSound() { - var oWndInfo = WebVideoCtrl.I_GetWindowStatus(g_iWndIndex), - szInfo = ""; - - if (oWndInfo != null) { - var allWndInfo = WebVideoCtrl.I_GetWindowStatus(); - for (var i = 0, iLen = allWndInfo.length; i < iLen; i++) { - oWndInfo = allWndInfo[i]; - if (oWndInfo.bSound) { - WebVideoCtrl.I_CloseSound(oWndInfo.iIndex); - break; - } - } - - WebVideoCtrl.I_OpenSound().then(() => { - showOPInfo(oWndInfo.szDeviceIdentify + " " + "open sound successful."); - }, (oError) => { - var szInfo = " open sound failed "; - showOPInfo(oWndInfo.szDeviceIdentify + szInfo, oError.errorCode, oError.errorMsg); - }); - } -} - -// close sound -function clickCloseSound() { - var oWndInfo = WebVideoCtrl.I_GetWindowStatus(g_iWndIndex), - szInfo = ""; - - if (oWndInfo != null) { - WebVideoCtrl.I_CloseSound().then(() => { - showOPInfo(oWndInfo.szDeviceIdentify + " " + "close sound success."); - }, (oError) => { - var szInfo = " close sound failed."; - showOPInfo(oWndInfo.szDeviceIdentify + szInfo, oError.errorCode, oError.errorMsg); - }); - } -} - -// set volume -function clickSetVolume() { - var oWndInfo = WebVideoCtrl.I_GetWindowStatus(g_iWndIndex), - iVolume = parseInt($("#volume").val(), 10), - szInfo = ""; - - if (oWndInfo != null) { - WebVideoCtrl.I_SetVolume(iVolume).then(() => { - showOPInfo(oWndInfo.szDeviceIdentify + " " + "set volume success."); - }, (oError) => { - var szInfo = " set volume failed "; - showOPInfo(oWndInfo.szDeviceIdentify + szInfo, oError.errorCode, oError.errorMsg); - }); - } -} - -// capture -async function clickCapturePic(szType) { - var oWndInfo = WebVideoCtrl.I_GetWindowStatus(g_iWndIndex), - szInfo = ""; - - if (oWndInfo != null) { - var oLocalConfig = await WebVideoCtrl.I_GetLocalCfg(); - var szCaptureFileFormat = "0"; - if (oLocalConfig) { - szCaptureFileFormat = oLocalConfig.captureFileFormat; - } - - var szChannelID = $("#channels").val(); - var szPicName = oWndInfo.szDeviceIdentify + "_" + szChannelID + "_" + new Date().getTime(); - if ("playback" === szType) { - szPicName = "playback_" + oWndInfo.szDeviceIdentify + "_" + szChannelID + "_" + new Date().getTime(); - } - - szPicName += ("0" === szCaptureFileFormat) ? ".jpg": ".bmp"; - - WebVideoCtrl.I_CapturePic(szPicName, { - bDateDir: true - }).then(function(){ - szInfo = "capture success."; - showOPInfo(oWndInfo.szDeviceIdentify + " " + szInfo); - }, function(oError){ - szInfo = " capture failed "; - showOPInfo(oWndInfo.szDeviceIdentify + szInfo, oError.errorCode, oError.errorMsg); - }); - } -} -// capture data -function clickCapturePicData() { - var oWndInfo = WebVideoCtrl.I_GetWindowStatus(g_iWndIndex), - szInfo = ""; - if (oWndInfo != null) { - WebVideoCtrl.I_CapturePicData().then(function(data){ - console.log(data); - szInfo = "get capture data success."; - showOPInfo(oWndInfo.szDeviceIdentify + " " + szInfo); - },function(){ - szInfo = "get capture data failed."; - showOPInfo(oWndInfo.szDeviceIdentify + " " + szInfo); - }); - } -} - -// start record -var g_szRecordType = ""; -function clickStartRecord(szType) { - var oWndInfo = WebVideoCtrl.I_GetWindowStatus(g_iWndIndex), - szInfo = ""; - - g_szRecordType = szType; - - if (oWndInfo != null) { - var szChannelID = $("#channels").val(), - szFileName = oWndInfo.szDeviceIdentify + "_" + szChannelID + "_" + new Date().getTime(); - - WebVideoCtrl.I_StartRecord(szFileName, { - bDateDir: true, - success: function () { - if ('realplay' === szType) { - szInfo = "start recording success."; - } else if ('playback' === szType) { - szInfo = "start clip success."; - } - showOPInfo(oWndInfo.szDeviceIdentify + " " + szInfo); - }, - error: function (oError) { - if ('realplay' === szType) { - szInfo = " start recording failed."; - } else if ('playback' === szType) { - szInfo = " start clip failed."; - } - showOPInfo(szDeviceIdentify + szInfo, oError.errorCode, oError.errorMsg); - } - }); - } -} - -// stop record -function clickStopRecord(szType, iWndIndex) { - if ("undefined" === typeof iWndIndex) { - iWndIndex = g_iWndIndex; - } - var oWndInfo = WebVideoCtrl.I_GetWindowStatus(iWndIndex), - szInfo = ""; - - if (oWndInfo != null) { - WebVideoCtrl.I_StopRecord({ - success: function () { - if ('realplay' === szType) { - szInfo = "stop recording success."; - } else if ('playback' === szType) { - szInfo = "stop clip success."; - } - showOPInfo(oWndInfo.szDeviceIdentify + " " + szInfo); - }, - error: function (oError) { - if ('realplay' === szType) { - szInfo = "stop recording failed."; - } else if ('playback' === szType) { - szInfo = "stop clip failed."; - } - sshowOPInfo(szDeviceIdentify + szInfo, oError.errorCode, oError.errorMsg); - } - }); - } -} - -// get audio channel -function clickGetAudioInfo() { - var szDeviceIdentify = $("#ip").val(); - - if (null == szDeviceIdentify) { - return; - } - - WebVideoCtrl.I_GetAudioInfo(szDeviceIdentify, { - success: function (xmlDoc) { - var oAudioChannels = $(xmlDoc).find("TwoWayAudioChannel"), - oSel = $("#audiochannels").empty(); - $.each(oAudioChannels, function () { - var id = $(this).find("id").eq(0).text(); - - oSel.append(""); - }); - showOPInfo(szDeviceIdentify + " get audio channel success."); - }, - error: function (oError) { - showOPInfo(szDeviceIdentify + " get audio channel failed ", oError.errorCode, oError.errorMsg); - } - }); -} - -// start voice talk -function clickStartVoiceTalk() { - var szDeviceIdentify = $("#ip").val(), - iAudioChannel = parseInt($("#audiochannels").val(), 10), - szInfo = ""; - - if (null == szDeviceIdentify) { - return; - } - - if (isNaN(iAudioChannel)) { - alert("please select channel first."); - return; - } - - WebVideoCtrl.I_StartVoiceTalk(szDeviceIdentify, iAudioChannel).then(() => { - szInfo = "start voice talk success."; - showOPInfo(szDeviceIdentify + " " + szInfo); - }, (oError) => { - var szInfo = " start voice talk failed "; - showOPInfo(szDeviceIdentify + szInfo, oError.errorCode, oError.errorMsg); - }); -} - -// stop voice talk -function clickStopVoiceTalk() { - var szDeviceIdentify = $("#ip").val(); - WebVideoCtrl.I_StopVoiceTalk().then(() => { - szInfo = "stop voice talk success."; - showOPInfo(szDeviceIdentify + " " + szInfo); - }, (oError) => { - var szInfo = " stop voice talk failed."; - showOPInfo(szDeviceIdentify + szInfo, oError.errorCode, oError.errorMsg); - }); -} - -// enable E-zoom -function clickEnableEZoom() { - var szDeviceIdentify = $("#ip").val(); - var oWndInfo = WebVideoCtrl.I_GetWindowStatus(g_iWndIndex), - szInfo = ""; - - if (oWndInfo != null) { - WebVideoCtrl.I_EnableEZoom().then(() => { - szInfo = "enable E-zoom success."; - showOPInfo(szDeviceIdentify + " " + szInfo); - }, (oError) => { - szInfo = "enable E-zoom failed "; - showOPInfo(szDeviceIdentify + szInfo, oError.errorCode, oError.errorMsg); - - }); - } -} - -//disable E-zoom -function clickDisableEZoom() { - var szDeviceIdentify = $("#ip").val(); - var oWndInfo = WebVideoCtrl.I_GetWindowStatus(g_iWndIndex), - szInfo = ""; - - if (oWndInfo != null) { - WebVideoCtrl.I_DisableEZoom().then(() => { - szInfo = "disable E-zoom success."; - showOPInfo(szDeviceIdentify + " " + szInfo); - }, (oError) => { - szInfo = "disable E-zoom failed "; - showOPInfo(szDeviceIdentify + szInfo, oError.errorCode, oError.errorMsg); - }); - } -} - -// nable 3D zoom -function clickEnable3DZoom() { - var oWndInfo = WebVideoCtrl.I_GetWindowStatus(g_iWndIndex), - szInfo = ""; - var szDeviceIdentify = $("#ip").val(); - - if (oWndInfo != null) { - WebVideoCtrl.I_Enable3DZoom().then(() => { - szInfo = "enable 3D zoom success."; - showOPInfo(szDeviceIdentify + " " + szInfo); - }, (oError) => { - szInfo = "enable 3D zoom failed "; - showOPInfo(szDeviceIdentify + szInfo, oError.errorCode, oError.errorMsg); - }); - } -} - -// diasble 3D zoom -function clickDisable3DZoom() { - var oWndInfo = WebVideoCtrl.I_GetWindowStatus(g_iWndIndex), - szInfo = ""; - var szDeviceIdentify = $("#ip").val(); - - if (oWndInfo != null) { - WebVideoCtrl.I_Disable3DZoom().then(() => { - szInfo = "diasble 3D zoom success."; - showOPInfo(szDeviceIdentify + " " + szInfo); - }, (oError) => { - szInfo = "diasble 3D zoom failed "; - showOPInfo(szDeviceIdentify + szInfo, oError.errorCode, oError.errorMsg); - }); - } -} - -// full screen -function clickFullScreen() { - WebVideoCtrl.I_FullScreen(true).then(() => { - showOPInfo(" full screen success."); - }, (oError) => { - showOPInfo("full screen failed ", oError.errorCode, oError.errorMsg); - }); -} - -// PTZ control, 9- auto; 1,2,3,4,5,6,7,8 - PTZ direction control by mouse -var g_bPTZAuto = false; -function mouseDownPTZControl(iPTZIndex) { - var oWndInfo = WebVideoCtrl.I_GetWindowStatus(g_iWndIndex), - bZeroChannel = $("#channels option").eq($("#channels").get(0).selectedIndex).attr("bZero") == "true" ? true : false, - iPTZSpeed = $("#ptzspeed").val(); - - if (bZeroChannel) {// zero-channel does not support PTZ - return; - } - - if (oWndInfo != null) { - if (9 == iPTZIndex && g_bPTZAuto) { - iPTZSpeed = 0;// you can close auto mode by setting speed to 0 when auto is start already - } else { - g_bPTZAuto = false;// auto mode will be close when you clik other direction - } - - WebVideoCtrl.I_PTZControl(iPTZIndex, false, { - iPTZSpeed: iPTZSpeed, - success: function (xmlDoc) { - if (9 == iPTZIndex && g_bPTZAuto) { - showOPInfo(oWndInfo.szDeviceIdentify + " stop PTZ success."); - } else { - showOPInfo(oWndInfo.szDeviceIdentify + " start PTZ success."); - } - if (9 == iPTZIndex) { - g_bPTZAuto = !g_bPTZAuto; - } - }, - error: function (oError) { - showOPInfo(oWndInfo.szDeviceIdentify + " start PTZ failed ", oError.errorCode, oError.errorMsg); - } - }); - } -} - -// stop PTZ direction -function mouseUpPTZControl() { - var oWndInfo = WebVideoCtrl.I_GetWindowStatus(g_iWndIndex); - - if (oWndInfo != null) { - WebVideoCtrl.I_PTZControl(1, true, { - success: function (xmlDoc) { - showOPInfo(oWndInfo.szDeviceIdentify + " stop PTZ direction successful."); - }, - error: function (oError) { - showOPInfo(oWndInfo.szDeviceIdentify + " stop PTZ direction failed ", oError.errorCode, oError.errorMsg); - } - }); - } -} - -// set preset -function clickSetPreset() { - var oWndInfo = WebVideoCtrl.I_GetWindowStatus(g_iWndIndex), - iPresetID = parseInt($("#preset").val(), 10); - - if (oWndInfo != null) { - WebVideoCtrl.I_SetPreset(iPresetID, { - success: function (xmlDoc) { - showOPInfo(oWndInfo.szDeviceIdentify + " set preset success."); - }, - error: function (oError) { - showOPInfo(oWndInfo.szDeviceIdentify + " set preset failed.", oError.errorCode, oError.errorMsg); - } - }); - } -} - -// call preset -function clickGoPreset() { - var oWndInfo = WebVideoCtrl.I_GetWindowStatus(g_iWndIndex), - iPresetID = parseInt($("#preset").val(), 10); - - if (oWndInfo != null) { - WebVideoCtrl.I_GoPreset(iPresetID, { - success: function (xmlDoc) { - showOPInfo(oWndInfo.szDeviceIdentify + " call preset successful."); - }, - error: function (oError) { - showOPInfo(oWndInfo.szDeviceIdentify + " call preset failed ", oError.errorCode, oError.errorMsg); - } - }); - } -} - -// record searching -var g_iSearchTimes = 0; -function clickRecordSearch(iType) { - var szDeviceIdentify = $("#ip").val(), - iChannelID = parseInt($("#channels").val(), 10), - bZeroChannel = $("#channels option").eq($("#channels").get(0).selectedIndex).attr("bZero") == "true" ? true : false, - iStreamType = parseInt($("#record_streamtype").val(), 10), - szStartTime = $("#starttime").val(), - szEndTime = $("#endtime").val(); - if (Date.parse(szEndTime.replace(/-/g, "/")) - Date.parse(szStartTime.replace(/-/g, "/")) < 0) { - alert("starttime must earlier than endtime"); - return; - } - if (null == szDeviceIdentify) { - return; - } - - if (bZeroChannel) {// ero-channel does not support record searching - return; - } - - if (0 == iType) {// search for the first time - $("#searchlist").empty(); - g_iSearchTimes = 0; - } - - WebVideoCtrl.I_RecordSearch(szDeviceIdentify, iChannelID, szStartTime, szEndTime, { - iStreamType: iStreamType, - iSearchPos: g_iSearchTimes, - success: function (xmlDoc) { - if ("MORE" === $(xmlDoc).find("responseStatusStrg").eq(0).text()) { - for(var i = 0, nLen = $(xmlDoc).find("searchMatchItem").length; i < nLen; i++) { - var szPlaybackURI = $(xmlDoc).find("playbackURI").eq(i).text(); - if(szPlaybackURI.indexOf("name=") < 0) { - break; - } - var szStartTime = $(xmlDoc).find("startTime").eq(i).text(); - var szEndTime = $(xmlDoc).find("endTime").eq(i).text(); - var szFileName = szPlaybackURI.substring(szPlaybackURI.indexOf("name=") + 5, szPlaybackURI.indexOf("&size=")); - - var objTr = $("#searchlist").get(0).insertRow(-1); - var objTd = objTr.insertCell(0); - objTd.id = "downloadTd" + i; - objTd.innerHTML = g_iSearchTimes + 1; - objTd = objTr.insertCell(1); - objTd.width = "30%"; - objTd.innerHTML = szFileName; - objTd = objTr.insertCell(2); - objTd.width = "30%"; - objTd.innerHTML = (szStartTime.replace("T", " ")).replace("Z", ""); - objTd = objTr.insertCell(3); - objTd.width = "30%"; - objTd.innerHTML = (szEndTime.replace("T", " ")).replace("Z", ""); - objTd = objTr.insertCell(4); - objTd.width = "10%"; - objTd.innerHTML = "download"; - $("#downloadTd" + g_iSearchTimes).data("fileName", szFileName); - $("#downloadTd" + g_iSearchTimes).data("playbackURI", szPlaybackURI); - ++g_iSearchTimes; - } - - clickRecordSearch(1); - } else if ("OK" === $(xmlDoc).find("responseStatusStrg").eq(0).text()) { - var iLength = $(xmlDoc).find("searchMatchItem").length; - for(var i = 0; i < iLength; i++) { - var szPlaybackURI = $(xmlDoc).find("playbackURI").eq(i).text(); - if(szPlaybackURI.indexOf("name=") < 0) { - break; - } - var szStartTime = $(xmlDoc).find("startTime").eq(i).text(); - var szEndTime = $(xmlDoc).find("endTime").eq(i).text(); - var szFileName = szPlaybackURI.substring(szPlaybackURI.indexOf("name=") + 5, szPlaybackURI.indexOf("&size=")); - - var objTr = $("#searchlist").get(0).insertRow(-1); - var objTd = objTr.insertCell(0); - objTd.id = "downloadTd" + i; - objTd.innerHTML = g_iSearchTimes + 1; - objTd = objTr.insertCell(1); - objTd.width = "30%"; - objTd.innerHTML = szFileName; - objTd = objTr.insertCell(2); - objTd.width = "30%"; - objTd.innerHTML = (szStartTime.replace("T", " ")).replace("Z", ""); - objTd = objTr.insertCell(3); - objTd.width = "30%"; - objTd.innerHTML = (szEndTime.replace("T", " ")).replace("Z", ""); - objTd = objTr.insertCell(4); - objTd.width = "10%"; - objTd.innerHTML = "download"; - $("#downloadTd" + g_iSearchTimes).data("fileName", szFileName); - $("#downloadTd" + g_iSearchTimes).data("playbackURI", szPlaybackURI); - ++g_iSearchTimes; - } - showOPInfo(szDeviceIdentify + " search video file success."); - } else if("NO MATCHES" === $(xmlDoc).find("responseStatusStrg").eq(0).text()) { - setTimeout(function() { - g_iSearchTimes = 0; - showOPInfo(szDeviceIdentify + " no record file."); - }, 50); - } - }, - error: function (oError) { - g_iSearchTimes = 0; - showOPInfo(szDeviceIdentify + " earch record file failed ", oError.errorCode, oError.errorMsg); - } - }); -} - -// start play back -function clickStartPlayback() { - var oWndInfo = WebVideoCtrl.I_GetWindowStatus(g_iWndIndex), - szDeviceIdentify = $("#ip").val(), - iRtspPort = parseInt($("#rtspport").val(), 10), - iStreamType = parseInt($("#record_streamtype").val(), 10), - bZeroChannel = $("#channels option").eq($("#channels").get(0).selectedIndex).attr("bZero") == "true" ? true : false, - iChannelID = parseInt($("#channels").val(), 10), - szStartTime = $("#starttime").val(), - szEndTime = $("#endtime").val(), - szInfo = "", - bChecked = $("#transstream").prop("checked"), - iRet = -1; - - if (null == szDeviceIdentify) { - return; - } - - if (bZeroChannel) {// zero-channel does not support play back - return; - } - - var startPlayback = function () { - if (bChecked) { - var oTransCodeParam = { - TransFrameRate: "16",// 0: full, 5: 1, 6: 2, 7: 4, 8: 6, 9: 8, 10: 10, 11: 12, 12: 16, 14: 15, 15: 18, 13: 20, 16: 22 - TransResolution: "2",// 255: Auto, 3: 4CIF, 2: QCIF, 1: CIF - TransBitrate: "23"// 2: 32K, 3: 48K, 4: 64K, 5: 80K, 6: 96K, 7: 128K, 8: 160K, 9: 192K, 10: 224K, 11: 256K, 12: 320K, 13: 384K, 14: 448K, 15: 512K, 16: 640K, 17: 768K, 18: 896K, 19: 1024K, 20: 1280K, 21: 1536K, 22: 1792K, 23: 2048K, 24: 3072K, 25: 4096K, 26: 8192K - }; - WebVideoCtrl.I_StartPlayback(szDeviceIdentify, { - iRtspPort: iRtspPort, - iStreamType: iStreamType, - iChannelID: iChannelID, - szStartTime: szStartTime, - szEndTime: szEndTime, - oTransCodeParam: oTransCodeParam, - success: function () { - szInfo = "start playback success."; - showOPInfo(szDeviceIdentify + " " + szInfo); - }, - error: function (oError) { - szInfo = "start playback failed "; - showOPInfo(szDeviceIdentify + szInfo, oError.errorCode, oError.errorMsg); - } - }); - } else { - WebVideoCtrl.I_StartPlayback(szDeviceIdentify, { - iRtspPort: iRtspPort, - iStreamType: iStreamType, - iChannelID: iChannelID, - szStartTime: szStartTime, - szEndTime: szEndTime, - success: function () { - szInfo = "start playback success."; - showOPInfo(szDeviceIdentify + " " + szInfo); - }, - error: function (oError) { - szInfo = "start playback failed."; - showOPInfo(szDeviceIdentify + szInfo, oError.errorCode, oError.errorMsg); - } - }); - } - }; - - if (oWndInfo != null) { - WebVideoCtrl.I_Stop({ - success: function () { - startPlayback(); - } - }); - } else { - startPlayback(); - } -} - -// stop play back -function clickStopPlayback() { - var oWndInfo = WebVideoCtrl.I_GetWindowStatus(g_iWndIndex), - szInfo = ""; - - if (oWndInfo != null) { - WebVideoCtrl.I_Stop({ - success: function () { - szInfo = "stop play back success."; - showOPInfo(oWndInfo.szDeviceIdentify + " " + szInfo); - }, - error: function (oError) { - szInfo = "stop play back failed."; - showOPInfo(szDeviceIdentify + szInfo, oError.errorCode, oError.errorMsg); - } - }); - } -} - -//start reverse play -function clickReversePlayback() { - var oWndInfo = WebVideoCtrl.I_GetWindowStatus(g_iWndIndex), - szDeviceIdentify = $("#ip").val(), - iRtspPort = parseInt($("#rtspport").val(), 10), - iStreamType = parseInt($("#record_streamtype").val(), 10), - bZeroChannel = $("#channels option").eq($("#channels").get(0).selectedIndex).attr("bZero") == "true" ? true : false, - iChannelID = parseInt($("#channels").val(), 10), - szStartTime = $("#starttime").val(), - szEndTime = $("#endtime").val(), - szInfo = ""; - - if (null == szDeviceIdentify) { - return; - } - - if (bZeroChannel) {// zero-channel does not support reverse play - return; - } - - var reversePlayback = function () { - WebVideoCtrl.I_ReversePlayback(szDeviceIdentify, { - iRtspPort: iRtspPort, - iStreamType: iStreamType, - iChannelID: iChannelID, - szStartTime: szStartTime, - szEndTime: szEndTime - }).then(() => { - szInfo = "start reverse play success."; - showOPInfo(szDeviceIdentify + " " + szInfo); - }, (oError) => { - szInfo = "start reverse play failed "; - showOPInfo(szDeviceIdentify + szInfo, oError.errorCode, oError.errorMsg); - }); - }; - - if (oWndInfo != null) { - WebVideoCtrl.I_Stop({ - success: function () { - reversePlayback(); - } - }); - } else { - reversePlayback(); - } -} - -// single frame -function clickFrame() { - var oWndInfo = WebVideoCtrl.I_GetWindowStatus(g_iWndIndex), - szInfo = ""; - - if (oWndInfo != null) { - WebVideoCtrl.I_Frame({ - success: function () { - szInfo = "single frame play success."; - showOPInfo(oWndInfo.szDeviceIdentify + " " + szInfo); - }, - error: function (oError) { - szInfo = "single frame play failed "; - showOPInfo(szDeviceIdentify + szInfo, oError.errorCode, oError.errorMsg); - } - }); - } -} - -// pause -function clickPause() { - var oWndInfo = WebVideoCtrl.I_GetWindowStatus(g_iWndIndex), - szInfo = ""; - - if (oWndInfo != null) { - WebVideoCtrl.I_Pause({ - success: function () { - szInfo = "pause success."; - showOPInfo(oWndInfo.szDeviceIdentify + " " + szInfo); - }, - error: function (oError) { - szInfo = "pause failed "; - showOPInfo(oWndInfo.szDeviceIdentify + szInfo, oError.errorCode, oError.errorMsg); - } - }); - } -} - -// resume -function clickResume() { - var oWndInfo = WebVideoCtrl.I_GetWindowStatus(g_iWndIndex), - szInfo = ""; - - if (oWndInfo != null) { - WebVideoCtrl.I_Resume({ - success: function () { - szInfo = "resume success."; - showOPInfo(oWndInfo.szDeviceIdentify + " " + szInfo); - }, - error: function (oError) { - szInfo = "resume failed "; - showOPInfo(oWndInfo.szDeviceIdentify + szInfo, oError.errorCode, oError.errorMsg); - } - }); - } -} - -// slow play -function clickPlaySlow() { - var oWndInfo = WebVideoCtrl.I_GetWindowStatus(g_iWndIndex), - szInfo = ""; - - if (oWndInfo != null) { - WebVideoCtrl.I_PlaySlow({ - success: function () { - szInfo = "slow play success."; - showOPInfo(oWndInfo.szDeviceIdentify + " " + szInfo); - }, - error: function (oError) { - szInfo = "slow play failed "; - showOPInfo(oWndInfo.szDeviceIdentify + szInfo, oError.errorCode, oError.errorMsg); - } - }); - } -} - -// fast play -function clickPlayFast() { - var oWndInfo = WebVideoCtrl.I_GetWindowStatus(g_iWndIndex), - szInfo = ""; - - if (oWndInfo != null) { - WebVideoCtrl.I_PlayFast({ - success: function () { - szInfo = "fast play success."; - showOPInfo(oWndInfo.szDeviceIdentify + " " + szInfo); - }, - error: function (oError) { - szInfo = "fast play failed "; - showOPInfo(oWndInfo.szDeviceIdentify + szInfo, oError.errorCode, oError.errorMsg); - } - }); - } -} - -// OSD time -function clickGetOSDTime() { - var oWndInfo = WebVideoCtrl.I_GetWindowStatus(g_iWndIndex); - - if (oWndInfo != null) { - WebVideoCtrl.I_GetOSDTime({ - success: function (szOSDTime) { - $("#osdtime").val(szOSDTime); - showOPInfo(oWndInfo.szDeviceIdentify + " get OSD time success."); - }, - error: function (oError) { - showOPInfo(oWndInfo.szDeviceIdentify + " get OSD time failed ", oError.errorCode, oError.errorMsg); - } - }); - } -} - -// download video -var g_iDownloadID = -1; -var g_tDownloadProcess = 0; -function clickStartDownloadRecord(i) { - var szDeviceIdentify = $("#ip").val(), - szChannelID = $("#channels").val(), - szFileName = $("#downloadTd" + i).data("fileName"), - szPlaybackURI = $("#downloadTd" + i).data("playbackURI"); - - if (null == szDeviceIdentify) { - return; - } - - WebVideoCtrl.I_StartDownloadRecord(szDeviceIdentify, szPlaybackURI, szFileName, { - bDateDir: true - }).then((iDownloadID) => { - g_iDownloadID = iDownloadID; - $("
").appendTo("body"); - g_tDownloadProcess = setInterval("downProcess(" + i + ")", 1000); - }, (oError) => { - WebVideoCtrl.I_GetLastError().then((iErrorValue) => { - if (34 == iErrorValue) { - showOPInfo(szDeviceIdentify + " download already."); - } else if (33 == iErrorValue) { - showOPInfo(szDeviceIdentify + " lack of space."); - } else { - showOPInfo(szDeviceIdentify + " download failed."); - } - }); - }); -} -function clickStartDownloadRecordByTime() { - var szDeviceIdentify = $("#ip").val(), - szChannelID = $("#channels").val(), - szFileName = $("#downloadTd0").data("fileName"), - szPlaybackURI = $("#downloadTd0").data("playbackURI"), - szStartTime = $("#downloadstarttime").val(), - szEndTime = $("#downloadendtime").val(); - if (null == szDeviceIdentify) { - return; - } - if (Date.parse(szEndTime.replace(/-/g, "/")) - Date.parse(szStartTime.replace(/-/g, "/")) < 0) { - alert("starttime must earlier than endtime"); - return; - } - WebVideoCtrl.I_StartDownloadRecordByTime(szDeviceIdentify, szPlaybackURI, szFileName, szStartTime,szEndTime,{ - bDateDir: true - }).then((iDownloadID) => { - g_iDownloadID = iDownloadID; - $("
").appendTo("body"); - g_tDownloadProcess = setInterval("downProcess(" + 0 + ")", 1000); - }, (oError) => { - showOPInfo(szDeviceIdentify + " Download Failed."); - }); -} - -function clickStopDownload() { - WebVideoCtrl.I_StopDownloadRecord(g_iDownloadID).then(() => { - showOPInfo("stop download successful."); - clearInterval(g_tDownloadProcess); - g_tDownloadProcess = 0; - g_iDownloadID = -1; - $("#downProcess").remove(); - }, (oError) => { - showOPInfo(szDeviceIdentify + " stop download failed ", oError.errorCode, oError.errorMsg); - }); -} -// download process -async function downProcess() { - var iStatus = await WebVideoCtrl.I_GetDownloadStatus(g_iDownloadID); - if (0 == iStatus) { - $("#downProcess").css({ - width: $("#searchlist").width() + "px", - height: "100px", - lineHeight: "100px", - left: $("#searchdiv").offset().left + "px", - top: $("#searchdiv").offset().top + "px" - }); - var iProcess = await WebVideoCtrl.I_GetDownloadProgress(g_iDownloadID); - if (iProcess < 0) { - clearInterval(g_tDownloadProcess); - g_tDownloadProcess = 0; - g_iDownloadID = -1; - } else if (iProcess < 100) { - $("#downProcess").text(iProcess + "%"); - } else { - $("#downProcess").text("100%"); - setTimeout(function () { - $("#downProcess").remove(); - }, 1000); - - await WebVideoCtrl.I_StopDownloadRecord(g_iDownloadID); - - showOPInfo("video dowload finish."); - clearInterval(g_tDownloadProcess); - g_tDownloadProcess = 0; - g_iDownloadID = -1; - } - } else { - await WebVideoCtrl.I_StopDownloadRecord(g_iDownloadID); - - clearInterval(g_tDownloadProcess); - g_tDownloadProcess = 0; - g_iDownloadID = -1; - } -} - -// reconnection -function reconnect(szDeviceIdentify) { - WebVideoCtrl.I_Reconnect(szDeviceIdentify, { - timeout: 3000, - success: function (xmlDoc) { - $("#restartDiv").remove(); - }, - error: function () { - setTimeout(function () {reconnect(szDeviceIdentify);}, 5000); - } - }); -} - -// start upgrade -var g_tUpgrade = 0; -function clickStartUpgrade(szDeviceIdentify) { - var szDeviceIdentify = $("#ip").val(), - szFileName = $("#upgradeFile").val(); - - if (null == szDeviceIdentify) { - return; - } - - if ("" == szFileName) { - alert("please select upgrade file."); - return; - } - WebVideoCtrl.I_StartUpgrade(szDeviceIdentify, szFileName).then(function(){ - g_tUpgrade = setInterval("getUpgradeStatus('" + szDeviceIdentify + "')", 1000); - },function(){ - clearInterval(g_tUpgrade); - showOPInfo(szDeviceIdentify + " upgrade failed."); - }); -} - -// get upgrade status -async function getUpgradeStatus(szDeviceIdentify) { - var bUpdating = await WebVideoCtrl.I_UpgradeStatus(szDeviceIdentify); - if (bUpdating) { - var iProcess = await WebVideoCtrl.I_UpgradeProgress(szDeviceIdentify); - if (iProcess < 0) { - clearInterval(g_tUpgrade); - g_tUpgrade = 0; - showOPInfo(szDeviceIdentify + " get process failed."); - return; - } else if (iProcess < 100) { - if (0 == $("#restartDiv").length) { - $("
").appendTo("body"); - var oSize = getWindowSize(); - $("#restartDiv").css({ - width: oSize.width + "px", - height: oSize.height + "px", - lineHeight: oSize.height + "px", - left: 0, - top: 0 - }); - } - $("#restartDiv").text(iProcess + "%"); - } else { - await WebVideoCtrl.I_StopUpgrade(); - clearInterval(g_tUpgrade); - g_tUpgrade = 0; - - $("#restartDiv").remove(); - - WebVideoCtrl.I_Restart(szDeviceIdentify, { - success: function (xmlDoc) { - $("
reboot...
").appendTo("body"); - var oSize = getWindowSize(); - $("#restartDiv").css({ - width: oSize.width + "px", - height: oSize.height + "px", - lineHeight: oSize.height + "px", - left: 0, - top: 0 - }); - setTimeout("reconnect('" + szDeviceIdentify + "')", 20000); - }, - error: function (oError) { - showOPInfo(szDeviceIdentify + " reboot failed ", oError.errorCode, oError.errorMsg); - } - }); - } - } else { - await WebVideoCtrl.I_StopUpgrade(); - clearInterval(g_tUpgrade); - g_tUpgrade = 0; - - $("#restartDiv").remove(); - - WebVideoCtrl.I_Restart(szDeviceIdentify, { - success: function () { - $("
reboot...
").appendTo("body"); - var oSize = getWindowSize(); - $("#restartDiv").css({ - width: oSize.width + "px", - height: oSize.height + "px", - lineHeight: oSize.height + "px", - left: 0, - top: 0 - }); - setTimeout("reconnect('" + szDeviceIdentify + "')", 20000); - }, - error: function (oError) { - showOPInfo(szDeviceIdentify + " reboot failed ", oError.errorCode, oError.errorMsg); - } - }); - } -} - -// check plugin version -function clickCheckPluginVersion() { - var szDeviceIdentify = $("#ip").val(); - WebVideoCtrl.I_CheckPluginVersion().then((bNeedUpdate) => { - if (bNeedUpdate) { - alert("detect the latest plugin version."); - } else { - alert("your plugin version is the latest."); - } - }, () => { - showOPInfo(szDeviceIdentify + " check plugin version failed."); - }); -} - -function clickRestoreDefault() { - var szDeviceIdentify = $("#ip").val(), - szMode = "basic"; - WebVideoCtrl.I_RestoreDefault(szDeviceIdentify, szMode).then(() => { - $("#restartDiv").remove(); - showOPInfo(szDeviceIdentify + " restore default successful."); - }, (oError) => { - showOPInfo(szDeviceIdentify + " restore default failed ", oError.errorCode, oError.errorMsg); - }); -} - -function PTZZoomIn() { - var oWndInfo = WebVideoCtrl.I_GetWindowStatus(g_iWndIndex); - - if (oWndInfo != null) { - WebVideoCtrl.I_PTZControl(10, false, { - iWndIndex: g_iWndIndex, - success: function (xmlDoc) { - showOPInfo(oWndInfo.szDeviceIdentify + " Zoom+success."); - }, - error: function (oError) { - showOPInfo(oWndInfo.szDeviceIdentify + " Zoom+success failed ", oError.errorCode, oError.errorMsg); - } - }); - } -} - -function PTZZoomout() { - var oWndInfo = WebVideoCtrl.I_GetWindowStatus(g_iWndIndex); - - if (oWndInfo != null) { - WebVideoCtrl.I_PTZControl(11, false, { - iWndIndex: g_iWndIndex, - success: function (xmlDoc) { - showOPInfo(oWndInfo.szDeviceIdentify + " Zoom-success."); - }, - error: function (oError) { - showOPInfo(oWndInfo.szDeviceIdentify + " Zoom-failed.", oError.errorCode, oError.errorMsg); - } - }); - } -} - -function PTZZoomStop() { - var oWndInfo = WebVideoCtrl.I_GetWindowStatus(g_iWndIndex); - - if (oWndInfo != null) { - WebVideoCtrl.I_PTZControl(11, true, { - iWndIndex: g_iWndIndex, - success: function (xmlDoc) { - showOPInfo(oWndInfo.szDeviceIdentify + " stop zoom success."); - }, - error: function (oError) { - showOPInfo(oWndInfo.szDeviceIdentify + " stop zoom failed ", oError.errorCode, oError.errorMsg); - } - }); - } -} - -function PTZFocusIn() { - var oWndInfo = WebVideoCtrl.I_GetWindowStatus(g_iWndIndex); - - if (oWndInfo != null) { - WebVideoCtrl.I_PTZControl(12, false, { - iWndIndex: g_iWndIndex, - success: function (xmlDoc) { - showOPInfo(oWndInfo.szDeviceIdentify + " focus+success."); - }, - error: function (oError) { - showOPInfo(oWndInfo.szDeviceIdentify + " focus+failed ", oError.errorCode, oError.errorMsg); - } - }); - } -} - -function PTZFoucusOut() { - var oWndInfo = WebVideoCtrl.I_GetWindowStatus(g_iWndIndex); - - if (oWndInfo != null) { - WebVideoCtrl.I_PTZControl(13, false, { - iWndIndex: g_iWndIndex, - success: function (xmlDoc) { - showOPInfo(oWndInfo.szDeviceIdentify + " focus-success."); - }, - error: function (oError) { - showOPInfo(oWndInfo.szDeviceIdentify + " focus-failed ", oError.errorCode, oError.errorMsg); - } - }); - } -} - -function PTZFoucusStop() { - var oWndInfo = WebVideoCtrl.I_GetWindowStatus(g_iWndIndex); - - if (oWndInfo != null) { - WebVideoCtrl.I_PTZControl(12, true, { - iWndIndex: g_iWndIndex, - success: function (xmlDoc) { - showOPInfo(oWndInfo.szDeviceIdentify + " stop focus success."); - }, - error: function (oError) { - showOPInfo(oWndInfo.szDeviceIdentify + " stop focus failed ", oError.errorCode, oError.errorMsg); - } - }); - } -} - -function PTZIrisIn() { - var oWndInfo = WebVideoCtrl.I_GetWindowStatus(g_iWndIndex); - - if (oWndInfo != null) { - WebVideoCtrl.I_PTZControl(14, false, { - iWndIndex: g_iWndIndex, - success: function (xmlDoc) { - showOPInfo(oWndInfo.szDeviceIdentify + " Iris+success."); - }, - error: function (oError) { - showOPInfo(oWndInfo.szDeviceIdentify + " Iris+failed ", oError.errorCode, oError.errorMsg); - } - }); - } -} - -function PTZIrisOut() { - var oWndInfo = WebVideoCtrl.I_GetWindowStatus(g_iWndIndex); - - if (oWndInfo != null) { - WebVideoCtrl.I_PTZControl(15, false, { - iWndIndex: g_iWndIndex, - success: function (xmlDoc) { - showOPInfo(oWndInfo.szDeviceIdentify + " Iris-success."); - }, - error: function (oError) { - showOPInfo(oWndInfo.szDeviceIdentify + " Iris-failed ", oError.errorCode, oError.errorMsg); - } - }); - } -} - -function PTZIrisStop() { - var oWndInfo = WebVideoCtrl.I_GetWindowStatus(g_iWndIndex); - - if (oWndInfo != null) { - WebVideoCtrl.I_PTZControl(14, true, { - iWndIndex: g_iWndIndex, - success: function (xmlDoc) { - showOPInfo(oWndInfo.szDeviceIdentify + " stop Iris success."); - }, - error: function (oError) { - showOPInfo(oWndInfo.szDeviceIdentify + " stop Iris failed ", oError.errorCode, oError.errorMsg); - } - }); - } -} - - -// polygon drawing enabled -var g_bEnableDraw = false; -function clickEnableDraw() { - WebVideoCtrl.I_SetPlayModeType(6).then(() => { - g_bEnableDraw = true; - showOPInfo("drawing enabled succeed."); - }, (oError) => { - showOPInfo("drawing enabled failed ", oError.errorCode, oError.errorMsg); - }); -} - -// polygon drawing disabled -function clickDisableDraw() { - WebVideoCtrl.I_SetSnapDrawMode(0, -1).then(() => { - g_bEnableDraw = false; - showOPInfo("drawing disabled success."); - }, (oError) => { - showOPInfo("drawing disabled failed ", oError.errorCode, oError.errorMsg); - }); -} - -// add the graph -function clickAddSnapPolygon() { - if (!g_bEnableDraw) { - return; - } - - var szId = $("#snapId").val(); - var szName = encodeString($("#snapName").val()); - - var szInfo = ""; - szInfo += ""; - szInfo += ""; - szInfo += "" + szId + ""; // [1, 32] - szInfo += "0"; //if draw polygon, set polygonType 1 - szInfo += "17"; // [MinClosed, 17] - szInfo += "4"; // [4, 17] - szInfo += "#" + szId + "#" + szName + ""; - szInfo += "false"; - szInfo += "02550"; - szInfo += ""; - szInfo += ""; - szInfo += ""; - - WebVideoCtrl.I_SetSnapPolygonInfo(g_iWndIndex, szInfo).then(() => { - showOPInfo("add graph succeed."); - }); - WebVideoCtrl.I_SetSnapDrawMode(g_iWndIndex, 2); -} - -// delete the graph -function clickDelSnapPolygon() { - if (!g_bEnableDraw) { - return; - } - - var szId = $("#snapId").val(); - var aShapes = []; - aShapes.push({ - polygonType: 0, - id: szId - }); - - WebVideoCtrl.I_ClearSnapInfo(g_iWndIndex, aShapes); -} - -//get graph info -function clickGetSnapPolygon() { - WebVideoCtrl.I_GetSnapPolygonInfo(g_iWndIndex).then((szXml) => { - alert(szXml); - }); -} - -//set graph ifno -function clickSetSnapPolygon() { - if (!g_bEnableDraw) { - return; - } - - WebVideoCtrl.I_ClearSnapInfo(g_iWndIndex); - - var szInfo = ""; - szInfo += ""; - szInfo += ""; - szInfo += "1"; - szInfo += "1"; - szInfo += "#1#"; - szInfo += "true"; - szInfo += "02550"; - szInfo += ""; - szInfo += "0.7379030.229730"; - szInfo += "0.9475810.804054"; - szInfo += "0.3629030.777027"; - szInfo += ""; - szInfo += ""; - szInfo += ""; - szInfo += "2"; - szInfo += "0"; - szInfo += "#2#"; - szInfo += "true"; - szInfo += "2552550"; - szInfo += ""; - szInfo += "0.20.2"; - szInfo += "0.80.2"; - szInfo += "0.80.8"; - szInfo += "0.20.8"; - szInfo += ""; - szInfo += ""; - szInfo += ""; - - WebVideoCtrl.I_SetSnapPolygonInfo(g_iWndIndex, szInfo).then(() => { - showOPInfo("set the graph succeed."); - }, (oError) => { - showOPInfo("set the graph failed ", oError.errorCode, oError.errorMsg); - }); -} - -// clear the graph -function clickDelAllSnapPolygon() { - if (!g_bEnableDraw) { - return; - } - - WebVideoCtrl.I_ClearSnapInfo(g_iWndIndex).then(() => { - showOPInfo("clear the graph successful."); - }, (oError) => { - showOPInfo("clear the graph failed ", oError.errorCode, oError.errorMsg); - }); -} - - -function loadXML(szXml) { - if(null == szXml || "" == szXml) { - return null; - } - - var oXmlDoc = null; - - if (window.DOMParser) { - var oParser = new DOMParser(); - oXmlDoc = oParser.parseFromString(szXml, "text/xml"); - } else { - oXmlDoc = new ActiveXObject("Microsoft.XMLDOM"); - oXmlDoc.async = false; - oXmlDoc.loadXML(szXml); - } - - return oXmlDoc; -} - -function toXMLStr(oXmlDoc) { - var szXmlDoc = ""; - - try { - var oSerializer = new XMLSerializer(); - szXmlDoc = oSerializer.serializeToString(oXmlDoc); - } catch (e) { - try { - szXmlDoc = oXmlDoc.xml; - } catch (e) { - return ""; - } - } - if (szXmlDoc.indexOf("" + szXmlDoc; - } - - return szXmlDoc; -} - -function encodeString(str) { - if (str) { - return str.replace(/&/g, '&').replace(//g, '>'); - } else { - return ""; - } -} \ No newline at end of file diff --git a/public/demo/index.html b/public/demo/index.html deleted file mode 100644 index 371c873a..00000000 --- a/public/demo/index.html +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/public/demo/jquery-1.7.1.min.js b/public/demo/jquery-1.7.1.min.js deleted file mode 100644 index 835d77d5..00000000 --- a/public/demo/jquery-1.7.1.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! jQuery v1.7.1 jquery.com | jquery.org/license */ -(function(a,b){function cy(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cv(a){if(!ck[a]){var b=c.body,d=f("<"+a+">").appendTo(b),e=d.css("display");d.remove();if(e==="none"||e===""){cl||(cl=c.createElement("iframe"),cl.frameBorder=cl.width=cl.height=0),b.appendChild(cl);if(!cm||!cl.createElement)cm=(cl.contentWindow||cl.contentDocument).document,cm.write((c.compatMode==="CSS1Compat"?"":"")+""),cm.close();d=cm.createElement(a),cm.body.appendChild(d),e=f.css(d,"display"),b.removeChild(cl)}ck[a]=e}return ck[a]}function cu(a,b){var c={};f.each(cq.concat.apply([],cq.slice(0,b)),function(){c[this]=a});return c}function ct(){cr=b}function cs(){setTimeout(ct,0);return cr=f.now()}function cj(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ci(){try{return new a.XMLHttpRequest}catch(b){}}function cc(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g0){if(c!=="border")for(;g=0===c})}function S(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function K(){return!0}function J(){return!1}function n(a,b,c){var d=b+"defer",e=b+"queue",g=b+"mark",h=f._data(a,d);h&&(c==="queue"||!f._data(a,e))&&(c==="mark"||!f._data(a,g))&&setTimeout(function(){!f._data(a,e)&&!f._data(a,g)&&(f.removeData(a,d,!0),h.fire())},0)}function m(a){for(var b in a){if(b==="data"&&f.isEmptyObject(a[b]))continue;if(b!=="toJSON")return!1}return!0}function l(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(k,"-$1").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNumeric(d)?parseFloat(d):j.test(d)?f.parseJSON(d):d}catch(g){}f.data(a,c,d)}else d=b}return d}function h(a){var b=g[a]={},c,d;a=a.split(/\s+/);for(c=0,d=a.length;c)[^>]*$|#([\w\-]*)$)/,j=/\S/,k=/^\s+/,l=/\s+$/,m=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,n=/^[\],:{}\s]*$/,o=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,p=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,q=/(?:^|:|,)(?:\s*\[)+/g,r=/(webkit)[ \/]([\w.]+)/,s=/(opera)(?:.*version)?[ \/]([\w.]+)/,t=/(msie) ([\w.]+)/,t2=/(trident.*rv:)([\w.]+)/,u=/(mozilla)(?:.*? rv:([\w.]+))?/,v=/-([a-z]|[0-9])/ig,w=/^-ms-/,x=function(a,b){return(b+"").toUpperCase()},y=d.userAgent,z,A,B,C=Object.prototype.toString,D=Object.prototype.hasOwnProperty,E=Array.prototype.push,F=Array.prototype.slice,G=String.prototype.trim,H=Array.prototype.indexOf,I={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)!=="<"||a.charAt(a.length-1)!==">"||a.length<3?g=i.exec(a):g=[null,a,null];if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=m.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.7.1",length:0,size:function(){return this.length},toArray:function(){return F.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?E.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),A.add(a);return this},eq:function(a){a=+a;return a===-1?this.slice(a):this.slice(a,a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(F.apply(this,arguments),"slice",F.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:E,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i=="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!="object"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j0)return;A.fireWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").off("ready")}},bindReady:function(){if(!A){A=e.Callbacks("once memory");if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",B,!1),a.addEventListener("load",e.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",B),a.attachEvent("onload",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&J()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a&&typeof a=="object"&&"setInterval"in a},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)},type:function(a){return a==null?String(a):I[C.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;try{if(a.constructor&&!D.call(a,"constructor")&&!D.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||D.call(a,d)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw new Error(a)},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(n.test(b.replace(o,"@").replace(p,"]").replace(q,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(c){var d,f;try{a.DOMParser?(f=new DOMParser,d=f.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(g){d=b}(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)&&e.error("Invalid XML: "+c);return d},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(w,"ms-").replace(v,x)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i0&& b[1].indexOf("trident")>-1){b[1]="msie"}return{browser:b[1]||"",version:b[2]||"0"}},sub:function(){function a(b,c){return new a.fn.init(b,c)}e.extend(!0,a,this),a.superclass=this,a.fn=a.prototype=this(),a.fn.constructor=a,a.sub=this.sub,a.fn.init=function(d,f){f&&f instanceof e&&!(f instanceof a)&&(f=a(f));return e.fn.init.call(this,d,f,b)},a.fn.init.prototype=a.fn;var b=a(c);return a},browser:{}}),e.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(a,b){I["[object "+b+"]"]=b.toLowerCase()}),z=e.uaMatch(y),z.browser&&(e.browser[z.browser]=!0,e.browser.version=z.version),e.browser.webkit&&(e.browser.safari=!0),j.test(" ")&&(k=/^[\s\xA0]+/,l=/[\s\xA0]+$/),h=e(c),c.addEventListener?B=function(){c.removeEventListener("DOMContentLoaded",B,!1),e.ready()}:c.attachEvent&&(B=function(){c.readyState==="complete"&&(c.detachEvent("onreadystatechange",B),e.ready())});return e}(),g={};f.Callbacks=function(a){a=a?g[a]||h(a):{};var c=[],d=[],e,i,j,k,l,m=function(b){var d,e,g,h,i;for(d=0,e=b.length;d1?i.call(arguments,0):b,j.notifyWith(k,e)}}function l(a){return function(c){b[a]=arguments.length>1?i.call(arguments,0):c,--g||j.resolveWith(j,b)}}var b=i.call(arguments,0),c=0,d=b.length,e=Array(d),g=d,h=d,j=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred(),k=j.promise();if(d>1){for(;c
a",d=q.getElementsByTagName("*"),e=q.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=q.getElementsByTagName("input")[0],b={leadingWhitespace:q.firstChild.nodeType===3,tbody:!q.getElementsByTagName("tbody").length,htmlSerialize:!!q.getElementsByTagName("link").length,style:/top/.test(e.getAttribute("style")),hrefNormalized:e.getAttribute("href")==="/a",opacity:/^0.55/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:i.value==="on",optSelected:h.selected,getSetAttribute:q.className!=="t",enctype:!!c.createElement("form").enctype,html5Clone:c.createElement("nav").cloneNode(!0).outerHTML!=="<:nav>",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0},i.checked=!0,b.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,b.optDisabled=!h.disabled;try{delete q.test}catch(s){b.deleteExpando=!1}!q.addEventListener&&q.attachEvent&&q.fireEvent&&(q.attachEvent("onclick",function(){b.noCloneEvent=!1}),q.cloneNode(!0).fireEvent("onclick")),i=c.createElement("input"),i.value="t",i.setAttribute("type","radio"),b.radioValue=i.value==="t",i.setAttribute("checked","checked"),q.appendChild(i),k=c.createDocumentFragment(),k.appendChild(q.lastChild),b.checkClone=k.cloneNode(!0).cloneNode(!0).lastChild.checked,b.appendChecked=i.checked,k.removeChild(i),k.appendChild(q),q.innerHTML="",a.getComputedStyle&&(j=c.createElement("div"),j.style.width="0",j.style.marginRight="0",q.style.width="2px",q.appendChild(j),b.reliableMarginRight=(parseInt((a.getComputedStyle(j,null)||{marginRight:0}).marginRight,10)||0)===0);if(q.attachEvent)for(o in{submit:1,change:1,focusin:1})n="on"+o,p=n in q,p||(q.setAttribute(n,"return;"),p=typeof q[n]=="function"),b[o+"Bubbles"]=p;k.removeChild(q),k=g=h=j=q=i=null,f(function(){var a,d,e,g,h,i,j,k,m,n,o,r=c.getElementsByTagName("body")[0];!r||(j=1,k="position:absolute;top:0;left:0;width:1px;height:1px;margin:0;",m="visibility:hidden;border:0;",n="style='"+k+"border:5px solid #000;padding:0;'",o="
"+""+"
",a=c.createElement("div"),a.style.cssText=m+"width:0;height:0;position:static;top:0;margin-top:"+j+"px",r.insertBefore(a,r.firstChild),q=c.createElement("div"),a.appendChild(q),q.innerHTML="
t
",l=q.getElementsByTagName("td"),p=l[0].offsetHeight===0,l[0].style.display="",l[1].style.display="none",b.reliableHiddenOffsets=p&&l[0].offsetHeight===0,q.innerHTML="",q.style.width=q.style.paddingLeft="1px",f.boxModel=b.boxModel=q.offsetWidth===2,typeof q.style.zoom!="undefined"&&(q.style.display="inline",q.style.zoom=1,b.inlineBlockNeedsLayout=q.offsetWidth===2,q.style.display="",q.innerHTML="
",b.shrinkWrapBlocks=q.offsetWidth!==2),q.style.cssText=k+m,q.innerHTML=o,d=q.firstChild,e=d.firstChild,h=d.nextSibling.firstChild.firstChild,i={doesNotAddBorder:e.offsetTop!==5,doesAddBorderForTableAndCells:h.offsetTop===5},e.style.position="fixed",e.style.top="20px",i.fixedPosition=e.offsetTop===20||e.offsetTop===15,e.style.position=e.style.top="",d.style.overflow="hidden",d.style.position="relative",i.subtractsBorderForOverflowNotVisible=e.offsetTop===-5,i.doesNotIncludeMarginInBodyOffset=r.offsetTop!==j,r.removeChild(a),q=a=null,f.extend(b,i))});return b}();var j=/^(?:\{.*\}|\[.*\])$/,k=/([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a&&!m(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g,h,i,j=f.expando,k=typeof c=="string",l=a.nodeType,m=l?f.cache:a,n=l?a[j]:a[j]&&j,o=c==="events";if((!n||!m[n]||!o&&!e&&!m[n].data)&&k&&d===b)return;n||(l?a[j]=n=++f.uuid:n=j),m[n]||(m[n]={},l||(m[n].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?m[n]=f.extend(m[n],c):m[n].data=f.extend(m[n].data,c);g=h=m[n],e||(h.data||(h.data={}),h=h.data),d!==b&&(h[f.camelCase(c)]=d);if(o&&!h[c])return g.events;k?(i=h[c],i==null&&(i=h[f.camelCase(c)])):i=h;return i}},removeData:function(a,b,c){if(!!f.acceptData(a)){var d,e,g,h=f.expando,i=a.nodeType,j=i?f.cache:a,k=i?a[h]:h;if(!j[k])return;if(b){d=c?j[k]:j[k].data;if(d){f.isArray(b)||(b in d?b=[b]:(b=f.camelCase(b),b in d?b=[b]:b=b.split(" ")));for(e=0,g=b.length;e-1)return!0;return!1},val:function(a){var c,d,e,g=this[0];{if(!!arguments.length){e=f.isFunction(a);return this.each(function(d){var g=f(this),h;if(this.nodeType===1){e?h=a.call(this,d,g.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.nodeName.toLowerCase()]||f.valHooks[this.type];if(!c||!("set"in c)||c.set(this,h,"value")===b)this.value=h}})}if(g){c=f.valHooks[g.nodeName.toLowerCase()]||f.valHooks[g.type];if(c&&"get"in c&&(d=c.get(g,"value"))!==b)return d;d=g.value;return typeof d=="string"?d.replace(q,""):d==null?"":d}}}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c,d,e,g=a.selectedIndex,h=[],i=a.options,j=a.type==="select-one";if(g<0)return null;c=j?g:0,d=j?g+1:i.length;for(;c=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attr:function(a,c,d,e){var g,h,i,j=a.nodeType;if(!!a&&j!==3&&j!==8&&j!==2){if(e&&c in f.attrFn)return f(a)[c](d);if(typeof a.getAttribute=="undefined")return f.prop(a,c,d);i=j!==1||!f.isXMLDoc(a),i&&(c=c.toLowerCase(),h=f.attrHooks[c]||(u.test(c)?x:w));if(d!==b){if(d===null){f.removeAttr(a,c);return}if(h&&"set"in h&&i&&(g=h.set(a,d,c))!==b)return g;a.setAttribute(c,""+d);return d}if(h&&"get"in h&&i&&(g=h.get(a,c))!==null)return g;g=a.getAttribute(c);return g===null?b:g}},removeAttr:function(a,b){var c,d,e,g,h=0;if(b&&a.nodeType===1){d=b.toLowerCase().split(p),g=d.length;for(;h=0}})});var z=/^(?:textarea|input|select)$/i,A=/^([^\.]*)?(?:\.(.+))?$/,B=/\bhover(\.\S+)?\b/,C=/^key/,D=/^(?:mouse|contextmenu)|click/,E=/^(?:focusinfocus|focusoutblur)$/,F=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,G=function(a){var b=F.exec(a);b&&(b[1]=(b[1]||"").toLowerCase(),b[3]=b[3]&&new RegExp("(?:^|\\s)"+b[3]+"(?:\\s|$)"));return b},H=function(a,b){var c=a.attributes||{};return(!b[1]||a.nodeName.toLowerCase()===b[1])&&(!b[2]||(c.id||{}).value===b[2])&&(!b[3]||b[3].test((c["class"]||{}).value))},I=function(a){return f.event.special.hover?a:a.replace(B,"mouseenter$1 mouseleave$1")}; -f.event={add:function(a,c,d,e,g){var h,i,j,k,l,m,n,o,p,q,r,s;if(!(a.nodeType===3||a.nodeType===8||!c||!d||!(h=f._data(a)))){d.handler&&(p=d,d=p.handler),d.guid||(d.guid=f.guid++),j=h.events,j||(h.events=j={}),i=h.handle,i||(h.handle=i=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.dispatch.apply(i.elem,arguments):b},i.elem=a),c=f.trim(I(c)).split(" ");for(k=0;k=0&&(h=h.slice(0,-1),k=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i.shift(),i.sort());if((!e||f.event.customEvent[h])&&!f.event.global[h])return;c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.isTrigger=!0,c.exclusive=k,c.namespace=i.join("."),c.namespace_re=c.namespace?new RegExp("(^|\\.)"+i.join("\\.(?:.*\\.)?")+"(\\.|$)"):null,o=h.indexOf(":")<0?"on"+h:"";if(!e){j=f.cache;for(l in j)j[l].events&&j[l].events[h]&&f.event.trigger(c,d,j[l].handle.elem,!0);return}c.result=b,c.target||(c.target=e),d=d!=null?f.makeArray(d):[],d.unshift(c),p=f.event.special[h]||{};if(p.trigger&&p.trigger.apply(e,d)===!1)return;r=[[e,p.bindType||h]];if(!g&&!p.noBubble&&!f.isWindow(e)){s=p.delegateType||h,m=E.test(s+h)?e:e.parentNode,n=null;for(;m;m=m.parentNode)r.push([m,s]),n=m;n&&n===e.ownerDocument&&r.push([n.defaultView||n.parentWindow||a,s])}for(l=0;le&&i.push({elem:this,matches:d.slice(e)});for(j=0;j0?this.on(b,null,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0),C.test(b)&&(f.event.fixHooks[b]=f.event.keyHooks),D.test(b)&&(f.event.fixHooks[b]=f.event.mouseHooks)}),function(){function x(a,b,c,e,f,g){for(var h=0,i=e.length;h0){k=j;break}}j=j[a]}e[h]=k}}}function w(a,b,c,e,f,g){for(var h=0,i=e.length;h+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d="sizcache"+(Math.random()+"").replace(".",""),e=0,g=Object.prototype.toString,h=!1,i=!0,j=/\\/g,k=/\r\n/g,l=/\W/;[0,0].sort(function(){i=!1;return 0});var m=function(b,d,e,f){e=e||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return e;var i,j,k,l,n,q,r,t,u=!0,v=m.isXML(d),w=[],x=b;do{a.exec(""),i=a.exec(x);if(i){x=i[3],w.push(i[1]);if(i[2]){l=i[3];break}}}while(i);if(w.length>1&&p.exec(b))if(w.length===2&&o.relative[w[0]])j=y(w[0]+w[1],d,f);else{j=o.relative[w[0]]?[d]:m(w.shift(),d);while(w.length)b=w.shift(),o.relative[b]&&(b+=w.shift()),j=y(b,j,f)}else{!f&&w.length>1&&d.nodeType===9&&!v&&o.match.ID.test(w[0])&&!o.match.ID.test(w[w.length-1])&&(n=m.find(w.shift(),d,v),d=n.expr?m.filter(n.expr,n.set)[0]:n.set[0]);if(d){n=f?{expr:w.pop(),set:s(f)}:m.find(w.pop(),w.length===1&&(w[0]==="~"||w[0]==="+")&&d.parentNode?d.parentNode:d,v),j=n.expr?m.filter(n.expr,n.set):n.set,w.length>0?k=s(j):u=!1;while(w.length)q=w.pop(),r=q,o.relative[q]?r=w.pop():q="",r==null&&(r=d),o.relative[q](k,r,v)}else k=w=[]}k||(k=j),k||m.error(q||b);if(g.call(k)==="[object Array]")if(!u)e.push.apply(e,k);else if(d&&d.nodeType===1)for(t=0;k[t]!=null;t++)k[t]&&(k[t]===!0||k[t].nodeType===1&&m.contains(d,k[t]))&&e.push(j[t]);else for(t=0;k[t]!=null;t++)k[t]&&k[t].nodeType===1&&e.push(j[t]);else s(k,e);l&&(m(l,h,e,f),m.uniqueSort(e));return e};m.uniqueSort=function(a){if(u){h=i,a.sort(u);if(h)for(var b=1;b0},m.find=function(a,b,c){var d,e,f,g,h,i;if(!a)return[];for(e=0,f=o.order.length;e":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!l.test(b)){b=b.toLowerCase();for(;e=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(j,"")},TAG:function(a,b){return a[1].replace(j,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||m.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&m.error(a[0]);a[0]=e++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(j,"");!f&&o.attrMap[g]&&(a[1]=o.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(j,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=m(b[3],null,null,c);else{var g=m.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(o.match.POS.test(b[0])||o.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!m(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"reset"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return bc[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=o.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||n([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||!!a.nodeName&&a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=m.attr?m.attr(a,c):o.attrHandle[c]?o.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":!f&&m.attr?d!=null:f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=o.setFilters[e];if(f)return f(a,c,b,d)}}},p=o.match.POS,q=function(a,b){return"\\"+(b-0+1)};for(var r in o.match)o.match[r]=new RegExp(o.match[r].source+/(?![^\[]*\])(?![^\(]*\))/.source),o.leftMatch[r]=new RegExp(/(^(?:.|\r|\n)*?)/.source+o.match[r].source.replace(/\\(\d+)/g,q));var s=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(t){s=function(a,b){var c=0,d=b||[];if(g.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length=="number")for(var e=a.length;c",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(o.find.ID=function(a,c,d){if(typeof c.getElementById!="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},o.filter.ID=function(a,b){var c=typeof a.getAttributeNode!="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(o.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="",a.firstChild&&typeof a.firstChild.getAttribute!="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(o.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=m,b=c.createElement("div"),d="__sizzle__";b.innerHTML="

";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){m=function(b,e,f,g){e=e||c;if(!g&&!m.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return s(e.getElementsByTagName(b),f);if(h[2]&&o.find.CLASS&&e.getElementsByClassName)return s(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return s([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return s([],f);if(i.id===h[3])return s([i],f)}try{return s(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var k=e,l=e.getAttribute("id"),n=l||d,p=e.parentNode,q=/^\s*[+~]/.test(b);l?n=n.replace(/'/g,"\\$&"):e.setAttribute("id",n),q&&p&&(e=e.parentNode);try{if(!q||p)return s(e.querySelectorAll("[id='"+n+"'] "+b),f)}catch(r){}finally{l||k.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)m[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}m.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!m.isXML(a))try{if(e||!o.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return m(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="
";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;o.order.splice(1,0,"CLASS"),o.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?m.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?m.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:m.contains=function(){return!1},m.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var y=function(a,b,c){var d,e=[],f="",g=b.nodeType?[b]:b;while(d=o.match.PSEUDO.exec(a))f+=d[0],a=a.replace(o.match.PSEUDO,"");a=o.relative[a]?a+"*":a;for(var h=0,i=g.length;h0)for(h=g;h=0:f.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h=1;while(g&&g.ownerDocument&&g!==b){for(d=0;d-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a)return this[0]&&this[0].parentNode?this.prevAll().length:-1;if(typeof a=="string")return f.inArray(this[0],f(a));return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(S(c[0])||S(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling(a.parentNode.firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c);L.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!R[a]?f.unique(e):e,(this.length>1||N.test(d))&&M.test(a)&&(e=e.reverse());return this.pushStack(e,a,P.call(arguments).join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var V="abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",W=/ jQuery\d+="(?:\d+|null)"/g,X=/^\s+/,Y=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,Z=/<([\w:]+)/,$=/",""],legend:[1,"
","
"],thead:[1,"","
"],tr:[2,"","
"],td:[3,"","
"],col:[2,"","
"],area:[1,"",""],_default:[0,"",""]},bh=U(c);bg.optgroup=bg.option,bg.tbody=bg.tfoot=bg.colgroup=bg.caption=bg.thead,bg.th=bg.td,f.support.htmlSerialize||(bg._default=[1,"div
","
"]),f.fn.extend({text:function(a){if(f.isFunction(a))return this.each(function(b){var c=f(this);c.text(a.call(this,b,c.text()))});if(typeof a!="object"&&a!==b)return this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a));return f.text(this)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=f.isFunction(a);return this.each(function(c){f(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f.clean(arguments);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,f.clean(arguments));return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")),f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function() -{for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){if(a===b)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(W,""):null;if(typeof a=="string"&&!ba.test(a)&&(f.support.leadingWhitespace||!X.test(a))&&!bg[(Z.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Y,"<$1>");try{for(var c=0,d=this.length;c1&&l0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d,e,g,h=f.support.html5Clone||!bc.test("<"+a.nodeName)?a.cloneNode(!0):bo(a);if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bk(a,h),d=bl(a),e=bl(h);for(g=0;d[g];++g)e[g]&&bk(d[g],e[g])}if(b){bj(a,h);if(c){d=bl(a),e=bl(h);for(g=0;d[g];++g)bj(d[g],e[g])}}d=e=null;return h},clean:function(a,b,d,e){var g;b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);var h=[],i;for(var j=0,k;(k=a[j])!=null;j++){typeof k=="number"&&(k+="");if(!k)continue;if(typeof k=="string")if(!_.test(k))k=b.createTextNode(k);else{k=k.replace(Y,"<$1>");var l=(Z.exec(k)||["",""])[1].toLowerCase(),m=bg[l]||bg._default,n=m[0],o=b.createElement("div");b===c?bh.appendChild(o):U(b).appendChild(o),o.innerHTML=m[1]+k+m[2];while(n--)o=o.lastChild;if(!f.support.tbody){var p=$.test(k),q=l==="table"&&!p?o.firstChild&&o.firstChild.childNodes:m[1]===""&&!p?o.childNodes:[];for(i=q.length-1;i>=0;--i)f.nodeName(q[i],"tbody")&&!q[i].childNodes.length&&q[i].parentNode.removeChild(q[i])}!f.support.leadingWhitespace&&X.test(k)&&o.insertBefore(b.createTextNode(X.exec(k)[0]),o.firstChild),k=o.childNodes}var r;if(!f.support.appendChecked)if(k[0]&&typeof (r=k.length)=="number")for(i=0;i=0)return b+"px"}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return br.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=f.isNumeric(b)?"alpha(opacity="+b*100+")":"",g=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&f.trim(g.replace(bq,""))===""){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bq.test(g)?g.replace(bq,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){var c;f.swap(a,{display:"inline-block"},function(){b?c=bz(a,"margin-right","marginRight"):c=a.style.marginRight});return c}})}),c.defaultView&&c.defaultView.getComputedStyle&&(bA=function(a,b){var c,d,e;b=b.replace(bs,"-$1").toLowerCase(),(d=a.ownerDocument.defaultView)&&(e=d.getComputedStyle(a,null))&&(c=e.getPropertyValue(b),c===""&&!f.contains(a.ownerDocument.documentElement,a)&&(c=f.style(a,b)));return c}),c.documentElement.currentStyle&&(bB=function(a,b){var c,d,e,f=a.currentStyle&&a.currentStyle[b],g=a.style;f===null&&g&&(e=g[b])&&(f=e),!bt.test(f)&&bu.test(f)&&(c=g.left,d=a.runtimeStyle&&a.runtimeStyle.left,d&&(a.runtimeStyle.left=a.currentStyle.left),g.left=b==="fontSize"?"1em":f||0,f=g.pixelLeft+"px",g.left=c,d&&(a.runtimeStyle.left=d));return f===""?"auto":f}),bz=bA||bB,f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style&&a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)});var bD=/%20/g,bE=/\[\]$/,bF=/\r?\n/g,bG=/#.*$/,bH=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bI=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bJ=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,bK=/^(?:GET|HEAD)$/,bL=/^\/\//,bM=/\?/,bN=/)<[^<]*)*<\/script>/gi,bO=/^(?:select|textarea)/i,bP=/\s+/,bQ=/([?&])_=[^&]*/,bR=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bS=f.fn.load,bT={},bU={},bV,bW,bX=["*/"]+["*"];try{bV=e.href}catch(bY){bV=c.createElement("a"),bV.href="",bV=bV.href}bW=bR.exec(bV.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!="string"&&bS)return bS.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h="GET";c&&(f.isFunction(c)?(d=c,c=b):typeof c=="object"&&(c=f.param(c,f.ajaxSettings.traditional),h="POST"));var i=this;f.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f("
").append(c.replace(bN,"")).find(g):c)),d&&i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bO.test(this.nodeName)||bI.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bF,"\r\n")}}):{name:b.name,value:c.replace(bF,"\r\n")}}).get()}}),f.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){f.fn[b]=function(a){return this.on(b,a)}}),f.each(["get","post"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,"script")},getJSON:function(a,b,c){return f.get(a,b,c,"json")},ajaxSetup:function(a,b){b?b_(a,f.ajaxSettings):(b=a,a=f.ajaxSettings),b_(a,b);return a},ajaxSettings:{url:bV,isLocal:bJ.test(bW[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":bX},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":f.parseJSON,"text xml":f.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:bZ(bT),ajaxTransport:bZ(bU),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q),p=b,n=m||"",v.readyState=a>0?4:0;var o,r,u,w=c,x=l?cb(d,v,l):b,y,z;if(a>=200&&a<300||a===304){if(d.ifModified){if(y=v.getResponseHeader("Last-Modified"))f.lastModified[k]=y;if(z=v.getResponseHeader("Etag"))f.etag[k]=z}if(a===304)w="notmodified",o=!0;else try{r=cc(d,x),w="success",o=!0}catch(A){w="parsererror",u=A}}else{u=w;if(!w||a)w="error",a<0&&(a=0)}v.status=a,v.statusText=""+(c||w),o?h.resolveWith(e,[r,w,v]):h.rejectWith(e,[v,w,u]),v.statusCode(j),j=b,t&&g.trigger("ajax"+(o?"Success":"Error"),[v,d,o?r:u]),i.fireWith(e,[v,w]),t&&(g.trigger("ajaxComplete",[v,d]),--f.active||f.event.trigger("ajaxStop"))}}typeof a=="object"&&(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d&&(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f.Callbacks("once memory"),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bH.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||"abort",p&&p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.add,v.statusCode=function(a){if(a){var b;if(s<2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+"").replace(bG,"").replace(bL,bW[1]+"//"),d.dataTypes=f.trim(d.dataType||"*").toLowerCase().split(bP),d.crossDomain==null&&(r=bR.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bW[1]&&r[2]==bW[2]&&(r[3]||(r[1]==="http:"?80:443))==(bW[3]||(bW[1]==="http:"?80:443)))),d.data&&d.processData&&typeof d.data!="string"&&(d.data=f.param(d.data,d.traditional)),b$(bT,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bK.test(d.type),t&&f.active++===0&&f.event.trigger("ajaxStart");if(!d.hasContent){d.data&&(d.url+=(bM.test(d.url)?"&":"?")+d.data,delete d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bQ,"$1_="+x);d.url=y+(y===d.url?(bM.test(d.url)?"&":"?")+"_="+x:"")}}(d.data&&d.hasContent&&d.contentType!==!1||c.contentType)&&v.setRequestHeader("Content-Type",d.contentType),d.ifModified&&(k=k||d.url,f.lastModified[k]&&v.setRequestHeader("If-Modified-Since",f.lastModified[k]),f.etag[k]&&v.setRequestHeader("If-None-Match",f.etag[k])),v.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!=="*"?", "+bX+"; q=0.01":""):d.accepts["*"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&&(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=b$(bU,d,c,v);if(!p)w(-1,"No Transport");else{v.readyState=1,t&&g.trigger("ajaxSend",[v,d]),d.async&&d.timeout>0&&(q=setTimeout(function(){v.abort("timeout")},d.timeout));try{s=1,p.send(l,w)}catch(z){if(s<2)w(-1,z);else throw z}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)ca(g,a[g],c,e);return d.join("&").replace(bD,"+")}}),f.extend({active:0,lastModified:{},etag:{}});var cd=f.now(),ce=/(\=)\?(&|$)|\?\?/i;f.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return f.expando+"_"+cd++}}),f.ajaxPrefilter("json jsonp",function(b,c,d){var e=b.contentType==="application/x-www-form-urlencoded"&&typeof b.data=="string";if(b.dataTypes[0]==="jsonp"||b.jsonp!==!1&&(ce.test(b.url)||e&&ce.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2";b.jsonp!==!1&&(j=j.replace(ce,l),b.url===j&&(e&&(k=k.replace(ce,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.isFunction(i)&&a[h](g[0])}),b.converters["script json"]=function(){g||f.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),f.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),f.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var cf=a.ActiveXObject?function(){for(var a in ch)ch[a](0,1)}:!1,cg=0,ch;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&ci()||cj()}:ci,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&&h.overrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.noop,cf&&delete ch[i]);if(e)h.readyState!==4&&h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n&&n.documentElement&&(m.xml=n),m.text=h.responseText;try{k=h.statusText}catch(o){k=""}!j&&c.isLocal&&!c.crossDomain?j=m.text?200:404:j===1223&&(j=204)}}}catch(p){e||g(-1,p)}m&&g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++cg,cf&&(ch||(ch={},f(a).unload(cf)),ch[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var ck={},cl,cm,cn=/^(?:toggle|show|hide)$/,co=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,cp,cq=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],cr;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(cu("show",3),a,b,c);for(var g=0,h=this.length;g=i.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),i.animatedProperties[this.prop]=!0;for(b in i.animatedProperties)i.animatedProperties[b]!==!0&&(g=!1);if(g){i.overflow!=null&&!f.support.shrinkWrapBlocks&&f.each(["","X","Y"],function(a,b){h.style["overflow"+b]=i.overflow[a]}),i.hide&&f(h).hide();if(i.hide||i.show)for(b in i.animatedProperties)f.style(h,b,i.orig[b]),f.removeData(h,"fxshow"+b,!0),f.removeData(h,"toggle"+b,!0);d=i.complete,d&&(i.complete=!1,d.call(h))}return!1}i.duration==Infinity?this.now=e:(c=e-this.startTime,this.state=c/i.duration,this.pos=f.easing[i.animatedProperties[this.prop]](this.state,c,0,1,i.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){var a,b=f.timers,c=0;for(;c-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=cx.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,"marginTop"))||0,c.left-=parseFloat(f.css(a,"marginLeft"))||0,d.top+=parseFloat(f.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(f.css(b[0],"borderLeftWidth"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&!cx.test(a.nodeName)&&f.css(a,"position")==="static")a=a.offsetParent;return a})}}),f.each(["Left","Top"],function(a,c){var d="scroll"+c;f.fn[d]=function(c){var e,g;if(c===b){e=this[0];if(!e)return null;g=cy(e);return g?"pageXOffset"in g?g[a?"pageYOffset":"pageXOffset"]:f.support.boxModel&&g.document.documentElement[d]||g.document.body[d]:e[d]}return this.each(function(){g=cy(this),g?g.scrollTo(a?f(g).scrollLeft():c,a?c:f(g).scrollTop()):this[d]=c})}}),f.each(["Height","Width"],function(a,c){var d=c.toLowerCase();f.fn["inner"+c]=function(){var a=this[0];return a?a.style?parseFloat(f.css(a,d,"padding")):this[d]():null},f.fn["outer"+c]=function(a){var b=this[0];return b?b.style?parseFloat(f.css(b,d,a?"margin":"border")):this[d]():null},f.fn[d]=function(a){var e=this[0];if(!e)return a==null?null:this;if(f.isFunction(a))return this.each(function(b){var c=f(this);c[d](a.call(this,b,c[d]()))});if(f.isWindow(e)){var g=e.document.documentElement["client"+c],h=e.document.body;return e.document.compatMode==="CSS1Compat"&&g||h&&h["client"+c]||g}if(e.nodeType===9)return Math.max(e.documentElement["client"+c],e.body["scroll"+c],e.documentElement["scroll"+c],e.body["offset"+c],e.documentElement["offset"+c]);if(a===b){var i=f.css(e,d),j=parseFloat(i);return f.isNumeric(j)?j:i}return this.css(d,typeof a=="string"?a:a+"px")}}),a.jQuery=a.$=f,typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return f})})(window); \ No newline at end of file diff --git a/public/img/enp_blue/bg_enp.png b/public/img/enp_blue/bg_enp.png index 535a5410..67538315 100644 Binary files a/public/img/enp_blue/bg_enp.png and b/public/img/enp_blue/bg_enp.png differ diff --git a/public/img/enp_blue/block_title.png b/public/img/enp_blue/block_title.png new file mode 100644 index 00000000..24f32b91 Binary files /dev/null and b/public/img/enp_blue/block_title.png differ diff --git a/public/img/enp_blue/bottom_enp.png b/public/img/enp_blue/bottom_enp.png new file mode 100644 index 00000000..c2bb47c4 Binary files /dev/null and b/public/img/enp_blue/bottom_enp.png differ diff --git a/public/img/enp_blue/bottom_enp.svg b/public/img/enp_blue/bottom_enp.svg deleted file mode 100644 index 326bfe3b..00000000 --- a/public/img/enp_blue/bottom_enp.svg +++ /dev/null @@ -1,576 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/public/img/enp_blue/btn.png b/public/img/enp_blue/btn.png index 78155a66..06ebed38 100644 Binary files a/public/img/enp_blue/btn.png and b/public/img/enp_blue/btn.png differ diff --git a/public/img/enp_blue/btn.svg b/public/img/enp_blue/btn.svg deleted file mode 100644 index 4f108c83..00000000 --- a/public/img/enp_blue/btn.svg +++ /dev/null @@ -1,101 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/public/img/enp_blue/btn_active.png b/public/img/enp_blue/btn_active.png index 12e5f902..a47b4c92 100644 Binary files a/public/img/enp_blue/btn_active.png and b/public/img/enp_blue/btn_active.png differ diff --git a/public/img/enp_blue/btn_active.svg b/public/img/enp_blue/btn_active.svg deleted file mode 100644 index 71ced9d3..00000000 --- a/public/img/enp_blue/btn_active.svg +++ /dev/null @@ -1,208 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/public/img/enp_blue/header_enp.png b/public/img/enp_blue/header_enp.png new file mode 100644 index 00000000..a1174e1b Binary files /dev/null and b/public/img/enp_blue/header_enp.png differ diff --git a/public/img/enp_blue/header_enp.svg b/public/img/enp_blue/header_enp.svg deleted file mode 100644 index a48e4838..00000000 --- a/public/img/enp_blue/header_enp.svg +++ /dev/null @@ -1,102 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/public/img/enp_blue/index_bg.png b/public/img/enp_blue/index_bg.png new file mode 100644 index 00000000..9aa0e953 Binary files /dev/null and b/public/img/enp_blue/index_bg.png differ diff --git a/public/img/enp_blue/index_bg.svg b/public/img/enp_blue/index_bg.svg deleted file mode 100644 index 953b4d05..00000000 --- a/public/img/enp_blue/index_bg.svg +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - - - - - diff --git a/public/img/enp_blue/left3_index.png b/public/img/enp_blue/left3_index.png new file mode 100644 index 00000000..9aa0e953 Binary files /dev/null and b/public/img/enp_blue/left3_index.png differ diff --git a/public/img/enp_blue/left_bg1.png b/public/img/enp_blue/left_bg1.png new file mode 100644 index 00000000..6c01ee0a Binary files /dev/null and b/public/img/enp_blue/left_bg1.png differ diff --git a/public/img/enp_blue/left_bg2.png b/public/img/enp_blue/left_bg2.png new file mode 100644 index 00000000..47924a2a Binary files /dev/null and b/public/img/enp_blue/left_bg2.png differ diff --git a/public/img/enp_blue/left_border.png b/public/img/enp_blue/left_border.png index d2ad88e2..f44eccbf 100644 Binary files a/public/img/enp_blue/left_border.png and b/public/img/enp_blue/left_border.png differ diff --git a/public/img/enp_blue/menu_bg1.png b/public/img/enp_blue/menu_bg1.png index bf2dd56f..a967f2f5 100644 Binary files a/public/img/enp_blue/menu_bg1.png and b/public/img/enp_blue/menu_bg1.png differ diff --git a/public/img/enp_blue/menu_bg1.svg b/public/img/enp_blue/menu_bg1.svg deleted file mode 100644 index 6b05b76d..00000000 --- a/public/img/enp_blue/menu_bg1.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff --git a/public/img/enp_blue/menu_bg1_active.png b/public/img/enp_blue/menu_bg1_active.png new file mode 100644 index 00000000..5be8e443 Binary files /dev/null and b/public/img/enp_blue/menu_bg1_active.png differ diff --git a/public/img/enp_blue/menu_bg2.png b/public/img/enp_blue/menu_bg2.png new file mode 100644 index 00000000..608e956a Binary files /dev/null and b/public/img/enp_blue/menu_bg2.png differ diff --git a/public/img/enp_blue/menu_bg2.svg b/public/img/enp_blue/menu_bg2.svg deleted file mode 100644 index 81c8aa2a..00000000 --- a/public/img/enp_blue/menu_bg2.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff --git a/public/img/enp_blue/menu_bg2_active.png b/public/img/enp_blue/menu_bg2_active.png new file mode 100644 index 00000000..7ba78543 Binary files /dev/null and b/public/img/enp_blue/menu_bg2_active.png differ diff --git a/public/img/enp_blue/right_bg1.png b/public/img/enp_blue/right_bg1.png new file mode 100644 index 00000000..79f01a8c Binary files /dev/null and b/public/img/enp_blue/right_bg1.png differ diff --git a/public/img/enp_blue/right_bg2.png b/public/img/enp_blue/right_bg2.png new file mode 100644 index 00000000..0fe59f90 Binary files /dev/null and b/public/img/enp_blue/right_bg2.png differ diff --git a/public/img/enp_blue/right_border.png b/public/img/enp_blue/right_border.png index 18ba7ba3..03bc1b52 100644 Binary files a/public/img/enp_blue/right_border.png and b/public/img/enp_blue/right_border.png differ diff --git a/public/webVideoCtrl.js b/public/webVideoCtrl.js index e6655eaa..2cd188f6 100644 --- a/public/webVideoCtrl.js +++ b/public/webVideoCtrl.js @@ -1 +1,4268 @@ -(function(){if(window.WebVideoCtrl){return}var WebVideoCtrl=function(){var m_szWidth="100%";var m_szHeight="100%";var m_options={szversion:"V3.3.0 build20230314",szContainerID:"",szColorProperty:"",szBasePath:"",iWndowType:1,bWndFull:true,iPackageType:2,bDebugMode:true,cbSelWnd:null,cbDoubleClickWnd:null,cbEvent:null,cbInitPluginComplete:null};var m_pluginOBJECT=null;var m_iSelWnd=0;var m_bFullScreen=false;var m_deviceSet=[];var m_wndSet=[];var m_ISAPIProtocol=null;var m_utilsInc=null;var m_webVideoCtrl=this;var m_oLocalCfg=null;var PROTOCOL_DEVICE_ISAPI=1;var ERROR_CODE_UNKNOWN=1e3;var ERROR_CODE_NETWORKERROR=1001;var ERROR_CODE_PARAMERROR=1002;var ERROR_CODE_LOGIN_NOLOGIN=2e3;var ERROR_CODE_LOGIN_REPEATLOGIN=2001;var ERROR_CODE_LOGIN_NOSUPPORT=2002;var ERROR_CODE_PLAY_PLUGININITFAIL=3e3;var ERROR_CODE_PLAY_NOREPEATPLAY=3001;var ERROR_CODE_PLAY_PLAYBACKABNORMAL=3002;var ERROR_CODE_PLAY_PLAYBACKSTOP=3003;var ERROR_CODE_PLAY_NOFREESPACE=3004;var ERROR_CODE_TALK_FAIL=5e3;var HTTP_STATUS_OK_200=200;var HTTP_STATUS_ERROR_403=403;var PLAY_STATUS_STOP=0;var PLAY_STATUS_REALPLAY=1;var PLAY_STATUS_PLAYBACK=2;var PLAY_STATUS_PAUSE=3;var PLAY_STATUS_FRAME=4;var PLAY_STATUS_REVERSE_PLAYBACK=5;var PLAY_STATUS_REVERSE_PAUSE=6;var PROTOCOLTYPE_PLAY_TCP=0;var PROTOCOLTYPE_PLAY_UDP=1;var DEVICE_TYPE_IPCAMERA="IPCamera";var DEVICE_TYPE_IPDOME="IPDome";var DEVICE_TYPE_IPZOOM="IPZoom";var DEVICE_TYPE_GATEWAY="Gateway";var m_szVersion=""+""+"1.0.0.40";""+"";var _onGetSelectWndInfo=function(iWnd){m_iSelWnd=iWnd;if(m_options.cbSelWnd){var arrXml=[];arrXml.push("");arrXml.push(""+m_iSelWnd+"");arrXml.push("");m_options.cbSelWnd(m_utilsInc.loadXML(arrXml.join("")))}};var _onMouseEvent=function(oData){if(m_options.cbDoubleClickWnd&&2===oData.eventType){if(m_options.bWndFull){var iIndex=m_webVideoCtrl.findWndIndexByIndex(oData.wndIndex);if(iIndex!=-1){m_bFullScreen=!m_bFullScreen}}m_options.cbDoubleClickWnd(oData.wndIndex,m_bFullScreen)}};var _onPluginEventHandler=function(iWndIndex,iErrorCode,oError){var iNewError=ERROR_CODE_UNKNOWN;if(0===iErrorCode){iNewError=ERROR_CODE_PLAY_PLAYBACKABNORMAL}else if(2===iErrorCode){iNewError=ERROR_CODE_PLAY_PLAYBACKSTOP}else if(3===iErrorCode){iNewError=ERROR_CODE_TALK_FAIL}else if(21===iErrorCode){iNewError=ERROR_CODE_PLAY_NOFREESPACE}if(ERROR_CODE_PLAY_PLAYBACKABNORMAL==iNewError||ERROR_CODE_PLAY_PLAYBACKSTOP==iNewError){m_webVideoCtrl.I_Stop(iWndIndex)}else if(ERROR_CODE_PLAY_NOFREESPACE==iNewError){m_webVideoCtrl.I_StopRecord(iWndIndex)}else if(ERROR_CODE_TALK_FAIL==iNewError){m_webVideoCtrl.I_StopVoiceTalk()}else{}if(m_options.cbEvent){m_options.cbEvent(iNewError,iWndIndex,oError)}};var _onKeyBoardEvent=function(iKeyCode){if(100===parseInt(iKeyCode,10)){m_bFullScreen=false;if(m_options.cbDoubleClickWnd){m_options.cbDoubleClickWnd(m_iSelWnd,m_bFullScreen)}}};var _onZoomInfoCallback=function(oPoints){var iIndex=m_webVideoCtrl.findWndIndexByIndex(m_iSelWnd);if(iIndex!=-1){var oWndInfo=m_wndSet[iIndex];iIndex=m_webVideoCtrl.findDeviceIndexByIP(oWndInfo.szDeviceIdentify);if(iIndex!=-1){var oDeviceInfo=m_deviceSet[iIndex];oDeviceInfo.oProtocolInc.set3DZoom(oDeviceInfo,oWndInfo,oPoints,{})}}};var _oNoLoginError={errorCode:ERROR_CODE_LOGIN_NOLOGIN,errorMsg:"The device is not login."};var _oUnKnownError={errorCode:ERROR_CODE_UNKNOWN,errorMsg:"Unknown error."};var _oParamsError={errorCode:ERROR_CODE_PARAMERROR,errorMsg:"Params error."};var _printString=function(){if(m_options.bDebugMode){var printString=m_utilsInc.formatString(arguments);console.log(printString)}};var _initLocalCfg=function(){let oPromise=new Promise(function(resolve,reject){m_pluginOBJECT.JS_GetLocalConfig().then(oLocalCofing=>{m_oLocalCfg=oLocalCofing;resolve()},()=>{reject()})});return oPromise};var _initDeviceInfo=function(oDeviceInfo){let oPromise=new Promise(function(resolve,reject){let oP1=oDeviceInfo.oProtocolInc.getDeviceInfo(oDeviceInfo,{});let oP2=oDeviceInfo.oProtocolInc.getAnalogChannelInfo(oDeviceInfo,{});let oP3=oDeviceInfo.oProtocolInc.getAudioInfo(oDeviceInfo,{});let oP4=_getPort(oDeviceInfo);let oP5=oDeviceInfo.oProtocolInc.getDeviceMinusLocalTime(oDeviceInfo);Promise.all([oP1,oP2,oP3,oP4,oP5]).then(()=>{resolve()},()=>{resolve()})});return oPromise};var _initPlugin=function(szContainerID){let oPromise=new Promise(function(resolve,reject){if(!m_utilsInc.isUndefined(szContainerID)){m_options.szContainerID=szContainerID}if(document.getElementById(m_options.szContainerID)==null){reject(_oParamsError);return}var oParam={szId:szContainerID,iType:1,iWidth:m_szWidth,iHeight:m_szHeight,iMaxSplit:4,iCurrentSplit:m_options.iWndowType,iServicePortStart:34686,iServicePortEnd:34690,oSessionInfo:{sessionID:"11c12b3257f037bb50052db3ac5e342572c3d963622baca122755c482ce8823a",user:"admin",challenge:"275816f02ec2dca22b6a6ae87c7cb7e3",iterations:100,random:"34765058"},iPluginType:2,onConnectSuccess:()=>{var oElem=$("#"+szContainerID);m_pluginOBJECT.JS_Resize(oElem.width(),oElem.height());if(2!==m_pluginOBJECT.iPluginMode){reject({errorCode:ERROR_CODE_PLAY_PLUGININITFAIL,errorMsg:"Plugin init failed."});return}var iWndFull=m_options.bWndFull?1:0;m_pluginOBJECT.JS_SetFullScreenCapability(iWndFull);m_pluginOBJECT.JS_SetPackageType(m_options.iPackageType);_initPluginEvent();_initLocalCfg().then(()=>{resolve()})},onConnectError:()=>{reject({errorCode:ERROR_CODE_PLAY_PLUGININITFAIL,errorMsg:"Plugin init failed."})},szBasePath:m_utilsInc.getDirName()};m_pluginOBJECT=new JSVideoPlugin(oParam)});return oPromise};var _initPluginEvent=function(){m_pluginOBJECT.JS_SetWindowControlCallback({onGetSelectWndInfo:iwnd=>{_onGetSelectWndInfo(iwnd)},onPluginEventHandler:(iWndIndex,iEventType,iParam2)=>{_onPluginEventHandler(iWndIndex,iEventType,iParam2)},KeyBoardEvent:szXml=>{_onKeyBoardEvent(szXml)},onMouseEvent:function(oData){_onMouseEvent(oData)}})};var _getPort=function(oDeviceInfo){let oPromise=new Promise(async(resolve,reject)=>{var oPort=null;let bPPPoE=await _getPPPoEEnable(oDeviceInfo);if(bPPPoE){oPort=await _getInternalPort(oDeviceInfo)}else{var ipset=await _getDeviceIPAddr(oDeviceInfo);var bSame=false;for(var i=0;i{var iRtspPort=-1,iHttpPort=-1,iDevicePort=-1;oDeviceInfo.oProtocolInc.getPortInfo(oDeviceInfo,{async:false,success:function(xmlDoc){var nodeList=NS.$XML(xmlDoc).find("AdminAccessProtocol",true);iRtspPort=554;for(var i=0,iLen=nodeList.length;i{var iRtspPort=-1,iHttpPort=-1,iDevicePort=-1;oDeviceInfo.oProtocolInc.getUPnPPortStatus(oDeviceInfo,{async:false,success:function(xmlDoc){var nodeList=NS.$XML(xmlDoc).find("portStatus",true);for(var i=0,iLen=nodeList.length;i0){bEnabled=true}else if(NS.$XML(xmlDoc).find("ipv6Address",true).length>0){bEnabled=true}else{bEnabled=false}resolve(bEnabled)},error:function(){bEnabled=false;resolve(bEnabled)}})});return oPromise};var _generateTransCodeXml=function(oTransCodeParam){var oDefaultParam={TransFrameRate:"",TransResolution:"",TransBitrate:""};m_utilsInc.extend(oDefaultParam,oTransCodeParam);if(oDefaultParam.TransFrameRate==""||oDefaultParam.TransResolution==""||oDefaultParam.TransBitrate==""){return""}var ArraySet=[];ArraySet.push("");ArraySet.push("");ArraySet.push(""+oDefaultParam.TransFrameRate+"");ArraySet.push(""+oDefaultParam.TransResolution+"");ArraySet.push(""+oDefaultParam.TransBitrate+"");ArraySet.push("");return ArraySet.join("")};var _setDeviceInfo=function(cgiInstance,oDeviceInfo,szIP,iProtocol,iPort,szUserName,szPassword){oDeviceInfo.szIP=szIP;if(iProtocol==2){oDeviceInfo.szHttpProtocol="https://";oDeviceInfo.iHttpsPort=iPort}else{oDeviceInfo.szHttpProtocol="http://";oDeviceInfo.iHttpPort=iPort}oDeviceInfo.iCGIPort=iPort;oDeviceInfo.szDeviceIdentify=szIP+"_"+iPort;oDeviceInfo.iDeviceProtocol=PROTOCOL_DEVICE_ISAPI;oDeviceInfo.oProtocolInc=cgiInstance;oDeviceInfo.szAuth=m_utilsInc.Base64.encode(":"+szUserName+":"+szPassword)};var _doLogin=function(cgiInstance,oDeviceInfo,szIP,iProtocol,iPort,szUserName,szPassword,options){var newOptions={success:null,error:null};m_utilsInc.extend(newOptions,options);m_utilsInc.extend(newOptions,{success:function(xmlDoc){_setDeviceInfo(cgiInstance,oDeviceInfo,szIP,iProtocol,iPort,szUserName,szPassword);m_deviceSet.push(oDeviceInfo);_initDeviceInfo(oDeviceInfo).then(()=>{if(options.success){options.success(xmlDoc)}})},error:function(oError){if(options.error){options.error(oError)}}});return cgiInstance.digestLogin(szIP,iProtocol,iPort,szUserName,szPassword,newOptions)};this.I_SupportNoPlugin=function(){return false};this.I_Resize=function(iWidth,iHeight){return m_pluginOBJECT.JS_Resize(iWidth,iHeight)};this.I_InitPlugin=function(options){m_utilsInc.extend(m_options,options);var szDirName=m_utilsInc.getDirName();if(szDirName){if("object"===typeof exports&&typeof module!=="undefined"){}else if("function"===typeof define&&define.amd){require([szDirName+"/jsVideoPlugin-1.0.0.min.js"],function(o){window.JSVideoPlugin=o.JSVideoPlugin;if(options.cbInitPluginComplete){options.cbInitPluginComplete()}})}else{m_utilsInc.loadScript(szDirName+"/jsVideoPlugin-1.0.0.min.js",function(){if(options.cbInitPluginComplete){options.cbInitPluginComplete()}})}}window.addEventListener("resize",function(){if(m_pluginOBJECT!==null){var oElem=$("#"+m_options.szContainerID);m_pluginOBJECT.JS_Resize(oElem.width(),oElem.height())}});window.addEventListener("unload",function(){})};this.I_InsertOBJECTPlugin=function(szContainerID){return _initPlugin(szContainerID)};this.I_WriteOBJECT_XHTML=function(){return 0};this.I_DestroyPlugin=function(){let oPromise=new Promise(function(resolve,reject){m_pluginOBJECT.JS_DestroyAll().then(()=>{resolve()},()=>{reject(_oUnKnownError)})});return oPromise};this.I_OpenFileDlg=async function(iType){let oPromise=new Promise(function(resolve,reject){m_pluginOBJECT.JS_OpenFileBrowser(iType,"").then(szFilePath=>{resolve(szFilePath)},()=>{reject(_oUnKnownError)})});return oPromise};this.I_GetLocalCfg=function(){let oPromise=new Promise(function(resolve,reject){m_pluginOBJECT.JS_GetLocalConfig().then(oLocalCofing=>{resolve(oLocalCofing)},()=>{reject(_oUnKnownError)})});return oPromise};this.I_SetLocalCfg=function(oLocalCofing){let oPromise=new Promise(function(resolve,reject){m_pluginOBJECT.JS_SetLocalConfig(oLocalCofing).then(()=>{resolve()},()=>{reject(_oUnKnownError)})});return oPromise};this.I_Login=function(szIP,iProtocol,iPort,szUserName,szPassword,options){let oPromise=new Promise(function(resolve,reject){var szDeviceIdentify=szIP+"_"+iPort;var iIndex=this.findDeviceIndexByIP(szDeviceIdentify);if(iIndex!=-1){if(options.error){options.error({errorCode:ERROR_CODE_LOGIN_REPEATLOGIN,errorMsg:"The device is already login."})}reject({errorCode:ERROR_CODE_LOGIN_REPEATLOGIN,errorMsg:"The device is already login."});return}var cgiInstance=m_ISAPIProtocol;var oDeviceInfo=new deviceInfoClass;_doLogin(cgiInstance,oDeviceInfo,szIP,iProtocol,iPort,szUserName,szPassword,options).then(()=>{resolve()},oError=>{reject(oError)})});return oPromise};this.I_Logout=function(szDeviceIdentify){let oPromise=new Promise(function(resolve,reject){var iIndex=this.findDeviceIndexByIP(szDeviceIdentify);if(iIndex!=-1){m_deviceSet.splice(iIndex,1);resolve()}});return oPromise};this.I_GetAudioInfo=function(szDeviceIdentify,options){let oPromise=new Promise(function(resolve,reject){var iIndex=this.findDeviceIndexByIP(szDeviceIdentify);if(iIndex!=-1){var oDeviceInfo=m_deviceSet[iIndex];oDeviceInfo.oProtocolInc.getAudioInfo(oDeviceInfo,options).then(oData=>{resolve(oData)},oError=>{reject(oError)})}else{reject(_oNoLoginError)}});return oPromise};this.I_GetDeviceInfo=function(szDeviceIdentify,options){let oPromise=new Promise(function(resolve,reject){var iIndex=this.findDeviceIndexByIP(szDeviceIdentify);if(iIndex!=-1){var oDeviceInfo=m_deviceSet[iIndex];oDeviceInfo.oProtocolInc.getDeviceInfo(oDeviceInfo,options).then(oData=>{resolve(oData)},oError=>{reject(oError)})}else{reject(_oNoLoginError)}});return oPromise};this.I_GetAnalogChannelInfo=function(szDeviceIdentify,options){let oPromise=new Promise(function(resolve,reject){var iIndex=this.findDeviceIndexByIP(szDeviceIdentify);if(iIndex!=-1){var oDeviceInfo=m_deviceSet[iIndex];oDeviceInfo.oProtocolInc.getAnalogChannelInfo(oDeviceInfo,options).then(oData=>{resolve(oData)},oError=>{reject(oError)})}else{reject(_oNoLoginError)}});return oPromise};this.I_GetDigitalChannelInfo=function(szDeviceIdentify,options){let oPromise=new Promise(function(resolve,reject){var iIndex=this.findDeviceIndexByIP(szDeviceIdentify);if(iIndex!=-1){var oDeviceInfo=m_deviceSet[iIndex];oDeviceInfo.oProtocolInc.getDigitalChannelInfo(oDeviceInfo,options).then(oData=>{resolve(oData)},oError=>{reject(oError)})}else{reject(_oNoLoginError)}});return oPromise};this.I_GetZeroChannelInfo=function(szDeviceIdentify,options){let oPromise=new Promise(function(resolve,reject){var iIndex=this.findDeviceIndexByIP(szDeviceIdentify);if(iIndex!=-1){var oDeviceInfo=m_deviceSet[iIndex];oDeviceInfo.oProtocolInc.getZeroChannelInfo(oDeviceInfo,options).then(oData=>{resolve(oData)},oError=>{reject(oError)})}else{reject(_oNoLoginError)}});return oPromise};this.I_StartRealPlay=function(szDeviceIdentify,options){let oPromise=new Promise(function(resolve,reject){var iIndex=this.findDeviceIndexByIP(szDeviceIdentify);var newOptions={iWndIndex:m_iSelWnd,iStreamType:1,iChannelID:1,bZeroChannel:false};m_utilsInc.extend(newOptions,options);if(iIndex!=-1){var oDeviceInfo=m_deviceSet[iIndex];var iWndIndex=this.findWndIndexByIndex(newOptions.iWndIndex);if(-1==iWndIndex){oDeviceInfo.oProtocolInc.startRealPlay(oDeviceInfo,newOptions).then(function(){if(options.success){options.success()}resolve()},function(){if(options.error){options.error(_oUnKnownError)}reject(_oUnKnownError)})}else{reject({errorCode:ERROR_CODE_PLAY_NOREPEATPLAY,errorMsg:"The window is already playing."})}}else{if(options.error){options.error(_oNoLoginError)}reject(_oNoLoginError)}});return oPromise};this.I_StartPlay=function(szDeviceIdentify,options){let oPromise=new Promise(async function(resolve,reject){var iIndex=this.findDeviceIndexByIP(szDeviceIdentify);var newOptions={iWndIndex:m_iSelWnd};m_utilsInc.extend(newOptions,options);var oDeviceInfo=m_deviceSet[iIndex];iIndex=this.findWndIndexByIndex(newOptions.iWndIndex);if(-1==iIndex){oDeviceInfo.oProtocolInc.startPlay(oDeviceInfo,newOptions).then(function(){if(options.success){options.success()}resolve()},function(){if(options.error){options.error(_oUnKnownError)}reject(_oUnKnownError)})}else{reject({errorCode:ERROR_CODE_PLAY_NOREPEATPLAY,errorMsg:"The window is already playing."})}});return oPromise};this.I_SetSecretKey=function(szSecretKey){let oPromise=new Promise((resolve,reject)=>{m_pluginOBJECT.JS_SetSecretKey(0,szSecretKey,1).then(()=>{resolve()},()=>{reject(_oUnKnownError)})});return oPromise};this.I_GetEncryptString=function(szSecretKey){let oPromise=new Promise((resolve,reject)=>{m_pluginOBJECT.JS_GetEncryptString(3,szSecretKey).then(szEncode=>{resolve(szEncode)},()=>{reject(_oUnKnownError)})});return oPromise};this.I_Stop=function(options){let oPromise=new Promise(async function(resolve,reject){var newOptions={iWndIndex:m_iSelWnd};if(m_utilsInc.isObject(options)){m_utilsInc.extend(newOptions,options)}else{if(!m_utilsInc.isUndefined(options)){newOptions.iWndIndex=options}}var iIndex=this.findWndIndexByIndex(newOptions.iWndIndex);if(iIndex!=-1){var wndInfo=m_wndSet[iIndex];if(wndInfo.bRecord){m_pluginOBJECT.JS_StopSave(wndInfo.iIndex)}if(wndInfo.bSound){m_pluginOBJECT.JS_CloseSound()}if(wndInfo.bEZoom){m_pluginOBJECT.JS_DisableZoom(wndInfo.iIndex)}m_pluginOBJECT.JS_Stop(newOptions.iWndIndex).then(()=>{m_wndSet.splice(iIndex,1);if(newOptions.success){newOptions.success()}resolve()},()=>{if(newOptions.error){newOptions.error(_oUnKnownError)}reject(_oUnKnownError)})}else{resolve()}});return oPromise};this.I_StopAllPlay=function(){let oPromise=new Promise(async function(resolve,reject){m_pluginOBJECT.JS_StopRealPlayAll().then(()=>{m_wndSet.length=0;resolve()},()=>{reject(_oUnKnownError)})});return oPromise};this.I_OpenSound=function(iWndIndex){iWndIndex=m_utilsInc.isUndefined(iWndIndex)?m_iSelWnd:iWndIndex;let oPromise=new Promise((resolve,reject)=>{var iIndex=this.findWndIndexByIndex(iWndIndex);if(iIndex!=-1){var wndInfo=m_wndSet[iIndex];if(!wndInfo.bSound){m_pluginOBJECT.JS_OpenSound(iWndIndex).then(()=>{wndInfo.bSound=true;resolve()},()=>{reject(_oUnKnownError)})}else{reject(_oUnKnownError)}}else{reject(_oUnKnownError)}});return oPromise};this.I_CloseSound=function(iWndIndex){iWndIndex=m_utilsInc.isUndefined(iWndIndex)?m_iSelWnd:iWndIndex;let oPromise=new Promise((resolve,reject)=>{var iIndex=this.findWndIndexByIndex(iWndIndex);if(iIndex!=-1){var wndInfo=m_wndSet[iIndex];if(wndInfo.bSound){m_pluginOBJECT.JS_CloseSound().then(()=>{wndInfo.bSound=false;resolve()},()=>{reject(_oUnKnownError)})}else{reject(_oUnKnownError)}}else{reject(_oUnKnownError)}});return oPromise};this.I_SetVolume=function(iVolume,iWndIndex){let oPromise=new Promise((resolve,reject)=>{var iRet=-1;iVolume=parseInt(iVolume,10);if(isNaN(iVolume)){reject(_oParamsError);return}if(iVolume<0||iVolume>100){reject(_oParamsError);return}iWndIndex=m_utilsInc.isUndefined(iWndIndex)?m_iSelWnd:iWndIndex;var iIndex=this.findWndIndexByIndex(iWndIndex);if(iIndex!=-1){m_pluginOBJECT.JS_SetVolume(iWndIndex,iVolume).then(()=>{resolve()},()=>{reject(_oUnKnownError)})}else{reject(_oUnKnownError)}});return oPromise};this.I_CapturePic=function(szPicName,options){let oPromise=new Promise((resolve,reject)=>{var newOptions={iWndIndex:m_iSelWnd,bDateDir:true};if(m_utilsInc.isObject(options)){m_utilsInc.extend(newOptions,options)}else{if(!m_utilsInc.isUndefined(options)){newOptions.iWndIndex=options}}var iIndex=this.findWndIndexByIndex(newOptions.iWndIndex);if(iIndex!=-1){if(".jpg"===szPicName.slice(-4).toLowerCase()){szPicName=szPicName.slice(0,-4)}else if(".jpeg"===szPicName.slice(-5).toLowerCase()){szPicName=szPicName.slice(0,-5)}m_pluginOBJECT.JS_CapturePicture(newOptions.iWndIndex,szPicName,newOptions.bDateDir).then(()=>{resolve()},()=>{reject(_oUnKnownError)})}else{reject(_oUnKnownError)}});return oPromise};this.I_CapturePicData=function(options){let oPromise=new Promise((resolve,reject)=>{var newOptions={iWndIndex:m_iSelWnd,bDateDir:true};if(m_utilsInc.isObject(options)){m_utilsInc.extend(newOptions,options)}else{if(!m_utilsInc.isUndefined(options)){newOptions.iWndIndex=options}}var iIndex=this.findWndIndexByIndex(newOptions.iWndIndex);if(iIndex!=-1){m_pluginOBJECT.JS_GetCaptureData(newOptions.iWndIndex).then(function(data){resolve(data)},function(data){reject(_oUnKnownError)})}else{reject(_oUnKnownError)}});return oPromise};this.I_StartRecord=function(szFileName,options){let oPromise=new Promise((resolve,reject)=>{var newOptions={iWndIndex:m_iSelWnd,bDateDir:true};if(m_utilsInc.isObject(options)){m_utilsInc.extend(newOptions,options)}else{if(!m_utilsInc.isUndefined(options)){newOptions.iWndIndex=options}}var iIndex=this.findWndIndexByIndex(newOptions.iWndIndex);if(iIndex!=-1){var wndInfo=m_wndSet[iIndex];if(!wndInfo.bRecord){m_pluginOBJECT.JS_StartSave(newOptions.iWndIndex,szFileName).then(function(){wndInfo.bRecord=true;if(newOptions.success){newOptions.success()}resolve()},function(){if(newOptions.error){newOptions.error(_oUnKnownError)}reject(_oUnKnownError)})}else{if(newOptions.error){newOptions.error(_oUnKnownError)}reject(_oUnKnownError)}}else{if(newOptions.error){newOptions.error(_oUnKnownError)}reject(_oUnKnownError)}});return oPromise};this.I_StopRecord=function(options){let oPromise=new Promise((resolve,reject)=>{var newOptions={iWndIndex:m_iSelWnd};if(m_utilsInc.isObject(options)){m_utilsInc.extend(newOptions,options)}else{if(!m_utilsInc.isUndefined(options)){newOptions.iWndIndex=options}}var iIndex=this.findWndIndexByIndex(newOptions.iWndIndex);if(iIndex!=-1){var wndInfo=m_wndSet[iIndex];if(wndInfo.bRecord){m_pluginOBJECT.JS_StopSave(newOptions.iWndIndex).then(function(){wndInfo.bRecord=false;if(newOptions.success){newOptions.success()}resolve()},function(){if(newOptions.error){newOptions.error(_oUnKnownError)}reject(_oUnKnownError)})}else{if(newOptions.error){newOptions.error(_oUnKnownError)}reject(_oUnKnownError)}}else{if(newOptions.error){newOptions.error(_oUnKnownError)}reject(_oUnKnownError)}});return oPromise};this.I_StartVoiceTalk=function(szDeviceIdentify,iAudioChannel){let oPromise=new Promise((resolve,reject)=>{if(isNaN(parseInt(iAudioChannel,10))){reject(_oParamsError);return}var iIndex=this.findDeviceIndexByIP(szDeviceIdentify);if(iIndex!=-1){var oDeviceInfo=m_deviceSet[iIndex];if(!oDeviceInfo.bVoiceTalk){oDeviceInfo.oProtocolInc.startVoiceTalk(oDeviceInfo,iAudioChannel).then(()=>{m_deviceSet[iIndex].bVoiceTalk=true;resolve()},()=>{reject(_oUnKnownError)})}else{reject(_oUnKnownError)}}else{reject(_oUnKnownError)}});return oPromise};this.I_StopVoiceTalk=function(){let oPromise=new Promise((resolve,reject)=>{m_pluginOBJECT.JS_StopTalk().then(()=>{for(var i=0,iLen=m_deviceSet.length;i{reject(_oUnKnownError)})});return oPromise};this.I_StartAudioPlay=function(szDeviceIdentify,options){let oPromise=new Promise((resolve,reject)=>{var iIndex=this.findDeviceIndexByIP(szDeviceIdentify);if(iIndex!=-1){var oDeviceInfo=m_deviceSet[iIndex];options.szAuth=oDeviceInfo.szAuth;if(!oDeviceInfo.bVoiceTalk){oDeviceInfo.oProtocolInc.audioPlay(options).then(()=>{m_deviceSet[iIndex].bVoiceTalk=true;resolve()},()=>{reject(_oUnKnownError)})}else{reject(_oUnKnownError)}}else{reject(_oUnKnownError)}});return oPromise};this.I_StopAudioPlay=function(){let oPromise=new Promise((resolve,reject)=>{m_pluginOBJECT.JS_StopAudioPlay().then(()=>{for(var i=0,iLen=m_deviceSet.length;i{reject(_oUnKnownError)})});return oPromise};this.I_PTZControl=function(iPTZIndex,bStop,options){let oPromise=new Promise((resolve,reject)=>{var newOptions={iWndIndex:m_iSelWnd,iPTZIndex:iPTZIndex,iPTZSpeed:4};m_utilsInc.extend(newOptions,options);var iIndex=this.findWndIndexByIndex(newOptions.iWndIndex);if(iIndex!=-1){var wndInfo=m_wndSet[iIndex];iIndex=this.findDeviceIndexByIP(wndInfo.szIP);if(iIndex!=-1){var oDeviceInfo=m_deviceSet[iIndex];if(9==iPTZIndex){oDeviceInfo.oProtocolInc.ptzAutoControl(oDeviceInfo,bStop,wndInfo,newOptions).then(()=>{resolve()},oError=>{reject(oError)})}else{oDeviceInfo.oProtocolInc.ptzControl(oDeviceInfo,bStop,wndInfo,newOptions).then(()=>{resolve()},oError=>{reject(oError)})}}}});return oPromise};this.I_EnableEZoom=function(iWndIndex){let oPromise=new Promise((resolve,reject)=>{iWndIndex=m_utilsInc.isUndefined(iWndIndex)?m_iSelWnd:iWndIndex;var iIndex=this.findWndIndexByIndex(iWndIndex);if(iIndex!=-1){var wndInfo=m_wndSet[iIndex];if(!wndInfo.bEZoom){m_pluginOBJECT.JS_EnableZoom(iWndIndex).then(()=>{wndInfo.bEZoom=true;resolve()},()=>{reject(_oUnKnownError)})}}else{reject(_oUnKnownError)}});return oPromise};this.I_DisableEZoom=function(iWndIndex){let oPromise=new Promise((resolve,reject)=>{iWndIndex=m_utilsInc.isUndefined(iWndIndex)?m_iSelWnd:iWndIndex;var iIndex=this.findWndIndexByIndex(iWndIndex);if(iIndex!=-1){var wndInfo=m_wndSet[iIndex];if(wndInfo.bEZoom){m_pluginOBJECT.JS_DisableZoom(iWndIndex).then(()=>{wndInfo.bEZoom=false;resolve()},()=>{reject(_oUnKnownError)})}else{resolve()}}else{reject(_oUnKnownError)}});return oPromise};this.I_Enable3DZoom=function(iWndIndex){let oPromise=new Promise((resolve,reject)=>{iWndIndex=m_utilsInc.isUndefined(iWndIndex)?m_iSelWnd:iWndIndex;var iIndex=this.findWndIndexByIndex(iWndIndex);if(iIndex!=-1){var wndInfo=m_wndSet[iIndex];if(!wndInfo.b3DZoom){m_pluginOBJECT.JS_SetDrawCallback(iWndIndex,true,"Rect",false,function(oRect){_onZoomInfoCallback(oRect.points)});wndInfo.b3DZoom=true;resolve()}else{resolve()}}else{reject(_oUnKnownError)}});return oPromise};this.I_Disable3DZoom=function(iWndIndex){let oPromise=new Promise((resolve,reject)=>{iWndIndex=m_utilsInc.isUndefined(iWndIndex)?m_iSelWnd:iWndIndex;var iIndex=this.findWndIndexByIndex(iWndIndex);if(iIndex!=-1){var wndInfo=m_wndSet[iIndex];if(wndInfo.b3DZoom){m_pluginOBJECT.JS_SetDrawCallback(iWndIndex,false,"Rect",false,function(){});wndInfo.b3DZoom=false;resolve()}else{resolve()}}else{reject(_oUnKnownError)}});return oPromise};this.I_FullScreen=function(bFull){let oPromise=new Promise(function(resolve,reject){m_pluginOBJECT.JS_FullScreenDisplay(bFull).then(()=>{resolve()},()=>{reject(_oUnKnownError)})});return oPromise};this.I_SetPreset=function(iPresetID,options){let oPromise=new Promise(function(resolve,reject){var newOptions={iWndIndex:m_iSelWnd,iPresetID:iPresetID};m_utilsInc.extend(newOptions,options);var iIndex=this.findWndIndexByIndex(newOptions.iWndIndex);if(iIndex!=-1){var wndInfo=m_wndSet[iIndex];iIndex=this.findDeviceIndexByIP(wndInfo.szIP);if(iIndex!=-1){var oDeviceInfo=m_deviceSet[iIndex];oDeviceInfo.oProtocolInc.setPreset(oDeviceInfo,wndInfo,newOptions).then(()=>{resolve()},oError=>{reject(oError)})}else{reject(_oUnKnownError)}}else{reject(_oUnKnownError)}});return oPromise};this.I_GoPreset=function(iPresetID,options){let oPromise=new Promise(async function(resolve,reject){var newOptions={iWndIndex:m_iSelWnd,iPresetID:iPresetID};m_utilsInc.extend(newOptions,options);var iIndex=this.findWndIndexByIndex(newOptions.iWndIndex);if(iIndex!=-1){var wndInfo=m_wndSet[iIndex];iIndex=this.findDeviceIndexByIP(wndInfo.szIP);if(iIndex!=-1){var oDeviceInfo=m_deviceSet[iIndex];oDeviceInfo.oProtocolInc.goPreset(oDeviceInfo,wndInfo,newOptions).then(()=>{resolve()},oError=>{reject(oError)})}else{reject(_oUnKnownError)}}else{reject(_oUnKnownError)}});return oPromise};this.I_RecordSearch=function(szDeviceIdentify,iChannelID,szStartTime,szEndTime,options){let oPromise=new Promise(async function(resolve,reject){var iIndex=this.findDeviceIndexByIP(szDeviceIdentify);if(iIndex!=-1){var oDeviceInfo=m_deviceSet[iIndex];if(oDeviceInfo.szDeviceType===DEVICE_TYPE_IPCAMERA||oDeviceInfo.szDeviceType===DEVICE_TYPE_IPDOME||oDeviceInfo.szDeviceType===DEVICE_TYPE_IPZOOM){szStartTime=m_utilsInc.convertToUTCTime(szStartTime);szEndTime=m_utilsInc.convertToUTCTime(szEndTime)}var newOptions={iChannelID:iChannelID,szStartTime:szStartTime,szEndTime:szEndTime,iSearchPos:0,iStreamType:1};m_utilsInc.extend(newOptions,options);newOptions.success=null;oDeviceInfo.oProtocolInc.recordSearch(oDeviceInfo,newOptions).then(oData=>{if(oDeviceInfo.szDeviceType===DEVICE_TYPE_IPCAMERA||oDeviceInfo.szDeviceType===DEVICE_TYPE_IPDOME||oDeviceInfo.szDeviceType===DEVICE_TYPE_IPZOOM){var szRecordStartTime="";var szRecordEndTime="";for(var i=0,nLen=$(oData).find("searchMatchItem").length;i{reject(oError)})}else{reject(_oNoLoginError)}});return oPromise};this.I_StartPlayback=function(szDeviceIdentify,options){let oPromise=new Promise(function(resolve,reject){var iIndex=this.findDeviceIndexByIP(szDeviceIdentify),cgi="",urlProtocol="",iChannelID=1,iStream=0;var szCurTime=m_utilsInc.dateFormat(new Date,"yyyy-MM-dd");var newOptions={iWndIndex:m_iSelWnd,iStreamType:1,iChannelID:1,szStartTime:szCurTime+" 00:00:00",szEndTime:szCurTime+" 23:59:59"};m_utilsInc.extend(newOptions,options);if(iIndex!=-1){var oDeviceInfo=m_deviceSet[iIndex];cgi=oDeviceInfo.oProtocolInc.CGI.startPlayback;urlProtocol="rtsp://";iStream=newOptions.iStreamType;iChannelID=newOptions.iChannelID*100+iStream;m_utilsInc.extend(newOptions,{urlProtocol:urlProtocol,cgi:cgi,iChannelID:iChannelID});iIndex=this.findWndIndexByIndex(newOptions.iWndIndex);if(-1==iIndex){if(oDeviceInfo.szDeviceType===DEVICE_TYPE_IPCAMERA||oDeviceInfo.szDeviceType===DEVICE_TYPE_IPDOME||oDeviceInfo.szDeviceType===DEVICE_TYPE_IPZOOM){newOptions.szStartTime=m_utilsInc.convertToUTCTime(newOptions.szStartTime);newOptions.szEndTime=m_utilsInc.convertToUTCTime(newOptions.szEndTime)}newOptions.szStartTime=newOptions.szStartTime.replace(/[-:]/g,"").replace(" ","T")+"Z";newOptions.szEndTime=newOptions.szEndTime.replace(/[-:]/g,"").replace(" ","T")+"Z";oDeviceInfo.oProtocolInc.startPlayback(oDeviceInfo,newOptions).then(function(){if(options.success){options.success()}resolve()},function(){if(options.error){options.error(_oUnKnownError)}reject(_oUnKnownError)})}}else{if(options.error){options.error(_oNoLoginError)}reject(_oNoLoginError)}});return oPromise};this.I_ReversePlayback=function(szDeviceIdentify,options){let oPromise=new Promise(function(resolve,reject){var iIndex=this.findDeviceIndexByIP(szDeviceIdentify),iRet=-1,cgi="",urlProtocol="",iPort=-1,iChannelID=-1,iStream=0;var szCurTime=m_utilsInc.dateFormat(new Date,"yyyy-MM-dd");var newOptions={iWndIndex:m_iSelWnd,iStreamType:1,iChannelID:1,szStartTime:szCurTime+" 00:00:00",szEndTime:szCurTime+" 23:59:59"};m_utilsInc.extend(newOptions,options);if(iIndex!=-1){var oDeviceInfo=m_deviceSet[iIndex];var iProtocolType=parseInt(m_oLocalCfg.protocolType,10);cgi=oDeviceInfo.oProtocolInc.CGI.startPlayback;urlProtocol="rtsp://";iStream=newOptions.iStreamType;iChannelID=newOptions.iChannelID*100+iStream;m_utilsInc.extend(newOptions,{urlProtocol:urlProtocol,cgi:cgi,iChannelID:iChannelID});iIndex=this.findWndIndexByIndex(newOptions.iWndIndex);if(-1==iIndex){newOptions.szStartTime=newOptions.szStartTime.replace(/[-:]/g,"").replace(" ","T")+"Z";newOptions.szEndTime=newOptions.szEndTime.replace(/[-:]/g,"").replace(" ","T")+"Z";oDeviceInfo.oProtocolInc.reversePlayback(oDeviceInfo,newOptions).then(function(){if(options.success){options.success()}resolve()},function(){if(options.error){options.error(_oUnKnownError)}reject(_oUnKnownError)})}}});return oPromise};this.I_Frame=function(options){let oPromise=new Promise(async function(resolve,reject){var newOptions={iWndIndex:m_iSelWnd};if(m_utilsInc.isObject(options)){m_utilsInc.extend(newOptions,options)}else{if(!m_utilsInc.isUndefined(options)){newOptions.iWndIndex=options}}var iIndex=this.findWndIndexByIndex(newOptions.iWndIndex);if(iIndex!=-1){var wndInfo=m_wndSet[iIndex],iPlayStatus=wndInfo.iPlayStatus;if(iPlayStatus==PLAY_STATUS_PLAYBACK||iPlayStatus==PLAY_STATUS_FRAME){m_pluginOBJECT.JS_FrameForward(newOptions.iWndIndex).then(function(){wndInfo.iPlayStatus=PLAY_STATUS_FRAME;if(newOptions.success){newOptions.success()}resolve()},function(){if(newOptions.error){newOptions.error(_oUnKnownError)}reject(_oUnKnownError)})}else{if(newOptions.error){newOptions.error(_oUnKnownError)}reject(_oUnKnownError)}}else{if(newOptions.error){newOptions.error(_oUnKnownError)}reject(_oUnKnownError)}});return oPromise};this.I_Pause=function(options){let oPromise=new Promise(async function(resolve,reject){var newOptions={iWndIndex:m_iSelWnd};if(m_utilsInc.isObject(options)){m_utilsInc.extend(newOptions,options)}else{if(!m_utilsInc.isUndefined(options)){newOptions.iWndIndex=options}}var iIndex=this.findWndIndexByIndex(newOptions.iWndIndex);if(iIndex!=-1){var wndInfo=m_wndSet[iIndex],iPlayStatus=wndInfo.iPlayStatus,iNextStatus=-1;if(iPlayStatus==PLAY_STATUS_PLAYBACK){iNextStatus=PLAY_STATUS_PAUSE}else if(iPlayStatus==PLAY_STATUS_REVERSE_PLAYBACK){iNextStatus=PLAY_STATUS_REVERSE_PAUSE}else{if(newOptions.error){newOptions.error(_oUnKnownError)}reject(_oUnKnownError);return}m_pluginOBJECT.JS_Pause(newOptions.iWndIndex).then(function(){wndInfo.iPlayStatus=iNextStatus;if(newOptions.success){newOptions.success()}resolve()},function(){if(newOptions.error){newOptions.error(_oUnKnownError)}reject(_oUnKnownError)})}else{if(newOptions.error){newOptions.error(_oUnKnownError)}reject(_oUnKnownError)}});return oPromise};this.I_Resume=function(options){let oPromise=new Promise(async function(resolve,reject){var newOptions={iWndIndex:m_iSelWnd};if(m_utilsInc.isObject(options)){m_utilsInc.extend(newOptions,options)}else{if(!m_utilsInc.isUndefined(options)){newOptions.iWndIndex=options}}var iIndex=this.findWndIndexByIndex(newOptions.iWndIndex);if(iIndex!=-1){var wndInfo=m_wndSet[iIndex],iPlayStatus=wndInfo.iPlayStatus,iNextStatus=-1;if(iPlayStatus==PLAY_STATUS_PAUSE||iPlayStatus==PLAY_STATUS_FRAME){iNextStatus=PLAY_STATUS_PLAYBACK}else if(iPlayStatus==PLAY_STATUS_REVERSE_PAUSE){iNextStatus=PLAY_STATUS_REVERSE_PLAYBACK}else{if(newOptions.error){newOptions.error(_oUnKnownError)}reject(_oUnKnownError);return}m_pluginOBJECT.JS_Resume(newOptions.iWndIndex).then(function(){wndInfo.iPlayStatus=iNextStatus;if(newOptions.success){newOptions.success()}resolve()},function(){if(newOptions.error){newOptions.error(_oUnKnownError)}reject(_oUnKnownError)})}else{if(newOptions.error){newOptions.error(_oUnKnownError)}reject(_oUnKnownError)}});return oPromise};this.I_PlaySlow=function(options){let oPromise=new Promise(async function(resolve,reject){var newOptions={iWndIndex:m_iSelWnd};if(m_utilsInc.isObject(options)){m_utilsInc.extend(newOptions,options)}else{if(!m_utilsInc.isUndefined(options)){newOptions.iWndIndex=options}}var iIndex=this.findWndIndexByIndex(newOptions.iWndIndex);if(iIndex!=-1){var wndInfo=m_wndSet[iIndex];if(wndInfo.iPlayStatus==PLAY_STATUS_PLAYBACK){m_pluginOBJECT.JS_Slow(newOptions.iWndIndex).then(function(){if(newOptions.success){newOptions.success()}resolve()},function(){if(newOptions.error){newOptions.error(_oUnKnownError)}reject(_oUnKnownError)})}else{if(newOptions.error){newOptions.error(_oUnKnownError)}reject(_oUnKnownError)}}else{if(newOptions.error){newOptions.error(_oUnKnownError)}reject(_oUnKnownError)}});return oPromise};this.I_PlayFast=function(options){let oPromise=new Promise(async function(resolve,reject){var newOptions={iWndIndex:m_iSelWnd};if(m_utilsInc.isObject(options)){m_utilsInc.extend(newOptions,options)}else{if(!m_utilsInc.isUndefined(options)){newOptions.iWndIndex=options}}var iIndex=this.findWndIndexByIndex(newOptions.iWndIndex);if(iIndex!=-1){var wndInfo=m_wndSet[iIndex];if(wndInfo.iPlayStatus==PLAY_STATUS_PLAYBACK){m_pluginOBJECT.JS_Fast(newOptions.iWndIndex).then(function(){if(newOptions.success){newOptions.success()}resolve()},function(){if(newOptions.error){newOptions.error(_oUnKnownError)}reject(_oUnKnownError)})}else{if(newOptions.error){newOptions.error(_oUnKnownError)}reject(_oUnKnownError)}}else{if(newOptions.error){newOptions.error(_oUnKnownError)}reject(_oUnKnownError)}});return oPromise};this.I_GetOSDTime=function(options){let oPromise=new Promise(async function(resolve,reject){var newOptions={iWndIndex:m_iSelWnd};if(m_utilsInc.isObject(options)){m_utilsInc.extend(newOptions,options)}else{if(!m_utilsInc.isUndefined(options)){newOptions.iWndIndex=options}}var iIndex=this.findWndIndexByIndex(newOptions.iWndIndex);if(iIndex!=-1){m_pluginOBJECT.JS_GetOSDTime(newOptions.iWndIndex).then(function(iTime){if(newOptions.success){var szOSDTime=m_utilsInc.dateFormat(new Date(iTime*1e3),"yyyy-MM-dd hh:mm:ss");newOptions.success(szOSDTime)}resolve(szOSDTime)},function(){if(newOptions.error){newOptions.error(_oUnKnownError)}reject(_oUnKnownError)})}else{if(newOptions.error){newOptions.error(_oUnKnownError)}reject(_oUnKnownError)}});return oPromise};this.I_StartDownloadRecord=function(szDeviceIdentify,szPlaybackURI,szFileName,options){let oPromise=new Promise((resolve,reject)=>{var iIndex=this.findDeviceIndexByIP(szDeviceIdentify);if(iIndex!=-1){var oDeviceInfo=m_deviceSet[iIndex];var newOptions={szPlaybackURI:szPlaybackURI,szFileName:szFileName+".mp4",bDateDir:true};if(!m_utilsInc.isUndefined(options)){m_utilsInc.extend(newOptions,options)}oDeviceInfo.oProtocolInc.startDownloadRecord(oDeviceInfo,newOptions).then(iDownloadID=>{resolve(iDownloadID)},oError=>{reject(oError)})}else{reject(_oNoLoginError)}});return oPromise};this.I_StartDownloadRecordByTime=function(szDeviceIdentify,szPlaybackURI,szFileName,szStartTime,szEndTime,options){let oPromise=new Promise((resolve,reject)=>{var iIndex=this.findDeviceIndexByIP(szDeviceIdentify);if(iIndex!=-1){var oDeviceInfo=m_deviceSet[iIndex];szPlaybackURI=szPlaybackURI.split("?")[0]+"?starttime="+szStartTime.replace(" ","T")+"Z&endtime="+szEndTime.replace(" ","T")+"Z";var newOptions={szPlaybackURI:szPlaybackURI,szFileName:szFileName+".mp4",bDateDir:true};if(!m_utilsInc.isUndefined(options)){m_utilsInc.extend(newOptions,options)}oDeviceInfo.oProtocolInc.startDownloadRecord(oDeviceInfo,newOptions).then(iDownloadID=>{resolve(iDownloadID)},oError=>{reject(oError)})}});return oPromise};this.I_GetDownloadStatus=function(iDownloadID){let oPromise=new Promise((resolve,reject)=>{m_pluginOBJECT.JS_GetDownloadStatus(iDownloadID).then(data=>{resolve(data)},()=>{reject(_oUnKnownError)})});return oPromise};this.I_GetDownloadProgress=function(iDownloadID){let oPromise=new Promise((resolve,reject)=>{m_pluginOBJECT.JS_GetDownloadProgress(iDownloadID).then(data=>{resolve(data)},()=>{reject(_oUnKnownError)})});return oPromise};this.I_StopDownloadRecord=function(iDownloadID){let oPromise=new Promise((resolve,reject)=>{m_pluginOBJECT.JS_StopAsyncDownload(iDownloadID).then(()=>{resolve()},()=>{reject(_oUnKnownError)})});return oPromise};this.I_ExportDeviceConfig=function(szDeviceIdentify){let oPromise=new Promise((resolve,reject)=>{var iIndex=this.findDeviceIndexByIP(szDeviceIdentify);if(iIndex!=-1){var oDeviceInfo=m_deviceSet[iIndex];oDeviceInfo.oProtocolInc.exportDeviceConfig(oDeviceInfo).then(()=>{resolve()},()=>{reject(_oUnKnownError)})}else{reject(_oNoLoginError)}});return oPromise};this.I_ImportDeviceConfig=function(szDeviceIdentify,szFileName){let oPromise=new Promise((resolve,reject)=>{var iIndex=this.findDeviceIndexByIP(szDeviceIdentify);if(iIndex!=-1){var oDeviceInfo=m_deviceSet[iIndex];var newOptions={szFileName:szFileName};oDeviceInfo.oProtocolInc.importDeviceConfig(oDeviceInfo,newOptions).then(()=>{resolve()},()=>{reject(_oUnKnownError)})}else{reject(_oNoLoginError)}});return oPromise};this.I_RestoreDefault=function(szDeviceIdentify,szMode,options){let oPromise=new Promise((resolve,reject)=>{var newOptions={success:null,error:null};m_utilsInc.extend(newOptions,options);var iIndex=this.findDeviceIndexByIP(szDeviceIdentify);if(iIndex!=-1){var oDeviceInfo=m_deviceSet[iIndex];oDeviceInfo.oProtocolInc.restore(oDeviceInfo,szMode,newOptions).then(()=>{resolve()},oError=>{reject(oError)})}else{reject(_oNoLoginError)}});return oPromise};this.I_Restart=function(szDeviceIdentify,options){let oPromise=new Promise((resolve,reject)=>{var newOptions={success:null,error:null};m_utilsInc.extend(newOptions,options);var iIndex=this.findDeviceIndexByIP(szDeviceIdentify);if(iIndex!=-1){var oDeviceInfo=m_deviceSet[iIndex];oDeviceInfo.oProtocolInc.restart(oDeviceInfo,newOptions).then(()=>{resolve()},oError=>{reject(oError)})}else{reject(_oNoLoginError)}});return oPromise};this.I_Reconnect=function(szDeviceIdentify,options){let oPromise=new Promise((resolve,reject)=>{var newOptions={success:null,error:null};m_utilsInc.extend(newOptions,options);var iIndex=this.findDeviceIndexByIP(szDeviceIdentify);if(iIndex!=-1){var oDeviceInfo=m_deviceSet[iIndex];oDeviceInfo.oProtocolInc.login(oDeviceInfo.szIP,oDeviceInfo.iCGIPort,oDeviceInfo.szAuth,newOptions).then(()=>{resolve()},oError=>{reject(oError)})}else{reject(_oNoLoginError)}});return oPromise};this.I_StartUpgrade=function(szDeviceIdentify,szFileName){let oPromise=new Promise((resolve,reject)=>{var iIndex=this.findDeviceIndexByIP(szDeviceIdentify);if(iIndex!=-1){var oDeviceInfo=m_deviceSet[iIndex];oDeviceInfo.oProtocolInc.startUpgrade(oDeviceInfo,szFileName).then(()=>{resolve()},()=>{reject(_oUnKnownError)})}else{reject(_oNoLoginError)}});return oPromise};this.I_UpgradeStatus=function(szDeviceIdentify){let oPromise=new Promise((resolve,reject)=>{this.I_SendHTTPRequest(szDeviceIdentify,m_ISAPIProtocol.CGI.startUpgrade.status,{}).then(data=>{var bUpgrading=$(data).find("upgrading").eq(0).text()==="true";resolve(bUpgrading)},()=>{reject(_oUnKnownError)})});return oPromise};this.I_UpgradeProgress=function(szDeviceIdentify){let oPromise=new Promise((resolve,reject)=>{this.I_SendHTTPRequest(szDeviceIdentify,m_ISAPIProtocol.CGI.startUpgrade.status,{}).then(data=>{var iPercent=parseInt($(data).find("percent").eq(0).text(),10);resolve(iPercent)},()=>{reject(_oUnKnownError)})});return oPromise};this.I_StopUpgrade=function(){let oPromise=new Promise((resolve,reject)=>{m_pluginOBJECT.JS_StopUpgrade().then(()=>{resolve()},()=>{reject(_oUnKnownError)})});return oPromise};this.I_CheckPluginInstall=function(){return true};this.I_CheckPluginVersion=function(){let oPromise=new Promise((resolve,reject)=>{m_pluginOBJECT.JS_CheckUpdate(m_szVersion).then(bFlag=>{resolve(bFlag)},()=>{reject(_oUnKnownError)})});return oPromise};this.I_SendHTTPRequest=function(szDeviceIdentify,szURI,options){let oPromise=new Promise(async function(resolve,reject){var httpClient=new HttpPluginClient;var szURL="";var szAuth="";var iIndex=this.findDeviceIndexByIP(szDeviceIdentify);if(iIndex>=0){if("%"===szURI.substr(0,1)){szURI=szURI.substr(8)}var oDeviceInfo=m_deviceSet[iIndex];szURL=oDeviceInfo.szHttpProtocol+oDeviceInfo.szIP+":"+oDeviceInfo.iCGIPort+"/"+szURI;szAuth=oDeviceInfo.szAuth}var newOptions={type:"GET",url:szURL,auth:szAuth,success:null,error:null};m_utilsInc.extend(newOptions,options);httpClient.submitRequest(newOptions).then(function(oRes){if(200===oRes.httpStatusCode){let oData;if(0===oRes.httpResponse.indexOf("{m_pluginOBJECT.JS_ArrangeWindow(iWndType).then(()=>{resolve()},()=>{reject(_oUnKnownError)})});return oPromise};this.I_GetLastError=function(){let oPromise=new Promise((resolve,reject)=>{m_pluginOBJECT.JS_GetLastError().then(data=>{resolve(data)},()=>{reject(_oUnKnownError)})});return oPromise};this.I_GetWindowStatus=function(iWndIndex){if(m_utilsInc.isUndefined(iWndIndex)){var wndSet=[];m_utilsInc.extend(wndSet,m_wndSet);return wndSet}else{var i=this.findWndIndexByIndex(iWndIndex);if(i!=-1){var wndSet={};m_utilsInc.extend(wndSet,m_wndSet[i]);return wndSet}else{return null}}};this.I_GetIPInfoByMode=function(iMode,szAddress,iPort,szDeviceInfo){return};this.I_SetPlayModeType=function(iMode){let oPromise=new Promise((resolve,reject)=>{m_pluginOBJECT.JS_SetPlayMode(iMode).then(()=>{resolve()},()=>{reject(_oUnKnownError)})});return oPromise};this.I_SetSnapDrawMode=function(iWndIndex,iMode){let bType=false;if(iMode!==-1){bType=true}let oPromise=new Promise((resolve,reject)=>{m_pluginOBJECT.JS_SetDrawStatus(bType,iMode).then(()=>{resolve()},()=>{reject(_oUnKnownError)})});return oPromise};this.I_SetSnapPolygonInfo=function(iWndIndex,szInfo){let oPromise=new Promise((resolve,reject)=>{var aP=[];var oData=m_utilsInc.formatPolygonXmlToJson(szInfo);if(oData.aAddRect.length>0){aP.push(m_pluginOBJECT.JS_SetDrawShapeInfo("Rect",oData.aAddRect[0]))}if(oData.aAddPolygon.length>0){aP.push(m_pluginOBJECT.JS_SetDrawShapeInfo("Polygon",oData.aAddPolygon[0]))}if(oData.aRect.length>0){aP.push(m_pluginOBJECT.JS_SetRectInfo(oData.aRect))}if(oData.aPolygon.length>0){aP.push(m_pluginOBJECT.JS_SetPolygonInfo(oData.aPolygon))}Promise.all(aP).then(()=>{resolve()},()=>{reject(_oUnKnownError)})});return oPromise};this.I_GetSnapPolygonInfo=function(iWndIndex){let oPromise=new Promise((resolve,reject)=>{var aP=[];aP.push(m_pluginOBJECT.JS_GetPolygonInfo());aP.push(m_pluginOBJECT.JS_GetRectInfo());Promise.all(aP).then(aData=>{var szXmlData=m_utilsInc.formatPolygonJsonToXml(aData);resolve(szXmlData)},()=>{reject(_oUnKnownError)})});return oPromise};this.I_ClearSnapInfo=function(iWndIndex,aShapes){let oPromise=new Promise((resolve,reject)=>{if(aShapes){var aPolygon=[];var aRect=[];aShapes.forEach(item=>{if(1===item.polygonType){aPolygon.push(item.id)}else{aRect.push(item.id)}var aP=[];if(aPolygon.length){aP.push(m_pluginOBJECT.JS_ClearShapeByType("Polygon",aPolygon))}if(aRect.length){aP.push(m_pluginOBJECT.JS_ClearShapeByType("Rect",aRect))}Promise.all(aP).then(()=>{resolve()},()=>{reject(_oUnKnownError)})})}else{m_pluginOBJECT.JS_ClearShapeByType("AllWindows").then(()=>{resolve()},()=>{reject(_oUnKnownError)})}});return oPromise};this.I_DeviceCapturePic=function(szDeviceIdentify,iChannelID,szPicName,options){return false;var iIndex=this.findDeviceIndexByIP(szDeviceIdentify);var iRet=-1;if(iIndex!=-1){var oDeviceInfo=m_deviceSet[iIndex];var newOptions={bDateDir:true};m_utilsInc.extend(newOptions,options);if(!m_utilsInc.isUndefined(newOptions.iResolutionWidth)&&!m_utilsInc.isInt(newOptions.iResolutionWidth)){return iRet}if(!m_utilsInc.isUndefined(newOptions.iResolutionHeight)&&!m_utilsInc.isInt(newOptions.iResolutionHeight)){return iRet}iRet=oDeviceInfo.oProtocolInc.deviceCapturePic(oDeviceInfo,iChannelID,szPicName,newOptions)}return iRet};this.I_SetPackageType=function(iPackageType){let oPromise=new Promise((resolve,reject)=>{m_pluginOBJECT.JS_SetPackageType(iPackageType).then(()=>{resolve()},()=>{reject(_oUnKnownError)})});return oPromise};this.I_GetDevicePort=function(szDeviceIdentify){let oPromise=new Promise(async(resolve,reject)=>{var iIndex=this.findDeviceIndexByIP(szDeviceIdentify);var oPort=null;if(iIndex!=-1){var oDeviceInfo=m_deviceSet[iIndex];try{oPort=await _getPort(oDeviceInfo);resolve(oPort)}catch(err){reject({errorCode:ERROR_CODE_NETWORKERROR,errorMsg:""})}}else{reject(_oNoLoginError)}});return oPromise};this.I_GetTextOverlay=function(szUrl,szDeviceIdentify,options){let oPromise=new Promise((resolve,reject)=>{var iIndex=this.findDeviceIndexByIP(szDeviceIdentify);if(iIndex!=-1){var oDeviceInfo=m_deviceSet[iIndex];var wndInfo=m_wndSet[iIndex];var newOptions={type:"GET",success:options.success,error:options.error};this.I_SendHTTPRequest(oDeviceInfo.szIP+"_"+oDeviceInfo.iCGIPort,szUrl,newOptions).then(oData=>{resolve(oData)},oError=>{reject(oError)})}else{reject(_oNoLoginError)}});return oPromise};this.findDeviceIndexByIP=function(szDeviceIdentify){if(szDeviceIdentify.indexOf("_")>-1){for(var i=0,iLen=m_deviceSet.length;i0){var szAudioCompressionType=NS.$XML(oNodeList).eq(0).text(),iAudioType=0;if("G.711ulaw"==szAudioCompressionType){iAudioType=1}else if("G.711alaw"==szAudioCompressionType){iAudioType=2}else if("G.726"==szAudioCompressionType){iAudioType=3}else if("MP2L2"==szAudioCompressionType||"MPEL2"==szAudioCompressionType){iAudioType=4}else if("G.722.1"==szAudioCompressionType){iAudioType=0}else if("AAC"==szAudioCompressionType){iAudioType=5}else if("PCM"==szAudioCompressionType){iAudioType=6}else if("MP3"==szAudioCompressionType){iAudioType=7}oDeviceInfo.iAudioType=iAudioType}if(NS.$XML(oData).find("audioBitRate").eq(0).text()!==""){oDeviceInfo.m_iAudioBitRate=parseInt(NS.$XML(oData).find("audioBitRate").eq(0).text(),10)*1e3}else{oDeviceInfo.m_iAudioBitRate=0}if(NS.$XML(oData).find("audioSamplingRate").eq(0).text()!==""){oDeviceInfo.m_iAudioSamplingRate=parseInt(NS.$XML(oData).find("audioSamplingRate").eq(0).text(),10)*1e3}else{oDeviceInfo.m_iAudioSamplingRate=0}if(NS.$XML(oData).find("channelNum").eq(0).text()!==""){oDeviceInfo.m_iSoundChan=parseInt(NS.$XML(oData).find("channelNum").eq(0).text(),10)}else{oDeviceInfo.m_iSoundChan=1}if(NS.$XML(oData).find("deviceCastChannelNum").eq(0).text()!==""){oDeviceInfo.m_iDeviceAudioSoundChan=parseInt(NS.$XML(oData).find("deviceCastChannelNum").eq(0).text(),10)}else{oDeviceInfo.m_iDeviceAudioSoundChan=1}if(options.success){options.success(oData)}resolve(oData)},error:function(oError){if(options.error){options.error(oError)}reject(oError)}});m_webVideoCtrl.I_SendHTTPRequest(oDeviceInfo.szDeviceIdentify,m_ISAPIProtocol.CGI.getAudioInfo,newOptions)});return oPromise};ISAPIProtocol.prototype.getDeviceInfo=function(oDeviceInfo,options){let oPromise=new Promise(function(resolve,reject){var newOptions={};m_utilsInc.extend(newOptions,options);m_utilsInc.extend(newOptions,{success:function(xmlDoc){var oData;oDeviceInfo.szDeviceType=NS.$XML(xmlDoc).find("deviceType").eq(0).text();var arrXml=[];arrXml.push("");arrXml.push(""+m_utilsInc.escape(NS.$XML(xmlDoc).find("deviceName").eq(0).text())+"");arrXml.push(""+NS.$XML(xmlDoc).find("deviceID").eq(0).text()+"");arrXml.push(""+NS.$XML(xmlDoc).find("deviceType").eq(0).text()+"");arrXml.push(""+NS.$XML(xmlDoc).find("model").eq(0).text()+"");arrXml.push(""+NS.$XML(xmlDoc).find("serialNumber").eq(0).text()+"");arrXml.push(""+NS.$XML(xmlDoc).find("macAddress").eq(0).text()+"");arrXml.push(""+NS.$XML(xmlDoc).find("firmwareVersion").eq(0).text()+"");arrXml.push(""+NS.$XML(xmlDoc).find("firmwareReleasedDate").eq(0).text()+"");arrXml.push(""+NS.$XML(xmlDoc).find("encoderVersion").eq(0).text()+"");arrXml.push(""+NS.$XML(xmlDoc).find("encoderReleasedDate").eq(0).text()+"");arrXml.push("");oData=m_utilsInc.loadXML(arrXml.join(""));if(options.success){options.success(oData)}resolve(oData)},error:function(oError){if(options.error){options.error(oError)}reject(oError)}});m_webVideoCtrl.I_SendHTTPRequest(oDeviceInfo.szDeviceIdentify,m_ISAPIProtocol.CGI.getDeviceInfo,newOptions)});return oPromise};ISAPIProtocol.prototype.getDeviceMinusLocalTime=function(oDeviceInfo){let oPromise=new Promise(function(resolve,reject){var newOptions={success:xmlDoc=>{var szDeviceTime=$(xmlDoc).find("localTime").eq(0).text().substring(0,19);var arDTms=szDeviceTime.match(/(\d+)-(\d+)-(\d+)(\D+)(\d+):(\d+):(\d+)/);if(arDTms.length!==8){return}var dtDeviceDate=new Date(arDTms[1],arDTms[2]-1,arDTms[3],arDTms[5],arDTms[6],arDTms[7]);var szTimeZone=$(xmlDoc).find("timeZone").eq(0).text();var iDSTTime=0;var iDSTPos=szTimeZone.indexOf("DST");if(iDSTPos!=-1){var dtDSTStart=new Date(dtDeviceDate.getTime());dtDSTStart.setMinutes(0);dtDSTStart.setSeconds(0);var dtDSTStop=new Date(dtDeviceDate.getTime());dtDSTStop.setMinutes(0);dtDSTStop.setSeconds(0);var szDSTStartTime=szTimeZone.split(",")[1];var szDSTStopTime=szTimeZone.split(",")[2];var iDSTStartMonth=parseInt(szDSTStartTime.split(".")[0].replace("M",""),10);dtDSTStart.setMonth(iDSTStartMonth-1);var iDSTStartWeek=parseInt(szDSTStartTime.split(".")[1],10);var iDSTStartDay=parseInt(szDSTStartTime.split(".")[2].split("/")[0]);var iDSTStartTime=parseInt(szDSTStartTime.split(".")[2].split("/")[1].split(":")[0],10);dtDSTStart.setHours(iDSTStartTime);var iTime=0;var iDate=0;for(var i=1;i<=31;i++){dtDSTStart.setDate(i);if(dtDSTStart.getMonth()!==iDSTStartMonth-1){break}if(dtDSTStart.getDay()==iDSTStartDay){iTime++;iDate=i;if(iTime==iDSTStartWeek){break}}}dtDSTStart.setDate(iDate);dtDSTStart.setMonth(iDSTStartMonth-1);var iDSTStopMonth=parseInt(szDSTStopTime.split(".")[0].replace("M",""),10);dtDSTStop.setMonth(iDSTStopMonth-1);var iDSTStopWeek=parseInt(szDSTStopTime.split(".")[1],10);var iDSTStopDay=parseInt(szDSTStopTime.split(".")[2].split("/")[0]);var iDSTStopTime=parseInt(szDSTStopTime.split(".")[2].split("/")[1].split(":")[0],10);dtDSTStop.setHours(iDSTStopTime);iTime=0;iDate=0;for(var i=1;i<=31;i++){dtDSTStop.setDate(i);if(dtDSTStop.getMonth()!==iDSTStopMonth-1){break}if(dtDSTStop.getDay()==iDSTStopDay){iTime++;iDate=i;if(iTime==iDSTStopWeek){break}}}dtDSTStop.setDate(iDate);dtDSTStop.setMonth(iDSTStopMonth-1);if(dtDSTStart.getTime()=dtDSTStart.getTime()&&dtDeviceDate.getTime()<=dtDSTStop.getTime()){var szDSTTime=szTimeZone.substring(iDSTPos+3,iDSTPos+11);iDSTTime=parseInt(szDSTTime.split(":")[0],10)*60+parseInt(szDSTTime.split(":")[1],10)}}else{if(dtDeviceDate.getTime()>=dtDSTStart.getTime()||dtDeviceDate.getTime()<=dtDSTStop.getTime()){var szDSTTime=szTimeZone.substring(iDSTPos+3,iDSTPos+11);iDSTTime=parseInt(szDSTTime.split(":")[0],10)*60+parseInt(szDSTTime.split(":")[1],10)}}}var arDTZms=szTimeZone.match(/\D+([+-])(\d+):(\d+):(\d+)/);if(arDTZms.length==5){var dtNow=new Date;var iLocalOffsetMin=dtNow.getTimezoneOffset();var iDeviceOffsetMin=parseInt(arDTZms[2])*60+parseInt(arDTZms[3]);iDeviceOffsetMin=arDTZms[1]==="+"?iDeviceOffsetMin:-iDeviceOffsetMin;iDeviceMinusLocalTime=(iLocalOffsetMin-iDeviceOffsetMin+iDSTTime)*60*1e3}oDeviceInfo.iDeviceMinusLocalTime=iDeviceMinusLocalTime;resolve(iDeviceMinusLocalTime)},error:()=>{reject()}};m_webVideoCtrl.I_SendHTTPRequest(oDeviceInfo.szDeviceIdentify,m_ISAPIProtocol.CGI.time,newOptions)});return oPromise};ISAPIProtocol.prototype.getAnalogChannelInfo=function(oDeviceInfo,options){let oPromise=new Promise(function(resolve,reject){var newOptions={};m_utilsInc.extend(newOptions,options);m_utilsInc.extend(newOptions,{success:function(xmlData){var arrXml=[];arrXml.push("");var nodeList=NS.$XML(xmlData).find("VideoInputChannel",true);oDeviceInfo.iAnalogChannelNum=nodeList.length;for(var i=0,iLen=nodeList.length;i");arrXml.push(""+NS.$XML(node).find("id").eq(0).text()+"");arrXml.push(""+NS.$XML(node).find("inputPort").eq(0).text()+"");arrXml.push(""+m_utilsInc.escape(NS.$XML(node).find("name").eq(0).text())+"");arrXml.push(""+NS.$XML(node).find("videoFormat").eq(0).text()+"");arrXml.push("")}arrXml.push("");var xmlDoc=m_utilsInc.loadXML(arrXml.join(""));if(options.success){options.success(xmlDoc)}resolve(xmlDoc)},error:function(oError){if(options.error){options.error(oError)}reject(oError)}});m_webVideoCtrl.I_SendHTTPRequest(oDeviceInfo.szDeviceIdentify,m_ISAPIProtocol.CGI.getAnalogChannelInfo,newOptions)});return oPromise};ISAPIProtocol.prototype.getDigitalChannel=function(oDeviceInfo,options){let oPromise=new Promise(function(resolve,reject){var newOptions={};m_utilsInc.extend(newOptions,options);m_utilsInc.extend(newOptions,{success:function(xmlData){var arrXml=[];arrXml.push("");var nodeList=NS.$XML(xmlData).find("InputProxyChannel",true);for(var i=0,iLen=nodeList.length;i");arrXml.push(""+NS.$XML(node).find("id").eq(0).text()+"");arrXml.push(""+m_utilsInc.escape(NS.$XML(node).find("name").eq(0).text())+"");arrXml.push("")}arrXml.push("");var xmlDoc=m_utilsInc.loadXML(arrXml.join(""));if(options.success){options.success(xmlDoc)}resolve(xmlDoc)},error:function(oError){if(options.error){options.error(oError)}reject(oError)}});m_webVideoCtrl.I_SendHTTPRequest(oDeviceInfo.szDeviceIdentify,m_ISAPIProtocol.CGI.getDigitalChannel,newOptions)});return oPromise};ISAPIProtocol.prototype.getDigitalChannelInfo=function(oDeviceInfo,options){let oPromise=new Promise(async(resolve,reject)=>{var oDigitalChannelXML=null,oDigitalChannelName={};try{oDigitalChannelXML=await m_ISAPIProtocol.getDigitalChannel(oDeviceInfo,{})}catch(oError){reject(oError)}var nodeList=NS.$XML(oDigitalChannelXML).find("InputProxyChannel",true);for(var i=0,iLen=nodeList.length;i");var nodeList=NS.$XML(xmlData).find("InputProxyChannelStatus",true);for(var i=0,iLen=nodeList.length;i");arrXml.push(""+szId+"");arrXml.push("");arrXml.push(""+NS.$XML(node).find("proxyProtocol").eq(0).text()+"");arrXml.push(""+NS.$XML(node).find("addressingFormatType").eq(0).text()+"");arrXml.push(""+NS.$XML(node).find("ipAddress").eq(0).text()+"");arrXml.push(""+NS.$XML(node).find("managePortNo").eq(0).text()+"");arrXml.push(""+NS.$XML(node).find("srcInputPort").eq(0).text()+"");arrXml.push(""+m_utilsInc.escape(NS.$XML(node).find("userName").eq(0).text())+"");arrXml.push(""+NS.$XML(node).find("streamType").eq(0).text()+"");arrXml.push(""+NS.$XML(node).find("online").eq(0).text()+"");arrXml.push(""+m_utilsInc.escape(oDigitalChannelName[szId])+"");arrXml.push("");arrXml.push("")}arrXml.push("");var xmlDoc=m_utilsInc.loadXML(arrXml.join(""));if(options.success){options.success(xmlDoc)}resolve(xmlDoc)},error:function(oError){if(options.error){options.error(oError)}reject(oError)}});m_webVideoCtrl.I_SendHTTPRequest(oDeviceInfo.szDeviceIdentify,m_ISAPIProtocol.CGI.getDigitalChannelInfo,newOptions)});return oPromise};ISAPIProtocol.prototype.getZeroChannelInfo=function(oDeviceInfo,options){return m_webVideoCtrl.I_SendHTTPRequest(oDeviceInfo.szDeviceIdentify,this.CGI.getZeroChannelInfo,options)};ISAPIProtocol.prototype.getStreamChannels=function(oDeviceInfo,options){if(oDeviceInfo.iAnalogChannelNum!=0){var url=m_utilsInc.formatString(this.CGI.getStreamChannels.analog,oDeviceInfo.szHttpProtocol,oDeviceInfo.szIP,oDeviceInfo.iCGIPort)}else{var url=m_utilsInc.formatString(this.CGI.getStreamChannels.digital,oDeviceInfo.szHttpProtocol,oDeviceInfo.szIP,oDeviceInfo.iCGIPort)}let szURI;if(oDeviceInfo.iAnalogChannelNum!=0){szURI=this.CGI.getStreamChannels.analog}else{szURI=this.CGI.getStreamChannels.digital}return m_webVideoCtrl.I_SendHTTPRequest(oDeviceInfo.szDeviceIdentify,szURI,options)};ISAPIProtocol.prototype.getPPPoEStatus=function(oDeviceInfo,options){return m_webVideoCtrl.I_SendHTTPRequest(oDeviceInfo.szDeviceIdentify,this.CGI.getPPPoEStatus,options)};ISAPIProtocol.prototype.getUPnPPortStatus=function(oDeviceInfo,options){return m_webVideoCtrl.I_SendHTTPRequest(oDeviceInfo.szDeviceIdentify,this.CGI.getUPnPPortStatus,options)};ISAPIProtocol.prototype.getNetworkBond=function(oDeviceInfo,options){return m_webVideoCtrl.I_SendHTTPRequest(oDeviceInfo.szDeviceIdentify,this.CGI.getNetworkBond,options)};ISAPIProtocol.prototype.getNetworkInterface=function(oDeviceInfo,options){return m_webVideoCtrl.I_SendHTTPRequest(oDeviceInfo.szDeviceIdentify,this.CGI.getNetworkInterface,options)};ISAPIProtocol.prototype.getPortInfo=function(oDeviceInfo,options){return m_webVideoCtrl.I_SendHTTPRequest(oDeviceInfo.szDeviceIdentify,this.CGI.getPortInfo,options)};ISAPIProtocol.prototype.startRealPlay=function(oDeviceInfo,options){let oPromise=new Promise(async function(resolve,reject){var iChannelID=options.iChannelID*100+options.iStreamType,szUrl="";var szRtspIP=m_utilsInc.delPort(oDeviceInfo.szIP);var iRtspPort=oDeviceInfo.iRtspPort;if(options.iPort){iRtspPort=options.iPort}if(options.bZeroChannel){szUrl=m_utilsInc.formatString(oDeviceInfo.oProtocolInc.CGI.startRealPlay.zeroChannels,szRtspIP,iRtspPort,iChannelID)}else{szUrl=m_utilsInc.formatString(oDeviceInfo.oProtocolInc.CGI.startRealPlay.channels,szRtspIP,iRtspPort,iChannelID)}var addToWndSet=function(){var wndInfo=new wndInfoClass;wndInfo.iIndex=options.iWndIndex;wndInfo.szIP=oDeviceInfo.szIP;wndInfo.iCGIPort=oDeviceInfo.iCGIPort;wndInfo.szDeviceIdentify=oDeviceInfo.szDeviceIdentify;wndInfo.iChannelID=options.iChannelID;wndInfo.iPlayStatus=PLAY_STATUS_REALPLAY;m_wndSet.push(wndInfo)};await m_pluginOBJECT.JS_SetSecretKey(0,m_oLocalCfg.secretKey,1);m_pluginOBJECT.JS_Play(szUrl,{auth:oDeviceInfo.szAuth,userInfo:oDeviceInfo.szAuth},options.iWndIndex,"","",options.bFlag).then(()=>{addToWndSet();resolve()},()=>{reject()})});return oPromise};ISAPIProtocol.prototype.startPlay=function(oDeviceInfo,options){let oPromise=new Promise(async function(resolve,reject){var addToWndSet=function(){var wndInfo=new wndInfoClass;wndInfo.iIndex=options.iWndIndex;wndInfo.szIP=oDeviceInfo.szIP;wndInfo.szDeviceIdentify=oDeviceInfo.szDeviceIdentify;wndInfo.iPlayStatus=PLAY_STATUS_PLAYBACK;m_wndSet.push(wndInfo)};m_pluginOBJECT.JS_Play(options.szUrl,{auth:oDeviceInfo.szAuth,userInfo:oDeviceInfo.szAuth},options.iWndIndex,options.startTime,options.endTime,true).then(()=>{addToWndSet();resolve()},()=>{reject()})});return oPromise};ISAPIProtocol.prototype.startVoiceTalk=function(oDeviceInfo,iAudioChannel){var szOpenUrl=m_utilsInc.formatString(this.CGI.startVoiceTalk.open,oDeviceInfo.szHttpProtocol,oDeviceInfo.szIP,oDeviceInfo.iCGIPort,iAudioChannel),szCloseUrl=m_utilsInc.formatString(this.CGI.startVoiceTalk.close,oDeviceInfo.szHttpProtocol,oDeviceInfo.szIP,oDeviceInfo.iCGIPort,iAudioChannel),szAudioDataUrl=m_utilsInc.formatString(this.CGI.startVoiceTalk.audioData,oDeviceInfo.szHttpProtocol,oDeviceInfo.szIP,oDeviceInfo.iCGIPort,iAudioChannel);return m_pluginOBJECT.JS_StartTalk(szOpenUrl,szCloseUrl,szAudioDataUrl,oDeviceInfo.szAuth,oDeviceInfo.iAudioType,oDeviceInfo.m_iAudioBitRate,oDeviceInfo.m_iAudioSamplingRate,oDeviceInfo.m_iSoundChan,oDeviceInfo.m_iDeviceAudioSoundChan)};ISAPIProtocol.prototype.audioPlay=function(options){return m_pluginOBJECT.JS_AudioPlay(options.szUrl,options.szAuth,-1,-1,true,options.iAudioType)};ISAPIProtocol.prototype.ptzAutoControl=function(oDeviceInfo,bStop,oWndInfo,options){let oPromise=new Promise((resolve,reject)=>{var iChannelID=oWndInfo.iChannelID,szUrl="",szData="";options.iPTZSpeed=options.iPTZSpeed<7?options.iPTZSpeed*15:100;if(bStop){options.iPTZSpeed=0}if(iChannelID<=oDeviceInfo.iAnalogChannelNum){szUrl=m_utilsInc.formatString(m_ISAPIProtocol.CGI.ptzAutoControl.analog,oDeviceInfo.szHttpProtocol,oDeviceInfo.szIP,oDeviceInfo.iCGIPort,oWndInfo.iChannelID)}else{szUrl=m_utilsInc.formatString(m_ISAPIProtocol.CGI.ptzAutoControl.digital,oDeviceInfo.szHttpProtocol,oDeviceInfo.szIP,oDeviceInfo.iCGIPort,oWndInfo.iChannelID)}szData=""+""+""+options.iPTZSpeed+""+"";var newOptions={type:"PUT",url:szUrl,data:szData,success:null,error:null};var self=this;m_utilsInc.extend(newOptions,options);m_utilsInc.extend(newOptions,{success:function(){oWndInfo.bPTZAuto=!oWndInfo.bPTZAuto;if(options.success){options.success()}resolve()},error:function(oError){if(options.error){options.error(oError)}reject(oError)}});m_webVideoCtrl.I_SendHTTPRequest(oDeviceInfo.szDeviceIdentify,"",newOptions)});return oPromise};ISAPIProtocol.prototype.ptzControl=function(oDeviceInfo,bStop,oWndInfo,options){var iChannelID=oWndInfo.iChannelID,szUrl="";if(oWndInfo.bPTZAuto){this.ptzAutoControl(oDeviceInfo,true,oWndInfo,{iPTZSpeed:0})}if(bStop){options.iPTZSpeed=0}else{options.iPTZSpeed=options.iPTZSpeed<7?options.iPTZSpeed*15:100}var oDirection=[{},{pan:0,tilt:options.iPTZSpeed},{pan:0,tilt:-options.iPTZSpeed},{pan:-options.iPTZSpeed,tilt:0},{pan:options.iPTZSpeed,tilt:0},{pan:-options.iPTZSpeed,tilt:options.iPTZSpeed},{pan:-options.iPTZSpeed,tilt:-options.iPTZSpeed},{pan:options.iPTZSpeed,tilt:options.iPTZSpeed},{pan:options.iPTZSpeed,tilt:-options.iPTZSpeed},{},{speed:options.iPTZSpeed},{speed:-options.iPTZSpeed},{speed:options.iPTZSpeed},{speed:-options.iPTZSpeed},{speed:options.iPTZSpeed},{speed:-options.iPTZSpeed}];var szData="";var oCommond={};switch(options.iPTZIndex){case 1:case 2:case 3:case 4:case 5:case 6:case 7:case 8:oCommond=this.CGI.ptzControl;szData=""+""+""+oDirection[options.iPTZIndex].pan+""+""+oDirection[options.iPTZIndex].tilt+""+"";break;case 10:case 11:oCommond=this.CGI.ptzControl;szData=""+""+""+oDirection[options.iPTZIndex].speed+""+"";break;case 12:case 13:oCommond=this.CGI.ptzFocus;szData=""+""+""+oDirection[options.iPTZIndex].speed+""+"";break;case 14:case 15:oCommond=this.CGI.ptzIris;szData=""+""+""+oDirection[options.iPTZIndex].speed+""+"";break;default:return}if(iChannelID<=oDeviceInfo.iAnalogChannelNum){szUrl=m_utilsInc.formatString(oCommond.analog,oDeviceInfo.szHttpProtocol,oDeviceInfo.szIP,oDeviceInfo.iCGIPort,oWndInfo.iChannelID)}else{szUrl=m_utilsInc.formatString(oCommond.digital,oDeviceInfo.szHttpProtocol,oDeviceInfo.szIP,oDeviceInfo.iCGIPort,oWndInfo.iChannelID)}var newOptions={type:"PUT",url:szUrl,data:szData,success:null,error:null};m_utilsInc.extend(newOptions,options);return m_webVideoCtrl.I_SendHTTPRequest(oDeviceInfo.szDeviceIdentify,"",newOptions)};ISAPIProtocol.prototype.setPreset=function(oDeviceInfo,oWndInfo,options){var iChannelID=oWndInfo.iChannelID,szUrl="",szData="";if(iChannelID<=oDeviceInfo.iAnalogChannelNum){szUrl=m_utilsInc.formatString(this.CGI.setPreset.analog,oDeviceInfo.szHttpProtocol,oDeviceInfo.szIP,oDeviceInfo.iCGIPort,oWndInfo.iChannelID,options.iPresetID)}else{szUrl=m_utilsInc.formatString(this.CGI.setPreset.digital,oDeviceInfo.szHttpProtocol,oDeviceInfo.szIP,oDeviceInfo.iCGIPort,oWndInfo.iChannelID,options.iPresetID)}szData="";szData+="";szData+=""+options.iPresetID+"";if(oDeviceInfo.szDeviceType!=DEVICE_TYPE_IPDOME){szData+=""+"Preset"+options.iPresetID+""}szData+="";var newOptions={type:"PUT",url:szUrl,data:szData,success:null,error:null};m_utilsInc.extend(newOptions,options);return m_webVideoCtrl.I_SendHTTPRequest(oDeviceInfo.szDeviceIdentify,"",newOptions)};ISAPIProtocol.prototype.goPreset=function(oDeviceInfo,oWndInfo,options){var iChannelID=oWndInfo.iChannelID,szUrl="";if(iChannelID<=oDeviceInfo.iAnalogChannelNum){szUrl=m_utilsInc.formatString(this.CGI.goPreset.analog,oDeviceInfo.szHttpProtocol,oDeviceInfo.szIP,oDeviceInfo.iCGIPort,oWndInfo.iChannelID,options.iPresetID)}else{szUrl=m_utilsInc.formatString(this.CGI.goPreset.digital,oDeviceInfo.szHttpProtocol,oDeviceInfo.szIP,oDeviceInfo.iCGIPort,oWndInfo.iChannelID,options.iPresetID)}var newOptions={type:"PUT",url:szUrl,success:null,error:null};m_utilsInc.extend(newOptions,options);return m_webVideoCtrl.I_SendHTTPRequest(oDeviceInfo.szDeviceIdentify,"",newOptions)};ISAPIProtocol.prototype.recordSearch=function(oDeviceInfo,options){let oPromise=new Promise((resolve,reject)=>{var szUrl="",szData="",iChannelID=options.iChannelID,iStreamType=options.iStreamType,szStartTime=options.szStartTime.replace(" ","T")+"Z",szEndTime=options.szEndTime.replace(" ","T")+"Z";szUrl=m_utilsInc.formatString(m_ISAPIProtocol.CGI.recordSearch,oDeviceInfo.szHttpProtocol,oDeviceInfo.szIP,oDeviceInfo.iCGIPort);szData=""+""+""+new UUID+""+""+(iChannelID*100+iStreamType)+""+""+""+""+szStartTime+""+""+szEndTime+""+""+""+"50"+""+options.iSearchPos+""+""+"//metadata.ISAPI.org/VideoMotion"+""+"";var httpClient=new HttpPluginClient;var newOptions={type:"POST",url:szUrl,data:szData,success:null,error:null};m_utilsInc.extend(newOptions,options);m_utilsInc.extend(newOptions,{success:function(xmlDoc){var arrXml=[];arrXml.push("");arrXml.push(""+NS.$XML(xmlDoc).find("responseStatus").eq(0).text()+"");arrXml.push(""+NS.$XML(xmlDoc).find("responseStatusStrg").eq(0).text()+"");arrXml.push(""+NS.$XML(xmlDoc).find("numOfMatches").eq(0).text()+"");arrXml.push("");var nodeList=NS.$XML(xmlDoc).find("searchMatchItem",true);for(var i=0,iLen=nodeList.length;i");arrXml.push(""+NS.$XML(node).find("trackID").eq(0).text()+"");arrXml.push(""+NS.$XML(node).find("startTime").eq(0).text()+"");arrXml.push(""+NS.$XML(node).find("endTime").eq(0).text()+"");arrXml.push(""+m_utilsInc.escape(NS.$XML(node).find("playbackURI").eq(0).text())+"");arrXml.push(""+NS.$XML(node).find("metadataDescriptor").eq(0).text().split("/")[1]+"");arrXml.push("")}arrXml.push("");arrXml.push("");xmlDoc=m_utilsInc.loadXML(arrXml.join(""));if(options.success){options.success(xmlDoc)}resolve(xmlDoc)},error:function(oError){if(options.error){options.error(oError)}reject(oError)}});m_webVideoCtrl.I_SendHTTPRequest(oDeviceInfo.szDeviceIdentify,"",newOptions)});return oPromise};ISAPIProtocol.prototype.startPlayback=function(oDeviceInfo,options){let oPromise=new Promise(async function(resolve,reject){var iWndIndex=options.iWndIndex,szUrl="",szStartTime=options.szStartTime,szEndTime=options.szEndTime;var szRtspIP=m_utilsInc.delPort(oDeviceInfo.szIP);var iRtspPort=oDeviceInfo.iRtspPort;if(options.iPort){iRtspPort=options.iPort}szUrl=m_utilsInc.formatString(options.cgi,szRtspIP,iRtspPort,options.iChannelID);if(!m_utilsInc.isUndefined(options.oTransCodeParam)){var szTransStreamXml=_generateTransCodeXml(options.oTransCodeParam);if(""==szTransStreamXml){return-1}m_pluginOBJECT.JS_SetTrsPlayBackParam(iWndIndex,szTransStreamXml)}var addToWndSet=function(){var wndInfo=new wndInfoClass;wndInfo.iIndex=iWndIndex;wndInfo.szIP=oDeviceInfo.szIP;wndInfo.iCGIPort=oDeviceInfo.iCGIPort;wndInfo.szDeviceIdentify=oDeviceInfo.szDeviceIdentify;wndInfo.iChannelID=options.iChannelID;wndInfo.iPlayStatus=PLAY_STATUS_PLAYBACK;m_wndSet.push(wndInfo)};m_pluginOBJECT.JS_Play(szUrl,{auth:oDeviceInfo.szAuth,userInfo:oDeviceInfo.szAuth},iWndIndex,szStartTime,szEndTime,options.bFlag).then(()=>{addToWndSet();resolve()},()=>{reject()})});return oPromise};ISAPIProtocol.prototype.reversePlayback=function(oDeviceInfo,options){let oPromise=new Promise(function(resolve,reject){var iWndIndex=options.iWndIndex,szStartTime=options.szStartTime,szEndTime=options.szEndTime;var szRtspIP=m_utilsInc.delPort(oDeviceInfo.szIP);var iRtspPort=oDeviceInfo.iRtspPort;if(options.iPort){iRtspPort=options.iPort}var szUrl=m_utilsInc.formatString(options.cgi,szRtspIP,iRtspPort,options.iChannelID);m_pluginOBJECT.JS_ReversePlay(szUrl,{auth:oDeviceInfo.szAuth,userInfo:oDeviceInfo.szAuth},iWndIndex,szStartTime,szEndTime).then(()=>{var wndInfo=new wndInfoClass;wndInfo.iIndex=iWndIndex;wndInfo.szIP=oDeviceInfo.szIP;wndInfo.iCGIPort=oDeviceInfo.iCGIPort;wndInfo.szDeviceIdentify=oDeviceInfo.szDeviceIdentify;wndInfo.iChannelID=options.iChannelID;wndInfo.iPlayStatus=PLAY_STATUS_REVERSE_PLAYBACK;m_wndSet.push(wndInfo);resolve()},()=>{reject()})});return oPromise};ISAPIProtocol.prototype.startDownloadRecord=function(oDeviceInfo,options){var szUrl=m_utilsInc.formatString(this.CGI.startDownloadRecord,oDeviceInfo.szHttpProtocol,oDeviceInfo.szIP,oDeviceInfo.iCGIPort);var szDownXml=""+""+""+m_utilsInc.escape(options.szPlaybackURI)+""+"";return m_pluginOBJECT.JS_StartAsyncDownload(szUrl,oDeviceInfo.szAuth,options.szFileName,szDownXml,options.bDateDir)};ISAPIProtocol.prototype.exportDeviceConfig=function(oDeviceInfo){var szUrl=m_utilsInc.formatString(this.CGI.downloaddeviceConfig,oDeviceInfo.szHttpProtocol,oDeviceInfo.szIP,oDeviceInfo.iCGIPort);return m_pluginOBJECT.JS_DownloadFile(szUrl,oDeviceInfo.szAuth,"",0)};ISAPIProtocol.prototype.importDeviceConfig=function(oDeviceInfo,options){var szUrl=m_utilsInc.formatString(this.CGI.uploaddeviceConfig,oDeviceInfo.szHttpProtocol,oDeviceInfo.szIP,oDeviceInfo.iCGIPort);return m_pluginOBJECT.JS_StartAsynUpload(szUrl,"",oDeviceInfo.szAuth,options.szFileName,0)};ISAPIProtocol.prototype.restart=function(oDeviceInfo,options){var newOptions={type:"PUT",success:null,error:null};return m_webVideoCtrl.I_SendHTTPRequest(oDeviceInfo.szDeviceIdentify,this.CGI.restart,newOptions)};ISAPIProtocol.prototype.restore=function(oDeviceInfo,szMode,options){var szUrl=m_utilsInc.formatString(this.CGI.restore,oDeviceInfo.szHttpProtocol,oDeviceInfo.szIP,oDeviceInfo.iCGIPort,szMode);var newOptions={type:"PUT",url:szUrl,success:null,error:null};return m_webVideoCtrl.I_SendHTTPRequest(oDeviceInfo.szDeviceIdentify,"",newOptions)};ISAPIProtocol.prototype.startUpgrade=function(oDeviceInfo,szFileName){var szUpgradeURL=m_utilsInc.formatString(this.CGI.startUpgrade.upgrade,oDeviceInfo.szHttpProtocol,oDeviceInfo.szIP,oDeviceInfo.iCGIPort),szStatusURL=m_utilsInc.formatString(this.CGI.startUpgrade.status,oDeviceInfo.szHttpProtocol,oDeviceInfo.szIP,oDeviceInfo.iCGIPort);return m_pluginOBJECT.JS_StartUpgrade(szUpgradeURL,"",oDeviceInfo.szAuth,szFileName)};ISAPIProtocol.prototype.set3DZoom=function(oDeviceInfo,oWndInfo,oPoints,options){var iChannelID=oWndInfo.iChannelID,szUrl="";if(iChannelID<=oDeviceInfo.iAnalogChannelNum){szUrl=m_utilsInc.formatString(this.CGI.set3DZoom.analog,oDeviceInfo.szHttpProtocol,oDeviceInfo.szIP,oDeviceInfo.iCGIPort,oWndInfo.iChannelID)}else{szUrl=m_utilsInc.formatString(this.CGI.set3DZoom.digital,oDeviceInfo.szHttpProtocol,oDeviceInfo.szIP,oDeviceInfo.iCGIPort,oWndInfo.iChannelID)}if(oPoints[0][0]===0&&oPoints[0][1]===0&&!(oPoints[2][0]===0&&oPoints[2][1]===0)){oPoints[0][0]=oPoints[2][0];oPoints[0][1]=oPoints[2][1]}var szXml=""+""+parseInt(oPoints[0][0]*255,10)+""+""+(255-parseInt(oPoints[0][1]*255,10))+""+""+parseInt(oPoints[2][0]*255,10)+""+""+(255-parseInt(oPoints[2][1]*255,10))+"";var httpClient=new HttpPluginClient;var newOptions={type:"PUT",url:szUrl,data:szXml,success:null,error:null};m_utilsInc.extend(newOptions,options);return m_webVideoCtrl.I_SendHTTPRequest(oDeviceInfo.szDeviceIdentify,"",newOptions)};ISAPIProtocol.prototype.getSDKCapa=function(oDeviceInfo,options){return m_webVideoCtrl.I_SendHTTPRequest(oDeviceInfo.szDeviceIdentify,this.CGI.SDKCapabilities,options)};ISAPIProtocol.prototype.deviceCapturePic=function(oDeviceInfo,iChannelID,szPicName,options){var iChannelID=iChannelID*100+1;var iRet=-1;var szUrl=m_utilsInc.formatString(this.CGI.deviceCapture.channels,oDeviceInfo.szHttpProtocol,oDeviceInfo.szIP,oDeviceInfo.iCGIPort,iChannelID);var aQuery=[];if(m_utilsInc.isInt(options.iResolutionWidth)){aQuery.push("videoResolutionWidth="+options.iResolutionWidth)}if(m_utilsInc.isInt(options.iResolutionHeight)){aQuery.push("videoResolutionHeight="+options.iResolutionHeight)}if(aQuery.length>0){szUrl+="?"+aQuery.join("&")}var JDeviceCapturePic=function(szUrl,szFileName){var szFileFormat=".jpg";$("body").append('
  • ');$("#jsplugin_download_li").trigger("click");$("#jsplugin_download_a").remove();return 0};iRet=JDeviceCapturePic(szUrl,szPicName);return iRet};ISAPIProtocol.prototype.digestLogin=function(szIP,iProtocol,iPort,szUserName,szPassword,options){var szHttpProtocol="";if(iProtocol==2){szHttpProtocol="https://"}else{szHttpProtocol="http://"}var szUrl=m_utilsInc.formatString(this.CGI.login,szHttpProtocol,szIP,iPort);var newOptions={type:"GET",url:szUrl,auth:m_utilsInc.Base64.encode(":"+szUserName+":"+szPassword),success:null,error:null};var szDeviceIdentify=szIP+"_"+iPort;m_utilsInc.extend(newOptions,options);return m_webVideoCtrl.I_SendHTTPRequest(szDeviceIdentify,"",newOptions)};ISAPIProtocol.prototype.getSystemCapa=function(oDeviceInfo,options){return m_webVideoCtrl.I_SendHTTPRequest(oDeviceInfo.szDeviceIdentify,this.CGI.systemCapabilities,options)};(function(wvc){var XML=function(xd){this.elems=[];this.length=0;this.length=this.elems.push(xd)};XML.prototype.find=function(szNodeName,bRet){var oXmlNode=this.elems[this.length-1]?this.elems[this.length-1].getElementsByTagName(szNodeName):[];this.length=this.elems.push(oXmlNode);if(bRet){return oXmlNode}else{return this}};XML.prototype.eq=function(i,bRet){var iLen=this.elems[this.length-1].length,oXmlNode=null;if(iLen>0&&i0&&match[1].indexOf("trident")>-1){match[1]="msie"}var oBrowser={};oBrowser[match[1]]=true;oBrowser.version=match[2];return oBrowser};Utils.prototype.loadXML=function(szXml){if(null==szXml||""==szXml){return null}var oXmlDoc=null;if(window.DOMParser){var oParser=new DOMParser;oXmlDoc=oParser.parseFromString(szXml,"text/xml")}else{oXmlDoc=new ActiveXObject("Microsoft.XMLDOM");oXmlDoc.async=false;oXmlDoc.loadXML(szXml)}return oXmlDoc};Utils.prototype.toXMLStr=function(oXmlDoc){var szXmlDoc="";try{var oSerializer=new XMLSerializer;szXmlDoc=oSerializer.serializeToString(oXmlDoc)}catch(e){try{szXmlDoc=oXmlDoc.xml}catch(e){return""}}if(szXmlDoc.indexOf(""+szXmlDoc}return szXmlDoc};Utils.prototype.escape=function(szStr){if(szStr){return szStr.replace(/&/g,"&").replace(//g,">")}return szStr};Utils.prototype.dateFormat=function(oDate,fmt){var o={"M+":oDate.getMonth()+1,"d+":oDate.getDate(),"h+":oDate.getHours(),"m+":oDate.getMinutes(),"s+":oDate.getSeconds(),"q+":Math.floor((oDate.getMonth()+3)/3),S:oDate.getMilliseconds()};if(/(y+)/.test(fmt)){fmt=fmt.replace(RegExp.$1,(oDate.getFullYear()+"").substr(4-RegExp.$1.length))}for(var k in o){if(new RegExp("("+k+")").test(fmt)){fmt=fmt.replace(RegExp.$1,RegExp.$1.length==1?o[k]:("00"+o[k]).substr((""+o[k]).length))}}return fmt};Utils.prototype.Base64={_keyStr:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",encode:function(input){var output="";var chr1,chr2,chr3,enc1,enc2,enc3,enc4;var i=0;input=Utils.prototype.Base64._utf8_encode(input);while(i>2;enc2=(chr1&3)<<4|chr2>>4;enc3=(chr2&15)<<2|chr3>>6;enc4=chr3&63;if(isNaN(chr2)){enc3=enc4=64}else if(isNaN(chr3)){enc4=64}output=output+this._keyStr.charAt(enc1)+this._keyStr.charAt(enc2)+this._keyStr.charAt(enc3)+this._keyStr.charAt(enc4)}return output},decode:function(input){var output="";var chr1,chr2,chr3;var enc1,enc2,enc3,enc4;var i=0;input=input.replace(/[^A-Za-z0-9\+\/\=]/g,"");while(i>4;chr2=(enc2&15)<<4|enc3>>2;chr3=(enc3&3)<<6|enc4;output=output+String.fromCharCode(chr1);if(enc3!=64){output=output+String.fromCharCode(chr2)}if(enc4!=64){output=output+String.fromCharCode(chr3)}}output=Utils.prototype.Base64._utf8_decode(output);return output},_utf8_encode:function(string){string=string.replace(/\r\n/g,"\n");var utftext="";for(var n=0;n127&&c<2048){utftext+=String.fromCharCode(c>>6|192);utftext+=String.fromCharCode(c&63|128)}else{utftext+=String.fromCharCode(c>>12|224);utftext+=String.fromCharCode(c>>6&63|128);utftext+=String.fromCharCode(c&63|128)}}return utftext},_utf8_decode:function(utftext){var string="";var i=0;var c=c1=c2=0;while(i191&&c<224){c2=utftext.charCodeAt(i+1);string+=String.fromCharCode((c&31)<<6|c2&63);i+=2}else{c2=utftext.charCodeAt(i+1);c3=utftext.charCodeAt(i+2);string+=String.fromCharCode((c&15)<<12|(c2&63)<<6|c3&63);i+=3}}return string}};Utils.prototype.createEventScript=function(szFor,szEvent,szHtml){var oScript=document.createElement("script");oScript.htmlFor=szFor;oScript.event=szEvent;oScript.innerHTML=szHtml;document.body.parentNode.appendChild(oScript)};Utils.prototype.isInt=function(str){return/^\d+$/.test(str)};Utils.prototype.getDirName=function(){var szDirName="";if(m_options.szBasePath!==""){szDirName=m_options.szBasePath}else{var szDirNameRegex=/[^?#]*\//;var oScript=document.getElementById("videonode");if(oScript){szDirName=oScript.src.match(szDirNameRegex)[0]}else{var aScript=document.scripts;for(var i=0,iLen=aScript.length;i-1){oScript=aScript[i];break}}if(oScript){szDirName=oScript.src.match(szDirNameRegex)[0]}}}return szDirName};Utils.prototype.loadScript=function(url,callback){var oScript=document.createElement("script");oScript.type="text/javascript";oScript.onload=function(){callback()};oScript.src=url;document.getElementsByTagName("head")[0].appendChild(oScript)};Utils.prototype.cookie=function(key,value,options){if(arguments.length>1&&(value===null||typeof value!=="object")){options=this.extend({},options);if(value===null){options.expires=-1}if(typeof options.expires==="number"){var days=options.expires,t=options.expires=new Date;t.setDate(t.getDate()+days)}return document.cookie=[encodeURIComponent(key),"=",options.raw?String(value):encodeURIComponent(String(value)),options.expires?"; expires="+options.expires.toUTCString():"",options.path?"; path="+options.path:"; path=/",options.domain?"; domain="+options.domain:"",options.secure?"; secure":""].join("")}options=value||{};var result,decode=options.raw?function(s){return s}:decodeURIComponent;return(result=new RegExp("(?:^|; )"+encodeURIComponent(key)+"=([^;]*)").exec(document.cookie))?decode(result[1]):null};Utils.prototype.isUndefined=function(o){return typeof o==="undefined"};Utils.prototype.isObject=function(o){return Object.prototype.toString.call(o)==="[object Object]"};Utils.prototype.delPort=function(szIP){var iPos=szIP.indexOf(":");if(iPos>-1){return szIP.substring(0,iPos)}else{return szIP}};Utils.prototype.formatString=function(){var string=arguments[0];for(var i=1;i/g,">")}else{return""}};Utils.prototype.formatPolygonXmlToJson=function(szXml){var oXml=this.loadXML(szXml);var aPolygonList=[];var aPoints=[];var aRect=[];var aAddPolygon=[];var aAddRect=[];var oData;function colorTransfer(szColor){var iValue=parseInt(szColor,10);var szValue=iValue.toString(16);szValue="0"+szValue;return szValue.substring(szValue.length-2)}$(oXml).find("SnapPolygon").each(function(){var iEditType=parseInt($(this).find("EditType, editType").text(),10)||0;var isClose=$(this).find("isClosed").text()==="true";var iPolygonType=parseInt($(this).find("polygonType").text(),10);var fShowSquare=parseFloat($(this).find("showSquare").text())||0;var szTips=$(this).find("tips").text()||$(this).find("Tips").text();var iTipsPos=parseInt($(this).find("tipsPos").text(),10)||0;var bShowWH=$(this).find("showWH").text()==="true";var szColor="#"+colorTransfer($(this).find("r").text())+colorTransfer($(this).find("g").text())+colorTransfer($(this).find("b").text());var iMaxPoint=parseInt($(this).find("PointNumMax").text(),10)-1;var iMinPoint=parseInt($(this).find("MinClosed").text(),10)-1;var iId=parseInt($(this).find("id").text(),10);var iRedrawMode=parseInt($(this).find("RedrawMode").text(),10)||0;if($(this).find("pointList").find("point").length===0){if(iPolygonType===1){aAddPolygon.push({id:iId,tips:szTips,drawColor:szColor,translucent:.1,maxShapeSupport:1,maxPointSupport:iMaxPoint,minPointSupport:iMinPoint,showWH:bShowWH,redrawMode:iRedrawMode})}else if(iPolygonType===0){aAddRect.push({id:iId,tips:szTips,drawColor:szColor,translucent:.1,widthHeightRate:fShowSquare,maxShapeSupport:1,type:1,redrawMode:iRedrawMode,tipsPos:iTipsPos})}}else{aPoints=[];$(this).find("pointList").find("point").each(function(){aPoints.push([parseFloat($(this).find("x").text()),parseFloat($(this).find("y").text())])});oData={id:iId,editType:iEditType,points:aPoints,closed:isClose,tips:szTips,drawColor:szColor,maxPointSupport:iMaxPoint,minPointSupport:iMinPoint,translucent:.1,redrawMode:iRedrawMode};if(iPolygonType===1){oData["showWH"]=bShowWH;aPolygonList.push(oData)}else if(iPolygonType===0){oData["widthHeightRate"]=fShowSquare;oData["type"]=1;oData.tipsPos=iTipsPos;aRect.push(oData)}}});return{aRect:aRect,aPolygon:aPolygonList,aAddRect:aAddRect,aAddPolygon:aAddPolygon}};Utils.prototype.formatPolygonJsonToXml=function(aData){function colorRgb(szHex){var sColor=szHex.toLowerCase();var reg=/^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/;if(sColor&®.test(sColor)){var i;if(sColor.length===4){var sColorNew="#";for(i=1;i<4;i+=1){sColorNew+=sColor.slice(i,i+1).concat(sColor.slice(i,i+1))}sColor=sColorNew}var aColorChange=[];for(i=1;i<7;i+=2){aColorChange.push(parseInt("0x"+sColor.slice(i,i+2),16))}return aColorChange}return[0,0,0]}var aPolygon=aData[0];var aRect=aData[1];var szXml="";var that=this;$.each(aPolygon,function(index,oVal){var aColor=[0,0,0];if(oVal.drawColor){aColor=colorRgb(oVal.drawColor)}else{aColor=colorRgb("#FF0000")}szXml+="";szXml+=""+oVal.id+"";oVal.tips=that.encodeString(oVal.tips);if(!oVal.tips){szXml+=""}else{szXml+=""+oVal.tips+""}szXml+=""+oVal.closed.toString()+"";szXml+=""+aColor[0]+""+aColor[1]+""+aColor[2]+"";szXml+="1";szXml+=""+(oVal.pointNumMax?oVal.pointNumMax:10)+"";szXml+=""+(oVal.minClosed?oVal.minClosed:4)+"";szXml+="";$.each(oVal.points,function(i,aVal){szXml+=""+aVal[0]+""+aVal[1]+""});szXml+="";szXml+=""});$.each(aRect,function(index,oVal){var aColor=[0,0,0];if(oVal.drawColor){aColor=colorRgb(oVal.drawColor)}else{aColor=colorRgb("#FF0000")}szXml+="";szXml+=""+oVal.id+"";szXml+=""+aColor[0]+""+aColor[1]+""+aColor[2]+"";szXml+="0";oVal.tips=that.encodeString(oVal.tips);if(!oVal.tips){szXml+=""}else{szXml+=""+oVal.tips+""}if(typeof oVal.closed!=="undefined"&&oVal.closed!==null){szXml+=""+oVal.closed.toString()+""}else{szXml+="true"}szXml+="";var aRectTmp=[];if(oVal.points.length){var iMinX=2;var iMaxX=-1;var iMinY=2;var iMaxY=-1;$.each(oVal.points,function(){if(iMinX>this[0]){iMinX=this[0]}if(iMinY>this[1]){iMinY=this[1]}if(iMaxX"+aVal[0]+""+aVal[1]+""});szXml+="";szXml+=""});szXml+="";return szXml};Utils.prototype.convertToUTCTime=function(szLocalTime,szFormat){if(typeof szFormat=="undefined"){szFormat="yyyy-MM-dd hh:mm:ss"}szLocalTime=szLocalTime.replace("T"," ").replace("Z","");var _dLocalDate=new Date(Date.parse(szLocalTime.replace(/-/g,"/")));_dLocalDate=this.utcDateFormat(_dLocalDate,szFormat);_dLocalDate=_dLocalDate.replace(" ","T");return _dLocalDate};Utils.prototype.utcDateFormat=function(oDate,fmt){var o={"M+":oDate.getUTCMonth()+1,"d+":oDate.getUTCDate(),"h+":oDate.getUTCHours(),"m+":oDate.getUTCMinutes(),"s+":oDate.getUTCSeconds(),"q+":Math.floor((oDate.getUTCMonth()+3)/3),S:oDate.getUTCMilliseconds()};if(/(y+)/.test(fmt)){fmt=fmt.replace(RegExp.$1,(oDate.getUTCFullYear()+"").substr(4-RegExp.$1.length))}for(var k in o){if(new RegExp("("+k+")").test(fmt)){fmt=fmt.replace(RegExp.$1,RegExp.$1.length==1?o[k]:("00"+o[k]).substr((""+o[k]).length))}}return fmt};Utils.prototype.convertToLocalTime=function(szUTCTime,iDiffTime){szUTCTime=szUTCTime.replace("T"," ").replace("Z","");if(typeof iDiffTime=="undefined"){iDiffTime=0}var szFormat="yyyy-MM-dd hh:mm:ss";var _aDate=szUTCTime.split(" ")[0].split("-");var _iFullYear=parseInt(_aDate[0],10);var _iMonth=parseInt(_aDate[1],10)-1;var _iDay=parseInt(_aDate[2],10);var _aTimes=szUTCTime.split(" ")[1].split(":");var _iHour=parseInt(_aTimes[0],10);var _iMinute=parseInt(_aTimes[1],10);var _iSecond=parseInt(_aTimes[2],10);var _dLocalDate=new Date(Date.UTC(_iFullYear,_iMonth,_iDay,_iHour,_iMinute,_iSecond));_dLocalDate.setTime(_dLocalDate.getTime()+iDiffTime);return this.dateFormat(_dLocalDate,szFormat).replace(" ","T")+"Z"};function UUID(){this.id=this.createUUID()}UUID.prototype.valueOf=function(){return this.id};UUID.prototype.toString=function(){return this.id};UUID.prototype.createUUID=function(){var dg=new Date(1582,10,15,0,0,0,0);var dc=new Date;var t=dc.getTime()-dg.getTime();var h="-";var tl=UUID.getIntegerBits(t,0,31);var tm=UUID.getIntegerBits(t,32,47);var thv=UUID.getIntegerBits(t,48,59)+"1";var csar=UUID.getIntegerBits(UUID.rand(4095),0,7);var csl=UUID.getIntegerBits(UUID.rand(4095),0,7);var n=UUID.getIntegerBits(UUID.rand(8191),0,7)+UUID.getIntegerBits(UUID.rand(8191),8,15)+UUID.getIntegerBits(UUID.rand(8191),0,7)+UUID.getIntegerBits(UUID.rand(8191),8,15)+UUID.getIntegerBits(UUID.rand(8191),0,15);return tl+h+tm+h+thv+h+csar+csl+h+n};UUID.getIntegerBits=function(val,start,end){var base16=UUID.returnBase(val,16);var quadArray=new Array;var quadString="";var i=0;for(i=0;i=base)var output=this.returnBase(MSD,base)+convert[LSD];else var output=convert[MSD]+convert[LSD]}return output};UUID.rand=function(max){return Math.floor(Math.random()*max)};m_ISAPIProtocol=new ISAPIProtocol;m_utilsInc=new Utils;return this}();var NS=window.WebVideoCtrl=WebVideoCtrl;NS.version="3.3.0"})(this);if("object"===typeof exports&&typeof module!=="undefined"){}else if("function"===typeof define&&define.amd){define(function(){return WebVideoCtrl})}else if("function"===typeof define&&define.cmd){define(function(require,exports,module){module.exports=WebVideoCtrl})}else{} \ No newline at end of file +(function () { + if (window.WebVideoCtrl) { + return + } + var WebVideoCtrl = function () { + var m_szWidth = "100%"; + var m_szHeight = "100%"; + var m_options = { + szversion: "V3.3.0 build20230314", + szContainerID: "", + szColorProperty: "", + szBasePath: "", + iWndowType: 1, + bWndFull: true, + iPackageType: 2, + bDebugMode: true, + cbSelWnd: null, + cbDoubleClickWnd: null, + cbEvent: null, + cbInitPluginComplete: null + }; + var m_pluginOBJECT = null; + var m_iSelWnd = 0; + var m_bFullScreen = false; + var m_deviceSet = []; + var m_wndSet = []; + var m_ISAPIProtocol = null; + var m_utilsInc = null; + var m_webVideoCtrl = this; + var m_oLocalCfg = null; + var PROTOCOL_DEVICE_ISAPI = 1; + var ERROR_CODE_UNKNOWN = 1e3; + var ERROR_CODE_NETWORKERROR = 1001; + var ERROR_CODE_PARAMERROR = 1002; + var ERROR_CODE_LOGIN_NOLOGIN = 2e3; + var ERROR_CODE_LOGIN_REPEATLOGIN = 2001; + var ERROR_CODE_LOGIN_NOSUPPORT = 2002; + var ERROR_CODE_PLAY_PLUGININITFAIL = 3e3; + var ERROR_CODE_PLAY_NOREPEATPLAY = 3001; + var ERROR_CODE_PLAY_PLAYBACKABNORMAL = 3002; + var ERROR_CODE_PLAY_PLAYBACKSTOP = 3003; + var ERROR_CODE_PLAY_NOFREESPACE = 3004; + var ERROR_CODE_TALK_FAIL = 5e3; + var HTTP_STATUS_OK_200 = 200; + var HTTP_STATUS_ERROR_403 = 403; + var PLAY_STATUS_STOP = 0; + var PLAY_STATUS_REALPLAY = 1; + var PLAY_STATUS_PLAYBACK = 2; + var PLAY_STATUS_PAUSE = 3; + var PLAY_STATUS_FRAME = 4; + var PLAY_STATUS_REVERSE_PLAYBACK = 5; + var PLAY_STATUS_REVERSE_PAUSE = 6; + var PROTOCOLTYPE_PLAY_TCP = 0; + var PROTOCOLTYPE_PLAY_UDP = 1; + var DEVICE_TYPE_IPCAMERA = "IPCamera"; + var DEVICE_TYPE_IPDOME = "IPDome"; + var DEVICE_TYPE_IPZOOM = "IPZoom"; + var DEVICE_TYPE_GATEWAY = "Gateway"; + var m_szVersion = "" + "" + "1.0.0.40"; + "" + ""; + var _onGetSelectWndInfo = function (iWnd) { + m_iSelWnd = iWnd; + if (m_options.cbSelWnd) { + var arrXml = []; + arrXml.push(""); + arrXml.push("" + m_iSelWnd + ""); + arrXml.push(""); + m_options.cbSelWnd(m_utilsInc.loadXML(arrXml.join(""))) + } + }; + var _onMouseEvent = function (oData) { + if (m_options.cbDoubleClickWnd && 2 === oData.eventType) { + if (m_options.bWndFull) { + var iIndex = m_webVideoCtrl.findWndIndexByIndex(oData.wndIndex); + if (iIndex != -1) { + m_bFullScreen = !m_bFullScreen + } + } + m_options.cbDoubleClickWnd(oData.wndIndex, m_bFullScreen) + } + }; + var _onPluginEventHandler = function (iWndIndex, iErrorCode, oError) { + var iNewError = ERROR_CODE_UNKNOWN; + if (0 === iErrorCode) { + iNewError = ERROR_CODE_PLAY_PLAYBACKABNORMAL + } else if (2 === iErrorCode) { + iNewError = ERROR_CODE_PLAY_PLAYBACKSTOP + } else if (3 === iErrorCode) { + iNewError = ERROR_CODE_TALK_FAIL + } else if (21 === iErrorCode) { + iNewError = ERROR_CODE_PLAY_NOFREESPACE + } + if (ERROR_CODE_PLAY_PLAYBACKABNORMAL == iNewError || ERROR_CODE_PLAY_PLAYBACKSTOP == iNewError) { + m_webVideoCtrl.I_Stop(iWndIndex) + } else if (ERROR_CODE_PLAY_NOFREESPACE == iNewError) { + m_webVideoCtrl.I_StopRecord(iWndIndex) + } else if (ERROR_CODE_TALK_FAIL == iNewError) { + m_webVideoCtrl.I_StopVoiceTalk() + } else { } + if (m_options.cbEvent) { + m_options.cbEvent(iNewError, iWndIndex, oError) + } + }; + var _onKeyBoardEvent = function (iKeyCode) { + if (100 === parseInt(iKeyCode, 10)) { + m_bFullScreen = false; + if (m_options.cbDoubleClickWnd) { + m_options.cbDoubleClickWnd(m_iSelWnd, m_bFullScreen) + } + } + }; + var _onZoomInfoCallback = function (oPoints) { + var iIndex = m_webVideoCtrl.findWndIndexByIndex(m_iSelWnd); + if (iIndex != -1) { + var oWndInfo = m_wndSet[iIndex]; + iIndex = m_webVideoCtrl.findDeviceIndexByIP(oWndInfo.szDeviceIdentify); + if (iIndex != -1) { + var oDeviceInfo = m_deviceSet[iIndex]; + oDeviceInfo.oProtocolInc.set3DZoom(oDeviceInfo, oWndInfo, oPoints, {}) + } + } + }; + var _oNoLoginError = { + errorCode: ERROR_CODE_LOGIN_NOLOGIN, + errorMsg: "The device is not login." + }; + var _oUnKnownError = { + errorCode: ERROR_CODE_UNKNOWN, + errorMsg: "Unknown error." + }; + var _oParamsError = { + errorCode: ERROR_CODE_PARAMERROR, + errorMsg: "Params error." + }; + var _printString = function () { + if (m_options.bDebugMode) { + var printString = m_utilsInc.formatString(arguments); + console.log(printString) + } + }; + var _initLocalCfg = function () { + let oPromise = new Promise(function (resolve, reject) { + m_pluginOBJECT.JS_GetLocalConfig().then(oLocalCofing => { + m_oLocalCfg = oLocalCofing; + resolve() + } + , () => { + reject() + } + ) + } + ); + return oPromise + }; + var _initDeviceInfo = function (oDeviceInfo) { + let oPromise = new Promise(function (resolve, reject) { + let oP1 = oDeviceInfo.oProtocolInc.getDeviceInfo(oDeviceInfo, {}); + let oP2 = oDeviceInfo.oProtocolInc.getAnalogChannelInfo(oDeviceInfo, {}); + let oP3 = oDeviceInfo.oProtocolInc.getAudioInfo(oDeviceInfo, {}); + let oP4 = _getPort(oDeviceInfo); + let oP5 = oDeviceInfo.oProtocolInc.getDeviceMinusLocalTime(oDeviceInfo); + Promise.all([oP1, oP2, oP3, oP4, oP5]).then(() => { + resolve() + } + , () => { + resolve() + } + ) + } + ); + return oPromise + }; + var _initPlugin = function (szContainerID) { + let oPromise = new Promise(function (resolve, reject) { + if (!m_utilsInc.isUndefined(szContainerID)) { + m_options.szContainerID = szContainerID + } + if (document.getElementById(m_options.szContainerID) == null) { + reject(_oParamsError); + return + } + var oParam = { + szId: szContainerID, + iType: 1, + iWidth: m_szWidth, + iHeight: m_szHeight, + iMaxSplit: 4, + iCurrentSplit: m_options.iWndowType, + iServicePortStart: 34686, + iServicePortEnd: 34690, + oSessionInfo: { + sessionID: "11c12b3257f037bb50052db3ac5e342572c3d963622baca122755c482ce8823a", + user: "admin", + challenge: "275816f02ec2dca22b6a6ae87c7cb7e3", + iterations: 100, + random: "34765058" + }, + iPluginType: 2, + onConnectSuccess: () => { + var oElem = $("#" + szContainerID); + m_pluginOBJECT.JS_Resize(oElem.width(), oElem.height()); + if (2 !== m_pluginOBJECT.iPluginMode) { + reject({ + errorCode: ERROR_CODE_PLAY_PLUGININITFAIL, + errorMsg: "Plugin init failed." + }); + return + } + var iWndFull = m_options.bWndFull ? 1 : 0; + m_pluginOBJECT.JS_SetFullScreenCapability(iWndFull); + m_pluginOBJECT.JS_SetPackageType(m_options.iPackageType); + _initPluginEvent(); + _initLocalCfg().then(() => { + resolve() + } + ) + } + , + onConnectError: () => { + reject({ + errorCode: ERROR_CODE_PLAY_PLUGININITFAIL, + errorMsg: "Plugin init failed." + }) + } + , + szBasePath: m_utilsInc.getDirName() + }; + m_pluginOBJECT = new JSVideoPlugin(oParam) + // alert(m_pluginOBJECT) + } + ); + return oPromise + }; + var _initPluginEvent = function () { + m_pluginOBJECT.JS_SetWindowControlCallback({ + onGetSelectWndInfo: iwnd => { + _onGetSelectWndInfo(iwnd) + } + , + onPluginEventHandler: (iWndIndex, iEventType, iParam2) => { + _onPluginEventHandler(iWndIndex, iEventType, iParam2) + } + , + KeyBoardEvent: szXml => { + _onKeyBoardEvent(szXml) + } + , + onMouseEvent: function (oData) { + _onMouseEvent(oData) + } + }) + }; + var _getPort = function (oDeviceInfo) { + let oPromise = new Promise(async (resolve, reject) => { + var oPort = null; + let bPPPoE = await _getPPPoEEnable(oDeviceInfo); + if (bPPPoE) { + oPort = await _getInternalPort(oDeviceInfo) + } else { + var ipset = await _getDeviceIPAddr(oDeviceInfo); + var bSame = false; + for (var i = 0; i < ipset.length; i++) { + if (ipset[i].ipv4 == oDeviceInfo.szIP || ipset[i].ipv6 == oDeviceInfo.szIP) { + bSame = true; + break + } + } + if (bSame) { + oPort = await _getInternalPort(oDeviceInfo) + } else { + oPort = await _getExternalPort(oDeviceInfo); + if (-1 == oPort.iRtspPort && -1 == oPort.iDevicePort) { + oPort = await _getInternalPort(oDeviceInfo) + } + } + } + oDeviceInfo.iRtspPort = oPort.iRtspPort; + oDeviceInfo.iHttpPort = oPort.iHttpPort; + resolve(oPort) + } + ); + return oPromise + }; + var _getInternalPort = function (oDeviceInfo) { + let oPromise = new Promise((resolve, reject) => { + var iRtspPort = -1 + , iHttpPort = -1 + , iDevicePort = -1; + oDeviceInfo.oProtocolInc.getPortInfo(oDeviceInfo, { + async: false, + success: function (xmlDoc) { + var nodeList = NS.$XML(xmlDoc).find("AdminAccessProtocol", true); + iRtspPort = 554; + for (var i = 0, iLen = nodeList.length; i < iLen; i++) { + if (NS.$XML(nodeList).eq(i).find("protocol").eq(0).text().toLowerCase() === "rtsp") { + iRtspPort = parseInt(NS.$XML(nodeList).eq(i).find("portNo").eq(0).text(), 10) + } + if (NS.$XML(nodeList).eq(i).find("protocol").eq(0).text().toLowerCase() === "http") { + iHttpPort = parseInt(NS.$XML(nodeList).eq(i).find("portNo").eq(0).text(), 10) + } + if (NS.$XML(nodeList).eq(i).find("protocol").eq(0).text().toLowerCase() === "dev_manage") { + iDevicePort = parseInt(NS.$XML(nodeList).eq(i).find("portNo").eq(0).text(), 10) + } + } + resolve({ + iRtspPort: iRtspPort, + iHttpPort: iHttpPort, + iDevicePort: iDevicePort + }) + }, + error: function () { + resolve({ + iRtspPort: -1, + iHttpPort: -1, + iDevicePort: -1 + }) + } + }) + } + ); + return oPromise + }; + var _getExternalPort = function (oDeviceInfo) { + let oPromise = new Promise((resolve, reject) => { + var iRtspPort = -1 + , iHttpPort = -1 + , iDevicePort = -1; + oDeviceInfo.oProtocolInc.getUPnPPortStatus(oDeviceInfo, { + async: false, + success: function (xmlDoc) { + var nodeList = NS.$XML(xmlDoc).find("portStatus", true); + for (var i = 0, iLen = nodeList.length; i < iLen; i++) { + if (NS.$XML(nodeList).eq(i).find("internalPort").eq(0).text().toLowerCase() == "rtsp") { + iRtspPort = parseInt(NS.$XML(nodeList).eq(i).find("externalPort").eq(0).text(), 10) + } + if (NS.$XML(nodeList).eq(i).find("internalPort").eq(0).text().toLowerCase() == "http") { + iHttpPort = parseInt(NS.$XML(nodeList).eq(i).find("externalPort").eq(0).text(), 10) + } + if (NS.$XML(nodeList).eq(i).find("internalPort").eq(0).text().toLowerCase() == "admin") { + iDevicePort = parseInt(NS.$XML(nodeList).eq(i).find("externalPort").eq(0).text(), 10) + } + } + resolve({ + iRtspPort: iRtspPort, + iHttpPort: iHttpPort, + iDevicePort: iDevicePort + }) + }, + error: function () { + resolve({ + iRtspPort: -1, + iHttpPort: -1, + iDevicePort: -1 + }) + } + }) + } + ); + return oPromise + }; + var _getDeviceIPAddr = function (oDeviceInfo) { + let oPromise = new Promise(function (resolve) { + var arrIP = []; + oDeviceInfo.oProtocolInc.getNetworkBond(oDeviceInfo, { + async: false, + success: function (xmlDoc) { + if (NS.$XML(xmlDoc).find("enabled").eq(0).text() == "true") { + arrIP.push({ + ipv4: NS.$XML(xmlDoc).find("ipAddress").eq(0).text(), + ipv6: NS.$XML(xmlDoc).find("ipv6Address").eq(0).text() + }); + resolve(arrIP) + } else { + oDeviceInfo.oProtocolInc.getNetworkInterface(oDeviceInfo, { + async: false, + success: function (xmlDoc) { + var nodeList = NS.$XML(xmlDoc).find("NetworkInterface", true); + for (var i = 0, iLen = nodeList.length; i < iLen; i++) { + arrIP.push({ + ipv4: NS.$XML(xmlDoc).find("ipAddress").eq(0).text(), + ipv6: NS.$XML(xmlDoc).find("ipv6Address").eq(0).text() + }); + break + } + resolve(arrIP) + }, + error: function () { + resolve(arrIP) + } + }) + } + }, + error: function () { + oDeviceInfo.oProtocolInc.getNetworkInterface(oDeviceInfo, { + async: false, + success: function (xmlDoc) { + var nodeList = NS.$XML(xmlDoc).find("NetworkInterface", true); + for (var i = 0, iLen = nodeList.length; i < iLen; i++) { + arrIP.push({ + ipv4: NS.$XML(xmlDoc).find("ipAddress").eq(0).text(), + ipv6: NS.$XML(xmlDoc).find("ipv6Address").eq(0).text() + }); + break + } + resolve(arrIP) + }, + error: function () { + resolve(arrIP) + } + }) + } + }) + } + ); + return oPromise + }; + var _getPPPoEEnable = function (oDeviceInfo) { + let oPromise = new Promise(function (resolve) { + var bEnabled = false; + oDeviceInfo.oProtocolInc.getPPPoEStatus(oDeviceInfo, { + success: function (xmlDoc) { + if (NS.$XML(xmlDoc).find("ipAddress", true).length > 0) { + bEnabled = true + } else if (NS.$XML(xmlDoc).find("ipv6Address", true).length > 0) { + bEnabled = true + } else { + bEnabled = false + } + resolve(bEnabled) + }, + error: function () { + bEnabled = false; + resolve(bEnabled) + } + }) + } + ); + return oPromise + }; + var _generateTransCodeXml = function (oTransCodeParam) { + var oDefaultParam = { + TransFrameRate: "", + TransResolution: "", + TransBitrate: "" + }; + m_utilsInc.extend(oDefaultParam, oTransCodeParam); + if (oDefaultParam.TransFrameRate == "" || oDefaultParam.TransResolution == "" || oDefaultParam.TransBitrate == "") { + return "" + } + var ArraySet = []; + ArraySet.push(""); + ArraySet.push(""); + ArraySet.push("" + oDefaultParam.TransFrameRate + ""); + ArraySet.push("" + oDefaultParam.TransResolution + ""); + ArraySet.push("" + oDefaultParam.TransBitrate + ""); + ArraySet.push(""); + return ArraySet.join("") + }; + var _setDeviceInfo = function (cgiInstance, oDeviceInfo, szIP, iProtocol, iPort, szUserName, szPassword) { + oDeviceInfo.szIP = szIP; + if (iProtocol == 2) { + oDeviceInfo.szHttpProtocol = "https://"; + oDeviceInfo.iHttpsPort = iPort + } else { + oDeviceInfo.szHttpProtocol = "http://"; + oDeviceInfo.iHttpPort = iPort + } + oDeviceInfo.iCGIPort = iPort; + oDeviceInfo.szDeviceIdentify = szIP + "_" + iPort; + oDeviceInfo.iDeviceProtocol = PROTOCOL_DEVICE_ISAPI; + oDeviceInfo.oProtocolInc = cgiInstance; + oDeviceInfo.szAuth = m_utilsInc.Base64.encode(":" + szUserName + ":" + szPassword) + }; + var _doLogin = function (cgiInstance, oDeviceInfo, szIP, iProtocol, iPort, szUserName, szPassword, options) { + var newOptions = { + success: null, + error: null + }; + m_utilsInc.extend(newOptions, options); + m_utilsInc.extend(newOptions, { + success: function (xmlDoc) { + _setDeviceInfo(cgiInstance, oDeviceInfo, szIP, iProtocol, iPort, szUserName, szPassword); + m_deviceSet.push(oDeviceInfo); + _initDeviceInfo(oDeviceInfo).then(() => { + if (options.success) { + options.success(xmlDoc) + } + } + ) + }, + error: function (oError) { + if (options.error) { + options.error(oError) + } + } + }); + return cgiInstance.digestLogin(szIP, iProtocol, iPort, szUserName, szPassword, newOptions) + }; + this.I_SupportNoPlugin = function () { + return false + } + ; + this.I_Resize = function (iWidth, iHeight) { + return m_pluginOBJECT.JS_Resize(iWidth, iHeight) + } + ; + this.I_InitPlugin = function (options) { + m_utilsInc.extend(m_options, options); + var szDirName = m_utilsInc.getDirName(); + if (szDirName) { + if ("object" === typeof exports && typeof module !== "undefined") { } else if ("function" === typeof define && define.amd) { + require([szDirName + "/jsVideoPlugin-1.0.0.min.js"], function (o) { + window.JSVideoPlugin = o.JSVideoPlugin; + if (options.cbInitPluginComplete) { + options.cbInitPluginComplete() + } + }) + } else { + m_utilsInc.loadScript(szDirName + "/jsVideoPlugin-1.0.0.min.js", function () { + if (options.cbInitPluginComplete) { + options.cbInitPluginComplete() + } + }) + } + } + window.addEventListener("resize", function () { + if (m_pluginOBJECT !== null) { + var oElem = $("#" + m_options.szContainerID); + m_pluginOBJECT.JS_Resize(oElem.width(), oElem.height()) + } + }); + window.addEventListener("unload", function () { }) + } + ; + this.I_InsertOBJECTPlugin = function (szContainerID) { + // alert('_initPlugin') + return _initPlugin(szContainerID) + } + ; + this.I_WriteOBJECT_XHTML = function () { + return 0 + } + ; + this.I_DestroyPlugin = function () { + let oPromise = new Promise(function (resolve, reject) { + m_pluginOBJECT.JS_DestroyAll().then(() => { + resolve() + } + , () => { + reject(_oUnKnownError) + } + ) + } + ); + return oPromise + } + ; + this.I_OpenFileDlg = async function (iType) { + let oPromise = new Promise(function (resolve, reject) { + m_pluginOBJECT.JS_OpenFileBrowser(iType, "").then(szFilePath => { + resolve(szFilePath) + } + , () => { + reject(_oUnKnownError) + } + ) + } + ); + return oPromise + } + ; + this.I_GetLocalCfg = function () { + let oPromise = new Promise(function (resolve, reject) { + m_pluginOBJECT.JS_GetLocalConfig().then(oLocalCofing => { + resolve(oLocalCofing) + } + , () => { + reject(_oUnKnownError) + } + ) + } + ); + return oPromise + } + ; + this.I_SetLocalCfg = function (oLocalCofing) { + let oPromise = new Promise(function (resolve, reject) { + m_pluginOBJECT.JS_SetLocalConfig(oLocalCofing).then(() => { + resolve() + } + , () => { + reject(_oUnKnownError) + } + ) + } + ); + return oPromise + } + ; + this.I_Login = function (szIP, iProtocol, iPort, szUserName, szPassword, options) { + let oPromise = new Promise(function (resolve, reject) { + var szDeviceIdentify = szIP + "_" + iPort; + var iIndex = this.findDeviceIndexByIP(szDeviceIdentify); + if (iIndex != -1) { + if (options.error) { + options.error({ + errorCode: ERROR_CODE_LOGIN_REPEATLOGIN, + errorMsg: "The device is already login." + }) + } + reject({ + errorCode: ERROR_CODE_LOGIN_REPEATLOGIN, + errorMsg: "The device is already login." + }); + return + } + var cgiInstance = m_ISAPIProtocol; + var oDeviceInfo = new deviceInfoClass; + _doLogin(cgiInstance, oDeviceInfo, szIP, iProtocol, iPort, szUserName, szPassword, options).then(() => { + resolve() + } + , oError => { + reject(oError) + } + ) + } + ); + return oPromise + } + ; + this.I_Logout = function (szDeviceIdentify) { + let oPromise = new Promise(function (resolve, reject) { + var iIndex = this.findDeviceIndexByIP(szDeviceIdentify); + if (iIndex != -1) { + m_deviceSet.splice(iIndex, 1); + resolve() + } + } + ); + return oPromise + } + ; + this.I_GetAudioInfo = function (szDeviceIdentify, options) { + let oPromise = new Promise(function (resolve, reject) { + var iIndex = this.findDeviceIndexByIP(szDeviceIdentify); + if (iIndex != -1) { + var oDeviceInfo = m_deviceSet[iIndex]; + oDeviceInfo.oProtocolInc.getAudioInfo(oDeviceInfo, options).then(oData => { + resolve(oData) + } + , oError => { + reject(oError) + } + ) + } else { + reject(_oNoLoginError) + } + } + ); + return oPromise + } + ; + this.I_GetDeviceInfo = function (szDeviceIdentify, options) { + let oPromise = new Promise(function (resolve, reject) { + var iIndex = this.findDeviceIndexByIP(szDeviceIdentify); + if (iIndex != -1) { + var oDeviceInfo = m_deviceSet[iIndex]; + oDeviceInfo.oProtocolInc.getDeviceInfo(oDeviceInfo, options).then(oData => { + resolve(oData) + } + , oError => { + reject(oError) + } + ) + } else { + reject(_oNoLoginError) + } + } + ); + return oPromise + } + ; + this.I_GetAnalogChannelInfo = function (szDeviceIdentify, options) { + let oPromise = new Promise(function (resolve, reject) { + var iIndex = this.findDeviceIndexByIP(szDeviceIdentify); + if (iIndex != -1) { + var oDeviceInfo = m_deviceSet[iIndex]; + oDeviceInfo.oProtocolInc.getAnalogChannelInfo(oDeviceInfo, options).then(oData => { + resolve(oData) + } + , oError => { + reject(oError) + } + ) + } else { + reject(_oNoLoginError) + } + } + ); + return oPromise + } + ; + this.I_GetDigitalChannelInfo = function (szDeviceIdentify, options) { + let oPromise = new Promise(function (resolve, reject) { + var iIndex = this.findDeviceIndexByIP(szDeviceIdentify); + if (iIndex != -1) { + var oDeviceInfo = m_deviceSet[iIndex]; + oDeviceInfo.oProtocolInc.getDigitalChannelInfo(oDeviceInfo, options).then(oData => { + resolve(oData) + } + , oError => { + reject(oError) + } + ) + } else { + reject(_oNoLoginError) + } + } + ); + return oPromise + } + ; + this.I_GetZeroChannelInfo = function (szDeviceIdentify, options) { + let oPromise = new Promise(function (resolve, reject) { + var iIndex = this.findDeviceIndexByIP(szDeviceIdentify); + if (iIndex != -1) { + var oDeviceInfo = m_deviceSet[iIndex]; + oDeviceInfo.oProtocolInc.getZeroChannelInfo(oDeviceInfo, options).then(oData => { + resolve(oData) + } + , oError => { + reject(oError) + } + ) + } else { + reject(_oNoLoginError) + } + } + ); + return oPromise + } + ; + this.I_StartRealPlay = function (szDeviceIdentify, options) { + let oPromise = new Promise(function (resolve, reject) { + var iIndex = this.findDeviceIndexByIP(szDeviceIdentify); + var newOptions = { + iWndIndex: m_iSelWnd, + iStreamType: 1, + iChannelID: 1, + bZeroChannel: false + }; + m_utilsInc.extend(newOptions, options); + if (iIndex != -1) { + var oDeviceInfo = m_deviceSet[iIndex]; + var iWndIndex = this.findWndIndexByIndex(newOptions.iWndIndex); + if (-1 == iWndIndex) { + oDeviceInfo.oProtocolInc.startRealPlay(oDeviceInfo, newOptions).then(function () { + if (options.success) { + options.success() + } + resolve() + }, function () { + if (options.error) { + options.error(_oUnKnownError) + } + reject(_oUnKnownError) + }) + } else { + reject({ + errorCode: ERROR_CODE_PLAY_NOREPEATPLAY, + errorMsg: "The window is already playing." + }) + } + } else { + if (options.error) { + options.error(_oNoLoginError) + } + reject(_oNoLoginError) + } + } + ); + return oPromise + } + ; + this.I_StartPlay = function (szDeviceIdentify, options) { + let oPromise = new Promise(async function (resolve, reject) { + var iIndex = this.findDeviceIndexByIP(szDeviceIdentify); + var newOptions = { + iWndIndex: m_iSelWnd + }; + m_utilsInc.extend(newOptions, options); + var oDeviceInfo = m_deviceSet[iIndex]; + iIndex = this.findWndIndexByIndex(newOptions.iWndIndex); + if (-1 == iIndex) { + oDeviceInfo.oProtocolInc.startPlay(oDeviceInfo, newOptions).then(function () { + if (options.success) { + options.success() + } + resolve() + }, function () { + if (options.error) { + options.error(_oUnKnownError) + } + reject(_oUnKnownError) + }) + } else { + reject({ + errorCode: ERROR_CODE_PLAY_NOREPEATPLAY, + errorMsg: "The window is already playing." + }) + } + } + ); + return oPromise + } + ; + this.I_SetSecretKey = function (szSecretKey) { + let oPromise = new Promise((resolve, reject) => { + m_pluginOBJECT.JS_SetSecretKey(0, szSecretKey, 1).then(() => { + resolve() + } + , () => { + reject(_oUnKnownError) + } + ) + } + ); + return oPromise + } + ; + this.I_GetEncryptString = function (szSecretKey) { + let oPromise = new Promise((resolve, reject) => { + m_pluginOBJECT.JS_GetEncryptString(3, szSecretKey).then(szEncode => { + resolve(szEncode) + } + , () => { + reject(_oUnKnownError) + } + ) + } + ); + return oPromise + } + ; + this.I_Stop = function (options) { + let oPromise = new Promise(async function (resolve, reject) { + var newOptions = { + iWndIndex: m_iSelWnd + }; + if (m_utilsInc.isObject(options)) { + m_utilsInc.extend(newOptions, options) + } else { + if (!m_utilsInc.isUndefined(options)) { + newOptions.iWndIndex = options + } + } + var iIndex = this.findWndIndexByIndex(newOptions.iWndIndex); + if (iIndex != -1) { + var wndInfo = m_wndSet[iIndex]; + if (wndInfo.bRecord) { + m_pluginOBJECT.JS_StopSave(wndInfo.iIndex) + } + if (wndInfo.bSound) { + m_pluginOBJECT.JS_CloseSound() + } + if (wndInfo.bEZoom) { + m_pluginOBJECT.JS_DisableZoom(wndInfo.iIndex) + } + m_pluginOBJECT.JS_Stop(newOptions.iWndIndex).then(() => { + m_wndSet.splice(iIndex, 1); + if (newOptions.success) { + newOptions.success() + } + resolve() + } + , () => { + if (newOptions.error) { + newOptions.error(_oUnKnownError) + } + reject(_oUnKnownError) + } + ) + } else { + resolve() + } + } + ); + return oPromise + } + ; + this.I_StopAllPlay = function () { + let oPromise = new Promise(async function (resolve, reject) { + m_pluginOBJECT.JS_StopRealPlayAll().then(() => { + m_wndSet.length = 0; + resolve() + } + , () => { + reject(_oUnKnownError) + } + ) + } + ); + return oPromise + } + ; + this.I_OpenSound = function (iWndIndex) { + iWndIndex = m_utilsInc.isUndefined(iWndIndex) ? m_iSelWnd : iWndIndex; + let oPromise = new Promise((resolve, reject) => { + var iIndex = this.findWndIndexByIndex(iWndIndex); + if (iIndex != -1) { + var wndInfo = m_wndSet[iIndex]; + if (!wndInfo.bSound) { + m_pluginOBJECT.JS_OpenSound(iWndIndex).then(() => { + wndInfo.bSound = true; + resolve() + } + , () => { + reject(_oUnKnownError) + } + ) + } else { + reject(_oUnKnownError) + } + } else { + reject(_oUnKnownError) + } + } + ); + return oPromise + } + ; + this.I_CloseSound = function (iWndIndex) { + iWndIndex = m_utilsInc.isUndefined(iWndIndex) ? m_iSelWnd : iWndIndex; + let oPromise = new Promise((resolve, reject) => { + var iIndex = this.findWndIndexByIndex(iWndIndex); + if (iIndex != -1) { + var wndInfo = m_wndSet[iIndex]; + if (wndInfo.bSound) { + m_pluginOBJECT.JS_CloseSound().then(() => { + wndInfo.bSound = false; + resolve() + } + , () => { + reject(_oUnKnownError) + } + ) + } else { + reject(_oUnKnownError) + } + } else { + reject(_oUnKnownError) + } + } + ); + return oPromise + } + ; + this.I_SetVolume = function (iVolume, iWndIndex) { + let oPromise = new Promise((resolve, reject) => { + var iRet = -1; + iVolume = parseInt(iVolume, 10); + if (isNaN(iVolume)) { + reject(_oParamsError); + return + } + if (iVolume < 0 || iVolume > 100) { + reject(_oParamsError); + return + } + iWndIndex = m_utilsInc.isUndefined(iWndIndex) ? m_iSelWnd : iWndIndex; + var iIndex = this.findWndIndexByIndex(iWndIndex); + if (iIndex != -1) { + m_pluginOBJECT.JS_SetVolume(iWndIndex, iVolume).then(() => { + resolve() + } + , () => { + reject(_oUnKnownError) + } + ) + } else { + reject(_oUnKnownError) + } + } + ); + return oPromise + } + ; + this.I_CapturePic = function (szPicName, options) { + let oPromise = new Promise((resolve, reject) => { + var newOptions = { + iWndIndex: m_iSelWnd, + bDateDir: true + }; + if (m_utilsInc.isObject(options)) { + m_utilsInc.extend(newOptions, options) + } else { + if (!m_utilsInc.isUndefined(options)) { + newOptions.iWndIndex = options + } + } + var iIndex = this.findWndIndexByIndex(newOptions.iWndIndex); + if (iIndex != -1) { + if (".jpg" === szPicName.slice(-4).toLowerCase()) { + szPicName = szPicName.slice(0, -4) + } else if (".jpeg" === szPicName.slice(-5).toLowerCase()) { + szPicName = szPicName.slice(0, -5) + } + m_pluginOBJECT.JS_CapturePicture(newOptions.iWndIndex, szPicName, newOptions.bDateDir).then(() => { + resolve() + } + , () => { + reject(_oUnKnownError) + } + ) + } else { + reject(_oUnKnownError) + } + } + ); + return oPromise + } + ; + this.I_CapturePicData = function (options) { + let oPromise = new Promise((resolve, reject) => { + var newOptions = { + iWndIndex: m_iSelWnd, + bDateDir: true + }; + if (m_utilsInc.isObject(options)) { + m_utilsInc.extend(newOptions, options) + } else { + if (!m_utilsInc.isUndefined(options)) { + newOptions.iWndIndex = options + } + } + var iIndex = this.findWndIndexByIndex(newOptions.iWndIndex); + if (iIndex != -1) { + m_pluginOBJECT.JS_GetCaptureData(newOptions.iWndIndex).then(function (data) { + resolve(data) + }, function (data) { + reject(_oUnKnownError) + }) + } else { + reject(_oUnKnownError) + } + } + ); + return oPromise + } + ; + this.I_StartRecord = function (szFileName, options) { + let oPromise = new Promise((resolve, reject) => { + var newOptions = { + iWndIndex: m_iSelWnd, + bDateDir: true + }; + if (m_utilsInc.isObject(options)) { + m_utilsInc.extend(newOptions, options) + } else { + if (!m_utilsInc.isUndefined(options)) { + newOptions.iWndIndex = options + } + } + var iIndex = this.findWndIndexByIndex(newOptions.iWndIndex); + if (iIndex != -1) { + var wndInfo = m_wndSet[iIndex]; + if (!wndInfo.bRecord) { + m_pluginOBJECT.JS_StartSave(newOptions.iWndIndex, szFileName).then(function () { + wndInfo.bRecord = true; + if (newOptions.success) { + newOptions.success() + } + resolve() + }, function () { + if (newOptions.error) { + newOptions.error(_oUnKnownError) + } + reject(_oUnKnownError) + }) + } else { + if (newOptions.error) { + newOptions.error(_oUnKnownError) + } + reject(_oUnKnownError) + } + } else { + if (newOptions.error) { + newOptions.error(_oUnKnownError) + } + reject(_oUnKnownError) + } + } + ); + return oPromise + } + ; + this.I_StopRecord = function (options) { + let oPromise = new Promise((resolve, reject) => { + var newOptions = { + iWndIndex: m_iSelWnd + }; + if (m_utilsInc.isObject(options)) { + m_utilsInc.extend(newOptions, options) + } else { + if (!m_utilsInc.isUndefined(options)) { + newOptions.iWndIndex = options + } + } + var iIndex = this.findWndIndexByIndex(newOptions.iWndIndex); + if (iIndex != -1) { + var wndInfo = m_wndSet[iIndex]; + if (wndInfo.bRecord) { + m_pluginOBJECT.JS_StopSave(newOptions.iWndIndex).then(function () { + wndInfo.bRecord = false; + if (newOptions.success) { + newOptions.success() + } + resolve() + }, function () { + if (newOptions.error) { + newOptions.error(_oUnKnownError) + } + reject(_oUnKnownError) + }) + } else { + if (newOptions.error) { + newOptions.error(_oUnKnownError) + } + reject(_oUnKnownError) + } + } else { + if (newOptions.error) { + newOptions.error(_oUnKnownError) + } + reject(_oUnKnownError) + } + } + ); + return oPromise + } + ; + this.I_StartVoiceTalk = function (szDeviceIdentify, iAudioChannel) { + let oPromise = new Promise((resolve, reject) => { + if (isNaN(parseInt(iAudioChannel, 10))) { + reject(_oParamsError); + return + } + var iIndex = this.findDeviceIndexByIP(szDeviceIdentify); + if (iIndex != -1) { + var oDeviceInfo = m_deviceSet[iIndex]; + if (!oDeviceInfo.bVoiceTalk) { + oDeviceInfo.oProtocolInc.startVoiceTalk(oDeviceInfo, iAudioChannel).then(() => { + m_deviceSet[iIndex].bVoiceTalk = true; + resolve() + } + , () => { + reject(_oUnKnownError) + } + ) + } else { + reject(_oUnKnownError) + } + } else { + reject(_oUnKnownError) + } + } + ); + return oPromise + } + ; + this.I_StopVoiceTalk = function () { + let oPromise = new Promise((resolve, reject) => { + m_pluginOBJECT.JS_StopTalk().then(() => { + for (var i = 0, iLen = m_deviceSet.length; i < iLen; i++) { + if (m_deviceSet[i].bVoiceTalk) { + m_deviceSet[i].bVoiceTalk = false; + break + } + } + resolve() + } + , () => { + reject(_oUnKnownError) + } + ) + } + ); + return oPromise + } + ; + this.I_StartAudioPlay = function (szDeviceIdentify, options) { + let oPromise = new Promise((resolve, reject) => { + var iIndex = this.findDeviceIndexByIP(szDeviceIdentify); + if (iIndex != -1) { + var oDeviceInfo = m_deviceSet[iIndex]; + options.szAuth = oDeviceInfo.szAuth; + if (!oDeviceInfo.bVoiceTalk) { + oDeviceInfo.oProtocolInc.audioPlay(options).then(() => { + m_deviceSet[iIndex].bVoiceTalk = true; + resolve() + } + , () => { + reject(_oUnKnownError) + } + ) + } else { + reject(_oUnKnownError) + } + } else { + reject(_oUnKnownError) + } + } + ); + return oPromise + } + ; + this.I_StopAudioPlay = function () { + let oPromise = new Promise((resolve, reject) => { + m_pluginOBJECT.JS_StopAudioPlay().then(() => { + for (var i = 0, iLen = m_deviceSet.length; i < iLen; i++) { + if (m_deviceSet[i].bVoiceTalk) { + m_deviceSet[i].bVoiceTalk = false; + break + } + } + resolve() + } + , () => { + reject(_oUnKnownError) + } + ) + } + ); + return oPromise + } + ; + this.I_PTZControl = function (iPTZIndex, bStop, options) { + let oPromise = new Promise((resolve, reject) => { + var newOptions = { + iWndIndex: m_iSelWnd, + iPTZIndex: iPTZIndex, + iPTZSpeed: 4 + }; + m_utilsInc.extend(newOptions, options); + var iIndex = this.findWndIndexByIndex(newOptions.iWndIndex); + if (iIndex != -1) { + var wndInfo = m_wndSet[iIndex]; + iIndex = this.findDeviceIndexByIP(wndInfo.szIP); + if (iIndex != -1) { + var oDeviceInfo = m_deviceSet[iIndex]; + if (9 == iPTZIndex) { + oDeviceInfo.oProtocolInc.ptzAutoControl(oDeviceInfo, bStop, wndInfo, newOptions).then(() => { + resolve() + } + , oError => { + reject(oError) + } + ) + } else { + oDeviceInfo.oProtocolInc.ptzControl(oDeviceInfo, bStop, wndInfo, newOptions).then(() => { + resolve() + } + , oError => { + reject(oError) + } + ) + } + } + } + } + ); + return oPromise + } + ; + this.I_EnableEZoom = function (iWndIndex) { + let oPromise = new Promise((resolve, reject) => { + iWndIndex = m_utilsInc.isUndefined(iWndIndex) ? m_iSelWnd : iWndIndex; + var iIndex = this.findWndIndexByIndex(iWndIndex); + if (iIndex != -1) { + var wndInfo = m_wndSet[iIndex]; + if (!wndInfo.bEZoom) { + m_pluginOBJECT.JS_EnableZoom(iWndIndex).then(() => { + wndInfo.bEZoom = true; + resolve() + } + , () => { + reject(_oUnKnownError) + } + ) + } + } else { + reject(_oUnKnownError) + } + } + ); + return oPromise + } + ; + this.I_DisableEZoom = function (iWndIndex) { + let oPromise = new Promise((resolve, reject) => { + iWndIndex = m_utilsInc.isUndefined(iWndIndex) ? m_iSelWnd : iWndIndex; + var iIndex = this.findWndIndexByIndex(iWndIndex); + if (iIndex != -1) { + var wndInfo = m_wndSet[iIndex]; + if (wndInfo.bEZoom) { + m_pluginOBJECT.JS_DisableZoom(iWndIndex).then(() => { + wndInfo.bEZoom = false; + resolve() + } + , () => { + reject(_oUnKnownError) + } + ) + } else { + resolve() + } + } else { + reject(_oUnKnownError) + } + } + ); + return oPromise + } + ; + this.I_Enable3DZoom = function (iWndIndex) { + let oPromise = new Promise((resolve, reject) => { + iWndIndex = m_utilsInc.isUndefined(iWndIndex) ? m_iSelWnd : iWndIndex; + var iIndex = this.findWndIndexByIndex(iWndIndex); + if (iIndex != -1) { + var wndInfo = m_wndSet[iIndex]; + if (!wndInfo.b3DZoom) { + m_pluginOBJECT.JS_SetDrawCallback(iWndIndex, true, "Rect", false, function (oRect) { + _onZoomInfoCallback(oRect.points) + }); + wndInfo.b3DZoom = true; + resolve() + } else { + resolve() + } + } else { + reject(_oUnKnownError) + } + } + ); + return oPromise + } + ; + this.I_Disable3DZoom = function (iWndIndex) { + let oPromise = new Promise((resolve, reject) => { + iWndIndex = m_utilsInc.isUndefined(iWndIndex) ? m_iSelWnd : iWndIndex; + var iIndex = this.findWndIndexByIndex(iWndIndex); + if (iIndex != -1) { + var wndInfo = m_wndSet[iIndex]; + if (wndInfo.b3DZoom) { + m_pluginOBJECT.JS_SetDrawCallback(iWndIndex, false, "Rect", false, function () { }); + wndInfo.b3DZoom = false; + resolve() + } else { + resolve() + } + } else { + reject(_oUnKnownError) + } + } + ); + return oPromise + } + ; + this.I_FullScreen = function (bFull) { + let oPromise = new Promise(function (resolve, reject) { + m_pluginOBJECT.JS_FullScreenDisplay(bFull).then(() => { + resolve() + } + , () => { + reject(_oUnKnownError) + } + ) + } + ); + return oPromise + } + ; + this.I_SetPreset = function (iPresetID, options) { + let oPromise = new Promise(function (resolve, reject) { + var newOptions = { + iWndIndex: m_iSelWnd, + iPresetID: iPresetID + }; + m_utilsInc.extend(newOptions, options); + var iIndex = this.findWndIndexByIndex(newOptions.iWndIndex); + if (iIndex != -1) { + var wndInfo = m_wndSet[iIndex]; + iIndex = this.findDeviceIndexByIP(wndInfo.szIP); + if (iIndex != -1) { + var oDeviceInfo = m_deviceSet[iIndex]; + oDeviceInfo.oProtocolInc.setPreset(oDeviceInfo, wndInfo, newOptions).then(() => { + resolve() + } + , oError => { + reject(oError) + } + ) + } else { + reject(_oUnKnownError) + } + } else { + reject(_oUnKnownError) + } + } + ); + return oPromise + } + ; + this.I_GoPreset = function (iPresetID, options) { + let oPromise = new Promise(async function (resolve, reject) { + var newOptions = { + iWndIndex: m_iSelWnd, + iPresetID: iPresetID + }; + m_utilsInc.extend(newOptions, options); + var iIndex = this.findWndIndexByIndex(newOptions.iWndIndex); + if (iIndex != -1) { + var wndInfo = m_wndSet[iIndex]; + iIndex = this.findDeviceIndexByIP(wndInfo.szIP); + if (iIndex != -1) { + var oDeviceInfo = m_deviceSet[iIndex]; + oDeviceInfo.oProtocolInc.goPreset(oDeviceInfo, wndInfo, newOptions).then(() => { + resolve() + } + , oError => { + reject(oError) + } + ) + } else { + reject(_oUnKnownError) + } + } else { + reject(_oUnKnownError) + } + } + ); + return oPromise + } + ; + this.I_RecordSearch = function (szDeviceIdentify, iChannelID, szStartTime, szEndTime, options) { + let oPromise = new Promise(async function (resolve, reject) { + var iIndex = this.findDeviceIndexByIP(szDeviceIdentify); + if (iIndex != -1) { + var oDeviceInfo = m_deviceSet[iIndex]; + if (oDeviceInfo.szDeviceType === DEVICE_TYPE_IPCAMERA || oDeviceInfo.szDeviceType === DEVICE_TYPE_IPDOME || oDeviceInfo.szDeviceType === DEVICE_TYPE_IPZOOM) { + szStartTime = m_utilsInc.convertToUTCTime(szStartTime); + szEndTime = m_utilsInc.convertToUTCTime(szEndTime) + } + var newOptions = { + iChannelID: iChannelID, + szStartTime: szStartTime, + szEndTime: szEndTime, + iSearchPos: 0, + iStreamType: 1 + }; + m_utilsInc.extend(newOptions, options); + newOptions.success = null; + oDeviceInfo.oProtocolInc.recordSearch(oDeviceInfo, newOptions).then(oData => { + if (oDeviceInfo.szDeviceType === DEVICE_TYPE_IPCAMERA || oDeviceInfo.szDeviceType === DEVICE_TYPE_IPDOME || oDeviceInfo.szDeviceType === DEVICE_TYPE_IPZOOM) { + var szRecordStartTime = ""; + var szRecordEndTime = ""; + for (var i = 0, nLen = $(oData).find("searchMatchItem").length; i < nLen; i++) { + szRecordStartTime = $(oData).find("startTime").eq(i).text(); + szRecordEndTime = $(oData).find("endTime").eq(i).text(); + szRecordStartTime = m_utilsInc.convertToLocalTime(szRecordStartTime, oDeviceInfo.iDeviceMinusLocalTime); + szRecordEndTime = m_utilsInc.convertToLocalTime(szRecordEndTime, oDeviceInfo.iDeviceMinusLocalTime); + $(oData).find("startTime").eq(i).text(szRecordStartTime); + $(oData).find("endTime").eq(i).text(szRecordEndTime) + } + } + if (options.success) { + options.success(oData) + } + resolve(oData) + } + , oError => { + reject(oError) + } + ) + } else { + reject(_oNoLoginError) + } + } + ); + return oPromise + } + ; + this.I_StartPlayback = function (szDeviceIdentify, options) { + let oPromise = new Promise(function (resolve, reject) { + var iIndex = this.findDeviceIndexByIP(szDeviceIdentify) + , cgi = "" + , urlProtocol = "" + , iChannelID = 1 + , iStream = 0; + var szCurTime = m_utilsInc.dateFormat(new Date, "yyyy-MM-dd"); + var newOptions = { + iWndIndex: m_iSelWnd, + iStreamType: 1, + iChannelID: 1, + szStartTime: szCurTime + " 00:00:00", + szEndTime: szCurTime + " 23:59:59" + }; + m_utilsInc.extend(newOptions, options); + if (iIndex != -1) { + var oDeviceInfo = m_deviceSet[iIndex]; + cgi = oDeviceInfo.oProtocolInc.CGI.startPlayback; + urlProtocol = "rtsp://"; + iStream = newOptions.iStreamType; + iChannelID = newOptions.iChannelID * 100 + iStream; + m_utilsInc.extend(newOptions, { + urlProtocol: urlProtocol, + cgi: cgi, + iChannelID: iChannelID + }); + iIndex = this.findWndIndexByIndex(newOptions.iWndIndex); + if (-1 == iIndex) { + if (oDeviceInfo.szDeviceType === DEVICE_TYPE_IPCAMERA || oDeviceInfo.szDeviceType === DEVICE_TYPE_IPDOME || oDeviceInfo.szDeviceType === DEVICE_TYPE_IPZOOM) { + newOptions.szStartTime = m_utilsInc.convertToUTCTime(newOptions.szStartTime); + newOptions.szEndTime = m_utilsInc.convertToUTCTime(newOptions.szEndTime) + } + newOptions.szStartTime = newOptions.szStartTime.replace(/[-:]/g, "").replace(" ", "T") + "Z"; + newOptions.szEndTime = newOptions.szEndTime.replace(/[-:]/g, "").replace(" ", "T") + "Z"; + oDeviceInfo.oProtocolInc.startPlayback(oDeviceInfo, newOptions).then(function () { + if (options.success) { + options.success() + } + resolve() + }, function () { + if (options.error) { + options.error(_oUnKnownError) + } + reject(_oUnKnownError) + }) + } + } else { + if (options.error) { + options.error(_oNoLoginError) + } + reject(_oNoLoginError) + } + } + ); + return oPromise + } + ; + this.I_ReversePlayback = function (szDeviceIdentify, options) { + let oPromise = new Promise(function (resolve, reject) { + var iIndex = this.findDeviceIndexByIP(szDeviceIdentify) + , iRet = -1 + , cgi = "" + , urlProtocol = "" + , iPort = -1 + , iChannelID = -1 + , iStream = 0; + var szCurTime = m_utilsInc.dateFormat(new Date, "yyyy-MM-dd"); + var newOptions = { + iWndIndex: m_iSelWnd, + iStreamType: 1, + iChannelID: 1, + szStartTime: szCurTime + " 00:00:00", + szEndTime: szCurTime + " 23:59:59" + }; + m_utilsInc.extend(newOptions, options); + if (iIndex != -1) { + var oDeviceInfo = m_deviceSet[iIndex]; + var iProtocolType = parseInt(m_oLocalCfg.protocolType, 10); + cgi = oDeviceInfo.oProtocolInc.CGI.startPlayback; + urlProtocol = "rtsp://"; + iStream = newOptions.iStreamType; + iChannelID = newOptions.iChannelID * 100 + iStream; + m_utilsInc.extend(newOptions, { + urlProtocol: urlProtocol, + cgi: cgi, + iChannelID: iChannelID + }); + iIndex = this.findWndIndexByIndex(newOptions.iWndIndex); + if (-1 == iIndex) { + newOptions.szStartTime = newOptions.szStartTime.replace(/[-:]/g, "").replace(" ", "T") + "Z"; + newOptions.szEndTime = newOptions.szEndTime.replace(/[-:]/g, "").replace(" ", "T") + "Z"; + oDeviceInfo.oProtocolInc.reversePlayback(oDeviceInfo, newOptions).then(function () { + if (options.success) { + options.success() + } + resolve() + }, function () { + if (options.error) { + options.error(_oUnKnownError) + } + reject(_oUnKnownError) + }) + } + } + } + ); + return oPromise + } + ; + this.I_Frame = function (options) { + let oPromise = new Promise(async function (resolve, reject) { + var newOptions = { + iWndIndex: m_iSelWnd + }; + if (m_utilsInc.isObject(options)) { + m_utilsInc.extend(newOptions, options) + } else { + if (!m_utilsInc.isUndefined(options)) { + newOptions.iWndIndex = options + } + } + var iIndex = this.findWndIndexByIndex(newOptions.iWndIndex); + if (iIndex != -1) { + var wndInfo = m_wndSet[iIndex] + , iPlayStatus = wndInfo.iPlayStatus; + if (iPlayStatus == PLAY_STATUS_PLAYBACK || iPlayStatus == PLAY_STATUS_FRAME) { + m_pluginOBJECT.JS_FrameForward(newOptions.iWndIndex).then(function () { + wndInfo.iPlayStatus = PLAY_STATUS_FRAME; + if (newOptions.success) { + newOptions.success() + } + resolve() + }, function () { + if (newOptions.error) { + newOptions.error(_oUnKnownError) + } + reject(_oUnKnownError) + }) + } else { + if (newOptions.error) { + newOptions.error(_oUnKnownError) + } + reject(_oUnKnownError) + } + } else { + if (newOptions.error) { + newOptions.error(_oUnKnownError) + } + reject(_oUnKnownError) + } + } + ); + return oPromise + } + ; + this.I_Pause = function (options) { + let oPromise = new Promise(async function (resolve, reject) { + var newOptions = { + iWndIndex: m_iSelWnd + }; + if (m_utilsInc.isObject(options)) { + m_utilsInc.extend(newOptions, options) + } else { + if (!m_utilsInc.isUndefined(options)) { + newOptions.iWndIndex = options + } + } + var iIndex = this.findWndIndexByIndex(newOptions.iWndIndex); + if (iIndex != -1) { + var wndInfo = m_wndSet[iIndex] + , iPlayStatus = wndInfo.iPlayStatus + , iNextStatus = -1; + if (iPlayStatus == PLAY_STATUS_PLAYBACK) { + iNextStatus = PLAY_STATUS_PAUSE + } else if (iPlayStatus == PLAY_STATUS_REVERSE_PLAYBACK) { + iNextStatus = PLAY_STATUS_REVERSE_PAUSE + } else { + if (newOptions.error) { + newOptions.error(_oUnKnownError) + } + reject(_oUnKnownError); + return + } + m_pluginOBJECT.JS_Pause(newOptions.iWndIndex).then(function () { + wndInfo.iPlayStatus = iNextStatus; + if (newOptions.success) { + newOptions.success() + } + resolve() + }, function () { + if (newOptions.error) { + newOptions.error(_oUnKnownError) + } + reject(_oUnKnownError) + }) + } else { + if (newOptions.error) { + newOptions.error(_oUnKnownError) + } + reject(_oUnKnownError) + } + } + ); + return oPromise + } + ; + this.I_Resume = function (options) { + let oPromise = new Promise(async function (resolve, reject) { + var newOptions = { + iWndIndex: m_iSelWnd + }; + if (m_utilsInc.isObject(options)) { + m_utilsInc.extend(newOptions, options) + } else { + if (!m_utilsInc.isUndefined(options)) { + newOptions.iWndIndex = options + } + } + var iIndex = this.findWndIndexByIndex(newOptions.iWndIndex); + if (iIndex != -1) { + var wndInfo = m_wndSet[iIndex] + , iPlayStatus = wndInfo.iPlayStatus + , iNextStatus = -1; + if (iPlayStatus == PLAY_STATUS_PAUSE || iPlayStatus == PLAY_STATUS_FRAME) { + iNextStatus = PLAY_STATUS_PLAYBACK + } else if (iPlayStatus == PLAY_STATUS_REVERSE_PAUSE) { + iNextStatus = PLAY_STATUS_REVERSE_PLAYBACK + } else { + if (newOptions.error) { + newOptions.error(_oUnKnownError) + } + reject(_oUnKnownError); + return + } + m_pluginOBJECT.JS_Resume(newOptions.iWndIndex).then(function () { + wndInfo.iPlayStatus = iNextStatus; + if (newOptions.success) { + newOptions.success() + } + resolve() + }, function () { + if (newOptions.error) { + newOptions.error(_oUnKnownError) + } + reject(_oUnKnownError) + }) + } else { + if (newOptions.error) { + newOptions.error(_oUnKnownError) + } + reject(_oUnKnownError) + } + } + ); + return oPromise + } + ; + this.I_PlaySlow = function (options) { + let oPromise = new Promise(async function (resolve, reject) { + var newOptions = { + iWndIndex: m_iSelWnd + }; + if (m_utilsInc.isObject(options)) { + m_utilsInc.extend(newOptions, options) + } else { + if (!m_utilsInc.isUndefined(options)) { + newOptions.iWndIndex = options + } + } + var iIndex = this.findWndIndexByIndex(newOptions.iWndIndex); + if (iIndex != -1) { + var wndInfo = m_wndSet[iIndex]; + if (wndInfo.iPlayStatus == PLAY_STATUS_PLAYBACK) { + m_pluginOBJECT.JS_Slow(newOptions.iWndIndex).then(function () { + if (newOptions.success) { + newOptions.success() + } + resolve() + }, function () { + if (newOptions.error) { + newOptions.error(_oUnKnownError) + } + reject(_oUnKnownError) + }) + } else { + if (newOptions.error) { + newOptions.error(_oUnKnownError) + } + reject(_oUnKnownError) + } + } else { + if (newOptions.error) { + newOptions.error(_oUnKnownError) + } + reject(_oUnKnownError) + } + } + ); + return oPromise + } + ; + this.I_PlayFast = function (options) { + let oPromise = new Promise(async function (resolve, reject) { + var newOptions = { + iWndIndex: m_iSelWnd + }; + if (m_utilsInc.isObject(options)) { + m_utilsInc.extend(newOptions, options) + } else { + if (!m_utilsInc.isUndefined(options)) { + newOptions.iWndIndex = options + } + } + var iIndex = this.findWndIndexByIndex(newOptions.iWndIndex); + if (iIndex != -1) { + var wndInfo = m_wndSet[iIndex]; + if (wndInfo.iPlayStatus == PLAY_STATUS_PLAYBACK) { + m_pluginOBJECT.JS_Fast(newOptions.iWndIndex).then(function () { + if (newOptions.success) { + newOptions.success() + } + resolve() + }, function () { + if (newOptions.error) { + newOptions.error(_oUnKnownError) + } + reject(_oUnKnownError) + }) + } else { + if (newOptions.error) { + newOptions.error(_oUnKnownError) + } + reject(_oUnKnownError) + } + } else { + if (newOptions.error) { + newOptions.error(_oUnKnownError) + } + reject(_oUnKnownError) + } + } + ); + return oPromise + } + ; + this.I_GetOSDTime = function (options) { + let oPromise = new Promise(async function (resolve, reject) { + var newOptions = { + iWndIndex: m_iSelWnd + }; + if (m_utilsInc.isObject(options)) { + m_utilsInc.extend(newOptions, options) + } else { + if (!m_utilsInc.isUndefined(options)) { + newOptions.iWndIndex = options + } + } + var iIndex = this.findWndIndexByIndex(newOptions.iWndIndex); + if (iIndex != -1) { + m_pluginOBJECT.JS_GetOSDTime(newOptions.iWndIndex).then(function (iTime) { + if (newOptions.success) { + var szOSDTime = m_utilsInc.dateFormat(new Date(iTime * 1e3), "yyyy-MM-dd hh:mm:ss"); + newOptions.success(szOSDTime) + } + resolve(szOSDTime) + }, function () { + if (newOptions.error) { + newOptions.error(_oUnKnownError) + } + reject(_oUnKnownError) + }) + } else { + if (newOptions.error) { + newOptions.error(_oUnKnownError) + } + reject(_oUnKnownError) + } + } + ); + return oPromise + } + ; + this.I_StartDownloadRecord = function (szDeviceIdentify, szPlaybackURI, szFileName, options) { + let oPromise = new Promise((resolve, reject) => { + var iIndex = this.findDeviceIndexByIP(szDeviceIdentify); + if (iIndex != -1) { + var oDeviceInfo = m_deviceSet[iIndex]; + var newOptions = { + szPlaybackURI: szPlaybackURI, + szFileName: szFileName + ".mp4", + bDateDir: true + }; + if (!m_utilsInc.isUndefined(options)) { + m_utilsInc.extend(newOptions, options) + } + oDeviceInfo.oProtocolInc.startDownloadRecord(oDeviceInfo, newOptions).then(iDownloadID => { + resolve(iDownloadID) + } + , oError => { + reject(oError) + } + ) + } else { + reject(_oNoLoginError) + } + } + ); + return oPromise + } + ; + this.I_StartDownloadRecordByTime = function (szDeviceIdentify, szPlaybackURI, szFileName, szStartTime, szEndTime, options) { + let oPromise = new Promise((resolve, reject) => { + var iIndex = this.findDeviceIndexByIP(szDeviceIdentify); + if (iIndex != -1) { + var oDeviceInfo = m_deviceSet[iIndex]; + szPlaybackURI = szPlaybackURI.split("?")[0] + "?starttime=" + szStartTime.replace(" ", "T") + "Z&endtime=" + szEndTime.replace(" ", "T") + "Z"; + var newOptions = { + szPlaybackURI: szPlaybackURI, + szFileName: szFileName + ".mp4", + bDateDir: true + }; + if (!m_utilsInc.isUndefined(options)) { + m_utilsInc.extend(newOptions, options) + } + oDeviceInfo.oProtocolInc.startDownloadRecord(oDeviceInfo, newOptions).then(iDownloadID => { + resolve(iDownloadID) + } + , oError => { + reject(oError) + } + ) + } + } + ); + return oPromise + } + ; + this.I_GetDownloadStatus = function (iDownloadID) { + let oPromise = new Promise((resolve, reject) => { + m_pluginOBJECT.JS_GetDownloadStatus(iDownloadID).then(data => { + resolve(data) + } + , () => { + reject(_oUnKnownError) + } + ) + } + ); + return oPromise + } + ; + this.I_GetDownloadProgress = function (iDownloadID) { + let oPromise = new Promise((resolve, reject) => { + m_pluginOBJECT.JS_GetDownloadProgress(iDownloadID).then(data => { + resolve(data) + } + , () => { + reject(_oUnKnownError) + } + ) + } + ); + return oPromise + } + ; + this.I_StopDownloadRecord = function (iDownloadID) { + let oPromise = new Promise((resolve, reject) => { + m_pluginOBJECT.JS_StopAsyncDownload(iDownloadID).then(() => { + resolve() + } + , () => { + reject(_oUnKnownError) + } + ) + } + ); + return oPromise + } + ; + this.I_ExportDeviceConfig = function (szDeviceIdentify) { + let oPromise = new Promise((resolve, reject) => { + var iIndex = this.findDeviceIndexByIP(szDeviceIdentify); + if (iIndex != -1) { + var oDeviceInfo = m_deviceSet[iIndex]; + oDeviceInfo.oProtocolInc.exportDeviceConfig(oDeviceInfo).then(() => { + resolve() + } + , () => { + reject(_oUnKnownError) + } + ) + } else { + reject(_oNoLoginError) + } + } + ); + return oPromise + } + ; + this.I_ImportDeviceConfig = function (szDeviceIdentify, szFileName) { + let oPromise = new Promise((resolve, reject) => { + var iIndex = this.findDeviceIndexByIP(szDeviceIdentify); + if (iIndex != -1) { + var oDeviceInfo = m_deviceSet[iIndex]; + var newOptions = { + szFileName: szFileName + }; + oDeviceInfo.oProtocolInc.importDeviceConfig(oDeviceInfo, newOptions).then(() => { + resolve() + } + , () => { + reject(_oUnKnownError) + } + ) + } else { + reject(_oNoLoginError) + } + } + ); + return oPromise + } + ; + this.I_RestoreDefault = function (szDeviceIdentify, szMode, options) { + let oPromise = new Promise((resolve, reject) => { + var newOptions = { + success: null, + error: null + }; + m_utilsInc.extend(newOptions, options); + var iIndex = this.findDeviceIndexByIP(szDeviceIdentify); + if (iIndex != -1) { + var oDeviceInfo = m_deviceSet[iIndex]; + oDeviceInfo.oProtocolInc.restore(oDeviceInfo, szMode, newOptions).then(() => { + resolve() + } + , oError => { + reject(oError) + } + ) + } else { + reject(_oNoLoginError) + } + } + ); + return oPromise + } + ; + this.I_Restart = function (szDeviceIdentify, options) { + let oPromise = new Promise((resolve, reject) => { + var newOptions = { + success: null, + error: null + }; + m_utilsInc.extend(newOptions, options); + var iIndex = this.findDeviceIndexByIP(szDeviceIdentify); + if (iIndex != -1) { + var oDeviceInfo = m_deviceSet[iIndex]; + oDeviceInfo.oProtocolInc.restart(oDeviceInfo, newOptions).then(() => { + resolve() + } + , oError => { + reject(oError) + } + ) + } else { + reject(_oNoLoginError) + } + } + ); + return oPromise + } + ; + this.I_Reconnect = function (szDeviceIdentify, options) { + let oPromise = new Promise((resolve, reject) => { + var newOptions = { + success: null, + error: null + }; + m_utilsInc.extend(newOptions, options); + var iIndex = this.findDeviceIndexByIP(szDeviceIdentify); + if (iIndex != -1) { + var oDeviceInfo = m_deviceSet[iIndex]; + oDeviceInfo.oProtocolInc.login(oDeviceInfo.szIP, oDeviceInfo.iCGIPort, oDeviceInfo.szAuth, newOptions).then(() => { + resolve() + } + , oError => { + reject(oError) + } + ) + } else { + reject(_oNoLoginError) + } + } + ); + return oPromise + } + ; + this.I_StartUpgrade = function (szDeviceIdentify, szFileName) { + let oPromise = new Promise((resolve, reject) => { + var iIndex = this.findDeviceIndexByIP(szDeviceIdentify); + if (iIndex != -1) { + var oDeviceInfo = m_deviceSet[iIndex]; + oDeviceInfo.oProtocolInc.startUpgrade(oDeviceInfo, szFileName).then(() => { + resolve() + } + , () => { + reject(_oUnKnownError) + } + ) + } else { + reject(_oNoLoginError) + } + } + ); + return oPromise + } + ; + this.I_UpgradeStatus = function (szDeviceIdentify) { + let oPromise = new Promise((resolve, reject) => { + this.I_SendHTTPRequest(szDeviceIdentify, m_ISAPIProtocol.CGI.startUpgrade.status, {}).then(data => { + var bUpgrading = $(data).find("upgrading").eq(0).text() === "true"; + resolve(bUpgrading) + } + , () => { + reject(_oUnKnownError) + } + ) + } + ); + return oPromise + } + ; + this.I_UpgradeProgress = function (szDeviceIdentify) { + let oPromise = new Promise((resolve, reject) => { + this.I_SendHTTPRequest(szDeviceIdentify, m_ISAPIProtocol.CGI.startUpgrade.status, {}).then(data => { + var iPercent = parseInt($(data).find("percent").eq(0).text(), 10); + resolve(iPercent) + } + , () => { + reject(_oUnKnownError) + } + ) + } + ); + return oPromise + } + ; + this.I_StopUpgrade = function () { + let oPromise = new Promise((resolve, reject) => { + m_pluginOBJECT.JS_StopUpgrade().then(() => { + resolve() + } + , () => { + reject(_oUnKnownError) + } + ) + } + ); + return oPromise + } + ; + this.I_CheckPluginInstall = function () { + return true + } + ; + this.I_CheckPluginVersion = function () { + let oPromise = new Promise((resolve, reject) => { + m_pluginOBJECT.JS_CheckUpdate(m_szVersion).then(bFlag => { + resolve(bFlag) + } + , () => { + reject(_oUnKnownError) + } + ) + } + ); + return oPromise + } + ; + this.I_SendHTTPRequest = function (szDeviceIdentify, szURI, options) { + let oPromise = new Promise(async function (resolve, reject) { + var httpClient = new HttpPluginClient; + var szURL = ""; + var szAuth = ""; + var iIndex = this.findDeviceIndexByIP(szDeviceIdentify); + if (iIndex >= 0) { + if ("%" === szURI.substr(0, 1)) { + szURI = szURI.substr(8) + } + var oDeviceInfo = m_deviceSet[iIndex]; + szURL = oDeviceInfo.szHttpProtocol + oDeviceInfo.szIP + ":" + oDeviceInfo.iCGIPort + "/" + szURI; + szAuth = oDeviceInfo.szAuth + } + var newOptions = { + type: "GET", + url: szURL, + auth: szAuth, + success: null, + error: null + }; + m_utilsInc.extend(newOptions, options); + httpClient.submitRequest(newOptions).then(function (oRes) { + if (200 === oRes.httpStatusCode) { + let oData; + if (0 === oRes.httpResponse.indexOf(" { + m_pluginOBJECT.JS_ArrangeWindow(iWndType).then(() => { + resolve() + } + , () => { + reject(_oUnKnownError) + } + ) + } + ); + return oPromise + } + ; + this.I_GetLastError = function () { + let oPromise = new Promise((resolve, reject) => { + m_pluginOBJECT.JS_GetLastError().then(data => { + resolve(data) + } + , () => { + reject(_oUnKnownError) + } + ) + } + ); + return oPromise + } + ; + this.I_GetWindowStatus = function (iWndIndex) { + if (m_utilsInc.isUndefined(iWndIndex)) { + var wndSet = []; + m_utilsInc.extend(wndSet, m_wndSet); + return wndSet + } else { + var i = this.findWndIndexByIndex(iWndIndex); + if (i != -1) { + var wndSet = {}; + m_utilsInc.extend(wndSet, m_wndSet[i]); + return wndSet + } else { + return null + } + } + } + ; + this.I_GetIPInfoByMode = function (iMode, szAddress, iPort, szDeviceInfo) { + return + } + ; + this.I_SetPlayModeType = function (iMode) { + let oPromise = new Promise((resolve, reject) => { + m_pluginOBJECT.JS_SetPlayMode(iMode).then(() => { + resolve() + } + , () => { + reject(_oUnKnownError) + } + ) + } + ); + return oPromise + } + ; + this.I_SetSnapDrawMode = function (iWndIndex, iMode) { + let bType = false; + if (iMode !== -1) { + bType = true + } + let oPromise = new Promise((resolve, reject) => { + m_pluginOBJECT.JS_SetDrawStatus(bType, iMode).then(() => { + resolve() + } + , () => { + reject(_oUnKnownError) + } + ) + } + ); + return oPromise + } + ; + this.I_SetSnapPolygonInfo = function (iWndIndex, szInfo) { + let oPromise = new Promise((resolve, reject) => { + var aP = []; + var oData = m_utilsInc.formatPolygonXmlToJson(szInfo); + if (oData.aAddRect.length > 0) { + aP.push(m_pluginOBJECT.JS_SetDrawShapeInfo("Rect", oData.aAddRect[0])) + } + if (oData.aAddPolygon.length > 0) { + aP.push(m_pluginOBJECT.JS_SetDrawShapeInfo("Polygon", oData.aAddPolygon[0])) + } + if (oData.aRect.length > 0) { + aP.push(m_pluginOBJECT.JS_SetRectInfo(oData.aRect)) + } + if (oData.aPolygon.length > 0) { + aP.push(m_pluginOBJECT.JS_SetPolygonInfo(oData.aPolygon)) + } + Promise.all(aP).then(() => { + resolve() + } + , () => { + reject(_oUnKnownError) + } + ) + } + ); + return oPromise + } + ; + this.I_GetSnapPolygonInfo = function (iWndIndex) { + let oPromise = new Promise((resolve, reject) => { + var aP = []; + aP.push(m_pluginOBJECT.JS_GetPolygonInfo()); + aP.push(m_pluginOBJECT.JS_GetRectInfo()); + Promise.all(aP).then(aData => { + var szXmlData = m_utilsInc.formatPolygonJsonToXml(aData); + resolve(szXmlData) + } + , () => { + reject(_oUnKnownError) + } + ) + } + ); + return oPromise + } + ; + this.I_ClearSnapInfo = function (iWndIndex, aShapes) { + let oPromise = new Promise((resolve, reject) => { + if (aShapes) { + var aPolygon = []; + var aRect = []; + aShapes.forEach(item => { + if (1 === item.polygonType) { + aPolygon.push(item.id) + } else { + aRect.push(item.id) + } + var aP = []; + if (aPolygon.length) { + aP.push(m_pluginOBJECT.JS_ClearShapeByType("Polygon", aPolygon)) + } + if (aRect.length) { + aP.push(m_pluginOBJECT.JS_ClearShapeByType("Rect", aRect)) + } + Promise.all(aP).then(() => { + resolve() + } + , () => { + reject(_oUnKnownError) + } + ) + } + ) + } else { + m_pluginOBJECT.JS_ClearShapeByType("AllWindows").then(() => { + resolve() + } + , () => { + reject(_oUnKnownError) + } + ) + } + } + ); + return oPromise + } + ; + this.I_DeviceCapturePic = function (szDeviceIdentify, iChannelID, szPicName, options) { + return false; + var iIndex = this.findDeviceIndexByIP(szDeviceIdentify); + var iRet = -1; + if (iIndex != -1) { + var oDeviceInfo = m_deviceSet[iIndex]; + var newOptions = { + bDateDir: true + }; + m_utilsInc.extend(newOptions, options); + if (!m_utilsInc.isUndefined(newOptions.iResolutionWidth) && !m_utilsInc.isInt(newOptions.iResolutionWidth)) { + return iRet + } + if (!m_utilsInc.isUndefined(newOptions.iResolutionHeight) && !m_utilsInc.isInt(newOptions.iResolutionHeight)) { + return iRet + } + iRet = oDeviceInfo.oProtocolInc.deviceCapturePic(oDeviceInfo, iChannelID, szPicName, newOptions) + } + return iRet + } + ; + this.I_SetPackageType = function (iPackageType) { + let oPromise = new Promise((resolve, reject) => { + m_pluginOBJECT.JS_SetPackageType(iPackageType).then(() => { + resolve() + } + , () => { + reject(_oUnKnownError) + } + ) + } + ); + return oPromise + } + ; + this.I_GetDevicePort = function (szDeviceIdentify) { + let oPromise = new Promise(async (resolve, reject) => { + var iIndex = this.findDeviceIndexByIP(szDeviceIdentify); + var oPort = null; + if (iIndex != -1) { + var oDeviceInfo = m_deviceSet[iIndex]; + try { + oPort = await _getPort(oDeviceInfo); + resolve(oPort) + } catch (err) { + reject({ + errorCode: ERROR_CODE_NETWORKERROR, + errorMsg: "" + }) + } + } else { + reject(_oNoLoginError) + } + } + ); + return oPromise + } + ; + this.I_GetTextOverlay = function (szUrl, szDeviceIdentify, options) { + let oPromise = new Promise((resolve, reject) => { + var iIndex = this.findDeviceIndexByIP(szDeviceIdentify); + if (iIndex != -1) { + var oDeviceInfo = m_deviceSet[iIndex]; + var wndInfo = m_wndSet[iIndex]; + var newOptions = { + type: "GET", + success: options.success, + error: options.error + }; + this.I_SendHTTPRequest(oDeviceInfo.szIP + "_" + oDeviceInfo.iCGIPort, szUrl, newOptions).then(oData => { + resolve(oData) + } + , oError => { + reject(oError) + } + ) + } else { + reject(_oNoLoginError) + } + } + ); + return oPromise + } + ; + this.findDeviceIndexByIP = function (szDeviceIdentify) { + if (szDeviceIdentify.indexOf("_") > -1) { + for (var i = 0, iLen = m_deviceSet.length; i < iLen; i++) { + if (m_deviceSet[i].szDeviceIdentify == szDeviceIdentify) { + return i + } + } + } else { + for (var i = 0, iLen = m_deviceSet.length; i < iLen; i++) { + if (m_deviceSet[i].szIP == szDeviceIdentify) { + return i + } + } + } + return -1 + } + ; + this.findWndIndexByIndex = function (iWndIndex) { + for (var i = 0, iLen = m_wndSet.length; i < iLen; i++) { + if (m_wndSet[i].iIndex == iWndIndex) { + return i + } + } + return -1 + } + ; + function deviceInfoClass() { + this.szIP = ""; + this.szHostName = ""; + this.szAuth = ""; + this.szHttpProtocol = "http://"; + this.iCGIPort = 80; + this.szDeviceIdentify = ""; + this.iDevicePort = -1; + this.iHttpPort = -1; + this.iHttpsPort = -1; + this.iRtspPort = -1; + this.iAudioType = 1; + this.m_iAudioBitRate = -1; + this.m_iAudioSamplingRate = -1; + this.iDeviceProtocol = PROTOCOL_DEVICE_ISAPI; + this.oProtocolInc = null; + this.iAnalogChannelNum = 0; + this.szDeviceType = ""; + this.bVoiceTalk = false; + this.iDeviceMinusLocalTime = 0 + } + var wndInfoClass = function () { + this.iIndex = 0; + this.szIP = ""; + this.iCGIPort = 80; + this.szDeviceIdentify = ""; + this.iChannelID = ""; + this.iPlayStatus = PLAY_STATUS_STOP; + this.bSound = false; + this.bRecord = false; + this.bPTZAuto = false; + this.bEZoom = false; + this.b3DZoom = false + }; + var HttpPluginClient = function () { + this.options = { + type: "GET", + url: "", + auth: "", + timeout: 3e4, + data: "", + async: true, + success: null, + error: null + }; + this.m_szHttpHead = ""; + this.m_szHttpContent = ""; + this.m_szHttpData = "" + }; + HttpPluginClient.prototype.submitRequest = function (options) { + options.method = this.getHttpMethod(options.type); + options.content = options.data; + delete options.type; + delete options.data; + // alert(m_pluginOBJECT) + return m_pluginOBJECT.JS_SubmitHttpRequest(options) + } + ; + HttpPluginClient.prototype.getHttpMethod = function (szMethod) { + var oMethod = { + GET: 1, + POST: 2, + PUT: 5, + DELETE: 6 + } + , iMethod = oMethod[szMethod]; + return iMethod ? iMethod : -1 + } + ; + var ISAPIProtocol = function () { }; + ISAPIProtocol.prototype.CGI = { + login: "%s%s:%s/ISAPI/Security/userCheck?format=json", + getAudioInfo: "%s%s:%s/ISAPI/System/TwoWayAudio/channels", + getDeviceInfo: "%s%s:%s/ISAPI/System/deviceInfo", + getAnalogChannelInfo: "%s%s:%s/ISAPI/System/Video/inputs/channels", + getDigitalChannel: "%s%s:%s/ISAPI/ContentMgmt/InputProxy/channels", + getDigitalChannelInfo: "%s%s:%s/ISAPI/ContentMgmt/InputProxy/channels/status", + getZeroChannelInfo: "%s%s:%s/ISAPI/ContentMgmt/ZeroVideo/channels", + getStreamChannels: { + analog: "%s%s:%s/ISAPI/Streaming/channels", + digital: "%s%s:%s/ISAPI/ContentMgmt/StreamingProxy/channels" + }, + startRealPlay: { + channels: "video://%s:%s/%s", + zeroChannels: "%s%s:%s/PSIA/Custom/SelfExt/ContentMgmt/ZeroStreaming/channels/%s" + }, + startVoiceTalk: { + open: "%s%s:%s/ISAPI/System/TwoWayAudio/channels/%s/open", + close: "%s%s:%s/ISAPI/System/TwoWayAudio/channels/%s/close", + audioData: "%s%s:%s/ISAPI/System/TwoWayAudio/channels/%s/audioData" + }, + ptzControl: { + analog: "%s%s:%s/ISAPI/PTZCtrl/channels/%s/continuous", + digital: "%s%s:%s/ISAPI/ContentMgmt/PTZCtrlProxy/channels/%s/continuous" + }, + ptzAutoControl: { + analog: "%s%s:%s/ISAPI/PTZCtrl/channels/%s/autoPan", + digital: "%s%s:%s/ISAPI/ContentMgmt/PTZCtrlProxy/channels/%s/autoPan" + }, + setPreset: { + analog: "%s%s:%s/ISAPI/PTZCtrl/channels/%s/presets/%s", + digital: "%s%s:%s/ISAPI/ContentMgmt/PTZCtrlProxy/channels/%s/presets/%s" + }, + goPreset: { + analog: "%s%s:%s/ISAPI/PTZCtrl/channels/%s/presets/%s/goto", + digital: "%s%s:%s/ISAPI/ContentMgmt/PTZCtrlProxy/channels/%s/presets/%s/goto" + }, + ptzFocus: { + analog: "%s%s:%s/ISAPI/System/Video/inputs/channels/%s/focus", + digital: "%s%s:%s/ISAPI/ContentMgmt/ImageProxy/channels/%s/focus" + }, + ptzIris: { + analog: "%s%s:%s/ISAPI/System/Video/inputs/channels/%s/iris", + digital: "%s%s:%s/ISAPI/ContentMgmt/ImageProxy/channels/%s/iris" + }, + getNetworkBond: "%s%s:%s/ISAPI/System/Network/Bond", + getNetworkInterface: "%s%s:%s/ISAPI/System/Network/interfaces", + getUPnPPortStatus: "%s%s:%s/ISAPI/System/Network/UPnP/ports/status", + getPPPoEStatus: "%s%s:%s/ISAPI/System/Network/PPPoE/1/status", + getPortInfo: "%s%s:%s/ISAPI/Security/adminAccesses", + recordSearch: "%s%s:%s/ISAPI/ContentMgmt/search", + startPlayback: "video://%s:%s/%s", + startWsPlayback: "%s%s:%s/%s", + startShttpPlayback: "%s%s:%s/SDK/playback/%s", + startShttpReversePlayback: "%s%s:%s/SDK/playback/%s/reversePlay", + startTransCodePlayback: "%s%s:%s/SDK/playback/%s/transcoding", + startDownloadRecord: "%s%s:%s/ISAPI/ContentMgmt/download", + downloaddeviceConfig: "%s%s:%s/ISAPI/System/configurationData", + uploaddeviceConfig: "%s%s:%s/ISAPI/System/configurationData", + restart: "%s%s:%s/ISAPI/System/reboot", + restore: "%s%s:%s/ISAPI/System/factoryReset?mode=%s", + startUpgrade: { + upgrade: "%s%s:%s/ISAPI/System/updateFirmware", + status: "%s%s:%s/ISAPI/System/upgradeStatus" + }, + set3DZoom: { + analog: "%s%s:%s/ISAPI/PTZCtrl/channels/%s/position3D", + digital: "%s%s:%s/ISAPI/ContentMgmt/PTZCtrlProxy/channels/%s/position3D" + }, + getSecurityVersion: "%s%s:%s/ISAPI/Security/capabilities?username=admin", + SDKCapabilities: "%s%s:%s/SDK/capabilities", + deviceCapture: { + channels: "%s%s:%s/ISAPI/Streaming/channels/%s/picture" + }, + overlayInfo: { + analog: "%s%s:%s/ISAPI/System/Video/inputs/channels/%s/overlays/", + digital: "%s%s:%s/ISAPI/ContentMgmt/InputProxy/channels/%s/video/overlays" + }, + sessionCap: "%s%s:%s/ISAPI/Security/sessionLogin/capabilities?username=%s", + sessionLogin: "%s%s:%s/ISAPI/Security/sessionLogin", + sessionHeartbeat: "%s%s:%s/ISAPI/Security/sessionHeartbeat", + sessionLogout: "%s%s:%s/ISAPI/Security/sessionLogout", + systemCapabilities: "%s%s:%s/ISAPI/System/capabilities", + time: "ISAPI/System/time" + }; + ISAPIProtocol.prototype.login = function (szIP, iPort, szAuth, options) { + return m_webVideoCtrl.I_SendHTTPRequest(oDeviceInfo.szDeviceIdentify, this.CGI.login, options) + } + ; + ISAPIProtocol.prototype.getAudioInfo = function (oDeviceInfo, options) { + let oPromise = new Promise(function (resolve, reject) { + var newOptions = {}; + m_utilsInc.extend(newOptions, options); + m_utilsInc.extend(newOptions, { + success: function (oData) { + var oNodeList = NS.$XML(oData).find("audioCompressionType", true); + if (oNodeList.length > 0) { + var szAudioCompressionType = NS.$XML(oNodeList).eq(0).text() + , iAudioType = 0; + if ("G.711ulaw" == szAudioCompressionType) { + iAudioType = 1 + } else if ("G.711alaw" == szAudioCompressionType) { + iAudioType = 2 + } else if ("G.726" == szAudioCompressionType) { + iAudioType = 3 + } else if ("MP2L2" == szAudioCompressionType || "MPEL2" == szAudioCompressionType) { + iAudioType = 4 + } else if ("G.722.1" == szAudioCompressionType) { + iAudioType = 0 + } else if ("AAC" == szAudioCompressionType) { + iAudioType = 5 + } else if ("PCM" == szAudioCompressionType) { + iAudioType = 6 + } else if ("MP3" == szAudioCompressionType) { + iAudioType = 7 + } + oDeviceInfo.iAudioType = iAudioType + } + if (NS.$XML(oData).find("audioBitRate").eq(0).text() !== "") { + oDeviceInfo.m_iAudioBitRate = parseInt(NS.$XML(oData).find("audioBitRate").eq(0).text(), 10) * 1e3 + } else { + oDeviceInfo.m_iAudioBitRate = 0 + } + if (NS.$XML(oData).find("audioSamplingRate").eq(0).text() !== "") { + oDeviceInfo.m_iAudioSamplingRate = parseInt(NS.$XML(oData).find("audioSamplingRate").eq(0).text(), 10) * 1e3 + } else { + oDeviceInfo.m_iAudioSamplingRate = 0 + } + if (NS.$XML(oData).find("channelNum").eq(0).text() !== "") { + oDeviceInfo.m_iSoundChan = parseInt(NS.$XML(oData).find("channelNum").eq(0).text(), 10) + } else { + oDeviceInfo.m_iSoundChan = 1 + } + if (NS.$XML(oData).find("deviceCastChannelNum").eq(0).text() !== "") { + oDeviceInfo.m_iDeviceAudioSoundChan = parseInt(NS.$XML(oData).find("deviceCastChannelNum").eq(0).text(), 10) + } else { + oDeviceInfo.m_iDeviceAudioSoundChan = 1 + } + if (options.success) { + options.success(oData) + } + resolve(oData) + }, + error: function (oError) { + if (options.error) { + options.error(oError) + } + reject(oError) + } + }); + m_webVideoCtrl.I_SendHTTPRequest(oDeviceInfo.szDeviceIdentify, m_ISAPIProtocol.CGI.getAudioInfo, newOptions) + } + ); + return oPromise + } + ; + ISAPIProtocol.prototype.getDeviceInfo = function (oDeviceInfo, options) { + let oPromise = new Promise(function (resolve, reject) { + var newOptions = {}; + m_utilsInc.extend(newOptions, options); + m_utilsInc.extend(newOptions, { + success: function (xmlDoc) { + var oData; + oDeviceInfo.szDeviceType = NS.$XML(xmlDoc).find("deviceType").eq(0).text(); + var arrXml = []; + arrXml.push(""); + arrXml.push("" + m_utilsInc.escape(NS.$XML(xmlDoc).find("deviceName").eq(0).text()) + ""); + arrXml.push("" + NS.$XML(xmlDoc).find("deviceID").eq(0).text() + ""); + arrXml.push("" + NS.$XML(xmlDoc).find("deviceType").eq(0).text() + ""); + arrXml.push("" + NS.$XML(xmlDoc).find("model").eq(0).text() + ""); + arrXml.push("" + NS.$XML(xmlDoc).find("serialNumber").eq(0).text() + ""); + arrXml.push("" + NS.$XML(xmlDoc).find("macAddress").eq(0).text() + ""); + arrXml.push("" + NS.$XML(xmlDoc).find("firmwareVersion").eq(0).text() + ""); + arrXml.push("" + NS.$XML(xmlDoc).find("firmwareReleasedDate").eq(0).text() + ""); + arrXml.push("" + NS.$XML(xmlDoc).find("encoderVersion").eq(0).text() + ""); + arrXml.push("" + NS.$XML(xmlDoc).find("encoderReleasedDate").eq(0).text() + ""); + arrXml.push(""); + oData = m_utilsInc.loadXML(arrXml.join("")); + if (options.success) { + options.success(oData) + } + resolve(oData) + }, + error: function (oError) { + if (options.error) { + options.error(oError) + } + reject(oError) + } + }); + m_webVideoCtrl.I_SendHTTPRequest(oDeviceInfo.szDeviceIdentify, m_ISAPIProtocol.CGI.getDeviceInfo, newOptions) + } + ); + return oPromise + } + ; + ISAPIProtocol.prototype.getDeviceMinusLocalTime = function (oDeviceInfo) { + let oPromise = new Promise(function (resolve, reject) { + var newOptions = { + success: xmlDoc => { + var szDeviceTime = $(xmlDoc).find("localTime").eq(0).text().substring(0, 19); + var arDTms = szDeviceTime.match(/(\d+)-(\d+)-(\d+)(\D+)(\d+):(\d+):(\d+)/); + if (arDTms.length !== 8) { + return + } + var dtDeviceDate = new Date(arDTms[1], arDTms[2] - 1, arDTms[3], arDTms[5], arDTms[6], arDTms[7]); + var szTimeZone = $(xmlDoc).find("timeZone").eq(0).text(); + var iDSTTime = 0; + var iDSTPos = szTimeZone.indexOf("DST"); + if (iDSTPos != -1) { + var dtDSTStart = new Date(dtDeviceDate.getTime()); + dtDSTStart.setMinutes(0); + dtDSTStart.setSeconds(0); + var dtDSTStop = new Date(dtDeviceDate.getTime()); + dtDSTStop.setMinutes(0); + dtDSTStop.setSeconds(0); + var szDSTStartTime = szTimeZone.split(",")[1]; + var szDSTStopTime = szTimeZone.split(",")[2]; + var iDSTStartMonth = parseInt(szDSTStartTime.split(".")[0].replace("M", ""), 10); + dtDSTStart.setMonth(iDSTStartMonth - 1); + var iDSTStartWeek = parseInt(szDSTStartTime.split(".")[1], 10); + var iDSTStartDay = parseInt(szDSTStartTime.split(".")[2].split("/")[0]); + var iDSTStartTime = parseInt(szDSTStartTime.split(".")[2].split("/")[1].split(":")[0], 10); + dtDSTStart.setHours(iDSTStartTime); + var iTime = 0; + var iDate = 0; + for (var i = 1; i <= 31; i++) { + dtDSTStart.setDate(i); + if (dtDSTStart.getMonth() !== iDSTStartMonth - 1) { + break + } + if (dtDSTStart.getDay() == iDSTStartDay) { + iTime++; + iDate = i; + if (iTime == iDSTStartWeek) { + break + } + } + } + dtDSTStart.setDate(iDate); + dtDSTStart.setMonth(iDSTStartMonth - 1); + var iDSTStopMonth = parseInt(szDSTStopTime.split(".")[0].replace("M", ""), 10); + dtDSTStop.setMonth(iDSTStopMonth - 1); + var iDSTStopWeek = parseInt(szDSTStopTime.split(".")[1], 10); + var iDSTStopDay = parseInt(szDSTStopTime.split(".")[2].split("/")[0]); + var iDSTStopTime = parseInt(szDSTStopTime.split(".")[2].split("/")[1].split(":")[0], 10); + dtDSTStop.setHours(iDSTStopTime); + iTime = 0; + iDate = 0; + for (var i = 1; i <= 31; i++) { + dtDSTStop.setDate(i); + if (dtDSTStop.getMonth() !== iDSTStopMonth - 1) { + break + } + if (dtDSTStop.getDay() == iDSTStopDay) { + iTime++; + iDate = i; + if (iTime == iDSTStopWeek) { + break + } + } + } + dtDSTStop.setDate(iDate); + dtDSTStop.setMonth(iDSTStopMonth - 1); + if (dtDSTStart.getTime() < dtDSTStop.getTime()) { + if (dtDeviceDate.getTime() >= dtDSTStart.getTime() && dtDeviceDate.getTime() <= dtDSTStop.getTime()) { + var szDSTTime = szTimeZone.substring(iDSTPos + 3, iDSTPos + 11); + iDSTTime = parseInt(szDSTTime.split(":")[0], 10) * 60 + parseInt(szDSTTime.split(":")[1], 10) + } + } else { + if (dtDeviceDate.getTime() >= dtDSTStart.getTime() || dtDeviceDate.getTime() <= dtDSTStop.getTime()) { + var szDSTTime = szTimeZone.substring(iDSTPos + 3, iDSTPos + 11); + iDSTTime = parseInt(szDSTTime.split(":")[0], 10) * 60 + parseInt(szDSTTime.split(":")[1], 10) + } + } + } + var arDTZms = szTimeZone.match(/\D+([+-])(\d+):(\d+):(\d+)/); + if (arDTZms.length == 5) { + var dtNow = new Date; + var iLocalOffsetMin = dtNow.getTimezoneOffset(); + var iDeviceOffsetMin = parseInt(arDTZms[2]) * 60 + parseInt(arDTZms[3]); + iDeviceOffsetMin = arDTZms[1] === "+" ? iDeviceOffsetMin : -iDeviceOffsetMin; + iDeviceMinusLocalTime = (iLocalOffsetMin - iDeviceOffsetMin + iDSTTime) * 60 * 1e3 + } + oDeviceInfo.iDeviceMinusLocalTime = iDeviceMinusLocalTime; + resolve(iDeviceMinusLocalTime) + } + , + error: () => { + reject() + } + }; + m_webVideoCtrl.I_SendHTTPRequest(oDeviceInfo.szDeviceIdentify, m_ISAPIProtocol.CGI.time, newOptions) + } + ); + return oPromise + } + ; + ISAPIProtocol.prototype.getAnalogChannelInfo = function (oDeviceInfo, options) { + let oPromise = new Promise(function (resolve, reject) { + var newOptions = {}; + m_utilsInc.extend(newOptions, options); + m_utilsInc.extend(newOptions, { + success: function (xmlData) { + var arrXml = []; + arrXml.push(""); + var nodeList = NS.$XML(xmlData).find("VideoInputChannel", true); + oDeviceInfo.iAnalogChannelNum = nodeList.length; + for (var i = 0, iLen = nodeList.length; i < iLen; i++) { + var node = nodeList[i]; + arrXml.push(""); + arrXml.push("" + NS.$XML(node).find("id").eq(0).text() + ""); + arrXml.push("" + NS.$XML(node).find("inputPort").eq(0).text() + ""); + arrXml.push("" + m_utilsInc.escape(NS.$XML(node).find("name").eq(0).text()) + ""); + arrXml.push("" + NS.$XML(node).find("videoFormat").eq(0).text() + ""); + arrXml.push("") + } + arrXml.push(""); + var xmlDoc = m_utilsInc.loadXML(arrXml.join("")); + if (options.success) { + options.success(xmlDoc) + } + resolve(xmlDoc) + }, + error: function (oError) { + if (options.error) { + options.error(oError) + } + reject(oError) + } + }); + m_webVideoCtrl.I_SendHTTPRequest(oDeviceInfo.szDeviceIdentify, m_ISAPIProtocol.CGI.getAnalogChannelInfo, newOptions) + } + ); + return oPromise + } + ; + ISAPIProtocol.prototype.getDigitalChannel = function (oDeviceInfo, options) { + let oPromise = new Promise(function (resolve, reject) { + var newOptions = {}; + m_utilsInc.extend(newOptions, options); + m_utilsInc.extend(newOptions, { + success: function (xmlData) { + var arrXml = []; + arrXml.push(""); + var nodeList = NS.$XML(xmlData).find("InputProxyChannel", true); + for (var i = 0, iLen = nodeList.length; i < iLen; i++) { + var node = nodeList[i]; + arrXml.push(""); + arrXml.push("" + NS.$XML(node).find("id").eq(0).text() + ""); + arrXml.push("" + m_utilsInc.escape(NS.$XML(node).find("name").eq(0).text()) + ""); + arrXml.push("") + } + arrXml.push(""); + var xmlDoc = m_utilsInc.loadXML(arrXml.join("")); + if (options.success) { + options.success(xmlDoc) + } + resolve(xmlDoc) + }, + error: function (oError) { + if (options.error) { + options.error(oError) + } + reject(oError) + } + }); + m_webVideoCtrl.I_SendHTTPRequest(oDeviceInfo.szDeviceIdentify, m_ISAPIProtocol.CGI.getDigitalChannel, newOptions) + } + ); + return oPromise + } + ; + ISAPIProtocol.prototype.getDigitalChannelInfo = function (oDeviceInfo, options) { + let oPromise = new Promise(async (resolve, reject) => { + var oDigitalChannelXML = null + , oDigitalChannelName = {}; + try { + oDigitalChannelXML = await m_ISAPIProtocol.getDigitalChannel(oDeviceInfo, {}) + } catch (oError) { + reject(oError) + } + var nodeList = NS.$XML(oDigitalChannelXML).find("InputProxyChannel", true); + for (var i = 0, iLen = nodeList.length; i < iLen; i++) { + var node = nodeList[i] + , szId = NS.$XML(node).find("id").eq(0).text() + , szName = NS.$XML(node).find("name").eq(0).text(); + oDigitalChannelName[szId] = szName + } + var newOptions = {}; + m_utilsInc.extend(newOptions, options); + m_utilsInc.extend(newOptions, { + success: function (xmlData) { + var arrXml = []; + arrXml.push(""); + var nodeList = NS.$XML(xmlData).find("InputProxyChannelStatus", true); + for (var i = 0, iLen = nodeList.length; i < iLen; i++) { + var node = nodeList[i] + , szId = NS.$XML(node).find("id").eq(0).text(); + arrXml.push(""); + arrXml.push("" + szId + ""); + arrXml.push(""); + arrXml.push("" + NS.$XML(node).find("proxyProtocol").eq(0).text() + ""); + arrXml.push("" + NS.$XML(node).find("addressingFormatType").eq(0).text() + ""); + arrXml.push("" + NS.$XML(node).find("ipAddress").eq(0).text() + ""); + arrXml.push("" + NS.$XML(node).find("managePortNo").eq(0).text() + ""); + arrXml.push("" + NS.$XML(node).find("srcInputPort").eq(0).text() + ""); + arrXml.push("" + m_utilsInc.escape(NS.$XML(node).find("userName").eq(0).text()) + ""); + arrXml.push("" + NS.$XML(node).find("streamType").eq(0).text() + ""); + arrXml.push("" + NS.$XML(node).find("online").eq(0).text() + ""); + arrXml.push("" + m_utilsInc.escape(oDigitalChannelName[szId]) + ""); + arrXml.push(""); + arrXml.push("") + } + arrXml.push(""); + var xmlDoc = m_utilsInc.loadXML(arrXml.join("")); + if (options.success) { + options.success(xmlDoc) + } + resolve(xmlDoc) + }, + error: function (oError) { + if (options.error) { + options.error(oError) + } + reject(oError) + } + }); + m_webVideoCtrl.I_SendHTTPRequest(oDeviceInfo.szDeviceIdentify, m_ISAPIProtocol.CGI.getDigitalChannelInfo, newOptions) + } + ); + return oPromise + } + ; + ISAPIProtocol.prototype.getZeroChannelInfo = function (oDeviceInfo, options) { + return m_webVideoCtrl.I_SendHTTPRequest(oDeviceInfo.szDeviceIdentify, this.CGI.getZeroChannelInfo, options) + } + ; + ISAPIProtocol.prototype.getStreamChannels = function (oDeviceInfo, options) { + if (oDeviceInfo.iAnalogChannelNum != 0) { + var url = m_utilsInc.formatString(this.CGI.getStreamChannels.analog, oDeviceInfo.szHttpProtocol, oDeviceInfo.szIP, oDeviceInfo.iCGIPort) + } else { + var url = m_utilsInc.formatString(this.CGI.getStreamChannels.digital, oDeviceInfo.szHttpProtocol, oDeviceInfo.szIP, oDeviceInfo.iCGIPort) + } + let szURI; + if (oDeviceInfo.iAnalogChannelNum != 0) { + szURI = this.CGI.getStreamChannels.analog + } else { + szURI = this.CGI.getStreamChannels.digital + } + return m_webVideoCtrl.I_SendHTTPRequest(oDeviceInfo.szDeviceIdentify, szURI, options) + } + ; + ISAPIProtocol.prototype.getPPPoEStatus = function (oDeviceInfo, options) { + return m_webVideoCtrl.I_SendHTTPRequest(oDeviceInfo.szDeviceIdentify, this.CGI.getPPPoEStatus, options) + } + ; + ISAPIProtocol.prototype.getUPnPPortStatus = function (oDeviceInfo, options) { + return m_webVideoCtrl.I_SendHTTPRequest(oDeviceInfo.szDeviceIdentify, this.CGI.getUPnPPortStatus, options) + } + ; + ISAPIProtocol.prototype.getNetworkBond = function (oDeviceInfo, options) { + return m_webVideoCtrl.I_SendHTTPRequest(oDeviceInfo.szDeviceIdentify, this.CGI.getNetworkBond, options) + } + ; + ISAPIProtocol.prototype.getNetworkInterface = function (oDeviceInfo, options) { + return m_webVideoCtrl.I_SendHTTPRequest(oDeviceInfo.szDeviceIdentify, this.CGI.getNetworkInterface, options) + } + ; + ISAPIProtocol.prototype.getPortInfo = function (oDeviceInfo, options) { + return m_webVideoCtrl.I_SendHTTPRequest(oDeviceInfo.szDeviceIdentify, this.CGI.getPortInfo, options) + } + ; + ISAPIProtocol.prototype.startRealPlay = function (oDeviceInfo, options) { + let oPromise = new Promise(async function (resolve, reject) { + var iChannelID = options.iChannelID * 100 + options.iStreamType + , szUrl = ""; + var szRtspIP = m_utilsInc.delPort(oDeviceInfo.szIP); + var iRtspPort = oDeviceInfo.iRtspPort; + if (options.iPort) { + iRtspPort = options.iPort + } + if (options.bZeroChannel) { + szUrl = m_utilsInc.formatString(oDeviceInfo.oProtocolInc.CGI.startRealPlay.zeroChannels, szRtspIP, iRtspPort, iChannelID) + } else { + szUrl = m_utilsInc.formatString(oDeviceInfo.oProtocolInc.CGI.startRealPlay.channels, szRtspIP, iRtspPort, iChannelID) + } + var addToWndSet = function () { + var wndInfo = new wndInfoClass; + wndInfo.iIndex = options.iWndIndex; + wndInfo.szIP = oDeviceInfo.szIP; + wndInfo.iCGIPort = oDeviceInfo.iCGIPort; + wndInfo.szDeviceIdentify = oDeviceInfo.szDeviceIdentify; + wndInfo.iChannelID = options.iChannelID; + wndInfo.iPlayStatus = PLAY_STATUS_REALPLAY; + m_wndSet.push(wndInfo) + }; + await m_pluginOBJECT.JS_SetSecretKey(0, m_oLocalCfg.secretKey, 1); + m_pluginOBJECT.JS_Play(szUrl, { + auth: oDeviceInfo.szAuth, + userInfo: oDeviceInfo.szAuth + }, options.iWndIndex, "", "", options.bFlag).then(() => { + addToWndSet(); + resolve() + } + , () => { + reject() + } + ) + } + ); + return oPromise + } + ; + ISAPIProtocol.prototype.startPlay = function (oDeviceInfo, options) { + let oPromise = new Promise(async function (resolve, reject) { + var addToWndSet = function () { + var wndInfo = new wndInfoClass; + wndInfo.iIndex = options.iWndIndex; + wndInfo.szIP = oDeviceInfo.szIP; + wndInfo.szDeviceIdentify = oDeviceInfo.szDeviceIdentify; + wndInfo.iPlayStatus = PLAY_STATUS_PLAYBACK; + m_wndSet.push(wndInfo) + }; + m_pluginOBJECT.JS_Play(options.szUrl, { + auth: oDeviceInfo.szAuth, + userInfo: oDeviceInfo.szAuth + }, options.iWndIndex, options.startTime, options.endTime, true).then(() => { + addToWndSet(); + resolve() + } + , () => { + reject() + } + ) + } + ); + return oPromise + } + ; + ISAPIProtocol.prototype.startVoiceTalk = function (oDeviceInfo, iAudioChannel) { + var szOpenUrl = m_utilsInc.formatString(this.CGI.startVoiceTalk.open, oDeviceInfo.szHttpProtocol, oDeviceInfo.szIP, oDeviceInfo.iCGIPort, iAudioChannel) + , szCloseUrl = m_utilsInc.formatString(this.CGI.startVoiceTalk.close, oDeviceInfo.szHttpProtocol, oDeviceInfo.szIP, oDeviceInfo.iCGIPort, iAudioChannel) + , szAudioDataUrl = m_utilsInc.formatString(this.CGI.startVoiceTalk.audioData, oDeviceInfo.szHttpProtocol, oDeviceInfo.szIP, oDeviceInfo.iCGIPort, iAudioChannel); + return m_pluginOBJECT.JS_StartTalk(szOpenUrl, szCloseUrl, szAudioDataUrl, oDeviceInfo.szAuth, oDeviceInfo.iAudioType, oDeviceInfo.m_iAudioBitRate, oDeviceInfo.m_iAudioSamplingRate, oDeviceInfo.m_iSoundChan, oDeviceInfo.m_iDeviceAudioSoundChan) + } + ; + ISAPIProtocol.prototype.audioPlay = function (options) { + return m_pluginOBJECT.JS_AudioPlay(options.szUrl, options.szAuth, -1, -1, true, options.iAudioType) + } + ; + ISAPIProtocol.prototype.ptzAutoControl = function (oDeviceInfo, bStop, oWndInfo, options) { + let oPromise = new Promise((resolve, reject) => { + var iChannelID = oWndInfo.iChannelID + , szUrl = "" + , szData = ""; + options.iPTZSpeed = options.iPTZSpeed < 7 ? options.iPTZSpeed * 15 : 100; + if (bStop) { + options.iPTZSpeed = 0 + } + if (iChannelID <= oDeviceInfo.iAnalogChannelNum) { + szUrl = m_utilsInc.formatString(m_ISAPIProtocol.CGI.ptzAutoControl.analog, oDeviceInfo.szHttpProtocol, oDeviceInfo.szIP, oDeviceInfo.iCGIPort, oWndInfo.iChannelID) + } else { + szUrl = m_utilsInc.formatString(m_ISAPIProtocol.CGI.ptzAutoControl.digital, oDeviceInfo.szHttpProtocol, oDeviceInfo.szIP, oDeviceInfo.iCGIPort, oWndInfo.iChannelID) + } + szData = "" + "" + "" + options.iPTZSpeed + "" + ""; + var newOptions = { + type: "PUT", + url: szUrl, + data: szData, + success: null, + error: null + }; + var self = this; + m_utilsInc.extend(newOptions, options); + m_utilsInc.extend(newOptions, { + success: function () { + oWndInfo.bPTZAuto = !oWndInfo.bPTZAuto; + if (options.success) { + options.success() + } + resolve() + }, + error: function (oError) { + if (options.error) { + options.error(oError) + } + reject(oError) + } + }); + m_webVideoCtrl.I_SendHTTPRequest(oDeviceInfo.szDeviceIdentify, "", newOptions) + } + ); + return oPromise + } + ; + ISAPIProtocol.prototype.ptzControl = function (oDeviceInfo, bStop, oWndInfo, options) { + var iChannelID = oWndInfo.iChannelID + , szUrl = ""; + if (oWndInfo.bPTZAuto) { + this.ptzAutoControl(oDeviceInfo, true, oWndInfo, { + iPTZSpeed: 0 + }) + } + if (bStop) { + options.iPTZSpeed = 0 + } else { + options.iPTZSpeed = options.iPTZSpeed < 7 ? options.iPTZSpeed * 15 : 100 + } + var oDirection = [{}, { + pan: 0, + tilt: options.iPTZSpeed + }, { + pan: 0, + tilt: -options.iPTZSpeed + }, { + pan: -options.iPTZSpeed, + tilt: 0 + }, { + pan: options.iPTZSpeed, + tilt: 0 + }, { + pan: -options.iPTZSpeed, + tilt: options.iPTZSpeed + }, { + pan: -options.iPTZSpeed, + tilt: -options.iPTZSpeed + }, { + pan: options.iPTZSpeed, + tilt: options.iPTZSpeed + }, { + pan: options.iPTZSpeed, + tilt: -options.iPTZSpeed + }, {}, { + speed: options.iPTZSpeed + }, { + speed: -options.iPTZSpeed + }, { + speed: options.iPTZSpeed + }, { + speed: -options.iPTZSpeed + }, { + speed: options.iPTZSpeed + }, { + speed: -options.iPTZSpeed + }]; + var szData = ""; + var oCommond = {}; + switch (options.iPTZIndex) { + case 1: + case 2: + case 3: + case 4: + case 5: + case 6: + case 7: + case 8: + oCommond = this.CGI.ptzControl; + szData = "" + "" + "" + oDirection[options.iPTZIndex].pan + "" + "" + oDirection[options.iPTZIndex].tilt + "" + ""; + break; + case 10: + case 11: + oCommond = this.CGI.ptzControl; + szData = "" + "" + "" + oDirection[options.iPTZIndex].speed + "" + ""; + break; + case 12: + case 13: + oCommond = this.CGI.ptzFocus; + szData = "" + "" + "" + oDirection[options.iPTZIndex].speed + "" + ""; + break; + case 14: + case 15: + oCommond = this.CGI.ptzIris; + szData = "" + "" + "" + oDirection[options.iPTZIndex].speed + "" + ""; + break; + default: + return + } + if (iChannelID <= oDeviceInfo.iAnalogChannelNum) { + szUrl = m_utilsInc.formatString(oCommond.analog, oDeviceInfo.szHttpProtocol, oDeviceInfo.szIP, oDeviceInfo.iCGIPort, oWndInfo.iChannelID) + } else { + szUrl = m_utilsInc.formatString(oCommond.digital, oDeviceInfo.szHttpProtocol, oDeviceInfo.szIP, oDeviceInfo.iCGIPort, oWndInfo.iChannelID) + } + var newOptions = { + type: "PUT", + url: szUrl, + data: szData, + success: null, + error: null + }; + m_utilsInc.extend(newOptions, options); + return m_webVideoCtrl.I_SendHTTPRequest(oDeviceInfo.szDeviceIdentify, "", newOptions) + } + ; + ISAPIProtocol.prototype.setPreset = function (oDeviceInfo, oWndInfo, options) { + var iChannelID = oWndInfo.iChannelID + , szUrl = "" + , szData = ""; + if (iChannelID <= oDeviceInfo.iAnalogChannelNum) { + szUrl = m_utilsInc.formatString(this.CGI.setPreset.analog, oDeviceInfo.szHttpProtocol, oDeviceInfo.szIP, oDeviceInfo.iCGIPort, oWndInfo.iChannelID, options.iPresetID) + } else { + szUrl = m_utilsInc.formatString(this.CGI.setPreset.digital, oDeviceInfo.szHttpProtocol, oDeviceInfo.szIP, oDeviceInfo.iCGIPort, oWndInfo.iChannelID, options.iPresetID) + } + szData = ""; + szData += ""; + szData += "" + options.iPresetID + ""; + if (oDeviceInfo.szDeviceType != DEVICE_TYPE_IPDOME) { + szData += "" + "Preset" + options.iPresetID + "" + } + szData += ""; + var newOptions = { + type: "PUT", + url: szUrl, + data: szData, + success: null, + error: null + }; + m_utilsInc.extend(newOptions, options); + return m_webVideoCtrl.I_SendHTTPRequest(oDeviceInfo.szDeviceIdentify, "", newOptions) + } + ; + ISAPIProtocol.prototype.goPreset = function (oDeviceInfo, oWndInfo, options) { + var iChannelID = oWndInfo.iChannelID + , szUrl = ""; + if (iChannelID <= oDeviceInfo.iAnalogChannelNum) { + szUrl = m_utilsInc.formatString(this.CGI.goPreset.analog, oDeviceInfo.szHttpProtocol, oDeviceInfo.szIP, oDeviceInfo.iCGIPort, oWndInfo.iChannelID, options.iPresetID) + } else { + szUrl = m_utilsInc.formatString(this.CGI.goPreset.digital, oDeviceInfo.szHttpProtocol, oDeviceInfo.szIP, oDeviceInfo.iCGIPort, oWndInfo.iChannelID, options.iPresetID) + } + var newOptions = { + type: "PUT", + url: szUrl, + success: null, + error: null + }; + m_utilsInc.extend(newOptions, options); + return m_webVideoCtrl.I_SendHTTPRequest(oDeviceInfo.szDeviceIdentify, "", newOptions) + } + ; + ISAPIProtocol.prototype.recordSearch = function (oDeviceInfo, options) { + let oPromise = new Promise((resolve, reject) => { + var szUrl = "" + , szData = "" + , iChannelID = options.iChannelID + , iStreamType = options.iStreamType + , szStartTime = options.szStartTime.replace(" ", "T") + "Z" + , szEndTime = options.szEndTime.replace(" ", "T") + "Z"; + szUrl = m_utilsInc.formatString(m_ISAPIProtocol.CGI.recordSearch, oDeviceInfo.szHttpProtocol, oDeviceInfo.szIP, oDeviceInfo.iCGIPort); + szData = "" + "" + "" + new UUID + "" + "" + (iChannelID * 100 + iStreamType) + "" + "" + "" + "" + szStartTime + "" + "" + szEndTime + "" + "" + "" + "50" + "" + options.iSearchPos + "" + "" + "//metadata.ISAPI.org/VideoMotion" + "" + ""; + var httpClient = new HttpPluginClient; + var newOptions = { + type: "POST", + url: szUrl, + data: szData, + success: null, + error: null + }; + m_utilsInc.extend(newOptions, options); + m_utilsInc.extend(newOptions, { + success: function (xmlDoc) { + var arrXml = []; + arrXml.push(""); + arrXml.push("" + NS.$XML(xmlDoc).find("responseStatus").eq(0).text() + ""); + arrXml.push("" + NS.$XML(xmlDoc).find("responseStatusStrg").eq(0).text() + ""); + arrXml.push("" + NS.$XML(xmlDoc).find("numOfMatches").eq(0).text() + ""); + arrXml.push(""); + var nodeList = NS.$XML(xmlDoc).find("searchMatchItem", true); + for (var i = 0, iLen = nodeList.length; i < iLen; i++) { + var node = nodeList[i]; + arrXml.push(""); + arrXml.push("" + NS.$XML(node).find("trackID").eq(0).text() + ""); + arrXml.push("" + NS.$XML(node).find("startTime").eq(0).text() + ""); + arrXml.push("" + NS.$XML(node).find("endTime").eq(0).text() + ""); + arrXml.push("" + m_utilsInc.escape(NS.$XML(node).find("playbackURI").eq(0).text()) + ""); + arrXml.push("" + NS.$XML(node).find("metadataDescriptor").eq(0).text().split("/")[1] + ""); + arrXml.push("") + } + arrXml.push(""); + arrXml.push(""); + xmlDoc = m_utilsInc.loadXML(arrXml.join("")); + if (options.success) { + options.success(xmlDoc) + } + resolve(xmlDoc) + }, + error: function (oError) { + if (options.error) { + options.error(oError) + } + reject(oError) + } + }); + m_webVideoCtrl.I_SendHTTPRequest(oDeviceInfo.szDeviceIdentify, "", newOptions) + } + ); + return oPromise + } + ; + ISAPIProtocol.prototype.startPlayback = function (oDeviceInfo, options) { + let oPromise = new Promise(async function (resolve, reject) { + var iWndIndex = options.iWndIndex + , szUrl = "" + , szStartTime = options.szStartTime + , szEndTime = options.szEndTime; + var szRtspIP = m_utilsInc.delPort(oDeviceInfo.szIP); + var iRtspPort = oDeviceInfo.iRtspPort; + if (options.iPort) { + iRtspPort = options.iPort + } + szUrl = m_utilsInc.formatString(options.cgi, szRtspIP, iRtspPort, options.iChannelID); + if (!m_utilsInc.isUndefined(options.oTransCodeParam)) { + var szTransStreamXml = _generateTransCodeXml(options.oTransCodeParam); + if ("" == szTransStreamXml) { + return -1 + } + m_pluginOBJECT.JS_SetTrsPlayBackParam(iWndIndex, szTransStreamXml) + } + var addToWndSet = function () { + var wndInfo = new wndInfoClass; + wndInfo.iIndex = iWndIndex; + wndInfo.szIP = oDeviceInfo.szIP; + wndInfo.iCGIPort = oDeviceInfo.iCGIPort; + wndInfo.szDeviceIdentify = oDeviceInfo.szDeviceIdentify; + wndInfo.iChannelID = options.iChannelID; + wndInfo.iPlayStatus = PLAY_STATUS_PLAYBACK; + m_wndSet.push(wndInfo) + }; + m_pluginOBJECT.JS_Play(szUrl, { + auth: oDeviceInfo.szAuth, + userInfo: oDeviceInfo.szAuth + }, iWndIndex, szStartTime, szEndTime, options.bFlag).then(() => { + addToWndSet(); + resolve() + } + , () => { + reject() + } + ) + } + ); + return oPromise + } + ; + ISAPIProtocol.prototype.reversePlayback = function (oDeviceInfo, options) { + let oPromise = new Promise(function (resolve, reject) { + var iWndIndex = options.iWndIndex + , szStartTime = options.szStartTime + , szEndTime = options.szEndTime; + var szRtspIP = m_utilsInc.delPort(oDeviceInfo.szIP); + var iRtspPort = oDeviceInfo.iRtspPort; + if (options.iPort) { + iRtspPort = options.iPort + } + var szUrl = m_utilsInc.formatString(options.cgi, szRtspIP, iRtspPort, options.iChannelID); + m_pluginOBJECT.JS_ReversePlay(szUrl, { + auth: oDeviceInfo.szAuth, + userInfo: oDeviceInfo.szAuth + }, iWndIndex, szStartTime, szEndTime).then(() => { + var wndInfo = new wndInfoClass; + wndInfo.iIndex = iWndIndex; + wndInfo.szIP = oDeviceInfo.szIP; + wndInfo.iCGIPort = oDeviceInfo.iCGIPort; + wndInfo.szDeviceIdentify = oDeviceInfo.szDeviceIdentify; + wndInfo.iChannelID = options.iChannelID; + wndInfo.iPlayStatus = PLAY_STATUS_REVERSE_PLAYBACK; + m_wndSet.push(wndInfo); + resolve() + } + , () => { + reject() + } + ) + } + ); + return oPromise + } + ; + ISAPIProtocol.prototype.startDownloadRecord = function (oDeviceInfo, options) { + var szUrl = m_utilsInc.formatString(this.CGI.startDownloadRecord, oDeviceInfo.szHttpProtocol, oDeviceInfo.szIP, oDeviceInfo.iCGIPort); + var szDownXml = "" + "" + "" + m_utilsInc.escape(options.szPlaybackURI) + "" + ""; + return m_pluginOBJECT.JS_StartAsyncDownload(szUrl, oDeviceInfo.szAuth, options.szFileName, szDownXml, options.bDateDir) + } + ; + ISAPIProtocol.prototype.exportDeviceConfig = function (oDeviceInfo) { + var szUrl = m_utilsInc.formatString(this.CGI.downloaddeviceConfig, oDeviceInfo.szHttpProtocol, oDeviceInfo.szIP, oDeviceInfo.iCGIPort); + return m_pluginOBJECT.JS_DownloadFile(szUrl, oDeviceInfo.szAuth, "", 0) + } + ; + ISAPIProtocol.prototype.importDeviceConfig = function (oDeviceInfo, options) { + var szUrl = m_utilsInc.formatString(this.CGI.uploaddeviceConfig, oDeviceInfo.szHttpProtocol, oDeviceInfo.szIP, oDeviceInfo.iCGIPort); + return m_pluginOBJECT.JS_StartAsynUpload(szUrl, "", oDeviceInfo.szAuth, options.szFileName, 0) + } + ; + ISAPIProtocol.prototype.restart = function (oDeviceInfo, options) { + var newOptions = { + type: "PUT", + success: null, + error: null + }; + return m_webVideoCtrl.I_SendHTTPRequest(oDeviceInfo.szDeviceIdentify, this.CGI.restart, newOptions) + } + ; + ISAPIProtocol.prototype.restore = function (oDeviceInfo, szMode, options) { + var szUrl = m_utilsInc.formatString(this.CGI.restore, oDeviceInfo.szHttpProtocol, oDeviceInfo.szIP, oDeviceInfo.iCGIPort, szMode); + var newOptions = { + type: "PUT", + url: szUrl, + success: null, + error: null + }; + return m_webVideoCtrl.I_SendHTTPRequest(oDeviceInfo.szDeviceIdentify, "", newOptions) + } + ; + ISAPIProtocol.prototype.startUpgrade = function (oDeviceInfo, szFileName) { + var szUpgradeURL = m_utilsInc.formatString(this.CGI.startUpgrade.upgrade, oDeviceInfo.szHttpProtocol, oDeviceInfo.szIP, oDeviceInfo.iCGIPort) + , szStatusURL = m_utilsInc.formatString(this.CGI.startUpgrade.status, oDeviceInfo.szHttpProtocol, oDeviceInfo.szIP, oDeviceInfo.iCGIPort); + return m_pluginOBJECT.JS_StartUpgrade(szUpgradeURL, "", oDeviceInfo.szAuth, szFileName) + } + ; + ISAPIProtocol.prototype.set3DZoom = function (oDeviceInfo, oWndInfo, oPoints, options) { + var iChannelID = oWndInfo.iChannelID + , szUrl = ""; + if (iChannelID <= oDeviceInfo.iAnalogChannelNum) { + szUrl = m_utilsInc.formatString(this.CGI.set3DZoom.analog, oDeviceInfo.szHttpProtocol, oDeviceInfo.szIP, oDeviceInfo.iCGIPort, oWndInfo.iChannelID) + } else { + szUrl = m_utilsInc.formatString(this.CGI.set3DZoom.digital, oDeviceInfo.szHttpProtocol, oDeviceInfo.szIP, oDeviceInfo.iCGIPort, oWndInfo.iChannelID) + } + if (oPoints[0][0] === 0 && oPoints[0][1] === 0 && !(oPoints[2][0] === 0 && oPoints[2][1] === 0)) { + oPoints[0][0] = oPoints[2][0]; + oPoints[0][1] = oPoints[2][1] + } + var szXml = "" + "" + parseInt(oPoints[0][0] * 255, 10) + "" + "" + (255 - parseInt(oPoints[0][1] * 255, 10)) + "" + "" + parseInt(oPoints[2][0] * 255, 10) + "" + "" + (255 - parseInt(oPoints[2][1] * 255, 10)) + ""; + var httpClient = new HttpPluginClient; + var newOptions = { + type: "PUT", + url: szUrl, + data: szXml, + success: null, + error: null + }; + m_utilsInc.extend(newOptions, options); + return m_webVideoCtrl.I_SendHTTPRequest(oDeviceInfo.szDeviceIdentify, "", newOptions) + } + ; + ISAPIProtocol.prototype.getSDKCapa = function (oDeviceInfo, options) { + return m_webVideoCtrl.I_SendHTTPRequest(oDeviceInfo.szDeviceIdentify, this.CGI.SDKCapabilities, options) + } + ; + ISAPIProtocol.prototype.deviceCapturePic = function (oDeviceInfo, iChannelID, szPicName, options) { + var iChannelID = iChannelID * 100 + 1; + var iRet = -1; + var szUrl = m_utilsInc.formatString(this.CGI.deviceCapture.channels, oDeviceInfo.szHttpProtocol, oDeviceInfo.szIP, oDeviceInfo.iCGIPort, iChannelID); + var aQuery = []; + if (m_utilsInc.isInt(options.iResolutionWidth)) { + aQuery.push("videoResolutionWidth=" + options.iResolutionWidth) + } + if (m_utilsInc.isInt(options.iResolutionHeight)) { + aQuery.push("videoResolutionHeight=" + options.iResolutionHeight) + } + if (aQuery.length > 0) { + szUrl += "?" + aQuery.join("&") + } + var JDeviceCapturePic = function (szUrl, szFileName) { + var szFileFormat = ".jpg"; + $("body").append('
  • '); + $("#jsplugin_download_li").trigger("click"); + $("#jsplugin_download_a").remove(); + return 0 + }; + iRet = JDeviceCapturePic(szUrl, szPicName); + return iRet + } + ; + ISAPIProtocol.prototype.digestLogin = function (szIP, iProtocol, iPort, szUserName, szPassword, options) { + var szHttpProtocol = ""; + if (iProtocol == 2) { + szHttpProtocol = "https://" + } else { + szHttpProtocol = "http://" + } + var szUrl = m_utilsInc.formatString(this.CGI.login, szHttpProtocol, szIP, iPort); + var newOptions = { + type: "GET", + url: szUrl, + auth: m_utilsInc.Base64.encode(":" + szUserName + ":" + szPassword), + success: null, + error: null + }; + var szDeviceIdentify = szIP + "_" + iPort; + m_utilsInc.extend(newOptions, options); + return m_webVideoCtrl.I_SendHTTPRequest(szDeviceIdentify, "", newOptions) + } + ; + ISAPIProtocol.prototype.getSystemCapa = function (oDeviceInfo, options) { + return m_webVideoCtrl.I_SendHTTPRequest(oDeviceInfo.szDeviceIdentify, this.CGI.systemCapabilities, options) + } + ; + (function (wvc) { + var XML = function (xd) { + this.elems = []; + this.length = 0; + this.length = this.elems.push(xd) + }; + XML.prototype.find = function (szNodeName, bRet) { + var oXmlNode = this.elems[this.length - 1] ? this.elems[this.length - 1].getElementsByTagName(szNodeName) : []; + this.length = this.elems.push(oXmlNode); + if (bRet) { + return oXmlNode + } else { + return this + } + } + ; + XML.prototype.eq = function (i, bRet) { + var iLen = this.elems[this.length - 1].length + , oXmlNode = null; + if (iLen > 0 && i < iLen) { + oXmlNode = this.elems[this.length - 1][i] + } + this.length = this.elems.push(oXmlNode); + if (bRet) { + return oXmlNode + } else { + return this + } + } + ; + XML.prototype.text = function (szText) { + if (this.elems[this.length - 1]) { + if (szText) { + if (window.DOMParser) { + this.elems[this.length - 1].textContent = szText + } else { + this.elems[this.length - 1].text = szText + } + } else { + if (window.DOMParser) { + return this.elems[this.length - 1].textContent + } else { + return this.elems[this.length - 1].text + } + } + } else { + return "" + } + } + ; + XML.prototype.attr = function (szAttrName) { + if (this.elems[this.length - 1]) { + var oAttr = this.elems[this.length - 1].attributes.getNamedItem(szAttrName); + if (oAttr) { + return oAttr.value + } else { + return "" + } + } + } + ; + wvc.$XML = function (xd) { + return new XML(xd) + } + } + )(this); + var Utils = function () { }; + Utils.prototype.extend = function () { + var target = arguments[0] || {}, i = 1, length = arguments.length, options; + for (; i < length; i++) { + if ((options = arguments[i]) != null) { + for (var name in options) { + var src = target[name] + , copy = options[name]; + if (target === copy) { + continue + } + if ("object" == typeof copy) { + target[name] = this.extend({}, copy) + } else if (copy !== undefined) { + target[name] = copy + } + } + } + } + return target + } + ; + Utils.prototype.browser = function () { + var rchrome = /(chrome)[ \/]([\w.]+)/; + var rsafari = /(safari)[ \/]([\w.]+)/; + var ropera = /(opera)(?:.*version)?[ \/]([\w.]+)/; + var rmsie = /(msie) ([\w.]+)/; + var rmsie2 = /(trident.*rv:)([\w.]+)/; + var rmozilla = /(mozilla)(?:.*? rv:([\w.]+))?/; + var ua = navigator.userAgent.toLowerCase(); + var match = rchrome.exec(ua) || rsafari.exec(ua) || ropera.exec(ua) || rmsie.exec(ua) || rmsie2.exec(ua) || ua.indexOf("compatible") < 0 && rmozilla.exec(ua) || ["unknow", "0"]; + if (match.length > 0 && match[1].indexOf("trident") > -1) { + match[1] = "msie" + } + var oBrowser = {}; + oBrowser[match[1]] = true; + oBrowser.version = match[2]; + return oBrowser + } + ; + Utils.prototype.loadXML = function (szXml) { + if (null == szXml || "" == szXml) { + return null + } + var oXmlDoc = null; + if (window.DOMParser) { + var oParser = new DOMParser; + oXmlDoc = oParser.parseFromString(szXml, "text/xml") + } else { + oXmlDoc = new ActiveXObject("Microsoft.XMLDOM"); + oXmlDoc.async = false; + oXmlDoc.loadXML(szXml) + } + return oXmlDoc + } + ; + Utils.prototype.toXMLStr = function (oXmlDoc) { + var szXmlDoc = ""; + try { + var oSerializer = new XMLSerializer; + szXmlDoc = oSerializer.serializeToString(oXmlDoc) + } catch (e) { + try { + szXmlDoc = oXmlDoc.xml + } catch (e) { + return "" + } + } + if (szXmlDoc.indexOf("" + szXmlDoc + } + return szXmlDoc + } + ; + Utils.prototype.escape = function (szStr) { + if (szStr) { + return szStr.replace(/&/g, "&").replace(//g, ">") + } + return szStr + } + ; + Utils.prototype.dateFormat = function (oDate, fmt) { + var o = { + "M+": oDate.getMonth() + 1, + "d+": oDate.getDate(), + "h+": oDate.getHours(), + "m+": oDate.getMinutes(), + "s+": oDate.getSeconds(), + "q+": Math.floor((oDate.getMonth() + 3) / 3), + S: oDate.getMilliseconds() + }; + if (/(y+)/.test(fmt)) { + fmt = fmt.replace(RegExp.$1, (oDate.getFullYear() + "").substr(4 - RegExp.$1.length)) + } + for (var k in o) { + if (new RegExp("(" + k + ")").test(fmt)) { + fmt = fmt.replace(RegExp.$1, RegExp.$1.length == 1 ? o[k] : ("00" + o[k]).substr(("" + o[k]).length)) + } + } + return fmt + } + ; + Utils.prototype.Base64 = { + _keyStr: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=", + encode: function (input) { + var output = ""; + var chr1, chr2, chr3, enc1, enc2, enc3, enc4; + var i = 0; + input = Utils.prototype.Base64._utf8_encode(input); + while (i < input.length) { + chr1 = input.charCodeAt(i++); + chr2 = input.charCodeAt(i++); + chr3 = input.charCodeAt(i++); + enc1 = chr1 >> 2; + enc2 = (chr1 & 3) << 4 | chr2 >> 4; + enc3 = (chr2 & 15) << 2 | chr3 >> 6; + enc4 = chr3 & 63; + if (isNaN(chr2)) { + enc3 = enc4 = 64 + } else if (isNaN(chr3)) { + enc4 = 64 + } + output = output + this._keyStr.charAt(enc1) + this._keyStr.charAt(enc2) + this._keyStr.charAt(enc3) + this._keyStr.charAt(enc4) + } + return output + }, + decode: function (input) { + var output = ""; + var chr1, chr2, chr3; + var enc1, enc2, enc3, enc4; + var i = 0; + input = input.replace(/[^A-Za-z0-9\+\/\=]/g, ""); + while (i < input.length) { + enc1 = this._keyStr.indexOf(input.charAt(i++)); + enc2 = this._keyStr.indexOf(input.charAt(i++)); + enc3 = this._keyStr.indexOf(input.charAt(i++)); + enc4 = this._keyStr.indexOf(input.charAt(i++)); + chr1 = enc1 << 2 | enc2 >> 4; + chr2 = (enc2 & 15) << 4 | enc3 >> 2; + chr3 = (enc3 & 3) << 6 | enc4; + output = output + String.fromCharCode(chr1); + if (enc3 != 64) { + output = output + String.fromCharCode(chr2) + } + if (enc4 != 64) { + output = output + String.fromCharCode(chr3) + } + } + output = Utils.prototype.Base64._utf8_decode(output); + return output + }, + _utf8_encode: function (string) { + string = string.replace(/\r\n/g, "\n"); + var utftext = ""; + for (var n = 0; n < string.length; n++) { + var c = string.charCodeAt(n); + if (c < 128) { + utftext += String.fromCharCode(c) + } else if (c > 127 && c < 2048) { + utftext += String.fromCharCode(c >> 6 | 192); + utftext += String.fromCharCode(c & 63 | 128) + } else { + utftext += String.fromCharCode(c >> 12 | 224); + utftext += String.fromCharCode(c >> 6 & 63 | 128); + utftext += String.fromCharCode(c & 63 | 128) + } + } + return utftext + }, + _utf8_decode: function (utftext) { + var string = ""; + var i = 0; + var c = c1 = c2 = 0; + while (i < utftext.length) { + c = utftext.charCodeAt(i); + if (c < 128) { + string += String.fromCharCode(c); + i++ + } else if (c > 191 && c < 224) { + c2 = utftext.charCodeAt(i + 1); + string += String.fromCharCode((c & 31) << 6 | c2 & 63); + i += 2 + } else { + c2 = utftext.charCodeAt(i + 1); + c3 = utftext.charCodeAt(i + 2); + string += String.fromCharCode((c & 15) << 12 | (c2 & 63) << 6 | c3 & 63); + i += 3 + } + } + return string + } + }; + Utils.prototype.createEventScript = function (szFor, szEvent, szHtml) { + var oScript = document.createElement("script"); + oScript.htmlFor = szFor; + oScript.event = szEvent; + oScript.innerHTML = szHtml; + document.body.parentNode.appendChild(oScript) + } + ; + Utils.prototype.isInt = function (str) { + return /^\d+$/.test(str) + } + ; + Utils.prototype.getDirName = function () { + var szDirName = ""; + if (m_options.szBasePath !== "") { + szDirName = m_options.szBasePath + } else { + var szDirNameRegex = /[^?#]*\//; + var oScript = document.getElementById("videonode"); + if (oScript) { + szDirName = oScript.src.match(szDirNameRegex)[0] + } else { + var aScript = document.scripts; + for (var i = 0, iLen = aScript.length; i < iLen; i++) { + if (aScript[i].src.indexOf("webVideoCtrl.js") > -1) { + oScript = aScript[i]; + break + } + } + if (oScript) { + szDirName = oScript.src.match(szDirNameRegex)[0] + } + } + } + return szDirName + } + ; + Utils.prototype.loadScript = function (url, callback) { + var oScript = document.createElement("script"); + oScript.type = "text/javascript"; + oScript.onload = function () { + callback() + } + ; + oScript.src = url; + document.getElementsByTagName("head")[0].appendChild(oScript) + } + ; + Utils.prototype.cookie = function (key, value, options) { + if (arguments.length > 1 && (value === null || typeof value !== "object")) { + options = this.extend({}, options); + if (value === null) { + options.expires = -1 + } + if (typeof options.expires === "number") { + var days = options.expires + , t = options.expires = new Date; + t.setDate(t.getDate() + days) + } + return document.cookie = [encodeURIComponent(key), "=", options.raw ? String(value) : encodeURIComponent(String(value)), options.expires ? "; expires=" + options.expires.toUTCString() : "", options.path ? "; path=" + options.path : "; path=/", options.domain ? "; domain=" + options.domain : "", options.secure ? "; secure" : ""].join("") + } + options = value || {}; + var result, decode = options.raw ? function (s) { + return s + } + : decodeURIComponent; + return (result = new RegExp("(?:^|; )" + encodeURIComponent(key) + "=([^;]*)").exec(document.cookie)) ? decode(result[1]) : null + } + ; + Utils.prototype.isUndefined = function (o) { + return typeof o === "undefined" + } + ; + Utils.prototype.isObject = function (o) { + return Object.prototype.toString.call(o) === "[object Object]" + } + ; + Utils.prototype.delPort = function (szIP) { + var iPos = szIP.indexOf(":"); + if (iPos > -1) { + return szIP.substring(0, iPos) + } else { + return szIP + } + } + ; + Utils.prototype.formatString = function () { + var string = arguments[0]; + for (var i = 1; i < arguments.length; i++) { + string = string.replace("%s", arguments[i]) + } + return string + } + ; + Utils.prototype.encodeString = function (str) { + if (str) { + return str.replace(/&/g, "&").replace(//g, ">") + } else { + return "" + } + } + ; + Utils.prototype.formatPolygonXmlToJson = function (szXml) { + var oXml = this.loadXML(szXml); + var aPolygonList = []; + var aPoints = []; + var aRect = []; + var aAddPolygon = []; + var aAddRect = []; + var oData; + function colorTransfer(szColor) { + var iValue = parseInt(szColor, 10); + var szValue = iValue.toString(16); + szValue = "0" + szValue; + return szValue.substring(szValue.length - 2) + } + $(oXml).find("SnapPolygon").each(function () { + var iEditType = parseInt($(this).find("EditType, editType").text(), 10) || 0; + var isClose = $(this).find("isClosed").text() === "true"; + var iPolygonType = parseInt($(this).find("polygonType").text(), 10); + var fShowSquare = parseFloat($(this).find("showSquare").text()) || 0; + var szTips = $(this).find("tips").text() || $(this).find("Tips").text(); + var iTipsPos = parseInt($(this).find("tipsPos").text(), 10) || 0; + var bShowWH = $(this).find("showWH").text() === "true"; + var szColor = "#" + colorTransfer($(this).find("r").text()) + colorTransfer($(this).find("g").text()) + colorTransfer($(this).find("b").text()); + var iMaxPoint = parseInt($(this).find("PointNumMax").text(), 10) - 1; + var iMinPoint = parseInt($(this).find("MinClosed").text(), 10) - 1; + var iId = parseInt($(this).find("id").text(), 10); + var iRedrawMode = parseInt($(this).find("RedrawMode").text(), 10) || 0; + if ($(this).find("pointList").find("point").length === 0) { + if (iPolygonType === 1) { + aAddPolygon.push({ + id: iId, + tips: szTips, + drawColor: szColor, + translucent: .1, + maxShapeSupport: 1, + maxPointSupport: iMaxPoint, + minPointSupport: iMinPoint, + showWH: bShowWH, + redrawMode: iRedrawMode + }) + } else if (iPolygonType === 0) { + aAddRect.push({ + id: iId, + tips: szTips, + drawColor: szColor, + translucent: .1, + widthHeightRate: fShowSquare, + maxShapeSupport: 1, + type: 1, + redrawMode: iRedrawMode, + tipsPos: iTipsPos + }) + } + } else { + aPoints = []; + $(this).find("pointList").find("point").each(function () { + aPoints.push([parseFloat($(this).find("x").text()), parseFloat($(this).find("y").text())]) + }); + oData = { + id: iId, + editType: iEditType, + points: aPoints, + closed: isClose, + tips: szTips, + drawColor: szColor, + maxPointSupport: iMaxPoint, + minPointSupport: iMinPoint, + translucent: .1, + redrawMode: iRedrawMode + }; + if (iPolygonType === 1) { + oData["showWH"] = bShowWH; + aPolygonList.push(oData) + } else if (iPolygonType === 0) { + oData["widthHeightRate"] = fShowSquare; + oData["type"] = 1; + oData.tipsPos = iTipsPos; + aRect.push(oData) + } + } + }); + return { + aRect: aRect, + aPolygon: aPolygonList, + aAddRect: aAddRect, + aAddPolygon: aAddPolygon + } + } + ; + Utils.prototype.formatPolygonJsonToXml = function (aData) { + function colorRgb(szHex) { + var sColor = szHex.toLowerCase(); + var reg = /^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/; + if (sColor && reg.test(sColor)) { + var i; + if (sColor.length === 4) { + var sColorNew = "#"; + for (i = 1; i < 4; i += 1) { + sColorNew += sColor.slice(i, i + 1).concat(sColor.slice(i, i + 1)) + } + sColor = sColorNew + } + var aColorChange = []; + for (i = 1; i < 7; i += 2) { + aColorChange.push(parseInt("0x" + sColor.slice(i, i + 2), 16)) + } + return aColorChange + } + return [0, 0, 0] + } + var aPolygon = aData[0]; + var aRect = aData[1]; + var szXml = ""; + var that = this; + $.each(aPolygon, function (index, oVal) { + var aColor = [0, 0, 0]; + if (oVal.drawColor) { + aColor = colorRgb(oVal.drawColor) + } else { + aColor = colorRgb("#FF0000") + } + szXml += ""; + szXml += "" + oVal.id + ""; + oVal.tips = that.encodeString(oVal.tips); + if (!oVal.tips) { + szXml += "" + } else { + szXml += "" + oVal.tips + "" + } + szXml += "" + oVal.closed.toString() + ""; + szXml += "" + aColor[0] + "" + aColor[1] + "" + aColor[2] + ""; + szXml += "1"; + szXml += "" + (oVal.pointNumMax ? oVal.pointNumMax : 10) + ""; + szXml += "" + (oVal.minClosed ? oVal.minClosed : 4) + ""; + szXml += ""; + $.each(oVal.points, function (i, aVal) { + szXml += "" + aVal[0] + "" + aVal[1] + "" + }); + szXml += ""; + szXml += "" + }); + $.each(aRect, function (index, oVal) { + var aColor = [0, 0, 0]; + if (oVal.drawColor) { + aColor = colorRgb(oVal.drawColor) + } else { + aColor = colorRgb("#FF0000") + } + szXml += ""; + szXml += "" + oVal.id + ""; + szXml += "" + aColor[0] + "" + aColor[1] + "" + aColor[2] + ""; + szXml += "0"; + oVal.tips = that.encodeString(oVal.tips); + if (!oVal.tips) { + szXml += "" + } else { + szXml += "" + oVal.tips + "" + } + if (typeof oVal.closed !== "undefined" && oVal.closed !== null) { + szXml += "" + oVal.closed.toString() + "" + } else { + szXml += "true" + } + szXml += ""; + var aRectTmp = []; + if (oVal.points.length) { + var iMinX = 2; + var iMaxX = -1; + var iMinY = 2; + var iMaxY = -1; + $.each(oVal.points, function () { + if (iMinX > this[0]) { + iMinX = this[0] + } + if (iMinY > this[1]) { + iMinY = this[1] + } + if (iMaxX < this[0]) { + iMaxX = this[0] + } + if (iMaxY < this[1]) { + iMaxY = this[1] + } + }); + aRectTmp.push([iMinX, iMinY]); + aRectTmp.push([iMaxX, iMinY]); + aRectTmp.push([iMaxX, iMaxY]); + aRectTmp.push([iMinX, iMaxY]) + } + $.each(aRectTmp, function (i, aVal) { + szXml += "" + aVal[0] + "" + aVal[1] + "" + }); + szXml += ""; + szXml += "" + }); + szXml += ""; + return szXml + } + ; + Utils.prototype.convertToUTCTime = function (szLocalTime, szFormat) { + if (typeof szFormat == "undefined") { + szFormat = "yyyy-MM-dd hh:mm:ss" + } + szLocalTime = szLocalTime.replace("T", " ").replace("Z", ""); + var _dLocalDate = new Date(Date.parse(szLocalTime.replace(/-/g, "/"))); + _dLocalDate = this.utcDateFormat(_dLocalDate, szFormat); + _dLocalDate = _dLocalDate.replace(" ", "T"); + return _dLocalDate + } + ; + Utils.prototype.utcDateFormat = function (oDate, fmt) { + var o = { + "M+": oDate.getUTCMonth() + 1, + "d+": oDate.getUTCDate(), + "h+": oDate.getUTCHours(), + "m+": oDate.getUTCMinutes(), + "s+": oDate.getUTCSeconds(), + "q+": Math.floor((oDate.getUTCMonth() + 3) / 3), + S: oDate.getUTCMilliseconds() + }; + if (/(y+)/.test(fmt)) { + fmt = fmt.replace(RegExp.$1, (oDate.getUTCFullYear() + "").substr(4 - RegExp.$1.length)) + } + for (var k in o) { + if (new RegExp("(" + k + ")").test(fmt)) { + fmt = fmt.replace(RegExp.$1, RegExp.$1.length == 1 ? o[k] : ("00" + o[k]).substr(("" + o[k]).length)) + } + } + return fmt + } + ; + Utils.prototype.convertToLocalTime = function (szUTCTime, iDiffTime) { + szUTCTime = szUTCTime.replace("T", " ").replace("Z", ""); + if (typeof iDiffTime == "undefined") { + iDiffTime = 0 + } + var szFormat = "yyyy-MM-dd hh:mm:ss"; + var _aDate = szUTCTime.split(" ")[0].split("-"); + var _iFullYear = parseInt(_aDate[0], 10); + var _iMonth = parseInt(_aDate[1], 10) - 1; + var _iDay = parseInt(_aDate[2], 10); + var _aTimes = szUTCTime.split(" ")[1].split(":"); + var _iHour = parseInt(_aTimes[0], 10); + var _iMinute = parseInt(_aTimes[1], 10); + var _iSecond = parseInt(_aTimes[2], 10); + var _dLocalDate = new Date(Date.UTC(_iFullYear, _iMonth, _iDay, _iHour, _iMinute, _iSecond)); + _dLocalDate.setTime(_dLocalDate.getTime() + iDiffTime); + return this.dateFormat(_dLocalDate, szFormat).replace(" ", "T") + "Z" + } + ; + function UUID() { + this.id = this.createUUID() + } + UUID.prototype.valueOf = function () { + return this.id + } + ; + UUID.prototype.toString = function () { + return this.id + } + ; + UUID.prototype.createUUID = function () { + var dg = new Date(1582, 10, 15, 0, 0, 0, 0); + var dc = new Date; + var t = dc.getTime() - dg.getTime(); + var h = "-"; + var tl = UUID.getIntegerBits(t, 0, 31); + var tm = UUID.getIntegerBits(t, 32, 47); + var thv = UUID.getIntegerBits(t, 48, 59) + "1"; + var csar = UUID.getIntegerBits(UUID.rand(4095), 0, 7); + var csl = UUID.getIntegerBits(UUID.rand(4095), 0, 7); + var n = UUID.getIntegerBits(UUID.rand(8191), 0, 7) + UUID.getIntegerBits(UUID.rand(8191), 8, 15) + UUID.getIntegerBits(UUID.rand(8191), 0, 7) + UUID.getIntegerBits(UUID.rand(8191), 8, 15) + UUID.getIntegerBits(UUID.rand(8191), 0, 15); + return tl + h + tm + h + thv + h + csar + csl + h + n + } + ; + UUID.getIntegerBits = function (val, start, end) { + var base16 = UUID.returnBase(val, 16); + var quadArray = new Array; + var quadString = ""; + var i = 0; + for (i = 0; i < base16.length; i++) { + quadArray.push(base16.substring(i, i + 1)) + } + for (i = Math.floor(start / 4); i <= Math.floor(end / 4); i++) { + if (!quadArray[i] || quadArray[i] == "") + quadString += "0"; + else + quadString += quadArray[i] + } + return quadString + } + ; + UUID.returnBase = function (number, base) { + var convert = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"]; + if (number < base) + var output = convert[number]; + else { + var MSD = "" + Math.floor(number / base); + var LSD = number - MSD * base; + if (MSD >= base) + var output = this.returnBase(MSD, base) + convert[LSD]; + else + var output = convert[MSD] + convert[LSD] + } + return output + } + ; + UUID.rand = function (max) { + return Math.floor(Math.random() * max) + } + ; + m_ISAPIProtocol = new ISAPIProtocol; + m_utilsInc = new Utils; + return this + }(); + var NS = window.WebVideoCtrl = WebVideoCtrl; + NS.version = "3.3.0" +} +)(this); +if ("object" === typeof exports && typeof module !== "undefined") { } else if ("function" === typeof define && define.amd) { + define(function () { + return WebVideoCtrl + }) +} else if ("function" === typeof define && define.cmd) { + define(function (require, exports, module) { + module.exports = WebVideoCtrl + }) +} else { } diff --git a/src/views/bigScreen/enpComponents/video.vue b/src/views/bigScreen/enpComponents/video.vue index b4da0b17..b35afeaa 100644 --- a/src/views/bigScreen/enpComponents/video.vue +++ b/src/views/bigScreen/enpComponents/video.vue @@ -1,7 +1,15 @@ @@ -12,49 +20,87 @@ export default { data() { return { isZh: true, + szIp: '192.168.1.64', + ipPort: '80', + username: 'admin', + password: '9093QQww', + iPrototocol: 1,//http协议:1:表示http协议2:表示https协议 } }, mounted() { let that = this; - var szLanguage = (navigator.language || navigator.browserLanguage).toLowerCase(); - szLanguage = szLanguage.substring(0, 2); - document.write(""); - if ("zh" === szLanguage) { - that.isZh = true; - } else { - that.isZh = false; - } - - let jsUrl = '/jsmap/jsmap.js'; - that.loadScript('mapId', jsUrl, () => { - that.canUseMap = true; - }) + that.init(); }, methods: { - loadScript(id, url, callback) { - debugger; - //如果已经存在这个id,则证明已经加载过,已经有这个js文件了,可以直接执行回调里面的操作 - if (document.querySelector(`#${id}`)) { - callback && callback() - return; - } - //第一次加载,先创建 script 标签 - const script = document.createElement('script'); - script.src = url; - //创建id属性 - script.setAttribute('id', id); - //获取第一个script标签 - const firstScript = document.getElementsByTagName('script')[0]; - //获取第一个script标签的父节点 BODY,在body的第一个script引用之前插入,即把这个动态的js文件放在第一个调用 - firstScript.parentNode.insertBefore(script, firstScript); - //script 一加载就执行 - script.onload = script.onreadystatechange = function () { - // 加载完成 - if (!this.readyState || this.readyState == 'loaded' || this.readyState == 'complete') { - callback && callback() + init() { + // alert('init') + WebVideoCtrl.I_InsertOBJECTPlugin("divPlugin"); + WebVideoCtrl.I_InitPlugin("divPlugin", 500, 500, { + iWndowType: 2,//分裂系数N*N + bWndFull: true,//双击全屏 + cbInitPluginCompleted: function () { + WebVideoCtrl.I_InsertOBJECTPlugin("divPlugin").then(() => { + WebVideoCtrl.I_CheckPluginVersion().then((bFlog) => { + if (bFlog) { + alert("插件版本有更新,请双击开发包里的HCWebSDKPlugin.exe升级") + } + }); + }, () => { + alert("插件初始化失败,请确认是否安装插件,如果未安装,请请双击开发包里的HCWebSDKPlugin.exe安装") + }) } - }; + }) + }, + Login() { + WebVideoCtrl.I_Login(this.szIp, this.iPrototocol, this.ipPort, this.username, this.password, { + async: true, + cgi: 1, + success: (xmlDoc) => { + console.log("登录成功", xmlDoc); + }, + error: (xmlDoc) => { + console.log("登录失败", xmlDoc); + } + }) + }, + //预览 + vShow() { + WebVideoCtrl.I_StartRealPlay(this.szIp + '_' + this.ipPort, { + success: () => { + console.log("预览成功"); + } + }) + }, + //停止单个预览 + stopShow() { + WebVideoCtrl.I_Stop({ + iWndIndex: 1,//tingzhichuangkou + success: () => { + console.log("停止预览成功"); + } + }); + }, + //停止预览 + stopShowAll() { + WebVideoCtrl.I_StopAllPlay(); + }, + //登出 + logOut() { + WebVideoCtrl.I_Logout(this.szIp + '_' + this.ipPort, { + + }) + }, + //销毁插件 + breakdom() { + WebVideoCtrl.I_DestroyPlugin(); }, } } - \ No newline at end of file + + \ No newline at end of file diff --git a/src/views/bigScreen/index_enp_blue.vue b/src/views/bigScreen/index_enp_blue.vue index 2a8e3e8e..f179f7f1 100644 --- a/src/views/bigScreen/index_enp_blue.vue +++ b/src/views/bigScreen/index_enp_blue.vue @@ -2,7 +2,7 @@
    - +
    水泥有限公司
    @@ -123,10 +123,10 @@
    -
    +
    无组织污染源一览
    - +
    @@ -153,10 +153,10 @@
    -
    +
    接入设备数量总览
    - +
    @@ -201,10 +201,10 @@
    -
    +
    主要排放口实时监测清单
    - +
    水泥磨机排气筒
    @@ -236,7 +236,7 @@
    -
    +
    @@ -272,10 +272,10 @@
    -
    +
    环境质量实时监测清单
    - +
    @@ -1164,14 +1164,14 @@ header { height: 5vh; font-size: 2vh; line-height: 4.9vh; - background-image: url('/public/img/enp_blue/btn.svg'); + background-image: url('/public/img/enp_blue/btn.png'); background-size: 100% 100%; text-align: center; color: #ffffff; } .btns.btnsActive { - background-image: url('/public/img/enp_blue/btn_active.svg'); + background-image: url('/public/img/enp_blue/btn_active.png'); } .bottom_enp { @@ -1182,7 +1182,7 @@ header { position: absolute; background-size: 100% 100%; background-position: center; - background-image: url('/public/img/enp_blue/bottom_enp.svg'); + background-image: url('/public/img/enp_blue/bottom_enp.png'); } .menuWrap { @@ -1192,16 +1192,24 @@ header { .menuWrap1 { width: 4.4vw; - background-image: url('/public/img/enp_blue/menu_bg1.svg'); + background-image: url('/public/img/enp_blue/menu_bg1.png'); background-size: 100% 100%; } .menuWrap2 { width: 7vw; - background-image: url('/public/img/enp_blue/menu_bg2.svg'); + background-image: url('/public/img/enp_blue/menu_bg2.png'); background-size: 100% 100%; } +.menuWrapActive.menuWrap1 { + background-image: url('/public/img/enp_blue/menu_bg1_active.png'); +} + +.menuWrapActive.menuWrap2 { + background-image: url('/public/img/enp_blue/menu_bg2_active.png'); +} + .menuItem { color: #ffffff; line-height: 4.4vh; @@ -1271,12 +1279,25 @@ header { .panel { margin-top: 1.5vh; - background-image: url('/public/img/enp_blue/block_1.png'); + background-size: 100% 100%; } +.panel1, +.panel2 { + background-image: url('/public/img/enp_blue/left_bg1.png'); +} + +.panel3 { + background-image: url('/public/img/enp_blue/left_bg2.png'); +} + +.panel4 { + background-image: url('/public/img/enp_blue/right_bg1.png'); +} + .panel.panel_big { - background-image: url('/public/img/enp_blue/block_2.png'); + background-image: url('/public/img/enp_blue/right_bg2.png'); } .blockTitle { @@ -1486,7 +1507,7 @@ header { line-height: 4vh; text-align: center; margin-bottom: 1vh; - background-image: url('/public/img/enp_blue/index_bg.svg'); + background-image: url('/public/img/enp_blue/index_bg.png'); background-size: cover; }