
var i = 1;
var antiflood = false;
var last = 0;

date = new Date ();

date_js = 3600 * date.getHours () + 60 * date.getMinutes () + date.getSeconds ();

// Afficher ou masquer un cadre
function Toggle ( id )
{
    if ( document.getElementById ( id ).style.display == 'none' )
    {
        document.getElementById ( id ).style.display = 'block';
        document.getElementById ( id + 'i' ).src = './themes/Chuwiki/images/fleche_asc.bmp';
    }
    else
    {
        document.getElementById ( id ).style.display = 'none';
        document.getElementById ( id + 'i' ).src = './themes/Chuwiki/images/fleche_desc.bmp';
    }
}

// Retourne le nom d'un fichier avec son adresse
function FichierNom ()
{
    if ( !document.getElementById ) return;

    var path = document.getElementById('id_fichier').value;

    var slash = path.lastIndexOf ( '/' );
    var backslash = path.lastIndexOf ( '\\' );
    var fname;

    if ( slash == -1 && backslash == -1 )
    {
        fname = path;
    }
    else if ( slash > backslash )
    {
        fname = path.substring ( slash + 1 , 10000 );
    }
    else
    {
        fname = path.substring ( backslash + 1 , 10000 );
    }

    // Remplacement des espaces
    fname = fname.charAt(0).toUpperCase().concat(fname.substring ( 1 , 10000 ) );

    document.getElementById('id_nom').value = fname;
}

// Calcule le décalage entre l'heure du client (JavaScript) et l'heure du serveur (PHP)
function decalage ( date_php )
{
    decalage = date_js - date_php;

    if ( decalage < 0 )
    {
        document.getElementById('id_decalage').value = decalage;
    }
    else
    {
        document.getElementById('id_decalage').value = decalage;
    }
}

// Ajoute une balise simple
function balise ( balise_debut , balise_fin )
{
    var champ = document.getElementById('texte');
    var scroll = champ.scrollTop;
    
    if ( balise_fin == '' )
    {
        balise_debut = ' ' + balise_debut + ' ';
    }

    if ( champ.curseur )
    {
        champ.curseur.text = balise_debut + champ.curseur.text + balise_fin;
    }
    else if ( champ.selectionStart >= 0 && champ.selectionEnd >= 0 )
    {
        var debut = champ.value.substring( 0 , champ.selectionStart );
        var entre = champ.value.substring(champ.selectionStart, champ.selectionEnd);
        var fin = champ.value.substring(champ.selectionEnd);

        champ.value = debut + balise_debut + entre + balise_fin + fin;
        champ.focus ();
        champ.setSelectionRange(debut.length + balise_debut.length , champ.value.length - fin.length - balise_fin.length);
    }
    else
    {
        champ.value += balise_debut + balise_fin;
        champ.focus ();
    }

    champ.scrollTop = scroll;
}

// Aperçu des messages
function preview ()
{
    clearTimeout ( last );
    last = setTimeout ( 'parse2()' , 100 );
    antiflood = true;
}

function storeCaret ()
{ 
    champ = document.getElementById('texte');

    if ( champ.createTextRange )
    {
        champ.curseur = document.selection.createRange().duplicate();
    }
}

function parse2 ()
{
    var champ = document.getElementById('texte');
    var div_prev = document.getElementById('preview_texte');
    var contenu = champ.value;

    antiflood = false;

    if ( document.body.scrollTop )
    {
        var scroll = document.body.scrollTop;
    }
    else
    {
        var scroll = window.pageYOffset;
    }

    contenu = contenu.replace(/&/g,'&amp;');

    if (champ.selectionStart != 'undefined' && !champ.curseur)
    {
        var pos = champ.selectionStart;
        contenu = remplace(remplace(contenu.substring(0, pos),'>','&gt;'),'<','&lt;') + '<a href="#" name="prev_ancre_suivi" id="prev_ancre_suivi"></a>' + 
        remplace(remplace(contenu.substring(pos),'>','&gt;'),'<','&lt;');
    }
    else
    {
        contenu = remplace ( remplace ( contenu ,'>' , '&gt;' ) , '<' , '&lt;' );
    }

    var reg = '';

    contenu = remplace ( contenu , "\n" , '<br/>' );

    contenu = contenu.replace(/&lt;gras&gt;([\s\S]*?)&lt;\/gras&gt;/g, '<strong>$1</strong>');
    contenu = contenu.replace(/&lt;souligne&gt;([\s\S]*?)&lt;\/souligne&gt;/g, '<span class="souligne">$1</span>');
    contenu = contenu.replace(/&lt;italique&gt;([\s\S]*?)&lt;\/italique&gt;/g, '<em>$1</em>');
    contenu = contenu.replace(/&lt;barre&gt;([\s\S]*?)&lt;\/barre&gt;/g, '<span class="barre">$1</span>');
    contenu = contenu.replace(/&lt;titre2&gt;([\s\S]*?)&lt;\/titre2&gt;/g, '<h2>$1</h2>');
    contenu = contenu.replace(/&lt;titre3&gt;([\s\S]*?)&lt;\/titre3&gt;/g, '<h3>$1</h3>');
    contenu = contenu.replace(/&lt;titre4&gt;([\s\S]*?)&lt;\/titre4&gt;/g, '<h4>$1</h4>');
    contenu = contenu.replace(/&lt;titre5&gt;([\s\S]*?)&lt;\/titre5&gt;/g, '<h5>$1</h5>');
    contenu = contenu.replace(/&lt;titre6&gt;([\s\S]*?)&lt;\/titre6&gt;/g, '<h6>$1</h6>');
    contenu = contenu.replace(/&lt;exposant&gt;([\s\S]*?)&lt;\/exposant&gt;/g, '<sup>$1</sup>');
    contenu = contenu.replace(/&lt;indice&gt;([\s\S]*?)&lt;\/indice&gt;/g, '<sub>$1</sub>');
    contenu = contenu.replace(/&lt;couleur nom="(orange|noir|marron|vertf|olive|marine|violet|bleugris|argent|gris|rouge|vertc|jaune|bleu|rose|turquoise|blanc)"&gt;([\s\S]*?)&lt;\/couleur&gt;/g, '<span class="$1">$2</span>');
    contenu = contenu.replace(/&lt;police nom="(arial|times|courrier|impact|geneva|optima)"&gt;([\s\S]*?)&lt;\/police&gt;/g, '<span class="$1">$2</span>');
    contenu = contenu.replace(/&lt;taille valeur="(ttpetit|tpetit|petit|gros|tgros|ttgros)"&gt;([\s\S]*?)&lt;\/taille&gt;/g, '<span class="$1">$2</span>');
    contenu = contenu.replace(/&lt;image[ \w="]*&gt;([^"]*?)&lt;\/image&gt;/g, '<img src="$1" alt="Image" />');
    contenu = contenu.replace(/&lt;position valeur="(gauche|droite|centre|justifie)"&gt;([\s\S]*?)&lt;\/position&gt;/g, '<div class="$1">$2</div>');
    contenu = contenu.replace(/&lt;flottant valeur="(gauche|droite)"&gt;([\s\S]*?)&lt;\/flottant&gt;/g, '<div class="flot_$1">$2</div>');
    contenu = contenu.replace(/&lt;lien&gt;([\s\S]*?)&lt;\/lien&gt;/g, '<a href="$1">$1</a>');
    contenu = contenu.replace(/&lt;lien titre="([\s\S]*?)"&gt;([\s\S]*?)&lt;\/lien&gt;/g, '<a href="$2">$1</a>');
    contenu = contenu.replace(/&lt;email&gt;([\s\S]*?)&lt;\/email&gt;/g, '<a href="mailto:$1" title="$1">$1</a>');
    contenu = contenu.replace(/&lt;email nom="([\s\S]*?)"&gt;([\s\S]*?)&lt;\/email&gt;/g, '<a href="mailto:$2" title="$2">$1</a>');
    contenu = contenu.replace(/&lt;(information|attention|erreur|question)&gt;([\s\S]*?)&lt;\/\1&gt;/g, '<div class="rmq $1">$2</div>');
    contenu = contenu.replace(/&lt;liste&gt;\s*(<br \/>)?\s*([\s\S]*?)\s*(<br \/>)?\s*&lt;\/liste&gt;/g, '<ul>$2</ul>');
    contenu = contenu.replace(/&lt;liste type="(disque|cercle|rectangle|rien)"&gt;\s*(<br \/>)?\s*([\s\S]*?)\s*(<br \/>)?\s*&lt;\/liste&gt;/g, '<ul class="liste_$1">$3</ul>');
    contenu = contenu.replace(/&lt;liste type="([1iIaA])"&gt;\s*(<br \/>)?\s*([\s\S]*?)\s*(<br \/>)?\s*&lt;\/liste&gt;/g, '<ol class="liste_$1">$3</ol>');
    contenu = contenu.replace(/&lt;puce&gt;([\s\S]*?)&lt;\/puce&gt;\s*(<br \/>)?\s*/g, '<li>$1</li>');
    contenu = contenu.replace(/&lt;acronyme valeur="([\s\S]*?)" langue="([\s\S]*?)"&gt;([\s\S]*?)&lt;\/acronyme&gt;/g, '<acronym title="$1" lang="$3">$3</acronym>');
    contenu = contenu.replace(/&lt;acronyme valeur="([\s\S]*?)"&gt;([\s\S]*?)&lt;\/acronyme&gt;/g, '<acronym title="$1">$2</acronym>');

    // Smilies
    contenu = remplace ( contenu , ' :) ' , ' <img src="themes/commun/images/smilies/01.png" alt=":)" /> ' );
    contenu = remplace ( contenu , ' :-) ' , ' <img src="themes/images/smilies/01.png" alt=":-)" /> ' );
    contenu = remplace ( contenu , ' :D ' , ' <img src="themes/commun/images/smilies/02.png" alt=":D" /> ' );
    contenu = remplace ( contenu , ' ;) ' , ' <img src="themes/commun/images/smilies/03.png" alt=";)" /> ' );
    contenu = remplace ( contenu , ' :p ' , ' <img src="themes/commun/images/smilies/04.png" alt=":p" /> ' );
    contenu = remplace ( contenu , ' :lol: ' , ' <img src="themes/commun/images/smilies/05.gif" alt=":lol:" /> ' );
    contenu = remplace ( contenu , ' :euh: ' , ' <img src="themes/commun/images/smilies/06.gif" alt=":euh:" /> ' );
    contenu = remplace ( contenu , ' :( ' , ' <img src="themes/commun/images/smilies/07.png" alt=":(" /> ' );
    contenu = remplace ( contenu , ' :o ' , ' <img src="themes/commun/images/smilies/08.png" alt=":o" /> ' );
    contenu = remplace ( contenu , ' :colere: ' , ' <img src="themes/commun/images/smilies/09.png" alt=":colere:" /> ' );
    contenu = remplace ( contenu , ' o_O ' , ' <img src="themes/commun/images/smilies/10.gif" alt="o_O" /> ' );
    contenu = remplace ( contenu , ' ^^ ' , ' <img src="themes/commun/images/smilies/11.png" alt="^^" /> ' );
    contenu = remplace ( contenu , ' :-° ' , ' <img src="themes/commun/images/smilies/12.png" alt=":-°" /> ' );
    contenu = remplace ( contenu , ' :\'( ' , ' <img src="themes/commun/images/smilies/13.png" alt=":\'(" /> ' );
    contenu = remplace ( contenu , ' &gt;_&lt; ' , ' <img src="themes/commun/images/smilies/14.png" alt=">_<" /> ' );

    var i = 0;

    while ( (contenu.search(/&lt;citation nom=\"(.*?)\"&gt;([\s\S]*?)&lt;\/citation&gt;/g) != -1 || contenu.search(/&lt;citation&gt;([\s\S]*?)&lt;\/citation&gt;/g) != -1) && i < 20)
    {
        contenu = contenu.replace(/&lt;citation nom=\"(.*?)\"&gt;([\s\S]*?)&lt;\/citation&gt;/g, '<br /><span class="citation">Citation : $1</span><div class="citationtexte">$2</div>');
        contenu = contenu.replace(/&lt;citation&gt;([\s\S]*?)&lt;\/citation&gt;/g, '<br /><span class="citation">Citation</span><div class="citationtexte">$1</div>');
        i++;
    }
    
    div_prev.innerHTML = contenu;

    if (document.getElementById('prev_ancre_suivi'))
    {
        document.getElementById('prev_ancre_suivi').focus();
    }

    document.getElementById('texte').focus();
}

// Remplace une chaine par une autre
function remplace ( data , search , replace )
{
    var temp = data;
    var longueur = search.length;

    while (temp.indexOf(search) > -1)
    {
        pos = temp.indexOf(search);
        temp = (temp.substring(0, pos) + replace + temp.substring((pos + longueur), temp.length));
    }

    return temp;
}

// Ajoute une balise avec des paramètres depuis une liste
function add_bal ( nom , val , id_liste )
{
    bal = document.getElementById(id_liste).value;

    if (bal != '')
    {
        balise ( '<'+nom+' '+val+'="'+bal+'">','</'+nom+'>' );
    }
    else
    {
        balise ( '<'+nom+'>','</'+nom+'>' );
    }

    preview ();

    if ( document.getElementById(id_liste) )
    {
        document.getElementById(id_liste).options[0].selected = true;
    }
}

// Ajoute une balise avec des paramètres
function ajoute_balise ( nom , parametre , texte , type )
{
    bal = prompt ( texte );

    if ( bal )
    {
        if ( type == 'balise' )
        {
            balise ('<'+nom+' '+parametre+'="','">'+bal+'</'+nom+'>');
            preview ();
        }
        else
        {
            balise ('<'+nom+' '+parametre+'="'+bal+'">','</'+nom+'>');
            preview ();
        }
    }
    else if ( nom == 'citation' )
    {
        balise ('<'+nom+'>','</'+nom+'>');
        preview ();
    }
    
    if ( document.getElementById ( nom ) )
    {
        document.getElementById ( nom ).options[0].selected = true;
    }
}

// Ajoute une liste à puces
function ajoute_liste ()
{
    var texte = '';

    while ( tmp = prompt ( 'Saisir le contenu d\'une puce (si vous voulez arrêter ici, cliquez sur annuler)' ) )
    {
        texte += '<puce>' + tmp + "</puce>\n";
    }

    balise ( "<liste>\n" + texte , '</liste>' );
    preview ();
}

// Sélectionner tous les messages dans la boite de réception
function select_all_msg ()
{
    var form = document.getElementById('form_act_msg');

    //document.getElementById('test').value = form.elements.length;

    var i = 0;

    while ( i < form.elements.length )
    {
        form.elements[i].checked = true;

        i = i + 1;
    }
}

// Désélectionner tous les messages dans la boite de réception
function deselect_all_msg ()
{
    var form = document.getElementById('form_act_msg');
    var i = 0;

    while ( i < form.elements.length )
    {
        form.elements[i].checked = false;

        i = i + 1;
    }
}

// Surligner une ligne d'un tableau au passage de la souris
function SurligneElt ( elt, couleur )
{
	elt.style.backgroundColor = couleur;
}
