function Map() {this.elements = new Array();//Gets the number of MAP elementsthis.size = function() {return this.elements.length;};//Determines if the MAP is emptythis.isEmpty = function() {return (this.elements.length < 1);};//Delete all elements of the MAPthis.clear = function() {this.elements = new Array();};//Add an element (key, value) to the MAPthis.put = function(_key, _value) {this.elements.push( {key : _key,value : _value});};//Deletes the element that specifies the KEY, returns True on success, False on failurethis.removeByKey = function(_key) {var bln = false;try {for (i = 0; i < this.elements.length; i++) {if (this.elements[i].key == _key) {this.elements.splice(i, 1);return true;}}} catch (e) {bln = false;}return bln;};//Deletes the element with the specified VALUE, returns True on success, False on failurethis.removeByValue = function(_value) {//removeByValueAndKeyvar bln = false;try {for (i = 0; i < this.elements.length; i++) {if (this.elements[i].value == _value) {this.elements.splice(i, 1);return true;}}} catch (e) {bln = false;}return bln;};//Deletes the element with the specified VALUE, returns True on success, False on failurethis.removeByValueAndKey = function(_key,_value) {var bln = false;try {for (i = 0; i < this.elements.length; i++) {if (this.elements[i].value == _value && this.elements[i].key == _key) {this.elements.splice(i, 1);return true;}}} catch (e) {bln = false;}return bln;};//Gets the element VALUE of the specified KEY. NULL is returnedthis.get = function(_key) {try {for (i = 0; i < this.elements.length; i++) {if (this.elements[i].key == _key) {return this.elements[i].value;}}} catch (e) {return false;}return false;};//Gets the element of the specified index (element.key, element.value gets key and value), fails to return NULLthis.element = function(_index) {if (_index < 0 || _index >= this.elements.length) {return null;}return this.elements[_index];};//Determines whether the MAP contains an element with the specified KEYthis.containsKey = function(_key) {var bln = false;try {for (i = 0; i < this.elements.length; i++) {if (this.elements[i].key == _key) {bln = true;}}} catch (e) {bln = false;}return bln;};//Determines whether the MAP contains an element with the specified VALUEthis.containsValue = function(_value) {var bln = false;try {for (i = 0; i < this.elements.length; i++) {if (this.elements[i].value == _value) {bln = true;}}} catch (e) {bln = false;}return bln;};//Determines whether the MAP contains an element with the specified VALUEthis.containsObj = function(_key,_value) {var bln = false;try {for (i = 0; i < this.elements.length; i++) {if (this.elements[i].value == _value && this.elements[i].key == _key) {bln = true;}}} catch (e) {bln = false;}return bln;};//Get an ARRAY of all values in the MAPthis.values = function() {var arr = new Array();for (i = 0; i < this.elements.length; i++) {arr.push(this.elements[i].value);}return arr;};//Get an ARRAY of all values in the MAPthis.valuesByKey = function(_key) {var arr = new Array();for (i = 0; i < this.elements.length; i++) {if (this.elements[i].key == _key) {arr.push(this.elements[i].value);}}return arr;};//Get an ARRAY of all the keys in the MAPthis.keys = function() {var arr = new Array();for (i = 0; i < this.elements.length; i++) {arr.push(this.elements[i].key);}return arr;};//Get key through valuethis.keysByValue = function(_value) {var arr = new Array();for (i = 0; i < this.elements.length; i++) {if(_value == this.elements[i].value){arr.push(this.elements[i].key);}}return arr;};//Get an ARRAY of all the keys in the MAPthis.keysRemoveDuplicate = function() {var arr = new Array();for (i = 0; i < this.elements.length; i++) {var flag = true;for(var j=0;j<arr.length;j++){if(arr[j] == this.elements[i].key){flag = false;break;}}if(flag){arr.push(this.elements[i].key);}}return arr;};}