
function HashMap() {
	
	this.elements = [];
	
	this.set = function(k, v) {
		var i = this.indexFor(k);
		if(i < 0) {
			this.elements[this.elements.length] = { key: k, val: v };
			return null;
		}
		var oldValue = this.elements[i].val;
		this.elements[i].val = v;
		return oldValue;
	};
	
	this.get = function(k) {
		var i = this.indexFor(k);
		if(i < 0) return null;
		return this.elements[i].val;
	};
	
	this.indexFor = function(k) {
		for(var i = 0; i < this.elements.length; i++) {
			if(this.elements[i].key == k) return i;
		}
		return -1;
	};
	
	this.containsKey = function(k) {
		for(var i = 0; i < this.elements.length; i++) {
			if(this.elements[i].key == k) return true;
		}
		return false;
	};
	
	this.containsVal = function(v) {
		for(var i = 0; i < this.elements.length; i++) {
			if(this.elements[i].val == v) return true;
		}
		return false;
	};
	
	this.toString = function() {
		str = 'Map[';
		for(var i = 0; i < this.elements.length; i++) {
			if(i == 0) str += '\n';
			str += '\t' + this.elements[i].key + ' -> ' + this.elements[i].val + '\n';
		}
		return str + ']';
	};
}

var included_files = new HashMap();

function include(filename) {
	var head = document.getElementsByTagName('head').item(0);
	var script = document.createElement('script');
	script.setAttribute('language', 'javascript');
	script.setAttribute('type', 'text/javascript');
	script.setAttribute('src', filename);
	head.appendChild(js);
	included_files.set(filename, true);
	return false;
}

function include_once(filename) {
	if (!included_files.containsKey(filename)) {
		include(filename);
	}
}

function $(element) {
	return this.document.getElementById(element);
}

var PostLoader = {
	
	elements: [],
	
	add: function() {
		for(var i = 0; i < arguments.length; i++) {
			this.elements.push(arguments[i]);
		}
	},
	
	execute: function() {
		for(var i = 0; i < this.elements.length; i++) {
			eval(this.elements[i]);
		}
	}
}
