/*
	Libreria form
	Desc: funciones para manejo de formularios
	Datos que recibe: 
	Inclusion: 
		<form action="usr/agrega_fondo.php" method="POST" target="" funct="actualiza_tabla()" id="myform">
        	<input type="text" name="fecha" id="fecha" requerido="true" titulo="Fecha" class="date" maxlength="0" >
       	    <input type="text" name="concepto" id="concepto" requerido="true" titulo="Concepto" class="alfanumerico" maxlength="20" >
            <input type="text" name="monto" id="monto" requerido="true" titulo="Monto" class="numero">
            <input type="submit" value="Realizar Movimiento">
        </form>
	Requiere: Core.js
	easy.js
	Notify.js
*/
function App_ini_form(){
	$("input").unbind('blur');
	$("input").blur(function() {
		if($(this).attr("requerido") == "true") {
			if(($(this).attr("value") == "")&&($(this).attr("class") != "date hasDatepicker")){
				$(this).css("background","#FFECEC");
			}else{
				$(this).css("background","#fff");
			}
		}
	});
		
	//envia formularios y verifica los campos requeridos
	$("form").unbind('submit');
	$("form").submit(function(event){
		event.preventDefault();
		var inputs = this.getElementsByTagName("input");
		var requerido = "false";
		for(var i in inputs){
			if((inputs[i].id != null)&&(inputs[i].id != "")&&(inputs[i].id != "undefined")){
			if(document.getElementById(inputs[i].id)){
				var id = "#"+inputs[i].id;
				if($(id).attr("requerido") == "true") {
					if($(inputs[i]).attr("value") == ""){
						$(inputs[i]).css("background","#FFECEC");
						requerido = "true";
					}
				}
			}
			}
		}
		inputs = this.getElementsByTagName("textarea");
		requerido = "false";
		for(var i in inputs){
			if((inputs[i].id != null)&&(inputs[i].id != "")&&(inputs[i].id != "undefined")){
			if(document.getElementById(inputs[i].id)){
				var id = "#"+inputs[i].id;
				if($(id).attr("requerido") == "true") {
					if($(inputs[i]).attr("value") == ""){
						$(inputs[i]).css("background","#FFECEC");
						requerido = "true";
					}
				}
			}
			}
		}
		if(requerido == "true"){
			$.Notify('Campos requeridos', { header: 'Error'});
		}else{
			var target = $(this).attr("target");
			var funct = $(this).attr("funcion");
			
			var cate = $.easyrpc({url:$(this).attr("action"), type:"POST"});
			eval($(this).attr("funcion")+'('+cate.send($(this).attr("id"), $(this).serialize())+')');
		}
		return false;
	});
}
$(document).keypress(function(event) {
	// Variables que definen los caracteres permitidos
	var numeros = "-0123456789";
	var caracteres = " abcdefghijklmnñopqrstuvwxyzABCDEFGHIJKLMNÑOPQRSTUVWXYZ";
	var simbolos = ",.:()-!=*/+-";
	var numeros_caracteres = numeros + caracteres;
	var teclas_especiales = [8, 37, 39, 46];
	var permitidos = "";
	// 8 = BackSpace, 46 = Supr, 37 = flecha izquierda, 39 = flecha derecha


	// Seleccionar los caracteres a partir del parámetro de la función
	switch($(event.target).attr("class")) {
		case 'numero':
			permitidos = numeros;
			break;
		case 'real_spin':
			permitidos = numeros;
			break;
		case 'texto_numero':
			permitidos = numeros+caracteres;
			break;
		case 'alfanumerico':
			permitidos = numeros+caracteres+simbolos;
			break;
		case 'cedula':
			permitidos = "0123456789ve-";
			break;
		case 'cuenta':
			permitidos = "0123456789-";
			break;
		case 'correo':
			permitidos = "0123456789@.abcdefghijklmnñopqrstuvwxyzABCDEFGHIJKLMNÑOPQRSTUVWXYZ";
			break;
		case 'texto':
			permitidos = caracteres;
			break;
		case 'date hasDatepicker':
			permitidos = "";
			break;
	}
	// Obtener la tecla pulsada 
	var evento = event || window.event;
	var codigoCaracter = evento.charCode || evento.keyCode;
	var caracter = String.fromCharCode(codigoCaracter);
	// Comprobar si la tecla pulsada es alguna de las teclas especiales
	// (teclas de borrado y flechas horizontales)
	var tecla_especial = false;
	for(var i in teclas_especiales) {
		if(codigoCaracter == teclas_especiales[i]) {
			tecla_especial = true;
			break;
		}
	}
	if($(event.target).attr("class")=="real_spin"){
		if(permitidos.indexOf(caracter) != -1){
			if(parseInt($(event.target).attr("max")) < parseInt($(event.target).attr("value")+caracter))
				return false;
			if(parseInt($(event.target).attr("min")) > parseInt($(event.target).attr("value")+caracter))
				return false;
		}
	}

	// Comprobar si la tecla pulsada se encuentra en los caracteres permitidos
	// o si es una tecla especial
	return permitidos.indexOf(caracter) != -1 || tecla_especial;
});
//variable que usa el framework para colocar una llamada inicial en document ready
var App_form = "App_ini_form()";
//variable que usa el framework para colocar una llamada al plugin despues de haber hecho una consulta por ajax
var App_recarga_form = "App_ini_form();";
