function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_nbGroup(event, grpName) { //v6.0
  var i,img,nbArr,args=MM_nbGroup.arguments;
  if (event == "init" && args.length > 2) {
    if ((img = MM_findObj(args[2])) != null && !img.MM_init) {
      img.MM_init = true; img.MM_up = args[3]; img.MM_dn = img.src;
      if ((nbArr = document[grpName]) == null) nbArr = document[grpName] = new Array();
      nbArr[nbArr.length] = img;
      for (i=4; i < args.length-1; i+=2) if ((img = MM_findObj(args[i])) != null) {
        if (!img.MM_up) img.MM_up = img.src;
        img.src = img.MM_dn = args[i+1];
        nbArr[nbArr.length] = img;
    } }
  } else if (event == "over") {
    document.MM_nbOver = nbArr = new Array();
    for (i=1; i < args.length-1; i+=3) if ((img = MM_findObj(args[i])) != null) {
      if (!img.MM_up) img.MM_up = img.src;
      img.src = (img.MM_dn && args[i+2]) ? args[i+2] : ((args[i+1])? args[i+1] : img.MM_up);
      nbArr[nbArr.length] = img;
    }
  } else if (event == "out" ) {
    for (i=0; i < document.MM_nbOver.length; i++) {
      img = document.MM_nbOver[i]; img.src = (img.MM_dn) ? img.MM_dn : img.MM_up; }
  } else if (event == "down") {
    nbArr = document[grpName];
    if (nbArr)
      for (i=0; i < nbArr.length; i++) { img=nbArr[i]; img.src = img.MM_up; img.MM_dn = 0; }
    document[grpName] = nbArr = new Array();
    for (i=2; i < args.length-1; i+=2) if ((img = MM_findObj(args[i])) != null) {
      if (!img.MM_up) img.MM_up = img.src;
      img.src = img.MM_dn = (args[i+1])? args[i+1] : img.MM_up;
      nbArr[nbArr.length] = img;
  } }
}


function placeFocus() {
if (document.forms.length > 0) {
var field = document.forms[0];
for (i = 0; i < field.length; i++) {
if ((field.elements[i].type == "text") || (field.elements[i].type == "textarea") || (field.elements[i].type.toString().charAt(0) == "s")) { document.forms[0].elements[i].focus();
break;
         }
      }
   }
}


function reemplazar(s, t, u) {

  i = s.indexOf(t);
  r = "";
  if (i == -1) return s;
  r += s.substring(0,i) + u;
  if ( i + t.length < s.length)
    r += reemplazar(s.substring(i + t.length, s.length), t, u);
  return r;
}

function validaform(form){
	form.tokensH.value=form.tokens.value;
	form.tokensH.value=form.tokensH.value.replace('á','&#225;');
	form.tokensH.value=form.tokensH.value.replace('é','&#233;');
	form.tokensH.value=form.tokensH.value.replace('í','&#237;');
	form.tokensH.value=form.tokensH.value.replace('ó','&#243;');
	form.tokensH.value=form.tokensH.value.replace('ú','&#250;');
	form.tokensH.value=form.tokensH.value.replace('Á','&#193;');
	form.tokensH.value=form.tokensH.value.replace('É','&#201;');
	form.tokensH.value=form.tokensH.value.replace('Í','&#205;');
	form.tokensH.value=form.tokensH.value.replace('Ó','&#211;');
	form.tokensH.value=form.tokensH.value.replace('Ú','&#218;');
	form.tokensH.value=form.tokensH.value.replace('ñ','&#241;');
	form.tokensH.value=form.tokensH.value.replace('Ñ','&#209;');
	form.tokensH.value=form.tokensH.value.replace('ü','&#252;');
	form.tokensH.value=form.tokensH.value.replace('Ü','&#220;');

	if(form.tokens.value=="")
	alert("La búsqueda no puede ser vacía");
	else
	form.submit();
}


function ValidarNumero(rangoMax,rangoMin,objeto){
	if(objeto.value == "undefined"){
		str =objeto;
	}else
		str = objeto.value;

	
	if(isEmpty(str))
		return "VACIO";
	//Se eliminan los espacios demas (adornos).		
	str = Trim(str);
	if(objeto.value)
		objeto.value = str;
	
	if (isNaN(Number(str)) || (!esDigito(str) ) ) 
		return "NO_ES_NUMERO";

	if(str.indexOf('-',0) != -1)
		return "NUMERO_NEGATIVO";

	var parteEnteraPermitida = parteEntera(rangoMax);
	var parteEnteraStr = parteEntera(str);
//si la longitud de la parte entera de la definicion del dato es mayor a  15 validar los largos.

	if( ((parteEnteraPermitida.length > 15)? (parteEnteraStr.length > parteEnteraPermitida.length):(parseFloat(parteEnteraStr) > parseFloat(parteEnteraPermitida) ) )|| (parteEnteraStr < rangoMin))
	      return "FUERA_DE_RANGO_ENTERO";
	var parteEnteraPermitidaEsMayor = (parteEnteraPermitida.length > 15)? (parteEnteraStr.length < parteEnteraPermitida.length):(new Number(parteEnteraStr) < new Number(parteEnteraPermitida) );
	 //Si la definicion del dato es un decimal (Float)
	 if(rangoMax.indexOf(".",0) != -1 ) {
		var	numDecPermitido = rangoMax.length -(rangoMax.indexOf(".",0) + 1);
	 	if(str.indexOf(".",0) != -1){
			var decimalesStr = str.length - (str.indexOf(".",0) + 1);
			var punteroStr = str.length - 1; 
			while(str.indexOf(".",0)  < punteroStr){
				if(str.charAt(punteroStr)== '0'){
					decimalesStr--;
					punteroStr--;
					continue;
				}
			break
			}
			if( (parteEnteraPermitidaEsMayor)?(decimalesStr >  numDecPermitido):(parseFloat(str.substring(str.indexOf(".",0),str.length ) ) > parseFloat(rangoMax.substring(rangoMax.indexOf(".",0),rangoMax.length) )))
				return "FUERA_DE_RANGO_DECIMAL";
		}

	 }else{
	 	if(str.indexOf(".",0) != -1)
		  return "NUMERO_FLOAT";
	 
	 }
return "NUMERO_VALIDO";
}



function esDigito(str)
{
	 var ch
	 if (str.length == 0)
		 return false;
	 for (var i = 0 ; i < str.length ; i++) {
		 ch = str.charAt(i);
		 if ( (ch < '0' || ch > '9' ) && ch !='.' && ch != '-' )
				return false;
	 }
	 return true;    
}




function isEmpty(s)
{   return ((s == null) || (s.length == 0))
}

function ValidarValor(valor,objSelected)
{

       if (objSelected.options[objSelected.selectedIndex].value == "P"){                               
                               if (valor < 0 || valor > 100){
                                       return "FUERA_RANGO_PORCENTAJE";
                                }
         }
//alert("pasa 2 ");
       if (objSelected.options[objSelected.selectedIndex].value == "L"){
                        
//                      alert("valor "+valor);
                                if ((valor < 0) || (valor > 1000)){
                                        return "FUERA_RANGO_POR_MIL";
                                }
           }
                        
           if (objSelected.options[objSelected.selectedIndex].value == "M"){
                               
                                if ((valor < 0) || (valor > 9999.999)){
                                        return "FUERA_RANGO_MONTO" ;                                    
                                }

           }       
        return "RANGO_PERMITIDO"
}


function comparaNumeros(numeroUno,numeroDos){
	return parseFloat(numeroDos) - parseFloat(numeroUno); 
	
	}



function ValidarFecha( campoFecha, anioMax,anioMin){
	var fecha = campoFecha.value;

	if(isEmpty(campoFecha.value))
	return "VACIO";
	
	var expregFecha = /\d\d?(\/|-)\d\d?(\/|-)\d\d\d\d/;

	if( fecha.length > 10
	||fecha.search(expregFecha) == -1 )
	return "ERROR_FORMATO_FECHA";

	var diaMesanio;
	if(fecha.indexOf('/')!=-1 )
	 diaMesanio =  fecha.split('/');
			else
	 diaMesanio =  fecha.split('-');
	if(ValidarFecha.arguments.length == 1){	 
	//Se colocan por defecto los rangos anios.
	var anioMax = 3000;
	var anioMin = 1900;
	}
	var resultado = ValidaDiaMesAnio(new Number(diaMesanio[0]), new Number(diaMesanio[1]), new Number(diaMesanio[2]),anioMax,anioMin);
        if (resultado != "DIA_MES_ANO_VALIDO" ) 
	  	   return resultado;


	       return "FECHA_VALIDA";

}





function ValidaDiaMesAnio(dia, mes, anio,anioMax,anioMin)
{
	// Valida cantidad maxima de dias
	if (dia > 31||dia < 1) 
		return "NO_ES_DIA";
	// Valida cantidad maxima de meses
	if (mes > 12||mes < 1)
		return "NO_ES_MES";
	// Valida los meses de 30 dias
	if ((mes==4||mes==6||mes==9||mes==11)&&(dia>30))
		return "DIA_INVALIDO";

	// Valida febrero
	if (mes==2 && dia>28 && anio%4!=0) 
		return "ANO_NO_BISIESTO";
	if(mes ==2 && dia > 29)
		return "NO_ES_DIA";
var resultado = ValidaAnio(anio,anioMax,anioMin);
	if(resultado != "ANIO_VALIDO" )
		return	resultado;
	return "DIA_MES_ANO_VALIDO";
}

function ValidaAnio(anio,anioMax,anioMin){
if(isEmpty(anio))
	return "ANIO_VACIO"
else if(anio > anioMax)
	return "ANIO_MAYOR";
else if(anio < anioMin)
	return "ANIO_MENOR";
return"ANIO_VALIDO"
}

function ValidarRut(rut, dv) {
    var suma = 0;
    var mul = 2;
    var i = 0;
    for (i = rut.length-1; i >= 0; i--) {
        suma = suma + rut.charAt(i) * mul;
        mul = mul==7 ? 2 : mul+1;
    }
    var dvr = '' + (11 - suma % 11);
    if (dvr == '10')
        dvr = 'K';
    else if (dvr=='11')
        dvr = '0';
    if (dvr != dv.toUpperCase() )
        return false;
    else
        return true;
}

function isEmail(str) {
  // 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 (str.indexOf(".") > 2) && (str.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(str) && r2.test(str));
}





function ObtieneInfoCliente()
{   // convert all characters to lowercase to simplify testing
    var agt=navigator.userAgent.toLowerCase();

    // *** BROWSER VERSION ***
    // Note: On IE5, these return 4, so use is.ie5up to detect IE5
    // or is.ie6up to detect IE6.

    this.major = parseInt(navigator.appVersion);
    this.minor = parseFloat(navigator.appVersion);

    // Note: Opera and WebTV spoof Navigator.  We do strict client detection.
    // If you want to allow spoofing, take out the tests for opera and webtv.
    this.nav  = ((agt.indexOf('mozilla')!=-1) && (agt.indexOf('spoofer')==-1)
                && (agt.indexOf('compatible') == -1) && (agt.indexOf('opera')==-1)
                && (agt.indexOf('webtv')==-1) && (agt.indexOf('hotjava')==-1));
    this.nav2 = (this.nav && (this.major == 2));
    this.nav3 = (this.nav && (this.major == 3));
    this.nav4 = (this.nav && (this.major == 4));
    this.nav4up = (this.nav && (this.major >= 4));
    this.navonly      = (this.nav && ((agt.indexOf(";nav") != -1) ||
                          (agt.indexOf("; nav") != -1)) );
    this.nav6 = (this.nav && (this.major == 5));
    this.nav6up = (this.nav && (this.major >= 5));
    this.gecko = (agt.indexOf('gecko') != -1);


    this.ie     = ((agt.indexOf("msie") != -1) && (agt.indexOf("opera") == -1));
    this.ie3    = (this.ie && (this.major < 4));
    this.ie4    = (this.ie && (this.major == 4) && (agt.indexOf("msie 4")!=-1) );
    this.ie4up  = (this.ie  && (this.major >= 4));
    this.ie5    = (this.ie && (this.major == 4) && (agt.indexOf("msie 5.0")!=-1) );
    this.ie5_5  = (this.ie && (this.major == 4) && (agt.indexOf("msie 5.5") !=-1));
    this.ie5up  = (this.ie  && !this.ie3 && !this.ie4);
    this.ie5_5up =(this.ie && !this.ie3 && !this.ie4 && !this.ie5);
    this.ie6    = (this.ie && (this.major == 4) && (agt.indexOf("msie 6.")!=-1) );
    this.ie6up  = (this.ie  && !this.ie3 && !this.ie4 && !this.ie5 && !this.ie5_5);

    // KNOWN BUG: On AOL4, returns false if IE3 is embedded browser
    // or if this is the first browser window opened.  Thus the
    // variables is.aol, is.aol3, and is.aol4 aren't 100% reliable.
    this.aol   = (agt.indexOf("aol") != -1);
    this.aol3  = (this.aol && this.ie3);
    this.aol4  = (this.aol && this.ie4);
    this.aol5  = (agt.indexOf("aol 5") != -1);
    this.aol6  = (agt.indexOf("aol 6") != -1);

    this.opera = (agt.indexOf("opera") != -1);
    this.opera2 = (agt.indexOf("opera 2") != -1 || agt.indexOf("opera/2") != -1);
    this.opera3 = (agt.indexOf("opera 3") != -1 || agt.indexOf("opera/3") != -1);
    this.opera4 = (agt.indexOf("opera 4") != -1 || agt.indexOf("opera/4") != -1);
    this.opera5 = (agt.indexOf("opera 5") != -1 || agt.indexOf("opera/5") != -1);
    this.opera5up = (this.opera && !this.opera2 && !this.opera3 && !this.opera4);

    this.webtv = (agt.indexOf("webtv") != -1); 

    this.TVNavigator = ((agt.indexOf("navio") != -1) || (agt.indexOf("navio_aoltv") != -1)); 
    this.AOLTV = this.TVNavigator;

    this.hotjava = (agt.indexOf("hotjava") != -1);
    this.hotjava3 = (this.hotjava && (this.major == 3));
    this.hotjava3up = (this.hotjava && (this.major >= 3));

    // *** JAVASCRIPT VERSION CHECK ***
    if (this.nav2 || this.ie3) this.js = 1.0;
    else if (this.nav3) this.js = 1.1;
    else if (this.opera5up) this.js = 1.3;
    else if (this.opera) this.js = 1.1;
    else if ((this.nav4 && (this.minor <= 4.05)) || this.ie4) this.js = 1.2;
    else if ((this.nav4 && (this.minor > 4.05)) || this.ie5) this.js = 1.3;
    else if (this.hotjava3up) this.js = 1.4;
    else if (this.nav6 || this.gecko) this.js = 1.5;
    // NOTE: In the future, update this code when newer versions of JS
    // are released. For now, we try to provide some upward compatibility
    // so that future versions of Nav and IE will show they are at
    // *least* JS 1.x capable. Always check for JS version compatibility
    // with > or >=.
    else if (this.nav6up) this.js = 1.5;
    // note ie5up on mac is 1.4
    else if (this.ie5up) this.js = 1.3

    // HACK: no idea for other browsers; always check for JS version with > or >=
    else this.js = 0.0;

}



