var gl_x_pos = 0;
var gl_y_pos = 0;

//################################################################################################//
//################################################################################################//
//################################################################################################//

function SubmitForm2(pForm)
{
	var elems = pForm.getElementsByTagName('input');
	for(var i = 0; i < elems.length; i++)
	{
		if(elems[i].type == "submit")
		{
			continue;
		}
		if(elems[i].type == "text")
		{
			if(elems[i].value == "")
			{
				elems[i].disabled = true;
			}
		}
	}
	var elems = pForm.getElementsByTagName('select');
	for(var i = 0; i < elems.length; i++)
	{
		if(elems[i].type == "select-one")
		{
			if(elems[i].selectedIndex == "")
			{
				elems[i].disabled = true;
			}
		}
	}
	return false;
}

//################################################################################################//

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;
	}
};

//################################################################################################//

/* better than f_emoticon() which does not work in all browsers well */

function f_insert_word(as_obj_name, as_word)
{
	field = document.getElementById(as_obj_name);
	if (document.selection)
	{
		field.focus();
		var sel = document.selection.createRange();
		sel.text = as_word;
		sel.select();
	}
	else if (field.selectionStart || field.selectionStart == '0')
	{
		var start = field.selectionStart;
		var end = field.selectionEnd;
		var scroll = field.scrollTop;
		field.value = field.value.substring(0, start) + as_word + field.value.substring(end, field.value.length);
		field.focus();
		field.selectionStart = start + as_word.length;
		field.selectionEnd = start + as_word.length;
		field.scrollTop = scroll;
	}
	else
	{
		field.value += as_word;
		field.focus();
	}
}

//################################################################################################//

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;
};

//################################################################################################//

