/* Copyright 2007-2008 SCube NewMedia. */

/** ============ CONFIGURAZIONE ============= */
/** Licenza del cliente */
var PATH_TEMPLATE = "/GeoCMS";

/** Licenza del cliente */
var LICENSE = "657373656c756e67612e69743b657373656c756e67612e636f6d3b38312e32372e3133322e31363b696e7472616a702e6d696c2e657373656c756e67612e6e6574-457373656c756e6761-1f4-1326a4f-7374616e64617264-0";
/** Progetto di appatenenza */
var PROGETTO = "StoreLocator";
var ID_NOME_PROGETTO = PROGETTO + "_106";
/** true per collegarsi al servizio di pubblicazione, false in caso contrario */
var PUBLISHER = true;
/** Frontend di impaginazione dei dati */
var FRONTEND = null;
/** Lingua da utilizzare per accedere ai contenuti */
var LANGUAGE = null;
/** Macchina a cui connetersi per accedere ai contenuti */
var HOST = null;

/** ============ COSTANTI ============= */
/** Suggerimenti per il calcolo itinerario qualora non sia possibile individuare le localitą  specificate */
var ERROR_PATH = "Impossibile calcolare il percorso richiesto: da \"ERROR_PATH_FROM\" a \"ERROR_PATH_TO\".\nSuggerimenti:\n - Assicurati che tutti i nomi di strade e cittą  siano stati digitati correttamente.\n - L'indirizzo deve comprendere una cittą  e una provincia.\n - Prova a inserire un codice postale.";

/** ============ API ============= */
var key = "ABQIAAAAUFrppv2oMiwmfR8jhoAHFRQCecenUwhGiRVk6bsTp8zLS8a7BRQQ9NXNSf0cGXW3xhh7-hbVXQ6w9Q";
if (document.domain == "esselunga.it" || document.domain == "www.esselunga.it") {
	key = "ABQIAAAABC8SCe9lvkf858krcc4S7BT9rbu6tmrb9GrHezU6gfr1zq9YRBRZuN6CBrlaZuQicnCcbUCAPh5YUw";
} else if (document.domain == "esselunga.com" || document.domain == "www.esselunga.com") {
	key = "ABQIAAAABC8SCe9lvkf858krcc4S7BSYuK9wGvc34To9n4recot79_7aABSLuLONYfiGkdGKIz1gRMRBZ5N7Ew";
} else if (document.domain == "81.27.132.16") {
	key = "ABQIAAAABC8SCe9lvkf858krcc4S7BR_Mue8MEeDMU6LPGP4NOI2B2NlfRRQHGNZSsWfCEt9QoMuhA55i-lIPg";
} else if (document.domain == "intrajp.mil.esselunga.net" || document.domain == "www.intrajp.mil.esselunga.net") {
	key = "ABQIAAAABC8SCe9lvkf858krcc4S7BRzoB1ovXMmh5AIpBiunS5Xv6BSQRQzQMeAzoRjW6a7re1-rrUK8B9zLQ";
} else if (document.domain == "www2.geocms.it") {
	key = "ABQIAAAA3uu2owEQeki2P_-Za5A32xRafwwbPDnP2hFogMfNaF9D0IbLIBQ6w2bV6GWUfaCKW7vtQRlOOhcqeQ";
}
document.write('<script src="http://web.geocms.it/a/' + ID_NOME_PROGETTO + '?file=api&amp;v=1.04&amp;license=' + LICENSE + '&amp;key=' + key + '"' +' type="text/javascript"></script>');

/** ============ COSTANTI ============= */

/** Livelli di progetto */
var LAYERS = {PUNTI_VENTIDA:"PuntiVendita",SEDI:"Sedi"}

/** Numero massimo di risultati prodotti dalla ricerca per vicinanza */
var NEAR_ADDRESS_MAX_RESULTS = 10;

/** Constanti per identificare errori sulla query */
var NO_QUERY = "";
/** Operatori per la gestione della query */
var OPERATOR_OR = " OR ";
var OPERATOR_AND = " AND ";
var QUERY_FAILURE = -1;
var QUERY_ABORT = -2;

/** Modalitą di stampa */
var PRINT_DATA = "2";
var PRINT_DIRECTION = "1";
var PRINT_GRAPHIC = "0";
var PRINT_MODE = "m";

/** Parametri di stampa */
var PRINT_DIRECTION_START_ADDRESS = "saddr";
var PRINT_DIRECTION_END_ADDRESS = "daddr";
//var PRINT_DIRECTION_TYPE = "t";

var PRINT_DATA_LAYER = "l";
var PRINT_DATA_QUERY = "q";
var PRINT_DATA_ADDRESS = "a";
var PRINT_DATA_TEXT = "t";

/** Suggerimenti per il calcolo itinerario qualora non sia possibile individuare le localitą specificate */
var ERROR_PATH = "Impossibile calcolare il percorso richiesto: da \"ERROR_PATH_FROM\" a \"ERROR_PATH_TO\".\nSuggerimenti:\n - Assicurati che tutti i nomi di strade e citta' siano stati digitati correttamente.\n - L'indirizzo deve comprendere una citta' e una provincia.\n - Prova a inserire un codice postale.";

/** Posizionamento della mappa */
var LATITUDINE = 44.68934357987895;
var LONGITUDINE = 9.966676986494858;
var ZOOM = 7;


/** ============ VARIABILI COMUNI ============= */
/** Gestore della mappa */
var GMap = null;

/** Contiene i parametri ricevuti da URL */
var ParamByURL = {};

// struttura dati da mandare in stampa
var PrintParameters = {};

/** ============ FUNZIONI ============= */
/**
 * Gestione creazione mappa
 */
function initialize() {
	if (SValidateLicense() == true) {
		try {
			// GEO_LOG_ERROR, GEO_LOG_WARNING, GEO_LOG_MESSAGE, GEO_LOG_DEBUG_USER, GEO_LOG_DEBUG_EVENT, GEO_LOG_DEBUG_METHOD, GEO_LOG_DEBUG_ALL
			// GeoLog.enable(GEO_LOG_MESSAGE);

			// inizializzo la mappa
			GMap = new GeoMap("map", "loading");

			// skip the first character, we are not interested in the "?"
			var query = location.search.substring(1);
			// split the rest at each "&" character to give a list of  "argname=value"  pairs
			var pairs = query.split("&");
			// cicliamo su tutti i parametri
			for (var i = 0; i < pairs.length; i++) {
				// break each pair at the first "=" to obtain the argname and value
				var pos = pairs[i].indexOf("=");
				if (pos > -1) {
					// var argname = pairs[i].substring(0, pos).toLowerCase();
					var argname = pairs[i].substring(0, pos);
					var value = pairs[i].substring(pos + 1);
					ParamByURL[argname] = decodeURIComponent(value);
				}
			};

			// gestione abilitazione logger
			var debug = ParamByURL["debug"];
			if (debug != null && debug.length > 0) {GeoLog.enable(debug);}

			// inizializzazione servizio remoto
			GMap.initializeRemoteService(LICENSE, PROGETTO, PUBLISHER, FRONTEND, LANGUAGE, HOST);


		} catch(e) {
			toException(e);
		}
	}
}

/**
 * Gestisce l'errore nel caso in cui si verifica una eccezione.
 * @param e eccezione da gestire.
 */
function toException(e) {
	var msg = "An exception occurred in the script.\nError name: " + e.name 
	+ ".\nError message: " + e.message;
	if (e.fileName) {msg += ".\nFile name: " + e.fileName;}
	if (e.lineNumber) {msg += ".\nLine number: " + e.lineNumber;	}

	alert(msg);
}

/** ============ STAMPA ============= */
/**
 * Stampa i contenuti presenti sulla mappa.
 */
function stampa() {
 	try {

		// richiamo la pagina di stampa
		var paramURL = "";
		for (var key in PrintParameters) {
			paramURL += "&" + key + "=" + encodeURIComponent(PrintParameters[key]);
		}
		
		window.open(PATH_TEMPLATE + "/stampa.html?" + paramURL, 'stampa', "height=600,width=800,menubar=yes,toolbar=yes,location=no,scrollbars=yes");
 		
 	} catch(e) {
		toException(e);
 	}
}

/**
 * Elimina le informazioni salvate per la stampa.
 */
function clearPrint() {
	PrintParameters = {};
}
/**
 * Salva le informazioni per la stampa del percorso.
 * @param saddr @see#calcolaPercorso
 * @param daddr @see#calcolaPercorso
 * @param type @see#calcolaPercorso
 */
function savePrintDirection(saddr, daddr) {
	// elimina le informazioni salvate per la stampa 
	clearPrint();
	
	// salvataggio stato stampa
	PrintParameters[PRINT_MODE] = PRINT_DIRECTION;
	PrintParameters[PRINT_DIRECTION_START_ADDRESS] = saddr;
	PrintParameters[PRINT_DIRECTION_END_ADDRESS] = daddr;
	//PrintParameters[PRINT_DIRECTION_TYPE] = type;
}
/**
 * Salva le informazioni per la stampa dei dati.
 * @param parameters parametri da salvare.
 */
function savePrintData(parameters) {
	// elimina le informazioni salvate per la stampa 
	clearPrint();

	// salvataggio stato stampa
	PrintParameters[PRINT_MODE] = PRINT_DATA;
	for (var key in parameters) {
		PrintParameters[eval(key)] = parameters[key];
	}
}

