
function isDefined(str)
          {
	        return (String(str)!="undefined")  
			//return (eval(str)=="object" || eval(str)=="[object]");
			//return toString(eval(str)).search(/object/gi);
          }


// Ritorna il valore del parametro name
function queryString(name) {
  var i;
  query=location.search;
  query=query.substr(1);
  params=new Array();
  params=query.split("&");
  for (valore="",i=0;i<params.length;i++) {
    v=params[i];
    pos=v.indexOf("=");
    if (v.substring(0,pos)==name) {
      valore=unescape(v.substr(pos+1).replace(/\+/g, " "));
      break;
    }//end if
  }//end if
  return valore;
}//end function


function addPreferiti(title)
{
window.external.AddFavorite(location.href, title);
return true
}


function prePadNum(str, n) {
    returnstr = str;
    stringlen = str.length;
    if (stringlen < n) {
      topad = n - stringlen;
      for (var i = 0; i < topad; i ++) {
        returnstr = "0" + returnstr;
      }//end for
    }//end if
    return returnstr;
  }//end function


function undot(vv) {
  var vx=""+vv;
  if (typeof vv=='string')
    return (vx.replace(/\./gi, "").replace(/\,/gi, "."));
  else {
    if (isNaN(vv)) vv=0;
    return vv;
  }//end else
}//end function

function dot(name) {
  negative = "";
  decimal = "";
  var v=""+undot(name);
  // elimino l'eventuale segno negativo
  if (v.charAt(0) == "-") {
    v = v.substring(1, v.length);
    negative="-";
  }//end if
  // considero solo la parte intera
  decpos = v.search(/\./gi);
  if (decpos != -1) {
    decimal = ","+v.substring(decpos+1, v.length);
    v = v.substring(0, decpos);
    //alert("Posizione virgola: " + decpos + "\nParte intera: " + v + "\nParte decimale: "+decimal);
  }//end if
  var l=v.length-1;
  var vd=""
  var vd2=""

  for (i=0,d=1;i<=l;i++,d++) {
    if (d>3) {vd=vd+".";d=1;}
    vd=vd+v.substr(l-i,1);
  }//end for

  for (i=vd.length;i>=0;i--)
    vd2=vd2+vd.substr(i,1);
  return negative+vd2+decimal;
}//end function



//--------------------------------------
// checkMail()
//--------------------------------------
// Controlla la correttezza sintattica
// della mail
function checkMail(oField){
	var nome,dominio2,dominio1;
	var sValue=oField.value;

	rxSplitMail = /^(.+)@(.+)\.(.+)$/;

	//Controlla la struttura del campo email
	if(!rxSplitMail.test(sValue)){
		return false
	}
	nome			= sValue.replace(rxSplitMail,"$1");
	dominio2	= sValue.replace(rxSplitMail,"$2");
	dominio1	= sValue.replace(rxSplitMail,"$3");

	rxChNonPermessi=/[àèéìòù\s@]+/;

	//---------------------------
	//Dominio di primo livello
	//---------------------------
	if(dominio1.length<2 || rxChNonPermessi.test(dominio1)){
		return false;
	}

	//---------------------------
	//Dominio di secondo livello
	//---------------------------
	if(dominio2.length<2 || rxChNonPermessi.test(dominio2)){
		return false;
	}

	//---------------------------
	//Nome
	//---------------------------
	if(nome.length<2 || rxChNonPermessi.test(nome)){
		return false;
	}

	// Non esistono errori
	return true;
}// end function



function trim(myString)
{
myString=myString.replace( /^\s*(\.*)/ , '$1') ;
myString=myString.replace( /(\.*)\s*$/ , '$1') ;
return (myString)
}

/* -----------------------------------------------------------------------------
 * Torna un valore numerico valido (eventualmente decimale e negativo) data una
 * stringa di testo. Se la stringa non rappresenta un numero valido il valore di
 * ritorno sarà 0.
 *
 * @param numstr str: stringa che rappresenta un numero;
 * @param usedot bool: considera o meno il punto come separatore di migliaia
 * @return:       valore numerico eventualmente decimale e negativo;
 * ----------------------------------------------------------------------------- */
function validateReal() {
  var retstr = "";
  var negative="";
  
  numstr=arguments[0];
  if (arguments.length>1)
   usedot=arguments[1];
  else
   usedot=true;
  
  if (numstr.length == 0) {
    retstr = "0";
  }//end if
  else {
    // controllo se il numero dovrà essere negativo
    retstr=numstr;
    negative = numstr.charAt(0) == "-" ? "-" : "";
    if (usedot)
    {
    // sostituisco i punti con il nulla   
    retstr = numstr.replace(/\./gi, "");
    }
    // elimino caratteri estranei
    retstr = retstr.replace(/[^0-9.,^,.]/gi, "");
    // cerco la prima virgola
    var dotpos = retstr.search(/,/gi);
    switch (dotpos) {
      case -1:
        // non ci sono virgole -> non faccio nulla
        // mi serve specificare questo caso
        // altrimenti finirebbe nel default
        break;
      case 0:
        // la virgola è all'inizio -> aggiungo lo 0 davanti ed elimino altre virgole
        retstr = "0."+retstr.replace(/,/gi,"");
        break;
      default:
        // la virgola è in mezzo -> elimino le altre virgole
        var substr1 = retstr.substr(0, dotpos);
        var substr2 = (retstr.substring(dotpos+1, retstr.length)).replace(/,/gi,"");
        retstr = substr1+'.'+substr2;
 
    }//end switch
  }//end else
  var retval = parseFloat(negative+retstr,10);
  if(!isNaN(retval)) return retval;
  else return 0;
}//end function




function getExt(filename)
{
ext=filename.substr(filename.length-3,3);
return (ext);
}

function isPictureFile(filename)
{
ext=getExt(filename).toUpperCase();
return (ext=="JPG" || ext=="GIF");
}


//--------------------------------
// formatDenaro()
//--------------------------------
function formatDenaro(x)
{
 //arrotondo l'intero!
 // arriva giusto! alert(n);
 
 n=arguments[0];
 dec=arguments[1];
 
 if (arguments.length>2)
 	usedot=arguments[2];
 else
 	usedot=true;
 	
 
 rf=Math.pow(10,dec);
 n=Math.round(n*rf)/rf;
 n_str=String(n);
 
 primavirgola=parseInt(n);
 vpos=n_str.search(/\./gi);
 if (vpos>=0)
  dopovirgola=n_str.substr(vpos+1,dec);
 else
  dopovirgola="";
 
 //alert("Intero:"+primavirgola+" decs :"+dopovirgola);
 
 //scritto: 0.xxxx
 var i=0;
 intero="";
 
 primavirgola = String(primavirgola);
 //dopovirgola_str = String(dopovirgola);
 
 if (usedot)
 	intero=dot(primavirgola);
 else
 	intero=primavirgola;
 	
 if (dec>0 && dopovirgola.length>0)
  {
   add_zeri = dec - dopovirgola.length; 
   for (i=0;i<add_zeri;i++)
    
    dopovirgola = dopovirgola+"0";
    
   
    reale=","+dopovirgola;
 }    
  
 else
  {
  reale="";
  if (dec>0)
   {
   reale=",";
   
   for (i=0;i<dec;i++)
    reale = reale + "0";
   } 
   
  } 
 
 denaro=intero+reale;
 
 
 return (denaro);
}


function getCF(cognome, nome, gg, mm, aam, aad, aau, sesso, comune)
{
 var gs=0;
 var i=0;
 var somma=0;

 strCodFis="";
 strcognome="";
 strnome="";
 strgiornosex="";
 chrcontrollo='';

  // Processa il cognome
  //----------------------------------------------------------------
    for (i=0; i<cognome.length; i++)
        {
         switch (cognome.charAt(i))
                {
                  case 'A':
                  case 'E':
                  case 'I':
                  case 'O':
                  case 'U': break;
                  default :
                  if((cognome.charAt(i)<='Z')&& (cognome.charAt(i)>'A'))
                   strcognome = strcognome + cognome.charAt(i);
                }
        }
    if (strcognome.length < 3)
      {
       for (i=0; i<cognome.length; i++)
          {
           switch (cognome.charAt(i))
                 {
                  case 'A':
                  case 'E':
                  case 'I':
                  case 'O':
                  case 'U': strcognome = strcognome + cognome.charAt(i);
                 }
          }
       if (strcognome.length < 3)
         {
          for (i=strcognome.length; i<=3; i++)
             { strcognome = strcognome + 'X'; }
         }
      }
   strcognome = strcognome.substring(0,3);
 //------------------------------------------------------------



  // processa il nome
  //----------------------------------------------------------------
    for (i=0; i<nome.length; i++)
       {
        switch (nome.charAt(i))
              {
               case 'A':
               case 'E':
               case 'I':
               case 'O':
               case 'U': break;
               default:
 if((nome.charAt(i)<='Z')&& (nome.charAt(i)>'A'))
                  strnome = strnome + nome.charAt(i);
              }
       }
    if (strnome.length > 3)
      {
        strnome = strnome.substring(0,1) + strnome.substring(2,4);
      }
    else {
          if (strnome.length < 3)
            {
             for (i=0; i<nome.length; i++)
                {
                  switch (nome.charAt(i))
                        {
                         case 'A':
                         case 'E':
                         case 'I':
                         case 'O':
                         case 'U': strnome = strnome + nome.charAt(i);
                        }
                }
             if (strnome.length < 3)
               {
                for (i=strnome.length; i<=3; i++)
                   {strnome = strnome + 'X';}
               }
            }
          strnome = strnome.substring(0,3);
         }
 //--------------------------------------- Fine processa nome




 // processa giorno e sesso
 //--------------------------------------------
  gs = (gg + (40 * sesso));
  if(gs<10) strgiornosex = "0" + gs;
  else strgiornosex =  gs;
 //--------------------------------------------

 strCodFis = strcognome + strnome + aad + aau + mm + strgiornosex + comune;


 // calcola la cifra di controllo
 //--------------------------------------------
    for (i=0; i<15; i++)
       {
        if (((i+1) % 2) != 0) //caratteri dispari
          {
           switch (strCodFis.charAt(i))
                 {
                  case '0':
                  case 'A':{ somma += 1; break;}
                  case '1':
                  case 'B':{ somma += 0; break;}
                  case '2':
                  case 'C':{ somma += 5; break;}
                  case '3':
                  case 'D':{ somma += 7; break;}
                  case '4':
                  case 'E':{ somma += 9; break;}
                  case '5':
                  case 'F':{ somma += 13; break;}
                  case '6':
                  case 'G':{ somma += 15; break;}
                  case '7':
                  case 'H':{ somma += 17; break;}
                  case '8':
                  case 'I':{ somma += 19; break;}
                  case '9':
                  case 'J':{ somma += 21; break;}
                  case 'K':{ somma += 2; break;}
                  case 'L':{ somma += 4; break;}
                  case 'M':{ somma += 18; break;}
                  case 'N':{ somma += 20; break;}
                  case 'O':{ somma += 11; break;}
                  case 'P':{ somma += 3; break;}
                  case 'Q':{ somma += 6; break;}
                  case 'R':{ somma += 8; break;}
                  case 'S':{ somma += 12; break;}
                  case 'T':{ somma += 14; break;}
                  case 'U':{ somma += 16; break;}
                  case 'V':{ somma += 10; break;}
                  case 'W':{ somma += 22; break;}
                  case 'X':{ somma += 25; break;}
                  case 'Y':{ somma += 24; break;}
                  case 'Z':{ somma += 23; break;}
                 }
          }
        else //caratteri pari
            {
              switch (strCodFis.charAt(i))
                 {
                  case '0':
                  case 'A':{ somma += 0; break;}
                  case '1':
                  case 'B':{ somma += 1; break;}
                  case '2':
                  case 'C':{ somma += 2; break;}
                  case '3':
                  case 'D':{ somma += 3; break;}
                  case '4':
                  case 'E':{ somma += 4; break;}
                  case '5':
                  case 'F':{ somma += 5; break;}
                  case '6':
                  case 'G':{ somma += 6; break;}
                  case '7':
                  case 'H':{ somma += 7; break;}
                  case '8':
                  case 'I':{ somma += 8; break;}
                  case '9':
                  case 'J':{ somma += 9; break;}
                  case 'K':{ somma += 10; break;}
                  case 'L':{ somma += 11; break;}
                  case 'M':{ somma += 12; break;}
                  case 'N':{ somma += 13; break;}
                  case 'O':{ somma += 14; break;}
                  case 'P':{ somma += 15; break;}
                  case 'Q':{ somma += 16; break;}
                  case 'R':{ somma += 17; break;}
                  case 'S':{ somma += 18; break;}
                  case 'T':{ somma += 19; break;}
                  case 'U':{ somma += 20; break;}
                  case 'V':{ somma += 21; break;}
                  case 'W':{ somma += 22; break;}
                  case 'X':{ somma += 23; break;}
                  case 'Y':{ somma += 24; break;}
                  case 'Z':{ somma += 25; break;}
                 }
            }
    }
   somma %= 26;
   switch (somma)
         {
          case 0: {chrcontrollo='A'; break;}
          case 1: {chrcontrollo='B'; break;}
          case 2: {chrcontrollo='C'; break;}
          case 3: {chrcontrollo='D'; break;}
          case 4: {chrcontrollo='E'; break;}
          case 5: {chrcontrollo='F'; break;}
          case 6: {chrcontrollo='G'; break;}
          case 7: {chrcontrollo='H'; break;}
          case 8: {chrcontrollo='I'; break;}
          case 9: {chrcontrollo='J'; break;}
          case 10: {chrcontrollo='K'; break;}
          case 11: {chrcontrollo='L'; break;}
          case 12: {chrcontrollo='M'; break;}
          case 13: {chrcontrollo='N'; break;}
          case 14: {chrcontrollo='O'; break;}
          case 15: {chrcontrollo='P'; break;}
          case 16: {chrcontrollo='Q'; break;}
          case 17: {chrcontrollo='R'; break;}
          case 18: {chrcontrollo='S'; break;}
          case 19: {chrcontrollo='T'; break;}
          case 20: {chrcontrollo='U'; break;}
          case 21: {chrcontrollo='V'; break;}
          case 22: {chrcontrollo='W'; break;}
          case 23: {chrcontrollo='X'; break;}
          case 24: {chrcontrollo='Y'; break;}
          case 25: {chrcontrollo='Z'; break;}
         }
 //--------------------------------------------
 return (strCodFis + chrcontrollo);
}


function controllaCF(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 è\n"
		+"corretta: 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 "";
}




