/*
© 2006 Сеник Алексей Владимирович aka MrSlim

*/

var HTMLON = true;

// Sniffer based on http://www.mozilla.org/docs/web-developer/sniffer/browser_type.html

var uAgent    = navigator.userAgent.toLowerCase();
var isSafari = ((uAgent.indexOf('safari') != -1) || (navigator.vendor == 'Apple Computer, Inc.'));
var isOpera  = (uAgent.indexOf('opera') != -1);
var isWebtv  = (uAgent.indexOf('webtv') != -1);
var isIe     = ( (uAgent.indexOf('msie') != -1) && (!isOpera) && (!isSafari) && (!isWebtv) );
var isIe4    = ( (isIe) && (uAgent.indexOf('msie 4.') != -1) );
var isMoz    = ( (navigator.product == 'Gecko')  && (!isOpera) && (!isWebtv) && (!isSafari) );
var isNs     = ( (uAgent.indexOf('compatible') == -1) && (uAgent.indexOf('mozilla') != -1) && (!isOpera) && (!isWebtv) && (!isSafari) );
var isNs4    = ( (isNs) && (parseInt(navigator.appVersion) == 4) );
var isKon    = (uAgent.indexOf('konqueror') != -1);

var isWin    = ((uAgent.indexOf('win') != -1) || (uAgent.indexOf('16bit') !=- 1));
var isMac    = ((uAgent.indexOf('mac') != -1) || (navigator.vendor == 'Apple Computer, Inc.'));
var uaVers   = parseInt(navigator.appVersion);

var FormObj;
var FormText;
var aOpenTags = new Array();
var aButtons  = new Array(
                ['p',0,'','Абзац'],
                ['h1',0,'','Заголовок 1'],
                ['h2',0,'','Заголовок 2'],
                ['h3',0,'','Заголовок 3'],
                ['h4',0,'','Заголовок 4'],
                ['b',0,'','Жирный'],
                ['i',0,'','Курсив'],
                ['u',0,'','Подчёрткнутый'],
                ['br',1,'','Перевод строки'],
                ['a',0,'href=&quot;&quot;','Ссылка'],
                ['code',0,'','Код'],
                ['pre',0,'','Форматированный текст']
                );

function initEditor(formID, textID)
         {//alert(typeof(document.getElementById('toolBar')));
         FormObj  = document.forms[formID];
         FormText = document.forms[formID].elements[textID];
         if (document.getElementById('toolBar'))
            {
            var ToolBar = document.getElementById('toolBar');
            for (i=0; i<aButtons.length; i++)
                {
                ToolBar.innerHTML += '<input id="but_'+ aButtons[i][0] +'" type="button" onclick="insertTag(\''+ aButtons[i][0] +'\','+ aButtons[i][1] +',\''+ aButtons[i][2] +'\')" value="'+ aButtons[i][0] +'" class="submit" title="'+ aButtons[i][3] +'" />';
                }
            }
         }

function insertTag(sTagName, isSingle, sParam)
         {
         sInsText = '';
         var isOpen = (typeof(aOpenTags[sTagName]) && aOpenTags[sTagName]) ? true:false;
         sParam=(sParam) ? ' '+sParam:'';
         lt=(HTMLON) ? '<':'[';
         gt=(HTMLON) ? '>':']';
         if (isSingle)
            {
            sTagOpen  = lt + sTagName + sParam +' /'+ gt;
            sTagClose = '';
            }
         else
             {
             sTagOpen  = lt + sTagName + sParam + gt;
             sTagClose = lt + '/'+ sTagName + gt;
             }

         // It's IE
         if ((uaVers >= 4) && isIe && isWin)
            {
            if (FormText.isTextEdit)
               {
               FormText.focus();
               var sel = document.selection;
               var rng = sel.createRange();
               rng.colapse;
               if ((sel.type == 'Text' || sel.type == 'None') && rng != null)
                  {
                  if (!isSingle && rng.text.length > 0)
                     {
                     if (isSingle) sInsText = sTagOpen;
                     else sInsText = sTagOpen + rng.text + sTagClose;
                     }
                  else
                      {
                      if (isSingle)
                         {
                         sInsText = sTagOpen;
                         }
                      else
                          {
                          if (isOpen)
                             {
                             aOpenTags[sTagName] = false;
                             sInsText=sTagClose;
                             }
                          else
                              {
                              aOpenTags[sTagName] = true;
                              sInsText=sTagOpen;
                              }
                          }
                      }
                  rng.text = sInsText;
                  }
               }
            else
                {
                if (isOpen)
                   {
                   aOpenTags[sTagName] = false;
                   sInsText=sTagClose;
                   }
                else
                    {
                    aOpenTags[sTagName] = true;
                    sInsText=sTagOpen;
                    }
                FormText.value += sTagOpen;
                }
            }

         // It's Mozilla

         else if (FormText.selectionEnd)
                 {
                 var iSelStart  = FormText.selectionStart;
                 var iSelEnd    = FormText.selectionEnd;
                 var iScrollTop = FormText.scrollTop;
                 //if (iSelEnd <= 2)
                 //   {
                 //   iSelEnd = FormText.textLength;
                 //   }
                 var sStart  = (FormText.value).substring(0, iSelStart);
                 var sMiddle = (FormText.value).substring(iSelStart, iSelEnd);
                 var sEnd    = (FormText.value).substring(iSelEnd, FormText.textLength);

                 if (FormText.selectionEnd - FormText.selectionStart > 0)
                    {
                    if (isSingle) sMiddle = sTagOpen;
                    else sMiddle = sTagOpen + sMiddle + sTagClose;
                    }
                 else
                     {
                     if (isSingle)
                        {
                        sMiddle = sTagOpen;
                        }
                     else
                         {
                         if (isOpen)
                            {
                            aOpenTags[sTagName] = false;
                            sMiddle = sTagClose;
                            }
                         else
                             {
                             aOpenTags[sTagName] = true;
                             sMiddle = sTagOpen;
                             }
                         }
                     }
                 FormText.value = sStart + sMiddle + sEnd;
                 var sCpos = iSelStart + (sMiddle.length);

                 FormText.selectionStart = sCpos;
                 FormText.selectionEnd   = sCpos;
                 FormText.scrollTop      = iScrollTop;
                 }
         // It's shit :)
         else
             {
             FormText.value += sTagOpen+sTagClose;
             }

         FormText.focus();

         return;
         }


function insertToForm(sInsText)
         {
         // It's IE
         if ((uaVers >= 4) && isIe && isWin)
            {
            if (FormText.isTextEdit)
               {
               FormText.focus();
               var sel = document.selection;
               var rng = sel.createRange();
               rng.colapse;
               if ((sel.type == 'Text' || sel.type == 'None') && rng != null)
                  {
                  rng.text = sInsText;
                  }
               }
            else
                {
                FormText.value += sInsText;
                }
            }

         // It's Mozilla

         else if (FormText.selectionEnd)
                 {
                 var iSelStart  = FormText.selectionStart;
                 var iSelEnd    = FormText.selectionEnd;
                 var iScrollTop = FormText.scrollTop;
                 //if (iSelEnd <= 2)
                 //   {
                 //   iSelEnd = FormText.textLength;
                 //   }
                 var sStart  = (FormText.value).substring(0, iSelStart);
                 var sMiddle = (FormText.value).substring(iSelStart, iSelEnd);
                 var sEnd    = (FormText.value).substring(iSelEnd, FormText.textLength);

                 FormText.value = sStart + sInsText + sEnd;
                 var sCpos = iSelStart + (sMiddle.length);

                 FormText.selectionStart = sCpos;
                 FormText.selectionEnd   = sCpos;
                 FormText.scrollTop      = iScrollTop;
                 }
         // It's shit :)
         else
             {
             FormText.value += sInsText;
             }

         FormText.focus();

         return;
         }


function insertSmile(n)
         {
         insertToForm(' :smile'+n+': ')
         }

function insertName(name)
         {
         insertToForm('to '+name+': ')
         }

function insertQuote(tagId,name,s)
         {
         if (typeof(FormText)!='undefined')
            {
            s=(s=='f') ? ' f':'';
            if (selection)
               {
               sNewText=selection.replace(/<.+?>/ig,'');
               text='[q autor=' + name + s + ']' + sNewText + '[/q]\r\n';
               }
            else
                {
                sNewText=document.getElementById(tagId).innerHTML;
                text='[q autor=' + name + s + ']' + sNewText.replace(/<.+?>/ig,'') + '[/q]\r\n';
                }
            FormText.focus();
            FormText.value+=text;
            }
         }

function getSel()
         {
         if(document.getSelection) selection=document.getSelection();
         else if(document.selection) selection=document.selection.createRange().text;
         else if(window.getSelection) selection=window.getSelection();
         else selection='';
         }

function _confirmDel(type,id)
         {
         path='?action='+type+'&id='+id;
         if (confirm('Вы действительно хотите удалить это?')) document.location.href=path;
         }

// Транслит
function translit(str)
         {
         result='';
         aHashChars=new Array();
         aChars=new Array(['А','A'],['Б','B'],['В','V'],['Г','G'],['Д','D'],['Е','E'],['Ё','Yo'],['Ж','Zh'],['З','Z'],['И','I'],['Й','J'],['К','K'],['Л','L'],['М','M'],['Н','N'],['О','O'],['П','P'],['Р','R'],['С','S'],['Т','T'],['У','U'],['Ф','F'],['Х','H'],['Ч','Ch'],['Ц','Ts'],['Ш','Sh'],['Щ','Csh'],['Э','E'],['Ю','Yu'],['Я','Ya'],['Ы','Y'],['Ъ','\`'],['Ь','\''],['а','a'],['б','b'],['в','v'],['г','g'],['д','d'],['е','e'],['ё','yo'],['ж','zh'],['з','z'],['и','i'],['й','j'],['к','k'],['л','l'],['м','m'],['н','n'],['о','o'],['п','p'],['р','r'],['с','s'],['т','t'],['у','u'],['ф','f'],['х','h'],['ч','ch'],['ц','ts'],['ш','sh'],['щ','csh'],['э','e'],['ю','yu'],['я','ya'],['ы','y'],['ъ','\`'],['ь','\'']);
         for (i=0; i<aChars.length; i++)
             {
             aHashChars[aChars[i][0]]=aChars[i][1];
             }
         for (i=0; i<str.length; i++)
             {
             chr=str.substring(i,i+1);
             result+=(typeof(aHashChars[chr]) != 'undefined') ? aHashChars[chr]:chr;
             }
         return result;
         }


