///
/// Essential gunctions
///

function extend(class_name) {
	var code = class_name.toString();
	return (code.substring(code.indexOf('{')+1,code.lastIndexOf('}')));
}

function stopEventBubble(e) {

	var IE = document.all ? true : false;

	if (IE) {
		event.cancelBubble = true;
	} else {
		e.stopPropagation();
	} 

}

function getCursorPos(e) {
	
	var IE = document.all ? true : false;

	var tempX = 0
	var tempY = 0

	if (IE) {
	tempX = event.clientX + document.body.scrollLeft - 2; // eppen 2???
	tempY = event.clientY + document.body.scrollTop - 2; // eppen 2???
	} else {
	tempX = e.pageX;
	tempY = e.pageY;
	}
	if (tempX < 0){tempX = 0}
	if (tempY < 0){tempY = 0} 

	return new Array(tempX,tempY);
}

function disableSelection(target){
	if (typeof target.onselectstart!="undefined") //IE route
		target.onselectstart=function(){return false}
	else if (typeof target.style.MozUserSelect!="undefined") //Firefox route
		target.style.MozUserSelect="none"
	else //All other route (ie: Opera)
		target.onmousedown=function(){return false}
}

function putMeTo(element,x,y) {
	var ppos = getAbsoluteOffset(element.parentNode);
	var psiz = new Array(element.parentNode.clientWidth,element.parentNode.clientHeight);
	
	if(x) element.style.left = (100*(x-ppos[0])/psiz[0]) + '%';
	if(y) element.style.top = (100*(y-ppos[1])/psiz[1]) + '%';
	
}

function resize(element,w,h) {
	var epos = getAbsoluteOffset(element);
	var psiz = new Array(element.parentNode.clientWidth,element.parentNode.clientHeight);
	
	if(w) element.style.width = (100*(w-epos[0])/psiz[0]) + '%';
	if(h) element.style.height = (100*(h-epos[1])/psiz[1]) + '%';

}

function getAbsoluteOffset(element) {

	var x = 0;
	var y = 0;
	
	var p = element;
	while(p.nodeName != 'HTML') {
		x += p.offsetLeft;
		y += p.offsetTop;
		p = p.parentNode;
	}

	return new Array(x,y);
}

function calls() {
	document.getElementById('help').innerHTML = ++tmp;
}
