String.prototype.trim = function() { return this.replace(/^\s\s*/, '').replace(/\s\s*$/, ''); }; String.prototype.startsWith = function(s) { return this.substring(0,s.length - 1) == s; } String.prototype.endsWith = function(s) { return this.length >= s.length && this.substring(this.length - s.length) == s; } function AssocArray() { } AssocArray.prototype.size = function() { var result = 0; for ( i in this ) { if ( this[i].startsWith ) { result++; } } return result; } AssocArray.prototype.keys = function() { var result = new Array(); for( i in this ) { if(this[i].startsWith) { result[result.length] = i; } } return result; } AssocArray.prototype.values = function() { var result = new Array(); for(i in this) { if(this[i].startsWith) { result[result.length] = this[i]; } } return result; } function HashMap() { var hashMap = { put : function( key, value ) { this[key] = value; var found = false; for ( var i = 0; i < this.keys.length; i++ ) { if ( this.keys[ i ] == key ) { found = true; break; } } if ( !found ) { this.keys[ this.keys.length ] = key; } }, get : function( key ) { return this[key]; }, getKeys : function( getKeys ) { return this.keys; } } hashMap.keys = new Array(); return hashMap; }