///////////////////////////////////////////////////////
// 
function CreateXMLstr_Login(UserName,Password)
{
	var xmlStr;
	
	xmlStr=		    "<ROOT>";
	xmlStr=xmlStr+    "<USERID></USERID>";
	xmlStr=xmlStr+		 "<CMDTYPE>CM_LOGIN</CMDTYPE>";
	xmlStr=xmlStr+		 "<PARADATA>";
	xmlStr=xmlStr+		     "<USERNAME>"+ UserName  +"</USERNAME>";
	xmlStr=xmlStr+		     "<PASSWORD>"+ Password  +"</PASSWORD>";
	xmlStr=xmlStr+    "</PARADATA>";
	xmlStr=xmlStr+"</ROOT>";

	return xmlStr;
}
////////////////////////////////////////////////////////
// 
function CreateXMLstr_Logout(USERID)
{
	var xmlStr;
	
	xmlStr=      	   "<ROOT>";
	xmlStr=xmlStr+    "<USERID>"+ USERID +"</USERID>";
	xmlStr=xmlStr+    "<CMDTYPE>CM_LOGOUT</CMDTYPE>";
	xmlStr=xmlStr+"</ROOT>";
	
	return xmlStr;
}

////////////////////////////////////////////////////////
// 
// UID format : 1123123,123123,23123
function CreateXMLstr_QueryGPSData( USERID, TEUID ){	
	var 		xmlStr;	
	xmlStr=            "<ROOT>";
	xmlStr=xmlStr+    "<USERID>"+ USERID +"</USERID>";
	xmlStr=xmlStr+    "<CMDTYPE>CM_QUERY_GPSDATA</CMDTYPE>";
	xmlStr=xmlStr+    "<PARADATA>";
	xmlStr=xmlStr+	        "<TEUID>"+ TEUID +"</TEUID>";
	xmlStr=xmlStr+	   "</PARADATA>";
	xmlStr=xmlStr+"</ROOT>";
	return xmlStr;
}

////////////////////////////////////////////////////////
// 
// UID format : 1123123,123123,23123
function CreateXMLstr_LastQueryGPSData( USERID, TEUID ){	
	var 		xmlStr;	
	xmlStr=       "<ROOT>";
	xmlStr=xmlStr+    "<USERID>"+ USERID +"</USERID>";
	xmlStr=xmlStr+    "<CMDTYPE>CM_QUERY_LASTGPSDATA</CMDTYPE>";
	xmlStr=xmlStr+    "<PARADATA>";
	xmlStr=xmlStr+	        "<TEUID>"+ TEUID +"</TEUID>";
	xmlStr=xmlStr+	   "</PARADATA>";
	xmlStr=xmlStr+"</ROOT>";
	return xmlStr;
}
///////////////////////////////////////////////////////////////////
//
function CreateXML_QueryCarMileage( USERID, TEUID, StartTime, EndTime )
{
	var xmlStr;

	xmlStr=       "<ROOT>";
	xmlStr=xmlStr+     "<USERID>"+ USERID +"</USERID>";
	xmlStr=xmlStr+	   "<CMDTYPE>CM_QUERY_MILEAGE</CMDTYPE>";
	xmlStr=xmlStr+     "<PARADATA>";
	xmlStr=xmlStr+	      "<TEUID>"+ TEUID +"</TEUID>";
	xmlStr=xmlStr+        "<STARTTIME>"+ StartTime +"</STARTTIME>";
	xmlStr=xmlStr+        "<ENDTIME>"+ EndTime +"</ENDTIME>";
	xmlStr=xmlStr+     "</PARADATA>";
	xmlStr=xmlStr+"</ROOT>";
    	
	return 	xmlStr;
}
/////////////////////////////////////////////////////////////////
//
function CreateXMLstr_QueryGPSHistoryData(USERID, TEUID, StartTime,EndTime)
{
	var		xmlStr;
	xmlStr=       "<ROOT>";
	xmlStr=xmlStr+     	"<USERID>"+ USERID +"</USERID>";
	xmlStr=xmlStr+		"<CMDTYPE>CM_QUERY_GPSDATABYCONDITION</CMDTYPE>";
	xmlStr=xmlStr+     	"<PARADATA>";
	xmlStr=xmlStr+	      "<TEUID>"+ TEUID +"</TEUID>";
	xmlStr=xmlStr+	      "<CONDITION>1</CONDITION>";
	xmlStr=xmlStr+        "<STARTTIME>"+ StartTime +"</STARTTIME>";
	xmlStr=xmlStr+        "<ENDTIME>"+ EndTime +"</ENDTIME>";
	xmlStr=xmlStr+    	"</PARADATA>";
	xmlStr=xmlStr+"</ROOT>";	
	return 	xmlStr;
}
///////////////////////////////////////////////////////////////////
//
function CreateXML_QueryCarAlarm( USERID, TEUID, AlarmType, StartTime, EndTime )
{
	var xmlStr;

	AlarmType += 2;
	
	xmlStr=       "<ROOT>";
	xmlStr=xmlStr+     "<USERID>"+ USERID +"</USERID>";
	xmlStr=xmlStr+	   "<CMDTYPE>CM_QUERY_GPSDATABYCONDITION</CMDTYPE>";
	xmlStr=xmlStr+     "<PARADATA>";
	xmlStr=xmlStr+	      "<TEUID>"+ TEUID +"</TEUID>";
	xmlStr=xmlStr+	      "<CONDITION>"+ AlarmType +"</CONDITION>";
	xmlStr=xmlStr+        "<STARTTIME>"+ StartTime +"</STARTTIME>";
	xmlStr=xmlStr+        "<ENDTIME>"+ EndTime +"</ENDTIME>";
	xmlStr=xmlStr+     "</PARADATA>";
	xmlStr=xmlStr+"</ROOT>";
    	
	return 	xmlStr;
}
//////////////////////////////////////////////////////////////////////
//
function CreateXMLstr_CtrlTENormalCmd( USERID,TEUID,TETYPE,CtrlCMD )
{
	var xmlStr;
	xmlStr=       "<ROOT>";
	xmlStr=xmlStr+    	"<USERID>"+ USERID +"</USERID>";
	xmlStr=xmlStr+		"<CMDTYPE>CM_CTRL_TE</CMDTYPE>";
	xmlStr=xmlStr+     "<PARADATA>";
	xmlStr=xmlStr+			"<TEUID>"+TEUID+"</TEUID>";
	xmlStr=xmlStr+			"<TETYPE>"+TETYPE+"</TETYPE>";
	xmlStr=xmlStr+			"<CTRLCMD>"+CtrlCMD+"</CTRLCMD>";
	xmlStr=xmlStr+     "<PARADATA>";
	xmlStr=xmlStr+"</ROOT>";
	
	return xmlStr;
}

//////////////////////////////////////////////////////////////////
//
function CreateXML_CtrlTEBackModeCmd(USERID,TEUID,TETYPE,BACKMODE,BACKSPACE)
{
	var xmlStr;
	xmlStr=       "<ROOT>";
	xmlStr=xmlStr+    	"<USERID>"+ USERID +"</USERID>";
	xmlStr=xmlStr+		"<CMDTYPE>CM_CTRL_TE</CMDTYPE>";
	xmlStr=xmlStr+     "<PARADATA>";
	xmlStr=xmlStr+			"<TEUID>"+TEUID+"</TEUID>";
	xmlStr=xmlStr+			"<TETYPE>"+TETYPE+"</TETYPE>";
	xmlStr=xmlStr+			"<CTRLCMD>4</CTRLCMD>";
	xmlStr=xmlStr+			"<CALLBACKMODE>"+BACKMODE+"</CALLBACKMODE>";
	xmlStr=xmlStr+			"<CALLBACKSPACE>"+BACKSPACE+"</CALLBACKSPACE>";
	xmlStr=xmlStr+     "<PARADATA>";
	xmlStr=xmlStr+"</ROOT>";
	
	return xmlStr;
}

//////////////////////////////////////////////////////////////////////////
//
function CreateXML_CtrlCarMonitorCmd(USERID,TEUID,TETYPE,TELNO)
{
	var xmlStr;
	xmlStr=       "<ROOT>";
	xmlStr=xmlStr+    	"<USERID>"+ USERID +"</USERID>";
	xmlStr=xmlStr+		"<CMDTYPE>CM_CTRL_TE</CMDTYPE>";
	xmlStr=xmlStr+      "<PARADATA>";
	xmlStr=xmlStr+			"<TEUID>"+TEUID+"</TEUID>";
	xmlStr=xmlStr+			"<TETYPE>"+TETYPE+"</TETYPE>";
	xmlStr=xmlStr+			"<CTRLCMD>8</CTRLCMD>";
	xmlStr=xmlStr+			"<TELNO>"+TELNO+"</TELNO>";
	xmlStr=xmlStr+     "<PARADATA>";
	xmlStr=xmlStr+"</ROOT>";
	
	return xmlStr;
}

///////////////////////////////////////////////////////////////////////
//
function CreateXML_CtrlOverSpeedAlarmCmd(USERID,TEUID,TETYPE,TIME)
{
	var xmlStr;
	xmlStr=       "<ROOT>";
	xmlStr=xmlStr+    	"<USERID>"+ USERID +"</USERID>";
	xmlStr=xmlStr+		"<CMDTYPE>CM_CTRL_TE</CMDTYPE>";
	xmlStr=xmlStr+      "<PARADATA>";
	xmlStr=xmlStr+			"<TEUID>"+TEUID+"</TEUID>";
	xmlStr=xmlStr+			"<TETYPE>"+TETYPE+"</TETYPE>";
	xmlStr=xmlStr+			"<CTRLCMD>10</CTRLCMD>";
	xmlStr=xmlStr+			"<TIME>"+TIME+"</TIME>";
	xmlStr=xmlStr+     "<PARADATA>";
	xmlStr=xmlStr+"</ROOT>";
	
	return xmlStr;
}

///////////////////////////////////////////////////////////////////////
//
function CreateXML_CtrlParkCarAlarmCmd(USERID,TEUID,TETYPE,TIME)
{
	var xmlStr;
	xmlStr=       "<ROOT>";
	xmlStr=xmlStr+    	"<USERID>"+ USERID +"</USERID>";
	xmlStr=xmlStr+		"<CMDTYPE>CM_CTRL_TE</CMDTYPE>";
	xmlStr=xmlStr+      "<PARADATA>";
	xmlStr=xmlStr+			"<TEUID>"+TEUID+"</TEUID>";
	xmlStr=xmlStr+			"<TETYPE>"+TETYPE+"</TETYPE>";
	xmlStr=xmlStr+			"<CTRLCMD>11</CTRLCMD>";
	xmlStr=xmlStr+			"<TIME>"+TIME+"</TIME>";
	xmlStr=xmlStr+     "<PARADATA>";
	xmlStr=xmlStr+"</ROOT>";
	
	return xmlStr;
}

///////////////////////////////////////////////////////////
//
function CreateXML_CtrlSetIPPortCmd(USERID,TEUID,TETYPE,IP,PORT)
{
	var xmlStr;
	xmlStr=       "<ROOT>";
	xmlStr=xmlStr+    	"<USERID>"+ USERID +"</USERID>";
	xmlStr=xmlStr+		"<CMDTYPE>CM_CTRL_TE</CMDTYPE>";
	xmlStr=xmlStr+      "<PARADATA>";
	xmlStr=xmlStr+			"<TEUID>"+TEUID+"</TEUID>";
	xmlStr=xmlStr+			"<TETYPE>"+TETYPE+"</TETYPE>";
	xmlStr=xmlStr+			"<CTRLCMD>16</CTRLCMD>";
	xmlStr=xmlStr+			"<IP>"+IP+"</IP>";
	xmlStr=xmlStr+			"<PORT>"+PORT+"</PORT>";
	xmlStr=xmlStr+     "<PARADATA>";
	xmlStr=xmlStr+"</ROOT>";
	
	return xmlStr;
}


///////////////////////////////////////////////////////////////////
//
function CreateXML_EditCarList( UserID, CMDType, USER, TEUID, SIM, TEType, License,  OwnerName, OwnerTel, OwnerAddr, Remark)
{
	var xmlStr;

	xmlStr="<ROOT>"
				+		"<USERID>"+UserID+"</USERID>"
				+		"<CMDTYPE>"+CMDType+"</CMDTYPE>"        // CM_ADD_CAR
																// CM_MODIFY_CAR
																// CM_DEL_CAR
				+		"<PARADATA>"
				+               "<USER>"+USER+"</USER>"
				+				"<TEUID>"+TEUID+"</TEUID>"
				+				"<SIM>"+SIM+"</SIM>"		
				+				"<TETYPE>"+TEType+"</TETYPE>"						
				+				"<LICENSE>"+License+"</LICENSE>"
				+				"<OWNERNAME>"+OwnerName+"</OWNERNAME>"
				+				"<OWNERTEL>"+OwnerTel+"</OWNERTEL>"
				+				"<OWNERADDR>"+OwnerAddr+"</OWNERADDR>"
				+				"<REMARK>"+Remark+"</REMARK>"
				+		"</PARADATA>"
				+"</ROOT>";

	return 	xmlStr;
}
//////////////////////////////////////////////////////////////////
//Check user 
function CreateXML_CheckUser( User )
{
	var xmlStr;

	xmlStr 	= "<ROOT>"
			+		"<USERID></USERID>"
			+		"<CMDTYPE>CM_CHECKUSER</CMDTYPE>"      
			+		"<PARADATA>"
			+               "<USER>"+User+"</USER>"
			+		"</PARADATA>"
			+ "</ROOT>";

	return 	xmlStr;
}

/////////////////////////////////////////////////////////////////
//
function CreateXML_CreateUser(UserName , Password  ,Privilege,  FLName , CoName , Tel , Address , Email , key, Remark)
{
	var xmlStr;

	xmlStr=           "<ROOT>";
	xmlStr=xmlStr+      "<USERID></USERID>";
	xmlStr=xmlStr+	   "<CMDTYPE>CM_REGISTER</CMDTYPE>";
	xmlStr=xmlStr+		"<PARADATA>";
	xmlStr=xmlStr+				"<USERNAME>"+UserName+"</USERNAME>";
	xmlStr=xmlStr+				"<PASSWORD>"+Password+"</PASSWORD>";
	xmlStr=xmlStr+				"<PRIVILEGE>"+Privilege+"</PRIVILEGE>";
	xmlStr=xmlStr+				"<FLNAME>"+FLName+"</FLNAME>";
	xmlStr=xmlStr+				"<CONAME>"+CoName+"</CONAME>";
	xmlStr=xmlStr+				"<TELNO>"+Tel+"</TELNO>";
	xmlStr=xmlStr+				"<ADDRESS>"+Address+"</ADDRESS>";
	xmlStr=xmlStr+				"<EMAIL>"+Email+"</EMAIL>";
	xmlStr=xmlStr+				"<KEY>"+key+"</KEY>";
	xmlStr=xmlStr+				"<REMARK>"+Remark+"</REMARK>";	
	xmlStr=xmlStr+		"</PARADATA>";
	xmlStr=xmlStr+"</ROOT>";

	return xmlStr;
}

/////////////////////////////////////////////////////////////////
//
function CreateXML_EditUserInfo(UserID, SuperUserName, UserName , Password, Privilege, FLName, CoName, Tel, Address, Email, Remark)
{
	var xmlStr;

	xmlStr=       "<ROOT>";
	xmlStr=xmlStr+      "<USERID>"+UserID+"</USERID>";
	xmlStr=xmlStr+	    "<CMDTYPE>CM_MODIFY_USER</CMDTYPE>";
	xmlStr=xmlStr+		"<PARADATA>";	
	xmlStr=xmlStr+				"<SUPERUSER>"+SuperUserName+"</SUPERUSER>"
	xmlStr=xmlStr+				"<USERNAME>"+UserName+"</USERNAME>";
	xmlStr=xmlStr+				"<PASSWORD>"+Password+"</PASSWORD>";
	xmlStr=xmlStr+				"<PRIVILEGE>"+Privilege+"</PRIVILEGE>";
	xmlStr=xmlStr+				"<FLNAME>"+FLName+"</FLNAME>";
	xmlStr=xmlStr+				"<CONAME>"+CoName+"</CONAME>";
	xmlStr=xmlStr+				"<TEL>"+Tel+"</TEL>";
	xmlStr=xmlStr+				"<ADDRESS>"+Address+"</ADDRESS>";
	xmlStr=xmlStr+				"<EMAIL>"+Email+"</EMAIL>";
	xmlStr=xmlStr+				"<REMARK>"+Remark+"</REMARK>";		
	xmlStr=xmlStr+		"</PARADATA>";
	xmlStr=xmlStr+"</ROOT>";

	return xmlStr;
}
/////////////////////////////////////////////////////////////////
//
function CreateXML_AddSubUser( UserID, SuperUserName, UserName , Password, Privilege, FLName, CoName, Tel, Address, Email, Remark)
{
	var xmlStr;

	xmlStr 	= "<ROOT>"
			+      "<USERID>"+UserID+"</USERID>"
			+	    "<CMDTYPE>CM_ADD_SUBUSER</CMDTYPE>"
			+		"<PARADATA>"
			+				"<SUPERUSER>"+SuperUserName+"</SUPERUSER>"
			+				"<USERNAME>"+UserName+"</USERNAME>"
			+				"<PASSWORD>"+Password+"</PASSWORD>"
			+				"<PRIVILEGE>"+Privilege+"</PRIVILEGE>"
			+				"<FLNAME>"+FLName+"</FLNAME>"
			+				"<CONAME>"+CoName+"</CONAME>"
			+				"<TEL>"+Tel+"</TEL>"
			+				"<ADDRESS>"+Address+"</ADDRESS>"
			+				"<EMAIL>"+Email+"</EMAIL>"
			+				"<REMARK>"+Remark+"</REMARK>"		
			+		"</PARADATA>"
			+ "</ROOT>";

	return xmlStr;
}

/////////////////////////////////////////////////////////////////
//
function CreateXML_DelSubUser( UserID, SuperUserName, UserName )
{
	var xmlStr;

	xmlStr 	= "<ROOT>"
			+      "<USERID>"+UserID+"</USERID>"
			+	    "<CMDTYPE>CM_DEL_SUBUSER</CMDTYPE>"
			+		"<PARADATA>"
			+				"<SUPERUSER>"+SuperUserName+"</SUPERUSER>"
			+				"<USERNAME>"+UserName+"</USERNAME>"	
			+		"</PARADATA>"
			+ "</ROOT>";

	return xmlStr;
}

////////////////////////////////////////////////////////////////
//
function CreateXML_DistributeVehicle( UserID, SuperUserName, UserName, CMDType, License )
{
	var xmlStr;

	xmlStr 	= "<ROOT>"
			+      "<USERID>"+UserID+"</USERID>"
			+	    "<CMDTYPE>CM_DISTRIBUTE_VEHICLE</CMDTYPE>"
			+		"<PARADATA>"
			+				"<SUPERUSER>"+SuperUserName+"</SUPERUSER>"
			+				"<USERNAME>"+UserName+"</USERNAME>"	
			+				"<TYPE>"+CMDType+"</TYPE>"    		// 0 is add
																// 1 id delete
			+				"<LICENSE>"+License+"</LICENSE>"	
			+		"</PARADATA>"
			+ "</ROOT>";

	return xmlStr;
}

//////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////
// get node value£¬text or nodevalue
function getNodeValue( node ){
	
	if( node == null ){
		return null;	
	}	
	var		result = node.text;
	if( result == null ){
		result = node.nodeValue;	
	}
	if( result == null ){
		result = node.textContent;	
	}
	return result;
		
}

////////////////////////////////////////////////////////
// Explain protocol data
//
function parseProtocolData( xmlDoc ){	

	var		ack;	
	var		result=null;

	ack = parseACKSection( xmlDoc );	
	if( ack == null ){
		return;
	}	

	switch( ack.cmdType ){
		
		
	case "CM_LOGIN":
		if( ack.cmdResult == 1 ){
			parseLoginData( xmlDoc );					
		}
		else{
			alert( getStr( s_Alert_LoginUserPasswordError ) );
			history.go(-1);
			//window.location.href="index.html";
		}
		break;	
		
	case "CM_QUERY_GPSDATA":		
	case "CM_QUERY_LASTGPSDATA":
		if( ack.cmdResult == 1 ){
			result = parseQueryGPSData( xmlDoc );			
			for( var i = 0; i < result.data.length; i++ ){
				g_oGPSData.addGPSObj( result.data[i] );	
			}
			updateMap( );
		}
		break;
		
	case "CM_QUERY_GPSDATABYCONDITION":
		if( ack.cmdResult == 1 ){	
			result = parseQueryGPSData( xmlDoc );
			if( result.condition == 1 ){
				mapTrackStart( result.data );
				var obj = new PlayHistoryTrackDlg({ 	
					license		:	getLicenseByTEUID( result.data[0].TEUID ), 
					arrData		:	g_oTrackObj.keyptArray,
					arrAllData	:	g_oTrackObj.objArray
				});
				obj.show();
			}
			else{
				result = result.data;
			}
		}
		else{
			Ext.Msg.alert( getStr(s_Tip), getStr(s_Alert_NoBackResults) );
			result = null;
		}
		break;	
        		
	case "CM_QUERY_MILEAGE":
		if( ack.cmdResult == 1 ){		
			result = parseCarMileageData ( xmlDoc );			
		}
		break;

	default:
		if( ack.cmdResult == 1 ){
			result = 1;
		}
		else{
			result = 0;
		}
		break;	
	}		
	return result;
}

////////////////////////////////////////////////////////
// Explain ACK 
function parseACKSection( xmlDoc ){
	
	var		result = null;
	var		parNode;
	
	if( xmlDoc != null ){
		result = new oAckResult();
		
		parNode = xmlDoc.getElementsByTagName("ACK")[0];	
		
		result.cmdType = getNodeValue( parNode.getElementsByTagName("TYPE")[0]  );	
		result.cmdResult = parseInt( getNodeValue( parNode.getElementsByTagName("RESULT")[0] ) );	
	}
	return result;	
}
//////////////////////////////////////////////////////////
// Explain LOGIN data
//
function parseLoginData( xmlDoc ){

	var		parNode;
	var		par2Node;
	var		obj;
	var		len;	
	var		i;
			
	g_oUser.isLogin = true;	
	
	// user info	
	parNode = xmlDoc.getElementsByTagName("USER_INFO")[0];	
	len = parseInt(getNodeValue(parNode.getElementsByTagName("LEN")[0] ) );
	
	for( i = 0; i < len; i++ ){
		
		par2Node = parNode.getElementsByTagName("USER")[i];	
		
		if( i == 0 ){
			g_oUser.UserID = getNodeValue( par2Node.getElementsByTagName("USERID")[0] );
			g_oUser.Username = getNodeValue( par2Node.getElementsByTagName("USERNAME")[0] );
			g_oUser.Password = getNodeValue( par2Node.getElementsByTagName("PASSWORD")[0] );
			g_oUser.Privilege = parseInt( getNodeValue( par2Node.getElementsByTagName("PRIVILEGE")[0] ) );
			g_oUser.FLName = getNodeValue( par2Node.getElementsByTagName("FLNAME")[0] );
			g_oUser.TelNo = getNodeValue( par2Node.getElementsByTagName("TEL")[0] );
			g_oUser.Email = getNodeValue( par2Node.getElementsByTagName("EMAIL")[0] );
			g_oUser.Coname = getNodeValue( par2Node.getElementsByTagName("CONAME")[0] );
			g_oUser.Address = getNodeValue( par2Node.getElementsByTagName("ADDRESS")[0] );
			g_oUser.Remark = getNodeValue( par2Node.getElementsByTagName("REMARK")[0] );
		}
		else{
			g_oUser.SubUser[i-1] = new oUser();
			g_oUser.SubUser[i-1].Username = getNodeValue( par2Node.getElementsByTagName("USERNAME")[0] );
			g_oUser.SubUser[i-1].Password = getNodeValue( par2Node.getElementsByTagName("PASSWORD")[0] );
			g_oUser.SubUser[i-1].Privilege = parseInt( getNodeValue( par2Node.getElementsByTagName("PRIVILEGE")[0] ) );
			g_oUser.SubUser[i-1].FLName = getNodeValue( par2Node.getElementsByTagName("FLNAME")[0] );
			g_oUser.SubUser[i-1].TelNo = getNodeValue( par2Node.getElementsByTagName("TEL")[0] );
			g_oUser.SubUser[i-1].Email = getNodeValue( par2Node.getElementsByTagName("EMAIL")[0] );
			g_oUser.SubUser[i-1].Coname = getNodeValue( par2Node.getElementsByTagName("CONAME")[0] );
			g_oUser.SubUser[i-1].Address = getNodeValue( par2Node.getElementsByTagName("ADDRESS")[0] );
			g_oUser.SubUser[i-1].Remark = getNodeValue( par2Node.getElementsByTagName("REMARK")[0] );
		}
	}

	// car info
	parNode = xmlDoc.getElementsByTagName("VECHILE_INFO")[0];	
	len = parseInt(getNodeValue(parNode.getElementsByTagName("LEN")[0] ) );
	
	for( i = 0; i < len; i++ ){
				
		obj = new oVechile(); 
		par2Node = parNode.getElementsByTagName("VECHILE")[i];				
		
			 
		obj.TEUID=getNodeValue( par2Node.getElementsByTagName("TEUID")[0] );
		obj.TEType=parseInt( getNodeValue( par2Node.getElementsByTagName("TETYPE")[0] ) );
		obj.License=getNodeValue( par2Node.getElementsByTagName("LICENSE")[0] );
		obj.TENo=getNodeValue( par2Node.getElementsByTagName("SIM")[0] );
		obj.OwnerName=getNodeValue( par2Node.getElementsByTagName("OWNER")[0] );
		obj.OwnerTel=getNodeValue( par2Node.getElementsByTagName("OWNERTEL")[0] );
		obj.OwnerAddr=getNodeValue( par2Node.getElementsByTagName("OWNERADDR")[0] );		
		obj.Remark=getNodeValue( par2Node.getElementsByTagName("REMARK")[0] );
		
		g_oVechile.addVechileObj( obj );
	}
	var 	vechile="";
	for( i = 0; i < g_oVechile.getLen(); i++ ){
		
		if( vechile.length > 0 ){
			vechile += ",,";	
		}
		vechile += g_oVechile.getVechile(i).License;
	}
	if( vechile.length > 0 ){
		g_oUser.putVechileToUser( g_oUser.Username, vechile );
	}
	
	// vechile manage
	
	parNode = xmlDoc.getElementsByTagName("MANAGE_INFO")[0];	
	len = parseInt(getNodeValue(parNode.getElementsByTagName("LEN")[0] ) );
	for( i = 0; i<len; i++ ){
		par2Node = parNode.getElementsByTagName("MANAGE")[i];	
		
		g_oUser.putVechileToUser( getNodeValue( par2Node.getElementsByTagName("USER")[0] ),
								  getNodeValue( par2Node.getElementsByTagName("LICENSE")[0] ) );
	}	
}
//////////////////////////////////////////////////////////
// Explain condition gps data,  return oGPSData obj group
//
function parseQueryGPSData( xmlDoc ){
	
	var		parNode;
	var		len;	
	var		result = new historyData();
	
	result.data = new Array();
	
	parNode = xmlDoc.getElementsByTagName("GPS_INFO")[0];	
	len = parseInt( getNodeValue(parNode.getElementsByTagName("LEN")[0] ) );	
	result.condition = parseInt( getNodeValue(parNode.getElementsByTagName("CONDITION")[0] ) );
	
	if(len<1){
		return null;
	}
	else{
		for( var i = 0; i < len; i++ ){
			var		obj;
			var		par2Node;
			var		oNode;			
			
			obj = new oGPSData(); 				
			par2Node = parNode.getElementsByTagName("DATA")[i];
				 
			obj.TEUID=getNodeValue( par2Node.getElementsByTagName("TEUID")[0] );
			obj.VALID=parseInt( getNodeValue( par2Node.getElementsByTagName("VALID")[0] ) );
			obj.TIME =parseInt( getNodeValue( par2Node.getElementsByTagName("TIME")[0] )  );
			obj.LON=parseFloat(getNodeValue( par2Node.getElementsByTagName("LON")[0] )    );
			obj.LAT=parseFloat(getNodeValue( par2Node.getElementsByTagName("LAT")[0] )    );
			obj.SPEED=parseInt(getNodeValue( par2Node.getElementsByTagName("SPEED")[0] )  );	
			obj.DIRECTION=parseInt(getNodeValue( par2Node.getElementsByTagName("DIRECTION")[0] ) );
			obj.MILEAGE=parseInt( getNodeValue( par2Node.getElementsByTagName("MILEAGE")[0] ) );
			
			obj.A_URGENCY= parseInt( getNodeValue( par2Node.getElementsByTagName("A_URGENCY")[0] ) );
			obj.A_CUSTOM1=parseInt( getNodeValue( par2Node.getElementsByTagName("A_CUSTOM1")[0] ) );
			obj.A_CUSTOM2=parseInt( getNodeValue( par2Node.getElementsByTagName("A_CUSTOM2")[0] ) );
			obj.A_CUSTOM3=parseInt( getNodeValue( par2Node.getElementsByTagName("A_CUSTOM3")[0] ) );
			obj.A_CUSTOM4=parseInt( getNodeValue( par2Node.getElementsByTagName("A_CUSTOM4")[0] ) );
			obj.A_POWEROFF=parseInt( getNodeValue( par2Node.getElementsByTagName("A_POWEROFF")[0] ) );
			obj.A_LOWPOWER=parseInt( getNodeValue( par2Node.getElementsByTagName("A_LOWPOWER")[0] ) );
			obj.A_PARKOVERTIME=parseInt( getNodeValue( par2Node.getElementsByTagName("A_PARKOVERTIME")[0] ) );
			obj.A_IN_AREA=parseInt( getNodeValue( par2Node.getElementsByTagName("A_IN_AREA")[0] ) );
			obj.A_OUT_AREA=parseInt( getNodeValue( par2Node.getElementsByTagName("A_OUT_AREA")[0] ) );
			obj.A_IL_ACCON=parseInt( getNodeValue( par2Node.getElementsByTagName("A_IL_ACCON")[0] ) );
			obj.A_IL_DOOROPEN=parseInt( getNodeValue( par2Node.getElementsByTagName("A_IL_DOOROPEN")[0] ) );
			obj.A_OVERSPEED=parseInt( getNodeValue( par2Node.getElementsByTagName("A_OVERSPEED")[0] ) );
			result.data[i] = obj;
		}		
	}
	return result;	
}


//////////////////////////////////////////////////////////////////////////////
// Explain Car Mileage Data

function parseCarMileageData( xmlDoc )
{	
    var par2Node; 
    var TEUID;
    var License;
    var arrMileage = new Array();    
     
	var parNode = xmlDoc.getElementsByTagName("CARMILEAGE_INFO")[0];
	var len = parseInt( getNodeValue(parNode.getElementsByTagName("LEN")[0] ) );
	for( i = 0; i < len; i++ ){
		par2Node = parNode.getElementsByTagName("DATA")[i];
		TEUID = getNodeValue( par2Node.getElementsByTagName("TEUID")[0] );
		License = getLicenseByTEUID( TEUID );
		arrMileage[i] = new Array();
		if( License ){
			arrMileage[i][0] = License;
			arrMileage[i][1]  = parseInt( getNodeValue( par2Node.getElementsByTagName("MILEAGE")[0] ) ) / 1000;
		}	
    }
    return arrMileage;
}
//alert( "protocol.js end" );
