
function absolute_pos_top (el) {
	return el.offsetParent?el.offsetTop+absolute_pos_top(el.offsetParent):el.offsetTop;
}
function absolute_pos_left (el) {
	return el.offsetParent?el.offsetLeft+absolute_pos_left(el.offsetParent):el.offsetLeft;
}
function init(flag) {
	if(flag) cms_init();
}

var cms_mouse_absxpos=0;
var cms_mouse_absypos=0;
var cms_mouse_screenX=0;
var cms_mouse_screenY=0;
var cms_onMouseMove = Object();

if (document.captureEvents) {
    document.captureEvents(Event.MOUSEMOVE);
}
document.onmousemove = absmousepos;

function absmousepos(e) {

	var xOff, yOff;
	if (self.pageYOffset)
	{
		xOff = self.pageXOffset;
		yOff = self.pageYOffset;
	} else if (document.documentElement && document.documentElement.scrollTop) {
		xOff = document.documentElement.scrollLeft;
		yOff = document.documentElement.scrollTop;
	} else if (document.body) {
		xOff = document.body.scrollLeft;
		yOff = document.body.scrollTop;
	}

	cms_mouse_screenX = (e?e.pageX:window.event.clientX);
	cms_mouse_screenY = (e?e.pageY:window.event.clientY);
	cms_mouse_absxpos = cms_mouse_screenX + xOff;
	cms_mouse_absypos = cms_mouse_screenY + yOff;
	
	for(var x in cms_onMouseMove)
		cms_onMouseMove[x]();
}


function cms_repeat_delayed(func, delay){
	
	if(func()) {
		window.setTimeout(function(){cms_repeat_delayed(func, delay);},delay);
	}
	
}

function cms_mergeArrays(arr1, arr2) {

	var result = arr1;
	
	for(var i=0; i<arr2.length; i++)
		result[result.length]=arr2[i];
	
	return result;
}

String.prototype.inString = function(str) {

	for(var i = 0; i <= this.length-str.length; i++) {
		if (this.substring(i,i+str.length)==str) return i;
	}
	
	return -1;
	
}

function dump(o) {
	var x = '';
	for (var y in o) x+= y +': '+ o[y] +'\n';
	return x;
}

function print_r(obj, ret) {

	var r = '';
	for (i in obj)
		r += i + ':' + obj[i] + '\n';
	if(ret) return r;
	else alert(r);

}
