function bold(element)
{
    var target = document.getElementById(element);
    target.value += "[b] [/b]";
}

function italic(element)
{
    var target = document.getElementById(element);
    target.value += "[i] [/i]";
}

function underline(element)
{
    var target = document.getElementById(element);
    target.value += "[u] [/u]";
}

function quote(element)
{
    var target = document.getElementById(element);
    target.value += "[quote] [/quote]";
}

function url(element)
{
    var target = document.getElementById(element);
    target.value += "[url:=<desc>] [/url]";
}

function cleartext(element)
{
    var target = document.getElementById(element);
    target.value = "";
}

function replaceposttags(element, hiddenelement)
{
    var target = document.getElementById(element);
    var stealthtarget = document.getElementById(hiddenelement);
    var userpost = target.value;
    var posttags = new Array("[b]", "[/b]", "[u]", "[/u]", "[i]", "[/i]", "[quote]", "[/quote]", "[url:=", "[/url]");
    var htmltags = new Array("<b>", "</b>", "<u>", "</u>", "<i>", "</i>", "<hr /><br />", "<hr /><br />", "<a href='", "</a>");
    var urldesc = "";
    var urlstr = "";
    
    var valid = validateposttags(element);
    
    if (valid == true)
    {
        if (userpost.length == 0)
        {
            alert("Write something please.");
            return false;
        }
        else
        {
            for (var i = 0; i < posttags.length; i++)
            {   
                while (userpost.indexOf(posttags[i]) >= 0)
                {
                    if (posttags[i] == "[url:=")
                    {   
                        urldesc = userpost.substring(userpost.indexOf("[url:=") + 6, userpost.indexOf("]", userpost.indexOf("[url:=") + 6));
                        urlstr = userpost.substring(userpost.indexOf("]", userpost.indexOf("[url:=") + 6) + 1, userpost.indexOf("[/url]"));
                        
                        if (urlstr.toLowerCase().indexOf("http://") == -1)
                            urlstr = "http://" + urlstr;
                        
                        if (urldesc == "<desc>")
                        {
                            userpost = userpost.substring(0, userpost.indexOf("[url:=")) + "<a href='" + urlstr + "'>" + urlstr + "</a>" + userpost.substring(userpost.indexOf("[/url]") + 6);
                        }
                        else
                        {
                            userpost = userpost.substring(0, userpost.indexOf("[url:=")) + "<a href='" + urldesc + "'>" + urlstr + "</a>" + userpost.substring(userpost.indexOf("[/url]") + 6);
                        }
                    }
                    else
                    {
                        userpost = userpost.replace(posttags[i], htmltags[i]);
                    }
                }
            }
        }
        
        stealthtarget.value = userpost;
               
        return true;
    }
    else
    {
        return false;
    }
} 
   
function validateposttags(element)
{
    var target = document.getElementById(element);
    var userpost = target.value; 
    var posttags = new Array("[b]", "[/b]", "[u]", "[/u]", "[i]", "[/i]", "[quote]", "[/quote]", "[url:=", "[/url]");
    var numopen = 0;
    var numclose = 0;
    var strpos = 0;
    var valid = true;
    
    for (var i = 0; i < posttags.length; i++)
    {
        while (userpost.indexOf(posttags[i], strpos) >= 0)
        {
            numopen += 1;
            strpos = userpost.indexOf(posttags[i], strpos) + posttags[i].length;
        }
        
        i += 1;
        
        strpos = 0;
        
        while (userpost.indexOf(posttags[i], strpos) >= 0)
        {
            numclose += 1;
            strpos = userpost.indexOf(posttags[i], strpos) + posttags[i].length;
        }
        
        if (numopen != numclose)
        {
            if (posttags[i - 1] == "[url:")
            {
                alert("Missing a [url:=<desc>] or a " + posttags[i] + " tag!");
                valid = false;
            }
            else
            {
                alert("Missing a " + posttags[i - 1] + " or a " + posttags[i] + " tag!");
                valid = false;
            }
        }
        
        numopen = 0;
        numclose = 0;
        strpos = 0;
    }
    
    return valid;
}
