if(typeof(msgCompleta)== "undefined")
	var msgCompleta = 'Compilare correttamente il campo ';


		function messageConvHtml(s){
		  var el = document.createElement("div");
		  el.innerHTML = s;
		  s = el.innerHTML;
		  delete el;
		  return s;
		}


		function myTrim(strToTrim){
			return strToTrim.replace(/^\s*/, "").replace(/\s*$/, "");
		}

		function checkNotEmpty(nameField){
			return (myTrim(nameField).length > 0);
    }
    
    function checkValidChar(nameField){
				var filter  = /^([a-zA-Z0-9_\-\.\@])*$/;
				return (filter.test(nameField));
				
    }
    
    function checkName(nameField){
				var filter  = /^([a-zA-Z\'\s])*$/;
				return (filter.test(nameField));
				
    }
		
		function checkValidCharAndSpace(nameField){
				var filter  = /^([a-zA-Z0-9_\-\.\@\s\+\#\/\(\)])*$/;
				return (filter.test(nameField));
				
    }
		
		function checkLitteral(nameField){
				var filter  = /^([a-zA-Z])*$/;
				return (filter.test(nameField));
				
    }
		
		//da ok se il campo contiene: caratteri, lettere accentate, apostrofo e un solo spazio fra le parole
		function checkNameQuote(nameField){
				var filter  = /^([a-zA-Z\xE0\xE8\xE9\xF9\xF2\xEC\x27]\s?)+$/;
				//var filter  = /^([a-zA-Z])*$/;
				return (filter.test(nameField));
				
    }
		
		function checkNumber(numberField){
				var anum=/^[0-9]*$/;
				return (anum.test(numberField));
    }
    
    function checkTelNumber(numberField){
				var anum=/^(([\+]{0,1})([0-9]{2,6})([\-\/\\]{0,1})([0-9]{5,10})){0,1}$/;
				return (anum.test(numberField));
    }
    
    function checkCurrency(numberField,lang){
    	
    		if (lang== null || lang=='it')
					var anum=/^([0-9]{1,8})(\,([0-9]{1,2})){0,1}$/;
				else
					var anum=/^([0-9]{1,8})(\.([0-9]{1,2})){0,1}$/;
				return (anum.test(numberField));
    }
    
    function addCents(nameField,lang){
    		var fieldValue = document.getElementById(nameField).value;
    		var charSep = ',';
    		if (lang != null && lang!='it')
    			charSep = '.';
    		if (fieldValue.indexOf(charSep) < 0)
    			fieldValue = fieldValue + charSep + '00';
	    
	    	document.getElementById(nameField).value = fieldValue;
    }
    
    
    
    function checkMail(mailAddress){
    	//var filter  = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
    	var filter  = /^(([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+)*$/;
			return (filter.test(mailAddress));
		}



		function checkDate(bornDate){
		   // Regular expression used to check if date is in correct format
		   if (bornDate.indexOf('\/') != -1){
		   	var filter  = /^[0-3][0-9]\/0|1[0-9]\/19|20([0-9]{2})$/;
		   	var  charSep = '\/';
		   }else{
		   	var filter  = /^[0-3][0-9]\-0|1[0-9]\-19|20([0-9]{2})$/;
		   	var charSep  = '\-';
		   }
		   //if (!filter.test(bornDate)) alert(bornDate);
		   if(filter.test(bornDate)){
		      var date_array = bornDate.split(charSep);
		      var day = date_array[0];
		
		      // Attention! Javascript consider months in the range 0 - 11
		      var month = date_array[1] - 1;
		      var year = date_array[2];
		
		      // This instruction will create a date object
		      source_date = new Date(year,month,day);
		      
		      return !(year != source_date.getFullYear() || month != source_date.getMonth() || day != source_date.getDate());
			}else
				return false;
		      
		}

    
  	function alertWrong(fieldText, funName, nameField, allowEmpty){
  		if (!functionCheckEmptyN(funName, nameField, allowEmpty)){
  			if (msgCompleta == ''){
    			alert(messageConvHtml(fieldText));
    		}else{
    			alert(messageConvHtml(msgCompleta + "\"" + fieldText + "\""));
    		}
    		document.getElementById(nameField).focus();
    		return true;
    	}else{
    		return false;
    	}
  	}
  	
  	function alertWrongOnly(fieldText, isValidField){
  		if (isValidField){
    		if (msgCompleta == ''){
    			alert(messageConvHtml(fieldText));
    		}else{
    			alert(messageConvHtml(msgCompleta + "\"" + fieldText + "\""));
    		}

    		return true;
    	}else{
    		return false;
    	}
  	}
  	
  	function checkEAN13(nameField){
  		var numeroTessera = nameField;
			if (numeroTessera == null || numeroTessera.length!=13){
				return false;
			}else{
				var ean = numeroTessera.substr(0,12);
		    var value = new Array('0','1','2','3','4','5','6','7','8','9');
		    var chksum = 0;
		    var code = ean;
		    for (i = 0; i < ean.length; i++) {
		      v = -1;
		      for (j = 0; j < value.length; j++) {
		        if (value[j] == ean.charAt(i)) {
		          if (i % 2 == 0) {
		            v=j;
		          } else {
		            v=3*j;
		          }
		        }
		      }
		      chksum += v;
		    }
		    chksum = chksum % 10;
		    chksum = (10 - chksum) % 10;
		    ean = ean + value[chksum];
		    return(ean == numeroTessera);
			}
			
		}
	
  	
  	function checkNotEmptyN(nameField){
  		return checkNotEmpty(document.getElementById(nameField).value);
    }
		
  	
  	function functionCheckEmptyN(funName, nameField, allowEmpty){
  		if (allowEmpty == null || allowEmpty || checkNotEmptyN(nameField)){
  			return eval(funName + "(document.getElementById(nameField).value)");
  		}else
				return false;
		}
  	
  	function functionCheckEmpty(funName, nameField, allowEmpty){
  		if (allowEmpty == null || allowEmpty || checkNotEmpty(nameField))
  			return eval(funName + "(nameField)");
  		else
				return false;
		}
		
		
		//restituisce true se la data compresa di orario e maggiore o uguale della data 1
		function higherDate(bornDate,bornDate1,bornTime,bornTime1){
		   // Regular expression used to check if date is in correct format
		   if (bornDate.indexOf('\/') != -1){
		   	var filter  = /^[0-3][0-9]\/0|1[0-9]\/19|20([0-9]{2})$/;
		   	var  charSep = '\/';
		   }else{
		   	var filter  = /^[0-3][0-9]\-0|1[0-9]\-19|20([0-9]{2})$/;
		   	var charSep  = '\-';
		   }
		   //if (!filter.test(bornDate)) alert(bornDate);
		   if(filter.test(bornDate)){
		      var date_array = bornDate.split(charSep);
		      var day = date_array[0];
		
		      // Attention! Javascript consider months in the range 0 - 11
		      var month = date_array[1] - 1;
		      var year = date_array[2];
		
		      // This instruction will create a date object
		      source_date = new Date(year,month,day);
		      
		      var date_array1 = bornDate1.split(charSep);
		      var day1 = date_array1[0];
		
		      // Attention! Javascript consider months in the range 0 - 11
		      var month1 = date_array1[1] - 1;
		      var year1 = date_array1[2];
		
		      // This instruction will create a date object
		      source_date1 = new Date(year1,month1,day1);
		      
		      if (!(source_date > source_date1) && !(source_date < source_date1)){
		      	return (bornTime <= bornTime1); 
		      }else{
		      	return (source_date < source_date1); 
		      }
		      
		      
			}
			
		      
		}
		
		
		function getBornDateFromCF(codiceFiscale){
		
			 var tabellamesi = {
	        "A" : "01",
	        "B" : "02",
	        "C" : "03",
	        "D" : "04",
	        "E" : "05",
	        "H" : "06",
	        "L" : "07",
	        "M" : "08",
	        "P" : "09",
	        "R" : "10",
	        "S" : "11",
	        "T" : "12"
	    };
	
	    var datanascita = codiceFiscale.replace(/^(?:\w{6})(\d{2})(\w)(\d{2}).+$/, function(data, aa, mm, gg) {
	
	        var anno = parseInt(aa, 10);
	        var secolo = (anno < 9)? '20':'19';
	        anno = [secolo, aa].join('');
	
	        var giorno = parseInt(gg, 10);
	        if (giorno > 71 || ((31 < giorno) && (giorno < 41))) return 'giorno di nascita errato.';
	
	        var sesso = (giorno > 31)? 'F' : 'M';
	        if (sesso === 'F') giorno -= 40;
	        
	        var mese = mm.toUpperCase();
	        if (!tabellamesi[mese]) return 'mese di nascita errato';
	        mese = tabellamesi[mese]; 
	
	        //return [sesso, giorno, mese, anno];
	        return giorno+"/"+mese+"/"+anno;
	    });
			return datanascita;
	 


		}
		
		

		
		
		
