function MonitorTarget(p_strTargetID){this.m_nMaxTailSize=2;this.m_gmIndex=-1;this.m_gmIndex_PolyLine=-1;this.m_gmIndex_PolyLine_His=-1;this.m_dX=0;this.m_dY=0;this.m_dTime=0;this.m_lastPoint=new Object();this.m_strTargetID=p_strTargetID;this.m_strTargetLabel=p_strTargetID;this.m_bDataChange=false;this.m_bVisible=false;this.m_bShowTail=false;this.m_bShowTailPoint=false;this.m_strDisplayName="";this.m_nAlarmState=0;this.m_nPointCount=0;this.m_nTotalPointCount=0;this.m_nLastValidPoint=-1;this.m_oPointSet=new Array();this.m_oPointSetHis=new Array();this.m_nPointCountHis=0;this.m_type="";this.m_name="";this.m_number="";this.m_owner="";this.m_ownerphone="";this.m_keeper="";this.m_keeperphone="";this.m_InfoAdd5="";this.m_InfoAdd7="";this.m_InfoAdd7_S="";this.m_InfoAdd8="";this.m_InfoAdd8_S="";this.m_InfoAdd9="";this.m_InfoAdd9_S="";this.m_nMinUTC=-1;this.m_nMaxUTC=-1;this.m_nFocus=0;this.m_oHistoryData=null;this.m_strtip="";this.m_tp="TP1";};MonitorTarget.prototype.Error=function(p_strText,p_oFailValue){alert(p_strText);return p_oFailValue;};MonitorTarget.prototype.setLabel=function(p_strTargetLabel){this.m_strTargetLabel=this.m_number;};MonitorTarget.prototype.IsAGreat=function(p_oPointA,p_oPointB){if(p_oPointA.time>p_oPointB.time)return 1;else return 0;};MonitorTarget.prototype.ChangeLocForPointArray=function(p_nALoc,p_nBLoc){var nRealIndexA,nRealIndexB;nRealIndexA=this.GetPointRealIndex(p_nALoc);nRealIndexB=this.GetPointRealIndex(p_nBLoc);if(nRealIndexA==-1)return-1;if(nRealIndexB==-1)return-1;var oPoint;oPoint=this.m_oPointSet[nRealIndexA];this.m_oPointSet[nRealIndexA]=this.m_oPointSet[nRealIndexB];this.m_oPointSet[nRealIndexB]=oPoint;};MonitorTarget.prototype.SortForPointArray=function(){if(this.m_nPointCount==0)return;var oPointProv,oPointCur;for(var k=this.m_nPointCount-1;k>=1;k--){oPointProv=this.GetPoint(k-1);oPointCur=this.GetPoint(k);if(this.IsAGreat(oPointProv,oPointCur)==1)this.ChangeLocForPointArray(k,k-1);else break;}};MonitorTarget.prototype.ManagerForPointArray=function(){if(this.m_oPointSet.length>10){for(var k=0;k<this.m_oPointSet.length-10;k++){this.m_oPointSet.shift();this.m_nLastValidPoint--;this.m_nPointCount--;}}};MonitorTarget.prototype.IsValidPoint=function(p_time,p_dX,p_dY,p_speed,p_heading,p_status){if(p_time<0)return 0;if(this.IsFull()){var oFirstPoint=this.GetPoint(0);if(p_time<=oFirstPoint.time)return 0;}return 1;};MonitorTarget.prototype.AddPoint=function(p_time,p_dX,p_dY,p_speed,p_heading,p_alarm,p_status,p_info,p_ddX,p_ddY){if(this.IsValidPoint(p_time,p_dX,p_dY,p_speed,p_heading,p_status)!=1)return;var oPoint=new Object();oPoint.time=p_time;oPoint.dX=p_dX/1000000;oPoint.dY=p_dY/1000000;oPoint.speed=p_speed;oPoint.heading=p_heading;oPoint.alarm=p_alarm;oPoint.status=p_status;oPoint.info=p_info;if(g_latlon_correct){oPoint.ddX=p_ddX/1000000;oPoint.ddY=p_ddY/1000000;}else{oPoint.ddX=0;oPoint.ddY=0;}oPoint.dX=oPoint.dX+oPoint.ddX;oPoint.dY=oPoint.dY+oPoint.ddY;if(this.m_nPointCount!=this.m_nMaxTailSize)this.m_nPointCount=this.m_nPointCount+1;this.m_nLastValidPoint++;if(this.m_nLastValidPoint==this.m_nMaxTailSize)this.m_nLastValidPoint=0;this.m_dX=p_dX/1000000;this.m_dY=p_dY/1000000;this.m_dTime=p_time;this.m_oPointSet[this.m_nLastValidPoint]=oPoint;this.SortForPointArray();oPoint=this.m_oPointSet[this.m_nLastValidPoint];this.m_dX=oPoint.dX;this.m_dY=oPoint.dY;this.m_dTime=oPoint.time;this.m_bDataChange=true;this.m_lastPoint.time=oPoint.time;this.m_lastPoint.dX=oPoint.dX;this.m_lastPoint.dY=oPoint.dY;this.m_lastPoint.speed=oPoint.speed;this.m_lastPoint.heading=oPoint.heading;this.m_lastPoint.alarm=oPoint.alarm;this.m_lastPoint.status=oPoint.status;this.m_lastPoint.info=oPoint.info;this.m_lastPoint.info=oPoint.info;this.m_lastPoint.ddX=oPoint.ddX;this.m_lastPoint.ddY=oPoint.ddY;};MonitorTarget.prototype.AddPoint2=function(p_time,p_dX,p_dY,p_speed,p_heading,p_status,p_alarm){if(this.IsValidPoint(p_time,p_dX,p_dY,p_speed,p_heading,p_status)!=1)return;var oPoint=new Object();oPoint.time=p_time;oPoint.dX=p_dX/1000000;oPoint.dY=p_dY/1000000;oPoint.speed=p_speed;oPoint.heading=p_heading;oPoint.status=p_status;oPoint.alarm=p_alarm;if(this.m_nPointCount!=this.m_nMaxTailSize)this.m_nPointCount=this.m_nPointCount+1;this.m_nLastValidPoint++;if(this.m_nLastValidPoint==this.m_nMaxTailSize)this.m_nLastValidPoint=0;this.m_dX=p_dX/1000000;this.m_dY=p_dY/1000000;this.m_dTime=p_time;this.m_oPointSet[this.m_nLastValidPoint]=oPoint;this.SortForPointArray();oPoint=this.m_oPointSet[this.m_nLastValidPoint];this.m_dX=oPoint.dX;this.m_dY=oPoint.dY;this.m_dTime=oPoint.time;this.m_bDataChange=true;};MonitorTarget.prototype.AddPointHis=function(p_time,p_dX,p_dY,p_speed,p_heading,p_status,p_ddX,p_ddY){if(this.IsValidPoint(p_time,p_dX,p_dY,p_speed,p_heading,p_status)!=1)return;var oPoint=new Object();oPoint.time=p_time;oPoint.dX=p_dX/1000000;oPoint.dY=p_dY/1000000;oPoint.speed=p_speed;oPoint.heading=p_heading;oPoint.status=p_status;if(g_latlon_correct){oPoint.ddX=p_ddX/1000000;oPoint.ddY=p_ddY/1000000;}else{oPoint.ddX=0;oPoint.ddY=0;}oPoint.dX=oPoint.dX+oPoint.ddX;oPoint.dY=oPoint.dY+oPoint.ddY;this.m_oPointSetHis[this.m_nPointCountHis]=oPoint;this.m_nPointCountHis++;this.m_bDataChange=true;};MonitorTarget.prototype.Dump=function(){var oPoint;for(var i=0;i<=this.m_nPointCount-1;i++){oPoint=this.GetPoint(i);document.write("item["+i+"]:"+oPoint.time+","+oPoint.dX+","+oPoint.dY+","+oPoint.speed+","+oPoint.status+","+oPoint.alarm+"<br>");}};MonitorTarget.prototype.StartPointHis=function(){this.m_nPointCountHis=0;this.m_gmIndex_PolyLine_His=-1;};MonitorTarget.prototype.EndPointHis=function(){this.m_gmIndex_PolyLine_His=AddPolyline(this.m_oPointSetHis,this.m_nPointCountHis);};MonitorTarget.prototype.EndHis=function(){if(this.m_gmIndex_PolyLine_His!=-1)deletePolyline(this.m_gmIndex_PolyLine_His);if(this.m_nPointCountHis==0)return;for(var k=this.m_nPointCountHis-1;k>=0;k--){delete this.m_oPointSetHis[k];}this.m_nPointCountHis=0;this.m_gmIndex_PolyLine_His=-1;this.m_bDataChange=true;};MonitorTarget.prototype.IsFull=function(){if(this.m_nPointCount==this.m_nMaxTailSize)return 1;return 0;};MonitorTarget.prototype.GetPointCount=function(){return this.m_nPointCount;};MonitorTarget.prototype.RemoveAll=function(){if(this.m_nPointCount==0)return;for(var k=this.m_nPointCount-1;k>=0;k--){delete this.m_oPointSet[k];}this.m_nPointCount=0;this.m_bDataChange=true;};MonitorTarget.prototype.IsAlarmState=function(){if(this.m_nAlarmState!=0)return true;return false;};MonitorTarget.prototype.GetLastPoint=function(){var nCurLoc=this.GetPointCount()-1;if(nCurLoc==-1)return null;return this.GetPoint(nCurLoc);};MonitorTarget.prototype.DrawTarget=function(){try{if(Number(this.m_lastPoint.alarm)!=0){this.m_bVisible=true;var myDate=new Date();var utc=Date2UTC(myDate.getFullYear(),myDate.getMonth(),myDate.getDate(),myDate.getHours(),myDate.getMinutes(),myDate.getSeconds());if(Math.abs(this.m_lastPoint.time-utc)<600){alert(this.m_number+" "+getStr(s_Caption_IsAlarming)+"("+Alarm4DescString(this.m_lastPoint.alarm)+")!");}}if(this.m_bVisible==false)return;if(this.m_InfoAdd5=="N"){alert(getStr(s_Caption_Remark)+":"+this.m_number+" "+getStr(s_Caption_NoAuth));return;}var otime=this.m_lastPoint.time;var dt=new Date(otime*1000);var dd=dt.getYear()+"-"+(dt.getMonth()+1)+"-"+dt.getDate()+" "+dt.getHours()+":"+dt.getMinutes()+":"+dt.getSeconds();var strtip=gettargettip(this);if(this.m_gmIndex==-1){this.m_gmIndex=createMarker(this.m_dY,this.m_dX,this.m_lastPoint.heading,this.m_nFocus,this.m_lastPoint.alarm,this.m_strTargetLabel,strtip,this.m_strTargetID);}else{setMarker(this.m_gmIndex,this.m_dY,this.m_dX,this.m_lastPoint.heading,this.m_nFocus,this.m_lastPoint.alarm,this.m_strTargetLabel,strtip,this.m_bShowTail,this.m_strTargetID);}if(this.m_nFocus==1){setcenter(this.m_dY,this.m_dX);}}catch(e){}};MonitorTarget.prototype.GetPoint=function(p_nIndex){if(p_nIndex<0)return null;if(p_nIndex>this.m_nPointCount-1)return null;if(this.m_nLastValidPoint==-1)return null;var nIndex=p_nIndex+this.m_nLastValidPoint-this.m_nPointCount+1;if(nIndex>=this.m_nMaxTailSize)nIndex-=this.m_nMaxTailSize;else if(nIndex<0)nIndex+=this.m_nMaxTailSize;return this.m_oPointSet[nIndex];};MonitorTarget.prototype.ReadData=function(p_oData,p_nFrom,p_nTo){var oLines=p_oData.split("\r\n");var oAttrib;var strLine;var nUTC;for(i=0;i<oLines.length;i++){strLine=oLines[i];if(strLine.length>0){oAttrib=strLine.split("|");nUTC=parseInt(oAttrib[2]);if((p_nFrom==-1)&&(p_nTo==-1)){this.AddPoint2(parseInt(oAttrib[0]),nUTC,parseInt(oAttrib[3]),parseFloat(oAttrib[4]),parseFloat(oAttrib[5]),parseInt(oAttrib[6],16),parseInt(oAttrib[7],16));}else if((p_nFrom==-1)&&(nUTC<=p_nTo)){this.AddPoint2(parseInt(oAttrib[0]),nUTC,parseInt(oAttrib[3]),parseFloat(oAttrib[4]),parseFloat(oAttrib[5]),parseInt(oAttrib[6],16),parseInt(oAttrib[7],16));}else if((p_nTo==-1)&&(nUTC>=p_nFrom)){this.AddPoint2(parseInt(oAttrib[0]),nUTC,parseInt(oAttrib[3]),parseFloat(oAttrib[4]),parseFloat(oAttrib[5]),parseInt(oAttrib[6],16),parseInt(oAttrib[7],16));}else if(nUTC>=p_nFrom||nUTC<=p_nTo){this.AddPoint2(parseInt(oAttrib[0]),nUTC,parseInt(oAttrib[3]),parseFloat(oAttrib[4]),parseFloat(oAttrib[5]),parseInt(oAttrib[6],16),parseInt(oAttrib[7],16));}}}};MonitorTarget.prototype.GetPointRealIndex=function(p_nIndex){if(p_nIndex<0)return null;if(p_nIndex>this.m_nPointCount-1)return-1;if(this.m_nLastValidPoint==-1)return-1;var nIndex=p_nIndex+this.m_nLastValidPoint-this.m_nPointCount+1;if(nIndex>=this.m_nMaxTailSize)nIndex-=this.m_nMaxTailSize;else if(nIndex<0)nIndex+=this.m_nMaxTailSize;return nIndex;};MonitorTarget.prototype.DrawTargetTailPoints=function(){};MonitorTarget.prototype.DrawTargetTailPoints=function(){};MonitorTarget.prototype.ReceiveData=function(p_strTargetID,p_oXMLData){return null;};MonitorTarget.prototype.DrawTargetTailLine=function(){return;var strName;var oPoint;var oPointSet="";if(this.m_gmIndex_PolyLine>-1)deletePolyline(this.m_gmIndex_PolyLine);for(var k=this.m_nPointCount-1;k>=0;k--){if(k>this.m_nPointCount-100){var p=this.m_oPointSet[k];}}if(this.m_bShowTail&&this.m_nPointCount>1){this.m_gmIndex_PolyLine=AddPolyline(this.m_oPointSet,this.m_nPointCount);}};MonitorTarget.prototype.HideTargetTailLine=function(){if(this.m_gmIndex_PolyLine>-1){deletePolyline(this.m_gmIndex_PolyLine);}this.m_bShowTail=false;};MonitorTarget.prototype.removePointHeader=function(){if(this.m_gmIndex!=-1){deleteMarker(this.m_gmIndex);deleteLable(this.m_gmIndex);this.m_gmIndex=-1;this.m_dX=0;this.m_dY=0;}if(this.m_gmIndex_PolyLine!=-1)deletePolyline(this.m_gmIndex_PolyLine);this.m_gmIndex_PolyLine=-1;};MonitorTarget.prototype.DrawHis=function(){if(this.m_oHistoryData==null)return;g_locs=this.m_oHistoryData;initplot();if(m_nStartHistory==0){plotPoint();}};MonitorTarget.prototype.Draw=function(p_bShowTail,p_bShowTailPoint){if(this.m_bDataChange==true){var nIDStart=this.m_nTotalPointCount-this.m_nPointCount;this.DrawTarget();this.DrawTargetTailLine();this.m_bDataChange=false;}};function Targets(){this.m_aMonitorTarget=new Array();this.m_pGPSManager="fake manager";this.m_bShowTail=false;this.m_bShowTailPoint=false;this.m_bDataChange=false;};Targets.prototype.ReceiveData=function(p_strTargetID,p_oXMLData){var oTarget=get_aMonitorTarget(p_strTargetID);if(oTarget==null)return;oTarget.ReceiveData(p_oXMLData);if(oTarget.m_bDataChange==false)return;this.m_bDataChange=true;};Targets.prototype.put_DataChanged=function(p_bChanged){this.m_bDataChange=p_bChanged;};Targets.prototype.get_DataChanged=function(){return this.m_bDataChange;};Targets.prototype.Error=function(p_strText,p_oFailValue){alert(p_strText);return p_oFailValue;};Targets.prototype.ASSERT=function(p_oValue){if(p_oValue)alert("FAIL VALUE:"+p_oValue);};Targets.prototype.get_aMonitorTarget=function(p_bstrTargetID){var oTarget;oTarget=this.m_aMonitorTarget[p_bstrTargetID];if(typeof(oTarget)=="undefined")return null;return oTarget;};Targets.prototype.AddMonitorTarget=function(p_bstrTargetID){try{if(this.m_pGPSManager==null)return Error("m_pGPSManager == null",null);if(p_bstrTargetID.length==0)return Error("无效的监控目标ID",null);var oTarget;oTarget=this.get_aMonitorTarget(p_bstrTargetID);if(oTarget!=null)return oTarget;oTarget=new MonitorTarget(p_bstrTargetID);this.m_aMonitorTarget[p_bstrTargetID]=oTarget;this.m_bDataChange=true;return oTarget;}catch(E){return Error(E,null);}};Targets.prototype.RemoveMonitorTarget=function(p_bstrTargetID){try{if(this.m_pGPSManager==null)return Error("m_pGPSManager == null",null);if(p_bstrTargetID.length==0)return Error("无效的监控目标ID",null);var oTarget;oTarget=this.get_aMonitorTarget(p_bstrTargetID);if(oTarget.m_gmIndex!=-1)deleteMarker(oTarget.m_gmIndex);if(oTarget==null)return Error("无该监控目标ID",null);delete this.m_aMonitorTarget[p_bstrTargetID];}catch(E){return Error(E,null);}};Targets.prototype.DeleteAll=function(){var oTarget;var strKey;var strTargets="";for(strKey in this.m_aMonitorTarget){oTarget=this.get_aMonitorTarget(strKey);if(oTarget!=null){this.RemoveMonitorTarget(oTarget.m_strTargetID);}}};Targets.prototype.ShowMonitorTarget=function(p_bstrTargetID,p_bVisible){try{if(this.m_pGPSManager==null)return Error("m_pGPSManager == null",null);if(p_bstrTargetID.length==0)return Error("无效的监控目标ID",null);var oTarget;oTarget=this.get_aMonitorTarget(p_bstrTargetID);if(oTarget==null)return Error("无该监控目标ID",null);if(p_bVisible==oTarget.m_bVisible)return;oTarget.m_bVisible=p_bVisible;if(p_bVisible==false){}else{if(oTarget.IsAlarmState()==true)oTarget.Draw(this.m_bShowTail,this.m_bShowTailPoint);else oTarget.Draw(this.m_bShowTail,this.m_bShowTailPoint);}}catch(E){return Error(E,null);}};Targets.prototype.GetAllTargetID=function(){var oTarget;var strKey;var strTargets="";for(strKey in this.m_aMonitorTarget){oTarget=this.get_aMonitorTarget(strKey);if(strTargets.length==0)strTargets=oTarget.m_strTargetID;else strTargets=strTargets+","+oTarget.m_strTargetID;}return strTargets;};Targets.prototype.SetAllTargetNoFocus=function(){var oTarget;var strKey;var strTargets="";for(strKey in this.m_aMonitorTarget){oTarget=this.get_aMonitorTarget(strKey);if(oTarget.m_nFocus==1){oTarget.m_nFocus=0;oTarget.DrawTarget();}oTarget.m_nFocus=0;}};Targets.prototype.SetAllTargetHideTrace=function(){var oTarget;var strKey;var strTargets="";for(strKey in this.m_aMonitorTarget){oTarget=this.get_aMonitorTarget(strKey);oTarget.m_bShowTail=false;if(oTarget.m_strTargetID!=null)oTarget.HideTargetTailLine();}};Targets.prototype.Draw=function(){if(this.m_bDataChange==false)return;var oTarget;var strKey;for(strKey in this.m_aMonitorTarget){oTarget=this.get_aMonitorTarget(strKey);if(oTarget!=null){try{if(oTarget.m_bVisible){if(oTarget.IsAlarmState()==true)oTarget.Draw(this.m_bShowTail,this.m_bShowTailPoint);else oTarget.Draw(this.m_bShowTail,this.m_bShowTailPoint);}}catch(E){alert(E);}}}};Targets.prototype.ReDraw=function(){var oTarget;var strKey;for(strKey in this.m_aMonitorTarget){oTarget=this.get_aMonitorTarget(strKey);oTarget.m_gmIndex=-1;oTarget.m_bDataChange=true;}this.Draw();};Targets.prototype.ResetTargetsHis=function(){var oTarget;var strKey;for(strKey in this.m_aMonitorTarget){oTarget=this.get_aMonitorTarget(strKey);oTarget.m_oHistoryData=null;}};Targets.prototype.Restarthis=function(){var oTarget;var strKey;var strTargets="";for(strKey in this.m_aMonitorTarget){oTarget=this.get_aMonitorTarget(strKey);if(oTarget.m_strTargetID!=null)oTarget.DrawHis();}};
