//--------------------------------------------
// Set up our simple tag open values
//--------------------------------------------
//
// Modified by Volker Puttrich to allow IE 4+
// on windows to use cursor position for inserting
// tags / smilies

var B_open = 0;
var I_open = 0;
var U_open = 0;
var QUOTE_open = 0;
var CODE_open = 0;
var SQL_open = 0;
var HTML_open = 0;

var bbtags   = new Array();

// Determine browser type and stuff.
// Borrowed from http://www.mozilla.org/docs/web-developer/sniffer/browser_type.html

var myAgent   = navigator.userAgent.toLowerCase();
var myVersion = parseInt(navigator.appVersion);

//var is_ie   = ((myAgent.indexOf("msie") != -1)  && (myAgent.indexOf("opera") == -1));
var is_ie   = (myAgent.indexOf("msie") != -1);

if( (myAgent.indexOf("opera") != -1) || (myAgent.indexOf("firefox") != -1) ){
    is_ie = true;
    myVersion = 6;
}
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_win   =  ((myAgent.indexOf("win")!=-1) || (myAgent.indexOf("16bit")!=-1));
var is_mac    = (myAgent.indexOf("mac")!=-1);

// Set the initial radio button status based on cookies

var allcookies = document.cookie;
var pos = allcookies.indexOf("bbmode=");

prep_mode();

var MessageMax  = "Максимально допустимая длина";
var Override    = "{$ibforums->lang['override']}";

function CheckLength() {
    MessageLength  = document.REPLIER.Post.value.length;
    message  = "";

        if (MessageMax > 0) {
            message = " Максимально допустимая длина " + MessageMax + " символов .";
        } else {
            message = "";
        }
        alert(message + " Вами использовано " + MessageLength + " символов.");
}

function emo_pop()
{
 window.open('/smiles.php','legends','width=500, height=700, resizable=yes, scrollbars=yes');
}

function prep_mode()
{
    if (pos != 1) {
        var cstart = pos + 7;
        var cend   = allcookies.indexOf(";", cstart);
        if (cend == -1) { cend = allcookies.length; }
        cvalue = allcookies.substring(cstart, cend);
        
        if (cvalue == 'ezmode') {
            document.REPLIER.bbmode[0].checked = true;
        } else {
            document.REPLIER.bbmode[1].checked = true;
        }
    } 
    else {
        // default to normal mode.
        document.REPLIER.bbmode[1].checked = true;
    }
}

function setmode(mVal)
{
    document.cookie = "bbmode="+mVal+"; path=/; expires=Wed, 1 Jan 2020 00:00:00 GMT;";
}

function get_easy_mode_state()
{
    // Returns true if we've chosen easy mode
    
    if (document.REPLIER.bbmode[0].checked) {
        return true;
    }
    else {
        return false;
    }
}

//--------------------------------------------
// Set the help bar status
//--------------------------------------------

function hstat(msg)
{
    document.REPLIER.helpbox.value = msg ;
}

// Set the number of tags open box

function cstat()
{
    var c = stacksize(bbtags);
    
    if ( (c < 1) || (c == null) ) {
        c = 0;
    }
    
    if ( ! bbtags[0] ) {
        c = 0;
    }
    
    document.REPLIER.tagcount.value = c;
}

//--------------------------------------------
// Get stack size
//--------------------------------------------

function stacksize(thearray)
{
    for (i = 0 ; i < thearray.length; i++ ) {
        if ( (thearray[i] == "") || (thearray[i] == null) || (thearray == 'undefined') ) {
            return i;
        }
    }
    
    return thearray.length;
}

//--------------------------------------------
// Push stack
//--------------------------------------------

function pushstack(thearray, newval)
{
    arraysize = stacksize(thearray);
    thearray[arraysize] = newval;
}

//--------------------------------------------
// Pop stack
//--------------------------------------------

function popstack(thearray)
{
    arraysize = stacksize(thearray);
    theval = thearray[arraysize - 1];
    delete thearray[arraysize - 1];
    return theval;
}


//--------------------------------------------
// Close all tags
//--------------------------------------------

function closeall()
{
    if (bbtags[0]) {
        while (bbtags[0]) {
            tagRemove = popstack(bbtags)
            document.REPLIER.Post.value += "[/" + tagRemove + "]";
            
            // Change the button status
            // Ensure we're not looking for FONT, SIZE or COLOR as these
            // buttons don't exist, they are select lists instead.
            
            if ( (tagRemove != 'FONT') && (tagRemove != 'SIZE') && (tagRemove != 'COLOR') )
            {
                eval("document.REPLIER." + tagRemove + ".value = ' " + tagRemove + " '");
                eval(tagRemove + "_open = 0");
            }
        }
    }
    
    // Ensure we got them all
    document.REPLIER.tagcount.value = 0;
    bbtags = new Array();
    document.REPLIER.Post.focus();
}

//--------------------------------------------
// EMOTICONS
//--------------------------------------------

function emoticon(theSmilie)
{
    doInsert(" " + theSmilie + " ", "", false);
}

//--------------------------------------------
// ADD CODE
//--------------------------------------------

function add_code(NewCode)
{
    document.REPLIER.Post.value += NewCode;
    document.REPLIER.Post.focus();
}

//--------------------------------------------
// ALTER FONT
//--------------------------------------------

function alterfont(theval, thetag)
{
    if (theval == 0)
        return;
    
    if(doInsert("[" + thetag + "=" + theval + "]", "[/" + thetag + "]", true))
        pushstack(bbtags, thetag);
    
    document.REPLIER.ffont.selectedIndex  = 0;
    document.REPLIER.fsize.selectedIndex  = 0;
    document.REPLIER.fcolor.selectedIndex = 0;
    
    cstat();
    
}


//--------------------------------------------
// SIMPLE TAGS (such as B, I U, etc)
//--------------------------------------------

function simpletag(thetag)
{   
    var obj = document.getElementById('message');
    var oTag = '[';
    var cTag = '[';
                
    if(thetag == 'B'){
        oTag += 'B]';
        cTag += '/B]';
    }
    if(thetag == 'I'){
        oTag += 'I]';
        cTag += '/I]';
    }
    if(thetag == 'U'){
        oTag += 'U]';
        cTag += '/U]';
    }
    
    if (document.selection){
        obj.focus();
        var str = document.selection.createRange().text;
        document.selection.createRange().text = oTag + str+ cTag;
    }
    else{
        
        if (obj.selectionStart!=obj.selectionEnd){
            
            var start = obj.selectionStart;
            var end = obj.selectionEnd;
            
            var rs = oTag + obj.value.substr(start,end-start) + cTag;
            obj.value = obj.value.substr(0,start)+rs+obj.value.substr(end);
            obj.setSelectionRange(end,end);
            
            return true;
        }
        else{
            
            var tagOpen = eval(thetag + "_open");
            
            if ( get_easy_mode_state() )
            {
                inserttext = prompt("Введите текст для форматирования" + "\n[" + thetag + "]xxx[/" + thetag + "]");
                if ( (inserttext != null) && (inserttext != "") )
                {
                    doInsert("[" + thetag + "]" + inserttext + "[/" + thetag + "] ", "", false);
                }
            }
            else {
                if (tagOpen == 0)
                {
                    if(doInsert("[" + thetag + "]", "[/" + thetag + "]", true))
                    {
                        eval(thetag + "_open = 1");
                        // Change the button status
                        eval("document.REPLIER." + thetag + ".value += '*'");
                
                        pushstack(bbtags, thetag);
                        cstat();
                        hstat('click_close');
                    }
                }
                else {
                    // Find the last occurance of the opened tag
                    lastindex = 0;
                    
                    for (i = 0 ; i < bbtags.length; i++ )
                    {
                        if ( bbtags[i] == thetag )
                        {
                            lastindex = i;
                        }
                    }
                    
                    // Close all tags opened up to that tag was opened
                    while (bbtags[lastindex])
                    {
                        tagRemove = popstack(bbtags);
                        doInsert("[/" + tagRemove + "]", "", false)
                        
                        // Change the button status
                        if ( (tagRemove != 'FONT') && (tagRemove != 'SIZE') && (tagRemove != 'COLOR') )
                        {
                            eval("document.REPLIER." + tagRemove + ".value = ' " + tagRemove + " '");
                            eval(tagRemove + "_open = 0");
                        }
                    }
                    cstat();
                }
            }
        }
    }
}


function tag_list()
{
    var listvalue = "init";
    var thelist = "";
    
    while ( (listvalue != "") && (listvalue != null) )
    {
        listvalue = prompt("Введите текст", "");
        if ( (listvalue != "") && (listvalue != null) )
        {
            thelist = thelist+"[*]"+listvalue+"\n";
        }
    }
    
    if ( thelist != "" )
    {
        doInsert( "[LIST]\n" + thelist + "[/LIST]\n", "", false);
    }
}

function tag_url()
{
    var FoundErrors = '';
    var enterURL   = prompt("Введите полный URL ссылки", "http://");
    var enterTITLE = prompt("Введите название сайта", "My Webpage");

    if (!enterURL) {
        FoundErrors += " " + error_no_url;
    }
    if (!enterTITLE) {
        FoundErrors += " " + error_no_title;
    }

    if (FoundErrors) {
        alert("Error!"+FoundErrors);
        return;
    }

    doInsert("[URL="+enterURL+"]"+enterTITLE+"[/URL]", "", false);
}

function tag_image()
{
    var FoundErrors = '';
    var enterURL   = prompt("Введите полный URL изображения", "http://");

    if (!enterURL) {
        FoundErrors += " " + error_no_url;
    }

    if (FoundErrors) {
        alert("Error!"+FoundErrors);
        return;
    }

    doInsert("[IMG]"+enterURL+"[/IMG]", "", false);
}

function tag_email()
{
    var emailAddress = prompt("Введите e-mail адрес", "");

    if (!emailAddress) { 
        alert(error_no_email); 
        return; 
    }

    doInsert("[EMAIL]"+emailAddress+"[/EMAIL]", "", false);
}

//--------------------------------------------
// GENERAL INSERT FUNCTION
//--------------------------------------------
// ibTag: opening tag
// ibClsTag: closing tag, used if we have selected text
// isSingle: true if we do not close the tag right now
// return value: true if the tag needs to be closed later

//

function doInsert(ibTag, ibClsTag, isSingle)
{
    var isClose = false;
    var obj_ta = document.REPLIER.Post;
    if ( (myVersion >= 4) && is_ie && is_win) // Ensure it works for IE4up / Win only
    {
//		if(obj_ta.isTextEdit){ // this doesn't work for NS, but it works for IE 4+ and compatible browsers
        if( document.selection ){ 
            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;
                else if(isSingle)
                    isClose = true;
    
                rng.text = ibTag;
            }
        }
        else{
            if(isSingle)
                isClose = true;
    
            obj_ta.value += ibTag;
        }
    }
    else
    {
        if(isSingle)
            isClose = true;

        obj_ta.value += ibTag;
    }

    obj_ta.focus();
    
    // clear multiple blanks
//	obj_ta.value = obj_ta.value.replace(/  /, " ");

    return isClose;
}	
                                         