// Ce fichier Javascript est issu du Site du Zero et appartient à son propriètaire.
var antiflood = false;

var last = 0;

var smilies  = new 


Array(':magicien:',':colere:',':diable:',':ange:',':ninja:','&gt;_&lt;',':pirate:',':zorro:',':honte:',':soleil:',':\'\\(',':waw:',':\\)',':D',';\\)',

 				

        ':p',':lol:',':euh:',':\\(',':o',':colere2:','o_O','\\^\\^',':\\-°');
		

var smilies_url  = new Array('magicien.png','angry.gif','diable.png','ange.png','ninja.png','pinch.png','pirate.png','zorro.png','rouge.png','soleil.png',


'pleure.png','waw.png','sourire.png','content.png','clindoeil.png','langue.png','rire.gif','unsure.gif','triste.png','huh.png','mechant.png',

 				

        'blink.gif','hihi.png','siffle.png');


var smilies_tpl  = new Array(':)', ':D', ';)', ':p', ':lol:', ':euh:', ':(', ':o', ':colere2:', 'o_O', '^^', ':-°');

 				

var smilies_tpl_url = new Array('smile.png', 'heureux.png', 'clin.png', 'langue.png', 'rire.gif', 'unsure.gif',

 				

        'triste.png', 'huh.png', 'mechant.png', 'blink.gif', 'hihi.png', 'siffle.png');


var smilies_more = new Array(':ange:', ':colere:', ':diable:', ':magicien:', ':ninja:', '>_<', ':pirate:', ':\\\'(',

 				

        ':honte:', ':soleil:', ':waw:', ':zorro:');

 				

var smilies_more_url = new Array('ange.png', 'angry.gif', 'diable.png', 'magicien.png', 'ninja.png', 'pinch.png', 'pirate.png',


'pleure.png', 'rouge.png', 'soleil.png', 'waw.png', 'zorro.png'); 

 				

 

 				

var page     = new Array();

 				

 

 				

var height_avant    = 200;

 				

var height_avant_final    = 500;


var zform_names_of_text    = Array(); //Tableau de toutes les zform de la page

 				

var last_hash_texte_backup = Array(); //Tableau des hash sha1 du dernier texte autobackupé de chaque formulaire

 				

var period_autobackup    = 60; //Période d'auto backup en secondes

 				

 

 				

var is_first_backup    = true; //permet d'empêcher de backuper si aucun changement au tout début


/* STYLE DE LA ZFORM */

 				

 

 				

 //permet d'adapter la taille de la zform

 				

function edit_zform_height(id_textarea, id_prev, id_prev_final, diff)

 				

{

 				

    var champ = document.getElementById(id_textarea);

 				

    var div_prev = document.getElementById(id_prev);


var div_prev_final = document.getElementById(id_prev_final);

 				

 

 				

    height_avant = height_avant + Number(diff);

 				

    if (height_avant < 200)

 				

 height_avant = 200;

 				

    if (height_avant > 2000)


height_avant = 2000;

 				

 

 				

    height_avant_final = height_avant_final + Number(diff);

 				

    if (height_avant_final < 200)

 				

 height_avant_final = 200;

 				

    if (height_avant_final > 2000)


height_avant_final = 2000;

 				

 

 				

    change = height_avant+"px";

 				

    change_final = height_avant_final+"px";

 				

 

 				

    champ.style.height = change;

 				

    div_prev.style.height = change;

 				

    div_prev_final.style.maxHeight = change_final;

 				

 

 				

    return false;

 				

}

 				

 

 				

//ouvre la page en popup

 				

function ouvrir_page(page,nom,x,y)

 				

{

 				

    window.open(page,nom,'toolbar=yes,personalbar=yes,titlebar=yes,location=yes,directories=yes,width='+x+',height='+y+',scrollbars=yes,resizable=yes');

 				

}

 				

 

 				

//affiche ou cache la prévisualisation

 				

function switch_activ(textarea,prev)

 				

{

 				

    div = document.getElementById(prev);

 				

    if (document.getElementById('activ_'+textarea).checked == true)

 				

 {

 				

     div.style.display = 'block';

 				

     storeCaret(textarea);

 				

     parse(textarea,prev);

 				

 }

 				

    else

 				

 div.style.display = 'none';

 				

}

 				

 

 				

 

 				

/* PARSAGE TEMPS REEL */

 				

 

 				

 

 				

//enregistre le curseur du textarea

 				

function storeCaret(id_textarea)

 				

{ 

 				

    champ = document.getElementById(id_textarea);

 				

    if (champ.createTextRange)

 				

 champ.curseur = document.selection.createRange().duplicate();

 				

}

 				

 

 				

//insère une balise dans le textarea

 				

function balise(balise_debut, balise_fin, id_textarea)

 				

{

 				

    var champ = document.getElementById(id_textarea);

 				

    var scroll = champ.scrollTop;

 				

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

 				

 

 				

    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 temps réel

 				

function parse(id_textarea, id_prev)

 				

{

 				

    if (parse.arguments.length == 3)

 				

 var is_opened_window = true;

 				

    else

 				

 var is_opened_window = false;

 				

 

 				

    if ((is_opened_window && opener.document.getElementById('activ_'+id_textarea).checked)

 				

 || (!is_opened_window && document.getElementById('activ_'+id_textarea).checked))

 				

 {

 				

  clearTimeout(last);

 				

  last = setTimeout('parse2(\''+id_textarea+'\',\''+id_prev+'\', '+is_opened_window+')',100);

 				

  antiflood = true;

 				

 }

 				

}

 				

 

 				

//aperçu temps réel, parsage zcode et smilies

 				

 function parse2(id_textarea, id_prev, is_opened_window)

 				

 {

 				

  if (is_opened_window)

 				

  {

 				

  var champ = opener.document.getElementById(id_textarea);

 				

  var div_prev = opener.document.getElementById(id_prev);

 				

  }

 				

  else

 				

  {

 				

  var champ = document.getElementById(id_textarea);

 				

  var div_prev = document.getElementById(id_prev);

 				

  }

 				

 var contenu = champ.value;

 				

 antiflood = false;

 				

  if (document.body.scrollTop)

 				

  var scroll = document.body.scrollTop;

 				

  else

 				

  var scroll = window.pageYOffset;

 				

 

 				

  if (champ.selectionStart != 'undefined' && !champ.curseur)

 				

  {

 				

  var pos = champ.selectionStart;

 				

  contenu = remplace(remplace(contenu.substring(0, pos).replace(/&/g,'&amp;'),'>','&gt;'),'<','&lt;') + '<a href="" name="prev_ancre_suivi" id="prev_ancre_suivi"></a>' + 

 				

  remplace(remplace(contenu.substring(pos).replace(/&/g,'&amp;'),'>','&gt;'),'<','&lt;');

 				

  }

 				

  else

 				

  contenu = remplace(remplace(contenu.replace(/&/g,'&amp;'),'>','&gt;'),'<','&lt;');

 				

 

 				

 var reg = '';

 				

  for (i=0;i<smilies.length;i++)

 				

  {

 				

  eval('reg = /(\\s|\\r|^|&gt;)'+smilies[i]+'(\\s|\\r|$|&lt;)/g');

 				

  contenu = contenu.replace(reg, '$1<img src="images/smiley/'+smilies_url[i]+'" alt="Smiley" class="smilies" />$2');

 				

  }

 				

 

 				

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

 				

/*

 				

 var re = /([\s\S]+)&lt;code&gt;([\s\S]*?)&lt;\/code&gt;([\s\S]+)/;

 				

 var smil = '';

 				

  while (tableau = re.exec(contenu))

 				

  {

 				

   for (i=0;i<smilies.length;i++)

 				

   {

 				

   smil = '';

 				

    for (j=0;j<smilies[i].length;j++)

 				

    smil += '&'+smilies[i].charCodeAt(j)+';';

 				

   tableau[2] = remplace(tableau[2], smilies[i], smil);

 				

   }

 				

  contenu = tableau[1]+'<br /><span class="code">Code</span><div class="code2">'+remplace(tableau[2],'&lt;', '&60;')+'</div>'+tableau[3];

 				

  }

 				

 

 				

 re = /([\s\S]+)&lt;code type=\"(actionscript|csharp|matlab|qbasic|ada|mpasm|smarty|apache|css|nsis|sql|asm|delphi|objc|vbnet|asp|diff|oobas|vb|bash|d|oracle8|vhdl|caddcl|html|pascal|visualfoxpro|cadlisp|java|perl|xml|c_mac|javascript|php-brief|c|lisp|php|cpp|lua|python)\"&gt;([\s\S]*?)&lt;\/code&gt;([\s\S]+)/;

 				

  while (tableau = re.exec(contenu))

 				

  {

 				

   for (i=0;i<smilies.length;i++)

 				

   {

 				

   smil = '';

 				

    for (j=0;j<smilies[i].length;j++)

 				

    smil += '&'+smilies[i].charCodeAt(j)+';';

 				

   tableau[3] = remplace(tableau[3], smilies[i], smil);

 				

   }

 				

  contenu = tableau[1]+'<br /><span class="code">Code : '+tableau[2]+'</span><div class="code2">'+remplace(tableau[3],'&lt;', '&60;')+'</div>'+tableau[4];

 				

  }

 				

*/ 

 				

 contenu = contenu.replace(/&lt;gras&gt;([\s\S]*?)&lt;\/gras&gt;/g, '<strong>$1</strong>');

 				

 contenu = contenu.replace(/&lt;titre1&gt;([\s\S]*?)&lt;\/titre1&gt;/g, '<h3>$1</h3>');

 				

 contenu = contenu.replace(/&lt;titre2&gt;([\s\S]*?)&lt;\/titre2&gt;/g, '<h4>$1</h4>');

 				

 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, '<span class="italique">$1</span>');

 				

 contenu = contenu.replace(/&lt;barre&gt;([\s\S]*?)&lt;\/barre&gt;/g, '<strike>$1</strike>');

 				

 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" class="sans-bord"/>');

 				

 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 url="([\s\S]*?)"&gt;([\s\S]*?)&lt;\/lien&gt;/g, '<a href="$1">$2</a>');

 				

 contenu = contenu.replace(/&lt;email&gt;([\s\S]*?)&lt;\/email&gt;/g, '<a href="mailto:$1">$1</a>');

 				

 contenu = contenu.replace(/&lt;email nom="([\s\S]*?)"&gt;([\s\S]*?)&lt;\/email&gt;/g, '<a href="mailto:$1">$2</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]*?)"&gt;([\s\S]*?)&lt;\/acronyme&gt;/g, '<acronym title="$1">$2</acronym>');

 				

 

 				

 var i = 0;

 				

  while ((contenu.search(/&lt;citation (nom|rid)=\"(.*?)\"&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|rid)=\"(.*?)\"&gt;([\s\S]*?)&lt;\/citation&gt;/g, '<br /><span class="citation">Citation : $2</span><div class="citation2">$3</div>');

 				

  contenu = contenu.replace(/&lt;citation&gt;([\s\S]*?)&lt;\/citation&gt;/g, '<br /><span class="citation">Citation</span><div class="citation2">$1</div>');

 				

  i++;

 				

  }

 				

 

 				

 div_prev.innerHTML = contenu;

 				

 

 				

  if (is_opened_window)

 				

  {

 				

   if (opener.document.getElementById('prev_ancre_suivi'))

 				

   opener.document.getElementById('prev_ancre_suivi').focus();

 				

  opener.document.getElementById(id_textarea).focus();

 				

  }

 				

  else

 				

  {

 				

   if (document.getElementById('prev_ancre_suivi'))

 				

   document.getElementById('prev_ancre_suivi').focus();

 				

  document.getElementById(id_textarea).focus();

 				

  }

 				

 }

 				

 

 				

 //remplace search par replace dans data

 				

 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;

 				

 }

 				

 

 				

 

 				

/* AJOUT DE BALISES */

 				

 

 				

 

 				

 //ajoute une balise au textarea (menu déroulant)

 				

 function add_bal(nom, val, id_liste, id_textarea, id_prev)

 				

 {

 				

 bal = document.getElementById(id_liste).value;

 				

  if (bal != '')

 				

  balise('<'+nom+' '+val+'="'+bal+'">','</'+nom+'>', id_textarea);

 				

  else

 				

  balise('<'+nom+'>','</'+nom+'>', id_textarea);

 				

 parse(id_textarea, id_prev);

 				

  if (document.getElementById(id_liste))

 				

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

 				

 }

 				

 

 				

 //ajoute une balise au textarea (prompt pour l'argument)

 				

 function add_bal2(nom, val, id_textarea, id_prev)

 				

 {

 				

 var champ = document.getElementById(id_textarea);

 				

 var texte = '';

 				

  if (nom == 'citation')

 				

  {

 				

  texte = 'Veuillez renseigner l\'auteur de la citation';

 				

  bal = prompt(texte);

 				

   if (!bal && nom == 'citation')

 				

   bal = 'Pas de titre';

 				

  balise_debut = '<'+nom+' '+val+'="'+bal+'">';

 				

  balise_fin = '</'+nom+'>';

 				

  }

 				

  else if (nom == 'lien')

 				

  {

 				

   if (champ.curseur)

 				

   txt_selectionne = champ.curseur.text;

 				

   else if (champ.selectionStart >= 0 && champ.selectionEnd >= 0)

 				

   txt_selectionne = champ.value.substring(champ.selectionStart, champ.selectionEnd);

 				

   else

 				

   txt_selectionne = '';

 				

 

 				

   if (txt_selectionne.indexOf('http://') == 0

 				

   || txt_selectionne.indexOf('https://') == 0

 				

   || txt_selectionne.indexOf('ftp://') == 0

 				

   || txt_selectionne.indexOf('apt://') == 0)

 				

   {

 				

   texte = 'Veuillez indiquer le texte du lien';

 				

   bal2 = prompt(texte);

 				

   balise_debut = '<'+nom+' '+val+'="';

 				

   balise_fin = '">'+bal2+'</'+nom+'>';

 				

   }

 				

   else if (txt_selectionne == '')

 				

   {

 				

   texte = 'Veuillez indiquer le lien';

 				

   bal = prompt(texte);

 				

   bal2 = prompt('Veuillez indiquer le texte du lien');

 				

   balise_debut = '<'+nom+' '+val+'="'+bal+'">'+bal2;

 				

   balise_fin = '</'+nom+'>';

 				

   }

 				

   else

 				

   {

 				

   texte = 'Veuillez indiquer le lien';

 				

   bal = prompt(texte);

 				

   balise_debut = '<'+nom+' '+val+'="'+bal+'">';

 				

   balise_fin = '</'+nom+'>';

 				

   }

 				

  }

 				

  else if (nom == 'email')

 				

  {

 				

  texte = 'Veuillez indiquer l\'email';

 				

  bal = prompt(texte);

 				

  balise_debut = '<'+nom+' '+val+'="'+bal+'">';

 				

  balise_fin = '</'+nom+'>';

 				

  }

 				

 

 				

 balise(balise_debut,balise_fin, id_textarea);parse(id_textarea, id_prev);

 				

 

 				

  if (document.getElementById(nom))

 				

  document.getElementById(nom).options[0].selected = true;

 				

 }

 				

 

 				

 //ajoute une liste au textarea

 				

 function add_liste(id_textarea, id_prev)

 				

 {

 				

 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>', id_textarea);parse(id_textarea, id_prev);

 				

 }

 				

 

 				

 

 				

/* APERCU FINAL */

 				

 

 				

 

 				

 //aperçu final

 				

 function full_preview(id_textarea, id_prev_final, dir)

 				

 {

 				

 var button = document.getElementById('lancer_apercu_' + id_textarea);

 				

 

 				

 button.disabled = true;

 				

 

 				

 request_apercu('xml_getzcode.php',document.getElementById(id_textarea).value, dir);

 				

 

 				

 xmlhttp.onreadystatechange = function()

 				

  {

 				

  if (xmlhttp.readyState == 4)

 				

   {

 				

   if (xmlhttp.status == 200)

 				

    document.getElementById(id_prev_final).innerHTML = xmlhttp.responseText;

 				

   else

 				

    document.getElementById(id_prev_final).innerHTML = an_error;

 				

   }

 				

  }

 				

 

 				

 button.disabled = false;

 				

 }

 				

 

 				

 //demande l'aperçu final (ajax)

 				

 function request_apercu(url,data,dir)

 				

 {

 				

  if(callInProgress(xmlhttp))

 				

  setTimeout('request_apercu("' + url + '","' + data + '","' + dir + '")',100);

 				

 

 				

  else

 				

  {

 				

  data = escape(data);

 				

  data = remplace(data, '+','%2B');

 				

  return Xsend('POST',url,'texte=' + data +'&dir=' + escape(dir),true);

 				

  }

 				

 }

 				

 

 				

 

 				

/* AUTO BACKUP */

 				

 

 				

 

 				

 //auto backup

 				

 function autosave()

 				

 {

 				

  for (i=0;i<zform_names_of_text.length;i++) {

 				

   if (is_first_backup)

 				

   {

 				

   last_hash_texte_backup[zform_names_of_text[i]] = sha1(document.getElementById(zform_names_of_text[i]).value);

 				

   }

 				

  setTimeout('request_autobackup(\''+zform_names_of_text[i]+'\',\'autobackup_zform.php\',document.getElementById(\''+zform_names_of_text[i]+'\').value, window.document.URL.substring(window.document.URL.lastIndexOf(\'/\')+1))', 1 / 10 * period_autobackup*1000);

 				

  }

 				

 is_first_backup = false;

 				

 setTimeout('autosave()', period_autobackup*1000);

 				

 }

 				

 

 				

 //enregistre un autobackup (ajax)

 				

 function request_autobackup(id_textarea, url, data, url_form)

 				

 {

 				

 var sha1_data = sha1(data);

 				

 

 				

  if (data.length > 0 && sha1_data != last_hash_texte_backup[id_textarea])

 				

  {

 				

   if (callInProgress(xmlhttp))

 				

   {

 				

   setTimeout('request_autobackup(\'' + id_textarea + '\',\'' + url + '\',\'' + data + '\',\'' + url_form + '\')',100);

 				

   }

 				

   else

 				

   {

 				

   data = escape(data);

 				

   data = remplace(data, '+','%2B');

 				

   Xsend('POST',url,'texte=' + data +'&url=' + escape(url_form),true);

 				

 

 				

   last_hash_texte_backup[id_textarea] = sha1_data;

 				

   }

 				

  }

 				

 }

 				

 

 				

 //hash sha1

 				

 function sha1 ( str ) {

 				

     // http://kevin.vanzonneveld.net

 				

     // +   original by: Webtoolkit.info (http://www.webtoolkit.info/)

 				

     // -    depends on: utf8_encode

 				

     // *     example 1: sha1('Kevin van Zonneveld');

 				

     // *     returns 1: '54916d2e62f65b3afa6e192e6a601cdbe5cb5897'

 				

 

 				

     function rotate_left(n,s) {

 				

  var t4 = ( n<<s ) | (n>>>(32-s));

 				

  return t4;

 				

     }

 				

 

 				

     function lsb_hex(val) {

 				

  var str="";

 				

  var i;

 				

  var vh;

 				

  var vl;

 				

 

 				

  for( i=0; i<=6; i+=2 ) {

 				

      vh = (val>>>(i*4+4))&0x0f;

 				

      vl = (val>>>(i*4))&0x0f;

 				

      str += vh.toString(16) + vl.toString(16);

 				

  }

 				

  return str;

 				

     }

 				

 

 				

     function cvt_hex(val) {

 				

  var str="";

 				

  var i;

 				

  var v;

 				

 

 				

  for( i=7; i>=0; i-- ) {

 				

      v = (val>>>(i*4))&0x0f;

 				

      str += v.toString(16);

 				

  }

 				

  return str;

 				

     }

 				

 

 				

     var blockstart;

 				

     var i, j;

 				

     var W = new Array(80);

 				

     var H0 = 0x67452301;

 				

     var H1 = 0xEFCDAB89;

 				

     var H2 = 0x98BADCFE;

 				

     var H3 = 0x10325476;

 				

     var H4 = 0xC3D2E1F0;

 				

     var A, B, C, D, E;

 				

     var temp;

 				

 

 				

     var str_len = str.length;

 				

 

 				

     var word_array = new Array();

 				

     for( i=0; i<str_len-3; i+=4 ) {

 				

  j = str.charCodeAt(i)<<24 | str.charCodeAt(i+1)<<16 |

 				

  str.charCodeAt(i+2)<<8 | str.charCodeAt(i+3);

 				

  word_array.push( j );

 				

     }

 				

 

 				

     switch( str_len % 4 ) {

 				

  case 0:

 				

      i = 0x080000000;

 				

  break;

 				

  case 1:

 				

      i = str.charCodeAt(str_len-1)<<24 | 0x0800000;

 				

  break;

 				

  case 2:

 				

      i = str.charCodeAt(str_len-2)<<24 | str.charCodeAt(str_len-1)<<16 | 0x08000;

 				

  break;

 				

  case 3:

 				

      i = str.charCodeAt(str_len-3)<<24 | str.charCodeAt(str_len-2)<<16 | str.charCodeAt(str_len-1)<<8    | 0x80;

 				

  break;

 				

     }

 				

 

 				

     word_array.push( i );

 				

 

 				

     while( (word_array.length % 16) != 14 ) word_array.push( 0 );

 				

 

 				

     word_array.push( str_len>>>29 );

 				

     word_array.push( (str_len<<3)&0x0ffffffff );

 				

 

 				

     for ( blockstart=0; blockstart<word_array.length; blockstart+=16 ) {

 				

  for( i=0; i<16; i++ ) W[i] = word_array[blockstart+i];

 				

  for( i=16; i<=79; i++ ) W[i] = rotate_left(W[i-3] ^ W[i-8] ^ W[i-14] ^ W[i-16], 1);

 				

 

 				

  A = H0;

 				

  B = H1;

 				

  C = H2;

 				

  D = H3;

 				

  E = H4;

 				

 

 				

  for( i= 0; i<=19; i++ ) {

 				

      temp = (rotate_left(A,5) + ((B&C) | (~B&D)) + E + W[i] + 0x5A827999) & 0x0ffffffff;

 				

      E = D;

 				

      D = C;

 				

      C = rotate_left(B,30);

 				

      B = A;

 				

      A = temp;

 				

  }

 				

 

 				

  for( i=20; i<=39; i++ ) {

 				

      temp = (rotate_left(A,5) + (B ^ C ^ D) + E + W[i] + 0x6ED9EBA1) & 0x0ffffffff;

 				

      E = D;

 				

      D = C;

 				

      C = rotate_left(B,30);

 				

      B = A;

 				

      A = temp;

 				

  }

 				

 

 				

  for( i=40; i<=59; i++ ) {

 				

      temp = (rotate_left(A,5) + ((B&C) | (B&D) | (C&D)) + E + W[i] + 0x8F1BBCDC) & 0x0ffffffff;

 				

      E = D;

 				

      D = C;

 				

      C = rotate_left(B,30);

 				

      B = A;

 				

      A = temp;

 				

  }

 				

 

 				

  for( i=60; i<=79; i++ ) {

 				

      temp = (rotate_left(A,5) + (B ^ C ^ D) + E + W[i] + 0xCA62C1D6) & 0x0ffffffff;

 				

      E = D;

 				

      D = C;

 				

      C = rotate_left(B,30);

 				

      B = A;

 				

      A = temp;

 				

  }

 				

 

 				

  H0 = (H0 + A) & 0x0ffffffff;

 				

  H1 = (H1 + B) & 0x0ffffffff;

 				

  H2 = (H2 + C) & 0x0ffffffff;

 				

  H3 = (H3 + D) & 0x0ffffffff;

 				

  H4 = (H4 + E) & 0x0ffffffff;

 				

     }

 				

 

 				

     var temp = cvt_hex(H0) + cvt_hex(H1) + cvt_hex(H2) + cvt_hex(H3) + cvt_hex(H4);

 				

     return temp.toLowerCase();

 				

 }

 				

 

 				

/* Toogle autres smilies */

 				

 function toogle_smilies (name_of_text) {

 				

     /* TODO : Générer le contenu en javascript */

 				

     ID = "_smilies";

 				

     var tryit = false;

 				

     for (text in page)

 				

  {

 				

      if(text == name_of_text){

 				

   tryit = true;

 				

   break;

 				

      }

 				

  }

 				

     if(tryit)

 				

  page[name_of_text] = (page[name_of_text] == 0) ? 1 : 0;

 				

     else

 				

  page[name_of_text] = 1;

 				

 

 				

     if(page[name_of_text] == 0){

 				

  // Page Smilies TPL

 				

  html = '<a href="Templates/html/fr/tous_smilies.html" onclick="toogle_smilies(\''+name_of_text+'\');return false;return false;">Autres smilies =></a><br />';

 				

  for (i=0;i<smilies_tpl.length;i++)

 				

  {

 				

      html += '<img src="Templates/images/smilies/'+smilies_tpl_url[i]+'" class="smiley_cliquable" alt="'+smilies_tpl[i]+'" onclick="balise(\''+smilies_tpl[i]+'\',\'\',\''+name_of_text+'\');parse(\''+name_of_text+'\',\'prev_'+name_of_text+'\'); return false;" /> ';

 				

      if((i+1)%4 == 0) html += '<br />';

 				

  }

 				

  document.getElementById(name_of_text+ID).innerHTML = html;

 				

     }else{

 				

  // Page Smilies More

 				

  html = '<a href="Templates/html/fr/tous_smilies.html" onclick="toogle_smilies(\''+name_of_text+'\');return false;return false;"><= Autres smilies</a><br /><table><tr>';

 				

  for (i=0;i<smilies_more.length;i++)

 				

  {

 				

      html += '<td><img src="Templates/images/smilies/'+smilies_more_url[i]+'" class="smiley_cliquable" alt="'+smilies_more[i]+'" onclick="balise(\''+smilies_more[i]+'\',\'\',\''+name_of_text+'\');parse(\''+name_of_text+'\',\'prev_'+name_of_text+'\'); return false;" /></td>';

 				

      if((i+1)%3 == 0) html += '</tr><tr>';

 				

  }

 				

  html += '</tr></table>';

 				

  document.getElementById(name_of_text+ID).innerHTML = html;

 				

     }

 				

 }