function capitalise(str)
{
	var letter = str.substr(0,1);
	return letter.toUpperCase() + str.substr(1);
}
function refreshNow()
{
	window.location.href = window.location.href;
}
function el(id)
{
	return document.getElementById(id);
}
function vl(id)
{
	return el(id).value;
}
function addEl(type,id,target,clname)
{
	if(el(target) && !el(id))
	{
		var newdiv = document.createElement(type);
		newdiv.setAttribute('id',id);
		el(target).appendChild(newdiv);
		if(clname){el(id).className=clname;}
		return el(id);
	}
	else if(el(id))
		return el(id);
}
function rmEl(element_id,parent_id)
{
	if(el(element_id) && el(parent_id))
		el(parent_id).removeChild(el(element_id));
}
function ucfirst(string)
{
    return string.charAt(0).toUpperCase() + string.slice(1);
}
function onEnter(ele,eve,func)
{
	if (window.event) 
		keycode = window.event.keyCode;
	else if (eve) 
		keycode = eve.which;
	if (keycode == 13)
		eval(func+"()");
}
function findPos(aa) 
{
	try{
	var obj = el(aa);
	var curleft = curtop = 0;
	if (obj.offsetParent)
	{
		do 
		{
			curleft += obj.offsetLeft;
			curtop += obj.offsetTop;
		} 
		while (obj = obj.offsetParent);
		return [curleft,curtop];
	}
	}
	catch(ee){}
}
function frp(aa,bb) // findPos of aa relative to bb
{
	var apos, bpos;
	apos=findPos(aa);
	bpos=findPos(bb)
	return [ apos[0]-bpos[0]-1 , apos[1]-bpos[1]-1 ];
}
function pos2Mouse(event,divid,offX,offY)
{
	var xpos=event.clientX;
	var ypos=event.clientY+getScrollY();
	if(offX){xpos+=offX;}
	if(offY){ypos+=offY;}
	el(divid).style.top=ypos+"px";
	el(divid).style.left=xpos+"px";
	
	if((getWidth()-10)<xpos+el(divid).offsetWidth)
	{
		xpos-=(el(divid).offsetWidth+10);
		ypos-=10;
	}
}
function pos2(elthis,elthat,size,offX,offY) //position this to that, size - match size as well, offX/offY - offset pos
{
	if(el(elthis).style.position!="absolute"){el(elthis).style.position="absolute";}
	if(!offX)
		offX=0;
	if(!offY)
		offY=0;
	if(getScrollY())
		offY+=getScrollY()+30;
	var pp=findPos(elthat);
	el(elthis).style.left=(pp[0]+parseInt(offX))+"px";
	el(elthis).style.top=(pp[1]+parseInt(offY))+"px";
	if(size)
	{
		el(elthis).style.width=el(elthat).style.width;
		el(elthis).style.height=el(elthat).style.height;
	}
}
function getScrollY()
{
	var scrOfY = 0;
	try{
	if( typeof( window.pageYOffset ) == 'number' )
		scrOfY = window.pageYOffset;
	else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) )
		scrOfY = document.body.scrollTop;
	else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) )
		scrOfY = document.documentElement.scrollTop;
	return scrOfY;
	}catch(ee){}
}
function isDOM(o)
{
  return (
    typeof HTMLElement === "object" ? o instanceof HTMLElement : //DOM2
    typeof o === "object" && o.nodeType === 1 && typeof o.nodeName==="string"
);
}

function ght(divid){return parseInt(el(divid).style.height.replace("px",""));}
function gfht(divid){return parseFloat(el(divid).style.height.replace("px",""));}
function gwt(divid){return parseInt(el(divid).style.width.replace("px",""));}
function gfwt(divid){return parseFloat(el(divid).style.width.replace("px",""));}
function glt(divid){return parseInt(el(divid).style.left.replace("px",""));}
function gtt(divid){return parseInt(el(divid).style.top.replace("px",""));}

function nl2br(str)
{
	return str.replace(/\n/g,"<br>");
}
function br2nl(str)
{
	return str.replace(/<br>\n/g,"\n").replace(/<br>/g,"\n");
}
