/********************************************************************************
 *	module:      functions_validate.js
 *	description: funciones para validar campos en una forma
 *	begin:       Miércoles, Septiembre 25, 2002
 *	copyright:   (c) 2002-2006 Enrique García M.
 *	
 *	$Id: functions_validate.js,v 1.0.13 2007/03/08 08:47:00 egarcia Exp $
 ********************************************************************************/

function egm_IsInteger(item) {
	var numberStr = item.value;
	var numberExpr = new RegExp("^[0-9]*\$");
	return (numberStr.match(numberExpr)!=null);
}

function egm_IsNumber(item) {
	var numberStr = item.value;
	var numberExpr = new RegExp("^[0-9]*\\.?[0-9]*\$");
	return (numberStr.match(numberExpr)!=null);
}

function egm_IsSignedNumber(item) {
	var numberStr = item.value;
	var numberExpr = new RegExp("^[\+\-]?[0-9]*\\.?[0-9]*\$");
	return (numberStr.match(numberExpr)!=null);
}

function egm_IsDocument(item) {
	var numberStr = item.value;
	var numberExpr = new RegExp("^[A-Za-z0-9]+[A-Za-z0-9\\-]*\$");
	return ((numberStr.length > 3) || (numberStr.match(numberExpr)!=null));
}

function egm_IsEmail(emailStr) {
    var emailexpr = new RegExp("^[A-Za-z_0-9\\.\\-]+@[A-Za-z_0-9\\.\\-]+\\.[a-zA-Z]{1,3}\$");
    return (emailStr.match(emailexpr)!=null);
}

function egm_HasSpaces(item) {
    var num = " ";
    
    for (var intLoop = 0; intLoop < item.value.length; intLoop++) {
        if (num.indexOf(item.value.charAt(intLoop)) != -1) return true;
    }
    return false;
}

function egm_ValidateDate(item) {
	var d = egm_ParseDate(item);
	if (d == null)
		return false;
	else
		return true;
}

function egm_ParseDate(item) {
	var s = item.value;
	s = s.substr(0,10);
	if (s == '') return null;
	if (s.indexOf('/')!= -1) ch = '/'; 
	else if (s.indexOf('-') != -1 ) ch = '-';
	else return null;

	var parts = new Array();
	parts = s.split(ch);
	if (parts[0].length < 4) return null;
	if (parts.length == 3) {
		// rebuilds the date using the american format m/d/y
		var objDate = new Date (parts[1] + '/' + parts[2] + '/' + parts[0]);
		if (parts[0] != objDate.getFullYear()) return null;
		if (parts[1] != objDate.getMonth() + 1) return null;
		if (parts[2] != objDate.getDate()) return null;
		return objDate;
	} else
		return null;
}

function egm_ValidateTime(item) {
	var s = item.value;
	s = s.substr(0,8);
	//item.value = s;
	var parts = new Array();

	if (s == '') return true;
	if (s.indexOf(':') == -1) return false;
	
	parts = s.split(':');
	if ((parts[0].length < 1) || (parts[0].length > 2)) return false;
	if (parts.length == 2) {
		// rebuilds the hour using the american format m/d/y
		var objDate = new Date ('01/01/1970 ' + s + ':00');
		if (parts[1] != objDate.getMinutes()) return false;
		if (parts[0] != objDate.getHours()) return false;
		return true;
	} else
		return false;
}

function egm_HasChecked(obj, chk_name) {
  var elems = obj.elements;
  var hasChecked = false;
  if (elems != null) {
    for (i=0; i<elems.length; i++)
      if ((elems.item(i).name == chk_name) && (elems.item(i).checked))
      	hasChecked = true;
  }
  return hasChecked;
}

function egm_CleanInput(fld)
{
	var argv = egm_CleanInput.arguments;
	var argc = argv.length;
	
	// remueve caracteres extraños (,|;'"+)
	var re = /[,;\'\"\|\+]/g;
	var st = fld.value.replace(re, ' ');
	
	// la ocurrencia de varios espacios es convertido a uno solo y convierte a mayusculas
	re = /\s+/g;
	st = st.replace(re, ' ');
	
	// determina si se pasa el parámetro para convertir a mayúsculas
	fld.value = ((argc > 1) && (argv[1] == 1)) ? st.toUpperCase(): st;
}

