
var defaultEmptyOK = false
var checkNiceness = true;
var digits = "0123456789.,";
var lowercaseLetters = "abcdefghijklmnopqrstuvwxyzáéíóúñü"
var uppercaseLetters = "ABCDEFGHIJKLMNOPQRSTUVWXYZÁÉÍÓÚÑ"
var whitespace = " \t\n\r";
var charEspeciales = whitespace+"@#$%&*().,;+"
var phoneChars = "()-+";
var mMessage = "No puede dejar este espacio vacio"
var pAlphanumeric = "Ingrese un texto que contenga solo letras y/o numeros";
var pAlphabetic = "Ingrese un texto que contenga solo letras";
var pInteger = "Ingrese un número entero";
var pNumber = "Ingrese un número";
var pPhoneNumber = "Ingrese un numero de telefono";
var pEmail = "Ingrese una direccion de correo electronico valida";
var pName = "Ingrese un texto que contenga solo letras, números o espacios";
var pDenominacion = "El texto ingresado posee caracteres invalidos";
var pDay = "Ingrese un día válido";
var pNice = "No puede utilizar comillas aqui";
var pHora = "Formato Hora [hh:mm]";
var pFecha = "Formato Fecha [DD/MM/AA]";
var pFecha4 = "Formato Fecha [DD/MM/AAAA]";




function makeArray(n) {
  for (var i = 1; i <= n; i++) {
    this[i] = 0
  }
  return this
}


			
	function ValidarComboTodos()
		{
		if (document.all("cmbNivelTerc"))
			{
				if (Form1.elements("cmbNivelTerc").value == 244)
					{	
					Form1.elements("cmbCarreraTerc").disabled=true;
					}
					else
					{	
					Form1.elements("cmbCarreraTerc").disabled=false;
					}
			}
				
		if (document.all("cmbNivelUni"))
			{
					if (Form1.elements("cmbNivelUni").value == 244)
					{	
					Form1.elements("cmbCarreraUni").disabled=true;
					}
					else
					{	
					Form1.elements("cmbCarreraUni").disabled=false;
					}
			}
		}
		
		function ValidarComboTer()
		{
		if (document.all("cmbNivelTerc"))
			{
				if (Form1.elements("cmbNivelTerc").value == 244)
					{	
					Form1.elements("cmbCarreraTerc").disabled=true;
					}
					else
					{	
					Form1.elements("cmbCarreraTerc").disabled=false;
					}
			}
					
		}
		
		function ValidarComboUni()
		{
		if (document.all("cmbNivelUni"))
			{
				if (Form1.elements("cmbNivelUni").value == 244)
					{	
					Form1.elements("cmbCarreraUni").disabled=true;
					}
					else
					{	
					Form1.elements("cmbCarreraUni").disabled=false;
					}
			}
		}
		
		
function EjecutarEliminarEmpAnterior(ID)
			{
			    if (confirm('Desea eliminar los datos en forma permanente?')) {
			        var doc = document.Form1;
			        doc.hdnEliminar.value = ID;
			        Form1.submit();
			    }
			    else {
			        return false;
			    }
			}
			
			
			
function ValidarCaracteres(p)
		
			{		
			
				if (checkField (Form1.elements(p), isAlphanumeric,true) == false) {
				
					Form1.elements(p).focus();
					return false;
				
				}
					
			}
			
			function ValidarMail(M)
		
			{		
			
				if (checkField (Form1.elements(M), isEmail,true) == false) {
				
					Form1.elements(M).focus();
					return false;
				
				}
					
			}

function isEmpty(s) {
  return ((s == null) || (s.length == 0))
}

function isWhitespace (s) {
  var i;
  if (isEmpty(s)) return true;
  for (i = 0; i < s.length; i++) {
    var c = s.charAt(i);
    // si el caracter en que estoy no aparece en whitespace,
    // entonces retornar falso
    if (whitespace.indexOf(c) == -1) return false;
  }
  return true;
}

function stripCharsInBag (s, bag) {
  var i;
  var returnString = "";

  // Buscar por el string, si el caracter no esta en "bag",
  // agregarlo a returnString

  for (i = 0; i < s.length; i++) {
    var c = s.charAt(i);
    if (bag.indexOf(c) == -1) returnString += c;
  }
  return returnString;
}

function stripCharsNotInBag (s, bag) {
  var i;
  var returnString = "";
  for (i = 0; i < s.length; i++) {
    var c = s.charAt(i);
    if (bag.indexOf(c) != -1) returnString += c;
  }
  return returnString;
}

function stripWhitespace (s) {
  return stripCharsInBag (s, whitespace)
}

function charInString (c, s) {
  for (i = 0; i < s.length; i++) {
    if (s.charAt(i) == c) return true;
  }
  return false
}

function stripInitialWhitespace (s) {
  var i = 0;
  while ((i < s.length) && charInString (s.charAt(i), whitespace))
    i++;
  return s.substring (i, s.length);
}

function isLetter (c) {
  return( ( uppercaseLetters.indexOf( c ) != -1 ) ||
          ( lowercaseLetters.indexOf( c ) != -1 ) )
}

function isDigit (c) {
  return ((c >= "0") && (c <= "9"))
}

function isLetterOrDigit (c) {
  return (isLetter(c) || isDigit(c))
}

function isInteger (s) {
  var i;
  if (isEmpty(s))
    if (isInteger.arguments.length == 1) return defaultEmptyOK;
    else return (isInteger.arguments[1] == true);

  for (i = 0; i < s.length; i++) {
    var c = s.charAt(i);
    if( i != 0 ) {
      if (!isDigit(c)) return false;
    } else {
      if (!isDigit(c) && (c != "-") || (c == "+")) return false;
    }
  }
  return true;
}

function isIntegerSinSigno (s) {
  var i;
  if (isEmpty(s))
    if (isInteger.arguments.length == 1) return defaultEmptyOK;
    else return (isInteger.arguments[1] == true);

  for (i = 0; i < s.length; i++) {
    var c = s.charAt(i);
    if (!isDigit(c)) return false;
  }
  return true;
}

function isNumber (s) {
  var i;
  var dotAppeared;
  dotAppeared = false;
  if (isEmpty(s))
    if (isNumber.arguments.length == 1) return defaultEmptyOK;
    else return (isNumber.arguments[1] == true);

  for (i = 0; i < s.length; i++) {
    var c = s.charAt(i);
    if( i != 0 ) {
      if ( c == "." ) {
        if( !dotAppeared )
          dotAppeared = true;
        else
          return false;
      } else
        if (!isDigit(c)) return false;
    } else {
      if ( c == "." ) {
        if( !dotAppeared )
          dotAppeared = true;
        else
          return false;
      } else
        if (!isDigit(c) && ((c != "-") || (c == "+"))) return false;
    }
  }
  return true;
}

function isDecimal (s) {
  var i, count=0, decimalcount=0;
  var dotAppeared;
  dotAppeared = false;
  if (isEmpty(s))
    if (isNumber.arguments.length == 1) return defaultEmptyOK;
    else return (isNumber.arguments[1] == true);

  for (i = 0; i < s.length; i++) {    
    if (count >= 1) decimalcount++;
    var c = s.charAt(i);
    if (!isDigit(c)){    
      if (( c == "." ) || ( c == "," )) count++; 
      else return false;
    }
  }
  // Control para que el nro no contenga mas de un punto o coma. 
  if (count > 1) return false;
  // Control para que el nro no contenga mas de dos decimales.
  if (decimalcount > 2) return false;
  return true;
}

// isIntegerInRange (STRING s, INTEGER a, INTEGER b [, BOOLEAN emptyOK])
//
// isIntegerInRange returns true if string s is an integer
// within the range of integer arguments a and b, inclusive.
//
// For explanation of optional argument emptyOK,
// see comments of function isInteger.


function isIntegerInRange (s, a, b) {
  if (isEmpty(s))
    if (isIntegerInRange.arguments.length == 1) return defaultEmptyOK;
    else return (isIntegerInRange.arguments[1] == true);

  // Catch non-integer strings to avoid creating a NaN below,
  // which isn't available on JavaScript 1.0 for Windows.
  if (!isInteger(s, false)) return false;

  // Now, explicitly change the type to integer via parseInt
  // so that the comparison code below will work both on
  // JavaScript 1.2 (which typechecks in equality comparisons)
  // and JavaScript 1.1 and before (which doesn't).
  var num = parseInt (s);
  return ((num >= a) && (num <= b));
}

function isDay (s) {
  if (isEmpty(s))
    if (isDay.arguments.length == 1) return defaultEmptyOK;
    else return (isDay.arguments[1] == true);
  return isIntegerInRange (s, 1, 31);
}

function isAlphabetic (s) {
  var i;

  if (isEmpty(s))
   if (isAlphabetic.arguments.length == 1) return defaultEmptyOK;
   else return (isAlphabetic.arguments[1] == true);
  for (i = 0; i < s.length; i++) {
    // Check that current character is letter.
    var c = s.charAt(i);

    if (!isLetter(c))
    return false;
  }
  return true;
}

function isAlphanumeric (s) {
  var i;

  if (isEmpty(s))
     if (isAlphanumeric.arguments.length == 1) return defaultEmptyOK;
     else return (isAlphanumeric.arguments[1] == true);

  for (i = 0; i < s.length; i++) {
      var c = s.charAt(i);
       if (! (isLetter(c) || isDigit(c))) return false;
		
  }

  return true;
}

function isName (s) {
  if (isEmpty(s))
   if (isName.arguments.length == 1) return defaultEmptyOK;
   else return (isAlphanumeric.arguments[1] == true);

  return( isAlphanumeric( stripCharsInBag( s, whitespace ) ) );
}

function isPhoneNumber (s) {
  var modString;
  if (isEmpty(s))
   if (isPhoneNumber.arguments.length == 1) return defaultEmptyOK;
   else return (isPhoneNumber.arguments[1] == true);
  modString = stripCharsInBag( s, phoneChars );
  return (isInteger(modString))
}

function isEmail (s) {
  if (isEmpty(s))
    if (isEmail.arguments.length == 1) return defaultEmptyOK;
    else return (isEmail.arguments[1] == true);
  /*
  if (isWhitespace(s)) return false;
  */
  var i = 1;
  var sLength = s.length;
  while ((i < sLength) && (s.charAt(i) != "@")) {
    i++
  }

  if ((i >= sLength) || (s.charAt(i) != "@")) return false;
  else i += 2;

  while ((i < sLength) && (s.charAt(i) != ".")) {
    i++
  }

  if ((i >= sLength - 1) || (s.charAt(i) != ".")) return false;
  else return true;
}

function isNice(s) {
  var i = 1;
  var sLength = s.length;
  var b = 1;
  while(i<sLength) {
    if( (s.charAt(i) == "\"") || (s.charAt(i) == "'" ) ) b = 0;
    i++;
  }
  return b;
}

function statBar (s) {
  window.status = s
}

function warnEmpty (theField) {
  theField.focus()
  alert(mMessage)
  statBar(mMessage)
  return false
}

function warnInvalid (theField, s) {
  theField.focus()
  theField.select()
  alert(s)
  statBar(s)
  return false
}


function isDenominacion (s) {
  if (isEmpty(s))
   if (isDenominacion.arguments.length == 1) return defaultEmptyOK;
   else return (isAlphanumeric.arguments[1] == true);

  return( isAlphanumeric( stripCharsInBag( s, charEspeciales ) ) );
}


function isHora (str) {
   var re = new RegExp("([0123456789]{2}):([0123456789]{2})","i");

   var arr = re.exec(str);

   if (arr == null) return false;

   if (RegExp.$1 > 24) return false;
   if (RegExp.$2 > 59) return false;

   return true;
}

function isFecha (str) {
   var re = new RegExp("([0123456789]{2})/([0123456789]{2})/([0123456789]{2})","i");

   var arr = re.exec(str);

   if (arr == null) return false;

   if (RegExp.$1 < 1) return false;
   if (RegExp.$2 < 1) return false;
   if (RegExp.$1 > 31) return false;
   if (RegExp.$2 > 12) return false;

   return true;
}


function isFecha4 (str) {
   var re = new RegExp("([0123456789]{2})/([0123456789]{2})/([0123456789]{4})","i");

   var arr = re.exec(str);

   if (arr == null) return false;

   if (RegExp.$1 < 1) return false;
   if (RegExp.$2 < 1) return false;
   if (RegExp.$1 > 31) return false;
   if (RegExp.$2 > 12) return false;

   return true;
}

function checkField (theField, theFunction, emptyOK, s)
{
  var msg;
  if (checkField.arguments.length < 3) emptyOK = defaultEmptyOK;
  if (checkField.arguments.length == 4) {
    msg = s;
  } else {
    if( theFunction == isAlphabetic ) msg = pAlphabetic;
    if( theFunction == isAlphanumeric ) msg = pAlphanumeric;
    if( theFunction == isInteger ) msg = pInteger;
    if( theFunction == isNumber ) msg = pNumber;
    if( theFunction == isDecimal ) msg = pNumber; //por Pdiaz
    if( theFunction == isEmail ) msg = pEmail;
    if( theFunction == isPhoneNumber ) msg = pPhoneNumber;
    if( theFunction == isName ) msg = pName;
    if( theFunction == isDay ) msg = pDay;
    if( theFunction == isDenominacion ) msg = pName;
    if( theFunction == isIntegerSinSigno ) msg = pNumber;
    if( theFunction == isHora ) msg = pHora;
    if( theFunction == isFecha ) msg = pFecha;
    if( theFunction == isFecha4 ) msg = pFecha4;
  }

  //if ((emptyOK == true) && (isEmpty(theField.value))) return true;

  //if ((emptyOK == false) && (isEmpty(theField.value)))
    //return warnEmpty(theField);

  //if ( checkNiceness && !isNice(theField.value))
    //return warnInvalid(theField, pNice);

  if (theFunction(theField.value) == true)
    return true;
  else
    return warnInvalid(theField, msg);
}


function ControloDigitoCuit (a, b, c) {

  var cCuit = "";
  var nAcumPrev = 0;
  var nAcumActu = 0;
  var nSumaDig = 0;
  var DigitoVer = 0;
  var L;

  if (ControloDigitoCuit.arguments.length < 3) return false;

  if (a.length!=2) return 1;
  if (b.length!=8) return 2;
  if (c.length!=1) return 3;

  cCuit = a+b

  for (L=1; L<=cCuit.length; L++) {
    nAcumPrev = nAcumActu;
    nAcumActu = cCuit.substring(0, L);
    nSumaDig = nSumaDig + ((nAcumActu - 10 * nAcumPrev) * (((10 - L) % 6) + 2));
  }

  DigitoVer = 11 - (nSumaDig % 11)
  if (DigitoVer == 11) {
    DigitoVer = 0;
  }
  else {
    if (DigitoVer == 11) {
      DigitoVer = 9;
    }
  }

  if (DigitoVer == c) return 0;

  return 4;
}


function ControlCuit (Fielda, Fieldb, Fieldc) {
if (Fielda.value == "" && Fieldb.value == "" && Fieldc.value == "")
{
		return true;
}
else
{
	if (ControlCuit.arguments.length < 3) return false;

	switch (ControloDigitoCuit (Fielda.value, Fieldb.value, Fieldc.value)) {
		case 0:
		return true;
		break;
		case 1:
		return warnInvalid (Fielda, "Cantidad de Digitos Invalida");
		break;
		case 2:
		return warnInvalid (Fieldb, "Cantidad de Digitos Invalida");
		break;
		case 3:
		return warnInvalid (Fieldc, "Cantidad de Digitos Invalida");
		break;
		default:
		return warnInvalid (Fielda, "Numero de Cuil Invalido");
	}
  }
}


function Longitud(theField, len, theFunction) {
  strlen = theField.value.length;

  if ((strlen<len) && (strlen!=0)) {
    return warnInvalid (theField, "Cantidad de Digitos Insuficiente");
  }

  if (checkField (theField, theFunction, true) == false) return false;

  return true;
}


function nComVisa(theField) {

  var NroComer = "";
  var cAuxAcum = "";
  var nAuxAcum = 0;
  var Digito;
  var MayorMulti;
  var DigitoVer = 0;
  var L;

  NroComer = String(theField.value);

  for (L=0; L<(NroComer.length-1); L++) {
    Digito = NroComer.substring(L, L+1);
    if (((L+1)%2)==0) {
      cAuxAcum = cAuxAcum + NroComer.substring(L, L+1);
    }
    else {
      cAuxAcum = cAuxAcum + (Digito * 2);
    }
  }

  for (L=0; L<(cAuxAcum.length); L++) {
    Digito = cAuxAcum.substring(L, L+1);
    nAuxAcum = nAuxAcum + Number(Digito);
  }

  if (nAuxAcum%10==0) {
    DigitoVer = 0;
  }
  else {
    if (nAuxAcum < 10) {
      MayorMulti = 10;
    }
    else {
      Digito = String(nAuxAcum);
      MayorMulti = (Number(Digito.substring(0, 1)) + 1) * 10;
    }
    DigitoVer = MayorMulti - nAuxAcum;
  }

  if (DigitoVer == Number(NroComer.substring(7))) {
    return true;
  }

  return warnInvalid (theField, "Número de Comercio Visa inválido");
}
