	/* PARAMETROS NUMERO, VALOR(ej: Mod(10,9) --> 10 mod 2 --> DEVUELVE 0)*/
	function Mod(a, b) { return a-Math.floor(a/b)*b } 
	/* FUNCION QUE DEVUELVE UNA CLASE DEPENDIENDO SI ES PAR O IMPAR EL PARAMETRO QUE RECIBE*/
	function Mpar(ContI)
	{
	var strClass;
		if(Mod(ContI, 2)==0)
		{
			strClass = 'RepReg1';
		}
		else
		{
			strClass = 'RepReg2';
		}
	return strClass;	
	}
	/* 
	CAMBIA UN STRING POR OTRO: RECIBE COMO PARAMETOROS (EL VALOR EN DONDE REMPLAZAR, LO QUE SE QUIERE PONER, LO QUE SE QUIERE CAMBIAR]. 
	EJ: replaceSubstring("cosa", "c", "p")--> DEVUELVE "posa"																										   
   */	
   function replaceSubstring(inputString, fromString, toString) {
 
   var temp = inputString;
   if (fromString == "") {
      return inputString;
   }
   if (toString.indexOf(fromString) == -1) { 
      while (temp.indexOf(fromString) != -1) {
         var toTheLeft = temp.substring(0, temp.indexOf(fromString));
         var toTheRight = temp.substring(temp.indexOf(fromString)+fromString.length, temp.length);
         temp = toTheLeft + toString + toTheRight;
   }
   } else {
      var midStrings = new Array("~", "`", "_", "^", "#");
      var midStringLen = 1;
      var midString = "";
      while (midString == "") {
         for (var i=0; i < midStrings.length; i++) {
            var tempMidString = "";
            for (var j=0; j < midStringLen; j++) { tempMidString += midStrings[i]; }
            if (fromString.indexOf(tempMidString) == -1) {
               midString = tempMidString;
               i = midStrings.length + 1;
            }
         }
      } 
      while (temp.indexOf(fromString) != -1) {
         var toTheLeft = temp.substring(0, temp.indexOf(fromString));
         var toTheRight = temp.substring(temp.indexOf(fromString)+fromString.length, temp.length);
         temp = toTheLeft + midString + toTheRight;
      }
      while (temp.indexOf(midString) != -1) {
        var toTheLeft = temp.substring(0, temp.indexOf(midString));
        var toTheRight = temp.substring(temp.indexOf(midString)+midString.length, temp.length);
        temp = toTheLeft + toString + toTheRight;
      	}
   		}
 	  return temp; 
		}
		
	/* 
	LE AGREGA PUNTOS CADA TRES DIGITOS: RECIBE COMO PARAMETOROS (El string al que se le quiere poner los puntos y devuelve un string con los puntos) 
	EJ: PuntosInString("21512564,2")--> DEVUELVE "215.12.564,2"																										   
   */	
		function PuntosInString(elString)
		{
				
		var Coma;
		var toTheLeft
		var toTheRight
		var StringFormat;	
		var ResultConPuntos;
		var Negativo; 
				
				toTheRight='';
				toTheLeft='';
				Coma = ','
				if(elString.length<=3)
			  	{
					return elString;
				}
			   if(elString.indexOf('-')!=-1) 
			   {
			 		elString = replaceSubstring(elString, '-', '')
					Negativo = true	
						
			   }
			   else
			   {
					Negativo= false
			   } 
			   if(elString.indexOf(Coma)!= -1) 
			   {
			   		toTheLeft = elString.substring(0, elString.indexOf(Coma));
					toTheRight = elString.substring(elString.indexOf(Coma)+Coma.length-1, elString.length);
				}
				else
				{
					toTheRight='';
					toTheLeft = elString;
				}	
				
				if(toTheLeft.length<=3)
				{	
					if(Negativo)
					{
						elString = '-' + elString
					}
				  	return elString;
				}
				ResultConPuntos=strConPuntos(toTheLeft, toTheRight, Negativo)
				return ResultConPuntos;
		}
	function strConPuntos(strCut, RightAcum, Negativo)
		{
		
		var Punto;
		var CadaX;
		var Left;	
		var Right;
		var contWhile;	
			contWhile = 0;
			Punto ='.';
			CadaX = 3;
			
			while(strCut.length>CadaX)
			{
				Right = strCut.substr(strCut.length - parseInt(CadaX), strCut.length);
				RightAcum= '.' + Right + RightAcum; 
				Left = strCut.substr(0, strCut.length - parseInt(CadaX));
				strCut = Left;
					if (contWhile>30) //Maxima cantidad de números
					{
						break;
					} 
			}
			RightAcum = Left + RightAcum;
				if(Negativo==true)
				{
					RightAcum = '-' + RightAcum
				}
		return RightAcum; 
		}
		/* FUNCION QUE LE AGREGA UNA CANTIDAD DE DECIMALES DESPUES DE LA COMA SI NO LOS TIENE 
		   RECIBE(Un numero en el formato 1545.245 donde el punto representa la coma, y la cantidad de decimales que debe contener)
		   EJ: DosDigitos(15458.245, 4)--> Devuelve 15458.2450
		*/
		function DosDigitos(ElString, Decimales)
		{
			if(ElString.length==0)
			{
				return '0,00'
			}
			var nArray = new Array();
			var strVal=''
			var Negativo
			Negativo = false
			ElString=ElString + ''
				if(ElString.indexOf('-')!=-1)
				{	
					ElString = replaceSubstring(ElString, '-', '')
					Negativo = true
				}
				nArray=ElString.split(",");
					if(ElString.indexOf(",")==-1)
					{
						nArray[1]='00'
					}
					if(nArray.length==2)
					{
						strVal=nArray[1];
							while(strVal.length<Decimales)
							{
								strVal=strVal+'0';
							}
							if(strVal.length>Decimales)
							{
								strVal=strVal.substr(0,Decimales);
							}
					}
					strVal=nArray[0] + ',' + strVal
					if(Negativo==true)
					{
						strVal = '-' + strVal
					}
				return strVal;	
		}
function jsValidarFecha(AtributoDate)
{
 var dia;
 var mes;
 var anio;
 var ArrDate = new Array;
 var ResultBool;
 var DiaMax;
 	ResultBool = false
	if(AtributoDate.length==10)
	{
		
		if(AtributoDate.indexOf('-')==2)
		{
			ArrDate = AtributoDate.split('-')
			dia  =  ArrDate[0]
			mes  =  ArrDate[1]
			anio =  ArrDate[2]

				if(dia.length==2 && mes.length==2 && anio.length==4)
				{
					if(dia.substring(0,1)==0 && dia.substring(1,2)!=0)
					{
						dia = dia.substring(1,2)
					}
					if(mes.substring(0,1)==0 && mes.substring(1,2)!=0)
					{
						mes = mes.substring(1,2)
					}
					dia  = parseInt(dia)
					mes  = parseInt(mes)
					anio = parseInt(anio)
						switch(mes)
						{
							case 1:
								DiaMax = 31
							break;	
							case 2:
								if(!bisYear(anio))
								{
									DiaMax = 28
								}
								else
								{
									DiaMax = 29	
								}
							break;
							case 3:
								DiaMax = 31
							break;
							case 4:
								DiaMax = 30
							break;
							case 5:
								DiaMax = 31
							break;
							case 6:
								DiaMax = 30
							break;
							case 7:
								DiaMax = 31
							break;
							case 8:
								DiaMax = 31
							break;
							case 9:
								DiaMax = 30
							break;
							case 10:
								DiaMax = 31
							break;
							case 11:
								DiaMax = 30
							break;
							case 12:
								DiaMax = 31
							break;
						}
						if(dia>0 && dia <= DiaMax && mes > 0 && mes <13 && anio > 1900 && anio < 2100)
						{
							ResultBool = true
						}
				}
		}
	}
	if(ResultBool == false)
	{
		alert('Debe colocar un formato de fecha válido. [DD-MM-AAAA]')
	}
	return ResultBool;
}

function bisYear(year) 
{ 
	return (((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0)) ? 1 : 0;
}
function CheckDates(FechaIni, FechaFini)
{

 var CadenaFecha1;
 var CadenaFecha2;
 var ResultDias;
   CadenaFecha1 = FechaIni
   CadenaFecha2 = FechaFini

 var Fecha1 = new FechaFormat( CadenaFecha1 )   
 var Fecha2 = new FechaFormat( CadenaFecha2 ) 

 var miFecha1 = new Date( Fecha1.anio, Fecha1.mes, Fecha1.dia )
 var miFecha2 = new Date( Fecha2.anio, Fecha2.mes, Fecha2.dia )

 var diferencia =  miFecha1.getTime() - miFecha2.getTime()		
		if (miFecha1.getTime() > miFecha2.getTime() )
		{
			alert('La fecha inicial debe ser superior a la final de búsqueda')
			return false;
		}
		else
		{
			return true;					
		}
}
function FechaFormat(cadena) 
{
   var separador = "-"
   if (cadena.indexOf(separador)!=-1)
   {
        var posi1 = 0
        var posi2 = cadena.indexOf( separador, posi1 + 1 )
        var posi3 = cadena.indexOf( separador, posi2 + 1 )
        this.dia = cadena.substring( posi1, posi2 )
        this.mes = cadena.substring( posi2 + 1, posi3 )
        this.anio = cadena.substring( posi3 + 1, cadena.length )
   } 
   else 
   {
        this.dia = 0
        this.mes = 0
        this.anio = 0   
   }
}
function ConvertFecha(FormatFechaOri, FormatFechaNew, SeparadorOri, SeparadorNew, Fecha)
{
Fecha = Fecha + ''
var O_Dia
var O_Mes
var O_Anio
var N_Dia
var N_Mes
var N_Anio
var FechaRetorno
var ArrSplit
	if(SeparadorOri.length==0)
	{
			switch(FormatFechaOri)
			{
				case 'ddmmaaaa':
					O_Dia 	= Fecha.substring(0,2)
					O_Mes 	= Fecha.substring(2,4)
					O_Anio 	= Fecha.substring(4,8)
				break;
				case 'mmddaaaa':
					O_Dia	= Fecha.substring(2,4)
					O_Mes	= Fecha.substring(0,2)
					O_Anio	= Fecha.substring(4,8)
				break;
				case 'aaaammdd':
					O_Dia	= Fecha.substring(6,8)
					O_Mes	= Fecha.substring(4,6)
					O_Anio	= Fecha.substring(0,4)
				break;
			}
	}
	else
	{

		ArrSplit = Fecha.split(SeparadorOri)
			switch(FormatFechaOri)
			{
				case 'ddmmaaaa':
					O_Dia 	= DiaMesNumero(ArrSplit[0])
					O_Mes 	= DiaMesNumero(ArrSplit[1])
					O_Anio 	= AnioNumero(ArrSplit[2])
				break;
				case 'mmddaaaa':
					O_Dia	= DiaMesNumero(ArrSplit[1])
					O_Mes	= DiaMesNumero(ArrSplit[0])
					O_Anio	= AnioNumero(ArrSplit[2])
				break;
				case 'aaaammdd':
					O_Dia	= DiaMesNumero(ArrSplit[2])
					O_Mes	= DiaMesNumero(ArrSplit[1])
					O_Anio	= AnioNumero(ArrSplit[0])
				break;
			}
	}
	switch(FormatFechaNew)
	{
		case 'ddmmaaaa':
			FechaRetorno = O_Dia + SeparadorNew + O_Mes + SeparadorNew + O_Anio 
		break;
		case 'mmddaaaa':
			FechaRetorno = O_Mes + SeparadorNew + O_Dia + SeparadorNew + O_Anio
		break;
		case 'aaaammdd':
			FechaRetorno = O_Anio + SeparadorNew + O_Mes + SeparadorNew + O_Dia
		break;
	}
	return FechaRetorno
}
function DiaMesNumero(strNum)
{	
strNum = strNum + ''
	if(strNum.length==2)
	{
		return strNum;
	}
	else
	{
		return '0' + strNum; 
	}
}
function AnioNumero(strNum)
{
	strNum = strNum + ''
	if(strNum.length==4)	
	{
		return strNum;
	}
	else
	{
		return '20' + strNum;
	}
}
function GoToPDF(Documento)
{
var URL;
	URL = '/ARCP_FacturaPDF/ARCP_Default.asp?Parametro0=' + Documento
	window.open(URL)
}
function handleError( err , url , line)
{
	return true;
}
function isAlien(a) {
   return isObject(a) && typeof a.constructor != 'function';
}
function isArray(a) {
    return isObject(a) && a.constructor == Array;
}
function isBoolean(a) {
    return typeof a == 'boolean';
}
function isEmpty(o) {
    var i, v;
    if (isObject(o)) {
        for (i in o) {
            v = o[i];
            if (isUndefined(v) && isFunction(v)) {
                return false;
            }
        }
    }
    return true;
}
function isFunction(a) {
    return typeof a == 'function';
}
function isNull(a) {
    return typeof a == 'object' && !a;
}
function isNumber(a) {
    return typeof a == 'number' && isFinite(a);
}
function isObject(a) {
    return (a && typeof a == 'object') || isFunction(a);
}
function isString(a) {
    return typeof a == 'string';
}
function isUndefined(a) {
    return typeof a == 'undefined';
} 
