// JavaScript Document
var W_OK =  0;//检查成功
var W_TRY = 1;//试用
var W_NO_FOUND =2;//没有找到校验服务器
var W_EXCEED_NUM =3;//超过用户数了


function getEvent(parseEvent) {
//	if(g_msg) return;
	$.ajax({ 
		type: "post", 
		url: "http://127.0.0.1:3001/msg/", 
		dataType: "jsonp", 
		timeout: 30000,		
		data: {"act": "get","timeout":30000},
	//data中的timeout值要跟前面AJAX的timeout值相等,不设置默认是30000
		success: function (data,textStatus) { 
			// $("#StatusArea").append("--- " + data );
			if(textStatus == "success")
			{
				getEvent(parseEvent);		
			}
			if(data != null)
			{
			 	//AppendStatus(data+ "--\r\n");
				parseEvent(data.ch,data.e_type,data.e_handle,data.l_result,data.e_data);
			}
		}, 
		 complete:function(XMLHttpRequest,textStatus){  
					if(XMLHttpRequest.readyState=="4"){  
						//alert(XMLHttpRequest.responseText);  
					}  
			},  		
		error: function (XMLHttpRequest, textStatus, errorThrown) { 
			//$("#StatusArea").append("[state: " + textStatus + ", error: " + errorThrown + " ]<br/>");
			if (textStatus == "timeout") { // 请求超时
					  // 递归调用
					getEvent(parseEvent);
				// 其他错误,如网络错误等
				} else { 
					 getEvent(parseEvent);
				}
		} 
	});
	 //setTimeout(getEvent ,1000);
}

function sendCmd(cmd_name,paraObj,resultCallback)
{
	var nResult = -99;
	var bSync = false;
	$.ajax({ 
		type: "post", 
		url: "http://127.0.0.1:3001/cmd/", 
		dataType: "jsonp", 
		data: {"act": cmd_name,"para":JSON.stringify(paraObj)},
		async:false,
		success: function (data,textStatus) { 
			// $("#StatusArea").append("--- " + data );
			bSync = true;
			nResult = data.result;
			if(resultCallback!="" && resultCallback != null)
				resultCallback(nResult);
			return nResult;
		}, 
		 complete:function(XMLHttpRequest,textStatus){  
					if(XMLHttpRequest.readyState=="4"){  
						//alert(XMLHttpRequest.responseText);  
					}  
			},  		
		error: function (XMLHttpRequest, textStatus, errorThrown) { 
			console.log("网络错误! " + textStatus + ", error: " + errorThrown );
			if (textStatus == "timeout") { // 请求超时
					//getEvent(); // 递归调用
				// 其他错误,如网络错误等
				} else { 
					//getEvent();
				}
			bSync = true;
		} 
	});	
//	Sleep(500);
 //	var timestamp=new Date().getTime();
 //	alert(timestamp+"---"+ nResult);
	return nResult;
}
//检查本地设备服务程序是否安装命令
function check_ver(iVer,nextFunc)
{
	var nResult = -99;
	var paraObj={};
	paraObj.a= iVer;
	$.ajax({ 
		type: "post", 
		url: "http://127.0.0.1:3001/cmd/", 
		dataType: "jsonp", 
		data: {"act": "check_ver","para":JSON.stringify(paraObj)},
		timeout: 1000,
		//async:false,
		success: function (data,textStatus) { 
			// $("#StatusArea").append("--- " + data );
			nResult = data.result;
			if(nextFunc!="" && nextFunc != null)
				nextFunc(nResult);
			return nResult;
		}, 
		 complete:function(XMLHttpRequest,textStatus){  
					if(XMLHttpRequest.readyState=="4"){  
						//alert(XMLHttpRequest.responseText);  
					}  
			},  		
		error: function (XMLHttpRequest, textStatus, errorThrown) { 
			//alert("没有安装! " + textStatus + ", error: " + errorThrown );
			nextFunc(nResult);
			if (textStatus == "timeout") { // 请求超时
					//getEvent(); // 递归调用
				// 其他错误,如网络错误等
				} else { 
					//getEvent();
				}
			return nResult;
		} 
	});	
	return nResult;	
}
function set_check_data_url(strUrl,nextFunc)
{
	var nResult = -99;
	var paraObj={};
	paraObj.a= strUrl;
	nResult = sendCmd("set_check_url",paraObj,nextFunc);
	return nResult;	
}
//最右边的是执行下一个函数的参数
//下一步函数格式为function nextFunc(nResult)内含上次函数执行后返回的结果
function OpenDevice(nDevice_type,nextFunc) {

	var nResult = -99;
	var paraObj={};
	paraObj.a=nDevice_type;
	paraObj.b = 0;
	nResult = sendCmd("QNV_OpenDevice",paraObj,nextFunc);
	return nResult;
}
function CloseDevice(nDevice_type,nextFunc) {
	var nResult = -99;
	var paraObj={};
	paraObj.a=nDevice_type;
	paraObj.b = 0;
	nResult = sendCmd("QNV_CloseDevice",paraObj,nextFunc);
	return nResult;	
}
function SetDevCtrl( nChannelID, uCtrlType, nValue,nextFunc)
{
	var nResult = -99;
	var paraObj = {};
	paraObj.a = nChannelID;
	paraObj.b = uCtrlType;
	paraObj.c = nValue;
	nResult = sendCmd("QNV_SetDevCtrl",paraObj,nextFunc);
	return nResult;		
}
function GetDevCtrl(nChannelID,uCtrlType,nextFunc)
{
	var nResult = -99;
	var paraObj = {};
	paraObj.a = nChannelID;
	paraObj.b = uCtrlType;
	nResult = sendCmd("QNV_GetDevCtrl",paraObj,nextFunc);
	return nResult;			
}
function SetParam(  nChannelID,  uParamType,  nValue,nextFunc)
{
	var nResult = -99;
	var paraObj = {};
	paraObj.a = nChannelID;
	paraObj.b = uParamType;
	paraObj.c = nValue;
	nResult = sendCmd("QNV_SetParam",paraObj,nextFunc);
	return nResult;		
}
function GetParam(  nChannelID,  uParamType,nextFunc )
{
	var nResult = -99;
	var paraObj = {};
	paraObj.a = nChannelID;
	paraObj.b = uParamType;
	nResult = sendCmd("QNV_GetParam",paraObj,nextFunc);
	return nResult;		
}
function PlayFile(  nChannelID,  uPlayType,  nValue,  nValueEx, pValue,nextFunc)
{
	var nResult = -99;
	var paraObj = {};
	paraObj.a = nChannelID;
	paraObj.b = uPlayType;
	paraObj.c = nValue;
	paraObj.d = nValueEx;
	paraObj.e = pValue;
	nResult = sendCmd("QNV_PlayFile",paraObj,nextFunc);
	return nResult;		
}
function PlayMultiFile(  nChannelID,  uPlayType,  nValue,  nValueEx, pValue,nextFunc)
{
	var nResult = -99;
	var paraObj = {};
	paraObj.a = nChannelID;
	paraObj.b = uPlayType;
	paraObj.c = nValue;
	paraObj.d = nValueEx;
	paraObj.e = pValue;
	nResult = sendCmd("QNV_PlayMultiFile",paraObj,nextFunc);
	return nResult;			
}
function PlayString(  nChannelID,  uPlayType,  nValue,  nValueEx, pValue,nextFunc)
{
	var nResult = -99;
	var paraObj = {};
	paraObj.a = nChannelID;
	paraObj.b = uPlayType;
	paraObj.c = nValue;
	paraObj.d = nValueEx;
	paraObj.e = pValue;
	nResult = sendCmd("QNV_PlayString",paraObj,nextFunc);
	return nResult;			
}
function RecordFile(  nChannelID,  uRecordType,  nValue,  nValueEx, pValue,nextFunc)
{
	var nResult = -99;
	var paraObj = {};
	paraObj.a = nChannelID;
	paraObj.b = uRecordType;
	paraObj.c = nValue;
	paraObj.d = nValueEx;
	paraObj.e = pValue;
	nResult = sendCmd("QNV_RecordFile",paraObj,nextFunc);
	return nResult;	
}
function Conference(  nChannelID,  nConfID,  uConfType,  nValue, pValue,nextFunc)
{
	var nResult = -99;
	var paraObj = {};
	paraObj.a = nChannelID;
	paraObj.b = nConfID;
	paraObj.c = uConfType;
	paraObj.d = nValue;
	paraObj.e = pValue;
	nResult = sendCmd("QNV_Conference",paraObj,nextFunc);
	return nResult;		
}
function General(  nChannelID,  uGeneralType,  nValue, pValue,nextFunc)
{
	var nResult = -99;
	var paraObj = {};
	paraObj.a = nChannelID;
	paraObj.b = uGeneralType;
	paraObj.c = nValue;
	paraObj.d = pValue;
	nResult = sendCmd("QNV_General",paraObj,nextFunc);
	return nResult;		
}
function DevInfo(  nChannelID,  uDevInfoType,nextFunc)
{
	var nResult = -99;
	var paraObj = {};
	paraObj.a = nChannelID;
	paraObj.b = uDevInfoType;
	nResult = sendCmd("QNV_DevInfo",paraObj,nextFunc);
	return nResult;			
}
//nextFunc参数是一个对象包含result和缓存
function  Storage(  nDevID,  uOPType,  uSeek, pPwd, pValue,nextFunc )
{
	var paraObj = {};
	paraObj.a = nDevID;
	paraObj.b = uOPType;
	paraObj.c = uSeek;
	paraObj.d = pPwd;
	paraObj.e = pValue;
	var objResult ={};
	objResult.result = -99;
	$.ajax({ 
		type: "post", 
		url: "http://127.0.0.1:3001/cmd/", 
		dataType: "jsonp", 
		data: {"act": "QNV_Storage","para":JSON.stringify(paraObj)},
		async:false,
		success: function (data) { 
			// $("#StatusArea").append("--- " + data );
			objResult.result = data.result;
			objResult.content = data.content;
			if(data.outbuf != null )
				objResult.outbuf  = decodeURIComponent(data.outbuf);
				if(nextFunc != null)
					nextFunc(objResult);
		}, 
		 complete:function(XMLHttpRequest,textStatus){  
					if(XMLHttpRequest.readyState=="4"){  
						//alert(XMLHttpRequest.responseText);  
					}  
			},  		
		error: function (XMLHttpRequest, textStatus, errorThrown) { 
			alert("网络错误! " + textStatus + ", error: " + errorThrown );
			if (textStatus == "timeout") { // 请求超时
					//getEvent(); // 递归调用
				// 其他错误,如网络错误等
				} else { 
					//getEvent();
				}
		} 
	});		
	return objResult;			
}
//接受文件在asp,php的参数为filedata1="文件名"
function Remote(  uRemoteType,  nValue, pInValue, pInValueEx, pOutValue,  nBufSize,nextFunc)
{
	var nResult = -99;
	var paraObj = {};
	paraObj.a = uRemoteType;
	paraObj.b = nValue;
	paraObj.c = pInValue;
	paraObj.d = pInValueEx;
	paraObj.e = pOutValue;
	
	nResult = sendCmd("QNV_Remote",paraObj,nextFunc);
	return nResult;			
}
//接受文件在asp,php的参数为filedata1="文件名"
function Remote(  uRemoteType,  nValue, pInValue, pInValueEx, pOutValue,  nBufSize,nextFunc)
{
	var nResult = -99;
	var paraObj = {};
	paraObj.a = uRemoteType;
	paraObj.b = nValue;
	paraObj.c = pInValue;
	paraObj.d = pInValueEx;
	paraObj.e = pOutValue;
	
	nResult = sendCmd("QNV_Remote",paraObj,nextFunc);
	return nResult;			
}
//返回一个结果对象
function Tool(  uToolType,  nValue, pInValue, pInValueEx, nextFunc )
{
	var objResult ={};
	var paraObj = {};
	paraObj.a = uToolType;
	paraObj.b = nValue;
	paraObj.c = pInValue;
	paraObj.d = pInValueEx;
	objResult.result = -99;
	$.ajax({ 
		type: "post", 
		url: "http://127.0.0.1:3001/cmd/", 
		dataType: "jsonp", 
		data: {"act": "QNV_Tool","para":JSON.stringify(paraObj)},
		async:false,
		success: function (data) { 
			// $("#StatusArea").append("--- " + data );
			objResult.result = data.result;
			objResult.content = data.content;
			objResult.outbuf = "";
			if(data.outbuf != null )
			{
				objResult.outbuf = decodeURIComponent(data.outbuf);	 
			}
			 switch(uToolType) {
			 case 	QNV_TOOL_PSTNEND:
			 case	QNV_TOOL_CODETYPE:
				 if(nextFunc != null)
					nextFunc(objResult.result);
				return objResult.result;
			 case QNV_TOOL_LOCATION:
				 {
					 if(nextFunc != null)
						nextFunc(objResult.outbuf);
					return objResult.outbuf;
				 }
			 case QNV_TOOL_DISKFREESPACE:
			 case QNV_TOOL_DISKTOTALSPACE:
			 {
				 if(nextFunc != null)
			 		nextFunc(objResult.result);
				return objResult.result;
			 }
			 case QNV_TOOL_DISKLIST:
				 {
					 if(nextFunc != null)
						nextFunc(objResult.outbuf);
					return objResult.outbuf;
				 }
			 case QNV_TOOL_CONVERTFMT:
				 if(nextFunc != null)
			 		nextFunc(objResult.result);
				return objResult.result;
			 case QNV_TOOL_SELECTDIRECTORY:
				 {
					 if(nextFunc != null)
						nextFunc(objResult.outbuf);
					return objResult.outbuf;
				 }
			 case QNV_TOOL_SELECTFILE:
				 {
					 if(nextFunc != null)
					 {
						 nextFunc(objResult.outbuf);
					 }
					return objResult.outbuf;
				 }
			 case QNV_TOOL_CONVERTTOTIFF:
			 {
				 if(nextFunc != null)
					nextFunc(objResult.result);
				return objResult.result;
			 }
			 case QNV_TOOL_SLEEP:
				 if(nextFunc != null)
			 		nextFunc(objResult.result);
				return objResult.result;
			 }					
		}, 
		 complete:function(XMLHttpRequest,textStatus){  
					if(XMLHttpRequest.readyState=="4"){  
						//alert(XMLHttpRequest.responseText);  
					}  
			},  		
		error: function (XMLHttpRequest, textStatus, errorThrown) { 
			alert("网络错误! " + textStatus + ", error: " + errorThrown );
			if (textStatus == "timeout") { // 请求超时
					//getEvent(); // 递归调用
				// 其他错误,如网络错误等
				} else { 
					//getEvent();
				}
		} 
	});		

	return objResult;		
}

function CallLog( nChannelID, uLogType,nextFunc)
{
	var objResult ={};
	var paraObj = {};
	paraObj.a = nChannelID;
	paraObj.b = uLogType;
	objResult.result = -99;
	$.ajax({ 
		type: "post", 
		url: "http://127.0.0.1:3001/cmd/", 
		dataType: "jsonp", 
		data: {"act": "QNV_CallLog","para":JSON.stringify(paraObj)},
		async:false,
		success: function (data) { 
			// $("#StatusArea").append("--- " + data );
			objResult.result = data.result;
			objResult.content = data.content;
			if(data.outbuf != null )
				objResult.outbuf = decodeURIComponent(data.outbuf);
				 switch(uToolType) {
				 case 	QNV_CALLLOG_BEGINTIME:
				 case	QNV_CALLLOG_RINGBACKTIME:
				 case   QNV_CALLLOG_CONNECTEDTIME:
				 case   QNV_CALLLOG_ENDTIME:
				 case   QNV_CALLLOG_CALLTYPE:
				 case   QNV_CALLLOG_CALLRESULT:
				 case   QNV_CALLLOG_DELRECFILE:
				 case	QNV_CALLLOG_RESET:
					 if(nextFunc != null)
				 		nextFunc(objResult.result);
					return objResult.result;
				 case QNV_CALLLOG_CALLID:
				 case QNV_CALLLOG_CALLRECFILE:
					 if(nextFunc != null)
				 		nextFunc(objResult.outbuf);
					return objResult.outbuf;;
				 }
				
		}, 
		 complete:function(XMLHttpRequest,textStatus){  
					if(XMLHttpRequest.readyState=="4"){  
						//alert(XMLHttpRequest.responseText);  
					}  
			},  		
		error: function (XMLHttpRequest, textStatus, errorThrown) { 
			alert("网络错误! " + textStatus + ", error: " + errorThrown );
			if (textStatus == "timeout") { // 请求超时
					//getEvent(); // 递归调用
				// 其他错误,如网络错误等
				} else { 
					//getEvent();
				}
		} 
	});		

	return objResult;			
}
//URL中所有参数可以以p1=v1&p2=v2赋值,以post格式传送
////接受文件在asp,php的参数为file="文件名
//strFilePath问文件本地路径
//nextFunc下一条函数
function UploadFile(  strUrl,  strFilePath,nextFunc)
{
	var nResult = -99;
	var paraObj = {};
	paraObj.a = strUrl;
	paraObj.b = strFilePath;
	
	nResult = sendCmd("UploadFile",paraObj,nextFunc);
	return nResult;			
}