var	gUrl = "GPS.dll";

var gXmlDoc = null;
var	isIE = !!document.all;

if( gXmlDoc == null ){
	gXmlDoc = initXmlDoc();	
}

function initXmlDoc(){
	var	xmlDoc = null;
	if ( isIE ){
		var aVersions = ["MSXML2.DOMDocument.5.0",
						 "MSXML2.DOMDocument.4.0",
						 "MSXML2.DOMDocument.3.0",
						 "MSXML2.DOMDocument",
						 "Microsoft.XmlDom"];
		for(var i=0; i < aVersions.length;i++){
			try{
				xmlDoc = new ActiveXObject(aVersions[i]);
				if( xmlDoc != null ){
					break;	
				}
			}
			catch(e){
				//alert("MSXML is not installed"+i);
			}
		}
	}
	else{
	    xmlDoc=new DOMParser();
	}
	if( xmlDoc == null ) {
		//alert("Create XmlDoc Object Error");	
	}

	return xmlDoc;
}
////////////////////////////////////////
//
function parseXML( str ){
	if( isIE ){
		gXmlDoc.loadXML(str);
		return gXmlDoc;			
	}
	else{
		var result = gXmlDoc.parseFromString( str, 'text/xml' );
		return result;
	}	
}
////////////////////////////////////////
//
function RecvAjaxData( strXMLData ){
	//alert( strXMLData );
	//openNewWeb( strXMLData );
	if( showAjaxStatus != null ){
		showAjaxStatus();
	}
	if( wait_end != null ){
		wait_end();		
	}
	parseProtocolData( parseXML(strXMLData) );
}

////////////////////////////////////////
//Ajax send Asynchronous data
function AsySendXMLData( strXML, sucessfunc, failedfunc ){
	//alert( strXML );
	if( showAjaxStatus != null ){
		showAjaxStatus('loading...');
	}	
	if( needShowWaitDlg( strXML ) ){
		waiting();
	}
	Ext.Ajax.request({
		method 	:	"POST",
		timeout :	60 * 1000,
		url		: 	gUrl,
		headers	: 	{
		   'Content-Type'	:	'text/xml',
		   'charset'		:	'UTF-8'
		},
		params	: 	{
			MfcISAPICommand	:	'Getdata',
			data			:	strXML
		},
		success	: 	function(response) {
			var RecvText = response.responseText;
			if( sucessfunc != null ){
				sucessfunc( RecvText );
			}
			else{
				RecvAjaxData( RecvText );			
			}
		},
		failure	:	function(){
			if( showAjaxStatus != null ){
				showAjaxStatus('Timeout...');
			}
			if( wait_end != null ){
				wait_end();		
			}	
			if( failedfunc != null ){
				failedfunc( );
			}			
		}
	});	
}


//////////////////////////////////////
//Ajax send synchronization data
function SySendXMLData( strXML, RecvFunc ){	
	//alert( 'SySendXMLData' );
	
	//if( showAjaxStatus != null ){
	//	showAjaxStatus('loading...');
	//}
	var conn = Ext.lib.Ajax.getConnectionObject().conn; 
	conn.open("POST", gUrl, false); 
	conn.setRequestHeader("Content-Type", "text/xml;charset=uft-8");	
	conn.send("MfcISAPICommand=Getdata&data="+strXML); 
	var RecvText = conn.responseText;
	if( RecvFunc ){
		RecvFunc( RecvText );
		return;
	}
	else{
		RecvAjaxData( RecvText );	
	}
}

//Send Longin cmd
function cmdLogin( userName, userPsd ){	
	var xmlStr = CreateXMLstr_Login( userName, userPsd ); 
	AsySendXMLData( xmlStr );
}

//Send update gps data cmd
function cmdUpdateGPSAll( ){
	
	var			TEUID="";
	var			obj;
	
	for( var i = 0; i < g_oVechile.getLen(); i++ ){
		
		obj = g_oVechile.getVechile( i );
		if( obj.bDisplay ){			
			if( TEUID.length > 0 ){
				TEUID = TEUID+s_p;
			}
			TEUID = TEUID+obj.TEUID;	
		}		
	}	
	if( TEUID.length > 0 ){
		return cmdUpdateGPSTEUID( TEUID );
	}
}

//Send update gps data cmd
function cmdUpdateGPSTEUID( TEUID ){
	if( TEUID ){
		//alert( 'cmdUpdateGPSTEUID'+'|'+g_oUser.UserID+'|'+TEUID );
		var xmlStr = CreateXMLstr_QueryGPSData( g_oUser.UserID, TEUID );
		AsySendXMLData( xmlStr );	
		return 1;	
	}
	else{
		return 0;
	}
}
///////////////////////////////////////////////////////////////////////
// Send position cmd to TE
function cmdTrackOnce( TEUID ){
	if( TEUID.length > 0 ){
		var xmlStr = CreateXMLstr_CtrlTENormalCmd( getUserUID(), TEUID, getTETypeByTEUID( TEUID ), 1 );
		state =  getStr( s_Send ) + getStr( s_CarPosition ) + getStr( s_CMD );   
		addFeedbackInfo( getLicenseByTEUID( TEUID ), GetLocalTime(), state, null, null, null, null );
		AsySendXMLData( xmlStr );		
		return 1;		
	}	
	else{
		return 0;
	}
}

///////////////////////////////////////////////////////////////////////
// 
function cmdTrackLast( TEUID ){
	if( TEUID.length > 0 ){
		var xmlStr = CreateXMLstr_LastQueryGPSData( getUserUID(), TEUID );
		state =  getStr( s_Send ) + getStr( s_Search )+ getStr( s_LastPosition ) + getStr( s_CMD );      
		addFeedbackInfo( getLicenseByTEUID( TEUID ), GetLocalTime(), state, null, null, null, null );
		AsySendXMLData( xmlStr );		
		return 1;		
	}	
	else{
		return 0;
	}
}

///////////////////////////////////////////////////////////////////////
//off oil
function cmdDisableOil( TEUID ){
	if( TEUID.length > 0 ){
		var strXML = CreateXMLstr_CtrlTENormalCmd( getUserUID(),TEUID, getTETypeByTEUID( TEUID ),2 );
		state =  getStr( s_Send ) + getStr( s_DisableOil ) + getStr( s_CMD );      
		addFeedbackInfo( getLicenseByTEUID( TEUID ), GetLocalTime(), state, null, null, null, null );
		AsySendXMLData( strXML );	
		return 1;
	}
	else{
		return 0;
	}
}

///////////////////////////////////////////////////////////////////////
//on oil
//
function cmdEnableOil( TEUID ){
	if( TEUID.length > 0 ){
		var strXML = CreateXMLstr_CtrlTENormalCmd( getUserUID(),TEUID,getTETypeByTEUID( TEUID ),3 );
		state =  getStr( s_Send ) + getStr( s_EnableOil ) + getStr(  s_CMD );        
		addFeedbackInfo( getLicenseByTEUID( TEUID ), GetLocalTime(), state, null, null, null, null );
		AsySendXMLData( strXML );
		return 1;
	}
	else{
		return 0;
	}
}

///////////////////////////////////////////////////
//play history marker
//
function GetHistoryTrack( TEUID, StartTime, EndTime ){
	if( TEUID.length > 0 ){
		var strXML = CreateXMLstr_QueryGPSHistoryData(getUserUID(), TEUID, StartTime,EndTime);
		state =  getStr( s_Send ) + getStr( s_TrackRePlay ) + getStr( s_CMD );      
		addFeedbackInfo( getLicenseByTEUID( TEUID ), GetLocalTime(), state, null, null, null, null );
		AsySendXMLData( strXML );
		return 1;
	}
	else{
		return 0;
	}
}


//////////////////////////////////////////////////////////////////////
//set TE back mode
//
function cmdBackMode(TEUID,CALLBACKMODE,CALLBACKSPACE)           {
	if( TEUID.length > 0 ){
		var strXML = CreateXML_CtrlTEBackModeCmd(getUserUID(),TEUID,getTETypeByTEUID( TEUID ),CALLBACKMODE,CALLBACKSPACE);
		state =  getStr( s_Send ) + getStr( s_SetBackMode ) + getStr( s_CMD );       
		addFeedbackInfo( getLicenseByTEUID( TEUID ), GetLocalTime(), state, null, null, null, null );
		AsySendXMLData( strXML );
		return 1;
	}
	else{
		return 0;
	}
}

////////////////////////////////////////////////////////////////////////
//Set TE restart
//
function cmdTERestart(TEUID){
	if( TEUID.length > 0 ){
		var strXML = CreateXMLstr_CtrlTENormalCmd( getUserUID(),TEUID,getTETypeByTEUID( TEUID ),6 );
		state =  getStr( s_Send ) + getStr( s_TERestart ) + getStr( s_CMD );        
		addFeedbackInfo( getLicenseByTEUID( TEUID ), GetLocalTime(), state, null, null, null, null );
		AsySendXMLData( strXML );
		return 1;
	}
	else{
		return 0;
	}
}

///////////////////////////////////////////////////////////////////////
//Set TE reFactory
//
function cmdTEReFactory(TEUID){
	if( TEUID.length > 0 ){
		var strXML = CreateXMLstr_CtrlTENormalCmd( getUserUID(),TEUID,getTETypeByTEUID( TEUID ),7 );
		state =  getStr( s_Send ) + getStr( s_TEReFactory ) + getStr( s_CMD );         
		addFeedbackInfo( getLicenseByTEUID( TEUID ), GetLocalTime(), state, null, null, null, null );
		AsySendXMLData( strXML );
		return 1;
	}
	else{
		return 0;
	}
}

///////////////////////////////////////////////////////////////////////
//Set car listen
//
function cmdCarMonitor(TEUID,TELNO){
	if( TEUID.length > 0 ){
		var strXML = CreateXML_CtrlCarMonitorCmd(getUserUID(),TEUID,getTETypeByTEUID( TEUID ),TELNO);
		state =  getStr( s_Send ) + getStr( s_CarMonitor ) + getStr( s_CMD );         
		addFeedbackInfo( getLicenseByTEUID( TEUID ), GetLocalTime(), state, null, null, null, null );
		AsySendXMLData( strXML );
		return 1;
	}
	else{
		return 0;
	}
}

///////////////////////////////////////////////////////////////////////
// Edit TE ip and port
//
function cmdSetIPPort(TEUID,IP,PORT){
	if( TEUID.length > 0 ){
		var strXML = CreateXML_CtrlSetIPPortCmd(getUserUID(),TEUID,getTETypeByTEUID( TEUID ),IP,PORT);
		state =  getStr( s_Send ) + getStr( s_SetIpPort ) + getStr( s_CMD );  
		addFeedbackInfo( getLicenseByTEUID( TEUID ), GetLocalTime(), state, null, null, null, null );
		AsySendXMLData( strXML );
		return 1;
	}
	else{
		return 0;
	}
}

///////////////////////////////////////////////////////////////////////
// Set TE over speed
//
function cmdOverSpeedAlarm(TEUID,TIME){
	if( TEUID.length > 0 ){
		var strXML = CreateXML_CtrlOverSpeedAlarmCmd(getUserUID(),TEUID,getTETypeByTEUID( TEUID ),TIME);
		state =  getStr( s_Send )  + getStr( s_OverSpeedAlarm ) + getStr( s_Set )+ getStr( s_CMD );     
		addFeedbackInfo( getLicenseByTEUID( TEUID ), GetLocalTime(), state, null, null, null, null );
		AsySendXMLData( strXML );
		return 1;
	}
	else{
		return 0;
	}
}

//////////////////////////////////////////////////////////////////////
// TE park car alarm
//
function cmdParkCarAlarm(TEUID,TIME){
	if( TEUID.length > 0 ){
		var strXML = CreateXML_CtrlParkCarAlarmCmd(getUserUID(),TEUID,getTETypeByTEUID( TEUID ),TIME)
		state =  getStr( s_Send ) + getStr( s_ParkCarTimeOutAlarm ) + getStr( s_Set ) + getStr( s_CMD );     
		addFeedbackInfo( getLicenseByTEUID( TEUID ), GetLocalTime(), state, null, null, null, null );
		AsySendXMLData( strXML );
		return 1;
	}
	else{
		return 0;
	}
}

//////////////////////////////////////////////////////////////////////
// Stop Alarm
function cmdStopAlarm( TEUID ){	
	if( getUserUID().length > 0 ){
		var strXML = CreateXMLstr_CtrlTENormalCmd( getUserUID(),TEUID, getTETypeByTEUID( TEUID ), 18 );
		
		AsySendXMLData( strXML );			
		return 1;
	}
	else{
		return 0;
	}
}
//////////////////////////////////////////////////////////////////////
//logout
function cmdLogout(){
	if( getUserUID().length > 0 ){
		var strXML = CreateXMLstr_Logout(getUserUID());
		AsySendXMLData( strXML );
		return 1;
	}
	else{
		return 0;
	}
}


//alert( "ajax.js end" );

