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

/* --- TIPOS ----
 * 
 * 
 * 
 */


bilboostCore.maskTypes = new Class({ 
	
	masks : {
		simpleText : "aAbBcCdDeEfFgGhHiIjJkKlLmMnNñÑoOpPqQrRsStTuUvVwWxXyYzZçÇºª-_.,",
		latinTextNumbers : "aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ0123456789",
		midText : "aAbBcCdDeEfFgGhHiIjJkKlLmMnNñÑoOpPqQrRsStTuUvVwWxXyYzZçÇºª-_.,?¿*+¡!:@$€&()1234567890",
		fullText : "aAbBcCdDeEfFgGhHiIjJkKlLmMnNñÑoOpPqQrRsStTuUvVwWxXyYzZçÇºª-_.,?¿*+¡!:@$€&()'\/#·%=[];1234567890" + '"',
		email:"aAbBcCdDeEfFgGhHiIjJkKlLmMnÑoOpPqQrRsStTuUvVwWxXyYzZ_-@.1234567890_-",
		numeric : "0123456789",
		fecha_dia : "0123456789",
		fecha_mes : "0123456789",
		fecha_anio : "0123456789",
		cp : "0123456789"

	},
	
	startListener : function(field, tipo, params){
		var tClass = this;
		field.onkeypress = function(keyEvent){
			var oldValue = field.value;
			var ok = tClass.testKey(keyEvent,tipo);
			
			if(ok == false){
				field.readOnly = true;
				field.value = oldValue;
			}
		}
		
		field.onkeyup = function(){
			field.readOnly = false;
			field.focus();
		}
	},
	
	stopListener : function(field, params){
		field.onkeypress = null;
		field.onkeyup = null;
	},
	
	testKey : function(keyEvent,tipo){
		if(window.event) // IE
			var keynum = window.event.keyCode;
		else if(keyEvent.which) // Netscape/Firefox/Opera
			var keynum = keyEvent.which;
		
		//alert(keynum)
		if(keynum == 13) return true; //enter
		if(keynum == 8) return true; //backSpace
		if(keynum == 32) return true; //Space
		if(keynum == undefined) return true; //Others
		
		var letra = String.fromCharCode(keynum);
		
		if(String(this.masks[tipo]).indexOf(letra) > -1)
			return true;
		else
			return false;
	},
	
	doMask : function(field,params){
		//Número de digitos concretos
		if (params.digitos != undefined && field.value.length < params.digitos && field.value.length != 0) {
			for(var a = field.value.length; a < params.digitos; a++){
				field.value = "0" + String(field.value);
			}
		}
		
		//TextoLetras
		
		//Capitalize
		if (params.capitalize != undefined && params.capitalize == true){
			var txt = field.value;
	        txt = txt.replace(/^\s+/, ""); //quitar espacios por delante
			txt =	txt.replace(/\s+$/, ""); //quitar espacios por detras
	
			txt = txt.replace(/[0-9a-zA-Zá-úÁ-Ú]+/g, function(txt){
	        	return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();
	        });
			
			txt = txt.split(" De ").join(" de ");
			txt = txt.split(" Y ").join(" y ");
			txt = txt.split(" La ").join(" la ");
			txt = txt.split(" Del ").join(" del ");
			 
			field.value = txt;
		}
	}
				
});
