﻿// JavaScript Document

var TCNV_XML_Unknown 			= -1;
var TCNV_XML_Local				= 0;	//本地文件存储
var TCNV_XML_FixedInfo			= 1;	//远程DVR主机硬件配置信息
var TCNV_XML_User				= 2;	//远程DVR主机用户信息
var TCNV_XML_Setup				= 3;	//远程DVR主机系统设置信息
var TCNV_XML_Performance		= 4;	//远程DVR主机运行性能
var TCNV_XML_Status				= 5;	//远程DVR主机运行状态
var TCNV_XML_Protocol			= 6;	//远程DVR主机安装外设协议
var TCNV_XML_DBQuery			= 7;	//数据中心数据库查询返回表单
var TCNV_XML_MatrixStatus		= 8;	//数字矩阵切换状态

var g_Priority = new Array(11);
var	g_MatrixAddress = "127.0.0.1";
var	g_MatrixPort = 8002;
var g_DeviceType = 0;
var g_CenterHttpPort = 0;

function RegisterFlexEvent()
{
	try
	{
		VP.attachEvent("CustomMessage", OnCustomMessage);
	}
	catch(error)
	{
		return false;
	}
	return true;
}

function ClearFlexEvent()
{
	VP.detachEvent("CustomMessage", OnCustomMessage);
}

var g_strInvoke = "";
function OnCustomMessage(strUrl, Type, SubType ,strParam, nParam)
{
	g_strInvoke = "<invoke name=\"OnCustomMessage\" returntype=\"xml\"><arguments>";
	g_strInvoke += ("<string>"+strUrl+"</string>");
	g_strInvoke += ("<number>"+Type+"</number>");
	g_strInvoke += ("<number>"+SubType+"</number>");
	g_strInvoke += ("<string>"+strParam+"</string>");
	g_strInvoke += ("<number>"+nParam+"</number>");
	g_strInvoke += ("</arguments></invoke>");

	AppLoader.CallFunction(g_strInvoke);

	//thisMovie("AppLoader").OnCustomMessage(strUrl, Type, SubType, strParam, nParam);
}

function IsCmdLinked(address, port)
{
	return VP.IsCmdLinked(address, port);
}

function IsSameIP(domain1, domain2)
{
	return VP.IsSameIP(domain1, domain2);
}

function IsSameAsCurServer(strAddress, nPort)
{
	if(g_Port!=nPort)
	{
		return false;
	}
	if(g_Address!=strAddress)
	{
		if(!VP.IsSameIP(g_Address, strAddress))
		{
			return false;
		}
	}
	
	return true;
}

function IsCurrentServerValid()
{
	if(g_Address==null||g_Address==""||g_Port<=0||g_Username==null||g_Username=="")
	{
		return false;
	}
	return true;
}

function SetRetValue(value)
{
	thisMovie("AppLoader").DoRetValue(value);
}

function SetMatrix(strAddress, nPort)
{
	g_MatrixAddress = strAddress;
	g_MatrixPort = nPort;
}

function GetDataCenterInfo()
{
	return {ip:g_DataCenterAddress,port:g_DataCenterPort,username:g_DataCenterUsername,password:g_DataCenterPassword};
}

function SetDataCenterInfo(value)
{
	if(!SetDataCenter(value.ip, value.port, value.username, value.password))
	{
		return false;
	}
	if(!VP.RegisterConnectionType(g_DataCenterAddress, g_DataCenterPort, TCVDEV_PC_DVR))
	{
		return false;
	}
	return true;
}

function SetDataCenter(strAddress, nPort, strUserName, strPassword)
{
	if(!VP.SetCMSInfo(strAddress, nPort, strUserName, strPassword))
	{
		return false;
	}
	g_DataCenterAddress = strAddress;
	g_DataCenterPort = nPort;
	g_DataCenterUsername = strUserName;
	g_DataCenterPassword = strPassword;
	
	return true;
}

function StartServerLinkCheckRoutine()
{
	return VP.StartServerLinkCheckRoutine();
}

function StopServerLinkCheckRoutine()
{
	return VP.StopServerLinkCheckRoutine();
}

function SetServer(strAddress, nPort, strUserName, strPassword,nDevType)
{
	g_Address = strAddress;
	g_Port = nPort;
	g_Username = strUserName;
	g_Password = strPassword;
	g_DeviceType = nDevType;
	if(nDevType>=0)
	{
		VP.RegisterConnectionType(strAddress,nPort,nDevType);
	}
}

function GetServer()
{
	return {ip:g_Address,port:g_Port,username:g_Username,password:g_Password,type:g_DeviceType};
}

//------------------------------

function RefreshMatrixState(infoArray)
{
	if(infoArray==null)
	{
		return false;
	}
	for(var i=0;i<infoArray.length;i++)
	{
		var strRet = VP.GetXMLContent(TCNV_XML_MatrixStatus,infoArray[i].ip,infoArray[i].port,"Changed");
		if(strRet=="")
		{
			return true;
		}
		else if(strRet=="1")
		{
			VP.SetXMLContent(TCNV_XML_MatrixStatus,infoArray[i].ip,infoArray[i].port,"Changed", "0");
			return true;
		}
	}
	return false;
}

//-------------------------------

function GetRemoteFileList(bIsFolder)
{
	if(bIsFolder==0||bIsFolder==1)
	{
		return VP.GetRemoteFileList(g_Address, g_Port, bIsFolder);
	}

	return "";
}

function DATESTR(timeArray)
{
	var dataArray = new Array();
	for(var i = 0; i < timeArray.length; i++)
	{
		dataArray.push(VP.DATESTR(parseFloat(timeArray[i]/1000)));
	}
	return dataArray;
}

function refreshWindow()
{
	location.reload(true);
}

function LoginServer(bIsServer)
{
	var strAddress = "";
	var nPort = 0;
	var user_name = "";
	var password = "";
	if(bIsServer)
	{
		if(!IsCurrentServerValid())
		{
			return false;
		}
		strAddress = g_Address;
		nPort = g_Port;
		user_name = g_Username;
		password = g_Password;
	}
	else
	{
		if(g_DataCenterAddress==null||g_DataCenterAddress==""||g_DataCenterPort<=0||g_DataCenterUsername==null||g_DataCenterUsername=="")
		{
			return false;
		}
		strAddress = g_DataCenterAddress;
		nPort 	= g_DataCenterPort;
		user_name = g_DataCenterUsername;
		password = g_DataCenterPassword;
	}
	if(!VP.Login(strAddress,nPort,user_name,password))
	{
		return false;
	}
	
	return true;
}

function GetPriority(regetFlag)
{
	for(var i=0;i<=TCNV_XML_MatrixStatus;i++)
	{
		g_Priority[i] = 0;
	}
	if(!VP.GetServerInfo(g_Address, g_Port, g_Username, g_Password, regetFlag))
	{
		return null;
	}
	g_Priority[TCNV_XML_FixedInfo] = VP.GetXMLInfo(TCNV_XML_FixedInfo, g_Address, g_Port, g_Username, g_Password, regetFlag);
	g_Priority[TCNV_XML_Setup] = VP.GetXMLInfo(TCNV_XML_Setup, g_Address, g_Port, g_Username, g_Password, regetFlag) && VP.GetXMLInfo(TCNV_XML_Protocol, g_Address, g_Port, g_Username, g_Password, regetFlag);
	
	return g_Priority;
}

function SaveCurrentXML(nType, strPath, bIsServer)
{

}

function GetServerInfo(bRunAnyway)
{
	if( g_Address == null || g_Address.length <1 )
	{
		return false;
	}
	
	return VP.GetServerInfo(g_Address, g_Port, g_Username, g_Password, bRunAnyway);
}

function GetXMLInfo(nType, bRunAnyway)
{
	if( g_Address == null || g_Address.length <1 )
	{
		return false;
	}
	
	return VP.GetXMLInfo(nType, g_Address, g_Port, g_Username, g_Password, bRunAnyway);
}

function SetXMLInfo(nType)
{
	return VP.SetXMLInfo(nType, g_Address, g_Port, g_Username, g_Password);
}

function DiscardXMLInfo(nType)
{
	return VP.DiscardXMLInfo(nType, g_Address, g_Port);
}

function GetXMLChildren(nType, Property, bIsServer)
{
	var strAddress;
	var nPort;
	if(bIsServer)
	{
		if(nType==TCNV_XML_MatrixStatus)
		{
			strAddress = g_MatrixAddress;
			nPort = g_MatrixPort;
		}
		else
		{
			strAddress = g_Address;
			nPort = g_Port;
		}
	}
	else
	{
		strAddress = g_DataCenterAddress;
		nPort = g_DataCenterPort;
	}
	var tagNum = 0;
	if(!VP.GetXMLChildren(nType, strAddress, nPort, Property))
	{
		return false;
	}
	return true;
}

function GetXMLChildrenTag()
{
	var retArray = null;
	tagNum = VP.GetXMLChildrenTagNum();
	if(tagNum>0)
	{
		retArray = new Array;
		for(var i=0;i<tagNum;i++)
		{
			retArray.push(VP.GetXMLChildrenTag(i));
		}
	}
	SetRetValue(retArray);
	retArray = null;
}

function GetXMLChildrenContent()
{
	var retArray = null;
	contentNum = VP.GetXMLChildrenContentNum();
	if(contentNum>0)
	{
		retArray = new Array;
		for(var i=0;i<contentNum;i++)
		{
			currentContent = VP.GetXMLChildrenContent(i);
			retArray.push(currentContent);
		}
	}
	SetRetValue(retArray);
	retArray = null;
}

function GetXMLContent(nType, strPath, bIsServer)
{
	var strAddress;
	var nPort;
	if(bIsServer)
	{
		if(nType==TCNV_XML_MatrixStatus)
		{
			strAddress = g_MatrixAddress;
			nPort = g_MatrixPort;
		}
		else
		{
			strAddress = g_Address;
			nPort = g_Port;
		}
	}
	else
	{
		strAddress = g_DataCenterAddress;
		nPort = g_DataCenterPort;
	}

	return  VP.GetXMLContent(nType, strAddress, nPort, strPath);
}

function SetXMLContent(nType, strPath, strValue, bIsServer)
{
	var strAddress;
	var nPort;
	if(bIsServer)
	{
		if(nType==TCNV_XML_MatrixStatus)
		{
			strAddress = g_MatrixAddress;
			nPort = g_MatrixPort;
		}
		else
		{
			strAddress = g_Address;
			nPort = g_Port;
		}
	}
	else
	{
		strAddress = g_DataCenterAddress;
		nPort = g_DataCenterPort;
	}

	return  VP.SetXMLContent(nType, strAddress, nPort, strPath, strValue);
}

function GetXMLContentArray(nType, strLocation, bIsServer)
{
	var strAddress;
	var nPort;
	if(bIsServer)
	{
		if(nType==TCNV_XML_MatrixStatus)
		{
			strAddress = g_MatrixAddress;
			nPort = g_MatrixPort;
		}
		else
		{
			strAddress = g_Address;
			nPort = g_Port;
		}
	}
	else
	{
		strAddress = g_DataCenterAddress;
		nPort = g_DataCenterPort;
	}

	if(!VP.GetXMLChildren(nType, strAddress, nPort, strLocation))
	{
		SetRetValue(null);
		return;
	}

	var retArray = null;
	var ArrayObject = null;
	var strPath = null;
	var strContent = null;
	var strValue = null;
	contentNum = VP.GetXMLChildrenContentNum();
	if(contentNum>0)
	{
		if(!VP.FindXMLNode(nType, strAddress, nPort,strLocation))
		{
			return;
		}
		retArray = new Array;
		for(var i=0;i<contentNum;i++)
		{
			strContent = VP.GetXMLChildrenContent(i);
			strValue = VP.GetXMLContentFromNode(nType, strAddress, nPort, strContent);
			retArray.push({key:strContent, value:strValue});
		}
	}
	SetRetValue(retArray);
	retArray = null;
}

function SetXMLContentArray(nType, strLocation, contentAray, bIsServer)
{
	var strAddress;
	var nPort;
	if(bIsServer)
	{
		if(nType==TCNV_XML_MatrixStatus)
		{
			strAddress = g_MatrixAddress;
			nPort = g_MatrixPort;
		}
		else
		{
			strAddress = g_Address;
			nPort = g_Port;
		}
	}
	else
	{
		strAddress = g_DataCenterAddress;
		nPort = g_DataCenterPort;
	}

	if(!GetXMLChildren(nType, strLocation, bIsServer))
	{
		return false;
	}

	var retArray = null;
	var ArrayObject = null;
	var strPath = null;
	var strContent = null;
	var bRet = true;
	contentNum = VP.GetXMLChildrenContentNum();
	if(contentNum<0)
	{
		return false;
	}
	for(var i=0;i<contentNum;i++)
	{
		strPath = strLocation + "." + contentAray[i].key;
		bRet = bRet && VP.SetXMLContent(nType, strAddress, nPort, strPath, contentAray[i].value);
	}
	return bRet;
}

//获取子节点数组。。并且该子节点下的 content 为 object 的 属性
function GetXMLTagInfoArray(nType, strLocation, bIsServer)
{
	var strAddress;
	var nPort;
	if(bIsServer)
	{
		if(nType==TCNV_XML_MatrixStatus)
		{
			strAddress = g_MatrixAddress;
			nPort = g_MatrixPort;
		}
		else
		{
			strAddress = g_Address;
			nPort = g_Port;
		}
	}
	else
	{
		strAddress = g_DataCenterAddress;
		nPort = g_DataCenterPort;
	}
	if(!GetXMLChildren(nType, strLocation, bIsServer))
	{
		SetRetValue(null);
		return;
	}
	var tagNum = VP.GetXMLChildrenTagNum();
	if(tagNum<0)
	{
		SetRetValue(null);
		return;
	}
	var i=0;
	var strPath = "";
	var contentNum = 0;
	var retArray = new Array(tagNum);
	var strContent = "";
	var strValue = "";
	var tagArray = new Array(tagNum);
	for(i=0;i<tagNum;i++)
	{
		tagArray[i] = VP.GetXMLChildrenTag(i);
	}
	for(i=0;i<tagNum;i++)
	{
		strPath = strLocation+"."+tagArray[i];
		if(!VP.GetXMLChildren(nType, strAddress, nPort, strPath))
		{
			continue;
		}
		var data = new Object();
		contentNum = VP.GetXMLChildrenContentNum();
		data.tag = tagArray[i];
		if(!VP.FindXMLNode(nType, strAddress, nPort,strPath))
		{
			return;
		}
		for(var j=0;j<contentNum;j++)
		{
			strContent = VP.GetXMLChildrenContent(j);
			strValue = VP.GetXMLContentFromNode(nType, strAddress, nPort,strContent);
			data[strContent] = strValue;
		}
		retArray[i] = data;
		tagArray[i] = null;
		data = null;
	}
	SetRetValue(retArray);
	retArray.length = 0;
	retArray = null;
	tagArray.length = 0;
	tagArray = null;
}

//递归获取xml的节点信息..
function GetXmlRecursion(nType, strLocation, bIsServer)
{
	var retObject = null;
	if(bIsServer)
	{
		if(nType==TCNV_XML_MatrixStatus)
		{
			strAddress = g_MatrixAddress;
			nPort = g_MatrixPort;
		}
		else
		{
			strAddress = g_Address;
			nPort = g_Port;
		}
	}
	else
	{
		strAddress = g_DataCenterAddress;
		nPort = g_DataCenterPort;
	}
	retObject = GetXmlDataInfo(nType, strAddress, nPort, strLocation);
	SetRetValue(retObject);
	retObject = null;
}

function GetXmlDataInfo(nType, strAddress, nPort, strLocation)
{
	if(strLocation==null||strLocation.length<1)
	{
		return null;
	}
	if(!VP.GetXMLChildren(nType, strAddress, nPort, strLocation))
	{
		return null;
	}
	var tempArray = strLocation.split(".");
	if(tempArray.length<=0)
	{
		return null;
	}
	var i = 0;
	var strPath = null;
	var strContent = null;
	var strValue = null;
	var retData = new Object();
	retData.label = tempArray[tempArray.length-1];

	var contentNum = VP.GetXMLChildrenContentNum();
	if(contentNum>0)
	{
		if(!VP.FindXMLNode(nType, strAddress, nPort,strLocation))
		{
			return null;
		}
		for(i=0;i<contentNum;i++)
		{
			strContent = VP.GetXMLChildrenContent(i);
			strValue = VP.GetXMLContentFromNode(nType, strAddress, nPort, strContent);
			retData[strContent] = strValue;
		}
	}

	var childArray = null;
	var tagNum = VP.GetXMLChildrenTagNum();
	if(tagNum>0)
	{
		var tagArray = new Array(tagNum);
		for(i=0;i<tagNum;i++)
		{
			tagArray[i] = VP.GetXMLChildrenTag(i);
		}
		childArray = new Array(tagNum);
		for(i=0;i<tagNum;i++)
		{
			strPath = strLocation+"."+tagArray[i];
			childArray[i] = GetXmlDataInfo(nType, strAddress, nPort, strPath);
			tagArray[i] = null;
		}
		tagArray = null;
	}
	retData.children = childArray;
	childArray = null;
	return retData;
}

function GetXMLObject(nType, strLocation, bIsServer)
{
	var retObject = null;
	if(bIsServer)
	{
		if(nType==TCNV_XML_MatrixStatus)
		{
			strAddress = g_MatrixAddress;
			nPort = g_MatrixPort;
		}
		else
		{
			strAddress = g_Address;
			nPort = g_Port;
		}
	}
	else
	{
		strAddress = g_DataCenterAddress;
		nPort = g_DataCenterPort;
	}
	retObject = GetXMLObjectInfo(nType, strAddress, nPort, strLocation);
	SetRetValue(retObject);
	retObject = null;
}

function GetXMLObjectInfo(nType, strAddress, nPort, strLocation)
{
	if(strLocation==null||strLocation.length<1)
	{
		return null;
	}
	if(!VP.GetXMLChildren(nType, strAddress, nPort, strLocation))
	{
		return null;
	}
	var tempArray = strLocation.split(".");
	if(tempArray.length<=0)
	{
		return null;
	}
	
	var i = 0;
	var strPath = null;
	var strContent = null;
	var strValue = null;
	var retData = new Object();

	var contentNum = VP.GetXMLChildrenContentNum();
	if(contentNum>0)
	{
		if(!VP.FindXMLNode(nType, strAddress, nPort,strLocation))
		{
			return null;
		}
		for(i=0;i<contentNum;i++)
		{
			strContent = VP.GetXMLChildrenContent(i);
			strValue = VP.GetXMLContentFromNode(nType, strAddress, nPort, strContent);
			retData[strContent] = strValue;
		}
	}

	var tagNum = VP.GetXMLChildrenTagNum();
	var tagArray = null;
	var tagName = null;
	if(tagNum>0)
	{
		tagArray = new Array(tagNum);
		for(i=0;i<tagNum;i++)
		{
			tagArray[i] = VP.GetXMLChildrenTag(i);
		}
		for(i=0;i<tagNum;i++)
		{
			if(tagArray[i]==null||tagArray[i]=="")
			{
				continue;
			}
			tagName = tagArray[i];
			strPath = strLocation + "." + tagName;
			retData[tagName] = GetXMLObjectInfo(nType, strAddress, nPort, strPath);
		}
		tagName = null;
		tagArray = null;
	}
	
	return retData;
}

function AddXMLTagInfo(type,strLocation,contentArray,bIsServer)
{
	var strAddress = "";
	var nPort = 0;
	if(bIsServer)
	{
		strAddress = g_Address;
		nPort = g_Port;
	}
	else
	{
		strAddress = g_DataCenterAddress;
		nPort = g_DataCenterPort;
	}
	if(!VP.AddXMLTag(type, strAddress, nPort,"Root",strLocation))
	{
		return false;
	}

	var bRet = true;
	if(contentArray!=null)
	{
		var nSize = contentArray.length;
		for(var i=0;i<nSize;i++)
		{
			bRet = bRet&&VP.AddXMLContent(type, strAddress, nPort,strLocation,contentArray[i].key,contentArray[i].value);
		}
	}
	return bRet;
}

function SetXmlTag(nType,strLocation,oldTag,newTag, bIsServer)
{
	var strAddress = "";
	var nPort = 0;
	if(bIsServer)
	{
		strAddress = g_Address;
		nPort = g_Port;
	}
	else
	{
		strAddress = g_DataCenterAddress;
		nPort = g_DataCenterPort;
	}
	if(!VP.SetXMLTag(nType,strAddress,nPort,strLocation,oldTag,newTag))
	{
		return false;
	}
	return true;
}

function DeleteXMLTagArray(type,strLocation,tagArray,bIsServer)
{
	var strAddress = "";
	var nPort = 0;
	if(bIsServer)
	{
		strAddress = g_Address;
		nPort = g_Port;
	}
	else
	{
		strAddress = g_DataCenterAddress;
		nPort = g_DataCenterPort;
	}

	if(tagArray==null)
	{
		return false;
	}

	for(var i=0;i<tagArray.length;i++)
	{
		if(!VP.DelXMLTag(type,strAddress,nPort,strLocation,tagArray[i]))
		{
			return false;
		}
	}
	return true;
}

function CopyXMLChildren(nType, Path, srcTag, destTagArray, contentArray, bIsServer)
{
	var strAddress;
	var nPort;
	var content = "";
	var destTag = "";
	if(bIsServer)
	{
		if(nType==TCNV_XML_MatrixStatus)
		{
			strAddress = g_MatrixAddress;
			nPort = g_MatrixPort;
		}
		else
		{
			strAddress = g_Address;
			nPort = g_Port;
		}
	}
	else
	{
		strAddress = g_DataCenterAddress;
		nPort = g_DataCenterPort;
	}
	if(destTagArray!=null)
	{
		for(var i=0;i<destTagArray.length;i++)
		{
			if(i>0)
			{
				destTag+="||";
			}
			destTag+=destTagArray[i];
		}
	}
	if(contentArray!=null)
	{
		for(i=0;i<contentArray.length;i++)
		{
			if(i>0)
			{
				content+="||";
			}
			content+=contentArray[i];
		}
	}

	return VP.CopyXmlChildren(nType, strAddress, nPort, Path, srcTag, destTag, content)
}

//时间格式转换
function STDTOLOCAL(strStd,strDivChar)
{
	var strLocal = "";
	strLocal = VP.STDTOLOCAL(strStd, strDivChar);
	return strLocal;
}

function STDTOLOCAL_Array(stdArray, strDivChar)
{
	var localArray = new Array(stdArray.length);
	for(var i=0;i<stdArray.length;i++)
	{
		localArray[i] = VP.STDTOLOCAL(stdArray[i], strDivChar);
	}
	return localArray;
}

function LOCALTOSTD(strLocal,strDivChar)
{
	var strStd = "";
	strStd = VP.LOCALTOSTD(strLocal, strDivChar);
	return strStd;
}

//获取报警设备信息
function GetAlarmDeviceProtocol()
{
	var dataArray = new Array();

	if(!VP.GetXMLChildren(6, g_Address, g_Port, "WDevice"))
	{
		return null;
	}

	var count = VP.GetXMLChildrenTagNum();
	var i, property, protocol, id, enabled;
	for(i = 0; i < count; i++)
	{
		property = VP.GetXMLChildrenTag(i);
		id = VP.GetXMLContent(6, g_Address, g_Port, "WDevice." + property + ".ID");
		protocol = VP.GetXMLContent(6, g_Address, g_Port, "WDevice." + property + ".Name");
		if(VP.GetXMLContent(6, g_Address, g_Port, "WDevice." + property + ".UseCOM") == 1)
		{
			enabled = true;
		}
		else
		{
			enabled = false;
		}
		dataArray.push({protocolName: protocol, enabled: enabled, id: id});
	}

	return dataArray;
}

//获取云台协议
function PTZGetProtocol()
{
	var dataArray = new Array();

	if(!VP.GetXMLChildren(6, g_Address, g_Port, "YTDevice"))
	{
		return null;
	}

	var count = VP.GetXMLChildrenTagNum();
	var i, property, protocol;
	for(i = 0; i < count; i++)
	{
		property = VP.GetXMLChildrenTag(i);
		protocol = VP.GetXMLContent(6, g_Address, g_Port, "YTDevice." + property + ".Name");
		dataArray.push({protocolName: protocol});
	}

	return dataArray;
}

//获取服务器端软件日志的日期
function GetServerLogsDateArray()
{
	var dateLength = VP.GetServerLogList(g_Address, g_Port, g_Username, g_Password);
	var dataArray = new Array();
	for(var i = dateLength - 1; i >= 0; i--)
	{
		dataArray.push({date: VP.STDTOLOCAL(VP.GetServerLogListInfo(g_Address, g_Port,i), "")});
	}
	SetRetValue(dataArray);
	dataArray = null;
}

//获取该天日志的信息
function GetServerLogsArray(strDate)
{
	var temp = "";
	var retArray = new Array();
	var nCount = VP.GetServerLogDetail(g_Address, g_Port, g_Username, g_Password, strDate);
	for(var i=0;i<nCount;i++)
	{
		temp = VP.GetServerLogDetailInfo(g_Address, g_Port,i);
		retArray.push(temp);
	}
	SetRetValue(retArray);
	retArray = null;
}

//获取系统日志的描述
function GetSystemLogDescription(recordNum)
{
	var description;
	description = VP.GetServerEventDetailInfoEx(recordNum);
	return description;
}

//更新服务器系统日志
function UpdateSystemLogs(type)
{
	var temp = "";
	var logsArray = new Array();
	var maxlength = VP.GetServerEvent(g_Address, g_Port, g_Username, g_Password, type+1);

	for(var i=maxlength-1;i>0;i--)
	{
		temp = VP.GetServerEventInfo(g_Address, g_Port,i);
		logsArray.push(temp);
	}
	SetRetValue(logsArray);
	logsArray = null;
}

function GetServerChannelList(ChannelType)
{
	var channelNum = VP.GetServerChannelNum(ChannelType, g_Address, g_Port);
	if(channelNum<=0)
	{
		SetRetValue(null);
		return;
	}
	var channelList = new Array(channelNum);
	var chName = null;
	for(i=0; i <channelNum; i++)
	{
		chName = VP.GetServerChannelName(ChannelType, g_Address, g_Port, i);
		channelList[i] = {channelName:chName};
	}
	SetRetValue(channelList);
	channelList = null;
}

function RemoteCtrl(ip,port,username,password,strControlParam)
{
	ip = (ip==null)?g_Address:ip;
	port = (port==0)?g_Port:port;
	username = (username==null)?g_Username:username;
	password = (password==null)?g_Password:password;
	return VP.RemoteCtrl(ip, port, username, password, strControlParam);
}

function CtrlPTZ(CtrlCode,CodeEx)
{
	return VP.CtrlPTZ(VP.CurrentChannel,CtrlCode,CodeEx);
}


function QueryDB(strSql, bRunAnyway)
{
	return VP.QueryDB(strSql, bRunAnyway);
}

function RemoteCtrlDB(command)
{
	return VP.RemoteCtrlDB(command);
}

function GetMatrixStatusInfo()
{
	return VP.GetMatrixStatusInfo(g_MatrixAddress, g_MatrixPort, g_DataCenterUsername, g_DataCenterPassword);
}

function MatrixCtrl(command)
{
	var commArray = command.split("||");
	var i;
	for(i = 0; i < commArray.length; i++)
	{
		if(!RemoteCtrl(g_MatrixAddress, g_MatrixPort, g_DataCenterUsername, g_DataCenterPassword, commArray[i]))
		{
			return false;
		}
	}
	return true;
}

function downloadOCX(fileName)
{
	window.open(fileName,"_self");
}

function closeWindow()
{
	window.opener = null;
	window.open("","_self");
	window.close();
}

function removeIETempFiles()
{
	return VP.RemoveIETempFiles();
}

function thisMovie(movieName)
{
	if (navigator.appName.indexOf("Microsoft") != -1)
	{
     	return window[movieName];
    }
	else
	{
     	return document[movieName];
    }
}

function RegisterServer(obj,deviceType,serverType)
{
	if( obj == null )
	{
		return false;
	}
	if(	(!obj.hasOwnProperty("ip"))||(!obj.hasOwnProperty("port"))||
		(!obj.hasOwnProperty("username"))||(!obj.hasOwnProperty("password"))	)
	{
		return false;
	}

	return VP.RegisterServer(obj.ip,obj.port,obj.username,obj.password,deviceType,serverType);
}

function UnregisterServer(ip, port)
{
	return VP.UnregisterServer(ip,port);
}

function UnregisterAllServer()
{
	VP.UnregisterAllServer();
}

function HandleServerReport(ServerAddress, ServerMessagePort, ReportType, IsEnable)
{
	return VP.HandleServerReport(ServerAddress, ServerMessagePort, ReportType, IsEnable);
}

function GetServerStatusInfo()
{
	return VP.GetServerStatusInfo(g_Address, g_Port, g_Username, g_Password);
}

function GetCurrentServerHttpPort()
{
	return VP.GetRemoteServerHttpPort(g_Address,g_Port,g_Username, g_Password);
}

function GetCMSHttpPort()
{
	if(g_CenterHttpPort<=0)
	{
		g_CenterHttpPort = VP.GetRemoteServerHttpPort(g_DataCenterAddress,g_DataCenterPort,g_DataCenterUsername,g_DataCenterPassword);
	}
	return g_CenterHttpPort;
}

function GetCMSHttpUrl()
{
	return g_DataCenterAddress+":"+GetCMSHttpPort();
}

function GetServerStartedTime(ip, port, username, password)
{
	return VP.GetServerStartedTime(ip, port, username, password);
}

function MinimizeMainWindow()
{
	 VP.MinimizeMainWindow();
}

function CheckServerRight(address,port,username,password,channel,rightType)
{
	if(channel<0)
	{
		return VP.CheckUserRight(address, port, username, password, rightType);	
	}
	else
	{
		return VP.CheckChannelAccess(address, port, username, password, channel, rightType);
	}
	return false;
}

function CheckCurrentServerRight(ChNo,rightType)
{
	if(!IsCurrentServerValid())
	{
		return false;
	}
	return CheckServerRight(g_Address,g_Port,g_Username,g_Password,ChNo,rightType);
}

/**
 * @ 获取服务器录象信息
 */

function GetServerPBInfo(strAddress,nPort,strUser, strPassword, startDate,endDate)
{
	return VP.GetServerPBInfo(strAddress,nPort,strUser, strPassword, startDate,endDate);
}

function GetPBDateList(strAddress,nPort)
{
	return VP.GetPBDateList(strAddress,nPort);
}

function GetPBDetailArray(strAddress, nPort, strDate, nChannel)
{
	var _array = new Array();
	var _nSize = VP.GetPBFileNum(strAddress,nPort,strDate,nChannel);
	for(var i=0;i<_nSize;i++)
	{
		_array.push(VP.GetPBDetail(i))
	}
	return _array;
}

/*
function GetServerPBAsyn(ip,port)
{
	return VP.GetServerPBAsyn(ip,port);
}

function GetLocalPBDateList(ServerAddress, ServerMessagePort)
{
	return VP.GetLocalPBDateList(ServerAddress,ServerMessagePort);
}

function GetLocalPBDetail(strServerAddress, nServerMessagePort, strDate, nRemoteChannel)
{
	var retArray = new Array();
	var nSize = VP.ParseLocalPB(strServerAddress, nServerMessagePort, strDate, nRemoteChannel);
	for(i=0;i<nSize;i++)
	{
		retArray.push(VP.GetLocalPBDetail(i));
	} 
	return retArray;
}
*/
function FileDialog()
{
	return VP.FileDialog();
}

function FolderDialog()
{
	return VP.FolderDialog();
}
