");
var AVIMaxBandwidth = 1024*1024*1024;
var MaxAVIFileSize = 2000;
var WaitTimes;
var AVIProgressTimer;
var WaitMediaTimer;
var AVIQuery;
var StartTimeTextSel;
var EndTimeTextSel;
var IntStartTime;
var IntEndTime;
var TotalExportTime;
var ManualStop;
var DefaultName;
var AVIFileName;
var AVIFilePath;
var MediaReturn = false;
var AVIGid = -1;
var KeepAliveTimer;
var PBKeepAliveTimer;
var KeepAliveReq;
var PBKeepAliveReq;
function Load(){
AVIForm.btnStartAVI.value=button_start;
AVIForm.btnEndAVI.value=button_cancel;
AVIForm.optEndTime.checked = true;
SelType();
CalendarInitial(document.getElementById("SearchStartCalendar"),"/", window.dialogArguments[9], window.dialogArguments[10]);//init calendar for playback
var StartTime = new Date();
StartTime = window.dialogArguments[7];
var EndTime =new Date();
EndTime = window.dialogArguments[8];
var StartMonth = StartTime.getMonth()+1;
if (parseInt(StartMonth, 10) < 10) StartMonth = StartMonth.toString() + "0";
var EndMonth = EndTime.getMonth()+1;
if (parseInt(EndMonth, 10) < 10) EndMonth = EndMonth.toString() + "0";
AVIForm.startday.value = getMonthString(StartTime.getMonth()+1) + " " + (StartTime.getDate()<10?'0':'') + StartTime.getDate() + ", " + StartTime.getFullYear();
AVIForm.start_hh.value = (StartTime.getHours()<10?'0':'')+StartTime.getHours();
AVIForm.start_mm.value = (StartTime.getMinutes()<10?'0':'')+StartTime.getMinutes();
AVIForm.start_ss.value = (StartTime.getSeconds()<10?'0':'')+StartTime.getSeconds();
AVIForm.endday.value = getMonthString(EndTime.getMonth()+1) + " " + (EndTime.getDate()<10?'0':'') + EndTime.getDate() + ", " + EndTime.getFullYear();
AVIForm.end_hh.value = (EndTime.getHours()<10?'0':'')+EndTime.getHours();
AVIForm.end_mm.value = (EndTime.getMinutes()<10?'0':'')+EndTime.getMinutes();
AVIForm.end_ss.value = (EndTime.getSeconds()<10?'0':'')+EndTime.getSeconds();
AVIForm.AVIFile.value = "C:\\ExportFolder\\Export-CH" +(parseInt(window.dialogArguments[2], 10)<10?'0':'') + window.dialogArguments[2]+ "-<"+ trigger_starttime +">.avi";
DefaultName = "Export-CH" +(parseInt(window.dialogArguments[2], 10)<10?'0':'') + window.dialogArguments[2]+ "-<"+ trigger_starttime +">.avi";
if (parseInt(window.dialogArguments[4], 10) != -1) fnPlaybackKeepAlive();
window.dialogArguments[4].style.display=""; //Recording
window.dialogArguments[5].style.display="none"; //Can't Record
window.dialogArguments[6].style.display="none"; //Record
}
function fnPlaybackKeepAlive() {
var now = new Date();
PBKeepAliveReq=getHTTPReq();
if(typeof(PBKeepAliveReq)=="undefined") return;
PBKeepAliveReq.open("POST", 'http://' +webipport+ '/xmlcmd.cgi?type=action&time='+now.getTime()+'&xml=0' + window.dialogArguments[4] + '', true);
PBKeepAliveReq.send(null);
PBKeepAliveTimer = setTimeout("fnPlaybackKeepAlive()", 8000);
}
function StartExportAVI(){
var now = new Date();
var Query;
var UTCStartDate = new Date();
var UTCEndDate = new Date();
var AVIDefaultFile;
IntStartTime = getTimeByUI(AVIForm.startday, AVIForm.start_hh, AVIForm.start_mm, AVIForm.start_ss, true);
if (AVIForm.optEndTime.checked == true)
{
IntEndTime = getTimeByUI(AVIForm.endday, AVIForm.end_hh, AVIForm.end_mm, AVIForm.end_ss, true);
if (IntStartTime >= IntEndTime)
{
alert(err_startearlier);
return;
}
}
else
{
IntEndTime = AVIForm.txtTimeLen.value;
if (IntEndTime.length == 0 || check_number(IntEndTime) == false || IntEndTime == '0')
{
alert(err_mustbepsint);
return;
}
IntEndTime = IntStartTime + parseInt(AVIForm.txtTimeLen.value ,10) * 1000;
}
if (AVIForm.AVIFile.value.length == 0)
{
alert(err_nofilename);
return;
}
AVIFileName = AVIForm.AVIFile.value.substring(AVIForm.AVIFile.value.lastIndexOf('\\')+1);
AVIFilePath = AVIForm.AVIFile.value.substring(0, AVIForm.AVIFile.value.lastIndexOf('\\')+1);
if (AVIFileName.substring(AVIFileName.length-3).toUpperCase() != "AVI")
{
alert(backup_errfirmwarefile);
return;
}
if (AVIFileName == DefaultName)
{
var AVIStartDate = AVIForm.startday.value;
AVIFileName = "Export-CH" + (parseInt(window.dialogArguments[2], 10)<10?'0':'') + window.dialogArguments[2] + "-" + AVIStartDate.substring(AVIStartDate.indexOf(",")+2);
AVIFileName += getMonthString(AVIStartDate.substring(0,AVIStartDate.indexOf(" "))) + AVIStartDate.substring(AVIStartDate.indexOf(" ")+1, AVIStartDate.indexOf(","));
AVIFileName += AVIForm.start_hh.value + AVIForm.start_mm.value + AVIForm.start_ss.value + ".avi";
}
else
{
if (check_name(AVIFileName) == false) {
alert(err_InvalidFileName);
return;
}
}
ManualStop = false;
IntStartTime = Math.floor(IntStartTime/1000);
IntEndTime = Math.floor(IntEndTime/1000);
IntStartTime = IntStartTime*1000;
IntEndTime = IntEndTime*1000;
UTCStartDate.setTime(IntStartTime);
UTCEndDate.setTime(IntEndTime);
for (i=1; i<=20; i++) document.getElementById("tdProgress"+i).style.background="";
replaceTextChild(document.getElementById("AVITime"), logreport_time+": ---");
if (AVIForm.Video1.IsFileExistMethod(AVIFilePath, AVIFileName) == 1)
{
if (confirm(check_avicoverfile) == false) return;
}
//檢查這個時間區段是否有錄影資料
Query = 'http://' + window.dialogArguments[12] + '/xmlcmd.cgi?type=action&time='+now.getTime() + '&xml='+window.dialogArguments[2]+'';
Query += ''+Math.floor(IntStartTime / 1000).toString()+''+(Math.floor(IntEndTime / 1000)+1).toString()+'1';
HTTPReq=getHTTPReq();
if(typeof(HTTPReq)=="undefined") return;
document.getElementsByTagName('body')[0].style.cursor="wait";
HTTPReq.onreadystatechange=SearchRecordDataOK;
HTTPReq.open("POST", Query, true);
HTTPReq.send(null);
}
function SearchRecordDataOK(){
if (HTTPReq.readyState == 4)
{
if(HTTPReq.responseText.indexOf('RET="0"') != -1)
{
var Query;
var now = new Date();
var xmlResponse = fnStringtoXML(HTTPReq.responseText);
if (xmlGetTextByTagName(xmlResponse, "SegData").indexOf("1") == -1)
{
alert(live_norecorddata);
document.getElementsByTagName('body')[0].style.cursor="default";
return;
}
//取得最新(最近一次)的錄影時間
Query = 'http://' + window.dialogArguments[12] + '/xmlcmd.cgi?type=action&time='+now.getTime()+'&xml=1'+window.dialogArguments[2]+'';
HTTPReq=getHTTPReq();
if(typeof(HTTPReq)=="undefined") return;
HTTPReq.onreadystatechange=GetRecordInfoOK;
HTTPReq.open("POST", Query, true);
HTTPReq.send(null);
}
else
{
document.getElementsByTagName('body')[0].style.cursor="default";
EnabledAllControl(true);
AVIStatusInfo.style.display = "none";
AVIForm.btnStartAVI.style.display = "";
AVIForm.btnEndAVI.style.display = "none";
alert(live_exportAVIfail);
}
}
}
function GetRecordInfoOK(){
if (HTTPReq.readyState == 4)
{
if(HTTPReq.responseText.indexOf('RET="0"') != -1)
{
//var AVIFileName = AVIForm.AVIFile.value.substring(AVIForm.AVIFile.value.lastIndexOf('\\')+1);
//var AVIFilePath = AVIForm.AVIFile.value.substring(0, AVIForm.AVIFile.value.lastIndexOf('\\')+1);
var LastRecordDate = new Date();
var now = new Date();
var xmlResponse = fnStringtoXML(HTTPReq.responseText); //Van將GetSysHttpReq改成HTTPReq
if (xmlGetTextByTagName(xmlResponse, "FirstTime").length == 0 || xmlGetTextByTagName(xmlResponse, "FirstTime") == xmlGetTextByTagName(xmlResponse, "LastTime")) //Van 將FirstMSec與LastMSec改成FirstTime與LastTime
{
alert(live_norecorddata);
document.getElementsByTagName('body')[0].style.cursor="default";
return;
}
LastRecordDate.setTime(parseInt(xmlGetTextByTagName(xmlResponse, "LastTime"), 10)*1000 + parseInt(xmlGetTextByTagName(xmlResponse, "LastMSec"), 10));
//如果使用者設定的結束時間晚於最新的錄影時間,必須把結束時間更改為最新的錄影時間
if (LastRecordDate.getTime() < IntEndTime) IntEndTime = LastRecordDate.getTime();
AVIQuery="";
AVIQuery = 'http://'+ window.dialogArguments[12] + '/xmlcmd.cgi?type=action&time='+now.getTime();
AVIQuery += '&xml='+Math.floor(IntStartTime / 1000).toString();
AVIQuery += ''+(Math.floor(IntEndTime / 1000)+1).toString()+'';
AVIQuery += window.dialogArguments[2]+'1';
//For Pro
EnabledAllControl(false);
AVIForm.btnStartAVI.style.display = "none";
AVIForm.btnEndAVI.style.display = "";
HTTPReq=getHTTPReq();
if(typeof(HTTPReq)=="undefined") return;
HTTPReq.onreadystatechange=setAVIInfo;
HTTPReq.open("POST", AVIQuery, true);
HTTPReq.send(null);
}
else
{
document.getElementsByTagName('body')[0].style.cursor="default";
EnabledAllControl(true);
AVIStatusInfo.style.display = "none";
AVIForm.btnStartAVI.style.display = "";
AVIForm.btnEndAVI.style.display = "none";
alert(live_exportAVIfail);
}
}
}
function WaitMediaReady(){
//必須要先等Media連上camera才能下backup的CGI
if( AVIForm.Video1.ConnectionStatus()>=48 )
{
if (MediaReturn == true) return;
EnabledAllControl(false);
AVIForm.btnStartAVI.style.display = "none";
AVIForm.btnEndAVI.style.display = "";
HTTPReq=getHTTPReq();
if(typeof(HTTPReq)=="undefined") return;
HTTPReq.onreadystatechange=setAVIInfo;
HTTPReq.open("POST", AVIQuery, true);
HTTPReq.send(null);
WaitTimes=0;
}
else
{
WaitTimes++;
WaitMediaTimer=setTimeout("WaitMediaReady()",100);
}
}
function setAVIInfo(){
if (HTTPReq.readyState == 4)
{
if(HTTPReq.responseText.indexOf('RET="0"') != -1)
{
var xmlResponse = fnStringtoXML(HTTPReq.responseText);
AVIGid = parseInt(xmlGetTextByTagName(xmlResponse, "GroupID"), 10);
KeepAliveTimer = setInterval("fnExportKeepAlive()", 8000);
AVIForm.Video1.PlayStartMethod(window.dialogArguments[14], window.dialogArguments[15], "", "", AVIGid);
AVIForm.Video1.AVIRecStopTimeSec = Math.floor(IntEndTime / 1000);
AVIForm.Video1.AVIRecStopTimeMSec = parseInt(IntEndTime.toString().substring(IntEndTime.toString().length - 3), 10);
TotalExportTime = Math.floor(IntEndTime / 1000) - Math.floor(IntStartTime / 1000);
// MediaReturn = false;
AVIForm.Video1.AVIRecControlMethod(1, AVIFilePath, AVIFileName.substring(0, AVIFileName.length-4), MaxAVIFileSize);
AVIForm.Video1.PlayControlMethod(2, window.dialogArguments[2], AVIGid);
// if (MediaReturn == false)
// {
AVIStatusInfo.style.display = "";
AVIProgressTimer = setInterval("DisplayAVIProgress(-1)", 1000);
replaceTextChild(document.getElementById("AVIStatus"), live_exporttoaviing + "... ...");
// }
}
else
{
document.getElementsByTagName('body')[0].style.cursor="default";
EnabledAllControl(true);
AVIStatusInfo.style.display = "none";
AVIForm.btnStartAVI.style.display = "";
AVIForm.btnEndAVI.style.display = "none";
alert(live_exportAVIfail + "\n" + HTTPReq.responseText);
}
}
}
function fnExportKeepAlive() {
var now = new Date();
KeepAliveReq=getHTTPReq();
if(typeof(KeepAliveReq)=="undefined") return;
KeepAliveReq.open("POST", 'http://'+ window.dialogArguments[12] + '/xmlcmd.cgi?type=action&time='+now.getTime()+'&xml=1' + AVIGid + '', true);
KeepAliveReq.send(null);
}
function stopBackupCGI() {
var now = new Date();
HTTPReq=getHTTPReq();
if(typeof(HTTPReq)=="undefined") return;
// HTTPReq.onreadystatechange=setAVIInfo;
HTTPReq.open("POST", 'http://'+ window.dialogArguments[12] + '/xmlcmd.cgi?type=action&time='+now.getTime()+'&xml='+AVIGid.toString()+'', true);
HTTPReq.send(null);
}
function StopExportAVI(){
var AVIFileName = AVIForm.AVIFile.value.substring(AVIForm.AVIFile.value.lastIndexOf('\\')+1);
var AVIFilePath = AVIForm.AVIFile.value.substring(0, AVIForm.AVIFile.value.lastIndexOf('\\')+1);
if (typeof(KeepAliveTimer)== "number") clearInterval(KeepAliveTimer);
if (typeof(PBKeepAliveTimer)== "number") clearTimeout(PBKeepAliveTimer);
ManualStop = true;
EnabledAllControl(true);
AVIForm.btnStartAVI.style.display = "";
AVIForm.btnEndAVI.style.display = "none";
//replaceTextChild(document.getElementById("AVIStatus"), live_stopexportAVI);
for (i=1; i<=20; i++) document.getElementById("tdProgress"+i).style.background="";
AVIForm.Video1.AVIRecControlMethod(0, AVIFilePath, AVIFileName.substring(0, AVIFileName.length-4), MaxAVIFileSize);
AVIForm.Video1.PlayControlMethod(0, window.dialogArguments[2], AVIGid );
stopBackupCGI()
if (typeof(AVIProgressTimer) == 'number' ) clearInterval(AVIProgressTimer);
}
function DisplayAVIProgress(MediaTimeStamp){
var AVINowTime = new Date();
var lMeidaTimestamp;
var DisplayTime;
var NowProgress;
if (MediaReturn == true && MediaTimeStamp <= 0) return;
if (MediaTimeStamp < 0) lMeidaTimestamp = AVIForm.Video1.TimeStamp;
else lMeidaTimestamp = MediaTimeStamp;
if (lMeidaTimestamp <= 0) return;
AVINowTime.setTime(lMeidaTimestamp*1000);
NowProgress = Math.ceil((lMeidaTimestamp - Math.floor(IntStartTime / 1000)) / TotalExportTime * 20);
if (NowProgress > 20) NowProgress = 20;
for (i=1; i<=NowProgress; i++) document.getElementById("tdProgress"+i).style.background="#0000ff";
//轉換為要顯示的格式
DisplayTime = AVINowTime.getUTCFullYear();
DisplayTime = DisplayTime + "/" + ((AVINowTime.getMonth()+1)<10?'0':'') + (AVINowTime.getMonth()+1) + "/" + (AVINowTime.getDate()<10?'0':'') + AVINowTime.getDate();
DisplayTime = DisplayTime + " " + (AVINowTime.getHours()<10?'0':'') + AVINowTime.getHours() + ":" + (AVINowTime.getMinutes()<10?'0':'') + AVINowTime.getMinutes();
DisplayTime = DisplayTime + ":" + (AVINowTime.getSeconds()<10?'0':'') + AVINowTime.getSeconds();
replaceTextChild(document.getElementById("AVITime"), logreport_time+": "+DisplayTime);
}
function timeText_increase(day, hourText, minText, secText, SelTpye)
{ var Sel=SelTpye;
var value;
if(Sel==0)
{ document.getElementById(secText).style.backgroundColor="#cccccc";
value=parseInt(document.getElementById(secText).value,10);
if(value>=59) { document.getElementById(secText).value="00"; }
else { value++; value=(value<10?'0':'') +value.toString(); document.getElementById(secText).value=value; }
}
if(Sel==1)
{ if(Sel==1) document.getElementById(minText).style.backgroundColor="#cccccc";
value=parseInt(document.getElementById(minText).value,10);
if(value>=59) { document.getElementById(minText).value="00"; }
else { value++; value=(value<10?'0':'') +value.toString(); document.getElementById(minText).value=value; }
}
if(Sel==2)
{ if(Sel==2) document.getElementById(hourText).style.backgroundColor="#cccccc";
value=parseInt(document.getElementById(hourText).value,10);
if(value>=23) { document.getElementById(hourText).value="00";}
else { value++; value=(value<10?'0':'') +value.toString(); document.getElementById(hourText).value=value; }
}
}
function timeText_decrease(day, hourText, minText, secText, SelType)
{ var Sel=SelType;
var value;
if(Sel==0)
{ document.getElementById(secText).style.backgroundColor="#cccccc";
value=parseInt(document.getElementById(secText).value,10);
if(value<=0) {document.getElementById(secText).value="59"; }
else { value--; value=(value<10?'0':'') +value.toString(); document.getElementById(secText).value=value; }
}
if(Sel==1)
{ if(Sel==1) document.getElementById(minText).style.backgroundColor="#cccccc";
value=parseInt(document.getElementById(minText).value,10);
if(value<=0) {document.getElementById(minText).value="59"; }
else { value--; value=(value<10?'0':'') +value.toString(); document.getElementById(minText).value=value; }
}
if(Sel==2)
{ if(Sel==2) document.getElementById(hourText).style.backgroundColor="#cccccc";
value=parseInt(document.getElementById(hourText).value,10);
if(value<=0) { document.getElementById(hourText).value="23";}
else { value--; value=(value<10?'0':'') +value.toString(); document.getElementById(hourText).value=value; }
}
}
function getTimeByUI(dateYext, yyText, mmText, ssText)
{
var date=dateYext.value; //June 06, 2001
var sdate=new Date(); //需調到格林威治時間
sdate.setFullYear(date.substring(date.indexOf(",")+2), getMonthString(date.substring(0,date.indexOf(" ")))-1, date.substring(date.indexOf(" ")+1, date.indexOf(",")) );
sdate.setHours(parseInt(yyText.value,10), parseInt(mmText.value,10), ssText.value, 999);
return sdate.getTime();
}
function EnabledAllControl(Action)
{
var ControlEnabled = "";
if (Action == false) ControlEnabled = "disabled";
AVIForm.startday.disabled = ControlEnabled;
AVIForm.btnSelStartDay.disabled = ControlEnabled;
AVIForm.start_hh.disabled = ControlEnabled;
AVIForm.start_mm.disabled = ControlEnabled;
AVIForm.start_ss.disabled = ControlEnabled;
AVIForm.buttonStartIncrease.disabled = ControlEnabled;
AVIForm.buttonStartDecrease.disabled = ControlEnabled;
AVIForm.endday.disabled = ControlEnabled;
AVIForm.btnSelEndDay.disabled = ControlEnabled;
AVIForm.end_hh.disabled = ControlEnabled;
AVIForm.end_mm.disabled = ControlEnabled;
AVIForm.end_ss.disabled = ControlEnabled;
AVIForm.buttonEndIncrease.disabled = ControlEnabled;
AVIForm.buttonEndDecrease.disabled = ControlEnabled;
AVIForm.AVIFile.disabled = ControlEnabled;
}
function adjustTime(eve, type)
{ var element=getEventTarget(eve);
var value=element.value;
if( check_number(value)==true )
{ value=parseInt(value,10);
if(value<0) element.value="00";
else
{ if(type==0) { if(value>=24) element.value="23"; }
else { if(value>=60) element.value="59"; }
}
} else
{ var newValue="";
if( check_number(value.substring(0,1))==true ) newValue=value.substring(0,1);
if( check_number(value.substring(1,2))==true ) newValue+=value.substring(1,2);
element.value= ((newValue.length==0)? "00":newValue );
}
}
function MediaEvent(lStopCode, lTimestamp)
{
var AVIRealStartTime = new Date();
var AVIRealEndTime = new Date();
var DisplayStartTime;
var DisplayEndTime;
MediaReturn = true;
AVIForm.Video1.PlayControlMethod(0, window.dialogArguments[2], AVIGid );
stopBackupCGI();
if (typeof(AVIProgressTimer) == 'number' ) clearInterval(AVIProgressTimer);
if (typeof(WaitMediaTimer)== "number") clearTimeout(WaitMediaTimer);
DisplayAVIProgress(lTimestamp);
switch (lStopCode)
{
case 0:
alert(live_exportAVIsuccess);
if (ManualStop == false) window.close();
break;
case 1:
alert(trigger_diskfull);
break;
case 2:
alert(live_exportAVIformatchange);
break;
case 3:
alert(live_exportAVItimeout);
break;
case 4:
alert(live_exportAVIfail);
break;
case 5:
alert(live_exportAVIcancel);
window.close();
break;
default:
alert(live_exportAVIfail);
break;
}
document.getElementsByTagName('body')[0].style.cursor="default";
EnabledAllControl(true);
replaceTextChild(document.getElementById("AVIStatus"), live_stopexportAVI);
AVIForm.btnStartAVI.style.display = "";
AVIForm.btnEndAVI.style.display = "none";
if (lStopCode==0 && ManualStop==false) return;
if (lTimestamp == 0 || lStopCode == 4)
{
AVIStatusInfo.style.display = "none";
return;
}
AVIRealStartTime.setTime(IntStartTime);
AVIRealEndTime.setTime(lTimestamp*1000);
//轉換為要顯示的格式
DisplayStartTime = AVIRealStartTime.toLocaleString();
DisplayEndTime = AVIRealEndTime.toLocaleString();
replaceTextChild(document.getElementById("AVITime"), live_exportAVIperiod+": "+DisplayStartTime + " ~ " + DisplayEndTime);
//調整起始時間
AVIForm.startday.value = getMonthString(AVIRealEndTime.getUTCMonth()+1) + " " + (AVIRealEndTime.getUTCDate()<10?'0':'') + AVIRealEndTime.getUTCDate() + ", " + AVIRealEndTime.getUTCFullYear();
AVIForm.start_hh.value = (AVIRealEndTime.getUTCHours()<10?'0':'')+AVIRealEndTime.getUTCHours();
AVIForm.start_mm.value = (AVIRealEndTime.getUTCMinutes()<10?'0':'')+AVIRealEndTime.getUTCMinutes();
AVIForm.start_ss.value = (AVIRealEndTime.getUTCSeconds()<10?'0':'')+AVIRealEndTime.getUTCSeconds();
}
function SelType(){
var objEndDisabled = "";
var objLenDisabled = "";
if (AVIForm.optEndTime.checked == true) objLenDisabled = "disabled";
else objEndDisabled = "disabled";
AVIForm.btnSelEndDay.disabled =objEndDisabled;
AVIForm.end_hh.disabled =objEndDisabled;
AVIForm.end_mm.disabled =objEndDisabled;
AVIForm.end_ss.disabled =objEndDisabled;
AVIForm.endday.disabled =objEndDisabled;
AVIForm.txtTimeLen.disabled=objLenDisabled;
}
function Unload(){
window.dialogArguments[4].style.display="none";
window.dialogArguments[5].style.display="";
window.dialogArguments[6].style.display="none";
StopExportAVI();
var obj = document.getElementById("Video1");
obj.PlayControlMethod(0, 1, 1);
obj.DestroyMethod();
obj.parentNode.removeChild(obj);
delete obj;
//if (typeof(AVIProgressTimer) == 'number' ) clearInterval(AVIProgressTimer);
}
document.write('')
-->