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();}/*=======Private methods for internal use only========*/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;}
