var isInitFinished=false;//是否加载完视频插件??? var swfwidth=0;//swf插件窗口宽度 var swfheight=0; var PlateNum=0; //url中车牌号 var chnCount = 1;//通道数量 var maxChnCount = 1; //最大窗口数 var loginServer = null; var isLoadLoginServer = false; var jsession=""; var devIdno="";// 车辆对应设备号 var vehiIdno = ""; //车牌号 var isShowResidualSeconds=false; //是否显示视频播放剩余秒数 var radioFileLocation=1;//视频文件位置 1为终端设备,2为储存服务器 ,4为下载服务器 var closeSecond = 3*60;//自动关闭视频秒数 var stopIndex = 0; var lang = new langZhCn(); var IsSearching=false; var videoFileList = new Hashtable(); //视频文件列表 var host=window.location.host; var ip_=""; var port_="6605";//平台登录验证端口号 var serverIp=""; var serverPort=""; var queryVehicleChannels = new Array();//Find the vehicle channel var channels=null; function langZhCn() { this.loginError = "登陆失败"; this.jsessionError = "会话号不存在"; this.deviceNoExist = "找不到车辆信息"; this.errorVideoDevice = "这个设备不是视频设备"; this.vehicleNotOperate = "没有车辆或者设备操作权限"; this.closeTip = "秒后关闭视频"; this.quering="正在查询…"; this.VideoQueryPrompt="未查到相关录像结果!"; this.query="查询"; this.ServerQueryPrompt="相关服务器信息查询失败!"; this.allowed="该浏览器是否设置了允许的弹出框!"; this.NullVideoFileInfo = "无视频文件信息!"; this.optionTips = "必须选择摄像头!"; this.operator = "操作"; this.begintime = "开始时间"; this.endtime = "结束时间"; this.duration = "持续时间"; this.date = "日期"; this.realtimeVideo = "实时视频"; this.replayVideo = "历史视频"; this.channel = "通道"; this.download="下载"; this.video_playback="回放"; this.Normal="常规"; this.Alarm="报警"; this.Device="设备"; this.StorageServer="储服务器"; this.DownloadServer="下载服务器"; this.searchEnded = "搜查完毕"; this.errorGetVideoFile = "获取视频文件信息失败!"; this.deviceNotOnline= "设备不在线!"; this.segment = "分段"; this.segemenDownloadSuccess = '保存成功'; this.segemenDownloadFail = '下载任务已经存在'; this.setParam = "分段下载参数设置"; this.savaParam = "确认参数"; this.endTimeBigStartTime = "结束时间不小于开始时间"; this.beginInfoErro = "开始时间范围"; this.endInfoErro = "结束时间范围"; } function langEn() { this.loginError = "Login failed"; this.jsessionError = "Jsession error"; this.deviceNoExist = "Can't not find vehicles"; this.vehicleNotOperate = "No vehicle or device operating authority"; this.errorVideoDevice = "This device is not video device"; this.closeTip = " seconds later close video" this.quering="quering..."; this.VideoQueryPrompt="Related video results were not found!"; this.query="query"; this.ServerQueryPrompt="Related server information query failed!"; this.allowed="Does this browser set the allowed pop up box!"; this.NullVideoFileInfo = "No video file information!"; this.optionTips = "Select one camara at least!"; this.operator = "operator"; this.begintime = "start"; this.endtime = "ended"; this.duration = "duration"; this.date = "Date"; this.realtimeVideo = "Realtime Video"; this.replayVideo = "Replay Video"; this.channel = "channel"; this.download="Download"; this.video_playback = "PlayBack"; this.Normal="Normal"; this.Alarm="Alarm"; this.Device="Device"; this.StorageServer="StorageServer"; this.DownloadServer="DownloadServer"; this.searchEnded = "Search ended"; this.errorGetVideoFile = "Failed to obtain video file information!"; this.deviceNotOnline= "The device isn't online!"; this.segment = "Segment"; this.segemenDownloadSuccess = 'Save success'; this.segemenDownloadFail = 'Download task already exists'; this.setParam = "Download Parameters"; this.savaParam = "Save"; this.endTimeBigStartTime = "End time is not less than the start time"; this.beginInfoErro = "Start time range"; this.endInfoErro = "End time range"; } $(document).ready(function () { var host = window.location.host; ip_ = host.split(":")[0]; if(!ip_|| ip_ == 'localhost') { ip_ = '127.0.0.1'; } if (getUrlParameter("lang") == "en") { lang = new langEn(); } // alert("host1:"+host1+"\n href1:"+href1+"\n pathname1:"+pathname1+"\n documentURL1:"+documentURL1+"\n search1:"+search1); //加载搜索栏信息 $("#closeTip").hide(); $("#time").val(dateCurrentDateString());//(datatime.getFullYear()+"-"+(datatime.getMonth()+1)+"-"+datatime.getDate() $("#time").click(function(){WdatePicker({lang:"zh",dateFmt:'yyyy-MM-dd'}); });//去HH:mm:ss $("#query").val(lang.query); $('#labelTime').text(lang.date); $('#current').next().text(lang.realtimeVideo); $('#history').next().text(lang.replayVideo); $('#labelChn').text(lang.channel); $("#query").click(function(){ videoFileList.clear(); getChns(); Search(); }); //加载页面 loadPage(); //配置车辆信息 $('#videoTitle').val(vehiIdno); }); function loadPage(){ setPanelWidth(); //加载报表 loadTable(); //载入视频插件 initPlayer(); //获取车牌号 vehiIdno=decodeURIComponent(getUrlParameter("PlateNum")); if(!vehiIdno ) {//为空 alert(lang.deviceNoExist); return; } // callcackFn(); login(); } //加载报表 function loadTable(){ $('#videoInfoTable').flexigrid({ // url:'TestAction_loadEmployees.action', dataType:'json', colModel:[ {display: lang.operator, name : 'operator', width : 100, sortable : false, align: 'center' , hide : false}, {display: lang.fileIndex, name : 'fileIndex', width : 40, sortable : false, align: 'center' , hide : true}, {display: lang.fileTime, name : 'fileTime', width : 150, sortable : false, align: 'center' , hide : true}, {display: lang.Type, name : 'type', width : 80, sortable : false, align: 'center' , hide : true}, {display: lang.spanDevice, name : 'vehiIdno', width : 100, sortable : false, align: 'center' , hide : true}, /*{display: lang.vehiChn, name : 'vehiChn', width : 70, sortable : false, align: 'center' , hide : true},*/ {display: lang.loc, name : 'loc', width : 80, sortable : false, align: 'center' , hide : true}, {display: lang.fileSize, name : 'fileSize', width : 80, sortable : false, align: 'center' , hide : true}, {display: lang.file ,name: 'file', width : 380,sortable : false, align: 'center' , hide : true}, {display: 'svr' ,name: 'svr',hide : true}, {display: 'devIdno' ,name: 'devIdno',hide : true }, {display: 'len' ,name: 'len',hide : true}, {display: 'chnMask' ,name: 'chnMask',hide : true}, // {display: 'beg' ,name: 'beg',hide : true}, // {display: 'end' ,name: 'end',hide : true}, {display: lang.begintime, name : 'beg', width : 100, sortable : false, align: 'center', hide: false}, {display: lang.endtime, name : 'end', width : 100, sortable : false, align: 'center', hide: false}, {display: lang.duration, name : 'duration', width : 100, sortable : false, align: 'center', hide: false},//结束-开始 {display: lang.channel, name: 'vehiChn', width : 63 , sortable : false, align:'center', hide:false}//摄像头=通道+1; ], usepager: false, autoload: false, useRp: false, singleSelect: true, clickRowCenter: true, onDoubleClick: function(obj,event) { doubleClickVideoReplay(obj,event); }, rp: 15, showTableToggleBtn: false, showToggleBtn: false, width: 'auto', height: 'auto', resizable: false, }); loadReportTableWidth(fixFun); //配置 $("#videoInfoTable").flexSetFillCellFun(function(p, row, idx, index) { return fillVideoFileTable(p, row, idx, index); }); } /* * Fill in the video file list */ function fillVideoFileTable(p, row, idx, index) { var name = p.colModel[idx].name; var ret = ""; if(name == 'fileIndex') { ret = row.id + 1; } else if(name == 'fileTime') { var fileRealDate = getFileTime(row.year, row.mon, row.day); var relBeg = row.beg; var relEnd = row.end; var beginDate = fileRealDate +' '+ second2ShortHourEx(row.beg); var endDate = fileRealDate +' '+ second2ShortHourEx(row.end); var timeTitle = row.beginDate + ' - ' + second2ShortHourEx(row.end); ret=timeTitle; } else if(name == 'vehiIdno') { ret = row.vehiIdno; }else if(name == 'type') { if(row.type=="0"){ ret=lang.Normal; }else{ ret=lang.Alarm; } }else if(name == 'vehiChn') { ret = row.chnName; }else if(name == 'loc') { if(row.loc == 1) { ret = lang.Device; }else if(row.loc == 2) { ret = lang.StorageServer; }else if(row.loc == 4) { ret = lang.DownloadServer; } } else if(name == 'fileSize') { ret = (row.len/1024/1024).toFixed(2) + 'MB' ; } else if(name == 'file') { ret = row.file; } else if(name == 'operator') { ret = ''; ret += ''; ret += ''; return ret; } else if(name == 'svr'){ ret=row.svr; }else if(name == 'devIdno'){ ret=row.devIdno; }else if(name == 'len'){ ret=row.len; }else if(name == 'chnMask'){ ret=row.chnMask; }else if(name == 'end'){ ret=second2ShortHourEx(row.end); }else if(name == 'beg'){ ret=second2ShortHourEx(row.beg); }else if(name == 'duration'){ ret=second2ShortHourEx(row.end-row.beg); } return ret; }; function fixFun(){ var width = $(window).width(); var height = $(window).height(); //不能少于1024 if(width < 1024) { width = 1024; } if(getTop($('.queryGraph-render').get(0)) == 0 || getTop($("#container").get(0)) != 0) { height = height - getTop($('.flexigrid .bDiv').get(0)) - $('.flexigrid .pDiv').height() - 10-24;// } if(getTop($('.queryGraph-render').get(0)) != 0) { height = height - getTop($('.flexigrid .bDiv').get(0)) - $('.flexigrid .pDiv').height() - 10-24; } height = height < 0 ? 0 : height; $('.flexigrid .bDiv').height(height); } //如果传入了用户名和密码,则继续加载信息 function login() { var account = getUrlParameter("account"); var password = getUrlParameter("password"); var param = []; param.push({name: 'account', value: account}); param.push({name: 'password', value: password}); doAjaxSubmit('StandardApiAction_login.action', param, function(json, action, success) { if(success) { //获取到会话号 jsession = json.jsession; // //取得会话号则搜索车牌的对应设备号 loadDeviceInfo(); }else { alert(lang.loginError); } }); } //如果传入设备号,则直接判断设备号; //如果没传入设备号,则判断传入的车牌号 //根据设备号或者车牌号获取设备信息,并判断是否有效和是否视频设备 //获取设备通道 //实时视频用 function loadDeviceInfo() { var param = []; param.push({name: 'jsession', value: jsession}); param.push({name: 'vehiIdno', value: vehiIdno}); this.doAjaxSubmit('StandardApiAction_getVideoDevice.action', param, function(json, action, success) { if(success) { //不是视频设备 if(!json.isVideoDevice) { alert(lang.errorVideoDevice); }else { devIdno = json.devIdno; chnCount = json.chnCount; //加载通道选择框 loadChannels(); } }else { //没有操作权限 if(json) { if(json.result == 5) { alert(lang.jsessionError); }else if(json.result == 8) { alert(lang.vehicleNotOperate); }else { alert(lang.deviceNoExist); } }else { alert(lang.deviceNoExist); } } }); } function loadChannels(){ for(var i=0;i' +''+(i+1)+'
'); }else{ $('#channels').append('' +''+(i+1)+''); } } } // function loadAgain(){ setPanelWidth(); loadReportTableWidth(fixFun); } function Search(){ if(IsSearching==true){ return; } if(getChns().length<1){ alert(lang.optionTips); return; } IsSearching=true; $("#query").val(lang.quering); var number=vehiIdno; var id=devIdno; var radioFileType=2;//文件类型 2表示录像。 var radioVideoType= -1;//录像类型 0表示常规,1表示报警,-1表示所有。 var beginstr =$("#time").val()+" "+"00:00:00"; var str=beginstr.split(" "); var begstr = beginstr.replace(/-/g,"/"); var begdate = new Date(begstr); var date=str[0].split("-"); var y = date[0].toString(); // year var m = date[1].toString(); // month var d = date[2].toString(); // day var endstr =$("#time").val()+" "+"23:59:59"; endstr = endstr.split(" "); var beg=shortHour2Second(str[1].toString()); var end=shortHour2Second(endstr[1].toString()); var param = []; param.push({name: 'MediaType', value: 2}); param.push({name: 'DownType', value: 2}); param.push({name: 'jsession', value: jsession}); if(radioFileLocation != 1) { param.push({name: 'DevIDNO', value: number.toString()}); }else { param.push({name: 'DevIDNO', value: id.toString()}); } /*param.push({name:'DevIDNO',value:devIdno});*/ param.push({name: 'Location', value:Number(radioFileLocation)}); $.ajax({ type:'POST', url:'http://'+ ip_ +':' + port_+'/3/1/callback=getData', data:param, cache:false, dataType: 'jsonp', success: getData = function (data) { if(data.result == 0){ serverIp=data.server.clientIp; serverPort=data.server.clientPort; var param2 = []; param2.push({name: 'DownType', value: 2}); param2.push({name: 'jsession', value: jsession}); if(radioFileLocation != 1) { param2.push({name: 'DevIDNO', value: number.toString()}); }else { param2.push({name: 'DevIDNO', value: id.toString()}); } param2.push({name: 'LOC', value: Number(radioFileLocation)}); param2.push({name: 'CHN', value: -1}); param2.push({name: 'YEAR', value: Number(y)}); param2.push({name: 'MON', value: Number(m)}); param2.push({name: 'DAY', value: Number(d)}); param2.push({name: 'RECTYPE', value: Number(radioVideoType)}); param2.push({name: 'FILEATTR', value: Number(radioFileType)}); param2.push({name: 'BEG', value:beg}); param2.push({name: 'END', value:end}); $.ajax({ type:'POST', url:'http://'+serverIp+':'+serverPort+'/3/5/callback=getData', data:param2, cache:false, dataType: 'jsonp', success: getData = function (json) { $("#videoInfoTable tr").remove(); if(data.result == 0){ addVideoFileInfo(json); }else{ alert(lang.VideoQueryPrompt); } IsSearching=false; $("#query").val(lang.query); } }); }else{ alert(lang.ServerQueryPrompt); IsSearching=false; $("#query").val(lang.query); } } }); } function getChns(){ channels=new Array(); $("input:checkbox[name='channel']:checked").each(function(){ channels.push($(this).val()); }); return channels; } /** * Add video file information **/ function addVideoFileInfo(json) { //Adding list to search var files = new Array(); if(json.files != null && json.files.length > 0) { //File list sort, according to the start time from small to large json.files.sort(function(a,b){return a.beg > b.beg ? 1 : -1}); //Add to video file list var index = 0; for (var i = 0; i < json.files.length; i++) { //The vehicle does not contain this channel, then the information is removed. var isAdd = true; //Can download the task of the whole file download //Multiple channel files, can only be downloaded //ChnMask>0 according to the position to determine the number of channels CHN is also a number of channels if(json.files[i].chnMask > 0) { json.files[i].maskChns = getMaskChnArray(json.files[i].chnMask).maskChns; json.files[i].chnName = getMaskChnArray(json.files[i].chnMask).maskChnNames; json.files[i].isSegment = true;//Whether can only be downloaded if(json.files[i].maskChns == '') { isAdd = false; } }else { //chn == 98 All channels if(json.files[i].chn == 98) { json.files[i].chnName = getAllChnName(); json.files[i].isSegment = true; if(json.files[i].chnName == '') { isAdd = false; } }else { json.files[i].chnName = getChnName(json.files[i].chn); if(json.files[i].chnName == '') { isAdd = false; } } } if(isAdd) { json.files[i].id = index; if(json.files[i].type == 1) { json.files[i].color = "#FF0000"; } json.files[i].vehiIdno = vehiIdno; //Handling files across days processFileDay(json.files[i]); json.files[i].isDirect = true; for(var j=0;j 0) { //Add to video file list $("#videoInfoTable").flexAppendRowJson(files, false); $.dialog.tips(lang.searchEnded, 1); } } if(json.result == 0) { if(files.length <= 0) { $.dialog.tips(lang.NullVideoFileInfo, 2); } }else if(json.result == 23){ $.dialog.tips(lang.deviceNotOnline, 2);//设备不在线 }else { var mess = ''; if((typeof showDialogErrorMessage) == 'function') { mess = showDialogErrorMessage(json.result, json.cmsserver); } if(mess != null && mess == '') { $.dialog.tips(lang.errorGetVideoFile, 2); } } } //Deal with file information, cross day function processFileDay(data) { //File across the day before the day of the day or the day after the time //To judge the day before the cross, if the date is the day before var beginstr =$("#time").val()+" "+"00:00:00"; beginstr = beginstr.replace(/-/g,"/"); var begindate = new Date(beginstr); data.yearMonthDay = dateFormat2DateString(begindate); var day = Number(data.yearMonthDay.substring(8, 10)); var fileDay = Number(data.day); var fileRealDate = getFileTime(data.year, data.mon, data.day); if(!dateCompareStrDateRange(data.yearMonthDay, fileRealDate, 1) || !dateCompareStrDateRange(fileRealDate, data.yearMonthDay, 1)) { loadTimeLine = false; data.relBeg = data.beg; data.relEnd = data.end; data.beginDate = fileRealDate +' '+ second2ShortHourEx(data.beg); data.endDate = fileRealDate +' '+ second2ShortHourEx(data.end); data.timeTitle = data.beginDate + ' - ' + second2ShortHourEx(data.end); }else { loadTimeLine = true; //The day before if(fileDay < day || (day == 1 && fileDay <= 31 && fileDay >=28 )) { data.relBeg = 0; data.relEnd = Number(data.end) - 86400; data.beginDate = fileRealDate +' '+ second2ShortHourEx(data.beg); data.endDate = dateFormat2DateString(dateGetNextMulDay(dateStrLongTime2Date(data.beginDate), 1)) +' '+ second2ShortHourEx(data.relEnd); data.timeTitle = data.beginDate + ' - ' + data.endDate; }else if(fileDay == day && Number(data.end) > 86400) { //ay after day data.relBeg = data.beg; data.relEnd = 86399; data.beginDate = fileRealDate +' '+ second2ShortHourEx(data.beg); data.endDate = dateFormat2DateString(dateGetNextMulDay(dateStrLongTime2Date(data.beginDate), 1)) +' '+ second2ShortHourEx(Number(data.end) - 86400); data.timeTitle = data.beginDate + ' - ' + data.endDate; }else { data.relBeg = data.beg; data.relEnd = data.end; data.beginDate = fileRealDate +' '+ second2ShortHourEx(data.beg); data.endDate = fileRealDate +' '+ second2ShortHourEx(data.end); data.timeTitle = data.beginDate + ' - ' + second2ShortHourEx(data.end); } } } //get file time function getFileTime(year, mon, day) { var retTime = ""; retTime += Number(year)+2000; retTime += "-"; if(mon < 10) { retTime += "0"+mon; }else { retTime += mon; } retTime += "-"; if(day < 10) { retTime += "0"+day; }else { retTime += day; } return retTime; } //Gets the name of the channel, comma separated function getMaskChnArray(chnMask) { var chns = []; var chnNames = []; if(queryVehicleChannels) { for (var i = 0; i < queryVehicleChannels.length; i++) { if((chnMask>>queryVehicleChannels[i].index)&1 > 0 && queryVehicleChannels[i].devType == 1) { chns.push(queryVehicleChannels[i].index); chnNames.push(queryVehicleChannels[i].name); } } } var data = {}; data.maskChns = chns.toString(); data.maskChnNames = chnNames.toString(); return data; } //获取所有通道名,逗号分隔 function getAllChnName() { var chnNames = []; if(this.queryVehicleChannels) { for (var i = 0; i < this.queryVehicleChannels.length; i++) { if(this.queryVehicleChannels[i].devType == 1) { chnNames.push(this.queryVehicleChannels[i].name); } } } return chnNames.toString(); } //Get the channel name function getChnName(chn) { return "CH"+(++chn); } //初始化视频插件 function initPlayer() { //视频插件初始化参数 var params = { allowFullscreen: "true", allowScriptAccess: "always", bgcolor: "#FFFFFF", wmode: "transparent" }; //初始化flash swfobject.embedSWF("player.swf", "cmsv6flash", swfwidth, swfheight, "11.0.0", null, null, params, null); initFlash(); } //设置flash窗口数量 function loadFlashWindowNum(num) { if (num == 1) { swfobject.getObjectById('cmsv6flash').setWindowNum(1); } else if (num == 2) { swfobject.getObjectById('cmsv6flash').setWindowNum(2); } else if (num == 3) { swfobject.getObjectById('cmsv6flash').setWindowNum(3); } else { swfobject.getObjectById('cmsv6flash').setWindowNum(4); } } //视频插件是否加载完成 function initFlash() { if (swfobject.getObjectById("cmsv6flash") == null || typeof swfobject.getObjectById("cmsv6flash").setWindowNum == "undefined" ) { setTimeout(initFlash, 50); } else { //设置视频插件的语言 if (getUrlParameter("lang") == "en") { swfobject.getObjectById('cmsv6flash').setLanguage("en.xml"); } else { swfobject.getObjectById('cmsv6flash').setLanguage("cn.xml"); } //先将全部窗口创建好 swfobject.getObjectById("cmsv6flash").setWindowNum(1); //再配置当前的窗口数目 loadFlashWindowNum(1); isInitFinished = true; } } //获取URL参数信息 function getUrlParameter(name){ if(location.search==''){ return ''; } var o={}; var search=location.search.replace(/\?/,'');//只替换第一个问号,如果参数中带有问号,当作普通文本 var s=search.split('&'); for(var i=0;ib){ i=b; }else if(i>c){ i=c } return c; } /** * Start remote playback **/ function startPlayback(url,title) { if (!isInitFinished){ return; } else { setWindowTitle(title); //Window index var index = 0; //Stop before playback swfobject.getObjectById('cmsv6flash').stopVideo(index); //Start playback swfobject.getObjectById("cmsv6flash").startVod(index, url); } } /** *Set window title **/ function setWindowTitle(title) { if (!isInitFinished){ return; } else { //窗口下标 var index = 0; swfobject.getObjectById("cmsv6flash").setVideoInfo(index, title); } }