/**
* function same as Java's HashMap
*/
var HashMap = function() {
    this.initialize();
}

HashMap.prototype = {
    initialize: function() {
       this.entrySize = 0;
       this.keyEntry = new Array();
       this.valueEntry = new Array();
       
    },
    
	keys: function() {
    	return this.keyEntry;
    },
    
    indexOf: function(arr, obj) {
        for(i=0; i < arr.length; i++) {
            if(arr[i]==obj) {
                return i;
            }
        }
        return -1;
    },
    
    clear: function() {
        var stack = new Array();
        for(var i=0; i < this.keyEntry.length; i++) {
            stack.push(this.keyEntry[i]);
        }
        while(stack.length > 0) {
            this.remove(stack.pop());
        }
        this.entrySize = 0;
    },

    put: function(key, value) {
        var idx = this.indexOf(this.keyEntry,key);
        if(idx > -1) {
            this.valueEntry[idx] = value;
        }
        else {
            this.keyEntry[this.keyEntry.length] = key;
            this.valueEntry[this.valueEntry.length] = value;
            this.entrySize++;
        }
    },

    get: function(key) {
        var idx = this.indexOf(this.keyEntry,key);
        if(idx > -1 && this.valueEntry[idx]!=null) {
            return this.valueEntry[idx];
        } else {
            return null;
        }
    },

    remove: function(key) {
        var idx = this.indexOf(this.keyEntry,key);
        if(idx==-1) {
            return null;
        }
        var retValue = this.valueEntry[idx];
        
        this.keyEntry.splice(idx,1);
        this.valueEntry.splice(idx,1);                
        this.entrySize--;
        return retValue;
    },

    size: function() {
        return this.keyEntry.length;
    },

    containsKey: function(key) {
        var idx = this.indexOf(this.keyEntry,key);
        return idx > -1;
    },

    containsValue: function(value) {
        var idx = this.indexOf(this.valueEntry,key);        
        return idx > -1;
    },
    
    toString: function() {
        var str = "[";
        for(var i=0; i < this.keyEntry.length; i++) {
            var comma = ",";
            if(i==this.keyEntry.length-1) {
                comma = "";
            }
            str += this.keyEntry[i] + ":" + this.valueEntry[i] + comma; 
        }
        str += "]";
        return str;
    }
}

