// ----------------------------------------------------------------------
//           FormCheq.js (c) ChaTo [www.chato.cl] 1998
//           basado en FormChek.js (c) Eric Krock 1997 Netscape Corp.
// ----------------------------------------------------------------------
// Rutinas para verificacion de formularios, basado en FormChek.js
// Parte del curso "TEJEDORES DEL WEB" http://www.chato.cl/tw/
// ---------------------------------------------------------------------- 

var defaultEmptyOK = false
var checkNiceness = true;
var digits = "0123456789";
var lowercaseLetters = "abcdefghijklmnopqrstuvwxyzáéíóúñü"
var uppercaseLetters = "ABCDEFGHIJKLMNOPQRSTUVWXYZÁÉÍÓÚÑ"
var specialChars = ".,"
var whitespace = " \t\n\r";
var timeChar = ":";
var whiteSpaceAndPoint = " \t\n\r.,";
var whiteSpaceAndSpecialChars = " \t\n\r.#-";
var phoneChars = "()-+anexoANEXO ";
var mMessage = "Error: no puede dejar este espacio vacio"
var pPrompt = "Error: ";
var pAlphanumeric = "Error: Ingrese un texto que contenga solo letras y/o numeros";
var pAlphabetic   = "ingrese un texto que contenga solo letras";
var pInteger = "ingrese un numero entero";
var pNumber = "Error: ingrese un numero";
var pPhoneNumber = "ingrese un número de teléfono";
var pEmail = "ingrese una dirección de correo electrónico válida";
var pName = "ingrese un texto que contenga solo letras, numeros, espacios o punto";
var pNice = "no puede utilizar comillas aqui";
var pAddress = "ingrese un texto que contenga solo letras, numeros,  espacios o punto";
var pDate = "ingrese un texto que contenga una fecha valida (dd/mm/yyyy)";
var pTime = "ingrese un texto que contenga una hora valida (hh:mm)";
var creditCardDelimiters = " "

function makeArray(n) {
   for (var i = 1; i <= n; i++) {
      this[i] = 0
   } 
   return this
}

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 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 isNumberWithPoint (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 (!isDigit(c)) return false;
        } 
		else 
			if (!isDigit(c) && (c != "-") || (c == "+")) return false;
    }
    return true;
}

function isAlphabetic (s)
{ 
  //alert(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 ) ) || isAlphanumeric( stripCharsInBag( s, whiteSpaceAndPoint ) ));
}

function isAddress (s)
{
    if (isEmpty(s)) 
       if (isAddress.arguments.length == 1) return defaultEmptyOK;
       else return (isAlphanumeric.arguments[1] == true);
    
    return( isAlphanumeric( stripCharsInBag( s, whitespace ) ) || isAlphanumeric( stripCharsInBag( s, whiteSpaceAndSpecialChars ) ));
}

function isTime (s)
{
	var partsTime

	partsTime = s.split(":");

	if (partsTime.length == 2 && isInteger(partsTime[0]) && isInteger(partsTime[1]))
	{
		if (partsTime[0] > 23 || partsTime[1] > 59)
			return false;
	}
	else
		return false;	
    return( isInteger( stripCharsInBag( s, timeChar )));
}

/* Verifica si un año es bisiesto (true) o no (false)*/
function AnoBisiesto(Ano) 
{
	if (Ano % 4 == 0)
		return true 
	return false
}// AnoBisiesto

/* retorna la cantidad de dias de un mes */
function RetornaDias(Mes, Ano)
{
	var ar = new Array(12)
	ar[0] = 31 // enero
	ar[1] = (AnoBisiesto(Ano)) ? 29 : 28 // Febrero 
	ar[2] = 31 // Marzo
	ar[3] = 30 // Abril
	ar[4] = 31 // Mayo
	ar[5] = 30 // Junio
	ar[6] = 31 // Julio
	ar[7] = 31 // Agosto
	ar[8] = 30 // Septiembre
	ar[9] = 31 // Octubre
	ar[10] = 30 // Noviembre
	ar[11] = 31 // Diciembre
return ar[Mes]
}// fin RetornaDias

function isDate(s) 
{
	var partsDate

    if (isEmpty(s)) 
       if (isDate.arguments.length == 1) return defaultEmptyOK;
       else return (isDate.arguments[1] == true);
	   	
	partsDate = s.split("/");
	if (partsDate.length == 3 && isInteger(partsDate[0]) && isInteger(partsDate[1]) && isInteger(partsDate[2]))
		if (partsDate[0] > 0 && partsDate[1] > 0 && partsDate[2] > 1901 && partsDate[2] <=  9998)
			if (partsDate[1] > 12)
				return false;
			else 
				if (partsDate[0] > RetornaDias((partsDate[1]-1), partsDate[2]))
					return false;
				else
					return true;
		else
			return false;
	else
		return false;
}
	
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(pPrompt + s)
    return false
}

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 == isEmail ) msg = pEmail;
        if( theFunction == isPhoneNumber ) msg = pPhoneNumber;
        if( theFunction == isName ) msg = pName;
		if( theFunction == isAddress ) msg = pAddress;
		if( theFunction == isDate ) msg = pDate;
		if( theFunction == isTime ) msg = pTime;		
		if( theFunction == isDigit ) msg = pNumber;				
    }

    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);
}

//	Devuelve el digito verificador

function DigitoVerificador(n)
{
  base = 11;
  j=0;
  sum=0;
  sts=0;
  if(base<=0) return(-1);
  for(i=n.length-1;i>=0;i--)
  {
     sum += (n.substring(i,i+1)-'0')*((j++)%6 + 2);
  } 
  sts = base - sum % base ;

  if(sts == 11) sts = 0 ;
  return(sts);
}


//	Valida el rut, rotorna un valor booleano

function isValidRut(rut, dv)
{
	if(	rut.value.length < 6)
	{
		warnInvalid(rut, "Error: RUT No válido") ;
		return false ;
	}
		
	if (checkField (rut, isInteger, false, "Error: RUT No válido"))
	{
		if ((dv.value == 'k') || (dv.value == 'K') )
			dd = 10 ;
		else if (checkField (dv, isInteger, false, "Error: Dígito verificador No válido"))
				dd = dv.value ;
			else
				return false ;

		if (dd == DigitoVerificador(rut.value))
			return true ;

		warnInvalid(rut, "Error: RUT No válido") ;
		return false ;
	}
	return false ;
}

// permite validar el patron enviado

function ValidaPatron(Patron,theField,mensaje)
{
	var Valido 	= true;
	var Estado1	= false;
	var Estado2	= false;
	var	texto  	= theField.value;
	
	if(texto.length == 0) 
	{
		warnInvalid(theField, mMessage);
		return false;
	}

	for (i = 0;  i < texto.length;  i++)
	{
		var Valido2	= false;
		for (j = 0;  j < Patron.length;  j++)
		{
			if (texto.charAt(i) == Patron.charAt(j))
			{
				if(Patron.charAt(j)=="@"&&Estado1==true)
				{
					Estado2=true;
				}
				if(Patron.charAt(j)=="@"&&Estado1==false)
				{
					Estado1=true;
				}	
			Valido2=true;
			break;
			}
		}                       
		if (Valido2==false || Estado2==true)
		{
			Valido=false;
			break;
		}
	}
	if (!Valido)
	{
		warnInvalid(theField, "Error:" + mensaje);
		return (false);
	}
	return (true);
}

// Despliega la pagina que muestra los videos en banda ancha
function Ventana220(s)
{
window.open("../../vid/video220.asp?sNomVid=" + s, "video","width=410,height=420,alwaysraised=yes,scrollbars=no,menubar=no,scrolbar=0,toolbar=0,status=no");
}

// Despliega la pagina que muestra los videos con modem
function Ventana56(s)
{
window.open("../../vid/video56.asp?sNomVid=" + s, "video","width=280,height=300,alwaysraised=yes,scrollbars=no,menubar=no,scrolbar=0,toolbar=0,status=no");
}

function ventana(url, w_name, rs, w, h, t, l) 
{
	var resize = "";
	if (rs) 
	{
		resize = "resizable,";
	}
	popupWin = window.open(url, w_name, 'scrollbars=no,menubar=no,' + resize + ',width=' + w + ',height=' + h + ',top=' + t + ',left=' + l);
	popupWin.focus();
}

function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_findObj(n, d) { //v3.0
  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_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}

// valida que fecha1 no sea mayor que fecha2 
// Recibe fechas con los siguentes formatos posibles :
// dd/mm/yyyy - d/m/yyyy - dd/m/yyyy - d/mm/yyyy 
function FechaMayor(Fecha1 , Fecha2 ,mensaje)
{
 var partsDate
 var AMDFecha1 , AMDFecha2
 
 var strFecha2 = Fecha2
 var strFecha1 = Fecha1
//Fecha2 
partsDate = strFecha2.split("/");
if (partsDate[2].length < 2) 
   partsDate[2]= "0"  + partsDate[2]

if (partsDate[1].length < 2) 
   partsDate[1]= "0"  + partsDate[1]

if (partsDate[0].length < 2) 
   partsDate[0]= "0"  + partsDate[0]

AMDFecha2 = partsDate[2] + partsDate[1] + partsDate[0]    

//Fecha1
partsDate = strFecha1.split("/");
if (partsDate[2].length < 2) 
   partsDate[2]= "0"  + partsDate[2]

if (partsDate[1].length < 2) 
   partsDate[1]= "0"  + partsDate[1]

if (partsDate[0].length < 2) 
   partsDate[0]= "0"  + partsDate[0]

AMDFecha1= partsDate[2] + partsDate[1] + partsDate[0]    	

if 	(AMDFecha1 > AMDFecha2) 
{
	alert ("Error:" + mensaje)
	return (false);
}
return (true);

}




// valida que fecha1 no sea mayor que fecha2 
// Recibe fechas con los siguentes formatos posibles :
// dd/mm/yyyy - d/m/yyyy - dd/m/yyyy - d/mm/yyyy 
function FechaMayor1(Fecha1 , Fecha2 ,mensaje)
{
 var partsDate
 var AMDFecha1 , AMDFecha2
 
 var strFecha2 = Fecha2
 var strFecha1 = Fecha1
//Fecha2 
partsDate = strFecha2.split("/");
if (partsDate[2].length < 2) 
   partsDate[2]= "0"  + partsDate[2]

if (partsDate[1].length < 2) 
   partsDate[1]= "0"  + partsDate[1]

if (partsDate[0].length < 2) 
   partsDate[0]= "0"  + partsDate[0]

AMDFecha2 = partsDate[2] + partsDate[1] + partsDate[0]    

//Fecha1
partsDate = strFecha1.split("/");
if (partsDate[2].length < 2) 
   partsDate[2]= "0"  + partsDate[2]

if (partsDate[1].length < 2) 
   partsDate[1]= "0"  + partsDate[1]

if (partsDate[0].length < 2) 
   partsDate[0]= "0"  + partsDate[0]

AMDFecha1= partsDate[2] + partsDate[1] + partsDate[0]    	

if 	(AMDFecha1 > AMDFecha2) 
	return (true);
return (false);

}




// 
// Verifica si fecha1 es menor que fecha2
// 
function FechaMenor(Fecha1 , Fecha2)
{
 var partsDate
 var AMDFecha1 , AMDFecha2
 
 var strFecha2 = Fecha2
 var strFecha1 = Fecha1
//Fecha2 
partsDate = strFecha2.split("/");
if (partsDate[2].length < 2) 
   partsDate[2]= "0"  + partsDate[2]

if (partsDate[1].length < 2) 
   partsDate[1]= "0"  + partsDate[1]

if (partsDate[0].length < 2) 
   partsDate[0]= "0"  + partsDate[0]

AMDFecha2 = partsDate[2] + partsDate[1] + partsDate[0]    

//Fecha1
partsDate = strFecha1.split("/");
if (partsDate[2].length < 2) 
   partsDate[2]= "0"  + partsDate[2]

if (partsDate[1].length < 2) 
   partsDate[1]= "0"  + partsDate[1]

if (partsDate[0].length < 2) 
   partsDate[0]= "0"  + partsDate[0]

AMDFecha1= partsDate[2] + partsDate[1] + partsDate[0]    	

if 	(AMDFecha1 < AMDFecha2) 
{
	return (true);
}
return (false);

}


//-- valida la estructura de la direccion Email
function EstructuraEmail(s)
{
    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;
}
//------Valida Estructura del Telefono------
function EstructuraTelefono (s)
{  var modString;
   modString = stripCharsInBag( s, phoneChars );
   return (isInteger(modString))
}
//-----Valida Estructura Direccion-------------- 
function EstructuraDireccion (s)
{
    return( isAlphanumeric( stripCharsInBag( s, whitespace ) ) || isAlphanumeric( stripCharsInBag( s, whiteSpaceAndSpecialChars ) ));
}
//-- Valida la estructura de un nombre ---------
function esNombre (s)
{
 return( isAlphanumeric( stripCharsInBag( s, whitespace ) ) || isAlphanumeric( stripCharsInBag( s, whiteSpaceAndPoint ) ));
}
//----------------------------------------------

function isNumDec (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 previousField( field ) {
    var f = formField(field);
    for (var i = 0; i < f.length; i++)
        if (f.elements[i] == field)
            break;
    return (i > 0 && i < f.length) ? f.elements[i-1] : null;
}


function getRadioButtonValue( radio ) {
var exito = false;
    for (var i = 0; i < radio.length; i++)
        if (radio[i].checked)
		{
			exito = true;
            break;
		}
	if ( exito )		
	    return radio[i].value;
	else
		return -1;
}

/*
 * Validaciones de Tarjetas de Crédito
 */

function isCreditCard( s ) {
//	alert(s)
    if (s.length > 19)
        return false;
    var sum = 0;
    var mul = 1;
    for (var i = 0; i < s.length; i++) {
        var digit = s.substring(s.length-i-1,s.length-i);
        var tprod = parseInt(digit,10)*mul;
        if (tprod >= 10)
            sum += (tprod % 10) + 1;
        else
            sum += tprod;
        if (mul == 1)
            mul++; //2
        else
            mul--; //1
    }
//alert(sum % 10)
   return sum % 10 == 0
}

function isVisa( cc ) {
    if (cc.length < 11 || cc.length > 19)
        return false;
    dig1 = cc.substring(0,1);
    return (dig1 == "4" && isCreditCard(cc));
}

function isMasterCard( cc ) {
    if (cc.length < 11 || cc.length > 19)
        return false;
    dig1 = cc.substring(0,1);
    dig2 = cc.substring(1,2);
    return (dig1 == "5" && dig2 >= "1" && dig2 <= "5" && isCreditCard(cc));
}

function isAmericanExpress( cc ) {
    if (cc.length < 11 || cc.length > 19)
        return false;
    dig1 = cc.substring(0,1);
    dig2 = cc.substring(1,2);
    return (dig1 == "3" && (dig2 == "4" || dig2 == "7") && isCreditCard(cc));
}

function isDinersClub( cc ) {
    if (cc.length != 14)
        return false;
    dig1 = cc.substring(0,1);
    dig2 = cc.substring(1,2);
    return (dig1 == "3" && (dig2 == "0" || dig2 == "6" || dig2 == "8") && isCreditCard(cc));
}

function isMagna( cc ) {
    if (cc.length != 16)
        return false;
    prefix = cc.substring(0,6);
//alert(prefix)
    return ((prefix == "560359" || prefix == "567139" || prefix == "567229" || prefix == "568009")
          && isCreditCard(cc));
}

function isAccount( ca ) {
    if (ca.length < 5 || ca.length > 20)
        return false;
    return isInteger(ca);
}

function isCardMatch( cardType, cardNumber ) {
   	cardType = cardType.toUpperCase();

//alert(cardType)

//alert(parseInt(cardType,10))

    if (cardType == "VIS" || parseInt(cardType,10) == 5 )
        return isVisa(cardNumber);
    if (cardType == "MST" || parseInt(cardType,10) == 4 )
        return isMasterCard(cardNumber);
    if (cardType == "AMX" || parseInt(cardType,10) == 1 )
        return isAmericanExpress(cardNumber);
    if (cardType == "DNR" || parseInt(cardType,10) == 2 )
        return isDinersClub(cardNumber);
    if (cardType == "MGN" || parseInt(cardType,10) == 3 )
        return isMagna(cardNumber);
    if (cardType == "CTE" )
        return isAccount(cardNumber);
    if (cardType == "VTA" )
        return isAccount(cardNumber);
    return false;
}


function ComparaFechaHora(Fecha1, Hora1, Comparacion, Fecha2, Hora2)
{

	 var partsDate
	 var AMDFecha1 , AMDFecha2
	 var partsHora

	//Fecha1 
	partsDate = Fecha1.split("/");
	if (partsDate.length < 3) 
		partsDate = Fecha1.split("-");
	
	if (partsDate[1].length < 2) 
	   partsDate[1]= "0"  + partsDate[1]

	if (partsDate[0].length < 2) 
	   partsDate[0]= "0"  + partsDate[0]

	//Hora1 
	partsHora = Hora1.split(":"); 


	AMDFecha1 = partsDate[2] + partsDate[1] + partsDate[0] +  partsHora[0] +  partsHora[1] 

	//Fecha2
	partsDate = Fecha2.split("/");
	if (partsDate.length < 3) 
		partsDate = Fecha2.split("-");
		
	if (partsDate[1].length < 2) 
	   partsDate[1]= "0"  + partsDate[1]

	if (partsDate[0].length < 2) 
	   partsDate[0]= "0"  + partsDate[0]
	
	//Hora2
	partsHora = Hora2.split(":");

	AMDFecha2 = partsDate[2] + partsDate[1] + partsDate[0] +  partsHora[0] +  partsHora[1]


	if (Comparacion == "<")
	{
		if(AMDFecha1 <  AMDFecha2)
			return true;
	}
	else
	{
		if (Comparacion == ">")	
		{
			if(AMDFecha1 >  AMDFecha2)
				return true;
		}
		else
		{
			if(AMDFecha1 ==  AMDFecha2)
				return true;
		}
	}
	return false;

}

function LTrim(s)
{ 
var i=0; 
var j=0; 

for(i=0; i<=s.length-1; i++) 
	if(s.substring(i,i+1) != ' ')
	{ 
		j=i; break; 
	} 
	return s.substring(j, s.length); 
} 

function RTrim(s)
{ 
var j=0; 

for(var i=s.length-1; i>-1; i--) 
	if(s.substring(i,i+1) != ' ')
	{ 
		j=i; break; 
	} 
	return s.substring(0, j+1); 
} 

function Trim(s)
{ 
	return LTrim(RTrim(s)); 
} 

function Len(s)
{ 
	return s.length; 
}



function RestaFechas(Fecha1, Hora1, Fecha2, Hora2)
{
	 var partsDate
	 var AMDFecha1 , AMDFecha2
	 var partsHora

	//Fecha1 
	partsDate = Fecha1.split("/");
	if (partsDate.length < 3) 
		partsDate = Fecha1.split("-");
	
	if (partsDate[1].length < 2) 
	   partsDate[1]= "0"  + partsDate[1]

	if (partsDate[0].length < 2) 
	   partsDate[0]= "0"  + partsDate[0]

	//Hora1 
	partsHora = Hora1.split(":"); 
	AMDFecha1 = partsDate[2] + partsDate[1] + partsDate[0] +  partsHora[0] +  partsHora[1] 

	//Fecha2
	partsDate = Fecha2.split("/");
	if (partsDate.length < 3) 
		partsDate = Fecha2.split("-");
		
	if (partsDate[1].length < 2) 
	   partsDate[1]= "0"  + partsDate[1]

	if (partsDate[0].length < 2) 
	   partsDate[0]= "0"  + partsDate[0]

	//Hora2
	partsHora = Hora2.split(":");
	AMDFecha2 = partsDate[2] + partsDate[1] + partsDate[0] +  partsHora[0] +  partsHora[1]

	resultado = (AMDFecha1 - AMDFecha2)

	if (resultado < 100)	
		return true;
	return false;

}
