
// Es -1 : si Fecha2 es > a Fecha1
// Es 1 : si Fecha2 es <= a Fecha1
function CompareDate(dia1, mes1, anno1, dia2, mes2, anno2) {
	var meses;

	meses = (anno2 - anno1) * 12 + (mes2 - mes1);
	if (meses > 0)
		return -1;
	if (meses < 0)
		return 1;
	/*	Si se trata del mismo mes (meses == 0) */
	if (dia1 > dia2)
		return 1;
	if (dia1 < dia2)
		return -1;
	return 0;
}

// Retorna el d¡a
function diaFecha(Fecha) {
	var strDate;
	var strDateArray;
	var strDay;
	var intday = -1;
	var booFound = false;
	var strSeparatorArray = new Array("-"," ","/",".");
	var intElementNr;
	var err = 0;
	strDate = Fecha;
	if (strDate.length < 1) {
		return intday;
	}
	for (intElementNr = 0; intElementNr < strSeparatorArray.length; intElementNr++) {
		if (strDate.indexOf(strSeparatorArray[intElementNr]) != -1) {
			strDateArray = strDate.split(strSeparatorArray[intElementNr]);
			if ((strDateArray.length < 2) || (strDateArray.length > 3)) {
				err = 1;
				return intday;
			} else {
				strDay = strDateArray[0];
			}
			booFound = true;
		}
	}
	if (booFound == false) {
		if (strDate.length>5) {
			strDay = strDate.substr(0, 2);
		}
	}
	intday = parseInt(strDay, 10);
	return intday;
}

// Retorna el mes
function mesFecha(Fecha) {
	var strDate;
	var strDateArray;
	var strMonth;
	var intMonth = -1;
	var booFound = false;
	var strSeparatorArray = new Array("-"," ","/",".");
	var intElementNr;
	var err = 0;
	strDate = Fecha;
	if (strDate.length < 1) {
		return intMonth;
	}
	for (intElementNr = 0; intElementNr < strSeparatorArray.length; intElementNr++) {
		if (strDate.indexOf(strSeparatorArray[intElementNr]) != -1) {
			strDateArray = strDate.split(strSeparatorArray[intElementNr]);
			if ((strDateArray.length < 2) || (strDateArray.length > 3)) {
				err = 1;
				return intMonth;
			} else {
				strMonth = strDateArray[1];
			}
			booFound = true;
		}
	}
	if (booFound == false) {
		if (strDate.length>5) {
			strMonth = strDate.substr(2, 2);
		}
	}
	intMonth = parseInt(strMonth, 10);
	return intMonth;
}

// Retorna el a¤o
function anioFecha(Fecha) {
	var runTime = new Date();
	var strCurrentYear = runTime.getYear();
	var strDate;
	var strDateArray;
	var strYear;
	var intYear = -1;
	var booFound = false;
	var strSeparatorArray = new Array("-"," ","/",".");
	var intElementNr;
	var err = 0;
	strDate = Fecha;
	if (strDate.length < 1) {
		return intYear;
	}
	for (intElementNr = 0; intElementNr < strSeparatorArray.length; intElementNr++) {
		if (strDate.indexOf(strSeparatorArray[intElementNr]) != -1) {
			strDateArray = strDate.split(strSeparatorArray[intElementNr]);
			if ((strDateArray.length < 2) || (strDateArray.length > 3)) {
				err = 1;
				return intYear;
			} else {
				if (strDateArray.length == 2) 
					strYear = strCurrentYear
				else
					strYear = strDateArray[2];
			}
			booFound = true;
		}
	}
	if (booFound == false) {
		if (strDate.length>5) {
			strYear = strDate.substr(4);
		}
	}
	intYear = parseInt(strYear, 10);
	return intYear;
}

function CompareTo(valor1, valor2){
	if ( EsVacio(valor1) || EsVacio(valor2)) return false;
	if (valor1 != valor2) return false;
	return true
}


function ValIntSinSigno(numero){
var pos;
var i;
    if ( EsVacio(numero) ) return true;
	for(i=0;i<numero.length;i++){
		pos=numero.charAt(i);
		if (pos<"0"||pos>"9"){
			return false
	    }
    }
return true
}

function ValFono(numero){
var pos;
var i;
    if ( EsVacio(numero) ) return true;
	for(i=0;i<numero.length;i++){
		pos=numero.charAt(i);
		if ((pos<"0"||pos>"9")&& (pos != " ")) {
			return false
	    }
    }
return true
}

function ValDecSinSigno(numero,lrgent,lrgdec){
var contX=0;
var flagX=false;

    if ( EsVacio(numero) ) return true;

	for(var i=0;i<numero.length;i++){
		var pos=numero.charAt(i);
		if(pos<"0"||pos>"9"){
			if(pos=="."){
				flagX=true;
				contX=0;
			}else{
				return false;
			}
		}
		else
		{
			if(flagX&&contX>lrgdec){
				return false;
			}
			else{
				if(!flagX&&contX>lrgent){
					return false;
				}
			}
			contX ++;
		}
	}
return true
}

function EsVacio(valorX)
{
  valorX=doTrim(valorX);
  var largo = valorX.length;
  if (largo < 1){
    return true;
  };
return false;
};

function isTelNum(sDato)
{
    var CadenaNumeros='() 0123456789';
    var Estecaracter;
    var Contador = 0;

    for (var i=0; i < sDato.length; i++){
         EsteCaracter = sDato.substring(i,i+1);
         if (CadenaNumeros.indexOf(EsteCaracter) != -1) 
             Contador++;
    }
    if (Contador != sDato.length)	  
        return false;
    return true;    
}

function esDatoValido(sDato)
{
    var CadenaNumeros='.0123456789';
    var Estecaracter;
    var Contador = 0;
    var pos;
    var Counter = 0;

    for (var i=0; i < sDato.length; i++){
      EsteCaracter = sDato.substring(i,i+1);
      if (CadenaNumeros.indexOf(EsteCaracter) != -1) 
        Contador++;

      pos = sDato.charAt(i);
      if(pos == ".")
        Counter++;
    }

    if (Contador != sDato.length)
        return false;

    if (Counter > 1 )
        return false;

    return true;    
}

function ValidaRut (rutX)
{
    var text1;
    var text2;
    
	rutX=doTrim(rutX);
    var largorut = rutX.length;
    if (largorut < 1){
      return true;
    };  

    var pos = rutX.search("-");
    if (pos < 0){
		text1 = rutX.substr(0, largorut - 1);
		text2 = rutX.substr(largorut-1,1);
	} else {
		text1 = rutX.substr(0, pos);
		text2 = rutX.substr(pos+1,1);
	};	
return ValidaRutDV(text1, text2);
}

function validaEmail(emailStr)
{
  // are regular expressions supported?
  var supported = 0;
  if (window.RegExp) {
    var tempStr = "a";
    var tempReg = new RegExp(tempStr);
    if (tempReg.test(tempStr)) supported = 1;
  }
  
  if (!supported) 
    return (emailStr.indexOf(".") > 2) && (emailStr.indexOf("@") > 0);
    
  var r1 = new RegExp("(@.*@)|(\\.\\.)|(@\\.)|(^\\.)");
  var r2 = new RegExp("^.+\\@(\\[?)[a-zA-Z0-9\\-\\.]+\\.([a-zA-Z]{2,3}|[0-9]{1,3})(\\]?)$");

  return (!r1.test(emailStr) && r2.test(emailStr));
}

function ValEmail (emailX)
{
    var text1;
    var text2;
    
	emailX=doTrim(emailX);
    var largoemail = emailX.length;
    if (largoemail < 1){
      return true;
    };  

    var pos = emailX.search("@");
    if (pos < 0){
      return false;
	} else {
		text1 = emailX.substr(0, pos);
		text2 = emailX.substr(pos+1);
	};	

   text1=doTrim(text1);
   text2=doTrim(text2);
   if (text1.length < 1){
     return false;
   };  
   if (text2.length < 1){
     return false;
   };  
	
return true;
}


function ValidaRutDV(text1, text2)
//valida rut 
{
   var mul = 2;
   var sum = 0;

   text1=EliminaPunto (text1);
   text1=doTrim(text1);
   text2=doTrim(text2);
   if (text1.length < 1){
     return false;
   };  
   if (text2.length < 1){
     return false;
   };  
   if (text2.length > 1){
     return false;
   };  

   var largo = text1.length;
   var text_tmp;
   var rut = text1;
   var dv = text2;

   text2=text2.toUpperCase();
   if (!ValIntSinSigno(text1)){
     return false;
   };
   if (!ValIntSinSigno(text2) && text2 != "K"){
     return false;
   };

   //validacion digito
   for (var pun = largo-1; pun >= 0 ; pun-- )
        {sum = sum + (rut.substr(pun, 1)*mul);
         mul ++;
         if (mul == 8) mul = 2;
        }
   var res = sum % 11;
   var dv_ok = 11 - res;
   if (dv_ok == 10) 
        {var dv_text = "K";} 
        else 
        {if (dv_ok == 11) 
            {var dv_text = "0";} 
            else 
            {var dv_text = dv_ok;}
        } 
   if (dv_text.toString(10) != text2.toUpperCase()) {
     return false;
   };
   
   return true; 
}

function EliminaPunto (text1){
    var largo = text1.length;
    var temp_text="";
    for (var pun = 0 ; pun < largo ; pun++){
      if (text1.substr(pun, 1) == "." || text1.substr(pun, 1) == ","){   
        temp_text=temp_text;
      }else {   
        temp_text=temp_text + text1.substr(pun, 1);
      }
    }
return (temp_text);
};

function doTrimIzq (text1){
    var largo = text1.length;
    var temp_text="";
    for (var pun = 0 ; pun < largo ; pun++){
      if (text1.substr(pun, 1) != " "){   
        temp_text=text1.substr(pun);
        return(temp_text); 
      }
    }
return (temp_text);
};

function doTrimDer (text1){
    var largo = text1.length;
    var temp_text="";
    for (var pun = largo-1 ; pun >= 0 ; pun--){
      if (text1.substr(pun, 1) != " "){   
        temp_text=text1.substr(0,pun+1);
        return(temp_text); 
      }
    }
return (temp_text);
};

function doTrim (text1){

   text1=doTrimIzq(text1);
   text1=doTrimDer(text1);
return (text1);
};

function ValFecha(dd, mm, yyyy) {	
	if ((dd == null) || (dd == ""))
		dd = 1
	if (isNaN(mm) || isNaN(dd) || isNaN(yyyy)) {
		return false }
	if (mm < 1 || mm > 12) {
		return false }
	if (dd < 1 || dd > 31) {
		return false }
	if ((mm == 4 || mm == 6 || mm == 9 || mm == 11) && dd > 30) {
		return false }
	else if (dd > 31) {
		return false }
	if (mm == 2)
	if (yyyy % 4 > 0 && dd > 28) {
		return false }
	else if (dd > 29) {
		return false }
	return true
}

function ValAllVacio(formulario)
{
 var indice;
 var largo;
 indice = 0;
 largo = formulario.length;
 for (indice=0;indice<largo;indice++)  
 {
   if ( EsVacio(formulario.elements[indice].value) ) {
     alert('Ingrese el campo '+ formulario.elements[indice].name + ' por favor');
     formulario.elements[indice].focus();
     return false;
   }
 } 
return true;
} 

function ValNumero(numero)
{
  if (isNaN(numero))return false;
return true;
}   

function ValLargo(item,len)  {
   if (item.length>len) return false;
return true;
}

function ValLargoFijo(item,len)  {
   if (item.length!=len) return false;
return true;
}

function LCeros(Valor,Tamano){
var i;
var ValorF = "";

for(i=Valor.length;i<Tamano;i++)
		ValorF = ValorF+"0";
ValorF = ValorF + Valor;
return ValorF;
}

function EsVacioRadio(radioX) {

if (radioX.length>0){
  for(var i =0;i <radioX.length; i++) {
     if (radioX[i].checked) return false;
  };
} else {
  if (radioX.checked) return false;
};
return true;
};

//valida cualquier fecha

function validaFecha(fecha)
{
  var dia,mes,anio,diames;

  if (fecha.length != 10)
    return false;
  dia = parseInt(fecha.substring(0,2),10);
  mes = parseInt(fecha.substring(3,5),10);
  anio = parseInt(fecha.substring(6,10),10);
  diames = diasMes(mes,anio);
  if ((dia > diames) || (dia < 1) || (mes > 12) || (mes < 1) || (anio < 1))
    return false;
  return true;
}

// dias del mes
function diasMes(mes, anio)
{
  switch(mes)
  {
     case 1:
     case 3:
     case 5:
     case 7:
     case 8:
     case 10:
     case 12:
       return(31);
     case 4:
     case 6:
     case 9:
     case 11:
       return(30);
     case 2:
       if ((mes == 2) && ((anio % 4) == 0) && ( ((anio % 100) != 0 ) || ((anio % 400) == 0) ))
         return(29);
       else
         return(28);
  }
}

//valida cualquier fecha de cualquier modo

function checkdate(objName) {
	var datefield = objName;
	if (chkdate(objName) == false) {
		datefield.select();
		alert("La fecha es inválida");
		datefield.focus();
		return false;
	} else {
		return true;
	}
}

function chkdate(objName) {
	file://var strDatestyle = "US";
	var strDatestyle = "EU";
	var runTime = new Date();
	var strCurrentYear = runTime.getYear();
	var strDate;
	var strDateArray;
	var strDay;
	var strMonth;
	var strYear;
	var intday;
	var intMonth;
	var intYear;
	var booFound = false;
	var datefield = objName;
	var strSeparatorArray = new Array("-"," ","/",".");
	var intElementNr;
	var err = 0;
	var strMonthArray = new Array(12);
	/*
	strMonthArray[0] = "Ene";
	strMonthArray[1] = "Feb";
	strMonthArray[2] = "Mar";
	strMonthArray[3] = "Abr";
	strMonthArray[4] = "May";
	strMonthArray[5] = "Jun";
	strMonthArray[6] = "Jul";
	strMonthArray[7] = "Ago";
	strMonthArray[8] = "Sep";
	strMonthArray[9] = "Oct";
	strMonthArray[10] = "Nov";
	strMonthArray[11] = "Dic";
	*/
	strMonthArray[0] = "01";
	strMonthArray[1] = "02";
	strMonthArray[2] = "03";
	strMonthArray[3] = "04";
	strMonthArray[4] = "05";
	strMonthArray[5] = "06";
	strMonthArray[6] = "07";
	strMonthArray[7] = "08";
	strMonthArray[8] = "09";
	strMonthArray[9] = "10";
	strMonthArray[10] = "11";
	strMonthArray[11] = "12";
	strDate = datefield.value;
	if (strDate.length < 1) {
		return true;
	}
	for (intElementNr = 0; intElementNr < strSeparatorArray.length; intElementNr++) {
		if (strDate.indexOf(strSeparatorArray[intElementNr]) != -1) {
			strDateArray = strDate.split(strSeparatorArray[intElementNr]);
			if ((strDateArray.length < 2) || (strDateArray.length > 3)) {
				err = 1;
				alert('X');
				return false;
			} else {
				strDay = strDateArray[0];
				strMonth = strDateArray[1];
				if (strDateArray.length == 2) 
				strYear = strCurrentYear
				else
				strYear = strDateArray[2];
			}
			booFound = true;
		}
	}
	if (booFound == false) {
		if (strDate.length>5) {
		strDay = strDate.substr(0, 2);
		strMonth = strDate.substr(2, 2);
		strYear = strDate.substr(4);
		}
	}
	
	if (strYear == null) {
		return false;
	}
	
	if (strYear.length == 1) {
		strYear = '0' + strYear
	}
	
	if (strYear.length == 2) {
	strYear = '20' + strYear;
	}
	
	
	if (strDatestyle == "US") {
	strTemp = strDay;
	strDay = strMonth;
	strMonth = strTemp;
	}
	
	intday = parseInt(strDay, 10);
	if (isNaN(intday)) {
	err = 2;
	return false;
	}
	
	intMonth = parseInt(strMonth, 10);
	if (isNaN(intMonth)) {
	for (i = 0;i<12;i++) {
	if (strMonth.toUpperCase() == strMonthArray[i].toUpperCase()) {
	intMonth = i+1;
	strMonth = strMonthArray[i];
	i = 12;
	}
	}
	
	if (isNaN(intMonth)) {
	err = 3;
	return false;
	}
	}
	
	intYear = parseInt(strYear, 10);
	if (isNaN(intYear)) {
	err = 4;
	return false;
	}
	
	if (intMonth>12 || intMonth<1) {
	err = 5;
	return false;
	}
	
	if ((intMonth == 1 || intMonth == 3 || intMonth == 5 || intMonth == 7 
	|| intMonth == 8 || intMonth == 10 || intMonth == 12) && (intday > 31 
	|| intday < 1)) {
	err = 6;
	return false;
	}
	
	if ((intMonth == 4 || intMonth == 6 || intMonth == 9 || intMonth == 11) 
	&& (intday > 30 || intday < 1)) {
	err = 7;
	return false;
	}
	
	if (intMonth == 2) {
	if (intday < 1) {
	err = 8;
	return false;
	}
	if (LeapYear(intYear) == true) {
	if (intday > 29) {
	err = 9;
	return false;
	}
	}
	else {
	if (intday > 28) {
	err = 10;
	return false;
	}
	}
}

if (strDatestyle == "US") {
	datefield.value = strMonthArray[intMonth-1] + " " + intday+" " 
	+ strYear;
} else {
	if(intday<10)
		intday="0"+intday;
	if(intMonth<10)
		intMonth="0"+intMonth;
	datefield.value = intday + "/" + strMonthArray[intMonth-1] + "/" + strYear;
}

return true;
}



function LeapYear(intYear) {
if (intYear % 100 == 0) {
if (intYear % 400 == 0) { return true; }
}
else {
if ((intYear % 4) == 0) { return true; }
}
return false;
}

//Valida si el valor de un objeto de tipo lista
//no ha sido seleccionado (valor-1 o null)
//true=es Vacío
function OpcionEsVacia(objeto)
{
	if (objeto[objeto.selectedIndex].value==-1 || objeto[objeto.selectedIndex].value==null)
		return true;
	else
		return false;
}



/*funcion que restringe el maximo largo de caracteres en un texarea*/

function textCounter(field,maxlimit) {
if (field.value.length > maxlimit) // if too long...trim it!
	field.value = field.value;
//field.value = field.value.substring(0, maxlimit);
}
