/**
 *	Funciones Generales
 *		Quita los espacios vacíos al Principio y al Final de una Cadena de Caracteres
 */
function trim(cadena)
{
	cadena = cadena.replace(/^\s+/, '');
	cadena = cadena.replace(/\s+$/, '');
	return(cadena);
}
/**
 *		Devuelve la tabla de equivalencias entre Entidades HTML y Caracteres
 */
function get_html_translation_table(tabla, estiloEscape)
{
    var entidades = {}, ret = {}, decimal = 0, simbolo = '';
    var constTablas = {}, constEstilosEscape = {};
    var usarTabla = {}, usarEstiloEscape = {};
    
    usarTabla = ((tabla) ? (tabla.toUpperCase()) : ('HTML_SPECIALCHARS'));
    usarEstiloEscape = ((estiloEscape) ? (estiloEscape.toUpperCase()) : ('ENT_COMPAT'));
    
    constTablas[0] = 'HTML_SPECIALCHARS';
    constTablas[1] = 'HTML_ENTITIES';
    constEstilosEscape[0] = 'ENT_NOQUOTES';
    constEstilosEscape[2] = 'ENT_COMPAT';
    constEstilosEscape[3] = 'ENT_QUOTES';
    
    if (!isNaN(usarTabla))
	{
        usarTabla = constTablas[usarTabla];
    }
    if (!isNaN(usarEstiloEscape))
	{
        usarEstiloEscape = constEstilosEscape[usarEstiloEscape];
    }
    
    if (usarEstiloEscape != 'ENT_NOQUOTES')
	{
        entidades['34'] = '&quot;';
    }
 
    if (usarEstiloEscape == 'ENT_QUOTES')
	{
        entidades['39'] = '&#039;';
    }
 
    if (usarTabla == 'HTML_SPECIALCHARS')
	{
        entidades['38'] = '&amp;';
        entidades['60'] = '&lt;';
        entidades['62'] = '&gt;';
    }
	else if (usarTabla == 'HTML_ENTITIES')
	{
      entidades['38']  = '&amp;';
      entidades['60']  = '&lt;';
      entidades['62']  = '&gt;';
      entidades['160'] = '&nbsp;';
      entidades['161'] = '&iexcl;';
      entidades['162'] = '&cent;';
      entidades['163'] = '&pound;';
      entidades['164'] = '&curren;';
      entidades['165'] = '&yen;';
      entidades['166'] = '&brvbar;';
      entidades['167'] = '&sect;';
      entidades['168'] = '&uml;';
      entidades['169'] = '&copy;';
      entidades['170'] = '&ordf;';
      entidades['171'] = '&laquo;';
      entidades['172'] = '&not;';
      entidades['173'] = '&shy;';
      entidades['174'] = '&reg;';
      entidades['175'] = '&macr;';
      entidades['176'] = '&deg;';
      entidades['177'] = '&plusmn;';
      entidades['178'] = '&sup2;';
      entidades['179'] = '&sup3;';
      entidades['180'] = '&acute;';
      entidades['181'] = '&micro;';
      entidades['182'] = '&para;';
      entidades['183'] = '&middot;';
      entidades['184'] = '&cedil;';
      entidades['185'] = '&sup1;';
      entidades['186'] = '&ordm;';
      entidades['187'] = '&raquo;';
      entidades['188'] = '&frac14;';
      entidades['189'] = '&frac12;';
      entidades['190'] = '&frac34;';
      entidades['191'] = '&iquest;';
      entidades['192'] = '&Agrave;';
      entidades['193'] = '&Aacute;';
      entidades['194'] = '&Acirc;';
      entidades['195'] = '&Atilde;';
      entidades['196'] = '&Auml;';
      entidades['197'] = '&Aring;';
      entidades['198'] = '&AElig;';
      entidades['199'] = '&Ccedil;';
      entidades['200'] = '&Egrave;';
      entidades['201'] = '&Eacute;';
      entidades['202'] = '&Ecirc;';
      entidades['203'] = '&Euml;';
      entidades['204'] = '&Igrave;';
      entidades['205'] = '&Iacute;';
      entidades['206'] = '&Icirc;';
      entidades['207'] = '&Iuml;';
      entidades['208'] = '&ETH;';
      entidades['209'] = '&Ntilde;';
      entidades['210'] = '&Ograve;';
      entidades['211'] = '&Oacute;';
      entidades['212'] = '&Ocirc;';
      entidades['213'] = '&Otilde;';
      entidades['214'] = '&Ouml;';
      entidades['215'] = '&times;';
      entidades['216'] = '&Oslash;';
      entidades['217'] = '&Ugrave;';
      entidades['218'] = '&Uacute;';
      entidades['219'] = '&Ucirc;';
      entidades['220'] = '&Uuml;';
      entidades['221'] = '&Yacute;';
      entidades['222'] = '&THORN;';
      entidades['223'] = '&szlig;';
      entidades['224'] = '&agrave;';
      entidades['225'] = '&aacute;';
      entidades['226'] = '&acirc;';
      entidades['227'] = '&atilde;';
      entidades['228'] = '&auml;';
      entidades['229'] = '&aring;';
      entidades['230'] = '&aelig;';
      entidades['231'] = '&ccedil;';
      entidades['232'] = '&egrave;';
      entidades['233'] = '&eacute;';
      entidades['234'] = '&ecirc;';
      entidades['235'] = '&euml;';
      entidades['236'] = '&igrave;';
      entidades['237'] = '&iacute;';
      entidades['238'] = '&icirc;';
      entidades['239'] = '&iuml;';
      entidades['240'] = '&eth;';
      entidades['241'] = '&ntilde;';
      entidades['242'] = '&ograve;';
      entidades['243'] = '&oacute;';
      entidades['244'] = '&ocirc;';
      entidades['245'] = '&otilde;';
      entidades['246'] = '&ouml;';
      entidades['247'] = '&divide;';
      entidades['248'] = '&oslash;';
      entidades['249'] = '&ugrave;';
      entidades['250'] = '&uacute;';
      entidades['251'] = '&ucirc;';
      entidades['252'] = '&uuml;';
      entidades['253'] = '&yacute;';
      entidades['254'] = '&thorn;';
      entidades['255'] = '&yuml;';
    }
	else
	{
        return(false);
    }
    
    for (decimal in entidades)
	{
        simbolo = String.fromCharCode(decimal);
        ret[simbolo] = entidades[decimal];
    }
    
    return(ret);
}
/**
 *		Convierte Entidades HTML en el Caracter correspondiente
 */
function html_entity_decode(cadena, estiloEscape)
{
    var tablaEntidades = {}, simbolo = '', caracter = '', entidad = '';
    caracter = cadena.toString();
    
    if (false === (tablaEntidades = get_html_translation_table('HTML_ENTITIES', estiloEscape)))
	{
        return(false);
    }
 
    delete(tablaEntidades['&']);
    tablaEntidades['&'] = '&amp;';
 
    for (simbolo in tablaEntidades)
	{
        entidad = tablaEntidades[simbolo];
        caracter = caracter.split(entidad).join(simbolo);
    }
    
    return(caracter);
}
/**
 *		Elimina las Etiquetas HTML de una Cadena
 */
function strip_tags(cadena, etiquetasPermitidas)
{
    var clave = '', etiqueta = '', permitida = false;
    var coincidencias = arrayPermitidas = [];
 
    var reemplazar = function(search, replace, cadena)
	{
        return(cadena.split(search).join(replace));
    };
 
    if (etiquetasPermitidas)
	{
        arrayPermitidas = etiquetasPermitidas.match(/([a-zA-Z]+)/gi);
    }
  
    cadena += '';
 
    coincidencias = cadena.match(/(<\/?[^>]+>)/gi);
 
    for (clave in coincidencias)
	{
        if (isNaN(clave))
		{
            continue;
        }
 
        html = coincidencias[clave].toString();
 
        permitida = false;
 
        for (k in arrayPermitidas)
		{
            etiquetaPermitida = arrayPermitidas[k];
            i = -1;
 
            if (i != 0)
			{
				i = html.toLowerCase().indexOf('<' + etiquetaPermitida + '>');
			}
            if (i != 0)
			{
				i = html.toLowerCase().indexOf('<' + etiquetaPermitida + ' ');
			}
            if (i != 0)
			{
				i = html.toLowerCase().indexOf('</' + etiquetaPermitida);
			}
            if (i == 0)
			{
                permitida = true;
                break;
            }
        }
 
        if (!permitida)
		{
            cadena = reemplazar(html, '', cadena);
        }
    }
 
    return(cadena);
}