
/** gestione trackers*/

function avviaanalisi() {
	document.getElementById('stopA').disabled=false;
	document.getElementById('startA').disabled=true;
	for(var i in polyls)						
		map.removeOverlay(polyls[i]);
	attivasocket();
}
function fermaanalisi() {
	document.getElementById('stopA').disabled=true;
	document.getElementById('startA').disabled=false;
	if (g_currentsocket)
		g_currentsocket.closerequested();
}
function checkuncheckalldiretta(checked) {
	for (i=0;i<document.getElementsByName("dirrep").length;i++) {
		document.getElementsByName("dirrep")[i].checked=checked;
	}
}
function validatehour(valore,id) {
	if (valore.length!=5) {
		alert('Rispettare il formato del campo : \n\nHH:MM (es. 15:37)')
		document.getElementById(id).focus();
		return;
	}
	if (valore.indexOf(':')!=2) {
		alert('Rispettare il formato del campo : \n\nHH:MM (es. 15:37)')
		document.getElementById(id).focus();
		return;
	}
	if (!IsNumber(valore)) {
		alert('Rispettare il formato del campo : \n\nHH:MM (es. 15:37)')
		document.getElementById(id).focus();
		return;
	}
	if (parseInt(valore.substring(0,2))>24) {
		alert('Rispettare il formato del campo : \n\nHH:MM (es. 15:37)')
		document.getElementById(id).focus();
		return;
	}
	if (parseInt(valore.substring(3,5))>59) {
		alert('Rispettare il formato del campo : \n\nHH:MM (es. 15:37)')
		document.getElementById(id).focus();
		return;
	}
}
function IsNumber(Expression)
{
    Expression = Expression.toLowerCase();
    RefString = "0123456789:";
    
    if (Expression.length < 1) 
        return (false);
    
    for (var i = 0; i < Expression.length; i++) 
    {
        var ch = Expression.substr(i, 1);
        var a = RefString.indexOf(ch, 0);
        if (a == -1)
            return (false);
    }
    return(true);
}
function attivasocket() {
	puliscitrackers();
	var theselected="";
	var howselected="";
	var conta = 0;
	for (i=0;i<document.getElementsByName("chks").length;i++) {
		if (document.getElementsByName("chks")[i].checked==true){
			if (conta>0) {
				theselected += "|";
				howselected += "|";
			}
			theselected += document.getElementsByName("chks")[i].value;
			if (document.getElementById("dir"+document.getElementsByName("chks")[i].value).checked==true)
				howselected += "DIR";
			else
				howselected += "REP";
			conta++;
		}
	}
	if (theselected!="")
		g_currentsocket = new TrackerSocket(window.location.hostname,socketport,mapOID,0,theselected,howselected,document.getElementById("theDate1").value,document.getElementById("theDate2").value,document.getElementById("thehour1").value,document.getElementById("thehour2").value,g_lang);
	else
		fermaanalisi();
}
var tTrackers = new Array();
var Tpolylines = new Array();
function puliscitrackers() {
	for (var i=0; i<tTrackers.length; i++) {
		var t = tTrackers[i];
		map.removeOverlay(t.marker);
	}
	if (Tpolylines)
		for(var i in Tpolylines)						
			map.removeOverlay(Tpolylines[i]);
	tTrackers = new Array();
	Tpolylines = new Array();
}
function gestisciindirettatrackers(lat,lon,idtracker,color,ladata,xxx,tk_descrizione,trackershowed) {
	var idt = idtracker+"";
	var oldmarker = null;
	
	for (var i=0; i<tTrackers.length; i++) {
		var t = tTrackers[i];
		if (t.id==idt) {
			oldmarker = t.marker;
			map.removeOverlay(t.marker);
			tTrackers.splice(i,1);
			break;
		}
	}

	var latlonlive = new GLatLng(lat, lon);
	//if (idt==g_selectedtrackerkeeper)
	    //var newIcon = MapIconMaker.createLabeledMarkerIcon({addStar: true, label: idt, primaryColor: color, strokeColor: "000000", labelColor: "000000" });
	//else
	    //var newIcon = MapIconMaker.createLabeledMarkerIcon({addStar: false, label: idt, primaryColor: color, strokeColor: "000000", labelColor: "000000" });
    var newIcon = MapIconMaker.createMyMarkerIcon({label: ladata, primaryColor: color, labelColor: "000000" });
	var markerlive = new GMarker(latlonlive, { icon: newIcon, draggable: false });
	map.addOverlay(markerlive);
	if (oldmarker!=null) {
		var polyline = new GPolyline([oldmarker.getLatLng(),latlonlive], "#"+color, 3);
		map.addOverlay(polyline);
		Tpolylines.push(polyline);
	}
	//map.setCenter(latlonlive);

	var tracker = new Tracker();
	tracker.id=idt;
	tracker.marker=markerlive;
	tTrackers.push(tracker);
}
function showaltimetria(idtracker,tkname) {
	//alert(tkname);
	var pagesize = tb_getPageSize();
	var xx = pagesize[0];
	var yy = pagesize[1] - 40;
	var url = '/gis/trk_altimetria.jsp?name='+mapOID+'&x='+xx+'&y='+yy+'&showitem=false&idtracker='+idtracker+'&dal='+document.getElementById("theDate1").value+'&al='+document.getElementById("theDate2").value+'&oradal='+document.getElementById("thehour1").value+'&oraal='+document.getElementById("thehour2").value+'&tkname='+tkname;
	var tit = "Grafici";
	Shadowbox.open({
		player:     'iframe',
		title:      tit,
		content:    url,
		height:     yy,
		width:      xx
	});
	g_popup5.hide();
}
function veditracciato() {
	var theselected="";
	var conta = 0;
	for (i=0;i<document.getElementsByName("chks").length;i++) {
		if (document.getElementsByName("chks")[i].checked==true){
			if (conta>0) {
				theselected += "|";
			}
			theselected += document.getElementsByName("chks")[i].value;
			conta++;
		}
	}
	puliscitrackers();
	for(var i in polyls)						
		map.removeOverlay(polyls[i]);
	if (theselected!="") {
	    if (window.XMLHttpRequest) { // Non-IE browsers
	      xmlhttp = new XMLHttpRequest();
	    } else if (window.ActiveXObject) { // IE
	      xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
	    }
    	var params = "oid="+mapOID;
    	params += "&theselected="+theselected;
    	params += "&theDate1="+document.getElementById("theDate1").value;
    	params += "&theDate2="+document.getElementById("theDate2").value;
    	params += "&thehour1="+document.getElementById("thehour1").value;
    	params += "&thehour2="+document.getElementById("thehour2").value;
		var url="/gis/trk_veditracciato.jsp";
	    xmlhttp.open("POST", url, true);
		xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
//		xmlhttp.setRequestHeader("Content-length", params.length);
//		xmlhttp.setRequestHeader("Connection", "close");
		xmlhttp.onreadystatechange = mostrapercorso;
	    xmlhttp.send(params);
	}
	
}
function mostrapercorso() {
    if (xmlhttp.readyState == 4) {
        if (xmlhttp.status == 200) {
        	var response = xmlhttp.responseText;
        	//alert(response.substr(0,response.length-2));
        	response = response.substr(0,response.length-2);
        	var letracce = response.split("||||");
        	for (var i=0;i<letracce.length;i++) {
        		var elementitracce = letracce[i].split("|||"); 
	        	//var obj = eval('(' + response.substr(0,response.length-2) + ')');
	        	//alert(obj);
				encodedPoints = elementitracce[1].split(";");
				encodedLevels = elementitracce[2].split(";");
				encodedColors = elementitracce[3].split(";");
        		//alert('******** '+encodedPoints.length+" "+encodedLevels.length+" "+encodedColors.length);
        		//alert('******** '+encodedColors[0]);
	            mostra();
        	}
        } else {
        	alert('Percorso non reperito per errore '+xmlhttp.status);
        }
    } else {
       	//alert('Errore readyState : '+xmlhttp.readyState);
    } 
}
function mostra() {
	for (var i=0; i<encodedPoints.length;i++) {
		
		var v1 = "\\\\\\\\";
		var v3 = encodedPoints[i];
		var xxx = new Array(10000);
		var yyy = 0;
		while (v3.indexOf(v1)>=0) {
			var index = v3.indexOf(v1);
			xxx[yyy] = index;
			v3 = v3.substr(0,index+1)+v3.substr(index+2);
			yyy++;
		}
		v1 = "\\\\";
		while (v3.indexOf(v1)>=0) {
			var index = v3.indexOf(v1);
			v3 = v3.substr(0,index+1)+v3.substr(index+2);
		}
		var yyy = 0;
		while (xxx[yyy]>0) {
			var index = xxx[yyy];
			v3 = v3.substr(0,index+1)+"\\"+v3.substr(index+1);
			yyy++;
		}
		xxx=null;
		encodedPoints[i]=v3;
		
		var polyline = new GPolyline.fromEncoded({
		  color: encodedColors[i],
		  weight: 2,
		  opacity: 0.8,
		  points: encodedPoints[i],
		  levels: encodedLevels[i],
		  zoomFactor: 3,
		  numLevels: 1
		});
		polyls.push(polyline);
		map.addOverlay(polyline);
	}
}
//function stampamappa() {
//	mapCapturerApplet(document.getElementById('map'),document.mcapt,g_session);
//}
/** gestione calendario*/

function viscalendario1(obj){
	displayCalendar(document.getElementById('theDate1'),'dd/mm/yyyy',obj);
}
function viscalendario2(obj){
	displayCalendar(document.getElementById('theDate2'),'dd/mm/yyyy',obj);
}
function vedipiste(progressivo) {
/*    if (window.XMLHttpRequest) { // Non-IE browsers
      xmlhttp = new XMLHttpRequest();
    } else if (window.ActiveXObject) { // IE
      xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    }
	var params = "oid="+mapOID;
	//params += "&progressivo="+progressivo;
	var url="/gis/trk_vedipiste.jsp";
    xmlhttp.open("POST", url, true);
	xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
//	xmlhttp.setRequestHeader("Content-length", params.length);
//	xmlhttp.setRequestHeader("Connection", "close");
	xmlhttp.onreadystatechange = mostrapiste;
    xmlhttp.send(params);
    //alert('vedipiste lanciato');
*/    

    var params = "oid="+mapOID;
	params+="&random=" + Math.random();
	var url="/gis/trk_vedipiste.jsp";
    $.ajax({
		type: "POST",
		contentType: "application/x-www-form-urlencoded; charset=utf-8",
		url: url,
		data: params,
		success: function(response){
        	if (response.indexOf('nofilegpx')==-1) {
	    		var elementitracce = response.split("|||"); 
				encodedPoints = elementitracce[0].split(";");
				encodedLevels = elementitracce[1].split(";");
				encodedColors = elementitracce[2].split(";");
				var pw = elementitracce[3];
				if (pw.length>=1)
					pw = pw.substr(0,1);
				polyweigth=parseInt(pw);
	            mostrapista();
        	}
		},
		error: function(XMLHttpRequest, textStatus, errorThrown) {
        	alert(XMLHttpRequest.responseText);
		}
	});		    
}
var polyweigth=1;
/*
function mostrapiste() {
    if (xmlhttp.readyState == 4) {
        if (xmlhttp.status == 200) {
        	//alert(xmlhttp.responseText);
        	var response = xmlhttp.responseText;
        	//alert(response.substr(0,response.length-2));
        	response = response.substr(0,response.length-2);
        	if (response.indexOf('nofilegpx')==-1) {
        		//alert(response);
	    		var elementitracce = response.split("|||"); 
	        	//var obj = eval('(' + response.substr(0,response.length-2) + ')');
	        	//alert(elementitracce.length+" "+elementitracce[0].split(";").length);
	        	//var nuovoprogressivo = elementitracce[0];
				encodedPoints = elementitracce[0].split(";");
				encodedLevels = elementitracce[1].split(";");
				encodedColors = elementitracce[2].split(";");
				var pw = elementitracce[3];
				if (pw.length>=1)
					pw = pw.substr(0,1);
				polyweigth=parseInt(pw);
				//alert(elementitracce.length);
	    		//alert('******** '+encodedPoints.length+" "+encodedLevels.length+" "+encodedColors.length);
	    		//alert('******** '+encodedColors[0]);
	            mostrapista();
        	}
        } else {
        	alert('Piste non reperite per errore '+xmlhttp.status);
        }
    } else {
       	//alert('Errore readyState : '+xmlhttp.readyState);
    } 
}*/
function mostrapista() {
	//alert(encodedPoints.length);
	for (var i=0; i<encodedPoints.length;i++) {
		
		var v1 = "\\\\\\\\";
		var v3 = encodedPoints[i];
		var xxx = new Array(10000);
		var yyy = 0;
		while (v3.indexOf(v1)>=0) {
			var index = v3.indexOf(v1);
			xxx[yyy] = index;
			v3 = v3.substr(0,index+1)+v3.substr(index+2);
			yyy++;
		}
		v1 = "\\\\";
		while (v3.indexOf(v1)>=0) {
			var index = v3.indexOf(v1);
			v3 = v3.substr(0,index+1)+v3.substr(index+2);
		}
		var yyy = 0;
		while (xxx[yyy]>0) {
			var index = xxx[yyy];
			v3 = v3.substr(0,index+1)+"\\"+v3.substr(index+1);
			yyy++;
		}
		xxx=null;
		encodedPoints[i]=v3;
		
		if (encodedColors[i]==null || encodedColors[i]=="")
			encodedColors[i]='#00FF80';
		//alert(polyweigth);
		//alert(encodedColors[i]);
		var polyline = new GPolyline.fromEncoded({
		  color: encodedColors[i],
		  weight: polyweigth,
		  opacity: 0.9,
		  points: encodedPoints[i],
		  levels: encodedLevels[i],
		  zoomFactor: 3,
		  numLevels: 1
		});
		//polyls.push(polyline);
		map.addOverlay(polyline);
		//vedipiste(progressivo);
	}
}

