// Da associare a onkeydown negli input text di numeri decimali
function digitNr(oText,nrSig,nrDec) {
	// nrSig numero di cifre significative
	// nrDec numero di cifre decimali
	var keyCode=this.event.keyCode;
	if ((keyCode == 0x0D) || (keyCode == 0x08) ||
			((keyCode >= 0x30) && (keyCode <= 0x39)) ||
			((keyCode >= 37) && (keyCode <= 40)) ||
			(keyCode == 0x09)) {
	// Invio o BackSpace
	// Numero
	// frecce
	// Tab
	// uscire senza uleriori controlli
		return;
	}

	if ((keyCode == 0x2C) || (keyCode == 188) ||
			(keyCode == 0x2E) || (keyCode == 190)) {
	// Punto oppure Virgola
		if (oText.value.indexOf(".") >= 0) {
			// E' gia' presente il punto
			// setto a false il returnValue dell'evento
			this.event.cancelBubble=true;
			this.event.returnValue=false;
		}
		return;
	}
	
	// Se non siamo gia' usciti
	// con return siamo in un caso
	// di carattere non consentito
	this.event.cancelBubble=true;
	this.event.returnValue=false;
}

// Da associare a onkeyup negli input text di numeri decimali
function digitDe(oText,nrSig,nrDec) {
	// nrSig numero di cifre significative
	// nrDec numero di cifre decimali
	var keyCode=this.event.keyCode;
	if ((keyCode == 0x0D) || (keyCode == 0x08) ||
			((keyCode >= 37) && (keyCode <= 40)) ||
			(keyCode == 0x09)) {
	// Invio o BackSpace
	// frecce
	// Tab
	// uscire senza ulteriori controlli
		return;
	}
	
	ris=oText.value;

	// Controllo del numero di decimali
	if (((keyCode >= 0x30) && (keyCode <= 0x39)) ||
			(keyCode == 0x2E) || (keyCode == 190) ||
			(keyCode == 0x2C) || (keyCode == 188)) {
	// Cifra
	// Punto
	// Virgola
		j=0;
		i=ris.lastIndexOf(".");
		if (i==-1) i=ris.lastIndexOf(",");
		if (i >= 0) {
			j=ris.length-1-i;
			if (j>nrDec) {
				ris=ris.substring(0,i+nrDec+1);			
			}
		}
	}

	// Controllo del numero di cifre significative
	if (((keyCode >= 0x30) && (keyCode <= 0x39)) ||
			(keyCode == 0x2E) || (keyCode == 190) ||
			(keyCode == 0x2C) || (keyCode == 188)) {
	// Cifra
	// Punto
	// Virgola
		i=ris.lastIndexOf(".");
		j=ris.length;
		if (i!=-1) j--;
		if (j>nrSig) {
			ris=ris.substring(0,nrSig);			
		}
	}


	// Traduco l'eventuale virgola in punto
	i=ris.indexOf(",");
	if (i >= 0) {
		ris=ris.substring(0,i)+"."+ris.substring(i+1,ris.length);
	}
	// se ho modificato ris devo aggiornare
	// il campo di input
	if (ris != oText.value) oText.value=ris;

}

function trimStringa(stringa) {
  var nsStringa=String(stringa);
  while (nsStringa.charAt(0) == " ") {
    nsStringa=nsStringa.substring(1,nsStringa.length);
  }
  while (nsStringa.charAt(nsStringa.length-1) == " ") {
    nsStringa=nsStringa.substring(0,nsStringa.length-1);
  }
  return(nsStringa);
}

function nrStringa(stringa) {
  var nsStringa=String(stringa);
  var i;
  for (i=nsStringa.length-1;i>=0;i--) {
    if (nsStringa.charAt(i) == ",") {
      nsStringa = nsStringa.substring(0,i)+"."+nsStringa.substring(i+1,nsStringa.length);
    }
  }
  return(nsStringa);
}

function htmlSheerString(stringa) {
  var nsStringa=String(stringa);
  var i;
  for (i=nsStringa.length-1;i>=0;i--) {
// TODO Verificare che non serva
//
//    if (nsStringa.charAt(i) == "\'") {
//      nsStringa = nsStringa.substring(0,i)+"&acute;"+nsStringa.substring(i+1,nsStringa.length);
//    }
    if (nsStringa.charAt(i) == "\"") {
      nsStringa = nsStringa.substring(0,i)+"&uml;"+nsStringa.substring(i+1,nsStringa.length);
    }
  }
  return(nsStringa);  
}

function clearInputStringa(stringa) {
  var nsStringa=String(stringa);
  var i;
  for (i=nsStringa.length-1;i>=0;i--) {
    if (nsStringa.charAt(i) == "\"") {
      nsStringa = nsStringa.substring(0,i)+"'"+nsStringa.substring(i+1,nsStringa.length);
    }
    if (nsStringa.charAt(i) == "à") {
      nsStringa = nsStringa.substring(0,i)+"a'"+nsStringa.substring(i+1,nsStringa.length);
    }
    if (	(nsStringa.charAt(i) == "è") ||
					(nsStringa.charAt(i) == "é")) {
      nsStringa = nsStringa.substring(0,i)+"e'"+nsStringa.substring(i+1,nsStringa.length);
    }
    if (nsStringa.charAt(i) == "ì") {
      nsStringa = nsStringa.substring(0,i)+"i'"+nsStringa.substring(i+1,nsStringa.length);
    }
    if (nsStringa.charAt(i) == "ò") {
      nsStringa = nsStringa.substring(0,i)+"o'"+nsStringa.substring(i+1,nsStringa.length);
    }
    if (nsStringa.charAt(i) == "ù") {
      nsStringa = nsStringa.substring(0,i)+"u'"+nsStringa.substring(i+1,nsStringa.length);
    }
    if (nsStringa.charAt(i) == "§") {
      nsStringa = nsStringa.substring(0,i)+nsStringa.substring(i+1,nsStringa.length);
    }
    if (nsStringa.charAt(i) == "|") {
      nsStringa = nsStringa.substring(0,i)+nsStringa.substring(i+1,nsStringa.length);
    }
    if (nsStringa.charAt(i) == "&") {
      nsStringa = nsStringa.substring(0,i)+"&amp;"+nsStringa.substring(i+1,nsStringa.length);
    }
    if (nsStringa.charAt(i) == "<") {
      nsStringa = nsStringa.substring(0,i)+"&lt;"+nsStringa.substring(i+1,nsStringa.length);
    }
    if (nsStringa.charAt(i) == ">") {
      nsStringa = nsStringa.substring(0,i)+"&gt;"+nsStringa.substring(i+1,nsStringa.length);
    }
  }
  return(nsStringa);
}

function decimalString(stringa) {
	var nsStringa=String(stringa);
	var i,j;
	// Traduco le eventuali virgole in punti
	while (nsStringa.indexOf(",") >= 0) {
		i=nsStringa.indexOf(",");
		nsStringa=nsStringa.substring(0,i)+"."+nsStringa.substring(i+1,nsStringa.length);
	}
	// Elimino i caratteri che non sono cifre o punti
	for (i=nsStringa.length-1;i>=0;i--) {
		if (((nsStringa.charAt(i) < "0") || (nsStringa.charAt(i) > "9")) &&
				((nsStringa.charAt(i) != ".")) ) {
		  nsStringa = nsStringa.substring(0,i)+nsStringa.substring(i+1,nsStringa.length);
		}
  }

	// Elimino i punti successivi al primo
	i=nsStringa.indexOf(".");
	while (nsStringa.lastIndexOf(".") > i) {
		j=nsStringa.lastIndexOf(".");
		nsStringa=nsStringa.substring(0,j)+nsStringa.substring(j+1,nsStringa.length);
	}
	return(nsStringa)
}

// Le routine interne di Sap che elaborano i dati passati attraverso RFC richiedono
// che i valori delle quantità abbiano sempre come separatore parte intera - parte 
// decimale la virgola; la seguente funzione restituisce un numero che, se decimale,
// è sempre con la virgola  
function decimalQtyString(stringa) 
{
	var nsStringa=String(stringa);
	var i,j;
	var trovato;
	
	// Traduco gli eventuali punti in virgole
	while (nsStringa.indexOf(".") >= 0)
	 {
		i=nsStringa.indexOf(".");
		nsStringa=nsStringa.substring(0,i)+","+nsStringa.substring(i+1,nsStringa.length);
	}
	
	// Elimino i caratteri che non sono cifre o virgole
	for (i=nsStringa.length-1;i>=0;i--) 
	{
		if (((nsStringa.charAt(i) < "0") || (nsStringa.charAt(i) > "9")) &&
				((nsStringa.charAt(i) != ",")) ) 
		{
		  nsStringa = nsStringa.substring(0,i)+nsStringa.substring(i+1,nsStringa.length);
		}
	}

	// Elimino le virgole che ne hanno una più a dx	
	trovato = false;
	for (i=nsStringa.length-1;i>=0;i--) 
	{
		if (nsStringa.charAt(i) == "," ) 
		{
			if (trovato)
			{
				nsStringa = nsStringa.substring(0,i)+nsStringa.substring(i+1,nsStringa.length);
			}
			trovato = true;
		}
	}
	
	return(nsStringa)
}

function convertToSap(stringa, addCodeZero) 
{
	// funzione che ricevendo un codice materiale non valido per Sap
	// lo converte in uno valido: 
	// 1. elimina i blank 
	// 2. converte tutto in maiuscolo
	// 3. se inizia per un numero lo fa precedere da 0 (zero)
	 
	var nsStringaIN=String(stringa).toUpperCase();
	var nsStringaOUT="";
	var i;
	
	// elimino i blank della stringa Codice Materiale
	for (i=0;i<nsStringaIN.length;i++) {
		if (nsStringaIN.charAt(i) != " ") {
			nsStringaOUT +=nsStringaIN.charAt(i);
		}
	}
	
	var isInteger = true;
	for (i=0;i<nsStringaOUT.length;i++) {
		if (nsStringaOUT.charAt(i) < "0" || nsStringaOUT.charAt(i) > "9") {
			isInteger = false;
			break;
		}
	}
	// aggiungo uno = se la prima cifra è un numero diverso da 0	
	if (isInteger && addCodeZero && nsStringaOUT.charAt(0) > "0" && nsStringaOUT.charAt(0) <= "9") {
		nsStringaOUT ="0"+nsStringaOUT;
	} 
		
	return(nsStringaOUT)
}

function MaterialeCorretto(Qta,Cod,CodCli,Cat,Tbl,Fig,Permesso) 
{
	var qta=parseInt(trimStringa(Qta));
	var cod=String(Cod);
	var codCli=String(CodCli);
	var cat=String(Cat);
	var tbl=String(Tbl);
	var fig=String(Fig);
	var permesso=String(Permesso);
	
	if (
			//	REVISIONE 27 novembre 2007
			//	Modificato perchè non gestiva correttamente valori di tipo "0,..."
			//	in quanto controllava solo la parte intera (qta)
			//	(!((Qta.length == 0)||(isNaN(qta))||(qta <= 0))) // true se nessuna e vera
			(!((Qta.length == 0)||(isNaN(qta))||(qta < 0)||(Qta<=0))) // true se nessuna e vera
			&&
			( (cod.length != 0)||
			  ((codCli.length != 0)&&(permesso.length > 2))||
			  ((cat.length != 0)&&(tbl.length != 0)&&(fig.length != 0)) )
		) {
		return (true);
	} else {
		return (false);
	}
}


