	// BASE 2.00.000
	function ValidateText( max, ctrl, label ){
		if ( ctrl.value.length > max ){
			if ( confirm("\'" + label + "\' Too long ( " + ctrl.value.length +">"+ max + " ) !\nAutomatic removal of excess letters ?") ){
				ctrl.value = ctrl.value.substr(0,max)
			} else {
				ctrl.focus()
				return false
			}
		}
		return true
	}
	function ValidateIntP( ctrl, label ){
		if ( ctrl.value.length == 0 ) return true
		var vNumber = UnformatCurrency(ctrl.value)
		if ( isNaN(vNumber) | ctrl.value.indexOf(',')>-1 | vNumber<0 ){
			alert("\'" + label + "\' it doesn't contains a positive entire number !")
			ctrl.focus()
			return false
		}
		return true
	}
	function ValidateInt( ctrl, label ){
		if ( ctrl.value.length == 0 ) return true
		var vNumber = UnformatCurrency(ctrl.value)
		if ( isNaN(vNumber) | ctrl.value.indexOf(',')>-1 ){
			alert("\'" + label + "\' it doesn't contains an entire number !")
			ctrl.focus()
			return false
		}
		return true
	}
	function ValidateFloatP( ctrl, label ){
		if ( ctrl.value.length == 0 ) return true
		var vNumber = UnformatCurrency(ctrl.value)
		if ( isNaN(vNumber) | vNumber<0 ){
			alert("\'" + label + "\' it doesn't contains a positive number- quantity !")
			ctrl.focus()
			return false
		}
		return true
	}
	function ValidateFloat( ctrl, label ){
		if ( ctrl.value.length == 0 ) return true
		var vNumber = UnformatCurrency(ctrl.value)
		if ( isNaN(vNumber) ){
			alert("\'" + label + "\' it doesn\'t contain a number- quantity !")
			ctrl.focus()
			return false
		}
		return true
	}
	function ValidateCurrencyP( ctrl, label ){
		if ( ctrl.value.length == 0 ) return true
		var vNumber = UnformatCurrency(ctrl.value)
		if ( isNaN(vNumber) | vNumber<0 ){
			alert("\'" + label + "\' it doesn\'t contain a positive worth !")
			ctrl.focus()
			return false
		}
		return true
	}
	function ValidateCurrency( ctrl, label ){
		if ( ctrl.value.length == 0 ) return true
		var vNumber = UnformatCurrency(ctrl.value)
		if ( isNaN(vNumber) ){
			alert("\'" + label + "\' Doesn't contain a value")
			ctrl.focus()
			return false
		}
		return true
	}
	function ValidateDate( ctrl, label ){
		if ( ctrl.value.length == 0 ) return true
		var v = UnformatJDate( ctrl.value )
		if ( isNaN(v) ){
			alert("\'" + label + "\' introduce a date in the form d/m/y")
			ctrl.focus()
			return false
		}			
		return true
	}
	function FormatJDate( Jdate ){
		return Jdate.getDate() + "/" + ( Jdate.getMonth()+1 ) + "/" + Jdate.getFullYear()
	}
	function UnformatJDate( value ){
		var p = new Array("","","")
		var index = 0
		while (index< value.length){
			if (  value.charAt(index)=='/' ) break
			p[0] += value.charAt(index)
			index++
		}
		index++
		while (index< value.length){
			if (  value.charAt(index)=='/' ) break
			p[1] += value.charAt(index)
			index++
		}
		index++
		while (index< value.length){
			p[2] += value.charAt(index)
			index++
		}
		var g, m, a
		if ( p[2].length ){
			g = p[0]
			m = p[1]
			a = p[2]
		} else if ( p[1].length ){
			g = '1'
			m = p[0]
			a = p[1]
		} else {
			g = '1'
			m = '1'
			a = p[0]
		}
		if ( a.length==2 )
			a = '20' + a
		g = UnformatCurrency(g)
		m = UnformatCurrency(m)
		a = UnformatCurrency(a)
		if ( isNaN(g) | g!=Math.round(g) | g<0 ) return NaN
		if ( isNaN(m) | m!=Math.round(m) | m<0 ) return NaN
		if ( isNaN(a) | a!=Math.round(a) | a<0 | a>9999 ) return NaN
		m--
		var d = new Date( a, m, g )
		if ( d.getDate()!=g | d.getMonth()!=m | d.getFullYear()!=a ) return NaN
		return d
	}
	function FormatJTime( Jtime ){
		var m = Jtime.getMinutes()
		return Jtime.getHours() + (( m < 10) ? ":0" : ":") + m
	}
	function UnformatJTime( value ){
		var p = new Array("","","")
		var index = 0
		while (index< value.length){
			if (  value.charAt(index)==':' ) break
			p[0] += value.charAt(index)
			index++
		}
		index++
		while (index< value.length){
			if (  value.charAt(index)==':' ) break
			p[1] += value.charAt(index)
			index++
		}
		index++
		while (index< value.length){
			p[2] += value.charAt(index)
			index++
		}
		var h, m, s
		if ( p[2].length ){
			h = p[0]
			m = p[1]
			s = p[2]
		} else if ( p[1].length ){
			h = p[0]
			m = p[1]
			s = '00'
		} else {
			h = p[0]
			m = '00'
			s = '00'
		}
		h = parseInt(h)
		m = parseInt(m)
		s = parseInt(s)
		if ( isNaN(h) | h<0 | h>23 ) return NaN
		if ( isNaN(m) | m<0 | m>59 ) return NaN
		if ( isNaN(s) | s<0 | s>59 ) return NaN
		var d = new Date().setHours( h, m, s )
		return d
	}
	function ValidateTime( ctrl, label ){
		if ( ctrl.value.length == 0 ) return true
		var v = UnformatJTime( ctrl.value )
		if ( isNaN(v) ){
			alert("\'" + label + "\' Insert an hour in format hh(:mm(:ss)) !")
			ctrl.focus()
			return false
		}
		return true
	}
	function UnformatCurrency( value ){
		var vg = 0, v=''
		for ( var index = 0; index<value.length; index++ ){
			switch ( value.charAt( index ) ){
			case '.':
				break
			case ',':
				v = v + "."
				if ( vg++ ) return NaN
				break
			case '+':
			case '-':
				if ( v.length ) return NaN
			case '0':
			case '1':
			case '2':
			case '3':
			case '4':
			case '5':
			case '6':
			case '7':
			case '8':
			case '9':
				v = v + value.charAt( index )
				break
			default:
				return NaN
			}
		}
		return parseFloat(v)
	}
	function FormatCurrency( value ){
		var s = String(parseInt(value))
		var v = '', p = 0
		for ( var index = s.length-1; index>=0; index-- ){
			if ( ++p == 4 ){
				p = 1
				v = '.' + v
			}
			v =  s.charAt( index ) + v
		}
		s = String(value)
		index = s.indexOf('.')
		if ( index>-1 ){
			v = v + "," + s.substr( index+1, s.length )
		}
		return v
	}
