File "MyArray.js"

Full path: E:/sites/Single15/tinmung2007/webroot/Tin VUI_BUON/Khan Tron/album/res/MyArray.js
File size: 5.04 KiB (5166 bytes)
MIME-type:
Charset: utf-8

Download   Open   Back

function MyArray(aKeyValuePairList) {
  //document.write('<h4>MyArray(' + aKeyValuePairList + ')<h4>');
  this.array = new Array();
  this.length = 0;
  if (aKeyValuePairList) {
    this.fromStringKeyValuePairs(aKeyValuePairList);
  }
}

/*
 *Insert new if not present yet.
 */
function insert(aKey, aValue) {
  if (!this.get(aKey)) {
    this.set(aKey, aValue);
  }
}

/*
 *Insert new or Update existing entry.
 */
function set(aKey, aValue) {
  //document.write('<p><b>=== set(' + aKey + ', ' + aValue + ')</b></p>');

  if (!aKey || (aKey == "")) {
    //document.write('<p><b>!aKey || (aKey == "")</b></p>');
    return; //Don't store an undefined or empty key. Weird call.
  }
  
  if (aValue || (aValue == "")) { //Also store an empty string!
    //document.write('<p>Store value: ' + aValue + ' at key: ' + aKey);
    if (!this.array[aKey]) {
      this.length++;
      //document.write(': new, length = ' + this.length);
    }
    //document.write('</p>');
    this.array[aKey] = aValue;
  }
  else {
    //document.write('<p>Value: at key: ' + aKey);
    if (this.array[aKey]) {
      this.array = this.privateRemove(aKey);
      //document.write(' removed, length = ' + this.length);
    }
    //document.write('</p>');
  }
  
}

function get(aKey) {
  return this.array[aKey];
}

function remove(aName) {
  this.array = this.privateRemove(aName);
}

/*
 * Get all pairs into an array.
 * Format is key=value&key=value...
 */
function fromStringKeyValuePairs(aString) {
  //document.write('<h4>fromStringKeyValuePairs(' + aString + ')<h4>');
  if (aString.length > 0) {
    if (aString.indexOf('?') == 0) {
      aString = aString.substring(1, aString.length);
    }
  }
  while (aString.length > 0) {
    //document.write("aString = " + aString + ", aString.length = " + aString.length + "<br>");
    aString = this.privateDoKeyValuePair(aString);
  }
}

function toStringKeyValuePairs() {
  myString = "";
  for (loopC in this.array) {
    myString = this.privateAppendKeyValuePair(myString, loopC);
  }
  return myString;
}

function toDumpKeyValuePairs() {
  myString = "";
  for (loopC in this.array) {
    myString = this.privateAppendKeyValuePairForDump("", myString, loopC);
  }
  return myString;
}

function getLength() {
  return this.length;
}


function privateRemove(aName) {
  var ar = new Array();
  for (loopC in this.array) {
    if (loopC != aName) {
      ar[loopC] = this.array[loopC];
    }
    else {
      this.length--;
    }
  }
  return ar;
}

/*
 * Get first pair of aString into an array.
 */
function privateDoKeyValuePair(aString) {
  //document.write("privateDoKeyValuePair(aString)" + "<br>");
  ampPos = aString.indexOf('&');
  //document.write("ampPos = " + ampPos + "<br>");
  
  if (ampPos >= 0) {
    pair = aString.substring(0, ampPos);
  }
  else {
    pair = aString;
  }
  
  equalPos = pair.indexOf('=');
  if (equalPos == -1) {
    equalPos = pair.length;
  }
  //document.write("equalPos = " + equalPos + "<br>");
  
  argKey = pair.substring(0, equalPos);
  if (equalPos <= pair.length) {
    argValue = pair.substring(equalPos + 1, pair.length);
  }
  else {
    argValue = "";
  }
  
  while (argKey.indexOf('+') > -1) {
    argKey = argKey.substring(0, argKey.indexOf('+')) + ' ' + argKey.substring(argKey.indexOf('+') + 1);
    // Replace each '+' in data string with a space.
  }
  argKey = unescape(argKey);

  while (argValue.indexOf('+') > -1) {
    argValue = argValue.substring(0, argValue.indexOf('+')) + ' ' + argValue.substring(argValue.indexOf('+') + 1);
    // Replace each '+' in data string with a space.
  }
  argValue = unescape(argValue);
  
  this.set(argKey, argValue);
  
  if (ampPos >= 0) {
    return aString.substring(ampPos + 1,  aString.length);
  }
  else {
    return "";
  }
}


function privateAppendKeyValuePair(aString, aKey) {
  separator = "&";
  if (aString.length == 0) {
    separator = "?";
  }
  return aString.concat(separator).concat(aKey).concat("=").concat(this.array[aKey]);
}

function privateAppendKeyValuePairForDump(aTableName, aString, aKey) {
  return aString.concat("<p>").concat(aTableName).concat(":").concat(aKey).concat("=").concat(this.array[aKey]).concat("</p>");
}

//Call this one from the head.
function initializeMyArray() {
  MyArray.prototype.set = set;
  MyArray.prototype.insert = insert;
  MyArray.prototype.get = get;
  MyArray.prototype.remove = remove;
  MyArray.prototype.fromStringKeyValuePairs = fromStringKeyValuePairs;

  MyArray.prototype.toStringKeyValuePairs = toStringKeyValuePairs;
  MyArray.prototype.toDumpKeyValuePairs = toDumpKeyValuePairs;

  MyArray.prototype.getLength = getLength;
  
  MyArray.prototype.privateRemove = privateRemove;privateDoKeyValuePair;
  MyArray.prototype.privateDoKeyValuePair = privateDoKeyValuePair;
  MyArray.prototype.privateAppendKeyValuePair = privateAppendKeyValuePair;

  MyArray.prototype.privateAppendKeyValuePairForDump = privateAppendKeyValuePairForDump;
}

//
initializeMyArray();

// ===

PHP File Manager