﻿
function class_HashTable()
{
	this.vp_length = 0;
	this.vp_keys = new Array();
	this.vp_items = new Array();
	
	for (var v_i = 0; v_i < arguments.length; v_i += 2)
	{
		if (typeof(arguments[v_i + 1]) != 'undefined')
		{
			this.vp_items[arguments[v_i]] = arguments[v_i + 1];
			this.vp_keys.push(arguments[v_i]);
			this.vp_length++;
		}
	};
   
	this.f_remove = function(a_key)
	{
		var v_previous = null;
		if (typeof(this.vp_items[a_key]) != 'undefined') {
		
		
		    for(var v_i=0;v_i<this.vp_keys.length;v_i++)
		    {
		        if(this.vp_keys[v_i] == a_key)
		        {
		            this.vp_keys.splice(v_i, 1);
		            break;
		        }
		    }
			this.vp_length--;
			v_previous = this.vp_items[a_key];
			delete this.vp_items[a_key];
		}
		return v_previous;
	};

	this.f_get = function(a_key)
	{
		return this.vp_items[a_key];
	};
	
	this.f_keys = function()
	{
	    return this.vp_keys;
    };

	this.f_add = function(a_key,a_value)
	{
		var v_previous = null;
		if (typeof(a_value) != 'undefined') 
		{
			if (typeof(this.vp_items[a_key]) == 'undefined')
			{
			    this.vp_length++;
            }
			else
			{
			    v_previous = this.vp_items[a_key];
            }
			this.vp_items[a_key] = a_value;
			this.vp_keys.push(a_key);
		}
		return v_previous;
	};

	this.f_contains = function(a_key)
	{
		return typeof(this.vp_items[a_key]) != 'undefined';
	};

	this.f_clear = function()
	{
		for (var v_i in this.vp_items)
		{
			delete this.vp_items[v_i];
		}
		this.vp_keys= new Array();
		this.vp_length = 0;
	};
	
};
