// funzione che associa il tipo all'icona
function getImage(type) {
	var ris = ""
	switch (type) {
		case 1 : 
			ris = "incidente"; 
			break;
		case 2 : 
			ris = "chiusa"; 
			break;
		case 3 : 
			ris = "chiusa"; 
			break;
		case 4 : 
			ris = "traforo_chiuso"; 
			break;
		case 5: case 6: case 7: 
			ris = "svincolo"; 
			break;
		case 8: case 35 : 
			ris = "neve"; 
			break;
		case 9 : 
			ris = "traffico3"; 
			break;
		case 10: case 11: case 26: 
			ris = "code"; 
			break;
		case 12: case 13: case 14: case 15: case 16: 
			ris = "traffico2"; 
			break;
		case 17: case 18: 
			ris = "intenso"; 
			break;
		case 19: case 20: 
			ris = "cantiere"; 
			break;
		case 21: case 38: 
			ris = "pericolo"; 
			break;				
		case 22: case 33: case 34: 
			ris = "nebbia"; 
			break;		
		case 23: case 36: 
			ris = "vento"; 
			break;		
		case 24: case 37: 
			ris = "pioggia"; 
			break;		
		case 25: 
			ris = "traffico1"; 
			break;		
		case 27: 
			ris = "fiera";
			break;		
		case 28: 
			ris = "frana"; 
			break;		
		case 29: 
			ris = "fiera";
			break;		
		case 30: 
			ris = "allagamento"; 
			break;		
		case 31: 
			ris = "sdrucciolevole";
			break;	
		case 32: 
			ris = "vento";
			break;
		case 39: 
			ris = "avaria";
			break;	
		case 40: 
			ris = "incidente_rimosso";
			break;	
		case 41: case 42: 
			ris = "traffico3";
			break;	
		case 43: 
			ris = "traffico2";
			break;	
		case 44: 
			ris = "traffico4";
			break;	
		case 45: 
			ris = "strettoia";
			break;	
		case 46: 
			ris = "noaccess";
			break;
		case 47: 
			ris = "sdrucciolevole";
			break;	
		case 48: 
			ris = "fiera";
			break;
		case 49: 
			ris = "esplosione";
			break;																																																																																																														
	}
	return ris;
}
//funzione che rende esclusivi i due menu a tendina
function changeMenu(sel){
	var nameAltraSel=(sel.name=='menuRegione')?'menuAutostrada':'menuRegione';
  	if(sel.selectedIndex!=0){ 
  		sel.form.elements[nameAltraSel].selectedIndex=0;
  	}
}
//funzione che crea la struttura dei tag XML
function addXML(tag,value) {
	return "<"+tag+">"+value+"</"+tag+">\n";
}
//funzione complementare che passa alla funzione che genera l'XML il tag da creare e il suo valore
function doOperation(operation) {
	var doc = document.datigeografici;
	doc.operation.value = operation;
	//Imposto l'url sul quale verrà fatto il redirect
	var url= "http://"+location.host+location.pathname;
	doc.urlHome.value = url;
	//switch per il cambio delle immagini degli zoom
	switch (operation) {
		case 'zoom+' : 
			doc.zoom.value++;
			if (doc.zoom.value > 4) {
				doc.zoom.value = 4;
			}
			break;
		case 'zoom-' : 
			doc.zoom.value--;
			if (doc.zoom.value < 1) {
				doc.zoom.value = 1;
			}
			break;
		case 'zoom1' : 
			doc.zoom.value = "1";
			break;
		case 'zoomReload' : 
			doc.zoom.value = "2";
			doc.submit();
			break;
		case 'zoom3' : 
			doc.zoom.value = "3";
			break;
		case 'zoom4' : 
			doc.zoom.value = "4";
			break;
		case 'vai' : 
			doc.submit();
			break;
	}
	if (operation != 'vai' && operation != 'zoomReload') {
		// crea l'xml
		var xml = '<?xml version="1.0" encoding="ISO-8859-1" ?>\n'+
		'<msg>\n'+
		addXML("longit",doc.longit.value)+
		addXML("lat",doc.lat.value)+
		addXML("zoom",doc.zoom.value)+
		addXML("operation",doc.operation.value)+
		addXML("traffico",doc.checkTraffico.checked)+
		addXML("incidenti",doc.checkIncidenti.checked)+
		addXML("lavori",doc.checkLavori.checked)+
		addXML("meteo",doc.checkMeteo.checked)
		'</msg>';
		doc.xmlmsg.value = xml;
		//Richiamo del metodo getMap() e passa il file XML generato
		getMap(doc);
	}	
}
/*funzione AJAX che richiama la classe MapServer che restituisce gli eventi 
 * e li passa alla funzione sottostante che avrà il compito di sistemare mappa
 * icone mappa,tooltip,e icone con descrizione completa eventi
 */
function getMap(doc){		
	MapServer._path = "http://www6.bconnect.biz/traffico/dwr";
	DWREngine.setMethod(DWREngine.ScriptTag );																
	MapServer.getEvents(doc.xmlmsg.value,gotImage);
}
//funzione che associa il tipo alla descrizione
function getTypeDescription(type) {
	var ris = ""
	switch (type) {
		case 1 : 
			ris = "Incidente"; 
			break;
		case 2 : 
			ris = "Autostrada&nbsp;chiusa"; 
			break;
		case 3 : 
			ris = "Tangenziale&nbsp;chiusa"; 
			break;
		case 4 : 
			ris = "Traforo&nbsp;chiuso"; 
			break;
		case 5: 
			ris="Svincolo&nbsp;chiuso&nbsp;entrata&nbsp;uscita";
			break;
		case 6: 
			ris ="Svincolo&nbsp;chiuso&nbsp;in&nbsp;uscita";
			break;
		case 7: 
			ris = "Svincolo&nbsp;chiuso&nbsp;in&nbsp;entrata"; 
			break;
		case 8: 
			ris="Neve";
			break;
		case 9 : 
			ris = "Traffico&nbsp;bloccato"; 
			break;
		case 10: 
			ris="Code";
			break;
		case 11: 
			ris="Coda";
			break;
		case 12: 
			ris="Forti&nbsp;rall.&nbsp;con&nbsp;code";
			break;
		case 13: 
			ris="Rallentato&nbsp;con&nbsp;code";
			break;
		case 14: 
			ris="Rall.&nbsp;con&nbsp;code&nbsp;a&nbsp;tratti";
			break;
		case 15: 
			ris="Rallentato";
			break;
		case 16: 
			ris = "Rallentato&nbsp;a&nbsp;tratti"; 
			break;
		case 17: 
			ris="Molto&nbsp;intenso";
			break;
		case 18: 
			ris = "Intenso"; 
			break;
		case 19: 
			ris="Lavori/Cantieri";
			break;
		case 20: 
			ris = "Lavori"; 
			break;
		case 21: 
			ris="Pericolo";
			break;
		case 22: 
			ris="Nebbia";
			break;
		case 23: 
			ris="Vento";
			break;
		case 24: 
			ris="Pioggia";
			break;
		case 25: 
			ris = "Traffico"; 
			break;		
		case 26: 
			ris = "Code&nbsp;a&nbsp;tratti"; 
			break;
		case 27: 
			ris = "Manifestazione";
			break;		
		case 28: 
			ris = "Frana"; 
			break;		
		case 29: 
			ris = "Fiera";
			break;		
		case 30: 
			ris = "Allagamento"; 
			break;		
		case 31: 
			ris = "Manto&nbsp;stradale&nbsp;ghiacciato"; 
			break;	
		case 32: 
			ris = "Raffiche&nbsp;di&nbsp;vento";
			break;
		case 33: 
			ris="Foschia&nbsp;densa";
			break;
		case 34: 
			ris = "Foschia"; 
			break;		
		case 35 : 
			ris = "Nevischio"; 
			break;
		case 36: 
			ris = "Vento&nbsp;forte"; 
			break;		
		case 37: 
			ris = "Pioggia&nbsp;intensa"; 
			break;		
		case 38: 
			ris = "Perdita&nbsp;di&nbsp;carico"; 
			break;				
		case 39: 
			ris = "Mezzo&nbsp;in&nbsp;avaria";
			break;	
		case 40: 
			ris = "Incidente&nbsp;rimosso";
			break;	
		case 41: 
			ris="Traffico&nbsp;fermo";
			break;
		case 42: 
			ris = "Traffico&nbsp;molto&nbsp;lento";
			break;	
		case 43: 
			ris = "Traffico&nbsp;lento";
			break;	
		case 44: 
			ris = "Traffico&nbsp;regolare";
			break;	
		case 45: 
			ris = "Strettoia";
			break;	
		case 46: 
			ris = "Divieto&nbsp;di&nbsp;accesso";
			break;
		case 47: 
			ris = "Strada&nbsp;sdruciolevole";
			break;	
		case 48: 
			ris = "Indicatori&nbsp;luminosi fuori uso";
			break;
		case 49: 
			ris = "Pericolo&nbsp;esplosioni";
			break;																																																																																																														
	}
	return ris;
}
//********  funzione che posiziona le mappe e le icone degli eventi  ********//
function gotImage(events) {
	var doc = document.forms['datigeografici'];
	//posizionamento della mappa ------ Tramite la Classe MapGenerator che cattura la sessione e il valore del Tile
	
	//calcolo dell'url delle mappe
	var url = "http://"+location.host+location.pathname;
	var posSlash = url.lastIndexOf('/');
	url = url.substr(0,posSlash+1)+'mappe/';
	
	var immagini = "<img src='http://www6.bconnect.biz/traffico/MapGenerator?prova="+Math.random()+"&url="+url+"' style='position:absolute; top: 0px; left: 0px; z-index:1' width='550' height='470'/>\n"
	var eventi = "<table id='tableEventi'>";
    for (var data in events) {
        immagini = immagini + 
        //posizionamento icone sulla mappa (overlay)
        "<img id='icone' onmouseover=overlib('Sulla&nbsp;:"+events[data].road_name+"&lt;br&gt;Tra&nbsp;:"+events[data].k_up_toolbooth+"&nbsp;e&nbsp;"+events[data].k_dw_toolbooth+"&lt;br&gt;"+GetDirezione(events[data].k_main_locality,events[data].k_road_direction)+"',CAPTION,'"+getTypeDescription(events[data].eventType)+"',WIDTH,200); onmouseout='return nd();' onclick=changeBG_Anchor("+data+") src='img/icone/"+getImage(events[data].eventType)+"_th.gif' style='top: "+iconY(events[data].y)+"px; left: "+iconX(events[data].x)+"px;border: 1px;border-color: black'" +
        ">\n";
        eventi = eventi + 
        //posizionamento icone e descrizione dettagliata nel DIV
        "<tr class='tr_eventi' id='rowsT'><td><a name='"+data+"'><img id='events' src='img/icone/"+getImage(events[data].eventType)+".gif' onclick='document.location.href=\"#topMap\"'/></a></td>"+
        "<td id='evento"+data+"'><b>"+getTypeDescription(events[data].eventType)+"</b>  Su <b>"+events[data].road_name+"<b/> tra <b>"+events[data].k_up_toolbooth+"<b/> e <b>"+events[data].k_dw_toolbooth+"<b/>;"+events[data].description+""+GetVelocita(events[data].speed)+""+GetDirezione(events[data].k_main_locality,events[data].k_road_direction)+"</td></tr>";
    }
    eventi = eventi + "</table>";
	//Serie di istruzioni che vanno a settare i valori nella pagina, creando fisicamente la lista degli eventi e le icone sulla mappa
	var mappaDiv = document.getElementById("mappa");
	mappaDiv.innerHTML = immagini;
	var eventiDiv = document.getElementById("eventi");
	eventiDiv.innerHTML = eventi;
	//Richiama la funzione che cambia colore in base al livello di zoom in cui ci si trova
	changeImgZoom("zoom"+doc.zoom.value);
}
//Funzione che deve cambiare immagine in base allo zoom corrente
function changeImgZoom(imgZoom){
	// reimposta a blank le immagini
	var img = document.getElementById('zoom1');
	img.setAttribute('src','img/zoom_2.jpg');
	var img = document.getElementById('zoom2');
	img.setAttribute('src','img/zoom_3.jpg');
	var img = document.getElementById('zoom3');
	img.setAttribute('src','img/zoom_4.jpg');
	var img = document.getElementById('zoom4');
	img.setAttribute('src','img/zoom_5.jpg');
	//controllo del browser
	if(window.ActiveXObject){
		//IE
		var img = document.getElementById(imgZoom);
		var p = img.getAttribute("id");
		switch (p) {
			case "zoom1" : 
				img.setAttribute('src','img/zoom_2_click.jpg');
				break;
			case 'zoom2' : 
				img.setAttribute('src','img/zoom_3_click.jpg');
				break;			
			case 'zoom3' : 
				img.setAttribute('src','img/zoom_4_click.jpg');
				break;
			case 'zoom4' : 
				img.setAttribute('src','img/zoom_5_click.jpg');
				break;
		}
	}else{
		//Other browser
		var img = document.getElementById(imgZoom);
		switch (img) {
			case zoom1 : 
				img.setAttribute('src','img/zoom_2_click.jpg');
				break;
			case zoom2 : 
				img.setAttribute('src','img/zoom_3_click.jpg');
				break;			
			case zoom3 : 
				img.setAttribute('src','img/zoom_4_click.jpg');
				break;
			case zoom4 : 
				img.setAttribute('src','img/zoom_5_click.jpg');
				break;
		}
	}
}
//Funzione che crea il rientro delle icone nella mappa per la coordinata X
function iconX(x) {
	//larghezza della mappa
	larg = 550;
	//pixel di rientro desiderati
	rientro = 1;
	var px = Math.round(x*larg) - 10;
	if (px < rientro) {
		px = rientro;
	}
	if (px > larg - 20 - rientro) {
		px = larg - 20 - rientro;
	}
 	return px;
}
//Funzione che crea il rientro delle icone nella mappa per la coordinata Y
function iconY(y) {
	//altezza della mappa
	alt = 470;
	//pixel di rientro desiderati
	rientro = 1;
	var py = Math.round(y*alt) - 10;
	if (py < rientro) {
		py = rientro;
	}
	if (py > alt - 20 - rientro) {
		py = alt - 20 - rientro;
	}
 	return py;	
}
function setParameters() {
	MapServer._path = "http://www6.bconnect.biz/traffico/dwr";
	DWREngine.setMethod(DWREngine.ScriptTag );
	MapServer.getParameters(gotParameters);
}
function gotParameters(parameters) {
	var doc = document.forms['datigeografici'];
    for (var data in parameters) {
    	if (parameters[data].value != null) {
    		if (parameters[data].name == 'menuRegione') {
    			doc.menuRegione.value = parameters[data].value;
    		} else
    		if (parameters[data].name == 'menuAutostrada') {
    			doc.menuAutostrada.value = parameters[data].value;
    		} else {
 			   if (parameters[data].name != 'zoom') {
 			   		var chk = document.getElementById(parameters[data].name);
 			   		if (parameters[data].value = 'on') {
 			   			chk.checked = true;
 			   		}
 			   } else {
					DWRUtil.setValue(parameters[data].name,parameters[data].value);
    		   }
    		}
    	}
    }
    doOperation('nothing');
}
//funzione che genera la scritta per la velocità
function GetVelocita(speed){
	if(speed != 0){
		return ' Velocit&agrave; media di <b>'+speed+' Km/h;<b/>'
	}else{
		return ''
	}
}
//funzione che genera la scritta per la direzione
function GetDirezione(main_locality,direzione){
	
	return 'In&nbsp;direzione&nbsp;'+main_locality+';'
}
//funzione che seleziona l'evento nell'elenco degli eventi
function changeBG_Anchor(id){
	var table = document.getElementById('tableEventi');	
	var righe = table.rows.length;
	if (window.ActiveXObject){
		//codice per ie - NS
		for(var i = 0; i < righe;i++){
			if(i == id){
				var actualTD = document.getElementById("evento"+id);
				actualTD.style.backgroundColor= "lightblue";
			}else{
				var TD = document.getElementById("evento"+i);
				TD.style.backgroundColor = "white";
			}
		}
	}else{
		//codice per FF - Opera - safari
		for(var i = 0; i < righe;i++){
			if(i == id){
				var actualTD = document.getElementById("evento"+id);
				actualTD.setAttribute("style","background-color: lightblue");
			}else{
				var TD = document.getElementById("evento"+i);
				TD.setAttribute("style","background-color: white");
			}
			
		}
	}
	document.location.href='#'+id;
}