/*************************************************** 
 * These function manage the client-side comportment
 * of the wyswiwyg Editor of EMiloG.
 *
 * Created by Jean-René Gaibrois
 * October 2004
 * 
 */
var dbnl = "\n\n";
var txtSrc;
var srcExt;
var src;

// defining src (current window = false or opener(from a popup) = true)
function setSrc(srcExt){
   var txtSrc;
   if (srcExt == true) {
      txtSrc = window.opener.parent.frames[0];        // if src is calling from a popup
   }
   else {
      txtSrc = window.parent.frames[0];        // if src is calling from current Window 
   }
   return txtSrc;
}

// set mozilla rgbColor 2 hexadecimal value
function rgb2hex(txt2Check){
   var re = /rgb\s*\(\s*([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)\s*\)/;
   if (txt2Check.match(re)) {
   alert("ouais! il y en a");
     var r = parseInt(RegExp.$1);
     var g = parseInt(RegExp.$2);
     var b = parseInt(RegExp.$3);
     return "#" + hex(r) + hex(g) + hex(b);
   }
   else {
     alert("bof \n\n" + txt2Check);
   }
}

// set all HTML to low Case by
function setHtml2LowCase(src2Lowered){
    if(src2Lowered != ""){
       var isUpper = "<A,</A,<P,</P," + 
                     "<OL,</OL,<UL,</UL," +
                     "<LI,</LI,<DIV,</DIV," +
                     "<TT,</TT,<SMALL,</SMALL," +
                     "<SPAN,</SPAN,<H1,</H1," +
                     "<H2,</H2,<H3,</H3," +
                     "<H4,</H4,<H5,</H5," +
                     "<STRONG,</STRONG,<EM,</EM," +
                     "<BR,<IMG"; 
        var isLower = isUpper.toLowerCase();
        var upperArray = isUpper.split(",");
        var lowerArray = isLower.split(",");
        for(i = 0; i <= upperArray.length-1; i++){
            var newTxt = "";
            var re_1 = new RegExp(upperArray[i], "g");    
            var re_2 = lowerArray[i];    
        
            var src2Lowered = src2Lowered.replace(re_1,re_2);
        }
    
    }
    return src2Lowered;
}



// getting HTMLCode of a selection with Mozilla;
function getMozSelHTML(srcExt){
    var src = setSrc(srcExt);
    var x = document.createElement("div");
    x.appendChild(src.getSelection().getRangeAt(0).cloneContents());
    return x.innerHTML;
}

// getting HTMLCode of a selection with IE;
function getIESelHTML(srcExt){
    var src = setSrc(srcExt);
    ieHTML = src.document.selection.createRange().htmlText;
    return ieHTML;
}

// getting HTMLCode of a selection 
function selHTML(srcExt){
    var src = setSrc(srcExt);
    if (document.all)
        var getHtmlSrc = getIESelHTML(srcExt); 
    else 
        var getHtmlSrc = getMozSelHTML(srcExt); 
    return getHtmlSrc;
}

// delete HTML of selected area 
function delHTML(srcExt){
    src = srcExt;
    if (src == false)
        src = setSrc(srcExt);
    // checking if IE
    if (document.all){
        rngRef = src.document.selection.createRange();
        newRng = rngRef;
        rngHTML = rngRef.htmlText;
        rngTxt = rngRef.text;
        rngRef = rngRef.pasteHTML("");
        newRng = newRng.pasteHTML(rngTxt);
    // else if w3c DOM 
    }else {
        var rngRef = getMozSelHTML(srcExt);
        var rngText = src.getSelection();
        var newRng = src.document.body.innerHTML.replace(rngRef,rngText);
        src.document.body.innerHTML = newRng;
    }
}

// set HTML code in element
function setHTML(pasteElem, srcExt) {
    src = srcExt;
    // checking if IE
    if (document.all) {
        rngRef = src.document.selection.createRange();
        rngText = rngRef.text;
        newElem = "<" + pasteElem + ">" + rngText + "</" + pasteElem + ">";
        rngRef = rngRef.pasteHTML(newElem);
        
    // else if w3c DOM 
    } else {
        var rngRef = src.getSelection().getRangeAt(0);
        var newElem = document.createElement(pasteElem);
        var newText = document.createTextNode(rngRef);
        newElem.appendChild(newText);
        rngRef.deleteContents();
        rngRef.insertNode(newElem);
        src.focus();
    }
}



function formatTxt(setTag,srcExt){
    var src = setSrc(srcExt);
    var getHtml = selHTML(srcExt);
    var setTagBeg = "<" + setTag;

    // new RegExp to search through all the string ignoring the case
    var re_1 = new RegExp(setTagBeg, "ig");

    // match RegExp on string
    var tagIs =  getHtml.match(re_1);

    // if RegExp not null then tag already setted
    if (tagIs != null)
        delHTML(src);                      // is same then delete tag
    else 
        setHTML(setTag,src);               // not the same then set the tag 
}

// insert HTML
function insHTML(pasteElem) {
    src = setSrc(true);
    if (document.all) {
        rngRef = src.document.selection.createRange();
        rngText = rngRef.text;
        newElem = pasteElem;
        rngRef = rngRef.pasteHTML(newElem);
    } else {
        src.document.body.innerHTML = src.document.body.innerHTML + pasteElem;
    }
}

