var g_FrameFlag = 0;
var g_FieldMax = 11;
var g_FirstCh = 0;
var g_LastCh = 0;
var g_ChannelCount;
var g_CodecCount;
var g_Resolution;
var g_InatallCamera;
var g_FrmFormat = -1;
function vInitCfgNormalSpeed(selName)
{
	for(i=0;i<9;i++)
	{
		document.all.selNormalSpeed[i].length = 0;
		for(j=0;j<selName.length;j++)
		{
			var op = new Option(selName[j], j);
		  //var op = new Option(selName[j]+" IPS", j); //mei 20071106 HK
		  document.all.selNormalSpeed[i].options[j] = op;
		}
		document.all.selNormalSpeed[i].length = InitMaxSpeed(0, i) + 1;
	}
}
function vInitCfgEventSpeed(selName)
{
	for(i=0;i<9;i++)
	{
		document.all.selEventSpeed[i].length = 0;
		for(j=0;j<selName.length;j++)
		{
		  var op = new Option(selName[j], j);
		  //var op = new Option(selName[j]+" IPS", j); //mei 20071106 HK
		  document.all.selEventSpeed[i].options[j] = op;
		}
		document.all.selEventSpeed[i].length = InitMaxSpeed(1, i) + 1;
	}
}

function vInitCfgCameraSpeed()
{
	if(g_FrmFormat == 0) // NTSC
		var selName = new Array("0","1","2","3","4","5","6","7.5","10","15","20","30");
	else
		//var selName = new Array("0","1","2","3","4","5","6","8","10","12.5","16","25");
		var selName = new Array("0","1","2","3","4","5","6.25","8","10","12.5","16","25"); //mei 20071106 HK

	vInitCfgNormalSpeed(selName);
	selName[0] = "OFF"
	vInitCfgEventSpeed(selName);
}

function IsChannelInstall(nCH)
{
	if(((g_InatallCamera >> nCH) & 0x01) == 0x01)
	  return 1;
	return 0;
}

function InitMaxSpeed(nType, nCH)
{
	if(nType == 0) // normal
	{
		return GetMaxSpeed(nCH);
	}
	else // nType == 1 event
	{
		if(g_Resolution == 0)
			return 9;
		else
			return 11;
	}
}

function GetMaxSpeed(nCh)
{
	var i, j;
	j = 0;

	GetChGroup(nCh); // cur_page-2==channel NO.
	for(i=g_FirstCh;i<g_LastCh;i++)
	{
		if(IsChannelInstall(i))
			j++;
	}
  var FrameFlag = (g_Resolution == 0) ? 1 : 0;
	if(g_Resolution == 3) // CIF
	{
		if(j<=4)        // 30 or 25
	     j=1;
		else if(j>=5 && j<=8)     // 15 or 12.5
	     j=4;
	  else if(j>=9 && j<=12) // 10 or 8
	     j=6;       
	  else                     // 7.5 or 6
	     j=8;
	}
	if(g_FrmFormat == 0) // NTSC
	{
		switch(j)
		{
			case  0: return 11;
			case  1: return 11;
			case  2: return (FrameFlag) ? 9 : 11;
			case  3: return (FrameFlag) ? 8 : 10;
			case  4: return (FrameFlag) ? 7 : 9;
			case  5: return (FrameFlag) ? 6 : 8;
			case  6: return (FrameFlag) ? 5 : 8;
			case  7: return (FrameFlag) ? 4 : 7;
			case  8: return (FrameFlag) ? 3 : 7;
			case  9: return (FrameFlag) ? 3 : 6;
			case 10: return (FrameFlag) ? 3 : 6;
			case 11: return (FrameFlag) ? 2 : 5;
			case 12: return (FrameFlag) ? 2 : 5;
			case 13: return (FrameFlag) ? 2 : 4;
			case 14: return (FrameFlag) ? 2 : 4;
			case 15: return (FrameFlag) ? 2 : 4;
			case 16: return (FrameFlag) ? 1 : 3;
		}
	}
	else // PAL
	{
		switch(j)
		{
			case  0: return 11;
			case  1: return 11;
			case  2: return (FrameFlag) ? 9 : 11;
			case  3: return (FrameFlag) ? 7 : 10;
			case  4: return (FrameFlag) ? 6 : 9;
			case  5: return (FrameFlag) ? 5 : 8;
			case  6: return (FrameFlag) ? 4 : 7;
			case  7: return (FrameFlag) ? 3 : 6;
			case  8: return (FrameFlag) ? 3 : 6;
			case  9: return (FrameFlag) ? 2 : 5;
			case 10: return (FrameFlag) ? 2 : 5;
			case 11: return (FrameFlag) ? 2 : 4;
			case 12: return (FrameFlag) ? 2 : 4;
			case 13: return (FrameFlag) ? 1 : 4;
			case 14: return (FrameFlag) ? 1 : 3;
			case 15: return (FrameFlag) ? 1 : 3;
			case 16: return (FrameFlag) ? 1 : 3;
		}
	}
	return 13;
}
function GetChGroup(ch_no)
{
	var ch_group;

	if(g_ChannelCount==9 && g_CodecCount==2)
	{
		ch_group = ch_no/((9+1)/g_CodecCount);
		if(ch_group == 0)
		{
			g_FirstCh = 0;
			g_LastCh = 5;
		}
	  else
	  {
			g_FirstCh = 5;
			g_LastCh = g_ChannelCount;
		}
	}
  else
  {
		ch_group = ch_no/(g_ChannelCount/g_CodecCount);
		g_FirstCh = ch_group*(g_ChannelCount/g_CodecCount);
		g_LastCh = (ch_group+1)*(g_ChannelCount/g_CodecCount);
	}
}

function resetCameraInfo(nCH)
{
   if(ERViewer.GetCameraInfo(nCH) == false)
	  alert("Get camera info failed, please try again later!");
    mfCamera.value="0"; //mei 
}

function setCameraInfo(nCH)
{
 	if(checkInputType1("cameraTitle")==0) return; //mei #94-96
 	
   var strTitle, sPtzID, sInstall, sCovert, sTimeMain, sTimeCall, sRecQuality;
   var sNormalSpeed1, sNormalSpeed2, sNormalSpeed3, sNormalSpeed4, sNormalSpeed5, sNormalSpeed6, sNormalSpeed7, sNormalSpeed8, sNormalSpeedN;
   var sEventSpeed1, sEventSpeed2, sEventSpeed3, sEventSpeed4, sEventSpeed5, sEventSpeed6, sEventSpeed7, sEventSpeed8, sEventSpeedN;
   var sAS1, sAS2, sAS3, sAS4, sAS5, sAS6, sAS7, sAS8, sASN;   
   
   strTitle  = cameraTitle.value;
   strTitle = strTitle.toUpperCase(); //mei #94-96
   sPtzID    = GetIntValue("cameraPtzID");
   sInstall  = cameraInstall.checked ? 1 : 0;
   sCovert   = cameraCovert.checked ? 1 : 0;
   sTimeMain = GetIntValue("mainMonitorSeq");
   sTimeCall = GetIntValue("callMonitorSeq");
   sRecQuality = recordQuality.value;
   sNormalSpeed1 = selNormalSpeed[0].value;
   sNormalSpeed2 = selNormalSpeed[1].value;
   sNormalSpeed3 = selNormalSpeed[2].value;
   sNormalSpeed4 = selNormalSpeed[3].value;
   sNormalSpeed5 = selNormalSpeed[4].value;
   sNormalSpeed6 = selNormalSpeed[5].value;
   sNormalSpeed7 = selNormalSpeed[6].value;
   sNormalSpeed8 = selNormalSpeed[7].value;
   sNormalSpeedN = selNormalSpeed[8].value;
   sEventSpeed1 = selEventSpeed[0].value;
   sEventSpeed2 = selEventSpeed[1].value;
   sEventSpeed3 = selEventSpeed[2].value;
   sEventSpeed4 = selEventSpeed[3].value;
   sEventSpeed5 = selEventSpeed[4].value;
   sEventSpeed6 = selEventSpeed[5].value;
   sEventSpeed7 = selEventSpeed[6].value;
   sEventSpeed8 = selEventSpeed[7].value;
   sEventSpeedN = selEventSpeed[8].value;
	 sAS1 = recEnable[0].checked;
	 sAS2 = recEnable[1].checked;
	 sAS3 = recEnable[2].checked;
	 sAS4 = recEnable[3].checked;
	 sAS5 = recEnable[4].checked;
	 sAS6 = recEnable[5].checked;
	 sAS7 = recEnable[6].checked;
	 sAS8 = recEnable[7].checked;
	 sASN = recEnable[8].checked;
   ERViewer.SetCameraInfo(nCH, strTitle, sPtzID, sInstall, sCovert, sTimeMain, sTimeCall, sRecQuality,sNormalSpeed1, sNormalSpeed2, sNormalSpeed3, sNormalSpeed4, sNormalSpeed5, sNormalSpeed6, sNormalSpeed7, sNormalSpeed8, sNormalSpeedN,sEventSpeed1, sEventSpeed2, sEventSpeed3, sEventSpeed4, sEventSpeed5, sEventSpeed6, sEventSpeed7, sEventSpeed8, sEventSpeedN, sAS1, sAS2, sAS3, sAS4, sAS5, sAS6, sAS7, sAS8, sASN);
   mfCamera.value="0"; //mei
}

function initCameraInfo(strTitle, sPtzID, sInstall, sCovert, sTimeMain, sTimeCall, sRecQuality, sNSpeed1, sNSpeed2, sNSpeed3, sNSpeed4, sNSpeed5, sNSpeed6, sNSpeed7, sNSpeed8, sNSpeedN, sESpeed1, sESpeed2, sESpeed3, sESpeed4, sESpeed5, sESpeed6, sESpeed7, sESpeed8, sESpeedN, sAS1, sAS2, sAS3, sAS4, sAS5, sAS6, sAS7, sAS8, sASN, sChannelCount, sCodecCount, sResolution, sInstallCamera)
{
   cameraTitle.value = strTitle;
   SetIntValue("cameraPtzID", sPtzID);
   cameraInstall.checked = sInstall;
   cameraCovert.checked = sCovert;
   SetIntValue("mainMonitorSeq", sTimeMain);
   SetIntValue("callMonitorSeq", sTimeCall);
   recordQuality.value = sRecQuality;
   g_ChannelCount = sChannelCount;
   g_CodecCount = sCodecCount;
   g_Resolution = sResolution;
   g_InatallCamera = sInstallCamera;
   vInitCfgCameraSpeed();
   selNormalSpeed[0].value = (sNSpeed1 > selNormalSpeed[0].length-1) ? selNormalSpeed[0].length-1 : sNSpeed1;
   selNormalSpeed[1].value = (sNSpeed2 > selNormalSpeed[1].length-1) ? selNormalSpeed[1].length-1 : sNSpeed2;
   selNormalSpeed[2].value = (sNSpeed3 > selNormalSpeed[2].length-1) ? selNormalSpeed[2].length-1 : sNSpeed3;
   selNormalSpeed[3].value = (sNSpeed4 > selNormalSpeed[3].length-1) ? selNormalSpeed[3].length-1 : sNSpeed4;
   selNormalSpeed[4].value = (sNSpeed5 > selNormalSpeed[4].length-1) ? selNormalSpeed[4].length-1 : sNSpeed5;
   selNormalSpeed[5].value = (sNSpeed6 > selNormalSpeed[5].length-1) ? selNormalSpeed[5].length-1 : sNSpeed6;
   selNormalSpeed[6].value = (sNSpeed7 > selNormalSpeed[6].length-1) ? selNormalSpeed[6].length-1 : sNSpeed7;
   selNormalSpeed[7].value = (sNSpeed8 > selNormalSpeed[7].length-1) ? selNormalSpeed[7].length-1 : sNSpeed8;
   selNormalSpeed[8].value = (sNSpeedN > selNormalSpeed[8].length-1) ? selNormalSpeed[8].length-1 : sNSpeedN;
   selEventSpeed[0].value = (sESpeed1 > selEventSpeed[0].length-1) ? selEventSpeed[0].length-1 : sESpeed1;
   selEventSpeed[1].value = (sESpeed2 > selEventSpeed[1].length-1) ? selEventSpeed[1].length-1 : sESpeed2;
   selEventSpeed[2].value = (sESpeed3 > selEventSpeed[2].length-1) ? selEventSpeed[2].length-1 : sESpeed3;
   selEventSpeed[3].value = (sESpeed4 > selEventSpeed[3].length-1) ? selEventSpeed[3].length-1 : sESpeed4;
   selEventSpeed[4].value = (sESpeed5 > selEventSpeed[4].length-1) ? selEventSpeed[4].length-1 : sESpeed5;
   selEventSpeed[5].value = (sESpeed6 > selEventSpeed[5].length-1) ? selEventSpeed[5].length-1 : sESpeed6;
   selEventSpeed[6].value = (sESpeed7 > selEventSpeed[6].length-1) ? selEventSpeed[6].length-1 : sESpeed7;
   selEventSpeed[7].value = (sESpeed8 > selEventSpeed[7].length-1) ? selEventSpeed[7].length-1 : sESpeed8;
   selEventSpeed[8].value = (sESpeedN > selEventSpeed[8].length-1) ? selEventSpeed[8].length-1 : sESpeedN;
	 recEnable[0].checked = sAS1;
	 recEnable[1].checked = sAS2;
	 recEnable[2].checked = sAS3;
	 recEnable[3].checked = sAS4;
	 recEnable[4].checked = sAS5;
	 recEnable[5].checked = sAS6;
	 recEnable[6].checked = sAS7;
	 recEnable[7].checked = sAS8;
	 recEnable[8].checked = sASN;
}


