
Hashtable.prototype.hash = null;
Hashtable.prototype.keys = null;
Hashtable.prototype.size = null;
function Hashtable() {
	this.hash = new Array();
	this.keys = new Array();
	this.size = 0;
}
Hashtable.prototype.isEmpty = function () {
  return (this.size == 0) ? true : false;
};
Hashtable.prototype.get = function (key) {
	return this.hash[key];
};
Hashtable.prototype.getSize = function () {
	return this.size;
};
Hashtable.prototype.put = function (key, value) {
	if (value == null) {
		return null;
	}
	if (this.hash[key] == null) {
		this.keys[this.keys.length] = key;
		this.size = this.size + 1;
	}
	this.hash[key] = value;
};
Hashtable.prototype.remove = function (key) {
	var rtn = this.hash[key];
	if (rtn != null) {
		for (var i in this.keys) {
			if (this.keys[i] != null && this.keys[i] == key) {
				this.keys[i] = null;
			}
		}
		this.hash[key] = null;
		this.size = this.size - 1;
	}
	return rtn;
};
Hashtable.prototype.getValues = function () {
	var rvalues = new Array();
	for (var i in this.hash) {
		if (this.hash[i] != null) {
			rvalues.push(this.hash[i]);
		}
	}
	return rvalues;
};
Hashtable.prototype.getKeys = function () {
  var rkeys = new Array();
  for (var i in this.keys) {
    if (this.keys[i] != null) {
      rkeys.push(this.keys[i]);
    }
  }
  return rkeys;
};/*
function Hashtable() {
  this.clear = hashtable_clear;
  this.containsKey = hashtable_containsKey;
  this.containsValue = hashtable_containsValue;
  this.get = hashtable_get;
  this.isEmpty = hashtable_isEmpty;
  this.keys = hashtable_keys;
  this.put = hashtable_put;
  this.remove = hashtable_remove;
  this.size = hashtable_size;
  this.toString = hashtable_toString;
  this.values = hashtable_values;
  this.hashtable = new Array();
}

function hashtable_clear() {
  this.hashtable = new Array();
}

function hashtable_containsKey(key){
  var exists = false;
  for (var i in this.hashtable) {
    if (i == key && this.hashtable[i] != null) {
      exists = true;
      break;
    }
  }
  return exists;
}

function hashtable_containsValue(value) {
  var contains = false;
  if (value != null) {
    for (var i in this.hashtable) {
      if (this.hashtable[i] == value) {
        contains = true;
        break;
      }
    }
  }
  return contains;
}

function hashtable_get(key) {
  return this.hashtable[key];
}

function hashtable_isEmpty() {
  return (parseInt(this.size()) == 0) ? true : false;
}

function hashtable_keys() {
  var keys = new Array();
  for (var i in this.hashtable) {
    if (this.hashtable[i] != null) keys.push(i);
  }
  return keys;
}

function hashtable_put(key, value) {
  if (key == null || value == null) {
    throw "NullPointerException {" + key + "},{" + value + "}";
  } else {
    this.hashtable[key] = value;
  }
}

function hashtable_remove(key) {
  var rtn = this.hashtable[key];
  this.hashtable[key] = null;
  return rtn;
}

function hashtable_size(){
  var size = 0;
  for (var i in this.hashtable) {
    if (this.hashtable[i] != null)
      size ++;
    }
  return size;
}

function hashtable_toString() {
  var result = "";
  for (var i in this.hashtable) {     
    if (this.hashtable[i] != null) result += "{" + i + "},{" + this.hashtable[i] + "}n";  
  }
  return result;
}

function hashtable_values() {
  var values = new Array();
  for (var i in this.hashtable) {
    if (this.hashtable[i] != null)
      values.push(this.hashtable[i]);
  }
  return values;
}
*/


