﻿// JavaScript Document
function LoginCheck(username, password, flag)
{
	flag = (typeof(flag)=="undefined")? 0:flag;
	
	g_Username = username;
	g_Password = password;
	var result = VP.GetServerInfo(g_Address, g_Port, g_Username, g_Password, flag);
	return result;
}

function ShowPlayer(pointX,pointY,ptWidth,ptHeight, hideAnyway)
{
	hideAnyway = (typeof(hideAnyway)=="undefined")? false:hideAnyway;
	
	var divID = document.getElementById("divOCX");
	VP.width = ptWidth;
	VP.height = ptHeight;
	VP.DBClickEnabled = 1;
	VP.FullScreenEnabled = 1;
	divID.style.position = "absolute";
	divID.style.left=pointX;
    divID.style.top=pointY;
	divID.style.width = ptWidth;
	divID.style.height = ptHeight;
	if(hideAnyway)
	{
		divID.style.display ="none";
	}
	else
	{
		divID.style.display ="block";	
	}
	
	try
	{
		VP.attachEvent("ChannelSwitched",STAS_ChannelSwitched);
		VP.attachEvent("ChannelConnected",STAS_ChannelConnected);
		VP.attachEvent("ChannelDisconnected",STAS_ChannelDisconnected);
		
		VP.PicInPic = 1;
		for(i=0;i<4;i++)
		{
			VP.SetPipChildren(i,1);
		}
	}
	catch(error)
	{
		if(error instanceof TypeError)
		{
			thisMovie("AppLoader").onBlocked();
		}		
	}
}

function MovePlayer(pointX,pointY,ptWidth,ptHeight)
{
	var divID = document.getElementById("divOCX");
	VP.width = ptWidth;
	VP.height = ptHeight;
	divID.style.left=pointX;
	divID.style.top=pointY;
	divID.style.width = ptWidth;
	divID.style.height = ptHeight;
}

function hidePlayerDiv()
{
	VP.DisconnectAll();
	VP.DBClickEnabled = 0;
	VP.FullScreenEnabled = 0;
	VP.CurrentChannel = 0;
	VP.ScreenMode = 0;
	VP.detachEvent("ChannelSwitched",STAS_ChannelSwitched);
	VP.detachEvent("ChannelConnected",STAS_ChannelConnected);
	VP.detachEvent("ChannelDisconnected",STAS_ChannelDisconnected);
	var divID = document.getElementById("divOCX");
	divID.style.display = "none";
}

function showPlayerDiv()
{
	var divID = document.getElementById("divOCX");
	divID.style.display = "block";
}

function temporaryHidePlayer()
{
	var divID = document.getElementById("divOCX");
	divID.style.display = "none";
}

//通知AS当前通道已改变	  
function STAS_ChannelSwitched(Channel)
{
	var recordFlag = VP.IsRecording(Channel);
	var connectFlag = VP.IsConnected(Channel);
	thisMovie("AppLoader").onChannelSwitch(recordFlag,connectFlag);
}

function STAS_ChannelConnected(Channel)
{
	var ConnectedChannel = Channel;
	if(ConnectedChannel == VP.CurrentChannel)
	{
		thisMovie("AppLoader").onChannelConnected();	
	}
}

function STAS_ChannelDisconnected(Channel)
{
	var DisconnectedChannel = Channel;
	if(DisconnectedChannel == VP.CurrentChannel)
	{
		thisMovie("AppLoader").onChannelDisconnected();		
	}
}

function ChangeScreenMode(mode)
{
	VP.ScreenMode = mode;	
}

var ChannelNum;
function getChannels()
{
	var i;
	var array = new Array()
	var ip = g_Address;
	var port = g_Port; 	
	ChannelNum = VP.GetServerChannelNum(1,ip,port);
	if(ChannelNum>0)
	{
		for(i=0;i<ChannelNum;i++)
		{
			array[i] = VP.GetServerChannelName(1,ip,port,i);	
		}	
	}	
	return array;
}

function channelConnect(selectedIndex, proxyAddress, proxyMessagePort)
{
	proxyAddress = (typeof(proxyAddress)=="undefined")? "":proxyAddress; 
	proxyMessagePort = (typeof(proxyMessagePort)=="undefined")? -1:proxyMessagePort; 
	
	if(VP.IsConnected(VP.CurrentChannel))
	{
		VP.Disconnect(VP.CurrentChannel);
	}

	if(VP.IsServerChannelConnected(g_Address,g_Port,selectedIndex))
	{
		return true;
	}

	//如果设置了代理服务器
	if(proxyAddress!="")
	{
		if(!setProxy(proxyAddress, proxyMessagePort))
		{
			return false;	
		}
		return connectProxy(selectedIndex);
	}
	
	//如果没有设置代理服务器		
	return VP.Connect(VP.CurrentChannel,g_Address,g_Port,selectedIndex,g_Username,g_Password);
}

function FindFreeChannel()
{
	for(var i=0;i<16;i++)
	{
		if(!VP.IsConnected(i))
		{
			return i;	
		}
	}
	return -1;
}

function ControlConnect(type, indexArray, proxyAddress, proxyMessagePort, isOrgState) 
{
	proxyAddress = (typeof(proxyAddress)=="undefined")? "":proxyAddress; 
	proxyMessagePort = (typeof(proxyMessagePort)=="undefined")? -1:proxyMessagePort;
	isOrgState = (typeof(isOrgState)=="undefined")? false:isOrgState;
	
	var channelIndex;
		
	switch(type)
	{
		case 0://连接选定通道
			var i;
			var ConnectedServerCH;
			for(i=0;i<indexArray.length;i++)
			{
				if(isOrgState)
				{
					if( !canConnectFromServer(indexArray[i].sIP, parseInt(indexArray[i].sPort), indexArray[i].sUsername, indexArray[i].sPassword) )
					{
						continue;
					}
					proxyAddress = 	indexArray[i].sProxyIP;
					proxyMessagePort = parseInt(indexArray[i].sProxyPort);
					channelIndex = parseInt(indexArray[i].channelIndex);
				}
				else
				{
					channelIndex = indexArray[i];
				}
				
				if(VP.IsServerChannelConnected(g_Address,g_Port,channelIndex))
				{
					continue;
				}
				else
				{
					if(!VP.IsConnected(VP.CurrentChannel))
					{
						if(proxyAddress!="")
						{
							if(setProxy(proxyAddress, proxyMessagePort))
							{
								connectProxy(channelIndex);	
							}	
						}
						else
						{
							VP.Connect(VP.CurrentChannel,g_Address,g_Port,channelIndex,g_Username,g_Password);	
						}
						continue;
					}					
				}
				var FreeChannel = FindFreeChannel();
				if(FreeChannel==-1)
				{
					break;
				}
				//连接通道
				if(proxyAddress!="")
				{
					if(setProxy(proxyAddress, proxyMessagePort, FreeChannel))
					{
						connectProxy(channelIndex, FreeChannel);	
					}	
				}
				else
				{
					VP.Connect(FreeChannel,g_Address,g_Port,channelIndex,g_Username,g_Password);	
				}

			}//for end			
			break;
		case 1://断开当前通道
			VP.Disconnect(VP.CurrentChannel);
			break;
		case 2://断开所有通道
			VP.DisconnectAll();
			break;
		default:
			break;	
	}
}

function Snapshot()
{
	VP.Snapshot(VP.CurrentChannel, 1, "");
}

function Download()
{
	VP.Download(g_Address,g_Port,g_Username,g_Password);
}

function Playback()
{
	VP.PlayBack();	
}

function Record(strTag)
{
	if(strTag=="start")
	{
		return VP.StartRecord();	
	}
	else if(strTag=="stop")
	{
		return VP.StopRecord();	
	}
}

function CtrlPTZ(CtrlCode)
{
	VP.CtrlPTZ(VP.CurrentChannel,CtrlCode,0);
}

function DoRecord()
{
	if(!VP.IsConnected(VP.CurrentChannel))
	{
		return;
	}

	if(VP.IsRecording(VP.CurrentChannel))
	{
		VP.StopRecord(VP.CurrentChannel);	
	}
	else
	{
		VP.StartRecord(VP.CurrentChannel);	
	}
	return VP.IsRecording(VP.CurrentChannel);
}

function IsRecording()
{
	return VP.IsRecording(VP.CurrentChannel);
}

function getIsConnected()
{
	return VP.IsConnected(VP.CurrentChannel);
}

function SwitchSingleScreen()
{
	VP.SwitchSingleScreen();	
}

function SwitchFullScreen()
{
	VP.SwitchFullScreen();	
}

function CheckCurrentConnectionNum()
{
	var Num=0;
	for(var i=0;i<16;i++)
	{
		if(VP.IsConnected(i))
		{
			Num = Num+1;	
		}
	}
	return Num;
}

function GetAudioVolume()
{
	return VP.GetAudioVolume();	
}

function SetAudioVolume(value)
{
	VP.SetAudioVolume(value);	
}

function SetMuteStatus(status)
{
	VP.AudioEnabled = status;	
}

function GetRecentVideoParam()
{

	return VP.GetRecentVideoParam(VP.CurrentChannel);	
}

function GetCurrentColorParam(type)
{
	var nRet;
	switch(type)
	{
		case "Brightness":
			nRet = VP.GetCurrentBrightness(VP.CurrentChannel);
			break;
		case "Contrast":
			nRet = VP.GetCurrentContrast(VP.CurrentChannel);
			break;
		case "Saturation":
			nRet = VP.GetCurrentSaturation(VP.CurrentChannel);
			break;
		case "Hue":
			nRet = VP.GetCurrentHue(VP.CurrentChannel);
			break;
		default:
			break;
	}
	return nRet;
}

function SetCurrentColorParam(type,value)
{
	switch(type)
	{
		case "Brightness":
			VP.SetCurrentBrightness(VP.CurrentChannel,value);
			break;
		case "Contrast":
			VP.SetCurrentContrast(VP.CurrentChannel,value);
			break;
		case "Saturation":
			VP.SetCurrentSaturation(VP.CurrentChannel,value);
			break;
		case "Hue":
			VP.SetCurrentHue(VP.CurrentChannel,value);
			break;
		default:
			break;
	}
}

function GetDefaultParam(type)
{
	var nRet;
	switch(type)
	{
		case "Brightness":
			nRet = VP.GetDefaultBrightness(VP.CurrentChannel);
			VP.SetCurrentBrightness(VP.CurrentChannel,nRet);
			break;
		case "Contrast":
			nRet = VP.GetDefaultContrast(VP.CurrentChannel);
			VP.SetCurrentContrast(VP.CurrentChannel,nRet);
			break;
		case "Saturation":
			nRet = VP.GetDefaultSaturation(VP.CurrentChannel);
			VP.SetCurrentSaturation(VP.CurrentChannel,nRet);
			break;
		case "Hue":
			nRet = VP.GetDefaultHue(VP.CurrentChannel);
			VP.SetCurrentHue(VP.CurrentChannel,nRet);
			break;
		default:
			break;
	}
	return nRet;
}

function canConnectFromServer(address, port, username, password, flag)
{
	flag = (typeof(flag)=="undefined")? 0:flag;
	
	g_Username = username;
	g_Password = password;
	g_Address = address;
	g_Port = port;
	var result = VP.GetServerInfo(g_Address, g_Port, g_Username, g_Password, flag);
	return result;
}
