/*
|*********************************************
| generale.js - Versione 1.1 del 03-09-2009
|  - Gestione funzioni generali
|    Testato con le seguenti combinazioni di S.O. e Browser:
|     - Windows (XP): IE 6, NN 7, Opera 7, Firefox 1
|     - Mac OS X:   IE 5, Safari 1
| Copyright: Swell di Mosciatti Roberto
| Sito: www.swell.it
| Email: info@swell.it
|*********************************************
*/
var titolo = '';
var de_alt = '';
var de_titimg = '';
//-------------------------------------------------
// Assegnazione dei Colori Vari (Es. per Grafici)
//-------------------------------------------------
v_colore = new Array();
  v_colore[0] = '#00FF00';	// Verde
  v_colore[1] = '#FF0000';	// Rosso
  v_colore[2] = '#0000FF';	// Blu
  v_colore[3] = '#FFFF00';	// Giallo
  v_colore[4] = '#FF00FF';	// Viola
  v_colore[5] = '#00FFFF';	// Ciano
  v_colore[6] = '#FF8040';	// Arancio
  v_colore[7] = '#8080FF';	// Blu Chiaro
  v_colore[8] = '#FF0080';	// Rosso Bordeaux
  v_colore[9] = '#00FF80';	// Verde Chiaro
  v_colore[10] = '#FFFF80';	// Giallo Chiaro
  v_colore[11] = '#C0C0C0';	// Grigio
  v_colore[12] = '#808000';	// Oliva
  v_colore[13] = '#800000';	// Prugna
  v_colore[14] = '#008080';	// Verde Mare
  v_colore[15] = '#804000';	// Marrone
  v_colore[16]= '#400040';	// Prugna Scuro
  v_colore[17]= '#80FF00';	// Verde Erba
  v_colore[18]= '#0080C0';	// Blu Mare
  v_colore[19]= '#FF80FF';	// Rosa
  v_colore[20]= '#B7B700';	// Giallo Scuro
  v_colore[21]= '#804040';	// Mattone
  v_colore[22]= '#808040';	// Oliva Scuro
  v_colore[23]= '#400080';	// Viola Scuro
  v_colore[24]= '#008000';	// Verde Scuro
  v_colore[25]= '#0000A0';	// Blu Scuro
  v_colore[26] = '#FFFFFF';	// VUOTO (Bianco)
// ------------------------------------------------------
// Durata Caricamento Pagine
// ------------------------------------------------------
var initime = new Date();
function calcolatime() {
 var fintime = new Date();
 var durata1 = fintime-initime;
 var durata = parseInt(durata1);
   // trasforma in secondi
   durata /= 1000;
     // trasforma in stringa
     var durat = durata.toString();
       // sostituisce il punto con virgola
       durat = durat.replace(/\./, ",");
     var miodiv = document.getElementById("piede_riso").innerHTML;
       miodiv=miodiv + '<br><font face="Arial" size="1">Pagina caricata in '+durat+' millisecondi.</font>';
       document.getElementById("piede_riso").innerHTML=miodiv;
}
// ------------------------------------------------------
// Assegnazione del Colore vario su un Numero (Formattato)
//    Nero (default '')
//    - Rosso
//    - Blu
//    - Rosa
//    - Verde
// ------------------------------------------------------
function c_colore(desc,colore,nonum,grass) {
  // Valori di default se non passati
  if (colore == undefined || colore == "") colore = 'nero';
  if (nonum == undefined || nonum == "") nonum = false;
  if (grass == undefined || grass == "") grass = true;
  var ris = "";
  var co = "";
  switch(colore) {
    case 'rosso':
      co = '#f50000';
      break;
    case 'blu':
      co = '#0000f5';
      break;
    case 'rosa':
      co = '#ff00ff';
      break;
    case 'verde':
      co = '#008000';
      break;
    default:
      co = '#000000';
      break;
  }
  if (grass == true) ris += '<strong>';
  ris += '<font color="'+co+'">';
  if (nonum == true) {
    ris += desc;
  } else {
    ris += FormattaIntero(desc);
  }
  ris += '</font>';
  if (grass == true) ris += '</strong>';
    // Reinvio
  return ris;
}
//-------------------------------------------------
// Formatta il numero [num] a [dec] decimali con separatore di migliaia
//    num = numero da formattare
//    dec  = numero di decimali, predefinito = 2
//    sepm = separatore migliaia, predefinito = puntino
//    sepd = separatore decimale, predefinito = virgola
//-------------------------------------------------
function FormattaDecimale(num, dec, sepm, sepd) {
   	if (dec == undefined || dec == "") dec = 2;
//   	if(sepm == undefined || sepm == "") sepm = " "; sepm = sepm.substr(0,1);
   	if (sepm == undefined || sepm == "") sepm = "."; sepm = sepm.substr(0,1);
   	if (sepd == undefined || sepd == "") sepd = ","; sepd = sepd.substr(0,1);
   	var d = Math.pow(10,dec);
   	num = num.toString().replace(/\$|\,/g,'');
	if (isNaN(num)) num = "0";
	sign = (num == (num = Math.abs(num)));
	num = Math.floor(num * d + 0.50000000001);
	cents = num % d;
	num = Math.floor(num / d).toString();
//alert('num:'+num+' dec:'+dec+' cents:'+cents);
	if (cents < 10) {
		switch(dec) {
			// 2 Decimali
			case 2:
				cents = "0" + cents;
				break;
			// 3 Decimali
			case 3:
				cents = "00" + cents;
				break;
			// 4 Decimali
			case 4:
				cents = "000" + cents;
				break;
			// Altro 
			default:
				break;
			}
	} else if (cents < 100) {
		switch(dec) {
			// 3 Decimali
			case 3:
				cents = "0" + cents;
				break;
			// Altro 
			default:
				break;
			}
	}
	for (var i = 0; i < Math.floor((num.length - (1+i))/3); i++)
	    num = num.substring(0, num.length - (4 * i + 3)) + sepm + num.substring(num.length - (4 * i + 3));
    return (((sign)?'':'-') + '' + num + sepd + cents);
}
//-------------------------------------------------
// Formatta il numero intero[num] con separatore di migliaia
// Attenzione! Solo Interi; se passato Decimale va in loop!
//-------------------------------------------------
function FormattaIntero(number) {
    number = String(number);
// TOLTI per EVITARE 000 o 042 o 007!	
//    while (number.length < 3) {
//        number = "0" + number;
//    }
    var formatted = "" ;// number.replace(/\d*?(\d{2})$/, ",$1");
    // number = number.replace(/(\d*?)\d{2}$/, "$1");
    while (number.length > 3) {
      formatted = number.replace(/\d*?(\d{3})$/, ".$1") + formatted;
      number = number.replace(/(\d*?)\d{3}$/, "$1");
    }
    formatted = number + formatted;
    return formatted;
}
//-------------------------------------------------
// Formatta il numero ad Americano; in pratica
// inverte punto e virgola come separatore
// delle migliaia e dei decimali; vale anche
// per i numeri con altri caratteri (tipo %)
//-------------------------------------------------
function NumeroAmericano(numero_ita) {
    // Assegno virgola in formato di Appoggio
    var formatted = numero_ita.replace(",", "VIRGOLA") ;
    // Assegno punto (separatore migliaia) come virgola
    formatted = formatted.replace(".", ",") ;
    // Assegno virgola (separatore decimali) come punto
    formatted = formatted.replace("VIRGOLA", ".") ;
    return formatted;
}
//-------------------------------------------------
// Calcola la Percentuale
//    num = numeratore (parziale)
//    den = denominatore (totale)
//    dec = numero di decimali, predefinito = 2
//    per = simbolo della percentuale predefinito = %
//-------------------------------------------------
function Percentuale(num, den, dec, per) {
   	if (dec == undefined || dec == "") dec = 2;
   	if (per == undefined || per == "") per ='%';
	// Numeri non forniti rimanda 0%
	if (isNaN(num) || isNaN(den)) return FormattaDecimale(0,dec) + per;
	// Denominatore NON puo' essere 0 (darebbe errore)
	if (den==0) return FormattaDecimale(0,dec) + per;
	var n = ((num*100)/den);
	// Reinvio valore corretto
	return FormattaDecimale(n,dec) + per;
}
//-------------------------------------------------
// Effettua la Clonazione di un Array (ne crea uno nuovo)
//-------------------------------------------------
function ClonaArray(_ArrayDaClonare) {
	var _Clonato = new Array();
	for (_IdClone in _ArrayDaClonare) {
		if (_ArrayDaClonare[_IdClone].Constructor == Array) {
			Clone(_ArrayDaClonare[_IdClone]);
		} else {
			_Clonato[_IdClone] = _ArrayDaClonare[_IdClone];
		}	
	}
	return _Clonato;
}
//-------------------------------------------------
// Mette lo 0 a sinistra fino a completamento
//-------------------------------------------------
function MettiZeriASinistra(des,lun,car1) {
   	if (car1 == undefined) car1='';
	// Se Numero non mi rida' la lunghezza
	var des1=des;
	//	if (typeof(des)==number {
	if (!isNaN(des1)) des1=des.toString();
	// -----------------------------------------------
	if (des1.length >= lun) return des;
	var zeri = '00000000000000000000';
	// Metti gli zeri a completamento
	var r = car1 + zeri.slice(1,(lun-(des1.length)));
	// Adesso il numero passato
	r += des1	
	return r;
}
//-------------------------------------------------
// Toglie lo 0 a sinistra fino a completamento
//-------------------------------------------------
function TogliZeriASinistra(des,car1) {
  if (car1 == undefined) car1='';
	var r = '';
	var tv = 0;
	var a = '';
	for (var i = 0; i < des.length; i++) {
	    a = des.slice(i,i+1);
		if (car1 != '' && car1 == a ) a = '0';
	    if (tv == 1 || a != '0') {
			tv = 1;
			r += a;
		}
	}
	return r;
}
//-------------------------------------------------
// Vede se il numero e' composto da soli 0,.
//-------------------------------------------------
function solozeri(des) {
	var r = true;
	var a = '';
	for (var i = 0; i < des.length; i++) {
	    a = des.slice(i,i+1);
		// Solo 0 o punto separatore o separatore decimali OK
		if (a != '0' && a != '.' && a != ',') r=false;
	}
	return r;
}
//-------------------------------------------------
// Assegnazione per il Tooltip
//-------------------------------------------------
function ass_tooltip(txt,tit,larg) {
	var tx = '';
		// Titolo
   	if (tit != undefined && tit != "") tx += "this.T_TITLE=\'"+tit+"\';";
		// Larghezza
   	if (larg != undefined && larg != "") tx += "this.T_WIDTH="+larg+";";
		// Corpo
	tx += "return escape('"+txt+"')";
		// Reinvio risultato
	return tx
}
//-------------------------------------------------
// Assegnazione per le Immagini
//-------------------------------------------------
function scrivi_img(nomeimg,titalt,desc,alte,larg,allin,curso,bordo,se_oncli,se_mouov) {
  // Dati di Default
	if (allin == undefined || allin == "") allin = "absmiddle";      // Centratura eventuali scritte al centro
	if (curso == undefined || curso == "") curso = "cursor:pointer"; // Cursore Attivo
	if (larg == undefined || larg == "") larg = alte;                // Se Quadrato basta un solo lato 
//alert(nomeimg+'\n - '+titalt+'\n - '+desc+'\n - '+alte+'\n - '+larg+'\n - '+allin+'\n - '+curso+'\n - '+bordo+'\n - '+se_oncli+'\n - '+se_mouov);
  // Inizialmente i Dati Fissi
  document.write('<img src="'+nomeimg+'" width="'+larg+'" height="'+alte+'"'); 
  document.write(' alt="'+titalt+'" title="'+titalt+'"');
  document.write(' align="'+allin+'" style="'+curso+'"');
  // Quindi i dati Variabili
	if (bordo != undefined && bordo != "") document.write(' border="'+bordo+'"'); 
	if (se_oncli != undefined && se_oncli != "") document.write(' onclick="'+se_oncli+'"'); 
	if (se_mouov != undefined && se_mouov != "") document.write(' onmouseover="'+se_mouov+'"'); 
  // Alla fine sempre la Chiusura
  document.write('>');
  // Se devo visualizzo anche la scritta con separatore
	if (desc != undefined && desc != "") document.write('&nbsp;'+desc); 
}
// ------------------------------------------------------
// Mette il grassetto in una scritta
// ------------------------------------------------------
function grassetto(desc) {
  // Valori di default se non passati
  var ris = '<strong>';
  ris += desc;
  ris += '</strong>';
  return ris;
}
//-------------------------------------------------
// Latitudine e Longitudine in Decimale
//-------------------------------------------------
function lat_long_dec(gradi, primi, secondi){
  var decim = gradi + (primi/60) + (secondi/3600);
	return decim; 
}
//-------------------------------------------------
// Tipo Ordinamento per Sort
//-------------------------------------------------
	// Ascendente
function sortASC(a, b){
	return (a-b); 
}
	// Discendente
function sortDESC(a, b){ 
	return (b-a);
} 
//-------------------------------------------------
/* Area Subroutine di trim */
//-------------------------------------------------
function trim(str, chars) {
	return ltrim(rtrim(str, chars), chars);
}
function ltrim(str, chars) {
	chars = chars || "\\s";
	return str.replace(new RegExp("^[" + chars + "]+", "g"), "");
}
function rtrim(str, chars) {
	chars = chars || "\\s";
	return str.replace(new RegExp("[" + chars + "]+$", "g"), "");
}
