// JavaScript Document
var channelPlay = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
var channelRec = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
var autoSize = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
var audioControl = false;
var curSelChn = 0;
var ptzSelChn = 1;
var hue = {};
var Bright = {};
var Contrast = {};
var Saturation = {};
var Sharp = {};
var IEVersion = "22.03.25.9722";
var pluginVersion = "1.0.7.9338";
var g_bIsIE = !(/(msie\s|trident.*rv:)([\w.]+)/.exec(navigator.userAgent.toLowerCase()) == null);
var autoCloseTime = 10;
function DivBox(objMain, obj) {
var $obj = $(obj);
if (String($(objMain).prop("checked")) == "false") {
$obj.find("select").prop("disabled", true);
$obj.children().prop("disabled", true);
if ($.browser.chrome) {
$obj.find(":text").each(function() {
$(this).attr("readonly", "true");
});
$obj.find(":password").each(function() {
$(this).attr("readonly", "true");
});
$obj.find(".addTimeClick").each(function() {
$(this).attr("black", "true");
});
} else {
$obj.find(":text").each(function() {
$(this).prop("readonly", "true");
});
$obj.find(":password").each(function() {
$(this).prop("readonly", "true");
});
$obj.find(".addTimeClick").each(function() {
$(this).prop("black", "true");
});
}
if ($obj.css("display") != "none") $obj.fadeTo("slow", 0.2);
} else {
$obj.find("select").prop("disabled", false);
if ($obj.css("display") != "none") {
$obj.fadeTo("slow", 1, function() {
//兼容safari处理
$obj.css("filter", "");
});
}
$obj.children().prop("disabled", false);
if ($.browser.chrome) {
$obj.find(":text").each(function() {
$(this).removeAttr("readonly");
});
$obj.find(":password").each(function() {
$(this).removeAttr("readonly");
});
$obj.find(".addTimeClick").each(function() {
$(this).attr("black", "false");
});
} else {
$obj.find(":text").each(function() {
$(this).removeProp("readonly");
});
$obj.find(":password").each(function() {
$(this).removeProp("readonly");
});
$obj.find(".addTimeClick").each(function() {
$(this).prop("black", "false");
});
}
}
}
function showDiv(objMain, obj) { //0显示,1隐藏
var $obj = $(obj);
if (objMain == 1) {
$obj.find("select").prop("disabled", true);
$obj.children().prop("disabled", true);
$obj.find(":text").each(function() {
$(this).attr("disabled", true);
});
$obj.find(":password").each(function() {
$(this).attr("disabled", true);
});
if ($obj.css("display") != "none") $obj.fadeTo("slow", 0.2);
} else {
$obj.find("select").prop("disabled", false);
if ($obj.css("display") != "none") {
$obj.fadeTo("slow", 1, function() {
//兼容safari处理
$obj.css("filter", "");
});
}
$obj.children().prop("disabled", false);
$obj.find(":text").each(function() {
$(this).attr("disabled", false);
});
$obj.find(":password").each(function() {
$(this).attr("disabled", false);
});
}
}
Date.prototype.Format = function(fmt) {
var o = {
"M+": this.getMonth() + 1, //月份
"d+": this.getDate(), //日
"h+": this.getHours(), //小时
"m+": this.getMinutes(), //分
"s+": this.getSeconds(), //秒
"q+": Math.floor((this.getMonth() + 3) / 3), //季度
"S": this.getMilliseconds() //毫秒
};
if (/(y+)/.test(fmt))
fmt = fmt.replace(RegExp.$1, (this.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 NotifyActiveX(p) {
if (p.object == null) {
ShowDownloadPluginHyperLink();
return;
}
}
function ShowDownloadPluginHyperLink() {
window.location.href = "html/webplugin.html";
}
function ShowPaop(title, contant) {
if (typeof title != 'undefined' && typeof contant != 'undefined') {
clearTimeout(gVar.nTimer);
if ($("#MsgPaop").attr("name") != "in") {
$("#MsgPaop").css("display", "").slideDown("slow").attr("name", "in");
}
$("#Paoptitle").prop("innerHTML", title);
$("#PaopContant").prop("innerHTML", contant);
setTimeout(function() {
$("#PaopBg").css("background-position", "0 -38px");
setTimeout(function() {
$("#PaopBg").css("background-position", "0px -76px");
setTimeout(function() {
$("#PaopBg").css("background-position", "0 0")
}, 200);
}, 200);
}, 200);
gVar.nTimer = setTimeout(function() {
HidePaop();
}, 3000);
}
// }
}
function HidePaop() {
$("#MsgPaop").fadeOut("slow").slideUp("slow", function() {
$(this).css("display", "none");
}).attr("name", "out");
}
function parseXmlFromStr(szXml) {
if (null == szXml || '' == szXml) {
return null;
}
var xmlDoc = new createxmlDoc();
if (!$.browser.msie) {
var oParser = new DOMParser();
xmlDoc = oParser.parseFromString(szXml, "text/xml");
} else {
xmlDoc.loadXML(szXml);
}
return xmlDoc;
}
function createxmlDoc() {
var xmlDoc;
var aVersions = ["MSXML2.DOMDocument", "MSXML2.DOMDocument.5.0", "MSXML2.DOMDocument.4.0", "MSXML2.DOMDocument.3.0", "Microsoft.XmlDom"];
for (var i = 0; i < aVersions.length; i++) {
try {
xmlDoc = new ActiveXObject(aVersions[i]);
break;
} catch (oError) {
xmlDoc = document.implementation.createDocument("", "", null);
break;
}
}
xmlDoc.async = "false";
return xmlDoc;
}
function Web_prompt(str) {
$("#MaskLayout").hide();
if (str == "" || str == null) {
str = "can't find the language !";
}
$("#Web_false").text(str).css("color", "red");
setTimeout('$("#Web_false").fadeIn("slow")', 500);
setTimeout('$("#Web_false").fadeOut("slow")', 5000);
}
//IE下
function findNode(name, xml) {
xml = '' + xml + '';
xml = xml.split(name).join("p");
xml = $(xml).find("p").html();
return xml == null ? -1 : xml;
}
function findChildNode(name, child, xml) {
var s = xml.indexOf(name);
if (s == -1) {
alert(lg.get("IDS_REFRESH_NONODE"));
return;
}
s = s + name.length + 1;
xml = xml.substring(s, xml.length);
var e = xml.indexOf(name);
if (e == -1) {
alert(lg.get("IDS_REFRESH_NONODE"));
return;
}
e = e - 2;
xml = xml.substring(0, e);
xml = '' + xml + '';
// xml = xml.split(child).join("p");
xml = xml.split("<" + child + ">")[1].split("" + child + ">")[0];
// xml.replace(/(^\s*)|(\s*$)/g, " ");
// xml = $(xml).find("p").html();
return xml == null ? "" : xml;
}
//让文本框、文本域和密码框可以选择
function fbd() {
var the = event.srcElement;
//通过body的onselectstart属性,控制叶面内容的可选状态。
//标签是 input text 以及 文本域textarea 的,均为可以选择项目。
if (!((the.tagName == "INPUT" && the.type.toLowerCase() == "password") || (the.tagName == "INPUT" && the.type.toLowerCase() == "text") || the.tagName == "TEXTAREA")) {
return false;
}
return true;
}
//复制通道公共方法
function copyTD(displayDiv, checkboxIds, joinDiv, num) {
if (typeof num == 'undefined') num = gDvr.nChannel;
$(displayDiv).css("display", "block");
var tempstr = "";
var tempstr1 = "";
var tempstr2 = "";
var tempstr3 = "";
if (num <= 8) {
$('#' + joinDiv + '_2_2').css("display", "none");
$('#' + joinDiv + '_3_3').css("display", "none");
$('#' + joinDiv + '_4_4').css("display", "none");
} else if (num <= 16) {
$('#' + joinDiv + '_3_3').css("display", "none");
$('#' + joinDiv + '_4_4').css("display", "none");
} else if (num <= 24) {
$('#' + joinDiv + '_4_4').css("display", "none");
}
var chnName = '';
for (var i = 0; i < num; i++) {
var inner = "";
if ((i + 1).toString().length == 1) {
chnName = lg.get("IDS_CH") + '0' + (i + 1);
inner += '
';
if (i < 8) {
tempstr += inner;
} else {
tempstr1 += inner;
}
} else {
chnName = lg.get("IDS_CH") + (i + 1);
if (i < 16) {
tempstr1 += '
';
} else if (i < 24) {
tempstr2 += '
';
} else {
tempstr3 += '
';
}
}
}
document.getElementById(joinDiv + "_1").innerHTML = tempstr;
document.getElementById(joinDiv + "_2").innerHTML = tempstr1;
if (gDvr.nChannel > 16 && gDvr.nChannel <= 24) {
document.getElementById(joinDiv + "_3").innerHTML = tempstr2;
}
if (gDvr.nChannel > 24) {
document.getElementById(joinDiv + "_3").innerHTML = tempstr2;
document.getElementById(joinDiv + "_4").innerHTML = tempstr3;
}
}
function CreateLiveBtn() {
//live页面根据通道号生成通道
if ($(".mclcontainer").attr("name") != "isDown") {
return;
}
var liveHtml = "";
for (var i = 1; i <= gDvr.nChannel; i++) {
liveHtml += '\
' + gDvr.chname[i - 1] + '
\
\
\
\
';
}
$("#liveleft").html(liveHtml);
//回放页面根据通道生成通道号
var leftHtml = "",
rightHtml = "";
for (var i = 1; i <= parseInt(gDvr.nChannel / 2); i++) {
leftHtml += (" \
" +
"
" + gDvr.chname[i - 1] + "
" +
"
");
}
$("#playBack_td1").prop("innerHTML", leftHtml);
for (var i = parseInt(gDvr.nChannel / 2) + 1; i <= gDvr.nChannel; i++) {
rightHtml += (" \
" +
"
" + gDvr.chname[i - 1] + "
" +
"
");
}
$("#playBack_td2").prop("innerHTML", rightHtml);
UI.Button("div[id^='liveChn_Play_']", 31, null, function(e, p) { //live页面左边栏按钮注册
var $p = $(p);
var str = $p.attr("id");
var cmd = (str.split("_")[2] * 1 - 1);
if (e.type == "mousedown") {
if ($p.attr("name") != "active") {
gDvr.PlayVideo(cmd, gVar.nStreamType);
getOSDName(cmd);
channelPlay[cmd] = 1;
if (cmd == curSelChn) {
showPTZ(cmd);
}
$p.css("background-position", "-31px 0px").attr("name", "active");
$(".liveBtnBt2").css("background-position", "0px -31px");
} else {
gDvr.StopVideo(cmd);
channelPlay[cmd] = 0;
if (cmd == curSelChn) {
hidePTZ(cmd);
}
$p.css("background-position", "0px 0px").attr("name", "");
//点击left页面的play图标,关掉任何一个视频,Zoom图标都切到off状态
if ($(".liveBtnBt11").attr("name") == "active") {
$(".liveBtnBt11").css("background-position", "-32px 0px").attr("name", "");
}
}
return false;
}
if ($p.attr("name") != "active") {
return true;
}
return false;
});
UI.Button("div[id^='liveChn_Rec_']", 31, null, function(e, p) { //Rec页面左边栏按钮注册
var $p = $(p);
var str = $p.attr("id");
var cmd = (str.split("_")[2] * 1 - 1);
if (e.type == "mousedown") {
if (channelPlay[cmd] == 1 && channelRec[cmd] != 1) {
var nRet = gDvr.StartRecord(cmd);
$p.css("background-position", "-31px -25px");
channelRec[cmd] = 1;
if (nRet != 0) {
ShowPaop(lg.get("IDS_RECORD_SAVE_PATH"), lg.get("IDS_REC_ERR"));
}
} else if (channelRec[cmd] == 1) {
gDvr.StopRecord(cmd);
channelRec[cmd] = 0;
$p.css("background-position", "0px -25px");
var str = gDvr.GetLocalSettings();
var xmlDoc = parseXmlFromStr(str);
var strTemp = xmlDoc.getElementsByTagName("LocalSettings")[0].getAttribute("SelectDiskDriver");
ShowPaop(lg.get("IDS_RECORD_SAVE_PATH"), "" + strTemp + ":\\webclient2\\videos" + "
");
}
return false;
}
if ($p.attr("name") != "active") {
return true;
}
return false;
});
UI.Button("div[id^='liveChn_Cap_']", 31, null, function(e, p) { //CAP页面左边栏按钮注册
var $p = $(p);
var cmd = ($p.attr("id").split("_")[2] * 1 - 1);
if (e.type == "mousedown") {
if (channelPlay[cmd] == 1) {
gDvr.CaptureImage(cmd);
var str = gDvr.GetLocalSettings();
var xmlDoc = parseXmlFromStr(str);
var strTemp = xmlDoc.getElementsByTagName("LocalSettings")[0].getAttribute("SelectDiskDriver");
ShowPaop(lg.get("IDS_IMAGE_SAVE_PATH"), "" + strTemp + ":\\webclient2\\images" + "
" + lg.get("IDS_PREVIEW") + " " + lg.get("IDS_PATH") + "");
}
}
return true;
});
}
//过滤方向键
function keyboardFilter(e) {
e = e || window.event;
if (!e.srcElement)
e.srcElement = e.target;
if ((e.keyCode >= 37 && e.keyCode <= 40) /*|| (e.keyCode == 8)*/ || (e.keyCode == 9)) { //取消 退格键 过滤
return false;
}
return true;
}
//对端口进行限制
function NumberRangeLimt(ctrId, minVal, maxVal) {
var str = ($("#" + ctrId.id).val()).replace(/\D/g, '');
if (minVal != maxVal) {
if (str != "" && str < minVal) {
return minVal;
}
if (str > maxVal) {
return maxVal;
}
}
return str;
}
function Reset() {
$("#username").val("");
$("#passwd").val("");
$("#login_language").val(gVar.lg);
// $("#login_language").change();
$("#username").focus();
}
function AutoClose(title) {
autoCloseTime--;
if (autoCloseTime <= 0) {
if ($.browser.msie) {
window.opener = null;
window.open('', '_self', '');
window.close();
} else {
window.location.reload(true);
}
}
if ($.browser.msie) {
ShowPaop(title, lg.get("IDS_DVR_REBOOT") + " " + autoCloseTime.toString() + " " + lg.get("IDS_SECOND"));
} else {
ShowPaop(title, lg.get("IDS_DVR_REBOOT") + " " + autoCloseTime.toString() + " " + lg.get("IDS_SECOND"));
}
window.setTimeout(function() {
AutoClose(title);
}, 1000);
}
function CreateCalendar(iType) {
var szLanguage = '';
if ($.cookie("language") == 'CHS') {
szLanguage = 'zh-cn';
} else if ($.cookie("language") == 'CHT') {
szLanguage = 'zh-tw';
} else {
szLanguage = 'en';
}
if (iType == 0) {
WdatePicker({
startDate: '%y-%M-%d %h:%m:%s',
dateFmt: 'yyyy-MM-dd HH:mm:ss',
alwaysUseStartDate: false,
minDate: '1970-01-01 00:00:00',
maxDate: '2037-12-31 23:59:59',
readOnly: true,
lang: szLanguage,
isShowClear: false
});
} else if (2 == iType) {
WdatePicker({
dateFmt: 'HH:mm:ss',
alwaysUseStartDate: false,
readOnly: true,
lang: szLanguage,
isShowClear: false
});
} else {
WdatePicker({
startDate: '%y-%M-%d %h:%m:%s',
dateFmt: 'yyyy-MM-ddTHH:mm:ss',
alwaysUseStartDate: false,
minDate: '1970-01-01 00:00:00',
maxDate: '2037-12-31 23:59:59',
readOnly: true,
lang: szLanguage,
isShowClear: false
});
}
}
/*16进制颜色转为RGB格式*/
String.prototype.colorRgb = function() {
var reg = /^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/;
var sColor = this.toLowerCase();
if (sColor && reg.test(sColor)) {
if (sColor.length === 4) {
var sColorNew = "#";
for (var i = 1; i < 4; i += 1) {
sColorNew += sColor.slice(i, i + 1).concat(sColor.slice(i, i + 1));
}
sColor = sColorNew;
}
//处理六位的颜色值
var sColorChange = [];
for (var i = 1; i < 7; i += 2) {
sColorChange.push(parseInt("0x" + sColor.slice(i, i + 2)));
}
return "rgb(" + sColorChange.join(",") + ")";
} else {
return sColor;
}
}
/*************************************************
Function: Base64
Description: Base64编码解码
Input: 无
Output: 无
return: 无
*************************************************/
var Base64 = {
// private property
_keyStr: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",
// public method for encoding
encode: function(input) {
var output = "";
var chr1, chr2, chr3, enc1, enc2, enc3, enc4;
var i = 0;
input = 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;
},
// public method for decoding
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 = Base64._utf8_decode(output);
return output;
},
// private method for UTF-8 encoding
_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;
},
// private method for UTF-8 decoding
_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;
}
};
function WidthCheck(str, maxLen) {
var w = 0;
var tempCount = 0;
//length 获取字数数,不区分汉子和英文
for (var i = 0; i < str.value.length; i++) {
//charCodeAt()获取字符串中某一个字符的编码
var c = str.value.charCodeAt(i);
//单字节加1
if ((c >= 0x0001 && c <= 0x007e) || (0xff60 <= c && c <= 0xff9f)) {
w++;
} else {
w += 2;
}
if (w > maxLen) {
str.value = str.value.substr(0, i);
break;
}
}
}