Function ChangeDate(strData)
	'Stampa la data in formato GG/MM/AAAA anche se è inserita in formato Passepartout GGMM
	If len(strData) > 10 then
		strData = ""
	Elseif len(strData) >= 4 AND len(strData)<>6 AND len(strData)<>10 AND (instr(1,strData,"/")>0 OR instr(1,strData,"-")>0 OR instr(1,strData,"\")>0 OR instr(1,strData,"_")>0 OR instr(1,strData,".")>0) then
		If isdate(strData) then
			strData = year(strData) & right("00" & month(strData),2) & right("00" & day(strData),2)
			strData = mid(strData,7,2) & "/" &  mid(strData,5,2) & "/" &  left(strdata,4)
			if strData = "//" then
				strData = ""
			end if
		else
			strData = ""
		end if
	Elseif len(strData) = 4 AND (instr(1,strData,"/")=0 OR instr(1,strData,"-")=0 OR instr(1,strData,"\")=0 OR instr(1,strData,"_")=0 OR instr(1,strData,".")=0) then
		strData = year(Date()) & right(strData,2) & left(strData,2)
		strData = mid(strData,7,2) & "/" &  mid(strData,5,2) & "/" &  left(strdata,4)
	Elseif len(strData) = 10 AND (instr(1,strData,"/")=0 OR instr(1,strData,"-")=0 OR instr(1,strData,"\")=0 OR instr(1,strData,"_")=0 OR instr(1,strData,".")=0) then	
		strData = right(strData,4) & mid(strData,4,2) & left(strData,2)
		strData = mid(strData,7,2) & "/" &  mid(strData,5,2) & "/" &  left(strdata,4)
	Elseif len(strData) = 6 AND (instr(1,strData,"/")=0 OR instr(1,strData,"-")=0 OR instr(1,strData,"\")=0 OR instr(1,strData,"_")=0 OR instr(1,strData,".")=0) then
		strData = "20" & right(strData,2) & mid(strData,3,2) & left(strData,2)
		strData = mid(strData,7,2) & "/" &  mid(strData,5,2) & "/" &  left(strdata,4)
	Elseif len(strData) = 8 AND (instr(1,strData,"/")=0 OR instr(1,strData,"-")=0 OR instr(1,strData,"\")=0 OR instr(1,strData,"_")=0 OR instr(1,strData,".")=0) then
		strData = right(strData,4) & mid(strData,3,2) & left(strData,2)
		strData = mid(strData,7,2) & "/" &  mid(strData,5,2) & "/" &  left(strdata,4)
	else
		strData = ""
	end if
	If isdate(strData) then
		ChangeDate = strData
	Else
		ChangeDate = ""
	End if
End Function

Function ChangeDate2(strData)
	ChangeDate2 = ChangeDate(strData)
	if ChangeDate2 <> "" then
		ChangeDate2 = left(ChangeDate2,6) + right(ChangeDate2,2)
	end if
End Function
		
Function FormatoOra(intNum)
	Test = FormatNumber(1,2)
	If Instr(Test,".") > 0 Then
		SepDec = "."
		SepDecX = ","
	Else
		SepDec = ","
		SepDecX = "."
	End If
	If Instr(intNum,SepDecX) > 0 Then intNum = Replace(intNum,SepDecX,SepDec)
	ParteInt = int(cdbl(intNum))
	Resto = cdbl(intNum) - ParteInt
	Resto = round(cdbl(resto) * 60 / 100,2)
	if Resto = 0.6 then
		Resto = 0
		ParteInt = ParteInt + 1
	end if
	FormatoOra = replace(cstr(ParteInt+Resto),SepDec,":")
	if instr(FormatoOra,":") = 0 then FormatoOra = FormatoOra & ":00"
	if instr(FormatoOra,":") = len(FormatoOra) - 1 then FormatoOra = FormatoOra & "0"
	if instr(FormatoOra,":") = 2 then FormatoOra = "0" & FormatoOra
End Function

Function FormatoDecimale(strOra)
	strOra = replace(strOra,",",".")
	strOra = replace(strOra,":",".")
	if isnull(strOra) then
		FormatoDecimale = 0
	else
		if instr(strOra,".") then
			if isnumeric(left(strOra,instr(strOra,".")-1)) and isnumeric(right(strOra,len(strOra)-instr(strOra,"."))) then
				ParteInt = cint(left(strOra,instr(strOra,".")-1))
				Resto = left(right(strOra,len(strOra)-instr(strOra,".")) & "00",2)
				Resto = cdbl(Resto)
				if resto >= 60 then
					FormatoDecimale = 0
				else
					Resto = resto / 60
					FormatoDecimale = ParteInt+Resto
				end if
			else
				FormatoDecimale = 0
			end if
		else
			if isnumeric(strOra) then
				FormatoDecimale = cint(strOra)
			else
				FormatoDecimale = 0
			end if
		end if
	end if
	FormatoDecimale = FormatNumber(FormatoDecimale,2,,,0)
	FormatoDecimale = Replace(FormatoDecimale,".",",")
End Function
	
Function EuroPar(strInput,intE,intDec)
	if isnumeric(strInput) then
		strNumStringa = cstr(cdbl(strInput))
		if instr(1,strNumStringa,",") then
			intNumDecimali = len(strNumStringa) - instr(1,strNumStringa,",")
		else
			intNumDecimali = 0
		end if
		if intNumDecimali < 2 then intNumDecimali = 2
		if intNumDecimali > IntDec then intNumDecimali = IntDec
		EuroPar = FormatNumber(strInput,intNumDecimali,,,-1)
		if intE = 1 then
			EuroPar = "€ " & EuroPar
		elseif intE = 2 then
			EuroPar = EuroPar & " €"
		end if
	else
		EuroPar = ""
	end if
End Function

Function PassData(strData)
	if len(strData) > 0 then
		PassData  = year(strData) & right("00" & month(strData),2) & right("00" & day(strData),2)
	else
		PassData = ""
	end if
End Function

Function ItaData(strData)
	ItaData  = mid(strData,7,2) & "/" &  mid(strData,5,2) & "/" &  left(strdata,4)
	if ItaData = "//" then
		ItaData = ""
	end if
End Function

Function ItaData2(strData)
	ItaData2  = mid(strData,7,2) & "/" &  mid(strData,5,2) & "/" &  mid(strdata,3,2)
	if ItaData2 = "//" then
		ItaData2 = ""
	end if
End Function

Function DataParam(strParam)
	dim VetPar
	if isdate(strParam) then
		DataParam = itadata(passdata(strParam))
	else
		flagOk = 1
		if left(strParam,6) = "[DATA:" and right(strParam,1) = "]" then
			strStringaP = right(strParam,len(strParam)-instr(1,strParam,":"))
			strStringaP = left(strStringaP,len(strStringaP)-1)
			VetPar = split(strStringaP,";",-1)
			if ubound(VetPar) >= 2 then
				select case trim(VetPar(0))
				case "A"
					strTipoPer = "yyyy"
				case "M"
					strTipoPer = "m"
				case "S"
					strTipoPer = "ww"
				case "G"
					strTipoPer = "d"
				case else
					flagOk = 0
				end select
				
				strQta = trim(VetPar(1))
				if not isnumeric(strQta) then
					flagOk = 0
				end if
				
				if flagOk = 1 then
				
					DataRisult = dateadd(strTipoPer,strQta,date())
		
					select case trim(VetPar(2))
					case ""
					case "FM"
						'fine mese: aggiungo un mese, prendo il primo di quel mese e tolgo un giorno
						DataRisult = DateAdd("d",-1,ItaData(left(PassData(dateadd("m",1,DataRisult)),6) & "01"))
					case "IM"
						'inizio mese: prendo il primo del mese
						DataRisult = ItaData(left(PassData(DataRisult),6) & "01")
					case "FA"
						'fine anno: prendo il 31/12 dell'anno corrente
						DataRisult = ItaData(left(PassData(DataRisult),4) & "1231")
					case "IA"
						'inizio anno: prendo il 01/01 dell'anno corrente
						DataRisult = ItaData(left(PassData(DataRisult),4) & "0101")
					case "GP"
						'giorno prima
						DataRisult = DateAdd("d",-1,DataRisult)
					case "GD"	
						'giorno dopo
						DataRisult = DateAdd("d",1,DataRisult)
					case else
						flagOk = 0
					end select
					DataParam = DataRisult
				end if
			else
				flagOk = 0
			end if
		else
			flagOk = 0
		end if
		if flagOk = 0 then
			DataParam = ""
		end if
	end if
End Function

Function FunColore(strColor)
	errCol = 0
	funColore = UCASE(replace(strColor,"#",""))
	if len(funColore) <> 6 then
		errCol = 1
	else
		for intCarCol = 1 to 6
			intAsc = ASC(mid(funColore,intCarCol,1))
			if (intAsc < 48) OR (intAsc > 57 AND intAsc < 65) OR (intAsc >70) then 
				errCol = 1
			end if
		next
	end if
	if errCol = 1 then
		funColore = "#FFFFFF"
	else
		funColore = "#" & funColore
	end if		
End Function

Function VBUrlEncode(strString)
	VBUrlEncode = strString
	VBUrlEncode = replace(VBUrlEncode,"%","%25")
	VBUrlEncode = replace(VBUrlEncode,"+","%2B")
	VBUrlEncode = replace(VBUrlEncode,"&","%26")
	VBUrlEncode = replace(VBUrlEncode," ","+")
End Function