<!--

var TVS_VERSION = '1,5,47,195';

var TN_CS_CONNECTED = 0x00000001;
var TN_CS_STREAMED	= 0x00000002;
var TN_CS_DECODED	= 0x00000004;
var TN_CS_DISPLAYED = 0x00000008;
var TN_CS_RECORDED =  0x00000010;

var TN_SNC_CN_SERVER_UNREACHABLE = 10;
var TN_SNC_CN_TOO_MANY_CONNECTION = 11;
var TN_SNC_CN_PASSWORD_MISMATCH = 12;
var TN_SNC_CN_CONNECTION_DISABLED = 13;
var TN_SNC_CN_ID_NOT_EXIST = 14;
var TN_SNC_CN_DOMAINNAME_UNKNOWN = 15;
var TN_SNC_CN_PARAMETER_OUTOFRANGE = 16;
var TN_SNC_CN_DUPLICATE_CONNECT = 17;
var TN_SNC_CN_KEEPALIVE_FAILED = 18;
var TN_SNC_CN_NO_AUTHORITY_OPERATION = 19;
var TN_SNC_CN_OPERATION_FAILED = 20;

var TN_ET_DI = 0;
var TN_ET_VIDEOLOSS = 1;
var TN_ET_MOTION = 2;
var TN_ET_DO = 4;
var TN_ET_RECORD = 5;

var TN_ES_OFF = 0;
var TN_ES_ON = 1;

var TN_ET_OFF = 0;
var TN_ET_SET = 1;
var TN_ET_ERASE = 2;
var TN_ET_APPLY = 3;

var TN_MVD_PAUSE = 0;
var TN_MVD_KEYFRAME = 1;
var TN_MVD_LIVE = 2;

var g_lChID = 0;
var g_display = null;
var g_lOsdID_VL = -1;
var g_lOsdsysID = -1;
var g_lOsdsysTime = -1;

var g_Alarm_state_1 = 0;
var g_Alarm_state_2 = 0;


function tvs_init(server_addr, port, id, password)
{
	g_display = document.Tvs.GetDisplay();
	//alert('id=' + id + ' password=' + password);
	tvs_connect(server_addr, port, id, password);
	//alert('tvs init done');
}

// 2
function tvs_init2(server_addr, port, id, password)
{
	g_display = document.Tvs2.GetDisplay();
	//alert('id=' + id + ' password=' + password);
	tvs_connect2(server_addr, port, id, password);
	//alert('tvs init done');
}

function tvs_term()
{
	tvs_discon();
}

function tvs_connect(server_addr, port, id, password)
{
	if (g_lChID > 0)
	{
		return;
	}

	sAddress = 'vsnm://' + server_addr + ':' + port + '//video1+audio1';

	document.Tvs.LocalConfig(9) = -1; // Autoplay on

	g_lChID = document.Tvs.Connect(sAddress, id, password);

//	if (!document.Tvs.Play(g_lChID))
//	{
//		return;
//	}

	document.Tvs.SetMute(g_lChID, 0);
	document.Tvs.AutoReconnect(g_lChID) = 0;
	document.Tvs.SetPTZControlSpeed(g_lChID, 0, -1);
	document.Tvs.SetPTZControlSpeed(g_lChID, 1, -1);
	document.Tvs.SetPTZControlSpeed(g_lChID, 2, -1);
}


// 2
function tvs_connect2(server_addr, port, id, password)
{
	if (g_lChID > 0)
	{
		return;
	}

	sAddress = 'vsnm://' + server_addr + ':' + port + '//video1+audio1';

	document.Tvs2.LocalConfig(9) = -1; // Autoplay on

	g_lChID = document.Tvs2.Connect(sAddress, id, password);

//	if (!document.Tvs.Play(g_lChID))
//	{
//		return;
//	}

	document.Tvs2.SetMute(g_lChID, 0);
	document.Tvs2.AutoReconnect(g_lChID) = -1;
	document.Tvs2.SetPTZControlSpeed(g_lChID, 0, -1);
	document.Tvs2.SetPTZControlSpeed(g_lChID, 1, -1);
	document.Tvs2.SetPTZControlSpeed(g_lChID, 2, -1);
}

function tvs_setosd(sysid, time, position, idstr, dispsize, standard)
{
	    if(sysid == 1){
	       if(g_lOsdsysID >= 0){
				g_display.RemoveOsdArea(g_lOsdsysID);
				g_lOsdsysID = -1;
	       }
	       if(dispsize == 1){
	           if(position == 0){
	               if(standard == 0){
	                   g_lOsdsysID = g_display.AddOsdArea(g_lChID, 20, 530, 140, 570, 0);
	               }
	               else{
	                   g_lOsdsysID = g_display.AddOsdArea(g_lChID, 20, 430, 140, 470, 0);
	               }
	           }
	           else{
	               g_lOsdsysID = g_display.AddOsdArea(g_lChID, 20, 20, 140, 60, 0);
	           }
               g_display.OsdFontSize(g_lOsdsysID) = 20;
               g_display.UpdateOsdArea(g_lOsdsysID, idstr);
	       }
	       else if(dispsize == 2){
	           if(position == 0){
	               if(standard == 0){
	                   g_lOsdsysID = g_display.AddOsdArea(g_lChID, 40, 1060, 280, 1140, 0);
	               }
	               else{
	                   g_lOsdsysID = g_display.AddOsdArea(g_lChID, 40, 860, 280, 940, 0);
	               }
	           }
	           else{
	               g_lOsdsysID = g_display.AddOsdArea(g_lChID, 40, 40, 280, 120, 0);
	           }
               g_display.OsdFontSize(g_lOsdsysID) = 38;
               g_display.UpdateOsdArea(g_lOsdsysID, idstr);
	       }
	       else{ // 1/2 size
	           if(position == 0){
	               if(standard == 0){
	                   g_lOsdsysID = g_display.AddOsdArea(g_lChID, 10, 265, 70, 285, 0);
	               }
	               else{
	                   g_lOsdsysID = g_display.AddOsdArea(g_lChID, 10, 215, 70, 235, 0);
	               }
	           }
	           else{
                   g_lOsdsysID = g_display.AddOsdArea(g_lChID, 10, 10, 70, 30, 0);
	           }      
               g_display.OsdFontSize(g_lOsdsysID) = 11;
               g_display.UpdateOsdArea(g_lOsdsysID, idstr);
	       }
	           
        }
        
	    if(time == 1){
	       if(g_lOsdsysTime >= 0){
				g_display.RemoveOsdArea(g_lOsdsysTime);
				g_lOsdsysTime = -1;
	       }
	       if(dispsize == 1){
	           if(position == 0){
	               if(standard == 0){
	                   g_lOsdsysTime = g_display.AddOsdArea(g_lChID, 620, 530, 710, 570, 0);
	               }
	               else{
	                   g_lOsdsysTime = g_display.AddOsdArea(g_lChID, 620, 430, 710, 470, 0);
	               }
	           }
	           else{
	               g_lOsdsysTime = g_display.AddOsdArea(g_lChID, 620, 20, 710, 60, 0);
	           }
               g_display.OsdFontSize(g_lOsdsysTime) = 20;
               g_display.UpdateOsdArea(g_lOsdsysTime, '%SERVERTIME%');
	       }
	       else if(dispsize == 2){
	           if(position == 0){
	               if(standard == 0){
	                   g_lOsdsysTime = g_display.AddOsdArea(g_lChID, 1240, 1060, 1420, 1140, 0);
	               }
	               else{
	                   g_lOsdsysTime = g_display.AddOsdArea(g_lChID, 1240, 860, 1420, 940, 0);
	               }
	           }
	           else{
	               g_lOsdsysTime = g_display.AddOsdArea(g_lChID, 1240, 40, 1420, 120, 0);
	           }
               g_display.OsdFontSize(g_lOsdsysTime) = 38;
               g_display.UpdateOsdArea(g_lOsdsysTime, '%SERVERTIME%');
	       }
	       else{ // 1/2 size
	           if(position == 0){
	               if(standard == 0){
	                   g_lOsdsysTime = g_display.AddOsdArea(g_lChID, 300, 265, 345, 285, 0);
	               }
	               else{
	                   g_lOsdsysTime = g_display.AddOsdArea(g_lChID, 300, 215, 345, 235, 0);
	               }
	           }
	           else{
                   g_lOsdsysTime = g_display.AddOsdArea(g_lChID, 300, 10, 345, 30, 0);
	           }      
               g_display.OsdFontSize(g_lOsdsysTime) = 11;
               g_display.UpdateOsdArea(g_lOsdsysTime, '%SERVERTIME%');
	       }
        }
        
}

function tvs_ptzspeed(cmd)
{
	document.Tvs.SetPTZControlSpeed(g_lChID, 0, cmd);
	document.Tvs.SetPTZControlSpeed(g_lChID, 1, cmd);
	document.Tvs.SetPTZControlSpeed(g_lChID, 2, cmd);
}

function tvs_ptzpanspeed(cmd)
{
	document.Tvs.SetPTZControlSpeed(g_lChID, 0, cmd);
}
function tvs_ptztiltspeed(cmd)
{
	document.Tvs.SetPTZControlSpeed(g_lChID, 1, cmd);
}
function tvs_ptzzoomspeed(cmd)
{
	document.Tvs.SetPTZControlSpeed(g_lChID, 2, cmd);
}

/*
function pause(sec) {
    var now = new Date();
    var exitTime = now.getTime() + (sec);
    while (true) {
        now = new Date();
        if (now.getTime() > exitTime) return;
    }
} 
*/
function tvs_discon()
{
	if (g_lChID == 0)
	{
		return;
	}

	document.Tvs.Pause(g_lChID);
	document.Tvs.SetMute(g_lChID, 1);

	document.Tvs.Disconnect(g_lChID);
	g_lChID = 0;
//	alert('connected');

//    pause(2000);
}

function tvs_on_ChannelNotify(lChID, eNewState, eReason)
{
//	alert('tvs_on_ChannelNofy');

/*
    TN_CS_CONNECTED = 0x00000001,
    TN_CS_STREAMED	= 0x00000002,
    TN_CS_DECODED	= 0x00000004,
    TN_CS_DISPLAYED = 0x00000008,
    TN_CS_RECORDED =  0x00000010

	TN_SNC_CN_SERVER_UNREACHABLE = 10,	// Server is unreachable for connection
	TN_SNC_CN_TOO_MANY_CONNECTION,		// Too many connections on the server
	TN_SNC_CN_PASSWORD_MISMATCH ,		// Password is incorrect
	TN_SNC_CN_CONNECTION_DISABLED,		// Server disabled the connection
	TN_SNC_CN_ID_NOT_EXIST,				// Login ID doesn’t exist
	TN_SNC_CN_DOMAINNAME_UNKNOWN,		// Can’t resolve the domain name
	TN_SNC_CN_PARAMETER_OUTOFRANGE,		// Invalid channels is one of this case
	TN_SNC_CN_DUPLICATE_CONNECT,		// Multiple connections to a channel are not allowed
	TN_SNC_CN_KEEPALIVE_FAILED,			// Disconnected due to keep alive timeout
	TN_SNC_CN_NO_AUTHORITY_OPERATION,	// eg: Setup operation by user?
	TN_SNC_CN_OPERATION_FAILED			// General failure
*/

	if (eNewState & TN_CS_CONNECTED)
	{
//		alert('connected');	
	}
	else
	{
//		alert('disconnected(reason=' + eReason + ')');	
		if (eReason >= TN_SNC_CN_SERVER_UNREACHABLE)
		{
			switch (eReason)
			{
			case TN_SNC_CN_SERVER_UNREACHABLE:
//				alert('Server is unreachable for connection');
				break;
			case TN_SNC_CN_TOO_MANY_CONNECTION:
//				alert('Too many connections on the server');
				break;
			case TN_SNC_CN_PASSWORD_MISMATCH:
//				alert('Password is incorrect');
				break;
			case TN_SNC_CN_CONNECTION_DISABLED:
//				alert('Server disabled the connection');
				break;
			case TN_SNC_CN_ID_NOT_EXIST:
//				alert('Login ID does not exist');
				break;
			case TN_SNC_CN_DOMAINNAME_UNKNOWN:
//				alert('Can not resolve the domain name');
				break;
			case TN_SNC_CN_PARAMETER_OUTOFRANGE:
//				alert('Invalid channels is one of this case');
				break;
			case TN_SNC_CN_DUPLICATE_CONNECT:
//				alert('Multiple connections to a channel are not allowed');
				break;
			case TN_SNC_CN_KEEPALIVE_FAILED:
//				alert('Disconnected due to keep alive timeout');
				break;
			case TN_SNC_CN_NO_AUTHORITY_OPERATION:
//				alert('No authority operation');
				break;
			case TN_SNC_CN_OPERATION_FAILED:
//				alert('General failure');
				break;
			}
		}
	}
}

function tvs_on_MouseEvent(lChID, lMsg, wParam, lParam)
{
}

function tvs_on_ServerEvent(lChID, eEventType, nIndex, eEventStatus, vData, motion_img, record_img)
{
	switch (eEventType)
	{
	case TN_ET_MOTION:
		if (eEventStatus)
		{
				document[motion_img].src = 'image/motion.jpg';
		}
		else
		{
				document[motion_img].src = 'image/null.jpg';
		}
		break;
	case TN_ET_RECORD:
		if (eEventStatus == 1)
		{
				document[record_img].src = 'image/rec_on.jpg';
		}
		else if (eEventStatus == -1)
		{
				document[record_img].src = 'image/rec_err.jpg';
		}
		else
		{
				document[record_img].src = 'image/null.jpg';
		}
		break;
	case TN_ET_VIDEOLOSS:
		if (eEventStatus)
		{
//			alert('Video Loss(1)');
			if (g_lOsdID_VL >= 0)
			{
				g_display.RemoveOsdArea(g_lOsdID_VL);
				g_lOsdID_VL = -1;
			}
		}
		else
		{
//			alert('Video Loss(0)');
			var rcVL = new Array(document.Tvs.width / 2 - 60, document.Tvs.height / 2 - 30, document.Tvs.width / 2 + 60, document.Tvs.height / 2 + 30);
			
			g_lOsdID_VL = g_display.AddOsdArea(g_lChID, rcVL[0], rcVL[1], rcVL[2], rcVL[3], 0);
//			g_display.OsdFontSize(g_lOsdID_VL) = 11;
			g_display.UpdateOsdArea(g_lOsdID_VL, 'Video Loss');
		}
		break;
	 }
}

function tvs_on_ServerEventVLoss(lChID, eEventType, nIndex, eEventStatus, vData)
{
	switch (eEventType)
	{
	case TN_ET_VIDEOLOSS:
		if (eEventStatus)
		{
//			alert('Video Loss1 - 1');
			if (g_lOsdID_VL >= 0)
			{
				g_display.RemoveOsdArea(g_lOsdID_VL);
				g_lOsdID_VL = -1;
			}
		}
		else
		{
//			alert('Video Loss0 - 1');
			var rcVL = new Array(document.Tvs.width / 2 - 60, document.Tvs.height / 2 - 30, document.Tvs.width / 2 + 60, document.Tvs.height / 2 + 30);
			
			g_lOsdID_VL = g_display.AddOsdArea(g_lChID, rcVL[0], rcVL[1], rcVL[2], rcVL[3], 0);
//			g_display.OsdFontSize(g_lOsdID_VL) = 11;
			g_display.UpdateOsdArea(g_lOsdID_VL, 'Video Loss');
		}
		break;
	 }
}

function tvs_on_ServerEventVideo(lChID, eEventType, nIndex, eEventStatus, vData, vmotion_img)
{
	switch (eEventType)
	{
	case TN_ET_MOTION:
		if (eEventStatus)
		{
				document[vmotion_img].src = 'image/motion.jpg';
		}
		else
		{
				document[vmotion_img].src = 'image/null.jpg';
		}
		break;
	 }
}

function tvs_on_ServerEventView(lChID, eEventType, nIndex, eEventStatus, vData, sensor_img, alarm_img, sensor2_img, alarm2_img)
{
	switch (eEventType)
	{
	case TN_ET_DI:
		if (nIndex == 1)
		{
			if (eEventStatus)
			{
				document[sensor_img].src = 'image/di_1.jpg';
			}
			else
			{
				document[sensor_img].src = 'image/di_1_off.jpg';
			}
		}
		else if (nIndex == 2)
		{
			if (eEventStatus)
			{
				document[sensor2_img].src = 'image/di_2.jpg';
			}
			else
			{
				document[sensor2_img].src = 'image/di_2_off.jpg';
			}
		}
		break;
	case TN_ET_DO:
		if (nIndex == 1)
		{
			if (eEventStatus)
			{
			    g_Alarm_state_1 = 1;
				document[alarm_img].src = 'image/di_1.jpg';
			}
			else
			{
			    g_Alarm_state_1 = 0;
				document[alarm_img].src = 'image/di_1_off.jpg';
			}
		}
		else if (nIndex == 2)
		{
			if (eEventStatus)
			{
			    g_Alarm_state_2 = 1;
				document[alarm2_img].src = 'image/di_2.jpg';
			}
			else
			{
			    g_Alarm_state_2 = 0;
				document[alarm2_img].src = 'image/di_2_off.jpg';
			}
		}
		break;
	}
}

function tvs_on_SystemNotify(lNotifyCode, vData)
{
}

function tvs_snapshot(fileName)
{
	if (g_lChID == 0)
	{
		return;
	}

//	document.Tvs.Snapshot(g_lChID, true);

	document.Tvs.Snapshot(g_lChID, 0, false); // 0 = bmp, 1=jpg
//	document.Tvs.Snapshot(g_lChID, false); // 0 = bmp, 1=jpg
	document.Tvs.PreviewSnapshot(g_lChID);
}

function tvs_setDO(index)
{
	if (g_lChID == 0)
	{
		return;
	}

    if(index == 1){
        if(g_Alarm_state_1 == 0){
    	    document.Tvs.SetDO(g_lChID, index, 1);
   	    }
   	    else{
    	    document.Tvs.SetDO(g_lChID, index, 0);
   	    }
   	}
   	else if(index == 2){
        if(g_Alarm_state_2 == 0){
    	    document.Tvs.SetDO(g_lChID, index, 1);
   	    }
   	    else{
    	    document.Tvs.SetDO(g_lChID, index, 0);
   	    }
   	}
}


function tvs_sendPtzCmd(nCmd)
{
	if (g_lChID == 0)
	{
		return;
	}

	document.Tvs.SendPTZCommand(g_lChID, nCmd);
}

function tvs_sendPtzStopCmd()
{
	if (g_lChID == 0)
	{
		return;
	}

	document.Tvs.SendPTZCommand(g_lChID, 0);
}

function tvs_ptz_begin(cmd)
{
	switch(cmd)
	{
		case 'left':
			tvs_sendPtzCmd(2);
			break;
		case 'right':
			tvs_sendPtzCmd(3);
			break;
		case 'up':
			tvs_sendPtzCmd(4);
			break;
		case 'down':
			tvs_sendPtzCmd(5);
			break;
		case 'zoom_in':
			tvs_sendPtzCmd(6);
			break;
		case 'zoom_out':
			tvs_sendPtzCmd(7);
			break;
		case 'focus_far':
			tvs_sendPtzCmd(8);
			break;
		case 'focus_near':
			tvs_sendPtzCmd(9);
			break;
			
		case 'left_up':
			tvs_sendPtzCmd(10);
			break;
		case 'left_down':
			tvs_sendPtzCmd(11);
			break;
		case 'right_up':
			tvs_sendPtzCmd(12);
			break;
		case 'right_down':
			tvs_sendPtzCmd(13);
			break;
		case 'light_on':
			tvs_sendPtzCmd(14);
			break;
		case 'light_off':
			tvs_sendPtzCmd(15);
			break;
		case 'power_on':
			tvs_sendPtzCmd(16);
			break;
		case 'power_off':
			tvs_sendPtzCmd(17);
			break;
		case 'home':
			tvs_sendPtzCmd(18);
			break;
		case 'iris_close':
			tvs_sendPtzCmd(21);
			break;
		case 'iris_open':
			tvs_sendPtzCmd(22);
			break;
		case 'iris_auto':
			tvs_sendPtzCmd(23);
			break;
		case 'wiper_on':
			tvs_sendPtzCmd(26);
			break;
		case 'wiper_off':
			tvs_sendPtzCmd(27);
			break;
		case 'focus_auto':
			tvs_sendPtzCmd(28);
			break;
			
		case 'menu_on':
			tvs_sendPtzCmd(29);
			break;
		case 'menu_off':
			tvs_sendPtzCmd(30);
			break;
		case 'menu_enter':
			tvs_sendPtzCmd(31);
			break;
		case 'menu_esc':
			tvs_sendPtzCmd(32);
			break;
		case 'menu_save':
	        if (g_lChID == 0)
	        {
		        break;
	        }
			document.Tvs.SetPTZPreset(g_lChID, 1);
			break;
		case 'wash_on':
			tvs_sendPtzCmd(38);
			break;
		case 'wash_off':
			tvs_sendPtzCmd(39);
			break;
			
		case 'ss_on':
			tvs_sendPtzCmd(112);
			break;
		case 'ss_off':
			tvs_sendPtzCmd(113);
			break;
		case 'ni_on':
			tvs_sendPtzCmd(114);
			break;
		case 'ni_off':
			tvs_sendPtzCmd(115);
			break;
		case 'st_on':
			tvs_sendPtzCmd(116);
			break;
		case 'st_off':
			tvs_sendPtzCmd(117);
			break;
	}
}

function tvs_ptz_continue()
{
	tvs_sendPtzCmd(1);
}

function tvs_ptz_end()
{
	tvs_sendPtzStopCmd();
}

function tvs_ptz_home()
{
	tvs_sendPtzCmd(0x12);
}

function tvs_preset_goto(index)
{
	document.Tvs.GoToPTZPreset(g_lChID, index);
}

function tvs_preset_set(index)
{
//	document.Tvs.ClearPTZPreset(g_lChID, index);

//	var i, j;
//	for (i=0;i<1000000;i++)
//	{
//		j = i;
//	}
	
	document.Tvs.SetPTZPreset(g_lChID, index); // ApplyPTZPresetÀ» ÀÌ°ÍÀ¸·Î º¯°æ¿ä¸Á

}

function tvs_preset_clear(index)
{
	document.Tvs.ClearPTZPreset(g_lChID, index);

}

function tvs_preset_patrol_start()
{
	tvs_sendPtzCmd(0x18);
}

function tvs_preset_patrol_stop()
{
	tvs_sendPtzCmd(0x19);
}

function tvs_preset_autopan_start()
{
	tvs_sendPtzCmd(0x13);
}

function tvs_preset_autopan_stop()
{
	tvs_sendPtzCmd(0x14);
}

function tvs_enable_talk(enable)
{
	if (g_lChID == 0)
	{
		return;
	}

	if (enable)
	{
		document.Tvs.StartTalking(g_lChID);
	}
	else
	{
		document.Tvs.StopTalking(g_lChID);
	}
}

function tvs_set_motion_region_edit(set)
{
	if (g_lChID == 0)
	{
		return;
	}

	document.Tvs.SetMotionRegionEdit(g_lChID, set, TN_MVD_KEYFRAME);
}

function tvs_config_camera_module(code, down)
{
	if (g_lChID == 0)
	{
		return;
	}

	document.Tvs.ConfigCameraModule(g_lChID, code, down);
}

//-->

