/* Licuit Interactive SL /
/ www.licuit.com /
/ validationTypes.js /
/ Created Sept, 2009
--------------------------------------- */

/* --- TIPOS ----
 * 
 * simpleText {obligatorio, minChars, maxChars}
 * midText {obligatorio, minChars, maxChars}
 * fullText {obligatorio, minChars, maxChars}
 * fecha_dia {obligatorio}
 * fecha_mes {obligatorio}
 * fecha_anio {obligatorio}
 * email {obligatorio}
 * cp {obligatorio,}
 * 
 * 
 */


bilboostCore.validationTypes = new Class({ 
	
	validate : function(field, params){
		var ok = false;
		
		switch(params.tipo){
			case "simpleText": ok = this.validate_simpleText(field.value, params); break;
			case "latinTextNumbers": ok = this.validate_latinTextNumbers(field.value, params); break;
			case "midText": ok = this.validate_simpleText(field.value, params); break;
			case "fullText": ok = this.validate_simpleText(field.value, params); break;
			case "fecha_dia": ok = this.validate_fecha_dia(field.value, params); break;
			case "fecha_mes": ok = this.validate_fecha_mes(field.value, params); break;
			case "fecha_anio": ok = this.validate_fecha_anio(field.value, params); break;
			case "email": ok = this.validate_email(field.value, params); break;
			case "checkbox": ok = this.validate_checkbox(field.checked, params); break;
			case "cp": ok = this.validate_cp(field.value, params); break;	
    		case "numeric": ok = this.validate_numeric(field.value, params); break;			
		
		}
		
		return ok;
	},
	
	validate_simpleText : function(txt, params){		
		if(txt == "" && params.obligatorio == true) return false;
		
		if(txt != ""){
			if(params.minChars != undefined && params.minChars > txt.length) return false;
			if(params.maxChars != undefined && params.maxChars < txt.length) return false;
		}
		
		return true;	
	},
	
	validate_latinTextNumbers : function(txt, params){		
		if(txt == "" && params.obligatorio == true) return false;
		
		var latinTextNumbers = "aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ0123456789";

		for(var a = 0; a < txt.length; a++){
			var letra = txt.charAt(a);
			
			if(latinTextNumbers.indexOf(letra) < 0){
				return false;
				break;
			}
		}
		
		if(txt != ""){
			if(params.minChars != undefined && params.minChars > txt.length) return false;
			if(params.maxChars != undefined && params.maxChars < txt.length) return false;
		}
		
		return true;	
	},
	
	validate_fecha_dia : function(txt, params){			
		if(txt == "" && params.obligatorio == true) return false;

		if(Number( txt ) < 1) return false;
		
		if(Number( txt ) > 31) return false;
		
		return true;
	},
	
	validate_fecha_mes : function(txt, params){			
		if(txt == "" && params.obligatorio == true) return false;

		if(Number( txt ) < 1) return false;
		
		if(Number( txt ) > 12) return false;
		
		return true;
	},
	
	validate_fecha_anio : function(txt, params){			
		if(txt == "" && params.obligatorio == true) return false;

		if(new Date().getFullYear() - txt > 80 || new Date().getFullYear() - txt < 15) return false;

	
		return true;
	},
	
	validate_email : function(txt, params){			
		if(txt == "" && params.obligatorio == true) return false;

		var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
		
		if (!filter.test(txt)) return false;
		
		return true;
	},
		
	validate_checkbox : function(checked,params){		
		if(checked == false && params.obligatorio == true) return false;
		
		return true;
	},
	
	validate_cp : function(txt, params){	
	
	
		if(txt == "" && params.obligatorio == true) return false;
		if(txt.length != 5) return false;
		
		return true;
	},
	
	validate_numeric : function(txt, params){		
		if(txt == "" && params.obligatorio == true) return false;
		
		if(txt != ""){
			if(params.minChars != undefined && params.minChars > txt.length) return false;
			if(params.maxChars != undefined && params.maxChars < txt.length) return false;
		}
		
		return true;	
	}
	
				
});