
function context_class() {
	var self = this;

	this.collector = null;
	
	this.construct = function() {
		this.collector = this.object_create(new http_request_collector("http://www.budget.cz/ifc.php"));
		this.loop();
	}
	
	this.loop = function() {
		setTimeout("context.loop()", 100);
	}
	
	this.get_elementX = function(ref) {
		var loop = ref;
		var out = 0;
		
		while (loop != null) {
			out += loop.offsetLeft;
			loop = loop.offsetParent;
		}
		
		return out;
	}
	
	this.get_elementY = function(ref) {
		var loop = ref;
		var out = 0;
		
		while (loop != null) {
			out += loop.offsetTop;
			loop = loop.offsetParent;
		}
		
		return out;
	}
	
	this.get_elementWidth = function(ref) {
		return ref.offsetWidth;
	}
	
	this.get_elementHeight = function(ref) {
		return ref.offsetHeight;
	}
	
	this.center_by = function(target, source) {
		// vycentruje target na stred source
		var sX = this.get_elementX(source);
		var sY = this.get_elementY(source);
		var sW = this.get_elementWidth(source);
		var sH = this.get_elementHeight(source);
		
		var tW = this.get_elementWidth(target);
		var tH = this.get_elementHeight(target);
		
		var pX = sW > tW ? (sX + (sW - tW) / 2) : sX;
		var pY = sH > tH ? (sY + (sH - tH) / 2) : sY;
		
		target.style.position = "absolute";
		target.style.left = pX + "px";
		target.style.top = pY + "px";
	}
	
	this.element_value = function(ref) {
		return ref.firstChild == null ? "" : ref.firstChild.nodeValue;
	}
	
	this.sub_element_value = function(ref, name) {
		var subs = ref.getElementsByTagName(name);
		if (subs.length > 0) return this.element_value(subs[0]);
		return "";
	}
	
	this.error = function(value) {
		alert("error: `" + value + "`");
	}
	
	this.object_create = function(ref) {
		return ref;
	}
	
	this.object_destroy = function(ref) {
	}
}
