myAgent = navigator.userAgent.toLowerCase();
var is_ie   = ((myAgent.indexOf("msie") != -1)  && (myAgent.indexOf("opera") == -1));
var is_nav  = ((myAgent.indexOf('mozilla')!=-1) && (myAgent.indexOf('spoofer')==-1)
        && (myAgent.indexOf('compatible') == -1) && (myAgent.indexOf('opera')==-1)
		&& (myAgent.indexOf('webtv') ==-1)       && (myAgent.indexOf('hotjava')==-1));
var is_moz = 0;
var is_win   =  ((myAgent.indexOf("win")!=-1) || (myAgent.indexOf("16bit")!=-1));
var is_mac    = (myAgent.indexOf("mac")!=-1);

function nxbbcode(tag, textarea)
{
	var ouverture = "[" + tag + "]";
	var fermeture = "[/" + tag + "]";
	var selection = false;
	var clientPC = navigator.userAgent.toLowerCase(); // Get client info
	var clientVer = parseInt(navigator.appVersion); // Get browser version
	
	var champtexte = document.getElementById(textarea);
	if ((clientVer >= 4) && is_ie && is_win)
	{
		selection = document.selection.createRange().text;
		if (!selection)
		{
			balise(tag, textarea);
			champtexte.focus();
			return;
		}
		else
		{
			document.selection.createRange().text = ouverture + selection + fermeture;
			champtexte.focus();
			return;
		}
	}
	else if (champtexte.selectionEnd && (champtexte.selectionEnd - champtexte.selectionStart > 0))
	{
		var longueur = champtexte.textLength;
		var debut = champtexte.selectionStart;
		var fin = champtexte.selectionEnd;
		if (fin == 1 || fin == 2)
		{
			fin = longueur;
		}
		var sel1 = (champtexte.value).substring(0, debut);
		var sel2 = (champtexte.value).substring(debut, fin);
		var sel3 = (champtexte.value).substring(fin, longueur);
		champtexte.value = sel1 + ouverture + sel2 + fermeture + sel3;
		champtexte.focus();
		return;
	}
	else
	{
		balise(tag, textarea);
		champtexte.focus();
	}
}
function addnxselectbbcode(tag, textarea)
{
	var valeur = document.getElementById(tag).value;
	var ouverture = "[" + tag + "=" + valeur + "]";
	var fermeture = "[/" + tag + "]";
	var selection = false;
	var clientPC = navigator.userAgent.toLowerCase(); // Get client info
	var clientVer = parseInt(navigator.appVersion); // Get browser version
	
	var champtexte = document.getElementById(textarea);
	if ((clientVer >= 4) && is_ie && is_win)
	{
		selection = document.selection.createRange().text;
		if (!selection)
		{
			var valeur = document.getElementById(tag).value;
			document.getElementById(tag).selectedIndex = 0;
			document.getElementById(textarea).value += "[" + tag + "=" + valeur + "][/" + tag + "]";
			document.getElementById(textarea).focus();
			return;
		}
		else
		{
			document.getElementById(tag).selectedIndex = 0;
			document.selection.createRange().text = ouverture + selection + fermeture;
			return;
		}
	}
	else if (champtexte.selectionEnd && (champtexte.selectionEnd - champtexte.selectionStart > 0))
	{
		document.getElementById(tag).selectedIndex = 0;
		var longueur = champtexte.textLength;
		var debut = champtexte.selectionStart;
		var fin = champtexte.selectionEnd;
		if (fin == 1 || fin == 2)
		{
			fin = longueur;
		}
		var sel1 = (champtexte.value).substring(0, debut);
		var sel2 = (champtexte.value).substring(debut, fin);
		var sel3 = (champtexte.value).substring(fin, longueur);
		champtexte.value = sel1 + ouverture + sel2 + fermeture + sel3;
		champtexte.focus();
		return;
	}
	else
	{
		var valeur = document.getElementById(tag).value;
		document.getElementById(tag).selectedIndex = 0;
		document.getElementById(textarea).value += "[" + tag + "=" + valeur + "][/" + tag + "]";
		document.getElementById(textarea).focus();
	}
}
function balise(tag, textarea)
{
	if (document.getElementById(tag).value == tag)
	{
		document.getElementById(textarea).value += "[" + tag + "]";
		document.getElementById(tag).value += "*";
		document.getElementById(textarea).focus();
	}
	else
	{
		document.getElementById(textarea).value += "[/" + tag + "]";
		document.getElementById(tag).value  = tag;
		document.getElementById(textarea).focus();
	}
}
function tag_url() {
    var FoundErrors = '';
    var enterURL   = prompt("Type the complete url of the link :", "http://");
    
    if (!enterURL) {
        FoundErrors += " " + "You must type an url.";
    }
        
    var myVersion = parseInt(navigator.appVersion);
    var obj_ta = document.getElementById("message");
    if (!((myVersion >= 4) && is_ie && is_win) && obj_ta.selectionStart >= 0 && obj_ta.selectionEnd >= 0 && obj_ta.selectionStart != obj_ta.selectionEnd) {
        if (obj_ta.selectionStart >= 0 && obj_ta.selectionEnd >= 0 && obj_ta.selectionStart != obj_ta.selectionEnd) {
            var enterTITLE = "";
        }
        else {
            var enterTITLE = prompt("Type the title of the link :", "My Webpage");
            if (!enterTITLE) {
                FoundErrors += " " + "You must type a title.";
            }
        }        
        if (FoundErrors) {
            alert("Error! "+FoundErrors); 
            return; 
        }
        doInsert("[url="+enterURL+"]"+enterTITLE, "[/url]");
    }
    else {    
        var enterTITLE = prompt("Type the title of the link :", "My Webpage");
        if (!enterTITLE) {
            FoundErrors += " " + "You must type a title.";
        }
        if (FoundErrors) {
            alert("Error! "+FoundErrors);
            return;
        }
        doInsert("[url="+enterURL+"]"+enterTITLE+"[/url]", "");
    }
}
function tag_image() {
    var FoundErrors = '';
    var enterURL   = prompt("Type the complete url of the image :", "http://");
    if (!enterURL) {
        FoundErrors += " " + "You must type an url.";
    }
    if (FoundErrors) {
        alert("Error!"+FoundErrors);
        return;
    }
	doInsert("[img]"+enterURL+"[/img]", "");
}
function tag_email() {
    var FoundErrors = '';
    var emailAddress = prompt("Type e-mail address here :", "me@provider.com");    
    if (!emailAddress) {
        FoundErrors += " " + "You must type an e-mail address.";
    }
        
    var myVersion = parseInt(navigator.appVersion);
    var obj_ta = document.getElementById("message");
    if (!((myVersion >= 4) && is_ie && is_win) && obj_ta.selectionStart >= 0 && obj_ta.selectionEnd >= 0 && obj_ta.selectionStart != obj_ta.selectionEnd) {
        if (obj_ta.selectionStart >= 0 && obj_ta.selectionEnd >= 0 && obj_ta.selectionStart != obj_ta.selectionEnd) {
            var emailTitle = "";
        }
        else {
            var emailTitle = prompt("Type title of mail address here :", "Email me!");
            if (!emailAddress) {
                FoundErrors += " " + "You must type an e-mail address.";
            }
        }        
        if (FoundErrors) {
            alert("Error! "+FoundErrors); 
            return; 
        }
        doInsert("[email="+emailAddress+"]"+emailTitle, "[/email]");
    }
    else {    
        var emailTitle = prompt("Type title of mail address here :", "Email me!");
        if (!emailTitle) {
            FoundErrors += " " + "You must type a title for the link.";
        }
        if (FoundErrors) {
            alert("Error! "+FoundErrors); 
            return; 
        }
        doInsert("[email="+emailAddress+"]"+emailTitle+"[/email]", "");
    }
}
function doInsert(ibTag, ibClsTag) {
    var myAgent   = navigator.userAgent.toLowerCase();
    var myVersion = parseInt(navigator.appVersion);
    var obj_ta = document.getElementById("message");
    if ( (myVersion >= 4) && is_ie && is_win) { 
        if(obj_ta.isTextEdit) {
            obj_ta.focus();
            var sel = document.selection;
            var rng = sel.createRange();
            rng.colapse;
            if((sel.type == "Text" || sel.type == "None") && rng != null){
                if(ibClsTag != "" && rng.text.length > 0)
                    ibTag += rng.text + ibClsTag;
                rng.text = ibTag;
            }
        }
        else {
            obj_ta.value += ibTag;
        }
    }
    else {
        if (obj_ta.selectionStart >= 0 && obj_ta.selectionEnd >= 0) {
            obj_ta.value = obj_ta.value.substring(0, obj_ta.selectionStart)+ ibTag + obj_ta.value.substring(obj_ta.selectionStart,obj_ta.selectionEnd) + ibClsTag+ obj_ta.value.substring(obj_ta.selectionEnd);
        }
        else {
            obj_ta.value += ibTag + ibClsTag;    
        }
    }
    obj_ta.focus();
}
function tag_select(formu,textarea,tag_name) {
	var FoundErrors = '';
	var tag_index =  formu.options.selectedIndex;
	var tag_value =  formu.options[tag_index].value;
	
	formu.options[0].selected=true;
	if (!tag_value) {
		FoundErrors += " " + "Problem.";
	}
	if(tag_value != 'none') {
		var selection = false;
		var clientPC = navigator.userAgent.toLowerCase(); // Get client info
		var clientVer = parseInt(navigator.appVersion); // Get browser version
		
		var champtexte = document.getElementById(textarea);
		if ((clientVer >= 4) && is_ie && is_win) {
			selection = document.selection.createRange().text;
			if (!selection) {
				document.getElementById(textarea).value += "["+tag_name+"="+tag_value+"][/"+tag_name+"]";
				document.getElementById(textarea).focus();
				champtexte.focus();
				return;
			} else {
				document.selection.createRange().text = "["+tag_name+"=" + tag_value + "]" + selection + "[/"+tag_name+"]";
				champtexte.focus();
				return;
			}
		} else if (champtexte.selectionEnd && (champtexte.selectionEnd - champtexte.selectionStart > 0)) {
			var longueur = champtexte.textLength;
			var debut = champtexte.selectionStart;
			var fin = champtexte.selectionEnd;
			if (fin == 1 || fin == 2) {
				fin = longueur;
			}
			var sel1 = (champtexte.value).substring(0, debut);
			var sel2 = (champtexte.value).substring(debut, fin);
			var sel3 = (champtexte.value).substring(fin, longueur);
			champtexte.value = sel1 + "["+tag_name+"=" + tag_value + "]" +sel2 + "[/"+tag_name+"]" + sel3;
			champtexte.focus();
			return;
		} else {
			document.getElementById(textarea).value += "["+tag_name+"="+tag_value+"][/"+tag_name+"]";
			document.getElementById(textarea).focus();
			champtexte.focus();
			return;
		}
	}
	if (FoundErrors) {
		alert("Error! "+FoundErrors);
		return;
	}
}
