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_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_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_openBrWindow(theURL,winName,features) { //v2.0
  window.open(theURL,winName,features);
}

function page_Over(idImage,message) {
	if (document.getElementById(idImage)) {
		myImage = document.getElementById(idImage).src;
		document.getElementById(idImage).src = myImage.replace('.gif','Over.gif');
		document.getElementById('pageMessage').innerHTML = message;
	}
}

function page_Out(idImage,message) {
	if (document.getElementById(idImage)) {
		myImage = document.getElementById(idImage).src;
		document.getElementById(idImage).src = myImage.replace('Over.gif','.gif');
		document.getElementById('pageMessage').innerHTML = message;
	}
}

function OpenCloseDiv(me){
		if (document.getElementById('Group' + me).style.visibility=="hidden") {
			//Activation
			//Div Menu
			document.getElementById('Group' + me).style.visibility="visible";
			document.getElementById('Group' + me).style.display="";
			document.getElementById('Group' + me).style.height="auto";
			//document.getElementById('Menu02Icon' + me).src = "img_struct/arrow.Menu02.Selected.gif";

			//Icon Image Menu
			//document.getElementById('IconMenu' + me).src="img_struct/icoButton01Over.gif";

			//Background color
			//document.getElementById('BgMenu' + me).style.color='#AA7832';

		} else {
			//DeActivation
			//Div Menu
			document.getElementById('Group' + me).style.visibility="hidden";
			document.getElementById('Group' + me).style.display="none";
			document.getElementById('Group' + me).style.height="0px";
			//document.getElementById('Menu02Icon' + me).src = "img_struct/arrow.Menu02.gif";

			//Icon Image Menu
			//document.getElementById('IconMenu' + me).src="img_struct/icoButton01.gif";

			//Background color
			//document.getElementById('BgMenu' + me).style.color='#EE7832';

		}

		for (i=0;i<=50;i++) {

			if (i!=me) {
				if (document.getElementById('Group' + i)) {
				document.getElementById('Group' + i).style.visibility="hidden";
				document.getElementById('Group' + i).style.display="none";
				document.getElementById('Group' + i).style.height="0px";
			    //document.getElementById('Menu02Icon' + i).src = "img_struct/arrow.Menu02.gif";
				}
			}

		}

}

function MM_validateForm() { //v4.0
  var i,p,q,nm,test,num,min,max,errors='',args=MM_validateForm.arguments;
  for (i=0; i<(args.length-2); i+=3) {
   test=args[i+2]; val=MM_findObj(args[i]);
    if (val) {
    nm=val.name; if ((val=val.value)!="") {
      if (test.indexOf('isEmail')!=-1) {
       /*p=val.indexOf('@');
        if (p<1 || p==(val.length-1)) {
        errors+='- Il campo '+nm+' deve contenere un indirizzo e-mail.\n';
        }*/
      var pattern=/^([a-zA-Z0-9_.-])+@([a-zA-Z0-9_.-])+\.([a-zA-Z])+([a-zA-Z])+/;
      if (!pattern.test(val) || (val.split("@").length-1 > 1)) {
        errors+='- Il campo '+nm+' deve contenere un indirizzo e-mail.\n';
      }		  
      } else if ((test!='R') & (test!='Req')){
      num = parseFloat(val);
        if (isNaN(val)) {
        errors+='- Il campo '+nm+' deve contenere un numero.\n';
        }
        if (test.indexOf('inRange') != -1) {
        p=test.indexOf(':');
          min=test.substring(8,p); max=test.substring(p+1);
          if (num<min || max<num) {
          errors+='- Il campo '+nm+' deve contenere un numero compreso tra '+min+' e '+max+'.\n';
          }
        }
    }
    } else if (test.charAt(0) == 'R') {
      errors += '- Il campo '+nm+' è obbligatorio.\n';
    } 
    if (test.indexOf('Req') != -1) {
      if (val==0) {
        errors += '- Il campo '+nm+' è obbligatorio.\n';
      }
    }
    }
    } 
 if (errors) alert('ATTENZIONE:\n'+errors.replace(/_/g," "));
  document.MM_returnValue = (errors == '');
}

//controllo data
function controllo_data(stringa){
	var espressione = /^[0-9]{2}\/[0-9]{2}\/[0-9]{4}$/;
	if (!espressione.test(stringa))
	{
	    return false;
	}else{
		anno = parseInt(stringa.substr(6),10);
		mese = parseInt(stringa.substr(3, 2),10);
		giorno = parseInt(stringa.substr(0, 2),10);

		var data=new Date(anno, mese-1, giorno);
		if(data.getFullYear()==anno && data.getMonth()+1==mese && data.getDate()==giorno){
			return true;
		}else{
			return false;
		}
	}
}
/*
valida form
se si vuole riutilizzarla bisogna portarsi dietro anche la funzione function controllo_data(stringa)

la funzione deve essere chiamata passando due parametri valida_form(nome_form,campi):
	nome_form	->	nome del modulo
	campi		->	stringa contenente i 'campi' da controllare

il parametro 'campi' deve contenere tre valori separati da virgola:

	il primo valore è il nome del campo
		il nome del campo non deve contenere spazi -> usare _ come separatore, viene rimpiazzato con spazi nell'alert
		non ho capito come mai ma il nome del campo non deve iniziare con un numero

	il secondo valore è il tipo di campo
		spunta		->	checkbox
		testo		->	text		->	libero
		numero		->	text		->	solo numeri
		data		->	text		->	solo date GG/MM/AAAA
		email		->	text 		->	solo email
		selettore	->	select		->	prima <option> selezionata = blocco form

	il terzo valore se uguale a R indica che il campo è obbligatorio
		da usare per i campi tipo text, per gli altri tipi l'obbligatorietà è implicita se contenuti nel parametro 'campi'
		se lasciato vuoto il campo non è obbligatorio ma viene effettuato il controllo del contenuto

esempio:
valida_form('modulo','blocco_check_1,spunta,,blocco_check_2,spunta,,testo_libero,testo,,testo_numero,numero,R,e_mail,email,,sel_etta,selettore,');return false;

nome del modulo da validare 'modulo'

blocco_check_1,spunta,,
	controlla che ci sia almeno un checkbox name='blocco_check_1' ceccato

blocco_check_2,spunta,,
	controlla che ci sia almeno un checkbox name='blocco_check_2' ceccato

testo_libero,testo,,
	controlla che il campo text name='testo_libero', se compilato, contenga almeno un carattere di qualsiasi tipo

testo_numero,numero,R,
	controlla che il campo text name='testo_numero' sia compilato (,R) e che contenga solo numeri

e_mail,email,,
	controlla che il campo text name='e_mail', se compilato, contenga un indirizzo mail (qualcosa@qualcosa.2 o 4 caratteri)

sel_etta,selettore,,
	controlla che nel select name='sel_etta' sia stata selezionata una <option> diversa dalla prima in elenco indipendentemente dal suo valore

*/
function valida_form(nome_form,campi) {
	var controllo = campi.split(',');
	var msg = '';
	var nome_campo = '';
	var campo = '';

	for (i=0; i<(controllo.length); i+=3) {
		eval('campo = document.' + nome_form + '.' + controllo[i] + ';');
		nome_campo = controllo[i].replace(/_/g,' ');
		if (((controllo[i+1]=='testo') || (controllo[i+1]=='numero') || (controllo[i+1]=='data')) && (controllo[i+2]=='R') && (campo.value.length==0)) {
			msg += '- Il campo ' + nome_campo + ' è obbligatorio;\n';
		}
		if ((controllo[i+1]=='numero') && (campo.value.length!=0) && (isNaN(campo.value))) {
			msg += '- Il campo ' + nome_campo + ' deve contenere un numero;\n';
		}

		//controllo campo mail
		if ((controllo[i+1]=='email') && (campo.value.length!=0) && (!campo.value.match(/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z]{2,4})$/))) {
			msg += '- il campo ' + nome_campo + ' deve contenere un indirizzo email valido;\n';
		}

		//controllo campo data
		if ((controllo[i+1]=='data') && (campo.value.length!=0) && (!controllo_data(campo.value))) {
			msg += '- il campo ' + nome_campo + ' deve contenere una data valida (GG/MM/AAAA);\n';
		}

		if (controllo[i+1]=='spunta') {
			var check = 0;
			if (campo.length>0) {//ho più di un checkbox
				for (e=0; e<campo.length; e+=1) {
					if (campo[e].checked) {
						check+=1;
					}
				}
			}
			else {
				if (campo.checked) {//ho solo un checkbox
					check+=1;
				}
			}
			if (check==0) {
				msg += '- spuntare almeno una casella di ' + nome_campo + ';\n';
			}
		}
		//controllo select -> la prima option non viene considerata valida
		if (controllo[i+1]=='selettore') {
			if (campo.options.selectedIndex==0) {
				msg += '- selezionare un\'opzione di ' + nome_campo + ';\n';
			}
		}

	}
	if (msg!='') {
		alert(msg);
	} else {
		document.forms[nome_form].submit();
	}
}

