/**** filtra categorie dal menu'  ****/
function searchLocationsSet(what,categoria) {
	
	map.clearOverlays();
		
	var center = map.getCenter();
	try {
		var tot = poi.length;
		if (tot > 0) {
			poi = [];
		}
	} catch (e) {
		return '';
	}
		
	var bounds = map.getBounds();
	var southWest = bounds.getSouthWest();
	var northEast = bounds.getNorthEast(); 
	
	bounds.extend(southWest);
	bounds.extend(northEast); 
	
	var attivo_dal = Number(document.getElementById('valueA').value);
	var attivo_al  = Number(document.getElementById('valueB').value);
	var nome_stab  = document.getElementById('nome_stab').value;
	var indirizzo  = document.getElementById('indirizzo').value;
	indirizzo = indirizzo.replace('Indirizzo (senza via, corso...)','');
	var localita   = document.getElementById('localita').value;
	localita= localita.replace('Cittā','');
	
	var searchUrl = '/mappe/luoghi_produzione/index.php/creakml?what='+what+'&categoria='+categoria+'&dal='+attivo_dal+'&al='+attivo_al+'&nome_stab='+nome_stab+'&indirizzo='+indirizzo.replace(',','|')+'&localita='+localita;
	GDownloadUrl(searchUrl, function(data) {
		var xml = GXml.parse(data);
		var markers = xml.documentElement.getElementsByTagName("Placemark");
		var bounds = new GLatLngBounds();
		var sidebar = document.getElementById('risultati');
		var tot = markers.length;

		var getNodeValue = function(tag){
			try{
				return markers[i].getElementsByTagName(tag)[0].childNodes[0].nodeValue;
			}catch(e){
				return '';
			}
		};
		
		var cnt = 0; 

		for (var i = 0; i < markers.length; i++) {
				
			poi[i] = new Array(10);
			poi[i][0] = getNodeValue('id');
			poi[i][1] = getNodeValue('name');
			poi[i][2] = getNodeValue('settore');
			poi[i][3] = getNodeValue('autore');
			poi[i][4] = getNodeValue('indirizzo');
			poi[i][5] = parseFloat(getNodeValue('latitude'));
			poi[i][6] = parseFloat(getNodeValue('longitude'));
			poi[i][7] = getNodeValue('attivo_dal');
			poi[i][8] = getNodeValue('attivo_al');
			poi[i][9] = getNodeValue('icona');
									
			var periodo = poi[i][7] + '-'+ poi[i][8];
			if (poi[i][8]==attivo_al){
					periodo = poi[i][7] + ' - attivo';
			}

			++cnt;
			
			var point = new GLatLng(poi[i][5],poi[i][6]);
			bounds.extend(point);

			var objMarker = {
				point : point,
				cnt :cnt,
				periodo: periodo,
				totale: tot,
				id : poi[i][0],
				name : poi[i][1],
				settore : poi[i][2],
				autore : poi[i][3],
				indirizzo : poi[i][4],
				icona : poi[i][9],
				zoom: map.getBoundsZoomLevel(bounds)
			}
			
			//  visualizza  marker 
			createMarker(4,objMarker);
		}
		
		//aggiorno contatori
		setInput(what, cnt);
		
		// pagino risultati
		paginate(6);
				
		if (cnt>0) {
			if (!_zoom_start) {
				var _zoom_start = map.getBoundsZoomLevel(bounds);
			}
			map.setCenter(bounds.getCenter(), _zoom_start);
			map.savePosition();
		} else {
			clearMarker();
	}
			
	jQuery.unblockUI(); 
	
	});
}

/**** pulizia marker e ripristino zoom ****/
function clearMarker() {
	map.clearOverlays();
	map.setCenter(center,8);
   	counter = 1;
}



/**** cancella marker ****/
function deleteMarker(id) {
	// elimina il marker dalla mappa
	var markerNum = parseInt(id);
	
	//chiude il fumetto
	map.getInfoWindow().hide();

	// elimina il marker dai risultati
 	mgr.removeMarker(MARKERS[markerNum]);
}


/****  crea i marker  ****/
function createMarker(what,objMarker) {
	var ext = 'u';
	var ico = objMarker.icona;
	if (objMarker.autore=='Storiaindustria.it') var ext = 'r';

	var markerIcon = new GIcon();
	markerIcon.image = '/css/mappe/luoghi_produzione/im/marker/'+ico+'_'+ext+'/image.png';
	markerIcon.printImage = '/css/mappe/luoghi_produzione/im/marker/'+ico+'_'+ext+'/printImage.gif';
	markerIcon.mozPrintImage = '/css/mappe/luoghi_produzione/im/marker/'+ico+'_'+ext+'/mozPrintImage.gif';
	markerIcon.iconSize = new GSize(28,38);
	markerIcon.transparent = '/css/mappe/luoghi_produzione/im/marker/'+ico+'_'+ext+'/transparent.png';
	markerIcon.iconAnchor = new GPoint(14,38);
	markerIcon.infoWindowAnchor = new GPoint(18,0);
	markerIcon.imageMap = [23,0,24,1,25,2,26,3,27,4,27,5,27,6,27,7,27,8,27,9,27,10,27,11,27,12,27,13,27,14,27,15,27,16,27,17,27,18,27,19,27,20,27,21,27,22,27,23,26,24,25,25,24,26,23,27,17,28,17,29,17,30,17,31,16,32,16,33,15,34,15,35,14,36,14,37,12,37,12,36,11,35,10,34,10,33,10,32,9,31,8,30,8,29,8,28,3,27,2,26,1,25,0,24,0,23,0,22,0,21,0,20,0,19,0,18,0,17,0,16,0,15,0,14,0,13,0,12,0,11,0,10,0,9,0,8,0,7,0,6,0,5,0,4,0,3,1,2,2,1,3,0];
	
	// Set up our GMarkerOptions object
	markerOptions = { icon:markerIcon, draggable:true };
		
	var marker = new GMarker(objMarker.point, markerOptions);
	MARKERS[objMarker.id] = marker;
	marker.disableDragging();
	map.addOverlay(marker);
	
	
	// creo lista risultati
	var objSidebar = {
		marker : marker,
		id : objMarker.id, 
		name : objMarker.name,
		indirizzo : objMarker.indirizzo,
		settore : objMarker.settore,
		periodo : objMarker.periodo,
		autore : objMarker.autore,
		cnt : objMarker.cnt
		}
	
	var sidebar = document.getElementById('risultati_elenco');
	var sidebarEntry = createSidebarEntry(objSidebar);
	sidebar.appendChild(sidebarEntry);
		
	// carico conteuto marker solo se clicco
	GEvent.addListener(marker, 'click', function(latlng){
		
		var searchUrl = '/mappe/luoghi_produzione/index.php/creakml?what=0&id='+objMarker.id;
		GDownloadUrl(searchUrl, function(data) {
			var xml = GXml.parse(data);
			var markers = xml.documentElement.getElementsByTagName("Placemark");
			var bounds = map.getBounds();
			
			var getNodeValue = function(tag){
				try{
					return markers[0].getElementsByTagName(tag)[0].childNodes[0].nodeValue;
				}catch(e){
					return '';
				}
			};

			var cnt = 0;
	
			var id_stabilimento = getNodeValue('id');
			var name = getNodeValue('name');
			var descrizione = getNodeValue('description');
			var settore = getNodeValue('settore');
			var periodo = getNodeValue('periodo');
			var autore = getNodeValue('autore');
			var indirizzo = getNodeValue('indirizzo');
			var commento = getNodeValue('commenti');
			var funzioni = getNodeValue('funzioni');
			var ico = getNodeValue('icona');
			var immagine = getNodeValue('immagine_prima');
			var immagini = getNodeValue('immagini');
			var video = getNodeValue('video');
			var pagine = getNodeValue('pagine');
			var mappe = getNodeValue('mappe');
			var risorse = getNodeValue('risorse')
			var countmappe = getNodeValue('countmappe');
			var countpagine = getNodeValue('countpagine');
			var countcommenti = getNodeValue('countcommenti');
				
			var objContent = {
				point : objMarker.point,
				marker : marker, 
				id_stabilimento : id_stabilimento,
				name : name,
				descrizione: descrizione, 
				settore : settore, 
				periodo : periodo, 
				autore : autore,
				indirizzo : indirizzo,
				commento : commento, 
				funzioni : funzioni, 
				icona : ico, 
				immagine : immagine, 
				immagini : immagini,
				video : video,
				pagine : pagine,
				mappe : mappe,
				risorse : risorse,
				countmappe : countmappe,
				countpagine : countpagine, 
				countcommenti : countcommenti,
				selectedtab : 0
			}
			
			contentMarker(objContent);
			++cnt;
		
		});
	});
	
	
	objInizialize = {
			marker : marker, 
			autore : objMarker.autore,
			name : objMarker.name,
			id : objMarker.id,
			zoom: objMarker.zoom
	}
	
	inizializzaDrag(objInizialize);
   
	if (what==0) {
		GEvent.trigger(marker, 'click');
	}
	
	return marker;
}

/**** inizializzazione evento drag del marker ****/
function inizializzaDrag(objInizialize){

	GEvent.addListener(objInizialize.marker, "dragstart", function() {
    	map.closeInfoWindow();
    });

    GEvent.addListener(objInizialize.marker, "dragend", function() {
		var point = objInizialize.marker.getPoint();
		if (point) {
			geo(2,point,objInizialize.id,objInizialize.autore);
		}
	});
	
    // ritorno alla situazione precedente
	//GEvent.addListener(map, "infowindowclose", function() { 
    //	map.setCenter(map.returnToSavedPosition(), objInizialize.zoom); 
    //}); 

}

//****** Crea contenuto del markero piccolo e grande *****/
function contentMarker(objContent) {	

	var  html_sum = '<table summary="dettagli dello stabilimento" width="70%">';
	html_sum += '<tr><td colspan="2">&nbsp;</td>';
	html_sum += '<tr><th>Settore industriale:</th><td>' + objContent.settore + '</td></tr>';
	html_sum += '<tr><th>Periodo:</th><td>' + objContent.periodo + '</td></tr>';
	html_sum += '<tr><th>Indirizzo:</th><td>' + objContent.indirizzo + '</td></tr>';
	html_sum += '<tr><th>Inserito da:</th><td>' + objContent.autore + '</td></tr>';
	html_sum += '</table>';
	html_sum += objContent.funzioni;
		
	var html_descrizione = '<div class="descrizione"><p>' + objContent.descrizione + '</p></div>';

	var html_min = '<div id="mincontent">';
	html_min += '<span id="counter" data="'+objContent.id_stabilimento+'"></span>';
	html_min += '<h4>'+objContent.name+'</h4>';
	html_min += objContent.immagine;
	html_min += '<div class="azioni">';
	html_min += '<a href="javascript:void(0)" onclick="map.getInfoWindow().maximize()">Altre informazioni &raquo;</a>';
	html_min += '<span class="testonascosto">&nbsp;|&nbsp;</span>';
	/*if (objContent.countcommenti>0) {
		html_min += '<a href="javascript:void(0)" onclick="openCommenti()" >('+objContent.countcommenti+') Commenti</a>';
	}*/
	html_min += '</div>';
	html_min += '<table summary="dettagli dello stabilimento" width="100%">';
	html_min += '<tr><th nowrap>Settore industriale:</th><td><span id="marker_settore" data="' + objContent.settore + '">' + objContent.settore + '</span></td></tr>';
	html_min += '<tr><th>Periodo:</th><td>' + objContent.periodo + '</td></tr>';
	html_min += '<tr><th>Indirizzo:</th><td>' + objContent.indirizzo + '</td></tr>';
	html_min += '<tr><th>Inserito da:</th><td>' + objContent.autore + '</td></tr>';
	html_min += '</table>';
	html_min += objContent.funzioni;
	html_min += '</div>';

	
	openContent(objContent,html_min, html_sum,html_descrizione);

}
  
//****** creo fumetto con i tab *****/
function openContent(objContent,html_min, html_sum,html_descrizione) {
	
	var bounds = new GLatLngBounds();

	var min = html_min;
	var sum = html_sum;
	
	var objTabDescription = {
							descrizione : 'Descrizione',
							risorse_s   : 'Risorse su Storiaindustria.it', 
							risorse_w   : 'Risorse sul web ('+objContent.countpagine+')',
							carte       : 'Carte storiche ('+objContent.countmappe+')',
							commenti    : 'Commenti (<span id="countcommenti">'+objContent.countcommenti+'</span>)'
							}

	
	if ((objContent.countcommenti>0) && (objContent.countpagine>0) && (objContent.countmappe>0)) {
		var tabs = [
		     new MaxContentTab(objTabDescription.descrizione, html_descrizione+objContent.video+objContent.immagini),
		     new MaxContentTab(objTabDescription.risorse_s, objContent.risorse),
		     new MaxContentTab(objTabDescription.risorse_w, objContent.pagine), 
		     new MaxContentTab(objTabDescription.carte, objContent.mappe),
		     new MaxContentTab(objTabDescription.commenti, objContent.commento)
		     ];
		} else if ((objContent.countcommenti==0) && (objContent.countpagine>0) && (objContent.countmappe>0)) {
		var tabs = [
		     new MaxContentTab(objTabDescription.descrizione, html_descrizione+objContent.video+objContent.immagini),
		     new MaxContentTab(objTabDescription.risorse_s, objContent.risorse),
		     new MaxContentTab(objTabDescription.risorse_w, objContent.pagine), 
		     new MaxContentTab(objTabDescription.carte, objContent.mappe),
		     ];
		} else if ((objContent.countcommenti>0) && (objContent.countpagine==0) && (objContent.countmappe>0)) {
			var tabs = [
		     new MaxContentTab(objTabDescription.descrizione, html_descrizione+objContent.video+objContent.immagini),
		     new MaxContentTab(objTabDescription.risorse_s, objContent.risorse),
		     new MaxContentTab(objTabDescription.carte, objContent.mappe),
		     new MaxContentTab(objTabDescription.commenti, objContent.commento)
		     ];
		} else if ((objContent.countcommenti==0) && (objContent.countpagine==0) && (objContent.countmappe>0)) {
			var tabs = [
		     new MaxContentTab(objTabDescription.descrizione, html_descrizione+objContent.immagini+objContent.video),
		     new MaxContentTab(objTabDescription.risorse_s, objContent.risorse),
		     new MaxContentTab(objTabDescription.carte, objContent.mappe)
		     ];
		} else if ((objContent.countcommenti==0) && (objContent.countpagine>0) && (objContent.countmappe==0)) {
			var tabs = [
		     new MaxContentTab(objTabDescription.descrizione, html_descrizione+objContent.video+objContent.immagini),
		     new MaxContentTab(objTabDescription.risorse_s, objContent.risorse),
		     new MaxContentTab(objTabDescription.risorse_w, objContent.pagine) 
		     ]; 
		} else if ((objContent.countcommenti>0) && (objContent.countpagine==0) && (objContent.countmappe==0)) {
			var tabs = [
		     new MaxContentTab(objTabDescription.descrizione, html_descrizione+objContent.video+objContent.immagini),
		     new MaxContentTab(objTabDescription.risorse_s, objContent.risorse),
		     new MaxContentTab(objTabDescription.commenti, objContent.commento)
		     ];        	                            	
		} else if ((objContent.countcommenti>0) && (objContent.countpagine>0) && (objContent.countmappe==0)) {
			var tabs = [
		     new MaxContentTab(objTabDescription.descrizione, html_descrizione+objContent.video+objContent.immagini),
		     new MaxContentTab(objTabDescription.risorse_s, objContent.risorse),
		     new MaxContentTab(objTabDescription.risorse_w, objContent.pagine), 
		     new MaxContentTab(objTabDescription.commenti, objContent.commento)
		     ];        	                            	
		} else {
			var tabs = [
		     new MaxContentTab(objTabDescription.descrizione, html_descrizione+objContent.video+objContent.immagini),
		     new MaxContentTab(objTabDescription.risorse_s, objContent.risorse)
		     ];        	        	
		}
	
	objContent.marker.openMaxContentTabsHtml(map, min, sum, tabs,{maxTitle: objContent.name,selectedTab: objContent.selectedtab});

	map.setCenter(objContent.point);

}

/***** Creo elenco marker *****/ 
function createSidebarEntry(objSidebar){
	var div = document.createElement('div');
    $(div)
    .attr("id",objSidebar.id)
    .addClass("items");
         
    var html_result = '<dl>';
    html_result += '<dt><a href="#" class="puntamento">' + objSidebar.cnt + '</a>. ' + objSidebar.name + '- <a class="maximize" href="javascript:void(0)">altre informazioni &raquo;</a></dt>';//onclick="javascript:map.getInfoWindow().maximize()"
    html_result += '<dd>';
    html_result += 'Settore industriale: ' + objSidebar.settore + '<br />';
    html_result += 'Periodo: ' + objSidebar.periodo + '<br />';
    html_result += 'Inserito da: ' + objSidebar.autore + '<br />';
    html_result += '</dd>';
    html_result += '</dl>';
   
    div.innerHTML = html_result;
    div.style.cursor = 'pointer';
  	div.style.marginBottom = '5px';


    GEvent.addDomListener(div, 'click', function(e){
		var _target = e.target || e.srcElement;
        var _tag = _target.tagName.toString().toLowerCase();
		GEvent.trigger(objSidebar .marker, 'click');
		if(_tag == 'a'){
			
			//l'evento infowindowopen non mi sembra funzionare. quindi faccio questo
			var _i = setInterval(function(){
				
				var _s = $("#mincontent");
				if(_s.length > 0){
					_s.find(".azioni > a:eq(0)").trigger("click");//primo link?
					clearInterval(_i);
					_i = false;
				}
			}, 1000);
		}
    });
	
    return div;
}

/***** Filtra secondo l'arco temporale *****/
function filterMarkers() {

	map.clearOverlays();
	document.getElementById('risultati_elenco').innerHTML='';
	

	var bounds = map.getBounds();
	var southWest_lat = bounds.getSouthWest().lat();
	var southWest_lng = bounds.getSouthWest().lng();
	var northEast_lat = bounds.getNorthEast().lat(); 
	var northEast_lng = bounds.getNorthEast().lng(); 

	var attivo_dal = Number(document.getElementById('valueA').value);
	var attivo_al  = Number(document.getElementById('valueB').value);
	var what 	   = document.getElementById('what').value;
	var cnt = 0;

	var tot = poi.length;
  
	var data = new Date();
	var anno =  data.getFullYear();

	for (var i = 0; i < poi.length; i++) {
		//if (!((attivo_dal>poi[i][8]) && (attivo_al<poi[i][7]))) {
		//  attivo_dal = estremo sinistro timeline (X)
		//	attivo_al = estremo destro timeline (Y)
		// poi[1][7] = A
		// poi[1][8] = B
		//if ((poi[i][7] >= attivo_dal) && (poi[i][8] <= attivo_al)) {

		var attivo_dal_kml = poi[i][7].replace('(','');
		      attivo_dal_kml = attivo_dal_kml.replace(')','');
		      
		var attivo_al_kml = poi[i][8].replace('(','');
		      attivo_al_kml = attivo_al_kml.replace(')','');
		      
		if ((!(attivo_al<attivo_dal_kml)) && (!(attivo_dal>attivo_al_kml))) {	
			
			if (((poi[i][5]>southWest_lat.toFixed(5)) && (poi[i][6]>southWest_lng.toFixed(5))) && ((poi[i][5]<northEast_lat.toFixed(5)) && (poi[i][6]<northEast_lng.toFixed(5)))) {
				
				var periodo = poi[i][7] + '-'+ poi[i][8];
				if (poi[i][8]==anno) {
					periodo = poi[i][7] + ' - attivo';
				}
				
				++cnt;
	
				//  visualizza  marker 
				var point = new GLatLng(poi[i][5],poi[i][6]);
			
				var objMarker = {
						point : point,
						cnt :cnt,
						periodo: periodo,
						totale: tot,
						id :poi[i][0] ,
						name : poi[i][1],
						settore : poi[i][2],
						autore : poi[i][3],
						indirizzo : poi[i][4],
						icona : poi[i][9]
					}
					
				createMarker(4,objMarker);
				bounds.extend(point);
		
			} 
		} 
	}

	setInput(what, cnt);
	paginate(6);
	
	if (cnt==0) {
		clearMarker();
	} else {
		if (!_zoom_filter) {
			var _zoom_filter = map.getBoundsZoomLevel(bounds);
		}
		map.setCenter(bounds.getCenter(), _zoom_filter);
	}
}




/****  visualizza link marker partendo dalla mail ****/
function viewMarker(id) {	

	map.clearOverlays();
	
	var center = map.getCenter();

	var bounds = map.getBounds();
	var southWest = bounds.getSouthWest();
	var northEast = bounds.getNorthEast(); 
	
	bounds.extend(southWest);
	bounds.extend(northEast); 

	var searchUrl = '/mappe/luoghi_produzione/index.php/creakml?what=0&id='+id;
	GDownloadUrl(searchUrl, function(data) {

		var xml = GXml.parse(data);
		var markers = xml.documentElement.getElementsByTagName("Placemark");
		var bounds = new GLatLngBounds();
		var sidebar = document.getElementById('risultati');
		var tot = markers.length;
		
		var getNodeValue = function(tag){
			try{
				return markers[i].getElementsByTagName(tag)[0].childNodes[0].nodeValue;
			}catch(e){
				return '';
			}
		};		
		
		var cnt = 1; 
		
		var data = new Date();
		var anno =  data.getFullYear();
	
		for (var i = 0; i < markers.length; i++) {
				
			poi[i] = new Array(10);
			poi[i][0] = getNodeValue('id');
			poi[i][1] = getNodeValue('name');
			poi[i][2] = getNodeValue('settore');
			poi[i][3] = getNodeValue('autore');
			poi[i][4] = getNodeValue('indirizzo');
			poi[i][5] = parseFloat(getNodeValue('latitude'));
			poi[i][6] = parseFloat(getNodeValue('longitude'));
			poi[i][7] = Number(getNodeValue('attivo_dal'));
			poi[i][8] = Number(getNodeValue('attivo_al'));
			poi[i][9] = getNodeValue('icona');
									
			var periodo = poi[i][7] + '-'+ poi[i][8];
			if (poi[i][8]==anno) {
				periodo = poi[i][7] + ' - attivo';
			}

			++cnt;
			
			var point = new GLatLng(poi[i][5],poi[i][6]);
			var objMarker = {
				point : point,
				cnt :cnt,
				periodo: periodo,
				totale: tot,
				id : poi[i][0],
				name : poi[i][1],
				settore : poi[i][2],
				autore : poi[i][3],
				indirizzo : poi[i][4],
				icona : poi[i][9]
			}
			
			//  visualizza  marker 
			createMarker(0,objMarker);
			bounds.extend(point);
		}		
			
		// aggiorno i contatori
		setInput(1, cnt);
		
		if (cnt>1) {
			map.setCenter(bounds.getCenter(), map.getBoundsZoomLevel(bounds));
		} else {
			alert('Lo stabilimento richiesto non č stato trovato o č giā stato rimosso!');
			clearMarker();
		}
	
	});
}
