function onFocusControl(control)
{
	//if(control.readOnly==false)
		control.className = "focus";
	
	try
	{
		control.select();
	}
	catch(exception)
	{
	}
}

function onBlurControl(control)
{
	if(control.readOnly==false)
		control.className = "";
}

function getCookieValue(cookieName)
{
	var cookieValue = document.cookie;
	var cookieStartsAt = cookieValue.indexOf(" " + cookieName + "=");
	if(cookieStartsAt==-1)	
		cookieStartsAt = cookieValue.indexOf(cookieName + "=");
	
	if(cookieStartsAt==-1)
		cookieValue = "null";
	else
	{
		cookieStartsAt = cookieValue.indexOf("=", cookieStartsAt) + 1;
		var cookieEndsAt = cookieValue.indexOf(";", cookieStartsAt);
		if(cookieEndsAt==-1)
			cookieEndsAt = cookieValue.length;
		
		cookieValue = unescape(cookieValue.substring(cookieStartsAt, cookieEndsAt));
	}
	return cookieValue;	
}

function trim(str, chars)
{
	return ltrim(rtrim(str, chars), chars);
}
 
function ltrim(str, chars)
{
	chars = chars || "\\s";
	return str.replace(new RegExp("^[" + chars + "]+", "g"), "");
}
 
function rtrim(str, chars)
{
	chars = chars || "\\s";
	return str.replace(new RegExp("[" + chars + "]+$", "g"), "");
}

function padDigits(n, totalDigits) 
{ 
	n = n.toString(); 
	var pd = ''; 
	if (totalDigits > n.length) 
	{ 
		for (i=0; i < (totalDigits-n.length); i++) 
		{ 
			pd += '0'; 
		} 
	} 
	return pd + n.toString(); 
} 

function addEvent(elm, evType, fn, useCapture) 
// cross-browser event handling for IE5+, NS6+ and Mozilla/Gecko 
// By Scott Andrew 
{ 
	if (elm.addEventListener) 
	{ 
		elm.addEventListener(evType, fn, useCapture); 
		return true;  
	} 
	else if (elm.attachEvent) 
	{ 
		var r = elm.attachEvent('on' + evType, fn); 
		return r; 
	} 
	else 
	{ 
		elm['on' + evType] = fn; 
	} 
}
	
var req = null;
//retrieve XML document as document object
function loadXMLDoc(url, async)
{
	var divLoading = document.getElementById("divLoading");
	if (divLoading)
		divLoading.style.display = "";
	//branch for native XMLHttpRequest object
	if (window.XMLHttpRequest)
	{
		try
		{
			req = new XMLHttpRequest();
		}
		catch(e)
		{
			req = null;	
		}
	}
	//branch for IC/Windows ActiveX version
	else if (window.ActiveXObject)
	{
		try
		{
			req = new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch(e)
		{
			try
			{
				req = new ActiveXObject("Microsoft.XMLHTTP");
			}
			catch(e)
			{
				req = null;
			}
		}
	}
	
	if (req)
	{
		req.open("POST", url, async);
		req.onreadystatechange = processRequest;
		req.setRequestHeader("Content-Type", "text/xml");
		req.send("");
	}
}

// drag & drop BEGIN
document.onmousemove = mouseMove;
document.onmouseup   = mouseUp;

var dragObject  = null;
var mouseOffset = null;

function getMouseOffset(target, ev){
	ev = ev || window.event;

	var docPos    = getPosition(target);
	var mousePos  = mouseCoords(ev);
	return {x:mousePos.x - docPos.x, y:mousePos.y - docPos.y};
}

function getPosition(e){
	var left = 0;
	var top  = 0;

	while (e.offsetParent){
		left += e.offsetLeft;
		top  += e.offsetTop;
		e     = e.offsetParent;
	}

	left += e.offsetLeft;
	top  += e.offsetTop;

	return {x:left, y:top};
}

function mouseCoords(ev){
	if(ev.pageX || ev.pageY){
		return {x:ev.pageX, y:ev.pageY};
	}
	return {
		x:ev.clientX + document.body.scrollLeft - document.body.clientLeft,
		y:ev.clientY + document.body.scrollTop  - document.body.clientTop
	};
}

function mouseMove(ev){
	ev           = ev || window.event;
	var mousePos = mouseCoords(ev);

	if(dragObject){
		dragObject.style.position = 'absolute';
		dragObject.style.top      = mousePos.y - mouseOffset.y;
		dragObject.style.left     = mousePos.x - mouseOffset.x;

		return false;
	}
	
	//for an additional loading pane
	var divLoading = document.getElementById("divLoading");
	if (divLoading)
	{
		divLoading.style.position = 'absolute';
		divLoading.style.top      = mousePos.y + 5;
		divLoading.style.left     = mousePos.x + 17;
		
		return false;
	}
}

function mouseUp(){
	dragObject = null;
}

function makeDraggable(item, itemDraggable){
	if(!item) return;
	item.onmousedown = function(ev){
		dragObject  = itemDraggable;
		mouseOffset = getMouseOffset(itemDraggable, ev);
		return false;
	}
}
// drag & drop END