// ----------------------------------------------------------------------------
// Funcion genérica que reemplaza el caracter especificado dentro de un String
function replaceChar(input,cual,porcual)
{
    if (input.indexOf(cual)==-1)
    {
    	// si no existe el caracter especificado dentro                                                                                                                                                        
    	// del string, devuelve el string original
     	return input ; 
    }            
    else 
    {
      	output = input.replace(cual,porcual);
       	while (output.indexOf(cual)!= -1)
       	{
             output = output.replace(cual,porcual);
        }
   		return output ;
   	}
}

// ----------------------------------------------------------------------------
// Elimina los espacios en blanco al principio y final de un String
function trim(str)
{
	return str.replace(/^\s*|\s*$/g,"");
}

// ----------------------------------------------------------------------------
// Valida una direccion de email
function isEmail(mail)
{
	if(mail.indexOf('@') == -1)
	{
		return false;
	}
	else
	{
		//return(mail.search(/^[\w&]+(\.?[\w&]+)*@\w+\.\w+(\.\w+)*$/)==0)
		return(mail.search(/^(\w+-?\w+\.?\w+)+@\w+-?\w+\.\w+(\.\w+)*$/)==0);
		//return(mail.search(/^\w+-?\w+\.?\w+@\w+-?\w+\.\w+(\.\w+)*$/)==0);
	}
}

//-------------------------------------------------------------------------------------
// Valida que sea alfanumérico (solo numeros y/o letras)
function isAlphaNumeric(str)
{
	var re = /[^a-zA-Z0-9]/g
	return (!re.test(str))
}

//-------------------------------------------------------------------------------------
// devuelve true si el string especificado contiene algun caracter considerado invalido
function hasInvalidChar(str)
{
	retValue=false;
	bannedChars = '()<>"\'{}\\#' ;
	for(i=0;i<bannedChars.length;i++)
	{
		if( str.indexOf( bannedChars.charAt(i)) != -1 )
		{
			retValue=true;
			break ;
		}
	}
	return retValue;
}

// ----------------------------------------------------------------------------
//valida un numero de cuit/cuil
function validaCuit(part1, part2, part3)
{
	retValue	= true ;
	validParts1 = '20,23,24,27,30,33,34' ;
	if (noNum(part1) ||noNum(part2)||noNum(part3) )
	{
		retValue = false;
	}
	else if(validParts1.indexOf(part1)==-1)
	{
		retValue = false;
	}
	
	sum = 0;
	multiplier = 2;
	partToTest = part1+''+part2;
	for(i=partToTest.length-1;i>=0;i--)
	{
		sum += partToTest.charAt(i)* multiplier ;
		//alert(partToTest.charAt(i)+'*'+ multiplier);
		multiplier++;
		multiplier = (multiplier>7)? 2: multiplier;
	}
	mod11 = sum%11;
	verifier = (mod11 == 0)? 0: 11-mod11
	if(	mod11 == 1 || (verifier != part3))
	{
		retValue = false;
	}
	return retValue;
}

// ----------------------------------------------------------------------------
// Devuelve true si el valor es vacío o no es un número
function noNum(valor)
{
	return (isNaN(valor) || (valor=='')) 
}

// ----------------------------------------------------------------------------
/* Funcion que convierte una fecha en numero para su posterior comparacion  -*/
/*
Creation Date   : 20/01/2004  (mm/dd/yyyy)
Author          : Cristian Rodriguez [cristian.rodriguez@neoris.com]
Description     : Converts a date string to a number for comparing purpose
Parámeters      : strDate (valid formats: mm/dd/aaaa or dd/mm/aaaa )
                 idLang  (1 = english , 2 = spanish)
*/
function dateToComparableNum(strDate,idLang)
{
 idLang = idLang || '2' ;
 
 if(idLang == '2') //esp
 {
  var dPart = strDate.substring(0,2);
  var mPart = strDate.substring(3,5);
 }
 else
 {
  var mPart = strDate.substring(0,2)
   var dPart = strDate.substring(3,5)
 }
    var yPart = strDate.substring(6,10)
 return(parseInt(yPart+mPart+dPart))
}


//------------------------------------------------------------------
/*
Creation Date   : 12/01/2006  (mm/dd/yyyy)
Author          : Cristian Rodriguez [cristian.rodriguez@neoris.com]
Description     :  Valida que el formato de la fecha sea dd/mm/aaaa
*/
function testFormatoFecha(strFecha)
{
	var ddmmyyyy = /^(0[1-9]|[1-2][0-9]|3[0-1])\/(0[1-9]|1[0-2])\/\d{4}$/
	return ( ddmmyyyy.test(strFecha))
}


//------------------------------------------------------------------
/*
Creation Date   : 12/01/2006  (mm/dd/yyyy)
Author          : Cristian Rodriguez [cristian.rodriguez@neoris.com]
Description     : valida que sea una fecha existente.
*/
function testValidDate(strDate)
{
	var dPart = strDate.substring(0,2);
	var mPart = strDate.substring(3,5);	
	var yPart = strDate.substring(6,10)
  		
   	date = new Date(yPart, mPart - 1, dPart);
	var mes1 = date.getMonth();
	var mes2 = ((mPart)-1);
  		
  	return( mes1 == mes2 );
}



 


//------------------------------------------------------------------
/*
Creation Date   : 18/01/2006  (mm/dd/yyyy)
Author          : Cristian Rodriguez [cristian.rodriguez@neoris.com]
Description     : cancela el evento disparado al pulsar enter y si existe
				  la variable global "onEnter" intenta ejecutar la función
				  asociada o clickear el elemento correspondiente al ID especificado.  
*/

function cancelEnter(e)
{
	try
	{
		evento = e;
		numTecla = evento.which;
	}
	catch(ex)
	{
		evento = event;
		numTecla = evento.keyCode;
	}
	
	if (numTecla == 13)
	{

		if(window.onEnter)
		{
			if ( 'function' == typeof(window.onEnter))
			{
				window.onEnter()
			}
			else if (document.getElementById(window.onEnter))
			{
				document.getElementById(window.onEnter).click();
			}
		}
		evento.cancelBubble = true;
		return false;
	}
}







/* ###############################################################################################*/
// Funciones para el manejo de Cookies
// Autor: Cristian Rodriguez (cristian.rodriguez@neoris.com)
/* ###############################################################################################*/


/*------------------------------------------------------------------------*/
function setCookie(name,value,expires,path,domain,secure){//la fecha debe recibirse en formato dd/mm/aaaa
        nombreCookie	= name;
        valorCookie		= value;
   
        // verifica la existencia de los parámetros
        if ( !expires  || expires =='' || expires==null){	expiraCookie = ''   ;}
        else{fechaExpires  = expires +''; expiraCookie	= ';expires=' +  formatExpires(fechaExpires)  ;}
        
        if ( !path  || path ==''|| path==null){pathCookie = '';}
		else{pathCookie	= ';path=' + path  ;}
		
		if ( !domain  || domain =='' ||domain==null){dominioCookie='';}
		else{ dominioCookie	= ';domain=' + domain ;}
		
		if ( !secure  || secure =='' || secure ==null){secureCookie='';}
		else{ secureCookie	= ';secure';}
		
        
		//escribe la cookie
        document.cookie =nombreCookie+'='+ 
						escape(valorCookie)+ 
						expiraCookie+
						pathCookie+ 
						dominioCookie+
						secureCookie ;
}



/*------------------------------------------------------------------------*/
function formatExpires(fecha){
	// Recibe una fecha en formato dd/mm/aaaa y la devuelve en formato GMT
	arrayFecha = fecha.split('/');
	objetoFecha = new Date();
	objetoFecha.setDate(arrayFecha[0]);
	objetoFecha.setMonth(arrayFecha[1]);
	objetoFecha.setFullYear(arrayFecha[2]);
	return objetoFecha.toGMTString() ;
	
}



/*------------------------------------------------------------------------*/
function getCookie(name){
	var start = document.cookie.indexOf(name+"=");
    var len = start+name.length+1;
    if ((!start) && (name != document.cookie.substring(0,name.length))) return null;
    if (start == -1) return null;
    var end = document.cookie.indexOf(";",len);
    if (end == -1) end = document.cookie.length;
    return unescape(document.cookie.substring(len,end));
}



/*------------------------------------------------------------------------*/
function clearCookie(name){
	//borra la cookie seteándole una fecha de expiración pasada
	setCookie(name,'','01/01/1900');

}




