function sb_bb($area_Id, $width) {
 //window.onload=function() {
    this.area_Id = $area_Id;
    this.putInTag    = putInTag;
    this.insert_BB_Bar = insert_BB_Bar;
    this.showQBox = showQBox;
    this.hideQBox = hideQBox;
  
    var IE_mem_sel=''; // //Костыль(crutch) для ие
    var modalbox;    
    var shade;
    var main;
    var scrollWidth;
    var scrollHeight;
    var document = window.document;
    
    var area = document.getElementById(this.area_Id);
    if (! area) {  return ;  }
    this.width = $width || parseInt(getStyle(area, 'width'));
    window.sb_bb = this;
  
      var tags = new Array(     new Array('[b]',    '[/b]',        -1188),
      new Array('[i]',    '[/i]',        -748),
            new Array('[u]',    '[/u]',         -66),
            new Array('[s]',    '[/s]',        -242),
            undefined,
            new Array('[sub]',    '[/sub]',    -220),
            new Array('[sup]',    '[/sup]',    -198),
            undefined,
            new Array('[left]',     '[/left]',     -726),
            new Array('[center]',    '[/center]',    -1056),
            new Array('[right]',    '[/right]',    -374),
            new Array('[justify]',    '[/justify]',    -880), 
            undefined,
            new Array('[hr]',    '',        -858),
            new Array('[br]',     '',        -1122),                          
            undefined,
            new Array('[a]',        '[/a]',     -704, 
                {href:'Ссылка (href):',
                target:{caption: 'Открывать ссылку в (target):', _self:'том же окне (_self)', _blank:'новом окне (_blank)'},
                title:'Заголовок (title):' 
                }),
            new Array('[anchor]',        '[/anchor]',     -1232, {name:'Имя якоря (name):'}),
            new Array('[img][/img]',    '',                -814,  {src:'Ссылка (src):', alt:'Альтернативный текст (alt):', width:'Ширина:', height:'Высота:', border:'Бордюр:'}),
            new Array('[email]',        '[/email]',        -1453, {name:'Адрес электронной почты:',title:'Заголовок (title):'})
                          );
    
function putInTag(Tag,Tag2) {
                doc = area;
                doc.focus();
        
                if (window.attachEvent && navigator.userAgent.indexOf('Opera') === -1) {
                    var sel, sel1;
                  if (IE_mem_sel === '') {
                         sel1 = document.selection.createRange();
                         sel = sel1;
                    } else { 
                         sel = IE_mem_sel;
                    }
                    var len = sel.text.length+parseInt(Tag.length)+parseInt(Tag2.length);
                    sel.text = Tag+sel.text+Tag2;
                    sel.moveStart("character", -len); 
                    sel.select();
                    if (IE_mem_sel !== '') IE_mem_sel='';
                    if (Tag2.length === 0 ) {
                        sel.collapse(false);
                        sel.select();
                    }
                } else {
                    var ss = doc.scrollTop;
                    sel1 = doc.value.substr(0, doc.selectionStart);
                    sel2 = doc.value.substr(doc.selectionEnd);
                    sel = doc.value.substr(doc.selectionStart, doc.selectionEnd - doc.selectionStart);
                    doc.value = sel1 + Tag + sel + Tag2 + sel2;
                    selPos = Tag.length + sel1.length + sel.length + Tag2.length;
                    
                    if (Tag2.length === 0)            
                        doc.setSelectionRange((Tag.length+sel1.length), (Tag.length+sel1.length));
                    else
                        doc.setSelectionRange(sel1.length, selPos);
                    
                    doc.scrollTop = ss;
                }
        }
     
function insert_BB_Bar() {
    var bar = document.createElement('div');
        bar.setAttribute('id', 'sb_bb_bar');
        bar.style.cssText='width: 520px';
    var parent = area.parentNode;
        parent.insertBefore(bar, area);
        
       for (var i=0; i<tags.length; i++)
               if (typeof tags[i] != 'undefined' )
                bar.innerHTML+='<img class="button" id="sb_bb_but_'+i+'" onmouseover="this.className=\'button Over\'" onmouseout="this.className=\'button\'" src="/cms/images/blank.gif" style="background-position: 0px '+tags[i][2]+'px;" />'; 
            else 
                bar.innerHTML+='<img class="spacer" src="/cms/images/editor/separator.gif" />';

    for (var i=0; i<tags.length; i++)
        if (typeof tags[i] != 'undefined' ) 
            if (typeof tags[i][3] === 'object' ){
                document.getElementById('sb_bb_but_'+i).onclick=function(tag){ 
                            return function(){ 
                                    sb_bb.showQBox(tag[0], tag[1], tag[3]); }
                }(tags[i]);
            } else {
                document.getElementById('sb_bb_but_'+i).onclick=function(tag){  
                            return    function(){    
                                    sb_bb.putInTag(tag[0],    tag[1]);        }
                }(tags[i]);
            }
}            

function insert_Smile_Bar(){
    //path to smile icons
    var path='/cms/images/smiles/';
    
    var bar = document.createElement('div');
        bar.setAttribute('id', 'sb_smile_bar');
        bar.style.cssText='width: 520px';
    var parent = area.parentNode;
        parent.insertBefore(bar, area.nextSibling); 
        
    var smiles = new Array(  new Array(' :D ',     '',   '1.gif'),  new Array(' :) ',    '',  '2.gif'),    new Array(' :( ',    '',  '3.gif'),
                 new Array(' :heap: ', '',   '4.gif'),  new Array(' :ooi: ',     '',  '5.gif'),    new Array(' :so: ',    '',  '6.gif'), 
                 new Array(' :surp: ', '',   '7.gif'),  new Array(' :ag: ',      '',  '8.gif'),    new Array(' :ir: ',    '',  '9.gif'),
                 new Array(' :oops:',     '',  '10.gif'),    new Array(' :P ',    '',  '11.gif'),    new Array(' :cry: ',    '',  '12.gif'),
                 new Array(' :rage: ',    '',  '13.gif'), new Array(' :B ',     '',  '14.gif'), new Array(' :roll: ' ,     '',  '15.gif'),
                 new Array(' :wink: ',  '',  '16.gif'), new Array(' :yes: ',     '',  '17.gif'), new Array(' :bot: ',    '',  '18.gif'), 
                 new Array(' :z) ',    '',  '19.gif'), new Array(' :arrow: ',    '',  '20.gif')    );
        for (var i=0; i<smiles.length; i++)
            bar.innerHTML+='<img class="button" onclick="sb_bb.putInTag(\'' + smiles[i][0] + '\', \'\',\''+this.area_Id+'\')" onmouseover="this.className=\'button Over\'" onmouseout="this.className=\'button\'" src="'+path + smiles[i][2] +'" />';
    }
    
function initQBox() {
    main = document.createElement('div');
    main.setAttribute( 'id', 'sb_main');
    document.body.appendChild(main);
    modalbox = document.createElement('div');
    modalbox.setAttribute( 'id', 'sb_modalbox');
    document.body.appendChild(modalbox);
    shade = document.createElement('div');
    shade.setAttribute( 'id', 'sb_shade');
    document.body.appendChild(shade);

    scrollWidth = $(document).width();//document.body.scrollWidth;
    scrollHeight = $(document).height() + 650;//document.body.scrollHeight;

    main.style.width = scrollWidth+'px';
    main.style.height = scrollHeight+'px';
}

function showQBox( p1, p2, p3 ) {             
    IE_mem_sel =( document.selection )? document.selection.createRange() : '';
        if (IE_mem_sel.text==='')    { 
            caretPos=getCaretPos(area);
                  
            var r = area.createTextRange();
            r.collapse(true);
            r.moveEnd("character", caretPos);
            r=document.selection.createRange();
            r.collapse(false);
          r.select();
        IE_mem_sel=document.selection.createRange();
        }
        
        main.style.filter = "alpha(opacity=80)";
        main.style.opacity = 0.8;
        main.style.display = "block";
        
        var tmp='';
        modalbox.innerHTML='<div id="caption" style="filter: alpha(opacity=100)">Ввод параметров </div>';
        for (var el in p3)
            if (typeof p3[el] === 'object'){
                tmp+='<tr><td class="l_td">'+p3[el]["caption"]+'</td><td class="r_td">'+mkSelect(el, p3[el])+'</td></tr>';
            }else{
                tmp+='<tr><td class="l_td">'+p3[el]+'</td><td class="r_td"><input type=\'text\' name=\''+el+'\'/></td></tr>';
            }
                
        tmp ='<table>'+tmp+'</table>';                    
        tmp+='<div class="mb_buts"><center><input type="button" id="sb_Qbox_butOK" value="Вставить" class="but"  onclick="hideQBox();">';
        tmp+='<input type="button" id="sb_Qbox_butCancel" value="Отменить" class="but"  onclick="hideQBox();"></center></div>';
        modalbox.innerHTML+='<div id="sb_qbox_body"><form id="sb_qbox_form">'+tmp+'</form></div>';
            
        modalbox.style.display = "block";
        shade.style.display = "block";
        posleft = Math.round(scrollWidth / 2) - 150;
        postop = $(document).height()-500;//document.body.scrollHeight - 500;
        shade.style.left = posleft + 7+'px';
        shade.style.top = $(document).scrollTop()+314+'px';//document.body.scrollTop + 307+'px';
        modalbox.style.left = posleft+'px';
        modalbox.style.top = $(document).scrollTop()+307+'px';//document.body.scrollTop + 300+'px';
        
        document.getElementById('sb_Qbox_butOK').onclick=function(){ 
            sb_bb.putInTag( p1.substr(0, p1.indexOf(']'))+ parQuery(true)+p1.substr(p1.indexOf(']')),    p2);     
        };    
        document.getElementById('sb_Qbox_butCancel').onclick=function(){ 
            sb_bb.putInTag( parQuery(false),    '');     
        };
}

function hideQBox() {
    main.style.display = "none";
    modalbox.style.display = "none";
    modalbox.innerHTML    = "";
    shade.style.display = "none";
}
function parQuery(ret){
var res = '';
if (ret === true){// надо ли возвращать значение, Вставить  -да, Отмена - нет.
        var a = document.getElementById('sb_qbox_form');
        for (var i=0,j=a.elements.length-2; i<j; i++){        
            if (a.elements[i].tagName.toLowerCase() === 'input' || a.elements[i].tagName.toLowerCase() === 'select')
                    res+=(a.elements[i].value === '')? '': ' '+a.elements[i].name+'='+a.elements[i].value;
        }
 }
    hideQBox();
    return res;
}
            insert_BB_Bar(); 
            insert_Smile_Bar();
            initQBox();            
//}
function getStyle(elem, prop)
{
  if (typeof elem!="object") elem = document.getElementById(elem);
  if (document.defaultView && document.defaultView.getComputedStyle)  {
    if (prop.match(/[A-Z]/)) prop = prop.replace(/([A-Z])/g, "-$1").toLowerCase();
    return document.defaultView.getComputedStyle(elem, "").getPropertyValue(prop);
  }
  if (elem.currentStyle)  {
    var i;
    while ((i=prop.indexOf("-"))!=-1) prop = prop.substr(0, i) + prop.substr(i+1,1).toUpperCase() + prop.substr(i+2);
    return elem.currentStyle[prop];
  } 
  return "";
}
function mkSelect(Obj_name, Obj){
var result='',tmp='';
      result+='<select name="'+Obj_name+'">';
        result+='<option value=\'\'>не задано</option>';
    for (k in Obj){
                    if (k != 'caption')
                        tmp+='<option value='+k+'>'+Obj[k]+'</option>';    
    }    
    result+=tmp+'</select>';
    return result;
}


function getCaretPos(obj)
{
  obj.focus();
   if(obj.selectionStart) return obj.selectionStart;//Gecko
  else if (document.selection)//IE
  {
    var sel = document.selection.createRange();
    var clone = sel.duplicate();
    sel.collapse(true);
    clone.moveToElementText(obj);
    clone.setEndPoint('EndToEnd', sel);
    return clone.text.length;
  }
   return 0;
}

}

function Output_selected()
{
    for(i = 0; i <= 126; i++)
    {
        setTimeout(function(){
        $(".ad-image a").fancybox({
            'margin': 0,
            'padding': 0});
        }, 500);
    }
}

function ShowForm()
{
    if( $(".form_for_adding_a_blog").is(":visible"))
    {
            $(".form_for_adding_a_blog").fadeOut("100");
    }
    else
    {
        $(".form_for_adding_a_blog").fadeIn("100");
    }
}

function ShowComForm()
{
    if( $(".comment_add_form").is(":visible"))
    {
        $(".comment_add_form").fadeOut("normal");
    }
    else
    {
        $(".comment_add_form").fadeIn("slow");
    }
}
$(document).ready(function(){
    $(function()
    {
        var galleries = $('.ad-gallery').adGallery({
        thumb_opacity: 0.5,
        slideshow: {enable: false},
	callbacks: {
		afterImageVisible: function(){
				Output_selected();

				/*console.log("1");*/

			}
		}
        });
    });

    $("#circle").hover(function(){
        $(this).toggleClass("hover")
    });

    var h_1 = $('body').height();
    var h_2 = $(window).height();
    $('#wrapper').css('min-height', (h_1 > h_2 ? h_1 : h_2));

    $('.showbigfoto').fancybox({
        'transitionIn' : 'elastic',
        'transitionOut' : 'elastic',
        'titlePosition' : 'over',
        'titleFormat' : function(title, currentArray, currentIndex, currentOpts) { return '<span id="fancybox-title-over">'+(title.length ? ' &nbsp; ' + title : '')+'</span>'; }
        });

    if($.validity)
    {
        $.validity.setup({ outputMode:"summary" });
    }

    $("#blogs_mes_add").bind("submit", function() {

        $.validity.start();
        $("#bl_mes_title").require("Не введена тема сообщения;");
        $("#bl_msg_text").require("Не введен анонс;");
        $("#bl_full_text").require("Не введен полный текст;");

        var result = $.validity.end();

        if (!result.valid)
        {
            $.fancybox($('.validity-summary-container').show());
            return false;
        }
    });
    $("#com_add_form").bind("submit", function() {
        $.validity.start();
        $("#com_aut").require("Не указан автор комментария;");
        $("#comment_text").require("Не указан текст комментария;");
        $("#com_capt").require("Не введен код с картинки;");
        var result = $.validity.end();

        if (!result.valid)
        {
            $.fancybox($('.validity-summary-container').show());
            return false;
        }

        var error = '0';
        $.ajax({
            type    : "POST",
            cache    : false,
            async    : false,
            url    : '/captcha.php',
            data    : 'c_captcha_code='+$('#com_capt').val()+'&c_captcha_hid='+$('#c_captcha_hid').val(),
            success : function(data)
            {
                if(data == 'error')
                {
                    error = '1';
                    $('.validity-summary-container').html('Код картинки не совпадает с введенным;');
                    $.fancybox($('.validity-summary-container').show());
                    return false;
                }
                $.validity.clear();
            }
        });

        if(error == '1')
        {
            return false;
        }

    });

    $("#registration").bind("submit", function() {

        $.validity.start();

        $("#su_login_reg").require("Не указан логин пользователя;");
        $("#su_pass1").require("Не указан пароль;");
        $("#su_pass2").require("Неверно подтвержден пароль;");
        $("#su_email_reg").require('Не указан адрес E-mail;').match('email', "Неверно введен адрес E-mail;");
        $("#su_captcha").require("Не указан код с картинки;");

        var result = $.validity.end();

        if (!result.valid)
        {
            $.fancybox($('.validity-summary-container').show());
            return false;
        }

        var error = '0';
        $.ajax({
            type    : "POST",
            cache    : false,
            async    : false,
            url    : '/captcha.php',
            data    : 'su_captcha='+$('#su_captcha').val()+'&su_captcha_code='+$('#su_captcha_code').val(),
            success : function(data)
            {
                if(data == 'error')
                {
                    error = '1';
                    $('.validity-summary-container').html('Код картинки не совпадает с введенным;');
                    $.fancybox($('.validity-summary-container').show());
                    return false;
                }
                $.validity.clear();
            }
        });

        if(error == '1')
        {
            return false;
        }
    });


    $("#edit_data").bind("submit", function() {

        $.validity.start();

        $("#edit_login").require("Не указан логин пользователя;");
        $("#edit_pass").require("Не указан пароль;");
        $("#edit_pass2").require("Неверно подтвержден пароль;");
        $("#edit_mail").require('Не указан адрес E-mail;').match('email', "Неверно введен адрес E-mail;");

        var result = $.validity.end();
        
        if (!result.valid)
        {
            $.fancybox($('.validity-summary-container').show());
            return false;
        }

        if ($("#edit_pass").val() != $("#edit_pass2").val()) {
            $('.validity-summary-container').html('Пароль и подтверждение пароля не совпадает;');
            $.fancybox($('.validity-summary-container').show());
            return false;
            };            

    });

});
