	function arrList() {
		this.list = new Array();
	}
	arrList.prototype.count = function() {
		return this.list.length;
	}
	arrList.prototype.add = function(item) {
		return this.list.push(item);
	}
	arrList.prototype.getAt = function(index) {
		if(index >= 0 && index < this.list.length)
			return this.list[index];
		return undefined;
	}
	arrList.prototype.clear = function() {
		this.list = new Array();
	}
	arrList.prototype.remove = function(item) {
		var index = this.indexOf(item);
		this.removeAt(index);
		return index;
	}
	arrList.prototype.removeAt = function(index) {
		var length = this.list.length;
		if(length == 0 || index < 0 || index >= length)
			return false;
		if(index == 0) {
			this.list.shift();
			return true;
		}
		if(index == length - 1) {
			this.list.pop();
			return true;
		}
		this.list = this.list.slice(0,index).concat(this.list.slice(index+1));
		return true;
	}
	arrList.prototype.insert = function(item,index) {
		var length = this.list.length;
		if(index < 0 || index > length)
			return -1;
		if(index == 0) {
			this.list.unshift(item);
			return 0;
		}
		if(index == length) {
			this.list.push(item);
			return length;
		}
		var tmp = this.list.slice(0,index);
		tmp.push(item);
		this.list = tmp.concat(this.list.slice(index));
		return index;
	}
	arrList.prototype.indexOf = function (item,start) {
		if(start == undefined)
			start = 0;
		var i;
		for(i=start;i<this.list.length;i++)
			if(this.list[i] == item)
				return i;
		return -1;
	}
	arrList.prototype.copy = function () {
		var copyList = new arrList();
		var i;
		for(i=0; i<this.list.length; i++)
			copyList.add(this.list[i]);
		return copyList;
	}

	function hashTable() {
		this.key = new arrList();
		this.value = new arrList();
	}
	hashTable.prototype.count = function() {
		return this.key.count();
	}
	hashTable.prototype.containsKey = function(key) {
		if(this.key.indexOf(key)<0)
			return false;
		return true;
	}
	hashTable.prototype.getKey = function() {
		return this.key;
	}
	hashTable.prototype.getValue = function() {
		return this.value;
	}
	hashTable.prototype.get = function(key) {
		return this.value.getAt(this.key.indexOf(key));
	}
	hashTable.prototype.getAt = function(index) {
		return this.value.getAt(index);
	}
	hashTable.prototype.put = function(key,value) {
		this.key.add(key);
		this.value.add(value);
	}
	hashTable.prototype.remove = function(key) {
		var value = this.value.getAt(this.key.indexOf(key));
		this.value.removeAt(this.key.remove(key));
		return value;
	}