﻿function validate(theForm)
{

  if (theForm.guestname.value.length < 3)
  {
    alert("Please input your name or nick into \"Guest name\" (3 or more symbols)");
    theForm.guestname.focus();
    return (false);
  }
  return (true);
}

function stopError() {return true;}
window.onerror = stopError;

var text_enter_image    = "Enter complete image address";
var enter_url           = "Enter link URL";
var text_enter_url      = "Enter link description (can be empty)";
var error_no_url        = "Enter a valid link";
var error_no_http       = "Link should contain http://";
var error_space_url     = "Link cannot contain spaces";
var error_long_url      = "Link less than 50 symbols must have a description";
var help_bold           = "Bold";
var help_italic         = "Italic";
var help_under          = "Underline";
var help_big            = "Big text";
var help_small          = "Small text";
var help_close          = "Close all open tags";
var help_img            = "Insert an image";
var help_url            = "Insert a link";
var help_quote          = "Insert quote";
var help_sup            = "Superscript";
var help_sub            = "Subscript";
var help_click_close    = "Click the button to close the tag";
var help_indigo			= "Indigo";
var help_blue			= "Blue";
var help_green			= "Green";
var help_violet			= "Violet";
var help_orange			= "Orange";
var help_red			= "Red";


var INDIGO_open = 0;
var BLUE_open = 0;
var GREEN_open = 0;
var VIOLET_open = 0;
var ORANGE_open = 0;
var RED_open = 0;
var B_open = 0;
var I_open = 0;
var U_open = 0;
var QUOTE_open = 0;
var SUP_open = 0;
var SUB_open = 0;
var BIG_open = 0;
var SMALL_open = 0;
var bbtags   = new Array();
var myAgent   = navigator.userAgent.toLowerCase();
var myVersion = parseInt(navigator.appVersion);
var is_ie   = ((myAgent.indexOf("msie") != -1)  && (myAgent.indexOf("opera") == -1));
var is_win   =  ((myAgent.indexOf("win")!=-1) || (myAgent.indexOf("16bit")!=-1));

function hstat(msg){document.countform.helpbox.value = eval( "help_" + msg );}

function cstat(){
var c = stacksize(bbtags);
if ( (c < 1) || (c == null) ) {c = 0;}
if ( ! bbtags[0] ) {c = 0; }
document.countform.tagcount.value = c;
}

function stacksize(thearray){
for (i = 0 ; i < thearray.length; i++ ) {
if ( (thearray[i] == "") || (thearray[i] == null) || (thearray == 'undefined') ) {return i;}
} return thearray.length;
}

function pushstack(thearray, newval){
arraysize = stacksize(thearray);
thearray[arraysize] = newval;
}

function popstack(thearray){
arraysize = stacksize(thearray);
theval = thearray[arraysize - 1];
delete thearray[arraysize - 1];
return theval;
}

function closeall(){
if (bbtags[0]) {
while (bbtags[0]) {
tagRemove = popstack(bbtags);
document.countform.messagebody.value += "[/" + tagRemove + "]";
eval("document.countform." + tagRemove + ".value = ' " + tagRemove + " '");
eval(tagRemove + "_open = 0");
}}
document.countform.tagcount.value = 0;
bbtags = new Array();
document.countform.messagebody.focus();
}

function simpletag(thetag){
var tagOpen = eval(thetag + "_open");
if (tagOpen == 0) {if(doInsert("[" + thetag + "]", "[/" + thetag + "]", true)){eval(thetag + "_open = 1"); eval("document.countform." + thetag + ".value += '*'"); pushstack(bbtags, thetag);  cstat(); hstat('click_close'); }}
else {lastindex = 0; for (i = 0 ; i < bbtags.length; i++ ) {  if ( bbtags[i] == thetag ) {lastindex = i;}}
while (bbtags[lastindex]) {tagRemove = popstack(bbtags);  doInsert("[/" + tagRemove + "]", "", false);eval("document.countform." + tagRemove + ".value = '" + tagRemove + "'");eval(tagRemove + "_open = 0");}
cstat(); }}

function tag_image(){
var FoundErrors = '';
var enterURL   = prompt(text_enter_image, "");
if (!enterURL) {FoundErrors += " " + error_no_url;}
if (enterURL.indexOf("http://") == -1) {FoundErrors += " " + error_no_http;}
if (enterURL.indexOf(" ") != -1) {FoundErrors += " " + error_space_url;}
if (FoundErrors) {alert("Ошибка!"+FoundErrors); return;}
doInsert("[IMG="+enterURL+"][/IMG]", "", false);
}

function tag_url(){
var FoundErrors = '';
var enterURL   = prompt(enter_url, "");
var textURL   = prompt(text_enter_url, "");
if (!enterURL) {FoundErrors += " " + error_no_url;}
if (enterURL.indexOf("http://") == -1) {FoundErrors += " " + error_no_http;}
if (enterURL.indexOf(" ") != -1) {FoundErrors += " " + error_space_url;}
if (enterURL.length > 50 && (!textURL || textURL.length >50)) {FoundErrors += " " + error_long_url;}
if (FoundErrors) {alert("Ошибка!"+FoundErrors); return;}
if (textURL) {doInsert("[URL="+enterURL+"]"+textURL+"[/URL]", "", false);}
else {doInsert("[URL]"+enterURL+"[/URL]", "", false);}
}

function doInsert(ibTag, ibClsTag, isSingle){
var isClose = false;
var obj_ta = document.countform.messagebody;
if ( (myVersion >= 4) && is_ie && is_win) {
   if(obj_ta.isTextEdit){
      obj_ta.focus();
      var sel = document.selection;
      var rng = sel.createRange();
      rng.collapse;
      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 (myAgent.indexOf("opera")>0) {
  	 obj_ta.value += ibTag;
  	 isClose = true;
  } else {
     if (window.getSelection() || document.getSelection()) {
        if(isSingle){isClose = true;}
        var sel1 = obj_ta.value.substr(0, obj_ta.selectionStart);
        var sel2 = obj_ta.value.substr(obj_ta.selectionEnd);
        var sel = obj_ta.value.substr(obj_ta.selectionStart, obj_ta.selectionEnd-obj_ta.selectionStart);
        if(ibClsTag != "" && sel.length > 0){
           sel = ibTag + sel + ibClsTag;
           isClose = false;
        } else {
           if(isSingle){isClose = true;}
           sel = ibTag + sel;
        }
        var selPos = sel1.length + sel.length;
        obj_ta.value = sel1 + sel + sel2;
        obj_ta.setSelectionRange(selPos, selPos);
     } else {
     	obj_ta.value += ibTag;
  	    isClose = true;
     }
  }
}
obj_ta.focus(); return isClose;
}

