//funcion para requerir el ingreso de información en un campo
function validRequired(formField, fieldLabel) {
	var result = true;
	if ((formField.value == "") || (formField.value.length <= 0)) {
		alert('Por favor ingrese un valor para el campo "' + fieldLabel + '".');
		formField.focus();
		formField.select();
		result = false;
	}
	return result;
}
//funcion para requerir el ingreso de por lo menos un de los dos campos
function validRequiredOne(formField1, formField2, fieldLabel1, fieldLabel2) {
	var result = true;
	if (((formField1.value == "") || (formField1.value.length <= 0)) &&
	   ((formField2.value == "") || (formField2.value.length <= 0))) {
		alert('Por favor ingrese un valor ya sea para el campo "' + fieldLabel1 + '" o el campo "' + fieldLabel2 + '".');
		formField1.focus();
		formField1.select();
		result = false;
	}
	return result;
}
//funcion para revisar si la informacion ingresada es un mejor candidato a ser un email
function isEmailAddr(email) {
	var result = false;
	var theStr = new String(email);
	var index = theStr.indexOf("@");
	if (index > 0) {
		var pindex = theStr.indexOf(".", index);
		if ((pindex > index+1) && (theStr.length > pindex+1))
			result = true;
	}
	return result;
}
//funcion para revisar si la información de un campo es un email valido
function validEmail(formField, fieldLabel, required) {
	var result = true;
	if (required && !validRequired(formField, fieldLabel))
		result = false;
	if (result && (formField.value.length > 0)) {
		if ((formField.value.length < 3) || !isEmailAddr(formField.value)) {
			alert('Por favor ingrese una dirección de correo electrónico (e-mail) valida, para el campo "' + fieldLabel + '".');
			formField.focus();
			formField.select();
			result = false;
		}
	}
	return result;
}
//funcion para revisar si la información de un campo es un password (para agregar o modificar)
function validPassword(formField, formFieldConfirm, fieldLabel, required) {
	var result = true;
	if (required && !validRequired(formField, fieldLabel))
		result = false;
	if (result && (formField.value.length > 0)) {
		if (formField.value.length < 4) {
			alert('Por favor ingrese un valor mayor a 3 caractes para el campo "' + fieldLabel + '".');
			result = false;
		}
		if (result && (formField.value != formFieldConfirm.value)) {
			alert('Por favor ingrese valores iguales para el campo "' + fieldLabel + '" y el de su confirmación.');
			result = false;
		}
		if (!result) {
			formField.focus();
			formField.select();
		}
	}
	return result;
}
//funcion para ver si la cadena de caracteres pertenece a un conjunto de caracteres
function inValidCharSet(str, charset) {
	var result = true;
	// Note: doesn't use regular expressions to avoid early Mac browser bugs	
	for (var i=0; i<str.length; i++)
		if (charset.indexOf(str.substr(i,1)) < 0) {
			result = false;
			break;
		}
	return result;
}
//funcion para revisar que la cadena de caracteres solo tiene numeros
function allDigits(str) {
	return inValidCharSet(str,"0123456789");
}
//funcion para revisar si la información de un campo es un numero
function validNum(formField, fieldLabel, required) {
	var result = true;
	if (required && !validRequired(formField, fieldLabel))
		result = false;
	if (result && (formField.value.length > 0)) {
		if (!allDigits(formField.value)) {
			alert('Por favor ingrese un número para el campo "' + fieldLabel + '".');
			formField.focus();
			formField.select();
			result = false;
		}
	} 
	return result;
}
//funcion para revisar si la información de un campo es un entero
function validInt(formField, fieldLabel, required) {
	var result = true;
	if (required && !validRequired(formField, fieldLabel))
		result = false;
 	if (result && (formField.value.length > 0)) {
 		var num = parseInt(formField.value, 10);
 		if (isNaN(num)) {
 			alert('Por favor ingrese un número entero para el campo "' + fieldLabel + '".');
			formField.focus();
			formField.select();
			result = false;
		} else formField.value = num;
	} 
	return result;
}
// Replaces text with by in string
function replace(string,text,by) {
    var strLength = string.length, txtLength = text.length;
    if ((strLength == 0) || (txtLength == 0)) return string;
    var i = string.indexOf(text);
    if ((!i) && (text != string.substring(0,txtLength))) return string;
    if (i == -1) return string;
    var newstr = string.substring(0,i) + by;
    if (i+txtLength < strLength)
        newstr += replace(string.substring(i+txtLength,strLength),text,by);
    return newstr;
}
//funcion para revisar si la información de un campo es un punto flotante
function validFloat(formField, fieldLabel, required) {
	var result = true;
	if (required && !validRequired(formField, fieldLabel))
		result = false;
 	if (result && (formField.value.length > 0)) {
		var temp = replace(formField.value, ",", ""); //quitando las ","
 		var num = parseFloat(temp);
 		if (isNaN(num)) {
 			alert('Por favor ingrese un número de punto flotante para el campo "' + fieldLabel + '".');
			formField.focus();
			formField.select();
			result = false;
		} else formField.value = num;
	} 
	return result;
}
//funcion para revisar si la información de un campo es una fecha
function validDate(formField, fieldLabel, required) {
	var result = true;
	if (required && ((formField.value == "") || (formField.value.length <= 0) || (formField.value.toLowerCase() == "dd/mm/aaaa"))) {
		alert('Por favor ingrese un valor para el campo "' + fieldLabel + '".');
		formField.focus();
		formField.select();
		result = false;
	}
 	if (result && (formField.value.length > 0) && (formField.value.toLowerCase() != "dd/mm/aaaa")) {
 		var elems = formField.value.split("/");
 		result = (elems.length == 3); // should be three components (dd/mm/aaaa)
 		if (result) {
 			var day = parseInt(elems[0], 10);
  			var month = parseInt(elems[1], 10);
 			var year = parseInt(elems[2], 10);
			result = allDigits(elems[0]) && (day > 0) && (day < 32) &&
					 allDigits(elems[1]) && (month > 0) && (month < 13) &&
					 allDigits(elems[2]) && ((elems[2].length == 2) || (elems[2].length == 4));
 		}
  		if (!result) {
 			alert('Por favor ingrese una fecha de la forma "dd/mm/aaaa" para el campo "' + fieldLabel + '".');
			formField.focus();
			formField.select();	
		}
	} 
	return result;
}
//funcion para mostrar el popup calendario
function showCalendar(winPath, winName) {
	window.open(winPath + 'calendario01.htm', winName, 'width=205,height=200,menubar=no,scrollbars=no,toolbar=no,status=no,resizable=no');
}
//funcion para mostrar la longitud de un campo
function showLength(fieldObj, fieldLabel) {
	alert('La cantidad de caracteres del campo "' + fieldLabel + '" es igual a ' + fieldObj.value.length);
}
//funcion para limitar "onkeyup" en un textarea para poner el maximo permitido
function trackCount(fieldObj, maxChars) {
	var diff = maxChars - fieldObj.value.length;
	if (diff < 0) fieldObj.value = fieldObj.value.substring(0, maxChars);
}
//funcion para limitar "onkeypress" en un textarea para poner el maximo permitido
function limitText(fieldObj, maxChars) {
	var result = true;
	if (fieldObj.value.length >= maxChars)
		result = false;
	if (window.event)
		window.event.returnValue = result;
	return result;
}
//funcion para poner el focus en el primer campo del primer formulario
function firstFocus() {
   if (document.forms.length > 0) {
		var TForm = document.forms[0];
		for (i=0; i<TForm.length; i++) {
		if ((TForm.elements[i].type=="text")||
		   (TForm.elements[i].type=="password")||
		   (TForm.elements[i].type=="textarea")||
		   (TForm.elements[i].type.toString().charAt(0)=="s")) {
			document.forms[0].elements[i].focus();
            break;
		}
      }
   }
}
//funcion para mostrar el popup con imagen
function showImage(winPath, winName, winWidth, winHeight) {
	window.open(winPath, winName, 'width=' + (winWidth+10) + ',height=' + (winHeight+15) + ',menubar=no,scrollbars=no,toolbar=no,status=no,resizable=no');
}