
var miomarker=0;
risultato=0;

//se faccio invio parte la chiamata
function KeyCheck(e){
	var KeyID = (window.event) ? event.keyCode : e.keyCode;
	if (KeyID==13){
		verificaClick();
	}
}

//angolo tra due punti
function calcolaangolo(x1,y1,x2,y2){
	if (x2==x1 && y2==y1){
		return 0;
	}
	if (x2==x1 && y2<y1){
		return 90;
	}
	if (x2==x1 && y2>y1){
		return 270;
	}
	angolo=Math.atan((y2-y1)/(x2-x1));
	angolo=angolo/Math.PI*180;
	if (y2<y1 && x2<x1){
		return 180+angolo;
	}
	if (y2<y1 && x2>x1){
		//ALTO SINISTRA
		return 360+angolo;
	}
	if (y2>y1 && x2>x1){
		return angolo;
	}
	if (y2>y1 && x2<x1){
		return 180+angolo;
	}
}

//CHIAMATA RICERCA VIA    
jQuery(document).ready(function(){
	jQuery('#address-submit-1').click(function(){
		verificaClick();
		return false;   
	});
});

function verificaClick(){
	//cancella gli altri poligoni
	for (j=0;j<numeropoligoni;j++){
		jQuery('#map').jmap('RemovePolygon', poligoni[j]);
	}
	risultato=0;
	
	jQuery('#map').jmap('SearchAddress', {
		'query': jQuery('#address').val(),
		'returnType': 'getLocations'
	}, function(result, options) {
		var valid = Mapifies.SearchCode(result.Status.code);
		if (valid.success) {
			quanti=1;
			jQuery.each(result.Placemark, function(i, point){
				if (quanti++==1){
					//jQuery('#map').jmap('init', {'mapType':'map','mapZoom':9,'mapEnableType':true});
					
					if (miomarker!=0) jQuery('#map').jmap('RemoveMarker',miomarker);
					
					jQuery('#map').jmap('AddMarker',{
						'pointLatLng':[point.Point.coordinates[1], point.Point.coordinates[0]],
						'pointHTML':point.address
					},function( marker){
						miomarker=marker;
					});
					
					Mapifies.MoveTo(jQuery('#map'),{'mapCenter':[point.Point.coordinates[1], point.Point.coordinates[0]]},function(){
						
						//ora verifico la copertura
						verificaCopertura(45.3241,11.2822,4,0,360,0,point.Point.coordinates[1],point.Point.coordinates[0]);
						verificaCopertura(45.8754,11.5575,10,240,360,0,point.Point.coordinates[1],point.Point.coordinates[0]);
						verificaCopertura(45.5094,11.2808,12,60,260,0,point.Point.coordinates[1],point.Point.coordinates[0]);
						verificaCopertura(45.8505,11.5669,12,260,360,0,point.Point.coordinates[1],point.Point.coordinates[0]);
						verificaCopertura(45.8749,11.4626,2,0,360,0,point.Point.coordinates[1],point.Point.coordinates[0]);
						verificaCopertura(45.8683,11.6007,7,290,360,0,point.Point.coordinates[1],point.Point.coordinates[0]);
						verificaCopertura(45.8683,11.6007,5,0,150,0,point.Point.coordinates[1],point.Point.coordinates[0]);
						verificaCopertura(45.4572,11.5013,12,0,360,0,point.Point.coordinates[1],point.Point.coordinates[0]);
						verificaCopertura(45.567,11.4787,3,0,360,0,point.Point.coordinates[1],point.Point.coordinates[0]);
						verificaCopertura(45.5303,11.5088,4,0,360,0,point.Point.coordinates[1],point.Point.coordinates[0]);
						verificaCopertura(46.0438,11.5591,3,0,360,0,point.Point.coordinates[1],point.Point.coordinates[0]);
						verificaCopertura(45.9353,11.7796,7,220,320,0,point.Point.coordinates[1],point.Point.coordinates[0]);
						verificaCopertura(45.7475,11.4914,14,60,270,0,point.Point.coordinates[1],point.Point.coordinates[0]);
						verificaCopertura(45.8073,11.7418,8,60,180,0,point.Point.coordinates[1],point.Point.coordinates[0]);
						verificaCopertura(45.5265,11.498,2,0,360,0,point.Point.coordinates[1],point.Point.coordinates[0]);
						verificaCopertura(45.8197,11.8349,6,0,360,0,point.Point.coordinates[1],point.Point.coordinates[0]);
						verificaCopertura(45.8817,11.6343,5,200,360,0,point.Point.coordinates[1],point.Point.coordinates[0]);
						verificaCopertura(45.6127,11.6892,3,0,360,0,point.Point.coordinates[1],point.Point.coordinates[0]);
						verificaCopertura(45.8552,11.7111,8,150,270,0,point.Point.coordinates[1],point.Point.coordinates[0]);
						verificaCopertura(45.8552,11.7111,5,0,90,0,point.Point.coordinates[1],point.Point.coordinates[0]);
						verificaCopertura(45.8121,11.7355,16,130,220,0,point.Point.coordinates[1],point.Point.coordinates[0]);
						verificaCopertura(45.8121,11.7355,8,270,330,0,point.Point.coordinates[1],point.Point.coordinates[0]);
						verificaCopertura(45.8885,11.733,14,250,340,0,point.Point.coordinates[1],point.Point.coordinates[0]);
						verificaCopertura(45.8885,11.733,5,90,200,0,point.Point.coordinates[1],point.Point.coordinates[0]);
						verificaCopertura(45.795,11.5475,14,80,240,0,point.Point.coordinates[1],point.Point.coordinates[0]);
						verificaCopertura(45.8318,11.4221,12,270,360,1,point.Point.coordinates[1],point.Point.coordinates[0]);
						verificaCopertura(45.8318,11.4221,12,0,80,1,point.Point.coordinates[1],point.Point.coordinates[0]);
						verificaCopertura(45.895726,11.552307,5,90,270,1,point.Point.coordinates[1],point.Point.coordinates[0]);
						verificaCopertura(45.783913,11.688554,4,0,90,1,point.Point.coordinates[1],point.Point.coordinates[0]);
						verificaCopertura(45.783913,11.688554,4,270,360,1,point.Point.coordinates[1],point.Point.coordinates[0]);
						verificaCopertura(45.527471,11.590811,5,0,360,1,point.Point.coordinates[1],point.Point.coordinates[0]);
						verificaCopertura(45.97602,11.81724,10,0,360,0,point.Point.coordinates[1],point.Point.coordinates[0]);
						verificaCopertura(45.94139,11.73778,10,0,360,0,point.Point.coordinates[1],point.Point.coordinates[0]);
						verificaCopertura(45.9479,11.70098,10,0,180,0,point.Point.coordinates[1],point.Point.coordinates[0]);
						verificaCopertura(45.47129,11.00093,7,120,240,1,point.Point.coordinates[1],point.Point.coordinates[0]);
						verificaCopertura(45.53242,11.46118,5,40,230,2,point.Point.coordinates[1],point.Point.coordinates[0]);
						verificaCopertura(45.3938,11.39851,8,0,50,2,point.Point.coordinates[1],point.Point.coordinates[0]);
						verificaCopertura(45.3938,11.39851,8,150,360,1,point.Point.coordinates[1],point.Point.coordinates[0]);
						verificaCopertura(45.63867,11.36897,13,0,85,1,point.Point.coordinates[1],point.Point.coordinates[0]);
						verificaCopertura(45.63817,11.38061,13,0,80,1,point.Point.coordinates[1],point.Point.coordinates[0]);
						verificaCopertura(45.63817,11.38061,3,320,360,1,point.Point.coordinates[1],point.Point.coordinates[0]);
						verificaCopertura(45.63867,11.36897,2,300,360,1,point.Point.coordinates[1],point.Point.coordinates[0]);
						verificaCopertura(45.66147,11.58294,10,300,360,1,point.Point.coordinates[1],point.Point.coordinates[0]);
						verificaCopertura(45.66147,11.58294,10,0,120,1,point.Point.coordinates[1],point.Point.coordinates[0]);
						
						//se al termine non ho antenne avverto
						if (risultato==0){
							jQuery('#continua').hide();
							alert("Nessuna copertura");
							return false;
						}else{
							jQuery('#continua').show();
							if (risultato==1) 
							alert("Copertura di 1 antenna");
							else
							alert("Copertura di "+risultato+" antenne");
							return false;
						}
					});
				}
			});
		} else {
			alert(valid.message);
			return false;
			//jQuery('#address').val(valid.message);
		}
	});
	return false;
}

function verificaCopertura(centrolat,centrolon,raggio,angolomin,angolomax, colore,miocentrolat,miocentrolon){
	distanza=Math.sqrt((centrolat-miocentrolat)*(centrolat-miocentrolat)*kmlat*kmlat+(centrolon-miocentrolon)*(centrolon-miocentrolon)*kmlon*kmlon);
	trovato=false;
	if (distanza<raggio){
		if (angolomin==0 && angolomax==360){
			trovato=true;
		}else{
			langolo=calcolaangolo(centrolat,centrolon,miocentrolat,miocentrolon);
			//se ho un angolomin negativo faccio due controlli
			if (angolomin<0){
				if (langolo>360+angolomin && langolo<360){ trovato=true; }
				if (langolo>0 && langolo<angolomax){ trovato=true; }
			} else
				if (langolo>angolomin && langolo<angolomax){ trovato=true; }
		}
	}
	
	//se la copertura ? buona disegno il poligono di copertura
	if (trovato){
		risultato++;
		disegnaCopertura(centrolat,centrolon,raggio,angolomin,angolomax,colore);
	}
}
