function htmlEncode(source, display, tabs)
//source è il testo, display true per essere visualizzato, tabs gli spazi con cui tradurre i tab
{
	function special(source)
	{
		var result = '';
		for (var i = 0; i < source.length; i++)
		{
			var c = source.charAt(i);
			if (c < ' ' || c > '~')
			{
				c = '&#' + c.charCodeAt() + ';';
			}
			result += c;
		}
		return result;
	}
	
	function format(source)
	{
		// Use only integer part of tabs, and default to 4
		tabs = (tabs >= 0) ? Math.floor(tabs) : 4;
		
		// split along line breaks
		var lines = source.split(/\r\n|\r|\n/);
		
		// expand tabs
		for (var i = 0; i < lines.length; i++)
		{
			var line = lines[i];
			var newLine = '';
			for (var p = 0; p < line.length; p++)
			{
				var c = line.charAt(p);
				if (c === '\t')
				{
					var spaces = tabs - (newLine.length % tabs);
					for (var s = 0; s < spaces; s++)
					{
						newLine += ' ';
					}
				}
				else
				{
					newLine += c;
				}
			}
			// If a line starts or ends with a space, it evaporates in html
			// unless it's an nbsp.
			newLine = newLine.replace(/(^ )|( $)/g, '&nbsp;');
			lines[i] = newLine;
		}
		
		// re-join lines
		var result = lines.join('<br />');
		
		// break up contiguous blocks of spaces with non-breaking spaces
		result = result.replace(/  /g, ' &nbsp;');
		
		// tada!
		return result;
	}

	var result = source;
	
	// ampersands (&)
	result = result.replace(/\&/g,'&amp;');

	// less-thans (<)
	result = result.replace(/\</g,'&lt;');

	// greater-thans (>)
	result = result.replace(/\>/g,'&gt;');
	
	if (display)
	{
		// format for display
		result = format(result);
	}
	else
	{
		// Replace quotes if it isn't for display,
		// since it's probably going in an html attribute.
		result = result.replace(new RegExp('"','g'), '&quot;');
	}

	// special characters
	result = special(result);
	
	// tada!
	return result;
}

function sistemaautore (testo){
	if (testo == ".") document.write ("")
	else document.write (testo)
}
function sistematitolo (testo){
	//testo = testo.replace(" E "," e ")
	//testo = testo.replace(" A "," a ")
	//testo = testo.replace(" O "," o ")
	//testo = testo.replace(" I "," i ")
	testo = testo.replace(/([^.]) I /g,"$1 i ")
	testo = testo.replace(/([^.]) E /g,"$1 e ")
	testo = testo.replace(/([^.]) A /g,"$1 a ")
	testo = testo.replace(/([^.]) O /g,"$1 o ")
	testo = testo.replace("Ii", "II")
	testo = testo.replace("Iii", "III")
	testo = testo.replace(" Iv ", " IV ")
	testo = testo.replace(" Ix ", " IX ")
	testo = testo.replace("€", "ñ")
	testo = testo.replace(/\?´/g,"&ocirc;")
	testo = testo.replace(/\?³/g,"&#243;")
	testo = testo.replace(/¢/g,"&#242;")
	testo = testo.replace("a1/4","&#252;")
	testo = testo.replace(/([^.]) E' /g,"$1 è ")
	testo = testo.replace(/([^.]) Lo /g,"$1 lo ")
	testo = testo.replace(/([^.]) Il /g,"$1 il ")
	testo = testo.replace(/([^.]) Gli /g,"$1 gli ")
	testo = testo.replace(/([^.]) La /g,"$1 la ")
	testo = testo.replace(/([^.]) Le /g,"$1 le ")
	testo = testo.replace(/([^.]) Di /g,"$1 di ")
	testo = testo.replace(/([^.]) Da /g,"$1 da ")
	testo = testo.replace(/([^.]) In /g,"$1 in ")
	testo = testo.replace(/([^.]) Con /g,"$1 con ")
	testo = testo.replace(/([^.]) Su /g,"$1 su ")
	testo = testo.replace(/([^.]) Per /g,"$1 per ")
	testo = testo.replace(/([^.]) Fra /g,"$1 fra ")
	testo = testo.replace(/([^.]) Tra /g,"$1 tra ")
	testo = testo.replace(/([^.]) De(l|llo|lla|gli|lle) /g,"$1 de$2 ")
	testo = testo.replace(/([^.]) De(ll')/g,"$1 de$2")
	testo = testo.replace(/([^.]) A(l|llo|lla|gli|lle) /g,"$1 a$2 ")
	testo = testo.replace(/([^.]) A(ll')/g,"$1 a$2")
	testo = testo.replace(/([^.]) Da(l|llo|lla|gli|lle) /g,"$1 da$2 ")
	testo = testo.replace(/([^.]) Da(ll')/g,"$1 da$2")
	testo = testo.replace(/([^.]) Ne(l|llo|lla|gli|lle) /g,"$1 ne$2 ")
	testo = testo.replace(/([^.]) Ne(ll')/g,"$1 ne$2")
	testo = testo.replace(/([^.]) Su(l|llo|lla|gli|lle) /g,"$1 su$2 ")
	testo = testo.replace(/([^.]) Su(ll')/g,"$1 su$2")
	document.write (testo)
}
function sistemarilegatura (testo){
	switch (testo) {
		case "AB":
		return "Audiocassetta";
		break
		
		case "AC":
		return "Cd Audio";
		break
		
		case "AE":
		return "Disco Audio";
		break
		
		case "AF":
		return "Nastro Audio";
		break
		
		case "AG":
		return "Mini Disco";
		break
		
		case "AH":
		return "Cd Rom con contenuti Extra";
		break
		
		case "AI":
		return "DVD Audio";
		break
		
		case "AJ":
		return "File Audio";
		break
		
		case "AZ":
		return "Altro Formato Audio";
		break
		
		case "BA":
		return "Volume";
		break
		
		case "BB":
		return "Volume Rilegato";
		break
		
		case "BC":
		return "Volume in Brossura";
		break
		
		case "BD":
		return "Fogli Mobili";
		break
		
		case "BF":
		return "Opuscolo";
		break
		
		case "BG":
		return "Volume Rilegato in Pelle";
		break
		
		case "BN":
		return "Fascicolo";
		break
		
		case "BZ":
		return "Volume";
		break
		
		case "CA":
		return "Carta Geografica";
		break
		
		case "CB":
		return "Carta Geografica Ripiegata";
		break
		
		case "CC":
		return "Carta Geografica";
		break
		
		case "CD":
		return "Carta Geografica";
		break
		
		case "CE":
		return "Mappamondo";
		break
		
		case "CZ":
		return "Cartografico";
		break
		
		case "DA":
		return "Digitale";
		break
		
		case "DB":
		return "CD-ROM";
		break
		
		case "DC":
		return "CD Interattivo";
		break
		
		case "DD":
		return "DVD";
		break
		
		case "DE":
		return "Scatola Giochi";
		break
		
		case "DF":
		return "Floppy Disk";
		break
		
		case "DG":
		return "Testo Elettronico";
		break
		
		case "DH":
		return "Risorsa Online";
		break
		
		case "DI":
		return "DVD-ROM";
		break
		
		case "FA":
		return "Pellicola";
		break
		
		case "FB":
		return "Pellicola";
		break
		
		case "FC":
		return "Diapositive";
		break
		
		case "FE":
		return "Filmstrip";
		break
		
		case "FF":
		return "Film";
		break
		
		case "MA":
		return "Microform";
		break
		
		case "MB":
		return "Microfiche";
		break
		
		case "MC":
		return "Microfilm";
		break
		
		case "PA":
		return "Materiale Miscellaneo";
		break
		
		case "PB":
		return "Rubrica";
		break
		
		case "PC":
		return "Calendario";
		break
		
		case "PD":
		return "Carte";
		break
		
		case "PE":
		return "Copymaster";
		break
		
		case "PF":
		return "Diario";
		break
		
		case "PH":
		return "Kit";
		break
		
		case "PI":
		return "Spartito Musicale";
		break
		
		case "PJ":
		return "Cartolina";
		break
		
		case "PK":
		return "Poster";
		break
		
		case "PN":
		return "Fotografie";
		break
		
		case "PO":
		return "Carta Geografica Murale";
		break
		
		case "PP":
		return "Adesivi";
		break
		
		case "VA":
		return "Video";
		break
		
		case "VF":
		return "Videodisk";
		break
		
		case "VI":
		return "DVD Video";
		break
		
		case "VJ":
		return "VHS Video";
		break
		
		case "VK":
		return "Betamax Video";
		break
		
		case "VL":
		return "Video CD";
		break
		
		case "VM":
		return "Super Video CD";
		break
		
		case "WW":
		return "Prodotto in più parti di diverso formato";
		break
		
		case "WX":
		return "Package";
		break
		
		case "XD":
		return "Involucro Vuoto";
		break
		
		case "XE":
		return "Involucro Pieno";
		break
		
		case "XF":
		return "Poster";
		break
		
		case "XI":
		return "Streamer";
		break
		
		case "ZB":
		return "Bambola";
		break
		
		case "ZC":
		return "Giocattolo";
		break
		
		case "ZD":
		return "Giocattolo";
		break
		
		case "ZE":
		return "Gioco da Tavolo";
		break
		
		case "ZF":
		return "T-Shirt";
		break
		
		default:
		return ""
	}
}
function sistemalingua (testo){
	switch (testo) {
		case "eng":
		return "Inglese";
		break

		case "ita":
		return "Italiano";
		break
		
		case "deu":
		return "Tedesco";
		break

		case "ger":
		return "Tedesco";
		break
		
		case "fra":
		return "Francese";
		break
		
		case "spa":
		return "Spagnolo";
		break

		case "lat":
		return "Latino";
		break
				
		default:
		return testo
	}
}
function sistemanazione (testo){
	switch (testo) {
		case "GB":
		return "Gran Bretagna";
		break

		case "DE":
		return "Germania";
		break
		
		case "FR":
		return "Francia";
		break
		
		case "US":
		return "USA";
		break

		case "CH":
		return "Svizzera";
		break

		case "NL":
		return "Olanda";
		break
		
		default:
		return testo
	}
}