﻿//var remoteUrl = "http://lt.sdgpsone.com/service/";
var point_state;
var map;
var opts;
var marker;
var x0, y0, x, y;
var mtitle;

//停留时间
var stopover_time = 10;
var responsetext = "";
var elements;
var inited = false;
var intervalID = "-1";

var reTryCount = 0;

var mapType = "";
var uID = "";
var page = "";
function setUserID(userID){
	uID = userID;
}

//实例化的页面
function setPage(p){
	page = p;
}

//pw.print(jingDU + "," + weiDu + "," + shiJian + "," + vo.getSUDU()+","+userName+","
//+StringUtil.getStrByDate(new Date()) + "," + vo.getHANGXIANG()+ sys_time);
function setUpdate(str){
	if((typeof str) == "undefined")return;
	elements = str.split(",");
	selectIconAndTitle();
	if(needReinit)
		initMarker();
	
	if (!inited)
		initMap();
	else
		darwLine();
}
function getpoint() {
	$.ajax({
		type : "GET",
		dataType : "jsonp",
	    jsonp: 'callback',
		url : remoteUrl+"GetModifiedLocationInfo?callback=setUpdate",
		data :"userID="+uID
	});
}
//获取方向
function direction(speed,iconType,hangxiang){//方向标识
	var direction = "west";
	if(iconType.charAt(0)=="2"){
		var speed = Number(speed);
		var hangxiang = Number(hangxiang);
		if(speed==-1){
			direction = "west";
		}else{
			if(hangxiang<=45||hangxiang>315){//北向
				direction = "north";
			}else if(hangxiang>45&&hangxiang<=135){//东向
				direction = "east";
			}else if(hangxiang>135&&hangxiang<=225){//南向
				direction = "south";
			}else if(hangxiang>225&&hangxiang<=315){//西向
				direction = "west";
			}
		}
	}
	return direction;
}

function getIconPic(iconType,status,hangxiang){
	var icon = new GIcon();
	if(iconType.charAt(0)=="2"){
		icon.image = "images/comm/"+status+"_"+hangxiang+"_"+iconType+".png";
	}else{
		icon.image = "images/comm/"+status+"_"+iconType+".png";
	}
	icon.iconAnchor = new GPoint(12, 24);
	icon.infoWindowAnchor = new GPoint(10, 1);
	return icon;
}



function selectIconAndTitle() {
	//得到停留时间（单位秒）
/*	
	stopover_time = (new Date().getTime() - new Date(
			(elements[2].split("."))[0].replace(/-/g, "/")).getTime()) / 1000;
*/	
	//2---datatiem,8---heart_time,7-----sys_time,5---servertime
	stopover_time = getTimeDiff(elements[5], elements[2]);
	//stopover_time = getTimeDiff(elements[7], elements[2]);
	
//	alert(stopover_time);
	var heart_time = getTimeDiff(elements[5], elements[8]);
	var dingwei_time = getTimeDiff(elements[5], elements[7]);	
    if(dingwei_time < heart_time)
    	heart_time = dingwei_time;	
//    alert(heart_time);
	//alert(heart_time);
	point_state = getState(heart_time, elements[3], stopover_time,elements[12]);
	var _dir = direction(elements[3],elements[12],elements[6])
	 icon=getIconPic(elements[12],point_state,_dir);
	 //alert(elements[12]+","+point_state+","+_dir[0]);
    /*if(point_state == "green"){                     
        icon=getIconPic(elements[10],"green",elements[6]);
        return;
       }
    if(point_state == "white"){
       icon=white_icon;
        return;
	}
	if (point_state == "gray"){ 
      icon=gray_icon;
      return;
   }
    
      if(point_state == "yellow"){
         // 黄灯，超速
         icon=yellow_icon;
        return;
      }   

       // 亮红,严重超速
       icon=red_icon;                    
	*/
              
	
	/*
	//用不同颜色的marker区分不同状态，
	if (stopover_time >= 300) {
		//30秒分钟变灰，设备静止
		icon = gray_icon;
		point_state = "gray";
		return;
	}
	if (elements[3] >= 120) {
		//红,严重超速
		icon = red_icon;
		point_state = "red";
		//             MM_controlSound('play', 'document.MM_120chaosu');
		return;
	}
	if (elements[3] >= 80) {
		//黄，超速
		icon = yellow_icon;
		point_state = "yellow";
		return;
	}

	//30分内有数据正常，行使中
	icon = green_icon;
	point_state = "green";
	*/
	return;
}

var initMTitle = lg.target+"：。。。。。。。。<br>";
initMTitle += lg.status+"：。。。。。<br>";
initMTitle += lg.movement+"：。。。。。<br>";
initMTitle += lg.utime+"：。。。。。。。。";
//建立标志函数
function create_title() {
	mtitle = "" + elements[4] + " <br>";
	mtitle += lg.movement+"：" + formatDistance_(len) + "<br>";
	var showTime = elements[8].substring(0, 19);
	if(point_state == "white"){
		mtitle += lg.status+"："+lg.srun1+"<br>";//<br>时间："+elements[2];
		//mtitle += "方向：....<br>";
		mtitle += lg.dwtime+"：" + showTime;
		return;
	}
	if (point_state == "gray") {
		mtitle += lg.status+"："+lg.srun2+"<br>";//<br>时间："+elements[2];
		//mtitle += "方向：....<br>";
		mtitle += lg.dwtime+"：" + showTime;
		return;
	} 
 
		mtitle += lg.speed+"：" + elements[3] + "Km/h";//<br>时间："+elements[2];
		mtitle += "(" + getHangXiang(elements[6], elements[3]) + ")<br>";//+"("+elements[6]+"度)";
		
		mtitle += lg.dwtime+"：" + showTime;
		if(page=="index" && elements[3] != "0"){
			var dt = new Date().toLocaleString();			
			//container.innerHTML += "<li>" + dt.substring(dt.indexOf("\ ")) + "   速度" + elements[3] + "公里/小时</li>";
		}
			return;
	
}

var needReinit = false;
function initMap() {
	map = new GMap2(document.getElementById("map"));
	//alert("aa");

		
	var mapControl = new GMapTypeControl();
    map.addControl(mapControl);
    map.removeMapType(G_SATELLITE_MAP);

    map.addControl(new GLargeMapControl());
    //map.removeMapType(G_HYBRID_MAP); 
   

       Map2GetTileUrl=function(a,b){
	        b=this.maxResolution()-b;
	        var server=(a.x+a.y)%4;
                  //   alert(server);

	        return "http://emap"+server+".mapabc.com/mapabc/maptile?v=ap.66&x="+a.x+"&y="+a.y+"&zoom="+b;
	      }
	      //http://emap0.mapabc.com/mapabc/maptile?v=w2.61&zoom=5&x=3399&y=1663
	      
	      var map2tilelayers = [new GTileLayer(new GCopyrightCollection(""),0,17)];
	      map2tilelayers[0].getTileUrl = Map2GetTileUrl;
	      map2tilelayers[0].getCopyright = function(a,b) {
	        return G_NORMAL_MAP.getTileLayers()[0].getCopyright(a,b);
	      }
	      var q={shortName:"MapABC",urlArg:"m",textColor:"black",linkColor:"blue"};
	      map2type = new GMapType(map2tilelayers, new GMercatorProjection(20), "Mapabc", q);
	      this.map.addMapType(map2type);
              //this.map.setMapType(map2type);
    
    GEvent.addListener(map, "maptypechanged", function(){

        //切换地图类型	
         //window.clearInterval(intervalID);
    	//alert("sdfsdfl;kj");
    	 mapType = (map.getCurrentMapType().getName() == "卫星") ?  "G_SATELLITE_MAP" : "";
         map.clearOverlays();  
         needReinit = true;//设置需要重新初始化                    
         len = 0;
      });

	initMarker();
	
	//changeLocationInfo();
	inited = true;
}

var initZoom = 12;
function initMarker(){
	x = Number(elements[1]);
	y = Number(elements[0]);
	x0 = x;
	y0 = y;
	var center = new GLatLng(x, y);
	var point = center
	
/*	
	if(page=="index"){
		initZoom = 14;
	}
*/	
	if(map.getZoom() > initZoom)
		initZoom = map.getZoom();
	
	map.setCenter(center, initZoom);

	//构建标志1
	//       create_title(elements[4]);
	var point = new GLatLng(x, y);

	opts = {
		text :"<span id='markerText'><font size='1'>" + initMTitle
				+ "....</font></span>",
		icon :icon
	};
	marker = new PopupMarker(point, opts);
	//alert(icon);
	//marker.setImage(icon.image);
	
	//alert(point_state);
	map.addOverlay(marker);

	create_title();
	document.getElementById("markerText").innerHTML = "<span id='markerText'><font size='1'>"
			+ mtitle + "</font></span>";
	
	needReinit = false;
	
}



function changeLocationInfo() {
	var _spanOnLine = document.getElementById("spanOnLine");
	var script = document.createElement("script");
	script.src = "GetDataService?method=getLocationText&jing=" + elements[0]
			+ "&wei=" + elements[1]+"&language="+"cn";
	_spanOnLine.appendChild(script);
}

var runCount = 0;
var polylineArr = new Array();
var polyline;

function darwLine() {
	x = Number(elements[1]);
	y = Number(elements[0]);
	//	          create_title(elements[4]);
	var point = new GLatLng(x, y);

	if (Math.sqrt((x - x0) * (x - x0) + (y - y0) * (y - y0)) > 0.0002) {
		var color = "#00FF00";
		if (point_state == "red")
			color = "#FF0000";
		else if (point_state == "yellow")
			color = "#FF00FF";

		polyline = new GPolyline( [ new GLatLng(x0, y0), new GLatLng(x, y), ],
				color, 5);

		//alert(runCount);
		//alert(x0 +"----" +y0 + "----" + x + "----" + y);
		//alert(len);
		len += new GLatLng(x0, y0).distanceFrom(new GLatLng(x, y));
		//alert(len);

		x0 = x;
		y0 = y;
		map.addOverlay(polyline);
		
		marker.setLatLng(point);
		
		//if(page=="index")
			//map.setCenter(point);
		if(!map.getBounds().containsLatLng(point))
     	   map.panTo(point);

		polylineArr[runCount] = polyline;
		//	             alert(runCount + ":"+polylineArr[runCount])	
		runCount = runCount + 1;
	}
	create_title();
	document.getElementById("markerText").innerHTML = "<span id='markerText'><font size='1'>"
			+ mtitle + "</font></span>";
	//marker.setLatLng(point);
	marker.setImage(icon.image);
	
	//marker.hidePopup();	
   	marker.showPopup();	

}

