var gl_x_pos = 0;
var gl_y_pos = 0;

function f_onmousemove(e) // note: takes the event as an arg (IE doesn't)
{
	if (!e) e = window.event; // fix MSIE
	gl_x_pos = e.clientX;
	gl_y_pos = e.clientY;
	//document.title = '[' + e.clientX + ',' + e.clientY + ']';
}
document.onmousemove = f_onmousemove;

/*
document.onclick = showXPos;
function showXPos(e)
{
	alert('[' + gl_x_pos + ', ' + gl_y_pos + ']');
}
*/

//################################################################################################//

function f_upvt_table_div(as_obj_id,ab_visible)
{
	var ll_offset_x = 30;
	var ll_offset_y = 10;
	if(ab_visible)
	{
		document.getElementById(as_obj_id).style.visibility = 'visible';

		//alert(document.body.clientWidth);
		//alert(gl_x_pos + document.body.scrollLeft);

		if(gl_x_pos < document.body.clientWidth / 2)
		{
			document.getElementById(as_obj_id).style.left =
				+ ll_offset_x
				+ gl_x_pos
				+ document.body.scrollLeft /* MSIE */
				+ document.documentElement.scrollLeft /* Opera, Firefox */
				+ 'px'
				;
		}
		else
		{
			//document.getElementById(as_obj_id).style.left = - ll_offset_x + gl_x_pos + document.body.scrollLeft - document.getElementById(as_obj_id).offsetWidth;
			document.getElementById(as_obj_id).style.left = 
				- ll_offset_x
				+ gl_x_pos
				+ document.body.scrollLeft /* MSIE */
				+ document.documentElement.scrollLeft /* Opera, Firefox */
				- document.getElementById(as_obj_id).offsetWidth
				+ 'px'
				;
		}

		//document.getElementById(as_obj_id).style.top = 5 + gl_y_pos + document.body.scrollTop /* - document.getElementById(as_obj_id).offsetHeight / 2 */;
		if(gl_y_pos < document.body.clientHeight / 2)
		{
			document.getElementById(as_obj_id).style.top =
				+ ll_offset_y
				+ gl_y_pos
				+ document.body.scrollTop /* MSIE */
				+ document.documentElement.scrollTop /* Opera, Firefox */
				+ 'px'
				;
		}
		else
		{
			document.getElementById(as_obj_id).style.top = 
				- ll_offset_y
				+ gl_y_pos
				+ document.body.scrollTop /* MSIE */
				+ document.documentElement.scrollTop /* Opera, Firefox */
				- document.getElementById(as_obj_id).offsetHeight
				+ 'px'
				;
		}
	}
	else
	{
		document.getElementById(as_obj_id).style.visibility = 'hidden';
		//document.getElementById(as_obj_id).style.top = 0;
		//document.getElementById(as_obj_id).style.left = 0;
	}
}

//################################################################################################//

/* UserProfileVisitTrack */
function f_upvt_div(as_obj_id,ab_visible)
{
	var ll_offset_x = 30;
	var ll_offset_y = 10;
	if(ab_visible)
	{
		document.getElementById(as_obj_id).style.visibility = 'visible';

		//alert(document.body.clientWidth);
		//alert(gl_x_pos + document.body.scrollLeft);

		if(gl_x_pos < document.body.clientWidth / 2)
		{
			document.getElementById(as_obj_id).style.left =
				+ ll_offset_x
				+ gl_x_pos
				+ document.body.scrollLeft /* MSIE */
				+ document.documentElement.scrollLeft /* Opera, Firefox */
				+ 'px'
				;
		}
		else
		{
			//document.getElementById(as_obj_id).style.left = - ll_offset_x + gl_x_pos + document.body.scrollLeft - document.getElementById(as_obj_id).offsetWidth;
			document.getElementById(as_obj_id).style.left = 
				- ll_offset_x
				+ gl_x_pos
				+ document.body.scrollLeft /* MSIE */
				+ document.documentElement.scrollLeft /* Opera, Firefox */
				- document.getElementById(as_obj_id).offsetWidth
				+ 'px'
				;
		}

		//document.getElementById(as_obj_id).style.top = 5 + gl_y_pos + document.body.scrollTop /* - document.getElementById(as_obj_id).offsetHeight / 2 */;
		if(gl_y_pos < document.body.clientHeight / 2)
		{
			document.getElementById(as_obj_id).style.top =
				+ ll_offset_y
				+ gl_y_pos
				+ document.body.scrollTop /* MSIE */
				+ document.documentElement.scrollTop /* Opera, Firefox */
				+ 'px'
				;
		}
		else
		{
			document.getElementById(as_obj_id).style.top = 
				- ll_offset_y
				+ gl_y_pos
				+ document.body.scrollTop /* MSIE */
				+ document.documentElement.scrollTop /* Opera, Firefox */
				- document.getElementById(as_obj_id).offsetHeight
				+ 'px'
				;
		}

	}
	else
	{
		document.getElementById(as_obj_id).style.visibility = 'hidden';
		//document.getElementById(as_obj_id).style.top = 0;
		//document.getElementById(as_obj_id).style.left = 0;
	}
}

//################################################################################################//

function f_user_div(as_obj_id,ab_visible)
{
	var ll_offset_x = 30;
	var ll_offset_y = 10;
	if(ab_visible)
	{
		document.getElementById(as_obj_id).style.visibility = 'visible';

		if(gl_x_pos < document.body.clientWidth / 2)
		{
			document.getElementById(as_obj_id).style.left =
				+ ll_offset_x
				+ gl_x_pos
				+ document.body.scrollLeft /* MSIE */
				+ document.documentElement.scrollLeft /* Opera, Firefox */
				+ 'px'
				;
		}
		else
		{
			//document.getElementById(as_obj_id).style.left = - ll_offset_x + gl_x_pos + document.body.scrollLeft - document.getElementById(as_obj_id).offsetWidth;
			document.getElementById(as_obj_id).style.left = 
				- ll_offset_x
				+ gl_x_pos
				+ document.body.scrollLeft /* MSIE */
				+ document.documentElement.scrollLeft /* Opera, Firefox */
				- document.getElementById(as_obj_id).offsetWidth
				+ 'px'
				;
		}

		//document.getElementById(as_obj_id).style.top = 5 + gl_y_pos + document.body.scrollTop /* - document.getElementById(as_obj_id).offsetHeight / 2 */;
		if(gl_y_pos < document.body.clientHeight / 2)
		{
			document.getElementById(as_obj_id).style.top =
				+ ll_offset_y
				+ gl_y_pos
				+ document.body.scrollTop /* MSIE */
				+ document.documentElement.scrollTop /* Opera, Firefox */
				+ 'px'
				;
		}
		else
		{
			document.getElementById(as_obj_id).style.top = 
				- ll_offset_y
				+ gl_y_pos
				+ document.body.scrollTop /* MSIE */
				+ document.documentElement.scrollTop /* Opera, Firefox */
				- document.getElementById(as_obj_id).offsetHeight
				+ 'px'
				;
		}
	}
	else
	{
		document.getElementById(as_obj_id).style.visibility = 'hidden';
		//document.getElementById(as_obj_id).style.top = 0;
		//document.getElementById(as_obj_id).style.left = 0;
	}
}

//################################################################################################//

function cbxSelectAll(ao_form,ab_state)
{
	for (i = 0; i < document.frmMain.elements.length; i++)
	{
		//var checkbox = document.frmMain.elements[i];

		var checkbox = ao_form.elements[i];
		checkbox.checked = ab_state;
	}
};

//################################################################################################//

function cbxInvert(ao_form)
{
	for (i = 0; i < document.frmMain.elements.length; i++)
	{
		//var checkbox = document.frmMain.elements[i];

		var checkbox = ao_form.elements[i];
		checkbox.checked = !checkbox.checked;
	}
};

//################################################################################################//

function f_emoticon(a_obj,text)
{
	var txtarea = a_obj;	//document.getElementById('mle_body');
	text = ' ' + text + ' ';
	//alert('1=' + txtarea.createTextRange);
	//alert('2=' + txtarea.caretPos);
	if (txtarea.createTextRange && txtarea.caretPos)
	{
		var caretPos = txtarea.caretPos;
		caretPos.text = caretPos.text.charAt(caretPos.text.length - 1) == ' ' ? caretPos.text + text + ' ' : caretPos.text + text;
	}
	else
	{
		txtarea.value += text;
	}
	txtarea.focus();
};

//################################################################################################//

function f_storeCaret(textEl)
{
	if (textEl.createTextRange) textEl.caretPos = document.selection.createRange().duplicate();
	//textEl.caretPos = f_getSelectionStart(textEl);
};

//################################################################################################//

var is_gecko = /gecko/i.test(navigator.userAgent);
var is_ie    = /MSIE/.test(navigator.userAgent);

function f_getSelectionStart(input)
{
	if (is_gecko) return input.selectionStart;
	var range = document.selection.createRange();
	var isCollapsed = range.compareEndPoints("StartToEnd", range) == 0;
	if (!isCollapsed) range.collapse(true);
	var b = range.getBookmark();
	return b.charCodeAt(2) - 2;
};

//################################################################################################//

function f_getSelectionEnd(input)
{
	if (is_gecko) return input.selectionEnd;
	var range = document.selection.createRange();
	var isCollapsed = range.compareEndPoints("StartToEnd", range) == 0;
	if (!isCollapsed) range.collapse(false);
	var b = range.getBookmark();
	return b.charCodeAt(2) - 2;
};

//################################################################################################//
