/**
   function roundCorners: arrotonda gli angoli dei div il cui nome viene specificato in className 
   className -> nome della classe css a cui applicare i round corners
   radiusVal -> gradi dei round corners
*/
function roundCorners(className, radiusVal) {
    settings = {
      tl: { radius: radiusVal },
      tr: { radius: radiusVal },
      bl: { radius: radiusVal },
      br: { radius: radiusVal },
      antiAlias: true,
      autoPad: false,
      validTags: ["div"]
    }

    var cornersClass = new curvyCorners(settings, className);
    cornersClass.applyCornersToAll();

}


// id ultima voce di menu (pagina) visitata serve per settare lo sfondo al colore originale dopo il cambio pagina
// @global
var lastid="";

/**
   setta il colore di background della voce di menu' attiva
   @parametri: id = id voce di menu selezionata
*/
function setMenuBackground(id) {
   // riporta lo sfondo della voce di menu precedente al colore di default
   if (lastid!="") {
      menuObj = document.getElementById(lastid);
      menuObj.style.background="#f49c76";
   }
   // se non e' richiamata la pagina di descrizione del progetto (link a sx non nel menu')
   // cambia il colore di sfondo della voce di menu attiva
   if (id!='P') {
      menuObj = document.getElementById(id);
      menuObj.style.background="#fb7e2a";
      lastid=id;
   }
}


/**
   valida il form passato come parametro
   usando tutti i campi del form specificato escluso 'note'
   @parametri: formId = form da cui prendere i dati
*/
function validateForm(formId) {

   formObj = document.getElementById(formId);

   var valid=true;
   var mailAddress="";
   var msg="campi obbligatori non specificati:\n";
   for (var h = 0; h < formObj.length-1; h++) {
      // setta la mail specificata per effettuare il controllo sulla validita
      if (formObj[h].name=="mail")
         mailAddress=formObj[h].value;
      if (formObj[h].value=="" && formObj[h].name!="note") {
         msg += formObj[h].name+"\n";
	 valid=false;
      }
   }
 
   if (valid==true) {
      if (emailCheck(mailAddress,'')==false) {
         var msg="Formato email non valido\n";
         valid=false;
      }
   }

   if (valid==true)   return true;
   else { alert(msg); return false; }
}


/***************************************************************************
Valida l'indirizzo email inserito per l'iscrizione alla newsletter

parametri:
emailStr - indirizzo email da validare
msg - messaggio d'errore visualizzato (non usato per il momento)
****************************************************************************/
function emailCheck (emailStr,msg) {

var emailPat=/^(.+)@(.+)$/
var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]"
var validChars="\[^\\s" + specialChars + "\]"
var quotedUser="(\"[^\"]*\")"
var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/
var atom=validChars + '+'
var word="(" + atom + "|" + quotedUser + ")"
var userPat=new RegExp("^" + word + "(\\." + word + ")*$")
var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$")

var matchArray=emailStr.match(emailPat)
if (matchArray==null) {
        // alert(msg)
        return false
}
var user=matchArray[1]
var domain=matchArray[2]

if (user.match(userPat)==null) {
    // alert(msg)
    return false
}

var IPArray=domain.match(ipDomainPat)
if (IPArray!=null) {
    // this is an IP address
          for (var i=1;i<=4;i++) {
            if (IPArray[i]>255) {
                // alert(msg)
                return false
            }
    }
    return true
}

// Domain is symbolic name
var domainArray=domain.match(domainPat)
if (domainArray==null) {
    // alert(msg)
    return false
}

var atomPat=new RegExp(atom,"g")
var domArr=domain.match(atomPat)
var len=domArr.length
if (domArr[domArr.length-1].length<2 ||
    domArr[domArr.length-1].length>4) {
   // alert(msg)
   return false
}

if (len<2) {
   var errStr="This address is missing a hostname!"
   // alert(msg)
   return false
}

return true;
}

