/*****************************************************************************************
 Fecha de Creación : Jul 11/2002
.........................................................................................
 Autor : Fernando Robles
.........................................................................................
 Propósito : Validar que el número de un celular tenga el formato correcto
.........................................................................................
 Entradas : Nombre del control que contiene el dato a validar
.........................................................................................
 Salidas :	- true : Si el número de celular tiene el formato correcto
			- false : Si el número de celular NO tiene el formato correcto
.........................................................................................
 Consideraciones: 
	- Para que la función se comporte adecuadamente, se requiere que el control donde
	está el número del celular tenga el atributo MAXLENGTH = "10"
	- Se valida que:
		+ El número celular no sea vacío
		+ El número celular sea numérico
		+ El número celular tenga 10 dígitos
		+ Si el número celular tiene 10 dígitos, los tres primeros estén entre 315 y 319
*****************************************************************************************/
function Pro_Val_Celular(str_nom_control)
	{
	str_num_celular = eval("strTrim(" + str_nom_control + ".value,TRIM_BOTH);");
	int_tam_celular = str_num_celular.length;
	
	// Validar que el número de celular no sea vacío
	if (int_tam_celular == 0)
		{
		alert("Por favor ingrese el número de su celular");
		eval(str_nom_control + ".focus();");
		return false;
		}
	else
		{
		// Validar que el campo sea numérico
		bln_numerico = isNumeric(str_num_celular);
		if (!bln_numerico)
			{
			alert("El número de su celular debe contener sólo caracteres numéricos");
			eval(str_nom_control + ".focus();");
			return false;
			}
	
		// Validar que el número celular contenga 10 caracteres
		if (int_tam_celular < 10)
			{
			alert("El número celular no está completo.\n\nRecuerde que debe digitar 315 + su número celular");
			eval(str_nom_control + ".focus();");
			return false;
			}
		// Validar que si el número celular tiene 10 dígitos, 
		//los 3 primeros estén entre 315 y 319
		else
			{
			str_primeros = str_num_celular.substr(0,3);
			int_primeros = parseInt(str_primeros,10);
			if ((int_primeros < 315) || (int_primeros > 319))
				{
				alert("Los tres primeros dígitos de su número celular deben estar entre 315 y 319");
				eval(str_nom_control + ".focus();");
				return false;
				}
			}
			
		}
		
	return true;
	}

/*****************************************************************************************'Fecha : Mayo 28/2001'.........................................................................................'Descripcion:'		Verifica que una cadena contenga únicamente caracteres numéricos.'		Retorna "true" ó "false" según sea el caso'.........................................................................................'Parametros:'		- str : Cadena que se quiere evaluar'.........................................................................................'Validaciones: '		- Ninguno de los caracteres que componen la cadena debe ser diferente de los'		  caracteres de la lista "0123456789"*****************************************************************************************/function isNumeric(str)	{	for (var i=0; i < str.length; i++) 		{		var ch = str.substring(i, i+1);		if(ch < "0" || ch > "9") 			{			return false;			}		}		return true;	}
	
/*****************************************************************************************'Fecha : Jul 12/2002'.........................................................................................'Descripcion:'		Verifica que una cadena no contenga caracteres numéricos.'		Retorna "true" ó "false" según sea el caso'.........................................................................................'Parametros:'		- str : Cadena que se quiere evaluar'.........................................................................................'Validaciones: '		- Todoslos caracteres que componen la cadena deben ser diferentes de los'		  caracteres de la lista "01234546789",
*****************************************************************************************/function isAlphabetic(str)	{
	bln_perfect = true;
	str_car_invalidos = "0123456789"	for (var i=0; i < str.length; i++) 		{		str_chr = str.substring(i, i+1);
		if (str_car_invalidos.indexOf(str_chr) >= 0)			{			bln_perfect = false;
			i = str.length;			}		}		return bln_perfect;	}
	
/*****************************************************************************************'Fecha : Febrero 15/2000'.........................................................................................'Descripcion:'		Valida una fecha que viene descompuesta en Año, Mes y Dia'		Retorna "true" ó "false" según sea el caso'.........................................................................................'Parametros:'		Todos los parámetros son convertidos a enteros, dentro de la función, antes de '		proceder a validarlos'		Anno: Año a validar '		Mes: Mes a validar '		Dia: Dia a validar '		Dato: Nombre del Dato que se está validando, para personalizar los mensajes'.........................................................................................'Validaciones:'		Valida fechas de años bisiestos (de Febrero) y, que el dia sea valido dentro del'		mes elegido*****************************************************************************************/function ValidarFecha(Anno, Mes, Dia, Dato) 	{	var intAnno = parseInt(Anno);	var intMes = parseInt(Mes);	var intDia = parseInt(Dia);	// Validar que los valores no sean igual a cero	if ((Anno == 0) || (Mes == 0) || (Dia == 0)) 		{		alert('Por favor seleccione los valores para el mes, el día y el año de ' + Dato);		return false;		}	// Validar que, en un año NO bisiesto, el número de días del mes de Febrero no sea mayor que 28	if (((intAnno % 4) != 0) && (intMes == 2) && (intDia > 28)) 		{		alert('El mes de Febrero no puede contener más de 28 días, para el año seleccionado.\n\nPor favor, corrija la información de ' + Dato);		return false;		}	
	// Validar que, en un año bisiesto, el número de días del mes de Febrero no sea mayor que 29	if (((intAnno % 4) == 0) && (intMes == 2) && (intDia > 29)) 		{		alert('El mes de Febrero no puede contener más de 29 días.\n\n Por favor, corrija la información de ' + Dato);		return false;		}	// Validar que el dia sea válido para el mes elegido, no mayor que 30	if ( ((intMes == 4) || (intMes == 6) || (intMes == 9) || (intMes == 11)) && (intDia > 30) ) 		{		alert('El mes seleccionado sólo contiene 30 días.\n\nPor favor, corrija la información de ' + Dato);		return false;		}	return true;	}
/*****************************************************************************************
'Descripcion: Función que hace el salto a una pagina dependiendo si el
'             browser es Netscape.		
'.........................................................................................
'Parametros: Versiones, direccion Url.		
*****************************************************************************************/
function MM_checkBrowser(NSvers,NSpass,NSnoPass,IEvers,IEpass,IEnoPass,OBpass,URL,altURL) 
	{ //v3.0
	var newURL='', verStr=navigator.appVersion, app=navigator.appName, version = parseFloat(verStr);
	if (app.indexOf('Netscape') != -1) 
		{
		if (version >= NSvers) {if (NSpass>0) newURL=(NSpass==1)?URL:altURL;}
		else {if (NSnoPass>0) newURL=(NSnoPass==1)?URL:altURL;}
		} 
	else if (app.indexOf('Microsoft') != -1) 
		{
		if (version >= IEvers || verStr.indexOf(IEvers) != -1)
			{if (IEpass>0) newURL=(IEpass==1)?URL:altURL;}
		else {if (IEnoPass>0) newURL=(IEnoPass==1)?URL:altURL;}
		} 
	else if (OBpass>0) newURL=(OBpass==1)?URL:altURL;
	if (newURL) { window.location=unescape(newURL); document.MM_returnValue=false; }
	}

/*------------------------------------------------------------------------*/	
function MM_openBrWindow(theURL,winName,features) { //v2.0
  window.open(theURL,winName,features);
}

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_showHideLayers() { //v3.0
  var i,p,v,obj,args=MM_showHideLayers.arguments;
  for (i=0; i<(args.length-2); i+=3) if ((obj=MM_findObj(args[i]))!=null) { v=args[i+2];
    if (obj.style) { obj=obj.style; v=(v=='show')?'visible':(v='hide')?'hidden':v; }
    obj.visibility=v; }
}

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_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];}
}

/*****************************************************************************************
 Fecha de Creación : Dic 17/2001
.........................................................................................
 Autor : Fernando Robles
.........................................................................................
 Propósito : Verificar si, de un conjunto de Radio Buttons que 
		están TODOS bajo el mismo name se escoje al menos uno de ellos
.........................................................................................
 Entradas :
		- par_nombre_control : Nombre del Control bajo el cual están los Radio Buttons
.........................................................................................
 Salidas : - Retorna TRUE si alguno de los Radio Buttons está seleccionado,
			 de lo contrario retorna FALSE
.........................................................................................
 Consideraciones:	
*****************************************************************************************/
function Validar_Radio(par_nombre_control)
	{
	var_band = 0
	eval("var_nro_obj = " + par_nombre_control + ".length;");
	if (var_nro_obj > 0)
		{
		for (g=0; g<var_nro_obj; g++)
			{
			if (eval(par_nombre_control + "[" + g + "].checked"))
				{
				var_band = 1;
				}
			}
		}
	else
		{
		if (eval(par_nombre_control + ".checked"))
			{
			var_band = 1;
			}
		}
			
	if (var_band == 0)
		{
		//alert("Debes seleccionar " + par_nom_dato + " \n\nPor favor suministra la información");
		return false;
		}
		
	return true;
	}

/*****************************************************************************************
'Descripcion:
'		Recibe una cadena y la retorna sin espacios vacíos a la derecha, a la izquierda
'		ó a ámbos lados, según se especifique
'.........................................................................................
'Parametros:
'		varText: Texto al cual se le quieren eliminar los espacios en blanco
'		side: Constante que indica de qué lado se le quieren eliminar los espacios, así:
'			TRIM_LEFT --> Eliminar espacios a la izquierda
'			TRIM_RIGHT --> Eliminar espacios a la derecha
'			TRIM_BOTH --> Eliminar espacios a ambos lados
'.........................................................................................
'Validaciones:
*****************************************************************************************/
var TRIM_LEFT  = 0x0001;
var TRIM_RIGHT = 0x0002;
var TRIM_BOTH  = TRIM_LEFT | TRIM_RIGHT;

function strTrim( varText, side )
	{
	var i = 0;
	var j = varText.length - 1;

	if( side & TRIM_LEFT )
		{
		for( i = 0; i < varText.length; i++ )
			{
			if( varText.substring( i, i+1 ) != " " && varText.substring( i, i+1 ) != "\t")
				{
				break;
				}
			}
		}

	if( side & TRIM_RIGHT )
		{
		for( j = varText.length - 1; j >= 0; j-- )
			{
			if( varText.substring( j, j+1 ) != " " && varText.substring( j, j+1 ) != "\t")
				{
				break;
				}
			}
		}

	if( i <= j )
		return( varText.substring( i, (j+1) ) );
	else
		return("");
	}

/*****************************************************************************************
'Fecha : Mayo 28/2001
'.........................................................................................
'Descripcion:
'		Verifica que una cadena corresponda a un número de celular válido
'.........................................................................................
'Entradas :
'		- q : Cadena que se quiere evaluar
'		- str_validos : Cadena que contiene (separados por comas) los números por los 
'		  que puede empezar al celular
'.........................................................................................
'Salidas :
'		- "No es numérico" : Si contiene caracteres diferentes a números
'		- "No empieza bien" : Si el primer número es diferente a los que vienen en la 
'		  cadena "str_validos"
'.........................................................................................
'Validaciones: 
'		- Ninguno de los caracteres que componen la cadena debe ser diferente de los
'		  caracteres de la lista "0123456789"
'		- El número debe empezar por uno de los números descritos en la cadena de entrada
'		  "str_validos"
*****************************************************************************************/
function Val_Num_Celular(q, str_validos)
 {
	var test = true;
	inputStr = q.toString();
	for (var i = 0; i < inputStr.length; i++)
		{
		var oneChar = inputStr.charAt(i);			
		if (oneChar < "0" || oneChar > "9")
			{
			test = false;
			}
		}
		
	if (!test)
		{
		return "No es numérico";
		}
	
	str_val = str_validos.toString();
	arr_val = str_val.split(",");
	int_num_val = arr_val.length;
	
	bln_bandera = false;
	str_caracter = q.charAt(0);
		
	for (k = 0; k < int_num_val; k++)
		{
		if (str_caracter == arr_val[k])
			{
			bln_bandera = true;
			k = int_num_val;
			}
		}
		
	if (!bln_bandera)
		{
		return "No empieza bien";
		}
	
	return "OK"
 }

/*****************************************************************************************
'Descripcion:
'		Funcion para validar que el texto ingresado en un campo texto,
'		corresponda a una dirección válida de correo (e-mail)
'.........................................................................................
'Parametros:
'		Campo:		Control con el valor a validar
'		Mensaje:	Cadena con el nombre descriptivo del control, usada para mostrar
'					un mensaje personalizado.
'.........................................................................................
'Validaciones:
'		- Los caracteres que contiene la cuenta de correo deben estar dentro de la siguiente lista
'			"0123456789abcdefghijlkmnopqrstuvwxyz@.-_"
'		- El primer y último caracter no pueden ser alguno de los caracteres "@.-_"
'		- Los caracteres anterior y posterior a la arroba (@), no pueden ser "@.-_"
'		- La cadena NO puede contener más de una arroba (@)
'		- La cadena debe contener al menos UNA arroba (@)
'		- La cadena NO puede contener espacios vacíos (" ")
'		- Después del último punto, debe haber AL MENOS 2 caracteres
*****************************************************************************************/
function ValidarEmail(Campo, Mensaje)
	{
	var perfect = true;

	with (Campo)
		{
		// Validar que los caracteres que contiene la cuenta de correo
		// estén dentro de los caracteres de la siguiente lista
		var car_validos = "0123456789abcdefghijlkmnopqrstuvwxyz@.-_"
		var car_otros = "@.-_";

		for (var i=0; i < value.length; i++) {
			var ch = value.substring(i, i+1);
			if (car_validos.indexOf(ch) == -1) perfect = false;
		}

		apos = value.indexOf("@");
		lastpos = value.length-1;

		// Validar primer y último caracter (No deben ser ninguno de los caracteres especiales)
		var car1 = value.substring(0, 1);
		var car2 = value.substring(lastpos, lastpos+1);
		if ((car_otros.indexOf(car1) != -1) || (car_otros.indexOf(car2) != -1)) perfect = false;

		// Validar anterior y siguiente caracter despues de "@" (No deben ser ninguno de los caracteres especiales)
		car1 = value.substring(apos-1, apos);
		car2= value.substring(apos+1, apos+2);
		if ((car_otros.indexOf(car1) != -1) || (car_otros.indexOf(car2) != -1)) perfect = false;

		// Buscar si existe otro simbolo "@" en el campo
		var subcadena = value.substring(apos + 1, 100);
		a2pos = subcadena.indexOf("@");
		spacepos = value.indexOf(" ");
		dotpos = value.lastIndexOf(".");

		//if (apos < 1 || a2pos != -1 || dotpos - apos < 2 || lastpos - dotpos > 3 || lastpos - dotpos < 2 || spacepos != -1) {
		if (apos < 1 || a2pos != -1 || dotpos - apos < 2 || lastpos - dotpos < 2 || spacepos != -1) perfect = false;
		}

	if (!perfect) 
		{
		alert('\nEl valor de ' + Mensaje + ' no corresponde a un E-mail válido.\n\nPor favor corrija la información.');
		Campo.focus();
		return false;
		}

	return true;

	}
