/* =================================================================== */
/* 		MOD "MODERN BBCODE" JAVASCRIPT FUNCTIONS 	       */
/* 			    Author: neutral 	       		       */
/* =================================================================== */

/* ======================= */
/* Common script variables */
/* ======================= */

var uagent    = navigator.userAgent.toLowerCase();
var is_safari = ((uagent.indexOf('safari') != -1) || (navigator.vendor == "Apple Computer, Inc."));
var is_opera  = (uagent.indexOf('opera') != -1);
var is_webtv  = (uagent.indexOf('webtv') != -1);
var is_ie     = ((uagent.indexOf('msie') != -1) && (!is_opera) && (!is_safari) && (!is_webtv));

var menu_ids = new Array(0, 1, 2, 3, 4);

var dropdown_buttons = new Array(
	"color", "smiley", "size", "img", "list"
);

var popup_panels = new Array(
	"colorpalette",	"smilespanel", "sizepanel", "imgpanel",	"listpanel"
);

var opened_popup = -1;

// only for ie fix
var none_ie = new Array(
	"colorbtn", "smilesbtn", "sizebtn", "imgbtn", "listbtn"
);

var none_ie_2 = new Array(
	"colorcontent", "smilescontent", "sizecontent", "imgcontent", "listcontent"
);

/* =========================================== */
/* This function fixes toolbar width for Opera */
/* =========================================== */

function fixOperaWidth()
{
	if (is_opera) 
	{
		document.getElementById('bbcode').style.width = "99%";
		document.getElementById('bbcode_adv').style.width = "99%";
	}
}

/* ================================ */
/* Returns left posititon of object */
/* ================================ */

function getObjectLeftpos (obj)
{
	var left = obj.offsetLeft;
	
	while ((obj = obj.offsetParent) != null)
	{
		left += obj.offsetLeft;
	}
	
	return left;
}

/* ================================ */
/* Returns top posititon of object  */
/* ================================ */

function getObjectToppos(obj)
{
	var top = obj.offsetTop;
	
	while ((obj = obj.offsetParent) != null)
	{
		top += obj.offsetTop;
	}
	
	return top;
}


/* ============================ */
/* Generates list tag structure */
/* ============================ */

function tag_list( type )
{
	var listitem = "init";
	var thelist   = "";
	
	opentag = ( type == 'ordered' ) ? '[listo]' : '[list]';
	closetag = ( type == 'ordered' ) ? '[/listo]' : '[/list]';
	
	while ((listitem != "") && (listitem != null))
	{
		listitem = prompt(list_prompt, "");
		
		if ((listitem != "") && (listitem != null))
		{
			thelist = thelist + "[li]" + listitem + "[/li]";
		}
	}
	
	if ( thelist != "" )
	{
		thelist = opentag + thelist + closetag;
		insert_text(thelist, "");
	}
}

/* =================== */
/* Hides poped up menu */
/* =================== */

function hide_poped_menu()
{
	if (opened_popup >= 0)
	{
		var btn_id = dropdown_buttons[opened_popup];
		var popup_id = popup_panels[opened_popup];

		document.getElementById(popup_id).style.visibility = "hidden";
		document.getElementById(popup_id).style.display    = "none";

		opened_popup = -1;
		document.getElementById(btn_id).className = 'dropdown';
	}
}

function documentClickHandler(target)
{
	if (!is_ie)
	{
		for (var i = 0; i < menu_ids.length; i++)
		{
			if (target.id == dropdown_buttons[i])
			return true;
		}

		if (target.className == "abtn")
		return true;

		hide_poped_menu();
		return true;
	}
}

/* ===================================== */
/* Shows popup menu specified by menu_id */
/* ===================================== */

function popup_menu(menu_id)
{
	var btn_id = dropdown_buttons[menu_id];

	btnElement = document.getElementById(btn_id);

	var iLeftPos  = getObjectLeftpos(btnElement);
	var iTopPos   = getObjectToppos(btnElement) + (btnElement.offsetHeight - 1);

	if (is_ie) 
	{
		iLeftPos += 3;
		iTopPos += -9;
	}

	var popup_id = popup_panels[menu_id];

	document.getElementById(popup_id).style.left = (iLeftPos) + "px";
	document.getElementById(popup_id).style.top  = (iTopPos)  + "px";

	if (opened_popup == menu_id)
	{
		hide_poped_menu();
		return;
	}

	hide_poped_menu();

	document.getElementById(popup_id).style.visibility = "visible";
	document.getElementById(popup_id).style.display    = "inline";

	document.getElementById(btn_id).className = 'dropdown_opened';
	if (is_ie)
	{
		document.getElementById(none_ie[menu_id]).style.visibility = "hidden";
		document.getElementById(none_ie_2[menu_id]).className = "popupcontent_ie";
	}

	opened_popup = menu_id;
	
	return;
}

function mouseover_menu(menu_id)
{
	if (opened_popup < 0)
		return;

	if (opened_popup != menu_id)
		popup_menu(menu_id);
}


// In modern bb_code 

var list_prompt = "Введите текст элемента списка. Нажмите «Отмена» или оставьте поле ввода пустым, чтобы прекратить ввод элементов.";
							
							function insert_text(open, close)
							{
								msgfield = (document.all) ? document.all.req_message : document.forms['post']['req_message'];

								// IE support	
								if (document.selection && document.selection.createRange)
								{
									msgfield.focus();
									sel = document.selection.createRange();
									sel.text = open + sel.text + close;
									msgfield.focus();
								}

								// Moz support
								else if (msgfield.selectionStart || msgfield.selectionStart == '0')
								{
									var startPos = msgfield.selectionStart;
									var endPos = msgfield.selectionEnd;

									msgfield.value = msgfield.value.substring(0, startPos) + open + msgfield.value.substring(startPos, endPos) + close + msgfield.value.substring(endPos, msgfield.value.length);
									msgfield.selectionStart = msgfield.selectionEnd = endPos + open.length + close.length;
									msgfield.focus();
								}

								// Fallback support for other browsers
								else
								{
									msgfield.value += open + close;
									msgfield.focus();
								}

								hide_poped_menu();

								return;
							}

							function resize_text_area(dpixels)
							{
								msgfield = (document.all) ? document.all.req_message : document.forms['post']['req_message'];

								var box = msgfield;	
								var cur_height = parseInt( box.style.height ) ? parseInt( box.style.height ) : 210;
								var new_height = cur_height + dpixels;

								if (new_height > 0) 
								{
									box.style.height = new_height + "px";
								}

							}

							function show_smilies_window()
							{
								msgfield = (document.all) ? document.all.req_message : document.forms['post']['req_message'];
								msgfield.focus();

								var width = 280;
								var height = 400;

								window.open('smilies.php', 'smilies', 'alwaysRaised=yes, dependent=yes, resizable=yes, location=no, width=' + width + ', height=' + height + ', menubar=no, scrollbars=yes');
							}
