
var htmin=0;
var imageTag = false;
var theSelection = false;
var clientPC = navigator.userAgent.toLowerCase(); // Get client info
var clientVer = parseInt(navigator.appVersion); // Get browser version

var is_ie = ((clientPC.indexOf("msie") != -1) && (clientPC.indexOf("opera") == -1));
var is_nav = ((clientPC.indexOf('mozilla')!=-1) && (clientPC.indexOf('spoofer')==-1)
                && (clientPC.indexOf('compatible') == -1) && (clientPC.indexOf('opera')==-1)
                && (clientPC.indexOf('webtv')==-1) && (clientPC.indexOf('hotjava')==-1));
var is_moz = 0;

var is_win = ((clientPC.indexOf("win")!=-1) || (clientPC.indexOf("16bit") != -1));
var is_mac = (clientPC.indexOf("mac")!=-1);



// Define the bbCode tags
bbcode = new Array();
bbtags = new Array('[b]','[/b]','[i]','[/i]','[u]','[/u]','[quote]','[/quote]','[vip]','[/vip]','[img]','[/img]','[url]','[/url]','[left]','[/left]','[center]','[/center]','[right]','[/right]','[justify]','[/justify]','[vipp]','[/vipp]');
imageTag = false;




// Replacement for arrayname.length property
function getarraysize(thearray) {
        for (i = 0; i < thearray.length; i++) {
                if ((thearray[i] == "undefined") || (thearray[i] == "") || (thearray[i] == null))
                        return i;
                }
        return thearray.length;
}

// Replacement for arrayname.push(value) not implemented in IE until version 5.5
// Appends element to the array
function arraypush(thearray,value) {
        thearray[ getarraysize(thearray) ] = value;
}

// Replacement for arrayname.pop() not implemented in IE until version 5.5
// Removes and returns the last element of an array
function arraypop(thearray) {
        thearraysize = getarraysize(thearray);
        retval = thearray[thearraysize - 1];
        delete thearray[thearraysize - 1];
        return retval;
}




function raw(text) {
        var txtarea = document.getElementById('text');
        text = '' + text + '';
        if (txtarea.createTextRange && txtarea.caretPos) {
                var caretPos = txtarea.caretPos;
                caretPos.text = caretPos.text.charAt(caretPos.text.length - 1) == ' ' ? caretPos.text + text + ' ' : caretPos.text + text;
                txtarea.focus();
        } else {
                txtarea.value  += text;
                txtarea.focus();
        }

}

function bbfontstyle(bbopen, bbclose) {
        var txtarea = document.getElementById('text');

        if ((clientVer >= 4) && is_ie && is_win) {
                theSelection = document.selection.createRange().text;
                if (!theSelection) {
                        txtarea.value += bbopen + bbclose;
                        txtarea.focus();
                        return;
                }
                document.selection.createRange().text = bbopen + theSelection + bbclose;
                txtarea.focus();
                return;
        }
        else if (txtarea.selectionEnd && (txtarea.selectionEnd - txtarea.selectionStart > 0))
        {
                mozWrap(txtarea, bbopen, bbclose);
                return;
        }
        else
        {
                txtarea.value += bbopen + bbclose;
                txtarea.focus();
        }
        storeCaret(txtarea);
}


function bbstyle(bbnumber) {
        var txtarea = document.getElementById('text');

        txtarea.focus();
        donotinsert = false;
        theSelection = false;
        bblast = 0;

        if (bbnumber == -1) { // Close all open tags & default button names
                while (bbcode[0]) {
                        butnumber = arraypop(bbcode) - 1;
                        txtarea.value += bbtags[butnumber + 1];

                }
                imageTag = false; // All tags are closed including image tags :D
                txtarea.focus();
                return;
        }

        if ((clientVer >= 4) && is_ie && is_win)
        {
                theSelection = document.selection.createRange().text; // Get text selection
                if (theSelection) {
                        // Add tags around selection
                        document.selection.createRange().text = bbtags[bbnumber] + theSelection + bbtags[bbnumber+1];
                        txtarea.focus();
                        theSelection = '';
                        return;
                }
        }
        else if (txtarea.selectionEnd && (txtarea.selectionEnd - txtarea.selectionStart > 0))
        {
                mozWrap(txtarea, bbtags[bbnumber], bbtags[bbnumber+1]);
                return;
        }

        // Find last occurance of an open tag the same as the one just clicked
        for (i = 0; i < bbcode.length; i++) {
                if (bbcode[i] == bbnumber+1) {
                        bblast = i;
                        donotinsert = true;
                }
        }

        if (donotinsert) {                // Close all open tags up to the one just clicked & default button names
                while (bbcode[bblast]) {
                                butnumber = arraypop(bbcode) - 1;
                                txtarea.value += bbtags[butnumber + 1];
                                imageTag = false;
                        }
                        txtarea.focus();
                        return;
        } else { // Open tags

                if (imageTag && (bbnumber != 14)) {                // Close image tag before adding another
                        txtarea.value += bbtags[15];
                        lastValue = arraypop(bbcode) - 1;        // Remove the close image tag from the list
                        document.post.addbbcode14.value = "Img";        // Return button back to normal state
                        imageTag = false;
                }

                // Open tag
                txtarea.value += bbtags[bbnumber];
                if ((bbnumber == 14) && (imageTag == false)) imageTag = 1; // Check to stop additional tags after an unclosed image tag
                arraypush(bbcode,bbnumber+1);
                txtarea.focus();
                return;
        }
        storeCaret(txtarea);
}

// From http://www.massless.org/mozedit/
function mozWrap(txtarea, open, close)
{
        var selLength = txtarea.textLength;
        var selStart = txtarea.selectionStart;
        var selEnd = txtarea.selectionEnd;
        if (selEnd == 1 || selEnd == 2)
                selEnd = selLength;

        var s1 = (txtarea.value).substring(0,selStart);
        var s2 = (txtarea.value).substring(selStart, selEnd)
        var s3 = (txtarea.value).substring(selEnd, selLength);
        txtarea.value = s1 + open + s2 + close + s3;
        return;
}

// Insert at Claret position. Code from
// http://www.faqts.com/knowledge_base/view.phtml/aid/1052/fid/130
function storeCaret(textEl) {
        if (textEl.createTextRange) textEl.caretPos = document.selection.createRange().duplicate();
}

function sethtmtext(htmt) {
        var txtarea = document.getElementById('text');
    txtarea.value = '';
        htmin=htmt;
}

function show(id)
{
        obj=document.getElementById(id);
        obj.style.display='block';
}

function hide(id)
{
        obj=document.getElementById(id);
        obj.style.display='none';
}

function showhide(id)
{
        obj=document.getElementById(id);
        if(obj.style.display=='none')
                show(id);
        else
                hide(id);

}

function shswap(id1,id2)
{
        showhide(id1);
        showhide(id2);

}

function validatepost()
{

        error='';
        if(document.getElementById('title').value=='')
                error='Не заполнен заголовок публкации';
        mkcurl('title','curl');
        if(document.getElementById('curl').value=='')
                error+='\nНеправильно заполнен заголовок публкации - не удаёться сформировать url';
        if(document.getElementById('text').value=='')
                error+='\nДелать пустую публикацию плохая идея )';



        if(error=='')
                return true
        else
        {
                alert(error);
                return false;

        }


}

function mkcurl(src,dst)
{
        var NewText = document.getElementById(src).value;
        var separator = "_";
        NewText = NewText.toLowerCase();

        if (separator != "_")
        {
                NewText = NewText.replace(/\_/g, separator);
        }
        else
        {
                NewText = NewText.replace(/\-/g, separator);
        }

        NewText = NewText.replace(/<(.*?)>/g, "");
        NewText = NewText.replace(/\&#\d+\;/g, "");
        NewText = NewText.replace(/\&\#\d+?\;/g, "");
        NewText = NewText.replace(/\&\S+?\;/g,"");
        NewText = NewText.replace(/['\"\?\.\!*$\#@%;:,=\(\)\[\]]/g,"");
        NewText = NewText.replace(/\s+/g, separator);
        NewText = NewText.replace(/\//g, separator);
        NewText = NewText.replace(/а/g, "a");
        NewText = NewText.replace(/б/g, "b");
        NewText = NewText.replace(/в/g, "v");
        NewText = NewText.replace(/г/g, "g");
        NewText = NewText.replace(/д/g, "d");
        NewText = NewText.replace(/е/g, "e");
        NewText = NewText.replace(/ё/g, "e");
        NewText = NewText.replace(/ж/g, "zh");
        NewText = NewText.replace(/з/g, "z");
        NewText = NewText.replace(/и/g, "i");
        NewText = NewText.replace(/й/g, "y");
        NewText = NewText.replace(/к/g, "k");
        NewText = NewText.replace(/л/g, "l");
        NewText = NewText.replace(/м/g, "m");
        NewText = NewText.replace(/н/g, "n");
        NewText = NewText.replace(/о/g, "o");
        NewText = NewText.replace(/п/g, "p");
        NewText = NewText.replace(/р/g, "r");
        NewText = NewText.replace(/с/g, "s");
        NewText = NewText.replace(/т/g, "t");
        NewText = NewText.replace(/у/g, "u");
        NewText = NewText.replace(/ф/g, "f");
        NewText = NewText.replace(/х/g, "x");
        NewText = NewText.replace(/ц/g, "ts");
        NewText = NewText.replace(/ч/g, "ch");
        NewText = NewText.replace(/ш/g, "sh");
        NewText = NewText.replace(/щ/g, "sch");
        NewText = NewText.replace(/ъ/g, "");
        NewText = NewText.replace(/ы/g, "y");
        NewText = NewText.replace(/ь/g, "");
        NewText = NewText.replace(/э/g, "e");
        NewText = NewText.replace(/ю/g, "ju");
        NewText = NewText.replace(/я/g, "ja");
        NewText = NewText.replace(/[^a-z0-9-_]/g,"");
        NewText = NewText.replace(/\+/g, separator);
        NewText = NewText.replace(/\&/g,"");
        NewText = NewText.replace(/-$/g,"");
        NewText = NewText.replace(/_$/g,"");
        NewText = NewText.replace(/^_/g,"");
        NewText = NewText.replace(/^-/g,"");

        document.getElementById(dst).value = NewText;


}
function s_z(event, full){
        var x = event.clientX + document.documentElement.scrollLeft + document.body.scrollLeft;
        var y = event.clientY + document.documentElement.scrollTop + document.body.scrollTop;
        if(full){var elementid='icon-zoom';}else{{var elementid='icon-in';}}
        document.getElementById(elementid).style.display = '';
        document.getElementById(elementid).style.left = x - 16 + 'px';
        document.getElementById(elementid).style.top = y - 15 + 'px';
}
function h_z(full){
        if(full){var elementid='icon-zoom';}else{{var elementid='icon-in';}}
        document.getElementById(elementid).style.display = 'none';
}


function Insert(text,Id) {
var txtarea = document.getElementById(Id);
        text = '' + text + '';
        if (txtarea.createTextRange && txtarea.caretPos) {
                var caretPos = txtarea.caretPos;
                caretPos.text = caretPos.text.charAt(caretPos.text.length - 1) == ' ' ? caretPos.text + text + ' ' : caretPos.text + text;
                txtarea.focus();
        } else {
                txtarea.value  += text;
                txtarea.focus();
        }
}

function ob_new(id_ob) {
return document.getElementById? document.getElementById(id_ob) : document.all(id_ob);
}

