var map = null;
var oCollLayer = null;
var IDIntervalLoad = 0;
var IDTOItem = 0;
var IDTOInfoView = 0;
var IDTOInfoHide = 0;
var IDTOInit = 0;
var IsItemRunning = false;
var IsInfoRunning = false;
var IsMapLoaded = false;
var oShapeViewed = null;
var DefaultZoomLevel = 12;   
var pinRicerca = "<div style='position:relative;'><div class='pinRicerca'>&nbsp;</div></div>";
var pinAeroporti = "<div style='position:relative;'><div class='pinAeroporti'>&nbsp;</div></div>";
var pinItinerari = "<div style='position:relative;'><div class='pinItinerari'>&nbsp;</div></div>";
var scittapartenza = "";
function asyncAreLayersLoaded() {
	if(
		oCollLayer.Lookup('Bari').IsFileLoaded()==true && 
		oCollLayer.Lookup('Brindisi').IsFileLoaded()==true && 
		oCollLayer.Lookup('Foggia').IsFileLoaded()==true && 
		oCollLayer.Lookup('Grottaglie').IsFileLoaded()==true
	) {			
		clearInterval(IDIntervalLoad);	
		IDIntervalLoad = 0;
		
		//map.ClearInfoBoxStyles();		
		if(
			scittapartenza!='Bari' && 
			scittapartenza!='Brindisi' && 
			scittapartenza!='Foggia' && 
			scittapartenza!='Grottaglie'
		) scittapartenza=='Bari';			
		
		map.SetMouseWheelZoomToCenter(false);				
		IsMapLoaded = true;
		ShowItem(scittapartenza, 0, true);		
	} 	
}
function asyncShowInfo() {
	clearTimeout(IDTOInfoView); 	 
	if(!IsInfoRunning) { 	
		IsInfoRunning = true;			
	} else {
		clearTimeout(IDTOInfoHide); 
		map.HideInfoBox();				
	}	
	IDTOInfoHide = setTimeout("asyncHideInfo()", 50000);
	map.ShowInfoBox(oShapeViewed);
	IsItemRunning = false;
}
function asyncHideInfo() {clearTimeout(IDTOInfoHide); map.HideInfoBox(); IsInfoRunning = false;}
function asyncShowItem(key, index, useDefaultZoom) {
    clearTimeout(IDTOItem);	
	oCollLayer.HideAllShapeLayers(); 	
	var oAPLayer = oCollLayer.Lookup(key);
	var oShapeLayer = oAPLayer.GetShapeLayer();
	var oShape = oShapeLayer.GetShapeByIndex(index);
	var iCount = oShapeLayer.GetShapeCount();	
	var oVELatLong = oShape.GetIconAnchor();	
	oShapeViewed = oShape;		
	document.getElementById('ItemBari').style.backgroundColor='#003864';
	document.getElementById('ItemBrindisi').style.backgroundColor='#003864';
	document.getElementById('ItemFoggia').style.backgroundColor='#003864';
	document.getElementById('ItemGrottaglie').style.backgroundColor='#003864';	    
	document.getElementById('DivItinerariBari').style.display='none';
	document.getElementById('DivItinerariBrindisi').style.display='none';
	document.getElementById('DivItinerariFoggia').style.display='none';
	document.getElementById('DivItinerariGrottaglie').style.display='none'; 	
	document.getElementById('Item' + key).style.backgroundColor='#0060BB';
	document.getElementById('DivItinerari' + key).style.display='block';	
	oShapeLayer.Show();		
	if(iCount > 1) {for(i=1;i<iCount;i++) {oShapeLayer.GetShapeByIndex(i).Hide();}}
	oShape.Show();	
	
	if(useDefaultZoom) {map.SetCenterAndZoom(oVELatLong, DefaultZoomLevel);}
	else {map.PanToLatLong(oVELatLong);}	
	
	if(document.getElementById('DivWait').style.display=='block') document.getElementById('DivWait').style.display='none';	

}
function UnloadMap() {if(map!=null) { map.Dispose(); }if(oCollLayer!=null) { oCollLayer.DestroyStorage(); oCollLayer = null; }}
function InitMap(citta){	
	scittapartenza=citta;	
	document.getElementById('DivWait').style.display='block';
	IDTOInit = setTimeout("LoadMap()", 3000);	
}
function LoadMap() {
	clearTimeout(IDTOInit);
	var ffv = 0;
    var ffn = "Firefox/"
    var ffp = navigator.userAgent.indexOf(ffn);
    if (ffp != -1) ffv = parseFloat(navigator.userAgent.substring(ffp + ffn.length));	
    if (ffv >= 1.5) { Msn.Drawing.Graphic.CreateGraphic=function(f,b) { return new Msn.Drawing.SVGGraphic(f,b) } }
    oCollLayer = new APLayerColl();	
    oCollLayer.Add('Bari','GeoRSS/bari.xml',pinAeroporti,pinItinerari);
    oCollLayer.Add('Brindisi','GeoRSS/brindisi.xml',pinAeroporti,pinItinerari);
    oCollLayer.Add('Foggia','GeoRSS/foggia.xml',pinAeroporti,pinItinerari);
    oCollLayer.Add('Grottaglie','GeoRSS/grottaglie.xml',pinAeroporti,pinItinerari);	
	map = new VEMap('DivMap');
	var options = new VEMapOptions(); 
	options.EnableBirdseye = false; 
	options.EnableDashboardLabels = false;
	var show3DSwitch = false;
    map.onLoadMap = function() { oCollLayer.ImportLayer(map); IDIntervalLoad = setInterval('asyncAreLayersLoaded()', 2500);};	
	map.LoadMap(new VELatLong(41.135922401622345, 16.762862205505357), DefaultZoomLevel, VEMapStyle.Road, false, VEMapMode.Mode2D, show3DSwitch, 0, options);	
    map.AttachEvent("oninitmode", function(event) {if (map.GetMapMode() == VEMapMode.Mode3D) {map.Show3DNavigationControl();document.getElementById('DivMiniMappa').style.display='none';}else {map.Hide3DNavigationControl();document.getElementById('DivMiniMappa').style.display='block';}});
    map.AttachEvent("onchangeview", function(event) {if(IsItemRunning) IDTOInfoView = setTimeout("asyncShowInfo()", 500); });    
    //map.AttachEvent("onerror",function(event) {alert("Attenzione!\nSi e' verificato un errore imprevisto.\nRiavviare Virtual Earth.");});	
}
function ShowItem(key, index, useDefaultZoom) {
	if(IsMapLoaded==true && IsItemRunning==false) {
		IsItemRunning=true;
		IDTOItem = setTimeout("asyncShowItem('" + key + "'," + index + "," + useDefaultZoom + ")", 500);
	}
}
function ShowMiniMap(obj) { 
	if(IsMapLoaded==true) {
		if (map.GetMapMode() == VEMapMode.Mode3D)  map.SetMapMode(VEMapMode.Mode2D);
		if(obj.innerHTML=='Mostra mini mappa') {obj.innerHTML='Nascondi mini mappa';map.ShowMiniMap();} 
		else {obj.innerHTML='Mostra mini mappa';map.HideMiniMap();}
	}
}
var find = new Object();
function DoAdvanceFind(c) {
	if(IsMapLoaded==true) {
	    find.callback = null;
	    find.what = document.getElementById("findWhat").value;
	    find.where = document.getElementById("findWhere").value;
	    find.start = 0;
	    find.num = 20;
	    find.show = true;
	    find.create = true;
	    find.disam = false;
	    if (document.getElementById("disamCustomRadio").checked) { find.callback = disambigCall; }
	    find.best = true;
	    UpdateHTML("callbackText", "");					
	    find.doCallback = function (layer, resultsArray, places, hasMore, veErrorMessage) {	
			if (!places && !resultsArray) { alert("La ricerca non ha restituito nessun resultato.\nControlla i termini di ricerca e riprova."); }		
			if(resultsArray && resultsArray.length >= 1) {for (x = 0; x < resultsArray.length; x++) {resultsArray[x].Shape.SetCustomIcon(pinRicerca);}}
		};
		if (find.callback == null) { find.callback = find.doCallback; }	
	    try {InitFindLayer(); map.Find(find.what, find.where, VEFindType.Businesses, findLayer, find.start, find.num, find.show, find.create, find.disam, find.best, find.callback);
	    } catch (e) {alert("Si e' verificato un errore nella ricerca.\nControlla i termini di ricerca e riprova.");}
	}
}
var placesArray;			
function disambigCall(layer, resultsArray, places, hasMore, veErrorMessage) {
	if (!places && !resultsArray) { UpdateHTML("callbackText", "<span class='resultRicerca'>La ricerca non ha restituito nessun resultato.</span>"); }
	if(resultsArray && resultsArray.length >= 1) {for (x = 0; x < resultsArray.length; x++) {resultsArray[x].Shape.SetCustomIcon(pinRicerca);}}	
	if (places && places.length > 1) {
		placesArray = places;
		var results = "<span class='resultRicerca'>La ricerca ha restituito pi&ugrave; localit&agrave;.<br />Per favore seleziona la localit&agrave; che stai cercando:</span><br /><br />";
		for (x = 0; x < places.length && x < places.length; x++) {results += "<a href='#' class='resultAmbigui' onclick='javascript:disambigDone(" + x + ");'>" + places[x].Name + "</a><br>";}						
		UpdateHTML("callbackText", results);
	}			
}
function UpdateHTML(id, text) {var z = document.getElementById(id);if (z) {z.innerHTML = text;}}	
var findLayer;
function InitFindLayer() {DeleteFindLayer(); findLayer = new VEShapeLayer;map.AddShapeLayer(findLayer);}
function DeleteFindLayer() {if (findLayer != null) {UpdateHTML("callbackText", "");map.DeleteShapeLayer(findLayer);findLayer = null;}}
function disambigDone(n) {
    if (document.getElementById("callbackText")) {			       
        if (placesArray && n >= 0) {
            try { map.Find(find.what, placesArray[n].Name, null, findLayer, find.start, find.num, find.show, find.create, find.disam, find.best, find.doCallback);} 
			catch (e) {alert("Si e' verificato un errore nella ricerca.\nControlla i termini di ricerca e riprova.");}
        }
    } 
}

