﻿function delHTMLTags(text, keepbill) {
    return stringWithoutEntitiesNumber(stringWithoutEntitiesNames(stringWithoutHtml(text, keepbill)));
}

function stringWithoutHtml(texte, keepbill) {
    var text = texte;
    var traitee = '';
    var textAvantBalise = ''; 
    var textApresBalise = '';

    // Suppression des balises <style>...</style>
    while (text != '' && text.indexOf('<style>') >= 0 && text.indexOf('</style>') > text.indexOf('<style>')) {
        textAvantBalise = text.substr(0,text.indexOf('<style>')) ; 
        textApresBalise = text.substr(text.indexOf('</style>', text.indexOf('<style>')) + 8 , text.length - text.indexOf('</style>', text.indexOf('<style>'))) ; 
        text = textAvantBalise.concat(textApresBalise) ; 
        textAvantBalise = '' ; 
        textApresBalise = '' ; 
    }

    // Suppression des balises <xml>...</xml>
    while (text != '' && text.indexOf('<xml>') >= 0 && text.indexOf('</xml>') > text.indexOf('<xml>')) {
        textAvantBalise = text.substr(0,text.indexOf('<xml>')) ; 
        textApresBalise = text.substr(text.indexOf('</xml>', text.indexOf('<xml>')) + 6 , text.length - text.indexOf('</xml>', text.indexOf('<xml>'))) ; 
        text = textAvantBalise.concat(textApresBalise) ; 
        textAvantBalise = '' ; 
        textApresBalise = '' ; 
    }

    if (keepbill == 0) {
        // Suppression des balises <...>
        while (text.indexOf('<') >= 0 && text.indexOf('>', text.indexOf('<')) > text.indexOf('<')) {
            text = text.substr(0, text.indexOf('<')) + text.substr(text.indexOf('>', text.indexOf('<')) + 1, text.length);
        }
    } else {
        // Suppression des balises <...> sauf quelques unes
        // !!! Attention : mêmes tests que dans la fonction SQL delHTMLTags !!!
        while (text != '' && text.indexOf('<') >= 0 && text.indexOf('>') > text.indexOf('<')) {
            if (text.indexOf('<') != text.indexOf('<b>') && text.indexOf('<') != text.indexOf('<B>')
                    && text.indexOf('<') != text.indexOf('</b>') && text.indexOf('<') != text.indexOf('</B>')
                    && text.indexOf('<') != text.indexOf('<i>') && text.indexOf('<') != text.indexOf('<I>')
                    && text.indexOf('<') != text.indexOf('</i>') && text.indexOf('<') != text.indexOf('</I>')
                    && text.indexOf('<') != text.indexOf('<ul>') && text.indexOf('<') != text.indexOf('<UL>')
                    && text.indexOf('<') != text.indexOf('</ul>') && text.indexOf('<') != text.indexOf('</UL>')
                    && text.indexOf('<') != text.indexOf('<li>') && text.indexOf('<') != text.indexOf('<LI>')
                    && text.indexOf('<') != text.indexOf('</li>') && text.indexOf('<') != text.indexOf('</LI>')
                    && text.indexOf('<') != text.indexOf('<em>') && text.indexOf('<') != text.indexOf('<EM>')
                    && text.indexOf('<') != text.indexOf('</em>') && text.indexOf('<') != text.indexOf('</EM>')
                    && text.indexOf('<') != text.indexOf('<strong>') && text.indexOf('<') != text.indexOf('<STRONG>')
                    && text.indexOf('<') != text.indexOf('</strong>') && text.indexOf('<') != text.indexOf('</STRONG>')
                    && text.indexOf('<') != text.indexOf('<br>') && text.indexOf('<') != text.indexOf('<BR>')
                    && text.indexOf('<') != text.indexOf('<br/>') && text.indexOf('<') != text.indexOf('<BR/>')
                    && text.indexOf('<') != text.indexOf('<div>') && text.indexOf('<') != text.indexOf('<DIV>')
                    && text.indexOf('<') != text.indexOf('</div>') && text.indexOf('<') != text.indexOf('</DIV>')
            ) {
                text = text.substr(0, text.indexOf('<')) + text.substr(text.indexOf('>', text.indexOf('<')) + 1, text.length);
            } else {
                traitee = traitee + text.substr(0, text.indexOf('>', text.indexOf('<')) + 1, text.length);
                text = text.substr(text.indexOf('>') + 1, text.length);
            }
        }
    }
    text = traitee + text;
    return text;      
}
    
function stringWithoutEntitiesNames(texte) {
    // minuscules
    var text = texte;
    text = text.replace(/&agrave;/g,'à') ; 
    text = text.replace(/&aacute;/g,'á') ; 
    text = text.replace(/&acirc;/g,'â') ;
    text = text.replace(/&atilde;/g,'ã') ;
    text = text.replace(/&auml;/g,'ä') ; 
    text = text.replace(/&aring;/g,'å') ; 
    text = text.replace(/&aelig;/g,'æ') ; 
    text = text.replace(/&ccedil;/g,'ç') ; 
    text = text.replace(/&egrave;/g,'è') ; 
    text = text.replace(/&eacute;/g,'é') ; 
    text = text.replace(/&ecirc;/g,'ê') ; 
    text = text.replace(/&euml;/g,'ë') ; 
    text = text.replace(/&igrave;/g,'ì') ; 
    text = text.replace(/&iacute;/g,'í') ; 
    text = text.replace(/&icirc;/g,'î') ; 
    text = text.replace(/&iuml;/g,'ï') ; 
    text = text.replace(/&eth;/g,'ð') ; 
    text = text.replace(/&ntilde;/g,'ñ') ; 
    text = text.replace(/&ograve;/g,'ò') ; 
    text = text.replace(/&oacute;/g,'ó') ; 
    text = text.replace(/&ocirc;/g,'ô') ; 
    text = text.replace(/&otilde;/g,'õ') ; 
    text = text.replace(/&ouml;/g,'ö') ; 
    text = text.replace(/&oslash;/g,'ø') ; 
    text = text.replace(/&ugrave;/g,'ù') ; 
    text = text.replace(/&uacute;/g,'ú') ; 
    text = text.replace(/&ucirc;/g,'û') ; 
    text = text.replace(/&uuml;/g,'ü') ; 
    text = text.replace(/&yacute;/g,'ý') ; 
    text = text.replace(/&thorn;/g,'þ') ; 
    text = text.replace(/&yuml;/g,'ÿ') ; 
    // majuscules 
    text = text.replace(/&Agrave;/g,'À') ; 
    text = text.replace(/&Aacute;/g,'Á') ; 
    text = text.replace(/&Acirc;/g,'Â') ; 
    text = text.replace(/&Atilde;/g,'Ã') ; 
    text = text.replace(/&Auml;/g,'Ä') ; 
    text = text.replace(/&Aring;/g,'Å') ;
    text = text.replace(/&AElig;/g,'Æ') ; 
    text = text.replace(/&Ccedil;/g,'Ç') ; 
    text = text.replace(/&Egrave;/g,'È') ; 
    text = text.replace(/&Eacute;/g,'É') ; 
    text = text.replace(/&Ecirc;/g,'Ê') ; 
    text = text.replace(/&Euml;/g,'Ë') ; 
    text = text.replace(/&Igrave;/g,'Ì') ; 
    text = text.replace(/&Iacute;/g,'Í') ; 
    text = text.replace(/&Icirc;/g,'Î') ; 
    text = text.replace(/&Iuml;/g,'Ï') ; 
    text = text.replace(/&ETH;/g,'Ð') ; 
    text = text.replace(/&Ntilde;/g,'Ñ') ; 
    text = text.replace(/&Ograve;/g,'Ò') ; 
    text = text.replace(/&Oacute;/g,'Ó') ; 
    text = text.replace(/&Ocirc;/g,'Ô') ; 
    text = text.replace(/&Otilde;/g,'Õ') ; 
    text = text.replace(/&Ouml;/g,'Ö') ; 
    text = text.replace(/&Oslash;/g,'Ø') ; 
    text = text.replace(/&Ugrave;/g,'Ù') ; 
    text = text.replace(/&Uacute;/g,'Ú') ; 
    text = text.replace(/&Ucirc;/g,'Û') ; 
    text = text.replace(/&Uuml;/g,'Ü') ; 
    text = text.replace(/&Yacute;/g,'Ý') ; 
    // autres
    text = text.replace(/&quot;/g,'"') ; 
    text = text.replace(/&apos;/g,"'") ; 
    text = text.replace(/&hellip;/g,'…') ; 
    text = text.replace(/&sbquo;/g,'‚') ; 
    text = text.replace(/&rsquo;/g,'’') ; 
    text = text.replace(/&lsquo;/g,'‘') ; 
    text = text.replace(/&bdquo;/g,'„') ;
    text = text.replace(/&rdquo;/g,'”') ; 
    text = text.replace(/&ldquo;/g,'“') ; 
    text = text.replace(/&rsaquo;/g,'›') ; 
    text = text.replace(/&lsaquo;/g,'‹') ;
    text = text.replace(/&raquo;/g,'»') ; 
    text = text.replace(/&laquo;/g,'«') ;
    text = text.replace(/&amp;/g,'&') ;  
    text = text.replace(/&lt;/g,'<') ; 
    text = text.replace(/&gt;/g,'>') ; 
    text = text.replace(/&nbsp;/g,' ') ;
    // symboles
    text = text.replace(/&iexcl;/g,'¡') ; 
    text = text.replace(/&cent;/g,'¢') ; 
    text = text.replace(/&pound;/g,'£') ;
    text = text.replace(/&curren;/g,'¤') ; 
    text = text.replace(/&yen;/g,'¥') ; 
    text = text.replace(/&brvbar;/g,'¦') ; 
    text = text.replace(/&sect;/g,'§') ; 
    text = text.replace(/&uml;/g,'¨') ; 
    text = text.replace(/&copy;/g,'©') ; 
    text = text.replace(/&ordf;/g,'ª') ; 
    text = text.replace(/&not;/g,'¬') ; 
    text = text.replace(/&reg;/g,'®') ; 
    text = text.replace(/&macr;/g,'¯') ;
    text = text.replace(/&deg;/g,'°') ; 
    text = text.replace(/&plusmn;/g,'±') ; 
    text = text.replace(/&sup2;/g,'²') ; 
    text = text.replace(/&sup3;/g,'³') ; 
    text = text.replace(/&acute;/g,'´') ; 
    text = text.replace(/&micro;/g,'µ') ;
    text = text.replace(/&para;/g,'¶') ; 
    text = text.replace(/&middot;/g,'·') ;
    text = text.replace(/&cedil;/g,'¸') ; 
    text = text.replace(/&sup1;/g,'¹') ;
    text = text.replace(/&ordm;/g,'º') ;
    text = text.replace(/&frac14;/g,'¼') ;
    text = text.replace(/&frac12;/g,'½') ; 
    text = text.replace(/&frac34;/g,'¾') ; 
    text = text.replace(/&iquest;/g,'¿') ;
    text = text.replace(/&times;/g,'×') ;
    text = text.replace(/&divide;/g,'÷') ; 
    return text ;
}
    
function stringWithoutEntitiesNumber(texte) {
    var text = texte;
    var n = 0;
    while (n < 256) {
        text = text.replace(/'#&' + n + ';'/g,String.fromCharCode(n)) ; 
        n++ ; 
    }
    text = text.replace(/#&338;/g,String.fromCharCode(338)) ; 
    text = text.replace(/#&339;/g,String.fromCharCode(339)) ; 
    text = text.replace(/#&8209;/g,String.fromCharCode(8209)) ; 
    text = text.replace(/#&8211;/g,String.fromCharCode(8211)) ; 
    text = text.replace(/#&8212;/g,String.fromCharCode(8212)) ; 
    text = text.replace(/#&8216;/g,String.fromCharCode(8216)) ; 
    text = text.replace(/#&8217;/g,String.fromCharCode(8217)) ; 
    text = text.replace(/#&8220;/g,String.fromCharCode(8220)) ; 
    text = text.replace(/#&8221;/g,String.fromCharCode(8221)) ; 
    text = text.replace(/#&8230;/g,String.fromCharCode(8230)) ; 
    text = text.replace(/#&9658;/g,String.fromCharCode(9658)) ; 
    text = text.replace(/#&64257;/g,String.fromCharCode(64257)) ; 
    return text ; 
}

function trunc(text, maxlength) {
    var tmpText = delHTMLTags(text, 1);
    while (delHTMLTags(tmpText, 0).length > maxlength) {
        tmpText = tmpText.substr(0, tmpText.length - 1);
    }
    return tmpText;
}

/*************************************************************************************************************
* tout selectionner - tout déselectionner générique
*************************************************************************************************************/
/* Tout Sélectionner générique */
function ToutSelectionnerGenerique(name)
{
  for( i = 0 ; i < window.document.getElementsByTagName("input").length ; i++)
  {
    if(window.document.getElementsByTagName("input")[i].id.indexOf(name) >= 0)
    {
      if(!window.document.getElementsByTagName("input")[i].disabled)
      {
        window.document.getElementsByTagName("input")[i].checked = true;
      }
    }
  }
}

/* Tout Désélectionner générique */
function ToutDeselectionnerGenerique(name)
{
  for( i = 0 ; i < window.document.getElementsByTagName("input").length ; i++)
  {
    if(window.document.getElementsByTagName("input")[i].id.indexOf(name) >= 0)
    {
      if(!window.document.getElementsByTagName("input")[i].disabled)
      {
        window.document.getElementsByTagName("input")[i].checked = false;
      }
    }
  }
}


/*************************************************************************************************************
* complement de la sélection des case à cocher générique 
*************************************************************************************************************/
function ComplementSelection(name)
{
  for( i = 0 ; i < window.document.getElementsByTagName("input").length ; i++)
  {
    if(window.document.getElementsByTagName("input")[i].id.indexOf(name) >= 0)
    {
      if(!window.document.getElementsByTagName("input")[i].disabled)
      {
        window.document.getElementsByTagName("input")[i].checked = !window.document.getElementsByTagName("input")[i].checked;
      }
    }
  }
}

