

//-------------------------------------------------------------------------------------------------------
//Archivo primario donde estan las funciones de validación que serán
//llamadas por las funciones del archivo validacion.js
//-------------------------------------------------------------------------------------------------------






//--------------validacion por Mascara------------------

/*
'*' - Any Character 
'#' - Numbers 0-9 
'?' - Any Punctation Character 
'A' - 'A' thru little 'z' 
*/

function anyMask(event, sMask) {
	//var sMask = "**?##?####";
	var KeyTyped = String.fromCharCode(getKeyCode(event));
	var targ = getTarget(event);
	
	keyCount = targ.value.length;
	//alert(sMask.charAt(keyCount));
	
	if (sMask.charAt(keyCount) == '*')
 	   	return true;
 
	if (sMask.charAt(keyCount) == KeyTyped)
    	{
		return true;
	}
	
	if ((sMask.charAt(keyCount) == '#') && isNumeric(KeyTyped)) 
	   return true; 
	
	if ((sMask.charAt(keyCount) == 'A') && isAlpha(KeyTyped))
         return true; 

	if ((sMask.charAt(keyCount) == '?') && isPunct(KeyTyped))
         return true; 

	if ((sMask.charAt(keyCount) == '~') && isNumericOrAlpha(KeyTyped))
         return true; 
    
	if (KeyTyped.charCodeAt(0) < 32) return true;
    
    return false;	   
   
	
}

 function getTarget(e) {
  // IE5
   if (e.srcElement) {
   	return e.srcElement;
   }
    if (e.target) {
   	return e.target;
   }	
 }

  function getKeyCode(e) {
 //IE5
 if (e.srcElement) {
 	return e.keyCode
 }
  // NC5
  if (e.target) {
   return e.which
  }
 }

 function isNumeric(c)
{
	var sNumbers = "01234567890";
	if (sNumbers.indexOf(c) == -1)
		return false;
	else return true;
	
}  

function isAlpha(c)
{
	var lCode = c.charCodeAt(0);
	if ((lCode >= 65 && lCode <= 90) || (lCode >= 97 && lCode <= 122))
 	  {	
		return true;
         }
	else 
	return false;
}  

function isNumericOrAlpha(d)
{
	return (isAlpha(d) || isNumeric(d));

}  


function isPunct(c)
{
	var lCode = c.charCodeAt(0);
	if (lCode >= 32 && lCode <= 47 )
 	  {	
		return true;
         }
	else 
	return false;

}
 
//---------------termina validacion por Máscara------------------------







//-------------------------------------------------------------------------------
//funciones generales de validación de objetos. requieren de una variable bandera
//que tenga el valor de 0 cuando no sea valido el mandar el formulario y 1 cuando si lo sea.
//-------------------------------------------------------------------------------

//recibe una cadena con el nombre del objeto textfield correspondiente
//,tambíen la bandera 'check' y finalmente una cadena con el mensaje de alerta a desplegar.
//Regresa un 1 si paso la validacion. Regresa un 0 si no la paso
function validacion_textfield_nulo(obj_textfield, check, alerta){
	
	if(check==1 && obj_textfield.value=="")
	{
	if(alerta!="")
	{
		alert(alerta);
		obj_textfield.focus();
	}
	return 0;
	}else{
		if(check==1){
			return 1;
		}else{
			return 0;
		}
	}
	
}

//recibe una cadena con el nombre del objeto checkbox correspondiente
//,tambíen la bandera 'check' y finalmente una cadena con el mensaje de alerta a desplegar.
//Regresa un 1 si paso la validacion. Regresa un 0 si no la paso
function validacion_checkbox_nulo(obj_checkbox, check, alerta){
	
	if(check==1 && !obj_checkbox.checked)
	{
	alert(alerta);
	obj_checkbox.focus();
	return 0;
	}else{
		if(check==1){
			return 1;
		}else{
			return 0;
		}
	}

}

//NOTA: verifica como NO valido los valores '0' o vacio, asi es que evite usar el '0' dentro de los valores validos para el objeto listmenu
//recibe una cadena con el nombre del objeto listmenu correspondiente
//,tambíen la bandera 'check' y finalmente una cadena con el mensaje de alerta a desplegar.
//Regresa un 1 si paso la validacion. Regresa un 0 si no la paso
function validacion_listmenu_nulo(obj_listmenu, check, alerta){
	
	if(check==1 && (obj_listmenu.value=="" || obj_listmenu.value==0))
	{
	if(alerta!="")
	{
		alert(alerta);
		obj_listmenu.focus();
	}
	return 0;
	}else{
		if(check==1){
			return 1;
		}else{
			return 0;
		}
	}

}


//este radio puede tener la cantidad que sea de elementos siempre y cuando se pase su magnitud como argumento
//recibe un arreglo con el nombre del objeto radio correspondiente y su magnitud
//,tambíen la bandera 'check' y finalmente una cadena con el mensaje de alerta a desplegar.
//Regresa un 1 si paso la validacion. Regresa un 0 si no la paso
function validacion_radio_nulo(obj_radio, cantidad_elementos, check, alerta){
	
	if(check==1)
	{
		contador_cantidad_falsos = 0;
		for(i=0;i<cantidad_elementos;i++){		
			if(obj_radio[i].checked==false)
			{
				contador_cantidad_falsos++;
			}
		}
		if(contador_cantidad_falsos==cantidad_elementos){
			alert(alerta);
			obj_radio[0].focus(); //se enfoca en el primer elemento del radio
			return 0;
		}else{
			return 1;
		}
	}else{
		return 0;
	}

}

//recibe una cadena con el nombre del objeto textfield correspondiente
//, el tamaño maximo deseado, tambíen la bandera 'check' y finalmente una cadena con el mensaje de alerta a desplegar.
//Regresa un 1 si paso la validacion. Regresa un 0 si no la paso
function validacion_textfield_maximo_tamano(obj_textfield, tamano, check, alerta){
	
	if(check==1 && obj_textfield.value.length>tamano)
	{
	alert(alerta);
	obj_textfield.focus();
	return 0;
	}else{
		if(check==1){
			return 1;
		}else{
			return 0;
		}
	}
	
}

//recibe una cadena con el nombre del objeto textfield correspondiente
//, el tamaño mínimo deseado, tambíen la bandera 'check' y finalmente una cadena con el mensaje de alerta a desplegar.
//Regresa un 1 si paso la validacion. Regresa un 0 si no la paso
function validacion_textfield_minimo_tamano(obj_textfield, tamano, check, alerta){
	
	if(check==1 && obj_textfield.value.length<tamano)
	{
	alert(alerta);
	obj_textfield.focus();
	return 0;
	}else{
		if(check==1){
			return 1;
		}else{
			return 0;
		}
	}
	
}


//recibe una cadena con el nombre del objeto textfield (email) correspondiente
//,, tambíen la bandera 'check' y finalmente una cadena con el mensaje de alerta a desplegar.
//Regresa un 1 si paso la validacion. Regresa un 0 si no la paso

//falta validar que no aparezcan más de dos arrobas (@) en un mail y que no se permitan tipo aa@.a donde la @ tenga inmediatamente después el punto
function validacion_textfield_email(obj_textfield, check, alerta){
	
if(check == 1){ //if más externo 1
	if(obj_textfield.value=="" || obj_textfield.value.length<5){ //if 2
	alert(alerta);
	obj_textfield.focus();
	return 0;
	}else{ //if 2
		if(obj_textfield.value.indexOf("@")==(-1)){ //if 3
		alert(alerta);
		obj_textfield.focus();
    	return 0;
		}else{ //if 3
	    	if(obj_textfield.value.indexOf(".")==(-1)){ //if 4
			alert(alerta);
			obj_textfield.focus();
			return 0;
    		}else{ //if 4
    			if(obj_textfield.value.indexOf(".")<=obj_textfield.value.indexOf("@")){ //if 5
				alert(alerta);
				obj_textfield.focus();
				return 0;
    			}else{ //if 5
					return 1;
				} //if 5
			} //if 4
		} //if 3
	} //if 2
	
}else{ //if más externo 1
	return 0;
} 
			
}  //cierre de la funcion
	

//compara dos campos del tipo textfield sean iguales. Regresa un 1 si son iguales, sino lo son regresa un 0 
function validacion_textfield_iguales(obj_textfield, obj_textfield_2, check, alerta){

	if(check==1)
	{
		if(obj_textfield.value != obj_textfield_2.value){
			alert(alerta);
			obj_textfield.focus(); //se enfoca en el primer elemento textfield
			return 0;
		}else{
			return 1;
		}
	}else{
		return 0;
	}

}

//recibe la pareja listmenu y textfield. regresa un 1 cuando alguno de los dos objetos tiene datos.  Regresa un 0 cuando los dos estan vacios o sin seleccionar.
function validacion_pareja_listmenu_textfield(obj_listmenu, obj_textfield, check, alerta){

	if(check==1)
	{
		if( !validacion_listmenu_nulo(obj_listmenu, check, "") && !validacion_textfield_nulo(obj_textfield, check, "") )
		{
			alert(alerta);
			obj_listmenu.focus(); //se enfoca en el primer elemento , el listmenu
			return 0;
		}else{
			return 1;
		}
	}else{
		return 0;
	}

}

//funcion que manda la forma siempre y cuando la bandera valga 1, osease que sea valida toda la informacion del formulario
//parametros: la forma y la bandera check
function mandar_forma(obj_form, check){
	
	if(check==1)
	{
	obj_form.submit();
	}		
	
}





//-------------------funciones específicas que validan de manera instantánea cada clic en el teclado-------------------

//requieren que el objeto tenga dentro de la etiqueta "input" lo siguiente:
// 		onkeypress='return <funcion>(event);'


//acepta solo digitos, letras mayusculas y letras minusculas.
// 		onKeyPress="javascript: return validacion_textfield_usuario_contrasena(event);"
function validacion_textfield_usuario_contrasena(event){

	return (anyMask(event, "AAAAAAAAAA") || anyMask(event, "##########"));

}

//acepta solo la configuración de un RFC
//		 onKeyPress="javascript: return validacion_textfield_rfc(event);"
function validacion_textfield_rfc(event){

	return (anyMask(event, "AAA######~~~") || anyMask(event, "AAAA######~~~"));

}

//acepta solo la configuración de un telefono en su parte primera
//		 onKeyPress="javascript: return validacion_textfield_telefono_p1(event);"
function validacion_textfield_telefono_p1(event){

	return anyMask(event, "####");

}

//acepta solo la configuración de un telefono en su parte segunda
//		 onKeyPress="javascript: return validacion_textfield_telefono_p2(event);"
function validacion_textfield_telefono_p2(event){

	return anyMask(event, "####");

}

//acepta solo la configuración de un telefono en su parte tercera
//		 onKeyPress="javascript: return validacion_textfield_telefono_p3(event);"
function validacion_textfield_telefono_p3(event){

	return anyMask(event, "############");

}

//acepta solo la configuración de un CP / ZIP CODE 
//		 onKeyPress="javascript: return validacion_textfield_cp(event);"
function validacion_textfield_cp(event){

	return anyMask(event, "~~~~~~~~~~");

}


