/* 
      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  
                        eduDz
                     ---------------                                                
      Derniere mise a jour  :  Mars 09                                                       
      Auteur            : InSiDe
      Dev 1.6.6 Phoenix Rising (Commencée le 13 Dec 08)
      
      Source du script : siteduzero.com (Intégralement), je suis nul en JS dsl :/
      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

*/
    var smilies = new Array( ':angel:', ':hum:',':ouch:',':contant:',':cool:',':fou:',':snif:',':diable:',':doute:',
                            ':bizarre:', ':hum:',':sourire2:' , ':happy:' , ':love:' , ':rire:' , ':rire2:',':rouge:',
                            ':hum:', ':sournois:',':malheureux:', ':ouch2:',':malade:' ,':ok:',':fou:', ':dort:',
                            ':langue:', ':question:', ':sourire:',':clin:',':coeur:', ':capitaine:', ':colere:', 
                            ':gni:', ':ninja:', ':hihi:', ':svp:',':bye:',':banzai:',':merci:',':gne:',':help:',':up:',
                            ':mort:',':lol:');
     

    var smilies_url = new Array('angel.gif','hum.gif','ouch.gif','contant.gif','cool.gif','fou.gif','snif.gif',
                                   'diable.gif','doute.gif','bizarre.gif','hum.gif','sourire2.gif','happy.gif','love.gif',
                                   'rire.gif','rire2.gif','rouge.gif','hum.gif','sournois.gif','malheureux.gif','ouch2.gif','malade.gif','ok.gif','fou.gif','dort.gif','langue.gif','question.gif','sourire.gif',
                                   'clin.gif','coeur.gif','capitaine.gif','colere.gif','gni.gif','ninja.gif','hihi.gif',
                                   'svp.gif','bye.gif','banzai.gif','merci.gif','gne.gif','help.gif','up.gif','mort.gif',
                                   'lol.gif');
	// Ouvre la page en popup
	function ouvrir_page(page,nom,x,y)
	{
        window.open(page,nom,'toolbar=no,personalbar=no,titlebar=no,location=no,directories=no,width='+x+',height='+y+',scrollbars=yes,resizable=yes');
	}



	// 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;
	}
	
	// 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 droulant)
	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)
	{
	var champ = document.getElementById(id_textarea);
	var texte = '';
		if (nom == 'citation')
		{
		texte = 'Veuillez entrer le nom de 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 entrer le texte du lien';
				bal2 = prompt(texte);
				balise_debut = '<'+nom+' '+val+'="';
				balise_fin = '">'+bal2+'</'+nom+'>';
			}
			
			else if (txt_selectionne == '')
			{
				texte = 'Veuillez entrer le lien';
				bal = prompt(texte);
				if(bal == null) bal = 'URL';
				bal2 = prompt('Veuillez entrer le texte du lien');
				balise_debut = '<'+nom+' '+val+'="'+bal+'">'+bal2;
				balise_fin = '</'+nom+'>';
			}
			else
			{
				texte = 'Veuillez entrer le lien';
				bal = prompt(texte);
				if(bal == null) bal = 'URL';
				
				balise_debut = '<'+nom+' '+val+'="'+bal+'">';
				balise_fin = '</'+nom+'>';
			}
		}
		
		else if (nom == 'miniature')
		{	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 = '';
			// si c'est un lien
			if (txt_selectionne.indexOf('http://') == 0)
			{
				
				balise_debut = '<'+nom+' longueur="x" largeur="y">';
				balise_fin = bal+'</'+nom+'>';
			}
	
			else
			{
				texte = 'Veuillez entrer le lien de l\image';
				bal = prompt(texte);
				
				if(bal == null) bal = 'URL';
				
				
				balise_debut = '<'+nom+' longueur="x" largeur="y">';
				balise_fin = bal+'</'+nom+'>';
			}
		}

                
		balise(balise_debut,balise_fin, id_textarea);
	
		if (document.getElementById(nom))
		document.getElementById(nom).options[0].selected = true;
	}
	

    function emoticone(smiley)
    {
        balise(':'+smiley+':', '', 'contenu');
    }
      function insere(smiley)
      {
            var champ = window.opener.document.getElementById(textarea);
            var scroll = champ.scrollTop;
            smiley = ' ' + smiley + ' ';

            if (champ.curseur)
            {
                  champ.curseur.text = smiley;
            }
            
            else if (champ.selectionStart != 'undefined' && champ.selectionEnd != 'undefined')
            {
                  var debut = champ.value.substring(0, champ.selectionStart);
                  var fin = champ.value.substring(champ.selectionEnd);
                  champ.value = debut + smiley + fin;
                  champ.focus();
                  champ.setSelectionRange(debut.length + smiley.length, champ.value.length - fin.length);
            }
            else
            {
                  champ.value  += smiley;
                  champ.focus();
            }     
            champ.scrollTop = scroll;

            var champ = window.opener.document.getElementById(textarea);
            var div_prev = window.opener.document.getElementById('prev_'+textarea);
            var contenu = champ.value;
      }
      
      /* -*---------------- New : Apercu temps réel -------*--------------------*/

      //Affiche ou cache la prévisualisation
      function switch_activ(textarea,prev)
      { 
            // On séléctionne le textarea
            div = document.getElementById(prev); 
      
            // Si l'input activ_$textarea est coché on lance la prévisualisation auto
            if(document.getElementById('activ_'+textarea).checked == true) 
            {
                  div.style.display = 'block'; 
                  storeCaret(textarea);
                  parse(textarea,prev); 
            } 
            else div.style.display = 'none';
      }


      //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))
            {
                  last = 0;
                  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;');

      contenu = remplace(contenu, "\n", '<br />');
      
      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;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, '<strike>$1</strike>');
      contenu = contenu.replace(/&lt;couleur nom="(rouge|orange|jaune|vert-f|vert-c|bleu-f|bleu-c|noir|gris|blanc)"&gt;([\s\S]*?)&lt;\/couleur&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&gt;([\s\S]*?)&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 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 valeur="([\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>');


      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 /><div class="bloc_citation"><p class="auteur_citation">Citation : $2</p>$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++;
      }

      for (i=0;i<smilies.length;i++)
            contenu = remplace(contenu, smilies[i], '<img src="forum/'+smilies_url[i]+'" alt="Smiley" class="smilies" />');

      div_prev.innerHTML = contenu;
     
      }
