张家口产业监测
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

1303 lines
51 KiB

/**
* Created by Administrator on 2017/9/11.
*/
//flash插件版本
function I_CheckPluginVersion() {
var hasFlash = 0;    //是否安装了flash
//document.all可用来判断是否是IE浏览器,TRUE即是IE浏览器
if (document.all) {
var swf = new ActiveXObject('ShockwaveFlash.ShockwaveFlash');
if (swf) {
hasFlash = 1;
}
} else {
if (navigator.plugins && navigator.plugins.length > 0) {
var swf = navigator.plugins["Shockwave Flash"];
if (swf) {
hasFlash = 1;
}
}
}
return hasFlash;
}
var smart_max_Row = 0;//记录最大行
var smart_max_Column = 0;//记录最大列
var smart_player_box_item_all_array = [];//播放器容器对象数组
var smart_player_item_all_array = [];//播放器对象数组
var smart_clickFlag = [];//记录是否显示选中框
var smart_lastClickIndex;//上一次点击的元素下标
var smart_currentClickIndex;//当前点击元素的下标
var smart_currentActiveBorderIndex = -1;//记录分屏切换时选中框的下标
var smart_currentRightMenuIndex = 0;//记录当前右键元素的下标
var smart_contentWidth = 0;//播放器大容器的宽
var smart_contentPadding;//播放器大容器的内边距
var smart_dblclickFlag = [];//判断全屏还是退出全屏
var smart_mulScreenFlag = false;//记录是否进行过多窗口全屏播放操作
var smart_start_array = [];//正在播放的视频的下标
var smart_stop_array = [];//没有播放的视频的下标
var smart_loaded = false;//判断视频是否加载完毕
var smart_gColumn;//记录当前页的列数
var smart_gRow;//记录当前页的行数
var smart_playArr = [];//记录点击播放以后的视频地址
var smart_recordArr = [];//记录录制状态的播放地址,下标为正式窗口号,内容为播放地址
var smart_recordTimerArr = [];//记录录制状态的播放地址,下标为正式窗口号,内容为定时器
var smart_recordHeartTimerArr = [];//记录录制状态的播放地址,下标为正式窗口号,内容为定时器
var smart_gRelationArray = [];//调整位置以后按序记录播放器下标
var smart_realPlayerArr = [];//存放分屏以后实际显示播放器的下标
var smart_selectScaleNum = -1;//存放上一次显示视频比例的播放器窗口号
var smart_screenVideoMap = [];//全局数组存在视频播放框号与播放视频之间的对应关系
var subBorderSelect;//选中框的颜色
var subBorder;//框的颜色
var top_Element_Id;//记录播放器大容器所在的父元素的id
var element_Id;//播放器大容器的id
var videoScale;//记录视频比例
var subBackgroundImg;//记录背景图片
var clickTimer = null;//区分用户进行单击还是双击操作
var directory = '';//记录目录
var playerDirectory = '';//播放控件地址
var smart_count = 0;//计数
var smart_count2 = 0;//计数
var smart_tourage_video_paly_time = 0;//播放器窗口播放时间
var smart_tourage_video_paly_address = '';//播放器窗口播放地址
var smart_selectNewIndexFlag;
var panelAppendHTML = "";//播放器下方增加的Html内容
var defaultPlugin = {
topElementId: '',//父页面元素所在的id
elementId: '',//大容器的id
maxRow: '',//最大行
maxColumn: '',//最大列
szWidth: '500px',//容器默认宽度
szHeight: '500px',//容器默认高度
subBorder: '#000',//边框颜色,字符串
subBorderSelect: '#6E8CB6',//选中边框颜色
subBackgroundImg: "ckplayer/video-bg.png",//背景图片
selectNewIndexFlag: true
}
//播放器参数
var params = {bgcolor: '#FFF', allowFullScreen: true, allowScriptAccess: 'always', wmode: 'transparent'};
//初始化大容器
function I_initPlugin(options) {
if (isNull(options)) {
alert("您传入的播放器参数不正确");
return false;
}
options.elementId = options.elementId || defaultPlugin.elementId;
options.topElementId = options.topElementId || defaultPlugin.topElementId;
options.maxRow = options.maxRow || defaultPlugin.maxRow;
options.maxColumn = options.maxColumn || defaultPlugin.maxColumn;
options.szWidth = options.szWidth || defaultPlugin.szWidth;
options.szHeight = options.szHeight || defaultPlugin.szHeight;
options.subBorder = options.subBorder || defaultPlugin.subBorder;
options.subBorderSelect = options.subBorderSelect || defaultPlugin.subBorderSelect;
options.subBackgroundImg = options.subBackgroundImg || defaultPlugin.subBackgroundImg;
options.dblClick = options.dblClick != false;
options.panelAppendHTML = options.panelAppendHTML || '';
panelAppendHTML = options.panelAppendHTML;
//options.selectNewIndexFlag = options.selectNewIndexFlag == false ? false : true;
//smart_selectNewIndexFlag = options.selectNewIndexFlag;
if (isNull(options.elementId)) {
alert("您绑定的播放器容器没有传入");
return false;
}
if (isNull(options.topElementId)) {
alert("您没有传入播放器容器所在的父元素的id");
return false;
}
if (isNull(options.maxRow) || isNull(options.maxColumn)) {
alert("您没有传入播放器分屏的最大行或者最大列");
return false;
}
smart_max_Row = options.maxRow;
smart_max_Column = options.maxColumn;
top_Element_Id = options.topElementId;
element_Id = options.elementId;
subBorder = options.subBorder;
subBorderSelect = options.subBorderSelect;
subBackgroundImg = options.subBackgroundImg;
videoScale = options.videoScale;
//大容器样式
$("#" + element_Id).addClass("smart-position-rel");
$("#" + element_Id).css({'border': '2px solid ' + subBorder});
document.getElementById(options.elementId).style.width = options.szWidth;
document.getElementById(options.elementId).style.height = options.szHeight;
document.getElementById(options.elementId).style.margin = "0 auto";
//添加播放器容器内容和播放器内容
var html = "";
html = '<div id="smart-player-box"></div>';
document.getElementById(options.elementId).innerHTML = html;
html = '<div id="smart-player"></div>';
$("#smart-player-box").after(html);
html = "";
smart_clickFlag = new Array(smart_max_Row * smart_max_Column);
for (var i = 0; i < smart_max_Row; i++) {
for (var j = 0; j < smart_max_Column; j++) {
html += "<div onmousemove='showScale(event," + (i * smart_max_Column + j) + ")' class='smart-player-box-item smart-hidden-noload' " +
"id='smart_player_box_" + (i * smart_max_Column + j) + "' ondrop='drop(event,this," + (i * smart_max_Column + j) + ")' " +
"ondragover='allowDrop(event)' draggable='true' ondragstart='drag(event, this," + (i * smart_max_Column + j) + ")'>" + options.panelAppendHTML + "</div>";
smart_clickFlag[i * smart_max_Column + j] = true;
smart_dblclickFlag[i * smart_max_Column + j] = true;
smart_gRelationArray.push(i * smart_max_Column + j);
smart_screenVideoMap.push(-1);
}
}
$("#smart-player-box").html(html);
html = "";
for (var i = 0; i < smart_max_Row; i++) {
for (var j = 0; j < smart_max_Column; j++) {
html += '<div class="smart-player-item smart-hidden-noload" id="smart_player_' + (i * smart_max_Column + j) + '"></div>';
}
}
$("#smart-player").html(html);
smart_player_box_item_all_array = document.getElementsByClassName("smart-player-box-item");
smart_player_item_all_array = document.getElementsByClassName("smart-player-item");
for (var i = 0; i < smart_player_item_all_array.length; i++) {
var flashvars = {
f: '',
c: 0,
p: 1,
b: 0,
loaded: 'smart_loadedHandler(' + i + ')'
};
CKobject.embedSWF(getPlayerDirectory() + 'ckplayer/ckplayer.swf', "smart_player_" + i, "smart_" + i, '100%', '100%', flashvars, params);
}
//单击事件
$(".smart-player-box-item").click(function () {
var that = this;
clearTimeout(clickTimer);
clickTimer = setTimeout(function () {
for (var i = 0; i < smart_player_box_item_all_array.length; i++) {
if (smart_player_box_item_all_array[i] === that) {
if ($(smart_player_box_item_all_array[i]).hasClass("smart-full-screen-box")) {
return;
}
smart_currentClickIndex = i;
if (smart_lastClickIndex === smart_currentClickIndex) {//上一次点击元素和当前元素相同
if (smart_clickFlag[smart_currentClickIndex]) {//加框
$(smart_player_box_item_all_array[smart_currentClickIndex]).css({
'border': '2px solid ' + subBorderSelect
});
smart_clickFlag[smart_currentClickIndex] = false;
smart_currentActiveBorderIndex = smart_currentClickIndex;
} else {//去框
smart_clickFlag[smart_currentClickIndex] = true;
smart_currentActiveBorderIndex = -1;
$(smart_player_box_item_all_array[smart_currentClickIndex]).css({
'border': '2px solid ' + subBorder
});
}
} else {//上一次点击元素和当前元素不同
$(smart_player_box_item_all_array[smart_currentClickIndex]).css({
'border': '2px solid ' + subBorderSelect
});
smart_clickFlag[smart_currentClickIndex] = false;
if (smart_lastClickIndex !== undefined) {
$(smart_player_box_item_all_array[smart_lastClickIndex]).css({
'border': '2px solid ' + subBorder
});
}
smart_clickFlag[smart_lastClickIndex] = true;
smart_currentActiveBorderIndex = smart_currentClickIndex;
smartPlayerSelectNew(smart_lastClickIndex, smart_currentClickIndex);
}
}
}
smart_lastClickIndex = smart_currentClickIndex;
smartPlayerClick();
}, 300);
});
//双击事件
$(".smart-player-box-item").dblclick(function () {
clearTimeout(clickTimer);
if (options.dblClick) {
var id = $(this).attr("id");
id = id.substring(17, id.length);
if ($(this).hasClass("smart-full-screen-box")) {//大屏显示
if (smart_mulScreenFlag) {
for (var i = 0; i < smart_player_box_item_all_array.length; i++) {
if ($(smart_player_box_item_all_array[i]).hasClass('smart-full-screen-box')) {//当前大窗口显示
$(smart_player_box_item_all_array[i]).removeClass('smart-full-screen-box');
$(smart_player_item_all_array[i]).removeClass('smart-full-screen-box');
$("#smart-player").removeClass("smart-bg-full-screen");
if (i != 0) {
$("#smart-player-box").removeClass("smart-resize-margin");
}
} else {//其他隐藏
$(smart_player_box_item_all_array[i]).removeClass("smart-hidden");
$(smart_player_item_all_array[i]).removeClass("smart-hidden");
}
}
return;
}
if (smart_dblclickFlag[id]) {
$("#" + top_Element_Id, window.top.document).addClass("smart-full-screen-box");
launchFullScreen($("#" + top_Element_Id, window.top.document).get(0));
smart_dblclickFlag[id] = false;
} else {
cancelFullscreen();
smart_dblclickFlag[id] = true;
}
} else {//大窗口显示
var divider_img = document.getElementsByClassName("divider-img");
if (!smart_mulScreenFlag) {
smart_contentWidth = parseInt($("#" + element_Id).parent().css("width")) - 8;
smart_contentPadding = $("#" + element_Id).parent().css("padding");
}
I_FullScreen(id);
}
}
// setSelectIndex();
});
}
//处理视频打开时,鼠标移进移出时上面比例条的显示与否
var dedaultPlayer = {
row: 1,//默认分屏行
column: 1//默认分屏列
}
//更新播放器分屏显示的行与列
function I_stylePlayer(options) {
//判断是否有视频正在录制中
if (I_hasRecording()) {
alert("当前有视频正在录制,请先停止录制任务")
}
options = options || dedaultPlayer;
if (options !== dedaultPlayer) {//确定新样式
options.row = options.row || dedaultPlayer.row;
options.column = options.column || dedaultPlayer.column;
}
if (options.row > smart_max_Row) {
alert("您选择的视频行数大于传入的最大行,无法完成初始化");
return false;
}
if (options.column > smart_max_Column) {
alert("您选择的视频列数大于传入的最大列,无法完成初始化");
return false;
}
//切换分屏的时候,如果有全屏状态切回正常状态
$(".smart-full-screen-box").removeClass("smart-full-screen-box");
$(".smart-bg-full-screen").removeClass("smart-bg-full-screen");
$(".smart-resize-margin").removeClass("smart-resize-margin");
$(".smart-hidden").removeClass("smart-hidden");
var row = Number(options.row);
var column = Number(options.column);
smart_gColumn = column;
smart_gRow = row;
var play_box_width = toPercent(100 / column);
var play_box_height = toPercent(100 / row);
//每次切换分屏前隐藏所有播放器容器和播放器,并重新计算宽度和高度
for (var i = 0; i < smart_max_Row * smart_max_Column; i++) {
$($(".smart-player-box-item")[i]).addClass("smart-hidden-noload");
$($(".smart-player-item")[i]).addClass("smart-hidden-noload");
smart_player_box_item_all_array[i].style.width = play_box_width;
smart_player_box_item_all_array[i].style.height = play_box_height;
smart_player_item_all_array[i].style.width = play_box_width;
smart_player_item_all_array[i].style.height = play_box_height;
}
smart_stop_array.length = 0;//重置未播放的播放器下标的数组
smart_realPlayerArr.length = 0;//重置分屏以后实际显示播放器的下标的数组
var tempArr = [];//临时记录分屏以后,按照顺序应该显示的下标的数组
for (var i = 0; i < row * smart_max_Column; i = i + smart_max_Column) {
for (var j = i; j < column + i; j++) {
tempArr.push(j);
}
}
//更新实际显示播放器的下标的数组,更新smart_stop_array,并设置应该显示的播放器的位置,显示对应的播放器
for (var i = 0; i < tempArr.length; i++) {
smart_realPlayerArr.push(smart_gRelationArray[tempArr[i]]);
smart_stop_array.push(i);
var x = parseInt(tempArr[i] / smart_max_Column);
var y = tempArr[i] % smart_max_Column;
smart_player_box_item_all_array[smart_gRelationArray[tempArr[i]]].style.top = toPercent(x * (100 / row));
smart_player_item_all_array[smart_gRelationArray[tempArr[i]]].style.top = toPercent(x * (100 / row));
smart_player_box_item_all_array[smart_gRelationArray[tempArr[i]]].style.left = toPercent(y * (100 / column));
smart_player_item_all_array[smart_gRelationArray[tempArr[i]]].style.left = toPercent(y * (100 / column));
smart_player_box_item_all_array[smart_gRelationArray[tempArr[i]]].style.border = '2px solid ' + subBorder;
$($(".smart-player-box-item")[smart_gRelationArray[tempArr[i]]]).removeClass("smart-hidden-noload");
$($(".smart-player-item")[smart_gRelationArray[tempArr[i]]]).removeClass("smart-hidden-noload");
if (smart_player_box_item_all_array[smart_gRelationArray[tempArr[i]]].style.background === "transparent" || smart_player_box_item_all_array[smart_gRelationArray[tempArr[i]]].style.background === "none") {
$(smart_player_box_item_all_array[smart_gRelationArray[tempArr[i]]]).css({
"background": "transparent"
});
smart_stop_array.remove(i);
} else {
$(smart_player_box_item_all_array[smart_gRelationArray[tempArr[i]]]).css({
"background": "url(" + getDirectory() + subBackgroundImg + ")",
"background-size": "100% 100%"
});
}
}
updatePadding();
setSelectIndex();
}
var defaultStart = {
iWndIndex: 0,//默认选择第一个窗口播放
iStreamType: 1//默认主码流预览
}
//开始播放
function I_StartRealPlay(url, options) {
var iWndIndex;
if (arguments.length > 0) {//存在
iWndIndex = smart_realPlayerArr[options.iWndIndex];
} else {//不存在
var minNum = smart_stop_array.min();
minNum = minNum || 0;
iWndIndex = smart_currentActiveBorderIndex == -1 ? smart_realPlayerArr[minNum] : smart_currentActiveBorderIndex;
}
if (isNull(url)) {
alert("您没有传入视频播放源");
smartPlayerError(iWndIndex, '');
return false;
}
if (document.getElementById("smart_player_" + iWndIndex) === null || $(document.getElementById("smart_player_" + iWndIndex).parentNode).hasClass("smart-hidden-noload")) {
alert("您选择的播放器容器不存在");
return false;
}
if (!isSamePlay(iWndIndex, url)) {
return;
}
/*
if(!smart_selectNewIndexFlag){
var smart_curr_play_time = Date.parse(new Date());
if(smart_curr_play_time - smart_tourage_video_paly_time < 300 && smart_tourage_video_paly_address && url == smart_tourage_video_paly_address){
console.log("come");
return;
}
smart_tourage_video_paly_time = smart_curr_play_time;
smart_tourage_video_paly_address = url;
}
*/
if (smart_recordArr[iWndIndex]) {
alert("当前窗口视频正在录制,请先停止录制或选中其他播放窗口");
return;
}
smart_playArr[iWndIndex] = url;
$(smart_player_item_all_array[iWndIndex]).css({'padding': '0px'});
$(smart_player_box_item_all_array[iWndIndex]).css({
'background': 'transparent',
'border': 'solid 2px ' + subBorder
});
if (!smart_loaded) {
return;
}
updatePadding();
CKobject.getObjectById("smart_" + iWndIndex).newAddress('{f->' + url + '}');
//更新smart_stop_array和smart_start_array
smart_stop_array.remove(smart_realPlayerArr.indexOf(Number(iWndIndex)));
if (smart_start_array.indexOf(smart_realPlayerArr.indexOf(Number(iWndIndex))) === -1) {
smart_start_array.push(smart_realPlayerArr.indexOf(Number(iWndIndex)));
}
smart_screenVideoMap[iWndIndex] = url;
setSelectIndex();
smartPlayerStart(options);
return true;
}
//停止播放
function I_Stop(index) {
var iWndIndex;
if (index) {
iWndIndex = smart_realPlayerArr[index];
} else {
iWndIndex = smart_currentRightMenuIndex;
}
if (smart_recordArr[iWndIndex]) {
alert("当前视频正在录制,请先停止");
return;
}
$(document.getElementsByClassName("smart-player-box-item")[iWndIndex]).css({
"background": "url(" + getDirectory() + subBackgroundImg + ")",
"background-size": "100% 100%"
});
smart_playArr[iWndIndex] = '';
smart_screenVideoMap[iWndIndex] = -1;
CKobject.getObjectById("smart_" + iWndIndex).newAddress('{f->' + "" + '}');
smart_start_array.remove(smart_realPlayerArr.indexOf(Number(iWndIndex)));
if (smart_stop_array.indexOf(smart_realPlayerArr.indexOf(Number(iWndIndex))) === -1) {
smart_stop_array.push(smart_realPlayerArr.indexOf(Number(iWndIndex)));
}
//setSelectIndex();
updatePadding();
smartPlayerStop(iWndIndex);
}
//全部关闭
function I_StopAll() {
if (I_hasRecording()) {
alert("当前存在窗口视频正在录制,请先停止");
return;
}
for (var i = 0; i < smart_realPlayerArr.length; i++) {
$(smart_player_box_item_all_array[smart_realPlayerArr[i]]).css({
"background": "url(" + getDirectory() + subBackgroundImg + ")",
"background-size": "100% 100%"
});
smart_screenVideoMap[smart_realPlayerArr[i]] = -1;
CKobject.getObjectById("smart_" + smart_realPlayerArr[i]).newAddress('{f->' + "" + '}');
}
smart_start_array.length = 0;
smart_stop_array.length = 0;
for (var i = 0; i < smart_realPlayerArr.length; i++) {
smart_stop_array[i] = i;
}
// setSelectIndex();
updatePadding();
smartPlayerStopAll();
}
//大窗口播放
function I_FullScreen(iWndIndex) {
iWndIndex = iWndIndex || smart_currentRightMenuIndex;
$("#" + element_Id).css({'border': 'none'});
for (var i = 0; i < smart_player_box_item_all_array.length; i++) {
if (i == iWndIndex) {//当前大窗口显示
$(smart_player_box_item_all_array[i]).addClass('smart-full-screen-box');
$(smart_player_item_all_array[i]).addClass('smart-full-screen-box');
$("#smart-player").addClass("smart-bg-full-screen");
if (i != 0) {
$("#smart-player-box").addClass("smart-resize-margin");
}
} else {//其他隐藏
$(smart_player_box_item_all_array[i]).addClass("smart-hidden");
$(smart_player_item_all_array[i]).addClass("smart-hidden");
}
}
smartFullScreen(iWndIndex);
}
//自定义右键菜单
function I_initRightMenu(rightMenuData) {
for (var i = 0; i < smart_player_box_item_all_array.length; i++) {
$(smart_player_box_item_all_array[i]).smartMenu(rightMenuData, {
name: "player-box-" + i
});
}
}
//多窗口全屏播放
function I_MultiFullScreen() {
if (!$("#" + top_Element_Id, window.top.document).hasClass("smart-full-screen-box")) {
smart_contentWidth = parseInt($("#" + element_Id).parent().css("width")) - 8;
smart_contentPadding = $("#" + element_Id).parent().css("padding");
}
$("#" + top_Element_Id, window.top.document).addClass("smart-full-screen-box");
launchFullScreen($("#" + top_Element_Id, window.top.document).get(0));
smart_mulScreenFlag = true;
}
// 全屏显示(需要全屏显示DOM元素)
function launchFullScreen(element) {
if (isNull(element)) {
alert("您传入的顶级父元素的id不存在");
return;
}
$("#" + element_Id).css({'border': 'none'});
var topElement = $("#" + top_Element_Id, window.top.document).get(0);
var topChilds = $("#" + top_Element_Id, window.top.document).parent().children();
for (var i = 0; i < topChilds.length; i++) {
if (topChilds[i] === topElement) {
$("#" + top_Element_Id, window.top.document).addClass("smart-full-screen-box");
} else {
$(topChilds[i]).addClass("smart-display-none");
}
}
var all = $("#" + top_Element_Id, window.top.document).children();
var obj = $("#" + top_Element_Id, window.top.document).get(0).getElementsByTagName("iframe");
if (obj.length != 0) {
obj = obj[0];
for (var i = 0; i < all.length; i++) {
if (all[i] === obj) {
$(obj).addClass("smart-full-screen-box");
} else {
$(all[i]).addClass("smart-display-none");
}
}
var childs = $("body").children().children();
for (var i = 0; i < childs.length; i++) {
if (childs[i] === document.getElementById(element_Id).parentNode) {
var cs = document.getElementById(element_Id).parentNode.childNodes;
for (var j = 0; j < cs.length; j++) {
if (cs[j] === document.getElementById(element_Id)) {
$("#" + element_Id).addClass("smart-full-screen-box");
$("#" + element_Id).parent().css({
'padding': '0',
'width': '100%'
});
// $(".content").css({
// 'padding':'0'
// });
} else {
$(cs[j]).addClass("smart-display-none");
}
}
} else {
$(childs[i]).addClass("smart-display-none");
}
}
// var childs = $("body").children();
// for(var i = 0; i < childs.length;i++){
// if(childs[i] === document.getElementById(element_Id)){
// $("#" + element_Id).addClass("smart-full-screen-box");
// }else{
// $(childs[i]).addClass("smart-display-none");
// }
// }
}
$(document.getElementsByTagName("body")[0]).css({"overflow": "hidden"});
smartLaunchFullscreenStyle();
// 先检测最标准的方法
if (element.requestFullScreen) {
element.requestFullScreen();
} else if (element.mozRequestFullScreen) {
// 其次,检测Mozilla的方法
element.mozRequestFullScreen();
} else if (element.webkitRequestFullScreen) {
// if 检测 webkit的API
element.webkitRequestFullScreen();
}
}
// 退出全屏,不用管具体是哪个元素,因为屏幕是唯一的。
function cancelFullscreen() {
exitFullScreen();
if (window.top.document.cancelFullScreen) {
window.top.document.cancelFullScreen();
} else if (window.top.document.mozCancelFullScreen) {
window.top.document.mozCancelFullScreen();
} else if (window.top.document.webkitCancelFullScreen) {
window.top.document.webkitCancelFullScreen();
}
}
//用户点击按钮esc,监听退出全屏
window.top.document.addEventListener("fullscreenchange", function (e) {
if (!window.top.document.webkitIsFullScreen) {
smart_mulScreenFlag = false;
exitFullScreen();
}
});
window.top.document.addEventListener("mozfullscreenchange", function (e) {
if (!window.top.document.webkitIsFullScreen) {
smart_mulScreenFlag = false;
exitFullScreen();
}
});
window.top.document.addEventListener("webkitfullscreenchange", function (e) {
if (!window.top.document.webkitIsFullScreen) {
smart_mulScreenFlag = false;
exitFullScreen();
}
});
window.top.document.addEventListener("msfullscreenchange", function (e) {
if (!window.top.document.webkitIsFullScreen) {
smart_mulScreenFlag = false;
exitFullScreen();
}
});
function showScale(obj, num) {
if (!isNull(videoScale) && smart_player_box_item_all_array[num].style.background === "transparent" || smart_player_box_item_all_array[num].style.background === "none") {
var e = obj || window.event;
var mouseY = e.layerY || e.offsetY;
if ($(smart_player_box_item_all_array[num]).hasClass("smart-full-screen-box")) {
if (mouseY > 35) {
$(smart_player_box_item_all_array[num]).find($(".smart-bg-scale")).remove();
} else {
if ($(smart_player_box_item_all_array[num]).find($(".smart-bg-scale")).html() == undefined) {
$(smart_player_box_item_all_array[num]).append(scaleHtml(videoScale, num));
}
}
} else {
if (mouseY > 35) {
$(smart_player_box_item_all_array[num]).find($(".smart-bg-scale")).remove();
} else {
if ($(smart_player_box_item_all_array[num]).find($(".smart-bg-scale")).html() == undefined) {
$(smart_player_box_item_all_array[num]).append(scaleHtml(videoScale, num));
}
}
}
if (num != smart_selectScaleNum) {
$(smart_player_box_item_all_array[smart_selectScaleNum]).find($(".smart-bg-scale")).remove();
}
smart_selectScaleNum = num;
}
}
//重新连接
function I_Reconnect(index) {
var iWndIndex;
if (index) {
iWndIndex = smart_realPlayerArr[index];
} else {
iWndIndex = smart_currentRightMenuIndex;
}
var f = CKobject.getObjectById("smart_" + iWndIndex).getStatus().myflashvars.f;
CKobject.getObjectById("smart_" + iWndIndex).newAddress('{f->' + f + '}');
}
//调整尺寸
function I_setPlayerResize(rw, rh, num) {
if (arguments.length === 1) {//满屏
CKobject.getObjectById("smart_" + arguments[0]).videoWAndH(100, 100);
return;
}
if (arguments.length === 0 || arguments.length === 2) {
num = smart_currentRightMenuIndex;
}
if (arguments.length === 0) {
CKobject.getObjectById("smart_" + num).videoWAndH(100, 100);
return;
}
var oldW = document.getElementsByClassName("smart-player-box-item")[num].offsetWidth;
var oldH = document.getElementsByClassName("smart-player-box-item")[num].offsetHeight;
var oldRate = oldW / oldH;
var newRate = rw / rh;
var newW, newH;
if (oldRate > newRate) {//高不变
newW = oldH * rw / rh;
CKobject.getObjectById("smart_" + num).videoWAndH(newW * 100 / oldW, 100);
} else if (oldRate < newRate) {//宽不变
newH = oldW * rh / rw;
CKobject.getObjectById("smart_" + num).videoWAndH(100, newH * 100 / oldH);
}
}
//更换清晰度
function I_setDefinition(str) {
if (str == "0") {
var f = CKobject.getObjectById("smart_" + smart_currentRightMenuIndex).getStatus().myflashvars.f;
f = f.replace('tourage', 'hls');
} else if (str == '1') {
var f = CKobject.getObjectById("smart_" + smart_currentRightMenuIndex).getStatus().myflashvars.f;
f = f.replace('hls', 'tourage');
}
CKobject.getObjectById("smart_" + smart_currentRightMenuIndex).newAddress('{f->' + f + '}');
}
//退出全屏的样式修改
function exitFullScreen() {
$(".smart-full-screen-box").removeClass("smart-full-screen-box");
$(".smart-bg-full-screen").removeClass("smart-bg-full-screen");
$(".smart-resize-margin").removeClass("smart-resize-margin");
$(".smart-hidden").removeClass("smart-hidden");
$("#" + element_Id).css({'border': '2px solid ' + subBorder});
$(document.getElementsByTagName("body")[0]).css({"overflow": "auto"});
var topElement = $("#" + top_Element_Id, window.top.document).get(0);
var topChilds = $("#" + top_Element_Id, window.top.document).parent().children();
for (var i = 0; i < topChilds.length; i++) {
if (topChilds[i] === topElement) {
$("#" + top_Element_Id, window.top.document).removeClass("smart-full-screen-box");
} else {
$(topChilds[i]).removeClass("smart-display-none");
}
}
var all = $("#" + top_Element_Id, window.top.document).children();
var obj = $("#" + top_Element_Id, window.top.document).get(0).getElementsByTagName("iframe");
if (obj.length != 0) {
obj = obj[0];
for (var i = 0; i < all.length; i++) {
if (all[i] === obj) {
$(obj).removeClass("smart-full-screen-box");
} else {
$(all[i]).removeClass("smart-display-none");
}
}
// var childs = $("body").children();
// for(var i = 0; i < childs.length;i++){
// if(childs[i] === document.getElementById(element_Id)){
// $("#" + element_Id).removeClass("smart-full-screen-box");
// }else{
// $(childs[i]).removeClass("smart-display-none");
// }
// }
var childs = $("body").children().children();
for (var i = 0; i < childs.length; i++) {
if (childs[i] === document.getElementById(element_Id).parentNode) {
var cs = document.getElementById(element_Id).parentNode.childNodes;
for (var j = 0; j < cs.length; j++) {
if (cs[j] === document.getElementById(element_Id)) {
$("#" + element_Id).removeClass("smart-full-screen-box");
$("#" + element_Id).parent().css({
'padding': smart_contentPadding,
'width': smart_contentWidth + "px"
});
} else {
$(cs[j]).removeClass("smart-display-none");
}
}
} else {
$(childs[i]).removeClass("smart-display-none");
}
}
}
smartCancelFullscreenStyle();
}
//视频加载完成以后的处理
function smart_loadedHandler(num) {
CKobject.getObjectById("smart_" + num).addListener('play', 'playHandler(' + num + ')');
CKobject.getObjectById("smart_" + num).addListener('resize', 'resizeHandler(' + num + ')');
CKobject.getObjectById("smart_" + num).addListener('error', 'errorHandler(' + num + ')');
if (!isNull(smart_playArr[num])) {
var f = smart_playArr[num];
CKobject.getObjectById("smart_" + num).newAddress('{f->' + f + '}');
if (smart_stop_array.indexOf(smart_realPlayerArr.indexOf(num)) > -1) {
smart_stop_array.remove(smart_realPlayerArr.indexOf(num));
var minNum = smart_stop_array.min();
minNum = minNum || 0;
$(smart_player_box_item_all_array[smart_realPlayerArr[minNum]]).css(
'border', 'solid 2px ' + subBorderSelect
);
}
}
smart_count++;
if (smart_count == (smart_gColumn * smart_gRow)) {
smart_loaded = true;
smartPlayerLoader();
}
}
//监听播放器尺寸发生变化
function resizeHandler() {
for (var i = 0; i < smart_start_array.length; i++) {
CKobject.getObjectById("smart_" + smart_start_array[i]).changeFace(true);
}
}
//监听视频加载失败的事件处理
function errorHandler(num) {
smart_count2++;
if (smart_count2 >= smart_gRow * smart_gColumn) {
if (smart_screenVideoMap[num] != -1 && smart_screenVideoMap[num] != undefined) {
smartPlayerError(num, smart_screenVideoMap[num]);
setSelectIndex();
}
}
}
//监听播放以后的事件处理
function playHandler(num) {
//当视频播放的时候去掉加载动画的照片
$("#" + num).css({
"background": "none"
});
//更新正在播放的视频的下标的数组
for (var i = 0; i < smart_player_box_item_all_array.length; i++) {
if (i === num) {
if (smart_start_array.indexOf(smart_realPlayerArr.indexOf(num)) === -1) {
smart_start_array.push(smart_realPlayerArr.indexOf(i));
}
}
}
//更新未播放的视频的下标的数组
for (var i = 0; i < smart_stop_array.length; i++) {
for (var j = 0; j < smart_start_array.length; j++) {
if (smart_stop_array[i] === smart_start_array[j]) {
smart_stop_array.remove(smart_start_array[j]);
}
}
}
//视频加载成功以后的回调函数
smartPlayerSuccess(num, smart_screenVideoMap[num]);
}
//去掉周边黑框
function updatePadding() {
for (var i = 0; i < smart_player_box_item_all_array.length; i++) {
if (smart_player_box_item_all_array[i].style.background === 'transparent' || smart_player_box_item_all_array[i].style.background === 'none') {
$(smart_player_item_all_array[i]).css({'padding': '0px'});
} else {
$(smart_player_item_all_array[i]).css({'padding': '0 10px'});
}
}
}
//播放器单击事件的回调
function smartPlayerClick() {
}
//视频开始播放的回调函数
function smartPlayerStart(options) {
}
//视频停止播放的回调函数
function smartPlayerStop(iWndIndex) {
}
//关闭所有视频的回调函数
function smartPlayerStopAll() {
}
//播放器加载成功以后的回调函数
function smartPlayerSuccess(num, url) {
}
//播放器加载失败以后的回调函数
function smartPlayerError(num, url) {
}
//播放器初始化完成以后的回调函数
function smartPlayerLoader() {
}
//选中新的窗口添加选中框以后的回调函数
function smartPlayerSelectNew(lastClickIndex, currentClickIndex) {
}
//全屏以后需要处理的样式的回调函数
function smartLaunchFullscreenStyle() {
}
//退出全屏以后需要处理的样式的回调函数
function smartCancelFullscreenStyle() {
}
//大窗口播放的回调函数
function smartFullScreen(iWndIndex) {
}
//转为百分比数字
function toPercent(point) {
var str = Number(point).toFixed(3);
str += "%";
return str;
}
//为空判断
function isNull(obj) {
if (obj === undefined || obj === null) {
return true;
}
if (typeof obj === "string") {
if (obj === 'undefined' || obj === 'null' || trimAll(obj, 'g') === '') {
return true;
}
}
return false;
}
//去掉所有空格
function trimAll(str, is_global) {
var result;
result = str.replace(/(^\s+)|(\s+$)/g, "");
if (is_global.toLowerCase() == "g") {
result = result.replace(/\s/g, "");
}
return result;
}
//获得元素在数组中的下标
Array.prototype.indexOf = function (val) {
for (var i = 0; i < this.length; i++) {
if (this[i] == val) return i;
}
return -1;
};
//删除数组中的元素
Array.prototype.remove = function (val) {
var index = this.indexOf(val);
if (index > -1) {
this.splice(index, 1);
}
};
//数组最小值
Array.prototype.min = function () {
var min = this[0];
var len = this.length;
for (var i = 1; i < len; i++) {
if (this[i] < min) {
min = this[i];
}
}
return min;
};
function scaleHtml(data, num) {
var data = data.split(",");
var html = "";
html = '<div class="smart-row smart-bg-scale">' +
'<div style="width:20%;"></div>' +
'<div class="smart-flex-1 smart-row">';
for (var i = 0; i < data.length; i++) {
if (data[i] === "满屏") {
html += '<div class="smart-flex-1" onclick="I_setPlayerResize(' + num + ')"><div class="smart-rateVideo" >' + data[i] + '</div></div>';
} else {
var arr = data[i].split(":");
html += '<div class="smart-flex-1" onclick="I_setPlayerResize(' + arr[0] + ',' + arr[1] + ',' + num + ')"><div class="smart-rateVideo">' + data[i] + '</div></div>';
}
}
html += '</div>' +
'<div style="width:20%;"></div>' +
'</div>';
return html;
}
function setDirectory(directory) {
window.directory = directory || '';
}
function getDirectory() {
return window.directory;
}
//播放器资源专用路径
function setPlayerDirectory(playerDirectory) {
window.playerDirectory = playerDirectory || '';
}
function getPlayerDirectory() {
return window.playerDirectory;
}
//设置选中框样式
function setSelectIndex() {
var minNum = smart_stop_array.min();
minNum = minNum || 0;
$(smart_player_box_item_all_array[smart_currentActiveBorderIndex]).css(
'border', 'solid 2px ' + subBorder
);
$(smart_player_box_item_all_array[smart_realPlayerArr[minNum]]).css(
'border', 'solid 2px ' + subBorderSelect
);
smart_currentActiveBorderIndex = smart_realPlayerArr[minNum];
smart_currentClickIndex = smart_realPlayerArr[minNum];
smart_lastClickIndex = smart_realPlayerArr[minNum];
}
//获得当前选中框的播放器的下标
function getSelectPlayerIndex() {
return smart_currentActiveBorderIndex;
}
//获得当前选中框的下标
function getSelectIndex() {
if (smart_realPlayerArr.indexOf(smart_currentActiveBorderIndex) == -1) {
setSelectIndex();
}
return smart_realPlayerArr.indexOf(smart_currentActiveBorderIndex);
}
function allowDrop(ev) {
ev.preventDefault();
}
var srcdiv = null;//记录原拖动对象
var srcIndex = -1;//记录原拖动下标
var srcPosition = [-1, -1];//记录原拖动位置,第一个参数是左,第二个参数是上
//拖
function drag(ev, divdom, index) {
srcdiv = divdom;
srcIndex = index;
srcPosition[0] = divdom.style.left;
srcPosition[1] = divdom.style.top;
}
//落
function drop(ev, divdom, index) {
ev.preventDefault();
if (srcdiv != divdom) {
srcdiv.style.left = divdom.style.left;
srcdiv.style.top = divdom.style.top;
smart_player_item_all_array[srcIndex].style.left = divdom.style.left;
smart_player_item_all_array[srcIndex].style.top = divdom.style.top;
divdom.style.left = srcPosition[0];
divdom.style.top = srcPosition[1];
smart_player_item_all_array[index].style.left = srcPosition[0];
smart_player_item_all_array[index].style.top = srcPosition[1];
// divdom.innerHTML = panelAppendHTML;
updateRelationArray(srcIndex, index);
}
}
//判断同样的视频源之前是否播放过
function isSamePlay(index, url) {
var iWndIndex = index;//要选择播放的播放器编号
var oriWndIndex = -1;//原本在播放该视频的窗口编号
//判断视频是否已经播放
for (var i = 0; i < smart_screenVideoMap.length; i++) {
if (smart_screenVideoMap[i] == url) {//视频已经有窗口在播
oriWndIndex = i;
break;
}
}
if (oriWndIndex == -1) {
return true;
} else {
if (smart_realPlayerArr.indexOf(oriWndIndex) > -1) {//同一页
// smart_recordArr[iWndIndex] = smart_recordArr[oriWndIndex];
// smart_recordArr[oriWndIndex] = undefined;
drag(event, smart_player_box_item_all_array[oriWndIndex], oriWndIndex);
drop(event, smart_player_box_item_all_array[iWndIndex], iWndIndex);
} else {
var left = smart_player_box_item_all_array[iWndIndex].style.left;
var top = smart_player_box_item_all_array[iWndIndex].style.top;
$(smart_player_box_item_all_array[iWndIndex]).addClass("smart-hidden-noload");
$(smart_player_item_all_array[iWndIndex]).addClass("smart-hidden-noload");
smart_player_box_item_all_array[oriWndIndex].style.left = left;
smart_player_box_item_all_array[oriWndIndex].style.top = top;
smart_player_item_all_array[oriWndIndex].style.left = left;
smart_player_item_all_array[oriWndIndex].style.top = top;
$(smart_player_box_item_all_array[oriWndIndex]).removeClass("smart-hidden-noload");
$(smart_player_item_all_array[oriWndIndex]).removeClass("smart-hidden-noload");
updateRelationArray(oriWndIndex, iWndIndex);
}
return false;
}
}
//每次拖拽动作完成以后,更新smart_gRelationArray,smart_realPlayerArr,smart_stop_array,smart_start_array
function updateRelationArray(srcIndex, index) {
//更新全局数组smart_gRelationArray
var src = smart_gRelationArray.indexOf(srcIndex);
var cur = smart_gRelationArray.indexOf(index);
var temp = smart_gRelationArray[src];
smart_gRelationArray[src] = smart_gRelationArray[cur];
smart_gRelationArray[cur] = temp;
//更新实际播放器的下标顺序
smart_realPlayerArr.length = 0;
//更新smart_start_array,smart_stop_array
smart_start_array.length = 0;
smart_stop_array.length = 0;
var tempArr = [];//临时记录分屏以后,按照顺序应该显示的下标的数组
for (var i = 0; i < smart_gRow * smart_max_Column; i = i + 4) {
for (var j = i; j < smart_gColumn + i; j++) {
tempArr.push(j);
}
}
//更新实际显示播放器的下标的数组,更新smart_stop_array,并设置应该显示的播放器的位置,显示对应的播放器
for (var i = 0; i < tempArr.length; i++) {
smart_realPlayerArr.push(smart_gRelationArray[tempArr[i]]);
smart_stop_array.push(i);
if (smart_player_box_item_all_array[smart_gRelationArray[tempArr[i]]].style.background === "transparent" || smart_player_box_item_all_array[smart_gRelationArray[tempArr[i]]].style.background === "none") {
smart_stop_array.remove(i);
smart_start_array.push(i);
}
}
}
function changeImg(ele) {
if ($(ele).attr("src").indexOf("active") > 0) {
return;
}
var divider_img = document.getElementsByClassName("divider-img");
for (var i = 0; i < divider_img.length; i++) {
var src = $(divider_img[i]).attr("src");
src = src.substring(0, src.length - 4);
var row = $(divider_img[i]).attr("_row");
var column = $(divider_img[i]).attr("_column");
if (divider_img[i] === ele) {
$(divider_img[i]).attr("src", src + "-active.png");
$(divider_img[i]).addClass("divider-active-img");
I_stylePlayer({row: row, column: column})
} else {
if (src.indexOf("active") > 0) {
src = src.substring(0, src.length - 7);
$(divider_img[i]).attr("src", src + ".png");
$(divider_img[i]).removeClass("divider-active-img");
}
}
}
}
function getVideoPaneId(iWndIndex) {
var index;
if (typeof(iWndIndex) == "undefined") {
iWndIndex = getSelectIndex();
iWndIndex = iWndIndex == -1 ? 0 : iWndIndex;
}
index = smart_realPlayerArr[iWndIndex];
index = (index || index == 0) ? index : smart_currentRightMenuIndex;
return "smart_player_box_" + index;
}
//获取当前的播放窗口总数
function I_currVideoWinNum() {
return smart_gColumn * smart_gRow;
}
//判断是否加载完毕
function I_initLoaded() {
return smart_loaded;
}
//================录制相关===============
//得到播放地址
function I_getPlayUrl(iWndIndex) {
return smart_playArr[iWndIndex]
}
//判断当前是否有录制任务
function I_hasRecording() {
for (var i = 0; i < smart_recordArr.length; i++) {
if (smart_recordArr[i])
return true;
}
return false;
}
function getAllRecordVideoUrl() {
var res = [];
for (var i = 0; i < smart_recordArr.length; i++) {
if (smart_recordArr[i])
res.push(smart_recordArr[i]);
}
return res;
}
//开始录制: 参数传递一个对象,可封装多个参数
function I_StartRecordVideo(index) {
var iWndIndex;
if (index) {
iWndIndex = smart_realPlayerArr[index];
} else {
iWndIndex = smart_currentRightMenuIndex;
}
smartStartRecordVideo(iWndIndex);
}
//开始录制的回调
function smartStartRecordVideo(iWndIndex) {
var playUrl = I_getPlayUrl(iWndIndex);
if (playUrl) {
var videoPaneId = "smart_player_box_" + iWndIndex;
$.ajax({
type: "get",
url: "/tapi/video/recordVideo",
data: {playUrl: playUrl},
// async: false,
success: function (data) {
if (data && data.status) {
//录制开始,将对应播放地址保存在队列中
smart_recordArr[iWndIndex] = playUrl;
//设置录制标志
$("#" + videoPaneId).find("div.video-win-record").html(
"<span class='video-win-record-pro'>正在录制 :</span><span class='video-win-record-time'> 00:00:00</span>" +
"<span class='video-win-record-stop' title='停止' onclick='I_StopRecordVideo(" + iWndIndex + ")'></span>");
//添加录制时间定时器,并将定时器添加到队列中
var time = 0;
var timer = setInterval(function () {
time++;
$("#" + videoPaneId).find("div.video-win-record span.video-win-record-time").html(I_RecordTime(time));
}, 1000);
smart_recordTimerArr[iWndIndex] = timer;
//设置心跳定时器,并将定时器添加到队列中
var heartTimer = setInterval(function () {
videoRecordHeart(playUrl);
}, 60000);
smart_recordHeartTimerArr[iWndIndex] = heartTimer;
} else {
// alert(data.message);
if (data.errorCode == 1) {
alert("已有他人录制,请5分钟后重试!");
}else {
alert("录制启动失败,请重试!");
}
}
},
error: function () {
alert("录制启动失败");
}
});
} else {
alert("未找到录制视频源,请确定该窗口有视频播放");
}
}
//停止录制
function I_StopRecordVideo(iWndIndex) {
smartStopRecordVideo(iWndIndex);
}
//停止录制回调
function smartStopRecordVideo(iWndIndex) {
var playUrl = I_getPlayUrl(iWndIndex);
if (playUrl && smart_recordArr.indexOf(playUrl) > -1) {//判断对应视频是否在录制队列中
var videoPaneId = "smart_player_box_" + iWndIndex;
if(confirm("确定要停止视频录制吗?")) {
$.ajax({
type: "get",
url: "/tapi/video/recordDone",
data: {playUrl: playUrl},
// async: false,
success: function (data) {
// console.log("录制结束: " + playUrl, data);
// if (data && data.status) {
//修改录制提示标识
$("#" + videoPaneId).find("span.video-win-record-pro").html("录制停止,时长 :");
$("#" + videoPaneId).find("span.video-win-record-stop").hide();
clearInterval(smart_recordTimerArr[iWndIndex]); //清除对应的录制时间定时器
clearInterval(smart_recordHeartTimerArr[iWndIndex]); //清除对应的心跳定时器
smart_recordArr[iWndIndex] = undefined;
notify("已停止录制", "success");
},
error: function () {
//修改录制提示标识
$("#" + videoPaneId).find("span.video-win-record-pro").html("录制停止,时长 :");
$("#" + videoPaneId).find("span.video-win-record-stop").hide();
clearInterval(smart_recordTimerArr[iWndIndex]); //清除对应的录制时间定时器
clearInterval(smart_recordHeartTimerArr[iWndIndex]); //清除对应的心跳定时器
smart_recordArr[iWndIndex] = undefined;
notify("已停止录制", "success");
}
});
}
} else {
alert("该视频并不在录制状态");
}
}
function I_RecordTime(time) {
return "00".substr(0, 2 - parseInt(time / 3600).toString().length) + parseInt(time / 3600).toString() + ":" +
"00".substr(0, 2 - parseInt(time / 60 % 60).toString().length) + parseInt(time / 60 % 60).toString() + ":" +
"00".substr(0, 2 - parseInt(time % 60).toString().length) + parseInt(time % 60).toString();
}
//录制视频心跳检测
function videoRecordHeart(playUrl) {
$.ajax({
type: "get",
url: "/tapi/video/recordHeart",
data: {playUrl: playUrl},
success: function (data) {
console.log("心跳: " + playUrl, data)
},
error: function () {
console.log("心跳: " + playUrl, "fail")
}
});
}
//视频截图
function I_StartShotVideo(index) {
var iWndIndex;
if (index) {
iWndIndex = smart_realPlayerArr[index];
} else {
iWndIndex = smart_currentRightMenuIndex;
}
smartShotVideo(iWndIndex);
}
function smartShotVideo (iWndIndex) {
var playUrl = I_getPlayUrl(iWndIndex);
if (playUrl) {
$(".loading").show();
$.ajax({
type: "get",
url: "/tapi/video/shotVideo",
data: {playUrl: playUrl},
// async: false,
success: function (data) {
if (data) {
if (data.status) {
var url = encodeURI("/tapi/downLoad?fileName=uuid&url=" + data.message);
// setTimeout(function () {
$(".loading").hide();
window.location.href= url;
// }, 500);
} else {
$(".loading").hide();
notify (data.message || "截图失败", "warning");
}
} else {
$(".loading").hide();
notify ("截图失败", "warning");
}
},
error: function () {
$(".loading").hide();
notify("截图失败");
}
});
} else {
alert("未找到录制视频源,请确定该窗口有视频播放");
}
}
function downloadFile(url) {
try{
var elemIF = document.createElement('iframe');
elemIF.src = url;
elemIF.style.display = 'none';
document.body.appendChild(elemIF);
// 防止下载两次
setTimeout(function() {
document.body.removeChild(elemIF)
}, 1000);
}catch(e){
console.log(e);
}
}