//================================================
//===	Instinctools 2002 
//===	Oleg Myaskovsky oleg@instinctools.ru
//===	Hashmap
//===	ver. 1.0
//================================================

//================================================
//=== Hashmap class
//================================================

function Hashmap() {
	this.pairs = new Array();
	
	this.put = function(key, value) {
		var ind = -1;
		for (var i in this.pairs)
			if (this.pairs[i].key==key) {
				ind = i;
				break;
			}
		if (ind==-1)
			ind = this.pairs.length;
		this.pairs[ind] = new HashmapPair(key, value);
	}
	
	this.remove = function(key) {
		var newPairs = new Array();
		for (var i in this.pairs)
			if (this.pairs[i]!=null && this.pairs[i].key!=key)
				newPairs[newPairs.length] = this.pairs[i];
		this.pairs = newPairs;
	}
	
	this.get = function(key) {
		for (var i in this.pairs)
			if (this.pairs[i]!=null && this.pairs[i].key==key)
				return this.pairs[i].value;
		return null;
	}
	
	this.keys = function() {
		var keys = new Array();
		for (var i in this.pairs)
			keys[keys.length] = this.pairs[i].key;
		return keys;
	}
	
	this.toString = function() {
		var result = '['
		for (var i in this.pairs) {
			var pair = this.pairs[i];
			if (pair==null)
				result += 'null';
			else
				result += pair;
			result += ', ';
		}
		if (result.length > 1)
			result = result.substr(0, result.length-2);
		result += ']';
		return result;
	}
}

//================================================
//=== HashmapPair class
//================================================

function HashmapPair(key, value) {
	this.key = key;
	this.value = value;
	
	this.toString = function() {
		return '('+key+','+value+')';
	}
}

