/********************************
	routeParameters.js
	
	Author: Vito Rifino-MC
********************************/
//Variabili globali per routing-geocoding
nomeServizioRtGc = "pkt219_RouteServer";

nomeHostServizioRtGc = "ptpuglia.viaggiareinpuglia.it";
CartanetDir=".";
// Server ArcIms da variabiliJS di Cartanet
var hostName = nomeHostServizioRtGc;

// Url per le richieste ArcIms
var serverURL  = "http://" + hostName + "/servlet/com.esri.esrimap.Esrimap?ServiceName=";

// Nome del servizio
var imsURL = serverURL + nomeServizioRtGc;  			// image service
var imsRouteURL    = imsURL + "&CustomService=Route";	// route service
var imsGeoCoderURL = imsURL + "&CustomService=SDCGeocode"; // image service con geocode

//Nome e path del layer per la visualizzazione dei risultati di geocoding
var layerGeocodingName = "geocodingLayer";
var urlLayerGeocoding = "http://" + document.location.host + "/" + CartanetDir + "/RoutingGeocoding/images/IndirizzoTrovato.png"

//Variabili per la richiesta aggiuntiva per ArcIms per il routing
var bodyXmlRouting = "";
var aggiornaRouting = true;

//Definizioni Array per il parsing dei nomi dei servizi di geocoding e per i parametri
//Servono anche per una questione di visualizzazione del menu di geocodifica:
//il nome dei parametri non può essere lungo a piacere.
//template per oggetto parser dei nomi dei servizi di geocoding
function ParsNameGcService(serviceName,parseServiceName,aParsNameGcParameter,type) {
    this.serviceName = serviceName;
    this.parseServiceName = parseServiceName;       
    this.aParsNameGcParameter = aParsNameGcParameter;
    this.type = type;    
}
//template per oggetto parser dei nomi dei parametri relativi a servizi di geocoding
function ParsNameGcParameter(parameterName,parseParameterName,visibility,defaultValue,coord) {
    this.parameterName = parameterName;
    this.parseParameterName = parseParameterName;       
    this.visibility = visibility;
    this.defaultValue = defaultValue;
    this.coord = coord;    
}

//Template dell'oggetto che contiene i parametri aggiuntivi per la ricerca indirizzi avanzata
function extraAddressParameter(nameGcParameter,prefix,civic) {
	this.nameGcParameter = nameGcParameter;
    this.prefix = prefix;
    this.civic = civic;    
}

//Array per il parsing dei nomi dei servizi di Geocoding
var aParsNameGcService = new Array();
var lengthAParsNameGcService = 0;

//Geocodifica Incrocio
var aParsNameGcParameter = new Array();
var lengthAParsNameGcParameter = 0;
aParsNameGcParameter[lengthAParsNameGcParameter] = new ParsNameGcParameter("Address or Street","Indirizzo o strada",true,"","");
lengthAParsNameGcParameter++;
aParsNameGcParameter[lengthAParsNameGcParameter] = new ParsNameGcParameter("Cross Street","Incrocio",true,"","");
lengthAParsNameGcParameter++;
aParsNameGcParameter[lengthAParsNameGcParameter] = new ParsNameGcParameter("City","Comune",true,"","");
lengthAParsNameGcParameter++;
aParsNameGcParameter[lengthAParsNameGcParameter] = new ParsNameGcParameter("Postal Code","CAP",false,"","");
lengthAParsNameGcParameter++;
aParsNameGcParameter[lengthAParsNameGcParameter] = new ParsNameGcParameter("Country","Nazione",false,"it","");
lengthAParsNameGcParameter++;
aParsNameGcService[lengthAParsNameGcService] = new ParsNameGcService("Geocodifica incrocio","Incrocio",aParsNameGcParameter,"N");
lengthAParsNameGcService++;

//Geocodifica paese
var aParsNameGcParameter = new Array();
var lengthAParsNameGcParameter = 0;
aParsNameGcParameter[lengthAParsNameGcParameter] = new ParsNameGcParameter("City","Comune",true,"","");
lengthAParsNameGcParameter++;
aParsNameGcParameter[lengthAParsNameGcParameter] = new ParsNameGcParameter("Country","Nazione",false,"it","");
lengthAParsNameGcParameter++;
aParsNameGcService[lengthAParsNameGcService] = new ParsNameGcService("Geocodifica paese","Comune",aParsNameGcParameter,"N");
lengthAParsNameGcService++;

//Geocodifica CAP
var aParsNameGcParameter = new Array();
var lengthAParsNameGcParameter = 0;
aParsNameGcParameter[lengthAParsNameGcParameter] = new ParsNameGcParameter("Postal Code","CAP",true,"","");
lengthAParsNameGcParameter++;
aParsNameGcParameter[lengthAParsNameGcParameter] = new ParsNameGcParameter("Country","Nazione",false,"it","");
lengthAParsNameGcParameter++;
aParsNameGcService[lengthAParsNameGcService] = new ParsNameGcService("Geocodifica CAP","CAP",aParsNameGcParameter,"N");
lengthAParsNameGcService++;

//Geocodifica Indirizzo
var aParsNameGcParameter = new Array();
var lengthAParsNameGcParameter = 0;
aParsNameGcParameter[lengthAParsNameGcParameter] = new ParsNameGcParameter("Address or Intersection","Indirizzo",true,"","");
lengthAParsNameGcParameter++;
aParsNameGcParameter[lengthAParsNameGcParameter] = new ParsNameGcParameter("City","Comune",true,"","");
lengthAParsNameGcParameter++;
aParsNameGcParameter[lengthAParsNameGcParameter] = new ParsNameGcParameter("Postal Code","CAP",false,"","");
lengthAParsNameGcParameter++;
aParsNameGcService[lengthAParsNameGcService] = new ParsNameGcService("Geocodifica indirizzo","Indirizzo",aParsNameGcParameter,"A");
lengthAParsNameGcService++;
// variabile che stabilisce se si tratta di un servizio di ricerca indirizzi avanzato
var flagAddressGeocoding = false;
var indexAddressService = -1;
var indexAParsNameGC = -1;
var objExtraParameter = new extraAddressParameter("Indirizzo","Prefisso","Civico");
var risultatiAddressGeocoding = "";
var viaAddressGeocoding = "";
var viaAddressGeocodingToShow = "";
var comuneAddressGeocoding = "";
var flagAddressGeocodingByCandidates = false;

//Geocodifica Inversa
var aParsNameGcParameter = new Array();
var lengthAParsNameGcParameter = 0;
aParsNameGcParameter[lengthAParsNameGcParameter] = new ParsNameGcParameter("X","X",true,"","X");
lengthAParsNameGcParameter++;
aParsNameGcParameter[lengthAParsNameGcParameter] = new ParsNameGcParameter("Y","Y",true,"","Y");
lengthAParsNameGcParameter++;
aParsNameGcParameter[lengthAParsNameGcParameter] = new ParsNameGcParameter("Style","Stile",false,"","");
lengthAParsNameGcParameter++;
aParsNameGcParameter[lengthAParsNameGcParameter] = new ParsNameGcParameter("Direction","Direzione",false,"","");
lengthAParsNameGcParameter++;
aParsNameGcService[lengthAParsNameGcService] = new ParsNameGcService("Strade reverse","da coordinate",aParsNameGcParameter,"R");
lengthAParsNameGcService++;
//Fine Definizioni Array per il parsing dei nomi dei servizi di geocoding e per i parametri

// template per oggetto input geocode
function GCinput() {
        this.GCid = new Array();
        this.GClabel = new Array();
        this.GCdesc = new Array();
        this.GCvalue = new Array();
}

// template per oggetto parametri layer geocode
function GCLayerSetup(name,id,type, style) {
        this.layerName = name;
        this.layerId = id;
        this.type = type;
        this.style = style;
        this.input = new GCinput();
}

// template per i candidati trovati
function GCcandidateSetup(address,civico,score,x,y) {
        this.address = address;
        this.civico = civico;
        this.score = score;
        this.x = x;
        this.y = y;
}

var GCLayers = new Array();
var GCActiveLayer = 1;
var GCidCount=0;
var GCRevNum = -1;

var GCLayerCount=0;
var GCpointX = new Array();
var GCpointY = new Array();
var GCpointCount = 0;
var GCscore = new Array();
var GCaddress = new Array();
var GCCivico = new Array();
var GCLang    = new Array();

GCLang[0]     = new Array();
GCLang[0][0]  = "it";
GCLang[0][1]  = "IT";
GCLang[0][2]  = "ITALIANO";
//gestione errori multilingua
GCLang[0][3]  = "Si è verificato un errore durante una richiesta di Routing-Geocoding";
GCLang[0][4]  = "Non è stato individuato nessun percorso";
GCLang[0][5]  = "E' necessario specificare almeno il punto di partenza e il punto di arrivo";
GCLang[0][6]  = "Il punto non appartiene a nessuna strada";
GCLang[0][7]  = "Specificare entrambe le coordinate";
GCLang[0][8]  = "Specificare almeno un campo per la ricerca"
GCLang[0][9]  = "In questo servizio non ci sono parametri per impostare la ricerca"
GCLang[0][10]  = "Specificare meglio i parametri di ricerca"
GCLang[0][11]  = "Attendere"
GCLang[0][12]  = "Chiudi"
GCLang[0][13]  = "Riduci ad icona"
GCLang[0][14]  = "Ripristina"
GCLang[0][15]  = "Valori ammessi: minLat(38) - maxLat(42) - minLong(12) - maxLong(22)"
GCLang[0][16]  = "Sono ammessi solo valori numerici"
GCLang[0][17]  = "Il campo \"Titolo\" è obbligatorio!"
GCLang[0][18]  = "Il campo \"Descrizione\" è obbligatorio!"
GCLang[0][19]  = "E' necessario indicare un punto sulla mappa!"
GCLang[0][20]  ="Il campo \"Nome\" è obbligatorio!"
GCLang[0][21]  ="Il campo \"Cognome\" è obbligatorio!"
GCLang[0][22]  ="Il campo \"E-mail\" è obbligatorio!"
GCLang[0][23]  ="Indirizzo e-mail non valido!"
GCLang[0][24]  ="Il file inserito ha un formato non permesso.I formati supportati sono:jpg,jpeg,gif,png."
GCLang[0][25]  ="Attivare almeno un punto di interesse sulla mappa"
GCLang[0][26]  ="Selezionare almeno un campo"
GCLang[0][27]= "L'area di stampa è indicata sullo schermo. Vuoi stampare?"
GCLang[0][28]= "Punti di interesse"
GCLang[0][29]= "Modifica il percorso"
GCLang[0][30]= "Crea il tuo percorso"

GCLang[1]     = new Array();
GCLang[1][0]  = "en";
GCLang[1][1]  = "US";
GCLang[1][2]  = "INGLESE";
GCLang[1][3]  = "An error occured during the Routing-Geocoding request";
GCLang[1][4]  = "No route could be determined";
GCLang[1][5]  = "It is necessary to specify a start and an arrival point";
GCLang[1][6]  = "This point cannot be associated to a street";
GCLang[1][7]  = "Specify both coordinates"
GCLang[1][8]  = "Specify at least a field for the search request"
GCLang[1][9]  = "Specify Parameters for this Service"
GCLang[1][10]  = "The search request's parameters must be narrowed"
GCLang[1][11]  = "Please wait"
GCLang[1][12]  = "Close"
GCLang[1][13]  = "Minimize"
GCLang[1][14]  = "Maximize"
GCLang[1][16]  = "Only numerical values are accepted"
GCLang[1][17]  = "The field \"Title\" is mandatory!"
GCLang[1][18]  = "The field \"Description\" is mandatory!"
GCLang[1][19]  = "It is necessary to indicate a point on the map!"
GCLang[1][20]  ="The field \"Name\" is mandatory!"
GCLang[1][21]  ="The field \"Surname\" is mandatory!"
GCLang[1][22]  ="The field \"E-mail\" is mandatory!"
GCLang[1][23]  ="e-mail address not correct!"
GCLang[1][24]  ="File format not allowed.The right file formats are: jpg,jpeg,gif,png."
GCLang[1][25]  ="Please activate at least a point of interest on the map"
GCLang[1][26]  ="Please select at least a field"
GCLang[1][27]= "The print area is shown on the monitor. Do you want to print?"
GCLang[1][28]= "Points of interest"
GCLang[1][29]= "Modify the route"
GCLang[1][30]= "Create your route"
//Jens

GCLang[2]     = new Array();
GCLang[2][0]  = "de";
GCLang[2][1]  = "DE";
GCLang[2][2]  = "TEDESCO";
GCLang[2][3]  = "Während einer Routing-Geocoding Anfrage ist ein Fehler aufgetreten";
GCLang[2][4]  = "Es konnte keine Route ermittelt werden";
GCLang[2][5]  = "Es muss mindestens ein Start- und ein Zielpunkt angegeben werden";
GCLang[2][6]  = "Dieser Punkt kann keiner Straße zugeordnet werden";
GCLang[2][7]  =	"Bitte beide Koordinaten angeben";
GCLang[2][8]  = "Bitte mindestens ein Eingabefeld für die Anfrage ausfüllen"
GCLang[2][9]  = "Bitte für diesen Service Suchparameter angeben"
GCLang[2][10]  = "Die Suchparameter müssen eingeengt werden"
GCLang[2][11]  = "Bitte warten"
GCLang[2][12]  = "Close"
GCLang[2][13]  = "Minimize"
GCLang[2][14]  = "Maximize"
GCLang[2][15]  = "Erlaubte Werte: Breite zwischen 38 und 42 Grad, Länge zwischen 12 und 22 Grad"
GCLang[2][16]  = "Nur Zahlen als Werte erlaubt"
GCLang[2][17]  = "\"Titel\" ist obbligatorisch!"
GCLang[2][18]  = "\"Beschreibung\" ist obbligatorisch!"
GCLang[2][19]  = "Sie müssen einen Punkt auf der Karte wählen!"
GCLang[2][20]  ="\"Vorname\" ist obbligatorisch!"
GCLang[2][21]  ="\"Nachname\" ist obbligatorisch!"
GCLang[2][22]  ="\"Email\" ist obbligatorisch!"
GCLang[2][23]  ="Ungültige email Addresse!"
GCLang[2][24]  ="Die einzufügende Datei muß in einem der folgenden Formate vorliegen: \ngif\njpg\njpeg\png."
GCLang[2][25]  ="Bitte wählen Sie mindestens eine interessante Stätte auf der Karte"
// JS: come si seleziona un campo? cosa vuol dire "Selezionare almeno un campo" ? Ho tradotto letteramente
GCLang[2][26]  ="Bitte mindestens ein Feld auswählen"
GCLang[2][27]= "Der Druckbereich wird angezeigt. Möchten Sie drucken?"
GCLang[2][28]= "Interessante Stätten"
GCLang[2][29]= "Route ändern"
GCLang[2][30]= "Ihre Reiseroute"
//punti di partenza e arrivo
var RTPartenzaNames = "";
var RTPartenzaDesc = "";
var RTPartenzaCiv = "";
var RTPartenza = false;
var RTPartenzaX = 0;
var RTPartenzaY = 0;
//MC 02/10/07
var RTPartenzaIdMarker="";
var RTPartenzaIdPoi = 0;
var RTPartenzaTematismoPoi ="" ;
var RTPartenzaTypePoi = "";
var RTPartenzaTitlePoi = "";
//end MC
var RTArrivoNames = "";
var RTArrivoDesc = "";
var RTArrivoCiv = "";
var RTArrivo = false;
var RTArrivoX = 0;
var RTArrivoY = 0;
//MC 02/10/07
var RTArrivoIdMarker="";
var RTArrivoIdPoi = 0;
var RTArrivoTematismoPoi ="" ;
var RTArrivoTypePoi = "";
var RTArrivoTitlePoi = "";
//end MC

//punti di stop
var RTStopNames = new Array();
var RTStopDesc = new Array();
var RTStopsCount = 0;
var RTStopX = new Array();
var RTStopY = new Array();
var RTStopCiv =new Array();
//MC 02/10/07
var RTStopIdMarker = new Array();
var RTStopIdPoi = new Array();
var RTStopTematismoPoi = new Array();
var RTStopTypePoi = new Array();
var RTStopTitlePoi = new Array();
//end MC


//barriere
var RTBarNames = new Array();
var RTBarDesc = new Array();
var RTBarCount = 0;
var RTBarX = new Array();
var RTBarY = new Array();
var RTBarCiv =new Array();
var RTType = "quickest"; // or "shortest"
var RTLang = 0;
var RTHwyPref = 0;
var RTPrecision = 0.0;
var RTStopsChanged = false;
var RTBarsChanged = false;
var RTReply    = "";
var boolOrder = false;

// risultato
var RTEnvelope = null; // oggetto Envelope
var RTSegments = null; // array di oggetti RouteSegment
var RTSegmentsCount = 0;
var RTTotals = null; // oggetto RouteTotals
var RouteResult = false;

// maximum geocode candidates returned
var maxGeocodeCandidates=20;
// minimal acceptable geocode score for candidate
var minGeocodeScore=10;
// spelling sensitivity
var spellingSensitivity=10;
// variabile che stabilisce se si tratta di un servizio di reverse geocoding
var flagReverseGeocoding = false;
var indexReverseService = -1;
var coordInput = new Array();
var indexCoordInput = new Array();
var flagReverseGeocodingByClick = false;
//variabile che stabilisce se stiamo valutando una richiesta di reverse geocoding
//che serve per il routing
var flagReverseGeocodingForRouting = false;
var typeReverseGeocodingForRouting = "";
//variabile che individua la minima scala di zoom
//quando si seleziona un segmento di un percorso
//o un risultato della ricerca indirizzi
var minScaleR = 2000;
var scaleG = 2000;
//variabili per la conversione di coordinate
//richiesta dal reverse geocoding
var parConvFrom = "UT";
var parConvTo = "GG";
var parDatumIn = 2;
var parDatumOut = 2;
var parFuseIn = 33;
var parFuseOut = 33;
//variabile che stabilisce se stiamo aggiungendo o modificando
//punto di partenza o di arrivo
var flagModifyPA = true;
//variabile per il FEATURECOORDSYS e FILTERCOORDSYS
var FEATURECOORDSYS = "32633";
var FILTERCOORDSYS = "32633";
//Coefficente per calcolare la precisione nella ricerca dei percorsi
var CoefRTPrecision = 2000;

/*******************************************
* parametri di visualizzazione Routing
*******************************************/   
var routeLineColor = '128,0,128';
//var routeLineColor = '#00FF00';
var routeLineWidth = 8;

var routeStopColor = "0,0,255";
var routeStopSize = 15;
var routeStopLabelColor = "255,255,255";
var routeStopLabelWidth = 24;
var routeStopImg="C:\\siti_web\\pkt219_Portale_Turistico_Pugliese\\Stradario\\BandierinaMappaPassaggio.gif"
var routeStopImg="http:\\\ptpugliatest.dev.planetek.it\\\portale\\\RoutingGeocoding\\\images\\\BandierinaMappaPassaggio.gif"
var routeBarColor = "255,0,0";
var routeBarSize = 10;
var routeBarLabelColor = "255,0,0";
var routeBarLabelWidth = 14;
var routeBarImg="C:\\siti_web\\pkt219_Portale_Turistico_Pugliese\\Stradario\\BandierinaMappaBarriera.gif"
var routeBarImg="http:\\\ptpugliatest.dev.planetek.it\\\portale\\\RoutingGeocoding\\\images\\\BandierinaMappaBarriera.gif"

var routeStartColor = "0,125,125";
var routeStartSize = 14;
var routeStartLabelColor = "0,0,0";
var routeStartLabelWidth = 12;
var routeStartImg="C:\\siti_web\\pkt219_Portale_Turistico_Pugliese\\Stradario\\BandierinaMappaPartenza.gif"
var routeStartImg="http:\\\ptpugliatest.dev.planetek.it\\\portale\\\RoutingGeocoding\\\images\\\BandierinaMappaPartenza.gif"
var routeFinishColor = "255,0,0";
var routeFinishSize = 14;
var routeFinishLabelColor = "0,0,0";
var routeFinishLabelWidth = 12;
var routeFinishImg="C:\\siti_web\\pkt219_Portale_Turistico_Pugliese\\Stradario\\BandierinaMappa.gif"
var routeFinishImg="http:\\\ptpugliatest.dev.planetek.it\\\portale\\\RoutingGeocoding\\\images\\\BandierinaMappa.gif"
