// validaciones.js

function esAlphaNum( str ) 
{
	// Return immediately if an invalid value was passed in
	if (str+"" == "undefined" || str+"" == "null" || str+"" == "") 
	return false;
	var isValid = true;
	
	// convert to a string for performing string comparisons.
	str += ""; 
	// Loop through length of string and test for any alpha numeric 
	// characters
	for (i = 0; i < str.length; i++)
	{
		// Alphanumeric must be between "0"-"9", "A"-"Z", or "a"-"z"
		if (!(((str.charAt(i) >= "0") && (str.charAt(i) <= "9")) || 
		((str.charAt(i) >= "a") && (str.charAt(i) <= "z")) ||
		((str.charAt(i) >= "A") && (str.charAt(i) <= "Z"))))
		{
			isValid = false;
			break;
		} 
	} // END for 
	
	return isValid;
} // end IsAlphaNum

function evaluarNumerico(cadena, obj)
{ 
    var opc = false;  
    
    if (cadena == "%d") 
     if (event.keyCode > 47 && event.keyCode < 58) 
      opc = true; 
      
    if (cadena == "%f")
    {  
		 if (event.keyCode > 47 && event.keyCode < 58) 
		  opc = true; 
		 if (obj.value.search("[.*]") == -1 && obj.value.length != 0) 
		  if (event.keyCode == 46) 
		   opc = true; 
    } 
    
    if(opc == false) 
     event.returnValue = false;  
}

function evaluarNumConNegativo(cadena, obj)
{ 
    var opc = false;  
    
    if (cadena == "%d") 
    {
    	if (event.keyCode > 47 && event.keyCode < 58) 
      		opc = true; 
      	
      	//simbolo negativo
      	if (event.keyCode == 45) 
    	  opc = true;
    }
      
    if (cadena == "%f")
    {  
    	if (event.keyCode > 47 && event.keyCode < 58) 
      		opc = true; 
      	
      	//simbolo negativo
      	if (event.keyCode == 45) 
    	  opc = true;
      
	    if (obj.value.search("[.*]") == -1 && obj.value.length != 0) 
    	  	if (event.keyCode == 46) 
       			opc = true; 
    } 
    
    if(opc == false) 
    	event.returnValue = false;  
} 
 
function NumberFormat(num, numDec, decSep, thousandSep)
{ 
	//PPR:  Si se hace foco sobre el importe y finalmente no se teclea ningún numero, se formatea la cadena vacia num a 0.00
	//      Controlamos con el siguiente if, para seguir dejando la casilla del importe en blanco y no con 0.00
	if(num == "" )
	{
		return num;
	}
	
	//PPR: Si tecleamos una primera vez un importe, pasamos por esta función y formateamos el importe con los correspondientes
	//     puntos decimales y puntos(millares ..), si volvemos a hacer foco sobre este importe, o cambiams el importe introducido
	//     la función no convierte el número correctamente, así con el siguiente if, eliminamos los posibles puntos y tratar así
	//     el número como si entrara por primera vez
	if(num.indexOf('.') != -1 && num.indexOf(',') != -1)
	{
		num = num.toString().replace('.','');
	}
	
	num = invertirFormatoDecimales(num,'.',',');
	
    var arg; 
    var Dec; 
    Dec = Math.pow(10, numDec);  
    if (typeof(num) == 'undefined') return;  
    if (typeof(decSep) == 'undefined') decSep = '.'; 
    if (typeof(thousandSep) == 'undefined') thousandSep = ','; 
    
    if (thousandSep == '.') 	 arg=/./g; 
    else if (thousandSep == ',') arg=/,/g; 
        
    //if (typeof(arg) != 'undefined') num = num.toString().replace(arg,''); 
    
    num = num.toString().replace(/,/g, '.');  
    
    if (isNaN(num)) num = "0"; 
    sign = (num == (num = Math.abs(num))); 
    num = Math.floor(num * Dec + 0.50000000001); 
    cents = num % Dec; 
    num = Math.floor(num/Dec).toString();  
    if (cents < (Dec / 10)) cents = "0" + cents;  
    
    
    for (var i = 0; i < Math.floor((num.length - (1 + i)) / 3); i++) 
     num = num.substring(0, num.length - (4 * i + 3)) + thousandSep + num.substring(num.length - (4 * i + 3)); 
      
    if (Dec == 1) 
     return invertirFormatoDecimales((((sign)? '': '-') + num),',','.'); 
    else 
     return invertirFormatoDecimales((((sign)? '': '-') + num + decSep + cents),',','.'); 
}

function NumberFormatPuntos(num, numDec, decSep, thousandSep)
{ 
	if(num == "" )
		return num;
	
	while(num.indexOf('.') != -1 && num.indexOf(',') != -1)	
		num = num.toString().replace('.','');
		
	return num;
}


function invertirFormatoDecimales(num,separadorMiles,separadorDecimales)
{
	var numero = num.toString();
	
	while(numero.indexOf(separadorMiles) != -1)
		numero = numero.replace(separadorMiles, 'x');
	
	while(numero.indexOf(separadorDecimales) != -1)
		numero = numero.replace(separadorDecimales, separadorMiles);
	
	while(numero.indexOf('x') != -1)
		numero = numero.replace('x', separadorDecimales);
	
	return numero;
}
   
function evaluarAlpha(obj)
{ 
    var opc = false;  
 		
 	//numeros   
     if (event.keyCode > 47 && event.keyCode < 58) 
      opc = true; 
      
    //letras mayusculas
     if (event.keyCode > 64 && event.keyCode < 91) 
      opc = true; 
      
    //letras minusculas
     if (event.keyCode > 96 && event.keyCode < 123) 
      opc = true; 
      
    //enter
    if (event.keyCode == 13) 
      opc = true; 
     
    //espacio
    if (event.keyCode == 32) 
      opc = true; 
      
      //ª º
    if (event.keyCode == 170 || event.keyCode == 186) 
      opc = true; 
      
	//letras con acentos
     if (event.keyCode > 191 && event.keyCode < 256) 
      opc = true; 
      
    //división
    if (event.keyCode == 47) 
      opc = true;
     
    // coma, guión alto, punto
    if (event.keyCode > 43 && event.keyCode < 47) 
      opc = true; 
      
    //dos puntos y punto y coma
    if (event.keyCode > 57 && event.keyCode < 60) 
      opc = true;
        
    if(opc == false) 
    	event.returnValue = false;  
   }
   			 
	function evaluarAlfabetico(obj)
	{ 
    	var opc = false;  
    
     	if (event.keyCode > 64 && event.keyCode < 91) 
      		opc = true; 
     
     	if (event.keyCode > 96 && event.keyCode < 123) 
      		opc = true; 
      		
      	//espacio
	    if (event.keyCode == 32) 
    	  opc = true; 
    
   		 if(opc == false) 
    		event.returnValue = false;  
   }
   
   function evaluarSoloNumLetras(obj)
	{ 
    	var opc = false;  
    
     	if (event.keyCode > 64 && event.keyCode < 91) 
      		opc = true; 
     
     	if (event.keyCode > 96 && event.keyCode < 123) 
      		opc = true; 
      		
    	if (event.keyCode > 47 && event.keyCode < 58) 
      		opc = true; 
    
   		 if(opc == false) 
    		event.returnValue = false;  
   }
   function evaluarSoloNumLetrasSpc(obj)
   { 
    	var opc = false;  
    
     	if (event.keyCode > 64 && event.keyCode < 91) 
      		opc = true; 
     
     	if (event.keyCode > 96 && event.keyCode < 123) 
      		opc = true; 
      		
    	if (event.keyCode > 47 && event.keyCode < 58) 
      		opc = true; 
      	
      	if (event.keyCode == 32)
      		opc = true;
    
   		if(opc == false) 
    		event.returnValue = false;  
   }
   
   function maxLengthTextarea(obj,longitudMax)
   {
   		var opc = false;
   		
   		if(obj.value.length < longitudMax)	
   			opc = true;
   		
   		if(opc == false) 
    		event.returnValue = false;  
   }
 