function Chequear_Entero(target) {	
//Verifica que el usuario escriba un entero
//No valida el tamaño del entero
//Parametros:
//		target: objeto del campo del entero
	var entero, plantilla, cadena;

	entero=target.value;
	plantilla = /\d/
	cadena="";

	if(entero.length > 0) {
		for(i=0; i<=entero.length-1; i++) {
			if(plantilla.test(entero.substring(i,i+1)))
				cadena += entero.substring(i,i+1);
			else
				break;
		}
		target.value=cadena;
	}
}


function Chequear_Fecha(target) {	
//Verifica que el usuario escriba la fecha en el formato correcto
//No valida que la fecha sea la correcta o que este incompleta
//Parametros:
//		target: objeto del campo de la fecha
	var fecha, plantilla, cadena, i;
	
	fecha=target.value;
	cadena="";

	if(fecha.length > 0) {
		for(i=0; i<=fecha.length-1; i++) {
			switch(i) {
				case 0:  
					plantilla = /[0123]/
					break;
				case 1:
					plantilla = /\d{1}/
					break;
				case 2:
					plantilla = /[\/-]/
					break;
				case 3:
					plantilla = /[01]/
					break;
				case 4:
					plantilla = /\d{1}/
					break;
				case 5:
					plantilla = /[\/-]/
					break;
				case 6:
					plantilla = /[12]/
					break;
				case 7:
					plantilla = /[90]/
					break;
				case 8:
					plantilla = /\d{1}/
					break;
				case 9:
					plantilla = /\d{1}/
					break;
			}

			if(plantilla.test(fecha.substring(i,i+1)))
				cadena += fecha.substring(i,i+1);
			else
				break;
		}
		
		target.value=cadena;
	}
}


function Chequear_Longitud(target, target_numero, target_longitud) {
// Chequea la longitud del TextArea
// Argumentos:
//    target: objeto textarea a validar
//    target_numero: objeto donde se escribe la cantidad de caracteres que faltan
//    target_longitud: objeto oculto que indica la longitud maxima del textarea
	campo_string = target.value.length;
	campo_numero = MM_findObj(target_numero);
	campo_longitud = MM_findObj(target_longitud);
	longitud = campo_longitud.value;
	
	if (campo_string == 1 && target.value.substring(0,1) == " ") {
		target.value = "";
		campo_string = 0;
	}
	if (campo_string > longitud ) {
		target.value = target.value.substring(0,longitud);
		caracteres_faltantes = 0;
	} else {
		caracteres_faltantes = longitud - campo_string;
	}
	campo_numero.value = caracteres_faltantes;
}


function Chequear_Real(target) {	
//Verifica que el usuario escriba un real
//No valida el tamaño del real
//Parametros:
//		target: objeto del campo del real
	var real, entero, decimal, plantilla, cadena;

	real=target.value;
	plantilla = /[0123456789,]/
	cadena="";

	if(real.length > 0) {
		//Transforma los puntos en comas
		for(i=0; i<=real.length-1; i++) {
			if(real.substring(i,i+1)==".")
				cadena += ",";
			else
				cadena += real.substring(i,i+1);
		}

		real=cadena;
		cadena="";
		for(i=0; i<=real.length-1; i++) {
			if(plantilla.test(real.substring(i,i+1))) {
				if(real.indexOf(',')!=-1) {
					entero = real.substring(0, real.indexOf(','));
					decimal = real.substring(real.indexOf(',') + 1, real.length);
					if(decimal.indexOf(',')==-1)
						cadena = entero + "," + decimal.substring(0,2);
					else
						cadena = entero + "," + decimal.substring(0, decimal.indexOf(','));
				}
				else
					cadena += real.substring(i,i+1);
			}
			else
				break;
		}
		target.value = cadena;
	}
}


function Chequear_Telefono(target) {	
//Verifica que el usuario escriba un telefono
//Solo valida que los digitos sean: numeros ( ) + - .
//Parametros:
//		target: objeto del campo del telefono
	var telefono, plantilla, cadena;

	telefono=target.value;
	plantilla = /[0123456789()-. ]/
	cadena="";

	if(telefono.length > 0) {
		//Transforma los puntos en comas
		for(i=0; i<=telefono.length-1; i++) {
			if(telefono.substring(i,i+1)==",")
				cadena += ".";
			else
				cadena += telefono.substring(i,i+1);
		}

		telefono=cadena;
		cadena="";
		for(i=0; i<=telefono.length-1; i++) {
			if(plantilla.test(telefono.substring(i,i+1)))
				cadena += telefono.substring(i,i+1);
			else
				break;
		}
		target.value=cadena;
	}
}


function MM_isChangePass(argumento1, argumento2, idioma) { 
//Modulo auxiliar de la funcion MM_validaForm para verificar isChangePass
	var indice, vieja_clave, clave, reclave, errors;
	
	vieja_clave=MM_findObj(argumento1);
	indice = argumento2.indexOf(':');
	clave=argumento2.substring(0, indice);
	clave=MM_findObj(clave);
	reclave=argumento2.substring(indice+1, argumento2.length);
	reclave=MM_findObj(reclave);
	errors="";
	
	if (vieja_clave.value=="") {
		if(idioma="esp")
			errors += '   - Vieja Clave es requerido. \n';
		else
			errors += '   - Old Password is required. \n';
	}
	if (clave.value=="") {
		if(idioma="esp")
			errors += '   - Clave es requerido. \n';
		else
			errors += '   - Password is required. \n';
	}
	else if (clave.value.length < 4) {
		if(idioma="esp")
			errors += '   - Clave debe contener al menos 4 caracteres. \n';
		else
			errors += '   - Password should contain 4 characters at least. \n';
	}
	if (reclave.value=="") {
		if(idioma="esp")
			errors += '   - Verificar Clave es requerido. \n';
		else
			errors += '   - Verify Password is required. \n';
	}
	else if (clave.value != reclave.value) {
		if(idioma="esp")
			errors += '   - Verificar Clave no es igual a Clave. \n';
		else
			errors += '   - Verify Password is not similar to Password. \n';
	}

	return errors;
}


function MM_isPassword(argumento1, argumento2, idioma) { 
//Modulo auxiliar de la funcion MM_validaForm para verificar isPassword
	var indice, usuario, clave, reclave, errors;

	usuario=MM_findObj(argumento1);
	indice = argumento2.indexOf(':');
	clave=argumento2.substring(0, indice);
	clave=MM_findObj(clave);
	reclave=argumento2.substring(indice+1, argumento2.length);
	reclave=MM_findObj(reclave);
	errors="";
	
	if (usuario.value=="") {
		if(idioma="esp")
			errors += '   - Usuario es requerido. \n';
		else
			errors += '   - User is required. \n';
	}
	if (clave.value=="") {
		if(idioma="esp")
			errors += '   - Clave es requerido. \n';
		else
			errors += '   - Password is required. \n';
	}
	else if (clave.value.length < 4) {
		if(idioma="esp")
			errors += '   - Clave debe contener al menos 4 caracteres. \n';
		else
			errors += '   - Password should contain 4 characters at least. \n';
	}
	else if (clave.value == usuario.value) {
		if(idioma="esp")
			errors += '   - Clave, por razones de seguridad, no puede ser igual a Usuario. \n';
		else
			errors += '   - Password, for reasons of security, it cannot be similar to User. \n';
	}
	if (reclave.value=="") {
		if(idioma="esp")
			errors += '   - Verificar Clave es requerido. \n';
		else
			errors += '   - Verify Password is required. \n';
	}
	else if (clave.value != reclave.value) {
		if(idioma="esp")
			errors += '   - Verificar Clave no es igual a Clave. \n';
		else
			errors += '   - Verify Password is not similar to Password. \n';
	}
		
	return errors;
}


function MM_findObj(n, d) { 
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i>d.layers.length;i++) x=MM_findObj(n,d.layers[i].document); return x;
}
 

function MM_validaForm() { 
// Validación de los campos de un formulario
// Argumento 4x(i-1): objeto i
// Argumento 4x(i-1)+1: nombre del objeto i
// Argumento 4x(i-1)+2: parametros de validacion del objeto i
// Argumento 4x(i-1)+3: tipo de validacion del objeto i
// Ejem: Argumento 0: objeto 1
// 		 Argumento 1: nombre del objeto 1
// 		 Argumento 2: parametros de validacion del objeto 1
// 		 Argumento 3: tipo de validacion del objeto 1
// Tipo de validacion:
//		R: requerido, debe ser la primera letra
//		isLimited: cadena de texto con longitud minima definida
//			Parametros: longitud_minima
//		isPassword: valida el usuario, la clave y la verificacion de clave (reclave)
//			Parametros: objeto_clave:objeto_reclave
//		isChangePass: valida la clave vieja, la clave y la verificacion de clave (reclave)
//			Parametros: objeto_clave:objeto_reclave
//		isEmail: es un correo
//		isNumber: es un numero
//			Parametros: valor_minimo.valor_maximo
//		isImage: es una imagen
//			Parametros: nombre_del_objeto_imagen:ancho.alto
//						ancho (alto) esta compuesto por: comodin = + - y el valor del ancho (alto)
//		isDate: es una fecha
  var i,nm,test,cumpleRequerido,errors='',args=MM_validaForm.arguments;

  for (i=0; i<(args.length-3); i+=4) {
  	test=args[i+3]; val=MM_findObj(args[i]);
    if (val) {
		// Asigna el nombre del objeto
		if (args[i+1]!="")
			nm=args[i+1];
		else
			nm=val.name;
		cumpleRequerido=true;

		if (test.charAt(0) == 'R' && val.value=="") {
			cumpleRequerido=false;
			if(idioma="esp")
				errors += '   - '+nm+' es requerido. \n';
			else
				errors += '   - '+nm+' is required. \n';
		}
		
		if ((test.indexOf('isLimited')!=-1) && (val.value!="") && cumpleRequerido) {
		// Entra si cumple requerido
			if (args[i+2]!="") {
				if (val.value.length < args[i+2]) {
					if(idioma="esp")
						errors += '   - '+nm+' debe tener al menos '+args[i+2]+' carácteres.  \n';
					else
						errors += '   - '+nm+' debe tener al menos '+args[i+2]+' carácteres.  \n';
				}
			}
		}

		if ((test.indexOf('isPassword')!=-1))
			errors += MM_isPassword(args[i], args[i+2], idioma);
			
		if ((test.indexOf('isChangePass')!=-1))
			errors += MM_isChangePass(args[i], args[i+2], idioma);
			
		if ((test.indexOf('isEmail')!=-1) && (val.value!="") && cumpleRequerido) {
		// Entra si cumple requerido
			var plantilla = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/
			if (!plantilla.test(val.value)) {
				if(idioma="esp")
					errors+='   - '+nm+' debe ser una direccion de e-mail. \n';
				else
					errors+='   - '+nm+' should be an e-mail address. \n';
			}
		}
		
		if ((test.indexOf('isImage')!=-1) && (args[i+2]!="") && cumpleRequerido) {
		// Entra si cumple requerido y ademas se pasan los parametros adecuados
			var indice1, indice2, compAncho, compAlto, ancho, alto, imagen;
			indice1 = args[i+2].indexOf(':');
			indice2 = args[i+2].indexOf('.');
			imagen=args[i+2].substring(0, indice1);
			imagen=MM_findObj(imagen);
			if(imagen.src.indexOf('tx_sin_imagen.gif')==-1) {
				compAncho=args[i+2].charAt(indice1+1); // = igual, + mayor o igual que, - menor o igual que
				ancho=args[i+2].substring(indice1+2, indice2);
				compAlto=args[i+2].charAt(indice2+1);  // = igual, + mayor o igual que, - menor o igual que
				alto=args[i+2].substring(indice2+2, args[i+2].length);
				if(((imagen.width!=1 || imagen.height!=1) && (imagen.width!=254 || imagen.height!=15)) || test.charAt(0) == 'R') {
					if ((compAncho=='=' && imagen.width!=ancho) || (compAncho=='+' && imagen.width<ancho) || (compAncho=='-' && imagen.width>ancho) || (compAlto=='=' && imagen.height!=alto) || (compAlto=='+' && imagen.height<alto) || (compAlto=='-' && imagen.height>alto)) {
						if(ancho!=0 && alto!=0) {
							if(idioma="esp")
								errors+='   - '+nm+' no cumple con las dimensiones de '+ancho+'x'+alto+' pixeles. \n';
							else
								errors+='   - '+nm+' doesn\'t fulfill the dimensions of '+ancho+'x'+alto+' pixels. \n';
						}
						if(ancho==0 && alto!=0) {
							if(idioma="esp")
								errors+='   - '+nm+' no cumple con las dimensiones de '+alto+' pixeles de alto. \n';
							else
								errors+='   - '+nm+' doesn\'t fulfill the dimensions of '+alto+' pixels of high. \n';
						}
						if(ancho!=0 && alto==0) {
							if(idioma="esp")
								errors+='   - '+nm+' no cumple con las dimensiones de '+ancho+' pixeles de ancho. \n';
							else
								errors+='   - '+nm+' doesn\'t fulfill the dimensions of '+ancho+' pixels of wide. \n';
						}
					}
				}
			}
		}
		
		if (test.indexOf('isNumber')!=-1 && (val.value!="") && cumpleRequerido) {
		// Entra si cumple requerido
			var num, indice, valorMin, valorMax;
			num = parseFloat(val.value);
        	if (val.value!=''+num) {
				if(idioma="esp")
					errors+='   - '+nm+' debe ser un número. \n';
				else
					errors+='   - '+nm+' should be an number. \n';
			}
			if (args[i+2]!="") {
				indice = args[i+2].indexOf('.');
				valorMin=args[i+2].substring(0, indice);
				valorMax=args[i+2].substring(indice+1, args[i+2].length);
          		if (num<valorMin || num>valorMax) {
					if(idioma="esp")
						errors+='   - '+nm+' debe ser un número entre '+valorMin+' y '+valorMax+'.  \n';
					else
						errors+='   - '+nm+' should be a number between '+valorMin+' and '+valorMax+'.  \n';
				}
			}
		}

		if (test.indexOf('isDate')!=-1 && (val.value!="") && cumpleRequerido) {			
		// Entra si cumple requerido
			var array_fecha, dia, mes, ano, plantilla;
			plantilla = /^\d{2}[\/]?[-]?\d{2}[\/]?[-]?\d{4}$/
			if (!plantilla.test(val.value)) {
				if(idioma="esp")
					errors+='   - '+nm+' esta escrito incorrectamente, deberia ser por ejemplo: 20/01/2005. \n';
				else
					errors+='   - '+nm+' is writing incorrectly, it should be for example: 20/01/2005. \n';
			}
			else {
				array_fecha = val.value.split("/");
				dia = array_fecha[0];
				mes = array_fecha[1];
				ano = array_fecha[2];
				if ((ano < 1800) || (ano > 2100)) {
					if(idioma="esp")
						errors+='   - '+nm+' incorrecta, el año esta fuera del rango entre 1800 y 2100. \n';
					else
						errors+='   - '+nm+' is incorrect, the year this outside of the range between 1800 and 2100. \n';
				}
				if ((mes < 1) || (mes > 12)) {
					if(idioma="esp")
						errors+='   - '+nm+' incorrecta, el mes esta fuera del rango entre 01 y 12. \n';
					else
						errors+='   - '+nm+' is incorrect, the month this outside of the range between 01 and 12. \n';
				}
				if ( ((dia<1)||(dia>31)) || (((mes==4)||(mes==6)||(mes==9)||(mes==11))&&(dia>30)) || ((ano%4!=0)&&(mes==2)&&(dia>28)) || ((ano%4==0)&&(mes==2)&&(dia>29)) ) {
					if(idioma="esp")
						errors+='   - '+nm+' incorrecta, el día es invalido. \n';
					else
						errors+='   - '+nm+' is incorrect, the day is invalidate. \n';
				}
			}
		}
				
	}
  }

  if (errors) {
	if(idioma="esp")
		alert('Ocurrieron los siguientes errores:\t\t\n'+errors);
	else	  
		alert('Occurred the following errors:\t\t\n'+errors);
  }
  document.MM_returnValue = (errors == '');
}


function info(id_mensaje) {
// Despliega mensaje de información
	open('man_gen_info.php?id_mensaje='+id_mensaje,'Información',"width=320,height=100,scrollbars=no,status=no,toolbar=no,menubar=no,top="+((screen.availHeight-100)/2)+",left="+((screen.availWidth-320)/2));
}
