/************************************************************************/
/*  IT447 - creazione 12.06.2008                                        */
/*                                                                      */
/*  File contenente funzioni d'utilità,                                 */
/*  usate in file pubblici (senza "noframe")                            */
/*  per determinare provincia, sistema e modalità d'accesso,            */
/*  in modo da allineare perfettamente i sistemi.                       */
/*                                                                      */
/*  Se cambiasse un indirizzo IP, od un alias,                          */
/*  CORREGGERE gli Array all'inizio di questo file.                     */
/*  Tutto il resto del software è gestito dinamicamente                 */
/************************************************************************/

/*
 * ^ IMPORTANTE! ^
 * Mettere l'alias certificato in posizione zero dell'Array
 * NB: la distinzione intranet/internet è valida solo per i sistemi di produzione.
 *     Sviluppo e Test vengono trattati come se fossero intranet.
 */


intraProdTN = new Array('172.31.10.10','www.openkat.tn');
internetProdTN = new Array('www.catastotn.it','www.openkat.it','www.librofondiario.it');
intraProdBZ = new Array('10.199.150.13','www.openkat.bz');
internetProdBZ = new Array('www.catastobz.it','www.grundbuch.it','www.kataster.it');
testTN = new Array('172.20.0.69');
testBZ = new Array('10.199.156.67');
svilTN = new Array('172.20.1.47');
svilBZ = new Array('10.199.156.67');

function alertUnknown(){
	alert("Host "+(location.host)+" sconosciuto.\nContattare l'assistenza");
	return(null);
}

function alertUnknown(provincia, sistema){
	alert("Host "+(location.host)+" sconosciuto,\nper i parametri "+(provincia)+" e "+(sistema)+".\nContattare l'assistenza");
	return(null);
}

/**
 * Ritorna l'indirizzo INTRANET del web server voluto
 * e cioè l'indirizzo IP
 * provincia: "TN" oppure "BZ"
 * sistema: "PROD" oppure "SVIL" oppure "TEST"
 * Se passati parametri inconsistenti, ritorna NULL
 */
function getIntraAddr(provincia, sistema){
	if(provincia == 'TN'){
		if(sistema == 'PROD'){
			return(intraProdTN[0]);
		}else if(sistema == 'SVIL'){
			return(svilTN[0]);
		}else if(sistema == 'TEST'){
			return(testTN[0]);
		}else{
			alertUnknown(provincia,sistema);
			return(null);
		}
	}else if(provincia == 'BZ'){
		if(sistema == 'PROD'){
			return(intraProdBZ[0]);
		}else if(sistema == 'SVIL'){
			return(svilBZ[0]);
		}else if(sistema == 'TEST'){
			return(testBZ[0]);
		}else{
			alertUnknown(provincia,sistema);
			return(null);
		}
	}else{
		alertUnknown(provincia,sistema);
		return(null);
	}
}

/**
 * Ritorna l'indirizzo INTERNET del web server voluto
 * provincia: "TN" oppure "BZ"
 * sistema: "PROD" oppure "SVIL" oppure "TEST"
 * Se passati parametri inconsistenti, ritorna NULL
 */
function getInternetAddr(provincia, sistema){
	if(provincia == 'TN'){
		if(sistema == 'PROD'){
			return(internetProdTN[0]);
		}else if(sistema == 'SVIL'){
			return(svilTN[0]);  // NON è l'indirizzo internet perché non esiste.
		}else if(sistema == 'TEST'){
			return(testTN[0]);  // NON è l'indirizzo internet perché non esiste.
		}else{
			alertUnknown(provincia,sistema);
			return(null);
		}
	}else if(provincia == 'BZ'){
		if(sistema == 'PROD'){
			return(internetProdBZ[0]);
		}else if(sistema == 'SVIL'){
			return(svilBZ[0]);  // NON è l'indirizzo internet perché non esiste.
		}else if(sistema == 'TEST'){
			return(testBZ[0]);  // NON è l'indirizzo internet perché non esiste.
		}else{
			alertUnknown(provincia,sistema);
			return(null);
		}
	}else{
		alertUnknown(provincia,sistema);
		return(null);
	}
}

/**
 * Ritorna l'indirizzo Internet o INTRANet del web server voluto
 * in base all'indirizzo attuale (location.host intranet o internet)
 * provincia: "TN" oppure "BZ"
 * sistema: "PROD" oppure "SVIL" oppure "TEST"
 * Se passati parametri inconsistenti, ritorna NULL
 */
function getRelativeAddr(provincia, sistema){
	if(provincia == 'TN'){
		if(sistema == 'PROD'){
			if(isIntra()){
				return(intraProdTN[0]);
			}else{
				return(internetProdTN[0]);
			}
		}else if(sistema == 'SVIL'){
			return(svilTN[0]);
		}else if(sistema == 'TEST'){
			return(testTN[0]);
		}else{
			alertUnknown(provincia,sistema);
			return(null);
		}
	}else if(provincia == 'BZ'){
		if(sistema == 'PROD'){
			if(isIntra()){
				return(intraProdBZ[0]);
			}else{
				return(internetProdBZ[0]);
			}
		}else if(sistema == 'SVIL'){
			return(svilBZ[0]);
		}else if(sistema == 'TEST'){
			return(testBZ[0]);
		}else{
			alertUnknown(provincia,sistema);
			return(null);
		}
	}else{
		alertUnknown(provincia,sistema);
		return(null);
	}
}



/**
 * Dato il nome d'una variabile (par: name)
 * passata dalla pagina precedente con metodo GET
 * ne torna il valore
 */
function getVar(name){
	get_string = document.location.search;         
	return_value = '';

	do { //Loop per scorrere tutte le variabili passate con metodo GET.
		name_index = get_string.indexOf(name + '=');

		if(name_index != -1){
			get_string = get_string.substr(name_index + name.length + 1, get_string.length - name_index);

			End_of_value = get_string.indexOf('&');
			if(end_of_value != -1)                
				value = get_string.substr(0, end_of_value);                
			Else                
				value = get_string;                

			if(return_value == '' || value == '')
				return_value += value;
			else
				return_value += ', ' + value;
		}
	} while(name_index != -1)

	//Ripristinare gli spazi bianchi.
	space = return_value.indexOf('+');
	while(space != -1){ 
		return_value = return_value.substr(0, space) + ' ' + 
		return_value.substr(space + 1, return_value.length);

		space = return_value.indexOf('+');
	}

	return(return_value);
}

/**
 * Serie di funzioni ridondanti,
 * in modo da rendere il più leggero possibile
 * il codice dei templates
 */

function isProdTNintra(){
	for(i=0; i<intraProdTN.length; i=i+1){
		if(location.host == intraProdTN[i]){
			return true;
		}
	}
	return false;
}

function isProdTNinternet(){
	for(i=0; i<internetProdTN.length; i=i+1){
		if(location.host == internetProdTN[i]){
			return true;
		}
	}
	return false;
}

function isProdBZintra(){
	for(i=0; i<intraProdBZ.length; i=i+1){
		if(location.host == intraProdBZ[i]){
			return true;
		}
	}
	return false;
}

function isProdBZinternet(){
	for(i=0; i<internetProdBZ.length; i=i+1){
		if(location.host == internetProdBZ[i]){
			return true;
		}
	}
	return false;
}

function isSvilTN(){
	for(i=0; i<svilTN.length; i=i+1){
		if(location.host == svilTN[i]){
			return true;
		}
	}
	return false;
}

function isSvilBZ(){
	for(i=0; i<svilBZ.length; i=i+1){
		if(location.host == svilBZ[i]){
			return true;
		}
	}
	return false;
}

function isTestTN(){
	for(i=0; i<testTN.length; i=i+1){
		if(location.host == testTN[i]){
			return true;
		}
	}
	return false;
}

function isTestBZ(){
	for(i=0; i<testBZ.length; i=i+1){
		if(location.host == testBZ[i]){
			return true;
		}
	}
	return false;
}

function isProd(){
	if(isProdTNintra() || isProdBZintra() || isProdTNinternet() || isProdBZinternet()){
		return true;
	}
	return false;
}

function isSvil(){
	if(isSvilTN() || isSvilBZ()){
		return true;
	}
	return false;
}

function isTest(){
	if(isTestTN() || isTestBZ()){
		return true;
	}
	return false;
}

function isTN(){
	if(isSvilTN() || isTestTN() || isProdTNintra() || isProdTNinternet()){
		return true;
	}
	return false;
}

function isBZ(){
	if(isSvilBZ() || isTestBZ() || isProdBZintra() || isProdBZinternet()){
		return true;
	}
	return false;
}

function isIntra(){
	if(isProdBZintra() || isProdTNintra() || isSvil() || isTest()){
		return true;
	}
	return false;
}

function isInternet(){
	if(isProdBZinternet() || isProdTNinternet()){
		return true;
	}
	return false;
}

/**
 * In base a "location.host" ritorna l'indirizzo INTRANET
 * relativo all'ATTUALE PROVINCIA e SISTEMA (sviluppo o prod)
 */
function getRelativeIntraAddr(){
	if(isTN()){
		if(isProd()){
			return(intraProdTN[0]);
		}else if(isSvil()){
			return(svilTN[0]);
		}else if(isTest()){
			return(testTN[0]);
		}else{
			alertUnknown();
			return(null);
		}
	}else if(isBZ()){
		if(isProd()){
			return(intraProdBZ[0]);
		}else if(isSvil()){
			return(svilBZ[0]);
		}else if(isTest()){
			return(testBZ[0]);
		}else{
			alertUnknown();
			return(null);
		}
	}else{
		alertUnknown();
		return(null);
	}
}

/**
 * In base a "location.host" ritorna l'indirizzo Internet
 * relativo all'ATTUALE PROVINCIA e SISTEMA (sviluppo o prod)
 */
function getRelativeInternetAddr(){
	if(isTN()){
		if(isProd()){
			return(internetProdTN[0]);
		}else if(isSvil()){
			return(svilTN[0]);  // NON è l'indirizzo internet perché non esiste.
		}else if(isTest()){
			return(testTN[0]);  // NON è l'indirizzo internet perché non esiste.
		}else{
			alertUnknown();
			return(null);
		}
	}else if(isBZ()){
		if(isProd()){
			return(internetProdBZ[0]);
		}else if(isSvil()){
			return(svilBZ[0]);  // NON è l'indirizzo internet perché non esiste.
		}else if(isTest()){
			return(testBZ[0]);  // NON è l'indirizzo internet perché non esiste.
		}else{
			alertUnknown();
			return(null);
		}
	}else{
		alertUnknown();
		return(null);
	}
}

/**
 * Funzioni che tornano pezzi di stringa da inserire nel codice
 */
/*function writeThisProv(){
	if(isTN()){
		document.write('TN'):
	}else if(isBZ()){
		document.write('BZ');
	}else{
		alertUnknown();
		return(null);
	}
}*/

/**
 * Funzione di test, per verificare
 * se viene usata una versione di questo file
 * presa dalla cache, anziché quella presente sul webserver
 */
function prova3(){
	return '00';
}

