
Cespa.Validate = {
	
	/**
	 * Verifies if it applies to the RegExp
	 *
	 * @param string Value
	 * @param string Regular Expression
	 */
	isRegExp: function(value, re) {
		var reg = new RegExp(re);
		if(value.match(reg)) {
			return true;
		}
		return false;
	},
	
	/**
	  * Verifies if it's empty
	  *
	  * @param strin Value to be tested
	  * @return boolean
	  */
	isEmpty: function(value) {
		return ((value == null) || (value.length == 0));
	},

	/**
	  * Verifies if it's whitespaces only
	  *
	  * @param strin Value to be tested
	  * @return boolean
	  */
	isWhitespace: function(value) {
		if(this.isEmpty(value)) return true;
		
		for(i=0; i<value.length; i++) {
			if(value.charAt(i) != ' ') {
				return false;
			}
		}
		return true;
	},
	
	/**
	  * Verifies if it's a number
	  *
	  * @param strin Value to be tested
	  * @return boolean
	  */
	isNumber: function(value) {
		if(this.isEmpty(value)) return false;
	
		var reg = new RegExp('^[0-9]{1,15}(\,[0-9]{1,2}){0,1}$');
		if(value.match(reg))
			return true;
		return false;
	},
	
	/**
	  * Verifies if it's digits only
	  *
	  * @param strin Value to be tested
	  * @return boolean
	  */
	isDigits: function(value) {
		if(this.isEmpty(value)) return false;
	
		var reg = new RegExp('^[0-9]+$');
		if(value.match(reg))
			return true;
		return false;
	},
	
	/**
	  * Verifies if it's a CEP
	  *
	  * @param strin Value to be tested
	  * @return boolean
	  */
	isCep: function(value) {
		if(this.isEmpty(value)) return false;
		
		var reg = new RegExp('^[0-9]{2}[\.]?[0-9]{3}[\-]?[0-9]{3}$');
		if(value.match(reg))
			return true;
		if(isDigits(value) && value.length == 8)
			return true;
		return false;
	},
	
	/**
	  * Verifies if it's a email
	  *
	  * @param strin Value to be tested
	  * @return boolean
	  */
	isEmail: function(value) {
		if(this.isEmpty(value)) return false;
		var reg = new RegExp('^([0-9,a-z,A-Z]+)([.,_,-]([0-9,a-z,A-Z]+))*[@]([0-9,a-z,A-Z]+)([.,_,-]([0-9,a-z,A-Z]+))*[.]([0-9,a-z,A-Z]){2}([0-9,a-z,A-Z])?$');
		if(value.match(reg))
			return true;
		return false;
	},
	
	/**
	  * Verifies if it's a URL
	  *
	  * @param strin Value to be tested
	  * @return boolean
	  */
	isUrl: function(value) {
		if(this.isEmpty(value)) return false;
	
		var reg = new RegExp('^(http|https|ftp)\://[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(:[a-zA-Z0-9]*)?/?([a-zA-Z0-9\-\._\?\,\'/\\\+&%\$#\=~])*[^\.\,\)\(\s]$');
		if(value.match(reg))
			return true;
		return false;
	},
	
	/**
	  * Verifies if it's a date
	  *
	  * @param strin Value to be tested
	  * @return boolean
	  */
	isDate: function(value) {
		if(this.isEmpty(value)) return false;
		var reg = new RegExp('^[0-9]{1,2}\/[0-9]{1,2}\/[0-9]{4}$');
		var data;
		var a_data;
		if(value.match(reg)) {
			a_data = value.split('/');
		} else {
			reg = new RegExp('^[0-9]{1,2}\-[0-9]{1,2}\-[0-9]{4}$');
			if(value.match(reg)) {
				a_data = value.split('-');
			} else {
				return false;
			}
		}
		a_data[0] = parseInt(a_data[0]);
		a_data[1] = parseInt(a_data[1]) - 1;
		a_data[2] = parseInt(a_data[2]);
		data = new Date(a_data[2],a_data[1],a_data[0]);
		if(data.getMonth() == a_data[1])
			return true;
		return false;
	}	
};
