var bb_ie //@cc_on = true;
var bb_range;
var bb_menu = false;

var select_area_id = 'area_';
var area_mouseX    = 0;
var area_mouseY    = 0;
var area_offsetX   = 0;
var area_offsety   = 0;
var area_var       = '.bb_textarea';
var area_menu_var  = '.bb_menu_select_';
var area_upload    = 'load';

var bb_t_link    = 'Адрес ссылки',
    bb_t_upload  = 'Загрузка файлов',
    bb_t_spoiler = 'Вставка споилера',
    bb_t_image   = 'Вставка изображения';

var upload_drag = 'Переташить файл сюда',
    my_upload   = '';

function insertTag(str1, str2) {

    var textarea = document.getElementById(select_area_id);
    var st = textarea.scrollTop;
	var text, offset;
	var selection = document.selection || getSelection();
    
	if(bb_ie) {
		bb_range = selection.createRange();
		text = bb_range.text;
		bb_range.text = str1 + text + str2;
		offset = str2.length;
		bb_range.moveStart("character", -text.length - offset);
		if(text.length) {
			bb_range.moveEnd("character", -offset);
		} else {
			bb_range.collapse();
		}
	} else {
		var selStart = textarea.selectionStart; 
		var selEnd   = textarea.selectionEnd;
		text = textarea.value;
		textarea.value = text.substring(0, selStart) + str1 + text.substring(selStart, selEnd) + str2 + text.substring(selEnd, text.length);
		offset = str1.length;
		textarea.selectionStart = selStart + offset;
		textarea.selectionEnd   = selEnd   + offset;
        textarea.scrollTop      = st;
	}
    bb_restore_selection();
    $(area_menu_var + select_area_id).fadeOut("1000");
}

function bb_restore_selection() {
    var textarea = document.getElementById(select_area_id);
    
	textarea.focus();
    
	if(bb_ie) {
		bb_range.select();
	}
}
function bb_hide_menu(){
    $(area_menu_var + select_area_id).fadeOut("1000");
}
function bb_show(id){
    $(id).find('div').show();
     bb_hide_menu();
}
function bb_hide(id){
    $(id).find('div').hide();
}
function bb_show_select(id){
    $(id).show();
}


function bb_image(){
    is_promt(bb_t_link,'','http://',function(i){
            insertTag('[img]' + i + '[/img]','');
    });
}

function bb_link(){
    is_promt(bb_t_link,'','http://',function(l){
            insertTag('[url=' + l + ']','[/url]');
    });
}

function bb_spoiler(){
        
        is_promt(bb_t_spoiler,'','name',function(s){
            if(s != '')
                 insertTag('[spoiler=' + s + ']','[/spoiler]');
            else 
                 insertTag('[spoiler]','[/spoiler]');
        })
}

function bb_upload(){
    conect({'url':system_path + 'bbcode/upload/index.php?status='+area_upload,'action':function(data){
        is_modal(bb_t_upload,data);
    }});
}

function bb_hideOrShow_menu(){
    if(bb_menu) bb_menu = false;
    else        bb_menu = true;
    
    $(area_menu_var + select_area_id).fadeOut("1000");
}

$(document).ready(function() {
    
    $(area_var).live('mousemove',function(e) {
        area_mouseX = e.pageX;
        area_mouseY = e.pageY;

        var offset = $(this).offset();
        area_offsetX = offset.left;
        area_offsetY = offset.top;
    });
    
    $(area_var).live('keypress',function() {
        $(area_menu_var + select_area_id).fadeOut("1000");
    });
    
    $(area_var).live('mousedown',function() {
        $(area_menu_var + select_area_id).fadeOut("1000");
    });
    
    $(area_var).live('select',function() {
        if(bb_menu){
            $(area_menu_var + select_area_id).css("top", (area_mouseY - area_offsetY) + 30).css("left", (area_mouseX - area_offsetX) + 15).fadeIn("1000");
        }
        
    });
});



function bb_parser(content){
        var rand = function() {
            return Math.floor(Math.random() * (99999999 - 0 + 1)) + 0;
        }

        var id_spoiler = rand();
        
        content = content.replace(/(<\/?)script/g,'$1noscript')
        .replace(/\r\n/g, '<br />')
        .replace(/\r/g, '<br>')
        .replace(/\</g, '&lt;')
        .replace(/\>/g, '&gt;')
        .replace(/\n\n+/g, '<br><br>')
        .replace(/\[b\](.+?)\[\/b\]/g, '<strong>$1</strong>')
        .replace(/\[i\](.+?)\[\/i\]/g, '<i>$1</i>')
        .replace(/\[s\](.+?)\[\/s\]/g, '<s>$1</s>')
        .replace(/\[u\](.+?)\[\/u\]/g, '<u>$1</u>')
        .replace(/\[align=(.+?)\](.+?)\[\/align\]/g, '<div align="$1">$2</div>')
        .replace(/\[url=(.+?)\]/g, '<a href="$1" target="_blank">')
        .replace(/\[\/url\]/g, '</a>')
        .replace(/\[img\](.+?)\[\/img\]/g, '<img src="$1" alt="" title="" class="bb_img"  />')
        .replace(/\[img=(.+?)\](.+?)\[\/img\]/g, '<img src="$2" alt="" title="" class="bb_img" align="$1" />')
        .replace(/\[color=(.+?)\]/g, '<span style="color:$1">')
        .replace(/\[\/color\]/g, '</span>')
		.replace(/\[smile=(.+?)\]/g, '<img style="vertical-align: middle;border: none;" alt="" src="/system/bbcode/smile/$1.gif" />')
        .replace(/\[quote\]/g, '<div class="bb_quote"><b></b><div><span class="first-letter">q</span>')
        .replace(/\[\/quote\]/g, '</div></div>')
        .replace(/\[spoiler=(.+?)\]/g, '<div class="title_spoiler"><img style="vertical-align: middle;border: none;" alt="" src="/system/bbcode/images/bbcode/spoiler-plus.gif" />&nbsp;<a href="javascript:ShowOrHide(\'#bb'+id_spoiler+'\')">$1</a></div><div id="bb'+id_spoiler+'" class="text_spoiler" style="display:none;">')
        .replace(/\[spoiler\](.+?)/g, '<div class="title_spoiler"><img style="vertical-align: middle;border: none;" alt="" src="/system/bbcode/images/bbcode/spoiler-plus.gif" />&nbsp;<a href="javascript:ShowOrHide(\'#bb'+id_spoiler+'\')">$1</a></div><div id="bb'+id_spoiler+'" class="text_spoiler" style="display:none;">')
        .replace(/\[\/spoiler\]/g, '</div>')
        .replace(/\[code\]/g, '<div class="bb_v_code"><div>')
        .replace(/\[\/code\]/g, '</div></div>')
        .replace(/\[hide\](.+?)\[\/hide\]/g, '$1')
        .replace(/\[info=error\](.+?)\[\/info\]/g, '<p class="bb_info_error">$1</p>')
        .replace(/\[info=massage\](.+?)\[\/info\]/g, '<p class="bb_info_massage">$1</p>')
        .replace(/\[info=tips\](.+?)\[\/info\]/g, '<p class="bb_info_tips">$1</p>')
        .replace(/\[more=sticky\](.+?)\[\/more\]/g, '<p class="bb_more_sticky">$1</p>')
        .replace(/\[more=pin\](.+?)\[\/more\]/g, '<p class="bb_more_pin">$1</p>')
        .replace(/\[more=clip\](.+?)\[\/more\]/g, '<p class="bb_more_clip">$1</p>')
        .replace(/\[more=download\](.+?)\[\/more\]/g, '<p class="bb_more_download">$1</p>')
        .replace(/\[number\](.+?)\[\/number\]/g, '<div class="bb_number"><div><span class="first-letter">0</span>$1</div></div>')
        .replace(/\s*\n\s*/g, '<br />');
		
        return content;
}
