function Hash() 
{ 
  this.length = 0; 
  this.items = new Array(); 
  for (var i = 0; i < arguments.length; i += 2) { 
    if (arguments[i + 1] != this.undefined) { 
      this.items[arguments[i]] = arguments[i + 1]; 
      this.length++; 
    } 
  } 
    
  this.removeItem = function(in_key) { 
    if (this.items[in_key] != this.undefined) { 
      this.length--; 
      var tmp_value = this.items[in_key]; 
      delete this.items[in_key]; 
      return tmp_value; 
    } 
  } 
  
  this.getItem = function(in_key) { 
    if (this.items[in_key] != this.undefined) { 
      return this.items[in_key]; 
    } 
    else { 
      return false; 
    } 
  } 

  this.setItem = function(in_key, in_value) { 
    if (in_value != this.undefined) { 
      if (this.items[in_key] == this.undefined) { 
        this.length++; 
      } 
      
      return this.items[in_key] = in_value; 
    } 
  } 
  
  this.itemExists = function(in_key) { 
    return this.items[in_key] != this.undefined; 
  } 
  
  this.getKeys = function() {
    var keys = new Array();
    for (var key in this.items) { 
      keys[keys.length] = key;
    } // end for
    return keys;
  }
}

