/*
|*********************************************
| generale.js - Versione 1.0 del 10-07-2006
|  - 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
|*********************************************
*/
//-------------------------------------------------
// 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
//-------------------------------------------------
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;
}
//-------------------------------------------------
// 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
}
//-------------------------------------------------
// Tipo Ordinamento per Sort
//-------------------------------------------------
	// Ascendente
function sortASC(a, b){
	return (a-b); 
}
	// Discendente
function sortDESC(a, b){ 
	return (b-a);
} 

