//Elimina o sostituisce caratteri speciali in INPUT - utilizzabile su onKeyPress
function IsOKChar() {

  switch (event.keyCode) {            // Carattere premuto
  case 34:           // Sostituisce Doppi Apici con `
    window.event.keyCode = 96;
    break;
  case 39:           // Sostituisce Apice singolo con `
    window.event.keyCode = 96;
    break;
  case 10:           // Sostituisce LF con Spazio
    window.event.keyCode = 32;
    break;
  case 13:           // Sostituisce CR con Spazio
    window.event.keyCode = 32;
    break;
  }
}

//Sostituisce in una stringa una sottostringa con un'altra
function replaceChars(entry, out_char, in_char) {

  temp = "" + entry; // Temporanea

  while (temp.indexOf(out_char) > -1) {
    pos = temp.indexOf(out_char);
    alert(pos);
    temp = "" + (temp.substring(0, pos) + in_char + temp.substring((pos + out_char.length), temp.length));
    alert(temp);
  }

  return temp;
}


function Scrivi(Testo) {
	document.write(URLDecode(Testo));
}

function IsDigit() {
	//Valori Ammessi 0123456789.,-
	return (((event.keyCode >= 48) && (event.keyCode <= 57)) || ((event.keyCode >= 44) && (event.keyCode <= 46)))
}

function IsAlfaNum() {
	return ((event.keyCode >= 48) && (event.keyCode <= 57))
}

//equivalente funz. trim vb
function trim(value){
	var tmp=value;
	while (tmp.indexOf(" ",0) != -1) {
		if (tmp.indexOf(" ",0) != 0) break;
		if (tmp.indexOf(" ",0) == 0) {
			tmp = tmp.substr(1);
		}
	}
	while (tmp.indexOf(" ",tmp.length-1) != -1) {
		if (tmp.indexOf(" ",tmp.length-1) == tmp.length-1){
				tmp = tmp.substr(0,tmp.length-1);
		}
	}
	return tmp;
}

function campoAlfanumerico(item){
	var strRicerca = new RegExp("[^0-9a-zA-Z\+-_אטילעש ]","g");
	var strRicerca2 = new RegExp("['<>=.;:?/^\]","g");
	var strRicerca3;
	strRicerca3= "\\";
	if ((item.search(strRicerca) != -1)||(item.search(strRicerca2)!= -1)||(item.indexOf(strRicerca3,1)!= -1))	return false;
	return true;
}

function campoAlfabetico(item){
	var strRicerca = new RegExp("[^a-zA-Z'אטילעש ]","g");
	var strRicerca2 = new RegExp("[<>=.;:?/^\]","g");
	var strRicerca3;
	strRicerca3= "\\";
	if ((item.search(strRicerca) != -1)||(item.search(strRicerca2)!= -1)||(item.indexOf(strRicerca3,1)!= -1))	return false;
	return true;
}

//restituisce true se il value ט numerico
function isValidNumber(item) {
	if (isNaN(item) == true) return false; 
	return true;
}

//restituisce true se il value ט un ind. e-mail valido,
function isValidEmail(item) {
	var pos; var pos1
	var strTmp;

	if (item.length < 6) return false;
	if (item.indexOf ('@', 0) == -1) return false;
	pos = item.indexOf('@');
	if (item.indexOf ('.', 0) < 1) return false;
	if (item.indexOf ('@', pos + 1) >= 0) return false;
	strTmp =  new RegExp("[^0-9a-zA-Z\+-_]","g");//caratteri possibili
	if(strTmp.test(item) == true)   return false;
	pos1 = item.indexOf('.');
	strTmp = item.substring(0,pos);//nome
	if (strTmp.length < 2) return false;
	if (item.substring(pos + 1).length > 63) return false;//max cons. x dominio.est
	strTmp = item.substring(pos + 1, pos1);//provider
	if (strTmp.length < 2) return false;
	strTmp = item.substring(pos1+1);//estensione
	if (strTmp.length < 2) return false;
	return true;
}

//restituisce true se il value ט una data valida
function isValidDate(gg, mm, aaaa){
	var inizioSecolo;
	var DayCompare;
	var month = new Array();
	//day x month
	month[1] = 31;//gen
	month[2] = 28;//feb
	month[3] = 31;//mar
	month[4] = 30;//apr
	month[5] = 31;//mag
	month[6] = 30;//giu
	month[7] = 31;//lug
	month[8] = 31;//ago
	month[9] = 30;//sett
	month[10] = 31;//ott
	month[11] = 30;//nov
	month[12] = 31;//dic
	
	//formattazione nel caso il num di cifre ט min.
	if ((isNaN(gg))||(isNaN(mm))||(isNaN(aaaa))) return false;
	if (gg.length == 1) gg = "0" + gg;
	if (mm.length == 1) mm = "0" + mm;
	switch (aaaa.length) {//cifre anno
		case 1:
			aaaa = "200" + aaaa;
			break;
		case 2:
			if (parseInt(aaaa) < 50)
				aaaa = "20" + aaaa;
			else
				aaaa = "19" + aaaa;
			break;
		case 3:
			if (parseInt(aaaa) < 50)
				aaaa = "2" + aaaa;
			else
				aaaa = "1" + aaaa;
			break;
	}
	//fine formattazione
	
	inizioSecolo=aaaa.substr(aaaa.length-2,2);
	if (inizioSecolo=="00")
		inizioSecolo=true;
	else
		inizioSecolo=false;
		
	if ((gg.length != 2)||(mm.length != 2)||(aaaa.length != 4)) return false;
	
	//controlli num. :
	
	if ((gg.length==2) && (gg.substr(0,1)=="0"))
		{
			gg=gg.substr(1,1);
		}
	if ((mm.length==2) && (mm.substr(0,1)=="0"))
		{
			mm=mm.substr(1,1);
		}
	gg = parseInt(gg);		
	mm = parseInt(mm); 
	aaaa = parseInt(aaaa);
	if ((mm > 12)||(mm <= 0)) return false;

	DayCompare = month[mm];
	//contr. bisestile
	if (mm == 2) { //se il mese ט febbraio
		if (inizioSecolo) { //se ט l'anno di inizio secolo
			if (((aaaa % 400) == 0) && (mm == 2))	DayCompare = 29;
		}else{
			if ((aaaa % 4) == 0)	DayCompare = 29; //anno bisestile
		}
	}//fine bisestile
	if ((gg > DayCompare)||(gg <= 0)) return false;//se il giorno supera il max consent. x mese
	if (aaaa <= 0) return false;
	if ((aaaa < 1900) || (aaaa > 2070)) return false;//intervallo consentito x l'anno
	return true;
}


function Mid(str, start, len)
/***
		IN: str - the string we are LEFTing
			start - our string's starting position (0 based!!)
			len - how many characters from start we want to get

		RETVAL: The substring from start to start+len
***/
{
	// Make sure start and len are within proper bounds
	if (start < 0 || len < 0) return "";

	var iEnd, iLen = String(str).length;
	if (start + len > iLen)
			iEnd = iLen;
	else
			iEnd = start + len;

	return String(str).substring(start,iEnd);
}

// Verifica che un Periodo da dataInizio a dataFine sia valido
// ovvero che la data di Inizio sia <= della data di Fine
// Le date devono essere nel formato gg/mm/aaaa.
function isValidPeriod(dataInizio, dataFine) {

if ((dataInizio != "") && (dataFine != "")) {
  var aI = Mid(dataInizio,6,4);
  var mI = Mid(dataInizio,3,2);
  var gI = Mid(dataInizio,0,2);
  var aF = Mid(dataFine,6,4);
  var mF = Mid(dataFine,3,2);
  var gF = Mid(dataFine,0,2);

  var dI = aI + mI + gI;
  var dF = aF + mF + gF;

  if (dI <= dF) 
    {return true;} 
  else
    {return false;}
} else
  {return true;} 
}

//restituisce l'estensione di NomeFile
function Estensione(NomeFile){

var vett = new Array();
var indice;
var ris = "";

if (NomeFile.length==0){return ris;}

vett = NomeFile.split(".");
indice = vett.length;
ris = vett[indice -1].toUpperCase( );

return ris;

}

//restituisce l'opposto della UrlEncode
function URLDecode(Stringa)
{
  // Replace + with ' '
  // Replace %xx with equivalent character
  var encoded = Stringa;
  var plaintext = "";
  var i = 0;
  while (i < (encoded.length-2)) {
      var ch = encoded.charAt(i);
       if (ch == "+") {
           plaintext += " ";
            i++;
       } else if (ch == "%" && encoded.charAt(i+1) != "%") {
           plaintext += unescape( encoded.substr(i,3) );
            i += 3;
         } else {
            plaintext += ch;
            i++;
         }
    } // while
    if (i < encoded.length) {
        plaintext += encoded.substr(i,encoded.length-i);
    }
  return unescape(plaintext);
}

// Aggiunge un nuovo valore ad un controllo e lo imposta come SELEZIONATO
function newOption(controllo, $maxLen) {

  var temp = new Option();
  var msg = "Inserisci il nuovo valore: ";
  var lng = 0;

  if (($maxLen != null) && (isValidNumber($maxLen))) {
    lng = $maxLen;
    msg = msg + "(Massimo " + $maxLen + " caratteri)";
  }

  var nuova = window.prompt(msg, "");

  if ((nuova!="") && (nuova!=null)) {

    if (lng > 0) nuova = Mid(nuova, 0, lng);

    var regexp = /\"|\'/g;   // Espressione reg. per cercare " e ' in modo globale
    nuova = nuova.replace(regexp, "`");

    temp.value=nuova;
    temp.text=nuova;
    temp.selected=true;

    controllo[controllo.length]=temp;
  }
}
