
// Adapted from PHPBB
bbcode = new Array();
bbtags = new Array('[b]','[/b]','[i]','[/i]','[u]','[/u]','[s]','[/s]','[quote]','[/quote]','[code]','[/code]','[list]','[/list]','[list=]','[/list]','[img]','[/img]','[url]','[/url]','[*]','');


var bbtagsAbiertos = new Array();

function tmAnadeTag(eltag) {

   if (bbtags[eltag+1] != '') {
      bbtagsAbiertos[bbtagsAbiertos.length] = eltag;
      //Add '*' in the button's text:
      eval('document.frmpost.addbbcode'+eltag+'.value += "*"');
   }
}

function tmQuitaTag(eltag) {
   for (i = 0; i < bbtagsAbiertos.length; i++) {
      if (bbtagsAbiertos[i] == eltag) {
         bbtagsAbiertos.splice(i, 1);
         //Remove '*' from the button's text:
         buttext = eval('document.frmpost.addbbcode' + eltag + '.value');
         eval('document.frmpost.addbbcode' + eltag + '.value ="' + buttext.substr(0,(buttext.length - 1)) + '"');
      }
   }
}

function tmHayTagABierto(eltag) {
	var tag = 0;
   for (i = 0; i < bbtagsAbiertos.length; i++) {
		if (bbtagsAbiertos[i] == eltag) { tag++; }
   }
   if (tag > 0) { return true;   } else { return false; }
}

function tmCierraTags() {
   var count = bbtagsAbiertos.length;
   for (n = 0; n < count; n++) { bbstyle(bbtagsAbiertos[bbtagsAbiertos.length - 1]); }
}


function bbfontstyle(bbopen,bbclose) {
	var txtarea = document.frmpost.post_content;

	// IE
	if (document.selection) { 
		txtarea.focus();
	    sel = document.selection.createRange();
	    sel.text = bbopen+sel.text+bbclose;
	}
	//Para Mozilla-Netscape:
	else if (txtarea.selectionStart || txtarea.selectionStart == '0') {
	   var startPos = txtarea.selectionStart;
	   var endPos = txtarea.selectionEnd;
	   var cursorPos = endPos;
	   var scrollTop = txtarea.scrollTop;
	
	   if (startPos != endPos) {
	      txtarea.value = txtarea.value.substring(0, startPos)
	                 + bbopen
	                 + txtarea.value.substring(startPos, endPos)
	                 + bbclose
	                 + txtarea.value.substring(endPos, txtarea.value.length);
	      cursorPos += bbopen.length + bbclose.length;
	   }
	   else {
	
	         txtarea.value = txtarea.value.substring(0, startPos)
	                  + bbopen+' '+bbclose
	                  + txtarea.value.substring(endPos, txtarea.value.length);
	      cursorPos = startPos + bbopen.length+bbclose.length+1;
	   }
	   txtarea.focus();
	   txtarea.selectionStart = cursorPos;
	   txtarea.selectionEnd = cursorPos;
	   txtarea.scrollTop = scrollTop;
	}
	else {   txtarea.value += bbopen+' '+bbclose;
		txtarea.focus();
	}

}

function bbstyle(eltag) {
   var txtarea = document.frmpost.post_content;

   if (eltag == -1) { tmCierraTags(); return; }

   //Para Internet Exploiter:
   if (document.selection) {
       txtarea.focus();
       sel = document.selection.createRange();
      if (sel.text.length > 0) { sel.text = bbtags[eltag] + sel.text + bbtags[eltag+1]; }
      else {
            if (!tmHayTagABierto(eltag) || bbtags[eltag+1] == '') {
            sel.text = bbtags[eltag];

          }
          else {
               sel.text = bbtags[eltag+1];

               }
      }
      txtarea.focus();
   }
   //Para Mozilla-Netscape:
   else if (txtarea.selectionStart || txtarea.selectionStart == '0') {
      var startPos = txtarea.selectionStart;
      var endPos = txtarea.selectionEnd;
      var cursorPos = endPos;
      var scrollTop = txtarea.scrollTop;

      if (startPos != endPos) {
         txtarea.value = txtarea.value.substring(0, startPos)
                       + bbtags[eltag]
                       + txtarea.value.substring(startPos, endPos)
                       + bbtags[eltag+1]
                       + txtarea.value.substring(endPos, txtarea.value.length);
         cursorPos += bbtags[eltag].length + bbtags[eltag+1].length;
      }
      else {
         if (!tmHayTagABierto(eltag) || bbtags[eltag+1] == '') {
            txtarea.value = txtarea.value.substring(0, startPos)
                          + bbtags[eltag]
                          + txtarea.value.substring(endPos, txtarea.value.length);
			tmAnadeTag(eltag);
            cursorPos = startPos + bbtags[eltag].length;
         }
         else {
            txtarea.value = txtarea.value.substring(0, startPos)
                          + bbtags[eltag+1]
                          + txtarea.value.substring(endPos, txtarea.value.length);
			tmQuitaTag(eltag);

            cursorPos = startPos + bbtags[eltag+1].length;
         }
      }
      txtarea.focus();
      txtarea.selectionStart = cursorPos;
      txtarea.selectionEnd = cursorPos;
      txtarea.scrollTop = scrollTop;
   }
   else {
      if (!tmHayTagABierto(eltag) || bbtags[eltag+1] == '') {
         txtarea.value += bbtags[eltag];
         tmAnadeTag(eltag);
      }
      else {
         txtarea.value += bbtags[eltag+1];
         tmQuitaTag(eltag);
      }
      txtarea.focus();
   }
}

function bburl() {
	var txtarea = document.frmpost.post_content;
	var url = window.prompt('Entrez l\'url de destination : ');
	var txt = window.prompt('Entrez le texte du lien (facultatif) : ');
	
	txtarea.value += '[link url=' + url + ']' + txt + '[/link]';
	txtarea.focus();
}

function bbimg() {
	var txtarea = document.frmpost.post_content;
	var url = window.prompt('Entrez l\'adresse de l\'image : ');
	
	txtarea.value += '[img]' + url + '[/img]';
	txtarea.focus();
}

function bbsmiley(code) {
	var txtarea = document.frmpost.post_content;
	txtarea.value += code
	txtarea.focus();
}

function ajax_forum_preview() {
	var postvars = "preview=1";
	var form = document.frmpost;
	if ( form.post_subject ) {
		postvars += '&post_subject=' + encodeURI(form.post_subject);
	}
	postvars += '&post_content=' + encodeURI(form.post_content.value);
	document.getElementById('postpreview').style.display = "block";
	loadXMLdoc('/forum/preview/', 'postpreview', 'Veuillez patienter', postvars);
}

