function LCase(STRING){

return STRING.toLowerCase();

}
function Right(STRING,CHARACTER_COUNT){

return STRING.substring((STRING.length - CHARACTER_COUNT),STRING.length);

}
function doit() {
    text = document.test.output.value;

    text = replace(text,'"',unescape('%22'));
    text = replace(text,'&',unescape('%26'));
    text = replace(text,'<',unescape('%3C'));
    text = replace(text,'>',unescape('%3E'));
    text = replace(text,' ',unescape('%A0'));
    text = replace(text,'¡',unescape('%A1'));
    text = replace(text,'¢',unescape('%A2'));
    text = replace(text,'£',unescape('%A3'));
    text = replace(text,'¥',unescape('%A5'));
    text = replace(text,'¦',unescape('%A6'));
    text = replace(text,'§',unescape('%A7'));
    text = replace(text,'¨',unescape('%A8'));
    text = replace(text,'©',unescape('%A9'));
    text = replace(text,'ª',unescape('%AA'));
    text = replace(text,'«',unescape('%AB'));
    text = replace(text,'¬',unescape('%AC'));
    text = replace(text,'­',unescape('%AD'));
    text = replace(text,'®',unescape('%AE'));
    text = replace(text,'¯',unescape('%AF'));
    text = replace(text,'°',unescape('%B0'));
    text = replace(text,'±',unescape('%B1'));
    text = replace(text,'²',unescape('%B2'));
    text = replace(text,'³',unescape('%B3'));
    text = replace(text,'´',unescape('%B4'));
    text = replace(text,'µ',unescape('%B5'));
    text = replace(text,'¶',unescape('%B6'));
    text = replace(text,'·',unescape('%B7'));
    text = replace(text,'¸',unescape('%B8'));
    text = replace(text,'¹',unescape('%B9'));
    text = replace(text,'º',unescape('%BA'));
    text = replace(text,'»',unescape('%BB'));
    text = replace(text,'¼',unescape('%BC'));
    text = replace(text,'½',unescape('%BD'));
    text = replace(text,'¾',unescape('%BE'));
    text = replace(text,'¿',unescape('%BF'));
    text = replace(text,'À',unescape('%C0'));
    text = replace(text,'Á',unescape('%C1'));
    text = replace(text,'Â',unescape('%C2'));
    text = replace(text,'Ã',unescape('%C3'));
    text = replace(text,'Ä',unescape('%C4'));
    text = replace(text,'Å',unescape('%C5'));
    text = replace(text,'Æ',unescape('%C6'));
    text = replace(text,'Ç',unescape('%C7'));
    text = replace(text,'È',unescape('%C8'));
    text = replace(text,'É',unescape('%C9'));
    text = replace(text,'Ê',unescape('%CA'));
    text = replace(text,'Ë',unescape('%CB'));
    text = replace(text,'Ì',unescape('%CC'));
    text = replace(text,'Í',unescape('%CD'));
    text = replace(text,'Î',unescape('%CE'));
    text = replace(text,'Ï',unescape('%CF'));
    text = replace(text,'Ð',unescape('%D0'));
    text = replace(text,'Ñ',unescape('%D1'));
    text = replace(text,'Ò',unescape('%D2'));
    text = replace(text,'Ó',unescape('%D3'));
    text = replace(text,'Ô',unescape('%D4'));
    text = replace(text,'Õ',unescape('%D5'));
    text = replace(text,'Ö',unescape('%D6'));
    text = replace(text,'×',unescape('%D7'));
    text = replace(text,'Ø',unescape('%D8'));
    text = replace(text,'Ù',unescape('%D9'));
    text = replace(text,'Ú',unescape('%DA'));
    text = replace(text,'Û',unescape('%DB'));
    text = replace(text,'Ü',unescape('%DC'));
    text = replace(text,'Ý',unescape('%DD'));
    text = replace(text,'Þ',unescape('%DE'));
    text = replace(text,'ß',unescape('%DF'));
    text = replace(text,'à',unescape('%E0'));
    text = replace(text,'á',unescape('%E1'));
    text = replace(text,'â',unescape('%E2'));
    text = replace(text,'ã',unescape('%E3'));
    text = replace(text,'ä',unescape('%E4'));
    text = replace(text,'å',unescape('%E5'));
    text = replace(text,'æ',unescape('%E6'));
    text = replace(text,'ç',unescape('%E7'));
    text = replace(text,'è',unescape('%E8'));
    text = replace(text,'é',unescape('%E9'));
    text = replace(text,'ê',unescape('%EA'));
    text = replace(text,'ë',unescape('%EB'));
    text = replace(text,'ì',unescape('%EC'));
    text = replace(text,'í',unescape('%ED'));
    text = replace(text,'î',unescape('%EE'));
    text = replace(text,'ï',unescape('%EF'));
    text = replace(text,'ð',unescape('%F0'));
    text = replace(text,'ñ',unescape('%F1'));
    text = replace(text,'ò',unescape('%F2'));
    text = replace(text,'ó',unescape('%F3'));
    text = replace(text,'ô',unescape('%F4'));
    text = replace(text,'õ',unescape('%F5'));
    text = replace(text,'ö',unescape('%F6'));
    text = replace(text,'÷',unescape('%F7'));
    text = replace(text,'ø',unescape('%F8'));
    text = replace(text,'ù',unescape('%F9'));
    text = replace(text,'ú',unescape('%FA'));
    text = replace(text,'û',unescape('%FB'));
    text = replace(text,'ü',unescape('%FC'));
    text = replace(text,'ý',unescape('%FD'));
    text = replace(text,'þ',unescape('%FE'));
    text = replace(text,'ÿ',unescape('%FF'));

    document.test.output.value = text;
}


function replace(string,text,by) {
// Replaces text with by in string
    var strLength = string.length, txtLength = text.length;
    if ((strLength == 0) || (txtLength == 0)) return string;

    var i = string.indexOf(text);
    if ((!i) && (text != string.substring(0,txtLength))) return string;
    if (i == -1) return string;

    var newstr = string.substring(0,i) + by;

    if (i+txtLength < strLength)
        newstr += replace(string.substring(i+txtLength,strLength),text,by);

    return newstr;
}


function ValidadRadioButton (radio, cDetalleCampo )
{   for (var i = 0; i < radio.length; i++)
    {   if (radio[i].checked) { 
    	return (true);
    	}
    }
    radio[0].focus();
    alert("Seleccione una opción en el campo \"" + cDetalleCampo + "\".");
  
    return (false);
}


function SubValores (cadena,posicion,cbus) {
	var loncad, armasalida, npos
	loncad=cadena.length;
	armasalida="";
	while (posicion<=loncad){
		npos=cadena.substr(posicion,1);
		if (npos==cbus)
			break;
		armasalida=armasalida+npos;
		posicion++;
		}
	return (armasalida);
}

function ValidaFecha ( oObjeto, cDetalleCampo  ) {
	var valor = oObjeto.value;
	posicion=0;
	vdia=SubValores(valor,posicion,"/");
	//alert ("vdia="+vdia);
	posicion=posicion+vdia.length+1;
	
	if (vdia.length < 2)  {
		vdia = "0" + vdia ;	
	}
	vmes=SubValores(valor,posicion,"/");
	//alert ("vmes="+vmes);
	posicion=posicion+vmes.length+1;
	
	if (vmes.length < 2)  {
		vmes = "0" + vmes ;	
	}	
	
	vanio=SubValores(valor,posicion,"/");
	var vfecha = new Date(vanio, vmes, vdia);
	//alert(vdia);
	ok=( (vanio.length == 4) & (vmes > 0) & (vmes < 13) ) ;
	if (! ok) {
		alert("Fecha no válida en el campo \"" + cDetalleCampo  + "\".");
		oObjeto.focus();
		return (false);
	}	
	oObjeto.value =  vdia + "/" + vmes +"/"  + vanio ; 
	return (true);
}

function RecuperaValorLista( oObjeto, cValor) {
	for (var i=0;i<oObjeto.options.length;i++) {
		    if (oObjeto.options[i].value == cValor) {
		        oObjeto.options[i].selected = true;
		        break;
			}
  }
}
function RecuperaValorRadio( oObjeto, cValor) {
	for (var i=0;i<oObjeto.length;i++) {
		    if (oObjeto[i].value == cValor) {
		        oObjeto[i].checked  = true;
			}
  }
}

function StrTrim ( cString){
	var iPosInicio = -1;
	var iPosFinal = 0;
	for (var i = 0;  i < cString.length;  i++) {
		if (iPosInicio == -1 && cString.charAt(i)!=" ") iPosInicio =i;
		if (iPosInicio != -1 && cString.charAt(i)!=" ") iPosFinal =i;
	}
	if (iPosInicio == -1 ) {
		return "";
	} else {
		return cString.substring ( iPosInicio, iPosFinal + 1)
	}
}


function StrValidaLista ( oObjeto, cDetalleCampo){
	if (oObjeto.selectedIndex == 0 ) 
	{
		alert("Seleccione una opción para: \"" + cDetalleCampo  + "\".");

		oObjeto.focus();
		return (false);
	} 
	return (true);
} 

function StrValidaSize ( oObjeto, nMinLenght, nMaxLenght,  cDetalleCampo, llTrim ){
	if (StrValidaSize.arguments.length<5) llTrim = true;
	if (llTrim == true) oObjeto.value = StrTrim( oObjeto.value);
	var ValorObjeto =  oObjeto.value;
	// Valida el tamaño minimo
	if (ValorObjeto.length < nMinLenght ) 
	{
		if ( nMinLenght == 1 ) {
			alert(valid_complete1 + " \"" + cDetalleCampo  + "\".");
		} else {
			alert(valid_complete2 + nMinLenght  + " " + valid_complete2b  +" \"" + cDetalleCampo+ "\".");
		}

		oObjeto.focus();
		return (false);
	} 
	// Valida en caso de que se especifico un tamaño máximo
	if ( nMaxLenght>0 && ValorObjeto.length > nMaxLenght ) 
	{
		alert("Escriba como máximo " + nMaxLenght + " caracteres en el campo \"" + cDetalleCampo+ "\".");
		oObjeto.focus();
		return (false);
	} 
	return (true);
} 

function StrValidaEmailCaracteres (  cDetalleCampo ){
  var checkOK = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-@._";
  var checkStr = cDetalleCampo ;
  var allValid = true;
  for (i = 0;  i < checkStr.length;  i++)
  {
    ch = checkStr.charAt(i);
    for (j = 0;  j < checkOK.length;  j++)
      if (ch == checkOK.charAt(j))
        break;
    if (j == checkOK.length)
    {
      allValid = false;
      break;
    }
  }
  if (!allValid)
  {
    return (false);
  }
  return (true);
}



function StrValidaCaracteres ( oObjeto, cDetalleCampo ){
  var checkOK = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzƒŠŒŽšœžŸÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþÿ0123456789-@._";
  var checkStr = oObjeto.value;
  var allValid = true;
  for (i = 0;  i < checkStr.length;  i++)
  {
    ch = checkStr.charAt(i);
    for (j = 0;  j < checkOK.length;  j++)
      if (ch == checkOK.charAt(j))
        break;
    if (j == checkOK.length)
    {
      allValid = false;
      break;
    }
  }
  if (!allValid)
  {
    alert("Escriba sólo letras y/o números, sin espacios en blanco\"" + cDetalleCampo + "\".");
    oObjeto.value =""
    oObjeto.focus();
    return (false);
  }
  return (true);
}

function aNumFloat ( cvalor) {
  var lnValor 	
  lnValor = parseFloat(	 cvalor)
  if (isNaN(lnValor ) == true ){
      lnValor  = 0;
  }
  return lnValor ;
}


function StrValidaSoloNumeros ( oObjeto, cDetalleCampo, cModo ){
  
  oObjeto.value = StrTrim ( oObjeto.value );

  if (StrValidaSoloNumeros.arguments.length<3) cModo = "";

  var checkOK = "0123456789";
  
  var nAtPunto; 
  var lnCantDecimales;
  var lnCantDecimales2;
  nAtPunto = F_StrAt ( ".", cModo  );
  if( nAtPunto  > 0) {
  	checkOK = checkOK + ".";
  	lnCantDecimales2 =  "0" + cModo.charAt(nAtPunto);
  	lnCantDecimales  =  parseInt (lnCantDecimales2);
  	// Verifica si el dato tiene los decimales correspondientes
  	var nAtEnNumero;
  	nAtEnNumero =F_StrAt ( ".", oObjeto.value );
  	if (lnCantDecimales >0 & nAtEnNumero>0 ) {
		if (oObjeto.value.length >  nAtEnNumero + lnCantDecimales ) {
		    alert("Solo se permiten " + lnCantDecimales + " decimales \"" + cDetalleCampo + "\".");
		    oObjeto.focus();
		    return (false);
		}
	} 	
  }

  
  var checkStr = oObjeto.value;
  var allValid = true;
  for (i = 0;  i < checkStr.length;  i++)
  {
    ch = checkStr.charAt(i);
    for (j = 0;  j < checkOK.length;  j++)
      if (ch == checkOK.charAt(j))
        break;
    if (j == checkOK.length)
    {
      allValid = false;
      break;
    }
  }
  if (!allValid)
  {
    alert("Escriba sólo números, sin espacios en blanco en  \"" + cDetalleCampo + "\".");
    oObjeto.focus();
    return (false);
  }
  if( F_StrAt ( "+", cModo  ) > 0) {
  	if ( parseFloat(oObjeto.value )<0 ) {
	    alert("Escriba un número mayor a 0 en \"" + cDetalleCampo + "\".");
	    oObjeto.focus();
	    return (false);
  	}
  }
  
  if( F_StrAt ( "D", cModo  ) > 0) {
  	if ( parseFloat(oObjeto.value )==0 || isNaN(parseFloat(oObjeto.value )) ) {
	    alert("Debe completar con un  número en \"" + cDetalleCampo + "\".");
	    oObjeto.focus();
	    return (false);
  	}
  }

  return (true);
}



function StrValidaMail ( oObjeto, cModo, cDetalleCampo ){
	str = StrTrim (oObjeto.value);
	if (str == "" && cModo=="b") {
	   return true;
	}
	var at="@"
	var dot="."
	var lat=str.indexOf(at)
	var lstr=str.length
	var ldot=str.indexOf(dot)
	calert = ""
	if (str.indexOf(at)==-1){
	    calert = "No Válido";
	}

	if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr){
	    calert = "No Válido";
	}

	if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr){
	    calert = "No Válido";
	}

	 if (str.indexOf(at,(lat+1))!=-1){
	    calert = "No Válido";
	 }

	 if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot){
	    calert = "No Válido";
	 }

	 if (str.indexOf(dot,(lat+2))==-1){
	    calert = "No Válido";
	 }

	 if (str.indexOf(" ")!=-1){
	    calert = "No Válido";
	 }
  	 if  (StrValidaEmailCaracteres ( str) ==false ) {
  	    calert = "No se permiten ñ ni letras fuera de la A-Z";
  	 } else {
	 }	

	 if (calert != "") {
	    alert(calert + ". Escriba la direccion del correo correctamente en el campo \"" + cDetalleCampo + "\".");
	    oObjeto.focus();
	    return (false);

	 }

	 return true					

}

function F_StrAt ( cAt, cString ){
  var nAt = 0;
  for (i = 0;  i < cString.length;  i++)
  {
    ch = cString.charAt(i);
    if (ch == cAt) {
        nAt = i + 1 ;
		break;
    }
  }
  return (nAt);
}

function InStr(n, s1, s2){
	// Devuelve la posición de la primera ocurrencia de s2 en s1
	// Si se especifica n, se empezará a comprobar desde esa posición
	// Sino se especifica, los dos parámetros serán las cadenas
	var numargs=InStr.arguments.length;	
	if(numargs<3)
		return n.indexOf(s1)+1;
	else
		return s1.indexOf(s2, n)+1;
}

function Occurs ( s1, s2){
	// la cantidad de veces que se repite s2 en s1
	lnOccurs=0;
	lnPosicion=0;
	while (0==0) {
		npos = InStr( lnPosicion, s1, s2);
		
		if (npos==0) {
			break;
		} else {
			lnPosicion = npos +  s2.length	;
			lnOccurs = lnOccurs + 1 ;
		}
	}
	return lnOccurs;
}

function StringToGeneral ( oObjeto, cDetalleCampo ){
  var checkStr = oObjeto.value;
  
  var allValid = true;
  cRetorno_StringToGeneral = ""
  var chascii;
  for (i = 0;  i < checkStr.length;  i++)
  {
    ch = checkStr.charAt(i);
    chascii = ch.charCodeAt (0);
  	if (chascii == 193 || chascii == 192 || chascii == 225 || chascii == 224) ch = "A";
  	if (chascii == 200 || chascii == 201 || chascii == 233 || chascii == 232)  ch = "E";
  	if (chascii == 205 || chascii == 204 || chascii == 237 || chascii == 236) ch = "I";
	if (chascii == 211 || chascii == 210 || chascii == 243 || chascii == 242) ch = "O";
	if (chascii == 218 || chascii == 217 || chascii == 250 || chascii == 249 || ch == 252 || ch == 220 ) ch = "U";
	if (chascii == 241) ch = "Ñ";
	if (chascii == 180 ) ch = "'";
    ch = ch.toUpperCase();
	cRetorno_StringToGeneral = cRetorno_StringToGeneral + ch;
  }
  return (cRetorno_StringToGeneral);
}

function isRadioVacio (oObjeto,cDetalleCampo) {
	var llVacio = false
	for (var i=0; i<oObjeto.length; i++) {
        if (oObjeto[i].checked == true) {
			 llVacio = true
		}
    }
    if (llVacio == false) {
		alert("Complete el dato para el campo \"" + cDetalleCampo  + "\".");
		oObjeto[0].focus();
		return (false);
	}
	return (true);
}


function  f_mod  (lnNumero, lnDivisor) {
	var lnResultado ; 
	lnResultado  = parseInt(lnNumero/ lnDivisor);
	return lnNumero - (lnResultado * lnDivisor);
}


