/*
 * 2006-2007 CCG Developments.
 * Licencia: Creative Commons (CC) Atribucion-SinDerivadas 2.5 (Argentina)
 * class: -.
 * Descripcion: funciones de validacion standard.
 * Verificado por: Francisco Casares.
 */

/* OBJETIVO: PARA BLOQUEAR EL SUBMIT DE UN FORM POR PRESIONAR ENTER */
function DetenerSubmit(){
	if (event.keyCode == 13){
		event.keyCode = 0;
		return event.keyCode;
	}
}
/* OBJETIVO: FUNCION QUE VERIFICA SI UN CARACTER ES NUMERICO */
function esNumerico(camp){
	if (isNaN(camp.value) == true){
		return false;
	}
	else{
		return true;
	}
}
/* OBJETIVO: VERIFICA QUE LA ENTRADA SEA SOLO LETRAS */
function soloCaracter(objeto){
	var regexpr = /^[a-zA-Z]+(\s*[a-zA-Z])*$/;
	var cadena = objeto;
	if(!regexpr.test(cadena.value)){
		return false;
	}
}
/* OBJETIVO: FUNCION QUE SIRVE PARA COMPROBAR SI LA ENTRADA ES SOLO CARACTERES ALFANUMERICOS */
function soloAlfanumericos(objeto){
	var regexpr = /^[a-zA-Z0-9]+(\s?[a-zA-Z0-9])*$/;
	var cadena = objeto;
	if(!regexpr.test(cadena.value)){
		return false;
	}
}
/* OBJETIVO: FUNCION QUE SIRVE PARA COMPROBAR SI LA ENTRADA ES CORRESPONDIENTE A UN MODELO DE UN AUTO */
function esModelo(objeto){
	var regexpr = /^[a-zA-Z0-9]+(\s?\.*[a-zA-Z0-9])*$/;
	var cadena = objeto;
	if(!regexpr.test(cadena.value)){
		return false;
	}
}
/* OBJETIVO: FUNCION QUE SIRVE PARA COMPROBAR SI LA ENTRADA PERTENECE A UN TELEFONO */
function esTelefono(objeto){
	var regexpr = /^([0-9]{3,5})+\-([0-9]{6,9})+$/;
	var cadena = objeto;
	if(!regexpr.test(cadena.value)){
		return false;
	}
}
/* OBJETIVO: FUNCION QUE SIRVE PARA VERIFICAR LA HORA */
function esHora(objeto){
	var regexpr = /^(0[0-9]|1\d|2[0-3]):([0-5]\d)$/;//DEBO VERLA PORQUE SE PUEDE MODIFICAR LA REGEX
	//var regexpr = /^(0[0-9]|(1[0-9])|(2[0-3]))+([1-9]{1})+/;
	var cadena = objeto;
	if(!regexpr.test(cadena.value)){
		return false;
	}
}

/* OBJETIVO: FUNCION QUE VERIFICA SI LA FECHA ES CORRECTA */
function esFecha(objeto){
	var regexpr = /^(0[1-9]|1[0-9]|2[0-9]|3[0-1])\/(0[1-9]|1[0-2])\/([19-20]0[0-9])$/;
	var cadena = objeto;
	if(!regexpr.test(cadena.value)){
		return false;
	}
}

/* OBJETIVO: FUNCION QUE VERIFICA SI LA FECHA DE EMISION DEL REGISTRO ES CORRECTA */
function esFechaRegistro(objeto){
	var regexpr = /^(0[1-9]|1[0-9]|2[0-9]|3[0-1])\/(0[1-9]|1[0-2])\/(200[2-9])$/;
	var cadena = objeto;
	if(!regexpr.test(cadena.value)){
		return false;
	}
}

/* OBJETIVO: FUNCION QUE VERIFICA SI LA ENTRADA PERTENECE A UNA IMAGEN VALIDA */
function esImagen(objeto){
	var regexpr = /^(.+(\.jpg{1}))$/;
 	/*/^(\/*[a-zA-Z0-9]+(\_)*(\:)?(\/)*(\\)*)+((\s?\_*\:?)(\/)*\\*[a-zA-Z0-9]*)*(\.jpg{1})$/;*/
	/*/^(\/*[a-zA-Z0-9])+\/*((\.jpg){1})$/;*/
	/*/^([a-zA-Z0-9]+(\_)*(\-)*(\:)?(\/)*(\\)*)+((\.jpg){1})$/;	*/
	var cadena = objeto;
	if(!regexpr.test(cadena.value)){
		return false;
	}
}

/* OBJETIVO: FUNCION QUE VERIFICA SI LA ENTRADA PERTENECE A UN ARCHIVO VALIDO */
function esArchivo(objeto){
	var regexpr = /^((.+(\.jpg{1}))|(.+(\.doc{1}))|(.+(\.txt{1}))|(.+(\.odt{1}))|(.+(\.ods{1}))|(.+(\.xls{1}))|(.+(\.pdf{1})))$/;
 	var cadena = objeto;
	if(!regexpr.test(cadena.value)){
		return false;
	}
}

/* OBJETIVO: FUNCION QUE VERIFICA SI LA ENTRADA PERTENECE A UN CUIT VALIDO */
function esCuit(objeto){
	var regexpr = /^([0-9]{2})+\-([0-9]{8})+\-([0-9]{1})+$/;
	var cadena = objeto;
	if(!regexpr.test(cadena.value)){
		return false;
	}
}

/* OBJETIVO: FUNCION QUE VERIFICA EL CUIT DE UNA ASEGURADORA */
function esCuitAseguradora(objeto){
	var regexpr = /^(3[0-9]{1})+\-([0-9]{8})+\-([0-9]{1})+$/;
	var cadena = objeto;
	if(!regexpr.test(cadena.value)){
		return false;
	}
}

/* OBJETIVO: FUNCION QUE VERIFICA EL CUIT DE UN CONSTRUCTOR */
function esCuitConstructor(objeto){
	var regexpr = /^([0-9]{2})+\-([0-9]{8})+\-([0-9]{1})+$/;
	var cadena = objeto;
	if(!regexpr.test(cadena.value)){
		return false;
	}
}

/* OBJETIVO: FUNCION QUE VERIFICA QUE EL DNI ES CORRECTO */
function esDni(objeto){
	var regexpr = /^([0-9]{7,8})$/;
	var cadena = objeto;
		if(!regexpr.test(cadena.value)){
			return false;
	}
}

/* OBJETIVO: FUNCION QUE VERIFICA EL ANIO DE FABRICACION DE UN AUTO ASEGURADO */
function esAnioFab(objeto){
	var regexpr = /^( (198[0-9]{1})?|(199[0-9]{1})?|(200[0-9]{1})?)$/;
	var cadena = objeto;
	if(!regexpr.test(cadena.value)){
		return false;
	}
}

/* OBJETIVO: FUNCION QUE DA FORMATO NUMERICO A UNA EXPRESION
*	 strNumero: NUMERO A EVALUAR
*	 intDecimales: NUMERO DE DIGITOS DECIMALES
*	 Retorna: UN STRING
*/
function FormateaNumero(strNumero, intDecimales){

	var iNumDecimals = intDecimales;
	var dbInVal = strNumero;
	var bNegative = false;
	var iInVal = 0;
	var strInVal
	var strWhole = "", strDec = "";
	var strTemp = "", strOut = "";
	var iLen = 0;
	
	if (dbInVal < 0){
		bNegative = true;
		dbInVal *= -1;
	}
	dbInVal = dbInVal * Math.pow(10, iNumDecimals)
	iInVal = parseInt(dbInVal);
	
	if ((dbInVal - iInVal) >= .5){
		iInVal++;
	}
	strInVal = iInVal + "";
	strWhole = strInVal.substring(0, (strInVal.length - iNumDecimals));
	strDec = strInVal.substring((strInVal.length - iNumDecimals), strInVal.length);
	
	while (strDec.length < iNumDecimals){
		strDec = "0" + strDec;
	}
	
	iLen = strWhole.length;
	
	if (iLen >= 3){
		while (iLen > 0){
			strTemp = strWhole.substring(iLen - 3, iLen);
			if (strTemp.length == 3){
				strOut = "." + strTemp + strOut;
				iLen -= 3;
			}
			else{
				strOut = strTemp + strOut;
				iLen = 0;
			}
		}
		if (strOut.substring(0, 1) == "."){
			strWhole = strOut.substring(1, strOut.length);
		}
		else{
			strWhole = strOut;
		}
	}
	
	if (strDec.length == 0){
		if (bNegative){
			return "-" + strWhole;
		}
		else{
			return strWhole;
		}
	}
	else{
		if (bNegative){
			return "-" + strWhole + "," + strDec;
		}
		else{
			return strWhole + "," + strDec;
		}
	}
}
/* OBJETIVO: FUNCION QUE SI UN CARACTER (UNO SOLA LETRA) ES ALFABETICO (ACEPTA BLANCOS) */
function esAlfabetico(Char){

	if(Char.length == 0){ 
  	return false;
  }	
  var ObjStr = Char.value;
  //Char=Char.toLowerCase();
  regexpr = /^[a-zA-Z]+$/;    	
  if(regexpr.test(Char.value)){
  	return false;
  }
	return true;
}
/* OBJETIVO: FUNCION QUE VERIFICA SI UN CARACTER (UNO SOLA LETRA) ES ALFANUMERICO */
function esAlfaNumerico(Char) {
    	var ObjStr = Char.value;
    	if(Char.length == 0)
    		return false;
    	regexpr = /^[a-zA-Z0-9]+$/;
    	if(regexpr.test(Char.value))
    		return false;

    	return true;
}
/* OBJETIVO: FUNCION QUE SIRVE PARA DAR LA MASCARA A UN DETERMINADO DATO */
function Mascara(InString, Mask) {
    	LenStr = InString.length;
    	LenMsk = Mask.length;
    	if ((LenStr==0) || (LenMsk==0))
    		return false;
    	if (LenStr != LenMsk)
    		return false;
    	TempString=""
    	for (Cont=0; Cont < InString.length; Cont++) {
    		StrChar = InString.charAt(Cont);
    		MskChar = Mask.charAt(Cont);
    		if (MskChar == '9') {
    			if(!esNumerico(StrChar))
    				return false;
    		}
    		else if (MskChar == 'A') {
    			if(!esAlfabetico(StrChar))
    				return false;
    		}
    		else if (MskChar == 'X') {
    			if(!esAlfaNumerico(StrChar))
    				return false;
    		}
    		else {
    			if (MskChar != StrChar) // compara otros caracteres
    				return false;		// ej: los / de la fecha
    		}
    	}
    	return true;
}
/* OBJETIVO: FUNCION QUE VALIDA UNA FECHA CON UN DETERNADO FORMATO 
*  Obj:	OBJETO QUE CONTIENE LA FECHA A EVALUAR
*  OBSERVACIONES:	ESTA FUNCION LLAMA MASCARA PARA VALIDAR UN CIERTO FORMATO (ESTA MASCARA 
*  PUEDE SER CAMBIADA) por ej: 99-99-9999 
*/
function VerFecha(Obj){		
		
	//alert(Obj.value)
	//if((!Mascara(Obj.value,'99/99/9999'))&&(!Mascara(Obj.value,'9/9/9999'))&&(!Mascara(Obj.value,'99/9/9999'))&&(!Mascara(Obj.value,'9/99/9999'))){
	if(!Mascara(Obj.value,'99/99/9999')){
		alert('Formato de fecha es dd/mm/aaaa');
		Obj.value='';
		Obj.focus();
		return false;
	}
	else{
		if (!EsFecha(Obj.value,'dma')){
			alert('Fecha incorrecta.');
			Obj.value='';
			Obj.focus();
			return false;
		}			
	}
	return true;
}
/* OBJETIVO: FUNCION QUE VERIFICA SI UNA FECHA ES VALIDA
*  InString: String a evaluar
*  Formato:	dma (dia mes ano)
*			mda (mes dia ano)
*           amd (ano mes dia)
*  OBSERVACIONES: ES UTILIZADA POR LA FUNCION Ver Fecha(obj)
*/
function EsFecha(InString,formato) 
	{
		//Agrega ceros a la fecha
		if (InString.substring(1,2)=="/") {
		  InString="0"+InString
		}
		
		if (InString.substring(4,5)=="/"){
		  InString=InString.substring(0,3)+"0"+InString.substring(3,9)
		}
		if (formato == "dma"){
			dia=InString.substring(0,2);
			mes=InString.substring(3,5);
			anyo=InString.substring(6,10);
		}
		if (formato == "mda"){
			mes=InString.substring(0,2);
			dia=InString.substring(3,5);
			anyo=InString.substring(6,10);
		}
		if (formato == "amd"){
			anyo=InString.substring(0,4);
			mes=InString.substring(5,7);
			dia=InString.substring(8,10);
		}
	
		/* FUNCIONALIDAD PARA EL CONTROL DE PERIODOS */
		if (formato == "ma"){
			dia = 01
			mes=InString.substring(0,2);
			anyo=InString.substring(3,7);
			
		}
		
		if (dia == '08') dia = '8';	// parseInt("08") == 10		base octogonal
		if (dia == '09') dia = '9';	// parseInt("09") == 11		base octogonal
		if (mes == '08') mes = '8';	// parseInt("08") == 10		base octogonal
		if (mes == '09') mes = '9'; // parseInt("09") == 11		base octogonal

		dia=parseInt(dia);
		mes=parseInt(mes);
		anyo=parseInt(anyo);

		if (anyo < 1900) return false;    // Anyo mayor a 1900 (por la Base de Datos)
		mes = mes - 1;  // El mes se representa del 0 al 11 (solo para la validaci�)
		//esfecha = new Date(anyo,mes,dia);
		esfecha = new Date();
		
		esfecha.setDate(dia);
		esfecha.setMonth(mes);
		esfecha.setFullYear(anyo);

		if (dia == esfecha.getDate()){
			if(mes == esfecha.getMonth()){
				if(anyo == esfecha.getFullYear()){
					return true;
				}
			}
		}		
		return false;
}
/* OBJETIVO: FUNCION QUE SI UN EMAIL ES VALIDO */
function esEmail(Obj) {
	
	Obj = trim(Obj);
	band = true;
	InString = Obj.value;
	RefString = 'abcdefghijklmnopqrstuvwxyz-_.@';
	cont=puntos=0;
	for (i=0;i < InString.length; i++){
		car = InString.charAt(i);
		car = car.toLowerCase();
		if (RefString.indexOf(car, 0) == -1) 
    		band=false;
    	if ( car == '@'){
			cont++;
		}
		if (cont > 0){
			puntos++;
		}
	}
	if (InString.charAt(InString.length - 1) == '.' || cont > 1 || puntos < 1 || InString.indexOf('@.') != -1 || InString.indexOf('.@') != -1 || band == false){
		alert("Error "  + InString + " no es un email correcto.")
		InString='';
		Obj.focus();
		band=false;
	}
	
	Obj.value = InString;	
	return band;	
}
/* OBJETIVO: ELIMINA LOS BLANCOS A LA IZQUIERDA DE UN STRING
*	 obj:	OBJETO QUE CONTIENE STRING A ELIMINAR BLANCOS DE LA IZQUIERDA
*  Retorna: UN OBJETO
*/
function ltrim(obj) {
	
	InString = obj.value;
	n = i = 0;
	
	while (i < InString.length) {
		if (InString.charAt(i) != " ") {
			n = i
			break
		}
		i++
	}
	if (n == 0 && i == InString.length)
		obj.value = ''
	else
		obj.value = InString.substring(n, InString.length)
	return obj;
	
}
/* OBJETIVO: ELIMINA LOS BLANCOS A LA DERECHA DE UN STRING
*	 obj:	OBJETO QUE CONTIENE STRING A ELIMINAR BLANCOS DE LA DERECHA
*  Retorna: UN OBJETO
*/
function rtrim(obj) {
	InString = obj.value;
	n = i = InString.length
	while (i > 0) {
		if (InString.charAt(i - 1) != " ") {
			n = i
			break
		}
		i--
	}
	if (n == InString.length && i == 0)
		obj.value = ''
	else
		obj.value = InString.substring(0, n);
	return obj;
}
/* OBJETIVO: ELIMINA LOS BLANCOS DE LOS EXTREMOS DE UN STRING 
*  Obj:	OBJETO QUE CONTIENE UN STRING A ELIMINAR BLANCOS DE LOS EXTREMOS
*  Retorna: Un Objeto	
*/
function trim(Obj) {
	return rtrim(ltrim(Obj));	
}
/* OBJETIVO: VALIDA MAILS */
function checkemail(objeto){
   
   var testresults
   var str=objeto.value
   var filter=/^(\w+(?:\.\w+)*)@((?:\w+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i
   
   if (filter.test(str)){
   	 testresults=true
   }else{
     testresults=false;
   }
   return (testresults);
}
/* OBJETIVO: CUENTA CANTIDAD DE CARACTERES DE UN STRING */
function cant_char(InString, cantidad){
	
	if (cantidad > InString.value.length){
		return false
	}
	else{
		return true
	}
}

/* OBJETIVO: COMPROBAR QUE LA PATENTE ES CORRECTA */
function esPatente(objeto){
	var regexpr = /^([A-Z]{3})+([0-9]{3})?$/;
	var cadena = objeto;
	if(!regexpr.test(cadena.value)){
		return false;
	}
}
