function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i>d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}
function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}
function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_preloadImages() { //v3.0
 var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
   var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i>a.length; i++)
   if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_jumpMenu(targ,selObj,restore){ //v3.0
  eval(targ+".location='"+selObj.options[selObj.selectedIndex].value+"'");
  if (restore) selObj.selectedIndex=0;
}



function calendaropen(src) {
  w = 160;
  h = 150;
  win = window.open(src, '', 'scrollbars=no,resizable=no,width=' + w + ',height=' + h+',top='+( screen.height - w ) / 1.5+',left='+( screen.width - h ) / 2);
  //win = window.open(src, '');
  //win.moveTo( ( screen.width - w ) / 1.5, ( screen.height - h ) / 2 );
}

function popaccount(src) {
  w = 500;
  h = 432;
  win = window.open(src, "", "scrollbars=no,resizable=no,width=" + w + ",height=" + h);
  win.moveTo( ( screen.width - w ) / 2, ( screen.height - h ) / 2 );
}

function popazienda(src) {
  w = 500;
  h = 295;
  win = window.open(src, '', 'scrollbars=no,resizable=no,width=' + w + ',height=' + h);
  win.moveTo( ( screen.width - w ) / 2, ( screen.height - h ) / 2 );
}

//------------------------------------------------------------------------------
// FUNZIONI DI UTILITA':
// - PULIZIA DI STRINGHE (eliminazioni caratteri, sostituzione di virgole con punti
// - DA STRINGA A NUMERO RAPPRESENTATO (sia dal formato italiano che da quello internazionale)
// - CALCOLO CONVERSIONE LIRE->EURO E EURO->LIRE
// - DA NUMERO A STRINGA FORMATTATA CON SEPARATORI DECIMALI E DI MIGLIAIA (sia nel formato italiano
//   che in quello internazionale)
//------------------------------------------------------------------------------

// elimina tutte le occorrenze di un carattere presente in una stringa 
// (utile per eliminare ad esempio i punti di migliaia da un numero)
function eliminaCarattere(string, carattere){
  i=string.indexOf(carattere);
  while(i != -1) {
    string = string.substring(0,i) + string.substring(i+1, string.length);
    i=string.indexOf(carattere);
  }
  return string;
}

// converte le virgole presenti in una stringa in punti  (utile per permettere a javascript
// di interpretare il numero come decimale in modo corretto)
function convertiVirgoleInPunti(string){
  i=string.indexOf(",");
  while(i != -1) {
    string = string.substring(0,i) + '.' + string.substring(i+1, string.length);
    i=string.indexOf(",");
  }
  return string;
}

// restituisce il float fl con un numero di decimali pari a dec
function formattaFloat(fl, dec){
  str=""+fl;
  i = str.indexOf(".");
  if (i<0){
    i=str.length;
    str=str+".00000000000";
  }else{
    if(i==0){
      i=1;
      str="0"+str;
    }else{
      str=str+"00000000000";
    }
  }
  if (dec==0)
    return str.substring(0,i+dec);
  else 
    return str.substring(0,i+1+dec);
}

// converte una stringa contenente un numero in un numero vero e proprio
function convertiStringaInNumeroJS(numero, decimali){
    // ripulisce la stringa eliminando i punti delle migliaia e sostituendo la
    // virgola decimale con il punto
    var invalstring = convertiVirgoleInPunti(eliminaCarattere(numero, "."));
    var inval = parseFloat(invalstring) + (0.5/Math.pow(10,decimali));
    inval = parseFloat(formattaFloat(inval, decimali));
    return inval;
}

// converte una stringa contenente un numero in un numero vero e proprio
function convertiStringaConSeparatoriInNumeroJS(numero, decimali, separatoreMigliaia, separatoreDecimale){
    // ripulisce la stringa eliminando i punti delle migliaia e sostituendo la
    // virgola decimale con il punto
    var invalstring = "";
    if (separatoreMigliaia == ".")
      invalstring = convertiVirgoleInPunti(eliminaCarattere(numero, "."));
    else 
      invalstring = eliminaCarattere(numero, ",");

    var inval = parseFloat(invalstring) + (0.5/Math.pow(10,decimali));
    inval = parseFloat(formattaFloat(inval, decimali));
    return inval;
}

function convertiEuroInLire(euro){
    var valoreInLire = euro * 1936.27 + 0.5;
    return formattaFloat(valoreInLire,0);
}

function convertiLireInEuro(lire){
    var valoreInEuro = lire / 1936.27 + 0.005;
    return formattaFloat(valoreInEuro, 2);
}

// a partire da un numero, e specificato il numero di decimali, genera una
// stringa che rappresenta il numero stesso utilizzando come separatore delle migliaia
// il punto e come separatore decimale la virgola
function formattaNumero(numero, numeroDecimali){
   // separa la parte intera e la parte decimale
   var numeroStringa = new String(numero);
   var posizionePunto = numeroStringa.indexOf(".");
   var parteIntera = "";
   var parteDecimale = "";
   if (posizionePunto == -1) {
     parteIntera = numeroStringa;
     parteDecimale = "000000000000000";
   } else {
     parteIntera = numeroStringa.substring(0, posizionePunto);
     parteDecimale = numeroStringa.substring(posizionePunto + 1, numeroStringa.length)+"000000000000000";
   }

   // stabilisce i blocchi in cui suddividere la parte intera con i numeri
   var cifre=parteIntera.length;
   var gruppi=parseInt(cifre/3);
   if (isNaN(gruppi)){gruppi=0}
   var resto=parseInt(cifre - gruppi*3);

   // costruisce la parte intera con i punti delle migliaia
   var numeroFormattato="";
   for (i=gruppi ; i>0 ; i--) {numeroFormattato=numeroFormattato+"."+parteIntera.substr(cifre-3*i,3)}
   numeroFormattato=parteIntera.substr(0,resto)+numeroFormattato;
   if (numeroFormattato.substr(0,1) == "." ){numeroFormattato=numeroFormattato.substr(1,numeroFormattato.length)}

   // aggiunge la parte decimale se prevista
   if (numeroDecimali>0) numeroFormattato = numeroFormattato + "," + parteDecimale.substr(0, numeroDecimali);

   return numeroFormattato;
}

// a partire da un numero, e specificato il numero di decimali, genera una
// stringa che rappresenta il numero stesso utilizzando i separatori delle migliaia
// e il separatore decimale fornito in input, in modo da rendere internazionalizzabile
// la generazione del numero
function formattaNumeroConSeparatori(numero, numeroDecimali, separatoreMigliaia, separatoreDecimale){
   // separa la parte intera e la parte decimale
   var numeroStringa = new String(numero);
   var posizionePunto = numeroStringa.indexOf(".");
   var parteIntera = "";
   var parteDecimale = "";
   if (posizionePunto == -1) {
     parteIntera = numeroStringa;
     parteDecimale = "000000000000000";
   } else {
     parteIntera = numeroStringa.substring(0, posizionePunto);
     parteDecimale = numeroStringa.substring(posizionePunto + 1, numeroStringa.length)+"000000000000000";
   }

   // stabilisce i blocchi in cui suddividere la parte intera con i numeri
   var cifre=parteIntera.length;
   var gruppi=parseInt(cifre/3);
   if (isNaN(gruppi)){gruppi=0}
   var resto=parseInt(cifre - gruppi*3);

   // costruisce la parte intera con i punti delle migliaia
   var numeroFormattato="";
   for (i=gruppi ; i>0 ; i--) {numeroFormattato=numeroFormattato+separatoreMigliaia+parteIntera.substr(cifre-3*i,3)}
   numeroFormattato=parteIntera.substr(0,resto)+numeroFormattato;
   if (numeroFormattato.substr(0,1) == separatoreMigliaia ){numeroFormattato=numeroFormattato.substr(1,numeroFormattato.length)}

   // aggiunge la parte decimale se prevista
   if (numeroDecimali>0) numeroFormattato = numeroFormattato + separatoreDecimale + parteDecimale.substr(0, numeroDecimali);

   return numeroFormattato;
}

function maxLength(which,max){
    testo = which.value;
    if (testo.length > max){	
    	which.value = testo.substring(0,max);
    }
}

