function insertAfter( reference_node, new_node ) {
	reference_node.parentNode.insertBefore( new_node, reference_node.nextSibling );
}

// Gets the position of element e on screen (relative to content top left edge)
function getElementPosition( 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
	};
	
}

// Puts event on every node recursively for allowed tags
function forceEvent( element, event_type, handler_function_string, allowed_tags ) {
	
	var child_nodes = element.childNodes || [];
	
	var tag_name = element.tagName || '';
	tag_name = tag_name.toLowerCase();
	
	var allowed = false;
	
	for ( var tag_number in allowed_tags ) {
		if ( tag_name == allowed_tags[tag_number] ) {
			allowed = true;
			break;
		}
	}
	
	if ( allowed ) {
		
		var old_handler = '';
		
		if ( element[event_type] != undefined ) {
			old_handler = element.getAttribute( event_type );
		}
		
		element.setAttribute( event_type, handler_function_string + old_handler );
		
	}
	
	if ( child_nodes.length > 0 ) {
		for ( var n in child_nodes ) {
			var node = child_nodes[n];
			forceEvent( node, event_type, handler_function_string, allowed_tags );
		}
	}
	
}

// Allows to select element by id easily
function element( id ) {
	return document.getElementById( id );
}





