/**
 * HashMap i.e. keys are unique
 * @return a hashmap instance
 */
function HashMap(){
  var keyArray = new Array();
  var valueArray = new Array();
  
  getKeyIndex = function(key){
	  var keyIndex = -1;
	  for(var i =0, len = keyArray.length; i < len; i++){
		  var k = keyArray[i];
		  if(key.toString() == k.toString()){
			  keyIndex = i;
			  break;
		  }
	  }  
	  return keyIndex;
  };
  
  this.keySet = function(){
	  var keyArrayCloned = new Array();
	  for(var i = 0, len = keyArray.length; i < len; i++){
		  keyArrayCloned[i] = keyArray[i];
	  }
	  return keyArrayCloned;
  };
  
//  this.clone = function(){
//	  var mapClone = new HashMap();
//	  var keys = this.keySet();
//	  for(var i = 0, len = keys.length; i < len; i++){
//			mapClone.put(keys[i], this.get(keys[i]));
//	  }
//	  return mapClone;
//  };
  
  this.put = function(key,value) {
	  // is key already here
	  var keyIndex = getKeyIndex(key);
	  if(keyIndex > -1){
		  // key already exists so replace value
		  valueArray[keyIndex] = value;
	  } else{
		  keyArray.push(key);
		  valueArray.push(value);
	  }
  };
  
  this.get = function(key){
	  var keyIndex = getKeyIndex(key);
	  if(keyIndex > -1){
		  return valueArray[keyIndex];
	  }
	  return null;
  };
  
  this.getValueByIndex = function(index){
	  if(index > -1){
		  return valueArray[index];
	  }
	  return null;
  };
  
};