//------------------------------------------------------------------------------------------------------
//CONTROLLO CODICE FISCALE
/*
function CtrlCF(cf)
{
	var validi, i, s, set1, set2, setpari, setdisp;
	if( cf == '' )  return '';
	cf = cf.toUpperCase();
	if( cf.length != 16 )
 		return "La lunghezza del codice fiscale non è corretta:\n"
 		+"il codice fiscale dovrebbe essere lungo\n"
		+"esattamente 16 caratteri.\n";
	validi = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
	for( i = 0; i < 16; i++ ){
		if( validi.indexOf( cf.charAt(i) ) == -1 )
			return "Il codice fiscale contiene un carattere non valido `" +
				cf.charAt(i) +
				"'.\nI caratteri validi sono le lettere e le cifre.\n";
	}
	set1 = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
	set2 = "ABCDEFGHIJABCDEFGHIJKLMNOPQRSTUVWXYZ";
	setpari = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
	setdisp = "BAKPLCQDREVOSFTGUHMINJWZYX";
	s = 0;
	for( i = 1; i <= 13; i += 2 )
		s += setpari.indexOf( set2.charAt( set1.indexOf( cf.charAt(i) )));
	for( i = 0; i <= 14; i += 2 )
		s += setdisp.indexOf( set2.charAt( set1.indexOf( cf.charAt(i) )));
	if( s%26 != cf.charCodeAt(15)-'A'.charCodeAt(0) )
		return "Il codice fiscale non è corretto:\n"+
			"il codice di controllo non corrisponde.\n";
	return "";
}


function CtrlCF_onblur(){
  strErr=CtrlPIVA(window.document.frmMain.CODICE_FISCALE.value);
  if (strErr != '') {
    strErr=CtrlCF(window.document.frmMain.CODICE_FISCALE.value);
    if (strErr != '') {
      window.alert(strErr);
      window.document.frmMain.LBL_CODICE_FISCALE.value="ERRORE";
    } else {
      window.document.frmMain.LBL_CODICE_FISCALE.value="";
    }
  } else {
    window.document.frmMain.LBL_CODICE_FISCALE.value="";
  }
}
*/

//------------------------------------------------------------------------------------------------------
//CONTROLLO PARTITA IVA
/*
function CtrlPIVA(pi)
{
	if( pi == '' )  return '';
	if( pi.length != 11 )
		return "La lunghezza della partita iva non è corretta:\n" +
		       "la partita IVA dovrebbe essere lunga\n" +
		       "esattamente 11 caratteri.\n";
	validi = "0123456789";
	for( i = 0; i < 11; i++ ){
		if( validi.indexOf( pi.charAt(i) ) == -1 )
			return "La partita iva contiene un carattere non valido `" +
				pi.charAt(i) + "'.\nI caratteri validi sono le cifre.\n";
	}
	s = 0;
	for( i = 0; i <= 9; i += 2 )
		s += pi.charCodeAt(i) - '0'.charCodeAt(0);
	for( i = 1; i <= 9; i += 2 ){
		c = 2*( pi.charCodeAt(i) - '0'.charCodeAt(0) );
		if( c > 9 )  c = c - 9;
		s += c;
	}
	if( ( 10 - s%10 )%10 != pi.charCodeAt(10) - '0'.charCodeAt(0) )
		return "La partita iva non è valida:\n" +
			"il codice di controllo non corrisponde.\n";
	return '';
}


function CtrlPIVA_onblur(){
  strErr=CtrlPIVA(window.document.frmMain.PARTITA_IVA.value);
  if (strErr != '') {
    window.alert(strErr);
  }
}
*/

//------------------------------------------------------------------------------------------------------
//CONTROLLO EMAIL
  function CtrlEMail(indirizzo) {
    if (window.RegExp) {
      if (parseInt(String(indirizzo).length)==0) {
        return '';
      } else {
        var nonvalido = "(@.*@)|(\\.\\.)|(@\\.)|(\\.@)|(^\\.)";
        var valido = "^[a-zA-Z0-9\\-\\.\\_]+\\@(\\[?)[a-zA-Z0-9\\-\\.]+\\.([a-zA-Z]{2,4}|[0-9]{1,3})(\\]?)$";
        var regnv = new RegExp(nonvalido);
        var regv = new RegExp(valido);
        if (!regnv.test(indirizzo) && regv.test(indirizzo))
          return '';
        return 'Indirizzo email non valido';
      }
    } else {
        if ((indirizzo.indexOf("@") >= 0) || (parseInt(String(indirizzo).length)==0))
          return '';
        return 'Indirizzo email non valido';
    }
  }

function CtrlEMail_onblur(){
  strErr=CtrlEMail(window.document.frmMain.EMAIL.value);
  if (strErr != '') {
    window.alert(strErr);
  }
}

//------------------------------------------------------------------------------------------------------
//CONTROLLO MESE
/*
  function CtrlMese(mese) {
    if ((mese>=0) && (mese<=12)) {
      return '';
    } else {
      return 'Mese non valido';
    }
  }

//------------------------------------------------------------------------------------------------------
//CONTROLLO GIORNO
  function CtrlGiorno(giorno) {
    if ((giorno>=0) && (giorno<=31)) {
      return '';
    } else {
      return 'Giorno non valido';
    }
  }
*/
//------------------------------------------------------------------------------------------------------
//CONTROLLO ORA
/*
  function CtrlOra(orario) {
       var hh="";
       var mm="";
       var sep="";
       var str="";
       if(orario!=""){
          hh=orario.substr(0,2);
          sep=orario.substr(2,1);
          mm=orario.substr(3,2);
          if(IsNumeric(hh) && IsNumeric(mm) && sep==":" && parseInt(String(hh).length)==2 && parseInt(String(mm).length)==2){
             if(parseInt(hh)<0 || parseInt(hh)>23){
                str="Ore errate! Inserire un numero compreso tra 0 e 23!";
             }
             if((parseInt(mm)<0 || parseInt(mm)>59) && str==""){
                str="Minuti errati! Inserire un numero compreso tra 0 e 59!"
             }
          }
          else {
             str="Formato errato! Il formato corretto è hh:mm!"
          }
       }
       return str;
  }

  function CtrlOra_onblur(orario){
     strErr=CtrlOra(orario);
     if (strErr != '') {
        window.alert(strErr);
     }
  }
*/
//------------------------------------------------------------------------------------------------------
//CONTROLLO DATA
  function CtrlData(stringa){
     //Controllo correttezza formato data gg-mm-aaaa
     if(stringa==""){
       return 0;
     } else {
       var espressione = /^[0-9]{2}\-[0-9]{2}\-[0-9]{4}$/;
       if (!espressione.test(stringa))	{
          return 1;
       } else {
          if(stringa=="00-00-0000"){
             return 0;
          } else {
             //Ricavo anno, mese e giorno dalla data passata
             giorno = parseInt(stringa.substr(0, 2),10);
             mese = parseInt(stringa.substr(3, 2),10);
             anno = parseInt(stringa.substr(6),10);
             //Creo la data con la funzione di javascript con i dati passati
             var data=new Date(anno, mese-1, giorno);
             //Se la data che è stata creata (N.B. la funzione Date di javascript non creerà mai una data errata, es. il 2008-01-32 non esiste e la Date creerà 2008-02-01) è uguale alla data passata significa che la data passata è corretta
             if(data.getFullYear()==anno && data.getMonth()+1==mese && data.getDate()==giorno){
                return 0;
             } else {
                return 2;
             }
          }
       }
     }
  }
  
//------------------------------------------------------------------------------------------------------
//RIEMPIE CONTO CORRENTE CON ZERI NON SIGNIFICATIVI E CALCOLA IBA
    function fillCC(){
        if(parseInt(String(window.document.frmMain.CONTOCORRENTE.value).length)<12 && parseInt(String(window.document.frmMain.CONTOCORRENTE.value).length)>0) {
          for(var i=parseInt(String(window.document.frmMain.CONTOCORRENTE.value).length);i<12;i++) {
            window.document.frmMain.CONTOCORRENTE.value="0"+window.document.frmMain.CONTOCORRENTE.value;
          }
        }
        calcIBAN();
    }


//------------------------------------------------------------------------------------------------------
//CALCOLA IBAN
    function calcIBAN(){
        //verifica ABI:
        if(window.document.frmMain.CODABI.value.search(/^[0-9]{5}$/)==-1 || parseInt(String(window.document.frmMain.CODABI.value).length)==0){window.document.frmMain.IBAN.value="";return("");}

        //verifica CAB:
        if(window.document.frmMain.CODCAB.value.search(/^[0-9]{5}$/)==-1 || parseInt(String(window.document.frmMain.CODCAB.value).length)==0){window.document.frmMain.IBAN.value="";return("");}

        //verifica Numero Conto Corrente:
        if(window.document.frmMain.CONTOCORRENTE.value.search(/^[a-zA-Z0-9]{12}$/)==-1 || parseInt(String(window.document.frmMain.CONTOCORRENTE.value).length)==0){window.document.frmMain.IBAN.value="";return("");}

        var NCC=window.document.frmMain.CONTOCORRENTE.value.toUpperCase()
        var bban=calcola_BBAN(window.document.frmMain.CODABI.value,window.document.frmMain.CODCAB.value,NCC);
        var iban=calcola_IBAN(bban);

        window.document.frmMain.IBAN.value=iban;
    }


    function calcola_BBAN(pABI,pCAB,pNCC){
       var vABI=r0(pABI,5);
       var vCAB=r0(pCAB,5);
       var vNCC=r0(pNCC,12);
       if( vABI.search(/^[0-9]{5}$/)==-1 ||vCAB.search(/^[0-9]{5}$/)==-1 ||vNCC.search(/^[0-9A-Z]{12}$/)==-1)
          return("");
       chS="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
       odA=new Array(1,0,5,7,9,13,15,17,19,21,1,0,5,7,9,13,15,17,19,21,2,4,18,20,11,3,6,8,12,14,16,10,22,25,24,23);
       evA=new Array(0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25);
       var DAN=""+vABI+vCAB+vNCC;
       var s=0;
       var i=-1;
       while(i!==21)
       {
          s+=odA[chS.indexOf(DAN.charAt(++i))]
          +evA[chS.indexOf(DAN.charAt(++i))];
       }
       return(chS.charAt(10+s%26)+vABI+vCAB+vNCC);
    }


    function calcola_IBAN(pBBAN){
       if(pBBAN.search(/^[A-Z][0-9]{5}[0-9]{5}[A-Z0-9]{12}$/)==-1)
          return("");
       var vIBAN=pBBAN+"IT00";
       var w="";
       for(var i=0;i<27;i++)
          w+="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ".indexOf(vIBAN.charAt(i));
       while(w.length>2)
          w=parseInt(w.substr(0,7),10)%97+w.substr(7);
       return("IT"+r0(98-parseInt(w,10)%97,2)+pBBAN);
    }


    function r0(s,l){
       var c=""+s;
       while(c.length<l)
          c="0"+c;
       return(c);
    }


//------------------------------------------------------------------------------------------------------
//RICARICA LA PAGINA INDICANDO QUALE CAMPO HA PROVOCATO IL RELOAD
function reload(page, page_value){
  window.document.frmMain.RELOAD_PAGE.value=page_value;
  window.document.frmMain.action=page;
  window.document.frmMain.submit();
}


//------------------------------------------------------------------------------------------------------
//CARICA LA PAGINA DI GESTIONE COLLEGATA RICORDANDOSI DALLA GESTIONE DA DOVE SONO PARTITO
function link(action, back, go){
        window.document.frmMain.BACK_TO_LINK.value=back;
        window.document.frmMain.GO_TO_LINK.value=go;
        window.document.frmMain.action=action;
        checkSubmit();
    }
    
//------------------------------------------------------------------------------------------------------
//CONTROLLA SE UNA STRINGA E' UN NUMERO
function IsNumeric(sText){
   var ValidChars = "0123456789.,-";
   var IsNumber=true;
   var Char;
   var nSep=0;

   for (i = 0; i < sText.length && IsNumber == true; i++)
      {
      Char = sText.charAt(i);
      if (ValidChars.indexOf(Char) == -1)
         {
         IsNumber = false;
         }
      if (Char=='.' || Char==','){
         nSep = nSep + 1;
      }
      }
   if(parseInt(String(sText).length)==0){ IsNumber = false; }
   if(nSep>1){ IsNumber = false; }
   return IsNumber;

}

//------------------------------------------------------------------------------------------------------
//CONTROLLA SE UNA STRINGA E' UN NUMERO INTERO
function IsNumericINT(sText){
   var ValidChars = "0123456789";
   var IsNumber=true;
   var Char;
   var nSep=0;

   for (i = 0; i < sText.length && IsNumber == true; i++)
      {
      Char = sText.charAt(i);
      if (ValidChars.indexOf(Char) == -1)
         {
         IsNumber = false;
         }
      }
   if(parseInt(String(sText).length)==0){ IsNumber = false; }
   if(nSep>1){ IsNumber = false; }
   return IsNumber;

}

//------------------------------------------------------------------------------------------------------
//CONTROLLA SE UNA STRINGA E' UN NUMERO DECIMALE
function IsNumericFLOAT(sText){
   var ValidChars = "0123456789.,";
   var IsNumber=true;
   var Char;
   var nSep=0;

   for (i = 0; i < sText.length && IsNumber == true; i++)
      {
      Char = sText.charAt(i);
      if (ValidChars.indexOf(Char) == -1)
         {
         IsNumber = false;
         }
      }
   if(parseInt(String(sText).length)==0){ IsNumber = false; }
   if(nSep>1){ IsNumber = false; }
   return IsNumber;

}

//------------------------------------------------------------------------------------------------------
//FORMATTA UN NUMERO TOGLIENDO '.' SOSTITUENDOLO CON '' E TOGLIENDO ',' SOSTITUENDOLA CON '.' (es. input 1.000,23 output: 1000.23)
function formatNumber(sText){
   return String(String(sText).replace('.','')).replace(',','.');
}
  
//------------------------------------------------------------------------------------------------------
//ESEGUE IL ROUND DI UN NUMERO IN BASE ALLE CIFRE DECIMALI PASSATE
function roundTo(value, decimalpositions){
    var i = value * Math.pow(10,decimalpositions);
    i = Math.round(i);
    return i / Math.pow(10,decimalpositions);
}

//------------------------------------------------------------------------------------------------------
//DISABILITA TUTTI I PULSANTI DI UN FORM
function disableButtons(MyForm){
    if (document.all || document.getElementById)
    {
       //screen thru every element in the form, and hunt down "submit" and "reset"
       for (i=0;i<MyForm.length;i++)
       {
          var tempobj=MyForm.elements[i];
          if(tempobj.type.toLowerCase()=="button" || tempobj.type.toLowerCase()=="submit" || tempobj.type.toLowerCase()=="reset"){
             //disable
             tempobj.disabled=true;
          }
       }
    }
}
//------------------------------------------------------------------------------------------------------
//ABILITA TUTTI I PULSANTI DI UN FORM
function enableButtons(MyForm){
    if (document.all || document.getElementById)
    {
       //screen thru every element in the form, and hunt down "submit" and "reset"
       for (i=0;i<MyForm.length;i++)
       {
          var tempobj=MyForm.elements[i];
          if(tempobj.type.toLowerCase()=="button" || tempobj.type.toLowerCase()=="submit" || tempobj.type.toLowerCase()=="reset"){
             //enable
             tempobj.disabled=false;
          }
       }
    }
}
//------------------------------------------------------------------------------------------------------
//Formatta un numero con separatore decimali e delle migliaia
function number_format(number, decimals, dec_point, thousands_sep) {
    // Formats a number with grouped thousands
    //
    // version: 1006.1915
    // discuss at: http://phpjs.org/functions/number_format    // +   original by: Jonas Raoni Soares Silva (http://www.jsfromhell.com)
    // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +     bugfix by: Michael White (http://getsprink.com)
    // +     bugfix by: Benjamin Lupton
    // +     bugfix by: Allan Jensen (http://www.winternet.no)    // +    revised by: Jonas Raoni Soares Silva (http://www.jsfromhell.com)
    // +     bugfix by: Howard Yeend
    // +    revised by: Luke Smith (http://lucassmith.name)
    // +     bugfix by: Diogo Resende
    // +     bugfix by: Rival    // +      input by: Kheang Hok Chin (http://www.distantia.ca/)
    // +   improved by: davook
    // +   improved by: Brett Zamir (http://brett-zamir.me)
    // +      input by: Jay Klehr
    // +   improved by: Brett Zamir (http://brett-zamir.me)    // +      input by: Amir Habibi (http://www.residence-mixte.com/)
    // +     bugfix by: Brett Zamir (http://brett-zamir.me)
    // +   improved by: Theriault
    // *     example 1: number_format(1234.56);
    // *     returns 1: '1,235'    // *     example 2: number_format(1234.56, 2, ',', ' ');
    // *     returns 2: '1 234,56'
    // *     example 3: number_format(1234.5678, 2, '.', '');
    // *     returns 3: '1234.57'
    // *     example 4: number_format(67, 2, ',', '.');    // *     returns 4: '67,00'
    // *     example 5: number_format(1000);
    // *     returns 5: '1,000'
    // *     example 6: number_format(67.311, 2);
    // *     returns 6: '67.31'    // *     example 7: number_format(1000.55, 1);
    // *     returns 7: '1,000.6'
    // *     example 8: number_format(67000, 5, ',', '.');
    // *     returns 8: '67.000,00000'
    // *     example 9: number_format(0.9, 0);    // *     returns 9: '1'
    // *    example 10: number_format('1.20', 2);
    // *    returns 10: '1.20'
    // *    example 11: number_format('1.20', 4);
    // *    returns 11: '1.2000'    // *    example 12: number_format('1.2000', 3);
    // *    returns 12: '1.200'
    var n = !isFinite(+number) ? 0 : +number,
        prec = !isFinite(+decimals) ? 0 : Math.abs(decimals),
        sep = (typeof thousands_sep === 'undefined') ? ',' : thousands_sep,        dec = (typeof dec_point === 'undefined') ? '.' : dec_point,
        s = '',
        toFixedFix = function (n, prec) {
            var k = Math.pow(10, prec);
            return '' + Math.round(n * k) / k;        };
    // Fix for IE parseFloat(0.55).toFixed(0) = 0;
    s = (prec ? toFixedFix(n, prec) : '' + Math.round(n)).split('.');
    if (s[0].length > 3) {
        s[0] = s[0].replace(/\B(?=(?:\d{3})+(?!\d))/g, sep);    }
    if ((s[1] || '').length < prec) {
        s[1] = s[1] || '';
        s[1] += new Array(prec - s[1].length + 1).join('0');
    }    return s.join(dec);
}

//------------------------------------------------------------------------------------------------------
//Codifica una stringa con urlencode
function urlencode (str) {
  str = escape(str);
  str = str.replace(/\+/g,'%2B');
  str = str.replace(/%20/g, '+');
  str = str.replace(/\*/g, '%2A');
  str = str.replace(/\//g, '%2F');
  str = str.replace(/@/g, '%40');
  return str;
}

function changeColorSelect(id,color){
  document.getElementById(id+"color").value=color;
  document.getElementById(id).style.backgroundColor=color;
}

