// TabShort by Giuseppe Ing. Celsi
// script per realizzare un'interfaccia tabbed-menu

$(document).ready(function() {
	/* set-up tabs */
	$('#tab-menu ul li a').each(function(i){
		// assegna un id e l'evento onclick ad ogni linguetta
		$(this).attr('id','tab-menu-' + i);
		$(this).click( function() {return GestioneClickSuTab(this.id);} );
		});
	//test $('tab-contenuto').html( $('tab-menu-0').html() );
});


function GestioneClickSuTab(tablink){
	// divtab e'il div che contiene tutto il tab incluso divcontent
	// divcontent e'il div che conterra' i contenuti associati al tab cliccato
	var divtab = $('#'+tablink).parent().parent().parent();
	var divcontent = $(divtab).children().not('ul');
	

	AttivaTab(tablink);
	MostraContenuto(tablink, divcontent);
	$('#'+tablink).blur() //toglie il focus dal tab cliccato
	return false
}

/* Mostra il contenuto del 'div' associato tab 'tablink' e nasconde tutti gli altri contenuti  */
function MostraContenuto(tablink, divcontent){
	var  UrlContent = $('#'+tablink).attr('href');
	if ( (UrlContent == undefined) || (UrlContent == '') || (UrlContent == '#') ) {
		// se non e'stato associato un url o un bookmark al tab scrive un messaggio di errore
		$(divcontent).html('Attributo <i>UrlContent</i> non definito');
		return false;
	}
	if (UrlContent.substr(0,1) == '#') {
		// carica un contenuto in un div nascosto posto nello stesso file
		$(divcontent).html( $(UrlContent).html() );
		}
	else    {
		// carica un contenuto da un file esterno con ajax
		//
		// trova prima l'estensione per gestire la chiamata nella maniera piu' opportuna
		var estensione = "";
		if (UrlContent.search(/\./) >= 0) {
			var pt = UrlContent.split(/\./);
			estensione =  pt[pt.length-1]
			}
		switch (estensione) {
		  case 'css':
		  case 'txt':
			$(divcontent).html('&nbsp;<img src="indicator_verybig.gif" border="0" alt="Caricamento in corso ... "><br>Caricamento in corso ...');
			$.get(UrlContent, function(msg){
				$(divcontent).html(parseCode(msg));
				});
			break;
		  case 'js' :
			$(divcontent).html('&nbsp;<img src="indicator_verybig.gif" border="0" alt="Caricamento in corso ... "><br>Caricamento in corso ...');
			$.ajax({
				  type: "GET",
				  url : UrlContent,
				  dataType: "script",
				  success : function(msg){
				
					$(divcontent).html(parseTab(msg));
					}
				});
			break;
		  case 'htm' :
		  case 'html':
		  case 'asp' :
		  case 'php' :
			$(divcontent).html('&nbsp;<img src="indicator_verybig.gif" border="0" alt="Caricamento in corso ... "><br>Caricamento in corso ...');
			$.get(UrlContent, function(msg){
				$(divcontent).html(parseCode(msg));
				});
			break;
		  default:
		  	$(divcontent).html('Estensione <i>' + estensione + '</i> non gestita');
		}
	}
}

/* Imposta il tab con nr nTab come attivo
   (assegnando la classe 'tabactive' e disattivi tutti gli altri
    funzione con un qualsiasi numero di tab */
function AttivaTab(tablink) {

	$('#tab-menu ul li a').each(function(i){
		//console.log (this.id + ' ' + $('#'+this.id).attr('className'))
		if (this.id==tablink)
		   $('#'+this.id).addClass('tab-attivo')
		else
		   $('#'+this.id).removeClass()
		});
}

function parseCode(codice){
	codice=codice.replace(/</mg,'&lt;');
	codice=codice.replace(/>/mg,'&gt;');
	codice=codice.replace(/\"/mg,'&#34;');
	codice=codice.replace(/\t/g,'  ');
	codice=codice.replace(/\r?\n/g,'<br>');
	codice=codice.replace(/<br><br>/g,'<br>');
	codice=codice.replace(/ /g,'&nbsp;');
	return codice;
}

function parseTab(codice){
	codice=codice.replace(/</mg,'&lt;');
	codice=codice.replace(/>/mg,'&gt;');
	codice=codice.replace(/\r?\n/g,'<br>');
	return codice;
}
