function isValidEmail(email, required) {
    if (required==undefined) {   // if not specified, assume it's required
        required=true;
    }
    if (email==null) {
        if (required) {
            return false;
        }
        return true;
    }
    if (email.length==0) {
        if (required) {
            return false;
        }
        return true;
    }
    if (! allValidChars(email)) {  // check to make sure all characters are valid
        return false;
    }
    if (email.indexOf("@") < 1) { //  must contain @, and it must not be the first character
        return false;
    } else if (email.lastIndexOf(".") <= email.indexOf("@")) {  // last dot must be after the @
        return false;
    } else if (email.indexOf("@") == email.length) {  // @ must not be the last character
        return false;
    } else if (email.indexOf("..") >=0) { // two periods in a row is not valid
	return false;
    } else if (email.indexOf(".") == email.length) {  // . must not be the last character
	return false;
    }
    return true;
}


function allValidChars(email) {
  var parsed = true;
  var validchars = "abcdefghijklmnopqrstuvwxyz0123456789@.-_";
  for (var i=0; i < email.length; i++) {
    var letter = email.charAt(i).toLowerCase();
    if (validchars.indexOf(letter) != -1)
      continue;
    parsed = false;
    break;
  }
  return parsed;
}


function isNumerico(nValor) {
   var validchars = "0123456789.";
   var Car;
   var nComas=0;

   for (var i=0; i < nValor.length; i++) {
    Car = nValor.charAt(i).toLowerCase();
    if (validchars.indexOf(Car) != -1) {
	    if (Car=='.')
    	  	nComas++;
      continue;
    }
    return false;
   }
   // Puntos Decimales
   if (nComas>0) {
	   if (nValor.indexOf('.') < 1)
    	   return false;
	   // Solo se permite un Punto Decimal
	   if (nComas > 1)
    	  return false;
   }
   return true;
}


function isPorcentaje(xValor) {
    if (xValor==null)
       return false;
    if (xValor.length==0)
       return false;
    if (! isNumerico(xValor))
        return false;
    if (xValor<0)
       return false;
    if (xValor>100)
      return false;
    return true;
}

function isEntero(xValor) {
    if (xValor==null)
       return false;
    if (xValor.length==0)
       return false;
    if (! isNumerico(xValor))
        return false;
    if (xValor.indexOf('.') >= 0)
       return false;
    return true;
}

function isReal(xValor) {
    if (xValor==null)
       return false;
    if (xValor.length==0)
       return false;
    if (! isNumerico(xValor))
        return false;
    return true;
}

function checkrequired(form) {
	var
		pass = true;

	for(i = 0; i < form.length; i++) {
		var tempobj = form.elements[i];
		
		
		if(tempobj.alt == "required") {
			if(tempobj.value == '') {
			    mess = 'Dato Requerido';
				pass = false;
				break;
			}
		}

		if(tempobj.alt == "mail") {
			if (isValidEmail(tempobj.value) == false) {
			    mess = 'Proporcione un e-mail correcto  ';
			    pass = false;
				break
			}
		}

		if(tempobj.alt == "porcentaje") {
			if (isPorcentaje(tempobj.value) == false) {
			    mess = 'El Valor es un % y debe de ser del 0 al 100';
			    pass = false;
				break
			}
		}

		if(tempobj.alt == "entero") {
			if (isEntero(tempobj.value) == false) {
			    mess = 'Debe de ser un Valor Numerico sin fraccion y positivo';
			    pass = false;
				break
			}
		}

		if(tempobj.alt == "real") {
			if (isReal(tempobj.value) == false) {
			    mess = 'Debe de ser un Valor Numerico';
			    pass = false;
				break
			}
		}

	}
	if(!pass) {
		alert(mess);
		tempobj.focus();
		return false;
	}
	else { return true; }
}
