/************************************************************/
/* freekill (freekill.free.fr)                              */
/************************************************************/

// NB :     - f_news       = form
//          - article   = textarea

function countInstances(open,closed) {
    var opening=document.f_news.article.value.split(open);
    var closing=document.f_news.article.value.split(closed);
    return opening.length + closing.length - 2;
}

function popcountInstances(open,closed) {
    var doc=window.opener.document;
    var opening=doc.f_news.article.value.split(open);
    var closing=doc.f_news.article.value.split(closed);
    return opening.length + closing.length - 2;
}

function TAinsert(text1,text2) {

    var ta=document.getElementById('article');

    if (document.selection) {
        var str=document.selection.createRange().text;
        ta.focus();
        var sel=document.selection.createRange();
        if (text2!="") {
            if (str=="") {
                var instances=countInstances(text1,text2);
                if (instances%2 !=0) sel.text=sel.text + text2;
                else sel.text=sel.text + text1;
            } else sel.text=text1 + sel.text + text2;
        } 
        else sel.text=sel.text + text1;
    } 
    else if (ta.selectionStart || ta.selectionStart ==0) {
        if (ta.selectionEnd > ta.value.length) ta.selectionEnd=ta.value.length;
        var firstPos=ta.selectionStart;
        var secondPos=ta.selectionEnd+text1.length;
        var articleScrollTop=ta.scrollTop;

        ta.value=ta.value.slice(0,firstPos)+text1+ta.value.slice(firstPos);
        ta.value=ta.value.slice(0,secondPos)+text2+ta.value.slice(secondPos);

        ta.selectionStart=firstPos+text1.length;
        ta.selectionEnd=secondPos;
        ta.focus();
        ta.scrollTop=articleScrollTop;
    } 
    else { // Opera
        var sel=document.f_news.article;
        var instances=countInstances(text1,text2);
        if (instances%2 !=0 && text2 !="") sel.value=sel.value + text2;
        else sel.value=sel.value + text1;
    }
}

function popTAinsert(text1,text2) {

    var doc=window.opener.document;
    var ta=doc.getElementById('article');

    if (doc.selection) {
        var str=doc.selection.createRange().text;
        ta.focus();
        var sel=doc.selection.createRange();
        if (text2!="") {
            if (str=="") {
                var instances=popcountInstances(text1,text2);
                if (instances%2 !=0) sel.text=sel.text + text2;
                else sel.text=sel.text + text1;
            } else sel.text=text1 + sel.text + text2;
        } 
        else sel.text=sel.text + text1;
    } 
    else if (ta.selectionStart || ta.selectionStart ==0) {
        if (ta.selectionEnd > ta.value.length) ta.selectionEnd=ta.value.length;
        var firstPos=ta.selectionStart;
        var secondPos=ta.selectionEnd+text1.length;
        var articleScrollTop=ta.scrollTop;

        ta.value=ta.value.slice(0,firstPos)+text1+ta.value.slice(firstPos);
        ta.value=ta.value.slice(0,secondPos)+text2+ta.value.slice(secondPos);

        ta.selectionStart=firstPos+text1.length;
        ta.selectionEnd=secondPos;
        ta.focus();
        ta.scrollTop=articleScrollTop;
    } 
    else { // Opera
        var sel=doc.f_news.article;
        var instances=popcountInstances(text1,text2);
        if (instances%2 !=0 && text2 !="") sel.value=sel.value + text2;
        else sel.value=sel.value + text1;
    }
}

